bsend/brcv通讯块时异步运行,处理一个作业可能会持续数个ob周期。因此不能使用时钟触发输入“req”,而只能在前一个作业完成后(成功或出错)再次触发。
不等待正在激活的作业完成后再次调用功能块,会导致通讯超载。
此外,推荐出错时(error 位 = 1)保存状态字用于后续诊断。error = 0时 状态字status = 11 (十进制)。
sfb/fb 12 “bsend” 数据一致性
为确保数据一致性,在当前发送程序结束之前,不要再次写发送区域sd_1的使用部分。done变为1时发送结束。
sfb/fb 13 “brcv”数据一致性
如果您执行以下操作,则数据接收一致:
在控制输入“en_r” = 1 再次调用块之前,评估接收区域“rd_1”的使用部分。
更多信息,请参考手册”simatic system software for s7-300/400 system and standard functions – volume 1/2″ ,条目 109751826.
示例
以下示例是在pcs 7环境中如何实现基于作业触发输入“req”,并且保存相应的错误位和状态字。
图. 01
图. 02
更多信息
更多信息,请参考通讯块在线帮助和以下条目:
notes on using the system function blocks sfb12 and sfb13 (bsend/brcv)
how do you program communication blocks fb12 “bsend” and fb13 “brcv” for data exchange in the s7 program of an s7-300 cpu?