목표 값 일치 OFF(고속 카운터)
경과 값이 iChannel에서 지정한 고속 카운터 채널의 목표 값 diTargetValue와 일치하면 pYOutput에서 지정한 출력 릴레이가 바로 FALSE로 전환됩니다.
입력
상승 엣지가 함수를 활성화, HscInfo_IsActive를 사용하여 고속 카운터 제어 플래그 평가
FPS: 0, 2
FP-X R: 0, 1
FP-X 16K C14T: 0, 1, 2
FP-X 32K C30T, C60T: 0, 1, 2, 3
FP0R: 0, 1, 2, 3
FP0: 0, 1
FP-e: 0, 1
채널 번호와 출력을 공급하는 전역 변수에서 GetPointer로 가져온 포인터 결과
목표 값의 32비트 데이터 값을 다음 범위 내로 지정:
FP0, FP-e: -838808~+8388607
FPS, FP-X, FP0R: -2147483467~+2147483648
출력
Channel%d
와 pYOuput.iOffset
의 조합이 전역 변수에서 정의한 채널 번호와 출력의 조합과 일치하지 않으면 TRUE
이 비 인라인 명령은 고속 카운터의 도구 명령의 일부입니다. 내부에서 사용되는 명령의 자세한 내용은 : F167_HighSpeedCounter_Reset을 참조해 주십시오.
채널과 Y 출력 조합의 유효성을 검사하려면 컴파일러에 전역 변수에 대한 다음과 같은 이름 패턴이 필요합니다.%sHsc_TargetValueMatch_Channel%d_Y%d_%s
항상 목표 값 일치 제어에 전역 변수에 대한 이 패턴을 사용합니다.
Channel%d
는 시스템 레지스터에서 활성화된 고속 카운터 채널 번호여야 합니다.
Y%d
는 PLC에서 제공하는 명시적 출력 어드레스여야 합니다.
FP-S, FP0, FP-e: |
Y0~Y7 |
FP-S(V3.1 이상), FP0R: |
Y0~Y1F |
FP-X: |
Y0~Y29F |
%s
는 패턴 시작에서의 옵션 설명자입니다.
_%s
는 패턴 끝에서의 옵션 설명자입니다.
옵션 | 고정 패턴 | 옵션 |
g_b |
Hsc_TargetValueMatch_ChannelA_Y11F |
_MotorOn |
이 전역 변수는 채널 A의 코드와 출력 Y11F를 생성합니다.
글로벌 변수 리스트에서 프로젝트의 모든 POU에서 액세스할 수 있는 변수를 정의합니다.
이 펑션 프로그램 시 사용한 모든 입력과 출력 변수는 POU 헤더에서 선언되었습니다. 모든 프로그래밍 언어에 같은 POU 헤더를 사용합니다.
VAR
VAR
bExecute: BOOL:=0;
iChannel1: INT:=1;
diTargetValue1: DINT:=15000;
bIsActive: BOOL:=FALSE;
diElapsedValue: DINT:=0;
bReset: BOOL:=FALSE;
bErrorReset: BOOL:=FALSE;
END_VAR
HscInfo_IsActive를 사용하여 iChannel1에서 지정한 채널을 평가합니다. 상승 엣지가 bReset에서 감지되고 bIsActive가 TRUE가 아니면 명령이 실행됩니다. 채널 번호와 출력 접점 조합은 글로벌 변수 g_bHsc_TargetValueMatch_Channel1_Y7_YellowLamp_On에 확인됩니다. 채널 1의 고속 카운터가 대상 값 diTargetValue1에 도달하면 출력 Y7이 FALSE로 설정됩니다.
BODY
WORKSPACE
NETWORK_LIST_TYPE := NWTYPELD ;
ACTIVE_NETWORK := 0 ;
END_WORKSPACE
NET_WORK
NETWORK_TYPE := NWTYPELD ;
NETWORK_LABEL := ;
NETWORK_TITLE := ;
NETWORK_HEIGHT := 3 ;
NETWORK_BODY
B(B_F,HscInfo_IsActive!,,9,0,18,3,,?DiChannel?C);
B(B_VARIN,,iChannel1,7,1,9,3,);
B(B_VAROUT,,bIsActive,18,1,20,3,);
L(1,0,1,3);
END_NETWORK_BODY
END_NET_WORK
NET_WORK
NETWORK_TYPE := NWTYPELD ;
NETWORK_LABEL := ;
NETWORK_TITLE := ;
NETWORK_HEIGHT := 7 ;
NETWORK_BODY
B(B_CONTACT,,bReset,2,1,4,3,R);
B(B_CONTACT,,bIsActive,6,1,8,3,N);
B(B_VARIN,,iChannel1,31,2,33,4,);
B(B_VARIN,,diTargetValue1,31,4,33,6,);
B(B_VAROUT,,bErrorReset,47,1,49,3,);
B(B_F,GetPointer!,,26,3,33,5,,?D?C);
B(B_VARIN,,g_bHsc_TargetValueMatch_Channel1_Y7_YellowLamp_On,24,3,26,5,);
B(B_F,Hsc_TargetValueMatch_Reset!,,33,0,47,6,,?DbExecute?DiChannel?DpYOutput?DdiTargetValue?CbError);
L(1,2,2,2);
L(4,2,6,2);
L(8,2,33,2);
L(1,0,1,7);
END_NETWORK_BODY
END_NET_WORK
END_BODY
bIsActive:=HscInfo_IsActive(iChannel1);
Hsc_TargetValueMatch_Reset(bExecute := DF(bReset) AND NOT bIsActive,
iChannel := iChannel1,
pYOutput := GetPointer(g_bHsc_TargetValueMatch_Channel1_Y7_YellowLamp_On),
diTargetValue := diTargetValue1,
bError => bErrorReset);