有一个FC块程序中一个网络有错误,既不能保存也不能监控。后来又从PLC中上传了一份程序也是一样的错误,但这部分程序的功能是正常的,请问是怎么回事?错误程序见图
图片说明:
最佳答案
本人以前记录过如下的文档,忘记作者是谁了。今转帖,供参考。
转帖:
时间标记冲突与一致性检查:
每个块包含一个代码时间标记和一个接口时间标记,可以在块的属性对话框中查看他们。下列情况将会产生时间标记冲突:
1)被调用的块比调用它的块的时间标记更新。
2)用户定义数据类型(UDT)比使用它的块或使用它的用户数据的时间标记更新。
3)功能块比它的背景数据块的时间标记更新。
4)FB2在FB1中被定义为多重背景,FB2的时间标记比FB1更新。
及时块与块的时间标记的关系是正确的,如果块的接口的定义与它被使用的区域中的定义不匹配(有接口冲突),也会出现不一致性。
以发动机控制为例,如果再FB1的变量声明表中修改或增减输入、输出变量或静态变量,在保存块时,将会出现接口已经改变……的警告信息。保存后打开调用它的OB1,出现至少一个块调用有时间标志冲突的对话框。在OB1中可以看看到,调用的FB1的指令变成红色。带有时间标记冲突的 程序下载到CPU后将导致停机。如果用手工来消除块的不一致性,是很麻烦的。可用下面的方法自动修正一致性错误:
1)关闭与冲突有关的所有块。
2)选中simatic管理器左边窗口的块文件夹,执行菜单命令编辑——检查块的一致性,在出现的检查块的一致性对话框中,有时间冲突的块用红色的指示灯标出。执行菜单命令程序-编译,step7将打开系那个硬的编辑器,时间标记冲突和块的不一致性自动地尽可能地消除,同时对块进行编译。经过编译后,对应的红色指示灯消失。
3)如果再编译过程中不能自动清除所有的块的不一致性,在输出窗口中给出错误的块的信息,用鼠标邮件点击某一错误,调用弹出的菜单中的错误显示,对应的错误被打开,程序将跳到被修改的位置。
4)重新执行1、2,直至信息窗口不在显示错误信息。
也可以产出被调用的有冲突的块,然后重新调用他们。
提问者对于答案的评价:
谢谢谢
专家置评
已阅,最佳答案正确。补充一点,call指令存在语法错误
原创文章,作者:more0621,如若转载,请注明出处:https://www.zhaoplc.com/plc226519.html