引言
目前,煤礦瓦斯、負(fù)壓及電動(dòng)機(jī)、供電等自動(dòng)化監(jiān)控裝置已在各大礦井廣泛采用,甚至在個(gè)別礦井已組網(wǎng)運(yùn)行。但是,各自動(dòng)化監(jiān)控裝置絕大部分仍然采用RS232、RS485或CAN總線組網(wǎng)方式,嚴(yán)重影響了礦井安全監(jiān)控系統(tǒng)運(yùn)行的實(shí)時(shí)性、可靠性、交互性。而工業(yè)以太網(wǎng)從10 M、100 M帶寬發(fā)展到現(xiàn)在的千兆網(wǎng),已成為礦井監(jiān)控系統(tǒng)的主要組網(wǎng)方式。
因此,如何使現(xiàn)有的基于RS232 、RS485 或CAN 總線的串口設(shè)備以以太網(wǎng)的方式組網(wǎng)運(yùn)行,是目前需要解決的一個(gè)問(wèn)題。本文介紹一種基于S3C44B0的串口服務(wù)器系統(tǒng),該服務(wù)器系統(tǒng)可將串口數(shù)據(jù)轉(zhuǎn)換成TCP/ IP 協(xié)議進(jìn)行數(shù)據(jù)傳輸,具有廣泛的應(yīng)用前景。
1、系統(tǒng)硬件結(jié)構(gòu)
基于S3C44B0 的串口服務(wù)器系統(tǒng)硬件結(jié)構(gòu)如圖1 所示。
圖1 基于S3C44B0 的串口服務(wù)器系統(tǒng)硬件結(jié)構(gòu)圖
該系統(tǒng)主要功能: 從串口設(shè)備讀取數(shù)據(jù),將所得到的數(shù)據(jù)進(jìn)行TCP/ IP 協(xié)議封裝,通過(guò)RJ 45 的接口發(fā)送到上位機(jī),與上位機(jī)的服務(wù)器程序進(jìn)行交互;同時(shí),將上位機(jī)發(fā)送給串口服務(wù)器的數(shù)據(jù)轉(zhuǎn)發(fā)到串口,進(jìn)而通過(guò)網(wǎng)絡(luò)遠(yuǎn)程監(jiān)控現(xiàn)場(chǎng)的串口設(shè)備。
RS232 接口電路如圖2 所示。在本系統(tǒng)中,擴(kuò)展出2 個(gè)獨(dú)立的串行口,該串行口可以三線通信或者與Modem 通信。該接口采用2 片MAX3232C芯片,其中MAX3232C(1) 負(fù)責(zé)串行口發(fā)送接收信號(hào)的電平轉(zhuǎn)換,MAX3232C (2) 完成握手信號(hào)的電平轉(zhuǎn)換。處理器S3C44B0 的C10~C15 分別作為nRTS1 、nCTS1 、TXD1 、RXD1 、nRTS0 、nCTS0 信號(hào),PE1 和PE2 作為T(mén)XD0 和RXD0 信號(hào)。
圖2 RS232 接口電路圖
以太網(wǎng)控制器采用在嵌入式領(lǐng)域應(yīng)用廣泛且性價(jià)比較高的網(wǎng)絡(luò)控制芯片RTL8019AS ,其接口電路如圖3 所示。
圖3 以太網(wǎng)控制器接口電路圖
圖3 中,RTL8019AS 采用IN T0 中斷方式, 連到S3C44B0 的外部中斷引腳IN T1 。數(shù)據(jù)總線寬度為16 位,因此,RTL8019AS 的引腳IOCS16B 上拉。
RTL8019AS 有3 種工作方式: 跳線方式, 該方式I/ O和中斷由跳線決定;即插即用方式( PnP) , 該方式由軟件進(jìn)行自動(dòng)配置; 免跳線方式,該方式I/ O和中斷由外接的EEPROM93C46 中的內(nèi)容決定。
使用何種工作方式由RTL8019AS 的引腳J P 決定,圖3 中引腳J P 上拉, 即選擇跳線方式。
RTL8019AS 的引腳IOS2 上拉,引腳IOS0 、IOS1 、IOS3 懸空(引腳IOS0~I(xiàn)OS4 在圖3 中未畫(huà)出) ,當(dāng)引腳IOS0 、IOS1 、IOS3 懸空時(shí),每個(gè)引腳里有1 個(gè)100 kΩ 的下拉電阻,因此,引腳IOS0 、IOS1 、IOS3為低電平, RTL8019AS 的I/ O 基址為200H。
RTL8019AS 片選端AEN 接S3C44B0 的nGCS5 也就是Bank6 ,由于數(shù)據(jù)總線寬度為16 位, S3C44B0的引腳A1 連接RTL8019AS 的引腳SA0 ,因此,對(duì)于S3C44B0 來(lái)說(shuō), RTL8019AS 的I/ O 基址為0X0A000400H。20F001N 為網(wǎng)卡濾波器,其內(nèi)部包含1 對(duì)低通濾波器和1 對(duì)隔離變壓器,直接與RJ 45相連。
2、系統(tǒng)軟件結(jié)構(gòu)
系統(tǒng)軟件建立在Linux 2. 4 內(nèi)核的uClinux 操作系統(tǒng)基礎(chǔ)上,采用模塊化設(shè)計(jì),其結(jié)構(gòu)組成模塊如圖4 所示。系統(tǒng)軟件的核心為串口和以太網(wǎng)處理模塊,串口服務(wù)器通過(guò)這2 個(gè)模塊即可實(shí)現(xiàn)串口設(shè)備的聯(lián)網(wǎng)。
圖4 系統(tǒng)軟件結(jié)構(gòu)組成模塊圖
由于uClinux 內(nèi)核中含有串口、網(wǎng)口的通用驅(qū)動(dòng)程序,因此,不必再寫(xiě)關(guān)于串口及網(wǎng)絡(luò)驅(qū)動(dòng)程序,只需在內(nèi)核移植時(shí),根據(jù)硬件電路對(duì)uClinux 進(jìn)行裁減移植后,便可實(shí)現(xiàn)對(duì)串口及網(wǎng)絡(luò)的應(yīng)用編程功能。
uClinux 的設(shè)備管理和文件系統(tǒng)緊密結(jié)合,各種設(shè)備都以文件的形式存放在/ dev 目錄下,稱(chēng)為設(shè)備文件。應(yīng)用程序可以打開(kāi)、關(guān)閉和讀寫(xiě)這些設(shè)備文件,完成對(duì)設(shè)備的操作,就像操作普通的數(shù)據(jù)文件一樣。所以訪問(wèn)串口,只需要打開(kāi)相應(yīng)的設(shè)備文件即可。在uClinux 下,串行口COM1 和COM2 對(duì)應(yīng)的設(shè)備分別為/ dev/ t tyS0 和dev/ t tyS1 。串口的編程步驟如下:
(1) 打開(kāi)串口, 采用open ( ) 函數(shù)f d = open(“ / dev/ t tyS0” ,O_RDWR| O_NOCTTY) ;(2) 若打開(kāi)成功, 則對(duì)串口進(jìn)行參數(shù)設(shè)置:
tcgetat t r ( f d , &oldtio) ;(3) 清除串口緩沖區(qū),因?yàn)榇诮邮蘸桶l(fā)送數(shù)據(jù)是從上一組數(shù)據(jù)之后的緩沖區(qū)開(kāi)始存放的,為了使先前的數(shù)據(jù)不會(huì)重復(fù)出現(xiàn),故清除緩沖區(qū)tcflush( f d , TCIFLUSH) ;(4) 讀寫(xiě)串口,讀串口采用read ( f d ,sbuf ,B U F_L EN) 函數(shù),寫(xiě)串口采用write ( f d , sbuf , B U F_L EN) ,其中f d 為設(shè)備打開(kāi)返回的值, sbuf 為存放發(fā)送或接收數(shù)據(jù)的數(shù)據(jù)組, B U F_ L EN 為數(shù)據(jù)的個(gè)數(shù);(5) 讀寫(xiě)完成后關(guān)閉串口,close ( f d) 。
網(wǎng)絡(luò)通信本質(zhì)就是進(jìn)程間的通信,網(wǎng)絡(luò)地址和端口號(hào)結(jié)合在一起,才可以共同確定整個(gè)Internet中的1 個(gè)網(wǎng)絡(luò)進(jìn)程,網(wǎng)絡(luò)進(jìn)程由套接字確定,程序采用Socket 表示。套接字最常用的有2 種:流式套接字( St ream Socket ) 和數(shù)據(jù)報(bào)套接字(DatagramSocket) 。這2 種套接字的區(qū)別在于它們使用不同的協(xié)議。流式套接字使用TCP 協(xié)議,數(shù)據(jù)報(bào)套接字使用UDP 協(xié)議。本系統(tǒng)中采用的協(xié)議為T(mén)CP 協(xié)議。具體通信步驟如下:
(1) 由socket () 函數(shù)創(chuàng)建偵聽(tīng)套接字;
(2) 通過(guò)bind ( ) 函數(shù)為該套接字分配1 個(gè)地址;
(3) 使用listen () 函數(shù)建立和客戶機(jī)的連接,告訴套接字開(kāi)始偵聽(tīng)客戶機(jī)的連接請(qǐng)求;
(4) 由accept ( ) 函數(shù)完成實(shí)際的連接,創(chuàng)建連接套接字,原來(lái)的偵聽(tīng)套接字將會(huì)繼續(xù)偵聽(tīng)新的連接請(qǐng)求,而新的連接請(qǐng)求可能會(huì)通過(guò)accept ( ) 函數(shù)的再一次調(diào)用而獲得接受;
(5) 創(chuàng)建連接套接字成功后,便可完成數(shù)據(jù)的發(fā)送與接收任務(wù),數(shù)據(jù)接收由recv () 函數(shù)完成,發(fā)送由send () 函數(shù)完成。
本系統(tǒng)在主程序中創(chuàng)建2 個(gè)關(guān)鍵的線程完成數(shù)據(jù)的傳送任務(wù), 分別為Serialt hread 線程和Ethernet t hread 線程。Serialt hread 線程的功能是將串口接收到的數(shù)據(jù)流通過(guò)網(wǎng)口發(fā)送出去, 而Ethernet t hread 線程的功能是將網(wǎng)口發(fā)送過(guò)來(lái)的數(shù)據(jù)流通過(guò)串口發(fā)送出去。基于S3C44B0 的串口服務(wù)器系統(tǒng)主程序流程如圖5 所示。
圖5 基于S3C44B0 的串口服務(wù)器系統(tǒng)主程序流程圖
結(jié)語(yǔ)
基于S3C44B0 的串口服務(wù)器系統(tǒng)可以將零散的串口設(shè)備連入以太網(wǎng),實(shí)現(xiàn)資源的共享以及遠(yuǎn)程控制功能,基本上滿足現(xiàn)代礦井各監(jiān)控單元的組網(wǎng)需求。該系統(tǒng)控制靈活、成本低、具有較大的擴(kuò)展性,便于實(shí)現(xiàn)各種復(fù)雜的控制功能。目前該系統(tǒng)已應(yīng)用到煤礦供電系統(tǒng)饋電開(kāi)關(guān)的以太網(wǎng)監(jiān)控系統(tǒng)中,大大促進(jìn)了煤礦的生產(chǎn)和網(wǎng)絡(luò)化。
-
電動(dòng)機(jī)
+關(guān)注
關(guān)注
74文章
4109瀏覽量
96205 -
RS485
+關(guān)注
關(guān)注
39文章
1156瀏覽量
82291 -
RS232
+關(guān)注
關(guān)注
13文章
747瀏覽量
94318
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
評(píng)論