一、   前言

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

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

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

  • 开源是大势所趋

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

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

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

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

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

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

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

  • 目标和功能

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

系统架构图如下:

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

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

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

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

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

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

目前已经支持:

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

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

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

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

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

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

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

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

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

目前已完成的功能包括:

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

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

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

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

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

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

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

首先系统环境简单,就是装个.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的配合,可以做的非常炫。

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

为什么要用Visual Studio

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

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

 

四、   下面的计划

  • 完善功能。

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

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

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

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

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

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

05-04 05:40