[CompactCom 40] PROFIBUS 自动读取IO数据配置Config
1. Get_Cfg 服务
PROFIBUS DP 协议规定了可选的SD2 报文 Get_Cfg,
如果从站支持此报文服务,那么主站可以通过发送Get_Cfg来获取从站当前实际的IO数据配置Config
SD2 的报文格式如下
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

👓 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偶校验
🚩
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
