1 引言
現(xiàn)代遠程測控任務要求能對各種工業(yè)系統(tǒng)進行遠程監(jiān)視、控制以及遠程數(shù)據(jù)傳送,傳統(tǒng)的集中測控系統(tǒng)已經(jīng)滿足不了復雜、遠程(異地)和范圍較大的分布式測控任務的需求。而且多數(shù)的工業(yè)控制和通信設備中,采用的是符合rs232標準的串行口設備。在internet技術向全球各個領域普及的同時,如何將串行口的數(shù)據(jù)轉發(fā)到網(wǎng)絡上,實現(xiàn)設備的遠程控制、數(shù)據(jù)的遠程傳輸便成了一個亟待解決的問題。同時,考慮到成本問題,以往設備又不可能全部淘汰。因此,本文提出一種基于tcp/ip的串口轉換網(wǎng)關解決方案。
串口轉換網(wǎng)關使得串口數(shù)據(jù)流到以太網(wǎng)數(shù)據(jù)流的傳輸成為可能。它能連接rs232串口設備,并將串口數(shù)據(jù)進行選擇和處理,把rs232接口的數(shù)據(jù)流轉化成以太網(wǎng)數(shù)據(jù)流,這樣就可以進行網(wǎng)絡化的數(shù)據(jù)處理,實現(xiàn)串行數(shù)據(jù)的網(wǎng)絡化。采用此種方案,無需淘汰原有串口設備,多臺設備可同時入網(wǎng),既可以提高設備利用率,又節(jié)約組網(wǎng)費用,還可在已有的網(wǎng)絡基礎上簡化布線復雜度。
2 硬件結構
由stc89c58單片機和rtl8019-as以太網(wǎng)控制器組成硬件平臺,編寫網(wǎng)絡設備的驅動程序,實現(xiàn)以太網(wǎng)通信功能。該系統(tǒng)的硬件結構如圖1所示。該系統(tǒng)模塊可滿足具有rs-232接口的電氣設備的遠程監(jiān)控工作需求,是一種具有實際意義的網(wǎng)絡通信模塊,該模塊利用網(wǎng)絡接口芯片rtl8019as使得測控設備能以低廉的費用、簡單的方式接入局域網(wǎng)。以網(wǎng)絡接口芯片rtl8019as的主要性能符合ethernetⅱ與ieee802.3標準,全雙工,收發(fā)可同時達到10mb/s的速率。遠程端pc機把數(shù)據(jù)發(fā)給以太網(wǎng)接口,以太網(wǎng)接口把數(shù)據(jù)存入ram中,現(xiàn)場串口裝置與單片機進行通訊,從ram中取出數(shù)據(jù)作為現(xiàn)場設備的控制命令,從而使現(xiàn)場設備工作狀態(tài)發(fā)生變化。

圖1 系統(tǒng)結構圖
rtl8019as內部有2塊ram區(qū),一塊32bytes,地址為0x0000-0x0001f,用于存儲以太網(wǎng)物理地址。一塊16kbram地址為0x4000-ox7fff,要接收和發(fā)送數(shù)據(jù)包就必須通過dma讀寫此ram。rtl8019as內部可分為遠程dma接口、本地dma接口、mac邏輯、數(shù)據(jù)編碼解碼邏輯和其他端口。rtl8019as具有32bit輸入輸出地址,遠程dma地址偏移量0x10h-0x17h都可以用來做遠程dma端口,只要用其中一個就可以了,一般使用0x10h。遠程dma是cpu從網(wǎng)卡的ram里讀取數(shù)據(jù)到系統(tǒng)ram中,或者發(fā)送數(shù)據(jù)到網(wǎng)卡的ram中。本地dma是網(wǎng)卡接收以太網(wǎng)上傳來的數(shù)據(jù),或者發(fā)送網(wǎng)卡ram 里的數(shù)據(jù)到以太網(wǎng)(啟動命令后,網(wǎng)卡自動完成)。
本地dma完成控制線與網(wǎng)線的數(shù)據(jù)交換,處理器cpu收發(fā)數(shù)據(jù)只需對遠程dma操作。當處理器要向網(wǎng)絡上發(fā)送數(shù)據(jù)時,先將一幀數(shù)據(jù)通過遠程dma通道送到rtl8019as中的發(fā)送緩存區(qū),然后發(fā)出傳送命令。rtl-8019as在完成了上一幀的發(fā)送后,再開始此幀的發(fā)送。rtl8019as接收到的數(shù)據(jù)通過mac地址比較、crc校驗后,由fifo存到接收緩存區(qū),收滿一幀后,以中斷或查詢寄存器標志的方式通知主處理器。
3 軟件設計
3.1 rtl8019as初始化
在使用rtl8019as作為網(wǎng)管芯片時,必須對8019進行初始化
{page_select(0);
cr=0x4c;
pstart=0x80;
bnry=0x4c;
tpsr=0x40; //tpsr,發(fā)送起始頁寄存器
isr=0xff; //清除所有中斷標志
rcr=0xe0; //rcr,監(jiān)視模式,不接收數(shù)據(jù)包
tcr=0xe2; //tcr,look back模式
dcr=0xc8; //數(shù)據(jù)配置寄存器
imr=0x00; //中斷標志屏蔽寄存器清0
page_select(1);
curr=0x4d;
cr=0x22; // 啟動rtl8019as開始工作
page_select(0);
cr=0x22; //啟動rtl8019as開始工作
isr=0xff; //清除所有中斷標志
rcr=0xcc; //將rtl8019as的物理地址寫入到mar寄存器
tcr=0xe0;
}
3.2 數(shù)據(jù)封裝
串口進入的數(shù)據(jù)要想在以太網(wǎng)中傳輸必須按照以太網(wǎng)的幀格式進行封裝,而這是一個逐層封裝的過程。由應用程序對設備數(shù)據(jù)添加appl首部形成應用數(shù)據(jù),由tcp協(xié)議對應用數(shù)據(jù)添加tcp首部,逐層對數(shù)據(jù)進行封裝,最后由rtl8019as芯片對數(shù)據(jù)添加以太網(wǎng)首部。封裝過程如圖2所示。

