[CompactCom 40] PROFIBUS 自动读取IO数据配置Config

1. Get_Cfg 服务

PROFIBUS DP 协议规定了可选的SD2 报文 Get_Cfg,
如果从站支持此报文服务,那么主站可以通过发送Get_Cfg来获取从站当前实际的IO数据配置Config

SD2 的报文格式如下
20240226094051170891165172359.png

1.1 Get_Cfg Request请求报文(主–>收)

每个字段的含义如下

  • SD2 起始符SD2固定赋值为0x68
  • LE和LEr 长度,固定赋值为0x05
  • DA 目标地址,赋值为0x80+从站ID
  • SA 源地址,赋值为0x80+主站ID
  • FC 功能码,固定赋值为0x6D
  • DSAP 目标服务点,固定赋值为0x3B
  • SSAP 源服务点,固定赋值为0x3E
  • PDU Get_Cfg请求中没有数据
  • FCS 校验和,是从DA到SSAP字段的算数和
  • ED 结束符固定使用0x16

1.2 Get_Cfg Response响应报文(主<–发)

每个字段的含义如下

  • SD2 起始符SD2固定赋值为0x68
  • LE和LEr 长度,0x05 + IO 配置Config PDU的数据长度
  • DA 目标地址,赋值为0x80+主站ID
  • SA 源地址,赋值为0x80+从ID
  • FC 功能码,固定赋值为0x6D
  • DSAP 目标服务点,固定赋值为0x3B
  • SSAP 源服务点,固定赋值为0x3E
  • PDU IO 配置Config 的响应数据
  • FCS 校验和,是从DA到PDU字段的算数和
  • ED 结束符固定使用0x16

2.使用USB转RS485 工具读取 IO 配置Config

2.1 物理连接

使用任意的USB转RS485,USB端插入电脑USB接口处
测试使用的型号是ZTEK ZE571A
202403261116029267965.png
202403261115172339151.png

👓 USB转RS485 的 D+ 连接 PROFIBUS 从站DB9 的PIN3 B
👓 USB转RS485 的 D- 连接 PROFIBUS 从站DB9 的PIN8 A

⚠️PROFIBUS DB9 数据信号 A/B 标记是和 RS485 的信号A/B 标记相反的

⚠️电脑通过USB转RS485 1对1 连接PROFIBUS 从站, 不要连接其他任何主站设备

2.2 通讯参数配置

端口号选择USB转RS485在电脑上的实际端口号

波特率设置为9600bps
数据位 8bits
停止位 1bits
校验位 Even偶校验

🚩
ComParameters.png

2.3 从站设置

为了方便测试和计算FCS,我们假设从站的ID 设置为 5, 主站的ID 设置为 1

2.4 模拟测试

通过以上配置,我们可以通过主站发送以下数据,即Get_Cfg请求报文Request

68 05 05 68 85 81 6D 3B 3E EC 16

从站在收到请求后, 会进行响应,响应报文Response
⚠️ 由于PROFIBUS 时序要求严格,可能发送多次请求后从站才会响应

例如示例的响应如下

68 0F 0F 68 81 85 08 3E 3B 43 DF 00 01 00 83 DF 00 02 00 0E 16

根据响应中的LE/LEr 可以判断出,PDU 长度是0x0F-0x05 = 0x0A

数据内容是

43 DF 00 01 00 83 DF 00 02 00 0E

即为该从站的IO配置Config


config.png

发表评论    

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。