設計と開発
クラス図でグラフィカルにプログラムする場合、変更により、 POU ビューと デバイス 見る。新しいオブジェクトが基本構造に挿入され、既存のオブジェクトが適応されます。たとえば、クラス図を介してPOUに宣言を挿入できます。
これにより、クラス図でアプリケーションのアーキテクチャを設計し、適切なPOUを同期的に取得できます。次に、POUの実装を補足します。
次の手順では、アプリケーションのクラス図を作成します。
1.プロジェクトの作成
開ける CODESYS。
クリック
。名前と場所を指定し、 標準プロジェクト テンプレート。
The 標準プロジェクト ダイアログが開きます。
ために PLC_PRGの、 を選択 構造化テキスト(ST) 実装言語。
プロジェクトが作成されます。
を選択 申し込み コードをクリックしてクリックします 。
The UMLクラス図を追加する ダイアログが開きます。
オブジェクト名を指定してください
CD_Simple
。を選択 プロジェクト構造をアクティブなクラス図にインポートします オプション。
クリック 追加。
プロジェクトを名前を付けて保存
SimpleMachine.project
。
2.インターフェースの識別
インターフェイスは、クラスを実装するために、公開されているメソッドとプロパティを決定します。
クラス図のエディタを開きます
CD_Simple
。の中に ツールボックス 表示し、インターフェースを選択します。
インターフェイスをエディタにドラッグします。
The インターフェースの追加 ダイアログが開きます。
名前を指定してください
IBaseMachine
。クリック 追加 ダイアログを終了します。の中に ツールボックス ビュー、メソッドを選択します。
メソッドをインターフェースにドラッグします。
The インターフェイスメソッドを追加 ダイアログが開きます。
名前を指定してください
DoIt
。返品タイプを指定します
BOOL
。クリック 追加 ダイアログを終了します。の中に ツールボックス ビュー、プロパティを選択します。
プロパティをインターフェイスにドラッグします。
The インターフェイスプロパティを追加します ダイアログが開きます。
名前を指定してください
StateNumber
。返品タイプを指定します
INT
。クリック 追加 ダイアログを終了します。
ヒント
インターフェイスの詳細については、以下を参照してください。 オブジェクト:インターフェース と オブジェクト:インターフェイスプロパティ
3.クラスの識別とインターフェースの実装
同じインターフェースを実装する異なるクラスには、同じメソッドとプロパティが含まれています。インターフェースが後で変更または拡張された場合、これはすべての実装クラスに影響します。
クラス図のエディタを開きます
CD_Simple
。の中に ツールボックス 表示し、クラスを選択します。
クラスをエディタにドラッグします。
The POUを追加する ダイアログが開きます。
名前を指定してください
FB_Machine
。を選択 ファンクションブロック オプション。
実装言語については、 UMLステートチャート(SC)。クリック 追加 ダイアログを終了します。
クラス
FB_Machine
クラス図に追加されます。クラスを選択します。
コマンドアイコンはクラスの上に表示されます。
クリック
実現(
IMPLEMENTS
)コマンドアイコンをクリックし、IMachine
インターフェース。The 実装言語を選択 ダイアログが開きます。
選択する 構造化テキスト(ST)。
クラス
FB_Machine
インターフェイスのプロパティとメソッドを継承するため、インターフェイスを実装しますIMachine
。
4.一般化
一般化すると、クラスは別のクラスのプロパティとメソッドを継承します。
クラス図のエディタを開きます
CD_Simple
。の中に ツールボックス 表示し、クラスを選択します。
クラスをエディターにドラッグします。
The POUを追加する ダイアログが開きます。
名前を指定してください
FB_Machine_A
。を選択 延長 オプションでクラスを指定します
FB_Machine
入力フィールドに入力します。機能ブロック
FB_Machine
が拡張されているため、FB_Machine_A
。実装言語については、 UMLステートチャート(SC)。クリック 追加 ダイアログを終了します。
クラス
FB_Machine_A
クラス図で作成されます。クラス間に一般化が存在しますFB_Machine
とFB_Machine_A
。FB_Machine_A
そのプロパティとメソッドをから継承しますFB_Machine
。の中に ツールボックス ビュー、を選択します 変数宣言 要素をクラスにドラッグします
FB_Machine_A
。The 変数の宣言 ダイアログが開きます。
名前を指定してください
iCounter
およびデータ型INT
。クリック わかった ダイアログを終了します。今クラス
FB_Machine_A
継承されたプロパティとメソッドに加えて、独自の変数があります。クラスで
FBMachine_A
、方法を選択しますDoIt()
を押して デル 鍵。メソッドは、ダイアグラム内のオブジェクトと同様に、ダイアグラムから削除されます。 デバイス 見る。継承機能ブロック
FBMachine_A
メソッドに独自の特別な実装は必要ありません。代わりに、メソッドを呼び出しますDoIt
基本機能ブロックのFBMachine
必要に応じて。注記
基本機能ブロックに割り当てられて継承されるメソッドを呼び出すときは、ポインターを使用します
SUPER
。
ヒント
詳細については、を参照してください。 機能ブロックの拡張 と ポインター:SUPER。
5.インスタンス化
クラス図のエディタを開きます
CD_Simple
。プログラムを選択します
PLC_PRG
。コマンドアイコンはプログラムの上に表示されます。
クリック
構成 (
VAR
)コマンドアイコンをクリックし、FB_Machine_A
クラス。The 変数宣言 ダイアログが開きます。
名前を指定してください
fb_A
。オブジェクト
fb_A
クラスのFBMachine_A
インスタンス化されます。これで、具体的な形式のクラスのインスタンスが実行時に生成されます。
クラス図には、アプリケーションコードの生成に関連するすべてのオブジェクトが表示されます。ただし、何よりも、クラス図はオブジェクト間の関係を視覚化します。誰が誰を実装するのか。誰が誰から継承しますか?誰が何をインスタンス化しますか?それ以外の場合、この情報は宣言に隠されており、たとえば、 デバイス 見る。
6.実装
機能ブロックを開く
FBMachine
。関数ブロック変数を宣言します。
FUNCTION_BLOCK FBMachine IMPLEMENTS IBaseMachine VAR iState: INT; iMachine : INT; END_VAR
機能ブロックを実装します。
iState := iState + 1; // Dummy for control ID
そのメソッドを実装する
DoIt
。METHOD PUBLIC DoIt : BOOL iMachine := iMachine + 1; // Dummy
プロパティのGetメソッドを実装します
StateNumber
のFBMachine
。StateNumber := iState;
プロパティのSetメソッドを実装します
StateNumber
のFBMachine
。iState := StateNumber;
機能ブロックを開く
FBMachine_A
。関数ブロック変数を宣言します。
FUNCTION_BLOCK FBMachine IMPLEMENTS IBaseMachine VAR iCounter: INT; END_VAR
機能ブロックを実装します。
iCounter := iCounter + 1;
プロパティのGetメソッドを実装します
StateNumber
のFBMachine_A
。StateNumber := iCounter;
プロパティのSetメソッドを実装します
StateNumber
のFBMachine_A
。iCounter := StateNumber;
クリック
。アプリケーションはエラーなしでコンパイルされます。
アプリケーションをダウンロードして起動します。
機能ブロックインスタンスを監視することができます
fb_A
。