有关使用系统功能块SFB12和SFB13(BSEND/BRCV)的说明

问题:
使用系统功能块SFB12和SFB13(BSEND / BRCV)时应注意些什么?

解答:
使用系统功能块SFB12和SFB13(BSEND / BRCV)时, 必须遵守以下各点:

有关使用系统功能块SFB12的说明:

  1. REQ参数通过输入的上升沿启动一个作业。在DONEERROR位还没有置起前,该作业一定 不能复位和重启动。在每发送一个作业后就置起这个两位中的一位。 之后 REQ 参数就可以再次触发另一个发送作业。为确保功能性,在系统功能块的REQ输入处 至少要有一个正边沿跳变。
  2. 如果ERROR位已置起,任何情况下都要判断“STATUS”,以便能检索有关出错原因的补充信息,从而能直接清除它。有必要的话,可对此“STATUS”作一般的判断。因为有一种情况( STATUS CODE: 11) 下,ERROR位不一定要置位。 
  3. 当连接被组态後,“ID”参数包含了被赋予的局部 ID 。
  4. “4. 在相互连接的两个系统功能块中, "R-ID" 必须是相同的,并且在系统中是唯一的。 
  5. 只有在首次调用系统功能块时,ANY 参数“SD_1”的长度指标才被评估,并且依据它的值设置发送缓冲区。该值规定了可为此事例传输的数据的最大量。后续的调用中,只评价 LEN 参数并依据规定的数据量传输数据。

“ID” 和 “R_ID”不可动态使用。因为它们是在为此事例首次调用系统功能块时被评估和设置的。它们不可在后续的调用里被更改。

有关使用系统功能块SFB13 的说明:

  1. 参数“EN_R”可永远为 1。因为此系统功能块异步工作,也不能通过专门的调用或发送数据而被传输。
  2. 对于参数“ID”和 “R_ID”,用于系统功能块 SFB12 的第 3 点和第 4 点同样适用于它。 
  3. 对于参数“RD_1”用于系统功能块SFB12的第 5 点同样适用于它。
  4. 上述过程完成后,不是“NDR”就是“ERROR”被置位。只有在NDR位已经置位后,才能访问接受缓冲区里的数据(数据一致性)。
  5. 只有当 ERROR 位已置位,才能评价“STATUS”,就像系统功能块SFB 12的第 2 点里所述的那样。

注意:
请确保“DONE”, “NDR”, “ERROR”和 “STATUS”里的数据只在事件出现的那个周期里可用。相应地,评价和事件处理也必须发生,或至少在同一个周期里触发。

https://support.industry.siemens.com/cs/document/1152252/%E6%9C%89%E5%85%B3%E4%BD%BF%E7%94%A8%E7%B3%BB%E7%BB%9F%E5%8A%9F%E8%83%BD%E5%9D%97sfb12%E5%92%8Csfb13(bsend-brcv)%E7%9A%84%E8%AF%B4%E6%98%8E?dti=0&lc=zh-CN

猜你喜欢

转载自blog.csdn.net/ba_wang_mao/article/details/114640437