没有合适的资源?快使用搜索试试~ 我知道了~
zishiyingPid.txt
需积分: 3 1 下载量 56 浏览量
2019-09-03
16:01:48
上传
评论
收藏 38KB TXT 举报
温馨提示
试读
47页
自适应PID,C语言,适合有理论基础的人。通过C语言以及注释。
资源推荐
资源详情
资源评论
/*
* pid.c
*
*/
//VAR_INPUT
#ifndef TRUE
#define TRUE 0x01
#endif
#ifndef FALSE
#define FALSE 0x00
#endif
float PV_IN = 0.0 ; //过程变量输入
//可以在“过程变量输入”输入端设置初始值,或者也可以连接到浮点数格式的外部过程变量上。
int PV_PER = 0 ; //外围设备过程变量 外围设备I/O 格式的过程变量连接到控制器的“外围设备过程变量”输入端。
float DISV = 0.0 ; //干扰变量 对于前馈控制,干扰变量连接到“干扰变量”输入端。
unsigned char INT_HPOS = FALSE ; //积分作用保持在正方向 积分作用的输出可以锁定在正方向。为此,INT_HPOS 输入端必须设置成TRUE。在级联控制中,主控制器的INT_HPOS 互连到次级控制器的QLMN_HLM。
unsigned char INT_HNEG = FALSE ; //积分作用保持在负方向
//积分作用的输出可以锁定在负方向。为此,INT_HNEG 输入端必须设置成TRUE。在级联控制中,主控制器的INT_HNEG 互连到次级控制器的QLMN_LLM。
int SELECT = 0 ; //调用PID 和脉冲发生器的选项
//如果激活了脉冲发生器,则有几种方法可用于调用PID 算法和脉冲发生//器:
//. SELECT =0:在一个快速周期性中断级中调用控制器,并处理PID算法和脉冲发生器。
//. SELECT =1:在OB1 中调用控制器,并且只处理PID 算法。
//. SELECT =2:在一个快速周期性中断级中调用控制器,并只处理脉冲发生器。
//. SELECT =3:在一个慢速周期性中断级中调用控制器,并只处理PID 算法。
//END_VAR
//VAR_OUTPUT
float PV = 0.0 ; //过程变量 有效的过程变量在“过程变量”输出端输出。
float LMN = 0.0 ; //可调节变量 可调节变量的有效值以浮点数格式, 在“可调节变量”输出端输出。
* pid.c
*
*/
//VAR_INPUT
#ifndef TRUE
#define TRUE 0x01
#endif
#ifndef FALSE
#define FALSE 0x00
#endif
float PV_IN = 0.0 ; //过程变量输入
//可以在“过程变量输入”输入端设置初始值,或者也可以连接到浮点数格式的外部过程变量上。
int PV_PER = 0 ; //外围设备过程变量 外围设备I/O 格式的过程变量连接到控制器的“外围设备过程变量”输入端。
float DISV = 0.0 ; //干扰变量 对于前馈控制,干扰变量连接到“干扰变量”输入端。
unsigned char INT_HPOS = FALSE ; //积分作用保持在正方向 积分作用的输出可以锁定在正方向。为此,INT_HPOS 输入端必须设置成TRUE。在级联控制中,主控制器的INT_HPOS 互连到次级控制器的QLMN_HLM。
unsigned char INT_HNEG = FALSE ; //积分作用保持在负方向
//积分作用的输出可以锁定在负方向。为此,INT_HNEG 输入端必须设置成TRUE。在级联控制中,主控制器的INT_HNEG 互连到次级控制器的QLMN_LLM。
int SELECT = 0 ; //调用PID 和脉冲发生器的选项
//如果激活了脉冲发生器,则有几种方法可用于调用PID 算法和脉冲发生//器:
//. SELECT =0:在一个快速周期性中断级中调用控制器,并处理PID算法和脉冲发生器。
//. SELECT =1:在OB1 中调用控制器,并且只处理PID 算法。
//. SELECT =2:在一个快速周期性中断级中调用控制器,并只处理脉冲发生器。
//. SELECT =3:在一个慢速周期性中断级中调用控制器,并只处理PID 算法。
//END_VAR
//VAR_OUTPUT
float PV = 0.0 ; //过程变量 有效的过程变量在“过程变量”输出端输出。
float LMN = 0.0 ; //可调节变量 可调节变量的有效值以浮点数格式, 在“可调节变量”输出端输出。
int LMN_PER = 0 ; //外围设备操作可调节变量 外围设备格式的可调节变量值连接到控制器的“外围设备操作可调节变量”输出端。
unsigned char QPULSE = FALSE ; //输出脉冲信号 可调节变量的值是在QPULSE 输出端调制的输出脉冲宽度。
unsigned char QLMN_HLM = FALSE ; //达到可调节变量的上限 可调节变量的值始终限制在上限和下限范围之内。当超过了上限时,通过QLMN_HLM 输出端进行指示。
unsigned char QLMN_LLM = FALSE ; //达到可调节变量的下限 可调节变量的值始终限制在上限和下限范围之内。当超过了下限时,通过QLMN_LLM 输出端进行指示。
unsigned char QC_ACT = TRUE ; //下一个循环周期,连续控制器继续工作
//该参数指示在下一个块调用时是否执行连续控制器环节(只有当SELECT 具有数值0 或1 时才相关)。
//END_VAR
//VAR_IN_OUT
float CYCLE = 0.1 ; //连续控制器的采样时间[秒]
//在此设置PID 算法的采样时间。调谐器在阶段1 中计算采样时间,然后将其输入到CYCLE 中。
float CYCLE_P = 0.02 ; //脉冲发生器的采样时间[秒]
//在该输入端,输入脉冲发生器环节的采样时间。FB 58“TCONT_CP”在阶段1 中计算采样时间,然后将其输入到CYCLE_P。
float SP_INT = 0.0 ; //内部设定值 “内部设定值”输入端用于指定一个设定值。
float MAN = 0.0 ; //手动值 “手动值”输入端用于指定一个手动值。在自动模式中,它被改成可调节变量。
unsigned char COM_RST = FALSE ; //完全重启动 该块有一个初始化例行程序,当COM_RST 输入端被置位时执行该例行程序。
unsigned char MAN_ON = TRUE; //手动操作打开 如果“手动操作打开”输入被置位,则中断控制回路。MAN 手动值被设置为可调节变量的值。
//END_VAR
//VAR
float DEADB_W = 0.0 ; //死区宽度 偏差通过死区。“死区宽度”输入决定死区大小。
float I_ITLVAL = 0.0 ; //积分作用的初始化值
//积分作用的输出可以在I_ITL_ON 输入端上设置。该初始化值用于“积分作用的初始化值”输入。在重启动期间,
//COM_RST = TRUE,积分作用被设置成初始值。
float LMN_HLM = 100.0; //可调节变量上限
//可调节变量的值始终限制在上限和下限范围之内。“可调节变量上限”输入指定了上限。
float LMN_LLM = 0.0 ; //可调节变量下限
//可调节变量的值始终限制在上限和下限范围之内。“可调节变量下限”输入指定了下限。
float PV_FAC = 1.0 ; //过程变量因子
//“过程变量因子”输入和“外围设备过程值”相乘。该输入用于调整过程变量的范围。
float PV_OFFS = 0.0 ; //过程变量偏移量
//“过程变量偏移量”输入被加到“外围设备过程变量”上。该输入用于调整过程变量的范围。
unsigned char QPULSE = FALSE ; //输出脉冲信号 可调节变量的值是在QPULSE 输出端调制的输出脉冲宽度。
unsigned char QLMN_HLM = FALSE ; //达到可调节变量的上限 可调节变量的值始终限制在上限和下限范围之内。当超过了上限时,通过QLMN_HLM 输出端进行指示。
unsigned char QLMN_LLM = FALSE ; //达到可调节变量的下限 可调节变量的值始终限制在上限和下限范围之内。当超过了下限时,通过QLMN_LLM 输出端进行指示。
unsigned char QC_ACT = TRUE ; //下一个循环周期,连续控制器继续工作
//该参数指示在下一个块调用时是否执行连续控制器环节(只有当SELECT 具有数值0 或1 时才相关)。
//END_VAR
//VAR_IN_OUT
float CYCLE = 0.1 ; //连续控制器的采样时间[秒]
//在此设置PID 算法的采样时间。调谐器在阶段1 中计算采样时间,然后将其输入到CYCLE 中。
float CYCLE_P = 0.02 ; //脉冲发生器的采样时间[秒]
//在该输入端,输入脉冲发生器环节的采样时间。FB 58“TCONT_CP”在阶段1 中计算采样时间,然后将其输入到CYCLE_P。
float SP_INT = 0.0 ; //内部设定值 “内部设定值”输入端用于指定一个设定值。
float MAN = 0.0 ; //手动值 “手动值”输入端用于指定一个手动值。在自动模式中,它被改成可调节变量。
unsigned char COM_RST = FALSE ; //完全重启动 该块有一个初始化例行程序,当COM_RST 输入端被置位时执行该例行程序。
unsigned char MAN_ON = TRUE; //手动操作打开 如果“手动操作打开”输入被置位,则中断控制回路。MAN 手动值被设置为可调节变量的值。
//END_VAR
//VAR
float DEADB_W = 0.0 ; //死区宽度 偏差通过死区。“死区宽度”输入决定死区大小。
float I_ITLVAL = 0.0 ; //积分作用的初始化值
//积分作用的输出可以在I_ITL_ON 输入端上设置。该初始化值用于“积分作用的初始化值”输入。在重启动期间,
//COM_RST = TRUE,积分作用被设置成初始值。
float LMN_HLM = 100.0; //可调节变量上限
//可调节变量的值始终限制在上限和下限范围之内。“可调节变量上限”输入指定了上限。
float LMN_LLM = 0.0 ; //可调节变量下限
//可调节变量的值始终限制在上限和下限范围之内。“可调节变量下限”输入指定了下限。
float PV_FAC = 1.0 ; //过程变量因子
//“过程变量因子”输入和“外围设备过程值”相乘。该输入用于调整过程变量的范围。
float PV_OFFS = 0.0 ; //过程变量偏移量
//“过程变量偏移量”输入被加到“外围设备过程变量”上。该输入用于调整过程变量的范围。
剩余46页未读,继续阅读
资源评论
Lucky_JIE_AK
- 粉丝: 57
- 资源: 26
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功