此文參考如下網址資料:
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