劉征宇,陳允鋒,陳夢英
?
基于Modbus協議的聲學多普勒流速剖面儀軟件實現
劉征宇1,陳允鋒1,陳夢英2
(1. 海軍駐上海地區水聲導航軍事代表室,上海201108;2. 中國科學院聲學研究所東海研究站,上海200032)
為了配合各地水情中心或預警預報系統的建設,研制了一款多普勒測流剖面儀,它具有真實反映流場,并且一次可以測量一個剖面上的若干層水流速度等優點。首先對這款多普勒測流剖面儀的系統功能進行了描述,結合Modbus協議特點,給出了本系統的讀寫數據的Modbus通信實例;在TI的OMAPL137硬件和嵌入式Linux操作系統的基礎上,給出了實現Modbus RTU協議從站的設計方案;通過將從站采集到的水流速度傳輸至主站實時顯示驗證了該方案。實驗證明該方案有效地實現了多普勒流速剖面儀在水利系統的現場數據傳輸。
多普勒流速剖面儀;Modbus協議;RTU傳輸模式;嵌入式Linux
聲學多普勒流速剖面儀(Acoustic Doppler Current Profilers, ADCP),是20世紀80年代初發展起來的一種新型測流設備。它根據多普勒原理,應用矢量合成法,遙測流速的垂直剖面分布,對流場不產生任何擾動,不存在機械慣性和機械磨損,可以真實反映流場,并且一次可以測量一個剖面上若干層水流速度的三維分量和絕對方向。由于ADCP具有諸多優點,所以它的出現立即引起了海洋界的高度重視。近年來ADCP測流技術發展很快,產品具有多種頻率,多種規格,多種測量方式[1]。本文介紹的一款ADCP測流及遙測系統,可以配合水情中心或預警預報系統的建設,使得流速、流量的實時監測數據的超遠程傳輸成為可能,便于有關部門更為及時、多層面地了解水文情勢并作出數據的及時處理和分析。
隨著現代工業的發展,如今的工業控制已從單機控制走向集散控制、集中控制、集中監控和網絡集約管理的時代,而工業控制器聯網也為網絡管理提供了方便。Modbus協議是一種通用通信協議。通過該協議,控制器相互之間、控制器經由網絡和其它設備之間可以實現數據通信。有了它,控制設備可以連成工業網絡,進行集中監控,成為現代網絡式集中制造、管理的主流趨勢[2]。因此,研究基于Modbus協議的ADCP系統十分有必要。
結合現代水聲設備小型化的要求,該設備的處理器采用TI公司的新款雙核OMAPL137芯片[3]。設備是遵循Modbus協議的從機,與遠程終端控制系統(Remote Terminal Unit, RTU)進行串口通信。物理層采用了RS485串口通信標準。本文將首先介紹ADCP要實現的整體功能,再介紹如何通過Modbus協議與RTU主機進行通信,最后給出了從機設計實現流程圖。
本文研制的這款ADCP最大的特點是可以獨立工作,無人看守,并通過Modbus協議的方式進行遠距離控制和傳輸數據。ADCP的系統結構如圖1所示。它的核心處理器是一款具有ARM和DSP雙核的OMAPL137芯片。其中DSP核負責AD采集、信號處理,將流速計算結果傳給ARM核。而ARM核中安裝了嵌入式Linux操作系統,是整個設備的核心,它負責控制DSP運算,接收計算結果,數據保存以及與遠程監控主機進行Modbus通信等。
RTU主機通過Modbus協議控制ADCP,實現工作狀態切換、參數設置以及數據傳輸。該系統的工作狀態包括自動測量、單次測量、自檢、預布設和待機等。測量參數設置包括盲區大小、測量單元大小和個數以及測流范圍等;測量數據需要保存、傳輸與管理;另外,還可以設置系統時間。數據傳輸是指遠程監控主機通過發送讀取命令選擇讀取的層數和流速結果的形式,ADCP將流速數據結果上傳。具體功能框圖如圖2所示。
本節首先介紹Modbus通信協議的特點,結合協議的特殊性和ADCP的具體功能,設計了本設備的Modbus通信協議,并給出了讀取流速結果和同步系統時間的兩個通信實例。
2.1 Modbus通信協議特點
Modbus協議有ASCII和RTU兩種。RTU方式在同樣的波特率下可比ASCII方式傳送更多的數據,本文采用Modbus RTU傳輸方式[4]。
RTU模式下消息發送至少要以3.5個字符時間的停頓間隔開始。傳輸的第一個域是設備地址??梢允褂玫膫鬏斪址鞘M制的0...9, A...F。網絡設備不斷偵測網絡總線,包括停頓間隔時間內。當第一個域(地址域)接收到消息時,每個設備都進行解碼以判斷消息是否是發往自己的。在最后一個傳輸字符之后,一個至少3.5個字符時間的停頓標定了消息的結束。一個新的消息可在此停頓后開始。
2.2 ADCP的通信協議設計
表1給出了Modbus RTU幀格式。其中起始位和結束符代表與前后幀的間隔不小于3.5個字符;CRC(Cyclic Redundancy Check, 循環冗余校驗)是校驗碼。

