仪器网(yiqi.com)欢迎您!

| 注册2 登录
网站首页-资讯-专题- 微头条-话题-产品- 品牌库-搜索-供应商- 展会-招标-采购- 社区-知识-技术-资料库-方案-产品库- 视频

问答社区

组态软件的设备驱动是怎么实现的?

vy5cg7 2017-09-25 15:03:59 364  浏览
  •  

参与评论

全部评论(1条)

  • 洧坵eixiao 2017-09-26 00:00:00
    关于工控组态软件中设备驱动程序的思考 在工控组态软件的开发过程中,如何将大量不同的外部设备接入到系统中,是一个非常重要也是非常麻烦的事情;在系统发布后,此项工作基本上就成了软件维护工作的同义词。 将外部设备接入到系统的难度在于: 1、 部设备厂家众多,种类繁杂,数据交换方式多种多样,处理方法各不相同。 2、 外部设备必须与系统主程序分开,不能够每增加一个外部设备就得重新编译整个系统。 3、 外部设备接入系统的方法和接口必须向用户公开,但又不能公开整个系统。 4、 外部设备接入系统的方法必须简单,必须支持多种编程语言。 归纳起来,外部设备与系统的数据交换方式有如下几种: 1、 过RS232、RS485、RS422、MODEM等串行通讯设备进行通讯(如GE PLC)。 2、 通过PCI、ISA等方式(如研华的812PG模拟量采集卡)。 3、 现场总线网络(如Lonworks网络)。 4、 以太网络。 5、 USB接口。 6、 DDE方式。 7、 OPC方式。 8、 窗口消息方式(如某些电力系统的五防接口)。 9、 等等。 现在流行的解决办法有如下几种: 1、 一台数据处理前置机,前置机与系统主机之机通过系统内定标准的方式,方式公开,在前置机实现不同外部数据的标准化。 2、 通过硬件的规约转换器实现(但仅用在诸如串行设备和现场总线等方面)。 3、 为每一种外部设备编制通讯管理程序,将外部数据标准化并通过标准的网络通讯规约传入系统。 4、 以C语言格式提供标准的DLL访问方式,在DLL中将外部数据标准化。 5、 以COM方式编程,提供标准的访问接口。 6、 提供OPC接口。 本人在主持开发电力工控组态软件的过程中,选用的是第3种解决办法,即通过为每一种外部设备编制通讯管理程序,将外部数据标准化并通过标准的网络通讯规约传入系统。当时选用此方法的原因是: 1、 单机与网络环境下的编程一致性。 2、 编程简单,给用户提供基于Winsocket的标准规约,以及编程例子,用户只需按照规约要求向系统传送数据即可。 3、 程序实现的语言无关,只要提供Winsocket编程即可。 系统推出至今,效果良好,但在系统维护的过程中,也发现一些问题: 1、 每一种外部设备的管理程序都是一个单独的执行程序,当外挂的外部设备种类比较多时,系统的任务栏比较杂乱。 2、 在用户不熟悉系统时,会关闭某些外部设备管理程序,会误运行外部设备管理程序。 4、 外部接口通讯管理程序的实现不够规范,用户的发挥余地太大,反而无所适从。 5、 外部接口通讯管理程序的编程工作量相对较大,而且必须将相当部分的精力放在界面的编制上。 由于种种原因,本人在软件的升级开发中,决定放弃这种方法,转而使用基于COM的编程方式,采用类似插件的方法来实现外部设备的接入,初步设想如下: 1、 从理论上分析,采用OPC的方法也许Z符合工控组态软件的发展方向。但是,工控组态软件的开发ZD是为不同行业提供通用软件平台,并给用户更多的二次开发能力。本人主持开发的软件不完全是一个组态软件,它只是吸取了组态软件的思想,也决定解决组态软件的许多不足。因为本软件的应用领域是电力系统、水力系统,这两个行业的软件有许多可以归纳的特征。不必象组态软件那样一切从零开始。而OPC也只是组态软件的产生物,许多复杂的数据结构用它处理不太方便(不是不能处理)。 2、 COM是现在软件的发展方向,DCOM和COM可以无缝地结合,使得软件不需修改即可在单机或网络环境下使用。采取统一接口的方式也为用户提供了固定、简单的编程模式。并可实现用户可选择的编程语言无关性。 3、 在系统中对外部设备的定义如下: 计算机一[本地] 外部设备种类一 外部设备一 外部设备二 外部设备三 外部设备种类二 外部设备一 外部设备二 外部设备三 外部设备种类三 外部设备一 外部设备二 外部设备三 计算机二 外部设备种类一 外部设备一 外部设备二 外部设备三 计算机三 …… 提供一个针对每一种外部设备的标准访问接口(是每一种,也就是说每一种外部设备有多个外部设备),定义如下: 属性Opened: 外部设备是否已打开 函数Open: 启动外部设备的处理,该函数启动一个循环处理接收和发送的线程 函数Close: 停止外部设备的处理 函数WriteData: 向外部设备写入数据,在数据中包括了写入的地址(因为同一种外设有多个),参数是Variant数组。 事件OnReadData: 当外部设备有数据时产生,并由主程序接收该数据,参数是Variant数组。采用事件而不是函数的原因是保证实时性。 函数SetPara: 设置针对每一种外设的特殊参数设置,而通用设置在主程序中完成。 函数SetDeviceNum: 设置每一种外设的数量。 函数SetDevicePara: 设置针对每一个外设和特殊参数设置,而通用设置在主程序中完成。 4、 主系统处理流程如下: 外设编程时: 为每一种外设编制程序,都实现上述的接口,外部设备程序以Active动态库(DLL)提供。 配置系统时: 从许多已编制的外设程序中选择所需的,配置参数(可能要调用SetPara、SetDeviceNum、SetDevcePara等函数),并形成外设信息文件(不是注册表,因为所有信息可能要复制到另外的计算机上重复使用)。 系统启动时: 从信息文件中读出需要打开的的外部设备动态库,调用Open函数。 系统退出时: 将每个已打开的外设通过Close关闭。 系统运行时: 当接收到系统需要向外设发送数据的消息时,查找对应的外设模块,调用WriteData。当接收到外设OnReadData消息时,处理外设数据。 本人正在为此作前期准备工作,也尝试了一些实验,取得了一些经验,发现了一些问题,希望与各位交流: 1、 在只知道某DLL的程序名时(没有独立的类库文件),如何在运行状态下(不是编译时)判断它是否是支持接口的动态库,是否支持本接口(名为IdeviceAccess)? 2、 在只知道某DLL的程序名时,如何在运行状态下动态地建立它的对象接口,并访问它? 3、 您对此问题有什么高见(不一定是这两个技术细节问题)?

    赞(3)

    回复(0)

    评论

