F354_FSCAL

REAL型離散値の直線補間

実数データテーブルのスケーリング(線形化)を行い、入力値(X)に対する出力(Y)を求めます。

パラメータ

入力

x (REAL)

入力値X

xy_data (ユーザー定義DUT)

ユーザー定義DUTの最初の要素(xy値の数)は、この入力に適用されます。以下のDUTの説明をご参照ください。

出力

y (REAL)

出力値Y

解説

F命令を使用する代わりに、対応するFP7命令を使用することをおすすめします。FP_SCALE 離散値の直線補間

詳細については、以下の命令をご参照ください。F282_SCAL INT型離散値の直線補間F283_DSCAL DINT型離散値の直線補間

エラーフラグ

sys_bIsOperationErrorHold (TRUEになり、TRUEを保持)
  • 指定されたアドレスがインデックス修飾により範囲を超えているとき

  • 入力'x'が実数でない値を入力したとき

  • 値の数(DUTの第1要素)が< 2または> 99のとき

  • 'xy_data'に指定する実数値(xt, yt)に、実数でない値を指定したとき

  • 線形テーブル'xy_data'に登録されているx座標が昇順になっていないとき

  • 線形テーブル'xy_data'が範囲外のとき

  • スケーリング演算時に、オーバーフロー(演算不能)が発生したとき

sys_bIsOperationErrorNonHold (1回のスキャンに対してTRUE)
  • 指定されたアドレスがインデックス修飾により範囲を超えているとき

  • 入力'x'が実数でない値を入力したとき

  • 値の数(DUTの第1要素)が< 2または> 99のとき

  • 'xy_data'に指定する実数値(xt, yt)に、実数でない値を指定したとき

  • 線形テーブル'xy_data'に登録されているx座標が昇順になっていないとき

  • 線形テーブル'xy_data'が範囲外のとき

  • スケーリング演算時に、オーバーフロー(演算不能)が発生したとき

DUT

構造体(DUT)をDUTプールに作成します。

POUヘッダ

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

POUヘッダは全プログラム言語で使用できます。

VAR
		CalculateY: BOOL:=FALSE;
		X_value: REAL:=4.0;
		Y_value: REAL:=0.0;
		XY_values: XY_DUT;
		@'': @'';
	END_VAR
	VAR_EXTERNAL
		ProcessData: ProcessDataStructure;
	END_VAR
	VAR
		@'': @'';
	END_VAR

POUボディ

変数CalculateYTRUEにセットされると、命令を実行します。

LDボディ

BODY
    WORKSPACE
        NETWORK_LIST_TYPE := NWTYPELD ;
        ACTIVE_NETWORK := 0 ;
    END_WORKSPACE
    NET_WORK
        NETWORK_TYPE := NWTYPELD ;
        NETWORK_LABEL :=  ;
        NETWORK_TITLE :=  ;
        NETWORK_HEIGHT := 5 ;
        NETWORK_BODY
B(B_VARIN,,CalculateY,10,1,12,3,);
B(B_VARIN,,X_value,10,2,12,4,);
B(B_VARIN,,XY_values.Number,10,3,12,5,);
B(B_VAROUT,,Y_value,19,2,21,4,);
B(B_F,F354_FSCAL!,Instance,12,0,19,5,);
L(1,0,1,5);
        END_NETWORK_BODY
    END_NET_WORK
END_BODY

STボディ

IF start then
    F354_FSCAL(x := X_value, xy_data := XY_values.Number, y => Y_value);
END_IF;
関連トピック

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