上周,客户反映当WinCC集成到STEP7中做变量上传时,发生了很诡异的事情:当选择DB块中的Operator Control and Monitoring选项时,对钩出现后瞬间消失?!如下图所示(仅示意)。
一开始真心不相信。眼见为实,客户发来了项目,果真如此。进一步检测,发现该DB为FB背景数据块,找到相关FB,做了如下测试: 1. 项目中其它的FB和DB块没有问题 2. 新创建的FB和DB块没有问题 3. 使用Reorganize进行项目重组无效 4. 创建新项目,拷贝原项目中的问题FB和DB块无效 由此,推断问题出现在该FB中,打开FB,也未发现异常。如下图所示。
事到如今,只能采取笨方法 —— 排除法了。 1. 将问题FB复制,删除所有Network程序 编译存盘后,重新生成DB,设置监控属性无效。推断问题出现在Interface的接口参数中。 2. 删除Interface中所有WinCC监控变量(标记为绿色三角) 编译存盘后,重新生成DB,设置监控属性有效。推断问题出现在Interface中的WinCC监控变量中。 3. 逐一取消Interface中WinCC监控变量的S7_m_c属性,如下图所示
发现问题所在!Interface中定义的输入参数的结构变量CONTROL.MANUAL_AUTO_CHAIN的S7_m_c属性被取消后,DB设置监控属性有效! 经过反复测试,FB中定义的结构变量超过24个字符,即可产生先前描述的诡异现象。删除多余的字符(CONTROL.MANUAL_AUTO_CHAIN-> CONTROL.MANUAL_AUTO_CHAI),问题解决,如下图所示。
在STEP7帮助中未发现对于变量名称长度有24个字符的限制,而在WinCC中,变量定义RAWTAG时有24个字符的限制,可能和此有关。
DB中的结构变量名称定义过长,虽然是小概率事件,但也给了我们一个很好的参考。
|