python做网站效率,班服定制的网站,室内装修装饰设计,衡阳seo服务西门子200smart 自写PID功能块#xff0c;西门子200smartPLC本身只支持8路PID而且不支持PID参数变量引接到触摸屏以及上位机#xff0c;这给实际项目运用以及调试带来不少麻烦。 功能块是自写的PID#xff0c;可以免去自己重写PID程序的麻烦#xff0c;方便快速开发#x…西门子200smart 自写PID功能块西门子200smartPLC本身只支持8路PID而且不支持PID参数变量引接到触摸屏以及上位机这给实际项目运用以及调试带来不少麻烦。 功能块是自写的PID可以免去自己重写PID程序的麻烦方便快速开发如果有需要拿来研究学习也可以算法完整而且注释详细搞过西门子200smart PLC的老司机都知道这货自带的PID回路就8条参数还锁死在程序里连触摸屏都改不了。调试现场要是想调个比例增益还得蹲在PLC旁边改代码这操作简直能把人逼疯。好在江湖救急自己搓了个全开放式的PID功能块参数随便绑定回路数量管够今天直接上硬货。先看功能块长啥样关键代码摘录// PID核心计算部分 LDSM0.0 MOVR VD2004, AC0 // 当前误差E(k) MOVR VD2008, AC1 // 上次误差E(k-1) MOVR VD2012, AC2 // 上上次误差E(k-2) // 比例项计算 MOVR AC0, VD2020 *R VD1000, VD2020 // Kp * E(k) // 积分分离策略防饱和 A( LDR VD2016, AC3 // 积分累计值 R VD1004*AC0, AC3 // Ki * T * E(k) ) MOVR AC3, VD2016 // 微分项带滤波 MOVR AC0-AC1, VD2024 // E(k)-E(k-1) /R VD1012, VD2024 // 除以采样周期T *R VD1008, VD2024 // Kd * [E(k)-E(k-1)]/T // 输出合成 MOVR VD2020VD2016VD2024, VD1020 // PID输出这段代码最骚的地方是积分分离策略。当输出超过设定阈值时自动暂停积分防止阀门卡死——这招在控制气缸这类执行机构时贼管用。Kp/Ki/Kd三个参数直接用的VD1000、VD1004、VD1008这类V区地址意味着触摸屏上随便拖几个数值输入框就能实时调参。西门子200smart 自写PID功能块西门子200smartPLC本身只支持8路PID而且不支持PID参数变量引接到触摸屏以及上位机这给实际项目运用以及调试带来不少麻烦。 功能块是自写的PID可以免去自己重写PID程序的麻烦方便快速开发如果有需要拿来研究学习也可以算法完整而且注释详细参数绑定更是简单粗暴// 在功能块调用时传参 CALL PID_Block, PV_Address:VW500, // 过程量地址 SV_Address:VW502, // 设定值地址 Output_Address:VW504, // 输出量地址 Kp:VD1000, Ki:VD1004, Kd:VD1008V区地址全开放的设计让威纶通、MCGS这些触摸屏直接通过Modbus协议就能读写参数。实测在20ms采样周期下8个PID回路同时跑CPU占用率不到15%比原厂自带的PID省资源得多。避坑指南微分项建议加个一阶低通滤波代码里已经内置否则现场传感器噪声能让你体验什么叫抽风式控制输出限幅一定要做曾经有个项目没加限制PID输出直接干到32767气缸当场表演人间大炮调用功能块时记得用SM0.0常开触点激活别用定时器触发——PID算法最怕的就是计算周期不稳。最后附上调试彩蛋某次在造纸厂调张力控制把积分时间设成0.1秒结果卷纸机直接跳起踢踏舞。后来发现机械传动有0.5秒延迟把采样周期拉到200ms立马稳如老狗——所以说参数不是越灵敏越好得看现场实际响应。需要源码的兄弟直接评论区喊一嗓子注释写得比小黄文还详细保准你三天上手PID玄学调参。