목표 값 일치 ON(펄스 출력)
경과 값이 iChannel에서 지정한 펄스 출력 채널의 목표 값 diTargetValue와 일치하면 pYOutput에서 지정한 출력 릴레이가 바로 TRUE로 전환됩니다.
입력
상승 엣지가 함수 활성화, PulseInfo_IsTargetValueMatchActive를 사용하여 펄스 출력 채널 제어 플래그 평가
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
이 비 인라인 명령은 펄스 출력의 도구 명령 일부입니다. 내부에서 사용되는 명령의 자세한 내용은 :F166_PulseOutput_Set
채널과 Y 출력 조합의 유효성을 검사하려면 컴파일러에 전역 변수에 대한 다음과 같은 이름 패턴이 필요합니다.%sPulse_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 |
Pulse_TargetValueMatch_ChannelA_Y11F |
_MotorOn |
이 전역 변수는 채널 A의 코드와 출력 Y11F를 생성합니다.
글로벌 변수 리스트에서 프로젝트의 모든 POU에서 액세스할 수 있는 변수를 정의합니다.
이 펑션 프로그램 시 사용한 모든 입력과 출력 변수는 POU 헤더에서 선언되었습니다. 모든 프로그래밍 언어에 같은 POU 헤더를 사용합니다.
VAR_EXTERNAL
g_bPulse_TargetValueMatch_Channel1_YA_Horn1_On: BOOL:=FALSE;
END_VAR
VAR
diTargetValue0: DINT:=11000;
iChannel1: INT:=1;
bIsActive: BOOL:=FALSE;
bErrorSet: BOOL:=FALSE;
bSet: BOOL:=FALSE;
END_VAR
PulseInfo_IsTargetValueMatchActive를 사용하여 iChannel1이 활성화되어 있는지 평가합니다. bSet에서 상승 엣지가 검색되고 bIsActive가 TRUE가 아니면 명령이 실행됩니다. 채널 번호와 출력 접점 조합은 글로벌 변수 g_bPulse_TargetValueMatch_Channel1_YA_Horn1_On에서 확인됩니다. 채널 1의 펄스 출력이 목표값 diTargetValue0에 도달하면 출력 YA는 TRUE로 설정됩니다.
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_VARIN,,iChannel1,7,1,9,3,);
B(B_VAROUT,,bIsActive,26,1,28,3,);
B(B_F,PulseInfo_IsTargetValueMatchActive!,,9,0,26,3,,?DiChannel?C);
L(1,0,1,3);
END_NETWORK_BODY
END_NET_WORK
NET_WORK
NETWORK_TYPE := NWTYPELD ;
NETWORK_LABEL := ;
NETWORK_TITLE := ;
NETWORK_HEIGHT := 6 ;
NETWORK_BODY
B(B_VAROUT,,bErrorSet,51,1,53,3,);
B(B_CONTACT,,bSet,3,1,5,3,R);
B(B_CONTACT,,bIsActive,7,1,9,3,N);
B(B_VARIN,,iChannel1,32,2,34,4,);
B(B_VARIN,,diTargetValue0,32,4,34,6,);
B(B_F,GetPointer!,,27,3,34,5,,?D?C);
B(B_VARIN,,g_bPulse_TargetValueMatch_Channel1_YA_Horn1_On,25,3,27,5,);
B(B_F,Pulse_TargetValueMatch_Set!,,34,0,48,6,,?DbExecute?DiChannel?DpYOutput?DdiTargetValue?CbError);
L(5,2,7,2);
L(1,2,3,2);
L(9,2,34,2);
L(48,2,51,2);
L(1,0,1,6);
END_NETWORK_BODY
END_NET_WORK
END_BODY
bIsActive:=PulseInfo_IsTargetValueMatchActive(iChannel1);
Pulse_TargetValueMatch_Set(bExecute := DF(bSet) AND NOT bIsActive,
iChannel := iChannel1,
pYOutput := GetPointer(g_bPulse_TargetValueMatch_Channel1_YA_Horn1_On),
diTargetValue := diTargetValue0,
bError => bErrorSet);