一、   前言

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

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

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

  • 开源是大势所趋

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

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

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

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

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

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

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

  • 目标和功能

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

系统架构图如下:

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

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

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

应用层主要是人机界面(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不支持,在这里加入一个新的设备驱动很方便。

三、   三个为什么

考虑到吹了半天牛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文档。比较粗略,欢迎提问。

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

  1. 开源纯C#工控网关+组态软件(九)定制Visual Studio

    一.   引子 因为最近很忙(lan),很久没发博了.不少朋友对那个右键弹出菜单和连线的功能很感兴趣,因为VS本身是不包含这种功能的.   大家想这是什么鬼,怎么我的设计器没有,其实这是一个微软黑科技 ...

  2. 开源纯C#工控网关+组态软件(八)表达式编译器

    一.   引子 监控画面的主要功能之一就是跟踪下位机变量变化,并将这些变化展现为动画.大部分时候,界面上一个图元组件的某个状态,与单一变量Tag绑定,比如电机的运行态,绑定一个MotorRunning ...

  3. 开源纯C#工控网关+组态软件(七)数据采集与归档

    一.   引子 在当前自动化.信息化.智能化的时代背景下,数据的作用日渐凸显.而工业发展到如今,科技含量和自动化水平均显著提高,但对数据的采集.利用才开始起步. 对工业企业而言,数据采集日益受到重视, ...

  4. 开源纯C#工控网关+组态软件(六)图元组件

    一.   图元概述 图元是构成人机界面的基本单元.如一个个的电机.设备.数据显示.仪表盘,都是图元.构建人机界面的过程就是铺排.挪移.定位图元的过程. 图元设计是绘图和编码的结合.因为图元不仅有显示和 ...

  5. 开源纯C#工控网关+组态软件(五)从网关到人机界面

    一.   引子 之前都在讲网关,不少网友关注如何实现界面.想了解下位机变量变化,是怎样一步步触发人机界面动画的. 这个步步触发,实质上是变量组(Group)的批量数据变化(DataChange)事件, ...

  6. 开源纯C#工控网关+组态软件(四)上下位机通讯原理

    一.   网关的功能:承上启下 最近有点忙,更新慢了.感谢园友们给予的支持,现在github上已经有.目标是最好的开源组态,看来又近一步^^ 之前有提到网关是物联网的关键环节,它的作用就是承上启下. ...

  7. 开源纯C#工控网关+组态软件(三)加入一个新驱动:西门子S7

    一.   引子 首先感谢博客园:第一篇文章.第一个开源项目,算是旗开得胜.可以看到,项目大部分流量来自于博客园,码农乐园,名不虚传^^. 园友给了我很多支持,并提出了很好的改进意见.现加入屏幕分辨率自 ...

  8. python组态软件开源_开源纯C#工控网关+组态软件(八)表达式编译器

    一.引子 监控画面的主要功能之一就是跟踪下位机变量变化,并将这些变化展现为动画.大部分时候,界面上一个图元组件的某个状态,与单一变量Tag绑定,比如电机的运行态,绑定一个MotorRunning信号: ...

  9. netty 工控网关_开源纯C#工控网关+组态软件(九)定制Visual Studio

    一.引子 因为最近很忙(lan),很久没发博了.不少朋友对那个右键弹出菜单和连线的功能很感兴趣,因为VS本身是不包含这种功能的. 大家想这是什么鬼,怎么我的设计器没有,其实这是一个微软黑科技,如果用好 ...

  10. netty 工控网关_开源软件分享-基于.NET的工控网关和组态软件

    最近逛github发现一款不错的组态软件,其包括了工控网关和组态界面.其中他的工控网关已支持(Modbus TCP/RTU. OPC DA. Siemens S300/200/1200/1500. P ...

最新文章

  1. DOM+XPath提取规则注记!
  2. percona-5.5安装笔记
  3. 【MySQL】按平均成绩从高到低显示所有学生的所有课程的成绩以及平均成绩
  4. HarmonyOS之深入解析图像的编码和解码
  5. Java集合(二):List列表
  6. 强制将IE,Chrome设置为指定兼容模式来解析
  7. 期权、RSU的区别与行权事宜
  8. 如何解决亚稳态?(FPGA面试题)
  9. mysql 计划任务关闭_mysql计划任务
  10. WordPress 修改固定链接出错(apache2)
  11. 82.反向代理与负载均衡原理
  12. python1e2_Python-1 数据类型
  13. Initialize flexnet service failed error code 50003错误
  14. C语言闰年还是平年问题程序,c语言判断一年是不是闰年,编程错在哪呢?
  15. 流媒体视频播放代码总结。
  16. js 中如何筛选处理符合条件的数据
  17. 教你用arduino控制LCD1602液晶屏的底层程序实现(全网最笨的方法)
  18. hdu 3018 图 欧拉回路 并查集
  19. 中国用于先天性代谢错误的医用食品市场深度研究分析报告
  20. Siri触发器原理及改进

热门文章

  1. ue4文档接口类学习
  2. SSH学习之二 OpenSSH配置文件解析
  3. windows搭建FTP
  4. android 电影院订票系统 论文,电影院网上订票系统-毕业论文.doc
  5. java打印出货单_送货单,出货单打印用什么软件,含操作方法
  6. 模式识别实验报告--贝叶斯分类器设计
  7. python表白代码简单
  8. 电子申请客户端(EAC)在64位系统上的兼容性问题
  9. foremost使用简介
  10. SSH config 文件的作用