西门子S7-1500暖通空调制药厂洁净空调PLC程序案例包含冷水机组及洁净室空调机组硬件采用西门子1500CPUET200SP接口IO模块HMI采用西门子触摸屏。 具体为制药厂BMS洁净空调自控系统医药洁净室空调程序程序结构采用SCL编程。 有详细注释适合学习及参考 串级PID分程调节控温控湿效果非常好 程序打开版本博图V15.1最近在搞制药厂洁净空调的PLC项目用的是西门子S7-1500平台。这套系统既要控制冷水机组给洁净室降温又要通过空调机组精准调节温湿度实测下来控温精度能稳定在±0.5℃湿度波动不超过3%RH这在GMP认证的生产环境里算是硬核指标了。西门子S7-1500暖通空调制药厂洁净空调PLC程序案例包含冷水机组及洁净室空调机组硬件采用西门子1500CPUET200SP接口IO模块HMI采用西门子触摸屏。 具体为制药厂BMS洁净空调自控系统医药洁净室空调程序程序结构采用SCL编程。 有详细注释适合学习及参考 串级PID分程调节控温控湿效果非常好 程序打开版本博图V15.1硬件配置清单一目了然主站CPU1516-3PN/DPIO站ET200SP带AI/AO/DI/DO模块温湿度变送器直接挂在PROFINET总线上西门子KTP1200触摸屏做操作终端程序架构直接上干货//主程序OB1结构 CASE #操作模式 OF 0: //待机模式 停所有风机水泵 1: //自动模式 FC100_温湿度采集(); FC101_冷水机组控制(); FC102_空调机组PID调节(); 2: //维护模式 激活设备调试功能 END_CASE;重点说说串级PID的实现。洁净室的温湿度控制不是单回路能搞定的比如制冷除湿时温度可能超调。这里用了湿度主环嵌套温度副环的结构//湿度主PID计算 #主PID(设定值 : g_HumiditySetpoint, 过程值 : ActualHumidity, PID参数 : 湿度PID参数块, 输出 TempSP); //温度副PID接受主PID输出作为设定值 #副PID(设定值 : TempSP, 过程值 : ActualTemp, PID参数 : 温度PID参数块, 输出 ValveOpening);分程调节是另一个亮点。当温湿度需要同时调节时程序会把冷热水阀和加湿阀的动作区间做动态划分IF #运行模式 制冷除湿 THEN 冷阀开度 : LIMIT(0, PID输出 * 1.5, 100); //放大冷阀作用域 热阀开度 : 0; 加湿阀闭锁 ELSIF #运行模式 制热加湿 THEN 热阀开度 : LIMIT(0, PID输出 - 50, 100); //热阀后半程生效 冷阀闭锁 加湿阀联动 END_IF;调试时发现个坑ET200SP的AO模块默认输出是0-20mA而现场执行器需要4-20mA信号。解决办法是在硬件组态里勾选Suppress output below 4mA或者在程序里加个偏移//模拟量输出处理 #实际输出 : (#计算值 * 16.0) 4.0; //转换到4-20mA程序注释做得挺走心比如在PID模块前写着//注意湿度传感器有2分钟延迟PID采样周期需120秒 //调试时先关积分作用避免震荡 #湿度PID.P_T_SAMPLE : T#150S; #湿度PID.INT_HOLD : TRUE;这套程序在博图V15.1里跑得挺稳但要注意两点1. SCL版本需要匹配固件版本 2. 使用新版PID_Compact块时需要手动加载工艺对象库。建议把每个空调机组的参数做成UDT结构体现场调试时直接改对应实例的参数包比翻找绝对地址省事多了。最后提一嘴报警处理——洁净室压差报警和过滤器堵塞报警都是毫秒级响应的这里用了循环中断OB30做快速检测IF #压差测量值 #压差报警阈值 THEN #报警队列.压差异常 : 1; TRIGGER_ALARM(AlarmID : 1001); END_IF;整套程序打包后大概占用了35MB内存PID运算周期控制在500ms以内。实测在夏季高温高湿环境下洁净室温湿度曲线像条直线甲方验收时直接给运维人员拷贝了程序注释文档——这大概就是对程序可读性的最高褒奖了。