天塔之光组态王6.55和西门子1200PLC联机程序3ok,博途15
组态王和西门子PLC的联机调试在工业自动化里算是经典组合了。
这次用天塔之光组态王6.55对接S7-1200,博途V15的环境配置,实测下来最头疼的还是通信协议的匹配。
先上硬货——直接看PLC数据块配置:
DATA_BLOCK"DB_HMI"
END_VAR
这个DB块要特别注意偏移地址对齐。
比如 3px;">Lamp_Status占位0.0,那组态王里的变量地址就得写成DB1.DBX0.0。style="background:
很多人栽在地址格式上,写成DB1.X0.0直接通信失败。
组态王这边配置S7-1200驱动时,得先怼上TSAP号。
博途里查PLC属性→常规→PROFINET接口→高级选项,能看到TSAP是03.01。
组态王驱动参数这么填:
[Channel]IP=192.168.1.10
RemoteTSAP=0x0301
重点来了!LocalTSAP这个值不是固定的,遇到过现场调试时用默认值死活连不上,改成0x1002才通的情况。
建议每次新建项目都先用博途的诊断功能抓包确认实际参数。
/>
天塔之光组态王6.55和西门子1200PLC联机程序3ok,博途15
通信脚本里最关键的是心跳检测。
分享个实战验证过的VB脚本:
SubOnTimer()
PLC.ReadBit("DB_HMI.Lamp_Status")
Then
SetObjectColor("Signal_Lamp",
255,
SetObjectColor("Signal_Lamp",
255,
PLC.ReadInt("DB_HMI.Tower_Height")
Tower_Height
"高度超限!当前值:"
&
Sub
这个脚本里有个隐藏雷区——ReadInt方法默认读取的是两个字节,如果PLC端DB块里变量地址没按字对齐(比如MW3这种奇数地址),数据会错乱。
建议PLC编程时强制MW地址从偶数开始。
调试时遇到过最玄学的问题是通信时断时续。
后来发现是Windows防火墙把组态王的S7Comm端口给拦了。
建议直接在控制面板里加条入站规则,放行102端口。
命令行操作更高效:
New-NetFirewallRule-DisplayName
Allow
最后说个骚操作:当需要高速采集数据时,可以启用组态王的异步读写功能。
在设备配置里勾选"启用异步通讯",配合下面的脚本结构:
SubValue)
Sub
这种回调机制能把通信延迟降到50ms以内,实测比定时器轮询效率高3倍不止。
不过要注意变量分组数量,一次异步读取超过20个标签反而会拖慢速度。
/>
联调成功的标志?当组态王画面上的天塔灯光能跟着PLC程序里的定时器精准闪烁,DB块里的高度数值实时跳动时——别急着庆祝,记得做压力测试。
连续运行24小时后没出现通信超时警报,这项目才算真正稳了。


