F168_PulseOutput_Home

原点復帰

この命令は、指定したDUTのパラメータの内容に従って、原点復帰を実行します。指定したチャンネルの制御中フラグがFALSEで、実行条件がTRUEのとき、指定したチャンネルからパルスが出力します。

パラメータ

入力

s_dutDataTable (F168_PulseOutput_Home_DUT)

データテーブルが格納されているエリアの先頭アドレス

n_iPulseOutputChannel(10進定数)

パルス出力: 0または1

解説

位置決めシステムに電源を入れた際、内部の位置データ(経過値)と実際の機械的な軸位置との間には差異があります。この差異はあらかじめ決めることはできません。これらの位置データは、各軸の実際の位置に合わせる必要があります。その動作は、原点位置で位置データを登録する原点復帰によって実行されます。 原点復帰命令の実行中、原点入力が有効になるまで、継続してパルスが出力されます。I/O割り付けは、使用するチャンネルによって変わります。 原点近傍位置で減速動作をさせるためには、原点近傍入力に割り付けられているパルス出力制御コード(sys_wHscOrPulseControlCode) (特殊データレジスタ)のビット4TRUEにセットしたあと、再び、FALSEに戻してください。 原点復帰中の経過値エリアの値は、実際の値とは異なります。原点復帰が完了すると、経過値は0になります。

2つの動作モードからいずれかを選択してください。

  • タイプ1原点入力は、原点近傍入力の有無、減速中、減速が完了しているか否かに関わらず有効となります。

    • 原点近傍入力を使用しない場合:

    • 原点近傍入力を使用する場合:

      1.  (1) 初速
      2.  (2) 目標速度
      3.  (3) 原点近傍入力: TRUE
      4.  (4) 原点入力: TRUE
      5.  (5) 常時、原点入力が有効になります。
  • タイプ2このモードでは、(原点近傍入力より開始された)減速動作が完了している場合のみ、原点入力が有効になります。

    1.  (1) 初速
    2.  (2) 目標速度
    3.  (3) 原点近傍入力: TRUE
    4.  (4) 原点入力: TRUE
    5.  (5) 原点入力は、減速後にのみ有効となります。

以下のDUTを使用してください。

下記のパラメータをDUTに設定します: F168_PulseOutput_Home_DUT

  • 制御コード

  • 初速

  • 目標速度

  • 加減速時間

  • パルス停止(固定)

パルス出力図

  • 指定した加減速時間で、パルス出力周波数が変化します。

  • 目標速度と初速の差で傾斜が決まります。

プログラム上のご注意

  • パルス出力に使用するチャンネルの高速カウンタは、システムレジスタで"未使用"を指定してください。

  • RUN中書き替えを行った場合、パルス出力は停止します。ただし、プログラム変更部分のダウンロードが完了すると、書き替え前の動作を継続します。

  • 高速カウンタ制御中フラグ(例: sys_bIsHscChannel0ControlActive)とパルス出力制御中フラグ(例: sys_bIsPulseChannel0Active)は、同じ特殊内部フラグの番号に割り付けられています(例: R903A)。従って、高速カウンタ命令またはパルス出力命令が実行されているときは、使用しているチャンネルに対応する、高速カウンタ制御中フラグ(例: sys_bIsHscChannel0ControlActive)とパルス出力制御中フラグ(例: sys_bIsPulseChannel0Active)がTRUEになります。このフラグがTRUEの間は、同じチャンネルに対して、他の高速カウンタ命令、あるいはパルス出力命令を実行することはできません。

  • 原点入力が入っている状態でも、この命令が実行されるとパルス出力を開始します。

  • 加速途中に原点近傍入力が有効になった場合は、減速動作を開始します。

  • 通常プログラムと割り込みプログラムの両方に、同じチャンネルについて記述する場合、同時に実行されないようにしてください。

  • 位置決めプログラムの作成にあたっては、強制停止ができるようにプログラミングすることをおすすめします。

  • 高速カウンタ制御フラグとパルス出力制御フラグのステータスは、スキャンが実行されている間に変化します。例えば、受信バイト数が2回以上読み出された場合、1スキャン内で異なる状態が存在することがあります。

FP0互換モードでFP0R を使用する場合

