PulseOutput_Pass_FB

円弧補間(通過位置)

ファンクションブロック内および指定されたDUT内のパラメータの内容に従って、目標位置までの軌跡が円弧を描くように、2つのチャンネルからパルスを出力します。円弧の半径は、中心位置と終了位置を指定することで算出します。指定したチャンネルの制御中フラグがFALSEで、実行条件がTRUEのとき、指定したチャンネルからパルスを出力します。

パラメータ

入力

bExecute (BOOL)

ファンクションブロックを起動

bAbsolute (BOOL)

アブソリュート = TRUE、インクリメンタル = FALSE

bReverse (BOOL)
  • TRUE=回転方向: 逆転

    チャンネル0(X軸)からチャンネル2(Y軸)へ(両方のチャンネルで正の方向に移動する場合)
  • FALSE=回転方向:正転

    チャンネル2(Y軸)からチャンネル0(X軸)へ(両方のチャンネルで正の方向に移動する場合)
diTargetSpeed (DINT)

目標速度両方の軸の合成速度 = 100–20000 (100Hz–20kHz)

diTargetValue_X (DINT)

目標値[パルス]:-8388608–8388607

diTargetValue_Y (DINT)

目標値[パルス]:-8388608–8388607

diPassValue_X (DINT)

目標値[パルス]:-8388608–8388607

diPassValue_Y (DINT)

目標値[パルス]:-8388608–8388607

dutChannelConfiguration_X_Y

チャンネルコンフィグレーション用にあらかじめ定義されたシステムDUT: PulseOutput_Channel_Configuration_DUT

チャンネル02

出力

bError (BOOL)

割り付けた入力値が無効のときにTRUE。ファンクションブロックの実行は停止します。

diRadius (DINT)

半径[パルス]

diCenterValue_X (DINT)

:X軸 中心位置[パルス]= -8388608–8388607

diCenterValue_Y (DINT)

Y軸 中心位置[パルス]= -8388608–8388607

解説

この非インライン命令は、パルス出力用Tool命令の一部です。内部で使われる命令に関する詳細は、をご参照ください。 F176_PulseOutput_Pass

PulseInfo_IsActiveを使用して、選択したチャンネルの制御フラグがFALSEかどうかをチェックします。

DUT

DUT構造体はData Unit Typeの略で、複数の異なるデータ型をもつ変数で構成されます。構造体をまず定義し、その後、標準的なデータ型(BOOLINTなど)と同様にグローバル変数リストやPOUヘッダで使用します。

POUヘッダ

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

	VAR
		PulseOutput_Pass: PulseOutput_Pass_FB;
		bExecute: BOOL:=FALSE;
		bAbsolute: BOOL:=FALSE;
		bContinueAfterDone: BOOL:=FALSE;
		bCounterclockwise: BOOL:=FALSE;
		ChannelConfiguration_XY_DUT: PulseOutput_Channel_Configuration_DUT;
		bError: BOOL:=FALSE;
		diRadius: DINT:=0;
		diCenterValue_X: DINT:=0;
		diCenterValue_Y: DINT:=0;
		bConfigureDUT: BOOL:=FALSE;
		@'': @'';
	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 := 28 ;
        NETWORK_BODY
