崔金委,陳機林
(南京理工大學機械工程學院,江蘇南京 210094)
隨著以太網技術的日益發展,以太網已經成為最常用的網絡標準之一,而通過以太網通信技術來共享以單片機為中心的嵌入式系統的信息,已然成為當今單片機領域的熱門話題。美國微芯公司(Microchip)推出了全球首枚28引腳獨立以太網控制器,可以為嵌入式應用提供低引腳數、低成本且高效易用的遠程通訊解決方案。在此之前嵌入式系統開發可選的獨立以太網控制器都是為個人計算機系統設計的,它們不僅結構復雜、體積龐大,而且較為昂貴。本文以微芯公司的16位單片機PIC24HJ64GP506和以太網控制器ENC28J60為基礎,設計了一套工業監控系統。
由于工業現場中的工作環境較為惡劣,為了保證各種工業設備能夠正常工作,系統針對工業現場中的壓力、三相電壓和溫度設計了一套工業監控系統來監控設備的工作參數。系統的原理圖如圖1所示。
首先采用鉑制溫度傳感器、三相電壓光隔器和壓力傳感器來測量溫度、三相電壓和壓力信號,信號經過濾波、放大等預處理之后傳給單片機A/D,單片機將收集到的各路信號與預先存儲在內部的預警值和報警值進行比較,當信號發生異常時,系統進行判斷:若信號超過報警值,系統輸出相應的控制信號進行聲光報警;如果超過預警值而未到達報警值,系統會驅動執行機構執行調節措施,將異常信號調節回到正常范圍內。

圖1 工業監控系統原理圖
監控系統與上位機之間的通信由以太網模塊來完成,當需要通信時,會通過中斷來觸發相應的通信機制。系統的主控芯片為美國微芯公司的新型16位單片機產品PIC24HJ64GP506,在系統運行中可以用按鍵重設監控系統的一些重要參數,這些參數不能存儲在RAM中,否則掉電參數會消失,本系統采用了基于I2C總線的EPPROM電路,把重要參數存儲在EEPROM中;報警模塊電路包括報警器和報警燈兩部分;以太網通信模塊由以太網控制器ENC28J60和以太網接頭HR911105A完成;而為了節約I/O口,LCD模塊采用了基于串行外設接口SPI的接口模式;由于單片機內部集成了18路的A/D轉換電路,所以傳感器信號經過調理電路后直接輸入到單片機內部進行A/D轉換;按鍵電路是基于單片機I/O口的新型功能—電平變化通知(chang notification,CN)完成的,電平變化通知引腳使PIC24H器件系列能夠向處理器發出中斷請求,以響應所選擇的輸入引腳上的狀態變化。每個CN引腳內部都連接有一個弱上拉電阻,該上拉電阻作為連接到引腳的電流源,并且當有鍵或者鍵盤連接時減少對外部電阻的要求[2]。
系統主要以單片機PIC24HJ64GP506和以太網控制器ENC28J60為核心來實現硬件電路的設計,主要包括信息號采集部分、信號存儲部分、以太網通信部分、報警部分、控制信號輸出部分以及信號修改部分,由于篇幅有限,這里僅對部分系統重要模塊做一說明。
微芯公司的新型16位單片機PIC24HJ64GP506,與傳統的8位51單片機不同,它采用改進型的哈佛結構,具有高性能的CPU,內部集成了豐富的外設,包括用戶可選擇的18路10位/12位的A/D轉換器,用于通信的 CAN,UART,SPI,I2C等多個通信模塊,以及增強型定時器功能等。外設與雙端口RAM之間的集成式直接存儲器存取(DMA),提供了零開銷的數據傳輸,優化了CPU吞吐量。相比于8位51單片機和8位PIC單片機,PIC24 16位單片機在性能、存儲器、外設及封裝方面,為用戶提供了更多的選擇。
采用微芯公司的以太網控制器ENC28J60和漢仁公司的以太網接口HR911105A來完成以太網通信。目前市場上大部分以太網控制器采用的封裝均超過80引腳,并且大部分是為個人計算機系統設計的,微芯公司推出符合IEEE802.3協議的ENC28J60只有28引腳,既提供了相應的通信功能,又大大簡化相關的設計,減小了占板空間,只需4條連線即可與主控單片機連接。ENC28J60使用SPI連接接口方式,使得小型單片機也能具有網絡連接功能,內部由于集成媒體接入控制器(MAC)和物理接口收發器(PHY)而無需其他外設,并且具有可編程過濾功能,可自動評價、接收或拒收多種信息包,減輕了主控單片機的處理負擔,內部繼承可編程的8KB雙端口SRAM緩沖器,操作靈活方便。以太網通信接口電路原理圖如圖2所示。

