FP_PID

PID処理(PWM出力指定可能)

PID処理は、できる限りプロセス値PVを設定値SPに近づける制御を行います。FP_PID_BASIC命令とは異なり、この命令では、PWM出力(ON-OFF出力)が可能です。PID制御データKpTiTdを自動的に求めるオートチューニング機能もあります。

パラメータ

入力

Run (BOOL)

開始条件

s1_Control (PID_Control_DUT)

制御データ

s2_ProcessValue (INT)

測定値 (-30000–30000)

s3_Parameters (PID_PARAMETERS_DUT)

PID制御パラメータ

入出力

s4_WorkArea (PID_WORK_AREA_DUT)

PIDパラメータのデータテーブル

注記

Runで指定した実行条件がTRUEになるとき、命令を最初に実行する場合、初期値がDUT要素1~9に書き込まれます。

FP_PIDの2回目の実行前に、DUTのDUT要素1~9を必要な値に変更する必要があります。

出力

PWM (BOOL)

PWM出力(オプション: 演算結果出力値MVの代わりに使用可能)

解説

  • PWM出力の間隔(サイクル)は、サンプリング時間Ts(PWM出力の周期は1/Ts)です。デューティは出力値MVで単位は0.01%です。例えば、MV = 10000は、デューティ100%を表します。

  • 命令は2回実行する必要があります。最初の実行によって PID_WORK_AREA_DUTの値がリセットされます。命令の2回目の実行で正しい値が使用されるように、 PID_WORK_AREA_DUTのDUT要素1から9の正しい値を設定する必要があります。

エラーフラグ

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

  • PID_Parameters_DUTのパラメータに指定された値が許容範囲外のとき

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

  • PID_Parameters_DUTのパラメータに指定された値が許容範囲外のとき

POUヘッダ

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

	VAR
		Automatic: BOOL:=TRUE;
		dutControl: PID_Control_DUT;
		PV: INT:=0;
		ParametersHold: PID_Parameters_DUT;
		ParametersNonHold: PID_Work_Area_DUT;
		bPWMOutput: 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 := 7 ;
        NETWORK_BODY
B(B_VARIN,,dutControl,15,2,17,4,);
B(B_VARIN,,ParametersHold,15,4,17,6,);
B(B_CONTACT,,Automatic,6,1,8,3,);
B(B_VARIN,,ParametersNonHold,15,5,17,7,);
B(B_F,FP_PID!,,17,0,30,7,,?DRun?Ds1_Control?Ds2_ProcessValue?Ds3_Parameters?Ds4_WorkArea?As4_WorkArea?APWM);
B(B_VARIN,,PV,15,3,17,5,);
B(B_VAROUT,,bPWMOutput,30,1,32,3,);
L(1,2,6,2);
L(8,2,17,2);
L(1,0,1,7);
        END_NETWORK_BODY
    END_NET_WORK
END_BODY

STボディ

bPWMOutput := FP_PID(Run := Automatic, 
                     s1_Control := dutControl,
                     s2_ProcessValue := PV,
                     s3_Parameters := ParametersHold,
                     s4_WorkArea := ParametersNonHold);

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