B(B_CONTACT,,bConfigureDUT,6,1,8,3,);
B(B_F,E_MOVE!,,17,0,23,4,,?DEN?D?AENO?C);
B(B_VARIN,,1,15,2,17,4,);
B(B_F,E_MOVE!,,17,8,23,12,,?DEN?D?AENO?C);
B(B_VARIN,,FALSE,15,10,17,12,);
B(B_VAROUT,,ChannelConfiguration_XY_DUT.bOutput_Pulse_ForwardFalse,23,10,25,12,);
B(B_F,E_MOVE!,,17,12,23,16,,?DEN?D?AENO?C);
B(B_F,E_MOVE!,,17,4,23,8,,?DEN?D?AENO?C);
B(B_VARIN,,TRUE,15,6,17,8,);
B(B_VAROUT,,ChannelConfiguration_XY_DUT.bOutput_Pulse_ForwardTrue,23,6,25,8,);
B(B_VARIN,,TRUE,15,14,17,16,);
B(B_VAROUT,,ChannelConfiguration_XY_DUT.iChannel,23,2,25,4,);
B(B_F,E_MOVE!,,17,16,23,20,,?DEN?D?AENO?C);
B(B_VARIN,,FALSE,15,18,17,20,);
B(B_VAROUT,,ChannelConfiguration_XY_DUT.bDutyRatio25,23,18,25,20,);
B(B_VAROUT,,ChannelConfiguration_XY_DUT.bAccelerationSteps60,23,14,25,16,);
B(B_VAROUT,,ChannelConfiguration_XY_DUT.bFrequencyRange_191Hz_100kHz,23,22,25,24,);
B(B_VARIN,,TRUE,15,22,17,24,);
B(B_F,E_MOVE!,,17,20,23,24,,?DEN?D?AENO?C);
B(B_F,E_MOVE!,,17,24,23,28,,?DEN?D?AENO?C);
B(B_VARIN,,TRUE,15,26,17,28,);
B(B_VAROUT,,ChannelConfiguration_XY_DUT.bExecuteInInterrupt,23,26,25,28,);
L(8,2,17,2);
L(12,18,17,18);
L(12,14,17,14);
L(12,10,17,10);
L(12,6,17,6);
L(12,2,12,18);
L(12,18,12,22);
L(12,22,17,22);
L(12,22,12,26);
L(12,26,17,26);
L(1,2,6,2);
L(1,0,1,28);
        END_NETWORK_BODY
    END_NET_WORK
    NET_WORK
        NETWORK_TYPE := NWTYPELD ;
        NETWORK_LABEL :=  ;
        NETWORK_TITLE :=  ;
        NETWORK_HEIGHT := 13 ;
        NETWORK_BODY
B(B_VARIN,,bCounterclockwise,12,5,14,7,);
B(B_VARIN,,10000,12,6,14,8,);
B(B_VARIN,,6000,12,7,14,9,);
B(B_VARIN,,5000,12,8,14,10,);
B(B_VARIN,,500,12,9,14,11,);
B(B_VARIN,,500,12,10,14,12,);
B(B_VARIN,,ChannelConfiguration_XY_DUT,12,11,14,13,);
B(B_VAROUT,,diCenterValue_Y,29,5,31,7,);
B(B_VARIN,,bExecute,12,3,14,5,);
B(B_VARIN,,bAbsolute,12,4,14,6,);
B(B_VAROUT,,bError,29,3,31,5,);
B(B_VAROUT,,diRadius,29,4,31,6,);
B(B_FB,PulseOutput_Pass_FB!,PulseOutput_Pass,14,2,29,13,,?BbExecute?BbAbsolute?BbReverse?BdiTargetSpeed?BdiTargetValue_X?BdiTargetValue_Y?BdiPassValue_X?BdiPassValue_Y?BdutChannelConfiguration_X_Y?AbError?AdiRadius?AdiCenterValue_X?AdiCenterValue_Y);
L(1,0,1,13);
        END_NETWORK_BODY
    END_NET_WORK
END_BODY

STボディ

(* Used DUT parameters *)
ChannelConfiguration_XY_DUT.iChannel := 1;
ChannelConfiguration_XY_DUT.bOutput_Pulse_ForwardTrue := TRUE;
ChannelConfiguration_XY_DUT.bOutput_Pulse_ForwardFalse := FALSE;
ChannelConfiguration_XY_DUT.bAccelerationSteps60 := FALSE;
ChannelConfiguration_XY_DUT.bDutyRatio25 := TRUE;
ChannelConfiguration_XY_DUT.bFrequencyRange_191Hz_100kHz := TRUE;
ChannelConfiguration_XY_DUT.Jog_bNoCountingInCWCCWNoTargetValueMatch := FALSE;
ChannelConfiguration_XY_DUT.bExecuteInInterruptProgram := FALSE;
(* FB *)
PulseOutput_Pass(bExecute := bExecute,
         bAbsolute := bAbsolute,
         bContinueAfterDone := bContinueAfterDone,
         bCounterclockwise := bCounterclockwise,
         diTargetSpeed := 10000,
         diTargetValue_X := 6000,
         diTargetValue_Y := 5000,
         diPassValue_X := 500,
         diPassValue_Y := 500,
         dutChannelConfiguration_X_Y := ChannelConfiguration_XY_DUT,
         bError => bError,
         diRadius => diRadius,
         diCenterValue_X => diCenterValue_X,
         diCenterValue_Y => diCenterValue_Y);

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