기간이 정의된 타이머
펑션블럭 TP를 사용하면 정의된 클록 기간이 있는 펄스 타이머를 프로그램할 수 있습니다.
입력
클록 생성기
IN에서 상승 엣지가 감지되면 PT에서 정의한 기간이 있는 클록이 생성됩니다.
클록 기간
16비트 값: 0~327.27s
32비트 값: 0~21,474,836.47s(FP3, FPC, FP5, FP10/10S에 32비트를 사용할 수 없습니다.)
각 해상도 10ms
기간 PT가 있는 타이머는 IN의 각 상승 엣지를 발생시킵니다. 펄스 기간 내 IN에서 감지된 새 상승 엣지는 새 타이머를 발생시키지 않습니다.
출력
신호 출력
상승 엣지가 IN에서 감지되자마자 PT 기간 설정
경과 시간
타이머 경과 기간을 포함합니다. PT = ET이면 Q가 초기화됨
계산 연산 중에 프로그래밍 에디터에서 변수를 쓰면 값이 변경될 수 있습니다.
FP2, FP2SH 및 FP10SH는 PT의 32비트 값을 사용합니다.
IN 신호 켜짐 시간과 독립적으로 클록은 PT에서 정의한 길이가 있는 출력 Q에서 생성됩니다. 상승 엣지가 입력 IN에서 감지되면 펑션블럭 TP가 트리거됩니다.
PT 처리 중에는 입력 IN의 상승 엣지가 영향을 받지 않습니다.
이 펑션 프로그램 시 사용한 모든 입력과 출력 변수는 POU 헤더에서 선언되었습니다. 모든 프로그래밍 언어에 같은 POU 헤더를 사용합니다.
VAR
copy_name: TP;
start: BOOL:=FALSE;
set_value: TIME:=T#0s;
signal_output: BOOL:=FALSE;
current_value: TIME:=T#0s;
END_VAR
start가 설정되면(상태 = TRUE) 클록 기간의 set_value에 도달할 때까지 클록은 signal_output에서 내보내기됩니다.
BODY
WORKSPACE
NETWORK_LIST_TYPE := NWTYPELD ;
ACTIVE_NETWORK := 0 ;
END_WORKSPACE
NET_WORK
NETWORK_TYPE := NWTYPELD ;
NETWORK_LABEL := ;
NETWORK_TITLE := ;
NETWORK_HEIGHT := 6 ;
NETWORK_BODY
B(B_CONTACT,,start,3,2,5,4,);
B(B_VARIN,,set_value,7,3,9,5,);
B(B_VAROUT,,current_value,14,3,16,5,);
B(B_COIL,,signal_output,21,2,23,4,);
B(B_FB,TP!,copy_name,9,1,14,5,,?BIN?BPT?AQ?AET);
L(1,3,3,3);
L(1,0,1,6);
L(5,3,9,3);
L(14,3,21,3);
END_NETWORK_BODY
END_NET_WORK
END_BODY
copy_name( IN:= start ,
PT:= set_value ,
Q=> signal_output ,
ET=> current_value );
이 펑션 프로그램 시 사용한 모든 입력과 출력 변수는 POU 헤더에서 선언되었습니다. 모든 프로그래밍 언어에 같은 POU 헤더를 사용합니다.
VAR
TP1: TP;
bIN: BOOL:=FALSE;
tPT: TIME:=T#30s;
tET: TIME:=T#0s;
bQ: BOOL:=FALSE;
bEmergencyStop: BOOL:=FALSE;
END_VAR
IN의 상승 엣지 후 타이머는 카운트를 시작하고 Q는 TRUE로 설정됩니다. 클록 기간이 경과되기 전에 bEmergencyStop이 TRUE로 설정되면 카운팅이 정지하고 출력 Q가 즉시 초기화됩니다. 이 예에서 타이머는 클록 시간 PT(30초)로 초기화됩니다.
BODY
WORKSPACE
NETWORK_LIST_TYPE := NWTYPELD ;
ACTIVE_NETWORK := 0 ;
END_WORKSPACE
NET_WORK
NETWORK_TYPE := NWTYPELD ;
NETWORK_LABEL := ;
NETWORK_TITLE := ;
NETWORK_HEIGHT := 4 ;
NETWORK_BODY
B(B_F,E_MOVE!,,16,0,22,4,,?DEN?D?AENO?C);
B(B_VARIN,,tPT,14,2,16,4,);
B(B_VAROUT,,TP1.ET,22,2,24,4,);
B(B_CONTACT,,TP1.Q,12,1,14,3,);
B(B_CONTACT,,bEmergencyStop,7,1,9,3,);
L(14,2,16,2);
L(1,2,7,2);
L(9,2,12,2);
L(1,0,1,4);
END_NETWORK_BODY
END_NET_WORK
NET_WORK
NETWORK_TYPE := NWTYPELD ;
NETWORK_LABEL := ;
NETWORK_TITLE := ;
NETWORK_HEIGHT := 5 ;
NETWORK_BODY
B(B_VARIN,,tPT,14,3,16,5,);
B(B_VAROUT,,tET,21,3,23,5,);
B(B_CONTACT,,bIN,7,2,9,4,);
B(B_COIL,,bQ,33,2,35,4,);
B(B_FB,TP!,TP1,16,1,21,5,,?BIN?BPT?AQ?AET);
B(B_CONTACT,,bEmergencyStop,27,2,29,4,N);
L(1,3,7,3);
L(9,3,16,3);
L(29,3,33,3);
L(21,3,27,3);
L(1,0,1,5);
END_NETWORK_BODY
END_NET_WORK
END_BODY
if (bEmergencyStop AND TP1.Q) then
TP1.ET:=tPT;
end_if;
TP1(IN := bIN, PT := tPT, ET => tET);
bQ := NOT bEmergencyStop AND TP1.Q;