热门问答

组态软件的设备驱动是怎么实现的?
 
2017-09-25 15:03:59 364 1
怎么实现组态软件和设备通讯
 
2012-05-06 22:43:07 343 1
ifix3.5组态软件怎么安装驱动
 
2015-11-02 01:23:21 381 2
组态软件通讯的实现方法
 
2012-11-05 07:56:34 443 4
工业组态软件怎么实现短信报警?
 
2014-01-21 01:21:17 323 3
PWM怎么对L298驱动的电机实现调速
为什么PWM接到ENA和ENB酒可以进行调速,还有输出端和电机之间接的上下共8个二极管有什么作用啊。求解答。... 为什么PWM接到ENA和ENB酒可以进行调速,还有输出端和电机之间接的上下共8个二极管有什么作用啊。求解答。 展开
2012-06-10 11:13:36 467 2
力控组态软件有没有M-BUS的驱动?
力控组态软件有没有M-BUS的驱动?力控组态软件有没有M-BUS的驱动?... 力控组态软件有没有M-BUS的驱动?力控组态软件有没有M-BUS的驱动? 展开
2017-12-04 09:29:46 563 1
mcgs组态软件怎么实现两个按钮的相互重置
就是按下按钮1时2号灯灭1号灯亮,再按下按钮2时1号灯灭2号灯亮。... 就是按下按钮1 时2号灯灭1号灯亮,再按下按钮2时1号灯灭2号灯亮。 展开
2011-03-13 11:38:32 626 1
组态软件驱动点数怎样计算
系统内接入各种智能设备,智能设备的驱动点数怎么计算... 系统内接入各种智能设备,智能设备的驱动点数怎么计算 展开
2012-10-09 23:10:15 504 2
组态软件 怎么与PLC 实现 电脑仿真
 
2012-06-23 00:12:09 629 3
android传感器设备驱动怎么做的
 
2018-11-29 00:51:11 329 0
怎么用组态软件实现变电所自动化动图
 
2017-05-31 23:27:44 280 1
除了电机 实现旋转运动的驱动装置
 
2013-07-03 04:08:16 263 3
变频器是怎么实现节能的?
 
2012-12-20 03:21:53 247 4
力控组态软件怎么和支持modbus协议的设备通信
 
2017-04-14 16:00:06 582 1
请问 FPGA的锁相环可以驱动内部时钟吗 能的话怎么实现
 
2011-12-20 13:54:01 270 3
组态软件 如何实现 多路视频监控
 
2012-10-31 10:42:00 330 2
伺服电机是如何驱动的?
各位大神,我目前已经知道如何通过PLC----伺服驱动器-----伺服电机,进行转速,转矩,转角控制。但是我不太明白的是伺服驱动器只是输出了三相电给伺服电机,手册上只说了,转速电压有... 各位大神,我目前已经知道如何通过PLC----伺服驱动器-----伺服电机,进行转速,转矩,转角控制。但是我不太明白的是伺服驱动器只是输出了三相电给伺服电机,手册上只说了,转速电压有关,那么容易知道,伺服驱动器接到PLC命令后,调整输出电压有效值大小,即可控制转速,那么我的疑问来了; 1.如何控制伺服精确转角? 2.如何控制转矩? 3.电机在高速转动中,突然失电,是否立即停下? 4.想让电机以 X rpm的转速,运转360000°,是否可以同时控制转速和转角? 请注意,PLC如何操作伺服驱动器再驱动伺服电机我了解,我需要了的是驱动器如何操作电机。 展开
2017-11-16 20:06:44 834 1

12月突出贡献榜

推荐主页

最新话题