网站大量收购独家精品文档,联系QQ:2885784924

EcNet实时数据库设备驱动接口协议规范.doc

  1. 1、本文档共12页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
EcNet实时数据库设备驱动接口协议规范.doc

EcNet实时数据库设备驱动接口协议规范 版 本:1.01 (2007-5-9正式版,版本值0x101) 作 者:蒋勇 版本说明:1.01在1.0的基础上增加了带时标的回调函数,兼容1.0标准 一 总体设计 工控软件的设备驱动软件必须要简单可靠,接口统一,有足够的灵活性供驱动程序自由发挥。 本版是在以前版本的基础上,总结以前版本的经验和不足而设计的。 1、参考COM模式,但不采用COM实现,目的是便于开发驱动,降低开发难度,不需要COM库支持。 2、驱动采用正规DLL模式实现,类厂(借COM的术语)和驱动对象在同一个DLL中实现。 3、通过接口函数来创建驱动实例,驱动实例为结构指针,由驱动接口函数负责分配内存。因此支持一个驱动程序运行多个实例。比如可以用opcdrv.dll驱动在实时库中建立多个opc设备,opc1,opc2,opc2等。 4、驱动配置为动态大小,大小和格式由驱动程序自己确定。 5、数据的转换和驱动彻底分离,不管驱动的事,由实时库完成。 6、实时库和驱动各自分配的内存各自释放,减少程序可能出错的因素。 设备驱动程序采用正规DLL方式编写,使用时动态加载这些DLL驱动程序,对每个设备DLL驱动采用统一规范的接口函数,驱动程序通过对这些标准的接口函数提供功能实现代码,从而实现驱动程序的特定功能。 二 数据结构 2.1设备实例句柄TAG_ECDHANDEL typedef struct tagECDHandle { void *pDriverObj; DWORD dwDriverType; void *pParam; DWORD dwRes; char szDriverName[32]; DWORD dwRes1; DWORD dwRes2; DWORD dwRes3; DWORD dwRes4; DWORD dwRes5; DWORD dwRes6; DWORD dwRes7; DWORD dwRes8; }TAG_ECDHANDEL, *ECDHANDLE; void *pDriverObj 用于保存该设备驱动实例相关的类实例对象指针,当不采用面向对象的开发时,可以填写一个能区别本驱动所创建实例的唯一的整数。这个指针由驱动程序的类厂创建。 DWORD dwDriverType 驱动程序提供数据访问服务的方式: 0:轮询方试 1:回调方试(目前仅支持回调方式 ) 由驱动程序填写。 void *pParam 宿主程序(指实时库程序)存放的参数,由宿主填写,驱动程序不要修改。 DWORD dwRes 保留,必须填0 char szDriverName[32] 设备实例名称,即为这是属性中的数据源名称,由宿主填写,驱动程序不要修改。 DWORD dwRes1 ~ dwRes8 保留,必须填0 2.2驱动程序信息结构ECDINFO typedef struct tagECDINFO { // 驱动程序信息结构 szie= 512 unsigned long dwEcdVer; //ECD规范版本,用16进值表示,1.0表示为0X0100 //用于以后ECD规范升级 char szVersion[28]; // 版本号比如 V1.0.0 Buil char szCategory[96]; // 设备驱动分类,以“.”符号作为分类符,比如 // “PLC.欧姆龙.串行”表示了如下 的设备驱动分支: // +PLC // +欧姆龙 // +串行 char szProducer[32]; // 设备生产厂家,比如“欧姆龙” char szDriverName[32]; // 设备驱动名称,比如“OMRON” char szCommDesc[32]; // 通讯描述,比如“TCP” char szDriverFileName[32]; // 驱动文件名,将用于内部驱动识别,必须设置,并且唯一 char szNote[256]; // 说明 }ECDINFO, *LPECDINFO; 由驱动程序填写,定长512字节。指类厂的信息,不是具体实例的信息。 2.3驱动实例中数据项值结构ECDITEMVAL typedef struct tagECDItemVal { // 驱动实例中数据项值结构 size=8bytes union { char cVal; unsigned char

文档评论(0)

170****0532 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

版权声明书
用户编号:8015033021000003

1亿VIP精品文档

相关文档