服务热线:
您当前的位置:首页 > 世纪星月刊 > 第1期 (2011年1月)

【专题 视点】WINDOWS和嵌入式驱动开发技术白皮书

2011/9/30 14:45:17

 

作者:特别项目部 苏尚夫


 

内容提示:


  *世纪星组态系统概述
  *世纪星组态软件通讯与网络
  *WINDOWS和嵌入式驱动开发区别
  *VC6.0驱动开发详细步骤及注意事项
  *EVC驱动开发详细步骤及注意事项

 

一 世纪星组态系统概述

  《世纪星组态软件》由开发系统和运行系统组成。开发系统是软件的集成开发环境,软件开发者在这个环境中完成界面的设计、数据库定义、动画连接、硬件设备安装、网络配置、系统配置等。该系统具有先进完善的图形生成功能;数据库中有多种数据类型,不但能合理地抽象控制对象,而且能非常简单、方便地对数据的报警、趋势曲线、历史数据记录、安全防范等进行操作;开发者利用其丰富的图形控件和自定义图库功能,可以大大减少设计界面的时间;通过简单而实用的编程命令语言,开发者不需要编程经验就可以设计完成实际工程;方便的硬件设备安装向导和全面地支持国内国际工控底层设备,彻底实现工控现场的数据采集和监控功能。

  运行系统是《世纪星组态软件》系统的实时运行环境,用于显示开发系统中建立的动画图形画面,并负责数据库与硬件设备的数据交换。运行系统能实时而形象地反映现场的所有参数和实际情况;通过实时数据库管理从工业控制对象采集各种数据;可把数据的变化用动画的方式形象地表示出来,同时完成实时和历史报警、历史数据记录、实时和历史趋势曲线等监控功能;可生成历史数据文件,用于追忆历史事件;灵活方便的组态式报表,可充分满足用户的各种报表需要。

  

目前北京世纪长秋科技有限公司拥有以下软件版本:

  1、CentryStar 7.50 工业通用版本

  2、EPAStar 电力专业版本

  3、CSTouch 嵌入式版本

 

二 世纪星组态软件通讯与网络

  世纪星组态软件适合用于各种行业及领域,如石油、化工、电力、通讯、城市天然气管网、水利、钢铁、煤炭、智能楼宇等多种工程领域。世纪星组态软件功强大,同时它具有全开放、扩展方便、易维护、用户成本低的特点。世纪星组态软件完全支持Web应用,能够集成与windows兼容的第三方应用软件。系统所连接的控制设备通常是各种类型的DCS、PLC、RTU,也可以是智能仪表、模块及板卡等。世纪星组态软件WINDOWS系统目前拥有两千多个驱动,能和数百个厂家设备直接通讯,而嵌入式系统的驱动目前公司正在移植,而且数目不断增加。

  世纪星组态软件的一项主要性能指标是管理控制中心与各远程站/子系统的信息交流能力,它不仅体现在数据的响应时间上,最主要的还是世纪星组态软件具备与各种品牌、型号的DCS/RTU/PLC和各类通讯协议的通讯能力。今天,太多的专用通讯协议事实上已在各个环境下被应用。

  而世纪星组态软件具有极强的通讯和网络能力,包括:

  支持大量的通讯协议(IEC_60870_5_101、103、104 ,Modbus,Profibus,CDT),支持常见的RTU和 PLC,支持兼容第三方软件;

  支持双Ethernet网;

  支持从WEB服务器的Internet/Intranet实时接口对系统的远程访问;

  支持主控中心和分主控中心的多中心间广域网的数据交换;

  通讯前置处理系统包括路由器、网桥、终端等;

  包括现场装置的实时通讯状态监视;

  支持“逢变则报”。

 

三 WINDOWS和嵌入式驱动开发区别

 

 

四 VC6.0驱动开发详细步骤及注意事项

  第一步:如图1所示。

 

图 1

 

  第二步:如图2所示。

 

图 2

 

  第三步:导入基类。基类是开发驱动的工具类和供上层Datacomm调用的统一接口。

  将Modi File拷贝到ExamplePro目录下。如下图3:

  接下来添加基类文件(基类文件在Modi File中):

  在基类中CDevice是所有驱动的基类,该基类包含主要通迅接口。驱动开发主要工具是重载这下虚接口,给其定义,使之按一定规则被datacomm和CSMaker调用。

 

图 3

 

