개별적인 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이 콜드 리셋/리셋에서 참인지 알고 있습니까? –
ResetCommand를 사용하여 전원을 켰을 때와 FirstCycle 비트가 모두 true인지 99 % 확신합니다. – pboedker
@의 펠릭스 - 카일 다음 프로그램은 모두 나머지 콜드/원산지를 사용 (TRUE 또는 FALSE로 초기화 bCheckForFirstCycle와 그것을 시도) 할 때 FirstCycle가 TRUE 것을 보여줍니다 '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