收藏 分享(赏)

worldflp现场总线接口卡的驱动程序的开发.doc

上传人:cjc2202537 文档编号:173175 上传时间:2018-03-23 格式:DOC 页数:10 大小:98.50KB
下载 相关 举报
worldflp现场总线接口卡的驱动程序的开发.doc_第1页
第1页 / 共10页
worldflp现场总线接口卡的驱动程序的开发.doc_第2页
第2页 / 共10页
worldflp现场总线接口卡的驱动程序的开发.doc_第3页
第3页 / 共10页
worldflp现场总线接口卡的驱动程序的开发.doc_第4页
第4页 / 共10页
worldflp现场总线接口卡的驱动程序的开发.doc_第5页
第5页 / 共10页
点击查看更多>>
资源描述

1、WorldFlP 现场总线接口卡的驱动程序的开发32WorldFlP 现场总线接口卡的驱动程序的开发WorldFIP 现场总线接口卡的驱动程序的开发张爱兵杨国田白焰华北电力大学(北京)自动化系(102206)AbstractAtfirstthispapergivesabriefintroductiontothemaincharacteristicsoftheWorldFIPfieldbus.ThenitIl_lustratesthehardwarearchitectureOftheFieldbusbasedinterfacecardbasedonWorldFIPandintroducesthe

2、methodndetailshowtodevelopthedriverwithWindriver.Keywords:WorldFIP,interfacecard,driver,Windriver摘要本文首先对 WorldFIP 现场总线的特点进行了简要的阐述,然后介绍了所开发的基于 WorldFIP 的现场总线接口卡硬件的基本结构,并详细介绍了用 Windriver 开发驱动程序的方法.关键词:WorldFIP,接口卡,驱动程序,WindriverWorldFIP 是现场总线的国际标准之一,是一种面向工业控制的现场总线.它设计出在单一协议的框架内和有调度的访问控制下既传输实时数据,又传输随机信

3、息,两者之间互不影响,从而既是实时的,可预测性的,又可与 Internet 连接的现场总线.1WorldFIP 现场总线的特点实时性:WorldFIP 按一定的时序为每个信息生产者分配一个固定的时段,通过总线仲裁器逐个呼叫每个生产者.同步性:在一个基本的时间段(循环周期)内,先进行周期变量的传送,之后在剩余的时间内进行非周期信息或填充变量的传输.信号的有效带宽得到了充分利用,而实时的控制信息不会受到非控制信息的干扰.可靠性:WorldFIP 的访问机制是调度性的,完全避免了“碰撞 “或不可预料事件的发生 ,确保通信安全 ;在一个网络中可以有一个或多个网络仲裁器,在任一给定时刻,只有一个起作用,

4、其它处于热备份状态,监听网络.2 接口卡的硬件结构这里所说的现场总线接口卡是指 PC 机或工作站与现场总线的接口设备,而不是现场设备中的通信圆卡.接口卡除了具有连接总线,与总线上其它设备通信等功能外,在软件上应提供良好的用户接口,便于系统的开发与集成.整个板卡的硬件结构包括 5 个模块:PCI 接口模块,通信模块,存储器模块,总线仲裁模块和时钟模块.各个模块之间关系如图 1 所示.PCI 接口模块负责把 PCI 总线的时序转换为本地端的时序,核心是 PCI9054 芯片;通信模块主要完成接口卡与现场总线的通信任务,核心是通信控制控制器 FULLFIP2;存储器模块是通信模块中通信控制器的私有

5、RAM,用来存储运行时的微代码(FIPCODE),通信数据库管理结构和通信数据库内容,它同时也是PCI 接口模块和通信模块的共享 RAM;总线仲裁模块负责 PCI 接口模块和通信模块之间时序匹配和总线仲裁,核心是 EPM7128;时钟模块产生其它各模块所需要的时钟信号.图 1 搔口卡的硬件结构图3 驱动程序3.1WindriverWindriver 是一套设备驱动程序开发组件,它的目的就是方便 Windows 程序员快速开发出 PCI/ISA,PCMCIA,USB 等设备的驱动程序.Windriver 的体系结构如图 2.礴膝穗一菘:天 核心态:查工业控制计算机2003 年 16 卷第 2 期

6、 33Windriver 有一个特点是如果用户的硬件中使用了 PLX/AMCC/V3 等公司的芯片组作为 PCI 桥芯片的话,Windrier 中还提供了对应的程序作为用户驱动程序的框架.应用这些应用程序框架可以进一步简化驱动程序的开发.本接口卡中用了 PLX 公司的PCI9054,所以可以直接使用 Windriver 提供的程序框架来开发接口卡的驱动程序.3.2FIPDEVICEMANAGER 通信库通信模块中的通信控制器 FULLFIP2 是一个比较复杂的协处理器,有一套专用的软件(FIPDEVICEMANAGER 通信库)来完成对通信控制器的管理.FIPDEVICEMANAGER 是与通

