直線補間
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に設定します:
下記のパラメータは、命令によって計算され、DUTの演算結果格納エリアに格納されます。
パルス出力図
X軸 目標値(チャンネル0): 5000
Y軸 目標値(チャンネル2) (FP-X:チャンネル1): 2000
2つの軸は、目標位置までの軌跡が直線を描くように制御します。
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に設定します:
下記のパラメータは、命令によって計算され、DUTの演算結果格納エリアに格納されます。
パルス出力図
X軸 目標値(チャンネル0): 5000
Y軸 目標値(チャンネル1): 2000
初速500Hz、目標速度 5kHz、加減速時間300msで、X軸(チャンネル0)とY軸(チャンネル1)からパルス出力します。2つの軸は、目標位置までの軌跡が直線を描くように制御します。
パルスは、デューティ25%で出力します。"PLS+SIGN"方式でパルス出力する場合、方向出力がONになったあと、約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;