引言
目前,煤礦瓦斯、負壓及電動機、供電等自動化監(jiān)控裝置已在各大礦井廣泛采用,甚至在個別礦井已組網運行。但是,各自動化監(jiān)控裝置絕大部分仍然采用RS232、RS485或CAN總線組網方式,嚴重影響了礦井安全監(jiān)控系統(tǒng)運行的實時性、可靠性、交互性。而工業(yè)以太網從10 M、100 M帶寬發(fā)展到現(xiàn)在的千兆網,已成為礦井監(jiān)控系統(tǒng)的主要組網方式。
因此,如何使現(xiàn)有的基于RS232 、RS485 或CAN 總線的串口設備以以太網的方式組網運行,是目前需要解決的一個問題。本文介紹一種基于S3C44B0的串口服務器系統(tǒng),該服務器系統(tǒng)可將串口數據轉換成TCP/ IP 協(xié)議進行數據傳輸,具有廣泛的應用前景。
1、系統(tǒng)硬件結構
基于S3C44B0 的串口服務器系統(tǒng)硬件結構如圖1 所示。
圖1 基于S3C44B0 的串口服務器系統(tǒng)硬件結構圖
該系統(tǒng)主要功能: 從串口設備讀取數據,將所得到的數據進行TCP/ IP 協(xié)議封裝,通過RJ 45 的接口發(fā)送到上位機,與上位機的服務器程序進行交互;同時,將上位機發(fā)送給串口服務器的數據轉發(fā)到串口,進而通過網絡遠程監(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 接口電路圖
以太網控制器采用在嵌入式領域應用廣泛且性價比較高的網絡控制芯片RTL8019AS ,其接口電路如圖3 所示。

圖3 以太網控制器接口電路圖
圖3 中,RTL8019AS 采用IN T0 中斷方式, 連到S3C44B0 的外部中斷引腳IN T1 。數據總線寬度為16 位,因此,RTL8019AS 的引腳IOCS16B 上拉。
RTL8019AS 有3 種工作方式: 跳線方式, 該方式I/ O和中斷由跳線決定;即插即用方式( PnP) , 該方式由軟件進行自動配置; 免跳線方式,該方式I/ O和中斷由外接的EEPROM93C46 中的內容決定。
使用何種工作方式由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 ,由于數據總線寬度為16 位, S3C44B0的引腳A1 連接RTL8019AS 的引腳SA0 ,因此,對于S3C44B0 來說, RTL8019AS 的I/ O 基址為0X0A000400H。20F001N 為網卡濾波器,其內部包含1 對低通濾波器和1 對隔離變壓器,直接與RJ 45相連。
2、系統(tǒng)軟件結構
系統(tǒng)軟件建立在Linux 2. 4 內核的uClinux 操作系統(tǒng)基礎上,采用模塊化設計,其結構組成模塊如圖4 所示。系統(tǒng)軟件的核心為串口和以太網處理模塊,串口服務器通過這2 個模塊即可實現(xiàn)串口設備的聯(lián)網。

圖4 系統(tǒng)軟件結構組成模塊圖
由于uClinux 內核中含有串口、網口的通用驅動程序,因此,不必再寫關于串口及網絡驅動程序,只需在內核移植時,根據硬件電路對uClinux 進行裁減移植后,便可實現(xiàn)對串口及網絡的應用編程功能。
uClinux 的設備管理和文件系統(tǒng)緊密結合,各種設備都以文件的形式存放在/ dev 目錄下,稱為設備文件。應用程序可以打開、關閉和讀寫這些設備文件,完成對設備的操作,就像操作普通的數據文件一樣。所以訪問串口,只需要打開相應的設備文件即可。在uClinux 下,串行口COM1 和COM2 對應的設備分別為/ dev/ t tyS0 和dev/ t tyS1 。串口的編程步驟如下:
(1) 打開串口, 采用open ( ) 函數f d = open(“ / dev/ t tyS0” ,O_RDWR| O_NOCTTY) ;(2) 若打開成功, 則對串口進行參數設置:
tcgetat t r ( f d , &oldtio) ;(3) 清除串口緩沖區(qū),因為串口接收和發(fā)送數據是從上一組數據之后的緩沖區(qū)開始存放的,為了使先前的數據不會重復出現(xiàn),故清除緩沖區(qū)tcflush( f d , TCIFLUSH) ;(4) 讀寫串口,讀串口采用read ( f d ,sbuf ,B U F_L EN) 函數,寫串口采用write ( f d , sbuf , B U F_L EN) ,其中f d 為設備打開返回的值, sbuf 為存放發(fā)送或接收數據的數據組, B U F_ L EN 為數據的個數;(5) 讀寫完成后關閉串口,close ( f d) 。
網絡通信本質就是進程間的通信,網絡地址和端口號結合在一起,才可以共同確定整個Internet中的1 個網絡進程,網絡進程由套接字確定,程序采用Socket 表示。套接字最常用的有2 種:流式套接字( St ream Socket ) 和數據報套接字(DatagramSocket) 。這2 種套接字的區(qū)別在于它們使用不同的協(xié)議。流式套接字使用TCP 協(xié)議,數據報套接字使用UDP 協(xié)議。本系統(tǒng)中采用的協(xié)議為TCP 協(xié)議。具體通信步驟如下:
(1) 由socket () 函數創(chuàng)建偵聽套接字;
(2) 通過bind ( ) 函數為該套接字分配1 個地址;
(3) 使用listen () 函數建立和客戶機的連接,告訴套接字開始偵聽客戶機的連接請求;
(4) 由accept ( ) 函數完成實際的連接,創(chuàng)建連接套接字,原來的偵聽套接字將會繼續(xù)偵聽新的連接請求,而新的連接請求可能會通過accept ( ) 函數的再一次調用而獲得接受;
(5) 創(chuàng)建連接套接字成功后,便可完成數據的發(fā)送與接收任務,數據接收由recv () 函數完成,發(fā)送由send () 函數完成。
本系統(tǒng)在主程序中創(chuàng)建2 個關鍵的線程完成數據的傳送任務, 分別為Serialt hread 線程和Ethernet t hread 線程。Serialt hread 線程的功能是將串口接收到的數據流通過網口發(fā)送出去, 而Ethernet t hread 線程的功能是將網口發(fā)送過來的數據流通過串口發(fā)送出去?;赟3C44B0 的串口服務器系統(tǒng)主程序流程如圖5 所示。

圖5 基于S3C44B0 的串口服務器系統(tǒng)主程序流程圖
結語
基于S3C44B0 的串口服務器系統(tǒng)可以將零散的串口設備連入以太網,實現(xiàn)資源的共享以及遠程控制功能,基本上滿足現(xiàn)代礦井各監(jiān)控單元的組網需求。該系統(tǒng)控制靈活、成本低、具有較大的擴展性,便于實現(xiàn)各種復雜的控制功能。目前該系統(tǒng)已應用到煤礦供電系統(tǒng)饋電開關的以太網監(jiān)控系統(tǒng)中,大大促進了煤礦的生產和網絡化。
-
電動機
+關注
關注
75文章
4204瀏覽量
101598 -
RS485
+關注
關注
40文章
1338瀏覽量
86084 -
RS232
+關注
關注
13文章
876瀏覽量
98468
發(fā)布評論請先 登錄
跪求S3c44b0 u***驅動
基于S3C44B0和μCOS-II 的CAN節(jié)點的設計
基于S3C44B0的U-Boot啟動分析和移植實現(xiàn)
S3C44B0中文手冊,S3C44B0中文資料
為何選用SAMSUNG S3C44B0進行開發(fā)
S3C44B0中文數據手冊
S3C44B0在高精度直流開關電源中的應用
基于S3C44B0的串口服務器系統(tǒng)的設計
S3C44B0的初始化程序的理解
基于S3C44B0開發(fā)板的圖像采集方法研究
基于S3C44B0開發(fā)板進行Blob的移植操作和步驟
串口服務器系統(tǒng)中S3C44B0的應用設計
評論