JOG 동작 및 위치 지정
위치 제어 트리거 입력이 TRUE로 변환된 후 펄스의 특정 번호가 출력됩니다. 목표 값에 도달하고 펄스 출력이 정지하기 전에 감속이 수행됩니다. 이 채널의 제어 플래그가 FALSE이고 실행 조건이 TRUE이면 지정된 채널에서 펄스가 출력됩니다.
입력
데이터 테이블이 포함된 영역의 시작 어드레스
F171_PulseOutput_Jog_Positioning_Type0_DUT 또는 F171_PulseOutput_Jog_Positioning_Type1_DUT펄스 출력 채널:0–3
두 가지 다른 작동 모드 중 하나를 선택합니다.
형식 0: 특정 목표 속도 범위 내에서 속도를 변경할 수 있습니다.
형식 1: 위치 제어 트리거 입력이 TRUE로 전환되면 목표 속도를 변경할 수 있습니다.
펄스 출력 특정
펄스 출력 주파수가 특정 가속 시간 및 특정 감속 시간에 따라 변경됩니다.
타겟 속도와 초기 속도 간의 차이는 가속 램프 기울기로 판별됩니다.
타겟 속도와 최종 속도 간의 차이는 감속 램프 기울기로 판별됩니다.
위치 제어 트리거 입력이 TRUE로 전환되면 펄스가 계속 출력된 후 감속되어 목표 값에 도달하면 정지합니다.
다음 동작 중 하나로 펄스 출력을 정지할 수 있습니다.
위치 제어 트리거를 TRUE로 전환(목표값에 도달하고 감속이 완료될 때까지 펄스 출력이 계속됨): 위치 제어 트리거 입력을 TRUE로 전환하거나 펄스 출력 제어 코드를 저장하는 데이터 레지스터의 비트 6을 FALSE에서 TRUE로 설정하면 위치 제어 트리거를 시작할 수 있습니다(예: MOVE(16#140, sys_wHscOrPulseControlCode);
).
감속 정지 요청:감속 정지를 수행하려면 펄스 출력 제어 코드를 저장하는 데이터 레지스터의 비트 5를 FALSE 에서 TRUE로 설정합니다(예: MOVE(16#120, sys_wHscOrPulseControlCode);
).가속 중에 감속 정지가 요청되면 목표 속도에서 동일한 감속 경사로 감속이 수행됩니다.
비상정지 실행: 비상 정지를 수행하려면 펄스 출력 제어 코드를 저장하는 데이터 레지스터의 비트 3을 FALSE에서 TRUE로 설정합니다(예: MOVE(16#108, sys_wHscOrPulseControlCode);
).
정지되면 프로그램에서 사용한 채널의 모든 펄스 출력 펑션이 비활성화됩니다.
다음과 같은 사전 정의된 DUT 사용: 2023-03-16F171_PulseOutput_Jog_Positioning_Type0_DUT
DUT에서 F168_PulseOutput_Home_DUT 파라미터를 지정할 수 있습니다.
제어 코드
초기 및 최종 속도
타겟 속도
가속 시간
감속 시간
목표값
펄스 출력 중에 목표 시간을 변경할 수 있습니다.펄스 출력 중에 목표 속도 변경
목표 속도 변경 안 함: |
목표 속도 변경함: |
초기 및 최종 속도
타겟 속도
목표값
가속 시간
감속 시간
실행 조건
위치 제어 트리거 입력
펄스 출력 제어 플래그
속도를 변경하려면 실행 조건을 TRUE로 전환합니다.
목표 속도가 50kHz보다 큰 값으로 설정되면 50kHz로 보정됩니다.
경과 값이 가속 중에 가속 금지 영역 시작 위치(예: sys_diPulseChannel0AccelerationForbiddenAreaStartingPosition)를 교차하면 가속을 수행할 수 없습니다.
감속 속도는 보정된 최종 속도 이하일 수 없습니다.
명령이 인터럽트 프로그램에서 실행되면 목표 속도를 변경할 수 없습니다.
다음과 같은 사전 정의된 DUT 사용: 2023-03-16F171_PulseOutput_Jog_Positioning_Type1_DUT
DUT에서 F168_PulseOutput_Home_DUT 파라미터를 지정할 수 있습니다.
제어 코드
초기 및 최종 속도
타겟 속도1
가속 시간
타겟 속도2
변경 시간
감속 시간
목표값
목표 속도 1< 목표 속도 2: |
목표 속도 1> 목표 속도 2: |
초기 및 최종 속도
타겟 속도
타겟 속도
목표값
가속 시간
변경 시간
감속 시간
실행 조건
위치 제어 트리거 입력
위치 제어 트리거 입력이 TRUE로 전환된 후 펄스 출력 주파수는 변경 시간을 사용하여 변경되어 목표 시간 2가 가속 또는 감속됩니다. 목표 시간을 추가로 변경할 수 없습니다. 가속 중에 위치 제어 트리거 입력이 켜지면 무시됩니다.
이 명령을 사용하여 프로그램 온라인 편집을 시작하자마자(즉, RUN 모드에서) 펄스 출력이 정지합니다.
주 프로그램과 인터럽트 프로그램 모두에 같은 채널 코드가 포함된 경우, 두 프로그램을 동시에 실행하지 마십시오.
펄스 출력 명령이 실행되고 펄스가 출력 중이면 해당 채널의 펄스 출력 제어 플래그(예: sys_bIsPulseChannel0Active)는 TRUE입니다. 다른 펄스 출력 명령이 실행되면 이 플래그는 더 이상 TRUE가 아닙니다.
시스템 레지스터 402에서 위치 제어 트리거 입력(X0, X1, X2, X3)을 설정합니다.
위치 제어 트리거 입력의 경우, 상승 엣지(TRUE)만 감지됩니다.
감속 정지가 요청되면 이 명령을 시작할 수 없습니다.
동작 정지 후 다시 시작하려면 실행 조건을 FALSE로 전환한 후 다시 TRUE로 전환해 주십시오.
위치결정 프로그램에 강제 정지 옵션을 통합하는 것이 좋습니다.
고속 카운터 제어 플래그 또는 펄스 출력 제어 플래그 상태는 스캔이 실행 중인 동안에 변경될 수 있습니다. 예를 들어, 수신된 바이트 수를 읽으면 스캔 1회에 다른 상태가 두 개 이상 있을 수 있습니다.
이 펑션 프로그램 시 사용한 모든 입력과 출력 변수는 POU 헤더에서 선언되었습니다. 모든 프로그래밍 언어에 같은 POU 헤더를 사용합니다.
VAR
Start: BOOL:=FALSE;
dutJog: F171_PulseOutput_Jog_Positioning_Type0_DUT:=dwControlCode := 16#010,
diInitialAndFinalSpeed := 1000,
diTargetSpeed := 7000,
diAccelerationTime := 300,
diDecelerationTime := 450,
diTargetValue := 10000;
(*Digit3: 0=Pulse output
Digit2: 1=Fixed
Digit0: 0=CW/CCW2*)
diInitialAndFinalSpeed: DINT:=1000;
@'': @'';
END_VAR
BODY
WORKSPACE
NETWORK_LIST_TYPE := NWTYPELD ;
ACTIVE_NETWORK := 0 ;
END_WORKSPACE
NET_WORK
NETWORK_TYPE := NWTYPELD ;
NETWORK_LABEL := ;
NETWORK_TITLE := ;
NETWORK_HEIGHT := 5 ;
NETWORK_BODY
B(B_F,E_MOVE!,Instance,13,0,19,4,,?DEN?D?AENO?C);
B(B_VARIN,,diInitialAndFinalSpeed,11,2,13,4,);
B(B_VAROUT,,dutJog.diInitialAndFinalSpeed,19,2,21,4,);
B(B_CONTACT,,Start,6,1,8,3,);
L(1,2,6,2);
L(8,2,13,2);
L(1,0,1,5);
END_NETWORK_BODY
END_NET_WORK
NET_WORK
NETWORK_TYPE := NWTYPELD ;
NETWORK_LABEL := ;
NETWORK_TITLE := ;
NETWORK_HEIGHT := 5 ;
NETWORK_BODY
B(B_F,F171_PulseOutput_Jog_Positioning!,Instance,8,0,24,5,,?DEN?Ds_dutDataTable?Hn_iPulseOutputChannel?AENO);
B(B_VARIN,,dutJog,6,2,8,4,);
B(B_VARIN,,0,6,3,8,5,);
B(B_CONTACT,,Start,2,1,4,3,);
L(1,2,2,2);
L(4,2,8,2);
L(1,0,1,5);
END_NETWORK_BODY
END_NET_WORK
END_BODY
IF (Start) then
dutJog.diInitialAndFinalSpeed:=diInitialAndFinalSpeed;
END_IF;
IF (Start) then
F171_PulseOutput_Jog_Positioning(s_dutDataTable := dutJog, 0);
END_IF;