最近跟一个人合作项目,我负责SCADA的界面开发。我想请问一下各位上位机与设备通信的接口应该如何设计?
这个接口本来是做驱动的人写的。但是认为他做得不够好。
我认为读写设备的接口参数应该包括:
设备地址
数据点的具体地址
数据部分。
我认为他的接口不好的地方是:我们的设备是modbus设备,他给我的接口是将一条modbus命令的各部分分开,而且这些参数都是我自己产生,他只需要直接将参数连接在一起发送即可,而且数据的解析还要我来做。我认为这是一个极烂的做法:
首先:数据的解析不应该我来做,说得确切点是不应该SCADA界面来做
其次:modbus命令的产生不应该我来做。我应该只需给modbus设备的地址和寄存器的地址即可
最后:如果再来一个设备,我的界面该如何处理。
我想谈谈力控的驱动方案,组态王的我不清楚,希望知道组态王驱动的解决方案的高手可以交流一下:
1.力控给了界面的接口和驱动的接口实例和代码,我认为他们不应该放到安装盘里的,这么重要的东西怎么可以让别人知道呢?组态王就不这么干,而且连下载都要申请,真鄙视组态王。
2.如果感兴趣的同仁,看看力控的驱动接口,就可以知道他的原理,他的设置非常的合理,至少要比组态王的好,因为从我跟组态王开发驱动的跳出的员工的合作就可以看出来。
组态软件链接的设备超多,而这些的驱动又不同,所有需要一个统一的驱动平台。使用该平台的接口可以编写不同的设备驱动程序。组态软件的驱动平台方面的资料可以到网上搜搜,大概有2、3篇论文说这个。
总的来说一个设备驱动对应有三个主要模块:设备参数配置模块、数据协议解析模块、与SCADA上位机联系的接口模块(主要为读写接口)。
另外这么多的设备,我们应该对他进行分类管理。一个好的方案是树形管理。
所有设备
|-------------端口类型(串口)
|------------设备1
|-------------设备2
|-------------端口类型(网卡)
|-------------设备3
|-------------设备4
首先按通信的端口分类,分串口、网卡等,这样不同的设备打开时不会对每个端口下的设备都来一次打开端口。
其次,每个端口下管理多个该端口下的设备。
系统应该设置如下类:
端口类
串口类
网口类
设备类
这些思想通过力控的驱动接口和网上相关的驱动平台的设计文章可以归纳出来。
这是我理解的驱动平台方案,请求高手提出好的解决方案(opc就免了,opc我已知道他的好处)。
回复内容:
对:工控网论坛管理员 关于回复内容:
对:dynamics 关于回复内容:
对:工控网论坛管理员 关于 这个问题我在跟一家组态软件公司开发一个专用控件的时候有过交流,现在国内的组态软件驱动和界面组态基本都放一起,这种架构用于比较简单的系统确实是方便和好用,但如果是用于大型SCADA系统的时候弊端就太明显了,所以我个人觉得比较合理的架构是INTOUCH的那种,驱动跟界面组态分开,驱动跟界面的数据交互采用OPC或DDE方式。相类似的终端又不要求实时在线的可以方便地实现轮巡跟新,结合主动上报功能可以大大地减轻系统负担! 内容的回复:
你说的这种方式应该属于将所有的驱动程序集成为一个通信服务器,驱动采集的数据都放到通信服务器中,界面向服务器请求数据即可,最新的opc就属于这种方式。我说的对不?
内容的回复:
对的,这样所有的操作站面向通讯服务器,由通讯服务器去管理设备! 内容的回复: