JOG位置決め
この命令は、JOG運転に使用します。位置制御開始入力がTRUEになったあと、指定されたパルス数を出力します。減速が実行された後、目標値に達するとパルス出力は停止します。指定したチャンネルの制御中フラグがFALSEで、実行条件がTRUEのとき、指定したチャンネルからパルスが出力します。目標速度は、位置制御開始入力がTRUEになるタイミングで、あらかじめ設定した速度に切り替わります。
入力
実行条件:
エッジトリガ使用
速度の変更が必要な場合、不変
相対値制御のみをサポートしています。常にFALSEでなければなりません。それ以外はエラーが出力されます。
初速 = 1~50000 (1Hz~50kHz)
目標速度 = 1~50000 (1Hz~50kHz)
加速時間= 1ms~32760ms
目標速度 = 1~50000 (1Hz~50kHz)
切替時間 = 1~32760ms
減速時間 = 1~32760ms
目標値[パルス]: -2147483648~2147483647
出力
割り付けた入力値が無効のときにTRUE。ファンクションブロックの実行は停止します。
適用チャンネルがシステムレジスタで有効にされていない場合、あるいはbAbsoluteがTRUEであるときにTRUE
この非インライン命令は、パルス出力用Tool命令の一部です。内部で使われる命令に関する詳細は、をご参照ください。F171_PulseOutput_Jog_Positioning
PulseInfo_IsActiveを使用して、選択したチャンネルの制御フラグがFALSEかどうかをチェックします。PulseControl_PulseOutputStopを使用して、指定したチャンネルでのパルス出力を停止します。PulseControl_DeceleratedStopを使用して減速停止を実行します。
DUT構造体はData Unit Typeの略で、複数の異なるデータ型をもつ変数で構成されます。構造体をまず定義し、その後、標準的なデータ型(BOOL、INTなど)と同様にグローバル変数リストやPOUヘッダで使用します。
POUヘッダには、このプログラムで使用するすべての入力変数と出力変数を宣言します。 POUヘッダは全プログラム言語で使用できます。
VAR
PulseOutput_Jog_Positioning1: PulseOutput_Jog_Positioning1_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,18,15,18);
L(10,14,15,14);
L(10,10,15,10);
L(10,6,15,6);
L(10,2,10,18);
L(10,18,10,22);
L(10,22,15,22);
L(1,0,1,24);
END_NETWORK_BODY
END_NET_WORK
NET_WORK
NETWORK_TYPE := NWTYPELD ;
NETWORK_LABEL := ;
NETWORK_TITLE := ;
NETWORK_HEIGHT := 13 ;
NETWORK_BODY
B(B_VARIN,,600,10,4,12,6,);
B(B_VARIN,,10000,10,5,12,7,);
B(B_VARIN,,300,10,6,12,8,);
B(B_VARIN,,25000,10,7,12,9,);
B(B_VARIN,,1200,10,8,12,10,);
B(B_VARIN,,600,10,9,12,11,);
B(B_VARIN,,90000,10,10,12,12,);
B(B_VARIN,,ChannelConfiguration_DUT,10,11,12,13,);
B(B_VARIN,,bExecute,10,2,12,4,);
B(B_VAROUT,,bError,28,2,30,4,);
B(B_FB,PulseOutput_Jog_Positioning1_FB!,PulseOutput_Jog_Positioning1,12,1,28,13,,?BbExecute?BbAbsolute?BdiInitialAndFinalSpeed?BdiTargetSpeed1?BdiAccelerationTime?BdiTargetSpeed2?BdiChangeTime?BdiDecelerationTime?BdiTargetValue?BdutChannelConfiguration?AbError);
B(B_VARIN,,bAbsolute,10,3,12,5,);
L(1,0,1,13);
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_Positioning1(bExecute := bExecute,
bAbsolute := bAbsolute
diInitialAndFinalSpeed := 600,
diTargetSpeed1 := 10000,
diAccelerationTime := 300,
diTargetSpeed2 := 25000,
diChangeTime := 1200,
diDecelerationTime := 600,
diTargetValue := 90000,
dutChannelConfiguration := ChannelConfiguration_DUT,
bError => bError);