求助:组态软件的驱动程序接口的设计方案 点击:454 | 回复:9



dynamics

    
  • 精华:0帖
  • 求助:0帖
  • 帖子:2帖 | 5回
  • 年度积分:0
  • 历史总积分:43
  • 注册:2008年4月28日
发表于:2010-06-22 14:59:46
楼主

最近跟一个人合作项目,我负责SCADA的界面开发。我想请问一下各位上位机与设备通信的接口应该如何设计?

这个接口本来是做驱动的人写的。但是认为他做得不够好。

我认为读写设备的接口参数应该包括:

设备地址

数据点的具体地址

数据部分。

我认为他的接口不好的地方是:我们的设备是modbus设备,他给我的接口是将一条modbus命令的各部分分开,而且这些参数都是我自己产生,他只需要直接将参数连接在一起发送即可,而且数据的解析还要我来做。我认为这是一个极烂的做法:

首先:数据的解析不应该我来做,说得确切点是不应该SCADA界面来做

其次:modbus命令的产生不应该我来做。我应该只需给modbus设备的地址和寄存器的地址即可

最后:如果再来一个设备,我的界面该如何处理。

我想谈谈力控的驱动方案,组态王的我不清楚,希望知道组态王驱动的解决方案的高手可以交流一下:

1.力控给了界面的接口和驱动的接口实例和代码,我认为他们不应该放到安装盘里的,这么重要的东西怎么可以让别人知道呢?组态王就不这么干,而且连下载都要申请,真鄙视组态王。

2.如果感兴趣的同仁,看看力控的驱动接口,就可以知道他的原理,他的设置非常的合理,至少要比组态王的好,因为从我跟组态王开发驱动的跳出的员工的合作就可以看出来。

组态软件链接的设备超多,而这些的驱动又不同,所有需要一个统一的驱动平台。使用该平台的接口可以编写不同的设备驱动程序。组态软件的驱动平台方面的资料可以到网上搜搜,大概有2、3篇论文说这个。

总的来说一个设备驱动对应有三个主要模块:设备参数配置模块、数据协议解析模块、与SCADA上位机联系的接口模块(主要为读写接口)。

另外这么多的设备,我们应该对他进行分类管理。一个好的方案是树形管理。

所有设备

      |-------------端口类型(串口)

                   |------------设备1

                   |-------------设备2

      |-------------端口类型(网卡)

                    |-------------设备3

                    |-------------设备4

首先按通信的端口分类,分串口、网卡等,这样不同的设备打开时不会对每个端口下的设备都来一次打开端口。

其次,每个端口下管理多个该端口下的设备。

系统应该设置如下类:

端口类

串口类

网口类

设备类

这些思想通过力控的驱动接口和网上相关的驱动平台的设计文章可以归纳出来。

这是我理解的驱动平台方案,请求高手提出好的解决方案(opc就免了,opc我已知道他的好处)。




工控网论坛管理员

  • 精华:0帖
  • 求助:0帖
  • 帖子:26帖 | 470回
  • 年度积分:0
  • 历史总积分:2845
  • 注册:2010年6月04日
发表于:2010-06-22 15:16:17
1楼
         这个问题我在跟一家组态软件公司开发一个专用控件的时候有过交流,现在国内的组态软件驱动和界面组态基本都放一起,这种架构用于比较简单的系统确实是方便和好用,但如果是用于大型SCADA系统的时候弊端就太明显了,所以我个人觉得比较合理的架构是INTOUCH的那种,驱动跟界面组态分开,驱动跟界面的数据交互采用OPC或DDE方式。相类似的终端又不要求实时在线的可以方便地实现轮巡跟新,结合主动上报功能可以大大地减轻系统负担!

工控网论坛管理员

  • 精华:0帖
  • 求助:0帖
  • 帖子:26帖 | 470回
  • 年度积分:0
  • 历史总积分:2845
  • 注册:2010年6月04日
发表于:2010-06-22 15:21:04
2楼
设备驱动 =  端口定义 +  设备定义 + 分机号定义。

dynamics

  • 精华:0帖
  • 求助:0帖
  • 帖子:2帖 | 5回
  • 年度积分:0
  • 历史总积分:43
  • 注册:2008年4月28日
发表于:2010-06-22 17:40:04
3楼
回复内容:
对:工控网论坛管理员 关于         这个问题我在跟一家组态软件公司开发一个专用控件的时候有过交流,现在国内的组态软件驱动和界面组态基本都放一起,这种架构用于比较简单的系统确实是方便和好用,但如果是用于大型SCADA系统的时候弊端就太明显了,所以我个人觉得比较合理的架构是INTOUCH的那种,驱动跟界面组态分开,驱动跟界面的数据交互采用OPC或DDE方式。相类似的终端又不要求实时在线的可以方便地实现轮巡跟新,结合主动上报功能可以大大地减轻系统负担! 内容的回复:

你说的这种方式应该属于将所有的驱动程序集成为一个通信服务器,驱动采集的数据都放到通信服务器中,界面向服务器请求数据即可,最新的opc就属于这种方式。我说的对不?

