DPM の使用 > データオートメーションの設定
データオートメーションの設定
DPM オートメーションの統合によって、接続された先導作業ユニットからのデータが、DPM によってほぼリアルタイムで受信できるようになります。先導作業ユニットとは、作業拠点に対して生産ペースを設定する作業ユニットです。DPM オートメーションの統合は、ジョブオーダーの変更 (生産の開始、生産の停止、またはジョブオーダーの変更)、生産数とスクラップ数、および DPM 内の理由コードにマッピングされているマシンコードに起因する可用性イベントをサポートします。接続された先導作業ユニットからデータを受信すると、ThingWorx においてプロパティが変更されます。良質なデータを持つすべてのプロパティ変更は、値ストリームに保存されます。5 分ごとに、これらのトランザクションが時系列順に読み込まれ、DPM データベース内の適切なイベントテーブルに書き込まれます。
たとえば、すべてのデータオートメーションプロパティが設定されている場合、DPM はジョブオーダーで生産を開始するためのデータを受信できます。ジョブオーダーが生産中である間は、データを受信することで、ジョブオーダーの生産数とスクラップ数の追加、休憩や停電などの設備の非稼動時間イベントのログへの記録、設備が稼働状態に戻った日時のログへの記録を行うことができます。その後、DPM は、最初のジョブオーダーを完了して、次のジョブオーダーで生産を開始するためのデータを受信できます。
システムが 15 分未満で先導作業ユニットから切断される場合、その時間中に発生したイベントが取り込まれます。システムが 15 分より長い時間で切断された場合、15 分を超えていたイベントは無視されます。これは、その間にオペレータが手動でデータを入力した可能性があるため、データの重複を避ける目的で行われます。詳細については、手動データエントリと自動データエントリを参照してください。
* 
Kepware サーバーと ThingWorx サーバーのシステムクロック (Windows OS の「日付と時刻」設定) が 5 秒以内で同期化され、この同期化が時間の経過とともに維持されていることを確認します。
* 
まれに、DPM データベースまたは ThingWorx データベースが使用できなくなると、データの損失またはデータの重複が発生することがあります。詳細については、データベース可用性の損失とその影響を参照してください。
データオートメーションの設定
DPM のデータオートメーションを設定するには 、次の手順を実行します。
1. データソースを、ThingWorx にインストールして接続します。
Kepware の詳細については、KEPServerEX Version 6 Install Guide を参照してください。
Azure IoT Hub の詳細については、Azure IoT Hub Connector Help Center を参照してください。
2. ThingWorx Composer において、インダストリアル接続を作成または使用します。新しいインダストリアル接続を作成するには、その「ベース Thing Template」として IndustrialGateway Thing Template を用いて新規 Thing を作成します。
3. データオートメーションは、各作業拠点の先導作業ユニットに対して設定できます。その他の設備タイプ (エンタープライズ、地域、サイト、区分、または作業拠点) を自動化することはできません。
先導作業ユニットの作業ユニット Thing に対して、次の手順を実行します。
a. 「実装されたシェイプ」フィールドに、以下の Thing Shape を追加します。
PTC.OperationKPI.AutomationEventsModelLogic_TS
IndustrialThingShape
b. 「値ストリーム」フィールドを PTC.OperationKPI.Automation_VS に設定します。
c. 「プロパティおよびアラート」で、IndustrialThing プロパティを手順 2 のインダストリアル接続に設定します。
d. 使用するデータオートメーションアクティビティ用のプロパティを設定します。これらの各プロパティについては、リンクされたセクションを参照してください。
e. 「保存」をクリックして、作業ユニット Thing に対する変更を保存します。
4. 自動化する先導作業ユニットごとに、手順 3 を繰り返します。
* 
DPM がデプロイされると、PTC.OperationKPI.AutomatedEventProcessor_TI タイマーはデフォルトで有効になります。つまり、データオートメーションプロパティが設定されると、タイマーがバッチ処理をトリガーするときに、それらのプロパティが含まれます。データオートメーションを設定する際に、タイマーを無効にしてバッチ処理を停止することもできますが、その場合、タイマーを再度有効にするまで、すべての先導作業ユニットのバッチ処理が停止することに注意してください。
既存のジョブオーダーの開始
データオートメーションを使用して既存のジョブオーダーを開始するには、ThingWorx Composer で次の手順を実行します。
1. 先導作業ユニットの作業ユニット Thing に対して、「プロパティおよびアラート」で、PTCJobOrderID プロパティを適切なタグにバインドします。このプロパティは STRING 値を受け入れます。
2. 「保存」をクリックして、Thing に対する変更を保存します。
PTCJobOrderID プロパティ値が変更されるたびに、指定されたジョブオーダーが開始されます。プロパティの変更時にジョブオーダーが実行中であれば、そのジョブオーダーは完了し、新しいジョブオーダーが開始されます。対象の ID のジョブオーダーが存在していないと、オペレータに対してエラーが表示されます。ジョブオーダーは、「管理」「ジョブオーダー」ページ上に作成されます。詳細については、ジョブオーダーの作成を参照してください。
PTCJobOrderID プロパティが 0 の値 (PTCJobOrderIDNullValue プロパティのデフォルト値) を受信した場合は、現在実行中のジョブオーダーが完了し、新しいジョブオーダーは開始されません。
PTCJobOrderID プロパティ変更のタイムスタンプ時間を過ぎてから、オペレータが生産の開始または生産の停止によって、生産ダッシュボードのジョブオーダーのステータスを手動で変更した場合、そのプロパティ変更は無視され、オペレータに対してエラーが表示されます。自動イベントは発生後に処理されるので、オペレータは、設備で今何が起こっているか、リアルタイムに把握できると考えられます。
指定された材料に基づくジョブオーダーの作成
データオートメーションを使用して、指定された材料に基づくジョブオーダーを作成することは、材料実行とも呼ばれますが、それには、ThingWorx Composer で次の手順を実行します。
1. 先導作業ユニットの作業ユニット Thing に対して、「プロパティおよびアラート」で、PTCMaterialMasterID プロパティを適切なタグにバインドします。このプロパティは STRING 値を受け入れます。
2. 「保存」をクリックして、Thing に対する変更を保存します。
PTCMaterialMasterID プロパティ値が変更されるたびに、指定された材料のジョブオーダーが、デフォルトのターゲット数量 1 で作成されます。このプロパティの変更時にジョブオーダーが実行中であれば、そのジョブオーダーは完了し、新たに作成されたジョブオーダーが開始されます。材料マスター ID に一致した材料が存在しないと、エラーが発生します。
PTCMaterialMasterID プロパティ変更のタイムスタンプ時間を過ぎてから、オペレータが生産の開始または生産の停止によって、生産ダッシュボードのジョブオーダーのステータスを手動で変更した場合、そのプロパティ変更は無視され、オペレータに対してエラーが表示されます。自動イベントは発生後に処理されるので、オペレータは、設備で今何が起こっているか、リアルタイムに把握できると考えられます。
PTCMaterialMasterID プロパティが 0 の値 (PTCMaterialMasterIDNullValue プロパティのデフォルト値) を受信した場合は、現在実行中のジョブオーダーが完了し、新しいジョブオーダーは開始されません。
ジョブオーダーのターゲット数量の更新
PTCTargetQuantity プロパティは、PTCMaterialMasterID プロパティを使用して作成されたジョブオーダーのターゲット数量を設定するために使用されます。このプロパティは、PTCMaterialMasterID プロパティの設定後に必ず設定する必要があります。このプロパティ値が変更されると、現在実行中のジョブオーダーのターゲット数量が更新されます。
* 
同じターゲット数量で実行される 2 つの連続した材料ランが存在している場合は、2 番目のターゲット数量の値を送信する前に、PTCTargetQuantity の値 (-1 プロパティのデフォルト値) を送信することによって PTCTargetQuantityResetValue プロパティをリセットしてください。システムは、同じ値を再び受信した場合、それをデータ変更であるとは認識しません。2 番目のジョブオーダーのターゲット数量を、最初のジョブオーダーに設定されたものと同じ値に更新するには、そのプロパティ値をリセットする必要があります。
データオートメーションを使用して、ジョブオーダーのターゲット数量を更新するには、ThingWorx Composer で次の手順を実行します。
1. 先導作業ユニットの作業ユニット Thing に対して、「プロパティおよびアラート」で、PTCTargetQuantity プロパティを適切なタグにバインドします。
2. 「保存」をクリックして、作業ユニット Thing に対する変更を保存します。
生産数のログ記録
生産カウンタには、先導作業ユニットで発生している良品生産数が記録されます。合計生産数は、良品生産数とスクラップ数を加算したものです。
データオートメーションを使用して、生産数をログ記録するには、ThingWorx Composer で次の手順を実行します。
1. 先導作業ユニットの作業ユニット Thing に対して、「プロパティおよびアラート」で、PTCProductionCount プロパティを適切なタグにバインドします。このプロパティは数値を受け入れます。
2. 絶対カウンタとロールオーバーカウンタの両方の生産カウンタがサポートされています。デフォルトでは、生産カウンタは絶対カウンタです。生産カウンタをロールオーバーカウンタにするには、PTCIsProductionCountRollover プロパティを TRUE に設定し、さらに PTCProductionRolloverCounter プロパティをそのカウンタのロールオーバー値に設定します。
* 
絶対カウンタは、受信した新しい数を、そのまま記録します。たとえば、3、5、および 2 の数を受信すると、合計 10 が記録されます。
ロールオーバーカウンタは、指定されたロールオーバー数に到達して、カウンタがリセットされるまで、以前の数と新しい数の差を記録します。カウンタがリセットされると、以前の数とロールオーバー数の差 + 新しい数が記録されます。以下に例を示します。
0、2、および 5 の数が、ロールオーバーカウンタによって受信されるものとします。2 を受信したとき、2 (2 と 0 の差) が記録されます。5 を受信したとき、3 (2 と 5 の差) が記録されます。
990、998、および 3 の数が、ロールオーバーカウンタによって受信され、ロールオーバー数は 999 だとします。998 を受信したとき、8 (998 と 990 の差) が記録されます。3 を受信したとき、4 (999 と 998 の差 + 新しい数 3) が記録されます。
作業ユニット Thing でジョブオーダーが変更されても、ロールオーバーカウンタはリセットされません。
3. デフォルトでは、生産カウンタは 0 から開始します。生産カウンタを別の番号で開始する場合は、PTCLastAutomationProcessedValues インフォテーブルプロパティに次の値を使用して行を追加します。
propertyName - PTCProductionCount
value - 生産カウンタを開始する値。
jobOrderUid - このフィールドは DPM によって無視されます。
4. 「保存」をクリックして、作業ユニット Thing に対する変更を保存します。
* 
絶対カウンタの場合、同じ数の 2 つの生産数が連続して存在している場合は、2 番目の生産数の値を送信する前に、値 -1 (PTC.ProductionCountResetValue プロパティのデフォルト値) を送信して、PTCProductionCount プロパティをリセットしてください。システムは、同じ値を再び受信した場合、それをデータ変更であるとは認識しません。同じ値の 2 番目の生産数を、新しい生産数として認識させるには、そのプロパティ値をリセットする必要があります。
スクラップ数のログ記録
スクラップカウンタには、先導作業ユニットで発生したスクラップ生産数が記録されます。1 つの先導作業ユニットに複数のスクラップカウンタを指定できます。先導作業ユニットのスクラップ数は、すべてのスクラップカウンタの値から計算されます。
DPM の各スクラップカウンタは、先導作業ユニットによって生成される単一のスクラップのマシンコードにマッピングされます。そのため、先導作業ユニットに、さまざまな数に異なるマシンコードを生成できるスクラップカウンタが 1 つある場合、数を保持する各マシンコードに対してデータソースに一意のスクラップカウンタタグを作成する必要があります。
各スクラップのマシンコードは、DPM のスクラップの理由コードにマッピングされます。
データオートメーションを使用して、スクラップ数をログに記録するには、次の手順を実行します。
1. スクラップのマシンコードが各先導作業ユニットに存在し、適切なスクラップ理由コードに割り当てられていることを検証します。マシンコードとそれに割り当てられた理由コードは、「設備リスト」内の作業ユニットに対する「マシンコード設定」タブの「管理」で表示できます。
* 
マシンコードが先導作業ユニットに存在しないか、または理由コードにマッピングされていない場合、そのマシンコードのデータオートメーションによって受信されたイベントは、イベントカテゴリ (eventCategory) および損失カテゴリ (reasonCategory) の値が Invalid のイベントとしてログ記録されます。これらの無効なイベントは生産ダッシュボードイベントログには表示されず、スクラップ数に追加されません。また、どのデータ計算でも考慮されません。
2. ThingWorx Composer で、先導作業ユニットの作業ユニット Thing に対して、数を保持するスクラップマシンコードごとに「プロパティおよびアラート」でプロパティを作成します。各スクラッププロパティは、DPM のスクラップカウンタと見なされます。
3. 絶対カウンタとロールオーバーカウンタの両方のスクラップカウンタがサポートされています。デフォルトでは、スクラップカウンタは絶対カウンタです。先導作業ユニットのスクラップカウンタをロールオーバーカウンタにするには、Thing の PTCIsScrapCounterRollover プロパティを TRUE に設定します。
* 
絶対カウンタは、受信した新しい数を、そのまま記録します。たとえば、3、5、および 2 の数を受信すると、合計 10 が記録されます。
ロールオーバーカウンタは、指定されたロールオーバー数に到達して、カウンタがリセットされるまで、以前の数と新しい数の差を記録します。カウンタがリセットされると、以前の数とロールオーバー数の差 + 新しい数が記録されます。以下に例を示します。
0、2、および 5 の数が、ロールオーバーカウンタによって受信されるものとします。2 を受信したとき、2 (2 と 0 の差) が記録されます。5 を受信したとき、3 (2 と 5 の差) が記録されます。
990、998、および 3 の数が、ロールオーバーカウンタによって受信され、ロールオーバー数は 999 だとします。998 を受信したとき、8 (998 と 990 の差) が記録されます。3 を受信したとき、4 (999 と 998 の差 + 新しい数 3) が記録されます。
作業ユニット Thing でジョブオーダーが変更されても、ロールオーバーカウンタはリセットされません。
4. 手順 2 で作成した各スクラッププロパティを含めるように PTCScrapEventProperties プロパティを更新します。PTCScrapEventProperties プロパティの値はインフォテーブルです。スクラッププロパティごとに、次の情報を含む行をインフォテーブルに追加します。
propertyName - スクラッププロパティの名前。
machineCode - スクラッププロパティに関連付けられているマシンコード。
rolloverCounter - ロールオーバー値。作業ユニット Thing の PTCIsScrapCountRollover プロパティが FALSE の場合、ロールオーバー値は無視されます。
reallocateFromGoodCount - このプロパティに対して受信したスクラップ数を、すでに記録されている良品数から再割当する必要がある場合は、このチェックボックスをオンにします (TRUE)。このプロパティに対して受信したスクラップ数を良品数から再割当する必要がない場合は、チェックボックスをオンにしないでください (FALSE)。
スクラップカウンタによって報告されたスクラップ数を、良品生産数から再割当する必要があるかどうかを判断する場合は、スクラップカウンタの位置を考慮してください。スクラップ数は、生産カウンタに対するスクラップカウンタの物理的な位置によって、良品数が記録される前でも後でも記録できます。次のイメージは、先導作業ユニットに 2 つのスクラップカウンタがある簡単な例を示しています: スクラップカウンタ 1 は生産カウンタの前に配置され、スクラップカウンタ 2 は生産カウンタの後ろに配置されています。
2 つのスクラップカウンタと 1 つの生産カウンタがある先導作業ユニットを示している図。スクラップカウンタ 1 は生産カウンタの前に配置され、スクラップカウンタ 2 は生産カウンタの後ろに配置されています。
スクラップカウンタ 1 からスクラップ数が記録される場合、良品数は生産カウンタで記録されていません。そのため、スクラップ数を良品数から再割当する必要はありません。これは、スクラップカウンタ 1 でカウントされたスクラップ製品が、生産カウンタで記録される良品数に含まれないことを前提としています。このスクラップカウンタに対して reallocateFromGoodCountFALSE に設定します。
スクラップカウンタ 2 からスクラップ数が記録される場合、良品数は生産カウンタですでに記録されています。現在、スクラップされている製品は、生産カウンタで記録された良品数に含まれているので、良品数から再割当する必要があります。このスクラップカウンタに対して reallocateFromGoodCountTRUE に設定します。
* 
スクラップのプロパティとマシンコードが PTCScrapEventProperties インフォテーブルで適切にマッピングされていない場合、そのスクラップのプロパティに対して受信されたデータは、イベントカテゴリ (eventCategory) および損失カテゴリ (reasonCategory) の値が Invalid のイベントとしてログ記録されます。これらの無効なイベントは生産ダッシュボードイベントログには表示されず、スクラップ数に追加されません。また、どのデータ計算でも考慮されません。
5. デフォルトでは、各スクラップカウンタは 0 から開始します。スクラップカウンタを別の番号で開始する場合は、PTCLastAutomationProcessedValues インフォテーブルプロパティに次の値を使用して行を追加します。
propertyName - スクラッププロパティの名前。
value - スクラップカウンタを開始する値。
jobOrderUid - このフィールドは DPM によって無視されます。
6. 手順 2 で作成した各スクラッププロパティのデータ変更イベントに購読を追加します。「購読」「追加」をクリックします。以下の情報を指定します。
「購読情報」で、購読の名前を入力し、「有効」チェックボックスをオンにします。
「入力」で、DataChange イベントを選択し、購読を作成する対象のスクラッププロパティの名前を選択します。
スクリプトエディタで、以下のコードを貼り付けます。
me.AddPTCValueStreamEntry({
propertyName: sourceProperty,
newEventData: eventData.newValue
});
「完了」をクリックします。
7. 「保存」をクリックして、作業ユニット Thing に対する変更を保存します。
* 
絶対カウンタの場合、特定のスクラッププロパティに、同じ数の 2 つのスクラップ数が連続して存在している場合は、2 番目のスクラップ数の値を送信する前に、値 -1 (PTC.ScrapCountResetValue プロパティのデフォルト値) を送信して、そのスクラッププロパティをリセットしてください。システムは、同じ値を再び受信した場合、それをデータ変更であるとは認識しません。同じスクラッププロパティにおいて、同じ値の 2 番目のスクラップ数を、新しいスクラップ数として認識させるには、そのプロパティ値をリセットする必要があります。
* 
スクラップ数プロパティが先導作業ユニットの作業ユニット Thing から削除された場合は、PTCScrapEventProperties プロパティからも削除する必要があります。PTCScrapEventProperties プロパティのリストに存在しないスクラップ数プロパティがあると、その Thing に対して値ストリーム内のどのイベントも処理されません。
可用性イベントのログ記録
可用性イベントは、理由コードにマッピングされているマシンからマシンコードを受け取ることによって、そのマシンの現在の状態を記録します。
データオートメーションを使用して、可用性イベントをログに記録するには、次の手順を実行します。
1. 障害マシンコードが各先導作業ユニットに存在し、適切な理由に割り当てられていることを検証します。これには、「実行中」理由ツリーから理由コードが割り当てられた、「実行中」マシンコードが含まれます。マシンコードとそれに割り当てられた理由コードは、「設備リスト」内の作業ユニットに対する「マシンコード設定」タブの「管理」で表示できます。
* 
マシンコードが先導作業ユニットに存在しないか、または先導作業ユニットに割り当てられている理由ツリーからの理由コードにマッピングされていない場合、そのイベントは理由コードが「不明」のイベントとして記録されます。
2. ThingWorx Composer で、各先導作業ユニットの作業ユニット Thing に対して、「プロパティおよびアラート」で、PTCAvailabilityEventFaultCode プロパティを適切なタグにバインドします。
3. 「保存」をクリックして、作業ユニット Thing に対する変更を保存します。
これは役に立ちましたか?