圖2 數(shù)據(jù)封裝示意圖
封裝后的數(shù)據(jù)傳輸格式如線下所示:

(1) 前導:由rtl8019as芯片本身產生,用于同步首發(fā)雙方的時鐘,并指定傳輸數(shù)率。
(2) 目的地址da:以太網(wǎng)數(shù)據(jù)幀傳輸?shù)哪康牡刂罚瑸?8位二進制地址,全1時表示廣播地址。
(3) 源地址sa:以太網(wǎng)數(shù)據(jù)幀傳輸?shù)脑吹刂?8位,表示該幀數(shù)據(jù)的出發(fā)點,即發(fā)送端的地址。
(4) 幀格式type:類型字段,表明該幀數(shù)據(jù)的類型。如ip包的數(shù)據(jù)類型為0800h,arp包的數(shù)據(jù)類型為0806h。
(5) 數(shù)據(jù):以太網(wǎng)規(guī)定整個數(shù)據(jù)包的最大長度為1514字節(jié),在這里規(guī)定數(shù)據(jù)字段不能超過1500字節(jié)。
(6) crc及填充位:以太網(wǎng)規(guī)定整個數(shù)據(jù)包必須大于60字節(jié)不滿足字節(jié)60字節(jié),用任何數(shù)據(jù)不補足60字節(jié)。
3.3 數(shù)據(jù)處理框架
來自客戶端的數(shù)據(jù)信息通過rj-45以太網(wǎng)接口,網(wǎng)路接口芯片到達微控制器,微控制器通過內嵌的tcp/ip協(xié)議棧,實現(xiàn)地址解析協(xié)議(arp)、internet控制報文協(xié)議(icmp)、ip協(xié)議和用戶數(shù)據(jù)報協(xié)議(udp)等協(xié)議,從而完成網(wǎng)絡數(shù)據(jù)的解析和拆封。網(wǎng)絡數(shù)據(jù)處理編程時候使用如下的程序框架:
{ if(以太網(wǎng)首部幀類型==0x0806)
{arp處理程序}
if(以太網(wǎng)首部幀類型==0x0835)
{parp處理程序}
if(以太網(wǎng)首部幀類型==0x0800)
{ip處理程序}
}
在正常運行時,tcp/ip協(xié)議轉換模塊的任務主要是將以太網(wǎng)發(fā)送緩沖區(qū)的串口幀封裝在udp包中,并傳給ip層;同時,接收以太網(wǎng)數(shù)據(jù)幀并向上層層解包,分離應用層數(shù)據(jù),然后數(shù)據(jù)的解析處理交由多串口發(fā)送模塊完成。接受串口數(shù)據(jù)后由單片機封裝后寫入以太網(wǎng)發(fā)送緩沖區(qū)打包傳輸;同時,接收以太網(wǎng)應用層的數(shù)據(jù),解析并從串口發(fā)出。對于該設計來說,通信數(shù)據(jù)的具體形式并不重要,它的任務主要是接收/發(fā)送,封裝/拆封串口幀,為串口設備提供通用網(wǎng)關接口。
4 結束語
本文介紹了基于tcp/ip的網(wǎng)關轉串口通訊,采用rtl8019as芯片實現(xiàn)了串口設備的網(wǎng)上通訊。較好的適應了,低速,串口的工業(yè)場合。在串口電氣設備和網(wǎng)絡之間建起了一道橋梁,實現(xiàn)了串口設備和監(jiān)控和透明數(shù)據(jù)傳輸,以及設備的網(wǎng)絡化控制及信息的分布式管理,能夠廣泛的應用在基于以太網(wǎng)的分布式測控網(wǎng)絡中。通過它,我們可以實現(xiàn)對各種實時信號、儀器儀表、民用設施等目標的遠程監(jiān)視,對各種設備統(tǒng)一管理。這必將大大提高工作效率,改善工作環(huán)境,提升人們的生產生活水平。