FP0互換モードでFP0Rを使用する場合、FP0のプログラムをFP0Rにダウンロードすることができます。ただし、以下の制限がありますので、ご注意ください。

  • 経過値および目標値は、FP0Rの場合、符号付32-ビットデータ、FP0の場合、符号付24-ビットデータとして扱われます。FP0 互換モードの場合、計数およびパルス出力は、FP0 のレンジを超えても実行します。

  • パルス出力のデューティ比は、命令の設定に関わらず25%となります。"PLS+SIGN"方式でパルス出力する場合、方向出力がONになったあと、約300ms後にパルス出力を開始します。モータドライバの特性を考慮しています。

  • FP0Rは"計数なし"モードをサポートしていません。FP0パルス出力命令で、"計数なし"が指定されても、加算モードで計数します。

  • パルス出力の最大周波数は、10000Hzとなります。

  • パルス出力命令で使用する出力を、通常の出力として使用することはできません。

  • FP0互換モードで、FP0のプログラムを使用する場合は、PLC機種(C10C14C16C32T32)を合わせる必要があります。FP0RF32タイプで、FP0互換モードを使用することはできません。

出力とシステム変数の割り付け(FP0, FP-e用)

チャンネルとパルス出力番号

チャンネル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

原点入力(FP0, FP-e用)

チャンネルNo. 原点入力

0

X0

1

X1

POUヘッダ

POUヘッダには、このプログラムで使用するすべての入力変数と出力変数を宣言します。POUヘッダは全プログラム言語で使用できます。

VAR_EXTERNAL
		X0_bMotorSwitch: BOOL:=FALSE;
			(*at X0*)
	END_VAR
	VAR 
		dutHome: F168_PulseOutput_Home_DUT:=wControlCode := 16#102,
iInitialAndFinalSpeed := 0,
iTargetSpeed := 0,
iAccelerationAndDecelerationTime := 0;
		iInitialAndFinalSpeed: INT:=3000;
		iTargetSpeed: INT:=7000;
		iAccelerationTime: INT:=300;
		@'': @'';
	END_VAR

LDボディ

	BODY
    WORKSPACE
        NETWORK_LIST_TYPE := NWTYPELD ;
        ACTIVE_NETWORK := 0 ;
    END_WORKSPACE
    NET_WORK
        NETWORK_TYPE := NWTYPELD ;
        NETWORK_LABEL :=  ;
        NETWORK_TITLE :=  ;
        NETWORK_HEIGHT := 13 ;
        NETWORK_BODY
B(B_CONTACT,,X0_bMotorSwitch,4,2,6,4,R);
B(B_F,E_MOVE!,Instance,17,1,23,5,,?DEN?D?AENO?C);
B(B_VAROUT,,dutHome.iAccelerationAndDecelerationTime,23,3,25,5,);
B(B_F,E_MOVE!,Instance,17,5,23,9,,?DEN?D?AENO?C);
B(B_VAROUT,,dutHome.iInitialAndFinalSpeed,23,7,25,9,);
B(B_F,E_MOVE!,Instance,17,9,23,13,,?DEN?D?AENO?C);
B(B_VAROUT,,dutHome.iTargetSpeed,23,11,25,13,);
B(B_VARIN,,iAccelerationTime,15,3,17,5,);
B(B_VARIN,,iInitialAndFinalSpeed,15,7,17,9,);
B(B_VARIN,,iTargetSpeed,15,11,17,13,);
L(1,3,4,3);
L(6,3,17,3);
L(8,3,8,11);
L(8,11,17,11);
L(8,7,17,7);
L(1,0,1,13);
        END_NETWORK_BODY
    END_NET_WORK
    NET_WORK
        NETWORK_TYPE := NWTYPELD ;
        NETWORK_LABEL :=  ;
        NETWORK_TITLE :=  ;
        NETWORK_HEIGHT := 5 ;
        NETWORK_BODY
B(B_CONTACT,,X0_bMotorSwitch,4,1,6,3,R);
B(B_F,F168_PulseOutput_Home!,Instance,11,0,24,5,,?DEN?Ds_dutDataTable?Hn_iPulseOutputChannel?AENO);
B(B_VARIN,,dutHome,9,2,11,4,);
B(B_VARIN,,0,9,3,11,5,);
L(1,2,4,2);
L(6,2,11,2);
L(1,0,1,5);
        END_NETWORK_BODY
    END_NET_WORK
END_BODY

STボディ

IF DF(X0_bMotorSwitch) then
    dutHome.iInitialAndFinalSpeed:=iInitialAndFinalSpeed
    dutHome.iTargetSpeed:=iTargetSpeed
    dutHome.iAccelerationAndDecelerationTime:=iAccelerationTime
END_IF;
IF DF(X0_bMotorSwitch) then
F168_PulseOutput_Home(s_dutDataTable := dutHome,
    n_iPulseOutputChannel :=0);
END_IF;

最終修正日: 2022-06-29このページに関するフィードバックお問い合わせ窓口