JOG 동작
이 명령은 JOG 동작에 사용됩니다. 위치 제어 트리거 입력이 TRUE로 변환된 후 펄스의 특정 번호가 출력됩니다. 목표 값에 도달하고 펄스 출력이 정지하기 전에 감속이 수행됩니다. 이 채널의 제어 플래그가 FALSE이고 실행 조건이 TRUE이면 지정된 채널에서 펄스가 출력됩니다.
입력
데이터 테이블이 포함된 영역의 시작 어드레스
펄스 출력: 0 또는 1
다음과 같은 사전 정의된 DUT 사용: 2022-06-29F169_PulseOutput_Jog_DUT
DUT에서 F168_PulseOutput_Home_DUT 파라미터를 지정할 수 있습니다.
제어 코드
속도
펄스 출력 특정
스캔마다 주파수와 듀티를 변경할 수 있습니다. (변경 사항은 다음 펄스 출력에 유효합니다.)
이 명령을 사용하여 프로그램 온라인 편집을 시작하자마자(즉, RUN 모드에서) 펄스 출력이 정지합니다.
펄스 출력 채널에 할당된 모든 고속 카운터를 시스템 레지스터의 "미사용"으로 설정합니다.
주 프로그램과 인터럽트 프로그램 모두에 같은 채널 코드가 포함된 경우, 두 프로그램을 동시에 실행하지 마십시오.
고속 카운터 제어 플래그(예: sys_bIsHscChannel0ControlActive)와 펄스 출력 제어 플래그(예: sys_bIsPulseChannel0Active)가 같은 특수 내부 플래그 번호(예: R903A)에 할당됩니다. 따라서 고속 카운터 명령 또는 펄스 출력 명이 실행되면 사용된 채널의 고속 카운터 제어 플래그(예: sys_bIsHscChannel0ControlActive)와 펄스 출력 제어 플래그(예: sys_bIsPulseChannel0Active)는 TRUE입니다. 다른 고속 카운터 명령 또는 펄스 출력 명령이 실행되면 이 플래그는 더 이상 TRUE가 아닙니다.
회전이 한 방향으로만 실행되는 경우, 내부 경과 값의 상한값이 초과하면 펄스 출력이 정지합니다. 보호 조치로서, 이 명령을 실행하기 전에 경과 값을 0으로 다시 설정합니다. 경과 값의 데이터 범위가 부호가 있는 32비트 값이므로, FP0R이 FP0 호환 모드에서 사용되면 펄스 출력이 정지되지 않습니다.
증분 계산을 사용하는 경우, 경과 값이 2147483647을 초과하면 펄스 출력이 정지합니다.
감소 계산을 사용하는 경우, 경과 값이 -2147483648을 초과하면 펄스 출력이 정지합니다.
위치결정 프로그램에 강제 정지 옵션을 통합하는 것이 좋습니다.
고속 카운터 제어 플래그 또는 펄스 출력 제어 플래그 상태는 스캔이 실행 중인 동안에 변경될 수 있습니다. 예를 들어, 수신된 바이트 수를 읽으면 스캔 1회에 다른 상태가 두 개 이상 있을 수 있습니다.
FP0 호환 모드에서 FP0R을 실행하려면 FP0 프로그램을 FP0R에 다운로드하면 됩니다. 다음 제한 사항을 참조해 주십시오.
FP0R은 경과 값과 목표 값에 대해 부호가 있는 32비트 데이터를 지원하고, FP0은 부호가 있는 24비트 데이터를 지원합니다. FP0 호환 모드에서 데이터가 FP0 범위를 초과하더라도 계산과 펄스 출력은 계속 실행됩니다.
듀티는 명령 설정에 관계없이 항상 25%입니다. 펄스 출력 방법 "펄스/방향"을 사용하면 방향 신호가 출력된 후에 펄스는 약 300ms로 출력됩니다. 모터 드라이버 특성도 동시에 고려해야 합니다.
FP0R은 "계산 없음" 설정을 지원하지 않습니다. 대신 FP0 펄스 출력 명령으로 수행되는 증분 계산은 "계산 없음"으로 설정됩니다.
최대 펄스 출력 주파수는 10000Hz입니다.
펄스 출력 명령이 보통 출력으로 사용 중인 출력을 사용하지 않는지 확인합니다.
PLC 기종(C10, C14, C16, C32 및 T32)이 정확히 일치하면 FP0 프로그램이 FP0 호환 모드에서만 실행될 수 있습니다. F32 형식 FP0R에서는 FP0 호환 모드를 사용할 수 없습니다.
채널 및 펄스 출력 번호
채널 번호 | 펄스 출력 | 펄스 출력 방법 |
0 |
Y0 |
펄스 |
Y2 |
방향 | |
1 |
Y1 |
펄스 |
Y3 |
방향 |
사용한 메모리 영역의 시스템 변수. 괄호 안의 값은 FP0 T32에 유효합니다.
설명 |
시스템 변수 |
|
---|---|---|
펄스 출력: 채널의 제어 플래그 |
0 |
sys_bIsPulseChannel0Active |
1 |
sys_bIsPulseChannel1Active |
|
펄스 출력: 채널의 경과 값 |
0 |
sys_diPulseChannel0ElapsedValue |
1 |
sys_diPulseChannel1ElapsedValue |
|
펄스 출력: 채널의 목표 값 |
0 |
sys_diPulseChannel0TargetValue |
1 |
sys_diPulseChannel1TargetValue |
|
고속카운터 또는 펄스 출력 제어코드 |
sys_wHscOrPulseControlCode |
글로벌 변수 리스트에서 프로젝트의 모든 POU에서 액세스할 수 있는 변수를 정의합니다.
DUT F169_PulseOutput_Jog_DUT는 FP Library에서 사전 정의됩니다.
이 펑션 프로그램 시 사용한 모든 입력과 출력 변수는 POU 헤더에서 선언되었습니다. 모든 프로그래밍 언어에 같은 POU 헤더를 사용합니다.
VAR_EXTERNAL
X0_bMotorSwitch: BOOL:=FALSE;
END_VAR
VAR
dut_Jog: F169_PulseOutput_Jog_DUT:=wControlCode := 16#110,
iSpeed := 0;
(*Digit2: 1= Duty 10%
Digit1: 1=Incremental counting
Digit0: 0=No direction output*)
@'': @'';
END_VAR
코멘트 필드는 이 예의 함수를 설명합니다.
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_COMMENT,,define frequency~ 300Hz,2,1,22,2,);
B(B_F,E_MOVE!,Instance,9,2,15,6,,?DEN?D?AENO?C);
B(B_VARIN,,300,7,4,9,6,);
B(B_VAROUT,,dut_Jog.iSpeed,15,4,17,6,);
B(B_CONTACT,,X0_bMotorSwitch,5,3,7,5,);
L(1,0,1,6);
L(1,4,5,4);
L(7,4,9,4);
END_NETWORK_BODY
END_NET_WORK
NET_WORK
NETWORK_TYPE := NWTYPELD ;
NETWORK_LABEL := ;
NETWORK_TITLE := ;
NETWORK_HEIGHT := 7 ;
NETWORK_BODY
B(B_F,F169_PulseOutput_Jog!,Instance,12,2,25,7,,?DEN?Ds_dutDataTable?Hn_iPulseOutputChannel?AENO);
B(B_VARIN,,dut_Jog,10,4,12,6,);
B(B_VARIN,,0,10,5,12,7,);
B(B_CONTACT,,X0_bMotorSwitch,5,3,7,5,);
B(B_COMMENT,,start pulse output to output,2,1,22,2,);
L(1,4,5,4);
L(7,4,12,4);
L(1,0,1,7);
END_NETWORK_BODY
END_NET_WORK
END_BODY
IF (X0_bMotorSwitch) then
dutJog.ispeed := 300;
END_IF;
IF (X0_bMotorSwitch) then
F169_PulseOutput_Jog(s_dutDataTable := dutJog,
n_iPulseOutputChannel := 0);
END_IF;