基于ARM的工業(yè)現(xiàn)場在線監(jiān)控系統(tǒng)設(shè)計_第1頁
基于ARM的工業(yè)現(xiàn)場在線監(jiān)控系統(tǒng)設(shè)計_第2頁
基于ARM的工業(yè)現(xiàn)場在線監(jiān)控系統(tǒng)設(shè)計_第3頁
基于ARM的工業(yè)現(xiàn)場在線監(jiān)控系統(tǒng)設(shè)計_第4頁
基于ARM的工業(yè)現(xiàn)場在線監(jiān)控系統(tǒng)設(shè)計_第5頁
全文預(yù)覽已結(jié)束

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)

文檔簡介

1、基于ARM的工業(yè)現(xiàn)場在線監(jiān)控系統(tǒng)設(shè)計高羅卿(常州輕工職業(yè)技術(shù)學(xué)院,常州 )摘要:針對遠(yuǎn)程監(jiān)控系統(tǒng)中,對網(wǎng)絡(luò)通訊服務(wù)和數(shù)據(jù)采集與邏輯控制的實時性問題進(jìn)行了研究,將系統(tǒng)分成兩個模塊,一個是以太網(wǎng)通訊模塊,一個是根據(jù)實際工況需要設(shè)計的數(shù)據(jù)采集與控制模塊。兩個模塊之間通過CAN總線通訊。該系統(tǒng)滿足了現(xiàn)場的實際需要,解決了以太網(wǎng)通訊和現(xiàn)場實時監(jiān)控之間的矛盾,也符合嵌入式系統(tǒng)模塊化設(shè)計的理念,易于擴展和修改。關(guān)鍵詞:自動控制技術(shù);實時監(jiān)控;嵌入式系統(tǒng);以太網(wǎng)TP2Design of On-line Monitoring System of industrial field based on ARM Gao

2、 Luoqing(Changzhou institute of light industry technology, Changzhou )Abstract: For remote monitoring systems, network communications services and data acquisition and real-time logic control problem is studied. The system is divided into two modules, one Ethernet communication module, one is the da

3、ta acquisition and control module based on the actual working conditions. The communication between the two modules through CAN bus. The system meets the needs of the actual working conditions,and resolved the conflict between the Ethernet communications and the real-time monitoring. The embedded sy

4、stem in line with the concept of modular design, easy to extend and modify. Keywords: Automatic control technology, real-time monitoring, embedded system, ethernet0 引言隨著工業(yè)現(xiàn)場控制的智能化的發(fā)展,以太網(wǎng)應(yīng)用于工業(yè)控制方面得到了廣泛的應(yīng)用。但由于在嵌入式設(shè)備上通過軟件實現(xiàn)TCP/IP協(xié)議棧和小型的嵌入式系統(tǒng),消耗了處理器大部分的資源和處理時間,使得現(xiàn)場監(jiān)控的實時性得不到足夠的保證。1系統(tǒng)結(jié)構(gòu)圖1 系統(tǒng)結(jié)構(gòu)圖收稿日期:2011-9

5、-20作者簡介:高羅卿(1981年-),女,講師。E-mail:glqcyz本系統(tǒng)的結(jié)構(gòu)圖見圖1。在本系統(tǒng)中,遠(yuǎn)程監(jiān)控室通過上位服務(wù)軟件發(fā)送控制命令,通過Internet與現(xiàn)場以太網(wǎng)通訊模塊建立連接,通過命令的解析和執(zhí)行,以太網(wǎng)通訊模塊與采集控制模塊通過CAN總線,獲取采集信息和分發(fā)控制命令,然后以太網(wǎng)通訊模塊將采集器的數(shù)據(jù),參數(shù)等有用信息,上傳給上位服務(wù)器端。本系統(tǒng)的硬件結(jié)構(gòu)圖見圖2。系統(tǒng)的MCU采用ARM7內(nèi)核的芯片LPC2136,該芯片具有256K的FLASH,32K的RAM,多種串行通訊接口。網(wǎng)絡(luò)控制器采用的是Microchip公司的ENC28J60,該芯片是帶有行業(yè)標(biāo)準(zhǔn)串行外設(shè)接口(

6、Serial Peripheral Interface,SPI)的獨立以太網(wǎng)控制器。它可作為任何配備有SPI 的控制器的以太網(wǎng)接口。圖2 系統(tǒng)硬件結(jié)構(gòu)圖CAN總線采用的是Microchip公司推出的MCP2515,是具有SPI接口的獨立CAN控制器。它完全支持CAN V2.0B技術(shù)規(guī)范,通信速率最高可達(dá)1 Mbps,內(nèi)含3個發(fā)送緩沖器、2個接收緩沖器、6個29位驗收濾波寄存器和2個29位驗收屏蔽寄存器。它的SPI接口時鐘頻率最高可達(dá)10 MHz,可滿足一個SPI主機接口擴展多路CAN總線接口的需要。 采集控制模塊負(fù)責(zé)現(xiàn)場實時數(shù)據(jù)的采集和處理,以及所需控制邏輯的實時執(zhí)行,然后將采集量的結(jié)果和控制

