• 4553阅读
  • 5回复

工业自动化软件设计 之三 架构、设计与选择 [复制链接]

上一主题 下一主题
离线myer
 

只看楼主 倒序阅读 楼主  发表于: 2011-11-28
        架构是一组有关软件组织方式的重要决策,是一种对系统内构成元素、元素接口、以及这些元素间协作行为方式的选择;是一种把这些结构和行为元素逐步组合为更大子系统的合成方式;也是一组构建规则,在其指导下,把这些元素、接口、及其协作有效组织起来。
       软件架构都不会是通用的,都是为了解决某一特定领域而设计的。而本文讨论的工业自动化软件,则是一个广义的实时数据收集、显示、告警等处理的一个平台,包括了系统参数定义、实时数据处理、历史数据保存、数据的组态显示,以及拓展开来的双机双网冗余、进程管理、用户管理、连接管理、以及由图形组态而来的代码生成等等。
      软件构造的一些基本原则,或者在面临选择的时候,应该基于一个什么样的原理?先简要给出一个列表,在后续文章中再逐步展开。基于数据对象的不确定性和GUI程序的易变性,尽可能多的元素及其行为都是可配置的,而不变的只有元素间的接口;当需要新增一个功能时,是新增if...else...实现,还是实现一个该类功能管理器;有些功能常用或不常用,需要较多代码和技巧实现或者需要较少代码实现,当有冲突时如何选择?设计为插件,还是代码的累加?遇到比较麻烦的事情时,究竟该谁处理(谁家的孩子谁抱走)?是尽量的throw...catch...,抑或各自专注各自的实现,让错误尽早暴露?……
        工业自动化软件应该实现的组件包括:通讯平台(前置、实时数据、HMI)、系统冗余(服务高可用性)、进程服务监视管理、参数组态(可配置的参数库)、图元组态(数据显示)、功能块组态(代码生成)、通用服务(log、user、event等)等。
        系统的配置方式,怎么样管理、启动、停止每一个系统?系统的默认配置的行为?
http://user.qzone.qq.com/56430808
离线myer

只看该作者 1楼 发表于: 2011-11-28
降低系统耦合度
看到全局变量,要先打个问号;
看到if...else...,要先打个问号;
看到#include,要先打个问号。。。
http://user.qzone.qq.com/56430808
离线xinqingfly

只看该作者 2楼 发表于: 2011-11-29
继续
菜鸟也是鸟
离线begboy

只看该作者 3楼 发表于: 2011-12-02

写得很好!!
一直很关注楼主写的该系列。

工业自动化 是我们关注的 方向之一。
也请教楼主 :
在工业控制中 追求的是 高实时性,往往是以毫秒甚至微秒 来计算;
例如 操作系统 就不能使用 常见的 Unix(Linux )了。

但Qt 、GTK 等GUi 界面的速度 似乎不能达到要求。
那么 怎么将他们进行 合并开发呢?

楼主有空可以指点指点。
begboy
离线myer

只看该作者 4楼 发表于: 2011-12-02
监控系统实时性要求并不高,一般要求0.1s - 3s左右的响应速度就行,win、linux非实时操作系统足够了
而对于要求在1ms左右,甚至50us左右,必须在实时环境下运行
比如rtx、intime、vxworks、realtime linux等等,简单点的可能不需要操作系统,实时性更好

一般的,在windows或者linux工作站,运行step7等类似软件,画cfc、fc等功能块图、最后调用第三方编译器生成实时系统运行需要的二进制代码。
http://user.qzone.qq.com/56430808
离线begboy

只看该作者 5楼 发表于: 2011-12-02
回 4楼(myer) 的帖子
谢谢 楼主 指点!!

begboy


快速回复
限100 字节
 
上一个 下一个