UP/DOWN 카운터
트리거 UpDirection이 OFF 상태이면 차감됩니다. 트리거 UpDirection이 ON 상태이면 더해집니다.
입력
카운터를 더하기(ON) 또는 빼기(OFF)로 설정
카운터 시작
카운터 초기화
카운터 프리셋값의 16비트 영역 또는 해당 정수
출력
카운터 경과값의 16비트 영역
트리거의 상승 엣지가 검색되면(OFF ® ON) 경과값 d 영역이 0이 됩니다. 트리거의 하강 엣지가 검색되면(ON ® OFF) s_PresetValue의 값이 d로 전송됩니다.
변수 s_PresetValue 및 d의 데이터 형식은 같아야 합니다.
이 펑션 프로그램 시 사용한 모든 입력과 출력 변수는 POU 헤더에서 선언되었습니다. 모든 프로그래밍 언어에 같은 POU 헤더를 사용합니다.
VAR
up: BOOL:=FALSE;
(*declares, if the counter
counts up or down*)
count: BOOL:=FALSE;
(*at a rising edge on count
the counter counts*)
reset: BOOL:=FALSE;
(*resets the counter to
set_value if TRUE*)
set_value: INT:=0;
(*the starting value*)
output_value: INT:=0;
(*the actual value*)
END_VAR
입력 Count_Trigger의 상승 엣지가 카운터를 활성화합니다. 입력 UpDirection의 부울 변수는 카운터 방향을 설정합니다(TRUE = 더하기, FALSE = 빼기). 입력 Reset_Preset이 TRUE이면 카운터가 시작값으로 초기화됩니다.
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_F,F118_UDC!,Instance,8,0,17,6,,?DUpDirection?DCountTrigger?DReset_Preset?Ds_PresetValue?Cd);
B(B_VARIN,,up,6,1,8,3,);
B(B_VARIN,,count,6,2,8,4,);
B(B_VARIN,,reset,6,3,8,5,);
B(B_VARIN,,set_value,6,4,8,6,);
B(B_VAROUT,,output_value,17,1,19,3,);
L(1,0,1,6);
END_NETWORK_BODY
END_NET_WORK
END_BODY
output_value:=F118_UDC( UpDirection:= up, Count_Trigger:= count, Reset_Preset:= reset, s_PresetValue:= set_value);
(* output_value contains the count value *)