원 보간(전달 위치)
펄스는 지정한 DUT의 파라미터를 따라 2채널에서 출력되므로, 대상 위치 경로는 호로 형성됩니다. 원 반경은 중심 위치와 끝 위치를 지정하여 계산됩니다. 지정된 채널의 제어 플래그가 FALSE이고 실행 조건이 TRUE이면 이 채널에서 펄스가 출력됩니다.
입력
펄스 출력 채널:0, 2
입력/출력
데이터 테이블이 포함된 영역의 시작 어드레스
다음과 같은 사전 정의된 DUT 사용: 2023-03-14F176_PulseOutput_Pass_DUT
DUT에서 F168_PulseOutput_Home_DUT 파라미터를 지정할 수 있습니다.
제어 코드
합성 속도
X-축 목표값
Y-축 목표값
X-축 전달값
Y-축 전달값
각 축의 다음 파라미터는 명령 실행 시 계산되고 DUT의 연산 결과 영역에 저장됩니다.
반경
X-축 중심값
Y-축 중심값
펄스 출력 특정
(1) |
회전 방향: 채널 0(X축)에서 채널 2(Y축)로(두 채널 모두 + 방향으로 이동하는 경우)
|
(2) |
회전 방향: 채널 2(Y축)에서 채널 0(X축)로(두 채널 모두 + 방향으로 이동하는 경우)
|
Fv: |
합성 속도 | O (Xo,Yo): |
중심 위치 |
Fx: |
X-축 속도 | S (Xs,Ys): |
현재 위치(시작) |
Fy: |
Y-축 속도 | P (Xp,Yp) |
전달 위치 |
r: |
반경 | E (Xe,Ye) |
타겟 위치(끝) |
채널 0을 X축으로, 채널 2를 Y축으로 합니다.위치 제어 모드는 절대 값 제어입니다.
현재 위치는 (q=60°, Xs=5000, Ys=8660)입니다. 중심 위치 O(Xo=0, Yo=0)은 참조점으로 사용됩니다. 펄스는 목표 위치(q=-30°, Xe=8660, Ye=-5000)에 도달할 때까지 X축(채널 0)과 Y축(채널 2)에서 Fv=2000Hz 속도로 출력됩니다.
이 명령의 실행 조건은 계속 TRUE여야 합니다. 실행 조건이 FALSE이면 펄스 출력이 정지합니다.
고속 카운터 제어 플래그(예: sys_bIsHscChannel0ControlActive)와 펄스 출력 제어 플래그(예: sys_bIsPulseChannel0Active)가 같은 특수 내부 플래그 번호(예: R903A)에 할당됩니다. 따라서 고속 카운터 명령 또는 펄스 출력 명이 실행되면 사용된 채널의 고속 카운터 제어 플래그(예: sys_bIsHscChannel0ControlActive)와 펄스 출력 제어 플래그(예: sys_bIsPulseChannel0Active)는 TRUE입니다. 다른 고속 카운터 명령 또는 펄스 출력 명령이 실행되면 이 플래그는 더 이상 TRUE가 아닙니다.
원 보간 제어 명령 F176_PulseOutput_Center를 실행하면 원 보간 제어 플래그(sys_bIsCircularInterpolationActive)가 TRUE로 설정됩니다. 이 플래그 상태는 목표 값에 도달할 때까지 유지됩니다(실행 조건이 TRUE가 아니더라도). 이 시간 동안에는 다른 펄스 출력 명령을 실행할 수 없습니다. 원 보간을 다시 시작하려면 강제 정지(펄스 출력 정지)를 수행하여 원 보간 제어 플래그(sys_bIsCircularInterpolationActive)를 FALSE로 설정합니다.
연산 연결 모드에 "연속"을 선택하면 특수 플래그(sys_bIsCircularInterpolationOverwritingPossible)를 사용하여 대상 값 덮어쓰기를 허용합니다. 원 보간 명령이 실행되면 플래그는 1회 스캔에 대해 TRUE입니다.
각 축의 목표 값은 -8388608–8388607 범위 이내여야 합니다. 이 명령을 다른 펄스 출력 명령과 같이 사용하면(예: F171_PulseOutput_Trapezoidal) 이러한 명령의 목표 값은 같은 범위 이내여야 합니다.
스캔 시간이 너무 길면 원 보간 정확도가 저하될 수 있습니다.
이 명령에 대해 RUN 모드 중의 온라인 편집을 사용할 수 없습니다.
주 프로그램과 인터럽트 프로그램 모두에 같은 채널 코드가 포함된 경우, 두 프로그램을 동시에 실행하지 마십시오.
원점 복귀용 보간 함수가 없으면 각 채널마다 원점 복귀를 실행해야 합니다.
정밀도가 필요한 애플리케이션에서 사용하면 실제 장비를 사용한 테스트 실행이 필요합니다.
펄스 출력 채널에 할당된 모든 고속 카운터를 시스템 레지스터의 "미사용"으로 설정합니다.
위치결정 프로그램에 강제 정지 옵션을 통합하는 것이 좋습니다.
고속 카운터 제어 플래그 또는 펄스 출력 제어 플래그 상태는 스캔이 실행 중인 동안에 변경될 수 있습니다. 예를 들어, 수신된 바이트 수를 읽으면 스캔 1회에 다른 상태가 두 개 이상 있을 수 있습니다.
(1) |
실행 조건 X0 |
(2) |
펄스 출력 제어 플래그, 채널 0(sys_bIsPulseChannel0Active) |
(3) |
펄스 출력 제어 플래그, 채널 2(sys_bIsPulseChannel2Active) |
(4) |
원 보간 제어 플래그(sys_bIsCircularInterpolationActive) |
(5) |
대상 값 덮어쓰기 가능 플래그(sys_bIsCircularInterpolationOverwritingPossible) |
a |
시작(S) |
b |
실행 조건 FALSE |
c |
목표 값에 도달함 |
d |
연속 모드 시작 |
e |
1회 스캔 |
이 펑션 프로그램 시 사용한 모든 입력과 출력 변수는 POU 헤더에서 선언되었습니다. 모든 프로그래밍 언어에 같은 POU 헤더를 사용합니다.
VAR
Trigger: BOOL:=FALSE;
dutPassData: F176_PulseOutput_Pass_DUT:=dwControlCode := 16#1000,
diSpeed := 2000,
diTargetPos_X := 8660,
diTargetPos_Y := -5000,
diPassPos_X := 9396,
diPassPos_Y := -3420;
(*Control code:
Digit 4: 0=Operation connection mode: stop
Digit 3: 1=Rotation direction: CCW (left)
Digit 2: 0=Fixed
Digit 1: 0=Relative value control
Digit 0: 2=Pulse/direction (Forward FALSE)
*)
@'': @'';
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_CONTACT,,Trigger,4,2,6,4,R);
B(B_VARIN,,dutPassData,10,4,12,6,);
B(B_VARIN,,0,10,3,12,5,);
B(B_F,F176_PulseOutput_Pass!,Instance,12,1,27,6,,?DEN?Hn_iPulseOutputChannel?Ds_dutDataTable?As_dutDataTable?AENO);
L(1,3,4,3);
L(6,3,12,3);
L(1,0,1,6);
END_NETWORK_BODY
END_NET_WORK
END_BODY
IF DF(Trigger) then
F176_PulseOutput_Pass(n_iPulseOutputChannel := 0,
s_dutDataTable := dutPassData);
END_IF;