当调用通信功能块 FC5/50 “AG_SEND/AG_LSEND” 和 FC6/60 “AG_RCV/AG_LRCV” 传送 “REAL” 类型的变量时应该注意些什么?

组态注意:
确保当调用通信块 FC5/50 “AG SEND/AG_LSEND” 和FC6/60 “AG_RCV/AG_LRCV” 时,在输入参数 SEND和 RECV 只能使用ANY指针类型,传输单位为字节。

例如,如果想通过 FC5 “AG_SEND” 传送一个数据类型为”REAL”的变量,并在 “SEND”参数声明为ANY 指针类型:

  • P#DB1.DBX0.0 Byte 4,

在此ANY 指针类型的转换是在 STEP 7 中通过符号表地址,如. 在指定的数据块 (DB) 中ANY 指针指向数据类型为 REAL 。 数据类型BYTE, WORD和 DWORD 都允许在输入参数”SEND”上使用 ANY 指针类型。然而,在例子中数据类型是 REAL ,即,此数据的传送是错误的, FC5的输出参数 ERROR 将被置位。

当调用通信功能块 FC5/50 "AG_SEND/AG_LSEND" 和 FC6/60 "AG_RCV/AG_LRCV" 传送 "REAL" 类型的变量时应该注意些什么?
图. 01: ANY指针的符号名

解决方法:
增大输入参数”SEND”中ANY指针的值,至少一个字节,防止在 ANY 指针类型显示符号名。

参数声明如下::

  • P#DB1.DBX0.0 Byte 5

当调用通信功能块 FC5/50 "AG_SEND/AG_LSEND" 和 FC6/60 "AG_RCV/AG_LRCV" 传送 "REAL" 类型的变量时应该注意些什么?
图. 02: 带有更长数据的ANY 指针将被发送

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

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

相关推荐

发表回复

登录后才能评论