组态王软件驱动程序开发
- 格式:doc
- 大小:2.23 MB
- 文档页数:41
组态王驱动开发详解组态王驱动开发详解⼀、为什么需要编写组态王驱动程序?组态王是监控和操作底层控制器(PLC,单⽚机等)的软件,在组态王和底层控制器间有数据的交换,对于⼀些常⽤设备,组态王已经内置了设备连接的驱动,⽐如西门⼦、ABB等,这些设备可以直接通过在串⼝处添加即可,但是对于那些在列表中⽆法找到的设备,就需要通过⾃⼰编写驱动程序,以实现组态王和底层硬件的通信。
⼆、驱动程序(接⼝)主要完成哪些事情?(1)定义设备的变量(2)定义驱动类型:串⼝or⽹络,什么通讯⽅式(3)通讯包的属性等三、怎么进⾏驱动程序的开发?亚控提供了3.0的驱动程序开发包,这是⼀个使⽤VC开发DLL驱动的⼯具此为开发包⽤户⼿册,可参考;开发包可注册亚控论坛后让群组发过来/doc/53427d88a0116c175f0e489b.html /view/19f24f5f804d2b160b4ec0de.html编写驱动程序就是完成组态王touchexplore.exe和touchview.exe调⽤的底层函数,在开发前⾸先需要确定安装了组态王驱动开发包3.0和visual /doc/53427d88a0116c175f0e489b.html 2003;安装时可能碰到的问题与解决可参见/doc/53427d88a0116c175f0e489b.html /weizier/blog/item/72bf942bd75539fae6cd409d.html开发主要分为以下6个步骤:1、分析通讯协议需要确定数据包的格式,即驱动程序是接受怎么样的数据,怎么检验数据,并把它传给组态王,组态王⼜怎么根据得到的数据去解析各变量。
如可以确定协议如下的类型2、制定驱动规格主要包括三部分:定义设备选择(在组态王设备列表⾥⾯怎么找到这个设别)、设备地址(设备地址的范围,在接⼝程序中有检测)、寄存器列表说明(是接⼝函数主要传递的数据,由下位机采集传输给组态王,也可由组态王发送到下位机)如下为西门⼦S700的寄存器列表说明3、编写代码3.0提供了驱动的框架,包括数据、类和函数的定义,主要需要修改接⼝函数部分,以使得驱动和下位机、通信协议匹配。
3、系统软件3.1组态王软件介绍本系统采集控制软件选用中国本土软件厂商北京亚控科技发展有限公司生产的,国内最早的商用组态软件“组态王”。
截止到2009年底,“组态王”已在国内装机量有10万套,成功地应用于我国工业领域的各行各业,例如石油、化工、电力、冶金、造纸、橡胶、环保、机械制造等等,在中国使用的监控软件中,组态王拥有国内最多的用户。
像国外众多的软件一样,组态王软件也经过了一个发展例程:1995年——组态王V1.01996年——组态王V1.21997年——组态王V1.511998年——组态王V2.01999年——组态王V5.12000年——组态王V5.1 for Internet2001年——组态王V6.0、组态王电力专业版6.02002年——组态王V6.022003年——组态王V6.52005年——组态王V6.512006年——组态王V6.522007年——组态王V6.53下面介绍组态王通用强大的功能。
3.1.1基本人机界面功能通过本功能完成画面组态。
1.快速便捷的应用设计用组态软件构造“监控和数据采集系统”的好处之一就是能大大缩短开发时间,并能保证系统的质量。
能快速便捷地进行图形维护和数据采集是此类系统的关键点。
组态王正是提供了丰富的快速应用设计的工具。
(1)方便实用的工程管理组态王6.53提供方便实用的管理工具——工程管理器。
工程管理器是一个独立的可执行文件,用来管理本机的所有组态王工程,可以实现工程的压缩备份,备份恢复,数据词典的导出导入,实现开发和运行系统的切换等。
(2).集成的开发环境最新设计的组态王工程浏览器为用户提供了便利的集成开发环境。
工程设计者可以在工程浏览器中查看工程的各个部分,可以查看画面、数据库、配置通讯驱动程序、设计报表;可以完成系统的大部分配置。
工程浏览器采用树形结构,操作简单方便,容易接受。
在工程浏览器中,用户也可以方便地切换到组态王开发环境和运行环境。
(3).功能强大、易用的绘图工具目前用简单的示意性图形已经不足以表示工业现场复杂的生产过程,用户普遍要求更加丰富多彩、生动逼真的画面。
组态王简明教程组态王软件的结构“组态王”是运行于Microsoft Windows 98/NTxx文平台的xx 界面的组态软件,采用了多线程、COM组件等新技术,实现了实时多任务,软件运行稳定可靠。
组态王具有一个集成开发环境“组态王工程浏览器”,在工程浏览器xx您可以查看工程的各个组成部分,也可以完成构造数据库、定义外部设备等工作。
画面的开发和运行由工程浏览器调用画面制作系统TOUCHMAK和画面运行系统TOUCHVEW来完成的。
TOUCHMAK是应用程序的开发环境。
您需要在这个环境xx完成设计画面、动画连接等工作。
TOUCHMAK具有先进完善的图形生成功能;数据库xx有多种数据类型,能合理地抽象控制对象的特性;对变量报警、趋势曲线、过程记录、安全防范等重要功能都有简单的操作办法。
TOUCHVEW是“组态王”软件的实时运行环境,在TOUCHMAKxx 建立的图形画面只有在TOUCHVEWxx才能运行。
TOUCHVEW从工业控制对象xx采集数据,并记录在实时数据库xx。
它还负责把数据的变化用动画的方式形象地表示出来,同时完成变量报警、操作记录、趋势曲线等监视功能,并生成历史数据文件。
组态王怎样和下位机通讯“组态王”把第一台下位机看作是外部设备,在开发过程中您可以根据“设备配置向导”的提示一步步完成连接过程。
在运行期间,组态王通过驱动程序和这些外部设备交换数据,包括采集数据和发送数据/指令。
每一个驱动程序都是一个COM对象,这种方式使通讯程序和组态王构成一个完整的系统,既保证了运行系统的高效率,也使系统能够达到很大的规模。
怎样产生动画效果开发者在TOUCHMAKxx制作的画面都是静态的,那么它们如何以动画方式反映工业现场的状况呢?这需要通过实时数据库,因为只有数据库xx的变量才是与现场状况同步变化的。
数据库变量的变化又如何导致画面的动画效果呢?通过“动画连接”就是建立画面的图素与数据库变量的对应关系。
组态王软件培训培训内容内容包括:1、组态王介绍2、新建工程3、建立IO设备通信4、建立数据词典5、画面组态6、设置,然后运行7、脚本编程,函数等。
组态王软件是一种通用的工业监控软件, 它适用于从单一设备的生产运营管理和故障诊断,到网络结构分布式大型集中监控管理系统的开发。
支持与国内外常见的PLC、智能模块、智能仪表、变频器、数据采集板卡进行数据通讯组态王软件结构由工程管理器、工程浏览器及运行系统三部分构成。
组态软件的安装1、运行安装组态王程序。
直接安装。
2、安装完后直接安装驱动。
3、其它内容可以不安装。
工程管理器:工程管理器用于新工程的创建和已有工程的管理,对已有工程进行搜索、添加、备份、恢复以及实现数据词典的导入和导出等功能。
工程浏览器:工程浏览器是一个工程开发设计工具,用于创建监控画面、监控的设备及相关变量、动画链接、命令语言以及设定运行系统配置等的系统组态工具。
运行系统:工程运行界面,从采集设备中获得通讯数据,并依据工程浏览器的动画设计显示动态画面,实现人与控制设备的交互操作。
组态王软件是一种通用的工业监控软件, 它适用于从单一设备的生产运营管理和故障诊断,到网络结构分布式大型集中监控管理系统的开发。
支持与国内外常见的PLC、智能模块、智能仪表、变频器、数据采集板卡进行数据通讯组态王软件结构由工程管理器、工程浏览器及运行系统三部分构成。
工程管理器:工程管理器用于新工程的创建和已有工程的管理,对已有工程进行搜索、添加、备份、恢复以及实现数据词典的导入和导出等功能。
工程浏览器:工程浏览器是一个工程开发设计工具,用于创建监控画面、监控的设备及相关变量、动画链接、命令语言以及设定运行系统配置等的系统组态工具。
运行系统:工程运行界面,从采集设备中获得通讯数据,并依据工程浏览器的动画设计显示动态画面,实现人与控制设备的交互操作。
(1)新建工程(2)硬件组态添加设置,设置地址,设置通信,硬件测试(3)数据词典组态。
1 引言组态王是一个具有丰富功能的HMI/SCADA软件。
可用于工业自动化的过程控制和管理监控。
它提供了集成、灵活、易用的开发环境和广泛的功能,能够快速建立、测试和部署自动化应用,来连接、传递和记录实时信息。
使用户可以实时查看和控制工业生产过程。
组态王的主要功能:(1). 丰富的人机界面功能,可视化操作界面,真彩显示图形、丰富的图库(2). 强大的通讯能力(3). 先进的报警和事件管理(4).强大的网络和冗余功能组态王目前能连接PLC、智能仪表、板卡、模块、变频器等上千种工业自动化设备。
支持设备之多之广可与国外优秀同类软件相媲美。
组态王通过驱动程序和这些工控设备通讯,利用这里优点可以采用单独的智能仪表就可以对供电系统进行监控和对设备能耗(日消耗单班消耗等)进行统计。
2 能源系统计算机监控和能源统计的总体设计思想目前很多能源系统的统计都采用智能仪表来实现,可是每天必须有专职的抄表工来对仪表显示的参数进行记录与计算才得到设备的日消耗电量。
这样不但耗费人力,而且消耗掉很多的时间,得到的结果又不十分的准确。
笔者利用计算机的快速、准确和组态王采集参数的实时的特点把现场仪表中的参数用过SR458 总线采集到上位机中进行能源的统计。
同时又可以把现场操作的状态反馈到仪表上,然后通过监控画面进行状态监控。
于是得到以下方案配置图(一)。
3 基于现场总线的能源系统计算机监控和能源统计的研究与实现由上面的配置图可以配置到下面的原理图(二)来实现高压电力能源统计的功能。
运用组态王提供的命令语言功能对能源参数进行处理和计算,可实现设备的日耗电、单班耗电等功能。
(1)构造数据库数据库是“组态王”软件的核心部分,工业现场的生产状况要以动画的形式反映在屏幕上,操作者在计算机前发布的指令就可以迅速送达生产现场,所有这一切都是以实时数据库为中介环节,所以说数据库是联系上位机和下位机的桥梁。
在数据库变量的“数据词典”中定义好需要采集的变量,用来作为状态显示或数据处理计算。
组态王驱动开发包用户手册北京亚控科技发展有限公司1. 版权本开发包版权属于北京亚控科技发展有限公司,任何组织、团体、个人,未经亚控公司允许,不得擅自拷贝,使用,对于购买本开发包的组织、团体、个人,只能内部使用,不得擅自泄漏给第三方。
2. 概述本开发包采用微软标准的COM组件技术,采用该技术,在创建接口时,可以创建多个互相独立对象,每个对象都可以拥有自己的变量。
最后的结果是一个DLL文件。
接口中的各函数,是被组态王的两个应用程序---TouchExplorer.exe和TouchVew.exe调用的。
如果这两个应用程序都不启动,函数中的代码将永远没有机会执行。
组态王的驱动程序是组态王和硬件设备连接的桥梁,本开发包用于开发组态王的驱动程序。
只要拥有硬件的通讯协议,即可以使用本开发包开发组态王的驱动程序。
本开发包只能使用VC++开发。
3. 开发包3.0修订目的a)通用版和嵌入版统一到一套代码中,通用版和嵌入版实现同步更新。
b)生成设备类,为多设备型号驱动提供解决方法。
c)详尽、稳健的基类代码。
d)完善的功能与向导。
e)规范各类帮助函数。
f)规范编码格式、统一使用英文版。
g)修改部分功能的实现方法。
4. 开发包使用我们提供一个开发向导工具“DriverToolKit3.0.0.0.exe”,使用这个工具,能够自动地生成驱动代码框架。
运行工具,如下图:请在下页输入您的目标文件夹点击“安装”,开发包即安装完成。
使用开发包向导创建驱动的过程:(1)启动Visual 2003。
(2)新建一个工程,“项目类型”选择“Visual C++项目”,“模板”选择“KingView Wizard”,在下面的编辑框中输入工程的名字以及存储路径,点击“确定”。
(3)这个创建向导分3页,第一页是“概述”,显示的是默认的设置信息,如果您不需要改变这些,直接点击“确定”即可成功的创建驱动框架。
(4)第二页是“驱动类型和编译选项”,包含如下部分:驱动类型:o串口驱动(适用于查询式设备)这个类型,是我们一般常用的,适合于普通的上位查询,设备应答的通讯类型。
o串口驱动(适用于实时上发数据的设备,非重叠IO)这种方式,适用于下位设备实时上发数据的情况,驱动中需要创建一个线程来监视串口事件的通讯类型,采用非重叠IO方式。
o串口驱动(适用于实时上发数据的设备,重叠IO,WinCE不支持)这种方式,同上一种,也是适用于下位设备实时上发数据的情况,驱动中需要创建一个线程来监视串口的通讯类型。
与前一种不同的是:采用了重叠IO方式。
我们不推荐使用这种方式,因为WINCE系统不支持这种方式,使用这种方式开发的驱动,将不能在WINCE系统的嵌入式设备中运行。
o以太网驱动(TCP服务器端)这是针对于TCP方式通讯的驱动,适用于设备为客户端,组态王为Server,组态王查询,设备应答的通讯类型。
如果遇到设备主动实时上发数据的情况,驱动中提供了相应的函数,可以直接调用函数,启动线程来监听网络事件。
o以太网驱动(TCP客户端)这是TCP方式通讯客户端的驱动,适用于组态王查询、设备应答的通讯类型。
这种方式需要驱动主动去连接设备。
如果遇到设备主动实时上发数据的情况,驱动中提供了相应的函数,可以直接调用函数,启动线程来监听网络事件。
o以太网驱动(UDP服务器端)目前还没有实现,参考TCP方式,代码中需要改动的地方有标注。
o以太网驱动(UDP客户端)目前还没有实现,参考TCP方式,代码中需要改动的地方有标注。
设备名称:默认的设备名称是“Name1”,可以自由填写,但须注意应该与设备列表中的设备名称保持一致。
尝试连接类型:当组态王与设备通讯失败了,组态王会周期性的尝试与设备通讯,这个过程,我们称之为“尝试连接”。
尝试连接,目前准备了如下几种类型:o永远为True,常用于板卡驱动。
o程序员自由定义,常用于网络通讯或实时上发数据的设备。
o使用“PACKET”进行通讯,适用于普通的驱动。
(5)第三页是“驱动基本信息”,包含如下条目:驱动基本信息o驱动名称o版本o描述o程序员o项目经理这些信息将被自动保存到历史文件(History.txt)中,同时也是保存在工程的ReadMe文件中,可以随工程浏览。
其他支持:o USB 通讯o ADO 数据库操作(6)点击“确定”后,将完成驱动工程的创建工作。
5. 工程转换工具我们要求通用版和嵌入版使用同一套代码,做到通用版和嵌入版驱动实现同步更新,这就需要一个工具来将通用版工程文件转换为嵌入版工程文件。
同时,考虑到有的开发者习惯使用Visual Studio 98进行开发编译,我们也要有一个工具来将Visual Studio 2003的工程文件转换成Visual Studio 98的工程文件。
我们提供一个转换工具kvdriver(包含3个文件,kvdriver.exe, vc7tovc6.exe,vc7toevc.exe),使用这个工具,可以根据Visual Studio 2003的工程文件,创建成Visual Studio 98和EVC的工程文件,开发者可以在不同的开发环境间自由选择。
驱动开发包安装完成后,这个工具存放在目录KingViewDriver下。
在使用的时候,可以把这个工具放在系统文件夹C:\WINDOWS\system32中,这样可以在命令行中输入“kvdriver”,然后把需要转换的Visual Studio 2003工程文件拖动过来运行即可,如下所示:6. 驱动信息结构所有的结构都定义在文件“Data类型.h”中。
_DevAddr该结构定义了设备地址格式.类型def struct _DevAddr{UINT nDevAddr;TCHAR sDevAddr[MAX_DEV_LEN];}DEVADDR, * PDEVADDR;成员:sDevAddr:用户在组态王中输入的原地址格式字符串。
nDevAddr:实际转换后的设备地址数字.ComDevice这是串口设置信息的结构体.struct ComDevice{short nFlag;WORD deviceKind;TCHAR deviceName[32];int baudRate;short dataBits;short stopBits;short parity;short timeOut;short failTimes;short retryInterval;short isRs232;};成员:nFlag:串口标志,目前没有用到.DeviceKind:设备类型,'1'代表串口设备DeviceName:逻辑名称 =={COM1,COM2...}BaudRate:波特率,范围是从 110到256000。
DataBits:数据位StopBits:停止位.TimeOut:超时,单位是毫秒FailTimes:失败次数RetryInterval:尝试间隔isRs232:通讯模式,'1'代表RS232, '2'代表RS422, '3'代表RS485. PLCVAR该结构定义了用户变量的属性.类型def struct var{WORD wVarID;WORD wVarType;TCHAR szVarName[32];short nDeviceIndex;short nUnitNo;DEVADDR *pDevAddr;TCHAR *pszRegName;short nRegType;short nSubType;short nSubType1;short nSubType2;short nNo;short nDataType;short nAccessMode;long nFrequency;long nTimerCount;CWinThread* pComThread;DDEValue maxRaw;DDEValue minRaw;short bConvertion;short isBad;short isUnvalid;}PLCVAR, * PPLCVAR;成员:wvarID:变量IDwVarType:变量类型,为如下几种:Bit, byte, int, uint, BCD, long, float, longbcd, string szVarName:变量名nDeviceIndex:设备索引nUnitNo:设备地址单元pDevAddr:设备地址pszRegName:寄存器名称nRegType;寄存器类型nSub Type:nSub Type1:nSub Type2:子类型,没有用到,如在驱动中有其他需要,可以自己定义使用。
nNo:寄存器通道nData Type:数据类型nAccessMode:读写属性nFrequency:采集频率nTimerCount:超时次数pComThread:通讯线程maxRaw:最大原始值minRaw:最小原始值PACKET该结构定义了通讯包的属性类型def struct Packet{short nDeviceIndex;short nUnitNo;DEVADDR * pDevAddr;TCHAR * pszDevName;TCHAR *pszRegName;short nRegType;short nSubType;short nSubType1;short nSubType2;int nStartNo;int nEndNo;short nPacketType;CPtrList varList;}PACKET,* PPACKET;成员:nDeviceIndex:设备索引nUnitNo:设备地址单元pDevAddr:设备地址结构指针pszDevName:设备地址nRegType:寄存器类型nSubType:nSubType1:nSubType2:子类型,没有用到,自己可以使用nStartNo:开始通道nEndNo:结束通道nPacketType:包读写类型VarList:变量列表,存储ID_NO和ID_NO2两种类型变量ID_NO该结构定义了老的接口的变量类型def struct IdNo{WORD wVarId;WORD wNo;WORD wDataType;BYTE Special[4];PlcValue plcValue;}ID_NO;成员:wVarId:变量IDwNo:通道wDataType:数据类型Special:目前没有使用plcValue:PLCVAR结构体指针ID_NO2该结构定义了新的接口的变量类型def struct IdNo2{WORD wVarId;WORD wNo;WORD wData Type;PlcValue plcValue;BYTE Special[4];WORD wQualities;FILETIME ftTimeStamps;}ID_NO2;成员:wVarId:变量IDwNo:通道wDataType:数据类型Special:目前没有用到plcValue:PLCVAR结构体指针wQualities:质量戳,0xc0代表GOOD, 0代表BAD.ftTimeStamps:时间戳,在驱动中一般设置当前的时间DEVICE_INFO该结构定义了设备信息类型def struct deviceinfo{TCHAR sDeviceName[32];}DEVICE_INFO;成员:SDeviceName:设备名称,最大允许长度是32,使用TCHAR字符REG_INFO该结构定义了寄存器信息类型def struct reginfo{TCHAR sRegName[8];int nLowIndex;int nUpperIndex;WORD wDataType;int nData;}REG_INFO;成员:sRegName:寄存器名称nLowIndex:开始通道nUpperIndex:结束通道7. 接口函数7.1 接口描述组态王与驱动交互,包括2个COM接口: IprotocolImp(老接口) 和IProtocolImp2(新接口)IProtocolImp::StrToDevAddrXProtocolImp::StrToDevAddr(const TCHAR* str, LPVOID lpDevAddr)类型:Public目的:实现对地址输入的整理,判断用户输入的地址是否合法,并将地址的数值传给组态王,如果必要,也可以将地址以字符串的形式传给组态王。