JOG 동작 및 위치 결정
이 명령은 JOG 동작에 사용됩니다. 위치 제어 트리거 입력이 TRUE로 변환된 후 펄스의 특정 번호가 출력됩니다. 목표 값에 도달하고 펄스 출력이 정지하기 전에 감속이 수행됩니다. 이 채널의 제어 플래그가 FALSE이고 실행 조건이 TRUE이면 지정된 채널에서 펄스가 출력됩니다.특정 목표 속도 범위 내에서 속도를 변경할 수 있습니다.
입력
실행 조건은 다음과 같을 수 있습니다.
엣지 트리거 포함
속도 변경이 필요한 경우 영구.
상대 값 제어만 지원됩니다. 항상 FALSE이어야 합니다. 그렇지 않으면 에러가 출력됩니다.
초기 및 최종 속도(F171_PulseOutput_Trapezoidal): 1~50000(1Hz~50kHz)
타겟 속도: 이 값을 PulseOutput_Channel_Configuration_DUT에서 선택한 주파수 범위에 따라 설정합니다.
FPS, FP-X: 1~9800(1,5Hz~9,8kHz)
48~100000(48Hz~100kHz)
191~100000(191~100kHz)
F171_PulseOutput_Trapezoidal: 1~50000(1Hz~50kHz)
FP0, F168_PulseOutput_Trapezoidal: 40~5000(40Hz~5kHz)
가속 시간(F171_PulseOutput_Trapezoidal): 1ms~32760ms(최대 속도까지)
감속 시간(F171_PulseOutput_Trapezoidal): 1ms~32760ms(최대 속도부터)
목표값[펄스]: -2147483648~2147483647
출력
적용된 입력 값이 무효인 경우에는 TRUE입니다. 펑션블록 실행이 정지됩니다.
적용된 채널이 시스템 레지스터에서 활성화되지 않거나 bAbsolute가 TRUE인 경우에 TRUE
이 비 인라인 명령은 펄스 출력의 도구 명령 일부입니다. 내부에서 사용되는 명령의 자세한 내용은 :F171_PulseOutput_Jog_Positioning. PulseInfo_IsActive를 사용하여 선택한 채널의 제어 플래그가 FALSE인지 확인합니다.PulseControl_PulseOutputStop을 사용하여 특정 채널에서 펄스 출력을 정지합니다. PulseControl_DeceleratedStop을 사용하여 감속 정지를 수행합니다.
구조체(DUT)를 사용하여 다른 데이터 형식으로 구성된 구조체를 정의할 수 있습니다. DUT는 먼저 DUT 풀에서 정의된 후 POU 헤더의 전역 변수 목록에서 표준 데이터 형식(BOOL, INT 등)으로 처리됩니다.
이 펑션 프로그램 시 사용한 모든 입력과 출력 변수는 POU 헤더에서 선언되었습니다. 모든 프로그래밍 언어에 같은 POU 헤더를 사용합니다.
VAR
PulseOutput_Jog_Positioning0: PulseOutput_Jog_Positioning0_FB;
bExecute: BOOL:=FALSE;
ChannelConfiguration_DUT: PulseOutput_Channel_Configuration_DUT;
bError: BOOL:=FALSE;
bConfigureDUT: BOOL:=FALSE;
bAbsolute: BOOL:=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 := 24 ;
NETWORK_BODY
B(B_CONTACT,,bConfigureDUT,4,1,6,3,);
B(B_F,E_MOVE!,,15,0,21,4,,?DEN?D?AENO?C);
B(B_VARIN,,1,13,2,15,4,);
B(B_F,E_MOVE!,,15,8,21,12,,?DEN?D?AENO?C);
B(B_VARIN,,FALSE,13,10,15,12,);
B(B_VAROUT,,ChannelConfiguration_DUT.bOutput_Pulse_ForwardFalse,21,10,23,12,);
B(B_F,E_MOVE!,,15,12,21,16,,?DEN?D?AENO?C);
B(B_F,E_MOVE!,,15,4,21,8,,?DEN?D?AENO?C);
B(B_VARIN,,TRUE,13,6,15,8,);
B(B_VAROUT,,ChannelConfiguration_DUT.bOutput_Pulse_ForwardTrue,21,6,23,8,);
B(B_VARIN,,TRUE,13,14,15,16,);
B(B_VAROUT,,ChannelConfiguration_DUT.iChannel,21,2,23,4,);
B(B_F,E_MOVE!,,15,16,21,20,,?DEN?D?AENO?C);
B(B_VARIN,,FALSE,13,18,15,20,);
B(B_VAROUT,,ChannelConfiguration_DUT.bDutyRatio25,21,18,23,20,);
B(B_VAROUT,,ChannelConfiguration_DUT.bAccelerationSteps60,21,14,23,16,);
B(B_VAROUT,,ChannelConfiguration_DUT.bFrequencyRange_191Hz_100kHz,21,22,23,24,);
B(B_VARIN,,TRUE,13,22,15,24,);
B(B_F,E_MOVE!,,15,20,21,24,,?DEN?D?AENO?C);
L(1,2,4,2);
L(6,2,15,2);
L(10,22,15,22);
L(10,18,15,18);
L(10,14,15,14);
L(10,10,15,10);
L(10,6,15,6);
L(10,18,10,22);
L(10,2,10,18);
L(1,0,1,24);
END_NETWORK_BODY
END_NET_WORK
NET_WORK
NETWORK_TYPE := NWTYPELD ;
NETWORK_LABEL := ;
NETWORK_TITLE := ;
NETWORK_HEIGHT := 11 ;
NETWORK_BODY
B(B_VARIN,,600,10,4,12,6,);
B(B_VARIN,,12000,10,5,12,7,);
B(B_VARIN,,300,10,6,12,8,);
B(B_VARIN,,600,10,7,12,9,);
B(B_VARIN,,50000,10,8,12,10,);
B(B_VARIN,,ChannelConfiguration_DUT,10,9,12,11,);
B(B_VARIN,,bExecute,10,2,12,4,);
B(B_VAROUT,,bError,28,2,30,4,);
B(B_FB,PulseOutput_Jog_Positioning0_FB!,PulseOutput_Jog_Positioning0,12,1,28,11,,?BbExecute?BbAbsolute?BdiInitialAndFinalSpeed?BdiTargetSpeed?BdiAccelerationTime?BdiDecelerationTime?BdiTargetValue?BdutChannelConfiguration?AbError);
B(B_VARIN,,bAbsolute,10,3,12,5,);
L(1,0,1,11);
END_NETWORK_BODY
END_NET_WORK
END_BODY
(* Used DUT parameters *)
ChannelConfiguration_DUT.iChannel := 1;
ChannelConfiguration_DUT.bOutput_Pulse_ForwardTrue := TRUE;
ChannelConfiguration_DUT.bOutput_Pulse_ForwardFalse := FALSE;
ChannelConfiguration_DUT.bAccelerationSteps60 := FALSE;
ChannelConfiguration_DUT.bDutyRatio25 := TRUE;
ChannelConfiguration_DUT.bFrequencyRange_191Hz_100kHz := TRUE;
ChannelConfiguration_DUT.bExecuteInInterrupt := FALSE;
(* FB *)
PulseOutput_Jog_Positioning0(bExecute := bExecute,
bAbsolute := bAbsolute
diInitialAndFinalSpeed := 600,
diTargetSpeed := 12000,
diAccelerationTime := 300,
diDecelerationTime := 600,
diTargetValue := 50000,
dutChannelConfiguration := ChannelConfiguration_DUT,
bError => bError);