在经过多个自动化上位机的开发后,对上位机的重用开发和提高效率,减少重复工作有了一定的积累。故而产生了模块化建设上位机的思路。现从当下项目开始,研究出一套可重复利用的模块化系统。

1.点表整理

从PLC工程师获得泵站点表,主要包含:DI/DO(设备状态显示/控制),AI/AO(模拟量输入输出),自动状态显示/控制点等等。

获取后,统一编写tagname规则:比如BZ1_BENG1_AUTO(1号泵手自动显示),BZ1_BENG1_K(1号泵开启)等等。这样做的好处,既可轻松扩展,BZ2,BZ3。。。又可以添加画面的时候,使画面能够重用。

要点:在ifix安装后,记得提前将使用传统历史库的补丁程序安装好。

2.画面添加

2.1主画面制作

主画面为主要控制图,分为两个部分:1.画面点的添加,2.底图的制作。从第一步获得的点表,将其显示控制点添加到相应的合适位置即可。关于底图的制作,可以利用3D技术,直接制作一张3D图即可解决位置,这样的好处就在于3D既可以形象的描述位置,又节省了开发图形的时间,更换效率提高。

2.2布局和模块整合

在基于先前的开发经验的情况下,采用了上标题,下控制按钮,右下报警一览的布局。

模块的整合分为:

用户登录模块,主画面,报警,趋势,报表,语音播报这几个模块。

用户登录模块:主要用来用户注销/切换,系统退出。切换的目的在于,提高权限,获得可以修改参数设定的权限。

要点:SCU中配置安全时,通过配置普通用户和管理员之间的安全区域的不同来实现

报警:主要分为历史报警/实时报警。

要点:历史报警,需要在SCU中配置相应的点,ODBC中建立桥接,和数据库中需要新建sql server数据库。在重用模块时,要提前配置好。

趋势:分为历史趋势/实时趋势

要点:历史趋势,提前在hta.exe中将要采集的点添加好,拓展时,只要新添加就可以了。在后台程序中记得,添加HTC.EXE进行采集。

报表:添加fixground开启后台。

要点:本系统采用.NET开发的报表程序,使用后台调度,将需要的数据通过后台调度记录到SQL Server中,然后进行整理和展示。

语音报警:

要点:利用后台事件调度,编写vba脚本,实现报警时,弹出报警提示框,并通过语音将报警内容进行播报,同时写入事件和故障报警报表中去。

3.重用备注

在将模块化建立的上位机准备好后,压缩,以供可以实现高效的重用实践,其中主要事项如下:

1.单个泵站情况:

点表整理:

对比设备增减:如泵数量增减,格栅增减等,tagname不变,将地址替换。

画面替换:

将底图替换,删减画面点。

环境配置:

主要指的是,模块化需要的环境:

1.历史趋势传统数据库补丁安装。

2.历史报警,启用ODBC,建立和模块化规定好的名字,以及报警数据库名字。

3.语音报警,将语音插件提前安装好,将后台调度中相应播报内容改为实际运用泵站即可。

2.多个泵站集成

多个泵站类似单个泵站集成,主要区别:

点表集成时,主要名称扩展BZ1,(泵站1),BZ2(泵站2)依次类推。

主画面也可以直接扩展修改即可。

报警,趋势,报表直接可以进行合并,添加。

总结:

对模块化建设的上位机提出,实际上是重用思想的一种体现。可能大家都在这样做,将先前项目移植过来,然后修修改改。本人将其打包整理好,更易理解其规律,防止时间过久,对开发的内容生疏,又得从头开始。总的来说,这样更容易形成个人风格,提高开发效率,是一次有意义的尝试。

欢迎大家有什么意见和建议可以讨论。