表1 RTU幀格式
表1中設備地址是通訊傳送的第一個字節。這個字節表示由用戶設定地址碼的從機將接收由主機發送來的消息。每個從機都有唯一的地址碼,并且響應均以各自的地址碼開始。即主機發送的地址碼表明將發送到的從機地址,而從機發送的地址碼表明回送的從機地址。
功能碼是通訊傳送的第二個字節。本設備使用了其中的兩個功能碼:讀取碼03H和寫命令碼10H。作為主機請求發送,通過功能碼告訴從機執行什么動作。作為從機響應,從機發送的功能碼與從主機發送來的功能碼一樣,并表明從機已響應主機進行操作。
數據域是可變長的字段,具體格式和功能碼密切相關。表2給出了ADCP的部分RTU幀格式中數據域的定義。其中各寄存器首址是參數命令的起始地址,寄存器個數表示該參數所占字節數,即字節數等于寄存器個數乘以2。

表2 ADCP關于RTU幀格式的數據域定義
2.3 讀取ADCP流速結果實例
多個寄存器數據讀取使用03H(讀取保持寄存器)功能碼。數據讀取時可以單獨讀取某一參數,也可以讀多個連續地址的參數??梢酝ㄟ^0x03命令讀取設備參數、測量數據等值。具體格式定義如下:
主機發送幀:[儀表地址] [功能碼03] [寄存器起始地址高字節] [寄存器起始地址低字節] [讀取的寄存器數高字節] [讀取的寄存器數低字節] [CRC高字節] [CRC低字節]。
從機接收數據幀后進行分析判斷,如數據有效則向主機發送相應幀,如無效則返回錯誤回應幀。
從機響應幀:[儀表地址] [功能碼03] [返回的字節個數][數據1][數據2]...[數據n][CRC高字節] [CRC低字節]。其中,返回的字節個數是讀取的寄存器數的2倍。
錯誤回應幀:[設備地址] [功能碼+0x80] [錯誤碼] [CRC高字節] [CRC低字節]。錯誤碼:0x01表示無效功能,0x02表示無效寄存器地址,0x03表示無效的數據。
下面給出讀取第一層流速數據的實例。RTU主機發送幀格式如表3所示,數據域中包括寄存器首址和寄存器個數,分別代表要讀取的第一層流速存儲地址和寄存器個數。ADCP響應幀格式如表4所示,數據域中數據字節數表示返回數據大小,數據1表示第一層X方向流速,數據2表示第一層Y方向流速。

表3 主機發送幀格式(功能碼03H)

表4 ADCP響應幀格式(功能碼03H)
2.4 同步ADCP系統時間實例
使用10H命令,每次允許寫一個或多個寄存器的值,設置多個寄存器時,設置的寄存器地址必須是連續的。可以通過10H命令設置設備參數,同步時間等。具體格式定義如下:
主機發送幀:[儀表地址] [功能碼10] [寄存器起始地址高字節] [寄存器起始地址低字節] [需寫的寄存器數高字節] [需寫的寄存器數低字節] [要寫的數據總的字節數] [數據1][數據2]...[數據n] [CRC高字節] [CRC低字節]。
從機接收數據幀后進行分析判斷,如數據有效向主機發送相應幀,如無效則返回錯誤回應幀。
從機響應幀:[儀表地址] [功能碼10] [寄存器起始地址高字節] [寄存器起始地址低字節] [寄存器數高字節] [寄存器數低字節] [CRC高字節] [CRC低字節]。
錯誤回應幀:[儀表地址] [功能碼+0x80] [錯誤碼] [CRC高字節] [CRC低字節]。錯誤碼:0x01表示無效功能,0x02表示無效寄存器地址,0x03表示無效的數據。
下面給出RTU主機對ADCP設備進行時間同步的實例。主機發送幀如表5所示,數據域給出了需要寫入的時間,13年10月16日13時17分19秒,當ADCP收到該幀,將立即修改系統時間,并回復響應幀如表6所示。

表5 主機發送幀格式(功能碼10H)

