{ …… /* 写初始化 */
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模块的输出电流,切断灯泡的电流输入,使灯箱内的温度下降,从而达到保持灯箱内温度恒定的目的。
图4-1测试系统示意图
实验证明,无线通信卡与IO模块控制卡之间数据传输稳定,这个系统运行效果良好,达到了预期目标,能够满足工业现场设备的通信要求。同时,并没有改变和影响原来的有线现场总线的正常工作。
5.小结
通过使用无线分散控制站和无线网桥实现现场总线的无线接入,目前是比较稳定、便捷的无限扩展方法。本文提出的无线分散控制站中无线通信卡的软硬件实现方法是一个通用的快捷开发方案。无线技术给工业带来很多益处如减少设备配置和安装时间。市场也提供了较成熟的无线技术如IEEE 802.11标准, IEEE 802.15.4 标准和蓝牙技术。但在工业现场无线技术仍不能被广泛使用。原因之一是无线信道的实时性和出错率达不到要求。随着合适的协议机制和传输调度的设计,并细致结合这些方案,无线技术必将会在工业现场总线中得到广泛使用。
主要参考文献:
[1]吴爱国,郭昕.现场总线CAN与无线以太网IEEE802.11的结合[J].组合机床与自动化加工技术,2004,(11): 61-62,64.
[2]侯维岩,许静,费敏锐,陈伯时.工业现场总线与无线通信的集成模式[J].自动化仪表,2003,24(12):10-14.
[3]高路,于海滨,王宏,徐皑冬.EPA网络体系结构[J].计算机工程, 2004,17(30):81-82.
[4]Alessandro Rubini. LINUX设备驱动程序(第二版)[M].中国电力出版社,2002.2.