師 凱 ,李建奇 ,2,王文虎 ,2,潘 越 ,賀翠嫻
(1.湖南文理學院 電氣與信息工程學院,常德 415000;2.洞庭湖生態經濟區建設與發展協同創新中心,常德 415000)
隨著網絡技術和信息技術的日趨成熟,以太網在數據采集與傳輸、數據通信等眾多領域得到了廣泛的應用[1]。工業以太網是一種比較合適的數據采集與處理系統的聯網傳輸方式,其數據傳輸速率能夠滿足大多數的數據采集與處理系統的要求,傳輸距離遠,建網簡單方便,網絡協議很成熟,而且比較廉價[2]。目前,對工業數據的數據采集與處理多采用RS232或RS485等串行總線來實現其網絡化,這些方式都存在傳輸速率有限和聯網能力不足等缺陷,而采用工業以太網的數據傳輸方式研究和應用很少[3]。在此,結合工業以太網和嵌入式技術,提出了一種基于工業以太網的ARM數據采集系統的設計,提高了數據傳輸的實時性、穩定性和可靠性[4]。
基于工業以太網的ARM數據采集系統的總體設計如圖1所示。該系統以STM32F103作為主控芯片,利用定時器定時采集3路傳感器的數據[5],并通過工業以太網將采集的數據一方面發送到STM32F103服務器上并通過液晶屏實時顯示出來,另一方面采用遠程客戶端的Web瀏覽器輸入微處理器相對應的IP地址來訪問這些數據,進而實現組網達到多點采集的功能。

圖1 系統總體方案Fig.1 Overall solution architecture
數據采集傳輸系統包含以下模塊:基本應用系統電路,網卡模塊電路,人機接口電路,Flash存儲電路,電源模塊電路。
主控芯片STM32F103ZET6具有64 kB SRAM,512kB FLASH[6]。基本應用系統由晶振電路和復位電路組成(如圖2所示),分別采用8 MHz和32.768 kHz的晶振為系統提供不同的動力。為確保系統中電路穩定可靠工作,復位電路必不可少,其第一功能是上電復位。一般控制系統電路正常工作需要供電電源為3.3×(1±5%)V。本電路采用上電復位和低電平復位。

圖2 基本應用系統電路Fig.2 Basic application system circuit diagram
工業中應用比較廣泛的以太網收發芯片種類較多,如SPI接口的ENC28J60,并口的 PTL8019S,CS8900A等。綜合考慮,本設計采用10 M ENC28J60網卡,ENC28J60與STM32F103網絡接口原理如圖3所示。

圖3 網卡驅動原理Fig.3 Network card driver schematic
以太網控制器ENC28J60內部集成了MAC層和PHY層功能,支持10 Mb/s的全雙工以太網通信,在封裝上,該芯片只有28引腳,非常適合嵌入式設備的組網設計。ENC28J60在主機之間通過使用SPI串行接口與主控芯片通信,集成度高,簡單的訪問方式使得ENC28J60非常適合用于小型嵌入式設備。此外,ENC28J60內核還集成了8 kB的SRAM用于網絡數據的緩沖與接收,可大大提高與控制器之間交互效率。
STM32F103 具有 2 個 SPI串行接口,SO,SI,SCK為SPI接口的3條信號線[7],分別連接STM32的 PB14-SPI2-MISO,PB15-SPI2-MOSI,PB13-SPI2-SCK引腳上;CS是網卡芯片片選信號與STM32的PB12-SPI2-NSS連接;INT是中斷信號,連接到主控器STM32的PA1-EINT0-INT1上,網卡和主控器可以通過中斷的方式進行通信,從而完成數據的快速接收和發送。網卡ENC28J60的2條差分接收引腳TPIN+,TPIN-和 2條差分發送引腳 TPOUT+,TPOUT-外接在集成有以太網隔離變壓器和RJ45插座的HR911105A上。
LCD12864作為整個系統的顯示部分,完整地展示了通過工業以太網服務器采集到的數據快速準確地到達客戶端并實時顯示出來。液晶顯示器與STM32主控器的連接方式為串行方式,減少了I/O口的使用。具體連接方式為主控器的PE3口連接液晶顯示器的片選信號、PE4口連接顯示器的數據端口、PE5口連接顯示器的時鐘信號線,顯示電路如圖4所示。
采用W25Q64BV (6 Mb)串行Flash存儲器芯片。該芯片屬于E2PROM的升級版,支持標準的串行外設SPI接口的設備,在2.7~3.6 V單電源工作電流消耗低至4 mA時主動關機。該W25Q64BV陣列是由256 B組成可編程32768頁,最多256 B可以同一時間編程,在本系統中被用作存儲Boot loader以及操作系統和程序代碼,具體電路如圖5所示。

圖4 液晶顯示電路Fig.4 Liquid crystaldisplay circuit

