セクション: トップレベル
モジュール ツリーの最初のレベルにあるモジュールは、トップレベル モジュールと呼ばれます。他のモジュールとは対照的に、1 つまたは複数のタスクから直接呼び出すことができるメソッドがあります。トップレベルのモジュールには次のセクションが含まれます Toplevel。
SEC Toplevel //optional: yes, modifier: [UPDATE]
GVL_Name := <GVL name>; //optional: yes, type: literal
Default_Application := <default application>; //optional: yes, type: QID
Default_POUPool := <TRUE/FALSE>; //optional: yes, type: BoolFlag
Pragmas := [<pragma1>, <pragma2>,...]; //optional: yes, type: Pragmalist
SEC Standard_Task : <task name> //optional: yes, modifier: [HIDE,UPDATE]
Name := <task name>; //optional: no, type: ID
Desc := <task description>; //(optional: no, type: Text)
Flags:= <flag>; //(optional: no, type: StdTaskFlags)
END_SEC
SEC Custom_Task : <task name> //optional: yes, modifier: [UPDATE]
Priority := <priority>; //optional: no, type: Subrange(0 .. 31)
Interval := <interval>; //optional: no, type: TimeLiteral)
Flags:= <flag>; //optional: no, type: CustomTaskFlags)
END_SEC
END_SEC定義タイプの構文に関する詳細は、セクションで説明されています。 モジュール宣言。
GVL_Nameモジュールのインスタンスとそのすべてのサブインスタンスが宣言される GVL の名前を定義します。プレースホルダー%Instancename%(大文字または小文字のスペルは関係ありません)、モジュール インスタンスのインスタンス名に置き換えられます。パラメータ
Default_Applicationこのモジュールのすべてのインスタンスの特定のアプリケーションへのアプリケーション割り当てを定義します。デフォルトのアプリケーションが定義されている場合は、Default_POUPool不可能である。パラメータ
Default_POUPoolこのモジュールのすべてのインスタンスの POU プールへのアプリケーション割り当てを定義します。デフォルトの POU プールが定義されている場合は、Default_Application不可能である。パラメータ
Pragmasコンパイラ プラグマのリストが含まれており、モジュールの FB インスタンスの宣言の前に挿入されます。
セクション Standard_Task 呼び出しが実行されるタスクを定義します。このために、次の 3 つの標準タスクを使用できます。 LOW、 MEDIUM、 そして HIGH。の定義 Standard_Task は:
Name: モジュールインスタンス作成後にタスク割り当てとして定義されるデフォルトのタスク名。Desc: タスク呼び出しの識別子。これは短くて意味のあるものにする必要があります (例:I/O task)。Flags: 以下の値を組み合わせることができます。|キャラクター:CREATE_IF_MISSING: タスクが存在しない場合は作成されます。READONLY: タスクの割り当ては読み取り専用であり、ユーザーは変更できません。UPDATE_IOS: タスクは I/O を更新するために使用されます。各 I/O は、UpdateInTaskのパラメータIOセクション。NONE: フラグは設定されていません。
SEC Standard_Task : MEDIUM
Name := MainTask ;
Desc := TL.TaskMedium_Desc ;
Flags := READONLY | CREATE_IF_MISSING ;
END_SECセクションを利用することで Custom_Task モジュールは 1 つ以上のカスタム タスクを定義できます。セクションのターゲットは、モジュール関数ブロックのメソッドの名前である必要があります。メソッドには引数があってはなりません(引数も INPUT、 OUTPUT、 または INOUT)。
Priority: タスクの優先度を定義します。Interval: タスク間隔(データ型「TIME」または「LTIME」の定数)を定義します。Flags: 以下の値を組み合わせることができます。|キャラクター:SHARED注: 互換性上の理由から、このフラグはまだ存在しますが、常に暗黙的に設定されているものとみなされます。これは基本的に、タスクが指定されたプロパティを持つ場合、Custom_Taskセクションがすでに存在する場合、このタスクが使用されます。ただし、一致するプロパティを持つ既存のタスクがない場合は新しいタスクが作成されるため、このフラグは廃止されます。作成したタスクの名前は、TASK_<ModuleInstanceName>_<MethodName>。UPDATE_IOS: タスクは、ST 式またはモジュール I/O に直接接続されている I/O を更新するために使用されます。NONE: フラグは設定されていません。
指定されたメソッドのモジュール クラスにはデフォルトの実装がありません。
SEC Custom_Task : Method1
Priority := 7 ;
CycleTime := t#14ms ;
Flags := NONE ;
END_SECヒント
まさに 1 つの標準タスクまたは特定のタスクに、 UPDATE_IOS フラグセット。
標準タスクが存在する場合、
CREATE_IF_MISSINGフラグが設定されている場合、指定された名前とジェネレーター設定のプロパティを持つタスクが存在する必要があります。プロパティが指定されたものと一致しない場合は、警告メッセージが表示されます。標準タスクが存在する場合、
CREATE_IF_MISSINGフラグが設定されると、まず指定されたプロパティを持つタスクが生成されます。これで、このタスクのジェネレーター設定が変更されるたびに、警告メッセージが表示されずにタスクが適応されるようになります。同じタスク名を参照する、異なるタイプの標準タスクは許可されません。この場合、エラーは発行されません。
構成された標準に応じて、各トップレベル インスタンスの定義されたタスクの最初と最後に次のメソッドが呼び出されます。
METHOD CallPrioHighStart: BOOL METHOD CallPrioHighEnd: BOOL METHOD CallPrioMediumStart: BOOL METHOD CallPrioMediumEnd: BOOL METHOD CallPrioLowStart: BOOL METHOD CallPrioLowEnd: BOOL
各モジュールはそのサブモジュール インスタンスを呼び出す必要があります。サブモジュール参照を呼び出すことはできません。 FB のデフォルト実装 Module すべてのサブモジュール インスタンスのそれぞれのメソッドを、モジュール ツリー内の位置の順序で呼び出します。
ヒント
SUPER ポインターは、基本関数ブロックのインスタンスへのアクセスを提供します。したがって、たとえば呼び出し SUPER^.CallPrioHighStart() メソッドを呼び出すために使用できます Module.CallPrioHighStart() ファンクションブロックが拡張した場合 Module。このようにして、 Module すべてのサブモジュールが呼び出されることを確認します。