F356_PID_PWM

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

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

パラメータ

入力

Run (BOOL)

開始条件

Control (F356_Control_DUT)

制御データ

ParametersHold (F356_Parameters_Hold_DUT)

PID制御パラメータ

ParametersNonHold (F356_Parameters_NonHold_DUT)

演算結果出力値MV、追加制御モードエリア、オートチューニング関連エリア、ワークエリア

注記

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

ProcessValue (INT)

測定値 (-30000–30000)

出力

PWM_Output (BOOL) (注)

PWM出力(オプション: 演算結果出力値MV)

解説

  • F命令を使用する代わりに、対応するFP7命令を使用することをおすすめします。FP_PID

  • PID制御命令に関する略号

    略語

    原語

    意味

    PV

    測定値

    実際の値、測定値

    SP

    設定値

    目標値、設定値

    MV

    出力値

    出力値、操作される変数

    Ts

    サンプリング時間

    周期時間

    Ti

    積分時間

    -

    Td

    微分時間

    -

    Kp

    比例ゲイン

    -

    AT

    オートチューニング

    -

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

プログラム上のご注意

  1. Runでの入力を実行したときに、引数ParametersNonHoldのデータは初期化されます。DUTの値に初期値以外の値を使用する必要がある場合は、MOVE命令を使って、DUTに値を書き込んでください(TRUE条件で連続してトリガされる必要がある場合など)。

  2. F356_PID_PWM命令は、1スキャンに1回のみ実行するようにしてください。従って、割り込みプログラムやループ内では F356_PID_PWM 命令を実行しないでください。

  3. PID制御中は、実行条件をFALSEに変更しないでください。PID演算ができなくなります。

  4. 複数の対象を制御するときなど、PWMの出力周期を同期させたくない場合は、タイマー命令などを利用して起動タイミングをずらしてください。

注記

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

エラーフラグ

sys_bIsOperationErrorHold (TRUEになり、TRUEを保持)

F356_Parameters_NonHold_DUTのいずれかのパラメータが指定できる範囲外のとき

sys_bIsOperationErrorNonHold (1回のスキャンに対してTRUE)

F356_Parameters_NonHold_DUTのいずれかのパラメータが指定できる範囲外のとき

sys_bIsEqual (TRUEになり、TRUEを保持)

UpperLimitまたはLowerLimitの値が指定できる範囲外のとき

詳細情報:

  • 制御条件: F356_Parameters_Hold_DUT

  • 設定値SPと制御パラメータ: F356_Parameters_Hold_DUT

オートチューニング時のご注意:

  • F356_Parameters_Hold_DUT内の要素AT_ProgressF356_Control_DUT内の要素b1_AT_Completeは、オートチューニング信号の立ち上がりエッジでクリアされます。

  • オートチューニングが正常に完了すると、F356_Control_DUT内の要素b1_AT_Completeがセットされ、F356_Parameters_NonHold_DUT内の要素AT_Progressにオートチューニング完了コードが格納されます。

  • オートチューニングが中止されると、パラメータ Kp, Ti, Td の値は変化しません。

グローバル変数リスト

グローバル変数リストでは、プロジェクト内のすべてのPOUからアクセスできる変数を宣言します。

POUヘッダ

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

_VAR
	VAR 
		bStartAutoTuning: BOOL:=FALSE;
		bRunPidControl: BOOL:=FALSE;
		ControlData: F356_Control_DUT;
		ParametersHold: F356_Parameters_Hold_DUT;
		ParametersNonHold: F356_Parameters_NonHold_DUT;
	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 := 5 ;
        NETWORK_BODY
B(B_CONTACT,,bStartAutoTuning,5,1,7,3,R);
B(B_COIL,,ControlData.b0_AT_Request,22,1,24,3,);
L(1,2,5,2);
L(7,2,22,2);
L(1,0,1,5);
        END_NETWORK_BODY
    END_NET_WORK
    NET_WORK
        NETWORK_TYPE := NWTYPELD ;
        NETWORK_LABEL :=  ;
        NETWORK_TITLE :=  ;
        NETWORK_HEIGHT := 7 ;
        NETWORK_BODY
B(B_F,F356_PID_PWM!,Instance,11,0,22,7,,?DRun?DControl?DParametersHold?DParametersNonHold?DProcessValue?APWM_Output);
B(B_VARIN,,ControlData,9,2,11,4,);
B(B_VARIN,,ParametersHold,9,3,11,5,);
B(B_VARIN,,ParametersNonHold,9,4,11,6,);
B(B_VARIN,,x_iTemperatureInput,9,5,11,7,);
B(B_VAROUT,,y_bPwmOutput,22,1,24,3,);
B(B_CONTACT,,bRunPidControl,4,1,6,3,);
L(1,2,4,2);
L(6,2,11,2);
L(1,0,1,7);
        END_NETWORK_BODY
    END_NET_WORK
END_BODY

STボディ

(* Auto Tuning: *)
if DF(bStartAutoTuning) then
    ControlData.b0_AT_Request:=TRUE;
end_if;
y_bPwmOutput:=F356_PID_PWM(    Run := bRunPidControl, 
        Control := ControlData, 
        ParametersHold := ParametersHold, 
        ParametersNonHold := ParametersNonHold, 
        ProcessValue := x_iTemperatureInput);

ILボディ

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