100ms 간격 타이머(0~3276.7s)
이 0.1초 단위 타이머는 한시 동작 타이머로 작동합니다. 펑션블럭의 start 접점이 ON 상태이면 사전 시간 SV(설정값)가 시작됩니다. 이 시간이 경과하면 타이머 T가 켜집니다.
입력
시작 접점
상승 엣지가 감지될 때마다 설정값 SV는 경과값 EV에 복사되고 타이머가 시작됨
설정값
정의한 한시 동작 타이머(0~3276.7초)
출력
타이머
SV에서 정의한 시간이 경과되면 설정됩니다. 즉, EV가 0이 됩니다.
경과값
타이머 실행 중에 0.1초마다 1을 뺀 카운터값
계산 연산 중에 프로그래밍 에디터에서 변수를 쓰면 값이 변경될 수 있습니다.
사용 가능한 타이머 수는 제한되며 시스템 레지스터 5 및 6의 설정에 따릅니다.
타이머 펑션블럭의 경우, 컴파일러는 NUM* 어드레스를 자동으로 매 타이머 인스턴스에 할당합니다. 주소는 빼기에 할당되고 가능한 최상위 어드레스에서 시작됩니다.
다운로드 PROG 모드
RUN 모드
이 펑션 프로그램 시 사용한 모든 입력과 출력 변수는 POU 헤더에서 선언되었습니다. 모든 프로그래밍 언어에 같은 POU 헤더를 사용합니다.
VAR
Alarm_Control: TM_100ms_FB;
Start_Contact: BOOL:=FALSE;
Alarm_Relay_1: BOOL:=FALSE;
Alarm_Relay_2: BOOL:=FALSE;
END_VAR
이 예에서는 변수를 사용합니다. 또한 입력 변수에 정수를 사용할 수 있습니다.
변수 Start_contact가 TRUE가 되자마자 타이머 Alarm_control이 시작됩니다. 타이머의 변수 EV는 SV 값으로 설정됩니다. Start_contact가 TRUE로 설정되어 있으면 100ms마다 EV에서 값 1을 뺍니다. EV가 값 0에 도달하면(타이머 형식 TM_100ms_FB를 사용하여 SV = 100인 10초 후) 변수 Alarm_Relay_2는 TRUE가 됩니다.
타이머의 변수 EV 값이 50(5초 후)과 같거나 작아지자마자 EV는 0이 아니고 Alarm_Relay_1은 TRUE로 설정됩니다.
BODY
WORKSPACE
NETWORK_LIST_TYPE := NWTYPELD ;
ACTIVE_NETWORK := 0 ;
END_WORKSPACE
NET_WORK
NETWORK_TYPE := NWTYPELD ;
NETWORK_LABEL := ;
NETWORK_TITLE := ;
NETWORK_HEIGHT := 8 ;
NETWORK_BODY
B(B_VARIN,,Start_contact,8,3,10,5,);
B(B_VARIN,,100,8,4,10,6,);
B(B_VAROUT,,Alarm_Relay_2,18,3,20,5,);
B(B_FB,TM_100ms_FB!,Alarm_control,10,2,18,6,,?Bstart?BSV?AT?AEV);
L(1,0,1,8);
END_NETWORK_BODY
END_NET_WORK
NET_WORK
NETWORK_TYPE := NWTYPELD ;
NETWORK_LABEL := ;
NETWORK_TITLE := ;
NETWORK_HEIGHT := 8 ;
NETWORK_BODY
B(B_F,@LE-2!,Instance,11,0,16,3,,?D?D?C);
B(B_VARIN,,Alarm_control.EV,9,0,11,2,);
B(B_VARIN,,50,9,1,11,3,);
B(B_F,@NE!,Instance,11,5,16,8,,?D?D?C);
B(B_VARIN,,0,9,6,11,8,);
B(B_VARIN,,Alarm_control.EV,9,5,11,7,);
B(B_F,@AND-2!,Instance,20,2,25,5,,?D?D?C);
B(B_VAROUT,,Alarm_Relay_1,25,2,27,4,);
L(16,1,17,1);
L(17,1,17,3);
L(17,3,20,3);
L(17,4,20,4);
L(17,4,17,6);
L(16,6,17,6);
L(1,0,1,8);
END_NETWORK_BODY
END_NET_WORK
END_BODY
Alarm_Control( start:= Start_Contact ,
SV:= 100,
T=> Alarm_Relay_2 ,
EV=> Alarm_Control.EV );
(*The ON-delay time is 10s*)
Alarm_Relay_1:= Alarm_Control.EV <= 50 & Alarm_Control.EV <> 0;
(*Alarm_Relay_1 is set to TRUE after 5s*)
명령 목록에서 펑션블럭을 호출하려면 다음을 입력합니다.
CAL |
Alarm_control (start:=Start_contact, SV:= 100 , T:= Alarm_Relay_2) |
LD |
Alarm_control.EV |
LE |
50 |
AND( |
Alarm_control.EV |
NE |
0 |
) |
|
ST |
Alarm_Relay_1 |