FP_POS_UNIT_GET_STATUS

位置決めユニットの軸ステータス取得

このFP命令は、実行条件ENTRUEのとき、s1_Slotで指定されたスロット内で、s2_Axisで指定した軸用の位置決めユニットから、ステータスデータを読み出します。結果はd1_Statusに格納されます。

パラメータ

入力

s1_Slot (WORD, INT, UINT)

スロット番号

s2_Axis (WORD, INT, UINT)

軸番号

1–48 (仮想軸)

出力

d1_Status (WORD, INT, UINT)

ステータス情報

解説

軸ステータス情報の種類

ビット

ステータス情報

TRUE

0

ツール操作

Configurator PMで構成した任意の軸のツール操作中

1

エラー

指定した軸でエラーが発生したとき

2

ワーニング

指定した軸でワーニングが発生したとき

3

ビジー

指定した軸が動作中

4

動作完了

指定した軸の動作が完了しているとき

5

原点復帰完了

指定した軸の原点復帰が完了しているとき

エラーフラグ

sys_bIsOperationErrorHold (TRUEになり、TRUEを保持)
  • インデックス修飾時にエリアを超えたとき

  • スロット番号/軸番号が利用可能範囲外のとき

sys_bIsOperationErrorNonHold (1回のスキャンに対してTRUE)
  • インデックス修飾時にエリアを超えたとき

  • スロット番号/軸番号が利用可能範囲外のとき

POUヘッダ

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

	VAR
		bStart: BOOL:=FALSE;
		iSlotNumberPositioningUnit: INT:=0;
			(*slot unit where the positioning unit is assigned 1- 64*)
		iPositioningUnit_Axis: INT:=0;
			(*Axis of the positioning unit to obtain status for (1-4: axis; 8: virtual axis)*)
		dutPositioningUnitAxisStatus: BOOL16_OVERLAPPING_DUT;
			(*Status of the positioning unit axis:
b0: Tool operation
b1: Error annunciation
b2: warning annunciation
b3: busy
b4: operation done
b5: home return done*)
	END_VAR

POUボディ

変数bStartTRUEにセットされると、このファンクションが実行されます。

LDボディ

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_F,FP_POS_UNIT_GET_STATUS!,,17,1,31,6,,?DEN?Ds1_Slot?Ds2_Axis?AENO?Cd1_Status);
B(B_VARIN,,iSlotNumberPositioningUnit,15,3,17,5,);
B(B_VARIN,,iPositioningUnit_Axis,15,4,17,6,);
B(B_VAROUT,,dutPositioningUnitAxisStatus.w0,31,3,33,5,);
B(B_CONTACT,,bStart,3,2,5,4,);
L(5,3,17,3);
L(1,3,3,3);
L(1,0,1,6);
        END_NETWORK_BODY
    END_NET_WORK
END_BODY

STボディ

IF bStart then
    FP_POS_UNIT_GET_STATUS(s1_Slot := iSlotNumberPositioningUnit,
                           s2_Axis := iPositioningUnit_Axis,
                           d1_Status => dutPositioningUnitAxisStatus.w0);
END_IF;

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