7、邏輯的結(jié)果通過MCP2515的CAN總線上傳給網(wǎng)絡(luò)通訊模塊。在網(wǎng)絡(luò)通訊模塊中,將開辟一個虛擬的設(shè)備狀態(tài)緩沖,用于保存當(dāng)前的采集控制模塊的狀態(tài)。網(wǎng)絡(luò)通訊模塊還可通過RS232總線與現(xiàn)場的智能設(shè)備通訊,然后綜合結(jié)果,響應(yīng)上位服務(wù)器端的命令和請求,回復(fù)相應(yīng)的數(shù)據(jù)。2網(wǎng)絡(luò)通訊模塊 以太網(wǎng)控制器ENC28J60,符合IEEE 802.3 的全部規(guī)范,采用了一系列包過濾機制以對傳入數(shù)據(jù)包進(jìn)行限制??梢栽O(shè)置一些不同的過濾器,自動拒絕不需要的數(shù)據(jù)包,從而最大限度地降低主控制器的處理工作量。提供了一個內(nèi)部DMA 模塊,以實現(xiàn)快速數(shù)據(jù)吞吐和硬件支持的IP校驗和計算。與主控制器的通信通過兩個中斷引腳和SPI 實現(xiàn),

8、數(shù)據(jù)傳輸速率高達(dá)10 Mb/s。兩個專用的引腳用于連接LED,進(jìn)行網(wǎng)絡(luò)活動狀態(tài)指示。與MCU的連接圖見圖3。圖3 ENC28J60與MCU的硬件連接圖ENC28J60 的工作頻率為25 MHz。有一個8KB的緩沖器包含供以太網(wǎng)控制器使用的發(fā)送和接收存儲器,分成單獨的接收和發(fā)送緩沖空間。 主控制器使用SPI 接口可以對發(fā)送和接收存儲器的容量和位置進(jìn)行編程。本系統(tǒng)采用帶有網(wǎng)絡(luò)變壓器的RJ-45接頭HRA,此接頭還包含有兩個指示燈,用于和ENC28J60的LEDA和LEDB連接,指示網(wǎng)絡(luò)的連接和發(fā)送接收狀態(tài)。連接圖見圖4。圖4 RJ-45的連接圖3系統(tǒng)軟件設(shè)計本系統(tǒng)的網(wǎng)絡(luò)通訊部分軟件采用了嵌入式操作

9、系統(tǒng)UCOS-II和采用了源碼開放的輕型網(wǎng)絡(luò)協(xié)議棧LWIP,具體的工作可分為3個步驟:1,嵌入式操作系統(tǒng)UCOS和網(wǎng)絡(luò)協(xié)議棧LWIP的移植工作。2,ENC28J60的設(shè)備驅(qū)動開發(fā)。3,網(wǎng)絡(luò)上層端口服務(wù)程序的開發(fā)。圖5 系統(tǒng)軟件的架構(gòu)3.1軟件平臺的移植系統(tǒng)軟件平臺的移植工作主要有兩個方面:一個是操作系統(tǒng)UCOS的移植,一個是協(xié)議棧LWIP的移植。LWIP協(xié)議棧把所有與硬件OS 編譯器相關(guān)的部份放在/src/arch目錄下,因此LWIP在UCOS上的實現(xiàn)就是修改這個目錄下的文件。(1)與CPU或編譯器相關(guān)的include文件在/src/arch/include/arch目錄下cc.h,cpu.h

10、,perf.h中有一些與CPU或編譯器相關(guān)的定義。(2)與操作系統(tǒng)相關(guān)部份sys_arch.c中的內(nèi)容是與OS相關(guān)的一些結(jié)構(gòu)和函數(shù)主要可以分為四個部分:sys_sem_t 數(shù)據(jù)結(jié)構(gòu)及信號量函數(shù)struct sys_sem_t sys_sem_newsys_sem_free sys_sem_signalsys_arch_sem_waitsys_mbox_t 消息函數(shù)sys_mbox_new sys_mbox_freesys_mbox_post sys_arch_mbox_fetch系統(tǒng)超時函數(shù)struct sys_timeouts *sys_arch_timeouts(void)創(chuàng)建新線程函數(shù)v

