고속 카운터 제어 코드 쓰기

시스템 변수 sys_wHscOrPulseControlCode를 사용하여 고속 카운터와 펄스 출력 제어 코드가 저장된 특수 데이터 레지스터에 액세스할 수 있습니다. (시스템 변수 sys_wHscOrPulseControlCode는 특수 데이터 레지스터 DT90052에 해당됩니다.)

고속 카운터 제어 코드로 수행한 작업

시스템 변수 sys_wHscChannelxControlCode 또는 sys_wPulseChannelxControlCode(여기서 x=채널 번호)를 사용하여 각 채널의 제어 코드 설정을 모니터할 수 있습니다.이 시스템 변수 설정은 다른 설정 작업이 실행되기 전까지는 변경되지 않습니다.

고속 카운터 명령 취소(비트 3)

명령 실행을 취소하려면 고속 카운터 제어 코드(sys_wHscOrPulseControlCode)를 저장하는 데이터 레지스터의 비트 3TRUE로 설정합니다. 그러면 고속 카운터 제어 플래그는 FALSE로 변경됩니다. 고속 카운터 명령 실행을 다시 활성화하려면 비트 3FALSE로 초기화합니다.

고속 카운터의 리셋 입력 활성화/비활성화(하드웨어 리셋)(비트 2)

X0 고속 카운터 입력

  1.  (1) 경과값
  2.  (2) 고속 카운터 제어 코드의 비트 2(리셋 입력 활성화/비활성화)
  3.  (3) 경과 값이 0으로 초기화됨
  4.  (4) 리셋 불가

제어 코드의 비트 2TRUE로 설정되면 시스템 레지스터에서 지정한 리셋 입력을 사용하는 하드웨어 리셋은 불가능합니다. 리셋 입력이 TRUE로 전환되더라도 계산은 계속 진행됩니다. 비트 20으로 초기화될 때까지 하드웨어 리셋은 비활성화됩니다.

계산 연산 활성화/비활성화(비트 1)

계산 입력 제어 연산

X0 고속 카운터 입력

  1.  (1) 경과값
  2.  (2) 고속 카운터 제어 코드의 비트 1(계산)

제어 코드의 비트 1TRUE로 설정하면 계산이 금지되고 경과 값은 현재 값을 유지합니다. 비트 1FALSE로 초기화하면 계산이 계속 됩니다.

고속 카운터의 경과 값(소프트웨어 리셋)을 0으로 초기화(비트 0)

X0 고속 카운터 입력

  1.  (1) 경과값
  2.  (2) 고속 카운터 제어 코드의 비트 0(소프트웨어 리셋)

제어 코드의 비트 0TRUE로 설정하면 소프트웨어 리셋이 수행되고 경과 값은 0으로 설정됩니다. 비트 0FALSE로 초기화될 때까지 경과 값은 값 0을 유지합니다.

FP-Sigma, FP-X, FP0R 설명

