|
摘 要:設汁了基於ARM的智能電表和空調係統參數的多數據監測係統。係統由硬件和軟件兩部分組成,硬件采用博創公司的嵌入式微控製器PXA270平台,軟件使用了Modbus協議讀取智能電表和空調端監測數據,上位機利用Linux Socket『艤]絡編程和c#編程實現監測。該係統比傳統的數據{ 測係統具有更好的安全性和實時性,同時硬件的體積更小,功耗更低,擴展性更慢。
0 引 言
在實際工業控製應用中,經常需要對現場的智能電表、空調等多種設備進行監測,通過采集相應設備的運行參數隨時了解、跟蹤設備運行狀態 ,進而進行分析和診斷。結合具體項目,本文設計了一種基於嵌入式係統ARM 的多數據監測係統,係統以嵌入式Linux和博創公司的嵌入式微控製器PXA270為核心平台,通過將RS一485采集的數據轉換成符合RS一232標準的數據,保存在嵌入式微處理器的Flash中,經過網絡傳輸將數據傳給E位機,完成對電表、空調的監測任務。整個係統建立在嵌入式結構上,具有更好的實時性和穩定性,同時硬件的體積更小,功耗更低,擴展性更強。
1 係統硬件設計
1.1 係統總體設計方案 係統的總體設計思想是通過RS一232/485轉換器將RS一485采集的電表參數、空調參數轉換成符合RS一232標準的數據,保存在嵌入式微處理器Flash中,經Linux Socket網絡編程,采用TCP協議和上位機建立網絡連接,將數據文件發送給上位機,上位機運用C#語言編程實現監測數據的實時顯示,同時建立數據庫保存監測數據,從而完成對電表、空調數據的監測任務。其中Rs一485對電表、空調參數的讀取是通過Modbus協議發送相關的指令實現的。 1.2 係統硬件電路 該設計主要硬件電路包括數據采集模塊、PXA270處理器、外圍接口電路、電源及複位電路等幾個部分。係統總體結構如圖1所示。

ARM 處理係統采用博創公司的Xscale PXA270處理器,其主頻為520 MHz,加入了Intel SpeedStep動態電源管理技術,在保證CPU性能的情況下可最大限度地降低設備功耗,采用網絡接口實現了數據信息的網絡化管理。操作係統采用Linux,使用的是Linux 2.6.9內核。係統的根文件采用針對Flash無緩衝機製的JFFS2文件係統。
為了利用PC上現有的RS一232接口,通常使用RS一232/485轉換器。該轉換器一般通過邏輯門電路控製RxD、TxD和GND信號,自動對半雙工的RS一485串口進行控製。通過該轉換器,就可以像開發通用的RS一232串口一樣來快速開發基於RS一485串口的通信軟件。
2 係統軟件設計
軟件部分包括係統引導驅動程序otLoad―er、嵌入式操作係統ARM―Linux的移植、文件係統、用戶應用程序4個部分,其中核心部分是用戶應用程序的編寫和調試。用戶應用程序包括通過Modbus協議對采集得到的電表參數、空調參數的讀取和保存,Linux Socket編程實現文件的發送,以及上位機監測端圖形化界麵的C}≠語言編程實現。
2.1 采集數據的讀取和保存 該部分實現電表和空調數據的讀取,並保存在嵌入式微處理器Flash中。數據的讀取通過Modbus協議向電表和空調發送相關指令獲得,得到的數據通過調用fwrite()函數寫入定義在嵌入式微處理器Flash的文件中。主要包括串口屬性設置,CRC(Cyclic Redundancy Check)校驗碼實現方法,采用Modbus協議獲得需要的數據,並寫入嵌入式微處理器Flash的文件中。
2.1.1 設置串口屬性 串口設置主要是設置struct termios結構體成員值。通過對Cwcflag的賦值,可以設置波特率、字符大小、數據位、停止位、奇偶校驗位和硬件流控等。 係統對於串口屬性的設置如下: (1)打開串El fd= open(“/dev/ttySO”,0一RDWR I O~ NOCTFY I O― NDELAY)。 (2)為安全起見和以後調試程序方便,先保存原先串口的配置:tcgetattr(fd,&newtio)。 (3)設置波特率為9 600 baud/s。一般情況下,用戶需要將輸入輸出函數的波特率設置成相同。函數在成功時返回“0”,失敗時返回“一1”。 (4)設置字符大小。沒有現成可用函數,需要位掩碼。一般先去除數據位中的位掩碼,再重新按要求設置。 (5)設置奇偶校驗位。先激活c―cflag中的校驗位使能標誌PARENB和判斷是否要進行偶校驗,同時還要激活c_iflag中的奇偶校驗使能。 (6)設置停止位。通過激活c_cflag中的cS.TOPB實現。 (7)設置最少字符和等待時間。在對接收字符和等待時間沒有特殊要求的情況下,可以將其設置為“0”。 (8) 激活配置。利用tcsetattr(fd,TC―SANOW,&newtio)函數。這裏newtio是termios類型的變量,SANOW 表示改變的配置立即生效。
2.1.2 CRC校驗碼的實現方法 CRC利用生成多項式產生校驗位進行編碼。CRC運算時,首先將一個16 bit的寄存器預置為全1,然後連續把數據幀中的每個字節中的8 bit與寄存器的當前值進行運算,僅每個字節的8個數據位參與生成CRC,起始位和終止位以及可能使用的奇偶位都不影響CRC。在生成CRC時,每個字節的8 bit與寄存器中的內容進行“異或”運算,然後將結果向低位移位,高位則用“0”補充,最低位(LSB)移出並檢測。如果是1,該寄存器就與一個預設固定值(0A001H)進行一次“異或”運算;如果最低位為0,不作任何處理。上述處理重複進行,直到執行完8次移位操作。當最後一位(第8位)移完後,下一個8 bit與寄存器的當前值進行異或運算,同樣進行上述的另一個8次移位異或操作。當數據幀中的所有字節都作了處理,生成的最終值為CRC值。
2.1.3 通過RS一485通信采集數據
係統采用Modbus.RTU ,通信應用格式如表1所示。Modbus協議詳細定義了數據序列和校驗碼,這些都是特定數據交換的必要內容。

