此文参考如下网址资料:
https://wenku.baidu.com/view/cbaef61ab7360b4c2e3f6465.html
https://wenku.baidu.com/view/86a3a883cc175527072208e7.html
ASCII码表查询:http://ascii.911cha.com
传输格式:RS232C
波特率:9600bps
奇偶:even
校验:累加方式(和校验)
字符:ASCII
报文格式:16进制
例:
STX(起始) 命令 首地址 字节数 数据内容 ETX(结束位) 和校验
02 31 31 36 34 30 30 32 30 31 30 30 03 32 32
1.STX:起始位、帧头
2.命令:30(读取模式)、31(写入模式)... ...
3.首地址:指数据读取/写入从哪个地址开始
3.1寄存器”D”的地址算法
address=”D”的编号(十六进制格式下)*2+1000H,将算出来的值的各位当作ASCII表中的图形,分别对应其十六进制值
注意:此方法只适用于D0-D1023
3.2例:从D123开始读取4个字节数据
报文:02h 30h 31h 30h 46h 36h 30h 34h 03h 37h 34h
address=”D”的编号十六进制数*2+1000H,即(123)转成十六进制数(7B) *2+1000(H)=10F6(H),将10F6各位当作ASCII表 中的图形,找出其对应的十六进制 值,即:31h 30h 46h 36h
4.字节数:表示需要读取或者写入的字节数
注意:一位ASCII码占用一个字节,表示帧中的各个数据转换成ASCII码后占用的内存的字节数;用十六进制表示一个数值。
例:向D123开始的两个存储器中写入1234,ABCD;报文如下:
02h 31h 31h 30h 46h 36h 30h 34h 33h 34h 31h 32h 43h 44h 41h 42h 03h 34h 39h
4.1 字节
30h 34h代表的就是04个字节,
4.2 数据字节数如何看
后面的每个转换成ASCII之后都代表了十六进制的一个位,所以每一位都是4个位(bit),8个bit是一个字节。因为上面这个例子里 面的数据的每一位都是用十六进制表示的,所以总位数(bit数)=数据位数*4bit=8*4=32bit,即4个字节。
顺序:1 0 3 2
5.数据内容
顺序:1 0 3 2,以4个十六进制位为单位写入/读出数据
例:
02h 31h 31h 30h 46h 36h 30h 34h 33h 34h 31h 32h 43h 44h 41h 42h 03h 34h 39h
数据位: 16^1 16^0 16^3 16^2 16^1 16^0 16^3 16^2
报文数据:33h 34h 31h 32h 43h 44h 41h 42h
ASCII码: 3 4 1 2 C D A B
二进制: 0011 0100 0001 0010 1100 1101 1010 1011
bit位数: 4 4 4 4 4 4 4 4
总字节数:(4+4+4+4+4+4+4+4)/8=8Byte(字节)
6.ETX:结束位、帧尾
7.和校验
SUM=CMD+... ...+ETX,累加和超过两位取低两位
注意:数据以十六进制格式相加
例1:
STX CMD ADDRESS BYTES DATA ETX SUM
02h 31h 31h 36h 34h 34h 30h 32h 30h 32h 30h 30h 03h 32h 37h
SUM=31+31+36+34+34+30+32+30+32+30+30+03=227h
取低两位ASCII码:32h 37h
例2:
STX CMD ADDRESS BYTES DATA ETX SUM
02h 31h 31h 36h 34h 34h 30h 32h 30h 31h 30h 30h 03h 32h 36h
SUM=31+31+36+34+34+30+32+30+31+30+30+03+32=226h
取低两位ASCII码:32h 36h