modbus TCP我们也曾在公众号里介绍过,Modbus TCP的应用数据单元和协议数据单元其实很简单,如下图所示,如果你对Modbus RTU很熟悉,那么就很好理解它的ADU和PDU
可以看到去掉了Modbus RTU的地址域和CRC校验域,在功能码前面加入了MBAP 头。1996年,IANA (Internet Assigned Number Authority )就将502端口分配给了Modbus TCP,而在去年modbus的一个变种Modbus TCP 安全协议发布,IANA并将802端口分配给了Modbus TCP安全协议。和之前的Modbus TCP对比如下
Mbaps/TLS/TCP使用TLS v1.2传输协议,可以参考RFC5246,TLS应该大家都听说过,在通信安全加密领域经常使用,由一系列协议和子协议组成。
MBAP的ADU在MBAPS里没有变化,它在安全协议里是如何封装的呢?如下图所示
那么MBAPS数据包结构是什么呢,下面图让你一目了然
对Modbus TCP有加密要求的可以严格参考下标准,同时新设计项目强烈建议使用MBAPS TLS/TCP 而不是MBAP TCP.