CTUD

업/다운 카운터

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

  • 카운트 업(CUTRUE로 설정됨)

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

  • 카운트 다운(CDTRUE로 설정됨)

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

파라미터

입력

CU (BOOL)

카운트 업

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

CD (BOOL)

카운트 다운

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

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

R (BOOL)

리셋(R)

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

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

LD (BOOL)

로드

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

PV (INT)

프리셋값

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

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

출력

QU (BOOL)

신호 출력 - 카운트 업

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

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

QD (BOOL)

신호 출력 - 카운트 다운

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

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

CV (INT)

현재 값

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

  • 카운팅 업:

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

  • 카운팅 다운:

    CV가 0에 도달하면 출력 QDTRUE로 설정되지만, 최소 한도인 -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로 추가됩니다. iCurrentValueiPresetValue과 같거나 이보다 커질 때까지 이 절차가 bCountUp에서 감지된 각 상승 엣지에 대해 반복됩니다. 그 다음 bUpCounting_PV_reached가 설정됩니다. bReset 및/또는 bLoad가 설정된 경우 절차가 실시되지 않습니다.

카운트 다운:

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

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 직통 전화