레더로직을 어떻게 C언어로 표현하는지 알아보겠습니다.
레더로직 표현법 | C언어 표현법 | |
---|---|---|
A접점 | Y01 = X01; | |
B접점 | Y01 = !X01; | |
AND | Y02 = X01 & X02; | |
OR | Y03 = X01 | X02; | |
타이머 | onTimer(X01,1,100); Y04 = Tstat[1]; |
|
카운터 | counter(X01,0,X02,1,100); |
실행가능한 코드로 기술하면 다음과 같습니다.
#include "cfManagedBase.h" void user_setup() { } void loop() { } void logic_proc() { Y01 = X01; Y02 = X01 & X02; Y03 = X01 | X02; onTimer(X01,1,100); Y04 = Tstat[1]; counter(X01,0,X02,1,100); }
다음 커맨드를 사용해서 변수 또는 접점상태를 시리얼 모니터에서 볼 수 있습니다.
접점상태를 시리얼 모니터 창에 표시하도록 해보겠습니다.
#include "cfManagedBase.h" void user_setup() { Serial.begin(115200); } void loop() { debug ("X01",X01); debug ("X02",X02); debug ("Y01",Y01); debug ("Y02",Y02); debug ("Y03",Y03); debug ("Y04",Y04); debugcr; delay(100); } void logic_proc() { Y01 = X01; Y02 = X01 & X02; Y03 = X01 | X02; onTimer(X01,1,100); Y04 = Tstat[1]; counter(X01,0,X02,1,100); }
상승에지 | Y01 = rTrig(X01,0); | |
하강에지 | Y01 = fTrig(X01,1); | |
Set상태 유지 | if (X01==1) Y01=1; | |
ReSet상태 유지 | if (X01==1) Y01=0; |
AND 상황이 여러개가 있다면, 괄호를 사용하세요.
Y01 = (X01 | X02) & X03; | |
Y01 = (X01 | X02) & (X03 | X04); |
OR도 마찬가지 입니다.
Y01 = (X01 & X03) | (X02 & X04); |