11、oid sys_thread_new(void (* thread)(void*arg), void *arg)(3)lib_arch中庫函數(shù)的實現(xiàn)u16_t htons(u16_t n) u16_t ntohs(u16_t n)u32_t htonl(u32_t n) u32_t ntohl(u32_t n)int strlen(const char *str) int strncmp(const char *str1, const char *str2, int len)void bcopy(const void *src, void *dest, intlen) void bzero(v

12、oid *data, int n)前四個函數(shù)通常由用戶自己實現(xiàn),gcc的lib庫里已經(jīng)有了后四個函數(shù)。3.2 ENC28J60的設(shè)備驅(qū)動開發(fā)在軟件平臺的移植完成后,主要的工作就是網(wǎng)絡(luò)驅(qū)動程序的編寫了,驅(qū)動的移植主要就是完成ethernetif.c的工作。LWIP協(xié)議棧已經(jīng)給好了驅(qū)動的接口。struct netif struct netif *next;struct ip_addr ip_addr;struct ip_addr netmask;struct ip_addr gw;err_t (* input)(struct pbuf *p, struct netif *inp);err_t (*

13、 output)(struct netif *netif, struct pbuf *p,struct ip_addr *ipaddr; err_t (* linkoutput)(struct netif *netif, struct pbuf *p);void *state;#if LWIP_DHCPstruct dhcp *dhcp;#endifunsigned char hwaddr_len;unsigned char hwaddrNETIF_MAX_HWADDR_LEN;u16_t mtu;char name2;u8_t num;u8_t flags;其中主要就是:err_t (* i

14、nput)(struct pbuf *p, struct netif *inp);這個是被驅(qū)動調(diào)用的,傳遞一個數(shù)據(jù)包給TCP/IP棧。err_t (* output)(struct netif *netif, struct pbuf *p,struict ip_addr *ipaddr);這個是被IP模塊調(diào)用的,向以太網(wǎng)上發(fā)送一個數(shù)據(jù)包,函數(shù)要先通過IP地址獲得解決硬件地址,然后發(fā)包。err_t (* linkoutput)(struct netif *netif, struct pbuf *p);這個是直接發(fā)送數(shù)據(jù)包的接口。相應(yīng)的LWIP在ethernetif.c里面給了幾個函數(shù)框架,這個文

15、件相當(dāng)于一個硬件抽象層。static void low_level_init(struct netif *netif);網(wǎng)卡初始化函數(shù)。static err_t low_level_output(struct netif *netif, struct pbuf *p);鏈路層發(fā)送函數(shù),實現(xiàn)err_t (* linkoutput)接口。static struct pbuf *low_level_input(struct netif *netif);得到一整幀數(shù)據(jù)。static err_t ethernetif_output(struct netif *netif, struct pbuf *p,

16、struct ip_addr *ipaddr);實現(xiàn)發(fā)送線程,實現(xiàn)err_t (* output)接口。static void ethernetif_input(struct netif *netif);實現(xiàn)接收線程,識別數(shù)據(jù)包是ARP包還是IP包。err_t ethernetif_init(struct netif *netif);初始化底層接口。本文在寫ENC28J60的驅(qū)動的時候,重新建了個實際的網(wǎng)絡(luò)硬件控制的文件ethernet.c,在此文件里提供幾個主要的函數(shù):void EMACInit( void );硬件的初始化。void EMACPacketSend ( u8_t *buffe

17、r, u16_t length );用來將buffer里面的包復(fù)制到網(wǎng)絡(luò)設(shè)備的發(fā)送緩沖里面,發(fā)送。u16_t EMACPacketReceive ( u8_t *buffer, u16_t max_length );用來將網(wǎng)絡(luò)設(shè)備的接收緩沖里面的包數(shù)據(jù)復(fù)制到buffer里面。u16_t EMACPacketLength ( u16_t max_length );獲得包長度。最后用ethernet.c里函數(shù)完成ethernetif.c里的框架。這樣移植ENC28J60的驅(qū)動部分就會顯得清晰很多。3.3網(wǎng)絡(luò)上層端口服務(wù)程序的開發(fā)LWIP提供三種API接口函數(shù):1.RAW API。 2.lwip A

18、PI。3.BSD API。對于多任務(wù)系統(tǒng)而言,因為lwip采用的是將TCP/IP協(xié)議放在一個單獨的線程里面,那個線程是tcpip_thread。采用RAW API回調(diào)技術(shù),就得把應(yīng)用層程序?qū)懺趖cpip_thread這個線程里面,作為同一個任務(wù)運行。而采用lwip API,就可以將TCP/IP協(xié)議和應(yīng)用層程序放在不同的任務(wù)里面,通過調(diào)api_lib.c提供的函數(shù),編寫相應(yīng)的應(yīng)用層代碼。本文采用這種方式。下面的程序是個簡單的Websever的服務(wù)程序代碼。void TaskHttp(void *pdata)u8_t datanum; struct ip_addr ipaddr; struct n

19、etconn *conn, *newconn; pdata = pdata;IP4_ADDR(&ipaddr, 192,168,0,88);conn = netconn_new(NETCONN_TCP);/創(chuàng)建一個連接。netconn_bind(conn, &ipaddr, 80);/綁定IP地址和服務(wù)端口號。netconn_listen(conn);/監(jiān)聽while(TRUE)newconn = netconn_accept(conn); /等待這個連接的信號量。if(newconn != NULL) struct netbuf *newnetbuf; newnetbuf = netconn_recv(newconn);/獲得這個連接的指針。 if(newnetbuf != NULL) char *pnow; char *data;int len=0; netbuf_data(newnetbuf,&data,&len);/data指向數(shù)據(jù)處。 . /此間為對網(wǎng)絡(luò)數(shù)據(jù)的處理。netbuf_delete(newnetbuf);/使用完畢后刪除這個結(jié)構(gòu)。netconn_close(newconn);/使用完后關(guān)閉連接。while(netconn_delet

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論