圖5 FLASH存儲電路Fig.5 FLASH storage circuit
采用的電源幅值是5 V和3.3 V。電源原理如圖6所示,首先由電源變壓器將交流220 V電壓降為交流18 V電壓,然后由整流、濾波電路得到穩定輸出的直流電壓,最后通過三端穩壓管7812和7912得到±12 V電壓,再由SPX29300得到3.3 V和5 V電壓。

圖6 電源模塊電路Fig.6 Power module
軟件設計部分包括嵌入式操作系統移植、網絡協議棧的移植和軟件功能開發三部分。為提高系統運行性能和便于擴展功能,本系統采用嵌入式操作系統μC/OS-III作為運行平臺。μC/OS-III是一個可升級的、可固化的、基于優先級的實時內核,屬于第3代系統內核;對于任務個數無限制,支持現代實時內核所必須的大部分功能,如資源管理、同步和任務間的通信等;還擁有其它實時內核沒有的功能,如完備的運行時間測量性能,直接發送信號或者消息到任務,任務可同時等待多個內核對象,等。
為實現以太網通信移植了LwIP協議棧。LwIP是一種輕型IP協議,有無操作系統的支持都可以運行。LwIP實現的重點是在保持TCP協議主要功能的基礎上減少對RAM的占用,只需十幾kB的RAM和40 kB左右的ROM就可以運行,因此該協議棧適合在低端的嵌入式系統中使用,適合工業控制領域使用。
系統軟件功能設計部分主要包括:主控程序設計,協議棧初始化程序設計,數據采集子程序設計,終端顯示子程序設計和遠程控制子程序設計[8]。數據采集裝置利用配置的傳感器采集相應數據,通過工業以太網傳輸給Web客戶端實時顯示。
主控程序負責控制整個系統的運行。①定義任務控制塊和任務堆棧的大小,設計多任務之間的優先級;②運行板載初始化程序完成設備初始化,包括系統時鐘初始化、I/O端口初始化、SPI初始化;③初始化μC/OS-III實時操作系統的內核,內核初始化完成后,系統創建主任務,包括任務控制指針、控制名、代碼指針、優先級、任務堆棧基地址、堆大小等;④在主任務中創建3個數據采集子任務和2個數據傳輸任務并啟動操作系統。系統主控程序流程如圖7所示。

圖7 系統主控程序流程Fig.7 Flow chart of the main control program of the system
使用LwIP協議棧前,首先應完成協議棧內核初始化,與網卡相關的網絡接口應被注冊到內核中,然后才可以利用網卡進行以太網通信。系統利用一個Lwip_init()函數來完成議棧的初始化和網卡信息的注冊等,操作流程如圖8所示。