ifix重用性模块化开发纪实(以污水处理泵站为例)的更多相关文章

  1. Javascript模块化开发,使用模块化脚本加载工具RequireJS,提高你代码的速度和质量。

    随着前端JavaScript代码越来越重,如何组织JavaScript代码变得非常重要,好的组织方式,可以让别人和自己很好的理解代码,也便于维护和测试.模块化是一种非常好的代码组织方式,本文试着对Ja ...

  2. JavaScript学习总结(六)——前端模块化开发

    早期的javascript版本没有块级作用域.没有类.没有包.也没有模块,这样会带来一些问题,如复用.依赖.冲突.代码组织混乱等,随着前端的膨胀,模块化显得非常迫切. 前端模块化规范如下: 一.前端模 ...

  3. Android模块化开发实践

    一.前言 随着业务的快速发展,现在的互联网App越来越大,为了提高团队开发效率,模块化开发已经成为主流的开发模式.正好最近完成了vivo官网App业务模块化改造的工作,所以本文就对模块化开发模式进行一 ...

  4. [译]使用6to5,让今天就来写ES6的模块化开发!

    http://es6rocks.com/2014/10/es6-modules-today-with-6to5/?utm_source=javascriptweekly&utm_medium= ...

  5. 在Html中使用Requirejs进行模块化开发

    在前端模块化的时候,不仅仅是js需要进行模块化管理,html有时候也需要模块化管理.这里就介绍下如何通过requirejs,实现html代码的模块化开发. 如何使用requirejs加载html Re ...

  6. 使用6to5,让今天就来写ES6的模块化开发!

    http://es6rocks.com/2014/10/es6-modules-today-with-6to5/?utm_source=javascriptweekly&utm_medium= ...

  7. 轻轻谈一下seaJs——模块化开发的利器

    "仅做一件事,做好一件事." 这个应该就是seaJs的精髓了. 我在自己的一些项目中使用过seaJs.对其算是了解一二.如今就班门弄斧.轻轻地谈一下. 首先上一段度娘的话: &qu ...

  8. Class撑起了OOP世界的天。Class类是OO的基本单元,OO的世界都是通过一个一个的类协作完成的,提高软件的重用性、灵活性和扩展性(转)

    引言 在OO的工作中,我们一定会涉及到类,抽象类和接口.那么类和抽象类以及接口到底扮演的什么角色? 本文主要是从人类社会的角度阐述类与抽象类以及接口的“社会”关系,从而让我们抛弃书上的那些死记硬背的概 ...

  9. js模块化开发——前端模块化

    在JavaScript发展初期就是为了实现简单的页面交互逻辑,寥寥数语即可:如今CPU.浏览器性能得到了极大的提升,很多页面逻辑迁移到了客 户端(表单验证等),随着web2.0时代的到来,Ajax技术 ...

随机推荐

  1. 11张流程图搞定 Spring Bean 生命周期

    在网上已经有跟多Bean的生命周期的博客,但是很多都是基于比较老的版本了,最近把整个流程化成了一个流程图.待会儿使用流程图,说明以及代码的形式来说明整个声明周期的流程.注意因为代码比较多,这里的流程图 ...

  2. Pytest学习笔记2-setup和teardown

    前言 我们在做自动化的时候,常常有这样的需求: 执行每一条用例时,都重新启动一次浏览器 每一条用例执行结束时,都清除测试数据 在unittest中,我们可以使用 setUp() 和 tearDown( ...

  3. 【模板】O(nlongn)求LIS

    合理运用单调性降低复杂度 平常用的都是O(n^2)的dp求LIS(最长不下降子序列)这里介绍O(nlogn)的算法 分析 对于可能出现的x<y<i且A[y]<A[x]<A[i] ...

  4. 撸了几天的sofa-tracer之后,我悟了!

    什么是分布式链路跟踪 简而言之,在分布式系统下,用于跟踪链路而衍生出的一项技术. 应用场景如下: 应用A,B,C,D,E 以一个层级关系依赖, 当用户向 应用A 发起请求,但是返回了个异常,为了排查这 ...

  5. Kubernetes自动横向伸缩集群节点以及介绍PDB资源

    在kubernetes中,有HPA在需要的时候创建更多的pod实例.但万一所有的节点都满了,放不下更多pod了,怎么办?显然这个问题并不局限于Autoscaler创建新pod实例的场景.即便是手动创建 ...

  6. Git&Gitlab开发流程与运维管理

    Git&Gitlab开发流程与运维管理 作者 刘畅 时间 2020-10-31 实验系统版本centos7.5 主机名称 ip地址 配置 安装软件 controlnode 172.16.1.1 ...

  7. JavaWeb入门知识梳理

    万维网 Web App(Web应用程序)是一种可以通过万维网访问的应用程序,用户只需要连接互联网和计算机安装浏览器,即可通过URI在线使用某个Web App,而不需要再安装客户端到计算机上.Web A ...

  8. Flask(1)- 简介

    背景 为啥要学,很久之前就学过点,没写文章 最近因为要写机器人工具,其实就是简单的纯服务端工具 反正 flask 也挺简单,一天快速过完 概念会直接搬教程的,实操自己敲一遍再总结 参考教程 https ...

  9. ActiveMq 之JMS 看这一篇就够了

    什么是JMS MQ 全称:Java MessageService 中文:Java 消息服务. JMS 是 Java 的一套 API 标准,最初的目的是为了使应用程序能够访问现有的 MOM 系 统(MO ...

  10. docker安装redis主从以及哨兵

    docker安装redis主从以及哨兵 本文使用docker在四台机器上部署一主二从三哨兵的Redis主从结构. 服务器配置 192.168.102.128 主节点 centos7.5 192.168 ...