西门子博途PLC 1200与KTP700在发电厂锅炉控制中的应用与升级至16BSZ990的技术研究
项目上线后发现个隐藏BUG:KTP700的背光亮度自动调节会和PLC的模拟量输入模块产生EMC干扰。解决方法是在触摸屏电源端加了个磁环,同时把AI模块的滤波时间从默认的20ms调到50ms。最近在电厂锅炉控制的项目里折腾西门子S7-1200PLC和KTP700触摸屏,发现博途平台从V15.1升级到V16 BSZ990版本后有些坑是真让人头秃。硬件配置这块有个反直觉的操作:KTP700的Profin
发电厂锅炉控制西门子1200PLC和KTP700博途15.1和16BSZ990
最近在电厂锅炉控制的项目里折腾西门子S7-1200PLC和KTP700触摸屏,发现博途平台从V15.1升级到V16 BSZ990版本后有些坑是真让人头秃。今天就唠唠实战中遇到的几个典型问题,顺带扔点代码片段给兄弟们参考。
硬件配置这块有个反直觉的操作:KTP700的Profinet节点地址必须和PLC项目里设定的完全一致。有次凌晨三点调试死活连不上,最后发现是触摸屏IP第三位填错了。建议直接在OB1初始化块里加个地址校验:
IF "HMI_Station".IP[3] <> 192 THEN
"HMI_Connection_OK" := FALSE;
// 顺手把错误代码甩到诊断缓冲区
WRITE_DIAG(CODE:=16#8001, MSG:='HMI地址配置异常');
END_IF;
这段代码能有效避免手滑输错IP的情况,特别是项目赶工时容易犯这种低级错误。

发电厂锅炉控制西门子1200PLC和KTP700博途15.1和16BSZ990
锅炉压力PID调节部分,V15.1的PID_Compact模块在V16里参数结构有变化。老项目迁移时会遇到缩放比例参数丢失的问题,建议用版本判断做兼容处理:
#PID_Instance := "PID_锅炉主汽压力";
IF TIA_VERSION < V16 THEN
#PID_Instance.SCALE_Input := 0.0;
ELSE
// 新版本参数结构多了个小数点精度
#PID_Instance.Input.Scaling := (Min:=0.0, Max:=25.0);
END_IF;
特别注意V16开始实时曲线控件的数据刷新机制改了,触摸屏上原来每秒更新50次现在默认降到30次。要在HMI变量连接里手动开启高速模式:
<DataLogging Name="PressureWave">
<SampleCycle>100ms</SampleCycle>
<ArchiveCycle>50ms</ArchiveCycle>
<TriggerVariable>%M100.5</TriggerVariable>
</DataLogging>
锅炉安全联锁的逻辑建议单独建个FB块。有次DCS信号干扰导致急停误触发,后来加了信号滤波和状态保持:
// 急停信号需持续200ms才生效
IF #ESTOP_IN AND NOT #ESTOP_LAST THEN
TON(IN:=#ESTOP_IN, PT:=T#200ms);
END_IF;
#ESTOP_LAST := #ESTOP_IN;
最后说个骚操作:博途V16的仿真器支持强制修改HMI弹出窗口层级。调试时在仿真界面按Ctrl+Alt+Shift点击弹窗,可以直接修改Z-index值,这对处理界面元素遮挡问题贼有用。
项目上线后发现个隐藏BUG:KTP700的背光亮度自动调节会和PLC的模拟量输入模块产生EMC干扰。解决方法是在触摸屏电源端加了个磁环,同时把AI模块的滤波时间从默认的20ms调到50ms。这年头搞工控,电工活也得捡起来干啊...

更多推荐
所有评论(0)