JOG運転
この命令は、JOG運転に使用します。位置制御開始入力がTRUEになったあと、指定されたパルス数を出力します。減速が実行された後、目標値に達するとパルス出力は停止します。指定したチャンネルの制御中フラグがFALSEで、実行条件がTRUEのとき、指定したチャンネルからパルスが出力します。
入力
データテーブルが格納されているエリアの先頭アドレス
パルス出力: 0または1
以下のDUTを使用してください。 F169_PulseOutput_Jog_DUT
下記のパラメータをDUTに設定します:
制御コード
速度(周波数)
パルス出力図
周波数とデューティは、スキャンごとに変更することができます。(変更内容は、次のパルス出力後から有効になります。)
この命令を使用しているプログラムをオンライン(RUNモード)で編集し始めるとすぐに、パルス出力は停止します。
パルス出力に使用するチャンネルの高速カウンタは、システムレジスタで「未使用」を指定してください。
通常プログラムと割り込みプログラムの両方に、同じチャンネルについて記述する場合、同時に実行されないようにしてください。
高速カウンタ制御中フラグ(例: sys_bIsHscChannel0ControlActive)とパルス出力制御中フラグ(例: sys_bIsPulseChannel0Active)は、同じ特殊内部フラグの番号に割り付けられています(例: R903A)。従って、高速カウンタ命令またはパルス出力命令が実行されているときは、使用しているチャンネルに対応する、高速カウンタ制御中フラグ(例: sys_bIsHscChannel0ControlActive)とパルス出力制御中フラグ(例: sys_bIsPulseChannel0Active)がTRUEになります。このフラグがTRUEの間は、同じチャンネルに対して、他の高速カウンタ命令、あるいはパルス出力命令を実行することはできません。
一方向のみに回転する制御の場合、内部の経過値が上限を超えると、パルス出力は停止します。対策として、命令を実行する前に経過値を0にリセットしてください。ただし、FP0RをFP0互換モードで使用する場合、パルス出力は停止しません。経過値は符号付32ビットデータとして扱われます。
計数加算モードで使用しているとき、経過値が2147483647を超えると、パルス出力が停止します。
計数減算モードで使用しているとき、経過値が -2147483648 を下回ると、パルス出力が停止します。
位置決めプログラムの作成にあたっては、強制停止ができるようにプログラミングすることをおすすめします。
高速カウンタ制御フラグとパルス出力制御フラグのステータスは、スキャンが実行されている間に変化します。例えば、受信バイト数が2回以上読み出された場合、1スキャン内で異なる状態が存在することがあります。
FP0互換モードでFP0Rを使用する場合、FP0のプログラムをFP0Rにダウンロードすることができます。ただし、以下の制限がありますので、ご注意ください。
経過値および目標値は、FP0Rの場合、符号付32ビットデータ、FP0の場合、符号付24ビットデータとして扱われます。FP0 互換モードの場合、計数およびパルス出力は、FP0 のレンジを超えても実行します。
パルス出力のデューティ比は、命令の設定に関わらず25%となります。"PLS+SIGN"方式でパルス出力する場合、方向出力がONになったあと、約300ms後にパルス出力を開始します。モータドライバの特性を考慮しています。
FP0Rは"計数なし"モードをサポートしていません。FP0パルス出力命令で、"計数なし"が指定されても、加算モードで計数します。
パルス出力の最大周波数は、10000Hzとなります。
パルス出力命令で使用する出力を、通常の出力として使用することはできません。
FP0互換モードで、FP0のプログラムを使用する場合は、PLC機種(C10、C14、C16、C32、T32)を合わせる必要があります。FP0RF32タイプで、FP0互換モードを使用することはできません。
チャンネルとパルス出力番号
チャンネルNo. | パルス出力 | パルス出力方式 |
0 |
Y0 |
パルス |
Y2 |
方向 | |
1 |
Y1 |
パルス |
Y3 |
方向 |
メモリエリアとして使用するシステム変数. カッコ内は、FP0 T32の場合の値を示します。
内容 |
システム変数 |
|
---|---|---|
パルス出力: 制御中フラグチャンネル |
0 |
sys_bIsPulseChannel0Active |
1 |
sys_bIsPulseChannel1Active |
|
パルス出力: 経過値チャンネル |
0 |
sys_diPulseChannel0ElapsedValue |
1 |
sys_diPulseChannel1ElapsedValue |
|
パルス出力: 目標値チャンネル |
0 |
sys_diPulseChannel0TargetValue |
1 |
sys_diPulseChannel1TargetValue |
|
高速カウンタ / パルス出力制御コード |
sys_wHscOrPulseControlCode |
グローバル変数リストでは、プロジェクト内のすべてのPOUからアクセスできる変数を宣言します。
DUT F169_PulseOutput_Jog_DUTは、あらかじめFP Library内に定義されています。
POUヘッダには、このプログラムで使用するすべての入力変数と出力変数を宣言します。 POUヘッダは全プログラム言語で使用できます。
VAR_EXTERNAL
X0_bMotorSwitch: BOOL:=FALSE;
END_VAR
VAR
dut_Jog: F169_PulseOutput_Jog_DUT:=wControlCode := 16#110,
iSpeed := 0;
(*Digit2: 1= Duty 10%
Digit1: 1=Incremental counting
Digit0: 0=No direction output*)
@'': @'';
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_COMMENT,,define frequency~ 300Hz,2,1,22,2,);
B(B_F,E_MOVE!,Instance,9,2,15,6,,?DEN?D?AENO?C);
B(B_VARIN,,300,7,4,9,6,);
B(B_VAROUT,,dut_Jog.iSpeed,15,4,17,6,);
B(B_CONTACT,,X0_bMotorSwitch,5,3,7,5,);
L(1,0,1,6);
L(1,4,5,4);
L(7,4,9,4);
END_NETWORK_BODY
END_NET_WORK
NET_WORK
NETWORK_TYPE := NWTYPELD ;
NETWORK_LABEL := ;
NETWORK_TITLE := ;
NETWORK_HEIGHT := 7 ;
NETWORK_BODY
B(B_F,F169_PulseOutput_Jog!,Instance,12,2,25,7,,?DEN?Ds_dutDataTable?Hn_iPulseOutputChannel?AENO);
B(B_VARIN,,dut_Jog,10,4,12,6,);
B(B_VARIN,,0,10,5,12,7,);
B(B_CONTACT,,X0_bMotorSwitch,5,3,7,5,);
B(B_COMMENT,,start pulse output to output,2,1,22,2,);
L(1,4,5,4);
L(7,4,12,4);
L(1,0,1,7);
END_NETWORK_BODY
END_NET_WORK
END_BODY
IF (X0_bMotorSwitch) then
dutJog.ispeed := 300;
END_IF;
IF (X0_bMotorSwitch) then
F169_PulseOutput_Jog(s_dutDataTable := dutJog,
n_iPulseOutputChannel := 0);
END_IF;