摘 要:設汁了基于ARM的智能電表和空調系統(tǒng)參數的多數據監(jiān)測系統(tǒng)。系統(tǒng)由硬件和軟件兩部分組成,硬件采用博創(chuàng)公司的嵌入式微控制器PXA270平臺,軟件使用了Modbus協(xié)議讀取智能電表和空調端監(jiān)測數據,上位機利用Linux Socket『艤]絡編程和c#編程實現監(jiān)測。該系統(tǒng)比傳統(tǒng)的數據{ 測系統(tǒng)具有更好的安全性和實時性,同時硬件的體積更小,功耗更低,擴展性更慢。
0 引 言
在實際工業(yè)控制應用中,經常需要對現場的智能電表、空調等多種設備進行監(jiān)測,通過采集相應設備的運行參數隨時了解、跟蹤設備運行狀態(tài) ,進而進行分析和診斷。結合具體項目,本文設計了一種基于嵌入式系統(tǒng)ARM 的多數據監(jiān)測系統(tǒng),系統(tǒng)以嵌入式Linux和博創(chuàng)公司的嵌入式微控制器PXA270為核心平臺,通過將RS一485采集的數據轉換成符合RS一232標準的數據,保存在嵌入式微處理器的Flash中,經過網絡傳輸將數據傳給E位機,完成對電表、空調的監(jiān)測任務。整個系統(tǒng)建立在嵌入式結構上,具有更好的實時性和穩(wěn)定性,同時硬件的體積更小,功耗更低,擴展性更強。
1 系統(tǒng)硬件設計
1.1 系統(tǒng)總體設計方案
系統(tǒng)的總體設計思想是通過RS一232/485轉換器將RS一485采集的電表參數、空調參數轉換成符合RS一232標準的數據,保存在嵌入式微處理器Flash中,經Linux Socket網絡編程,采用TCP協(xié)議和上位機建立網絡連接,將數據文件發(fā)送給上位機,上位機運用C#語言編程實現監(jiān)測數據的實時顯示,同時建立數據庫保存監(jiān)測數據,從而完成對電表、空調數據的監(jiān)測任務。其中Rs一485對電表、空調參數的讀取是通過Modbus協(xié)議發(fā)送相關的指令實現的。
1.2 系統(tǒng)硬件電路
該設計主要硬件電路包括數據采集模塊、PXA270處理器、外圍接口電路、電源及復位電路等幾個部分。系統(tǒng)總體結構如圖1所示。
ARM 處理系統(tǒng)采用博創(chuàng)公司的Xscale PXA270處理器,其主頻為520 MHz,加入了In SpeedStep動態(tài)電源管理技術,在保證CPU性能的情況下可zui大限度地降低設備功耗,采用網絡接口實現了數據信息的網絡化管理。操作系統(tǒng)采用Linux,使用的是Linux 2.6.9內核。系統(tǒng)的根文件采用針對Flash無緩沖機制的JFFS2文件系統(tǒng)。
為了利用PC上現有的RS一232接口,通常使用RS一232/485轉換器。該轉換器一般通過邏輯門電路控制RxD、TxD和GND信號,自動對半雙工的RS一485串口進行控制。通過該轉換器,就可以像開發(fā)通用的RS一232串口一樣來快速開發(fā)基于RS一485串口的通信軟件。
2 系統(tǒng)軟件設計
軟件部分包括系統(tǒng)引導驅動程序otLoad—er、嵌入式操作系統(tǒng)ARM—Linux的移植、文件系統(tǒng)、用戶應用程序4個部分,其中核心部分是用戶應用程序的編寫和調試。用戶應用程序包括通過Modbus協(xié)議對采集得到的電表參數、空調參數的讀取和保存,Linux Socket編程實現文件的發(fā)送,以及上位機監(jiān)測端圖形化界面的C}≠語言編程實現。
2.1 采集數據的讀取和保存
該部分實現電表和空調數據的讀取,并保存在嵌入式微處理器Flash中。數據的讀取通過Modbus協(xié)議向電表和空調發(fā)送相關指令獲得,得到的數據通過調用fwrite()函數寫入定義在嵌入式微處理器Flash的文件中。主要包括串口屬性設置,CRC(Cyclic Redundancy Check)校驗碼實現方法,采用Modbus協(xié)議獲得需要的數據,并寫入嵌入式微處理器Flash的文件中。
2.1.1 設置串口屬性
串口設置主要是設置struct termios結構體成員值。通過對Cwcflag的賦值,可以設置波特率、字符大小、數據位、停止位、奇偶校驗位和硬件流控等。
系統(tǒng)對于串口屬性的設置如下:
(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)設置zui少字符和等待時間。在對接收字符和等待時間沒有特殊要求的情況下,可以將其設置為“0”。
(8) 激活配置。利用tcsetattr(fd,TC—SANOW,&newtio)函數。這里newtio是termios類型的變量,SANOW 表示改變的配置立即生效。
2.1.2 CRC校驗碼的實現方法
CRC利用生成多項式產生校驗位進行編碼。CRC運算時,首先將一個16 bit的寄存器預置為全1,然后連續(xù)把數據幀中的每個字節(jié)中的8 bit與寄存器的當前值進行運算,僅每個字節(jié)的8個數據位參與生成CRC,起始位和終止位以及可能使用的奇偶位都不影響CRC。在生成CRC時,每個字節(jié)的8 bit與寄存器中的內容進行“異或”運算,然后將結果向低位移位,高位則用“0”補充,zui低位(LSB)移出并檢測。如果是1,該寄存器就與一個預設固定值(0A001H)進行一次“異或”運算;如果zui低位為0,不作任何處理。上述處理重復進行,直到執(zhí)行完8次移位操作。當zui后一位(第8位)移完后,下一個8 bit與寄存器的當前值進行異或運算,同樣進行上述的另一個8次移位異或操作。當數據幀中的所有字節(jié)都作了處理,生成的zui終值為CRC值。
2.1.3 通過RS一485通信采集數據
系統(tǒng)采用Modbus.RTU ,通信應用格式如表1所示。Modbus協(xié)議詳細定義了數據序列和校驗碼,這些都是特定數據交換的必要內容。
更多內容請查詢:
以電表數據的監(jiān)測進行說明。該系統(tǒng)需要獲得與儀表工作相關的系統(tǒng)參數 ,包括PT 低字(0104H)、FF 高字(0105H)、PT2(0106H)、CT(0107H)、CT (0108H)等;監(jiān)測參數,包括值和有功電能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)、系統(tǒng)有功功率P(011CH)、系統(tǒng)無功功率Q(011DH)、系統(tǒng)視在功率S(011EH)。按照Modbus.RTU協(xié)議通信應用格式,采用03號功能碼(獲得一個或多個寄存器的當前二進制值),可定義如下數組分別讀取上面兩組對應數據:
unsigned char txBufl[]={0xl1,0x03,OxO1,0x04,0x00,0x05,0x16,0xa0};
unsigned char txBuf2[]={0xl1,0x03,0x01,0x0c,0x00,0x19,0xf,0xff};
涉及的主要過程描述如下:
(1)首先調用系統(tǒng)函數socket(int family,int type,int protoco1)創(chuàng)建TCP套接字。系統(tǒng)選用流式套接字SOCK—STREAM,它提供了一種面向連接的服務。
(2)bind將socket與本機上的一個端口相關聯(lián),可以在該端口監(jiān)聽服務請求,listen()函數使socket處于被動的監(jiān)聽模式,并為該socket建立一個輸入數據隊列,將到達的服務請求保存在此隊列中,直到程序處理它們。
(3)accept()函數讓服務器接收客戶的連接請求。在建立好輸入隊列后,服務器就調用ac—cept()函數,然后睡眠并等待客戶的連接請求。
(4)初次建立連接,需要完成電表記錄時間與上位機時間的同步。具體實現方法是:以PXA270微處理器為核心的終端,通過sendto()給上位機發(fā)送事先約定好的保存在S指向的數組中的字符串,上位機在收到字符串后給終端發(fā)送時間,終端接收時間,調用函數mktime()和set—timeo~ay()完成時間同步。
(5)調用open()函數打開保存在終端Flash的電表數據記錄文件,并利用sendto()函數進行發(fā)送,每次發(fā)送完成都調用remove()函數將已經發(fā)送的記錄數據清空。
(6)關閉socket套接字close(sock~)。
2.3 上位機監(jiān)測端
利用C精言通過Socket建立TCP連接,上位機在收到監(jiān)測終端初次連接時事先約定好的保存在S指向的數組中的字符串后,發(fā)送系統(tǒng)時問給終端,進行時間同步,應用SQL Se~er 2000建立數據庫,之后不斷間隔性接收終端發(fā)送來的監(jiān)測數據并存人數據庫,供分析使用。編寫圖形化界面,顯示的監(jiān)測數據。上位機編程流程圖如圖3所示。實時監(jiān)測圖形化界面如圖4所示。
3 結 語
該系統(tǒng)實現了智能電表、空調參數多數據量的監(jiān)測,主要完成了嵌入式操作系統(tǒng)ARM·Linu的移植,通過Modbus協(xié)議獲得終端監(jiān)測數據,并保存在嵌入式微處理器Flash中,實現數據文件的發(fā)送以及上位機對數據的處理顯示。經試驗,系統(tǒng)zui終正常運行。
與傳統(tǒng)的數據監(jiān)i貝0系統(tǒng)相比,該系統(tǒng)具有更好的安全性和實時性,同時硬件的體積更小,功耗更低,擴展性更強。對系統(tǒng)稍加修改,可以同時實現I//O設備、UPS等更多數據量的實時監(jiān)測,因此具有很強的實用意義。
2.1.4 采集數據的存儲
該系統(tǒng)對監(jiān)測數據進行循環(huán)采集,并將數據實時保存。通過調用定義的子函數void sent—re.ceive(char txBuf[],char Bum)讀取數據,打開建立在Flash中的record文件,通過fwrite函數將讀取的數據寫入文件中。在保存數據的同時需要將讀取數據的時間localtime(&timep)一起記錄。
2.2 數據文件的發(fā)送
將保存在微處理器Flash中的數據文件通過socket編程建立TCP連接 I,發(fā)送給上位機。數據文件發(fā)送流程圖如圖2所示。
免責聲明
- 凡本網注明"來源:智能制造網"的所有作品,版權均屬于智能制造網,轉載請必須注明智能制造網,http://towegas.com。違反者本網將追究相關法律責任。
- 企業(yè)發(fā)布的公司新聞、技術文章、資料下載等內容,如涉及侵權、違規(guī)遭投訴的,一律由發(fā)布企業(yè)自行承擔責任,本網有權刪除內容并追溯責任。
- 本網轉載并注明自其它來源的作品,目的在于傳遞更多信息,并不代表本網贊同其觀點或證實其內容的真實性,不承擔此類作品侵權行為的直接責任及連帶責任。其他媒體、網站或個人從本網轉載時,必須保留本網注明的作品來源,并自負版權等法律責任。
- 如涉及作品內容、版權等問題,請在作品發(fā)表之日起一周內與本網聯(lián)系,否則視為放棄相關權利。
2025第21屆鄭州工業(yè)自動化展
展會城市:鄭州市展會時間:2025-05-09