목표값 일치 ON(펄스 출력)
경과 값이 선택한 펄스 출력 채널의 목표 값과 일치하면 지정된 출력이 즉시 TRUE로 전환됩니다.
입력
펄스 출력 채널:0–3
목표 값의 32비트 데이터 값을 다음 범위 내로 지정: -2147483467~+2147483648
출력
경과 값이 목표 값과 일치하는 경우, TRUE로 전환된 출력: Y0~Y1F
펄스 출력 특정
목표값:10000
펄스 출력의 경과 값
실행 조건
"출력 제어 활성" 플래그
PLC 출력
경과 값이 목표 값과 일치하면 PLC 출력은 TRUE로 전환됩니다. 또한 "출력 제어 활성" 플래그는 FALSE로 전환되고 명령이 비활성화됩니다.구현되지 않은 출력이 지정되면 해당 WY 어드레스의 내부 메모리만 설정되거나 초기화됩니다.
인터럽트 연산
경과 값이 목표 값과 일치하면 인터럽트 프로그램이 실행됩니다. 작업 목록에 입력된 모든 인터럽트가 자동으로 활성화됩니다. 특수 인터럽트 프로그램 번호는 각 채널 번호에 할당됩니다.
인터럽트 프로그램에서 사용한 채널:
인터럽트8 |
채널0 |
인터럽트9 |
채널1 |
인터럽트10 |
채널2 |
인터럽트11 |
채널3 |
시스템 레지스터에서 원하는 채널의 "펄스 출력"을 설정합니다.
이 명령이 실행되면 사용한 채널의 "출력 제어 활성" 플래그(예: sys_bIsPulseChannel0ControlActive)는 TRUE로 전환됩니다. 같은 채널을 사용하여 출력 제어(F166_PulseOutput_Set 또는 F167_PulseOutput_Reset)가 있는 다른 고속 카운터 명령은 이 플래그가 TRUE인 동안에는 실행될 수 없습니다.
F173_PulseOutput_PWM을 제외한 모든 펄스 출력 명령에 이 명령을 사용할 수 있고 펄스 출력 명령 실행 전 또는 후에 실행할 수 있습니다.
다른 명령(OUT, SET, RST, KEEP 및 기타 F 명령)에서 출력을 중복 사용하면 이러한 사용은 FPWIN Pro에서 확인되지 않고 감지되지 않습니다.
이전에 TRUE로 설정한 PLC 출력을 이 명령으로 FALSE로 출력하려면 RST 또는 MOVE 명령을 사용합니다.
펄스 출력 명령 실행을 취소하려면 펄스 출력 제어 코드(sys_wHscOrPulseControlCode)를 저장하는 데이터 레지스터의 비트 2를 TRUE로 설정합니다. 그런 다음 펄스 출력 제어 플래그가 FALSE로 변경됩니다. 명령 실행을 다시 활성화하려면 비트 2를 FALSE로 다시 설정합니다.
주 프로그램과 인터럽트 프로그램 모두에 같은 채널 코드가 포함된 경우, 두 프로그램을 동시에 실행하지 마십시오.
위치결정 프로그램에 강제 정지 옵션을 통합하는 것이 좋습니다.
고속 카운터 제어 플래그 또는 펄스 출력 제어 플래그 상태는 스캔이 실행 중인 동안에 변경될 수 있습니다. 예를 들어, 수신된 바이트 수를 읽으면 스캔 1회에 다른 상태가 두 개 이상 있을 수 있습니다.
글로벌 변수 리스트에서 프로젝트의 모든 POU에서 액세스할 수 있는 변수를 정의합니다.
이 펑션 프로그램 시 사용한 모든 입력과 출력 변수는 POU 헤더에서 선언되었습니다. 모든 프로그래밍 언어에 같은 POU 헤더를 사용합니다.
VAR_EXTERNAL
out_0: BOOL:=FALSE;
(*output Y0 of PLC*)
END_VAR
VAR
start: BOOL:=FALSE;
(*start condition*)
@'': @'';
END_VAR
변수 start가 TRUE로 설정되면 펑션이 실행됩니다.
BODY
WORKSPACE
NETWORK_LIST_TYPE := NWTYPELD ;
ACTIVE_NETWORK := 0 ;
END_WORKSPACE
NET_WORK
NETWORK_TYPE := NWTYPELD ;
NETWORK_LABEL := ;
NETWORK_TITLE := ;
NETWORK_HEIGHT := 6 ;
NETWORK_BODY
B(B_F,F166_PulseOutput_Set!,Instance,12,1,26,6,,?DEN?Hn_diPulseOutputChannel?Ds_diTargetValue?AENO?Cd_Y);
B(B_VARIN,,0,10,3,12,5,);
B(B_VARIN,,10,10,4,12,6,);
B(B_VAROUT,,out_0,26,3,28,5,);
B(B_CONTACT,,start,5,2,7,4,R);
L(1,3,5,3);
L(7,3,12,3);
L(1,0,1,6);
END_NETWORK_BODY
END_NET_WORK
END_BODY
IF DF(start) then
F166_PulseOutput_Set(n_diPulseOutputChannel := 0,
s_diTargetValue := 10,
d_Y => out_0);
END_IF;