CTD

다운 카운터

이 펑션블록 CTD(빼기)를 사용하면 계산 절차를 프로그램할 수 있습니다.

파라미터

입력

CD (BOOL)

빼기

CD에서 검색된 각 상승 엣지에 대해 값 1이 현재 값 CV에서 차감됨(LD가 설정되거나 CV가 값 0에 도달한 경우 제외)

LD (BOOL)

로드

LD 카운터 상태가 PV로 초기화됨

PV (INT)

프리셋값

첫 번째 절차 중에 빼기가 적용된 값

출력

Q (BOOL)

신호 출력

CV가 0인 경우에 설정됨

CV (INT)

현재 값

  • 현재 빼기 결과 포함(CV = 현재 값)

  • 계산 연산 중에 프로그래밍 에디터에서 변수를 쓰면 값이 변경될 수 있습니다.

시간 차트

POU 헤더

이 펑션 프로그램 시 사용한 모든 입력과 출력 변수는 POU 헤더에서 선언되었습니다. 모든 프로그래밍 언어에 같은 POU 헤더를 사용합니다.

	VAR
		initialize_count: BOOL:=TRUE;
			(*for setting the current value
to starting value*)
		count: BOOL:=FALSE;
			(*1 is subtracted from the current
value for each leading edge
detected at count*)
		load: BOOL:=FALSE;
			(*sets the curr_value back to 
set_value, if TRUE*)
		set_value: INT:=2;
			(*the starting value*)
		output_value: BOOL:=FALSE;
			(*is set, if the current value is
zero*)
		curr_value: INT:=0;
			(*the current_value*)
		ctd_1: CTD;
			(*instance of the counter*)
	END_VAR

POU 본문

set이 설정되면(상태 = TRUE) preset_value(PV)는 current_value(CV)에서 로드됩니다. 상승 엣지가 clock에서 검색될 때마다 값 1이 current_value에서 차감됩니다. current_value가 0과 같거나 클 때까지 이 절차가 반복됩니다. 그런 다음 signal_output이 출력됩니다.

LD 본문

BODY
    WORKSPACE
        NETWORK_LIST_TYPE := NWTYPELD ;
        ACTIVE_NETWORK := 0 ;
    END_WORKSPACE
    NET_WORK
        NETWORK_TYPE := NWTYPELD ;
        NETWORK_LABEL :=  ;
        NETWORK_TITLE :=  ;
        NETWORK_HEIGHT := 7 ;
        NETWORK_BODY
B(B_FB,CTD!,copy_name,8,2,13,7,,?BCD?BLD?BPV?AQ?ACV);
B(B_VARIN,,output_value,6,5,8,7,);
B(B_VAROUT,,current_value,13,4,15,6,);
B(B_CONTACT,,set,3,4,5,6,);
B(B_CONTACT,,clock,3,2,5,4,);
B(B_COIL,,signal_output,20,3,22,5,);
L(7,4,8,4);
L(1,5,3,5);
L(5,5,8,5);
L(1,3,3,3);
L(5,3,7,3);
L(7,3,7,4);
L(13,4,20,4);
L(1,0,1,7);
        END_NETWORK_BODY
    END_NET_WORK
END_BODY

ST 본문

IF set THEN      (* first cycle *)
    load:=TRUE;        (* load has to be TRUE,
                        to set current_value to output_value *)
    clock:=FALSE;
END_IF;
copy_name(CD:= clock, LOAD:= set, PV:= output_value, Q=> signal_output, CV=> current_value);
load:=FALSE;    (* now current_value got the right value, load doesn't need to be *)
                (* TRUE any longer *);

IL 본문

명령 목록 에디터(IL)에서 펑션블록을 호출하려면 다음을 입력합니다.

최종 수정일: 2021-05-19이 페이지에 대한 피드백Panasonic 직통 전화