TcCOMモジュールの動作

状態遷移

必須要素:

  • Module description - モジュール情報(ClassID, ObjectID)

  • State Machine – 状態遷移(INIT, PREOP, SAFEOP, OP)

▶︎注:EtherCATの状態遷移とは異なります

  • ITComObject Interface – 外部からモジュール情報と状態を取得するためのインタフェイス


付加要素(オプション):

  • Parameters – パラメータ

  • Interfaces – インタフェイス

  • Interface Pointers – インタフェイスポインタ

  • Data Areas – データ領域

  • Data Area Pointers – データ領域ポインタ

  • Contexts – コンテキスト

  • Categories – カテゴリ

  • ADS Port – ADSポート



•INIT→PREOP(IP)

▶︎オブジェクトサーバにモジュールを登録


•PREOP→SAFEOP(PS)

▶︎リソース確保やファイル読み込みなど

時間がかかる前処理


•SAFEOP→OP(SO)

▶︎他のモジュールリソースの登録

▶︎リアルタイム動作への移行


•OP→SAFEOP (OS)

▶︎SOで確保したリソースの開放

▶︎リアルタイム動作の停止


•SAFEOP→PREOP(SP)

▶︎PSで確保したリソースの開放


•PREOP→INIT(PI)

▶︎メモリからモジュール自身を開放


各状態遷移に対応するメソッドは"モジュール名.cpp"内に自動生成されます。

それぞれ必要な処理を追加実装してください。

オブジェクト操作

・ オブジェクトサーバへの登録の際は対応する「参照カウンタ」も生成されます

・「参照カウンタ」は、オブジェクト依存関係の破綻を防ぐ仕組みです

・参照カウンタは、対象インタフェイスへのポインタ取得と同時に自動インクリメントされます

・カウント数は、対象インタフェイスを参照しているモジュール数に等しくなります


・参照カウンタは、対象インタフェイスへのポインタを破棄する際に自動デクリメントされます。

・参照カウンタが零でない(=インタフェイスを使用しているモジュールが他に存在する)間は、

対象インタフェイスを有するモジュールは破棄されません。