MODBUS说白了就是让你按照规定的格式来凑一段ASCII字符串。
他的格式定义如下:
第一个ASCII 是“:”这个符号。他的ASCII是0x3A (0x在VC中是16进制的意思)
第二个ASCII是个地址,站号(也就是说,你这个上位机要发给哪个机器):比方我们发给“01”这个地址:0x30 0x31
第三个是功能码,也就是说你要通讯实现什么功能?读 啊,还是写啊?读的话读几个啊?写的话写几个啊?写哪啊?针对不同的功能,有不同的功能吗与其对应。。。。比方,我们要读 读的功能码是“0x01" 所以,0x30 0x31
我们要读哪个地址呢?你通讯的下位机会有MODBUS地址表给你的,查一下你要通讯的物品的手册,就找到了。。。比方我们要对0x4000这个地址读取 那么对应的ASCII就是 0x34 0x30 0x30 0x30
完事了之后,就是我们的CRC效验码了。。。(RTU的是CRC效验,ASCII的是LRC效验相对来说,LRC的容易一些。)
CRC效验的有一段程序 百度直接COPY之。。。
BYTE CRC(BYTE *PVOID)
{
}
这个会返回一个字节,比方返回了0x45 那么对应的ASCII就是 0x34 0x35
然后就是两个符号 VC里面是“\r\n” 对应的ASCII是0x13 0x10
也就是说我们这一串ASCII 是:“0x3A 0x30 0x31 0x30 0x31 0x34 0x30 0x30 0x30 0x34 0x35 0x13 0x10” 讲这一串ASCII用你的串口发出去,就是MODBUS RTU通讯了。