那位老师能告诉我自己编写PID控制的程序S7-200

有尝服务

最佳答案

自己编PID?这很好,呵呵。  不过你需要先确定你到底要干什么,也就是说你的PID是用来干嘛的?  
 你需要的是纯比例控制?还是比例+积分?还是比例+积分+微分?  是增量式的还是位置式的?
 你需要微分先行吗? 需要积分分离吗?需要死区吗?需要可变系数吗?  等等... ...可以说涉及的东西还挺多,不是几句话就能说明的。你可以去找一本这方面的书详细的了解一下各种PID的方法及作用。下面是我用S7-200自己写的一个用MM440变频器控制张力的PI(没有微分作用),增量式的,没有死区,也没有积分分离,也没有微分先行等。(根据自己的工艺写)
 SUBROUTINE_BLOCK 张力:SBR1
 TITLE=张力控制
 VAR_INPUT
 Sv:INT; // PID设定值
 Pv:INT; // PID反馈值
 Kc:INT; // 比例系数
 Ki:INT; // 积分系数
 F:REAL; // 额定频率工程量值16384=4000H=50HZ
 LMTMax:REAL; // 上限限幅值
 LMTMin:REAL; // 下限限幅值
 EnCheck:BOOL; // 使能断带检测
 END_VAR
 VAR_IN_OUT
 PvLast:INT; // 反馈值上一周期值
 OutLast:REAL; // 输出值上一周期值
 END_VAR
 VAR_OUTPUT
 Errer:BOOL; // 断带标志
 Out:INT; // PID输出值
 END_VAR
 BEGIN
 Network 1 
 // Pv(k-1)-Pv(k)
 LD     SM0.0
 MOVW   #PvLast, AC1
 -I     #Pv, AC1
 Network 2 
 LDN    #EnCheck                    //禁止断带检测
 R      #Errer, 1
 JMP    0
 Network 3 
 LD     SM1.2                       //张力在增大
 R      #Errer, 1
 NOT                                //张力在减小
 S      #Errer, 1
 Network 4 
 LBL    0
 Network 5 
 // U(k)=U(k-1) + △U         △U=Kc[E(k)-E(k-1)]+KiE(k)=Kc[Pv(k-1)-Pv(k)]  + Ki[Sv-Pv]     
 LD     SM0.0
 MOVW   #Pv, #PvLast
 MOVW   #Sv, AC2
 -I     #Pv, AC2
 MUL    #Kc, AC1                    //比例项 
 MUL    #Ki, AC2                    //积分项
 +D     AC1, AC2
 DTR    AC2, AC3
 *R     #F, AC3                     //乘以额定频率工程量值(5000=50.00HZ=4000H)
 /R     3.2767E+007, AC3            //1000*32767;HMI内PI参数为三位小数,故除以1000 
 +R     AC3, #OutLast
 Network 6 
 // 上限限幅
 LDR>   #OutLast, #LMTMax
 MOVR   #LMTMax, #OutLast
 Network 7 
 // 下限限幅
 LDR<   #OutLast, #LMTMin
 MOVR   #LMTMin, #OutLast
 Network 8 
 // 输出
 LD     SM0.0
 ROUND  #OutLast, AC3
 DTI    AC3, #Out
 Network 9 
 Network 10 

 END_SUBROUTINE_BLOCK

 
 

提问者对于答案的评价:
你好谢谢了我做中央空调工程的需要恒温恒湿控制新风机组温度精度在0.1度以下用那种控制比较好有位老师说自己编的不容易死机为啥只用PI调节可以吗

原创文章,作者:ximenziask,如若转载,请注明出处:https://www.zhaoplc.com/plc359663.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2021年7月5日 上午11:06
下一篇 2021年7月5日 上午11:06

相关推荐

  • 6ES7 288-3AE08-0AA0 的模拟量可以同时接收8路4-20ma信号吗?

    如题,谢谢!因为S7-200 的8AI 模块好像不能全是8路 4-20mA“““ 最佳答案 每个通道都可以接4-20MA信号,在系统块中组态偶数…

    2021年7月5日
  • PLC S7-200CPU224CN疑问

    现在使用PLC S7-200CPU224CN,外围电路(硬件连接)给S7-200供电时采用了隔离变压器500W,它的安装位置有什么要求吗?PLC 可以安装在它的…

    SIMATIC S7-200 2021年7月5日
  • 无法上传PLC400项目

    监控硬件时弹出图片1,然后,新建项目如图片2,结果选中需要上传PLC的CP模块后弹出图片3(无法连接CP模块)。源程序可以监控,为什么上传时却无法连接呢?是不是因为图2中的200.…

    2017年5月28日
  • wincc画面中IO输出怎么能显示为科学计数法的格式

    在画面中IO输出关联的变量后,显示为2000000,我想显示格式为2.0x10e6这种科学计数法,请问大家有什么方法可以设置成这样吗?我VBVC不能,如果不能设置,有什么脚本能将它…

    SIMATIC S7-200 2021年7月5日
  • 224XP脉冲输出接线的问题

    我想用224XP本体的PTO控制漏型输入的日系伺服,不知道该怎么接线,请多多指教. 最佳答案 你放心。要xp接成漏型输出是不可能的。你试一下伺服是否可以接受源输出?。你不要管伺服的…

    SIMATIC S7-200 2020年11月1日
  • 软件问题

    SP6比SP4多些什么功能? 最佳答案 SP6、SP4是软件版本,现在最新版本是sp6。 提问者对于答案的评价:谢谢

    SIMATIC S7-200 2021年7月5日
  • 什么叫标志位

    接收完成后 处理标志位    这句话中的标志位什么意思 最佳答案 举个列子:如果你接收完成报文 就可以将M0.0置1&n…

    SIMATIC S7-200 2020年11月1日
  • em253模块控制v80伺服

    em253配置向导里有绝对位置控制方式,请问当用posx_goto指令时,伺服启动行走至目标位置,途中由于工艺要求停止了posx_goto指令执行,当再次起启动posx_goto指…

    SIMATIC S7-200 2017年12月2日
  • S7-200 MODBUS协议提问

    那位师兄帮小弟讲解一下,最近小弟有个机组,客户上位机要监控我们的机组,我们给客户提供modbus协议。小弟打算用CPU224XP,但在调用指令库时不知道参数MAXHOLD和HOLD…

    SIMATIC S7-200 2020年11月1日
  • S7 200 通讯口的问题?

    在使用S7 200 PLC时不小心将两个通讯口的通讯速率都设到了187.5kbps,而我手上只有支持9.6kbps 速率的线!因此没有办法与PLC通讯…

    SIMATIC S7-200 2021年7月5日

发表回复

登录后才能评论