侵权投诉

搜索
更多>> 热门搜索:
订阅
纠错
加入自媒体

基于TCP/IP的网关转串口通讯

2011-07-25 10:59
龙凰
关注

1  引言
               
  现代远程测控任务要求能对各种工业系统进行远程监视、控制以及远程数据传送,传统的集中测控系统已经满足不了复杂、远程(异地)和范围较大的分布式测控任务的需求。而且多数的工业控制和通信设备中,采用的是符合rs232标准的串行口设备。在internet技术向全球各个领域普及的同时,如何将串行口的数据转发到网络上,实现设备的远程控制、数据的远程传输便成了一个亟待解决的问题。同时,考虑到成本问题,以往设备又不可能全部淘汰。因此,本文提出一种基于tcp/ip的串口转换网关解决方案。
               
  串口转换网关使得串口数据流到以太网数据流的传输成为可能。它能连接rs232串口设备,并将串口数据进行选择和处理,把rs232接口的数据流转化成以太网数据流,这样就可以进行网络化的数据处理,实现串行数据的网络化。采用此种方案,无需淘汰原有串口设备,多台设备可同时入网,既可以提高设备利用率,又节约组网费用,还可在已有的网络基础上简化布线复杂度。
             
2 硬件结构
               
  由stc89c58单片机和rtl8019-as以太网控制器组成硬件平台,编写网络设备的驱动程序,实现以太网通信功能。该系统的硬件结构如图1所示。该系统模块可满足具有rs-232接口的电气设备的远程监控工作需求,是一种具有实际意义的网络通信模块,该模块利用网络接口芯片rtl8019as使得测控设备能以低廉的费用、简单的方式接入局域网。以网络接口芯片rtl8019as的主要性能符合ethernetⅱ与ieee802.3标准,全双工,收发可同时达到10mb/s的速率。远程端pc机把数据发给以太网接口,以太网接口把数据存入ram中,现场串口装置与单片机进行通讯,从ram中取出数据作为现场设备的控制命令,从而使现场设备工作状态发生变化。

            图1  系统结构图
               

  rtl8019as内部有2块ram区,一块32bytes,地址为0x0000-0x0001f,用于存储以太网物理地址。一块16kbram地址为0x4000-ox7fff,要接收和发送数据包就必须通过dma读写此ram。rtl8019as内部可分为远程dma接口、本地dma接口、mac逻辑、数据编码解码逻辑和其他端口。rtl8019as具有32bit输入输出地址,远程dma地址偏移量0x10h-0x17h都可以用来做远程dma端口,只要用其中一个就可以了,一般使用0x10h。远程dma是cpu从网卡的ram里读取数据到系统ram中,或者发送数据到网卡的ram中。本地dma是网卡接收以太网上传来的数据,或者发送网卡ram 里的数据到以太网(启动命令后,网卡自动完成)。
               
  本地dma完成控制线与网线的数据交换,处理器cpu收发数据只需对远程dma操作。当处理器要向网络上发送数据时,先将一帧数据通过远程dma通道送到rtl8019as中的发送缓存区,然后发出传送命令。rtl-8019as在完成了上一帧的发送后,再开始此帧的发送。rtl8019as接收到的数据通过mac地址比较、crc校验后,由fifo存到接收缓存区,收满一帧后,以中断或查询寄存器标志的方式通知主处理器。
           
3  软件设计
           
  3.1 rtl8019as初始化
               
  在使用rtl8019as作为网管芯片时,必须对8019进行初始化

                {page_select(0);
                cr=0x4c;
                pstart=0x80;
                bnry=0x4c;
                tpsr=0x40; //tpsr,发送起始页寄存器
                isr=0xff; //清除所有中断标志
                rcr=0xe0; //rcr,监视模式,不接收数据包
                tcr=0xe2;  //tcr,look back模式
                dcr=0xc8; //数据配置寄存器
                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;
                }
           

1  2  下一页>  
声明: 本文由入驻维科号的作者撰写,观点仅代表作者本人,不代表OFweek立场。如有侵权或其他问题,请联系举报。

发表评论

0条评论,0人参与

请输入评论内容...

请输入评论/评论长度6~500个字

您提交的评论过于频繁,请输入验证码继续

暂无评论

暂无评论

文章纠错
x
*文字标题:
*纠错内容:
联系邮箱:
*验 证 码:

粤公网安备 44030502002758号