基于MODBUS_RTU協議的HK-CMF質量流量計通信軟件的開發
摘 要:結合自行開發的通信軟件,簡要介紹了羅斯蒙特HK-CMF質量流量計的MODBUS協議及幀格式,通過RS485接口,用VB6.0實現了基于MODBUS_RTU協議的HK-CMF質量流量計通信軟件的開發。
關鍵字:MODBUS RTU RS485 VB6.0
1.概述
HK-CMF質量流量計以其性能可靠、準確度高、具有通信接口等特點,作為過程或貿易結算儀表,已在企業大量使用。隨著計算機技術的發展和企業局域網絡的建立,利用計算機作為上位機和多臺HK-CMF質量流量計進行通信,繼而送入以太網絡,已是企業計量數據管理的發展趨勢。目前,科氏HK-CMF質量流量計提供了瞬時流量、總量、溫度、密度等信息,這些數據的讀取往往靠人工抄表、記錄,存在著費時、費工和易出錯的缺點,為此,我們以VB6.0作為開發工具,用計算機作為上位機,成功實現了科氏HK-CMF質量流量計的計算機自動數據采集和管理。
2. 通訊接口
HK-CMF質量流量計可以采用三種方式輸出信號:
2.1 傳統4~20mA模擬信號和脈沖信號輸出接口,其檢測輸出的信號是一個單一的值,不能滿足多信號輸出的要求。
2.2 基于標準HART協議(以4~20mA模擬信號輸出接口作為物理層)的數字信號輸出,可以傳輸多個信號(瞬時流量、總量、溫度、密度等)。
2.3 以RS485作為物理層基于HART協議的數字信號輸出,可以傳輸多個信號。
2.4 的數字信號輸出,可以傳輸多個信號,分為RTU和ASCII方式。
本文采用第四種方式,以RS485作為物理層基于MODBUS_RTU協議進行計算機與流量計的通訊。
根據RS485電氣規定,在兩線制傳輸方式下,RS—485驅動器可帶32個接收器,實現多半點雙工通訊,波特率9600BPS時通訊距離可達在1200m時。如圖1所示PC機通過RS232接口,經RS232/RS485轉換模塊與多臺流量計儀表相連接,一條總線上最多可接32臺,每臺儀表被賦予各自的通訊地址碼用以識別身份,這樣上位PC機能通過RS485總線對掛在總線上的每個儀表進行通訊。實現對流量計的遠程數據采集與監控。
3. Modbus協議簡介
Modbus協議是應用于電子控制器上的一種通用語言。通過此協議,控制器相互之間、控制器經由網絡(例如以太網)和其它設備之間可以通信。它已經成為一通用工業標準。
3.1 MODBUS消息幀控制器通信使用主從技術,即僅一設備(主設備)能初始化傳輸(查詢)。其它設備(從設備)根據主設備查詢提供的數據作出相應反應。
主設備可單獨和從設備通信,也能以廣播方式和所有從設備通信。如果單獨通信,從設備返回一消息作為回應,如果是以廣播方式查詢的,則不作任何回應。Modbus協議建立了主設備查詢的格式:設備(或廣播)地址、功能代碼、所有要發送的數據、一錯誤檢測域。
3.2 兩種傳輸方式控制器能設置為兩種傳輸模式(ASCII或RTU)中的任何一種在標準的Modbus網絡通信。本文采用RTU傳輸模式。
使用ASCII模式,消息以冒號(:)字符(ASCII碼3AH)開始,以回車換行符結束(ASCII碼(0DH,0AH)。其它域可以使用的傳輸字符是十六進制的…9,A…F。網絡上的設備不斷偵測“:”字符,當有一個冒號接收到時,每個設備都解碼下個域(地址域)來判斷是否發給自己的。
使用RTU模式,消息發送至少要以3.5個字符時間的停頓間隔開始。在網絡波特率下多樣的字符時間,這是最容易實現的(如下圖的T1-T2-T3-T4所示)。傳輸的第一個域是設備地址。可以使用的傳輸字符是十六進制的0…9,A…F。網絡設備不斷偵測網絡總線,包括停頓間隔時間內。當第一個域(地址域)接收到,每個設備都進行解碼以判斷是否發往自己的。在最后一個傳輸字符之后,一個至少3.5個字符時間的停頓標定了消息的結束。一個新的消息可在此停頓后開始。
3.3 錯誤檢測方法標準的Modbus串行網絡采用兩種錯誤檢測方法。奇偶校驗對每個字符都可用,幀檢測(LRC或CRC)應用于整個消息。它們都是在消息發送前由主設備產生的,從設備在接收過程中檢測每個字符和整個消息幀。
本文采使用的RTU傳輸模式采用CRC校驗,消息包括了一基于CRC方法的錯誤檢測域。CRC域檢測了整個消息的內容。CRC域是兩個字節,包含一16位的二進制值。它由傳輸設備計算后加入到消息中。接收設備重新計算收到消息的CRC,并與接收到的CRC域中的值比較,如果兩值不同,則有誤。CRC是先調入一值是全“1”的16位寄存器,然后調用一過程將消息中連續的8位字節各當前寄存器中的值進行處理。僅每個字符中的8Bit數據對CRC有效,起始位和停止位以及奇偶校驗位均無效。
CRC-16錯誤校驗程序如下:報文被看作是一個連續的二進制,其最高有效位(MSB)首選發送。報文先與X↑16相乘(左移16位),然后看X↑16+X↑15+X↑2+1除,X↑16+X↑15+X↑2+1可以表示為二進制數11000000000000101。整數商位忽略不記,16位余數加入該報文(MSB先發送),成為2個CRC校驗字節。余數中的1全部初始化,以免所有的零成為一條報文被接收。經上述處理而含有CRC字節的報文,若無錯誤,到接收設備后再被同一多項式(X↑16+X↑15+X↑2+1)除,會得到一個零余數(接收設備核驗這個CRC字節,并將其與被傳送的CRC比較)。全部運算以2為模(無進位)。
4. 軟件實現
現在的工控系統一般都要求友好的人機界面,即能夠將現場的實時生產數據直觀地顯示在計算機屏幕上。但計算機的標準配置中通常只有RS-232通信接口,開發人員可以通過它編寫程序來定義通訊數據格式,完成對數據的打包及錯誤校驗并最終實現數據的傳輸。許多編程語言都提供標準編程控件實現對RS-232的數據通訊。我們選用實用方便的VB6.0來完成對實時采集12臺科氏HK-CMF質量流量計RFT9739)的瞬時質量流量、瞬時體積流量、累計質量流量、累積體積流量、密度、溫度等6個參數。編程中利用了MSComm控件。
4.1 通訊參數設置
4.1.1 流量計通訊參數設置流量計需要設置的通訊參數為:地址,通訊波特率、奇偶校驗、數據位數、停止位位數,通訊協議(ASCII/RTU/HART)。
RFT9739流量計的出廠默認設置為:9600,odd,8,1,RTU,地址為1。
所有流量計的通訊波特率、奇偶校驗、數據位數、停止位位數、通訊協議的設置必須相同。參數設置方法:
①流量計鍵盤(旋鈕);②專用軟件Prolink;③第三方軟件(組態軟件);④自編軟件
如果采用自編軟件進行參數設置,由于流量計的默認地址都為1,所以可以通過廣播方式統一對所有的流量計進行相同的參數設置(地址除外)。然后對流量計地址進行單個設置(相互連線必須斷開)。
4.1.2 計算機通訊參數設置計算機的通訊波特率、奇偶校驗、數據位數、停止位位數、通訊協議必須與流量計一致。
設置好通訊端口。端口主要參數有端口代號,即串口號,常見的有微機標準配置1和2,其他的號則是由PCI或USB接口轉換來的。RTU模式下每個字節包含兩個4Bit的十六進制字符,所以輸入模式一定要選1,如果選0,程序會按每個字節包含1個8Bit的十六進制ASCⅡ字符來處理,將得不到想要的返回結果。再一個需要設置的是端口的波特率,要保證和從機一致。使用串口取電的RS-232/RS-485轉接卡時還要注意,部分轉接卡可能從串口4腳和7腳取電,此時注意設置DTREnable、RTSEnable為True。其他不用設置,取默認值即可。
4.2 數據幀的編碼與解碼RFT9739流量計瞬時質量流量、瞬時體積流量、累計質量流量、累積體積流量、密度、溫度等6個參數的寄存器地址映射關系如圖4所示,247-262寄存器分別存放了瞬時質量流量、密度、溫度、瞬時體積流量、壓力、累計質量流量、累積體積流量等7個參數,每個參數占用2個寄存器。按照消息幀的格式要求進行編碼,采用3號功能連續讀取14個寄存器。
編碼后的數據幀通過串口發送給流量計,流量計接收到查詢信息后,返回相應的回應數據幀,計算機接收到回應數據幀后,進行解碼。
每個參數為4字節IEEE574標準浮點數(占用2個寄存器),4個字節與浮點數的具體轉換關系和協議本身無關。RFT9739流量計浮點數的4個字節排列順序與寄存器521有關,如圖5所示,寄存器521默認值為1,對應的順序為2-3-0-1(IEEE574標準的順序為0-1-2-3),可以通過改變寄存器521的值來改變順序。
5. 結束語
用VB6.0實現了基于MODBUS_RTU協議的計算機與流量計之間的通信,可以充分發揮現代可視化語言的優點,充分滿足用戶的需求,編程快捷、方便、人機界面豐富。據此開發出的一些功能是原PROLINK軟件所沒有的,目前已在幾個油庫成品油公路外運定量裝車控制系統中應用,由計算機實現裝車作業控制,將現場裝車情況匯總到控制室由計算機集中監控、管理、顯示、打印各類裝車報表。
- 上一篇:介紹2008版《科里奧利質量流量計》檢定規程 2015/12/31
- 下一篇:Modbus協議在質量流量計組態軟件中的應用 2015/12/29
