CTUD

업/다운 카운터

펑션블록 CTUD(카운트 업/다운)은 카운팅 절차의 프로그래밍을 지원합니다(업/다운).

  • 카운트 업(CU가 TRUE로 설정됨)

    최대 값 32767에 도달할 때까지 카운트 업은 0에서 시작합니다. 카운트 업 CU에서 각 상승 엣지는 현재 값 CV에서 값을 1만큼 증가시킵니다.

  • 카운트 다운(CD가 TRUE로 설정됨)

    최소 값 -32768에 도달할 때까지 카운트 다운은 0에서 시작합니다. 카운트 다운 CD에서 각 상승 엣지는 현재 값 CV에서 값을 1만큼 감소시킵니다.

파라미터

입력

CU (BOOL)

카운트 업

CU에서 감지된 각 상승 엣지에 대해 값 1이 CV에 추가됩니다. 단, R 및/또는 LD가 설정된 경우는 제외합니다.

CD (BOOL)

카운트 다운

CD에서 감지된 각 상승 엣지에 대해 값 1이 CV에서 빼기됩니다. 단, R 및/또는 LD가 설정된 경우는 제외합니다.

CU 및 CD가 TRUE로 동시에 설정된 경우 카운팅 작업이 실행되지 않습니다.

R (BOOL)

리셋(R)

CV가 R 및 카운팅 스탑에서 각 상승 엣지에 대해 0으로 리셋됩니다. 출력 QU/QD가 FALSE로 설정됩니다.

R의 다음 하강 엣지가 카운팅을 다시 시작합니다.

LD (BOOL)

로드

LD가 설정된 경우, PV가 CV로 로드되고 QU가 TRUE로 설정됩니다. 하지만, 이것은 R가 동시에 설정된 경우에는 적용되지 않습니다. 이 경우, LD는 무시됩니다.

PV (INT)

프리셋값

더하기 또는 빼기로 구할 프리셋 값을 정의합니다.

프리셋 값이 없거나 프리셋 값이 0인 경우, 카운팅이 시작한 직후 출력 QU가 TRUE로 설정됩니다.

출력

QU (BOOL)

신호 출력 - 카운트 업

CV가 PV와 같거나 이보다 큰 경우 TRUE로 설정됩니다.

상승 엣지가 R에서 감지된 경우 FALSE로 설정됩니다.

QD (BOOL)

신호 출력 - 카운트 다운

CV = 0인 경우 TRUE로 설정됩니다.

상승 엣지가 R에서 감지된 경우 FALSE로 설정됩니다.

CV (INT)

현재 값

  • 더하기/빼기 결과입니다.

  • 카운팅 업:

    CV가 프리셋 값 PV에 도달하면, 출력 QU가 TRUE로 설정되지만, 최대 한도 32767에 도달할 때까지 카운팅이 계속됩니다.

  • 카운팅 다운:

    CV가 0에 도달하면 출력 QD가 TRUE로 설정되지만, 최소 한도인 -32768에 도달할 때까지 카운팅이 계속됩니다.

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

시간 차트

예

POU 헤더

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

	VAR
		CTUD1: CTUD;
		bCountUp: BOOL:=FALSE;
			(*increments CV if TRUE*)
		bCountDown: BOOL:=FALSE;
			(*decrements CV if TRUE*)
		bReset: BOOL:=FALSE;
			(*sets CV to zero if TRUE*)
		bLoad: BOOL:=FALSE;
			(*sets CV to PV if TRUE*)
		iPresetValue: INT:=3;
			(*if CV reaches this value,
output QU is set*)
		bUpCounting_PV_reached: BOOL:=FALSE;
			(*is set, if CV reaches PV*)
		bDownCounting_zero_reached: BOOL:=FALSE;
			(*is set, if CV reaches zero*)
		iCurrentValue: INT:=0;
			(*contains the current value*)
	END_VAR

POU 본문

카운트 업:

bReset이 설정되면 iCurrentValue(CV)가 0으로 리셋됩니다. bCountUp이 설정되면 값 1이 iCurrentValue로 추가됩니다. iCurrentValue가 iPresetValue과 같거나 이보다 커질 때까지 이 절차가 bCountUp에서 감지된 각 상승 엣지에 대해 반복됩니다. 그 다음 bUpCounting_PV_reached가 설정됩니다. bReset 및/또는 bLoad가 설정된 경우 절차가 실시되지 않습니다.

카운트 다운:

bReset이 설정된 경우(상태 = TRUE), iPresetValue(PV = 프리셋 값)가 iCurrentValue로 로드됩니다. bCountDown이 설정되면 값 1이 iPresetValue에서 빼기됩니다. iCurrentValue가 0보다 작거나 0인 경우 이 절차가 각 상승 엣지에서 반복됩니다. 그 다음, bDownCounting_zero_reached가 TRUE로 설정됩니다. bReset 및/또는 bLoad가 설정된 경우 절차가 실행되지 않습니다. CU 및 CD는 동시에 설정되고 카운팅 작업이 발생합니다.

LD 본문

BODY
    WORKSPACE
        NETWORK_LIST_TYPE := NWTYPELD ;
    END_WORKSPACE
    NET_WORK
        NETWORK_TYPE := NWTYPELD ;
        NETWORK_LABEL :=  ;
        NETWORK_TITLE :=  ;
        NETWORK_HEIGHT := 14 ;
        NETWORK_BODY
B(B_CONTACT,,bCountUp,5,3,7,5,);
B(B_CONTACT,,bCountDown,5,5,7,7,);
B(B_FB,CTUD!,CTUD1,12,4,18,11,,?BCU?BCD?BR?BLD?BPV?AQU?AQD?ACV);
B(B_COIL,,bUpCounting_PV_reached,25,5,27,7,);
B(B_CONTACT,,bReset,5,7,7,9,);
B(B_COIL,,bDownCounting_zero_reached,25,8,27,10,);
B(B_CONTACT,,bLoad,5,9,7,11,);
B(B_VAROUT,,iCurrentValue,20,10,22,12,);
B(B_VARIN,,iPresetValue,7,11,9,13,);
L(1,0,1,14);
L(1,4,5,4);
L(7,4,10,4);
L(10,4,10,6);
L(1,6,5,6);
L(7,6,9,6);
L(10,6,12,6);
L(18,6,25,6);
L(9,6,9,7);
L(9,7,12,7);
L(18,7,20,7);
L(20,7,20,9);
L(1,8,5,8);
L(7,8,12,8);
L(18,8,19,8);
L(19,8,19,11);
L(9,9,12,9);
L(20,9,25,9);
L(9,9,9,10);
L(1,10,5,10);
L(7,10,9,10);
L(10,10,12,10);
L(10,10,10,12);
L(19,11,20,11);
L(9,12,10,12);
        END_NETWORK_BODY
    END_NET_WORK
END_BODY

ST 본문

CTUD1(CU := bCountUp, CD := bCountDown, R := bReset, LD := bLoad, 
	  PV := iPresetValue, QU => bUpCounting_PV_reached,
	  QD => bDownCounting_zero_reached, CV => iCurrentValue);

IL 본문

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