您现在的位置: 主页 > 通讯技术 > 基于Linux的EPA无线通信卡的实现 -
本文所属标签:
为本文创立个标签吧:

基于Linux的EPA无线通信卡的实现 -

来源: 网络用户发布,如有版权联系网管删除 2018-11-17 

[导读]阐述了基于Linux的EPA无线通信卡的实现过程,成功地解决了IO模块控制卡与其之间的通信问题,从而为实现了基于无线局域网的EPA网络控制系统研发提供了可靠保证。

本文引用地址: http://www.21ic.com/app/rf/200712/23559.htm

摘要:阐述了基于Linux的EPA无线通信卡的实现过程,成功地解决了IO模块控制卡与其之间的通信问题,从而为实现了基于无线局域网的EPA网络控制系统研发提供了可靠保证。同时进行了简单测试,实验证明测试系统运行效果良好,达到了预期目标。
关键词:EPA通信卡;无线局域网;Linux驱动

    引言

    在工业环境中,各种现场设备的数据采集,其相互间的数据传送、信息共享以及控制信号的收发基本上都采用电缆进行通信。尽管现场总线技术的成熟极大地减少了现场电缆的敷设数量,正逐渐代替传统的DCS技术。但在某些工业现场中存在着大量移动设备,如空中起重机使之很难在空中布线,在加固混凝土的地板下面也无法敷设电缆,货运通道也不便在地面布线。甚至在高温高压等特殊工业环境中,往往不能敷设连到计算机的电缆,现场设备间无法通过有线进行相互间的通信,这给传统的有线连接方式提出了挑战。

    无线通信技术与现场总线技术有机集成,有效地解决了工业现场面临的诸多难题。

     EPA标准概述

     EPA系统结构
     EPA系统是一种分布式系统,有三种子网:基于以太网(IEEE802.3)、无线局域网(IEEE802.11)和蓝牙(IEEE802.15)的子网:

     1)一个或多个基于以太网的EPA子网,兼容IEEE802.3协议;
     2)一个或多个基于无线局域网的EPA子网,兼容IEEE802.11a、IEEE802.11b、IEEE802.11g协议;
     3)一个或多个基于蓝牙技术的EPA子网,兼容IEEE802.15协议。

     EPA系统中的网段也可以是不同类型的子网,即两种或三种的结合。如基于以太网和无线局域网的两种子网组成的混合网段。其EPA系统的网络拓扑结构如图1所示。

   
    图1 EPA系统的网络拓扑结构

    基于无线局域网的EPA网络控制系统
     EPA标准制定工作组通过对适用于工业现场控制的无线局域网关键技术的研究,提出了支持无线局域网技术的实时分布式网络控制系统体系结构。该体系结构结合工业现场环境的特点,考虑了基于无线局域网的EPA控制网络的实时性、可变传输率下的通信性能、无线传输距离、无线通讯的抗干扰性和无线通讯的安全性等方面的问题,开发了基于EPA的无线分散控制站。EPA无线分散控制站由IO模块控制卡、EPA无线通信卡两部分组成。两块板卡通过IO模块控制卡上的双端口RAM交换数据,通过中断触发数据读写操作,达到通信效果。

    基于Linux的EPA无线通信卡

     EPA无线通信卡使用AT91RM9200控制器并通过USB接口加载符合802.11b协议的无线传输模块,操作系统为Linux系统。

    基于Linux的EPA无线通信卡的工作原理
     EPA无线通信卡运行着EPA协议栈和功能块(MAI、MAO、MDI、MDO)等。使用向IO模块控制卡发中断及响应IO模块控制卡中断的方式,通过IO模块控制卡来配置、读取和控制现场设备。EPA无线通信卡与IO模块控制卡之间数据传输是直接通过读写IO模块控制卡上的双端口RAM实现的。EPA无线通信卡通过其上面的USB接口加载了符合802.11b协议的无线传输模块,通过该模块实现与EPA有线网络相连,使其与相应的EPA工作站通信,其结构示意图如图2所示。

   
    图2 基于Linux的EPA无线通信卡的结构示意图

    基于Linux的EPA无线通信卡的软件设计
     EPA无线分散控制站中无线通信卡软件开发基于Linux操作系统。由于Linux系统基于802.11b协议的无线驱动已经很成熟了,而基于Linux操作系统的EPA协议栈软件移植也比较容易。因此,选择Linux系统会有效的提高EPA无线通信卡的开发周期。

    基于Linux的EPA无线通信卡与有线的EPA通信卡在EPA协议栈和功能块方面大致相同,仅需将应用程序向Linux系统上移植即可。但由于采用了Linux系统在与IO模块控制卡通信的实现上就相对比较复杂了。与IO模块控制卡通信的程序流程如图3所示。

   
    图3 与IO模块控制卡通信的程序流程图

    软件实现中关键性问题的解决
    在Linux操作系统下对于中断及其他系统资源的操作有特定的规范,如内核模式操作和用户模式操作具有不同操作权限,内核空间与用户空间也不能随意互访。导致如EPA协议栈无法直接对双端口RAM进行读写,也无法直接向I/O模块控制卡收发中断,在Linux系统下,只有在内核模式下才可以做到。那么,怎么样将数据写入到双端口RAM中,然后发送中断信号通知对方及如何响应对方的中断并从双端口RAM中读数是软件实现中的关键性问题。

     发中断与注册中断处理程序的实现
    由于发中断与注册中断处理程序是对硬件直接操作,在Linux系统下用户程序无法直接对其硬件进行操作。因此,必须编写相应的内核模块,在内核模块中完成发中断与注册中断处理程序的操作。在用户程序中动态加载相应内核模块来达到用户程序发中断与注册中断处理程序的效果。其注册中断处理程序的内核模块关键性代码如下:

     intinit_module(void)                    //中断注册模块初始化
     {
    …                                    /*初始化设置*/
    AT91_SYS->AIC_SMR[25]|=0X20;
    //设置中断下跳沿触发
    if(request_irq(25,epa_interrupt,SA_INTERRUPT,
    "MAIN_IRQ",NULL))
    //请求分配中断号为25的快速中断处理
    //epa_interrupt为指向处理这个中断的中断处理程序的指针
    {…/*进行出错处理*

              查看评论 回复



嵌入式交流网主页 > 通讯技术 > 基于Linux的EPA无线通信卡的实现 -
 

"基于Linux的EPA无线通信卡的实现 -"的相关文章

网站地图

围观()