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

1、   前言git

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

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

2、   为何要开源,它能作什么编程

  • 开源是大势所趋

如今已经不是兜售软件光盘卖受权的时代了。我本身开发这套系统也得益于开源。安全

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

开始就是本身研发,同事广泛反对,都认为组态软件是大公司玩的东西,我靠一人一枪,图样图森破。架构

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

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

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

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

  • 目标和功能

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

系统架构图以下:

 

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

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

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

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

 

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

目前已经支持:

  • Modbus TCP/RTU
  • OPC DA
  • DDE
  • 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不支持,在这里加入一个新的设备驱动很方便。

     

3、   三个为何

    考虑到吹了半天牛B,你们也许会问如下三个问题:

为何要用.NET 平台?

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

其二微软也愈来愈开放,.NET跨平台能力也愈来愈强。至于被不少喷子狂喷的所谓.NET工资低,那是由于国内特殊缘由形成JAVA码农已先入为主。

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

为何要用WPF?

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

实现了先后台分离的协做方式。加上有宇宙第一IDE的配合,能够作的很是炫。

 

为何要用Visual Studio

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

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

 

4、   下面的计划

  • 完善功能。

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

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

       提纲和目录也拟好了。大体以下:

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

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

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