1.导言
运用无线衔接设备的便当现已导致了在消费电子(商业)范畴中无线技能被空前成功的运用。在此基础上依据无线技能的运用开端出现在各个范畴。在工业或工厂底层环境中,运用无线技能的优势更是多方面的。
榜首,在工业环境中往往需求许多的布线,选用无线技能不只会使设备和保护的本钱有用削减,并且会使设备的调整规划和重新装备愈加的简略。
第二,无线技能的引进关于处理在有化学腐蚀、轰动和移动部件等恶劣环境中对各种线缆的潜在损害等问题显得愈加有用。
第三,考虑到工厂设备中适应性和灵活性,固定体系可以经过无线技能和现有的移动子体系或移动机器人衔接通讯。
第四,对在工厂设备进行暂时拜访使命(如确诊或程序规划等)运用无线技能会愈加简化(如运用无线手持设备)。
在处理工业环境及进程操控环境下的许多移动方针,如移动机器人与自治运输设备之间的和谐;旋转方针,如机械臂;风险环境方针的监测与操控问题,如分布式操控等工业环境无线技能发挥极大的作用。将无线技能运用到现场总线中来处理传统现场总线存在的问题,正遭到学术界和工业界的极大重视。
2.现场总线的无线接入办法
为了使无线技能可以无缝而更广泛地运用于工业现场,使现场设备无线接入到现存的现场总线,国内外相关范畴的技能人员进行了必定的测验。按在不同层上完结接入可以将接入计划分为三大类:用户层接入、数据链路层接入和物理层接入。
(1)用户层接入:在用户层设一个OPC服务器,经过OPC服务器进行有线网段与无线网段之间的数据交流。该计划其长处是简略易完结,双方可坚持原有结构不动,两边的“衔接”可随时经过软件的操控树立或别离。缺陷是中间环节太多,实时性得不到确保。
(2)物理层的接入:在某些站点的有线衔接“下”面加装Modem。无线站点的信号经过此无线收发设备将帧格局转化后,联入有线网段接口,因而远端的无线站点被“视为”同质站点。这样,一切的有线、无线站点均选用原有现场总线协议,只是在最底层的某些物理衔接上,无线衔接替代了有线的衔接。其缺陷是此办法仅完结了点对点的衔接,无线站点不具有“周游接入”的才能。
(3)数据链路层的接入:此办法源自WLAN和以太网的联接办法,即在PHY层和DDL层之上加一个无线网关。该无线网关完结了无线网段数据与有线网段之间的数据格局转化和转发。原有的现场总线坚持不动,加装一个无线网段的AP接入点。当两网段间有数据交流时,才会经过AP点经过协议转化把数据转发到另一端。
数据链路层的接入是现阶段最被重视的办法。其详细完结办法较多,但大多处于理论研究阶段或需求对原有的现场总线进行改造,而工业厂家又不想使现正运转的现场总线暂停作业。这使得现阶段的一些其无线接入技能在现场总线中运用变得困难。为了使无线现场设备可以运用于工业现场,又不改动现有的现场总线体系,现在较老练的技能便是运用无线涣散操控站来与原有的现场总线衔接,完结现场设备的无线接入。无线涣散操控站一般由IO模块操控卡、无线通讯卡两部分组成。两块板卡经过IO模块操控卡上的双端口RAM交流数据,经过中止触发数据读写操作,然后到达通讯作用。其要害技能便是怎么完结无线通讯卡的软件规划。
3.依据Linux的无线通讯卡
在无线涣散操控站中无线通讯卡运用AT91RM9200操控器并经过USB接口加载契合802.11b协议的无线传输模块,其操作体系为Linux体系。
3.1依据Linux的无线通讯卡的作业原理
无线通讯卡运转着现场总线协议栈和功用块(MAI,MAO,MDI,MDO)等。依据所接入的现场总线的不同选用相应的协议栈。运用向IO模块操控卡发中止及呼应IO模块操控卡中止的办法,经过IO模块操控卡来装备、读取和操控现场设备。无线通讯卡与IO模块操控卡之间数据传输是直接经过读写IO模块操控卡上的双端口RAM完结的。另一方面,无线通讯卡经过其上面的USB接口加载了契合802.11b协议的无线传输模块,可以经过该模块完结与有线网络相连,使其与相应的现场总线作业站通讯,其结构示意图如图3-1所示:
3.2依据Linux的无线通讯卡的软件规划
无线涣散操控站中无线通讯卡软件开发依据Linux操作体系。因为Linux体系依据802.11b协议的无线驱动现已很老练了,而依据Linux操作体系的协议栈软件移植也比较简略。因而,挑选Linux体系会有用的进步无线通讯卡的开发周期。
依据Linux的无线通讯卡与有线的通讯卡在协议栈和功用块方面大致相同,仅需将运用程序向Linux体系上移植即可。但因为选用了Linux体系在与IO模块操控卡通讯的完结上就相对比较复杂了。与IO模块操控卡通讯的程序流程图如下图3-2所示:
3.3软件完结中要害性问题的处理
在Linux操作体系下关于中止及其它体系资源的操作有特定的规范,如内核方式操作和用户方式操作具有不同操作权限,内核空间与用户空间也不能随意互访。导致如协议栈无法直接对双端口RAM进行读写,也无法直接向I/O模块操控卡收发中止,在Linux体系下,只要在内核方式下才可以做到。那么,怎么样将数据写入到双端口RAM中,然后发送中止信号告诉对方及怎么呼应对方的中止并从双端口RAM中读数是软件完结中的要害性问题。
3.3.1发中止与注册中止处理程序的完结
因为发中止与注册中止处理程序是对硬件直接操作,在Linux体系下用户程序无法直接对其硬件进行操作。因而,有必要编写相应的内核模块,在内核模块中完结发中止与注册中止处理程序的操作。在用户程序中动态加载相应内核模块来到达用户程序发中止与注册中止处理程序的作用。其注册中止处理程序的内核模块要害性代码如下:
int init_module(void) //中止注册模块初始化
{ …… /* 初始化设置 */
AT91_SYS-》AIC_SMR[25]|=0X20; //设置中止下跳沿触发
if (request_irq(n, interrupt_program, INTERRUPT,“ IRQ1”,NULL))
// 恳求分配中止号为n的快速中止处理
// interrupt_program为指向处理这个中止的中止处理程序的指针
{ ……/*没有请求成功 依据返回值进行犯错处理* / }
else
{ printk(“《1》 注册中止成功 ! ”);
return 0;}
init_waitqueue_head(&my_queue);
}
void cleanup_module(void)
{ …… /* 开释资源 */
free_irq(n,NULL); //开释中止线n
}
在用户程序中发中止时,经过调用system(send_riq)来动态履行内核模块程序来操控发送中止的管脚的信号,然后完结在用户程序发中止的作用。其发中止的内核模块要害性代码如下:
AT91_SYS-》PIOC_PER |= AT91C_PIO_PC15;//设置PC15IO使能
AT91_SYS-》PIOC_OER |= AT91C_PIO_PC15;//设置PC15输出使能
//发送一个方波中止信号
AT91_SYS-》PIOC_CODR |= AT91C_PIO_PC15;
for(i=1;i
AT91_SYS-》PIOC_SODR |= AT91C_PIO_PC15;
3.3.2双端口RAM驱动的完结
因为用户程序不能直接对双端口RAM进行读写,因而有必要依据用户程序的需求编写双端口RAM的驱动,以内核模块的方式动态加载到体系中去。Linux体系将一切设备都看做是文件,对设备的读写相当于对文件的读写。双端口RAM驱动模块加载后,用户程序就可以像读写文件相同,直接的对双端口RAM进行读写了。其双端口RAM驱动模块的首要完结进程如下:[page]
static int write_dpram(struct file *file, const char *buf, u32 count, loff_t *f_pos)
{ …… /* 写初始化 */
copy_from_user(wMessage,buf,count);
…… /* 进行数据处理 */
for (i=0;i
{ writeb(wMessage[i], base+wadd);
wadd++; }
…… /*向IO模块操控卡发中止信号*/
}
staTIc int read_dpram(struct file *file,char *buf,u32 count,loff_t *f_pos)
{ …… /*读函数则调用相应的readb( )和copy_to_user( )函数,与写函数同理*/}
staTIc int open_dpram(struct inode *inode,struct file *file )
{ …… /*初始化*/
if (!request_mem_region(AT91_DPRAM,BUF_LEN*sizeof(u8),DEVICE_NAME))
{ …… /*未请求到该内存空间时进行相应处理*/} //请求运用内存空间
base =ioremap(AT91_DPRAM,BUF_LEN*sizeof(u8));//为设备内存区域分配虚拟地址
…… /* 设置DPRAM读写时序*/
}
staTIc int release_dpram(struct inode *inode,struct file *file )
{ …… /* 开释相应资iounmap( )和release_mem_region();}
以上为DPRAM设备驱动的翻开、读写、封闭函数的完结,然后经过以下符号化结构将其驱动的功用映射到前面的详细完结函数上:
staTIc struct file_operations test_fops = {
read:read_dpram,
write:write_dpram,
open: open_dpram,
release:release_dpram
};
别的,在驱动程序初始化时有必要经过register_chrdev()注册。在加载该驱动前要运用system(“mknod /dev/设备名 c 主设备号 次设备号”)创立设备文件并为该设备分配设备号。该双端口RAM驱动是通用的,无论什么功用的板卡上面有双端口RAM并且是依据Linux的体系的都可以运用该驱动。
4. 测验
为了测验该无线通讯卡的功能,该测验选用了契合EPA(Ethernet for Plant Automation)规范的现场总线体系进行无线扩展。EPA是我国榜首个具有自主知识产权的现场总线规范。所建立的测验体系根本和有线EPA演示体系共同。包含一个EPA无线现场设备B(包含EPA无线通讯卡和IO模块操控卡)和一个EPA无线接入网桥、一台PC机及一个灯箱,如图4-1所示。灯箱中的温度传感器与AI模块相连,将温度值传递给AI模块,并经过设备A发送到以太网上。设备B接纳到此温度值后,将其与额外温度值相比较,假如低于额外温度值,则经过AO模块输出电流来操控灯箱内灯泡加热;假如高于额外温度值,则中止AO模块的输出电流,堵截灯泡的电流输入,使灯箱内的温度下降,然后到达坚持灯箱内温度安稳的意图。
试验证明,无线通讯卡与IO模块操控卡之间数据传输安稳,这个体系运转作用杰出,到达了预期方针,可以满意工业现场设备的通讯要求。一起,并没有改动和影响本来的有线现场总线的正常作业。
5.小结
经过运用无线涣散操控站和无线网桥完结现场总线的无线接入,现在是比较安稳、方便的无限扩展办法。本文提出的无线涣散操控站中无线通讯卡的软硬件完结办法是一个通用的方便开发计划。无线技能给工业带来许多好处如削减设备装备和设备时间。商场也供给了较老练的无线技能如IEEE 802.11规范, IEEE 802.15.4 规范和蓝牙技能。但在工业现场无线技能仍不能被广泛运用。原因之一是无线信道的实时性和犯错率达不到要求。跟着适宜的协议机制和传输调度的规划,并详尽结合这些计划,无线技能必将会在工业现场总线中得到广泛运用。
责任编辑:gt