基于S7-200 PLC和组态王矿井通风控制
最近在矿上折腾通风控制系统,碰上了西门子S7-200 PLC和组态王的组合方案。这俩老伙计配合起来挺有意思,特别是当PLC程序遇到组态王的人机界面时,硬核的工业设备和直观的操作界面居然能擦出火花。

先说PLC这边,通风系统最核心的就是实时监控瓦斯浓度。咱们用SMB28读取模拟量输入,配合定时中断做个轮询检测。下面这段程序专门处理传感器数据:
LD SM0.0
MOVW AIW0, VW100 //瓦斯浓度值存到VW100
AENO
MOVW AIW2, VW102 //温度值存VW102
AENO
CMP >= VW100, 1000 //浓度阈值1.0%
注意这里用MOVW指令搬运模拟量输入到变量寄存器,CMP比较指令直接做阈值判断。实际调试中发现AIW0的原始数据需要做量程转换,比如0-20mA对应0-10000数值,这时候在PLC里得加个标定程序段:
LD SM0.0
ITD VW100, VD200 //整型转双整型
DTR VD200, VD204 //转浮点数
/R 10000.0, VD204 //归一化处理
*R 100.0, VD204 //换算为百分比
ROUND VD204, VD208 //取整处理
DI VD208, VW210 //最终百分比数值
组态王那边配置数据词典时,得和PLC的V区地址对应上。比如通风机状态显示对应V0.0,浓度报警对应V0.1。在命令语言里写了个自动切风机逻辑:
If \本站点\瓦斯浓度 > 1.0 Then
SetDevice(PLC1, "Write", "V0.5", 1) //启动备用风机
SetAlarm("浓度超标,切换风机!")
EndIf
调试时被Modbus通讯坑过一把。PLC的通讯参数和组态王不匹配,死活连不上。后来发现S7-200的PPI口默认是187.5kbps,而组态王驱动设置成了9.6k,改完参数立马活过来了。这里有个小技巧——用PC Access做中间变量监视,能快速定位通讯问题。
现场布线上也有讲究,模拟量信号线必须和动力电缆分开走线。有次偷懒把24V电源和传感器信号线并排走了20米,结果PLC采集的数据跳得跟心电图似的。后来加了个信号隔离器,噪声问题才解决。

这套系统跑起来后,最直观的变化是中控室大屏能实时看到风门状态。组态王的趋势曲线功能挺实用,能同时显示三路风压变化,配合PLC的PID调节,主扇风机转速控制精度能到±2%。不过遇到断电重启时,记得在PLC里加个初始化程序块,防止设备误启动。
搞工控的都知道,稳定运行只是及格线。最近在尝试把报警记录同步到SQL数据库,组态王的ODBC功能还没玩转。哪位兄弟有类似经验,欢迎来交流下怎么处理历史数据存储的坑。

586

被折叠的 条评论
为什么被折叠?



