선형 보간
펄스는 지정한 DUT의 파라미터를 따라 2채널에서 출력되므로, 대상 위치 경로는 직선으로 형성됩니다. 지정된 채널의 제어 플래그가 FALSE이고 실행 조건이 TRUE이면 이 채널에서 펄스가 출력됩니다.
입력
펄스 출력 채널:
FP-XH C30 T/P: 0~3
FP-XH C60 T/P: 0~5
FPS: 0, 2
FP-X R: 0, 1
FP-XC14T: 0, 1, 2
FP-X C30T/C60T: 0, 1, 2, 3
FP0R: 0, 1, 2, 3
보간의 경우, 채널 0과 1 또는 채널 2와 3이 쌍으로 사용됩니다. 0 또는 2만 지정할 수 있습니다(C14T의 경우: 0만).
입력/출력
데이터 테이블이 포함된 영역의 시작 어드레스
FPS, FP-X: F175_PulseOutput_Linear_DUT_0
FP0R: F175_PulseOutput_Linear_DUT_1
다음과 같은 사전 정의된 DUT 사용: F175_PulseOutput_Linear_DUT_0
DUT에서 F168_PulseOutput_Home_DUT 파라미터를 지정할 수 있습니다.
각 축의 다음 파라미터는 명령 실행 시 계산되고 DUT의 연산 결과 영역에 저장됩니다.
펄스 출력 특정
X-축 목표값(채널 0): 5000
Y-축 목표값(채널 2)(FP-X: 채널 1): 2000
선형 경로가 목표 위치를 따르도록 두 축을 제어합니다.
FP-X: 펄스 출력 명령이 실행되고 펄스가 출력 중이면 해당 채널의 펄스 출력 제어 플래그(예: sys_bIsPulseChannel0Active)는 TRUE입니다. 다른 펄스 출력 명령이 실행되면 이 플래그는 더 이상 TRUE가 아닙니다.
FPS: 고속 카운터 제어 플래그(예: sys_bIsHscChannel0ControlActive)와 펄스 출력 제어 플래그(예: sys_bIsPulseChannel0Active)가 같은 특수 내부 플래그 번호(예: R903A)에 할당됩니다. 따라서 고속 카운터 명령 또는 펄스 출력 명이 실행되면 사용된 채널의 고속 카운터 제어 플래그(예: sys_bIsHscChannel0ControlActive)와 펄스 출력 제어 플래그(예: sys_bIsPulseChannel0Active)는 TRUE입니다. 다른 고속 카운터 명령 또는 펄스 출력 명령이 실행되면 이 플래그는 더 이상 TRUE가 아닙니다.
FPS: 원 보간 제어 명령 F176_PulseOutput_Center를 실행하면 원 보간 제어 플래그(sys_bIsCircularInterpolationActive)가 TRUE로 설정됩니다. 이 플래그 상태는 목표 값에 도달할 때까지 유지됩니다(실행 조건이 TRUE가 아니더라도). 이 시간 동안에는 다른 펄스 출력 명령을 실행할 수 없습니다.
FPS: 펄스 출력 채널에 할당된 모든 고속 카운터를 시스템 레지스터의 "미사용"으로 설정합니다.
FP-X: 시스템 레지스터에서 원하는 채널의 "펄스 출력"을 설정합니다.
위치결정 프로그램에 강제 정지 옵션을 통합하는 것이 좋습니다.
다음과 같은 사전 정의된 DUT 사용: F175_PulseOutput_Linear_DUT_1
DUT에서 F168_PulseOutput_Home_DUT 파라미터를 지정할 수 있습니다.
각 축의 다음 파라미터는 명령 실행 시 계산되고 DUT의 연산 결과 영역에 저장됩니다.
펄스 출력 특정
X-축 목표값(채널 0): 5000
Y-축 목표값(채널 1): 2000
펄스는 X축(채널 0)과 Y축(채널 1)에서 출력되므로, 초기 속도는 500Hz, 목표 속도는 5kHz, 가속 시간과 감속 시간은 300ms입니다. 선형 경로가 타겟 위치를 따르도록 두 축을 제어합니다.
펄스는 듀티 25%를 사용하여 출력됩니다.펄스 출력 방법 "펄스/방향"을 사용하면 방향 신호가 출력된 후에 펄스는 약 300ms로 출력됩니다. 모터 드라이버 특성도 동시에 고려해야 합니다.
목표 값에 도달하면 펄스 출력이 정지합니다.
위치결정 프로그램에 강제 정지 옵션을 통합하는 것이 좋습니다.
이 펑션 프로그램 시 사용한 모든 입력과 출력 변수는 POU 헤더에서 선언되었습니다. 모든 프로그래밍 언어에 같은 POU 헤더를 사용합니다.
VAR
bTrigger: BOOL:=FALSE;
dutLinearData: F175_PulseOutput_Linear_DUT_0:=dwControlCode := 16#1000,
diInitialAndFinalSpeed := 500,
diMaximumSpeed := 5000,
diAccelerationAndDecelerationTime := 300,
diTargetValue_X := 5000,
diTargetValue_Y := 2000;
(*Control code:
Digit 3: 1=Duty ratio 25%
Digit 2: 0=Fixed
Digit 1: 0=Relative value control
Digit 0: 0=CW/CCW
*)
@'': @'';
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,,bTrigger,4,2,6,4,R);
B(B_VARIN,,dutLinearData,11,4,13,6,);
B(B_VARIN,,0,11,3,13,5,);
B(B_F,F175_PulseOutput_Linear!,Instance,13,1,28,6,,?DEN?Hn_iPulseOutputChannel?Ds_dutDataTable?As_dutDataTable?AENO);
L(1,3,4,3);
L(6,3,13,3);
L(1,0,1,6);
END_NETWORK_BODY
END_NET_WORK
END_BODY
IF DF(bTrigger) then
F175_PulseOutput_Linear(n_iPulseOutputChannel := 0,
s_dutDataTable := dutLinearData);
END_IF;