当前位置: 首页 > news >正文

工控项目开发框架介绍

结合公司多年各系统平台开发维护的经验,逐步确立了统一各系统平台的思想,在平台建立完善的基础上进行系统的二次开发。

目前焦炉四大机车系统、烧结配水系统、隧道广告系统已实现平台统一(如下图)。

 


一、        开发框架组件结构

  

 

       IOServer :一个后台管理程序和很多驱动共同组成,属于数据采集部分,通过它可以和不同PLC、智能仪表、远程PC机上的程序和本机程序等软硬件进行数据交互。

       系统核心组件:联系前台和后台的枢纽程序,包括以下几个组件:IO数据访问(Swl.ocx),SQL数据库访问(SwDB.ocx),报表打印预览(Swp.ocx),图表曲线(TeeChart5.ocx),数据表格(Vsflex7L.ocx)。

       系统项目框架,是系统前台界面和相应数据报表处理程序的管理平台。包括主界面程序(JRSystem.exe),数据初始化(BKInit.exe),数据编辑(DWParam.exe),密码修改(SetPassword.exe),系统信息显示(SystemInfo.exe);

 

二、        IOServer

        基于PC上的后台驱动平台已经成熟,该程序从2005年2月14日开始开发,距今已有多年,目前四车、配水、隧道广告都采用该后台(系统在现场一致运行正常)。

      

关于IOServer的详细介绍,请参见我其它时间写的文章。

http://yfsoft.blog.51cto.com/1635641/324069

http://yfsoft.blog.51cto.com/1635641/323484

http://yfsoft.blog.51cto.com/1635641/323792

http://yfsoft.blog.51cto.com/1635641/324073

 

三、        系统核心组件

       IO数据访问(Swl.ocx),通过变量名称,可以很方便的读写后台数据(可以是多个程序共同访问IO数据)。通过这个组件,后台数据访问的细节便被封装,前台界面可以不关心后台工作方式,而直接获取自己想要的数据。

       SQL数据库访问(SwDB.ocx),该组件最早来源于老版本的焦炉四大机车系统的SQL控件(在2004年开发),后升级改进而成。通过该组件可以很方便的访问SQL数据库。

       报表打印预览(Swp.ocx),也是来源于焦炉四车系统的报表部分,经过再封装和改进(比如可以判断打印机是否在线等等),通过该组件可以实现表格数据所见即所打的打印功能。

       图表曲线(TeeChart5.ocx),数据表格(Vsflex7L.ocx)都是第三方公司著名的组件,一个实现图表显示,一个实现数据表格处理。

 

四、        系统项目框架

该系统框架为各系统平台提供统一风格的操作界面:标题头,操作按钮,操作菜单等等。此外负责后台程序、前台程序的加载和前台界面的切换。

具体的工艺相关的部分,通过金日SDK开发包提供的样例程序进行开发(用VB开发,借助系统核心组件与IO数据进行交互),其它部分仅通过配置文件定制即可(如界面的颜色,按钮的多少,菜单选项的多少都可以定制)。

此外提供各系统通用的组件程序,如:参数初始化,参数修改,密码修改,信息查看程序等等。

五、        小结

通过采用成熟的开发框架,一是大大减少了开发时间,二是后期在软件方面的维护成本几乎为零。为了使开发平台更加通用化,后期我们又开发了组态软件(目前为嵌入式版本,可在我的blog查看相关文章),这样对于一般项目,其开发时间又近乎为零了。

牛顿为什么伟大,他说是因为他站在巨人肩膀上的缘故。我们没有资格站在巨人肩上,但我们站在我们自己搭的草台之上,也许也能比天生的巨人看的更远。

 

 

相关文章:

  • c#获取文件路径
  • 条款二 : 运行时常量(readonly)优于编译时常量(const)
  • SQL Server 2005新功能
  • 是DataGrid的某数字内容列可编辑,并且以NumericStepper组件改变数值。
  • 找工作要做的十件事
  • 什么是数据恢复技术
  • [InnoDB系列] -- SHOW INNODB STATUS 探秘
  • 服务器中的地震仪,MOM2005+SP1部署指南(MOM2005系列之一)
  • 网络硬盘drop.io的使用
  • 1904年 圣路易斯 第三届奥运会
  • 20080605-昨日回顾今日计划
  • 机器人也有女性,Sega E.M.A登场
  • Mastering Oracle SQL学习笔记(join句法专题第八部份)
  • Microsoft .Net 框架 SDK 快速入门教程
  • 杂语
  • 《网管员必读——网络组建》(第2版)电子课件下载
  • 【css3】浏览器内核及其兼容性
  • C# 免费离线人脸识别 2.0 Demo
  • co.js - 让异步代码同步化
  • css的样式优先级
  • CSS实用技巧干货
  • ECMAScript6(0):ES6简明参考手册
  • javascript从右向左截取指定位数字符的3种方法
  • Travix是如何部署应用程序到Kubernetes上的
  • 爱情 北京女病人
  • 大型网站性能监测、分析与优化常见问题QA
  • 对话:中国为什么有前途/ 写给中国的经济学
  • 个人博客开发系列:评论功能之GitHub账号OAuth授权
  • 基于Dubbo+ZooKeeper的分布式服务的实现
  • 基于Javascript, Springboot的管理系统报表查询页面代码设计
  • 技术:超级实用的电脑小技巧
  • 开源中国专访:Chameleon原理首发,其它跨多端统一框架都是假的?
  • 你真的知道 == 和 equals 的区别吗?
  • 驱动程序原理
  • 如何编写一个可升级的智能合约
  • 湖北分布式智能数据采集方法有哪些?
  • 扩展资源服务器解决oauth2 性能瓶颈
  • ()、[]、{}、(())、[[]]等各种括号的使用
  • (9)YOLO-Pose:使用对象关键点相似性损失增强多人姿态估计的增强版YOLO
  • (PWM呼吸灯)合泰开发板HT66F2390-----点灯大师
  • (ZT) 理解系统底层的概念是多么重要(by趋势科技邹飞)
  • (附源码)springboot青少年公共卫生教育平台 毕业设计 643214
  • (收藏)Git和Repo扫盲——如何取得Android源代码
  • (转)iOS字体
  • (转)VC++中ondraw在什么时候调用的
  • .gitignore文件---让git自动忽略指定文件
  • .Mobi域名介绍
  • .Net core 6.0 升8.0
  • .NET Core WebAPI中使用swagger版本控制,添加注释
  • .NET Standard、.NET Framework 、.NET Core三者的关系与区别?
  • .NET/C# 判断某个类是否是泛型类型或泛型接口的子类型
  • @Autowired 与@Resource的区别
  • @RestControllerAdvice异常统一处理类失效原因
  • [20171102]视图v$session中process字段含义
  • [Angular] 笔记 9:list/detail 页面以及@Output