以電表數據的監測進行說明。該係統需要獲得與儀表工作相關的係統參數 ,包括PT 低字(0104H)、FF 高字(0105H)、PT2(0106H)、CT(0107H)、CT (0108H)等;監測參數,包括絕對值和有功電能E。 (010CH與OIDH)、絕對值和無功電能E l(010EH與010FH)、A相電壓U。(0110H)、B相電壓u2(0111H)、C相電壓u3(0112H)、線電壓U 2(0113H)、線電壓U2(O114H)、線電壓u (0115H)、相(線)電流I(0116H)、相(線)電流I (0117H)、相(線)電流I(0118H)、相電壓均值U (0119H)、線電壓均值U (011AH)、電流均值I (011BH)、係統有功功率P(011CH)、係統無功功率Q(011DH)、係統視在功率S(011EH)。按照Modbus.RTU協議通信應用格式,采用03號功能碼(獲得一個或多個寄存器的當前二進製值),可定義如下數組分別讀取上麵兩組對應數據: unsigned char txBufl[]={0xl1,0x03,OxO1,0x04,0x00,0x05,0x16,0xa0}; unsigned char txBuf2[]={0xl1,0x03,0x01,0x0c,0x00,0x19,0xf,0xff};
2.1.4 采集數據的存儲 該係統對監測數據進行循環采集,並將數據實時保存。通過調用定義的子函數void sent―re.ceive(char txBuf[],char Bum)讀取數據,打開建立在Flash中的record文件,通過fwrite函數將讀取的數據寫入文件中。在保存數據的同時需要將讀取數據的時間localtime(&timep)一起記錄。
2.2 數據文件的發送 將保存在微處理器Flash中的數據文件通過socket編程建立TCP連接 I,發送給上位機。數據文件發送流程圖如圖2所示。

涉及的主要過程描述如下: (1)首先調用係統函數socket(int family,int type,int protoco1)創建TCP套接字。係統選用流式套接字SOCK―STREAM,它提供了一種麵向連接的服務。 (2)bind將socket與本機上的一個端口相關聯,可以在該端口監聽服務請求,listen()函數使socket處於被動的監聽模式,並為該socket建立一個輸入數據隊列,將到達的服務請求保存在此隊列中,直到程序處理它們。 (3)accept()函數讓服務器接收客戶的連接請求。在建立好輸入隊列後,服務器就調用ac―cept()函數,然後睡眠並等待客戶的連接請求。 (4)初次建立連接,需要完成電表記錄時間與上位機時間的同步。具體實現方法是:以PXA270微處理器為核心的終端,通過sendto()給上位機發送事先約定好的保存在S指向的數組中的字符串,上位機在收到字符串後給終端發送時間,終端接收時間,調用函數mktime()和set―timeo~ay()完成時間同步。 (5)調用open()函數打開保存在終端Flash的電表數據記錄文件,並利用sendto()函數進行發送,每次發送完成都調用remove()函數將已經發送的記錄數據清空。 (6)關閉socket套接字close(sock~)。
2.3 上位機監測端 利用C精言通過Socket建立TCP連接,上位機在收到監測終端初次連接時事先約定好的保存在S指向的數組中的字符串後,發送係統時問給終端,進行時間同步,應用SQL Se~er 2000建jian立li數shu據ju庫ku,之zhi後hou不bu斷duan間jian隔ge性xing接jie收shou終zhong端duan發fa送song來lai的de監jian測ce數shu據ju並bing存cun人ren數shu據ju庫ku,供gong分fen析xi使shi用yong。編bian寫xie圖tu形xing化hua界jie麵mian,顯xian示shi最zui新xin的de監jian測ce數shu據ju。上shang位wei機ji編bian程cheng流liu程cheng圖tu如ru圖tu3所示。實時監測圖形化界麵如圖4所示。


3 結 語 該係統實現了智能電表、空調參數多數據量的監測,主要完成了嵌入式操作係統ARM・Linu的移植,通過Modbus協議獲得終端監測數據,並保存在嵌入式微處理器Flash中,實現數據文件的發送以及上位機對數據的處理顯示。經試驗,係統最終正常運行。
與傳統的數據監i貝0係統相比,該係統具有更好的安全性和實時性,同時硬件的體積更小,功耗更低,擴展性更強。對係統稍加修改,可以同時實現I//O設備、UPS等更多數據量的實時監測,因此具有很強的實用意義。
|