圖8 協議棧初始化流程Fig.8 Protocol stack initialization flow chart
初始化函數包括內存初始化函數、數據包結構初始化函數、網絡接口結構初始化函數、IP層初始化函數、TCP層初始化函數等。注冊網絡接口,需要用到最少3個IP地址參數,包括網關IP地址、終端IP地址以及對應的子網掩碼。接口結構注冊通過調用函數netif_add()完成,該函數除使用上述3個IP網絡參數外,還將 ethernetif_init(),ethernet_input()等2個函數地址作為參數。這2個函數地址會被賦予給netif結構的相關字段,內核通過這些字段指向的函數來完成網卡的初始化以及向上層遞交數據。經過初始化后,程序可以使用網卡完成數據傳輸。主控程序可以讓子任務通過2種方式與網卡之間實現數據的交互,即查詢方式和中斷方式。本系統軟件中主要通過輪詢查詢方式的完成數據操作。
數據采集一般分為模擬量參數采集與數字開關量采集2種。本系統中,模擬量參數的采集采用數字信號輸出的溫濕度傳感器(DHT11),以單總線的方式與處理器的GPIO口連接,定時把采集的溫度、濕度數字量傳輸到STM32F103微處理器上進行處理。一次完整的數據傳輸過程為首先將DHT11設置為輸出模式,處理器設置為輸入模式,判斷從機是否有低電平響應信號,然后進入循環直到從機發出80 μs的高電平,處理器開始接收數據,最后通過和校驗檢測讀取的數據是否正確。對連續5次采集的數據會進行一個平均值濾波處理,將平均值作為檢測值。數字開關量采集相對比較簡單,不再詳述。
LCD12864作為系統終端的顯示設備,具有操作簡單、人機界面友好等特點。STM32F103微處理器與液晶顯示器有串行和并行兩種通信方式。本設計采用串行通信方式,減少了GPIO口的使用。液晶顯示器與處理器通信時,首先拉高顯示器的片選信號,時鐘信號每產生一個下降沿數據線傳輸1 b數據信號給顯示器,當其接收到24 b數據就完成一次通信。液晶屏顯示的內容包括數據采集的通道號,采集的溫度、濕度值,以及端口的控制顯示,極大地方便了現場工作人員查看信息與控制操作。
BSD socket是通信雙方的一種約定,用套接字中的相關函數來完成通信的過程。應用層通過傳輸層進行數據通信時,TCP會遇到同時多個應用程序進程提供并發的問題。多個TCP連接或者多個應用程序需要通過同一個TCP協議端口傳輸數據[9]。本系統的終端顯示采用Web瀏覽器,通過IP地址即可訪問STM32F103微處理器采集的數據。遠程終端控制不受地理天氣等外界因素的影響,一方面可以實時準確地獲取溫濕度傳感器采集的數據并動態地顯示在Web瀏覽器頁面上,另一方面可以通過瀏覽器頁面上的控制按鈕來選擇采集數據的通道。
Web瀏覽器在TCP/IP協議的基礎上使用HTTP應用層協議,按照HTML超文本傳輸協議和CGI,SSI等編寫的服務頁面。整個數據交互過程中首先HTTP發出請求,TCP監聽到數據并對數據進行HTTP協議解析,記住URL標識在網頁中尋找各種name段的關鍵字并處理成一張數據表格,接著循環搜索已注冊的CGI處理程序,搜索完成后把參數表和參數總數提供給URI對應的CGI處理函數處理,接著在網頁中搜索已注冊的SSI標簽,找到后添加相應的SSI消息重新組成一張新的網頁數據并發送給瀏覽頁面,從而實現數據的動態刷新。
當在Web瀏覽器中輸入STM32F103微處理器對應的IP地址時,瀏覽器會向STM32F103發出數據請求,此時處理器就作為一個服務器與客戶端實現三次握手,信號通過后開始發送相應的數據。服務器調用 socket(),bind(),listen()完成初始化后,調用accept()阻塞等待,監聽80端口的狀態,客戶端調用 socket()初始化后,調用 connect()發出 SYN段并阻塞等待服務器應答,服務器應答一個SYN-ACK段,客戶端收到后從connect()返回,同時應答一個ACK段,服務器收到后從accept()返回,數據傳輸過程如圖9所示。連接建立后,TCP協議提供全雙工的通信服務,客戶端主動發起請求,服務器被動處理請求,采用應答方式工作。

圖9 數據傳輸流程Fig.9 Data transmission flow chart
通過對硬件和軟件的仔細設計和調試,ARM數據采集系統取得了預期目標。系統通過了連續72 h穩定工作測試,當出現傳感器脫落等故障時可自動報警,當程序跑飛后會通過軟件看門狗自動重啟系統。工作現場實時溫度、濕度等參數采集后,通過ARM采集系統可將數據直接通過液晶屏幕顯示出來,另一方面,遠程客戶端通過IP地址,利用Web瀏覽器可遠程對ARM數據采集系統進行監控操作,實際測試效果如圖10所示。

圖10 系統的實際顯示效果Fig.10 Test display effect chart
分析了以太網技術在工業數據采集系統中的應用情況,系統圍繞著提高系統性價比和穩定性的需要,采用了高性價比的STM32F103ZET6芯片作為主控制器,設計了數據采集板。移植μC/OS-III實時操作系統和LwIP協議棧,采用以太網來實現了遠程數據多點采集,設計了Web遠程監控模塊。通過對硬件和軟件的優化設計,使該系統的功能和性能達到了預期設計要求,具有一定的應用參考價值。
[1]魯力,張波.嵌入式TCP/IP協議的高速電網絡數據采集系統[J].儀器儀表學報,2009,30(2):405-409.
[2]徐曉光,李永勝,孫駟洲.基于以太網的遠程數據采集系統[J].自動化與儀器儀表,2008,28(2):65-68.
[3]羅智佳,狄崢,毛宗源.基于以太網的分布式數據采集監控系統的應用[J].微計算機信息,2006,22(1):22-24.
[4]曹亞麗,宋愛娟,李曉明.基于工業以太網的數據采集及檢測系統[J].機電產品開發與創新,2009,22(6):168-169.
[5]曹圓圓.基于STM32芯片的電參數測量與數據傳輸[J].自動化與儀器儀表,2010,30(3):137-139.
[6]王永虹,徐煒,郝立平.STM32系列ARM Cortex-M3微處理器原理及實踐[M].北京:北京航空航天大學出版社,2008:318-338.
[7]張蕉蕉,曹森,郭堅毅.基于STM32裝備數據采集系統的設計[J].裝備制造技術,2012,40(7):307-311.
[8]劉明貴,梁吳.基于STM32的巖石工程無線采集系統[J].儀表技術與傳感,2010,47(5):95-97.
[9]辛光,伍川輝.基于STM32的列車噪聲數據采集系統[J].四川兵工學報,2012,33(1):90-92.