제어 코드의 비트 0~15는 그룹 4개에 할당됩니다. 각 그룹의 비트 설정은 16진수로 표현됩니다(예: 00020000 0000 1001 = 16#2009).

  1.  (1) 채널 번호(채널 n: 16#n)
  2.  (2) 고속 카운터 명령 취소(비트 3)

    0: 계속/1: 취소

  3.  (3) 리셋 입력(비트 2)(참고 참조)

    0: 유효/1: 무효

  4.  (4) 계산(비트 1)

    0: 허용/1: 금지

  5.  (5) 경과 값을 0으로 초기화(비트 0)

    0: 아니요/1: 예

예: 16#2009

그룹

설명

IV

2

채널 번호: 2

III

0

(고정)

II

0

(고정)

I

9

16진수 9는 이진 1001에 해당됨

고속 카운터 명령 취소: 취소(비트 3)

1

리셋 입력: 활성화(비트 2)

0

계산: 허용(비트 1)

0

경과 값을 0으로 초기화: 예(비트 0)

1

FP0, FP-e 설명

제어 코드의 비트 0~15는 그룹 4개에 할당됩니다. 각 그룹에는 1채널 설정이 포함되어 있습니다. 각 그룹의 비트 설정은 16진수로 표현됩니다(예: 0000 0000 1001 0000 = 16#90).

  1.  (1) 고속 카운터 명령 취소(비트 3)

    0: 계속/1: 취소

  2.  (2) 리셋 입력(비트 2)(참고 참조)

    0: 유효/1: 무효

  3.  (3) 계산(비트 1)

    0: 허용/1: 금지

  4.  (4) 경과 값을 0으로 초기화(비트 0)

    0: 아니요/1: 예

그룹

IV

III

II

I

채널

3

2

1

0

예: 16#90

그룹

설명

IV

0

III

0

II

9

채널 번호: 1

16진수 9는 이진 1001에 해당됨

고속 카운터 명령 취소: 취소(비트 3)

1

리셋 입력: 활성화(비트 2)

0

계산: 허용(비트 1)

0

경과 값을 0으로 초기화: 예(비트 0)

1

I

0

주석

리셋 입력이 TRUE로 전환되면 경과 값을 0으로 설정해 주십시오. 리셋 입력 설정(비트 2)을 사용하여 시스템 레지스터에 할당된 리셋 입력을 비활성화해 주십시오.

예: 채널 0의 소프트웨어 리셋

POU 헤더

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

	VAR
		bSoftwareReset: BOOL:=FALSE;
			(*Activates the function*)
	END_VAR
	VAR CONSTANT 
		HSC_CH0_RESET_ELAPSED_VALUE: WORD:=16#0001;
			(*Resets elapsed value of channel 0*)
		HSC_CH0_CONTINUE: WORD:=16#0000;
			(*Continues counting in channel 0*)
	END_VAR
	VAR 
	END_VAR

POU 본문

리셋은 1단계에서 수행되고 2단계에서 계산이 시작된 직후에 0이 입력됩니다. 리셋 단독으로 계산이 시작되지 않습니다.

LD 본문

BODY
    WORKSPACE
        NETWORK_LIST_TYPE := NWTYPELD ;
        ACTIVE_NETWORK := 0 ;
    END_WORKSPACE
    NET_WORK
        NETWORK_TYPE := NWTYPELD ;
        NETWORK_LABEL :=  ;
        NETWORK_TITLE :=  ;
        NETWORK_HEIGHT := 8 ;
        NETWORK_BODY
B(B_VARIN,,HSC_CH0_RESET_ELAPSED_VALUE,22,2,24,4,);
B(B_CONTACT,,bSoftwareReset,5,1,7,3,R);
B(B_VARIN,,HSC_CH0_CONTINUE,22,6,24,8,);
B(B_F,E_MOVE!,Instance,24,0,30,4,,?DEN?D?AENO?C);
B(B_VAROUT,,sys_wHscOrPulseControlCode,30,2,32,4,);
B(B_F,E_MOVE!,Instance,24,4,30,8,,?DEN?D?AENO?C);
B(B_VAROUT,,sys_wHscOrPulseControlCode,30,6,32,8,);
L(1,2,5,2);
L(7,2,8,2);
L(8,2,24,2);
L(8,6,24,6);
L(8,2,8,6);
L(1,0,1,8);
        END_NETWORK_BODY
    END_NET_WORK
END_BODY

ST 본문

if DF(bSoftwareReset) then
    sys_wHscOrPulseControlCode:=HSC_CH0_RESET_ELAPSED_VALUE;
    sys_wHscOrPulseControlCode:=HSC_CH0_CONTINUE;
end_if;

예: 채널 1의 소프트웨어 리셋(FP-SIGMA, FP-X, FP0R)

POU 헤더

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

	VAR
		bSoftwareReset: BOOL:=FALSE;
			(*Activates the function*)
	END_VAR
	VAR CONSTANT 
		HSC_CH1_RESET_ELAPSED_VALUE: WORD:=16#1001;
			(*Resets elapsed value of channel 1*)
		HSC_CH1_CONTINUE: WORD:=16#1000;
			(*Continues counting in channel 1*)
	END_VAR
	VAR 
	END_VAR

POU 본문

리셋은 1단계에서 수행되고 2단계에서 계산이 시작된 직후에 0이 입력됩니다. 리셋 단독으로 계산이 시작되지 않습니다.

LD 본문

BODY
    WORKSPACE
        NETWORK_LIST_TYPE := NWTYPELD ;
        ACTIVE_NETWORK := 0 ;
    END_WORKSPACE
    NET_WORK
        NETWORK_TYPE := NWTYPELD ;
        NETWORK_LABEL :=  ;
        NETWORK_TITLE :=  ;
        NETWORK_HEIGHT := 8 ;
        NETWORK_BODY
B(B_VARIN,,HSC_CH1_RESET_ELAPSED_VALUE,24,2,26,4,);
B(B_CONTACT,,bSoftwareReset,5,1,7,3,R);
B(B_VARIN,,HSC_CH1_CONTINUE,24,6,26,8,);
B(B_F,E_MOVE!,Instance,26,0,32,4,,?DEN?D?AENO?C);
B(B_VAROUT,,sys_wHscOrPulseControlCode,32,2,34,4,);
B(B_F,E_MOVE!,Instance,26,4,32,8,,?DEN?D?AENO?C);
B(B_VAROUT,,sys_wHscOrPulseControlCode,32,6,34,8,);
L(1,2,5,2);
L(7,2,8,2);
L(8,2,26,2);
L(1,0,1,8);
L(8,6,26,6);
L(8,2,8,6);
        END_NETWORK_BODY
    END_NET_WORK
END_BODY

ST 본문

if DF(bSoftwareReset) then
    sys_wHscOrPulseControlCode:=HSC_CH1_RESET_ELAPSED_VALUE;
    sys_wHscOrPulseControlCode:=HSC_CH1_CONTINUE;
end_if;

최종 수정일: 2019-04-29이 페이지에 대한 피드백Panasonic 직통 전화