描述
在 S7-1200/S7-1500 使用过程中, (FB/FC)参数化带 IO 的地址(例如,"EW4:P")但是没有组态相关的IO模块,这些 (FB/FC)功能块将不会被执行。
其结果是,即使程序块中出现错误的参数,你的程序块不会运行也不得到任何诊断信息。
在CPU的诊断信息中指出的错误信息为IO输入输出处理错误,因为这些IO没有被执行。在每个块调用之前,必须对程序进行程序错误诊断。所有,如果创建一个新块,也应该诊断出这个输入错误,我们建议参考的补救措施2给出的信息。
如果在 IO 地址后面加上“P”(例如"EW4:P"),那么程序将不会访问过程映像区而是直接访问模块地址。那么,如果没有 PROFINET 设备,STEP 7 (TIA Portal) 将会识别到一个错误的 IO 输入,这就意味着该块将不会被执行。
如果想要块在没有配置的输入输出模块的情况下参数化运行,我们建议以下的补救措施:
补救措施1
复制IO 输入到一个临时变量、静态或全局变量中,然后再参数化带变量的功能块,图1显示了这样一个例子 。
- 在调用块(OB1)中诊断错误 。
- 但是对于诊断必须定义一个额外的变量来复制IO输入数据。
图 01
补救措施 2
对于输入参数的传递,应该避免基本数据类型(字节/字/双字)的使用和数据类型变种的使用。在块中调用“VariantGet”指令。“VariantGet”指令读取变量的值,将源目标“SRC”的变量写入目标变量“DST”中。你可以用临时变量临时储存这个值。如果发生一个输入输出错误,该错误报告在块内部生成,功能块仍然是完全运行通过的。你可以直接在调用块中诊断错误:
- 通过编程错误的介绍和“get_error”指令。
- 在CPU的诊断缓冲区中看.
图 02
创建环境
该FAQ中的截图由 STEP 7 (TIA Portal) V13+ SP1 创建。
原创文章,作者:ximenziask,如若转载,请注明出处:https://www.zhaoplc.com/plc323953.html