161

开源纯C#工控网关+组态软件 - 老坏猫

 6 years ago
source link: http://www.cnblogs.com/evilcat/p/7617720.html
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.

开源纯C#工控网关+组态软件

一、   前言

在园子潜水也七八年了。说来惭愧,这么多年虽然一直自称.NET铁杆粉丝,然仅限于回几个不痛不痒的贴,既没有发布过代码,也没有写过文章。

看着.NET和C#在国外风生水起,国内却日趋没落,我也早觉得有写一点东西的必要了。

二、   为什么要开源,它能做什么

  • 开源是大势所趋

现在已经不是兜售软件光盘卖授权的时代了。我自己开发这套系统也得益于开源。

起因是因为看到单位用的组态软件被版权问题困扰,同时系统十分庞大,动辄几个G,安装部署调试都不方便,同时脚本功能和扩展能力也有限。

开始就是自己研发,同事普遍反对,都认为组态软件是大公司玩的东西,我靠一人一枪,图样图森破。

然而我是个狂热分子,参考了几百篇国内论文,下载过几十上百个开源类库,反复研究,经常熬夜。

一段时间之后,拿出来一套半成品,也逐渐为大家所接受,并一发不可收,陆续做了不少工程,逐步取代了原有的组态软件,系统也不断成熟、壮大。

但限于精力和水平,系统完善的空间还很大,可以改进的功能还很多,与其敝帚自珍,不如交给社区,共同完善。

这套系统只是提供了一套组件和工具,并没有给出具体的行业解决方案和控制逻辑(这属于不能开源的部分)。

  • 目标和功能

从一开始设计目标就很明确,取代单位现有组态软件。实现“多快好省”。

系统架构图如下:

分为网关驱动层、平台服务层、应用层。

网关负责转换各种工业以太网协议,统一接口。

平台服务层负责轮询、储存、推送数据。提供各种查询、读写接口。

应用层主要是人机界面(HMI)和各种可视化功能组件,如报警界面、趋势图、报表、图表、下订单、改参数、查日志等。

:就是适应面广,比如工控网关能支持多种工业以太网、PLC,普适性强,可应用于多个行业。

目前已经支持:

  • Modbus TCP/RTU
  • OPC DA
  • AB EtherNetIP
  • Mitsubishi
  • Siemens S300/200/1200/1500

快:这里包含三个意思,设计效率高、安装部署快、运行速度快。

有方便的设计工具。驱动、变量、报警、归档管理器,对,就这样一个简单的配置器,支持各种格式导入导出。

接下来是宇宙第一IDE,Visual Studio,作为组态设计器。组态设计器本来是最难实现的部分,现在VS一出,秒杀一片。

速度按我自己,做一套多工段上位机的画面,快则一天内,慢也就两三天。

运行速度:按批量读写方式+订阅-推送模式,几千个变量,几百个显示单元,含动画,通讯周期500毫秒,很流畅。

好:就是界面美观、功能齐全、易用性好,扩展性好。

目前已完成的功能包括:

工业网关:支持多种协议。如有新驱动加入,接口实现非常简便。

实时数据引擎:实时推送变化的数据,支持远程服务器+N个客户端。

历史数据归档引擎:支持N变量快速归档,可为数据分析和数据挖掘提供支持。归档文件很小,自带索引,查询快速。

人机界面:可以充分利用VS设计器的强大功能,辅之以强大的插件(自吹一下),完全可以把VS设计器当做组态设计器来用。

扩展性:加入新功能很快,因为接口很简单。但是功能却不简单。

省:顾名思义,就是省钱省时间啦。

首先系统环境简单,就是装个.NET(因为只要求4.0,WIN7自带),数据库可用SQL EXPRESS,没有采用任何第三方收费组件(开源组件在github列了清单,感谢作者)。

VS作为设计器,强大又好用,可用社区免费版(个人用用没关系,企业的话最好联系微软买正版授权)。

支持各种PLC,单位老组态软件很多PLC不支持,在这里加入一个新的设备驱动很方便。

三、   三个为什么

    考虑到吹了半天牛B,大家也许会问以下三个问题:

为什么要用.NET 平台?

第一,本人是微软粉丝,.NET忠实码农,用了十多年了,无往不利。无论是一心为公,还是私活利器。首先.NET本身就是一个多快好省的平台,配合宇宙第一IDE,开发效率极高。

其二微软也越来越开放,.NET跨平台能力也越来越强。至于被很多喷子狂喷的所谓.NET工资低,那是因为国内特殊原因造成JAVA码农已先入为主。

本人这行业目前没有公司政治的问题,因此也从来没考虑转型(曾经为安卓APP写过JAVA,也很简单,但是我要吐槽一下,同样功能,JAVA实现起来太啰嗦)。

为什么要用WPF?

WPF是一种声明式编程方式(XAML语言),非常适合工控界面设计。同时微软提供了Blend设计器,实际上画这些控件的都是不会写代码的机械工程师。

实现了前后台分离的协作方式。加上有宇宙第一IDE的配合,可以做的非常炫。

为什么要用Visual Studio

很简单,宇宙第一IDE不是盖的。我见过很多家的组态画面设计器。无论效果还是易用性还是扩展性,和VS没法比。VS同时还集成了项目管理和编译器。

关于VS扩展性大家很少用到,本人也填过很多坑,找了很多资料,实现之后你才知道它的强大。

四、   下面的计划

  • 完善功能。

在社区的协助下,修补Bug,增强安全性稳定性。能用起来就是胜利。然后追求更加“多快好省”。

  • 写一系列帖子,把架构、原理讲清楚。

       提纲和目录也拟好了。大致如下:

  1. 网关层原理、接口说明
  2. 如何实现一个设备驱动
  3. 如何设计图元
  4. VS插件模块及原理
  5. 归档模块及文件格式
  6. 如何进行功能扩展

github地址:https://github.com/GavinYellow/SharpSCADA

github上面有说明书。下载包里还包括如何安装部署、如何用来设计的Word文档。比较粗略,欢迎提问。


About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK