黃 皎 許曉娟 陸曉春 任 姣 劉海榮
(河海大學計算機與信息學院1,江蘇 常州 213022;江蘇省輸配電裝備技術重點實驗室2,江蘇 常州 213022)
電磁流量計是隨著電子技術的發展而迅速發展起來的新型流量測量儀表。由于不受溫度、黏度、壓力等物理參數的影響,因此電磁流量計具有管道中無任何阻力部件、節能效果顯著等諸多優點,受到了國內外眾多廠商的青睞,現已發展成為工業用四大流量計之一[1]。目前,現有的電磁流量計一般都是以單片機為核心控制器,采用點陣式液晶顯示,小容量EEPROM存儲數據,其測量精度、人機操作、信息存儲等方面均存在著一定的局限性,已不能滿足實際工業生產中流量測量與控制的需要。為此,本文提出一種基于ARM-Linux嵌入式開發平臺,使用MiniGUI開發環境進行圖形用戶界面(graphical user interface,GUI)設計。該設計提供了友好的人機界面、大量數據存儲與管理以及網絡通信等功能,實現了電磁流量計的智能化、信息化與網絡化。
電磁流量計的總體結構如圖1所示。流量計主要由流量測量單元、智能監控終端和遠程主機三部分組成。該儀表將嵌入式、數據庫、圖形開發和網絡等技術集成到傳統的電磁流量計中,構建了一個集流量測量、數據存儲與管理和遠程監控于一體的綜合系統。

圖1 電磁流量計的總體結構圖Fig.1 General structure of the electromagnetic flowmeter
流量測量單元包括激磁電路、流量信號處理電路和存儲器等模塊,主要完成對流量的高精度測量,并將處理后的數據信息通過Modbus總線傳輸到智能監控終端。智能監控終端運行基于LCD觸摸屏的現場監控軟件,并對整個電磁流量計系統進行現場實時監控,實現儀表參數設定、串口設置、流量和電勢標定等多種功能,且提供友好的人機界面、數據管理和網絡服務。遠程主機可以通過以太網登陸電磁流量計的遠程監控系統,進行流量信息的實時查看、數據查詢和用戶管理等操作。
電磁流量計智能監控終端的硬件系統以基于ARM11內核的S3C6410為核心處理器,包括電源模塊、存儲器模塊(64 MB~2 GB Nand Flash和128 MB SDRAM)、串行通信接口、10/100 Mbit/s以太網口和LCD液晶顯示屏等外圍接口。智能監控終端硬件結構如圖2所示。

圖2 智能監控終端硬件結構圖Fig.2 Hardware structure of the intelligent monitoring terminal
智能監控終端硬件設計主要包括控制模塊、存儲模塊和外圍接口模塊的設計。各模塊介紹如下。
①控制模塊采用S3C6410作為MCU。S3C6410是由Samsung公司生產的低功耗、高集成度的32位RISC微處理器,它提供豐富的外圍模塊,集成有獨立的16 kB指令緩存、16 kB數據緩存、LCD控制器、4通道 UART、2 通道 SPI和 1 通道 IIC 等功能[2-3],可以滿足電磁流量計智能監控終端所需性能要求。
②存儲模塊選用Samsung公司生產的Nand Flash芯片K9F1208U0M作為存儲器,用于保存啟動代碼、Linux鏡像文件、大容量程序和數據等;選用HYnix公司生產的SDRAM芯片HY57V561620BT-H運行程序、維護數據和堆棧區,其單片容量為32 MB。系統使用兩片HY57V561620BT-H構成32位、64 MB的SDRAM存儲器系統[4]。
③外圍接口模塊包含以太網接口、LCD液晶觸摸式顯示屏以及串行通信接口等。系統選用NEC公司生產的型號為NL2432HC22-22B的TFT真彩液晶屏作為顯示器,并在軟件上實現LCD的驅動。S3C6410沒有集成以太網控制器,所以系統外接了以太網控制器DM9000A,實現以太網接入。在電路設計時需要完成DM9000A與S3C6410總線的連接,以及網絡隔離變壓器PH163539和以太網水晶接頭RJ45的連接[5]。
電磁流量計智能監控終端的軟件系統主要由4部分組成:硬件平臺、嵌入式操作系統、設備驅動層和應用軟件層。系統的軟件設計主要包括嵌入式開發平臺的建立和應用軟件的設計,其軟件結構如圖3所示。

圖3 智能監控終端軟件結構圖Fig.3 Software structure of the intelligent monitoring terminal
系統選用嵌入式Linux操作系統作為智能監控終端的軟件開發平臺,選用MiniGUI作為圖形用戶界面開發環境。嵌入式Linux操作系統源碼開放,可移植性好,可以根據用戶的需要進行相應的裁剪、定制,且具有強大的網絡通信功能[6]。MiniGUI具有可伸縮性強、占用資源少、可配置性和支持多種嵌入式操作系統等特點,為嵌入式Linux系統提供了完整的圖形系統支持。MiniGUI的運行需要一些動態鏈接庫的支持,系統移植的庫文件主要有:Zlib庫、PNG庫、JPEG庫。要在目標板上運行MiniGUI for Linux應用程序,首先要使用PC宿主機對MiniGUI的源代碼進行交叉編譯,生成MiniGUI靜態鏈接庫文件;然后MiniGUI應用程序在宿主機上進行交叉編譯,并且與MiniGUI靜態鏈接庫和POSIX線程庫鏈接生成*.axf映象文件或*.bin二進制文件;最后將MiniGUI應用程序下載到目標板并運行[7]。
3.2.1 數據管理模塊設計
系統采用SQLite數據庫對測量數據和報警等記錄進行存儲和管理。SQLite是Hipp D R于2000年開發的一款輕型C庫實現的關系數據庫,其設計目標就是為嵌入式系統服務,而且源代碼是完全公開的[8]。SQLite數據庫提供的API函數有多個,系統使用到的函數有sqlite3_open()、sqlite3_exec()、sqlite3_get_table()、sqlite3_close()。當用戶需要存儲和管理流量信息時,只需構造對應的SQL語句即可。數據庫編程如下。

3.2.2 用戶界面操作模塊設計
在MniGUI開發的人機交互界面中,用戶可以通過操作觸摸屏操控儀表。主界面的菜單欄中包含了登錄管理、參數設置、數據管理、儀表標定、幫助和退出六個選項,每個選項又包含若干子選項。用戶點擊相應的彈出式菜單按鈕,可進入相應的子窗口執行操作。主菜單頁面中還顯示當前的流量信息,包括流量、流速、百分比和空管比等測量值以及當前儀表報警情況。
3.2.3 串行通信模塊設計
系統采用Modbus的RTU模式進行信息傳輸,Modbus規定RTU模式中有效功能碼范圍為1~255,設計選擇67~71作為智能監控終端(主機)請求功能碼,196~199作為流量測量單元(從機)回應功能碼。
智能監控終端啟動后,首先向從機發送功能碼為67的請求幀,獲取流量測量單元的儀表參數,然后調用check_setting(),比對消息幀的參數和智能監控終端的參數。比對相同時,系統采用流量測量單元的參數,否則,重新發送功能碼。監控程序正常運行時,根據設定的時間間隔向流量測量單元發送流量數據和報警數據請求幀,如果在設定的通信時間內沒有響應,則通信超時,主機重新發送請求幀。當用戶在智能監控終端通過GUI完成儀表的參數設定或標定設置后,智能監控終端發送功能碼為70或71的消息幀,把參數發送到流量測量單元,監控程序按設定的時間間隔讀取串口數據,并調用analysis_data()解析從機的應答消息幀。解析時,先獲得從機地址,然后判斷功能碼并采取不同的處理措施。解析流程圖如圖4所示。

圖4 解析函數的程序流程圖Fig.4 Program flowchart of analytic functions
3.2.4 網絡服務模塊的設計
在Linux下進行網絡通信可以通過調用Linux內置的TCP/IP協議提供的Socket套接字接口函數來實現,常見的Socket主要有三種類型:流式Socket、數據報Socket、原始 Socket。本系統選用流式 Socket,即采用C/S模式,將智能監控終端構建成通信服務器,以響應監控軟件的連接請求和操作。監控軟件利用C++Builder6為開發平臺,在通信中作為客戶端發起連接請求,監控電磁流量計的運行狀態。
系統運行后,主進程首先新建一個子進程,隨后主進程運行MiniGUI的圖形界面應用程序,由該子進程運行Socket通信服務器程序。為了支持多個客戶端同時訪問本服務器,系統采用多進程技術,每接收到一個連接請求,系統即創建一個新的子進程,由該進程負責與客戶端的通信。Socket通信服務器有關代碼如下。


本文結合嵌入式、數據庫、網絡和圖形開發等技術,設計了一種基于嵌入式技術的電磁流量計智能監控終端。系統以高性能的S3C6410為核心處理器,以嵌入式Linux操作系統為軟件開發平臺,具有可靠性高、人機界面友好、網絡功能強大等特點,彌補了傳統電磁流量計監控終端設計存在的局限性。目前,該系統已進入產品測試階段,試驗結果表明,監控終端運行穩定、可靠,滿足了企業的需求,具有一定的實用價值和推廣價值。
[1]張學慶.流量測量的意義及流量傳感器的現狀[J].石油化工自動化,2005(5):99 -101.
[2]廖煥柱,方康玲,曹晶.基于S3C6410和WinCE6.0的12導聯心電圖機設計[J].計算機應用,2010,30(1):331 -333.
[3]馮川放.基于ARM11的礦用大容量組合開關控制系統的設計[J].長春工程學院學報,2010,11(1):41 -44.
[4]張明亮,黃靜,張波.基于嵌入式技術的水質分析儀的研究[J].工業控制計算機,2010,23(7):112 -113.
[5]唐娜.基于TMS320F2812和DM9000A以太網接口設計[J].計量與測試技術,2010,37(11):14 -16.
[6]冼進.嵌入式Linux應用開發詳解[M].北京:電子工業出版社,2007.
[7]鄭端健,郭磊,魏世民.MiniGUI圖形庫在嵌入式Linux平臺上的移植與實現[J].儀表技術,2008(10):10 -14.
[8]黃布毅,張曉華.基于ARM-Linux的SQLite嵌入式數據庫技術[J].單片機與嵌入式系統應用,2005,30(4):21-24.
[9]黃皎,劉修峰,陸曉春,等.嵌入式智能磷酸根分析儀的設計[J].自動化儀表,2011,32(1):73-75.