起始符+设备地址+功能代码+数据+效 验码+结束字符为MODBUS协议中ASCLL的一帧,这种格式称之为:帧格式。
如上图所示,起始位和结束符,在此帧中起到甄别帧与帧之间分割的作用。设备地址表明了主从通讯之间的方向,功能代码是指寄存器命令,比如读取单个寄存器为06H等等。数据是对寄存器写入的内容。校验码则是为了校验此帧数据在传送中受到干扰后是否依然有效。 目前MODBUS协议与之契合度很高的一款硬件总线名为POWERBUS,这是一种总线可供 点的新型总线:POWERBUS二总线。它解决了传统的RS485总线在现场中使用的问题,降低了成本,下图是透传MODBUS测试:
Modbus协议分ASCII,RTU和TCP三种类型。
你说的含有起始符和结束符的应该是Modbus ASCII,起始符是冒号(:)字符,ASCII码 为3AH,结束符是回车换行符,ASCII码为0DH,0AH。
而Modbus RTU通讯协议中是没有规定起始字符和结束字符的,Modbus协议中判断一帧数据的开始和结束时靠停止时间的长度来决定的。当两个字节的中间空闲时间超过4个Byte的时间,即判断这一帧结束。同样的道理,当超过4个Byte的空闲之后,下位机收到数据,此数据即判断为新的一帧数据的开始。
设备地址即为下位机的Slave Address,从站地址。
功能代码,你说的H3我没看懂~ 你是要表达03H吗? H代表16进制,03功能码是读取保持寄存器。常用的功能码还有如下一些:04H读取输入寄存器,06H读取单个寄存器,08H诊断,11H报告设备ID,16H写入多个寄存器。
数据就是你要写入的寄存器地址,写入几个寄存器以及写入的内容。如果是读操作,就只需要指定要读取的寄存器地址以及位数即可。
校验码是对数据有效性的一个校验,占两个字节,具体ASCII使用LRC校验,RTU使用CRC校验,TCP无需校验。至于校验码的算法,请百度之,有点太长了。。。
好了,大概就这些了,码字幸苦,如果对你有点帮助请记得采纳,谢谢!
Modbus协议最初由Modicon公司开发出来,现在Modbus已经是工业领域全球最流行的协议。协议支持传统的RS-232、RS-422、RS-485和以太网设备。许多工业设备,包括PLC,DCS,智能仪表等都在使用Modbus协议作为他们之间的通讯标准。
Modbus协议包括ASCII、RTU、TCP等,并没有规定物理层。此协议定义了控制器能够认识和使用的消息结构,而不管它们是经过何种网络进行通信的。标准的Modicon控制器使用RS232C实现串行的Modbus。
可以搜 百度文库
有不少文档
MODBUS 协议有几类的