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