图 4

 

  上图4中用红框圈出的是我们最重要的函数。

  InitialDevice初始化驱动函数。负责串口的初始化,初始化字解析,串口读取时延时等,及其它一些运行前的准备工作。如果不需要,则不需要重载。

  readData变量的读操作,如果驱动需要读出数据,则这个函数是每个驱动都要重载的函数,要跟据设备的通迅协议进行报文的组合和发送,接收以及解析,还有返值。

  参数说明:

  LPDEVADDR pDevAddr,设备地址,该结构体包含设备相关的地址信息。细节看源码。

  LPREGISTER pRegister, 寄存器信息,该结构包含要读取的寄存器的名称,数据类型,地址,子地址。

  LPREGVALUE pResult,数据返回的结构体。该结构存放要读取的变量的值。该值是输出参数。

  writeData, 变量的写操作,如果驱动需要写数据到下位机里,则这个函数也是每个驱动要重载的函数,参数定义与读函数类似。

  SendAndReceiveData,报文接收和发送函数,这个函数一般不需要重载。

 

  第四步:新建驱动类。

  类视图,右键新建类,如图5、图6:

图 5

 

图 6

 

  类的命名规则:第一个类的名字最好用设备的名字,拼音或是英文都行。第二个类继承自CDevice,我们主要的开发工作就是在这个类中。这个类最好前面和第一个类相同,后面加上Device。

 

  第五步:添加相关宏。

  基本上的概括就是要在class CExample中添加五句话:

  在类的头文件外面添加。

  #include “../Modi File/DeviceAccess.h”

  #include “ExampleDevice.h”

  CExamplPro中添加DECLARE_SERIAL_DEVICEINTERFACE(SerialAccessImp,C ExampleDevice)。如图7:

图 7

 

  CExampl只是本例中使用的名字,具体到您自己开发的实例中要用您自己命名的类。如果你直接复制本例中的名字到您的类里,除非同名,否则不可能编译通过。

  然后在CExamplPro类的CPP文件中,添加

  INTERFACE_PART(CExamplePro, IID_IDeviceAccess, SerialAccessImp)

  IMPLEMENT_SERIAL_DEVICEINTERFACE(CExamplePro,SerialAccessImp)

  如图8:

图 8

 

  以上添加宏一定不可缺少,缺少的话上层调用不到。

 

  第六步:寄存器定义。

  如图9所示,寄存器的定义方法:

 

图 9

 

  主要是定义寄存器的名称,数据类型,寄存器的格式。寄存器的格式有寄存器的地址格式和地址的对齐格式。上图中的变量定义对应CSMAKER中的内容如图10所示:

 

图 10

 

  如上图10所示,寄存器的地址的最大值和最小值是由变量nMVMax和nMVMin确定的。如果寄存器需要子地址,则创建一个数组,在setRegisterFormat中放入数组的指针来确定。

 

  第七步:编写readdata函数和writedata函数。

  这两个函数的编写主要是根据设备报文的格式来组合通迅用的报文,如图11所示:

 

图 11

 

 

五 EVC驱动开发详细步骤及注意事项

  嵌入式驱动开发使用EVC开发环境。安装时最好一路默认,查网上资料说如果擅自改动安装路径,可能安装失败。并且不能完全卸载,如果再想安装成功,只有重装系统。

  安装完成后一定要记得打evc的sp4补丁包。如果不打补丁包,则安装客户提供的SDK时会报错,之后则EVC不能和WinCE5.0以上通迅,你的开发程序不能下载到设备中进行调试。

  安装完EVC打好补定后,创建工程,嵌入式开发驱动管理类似VC6.0下的开发。这里只说明操作步骤。

 

  第一步:如图12所示。

 

图 12

 

  一定要正确选择设备的芯片类型。

  第二步:如图13所示。

 

图 13

 

  选了automation后,点Finish。

 

  第三步:导入CE基类。CE基类和PC下不同。所有类前命令的规则是都要加CE,用来和标准版进行区别。

 

图 14

 

  第四步:添加驱动类,如图15所示。

 

图 15

 

  添加的第二个类是驱动编写的主要类。该类继承自CCEDevice。

 

  第五步:添加宏

  添加宏的方式和VC6.0下方法一致。但是要多做一件事,就是要把标准版中相应的类的注册号复制过来,和标准版中用同一个注册号。这是因为嵌入式的开发版用的驱动是和标准版中一致的,如图16。

图 16

 

  图16为标准版的类号,要复制到嵌入式的类中。

  图17的是嵌入式相应的驱动中的类号,其它和标准版相似。

 

图 17

 

  还有WindowsCE中预定义了_UNICODE宏,所以CString 类的字符都是unicode码,在将字符串赋值给CString对象前一定要加上 _T() 或 TEXT() 宏,这两个宏在预定义了_UNICODE情况下,将字符串每个字符转变成宽字符,如图18:

 

图 18

 

  相关函数也要用宽字节的处理函数。

  还有,驱动下载到屏中的目录,一定要下载到屏中卡产生的目录下如D:\ResidentFlash,驱动的支持文件一定要放在CESurpport下,这个目录是嵌入式进行系统的默认目录。如果不保存在这个目录中,则屏重启后不能保存现在的DLL。

  更多详情,可以致电010-84645656垂询。

 

 


企业邮箱  |  法律公告  |  隐私保护  |  联系我们  |