F178_HighSpeedCounter_Measure

입력 펄스 측정

이 명령은 특정 계산 기간과 펄스 주기로 입력 펄스 수를 측정합니다.

파라미터

입력

s1_iHscChannel (INT)

고속 카운터 채널: 0–5

s2_NumberOfPulses_iPeriodTime_ms (INT)

계산 기간 [ms]:

1–5000 (1ms–5s).

s1_NumberOfPulses_iNumberOfPeriods (INT)

계산 기간 수: 1–5

s1_PulsePeriod_iMeasurementMethod (INT)

펄스 주기 측정 단위

0: 펄스 주기 미측정

1: 펄스 주기가 ms로 측정됨

2: 펄스 주기가 ms로 측정됨

3: 펄스 주기가 msms로 측정됨

s1_PulsePeriod_iTimeoutValueOf1msUnitOutput (INT)

펄스 주기 측정의 타임아웃 값 [ms]:

0: 시간 초과 없음

1: 100ms

2: 200ms

3: 300ms

4: 500ms

출력

d_NumberOfPulses_diAverage (DINT)

계산 기간당 펄스 평균수(계산 기간의 펄스 수/계산 기간 수)

d_PulsePeriod_diTime_ms (DINT)

펄스 주기m

d_PulsePeriod_diTime_ms (DINT)

펄스 주기 [ms]

입력 펄스 측정의 특징

  • 입력 펄스 측정의 경우, 채널 번호, 계산 기간(1ms~5s) 및 계산 기간 숫자(1~5)를 지정해야 합니다. 이러한 파라미터는 계산 기간당 입력 펄스 평균수를 계산하는데 사용됩니다.

  • 펄스 주기 측정 단위([ms], [ms] 또는 둘 다)를 지정할 수 있습니다.

  • 측정 단위가 ms인 경우, 이 명령 실행 후 바로 펄스 주기가 측정되고 출력됩니다. 최대 약 174.4ms를 측정할 수 있습니다.

  • 측정 단위가 ms인 경우, 펄스 주기 값은 매 측정 후 업데이트됩니다. 최대 약 49.7일을 측정할 수 있습니다. 측정이 완료되지 않은 경우, 측정된 펄스 주기가 -1이 설정된 후에 타임아웃 값을 지정할 수 있습니다.

  • 명령 시작 후 첫 번째 계산 기간 중에 측정된 펄스 주기는 지정한 계산 기간 수에 도달할 때까지 -1로 설정됩니다.

  • 펄스 주기가 측정 가능한 범위 이상이거나 측정이 완료되지 안으면 측정된 펄스 주기는 -1로 설정됩니다.

일반 프로그래밍 정보

  • 시스템 레지스터에서 원하는 채널의 고속 카운터 입력을 선택합니다.

  • 이 명령을 사용하여 펄스 측정 실행 조건을 TRUE로 유지합니다.

  • 측정이 중지하려면 실행 조건을 FALSE로 전환합니다.

  • 고속 카운터 명령이 실행되면 사용한 채널의 고속 카운터 제어 플래그(예: sys_bIsHscChannel0ControlActive)는 TRUE로 전환됩니다. 같은 채널을 사용하여 다른 고속 카운터 명령을 실행하면 제어 플래그는 더 이상 TRUE가 아닙니다.

  • 최대 두 채널에서 이 명령을 동시에 실행할 수 있습니다.

  • 주 프로그램과 인터럽트 프로그램 모두에 같은 채널 코드가 포함된 경우, 두 프로그램을 동시에 실행하지 마십시오.

  • 고속 카운터 제어 플래그 또는 펄스 출력 제어 플래그 상태는 스캔이 실행 중인 동안에 변경될 수 있습니다. 예를 들어, 수신된 바이트 수를 읽으면 스캔 1회에 다른 상태가 두 개 이상 있을 수 있습니다.

에러 플래그

sys_bIsOperationErrorHold(TRUE로 전환되어 TRUE로 유지됨)
  • 채널 번호 또는 데이터 테이블 값이 허용 범위를 벗어나는 경우
  • 고속 카운터가 시스템 레지스터에 설정되지 않은 경우
  • 고속 카운터 채널이 다른 고속 카운터 또는 펄스 출력 명령에서 이미 사용되고 있는 경우

  • 사용한 채널 수가 3 이상인 경우

sys_bIsOperationErrorNonHold(스캔 1회에 대해 TRUE로 전환)
  • 채널 번호 또는 데이터 테이블 값이 허용 범위를 벗어나는 경우
  • 고속 카운터가 시스템 레지스터에 설정되지 않은 경우
  • 고속 카운터 채널이 다른 고속 카운터 또는 펄스 출력 명령에서 이미 사용되고 있는 경우

  • 사용한 채널 수가 3 이상인 경우

POU 헤더

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

	VAR
		bStartMeasurement: BOOL:=FALSE;
		diNumberOfPulses: DINT:=0;
		diPulsePeriodTime_μs: DINT:=0;
		diPulsePeriodTime_ms: DINT:=0;
	END_VAR

LD 본문

BODY
    WORKSPACE
        NETWORK_LIST_TYPE := NWTYPELD ;
        ACTIVE_NETWORK := 0 ;
    END_WORKSPACE
    NET_WORK
        NETWORK_TYPE := NWTYPELD ;
        NETWORK_LABEL :=  ;
        NETWORK_TITLE :=  ;
        NETWORK_HEIGHT := 9 ;
        NETWORK_BODY
B(B_F,F178_HighSpeedCounter_Measure!,Instance,25,1,53,9,,?DEN?Ds1_iHscChannel?Ds2_NumberOfPulses_iPeriodTime_ms?Ds1_NumberOfPulses_iNumberOfPeriods?Ds1_PulsePeriod_iMeasurementMethod?Ds1_PulsePeriod_iTimeoutValueOf1msUnitOutput?AENO?Ad_NumberOfPulses_diAverage?Ad_PulsePeriod_diTime_μs?Ad_PulsePeriod_diTime_ms);
B(B_VARIN,,0,23,3,25,5,);
B(B_VARIN,,10,23,4,25,6,);
B(B_VARIN,,5,23,5,25,7,);
B(B_VARIN,,SYS_F178_HSC_MEASUREMENT_μs_ms,23,6,25,8,);
B(B_VARIN,,0,23,7,25,9,);
B(B_VAROUT,,diNumberOfPulses,53,3,55,5,);
B(B_VAROUT,,diPulsePeriodTime_μs,53,4,55,6,);
B(B_VAROUT,,diPulsePeriodTime_ms,53,5,55,7,);
B(B_CONTACT,,bStartMeasurement,9,2,11,4,);
L(1,3,9,3);
L(11,3,25,3);
L(1,0,1,9);
        END_NETWORK_BODY
    END_NET_WORK
END_BODY

ST 본문

IF (bStartMeasurement) then
  F178_HighSpeedCounter_Measure(s1_iHscChannel := 0, 
            s2_NumberOfPulses_iPeriodTime_ms := 10, 
            s1_NumberOfPulses_iNumberOfPeriods := 5, 
            s1_PulsePeriod_iMeasurementMethod := SYS_F178_HSC_MEASUREMENT_μs_ms, 
            s1_PulsePeriod_iTimeoutValueOf1msUnitOutput := 0, 
            d_NumberOfPulses_diAverage => diNumberOfPulses, 
            d_PulsePeriod_diTime_μs => diPulsePeriodTime_μs, 
            d_PulsePeriod_diTime_ms => diPulsePeriodTime_ms);
END_IF;

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