F356_PID_PWM

以可选PWM输出进行PID处理

PID执行PID处理,以保持过程值PV尽量接近设置点值SP。与F355_PID_DUT相比,此指令启用PWM输出(开-关输出)。自动调谐也可用于自动计算PID控制数据KpTiTd

参数

输入

Run (BOOL)

开始条件

Control (F356_Control_DUT)

控制数据

ParametersHold (F356_Parameters_Hold_DUT)

PID控制参数

ParametersNonHold (F356_Parameters_NonHold_DUT)

操控值MV,附加控制模式区域,自动调谐相关区域和工作区

注释

当您首次执行指令时,即,当在Run指定的执行条件变为TRUE时,默认值被写入DUT的DUT成员1至9。

ProcessValue (INT)

过程值 (-30000–30000)

输出

PWM_Output (BOOL)(请参阅摘要)

脉宽调制输出(可选,代替操控值输出)

标注

  • 建议使用相应的FP7指令,来代替使用此F型指令:FP_PID

  • 描述PID处理时使用的缩写

    缩写

    代表含义

    别称

    PV

    过程值

    实际值,测量值

    SP

    设置点值

    目标值,设置值

    MV

    操控值

    输出值,操控变量

    Ts

    采样时间

    循环时间

    Ti

    积分时间

    -

    Td

    导数时间

    -

    Kp

    比例增益

    -

    AT

    自动调谐

    -

  • 在第二次执行FP_PID之前,您需要将DUT的DUT成员1到9更改为所需值。

通用编程信息

  1. 当执行Run中的输入时,将初始化参数ParametersNonHold中的数据。如果想要DUT中的值使用非默认值,则使用MOVE指令将值写入DUT,例如,必须因TRUE条件连续触发。

  2. 每次扫描必须执行一次且仅一次F356_PID_PWM。因此,请勿在中断程序或循环中执行F356_PID_PWM

  3. PID处理期间,请勿将执行条件变为FALSE。否则,PID处理将禁用。

  4. 如果想要并联PWM输出循环,例如启用多个对象的控制,请相应延迟启动时间,例如使用定时器指令。

示例

注释

PWM输出的周期(循环)是采样时间Ts(PWM输出的频率是1/Ts),并且占空是以0.01%为单位的操控值MV,例如,MV = 10000表示占空是100%

错误标志

sys_bIsOperationErrorHold(变为TRUE并保持为TRUE)

如果F356_Parameters_NonHold_DUT的任意参数超出范围

sys_bIsOperationErrorNonHold(对于一次扫描变为TRUE)

如果F356_Parameters_NonHold_DUT的任意参数超出范围

sys_bIsEqual(变为TRUE并保持为TRUE)

如果通过UpperLimitLowerLimit指定的区域超出范围

详细信息:

  • 控制条件: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中。

  • 当自动调谐中止时,KpTiTd的参数不变。

示例

全局变量

在全局变量列表中,定义项目中所有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本体

最后更新日期: 此页面上的反馈松下热线