西门子基于RS485通讯恒压供水一拖二S7-200SMART_PLC 程序样例为一拖二恒压供水,采样S7-200SMART_PLC+smart700触摸屏与ABB变频器MdbusRTU_rs485通讯执行变频器PID实现恒压供水 程序为实际项目案例,程序带有注释说明,恒压供水动作说明,ABB变频器参数设置说明,施工用电路图纸。 工艺说明: 1、自动启动----1号变频启动 2、当压力低时(反馈压力低于“设定压力-压力下偏差”)并延时5秒后倒泵 3、倒泵过程是1号变频停止,同时1号工频启动,延时3秒后2号变频启动 4、当反馈压力大于“设定压力-压力下偏差”时,并保持10秒后关掉1号工频 5、2号变频运行时当压力低于“设定压力-压力下偏差”并延时5秒后倒泵 6、倒泵过程是2号变频停止,同时2号工频启动,延时3秒后1号变频启动,,如此循环 7、当1号变频正常运行时,设定的倒泵时间达到,并选择为YES,同时反馈压力大于“设定压力-压力下偏差”时启动倒泵 8、倒泵是停止1号变频并延时3秒启动2号变频 9、反之当2号变频正常运行时,设定的倒泵时间达到,并选择为YES,同时反馈压力大于“设定压力-压力下偏差”时启动倒泵 10、倒泵是停止2号变频并延时3秒启动1号变频
最近搞了个恒压供水项目,用S7-200 SMART PLC带着两个水泵玩接力赛。这系统最刺激的就是变频器倒泵逻辑——就像两个运动员轮流扛水压,压力不够就换人,还能定时强制换班。下面分享几个关键点:
硬件搭台子:
- PLC:S7-200 SMART ST30(自带RS485口)
- 触摸屏:SMART 700 IE V3
- 变频器:ACS550配Modbus RTU模块
- 压力变送器:4-20mA信号直连PLC模拟量输入
!接线示意图
核心代码片段:
//倒泵触发判断 IF "压力反馈" < ("设定压力" - "下偏差") THEN TON("低压计时",5000); //5秒延时防抖 ELSE TONR("低压计时",0); END_IF; //1号变频切工频 IF "1#变频运行" AND "低压计时".Q THEN "1#变频停止" := 1; TON("工频启动延时",3000); "1#工频运行" := 1; END_IF; //2号变频启动 IF "工频启动延时".Q THEN "2#变频启动" := 1; RESET_TIMER("低压计时"); END_IF;这段代码藏着三个心机:
- 压力判断带滞环比较(设定值-下偏差)
- TONR指令实现非复位计时,避免频繁触发
- 用延时队列控制设备启停间隔
变频器参数坑点:
9902=1 //外部控制模式 1001=3 //PID控制使能 1003=0 //压力反馈来自AI1 2202=10Hz //最低转速限制(防憋泵)注意参数1201要设成Modbus从站地址,和PLC程序里的站地址对得上,这个没配好直接通信扑街。
触摸屏骚操作:
在HMI上做了个"强制倒泵"按钮,绑定到DB1.DBX0.0。核心逻辑是当变频运行时间超过设定值,且压力在安全区时允许切换:
IF "倒泵时间到" AND "允许定时倒泵" AND ("压力反馈">("设定压力"-"下偏差")) THEN CASE "当前运行泵" OF 1: TRIGGER_倒泵2#(); 2: TRIGGER_倒泵1#(); END_CASE; END_IF;这里用了状态机切换,实测比单纯用置位复位稳定得多。
调试翻车实录:
- 第一次上电发现工频接触器冒烟——星三角时间继电器设成30秒(实际电机启动只要8秒)
- Modbus通信断断续续——终端电阻没加,120Ω电阻并上后通信稳如老狗
- 压力震荡像心电图——把PID采样周期从100ms改成500ms,瞬间老实了
这个项目的精髓在于设备启停时序的把控,特别是变频器自由停车和工频切换的时间差。建议用示波器抓数字量输出信号,确保接触器动作间隔≥300ms,否则容易炸模块。
(完整程序注释版和接线图已上传GitHub,需要的老铁评论区自取)