다운 카운터
CT_FB 펑션블록으로 인식된 카운터는 다운 카운터입니다. 카운터 영역 SV(설정 값)은 1~32767입니다.
입력
계산 접점(빼기)
Count에서 상승 엣지가 검색될 때마다 값 0에 도달할 때까지 값 1이 경과값 EV에서 차감됩니다.
리셋 접점
Reset에서 상승 엣지가 검색될 때마다 값 0이 EV에 할당되고 신호 출력 C가 초기화됨. Reset에서 하강 엣지가 검색될 때마다 SV의 값이 EV에 할당됨
설정 값
초기화 절차 후 EV 값
출력
신호 출력
EV가 0이 되면 설정됨
경과값
현재 카운터 값
계산 연산 중에 프로그래밍 에디터에서 변수를 쓰면 값이 변경될 수 있습니다.
올바르게 작동하도록 CT_FB 펑션블록을 사용하기 전마다 초기화해야 합니다.
사용 가능한 카운터 수는 제한되며 시스템 레지스터 5 및 6의 설정에 따릅니다. 컴파일러는 NUM* 어드레스를 모든 카운터 인스턴스에 할당합니다. 주소는 빼기에 할당되고 가능한 최상위 어드레스에서 시작됩니다.
기본 함수 CT(다운 카운터)는 같은 NUM* 어드레스 영역(Num 입력)을 사용합니다. 에러를 방지하기 위해(어드레스 충돌) CT 함수와 CT_FB 펑션블록을 한 프로젝트에서 함께 사용하지 마십시오.
시간 차트
이 펑션 프로그램 시 사용한 모든 입력과 출력 변수는 POU 헤더에서 선언되었습니다. 모든 프로그래밍 언어에 같은 POU 헤더를 사용합니다.
VAR
copy_name: CT_FB;
set_value: INT:=10;
signal_output: BOOL:=FALSE;
count_contact: BOOL:=FALSE;
Reset_CT: BOOL:=FALSE;
machine_error: BOOL:=FALSE;
number_error: INT:=0;
END_VAR
이 예에서는 변수를 사용합니다. 또한 입력 변수에 정수를 사용할 수 있습니다. count_contact에서 검색된 각 상승 엣지에 대해 값 1이 경과값 EV에서 차감됩니다. 경과값 EV가 0이 되면 Signal_output은 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_FB,CT_FB!,copy_name,9,1,15,6,,?BCount?BReset?BSV?AC?AEV);
B(B_VARIN,,count_contact,7,2,9,4,);
B(B_VARIN,,Reset_CT,7,3,9,5,);
B(B_VARIN,,set_value,7,4,9,6,);
B(B_VAROUT,,signal_output,15,2,17,4,);
L(1,0,1,6);
END_NETWORK_BODY
END_NET_WORK
NET_WORK
NETWORK_TYPE := NWTYPELD ;
NETWORK_LABEL := ;
NETWORK_TITLE := ;
NETWORK_HEIGHT := 6 ;
NETWORK_BODY
B(B_F,E_MOVE!,Instance,10,1,16,5,,?DEN?D?AENO?C);
B(B_VARIN,,copy_name.EV,8,3,10,5,);
B(B_VAROUT,,number_error,16,3,18,5,);
B(B_CONTACT,,machine_error,4,2,6,4,);
L(1,3,4,3);
L(6,3,10,3);
L(1,0,1,6);
END_NETWORK_BODY
END_NET_WORK
END_BODY
명령 목록에서 펑션블록을 호출하려면 다음을 입력합니다.