在作业运行期间改变用户块”AG_SEND”和”AG_RECV”的输入参数

问题:
在作业运行期间,用于发送/接收接口的用户块的输入参数可以改变么?

解答:
下列描述适用于所有支持SEND/RECEIVE通信,并支持在OSI参考模型的第 4层上透明传送用户数据的服务的自动化系统S7-300和S7-400的CP(通信处理器)。
当前的工业以太网CP是:

  • 6GK7 443-1EX11-0XE0 (CP 443-1)
  • 6GK7 443-1GX11-0XE0 (CP 443-1 IT)
  • 6GK7 343-1EX20-0XE0 (CP 343-1)

这也适用于支持等效的FDL通信的PROFIBUS CP。

调用用户块
要发送和接收单个数据块,有一个特定的功能可用:

  • FC5 (AG_SEND): 发送数据块
  • FC6 (AG_RECV): 接收数据块

在S7-CPU的用户程序中的调用块的更多信息以编程语言STL显示:

在作业运行期间改变用户块"AG_SEND"和"AG_RECV"的输入参数

图 1:FC5 (AG_SEND)

在作业运行期间改变用户块"AG_SEND"和"AG_RECV"的输入参数

图 2: FC6 (AG_RECV)

说明
如果已经通过第一次调用块启动了一个作业,那么块的输入参数(标以红色)就不能修改直到

  • 块 FC5 应答 DONE = 1
  • 块 FC6 应答 NDR = 1
  • 其中一个块应答 ERROR = 1

如果没有遵守该说明,那么有可能会在用户界面上出现错误消息或在诊断缓冲器中出现误导条目:

当忽略该说明时,可能会发生错误

  • 在S7-300 CP中,在用户界面上,出现错误消息0x80B1。该消息指出长度指示是错误的(在参数LEN中)是错误的。该消息会一直持续出现。
  • 在S7-400 CP中,在断缓冲器中偶尔会出现一个条目,告知连接编号x不在值的允许范围之内。

所有这些行为都可以显示出没有遵守上述说明,并且因此用户块的输入参数在运行时发生了改变。

注意
关于"AG_LSEND" 和 "AG_LRECV":
所描述的事实也适用于块FC50 (AG_LSEND)和FC60 (AG_LRECV),它们只能用在旧的S7 300组中或数据长度大于 240 字节的所有S7 400 组中。

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

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

相关推荐

发表回复

登录后才能评论