在之前的几篇文章中,我们介绍了PROFIBUS DP 网络的部署和不同版本的 DP。本期,就让我们继续了解一下 PROFIBUS DP 的报文解析。
PROFIBUS DP 的物理层采用 RS485 通信,每个字符由 1 个起始位、8 个数据位、1 个偶校验位和 1 个结束位组成。通过 DP 抓包工具,我们可以捕获总线上的报文。
那么,要如何解析这些报文数据呢?
Modbus RTU 协议也是基于 RS485 通信,它通过报文之间的时间间隔(message delimiter)来区分报文。
而 PROFIBUS DP 协议中的报文则有明确的起始字符(start delimiter,SD),通过起始符可以方便地识别是以下的哪一种消息:
1. 设备状态请求帧
该报文帧用于查询总线上的激活站点,由主站发出。起始符 SD1 为 0x10,结束符 ED 为 0x16。DA 为目的地址,SA 为源地址,FCS 为帧校验码。
2. 可变长数据帧
该报文帧用于主站和从站之间的信息交互,例如获取从站诊断信息、参数设置、组态和数据交互等。具体的服务类型由 DSAP 和 SSAP 标识,数据单元(Protocol Data Unit,PDU)的长度可变,范围为 0 到 244 字节。起始符 SD2 为 0x68,结束符 ED 为 0x16。LE=LEr 表示数据帧长度,DA 为目的地址,SA 为源地址,FCS 为帧校验码。
3. 定长数据帧
该报文帧的数据域长度固定为 8 字节,起始符 SD3 为 0xA2,结束符 ED 为 0x16。
4. 令牌传递帧
该报文帧用于主站之间的令牌传递,获得令牌的主站具有总线控制权。起始符 SD4 为 0xDC,DA 为目的地址,SA 为源地址。
5. 短应答
单个字节的特殊应答报文,SC 为 0xE5。用于设备快速回应无需回复数据的请求。
除了起始符 SD 和结束符 ED 这些固定数值之外,还有功能码(Function Code, FC)和服务访问点(Service Access Points, SAP)来具体定义报文的功能。但是,它们的定义比较复杂。
借助 HMS 旗下的 PROFIBUS DP 诊断产品 ProfiTrace,我们可以轻松接入 DP 网络,监控和解析 DP 网络的报文,并生成专业的诊断报告。
在界面中可以很清晰地看到报文帧的结构、源地址、目的地址、帧类型、服务 SAP 以及报警信息。
以上就是本期文章的全部内容,希望能帮助您了解到更多 PROFIBUS DP 的知识。
如果您想了解更多关于 ProfiTrace 的信息,请联系 HMS。
作为一家深耕于工业网络的企业,HMS 也会努力为大家提供最新、最专业的工业网络技术知识。如果你喜欢本篇文章,欢迎持续关注我们,获取更多精彩内容。
如果对本文中的内容有任何疑问或建议,也欢迎在评论区留言,谢谢。
我们下期再见!