圖2 以太網通信接口電路原理圖
在實際應用中,ENC28J60的物理端口與隔離變壓器HR9011105A連接時必須符合IEEE802.3對物理層規范的要求,如RJ45的插孔與隔離變壓器的間隔應盡量小,輸出和輸入差分信號對的走線要有很好的隔離。
PIC24HJ64GP506單片機內部具有18路可配置10位/12位的A/D輸入通道,當傳感器信號經過調理后,可以方便的進行內部的模數轉換,其中AD1CON1寄存器中的10位或12位工作模式(AD12B)位允許用戶應用程序對每個ADC模塊進行配置,可以配置為10位、4采樣/保持ADC或是12位、1采樣/保持ADC,本系統由于輸入信號精度要求不高,故設置為前一種情況。
監控系統中的一些重要參數,如報警值會需要修改,將這些重要參數保存在單片機RAM中是不可靠的,系統掉電參數就會消失。而如果存儲在ROM中,每次參數需要燒錄才可以。為了防止這一情況的發生,系統設計了參數存儲模塊。通過單片機自帶的I2C總線連接的電可擦可編程只讀存儲器EEPROM芯片,數據可以采用電脈沖擦除,系統就可以保存更改參數了。
報警調節模塊由燈光報警和蜂鳴器報警組成。當監控到相應的溫度、三相電壓或壓力信號發生異常時,系統判斷是否超過報警值。如果超過會觸發相應的軟件執行模塊,輸出控制報警的信號,否則采取降溫降壓等調節信號給執行機構,使設備恢復到正常工作環境,來達到工業設備既能避免劇烈工作環境變換帶來的損失,又能在一定范圍內自動恢復調節的目的。
系統主流程:通電、初始化、從EEPROM中讀取重要的參數,數據采集與A/D轉換,將采集的數據與預存在單片機內部的報警值數據進行比較,如果超過報警值,相應的異常標志位將會置位,當監控到有異常標志位置位值時,會輸出相應的報警、控制執行機構信號,進而采取報警、脫扣等一系列措施,其工作流程如圖3所示。

圖3 系統流程示意圖
以太網通信模塊程序主要包括模塊的初始化、發送數據包和接收數據包三個方面。
a)模塊的初始化
在ENC28J60接收和發送數據之前,需要對芯片的寄存器進行設置和初始化,具體操作步驟示意圖見圖4(a)。
b)模塊的發送數據
在ENC28J60發送數據之前,必須監控發送邏輯是否為空,當發送邏輯為空的時候才可以進行發送數據操作,否則不能發送具體步驟示意圖,如圖4(b)所示。
c)模塊的接收數據
在中斷類型中只啟用了接收數據包待處理中斷,因此當產生中斷時無需查詢中斷類型,直接進入讀取數據包階段。讀取數據的操作步驟示意圖見圖4(c)所示。

圖4 以太網收發操作步驟示意圖
在工業監控系統中,當信號發生異常時,如果異常信號大于預警值且小于報警值,可以靠控制算法來控制執行機構,使工作設備恢復到正常工作環境下,本文采用了數字PID控制算法。具體的調節過程為:被控制量經過傳感器采集、信號處理后傳入單片機,經過單片機內部A/D轉換后,判斷信號是否發生異常,當信號發生異常但異常值信號大于預警值且小于報警值,則將采集值與給定值比較得到的差值量輸入到PID控制器,經數字PID控制器調節后輸出調節電壓,調節電壓通過D/A轉換后,經驅動電路輸出調節電壓去控制執行機構(控制對象),從而達到被控對象的相應要求。數字PID的控制原理圖如圖5所示。

本文設計了一種基于美國微芯公司的新型16位單片機和最小以太網控制器為基礎的工業監控系統,相對于采用其他方案的監控系統,該系統所占體積小,節約了占板空間和系統成本,經濟又不失為實用。在實際工作環境中,可以應用于機械、紡織等多種工作場合。
[1]祁樹勝.SPI接口以太網控制器ENC28J60及應用[J].微計算機信息,2006(22):266-268.
[2][意]Lucio Di Jasio著,李中華,張雨濃,黃曉紅.《16位單片機C語言編程-基于PIC24》[M]北京:人民郵電出版社,2010.
[3]于海生,等.計算機控制技術[M].北京:機械工業出版社.