嵌入式(三十):modbus站點設計

2、modbus是適用於現場總線控制系統的協議。modbus中,通過協議來規定同一時間最多隻有一個設備發送。通過主機控制從機,只有主機發送信息給相應從機,從機才能發送信息。從機不能自己開啓一個通信過程。
3、modbus中將每個節點抽象爲:
在這裏插入圖片描述在這裏插入圖片描述
a、節點ID在網絡中唯一,但可以不連續
b、寄存器均視爲16bit數據
c、線圈均視爲1bit數據
d、寄存器、線圈的物理意義(物理實現)由節點自由定義
4、modbus站點設計實例:
a、板子有一個id號,一個字節,編號爲1-255,0爲廣播站號
b、每個節點有多個寄存器,每個寄存器有多個地址。
c、線圈可以記錄一個信號的翻轉
d、將modbus做在com口上,9600 8 n 1,將計算機作爲主機
e、發送數據幀時,字節之間需要連續。如果一個數據幀的兩個字節間超過1.5字節時間,可能導致其它節點誤以爲是2個數據幀(小於1.5ms);
f、發送數據時,總線上的幀與幀(無論誰發出的)之間最少間隔4字節時間(大於4ms);
g、主機發送指令格式:
1字節目的設備地址+1字節功能碼+N字節數據+2字節CRC16(校驗)
①、1字節目的設備地址:ID號,取值範圍:0(廣播),1-247(一般節點),248-255(它用)
②、1字節功能碼:指示做何操作。(黑體爲主要常用功能碼,一般需要實現)
即:01、02、03、04、05、06、0F、10(十六進制)
或: 1、2、3、4、5、6、15、16(十進制)
01:讀n個連續輸出bit(讀多線圈,即可讀/可寫物理量)
02:讀n個連續輸入bit(讀多狀態值,即只讀物理量)(注:編程時01、02可合併簡化)
03:讀n個連續輸出字(讀多個16bit寄存器,可讀/可寫物理量)
04:讀n個連續輸入字(讀多個16bit狀態值,只讀物理量)(注:編程時03、04可合併簡化)
05:寫1個輸出bit(寫1個線圈)
06:寫1個輸出字(寫1個寄存器)
0F:寫n個輸出bit(寫n個線圈)
10:寫n個輸出字(寫n個寄存器)
③、N字節數據
讀包含:寄存器首地址,數據數量;
寫包含:寄存器首地址,數據數量及數據
特別注意:寄存器地址在不同設備中編碼是不完全相同的。所以,組態軟件選不同設備發出的地址信息也是不一樣的。
如MODBUS RTU中,寄存器(或線圈)計數從0開始,而組態軟件中計數從1開始。所以,組態軟件中序號爲1的寄存器(或線圈),產生的ModBus協議地址爲 0000。組態軟件中的序號需要-1,纔是ModBus協議中產生的地址。
④、2字節CRC16: 循環冗餘校驗,校驗從目的地址到數據區最後-個字節,計算多項式碼爲A001(Hex),詳情看modbus協議簡述。
h、從機響應詳見modbus協議簡述
i、簡單地講就是一個多字節的雙機通信,只不過協議被規定了。
5、SPI、I2C串行通信接口:
a、SPI接口是在同一塊電路板上不同的系統之間進行通信。
b、串行總線時序協議:
①、串行、同步、全雙工(4線) 。數據輸出、數據輸入、時鐘、cs,主控器如果想和其他的設備通信連接方式爲
在這裏插入圖片描述
②、CS高有效,選中芯片。CS爲低時,芯片進入等待
③、主控件發時鐘,在CLK上升沿主控件DI接收數據,DO輸出數據,下降沿從空間DI接收數據
④、可將DI、DO連在一起,3線、半雙工
⑤、總線連接方式
6、I2C串行總線接口:
a、總線結構
在這裏插入圖片描述
b、I2C串行總線開始、停止條件:
開始條件:SCL爲高時,SDA由高到低
停止條件:SCL爲高時,SDA由低到高
一般情況下,SDA只在SCL爲低時變化
c、I2C串行總線時序協議:
輸入數據需要在SCL爲低時給出
輸出數據在SCL變低後輸出
d、I2C串行總線數據傳輸過程
注:A:總線空閒 B:開始條件 C:停止條件 D:數據有效
應答:每個有效接收器件在收到一個字節後,需發出一個“應答” (一個額外的時鐘,應答器件將SDA拉低)
在這裏插入圖片描述
e、器件地址=4bit器件碼+3bit物理地址
4bit器件碼: AT24C32 1010
AD7416 1001
3bit物理地址:由 A2 A1 A0 引腳配置
f、實用技術:
用通用端口進行模擬部分串行接口方法(因爲沒有相應的接口)
基本思想方法
體系結構問題
當前可能:SPI、PS2、I2C、UART
微控器速度、開銷與模擬接口性能問題
應用舉例:
閥門控制器的系統配置數據
路由器配置時的串行通信
語音教室設備設計中的鍵盤鼠標

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章