例: 最初のステップ
製品: CODESYS Application Composer
この例では、モジュールの作成と使用を開始する方法を示します。CODESYS Application Composerこの目的のために、照明とスイッチを備えた部屋を作成します。
説明
この例では、ビルディングオートメーションの短いシナリオを実装しています。部屋に照明と対応するスイッチを設置します。スイッチは調光器としても使用できます。そのため、照明は異なる明るさレベルをサポートする必要があります。
準備作業
新規作成CODESYSプロジェクトからアプリケーションコンポーザーを使用した標準プロジェクトテンプレート。選択
AC_ModuleBase
図書館として。トップレベルモジュール
Room
プロジェクトのPOUプールに新しいモジュール宣言を追加します。名前を割り当てます。
Room
モジュール宣言とそれに関連する関数ブロックに拡張する必要があります。関数ブロックは、AC.Module
関数ブロックは、AC_ModuleBase
図書館。AC.Module
関数ブロックには、上書きする必要のない多数のメソッドとプロパティがすでに用意されています。宣言はキーワードで始まる
MODULE
モジュール名と追加のキーワードが続くIMPLEMENTED_BY
、およびモジュールを実装する機能ブロックによって制御されます。具体的には、この機能ブロックはRoom
作成されたばかりの機能ブロックです。ほとんどの場合、MetaData
セクションが宣言されました。すべてのパラメータとセクションの詳細については、以下を参照してください。モジュールエディター。
なぜなら
Room
モジュールは、この例ではトップレベルのモジュールなので、Toplevel
次のセクションに進みます。このセクションでは、生成されたトップレベル関数ブロックのインスタンス名を含むグローバル変数リストの名前を定義します。その後、少なくとも1つのタスクを定義する必要があります。Toplevel
セクション。このタスクはStandard_Task
この例では、MEDIUM
タスクとCREATE_IF_MISSING
そしてUPDATE_IOS
フラグ。説明とアイコンのプレースホルダーとして使用されるすべてのアイコンと文字列(
Desc
、Icon_16
、 そしてIcon_32
テキストリストやイメージプールでは、パラメータを参照する必要があります。そのため、対応するテキストリストを作成します。TL
そして画像プールIP
参照されるアイコンとテキストが含まれる POU プール内。サブモジュール:
Switch
モジュール宣言と対応する関数ブロックを作成します。
Switch
このモジュールはトップレベルモジュールではないため、Toplevel
セクション。モジュールを表すすべての機能ブロックと同様に、Switch
機能ブロックも拡張する必要があるAC.modules
。 さらに、Switch
実装するISwitch
インターフェースも作成する必要があります。ISwitch
インターフェースは拡張するAC.IModule
ただし、新しいメソッドやプロパティは追加されません。さらに、スイッチが押されたことを認識するためには入力信号が必要です。この信号は、
IO
セクションを使用してxIn
入力変数Switch
ファンクションブロック。さらに、スイッチの2つの機能を区別するために基準時間が必要です。スイッチを一定時間押し続けると、tTimer
調光機能を開始します。短く押すとライトのオン/オフのみになります。入力変数を定義します。tTimer
モジュールのパラメータとして(Parameters
セクションを参照してください。このようにして、後でモジュールを使用するときに簡単に時間を設定できます。変数を定義する
xIn
そしてtTimer
の入力としてSwitch
関数ブロックで、初期値を500msに設定します。tTimer
パラメータ。説明を表示するには、テキスト リストと画像プールを拡張する必要もあります。
サブモジュール:
SwitchSimple
2つ目に作成するスイッチモジュールは、オンとオフの2つの状態のみを持つ単純なスイッチです。これを行うには、モジュール宣言とファンクションブロックを作成する必要があります。これらのモジュールは、既存のスイッチとはパラメータと
tTimer
変数は必須ではありません。また、実装する必要はありません。ISwitch
しかしISwitchSimple
、これも拡張されますAC.IModule
。サブモジュール:
Light
スイッチの場合と同様に、ライトについてもモジュール宣言を作成する必要があります。
Light
とLight
機能ブロックとILight
インタフェース。挿入するには
Light
部屋の下のモジュールを追加するには、Slots
セクションLight
モジュール宣言。このセクションではサブセクションを宣言します。Slot_Multi
、あなたが呼ぶLights
そして、次のようなモジュールを保持できる。ILight
部屋に追加する必要がある、または追加できる照明の数は、Cardinality
変数も定義しますVariable
そしてVar_Count
これらをモジュール宣言にリンクするpLights(POINTER TO ILight)
そしてuiNumberOfLights (UINT)
これにより、機能ブロックが実装されているモジュールのみがILight
インターフェースを追加することができますLights
スロット。と
Light
モジュールでは、スイッチを挿入できるスロットも定義します。そのため、Switch
スロットにLight
モジュール宣言。追加パラメータLight
モジュールは調光器の速度ですrSpeed
最大輝度uiMaxValue
最後に、ライトの明るさを表す出力を定義する必要があります。すべてのパラメータ、スロット、出力、そして変数を追加する必要があります。Light
機能ブロック。サブモジュール:
LightSimple
最後に作成するモジュールは、シンプルなスイッチと連動するシンプルなライトです。これを行うには、モジュール宣言と
LightSimple
拡張する機能ブロックAC.Module
既存のILight
インターフェース。Light
モジュールは次のようになります。出力は次のようになります。BOOL
そして名前を持つxSwitchedOn
さらに、rSpeed
パラメータは必須ではありません。実装
機能の実装については、
Switch
モジュールを使用するには、CallPrioMediumStart
方法からAC.Module
それを独自の実装でオーバーライドします。この関数が選択された理由は、Room
トップレベルモジュールはMEDIUM
タスク。これは、CallPrioMediumStart
の方法Switch
ファンクションブロックはタスクの各サイクルで自動的に呼び出されます。しかし、スイッチの主な機能は、オン/オフと調光を切り分けることです。スイッチを押すと、ユーザーパラメータで設定可能な時間でタイマーが起動します。タイマーが経過してもスイッチが押されたままの場合、調光機能が適用されます。これは変数によって表されます。xPushLong
変数xPush
スイッチが短時間だけ押されたとき、TRUEとなります。どちらの変数もxPushLong
そしてxPush
、プロパティは両方に追加されますSwitch
機能ブロックとインターフェースを、親ライト機能ブロックから使用できるようにします。また、
Light
ファンクションブロックはCallPrioMediumStart
方法。それぞれの入力変数の値に応じて、照明は調光されるか、単にオン/オフに切り替わります。調光器の場合、宣言されたパラメータの速度値はrSpeed
が使用されます。最大または最小の調光値に達すると、調光は停止します。調光状態でスイッチを押すと、ライトが点灯します。サンプル プロジェクトで可能な実装を確認できます。
エンジニアリング
モジュールツリーは、モジュールビューを表示します。これを行うには、まず
Room
モジュールがインポートされた後、モジュールツリーに最上位モジュールを追加します。Lights
スロットに1つ追加Light
そして1つLightSimple
それぞれにSwitch
またはSwitchSimple
その後、モジュールインスタンスのパラメータとI/Oを設定できます。テスト目的では、入力と出力をグローバル変数リスト内の変数にリンクすることをお勧めします。最後に、作曲家→作成するコマンドを実行してプロジェクトを作成します。デバイスにダウンロードしたら、サンプルを自由にテストできます。コードやモジュールを変更することなく、部屋のレイアウトを変更することもできます。モジュールインスタンスのパラメータの値を変更し、その効果を確認することもできます。パラメータ値はオフラインでもオンラインでも変更できます。
システム要件と制限事項
プログラミングシステム | CODESYS Development System(バージョン3.5.17.0以上) |
ランタイムシステム | CODESYS Control Win(バージョン3.5.17.0) |
アドオンコンポーネント | CODESYS Application Composer |
注記
ダウンロードプロジェクト