No.1302 西门子S7-200 PLC基于组态王多种液体混合装置控制系统首先得先讲清楚这个装置是干啥的简单来说就是两种液体A和B按流程自动进料、搅拌、放料还要保证液位不会溢出急停功能也得有。一开始我先列了最基础的IO表别嫌麻烦课设老师第一眼就看这个输入点功能输出点功能I0.0自动模式启动按钮Q0.0液体A进料泵I0.1急停按钮常闭Q0.1液体B进料泵I0.2液位低传感器Q0.2搅拌电机I0.3液位中传感器Q0.3排空电磁阀| I0.4 | 液位高传感器 | | |先从PLC程序说起一开始我写的程序特别乱全堆在一个网络里后来拆成了好几个模块才理顺。最基础的启动连锁我第一次写直接漏了急停的常闭点结果按急停根本没用抱着PLC拔电源的时候被老师抓了现行后来加上才稳妥// 启动允许按下启动且急停未触发 Network 1 LD I0.0 // 启动按钮常开 AN I0.1 // 急停常闭按下就切断输出 M0.0 // 中间继电器作为启动允许标记这段的意思很简单只有同时满足按下启动、没按急停M0.0才会通电后续的流程才能跑起来。接下来是排空流程装置启动后得先把上次剩下的混合液排干净不然会串味// 排空控制启动允许后直到液位低才停止排空 Network 2 LD M0.0 AN I0.2 // 液位没到低的时候一直开排空阀 Q0.3 // 排空电磁阀输出 // 排空完成标记 Network3 LD I0.2 M0.1 // 排空完成后激活这个标记防止重复触发排空这里要注意传感器的类型我们用的是常开型液位开关液位没到的时候I0.2是0到了就变成1所以AN I0.2的意思就是“只要液位没到低就一直开排空阀”刚好卡准排空完成的节点。然后是进料流程先加A液到液位中再加B液到液位高这样混合比例大概是1:1// 加液体A排空完成后启动A泵直到液位中 Network4 LD M0.1 AN M0.2 Q0.0 // A加完成标记 Network5 LD I0.3 M0.2 // 加液体BA加完后启动B泵直到液位高 Network6 LD M0.2 AN M0.3 Q0.1 // B加完成标记 Network7 LD I0.4 M0.3我当时调试的时候卡过加B泵的问题明明程序写好了但B泵就是不转后来发现是液位中传感器的线松了重新插一下就好了——用中间变量做标记的好处就是调试的时候直接看PLC上的M灯亮不亮就能快速定位到哪一步出问题比盯着所有输出点舒服多了。接下来是搅拌和放料搅拌我用了S7-200的T37定时器100ms一个周期30秒的话就写K300// 搅拌流程B加完后启动搅拌持续30秒 Network8 LD M0.3 TON T37, 300 Q0.2 // 搅拌完成开始放料 Network9 LD T37 M0.4 // 放料流程搅拌完成后开排空阀直到液位低 Network10 LD M0.4 Q0.3 AN I0.2 M0.5 // 放料完成重置循环标记这里踩过一个超级无语的坑一开始我把定时器参数写成K30也就是3秒老师看了我演示的时候说“你这混合液体是刚兑上就放了喝兑水的酒精呢”后来改成K300才正常。No.1302 西门子S7-200 PLC基于组态王多种液体混合装置控制系统然后是组态王的部分比PLC简单点但也有坑。首先是通讯我用的USB转PPI线电脑识别成COM5结果一开始瞎选成COM1连了半小时都没反应后来看设备管理器才改过来。变量绑定的时候一定要选对类型液位开关和泵都是离散量别手滑选成模拟量不然组态王里的指示灯永远不亮。我当时做的界面特别简陋但够用左边放三个模拟的液位罐分别标A、B、混合罐右边放启动、停止、急停三个按钮还有几个指示灯显示各个泵的状态。液位罐的动画我调了好久一开始做成了从上往下掉的效果老师看了说“你这液体是从罐顶流进去的”后来改了坐标才变成从下往上涨的正常样子。对了我们实验室没买真实的液位传感器就用三个按钮代替了按下I0.2就相当于液位低I0.3中I0.4高这样调试的时候不用接传感器直接按按钮就能模拟液位变化省了好多事。整个项目下来感觉最有用的不是学会了写PLC程序而是学会了怎么排查问题——通讯连不上就看串口程序不运行就看中间变量接线错了就测电压。现在想想当时踩的那些坑其实都是细节问题只要多检查一遍就能避免。如果有学弟学妹要做这个课设的话记得先把IO表理清楚不要急着写程序还有通讯的时候一定要先测一下PLC和电脑能不能连上别像我一样折腾半天。