7、信控制器FULLFIP2 及它的 FIPCODE 微码协同工作的软件,它以函数库的形势与用户程序相连.这个函数库里包含了所有用来管理介质冗余(如果硬件中包含了管理介质冗余的 FIELDUAL 元件 )的函数.所有用于WorldFIP 连接点的诊断函数(除了发送/接收自检测功能)和检测通信站点配置数据完整性的函数都是由这个软件在站点的上电和工作过程中完成的.根据应用于 WorldFIP 的欧洲标准(EN50170),FIPDEVICEMANAGER 提供的接口是应用层上的总线仲裁和变量交换服务,以及数据链路层上的消息交换,它同时也集成了网络管理的基本函数.在特定的环境中,“驱动程序 “的实现是用

8、户来完成的,用户可以把 FIPDEVICEMANAGER 库集成到这个驱动程序中来.然而,如果用户想提供一个具有实时内核的标准接口的话,这种库的机制可以大大简化这种开发.FIPDEVICEMANAGER 也可以用于同时运行多个 FULLFIP2 系统.应用结构图如图 3.崩 FIPCODE 控制 FIPI)UAI图 3 应用结构图FIPDEVICEMANAGER 所提供的函数主要完成以下功能:确保系统的操作.这个功能用来管理构成 WorldFIP 连接点的元件(通信控制器 FULLFIP2,介质冗余管理元件 FIELDUAL,私有存储器等).管理 AE/LE 和 MPS 变量.这个功能用于执行

9、用户层的服务,这使得用户可以通过 AE/LE 这个非连接的逻辑实体来访问 MPS 变量.管理总线仲裁器.这个功能使用户可以很容易的管理总线仲裁器.处理SMMPS 网络管理变量.这个功能用于执行网络管理服务,使用户可以访问 SMMPS 变量.管理“WorldFIP 数据链路层 “消息 .这个功能用于执行数据链路层的服务,使得用户可以在“WorldFIP 数据链路层“ 上进行消息的访问.时间管理 .包括时间变量产生者的选取和时间变量的读写.驱动程序中关于 FIPDEVICEMANAGER 部分的主要工作包括:调用 FIPDEVICEMANAGER 的初始化函数(主要是关于通信软件和硬件的初始化).

10、编写错误和警告的回调函数.如果需要的话,调整FIPDEVICEMANAGER 代码所需要的一些依赖于操作系统的系统对象(信号量,互斥量).编写通信控制器 FULLFIP2 的中断处理函数(IRQ 和 EOC).编写事件回调函数.编写实时时钟处理函数.当使用如下服务时,还要实现这些服务的一些机制:访问SMMPS 变量,访问非周期的 MPS 变量,发送消息,接收消息.如果创建周期性的 MPS 变量时还要实现周期 MPS 变量的提示机制.3.3 驱动程序结构综合以上关于 Windriver 和 FIPDEVICEMAN-AGER 的介绍,可知接口卡的驱动程序的开发方法就是把 FIPDEVICEMAN

11、AGER 集成到 Windriver 提供的 PCI9054 的框架程序中来 .FIPDEVICEMANAGER 调用 Windriver 提供的接口函数来完成对现场总线接口卡硬件的访问,用户则通过 FIPDE-VICEMANAGER 提供的接口函数来完成对总线的访问和控制,而不用关心具体的硬件访问是如何完成的,因此对于用户来说对总线的访问是透明的.这时 FIPDEVICEMANAGER 处在图 2 中的驱动程序代码一级,没有运行在核心态.FIPDEVlCEMANAGER 中有一个 useropt.h的头文件,它包含控制编译的一些选项.其中有一些是设定库代码所运行的操作系统的(如 NT,Vxw

12、orks,Solaris,NDIS 等),可能是开发时间的原因,这里边没有 Win2000 的选项,而笔者所开发的这块接口卡就是要运行在 Win2000 下,所以要增加一个编译选项(对应于 Win2000),同时要增加此选项下与硬件访问有关的一些宏定义.因为使用 Windriver 来开发驱动程序,所以这些访问硬件的宏就要使用 Windriver 提供的接口函数.具体方法如下:增加一个宏定义:#defineFDM_WlTH_WIN2KYES同时把该文件中其它操作系统的选项改为 NO.WorldFIP 现场总线接口卡的驱动程序的开发在该文件的末尾增加访问硬件的宏定义:#ifdefineFDMWI

13、THWlN2K#defineLIRE(registre)P9054 一 ReadByte(hPIx,P9054_ADDRSPACE1,DWORD(registre)#defineECRITE(registre,valeur)P9054_WriteByte(hPIx,P9054_ADDRSPACE1,DWORD(registre),valeur)#defineECRIREUCOM(valeur)P9054_WriteByte(hPIx,P9054_ADDRSPACE1,DWORD(UCom),valeur)#defineBLOCKOUTBYTE(port,src,tame)lf(taillej=