表6 從機響應幀格式(功能碼10H)
ADCP作為整個水情預報系統的一個觀測節點,是Modbus RTU從機,主要實現消息幀的接收和存儲,并根據接收到的消息幀執行相應的行為,將響應幀反饋給主設備[5]。下面對本設備接收幀的超時檢測和接收幀處理流程分別進行闡述。
3.1 Modbus幀的超時檢測
ADCP通過超時檢測的方法來判斷每個幀的開始和結束。當串口接收到第一個字元時,精確的Linux系統計時器開始計時,若在3.5個字符時間內還沒有新的字元到達,則認為接收到一個Modbus協議RTU模式的消息幀,于是調用接收幀處理程序工作。其中3.5個字符所需時間與串口波特率有關。當波特率為9600時,對應時間為3.5*11/9600=4 ms。超時檢測軟件流程圖如圖3所示。
3.2 Modbus RTU從機接收幀處理流程
當ADCP通過超時檢測程序檢測出一幀信號后,進入接收幀處理流程,流程圖如圖4所示。Modbus RTU從機對收到的數據進行分析,如果地址位是本機地址的話,證明此次接收的數據是發送給本機的符合Modbus協議RTU模式的數據,則對接收的數據進行CRC校驗。如果數據能夠通過CRC校驗,則證明此次接收的數據是一個完整的消息幀,可以對功能碼、寄存器地址、數據進行判斷,完成數據讀取、數據分析及數據處理的過程,并反饋響應幀給主機。其中執行功能操作主要是完成以下幾點:解析消息幀,讀取功能代碼,跳轉執行相應操作,并構造響應幀,將響應幀反饋至RTU主機。如果是錯誤信息,則根據錯誤碼構造錯誤回應幀,并將含有錯誤碼的消息幀發送給RTU主機。
本系統在RTU傳輸模式下與主站進行了數據通信,測試結果正確無誤,能夠成功地完成Modbus通信中對數據的采集、處理和控制操作等要求。
本文設計的這款多普勒流速剖面儀,采用Modbus協議的RS485總線進行通信傳輸,上位機控制中心實現遠程實時監控。測試結果表明,本系統工作穩定、可靠性強、操作方便。另外,該ADCP還可以多臺設備組網,這樣使得遠程監控各地區的水文情勢成為可能。本文設計軟件不僅僅針對水文監控,只需要對系統進行較少的改動就能很好地適用于對大型設備進行通信的要求,具有很強的技術適應性。
[1] 朱昊. 嵌入式數字ADCP信號處理系統的研究[D]. 天津: 天津大學工學碩士論文, 2003: 2-6.
ZHU Hao. Study on embedded signal processing system of digital ADCP[D]. Tianjin: The Degree of Master of Tian Jin University, 2003: 2-6.
[2] 王軍霞, 趙金龍, 程秀竹. MODBUS RTU通訊協議在S7-200 PLC中的應用[J]. 系統集成與工程應用, 2013, 144(4): 53-55.
WANG Junxia, ZHAO Jinlong, CHENG Xiuzhu. Application of Modbus RTU communication protocol in S7-200 PLC[J]. System Integration and Engineering Application, 2013, 144(4): 53-55.
[3] Texas Instruments. OMAP-L137 Low power applications processor data sheet[Z]. SPRS563C, 2009.12.
[4] 翁建年, 史春華, 張浩. 基于ARM7微處理器的Modbus通信協議的實現[J]. 機電一體化, 2009, 13(6): 69-83.
WENG Jiannian, SHI Chunhua, ZHANG Hao. Based on ARM7 realization of Modbus communication protocol[J]. Mechanical and Electrical Integration, 2009, 13(6): 69-83.
[5] 張桂, 金國強, 李輝. 基于ARM平臺Modbus RTU協議的研究與實現[J]. 電力科學與工程, 2011, 27(1): 23-27.
ZHANG Gui, JIN Guoqiang, LI Hui. Research and implementation of Modbus RTU protocol based on ARM[J]. Electric Power Science and Engineering Power Science and Engineering, 2011, 27(1): 23-27.
Implementation of acoustic Doppler profilers based on Modbus protocol
LIU Zheng-yu1, CHEN Yun-feng1, CHEN Meng-ying2
(1. Military Representatives Office of Underwater Sound & Navigation System in Shanghai Area, Shanghai 201108, China;2. Shanghai Acoustic Laboratory, Institute of Acoustics, Chinese Academy of Sciences, Shanghai, 200032, China)
In order to fit the construction of hydrologic information center or the early warning and forecasting system, an acoustic Doppler current profiler is developed, it can truly reflect the flow field, and get a current profilers through once measurement. In this paper firstly the system function of Doppler current profiler is described; and then secondly, combining the characteristic of Modbus protocol, an example of sending and receiving data is presented. Based on the OMAPL137 hardware and the embedded Linux operating system, a scheme of implementing of Modbus RTU protocol is realized. The scheme is verified by communication experiments. The experimental results show that this method can effectively carry out data transmission for acoustic Doppler current Profiler in data transmission of hydraulic system.
Acoustic Doppler Current profilers; Modbus protocol; RTU transmission mode; Embedded Linux
TB556
A
1000-3630(2015)-03-0260-05
10.3969/j.issn1000-3630.2015.03.014
2015-03-01;
2015-06-03
劉征宇(1981-), 男, 安徽銅陵人, 工程師, 研究方向為數字信號處理。
陳夢英, E-mail: chen03051302@126.com