消防巡检控制系统 西门子 昆仑通态 1.消防巡检控制系统开始预定程序了,差不多已经快写好了; 2.采用昆仑通态7寸触摸屏,西门子S7-200或者S7-200smart PLC; 3.功能如图所示; 4.程序已经进入实际测试阶段
最近在折腾一个消防巡检控制系统的项目,正好用上了西门子PLC和昆仑通态触摸屏这对经典组合。现场设备已经完成联调,程序正在产线上做最后测试,顺手记录几个有意思的实现细节。
先说说硬件配置,7寸的昆仑通态TPC7062Ti触摸屏确实够顶。这货支持ModbusRTU和S7协议,跟西门子S7-200 SMART PLC通讯稳得一批。现场实测通讯距离拉到80米都没丢过包,关键价格才西门子原装屏的三分之一,真香!
核心控制逻辑用梯形图写得飞起,比如这个自动巡检的触发条件:
Network 1 LD SM0.5 // 秒脉冲 EU // 上升沿触发 TON T37, 604800 // 7天定时器(604800秒) Network 2 LD T37 = M0.0 // 触发巡检标志位 R T37, 1 // 复位定时器这里用SM0.5的秒脉冲配合TON定时器实现周检功能,每次计时到7天自动触发巡检。实际调试发现T37的预设值最大到32767,所以改用累计小时数更靠谱,不过示例代码就先这么写着。
消防巡检控制系统 西门子 昆仑通态 1.消防巡检控制系统开始预定程序了,差不多已经快写好了; 2.采用昆仑通态7寸触摸屏,西门子S7-200或者S7-200smart PLC; 3.功能如图所示; 4.程序已经进入实际测试阶段
触摸屏界面有个骚操作必须分享——用脚本实现的三级报警指示:
Sub UpdateAlarm() If ReadPLC("VW100") <> 0 Then SetBackColor("AlarmLED", RGB(255,0,0)) SetText("AlarmMsg", GetAlarmText(ReadPLC("VW100"))) ElseIf ReadPLC("VW102") > 80 Then SetBackColor("AlarmLED", RGB(255,255,0)) Else SetBackColor("AlarmLED", RGB(0,255,0)) End If End Sub这个脚本绑定在定时触发器上,每200ms执行一次。VW100存的是故障代码,VW102是水泵压力值。实测发现脚本执行太频繁会导致触摸屏卡顿,后来改成在PLC里做好状态判断,直接传标志位到屏上更省资源。
说个踩过的坑:PLC的RS485端口和触摸屏通信时,接地线没接好会导致随机乱码。后来用示波器抓波形发现共模电压超标,乖乖加了条等电位连接线才解决。所以老铁们接线时别忘了:
- 屏蔽层单端接地
- 手拉手拓扑别搞星型
- 终端电阻该加就加
测试阶段最头疼的是水泵空转检测,后来用了个取巧的办法——监测运行电流结合出口压力:
// 水泵状态判断 IF "Run_CMD" THEN CASE TRUE OF ("Current" < 10) AND ("Pressure" < 0.1): "Fault" := 16#0001; // 空转故障 ("Current" > 30) AND ("Pressure" < 0.3): "Fault" := 16#0002; // 堵转故障 ELSE "Fault" := 16#0000; END_CASE; END_IF;这个逻辑需要配合电流变送器和压力传感器的量程校准,现场调试时拿水泵特性曲线对了好几次才确定阈值。
现在系统已经连续运行两周没掉过链子,通过触摸屏能随时查看128个消防栓的状态,每月自动生成巡检报告。要说还有什么可改进的,或许可以加个4G模块实现远程监控?不过甲方爸爸说够用就行,那就先这么着吧。