14、0)do/厂_FRP9054 一WriteByte(hPtx,P9054_ADDRSPACE1,DWORD(p0n),src+):)while(一-taille!=0):)#endif当然还有 BLOCKINBYTE,BLOCKOUTWORD,BLOCKlNWORD 三个宏的定义,由于篇幅关系,这里没有列出.下面介绍一下驱动程序中的一些主要的函数:1)程序要找到这块 PCI 接口卡,ScanPciCard()函数完成这个功能,函数调用如下:hPlx=ScanPciCard(dwVendorlD,dwDevicelD,fUselnt);dwVendorlD 参数是该卡的厂商标识 ,dwDevic

15、elD 参数是该卡的设备标识 ,由于本卡使用的是PCl9054,所以厂商标识是 0xlOB5,设备标识是0x9054;fUselnt 是 BOOL 型变量,表示卡是否使用中断;hPIx 是一个 P9054 一 HANDLE 类型的全局变量,它是指向接口卡的一个句柄,以后对接口卡硬件的访问都要通过这个句柄来实现.2)FIPDEVICEMANAGER 库的初始化,通过fdminitialize()来实现.3)FIPDEVICEMANAGER 实例的创建.VSNetworkP=fdminitializenetwork(VSUserSoftDefinition,VSUserHardDefiniliOn

16、,VSUserldentParam);VSNetwork_p 是 FDMREF 类型的全局结构指针,它就是 FIPDEVICEMANAGER 的一个实例;VSUserSoftDef1nilion 是 FDMCONFlGURATlONSOF-r 类型的结构体,这个结构体包含关于数据库配置的一些参数;VS UserHardDeilion 是FDMCONFlGURATlONHARD 类型的结构体,它包含有关硬件接口的一些参数;VSUserldentParam 是FDMlDENTIFlCATlON 类型的结构体,它包含标识变量(Wor1dFlP 协议中变量的一种)的参数.4)把中断处理函数的指针传给

17、Windriver 内核,这样当 Windriver 内核收到接口卡中断时会调用这个中断处理函数.P9054_IntEnable(hPIx,funclntHandler);hPIx 是前面所说的指向接口卡的句柄;funclnlHandler 是中断处理函数的指针,这个函数处理通信控制器的 lRQ 中断和 EOC 中断.5)介质冗余功能的初始化.fdmvalidmedium(VSNetwork_p,一 MEDIUM 一 12):VSNetworkP 是前面所创建的 FIPDEVICEMANAGER 实例,一 MEDIUM 一 1_2 表示使用的是双介质.6)接下来是创建 AELE 实体 ,MPS

18、 变量,初始化并运行总线仲裁器,运行 AELE 实体,不再细述.7)最后是时钟中断的处理.FIPDEVICEMANAGER 要求系统中有一个可编程的时钟来产生周期性的中断,在这个中断的处理函数中,要调用fdm_tickscounter()函数.fdm_tickscounter()函数会周期性的调用介质冗余管理功能和内部的自检测功能,从而保证系统的可靠性.由于程序运行于Win2000 操作系统,WMJIMER 系统定时器的精度比较低(约 55ms),消息的优先权也比较低,所以不适合此处的要求.这里可以使用多媒体定时器,它有单独的线程,调用回调函数,优先级很高,定时精度通常都可达到 1ms,具体使

19、用方法不再详述.4 结束语笔者在所开发的现场总线接口卡的基础上,用Windriver 开发了该卡的驱动程序,该驱动程序能够在Win2000 下稳定运行.从而实现了把 FIPDEVICEMANAGER 成功的应用于 Win2000 环境下,使得所开发的接口卡和其它 WorldFlP 现场总线设备一起构成了一个 WorldFlP 现场总线控制网络.当然,如果想进一步提高驱动程序的效率,可以使用 Win2000 的DDK 来开发驱动程序,这时 FIPDEVlCEMANAGER就要运行在系统的核心态了.参考文献1 邵贝贝.WorIdFIP:现场总线的又一颗新星.电子产品世界,2000(5)2 吴亚平.WorIdFIP一种先进的现场总线.中国仪器仪表,2000(1)3 尤军.用 Windriver 工具箱开发设备驱动程序.计算机时代,20014JungoCorporation.WindriverV4.0DeveloperSGuide,200O5ALSTOMTechnologies.FIPDEVIVEMANAGER,2000收稿日期:2oO2.12.3】

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 高等教育 > 教育学

本站链接:文库   一言   我酷   合作


客服QQ:2549714901微博号:道客多多官方知乎号:道客多多

经营许可证编号: 粤ICP备2021046453号世界地图

道客多多©版权所有2020-2025营业执照举报