dynamics

  • 精华:0帖
  • 求助:0帖
  • 帖子:2帖 | 5回
  • 年度积分:0
  • 历史总积分:43
  • 注册:2008年4月28日
发表于:2010-06-22 17:45:57
4楼
回复内容:
对:工控网论坛管理员 关于设备驱动 =  端口定义 +  设备定义 + 分机号定义。 内容的回复:

要通信肯定需要端口(COM口,网络口),然后访问具体的数据通过设备的地址和该数据对应设备中的编址。打开了端口,再访问数据应该都是两级结构,先找到设备,再找设备中的数据。对不?

工控网论坛管理员

  • 精华:4帖
  • 求助:0帖
  • 帖子:330帖 | 6019回
  • 年度积分:0
  • 历史总积分:23673
  • 注册:2010年2月20日
发表于:2010-06-22 18:48:11
5楼
设备驱动 = 端口定义 + 设备定义 + 分机号定义,这种方式方便进行通讯控制,比如有三十个同样的终端,只需要压入不同的分机号给驱动!

工控网论坛管理员

  • 精华:4帖
  • 求助:0帖
  • 帖子:330帖 | 6019回
  • 年度积分:0
  • 历史总积分:23673
  • 注册:2010年2月20日
发表于:2010-06-22 18:50:00
6楼
回复内容:
对:dynamics 关于回复内容:
对:工控网论坛管理员 关于         这个问题我在跟一家组态软件公司开发一个专用控件的时候有过交流,现在国内的组态软件驱动和界面组态基本都放一起,这种架构用于比较简单的系统确实是方便和好用,但如果是用于大型SCADA系统的时候弊端就太明显了,所以我个人觉得比较合理的架构是INTOUCH的那种,驱动跟界面组态分开,驱动跟界面的数据交互采用OPC或DDE方式。相类似的终端又不要求实时在线的可以方便地实现轮巡跟新,结合主动上报功能可以大大地减轻系统负担! 内容的回复:

你说的这种方式应该属于将所有的驱动程序集成为一个通信服务器,驱动采集的数据都放到通信服务器中,界面向服务器请求数据即可,最新的opc就属于这种方式。我说的对不?
内容的回复:


对的,这样所有的操作站面向通讯服务器,由通讯服务器去管理设备!

dynamics

  • 精华:0帖
  • 求助:0帖
  • 帖子:2帖 | 5回
  • 年度积分:0
  • 历史总积分:43
  • 注册:2008年4月28日
发表于:2010-06-22 20:30:44
7楼

回复内容:
对:工控网论坛管理员 关于回复内容:
对:dynamics 关于回复内容:
对:工控网论坛管理员 关于         这个问题我在跟一家组态软件公司开发一个专用控件的时候有过交流,现在国内的组态软件驱动和界面组态基本都放一起,这种架构用于比较简单的系统确实是方便和好用,但如果是用于大型SCADA系统的时候弊端就太明显了,所以我个人觉得比较合理的架构是INTOUCH的那种,驱动跟界面组态分开,驱动跟界面的数据交互采用OPC或DDE方式。相类似的终端又不要求实时在线的可以方便地实现轮巡跟新,结合主动上报功能可以大大地减轻系统负担! 内容的回复:


你说的这种方式应该属于将所有的驱动程序集成为一个通信服务器,驱动采集的数据都放到通信服务器中,界面向服务器请求数据即可,最新的opc就属于这种方式。我说的对不?
内容的回复:


对的,这样所有的操作站面向通讯服务器,由通讯服务器去管理设备! 内容的回复:


目前我项目中有一个使用传统的驱动方法。系统中只有一个modbus装置,上位机直接通过驱动程序去取数据,modbus可以一次刷新所有数据,SCADA使用接口直接去直接读设备大概需要多长时间?(9600buad)。

dynamics

  • 精华:0帖
  • 求助:0帖
  • 帖子:2帖 | 5回
  • 年度积分:0
  • 历史总积分:43
  • 注册:2008年4月28日
发表于:2010-06-22 20:51:44
8楼
我也认为使用INTOUCH的DDE/OPC方式是最好的。我在项目中发现,我直接使用驱动程序和设备通信的话,1秒钟采集不上来一个数据,跟我合作的哥们写的驱动根本满足不了要求。我的SCADA界面1s刷新数据应该已经是够慢的了,但是采集不来数据就直接卡死了(我不明白他的modbus驱动里面为什么要用Sleep语句来延时,计算机专业的研究生竟然使用这么烂的方式),而且我每个数据的采集我都已经开了一个线程去做了。如果使用DDE/OPC的通信服务器方式的话,根本不存在SCADA界面请求数据会堵塞的问题。

国内的组态软件厂家做的数据采集哪个做得比较好呢?

工控网论坛管理员

  • 精华:4帖
  • 求助:0帖
  • 帖子:330帖 | 6019回
  • 年度积分:0
  • 历史总积分:23673
  • 注册:2010年2月20日
发表于:2010-06-22 21:26:43
9楼
应该是力控做得还是不错的,力控为油田做的平台给他们的架构带来了质的提高!

热门招聘
相关主题

官方公众号

智造工程师