今天以電磁流量計的一種自定義串口協議具體介紹一下串口通訊在電磁流量計上面的應用。
通訊協議針對電磁流量計工業應用設計,版本:MBmagCP V4.2,該版本主要用于實
時數據采集、流量測量及流量累計控制。
一、主機系統通訊部件要求
標準RS-485通訊接口部件,不小于10 Bytes 的通信緩沖區(FIFO),支持600、1200、2400、4800、9600、14400通訊波特率,支持半雙工通訊模式。通訊程序應允許FIFO,從機要求主機FIFO不小于10Bytes。
二、協議結構
MBmagCP V4.2協議遵從基本開放系統互連(OSI)參考模型,基本開放系統互連參照模型提供通訊系統基本結構和要素,但MBmagCP V4.2協議使用簡化的OSI參照模型,僅采用1、2和7層。
基本開放系統互連參考模型
層號 | 層名 | 功能 | MBmagCP V4.2 |
7 | 應用層 | MBmagCP 命令 | |
6 | 表示層 | ||
5 | 會話層 | ||
4 | 傳輸層 | ||
3 | 網絡層 | ||
2 | 鏈路層 | 數據鏈路連接 | MBmagCP Link |
1 | 物理層 | 設備連接 | RS-485 |
三、MBmagCP V4.2物理結構
MBmag 電磁流量計的網絡通訊接口為半雙工方式,標準通訊速率大于250khz,通訊方向轉換時間3.5uS。通訊接口電氣標準遵從RS232/RS485標準。
MBmagCP V4.2協議可用于星型式網絡結構和總線式網絡結構。標準通訊連接介質為屏蔽雙絞線。
四、MBmagCP V4.2主機信息結構
MBmagCP V4.2協議為主從掃描式通訊協議,每次通訊過程均由主機發起,然后從機進行響應,回傳規定的信息,完成一次通訊過程。
主機至從機信息結構
起始碼(0x2A) | 地址碼 | 功能碼 | 結束碼(0x2E) |
主機發送至從機的信息由四字節組成,字節是起始碼(0x2A),第二字節為從機地址,其編碼:0---127(高二進制位另有定義),第三字節為數據分類命令(下表定義),第四字節是結束碼(0x2E)。從機通訊緩沖區(FIFO)為一字節,因此,主機發送至從機的四個字節必須留時間間隔。
主機應使用10位串行數據格式,并且不使用奇偶校驗。
數據分類命令
命令編碼 | 命令定義 | 命令編碼 | 命令定義 |
00 | 瞬時流量 | 05 | 反向總量 |
01 | 瞬時流速 | 06 | 報警狀態 |
02 | 流量百分比 | 07 | 管道直徑 |
03 | 流體電阻值 | ||
04 | 正向總量 | 14 | 切換到參數設置 |
數據分類命令指示從機回送的數據類型,數據分類命令編碼:0---127,MBmagCPV4.2僅使用0—7和14號編碼,其他編碼暫時保留。
五、 MBmagCP V4.2從機信息結構
從機接受到主機命令信息后,按命令要求回傳測量數據。
從機響應信息數據結構
從機地址 | 命令 | D0 | D1 | D2 | D3 | D4 | D5 | 校驗和 | 結束標志 |
從機響應主機命令,回送10個字節數據,分為命令段、數據段、校驗和、結束標志四部分。
1、 命令段
命令段由兩字節組成:從機地址和數據分類命令,該段是將主機發來的信息直接返回,用于主機校驗從機對主機傳送信息中地址和命令響應的正確性。
2、 數據段
由于流量計各測量數據長度、單位、符號等信息各不相同,因此,從機回傳的數據段按各命令具體定義。
3、 校驗和
校驗和 = D0 xorD1 xor D2 xor D3 xor D4 xor D5;
xor --- 邏輯異或。
4、結束標志
結束標志 =0AAH; (十進制170)
0)流量定義
數據段的D2、D1、D0三個字節組成十位流量計測量數據,每字節表示兩位十進制數的壓縮BCD碼格式。D2、D1、D0需要先規格化為十進制格式,具體算法如下:
D0= ( D0 >> 4) *10 + (D0 & 0x0F)
D1= ( D1 >> 4) *10 + (D1 & 0x0F)
D2= ( D2 >> 4) *10 + (D2 & 0x0F)
流量值 = 10000 *D2 + 100 * D1 + D0;
其中符號 >> 為C語言中的邏輯右移操作。
D3字節:流量值的指數(10的冪)
冪值 = D3 – 5, 冪值范圍: -5 – +5
D4字節:流量單位
D4 | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 |
單位 | m3/s | m3/min | m3/h | m3/d | L/s | L/min | L/h | L/d |
D4 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 |
單位 | t/s | t/min | t/h | t/d | kg/s | kg/min | kg/h | kg/d |
D5字節:流體流動方向:
位 | B6…….B1 | B0 |
定義 | 保留 | 0---正向; 1---反向 |
1) 流速定義
D2、D1、D0需要先規格化為十進制格式,具體如下:
D0= ( D0 >> 4) *10 + (D0 & 0x0F)
D1= ( D1 >> 4) *10 + (D1 & 0x0F)
D2= ( D2 >> 4) *10 + (D2 & 0x0F)
其中符號 >> 為C語言中的邏輯右移操作。
流速值 = 10000 * D2 + 100 * D1 + D0;
值范圍 = 00.000 ~ 99.999
流速單位:固定為m/s
D3字節:小信號切除標志;0 --- 允許; 1--- 禁止。
D4字節:流量值顯示精度(保留小數點后位數)(固定值3)
D5字節:流動方向;0 --- 正向、1 --- 反向;
2) 流量百分比定義
D1、D0需要先規格化為十進制格式,具體如下:
D0= ( D0 >> 4) *10 + (D0 & 0x0F)
D1= ( D1 >> 4) *10 + (D1 & 0x0F)
其中符號 >> 為C語言中的邏輯右移操作。
百分比 = 100 * D1 + D0;
值范圍 = 000.0 ~ 999.9 %
D2字節:量程比
0- 1:1
1- 1:2
2- 1:4
3- 1:8
D3字節:上限報警允許
0- 允許
1- 禁止
D4字節:下限報警允許
0- 允許
1- 禁止
D5字節:流動方向;0 --- 正向、1 --- 反向;
3) 流體電阻
D1、D0需要先規格化為十進制格式,具體如下:
D0= ( D0 >> 4) *10 + (D0 & 0x0F)
D1= ( D1 >> 4) *10 + (D1 & 0x0F)
其中符號 >> 為C語言中的邏輯右移操作。
電阻 = 100 * D1 +D0;
值范圍 = 0000 ~ 999.9 KW
D2字節:保留
D3字節:保留
D4字節:空管報警允許
0- 允許
1- 禁止
D5字節:流動方向;0 --- 正向、1 --- 反向;
4)正向總量定義
D4、D3、D2、D1、D0需要先將壓縮BCD碼規格化為十進制格式,具體如下:
D4= ( D4 >> 4) *10 + (D4 & 0x0F)
D3= ( D3 >> 4) *10 + (D3 & 0x0F)
D2= ( D2 >> 4) *10 + (D2 & 0x0F)
D1 = ( D1 >> 4) *10 + (D1 & 0x0F)
D0= ( D0 >> 4) *10 + (D0 & 0x0F)
其中符號 >> 為C語言中的邏輯右移操作。
總量 =100000000 * D4 + 1000000 * D3 + 10000 * D2 + 100 * D1 + D0;
D5字節:
D5 | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 |
單位 | 0.001L | 0.01L | 0.1L | 1L | 0.001m3 | 0.01m3 | 0.1m3 | 1m3 |
D5 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 |
單位 | 0.001kg | 0.01kg | 0.1kg | 1kg | 0.001t | 0.01t | 0.1t | 1t |
5)反向總量定義
D4、D3、D2、D1、D0需要先將壓縮BCD碼規格化為十進制格式,具體如下:
D4= ( D4 >> 4) *10 + (D4 & 0x0F)
D3= ( D3 >> 4) *10 + (D3 & 0x0F)
D2= ( D2 >> 4) *10 + (D2 & 0x0F)
D1 = ( D1 >> 4) *10 + (D1 & 0x0F)
D0= ( D0 >> 4) *10 + (D0 & 0x0F)
其中符號 >> 為C語言中的邏輯右移操作。
總量 =100000000 * D4 + 1000000 * D3 + 10000 * D2 + 100 * D1 + D0;
D5字節:
D5 | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | ||||||||
單位 | 0.001L | 0.01L | 0.1L | 1L | 0.001m3 | 0.01m3 | 0.1m3 | 1m3 | ||||||||
D5 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | ||||||||
單位 | 0.001kg | 0.01kg | 0.1kg | 1kg | 0.001t | 0.01t | 0.1t | 1t | ||||||||
6) 報警狀態定義
D0字節:
位定義:Bx =0 無警狀態;Bx = 1報警狀態;
ALAM位 | B0 | B1 | B2 | B3 | B4 |
報警定義 | 保留 | 勵磁報警 | 電極報警 | 空管報警 | 上限報警 |
ALAM位 | B5 | B6 | B7 | B8 | B9 |
報警定義 | 下限報警 | 保留 | 保留 | 保留 | 保留 |
7)流量計管徑定義
D0字節定義管徑 (單位mm)
D0數值 | 代表管徑 | D0數值 | 代表管徑 | D0數值 | 代表管徑 |
00 | 3 | 15 | 200 | 30 | 1400 |
01 | 6 | 16 | 250 | 31 | 1600 |
02 | 8 | 17 | 300 | 32 | 1800 |
03 | 10 | 18 | 350 | 33 | 2000 |
04 | 15 | 19 | 400 | 34 | 2200 |
05 | 20 | 20 | 450 | 35 | 2400 |
06 | 25 | 21 | 500 | 36 | 2600 |
07 | 32 | 22 | 600 | 37 | 2800 |
08 | 40 | 23 | 700 | 38 | 3000 |
09 | 50 | 24 | 800 | ||
10 | 65 | 25 | 900 | ||
11 | 80 | 26 | 1000 | ||
12 | 100 | 27 | 1100 | ||
13 | 125 | 28 | 1200 | ||
14 | 150 | 29 | 1300 |
14)禁止總量累積
從機接到連續6個該命令后,立即進入參數設置狀態。
六、 MBmagCP V4.2通訊過程時序
通訊過程時序指編制通訊軟件時應遵從的時間間隔、延時、等待時間等。
1. 主機發送時序
主機發送的兩個信息字節間的時間間隔小為0,大時間間隔為20毫秒,大于20毫秒,從機認為發送超時。
2. 從機回傳時序
從機小回傳響應時間為1毫秒,大為10毫秒 + 11位傳送時間。
從機每個回傳字節時間間隔大為10毫秒 + 11位傳送時間。
(11位傳送時間根據選用波特率計算出)
3. 從機允許的通訊頻度
從機允許的通訊頻度為10次/每秒,大于該值,可能影響從機其他功能。
七、 MBmagCP V4.2通訊波特率
MBmagCP V4.2支持的通訊波特率為:600、1200、2400、4800、9600、14400。
八、 MBmagCP V4.2通訊數據塊偵錯信息
1.從機地址和數據分類命令回傳,主機可用于校對從機是否正確響應;
2.從機回傳字節異或和校驗,主機可用于校對是否有數據位錯誤;
3.從機回傳字節中B7 = 0為數據字節,B7 = 1為命令字節;
4.從機回傳字節中的數據字節值不大于153(十六進制數99);
5.從機回傳字節數長度固定,共十字節長度,主機可做長度檢驗;
6.從機回傳結束標志,主機可用于長度檢驗和數據字節定位。
相關產品
免責聲明
- 凡本網注明“來源:化工儀器網”的所有作品,均為浙江興旺寶明通網絡有限公司-化工儀器網合法擁有版權或有權使用的作品,未經本網授權不得轉載、摘編或利用其它方式使用上述作品。已經本網授權使用作品的,應在授權范圍內使用,并注明“來源:化工儀器網”。違反上述聲明者,本網將追究其相關法律責任。
- 本網轉載并注明自其他來源(非化工儀器網)的作品,目的在于傳遞更多信息,并不代表本網贊同其觀點和對其真實性負責,不承擔此類作品侵權行為的直接責任及連帶責任。其他媒體、網站或個人從本網轉載時,必須保留本網注明的作品第一來源,并自負版權等法律責任。
- 如涉及作品內容、版權等問題,請在作品發表之日起一周內與本網聯系,否則視為放棄相關權利。