在 STEP 7(TIA Portal) 中使用 S7-1200/S7-1500 ,为什么 PROFINET 组件不可用时调用这些组件地址的功能块不能被执行?

描述
在 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输入数据。

在 STEP 7(TIA Portal) 中使用 S7-1200/S7-1500 ,为什么 PROFINET 组件不可用时调用这些组件地址的功能块不能被执行?图 01

补救措施 2

对于输入参数的传递,应该避免基本数据类型(字节/字/双字)的使用和数据类型变种的使用。在块中调用“VariantGet”指令。“VariantGet”指令读取变量的值,将源目标“SRC”的变量写入目标变量“DST”中。你可以用临时变量临时储存这个值。如果发生一个输入输出错误,该错误报告在块内部生成,功能块仍然是完全运行通过的。你可以直接在调用块中诊断错误:

  • 通过编程错误的介绍和“get_error”指令。
  • 在CPU的诊断缓冲区中看.

在 STEP 7(TIA Portal) 中使用 S7-1200/S7-1500 ,为什么 PROFINET 组件不可用时调用这些组件地址的功能块不能被执行?
图 02

创建环境
该FAQ中的截图由 STEP 7 (TIA Portal) V13+ SP1 创建。

原创文章,作者:ximenziask,如若转载,请注明出处:https://www.zhaoplc.com/plc323953.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2020年11月5日
下一篇 2021年4月12日

相关推荐

发表回复

登录后才能评论