MCGS触摸屏程序,小区换热站,西门子PLC程序 关联200smart MCGS tcp1061ti
小区换热站的自动化系统里,MCGS触摸屏和西门子PLC的搭配算是个经典组合。最近折腾了个项目,用到了MCGS的TCP1061TI型号触摸屏和S7-200 SMART PLC,过程中踩了几个坑,分享点接地气的实操经验。
先说通信配置这个大头。MCGS和200 SMART走的是以太网通信,TCP1061TI自带网口,接线倒是省心。重点在两边地址得对得上------PLC的IP设成192.168.1.10,触摸屏这边填同样的网段比如192.168.1.20。这里有个反直觉的点:MCGS的设备窗口里添加S7-200 SMART驱动时,设备属性里的"本地IP"其实指的是PLC的IP,新手特别容易在这儿栽跟头。
PLC端要搞个数据块用来交互,比如建个DB1,里面塞几个Real型变量存温度、压力:
stl
DATA_BLOCK DB1
VAR
SupplyTemp : REAL := 0.0; // 供水温度
ReturnTemp : REAL := 0.0; // 回水温度
PumpStatus : BOOL := FALSE; // 水泵状态
END_VAR
MCGS这边对应的变量绑定得注意地址偏移量。比如DB1.DBD0对应"4x寄存器"的VW0(实际是VD0),在设备通道里得这么配:
text
变量名 | 寄存器类型 | 地址 | 数据类型
供水温度 | V寄存器 | 0 | IEEE754浮点
水泵状态 | V寄存器 | 8 | 开关量
调试时最抓狂的是字节顺序问题。西门子PLC的浮点数用大端格式,而有些国产设备默认小端,这时候得在MCGS的通道设置里勾选"交换高低字节",不然读出来的温度值能给你飙到几万度------别问我是怎么知道的。

MCGS触摸屏程序,小区换热站,西门子PLC程序 关联200smart MCGS tcp1061ti
脚本控制这块,MCGS的循环策略里可以塞点逻辑代码。比如根据回水温度自动启停水泵:
lua
function OnCycle()
local returnTemp = GetVar("ReturnTemp")
if returnTemp > 55.0 then
SetDevice("PLC", "WriteBit", "V8.0", 1) // 启动水泵
elseif returnTemp < 50.0 then
SetDevice("PLC", "WriteBit", "V8.0", 0) // 停止水泵
end
end
实际应用中得加个延时判断,防止频繁启停。有次现场调试时,工人师傅抱怨水泵半小时跳了20次,后来加了30秒的延时过滤才消停。
报警功能算是MCGS的强项,但组态时容易犯低级错误。比如压力超限报警的表达式如果写成"A>0.6",运行时死活不触发。最后发现是没把变量A转成浮点数,正确的写法应该是"GetFloat(A)>0.6"。这种类型匹配问题在调试时最耗时间,建议在变量命名时就加上类型后缀,比如Pressuref、Statusb。
最后说个现场遇到的玄学问题:触摸屏画面偶尔会卡住不动。查了三天发现是PLC的看门狗时间设得太短,导致通信超时。把OB35中断里的定时器从200ms改成500ms,整个世界都清净了。这玩意儿说明书写得隐晦,实际经验真是踩坑踩出来的。
