個々のPLCタスクを開始/停止する方法はわかりません。あなたはランタイムを開始/停止することができます。
おそらく、このコードは以下のように簡単です。これは、PLCの起動時にのみ実行されます。
VAR initialized: BOOL := FALSE;
IF NOT initialized THEN
(* Run your initialization code here *)
initialized := TRUE;
END_IF
(* Rest of your program here *)
編集:
私は、タスク許容時間の問題を支援するために初期化コード内のステートマシンを使用。
例:
VAR
Initialized : BOOL := FALSE;
Init_State : UINT := 0;
END_VAR
IF NOT Initialized THEN
(* Initialization State Machine *)
CASE Init_State OF
0: (* First step in initialization *)
Init_State := Init_State + 1;
1: (* Second step in initialization *)
Init_State := Init_State + 1;
.
.
.
n: (* Last step in initialization *)
Initialized := TRUE;
END_CASE
END_IF
興味深い! FirstCycleがReset Cold/Originで真であるかどうか知っていますか? –
電源投入時とリセットコマンド使用時にFirstCycleビットが真であることを99%確信しています。 – pboedker
次のプログラムは、(TRUEまたはFALSEに初期化bCheckForFirstCycleでそれを試してみてください)、両方の休息コールド/起源を使用しているときFirstCycleがTRUEであることを実証している フェリックス-Keil社@: 'VAR fbGetCurTaskIdx:GETCURTASKINDEX。 i:INT:= 23; bCheckForFirstScan:BOOL:= TRUE; END_VAR; fbGetCurTaskIdx(); IF _TaskInfo [fbGetCurTaskIdx.index] .FirstCycleおよびbCheckForFirstScan (*初期化コードはこちら*) \t i:= 17; ELSE (*ノーマルコードはこちら*) \t i:= i; END_IF; ' – pboedker