蔡晨曦,秦會斌
(杭州電子科技大學,杭州 310018)
數據采集與控制系統(tǒng)是指將工業(yè)現場中測試設備采集到的數據進行傳輸、顯示、存儲等操作,它廣泛應用于測試儀器、信號檢測、信號處理等領域。在數據采集與控制系統(tǒng)中應用工業(yè)以太網、TCP/IP網絡通信協議,擺脫了傳統(tǒng)模式下速率低、數據量小的特點,使系統(tǒng)向著可靠性高、易擴展、高速化的方向發(fā)展。將STM32單片機和儀器、儀表構成獨立的數據采集系統(tǒng),以通用計算機平臺作為主控端通過工業(yè)以太網連接所有處于工作狀態(tài)的STM32單片機進行數據交互與控制,可實現對多儀器、儀表的集中監(jiān)控,宏觀地反映整個生產過程。在STM32單片機中移植μC/OS-Ⅱ嵌入式操作系統(tǒng)和LwIP嵌入式網絡協議棧,可以實現同上位機軟件和儀器之間穩(wěn)定的并發(fā)通信[1]。
多測試儀器數據采集與控制系統(tǒng)的體系網絡結構拓撲如圖1所示。整個系統(tǒng)包括上位機監(jiān)控軟件、STM32單片機(下位機)組成的嵌入式終端和儀器儀表,上位機監(jiān)控軟件和STM32單片機之間采用TCP/IP協議作為網絡通信方式。工作過程中STM32單片機通過RS485總線接收各儀器發(fā)送的資源信息、工作狀態(tài)以及采集到的數據,然后對數據進行預處理、打包封裝后通過以太網發(fā)送給上位機軟件,同時將上位機軟件發(fā)送的指令傳遞給儀器,以此實現對儀器的數據采集和監(jiān)控。
STM32單片機采用STM32F103ZET6為CPU,其外設豐富、性能優(yōu)越滿足性能需求,硬件方面還主要包括了RS485模塊和ENC28J60網絡通信模塊等。STM32單片機的利用增加了上位機軟件所能連接的儀器數量。實驗過程中通過RS485總線每個STM32單片機可連接15個儀器,通過以太網接口和交換機等中繼設備上位機軟件可同時和20個以上的STM32單片機建立網絡連接。這樣的雙層結構實現上位機軟件同時和上百個儀器連接,大大提高了上位機的利用率[2]。
圖1 網絡結構拓撲圖
STM32單片機與儀器之間采用RS485總線通信架構,RS485通信抗干擾性強、傳輸距離遠、驅動能力強,可最多掛載256點串口收發(fā)器。本系統(tǒng)的RS485接口電路由低功耗的半雙工RS485收發(fā)器MAX1487組成,符合RS485串行協議的電器規(guī)范,數據傳輸速率可達10 Mbps,其接口原理圖如圖2所示。MAX1487的pin6、pin7分別為RS485總線的A線、B線,其中pin6與STM32的USART1接收端PA9相連,pin7與STM32的USART1發(fā)送端PA10相連。PB13用于控制RS485數據通信的傳輸方向[3]。
以太網通信模塊硬件電路包括以太網控制芯片ENC28J60、復位電路、時鐘振蕩器、網絡變壓器等。ENC28J60是由MicroChip公司推出的符合IEEE802.3標準的以太網控制芯片,其僅有28個引腳且芯片價格低,為用戶提供了廉價、高效的嵌入式網絡通信解決方案。ENC28J60與STM32單片機連接方式如圖3所示,作為以太網控制芯片其主要功能包括以下幾點:(1)集成媒體訪問介質控制器以及10BASE-T以太網物理層器件,可支持全雙工和半雙工模式以太網標準協議通信。(2)包含Microchip的可編程模式匹配過濾器,通過編程可自動評價、接收或拒收單播、多播和廣播數據包,防御網絡上的DDOS攻擊并減輕微處理器的處理壓力。(3)帶有行業(yè)標準的SPI串行外圍設備接口,最高通信速率可到10 MB/s。(4)8 kB雙端口可編程SRAM緩沖器,其數據管理機制具有實時性和可靠性,實現數據包的高效存儲、修改和檢索功能,減輕微處理器的內存負荷。
ENC28J60工作頻率為25 MHz,時鐘振蕩電路采用25 MHz無源晶振分別接于OSC1和OSC2兩端為芯片提供一個時鐘信號。由于晶振頻率較高,在布局時盡量靠近芯片且走線盡可能短。ENC28J60連接的網絡變壓器是集成以太網隔離變壓器HR911105,該隔離變壓器攜帶貼片式LED燈,大大節(jié)省了PCB板空間[4]。
在STM32單片機上移植μC/OS-Ⅱ嵌入式操作系統(tǒng)和LwIP網絡協議棧,根據功能劃分任務的方式進行程序設計,分別建立了RS485通信和以太網通信兩個任務。RS485通信任務負責接收儀器發(fā)送的測試數據,并把上位機的控制命令返回給儀器。以太網通信任務主要是接收并解析上位機發(fā)送的命令返回對應測試儀器的資源信息以及工作狀態(tài),在測試階段將RS485接收到的測試儀器數據封裝打包后定時發(fā)送到上位機軟件。采用上述基于μC/OS-Ⅱ系統(tǒng)的設計方案使兩個任務能夠并發(fā)運行,并通過μC/OS-Ⅱ提供的互斥鎖和信號量保證兩個任務之間數據的同步[5]。
完成μC/OS-Ⅱ初始化后對RS485通信寄存器USART1進行配置并初始化,創(chuàng)建以RS485通信任務RS485_Task,其工作流程圖如圖4所示。RS485通信任務開始運行后首先發(fā)送命令確認1號儀器是否存在,如果RS485接收中斷返回數據則確認1號儀器連接成功,如果等待超時則表示1號儀器未連接或者連接斷開可以直接跳轉請求下一編號的儀器是否存在。等待超時的時間間隔由用戶預先定義,這個時間間隔要滿足任何從設備做出正常反應。在確定1號儀器已連接之后,發(fā)送相關命令請求1號儀器返回儀器各類資源信息完成與1號儀器的信息初始化工作,然后繼續(xù)按照上述流程循環(huán)完成所有STM32單片機連接儀器的信息初始化工作。初始化工作完成之后,STM32單片機根據當前已連接的儀器數量在任務中建立循環(huán),依次接收儀器發(fā)回的測試數據。
圖2 RS485總線接口原理圖
圖3 以太網接口原理圖
完成μC/OS-Ⅱ初始化后創(chuàng)建以太網通信任務Lwip_Task,其工作流程圖如圖5所示。在Lwip_Task中調用tcp_new函數創(chuàng)建一個新的tcp_pcb控制塊,并調用tcp_bind函數將預先設定的IP地址與端口號與新建的tcp_pcb控制塊綁定,隨后通過調用tcp_listen函數使指定的tcp_pcb控制塊進入監(jiān)聽模式。調用tcp_accpet函數設置有TCP連接建立時的回調函數,該回調函數用于通知LwIP一個新來的連接已經被接收。tcp_recv函數用于指定tcp_pcb控制塊接收到數據時的回調函數,當接收到以太網數據時會觸發(fā)信號量或郵箱事件,將數據拷貝到用戶緩沖區(qū)pbuf并調用指定的回調函數對數據進行處理。在回調函數中按應用層通信協議先獲取第一位命令數據對命令進行解析,然后根據第二位儀器編號數據發(fā)回上位機軟件需要的該編號儀器信息[6]。
本系統(tǒng)為了能夠支持實時動態(tài)地接入、兼容多種不同類型的儀器,在上位機軟件設計上創(chuàng)新地采用了一種面向儀器、儀表的設計思想。面向儀器、儀表的設計方案并不針對某一特定的儀器,其屏蔽了各種不同類型儀器的具體差異,對儀器的測試資源、測試序列等信息進行了抽象的統(tǒng)一,在軟件設計上實現對多儀器集中數據采集與控制。
在進行上位機軟件設計時需要預先將各類儀器的測試資源信息統(tǒng)一抽象成一張格式一致的資源設定表(如圖6所示),該資源設定表分為測試設定部分和測試結果設定部分。測試設定部分主要用于設定儀器的工作模式、工作參數,如測試項、測試持續(xù)時間、測試分類等,測試結果設定則主要用于設定測試數據的最大最小值、單位和是否對測試結果分類。每個STM32單片機根據自己所連接儀器對應生成資源設定表并發(fā)送到上位機,上位機根據資源設定表中的具體內容就能獲得與該儀器對應的儀器類型以及測試資源、測試序列等信息。在實際系統(tǒng)中,上位機軟件可以對表中內容進行靈活的設置,設置完成后返回給對應的STM32單片機,其根據返回的表對與該表對應的儀器工作方式進行控制。通過上述方案真正在上位機軟件中實現儀器信息的動態(tài)獲取,使對儀器的控制更加靈活、更加智能[7]。
圖4 RS485通信程序流程圖
本文設計的以太網多測試儀器數據采集與控制系統(tǒng)是和紹興市科盛電子有限公司合作開發(fā)的項目,目前主要針對科盛電子有限公司自主研發(fā)的TRR二極管測試機進行開發(fā),因此本系統(tǒng)根據公司制定的技術指標及性能要求進行測試。上位機軟件一共連接15組STM32單片機系統(tǒng)進行測試,每個STM32單片機連接15個模擬測試儀器,每個模擬測試儀器有5組測試序列。
圖5 LwIP以太網通信程序流程圖
圖6 資源設定表
STM32單片機工作后通過RS485總線接收模擬儀器發(fā)送的數據,測試接收是否完整。在上位機軟件開啟后所有處于工作狀態(tài)的STM32單片機都能被上位機掃描并建立TCP網絡連接。成功建立連接之后,每個STM32單片機每隔500 ms向上位機軟件發(fā)送一次測試數據,每次發(fā)送理論上的最大數據量為2 048 B,同時測試單片機能否根據上位機軟件返回的命令對模擬儀器工作模式進行控制[8]。
對本系統(tǒng)進行多次測試后的結果表明:上位機軟件能夠實現對STM32單片機的主動掃描連接,連接成功后STM32單片機能將模擬儀器測試數據及時、準確地發(fā)送到上位機軟件,如圖7所示。STM32單片機同時能準確解析上位機軟件發(fā)回的命令,證明該整體方案的切實可行。
圖7 上位機軟件工作圖
通過STM32單片機并以工業(yè)以太網和RS485總線結合作為通信方式實現工業(yè)現場大量儀器的統(tǒng)一監(jiān)控,達到了準確性、實時性、高效性的設計目標,可宏觀地反映整個生產過程。其良好的可擴展性和兼容性有利于系統(tǒng)的升級改造,減少開發(fā)成本。該系統(tǒng)已在生產過程通過測試,系統(tǒng)運行穩(wěn)定,符合工業(yè)生產的要求。
[1] 王琳,商周,王學偉. 數據采集系統(tǒng)發(fā)展與應用[J]. 電測與儀表,2004,41(8): 4-8.
[2] 彭剛,秦志強. 基于ARM Cortex-M3的STM32系列嵌入式微控制器應用實踐[M]. 北京:電子工業(yè)出版社,2011. 100-165.
[3] 彭剛. 基于STM32的RS485總線分布式數據采集系統(tǒng)設計[J]. 伺服控制,2011,(2): 64-66.
[4] 聊義奎. Contex-M3之STM32嵌入式系統(tǒng)設計[M]. 北京:中國電力出版社,2012. 331-338.
[5] 任哲. 嵌入式實時操作系統(tǒng)μC/OS-Ⅱ原理及應用[M]. 北京:北京航空航天大學出版社,2009. 2272-2317.
[6] 陸旭. 基于μC/OS-Ⅱ和LwIP的嵌入式設備監(jiān)控平臺研究[D]. 重慶:重慶大學,2013.
[7] 韓松. 基于Modbus/TCP協議的遠程控制網關[J]. 儀表技術與傳感器,2014,(10): 103-105.
[8] Kevin R Fall, W Richard Stevens. TCP/IP詳解[M]. 北京:機械工業(yè)出版社,2012. 579-591.