• {{item.name}}
{{item.name}}
{{item2.name}}
更多
常问问题

为什么调用FC6 "AG_RECV"时会出现状态字"80B1"

star star star star star
5.0 分
  • 通信(通讯)
  • 系统接口
文档编号:F0412| 文档类型:常问问题| 发布时间:2024年02月21日
  • 0
  • 57
  • 5647
本文描述了为什么调用FC6 "AG_RECV"时会出现状态字"80B1"。

1问题描述
使用CP342-5进行PROFIBUS FDL广播通信的时候,S7-300侧调用FC6 "AG_RECV"接收数据。当发送的长度小于66字节时,虽然FC6 "AG_RECV"的数据接收缓冲区长度和发送长度一致,还会出现错误,状态字显示为"80B1H"。查看STEP7帮助,含义为目标区域太短。具体现象如图1所示。


图1 具体现象

2错误原因
出现上面的现象是因为在PROFIBUS网络属性中激活了“周期发送总线参数”这个选项(见图2)。一旦激活了此选项,那么CP模板会周期性的以广播的方式发送PROFIBUS网络参数,而且这个广播报文的长度是66字节。由于PROFIBUS FDL广播通信是SDN(Send Data with No Acknowledge)方式,数据接收是无条件的。因此,FC6 "AG_RECV"会接到通信伙伴以广播方式发送的两组数据,一组是8字节的真正要通信的数据,另一组就是66字节的总线参数。所以才会出现"80B1H"目标区域太短的错误。


图2 PROFIBUS网络属性

3 解决办法
可以有两个办法解决此问题。
办法一:取消激活PROFIBUS网络属性页中“周期发送总线参数”这个选项。
办法二:通过程序对数据进行判断。PROFIBUS FDL广播通信有一个特点,那就是发送 数据的前四个字节作为报文头必须保留,系统会自动在里面加上数据发送方的信息。接收方通过接收到的数据的报文头可以判断出数据源。报文头的定义如下:
1) 第一个字节:PROFIBUS站地址
2) 第二个字节:LSAP
3) 第三个字节:常数W#16#7F表示SDN方式
4) 第四个字节:空
因此,可以直接将FC6 "AG_RECV"的接收数据缓冲区开到最大240个字节。这样,不论是实际的通信数据报文还是总线参数报文长度都允许。然后再通过程序判断,当接收到的报文头中发送方的站地址和LSAP与Netpro中数据发送方FDL广播连接配置一致时再将数据从缓冲区中复制出来(见图3,图4)。


图3 FDL连接属性


图4 程序处理

关键词
CP342-5,FC6 "AG_RECV",FDL,广播,80B1


您可以前往全球资源库查看此文档

剩余80%未阅读,请登录后下载/查看文档

  • 评论
更多
  • 分享

    扫码分享

提示
您即将前往“全球技术资源库”。
“全球技术资源库”的用户名与本地支持中心(下载中心、技术论坛、找答案、1847工业学习平台)的用户名不通用。如果需要在全球技术资源库下载文档,您需要重新登录或注册。
确定

扫码进入移动端

信息提示
很抱歉!您所访问的页面不存在,或网址发生了变化,请稍后再试。