『7x24小时有问必答』

前言

工业自动化领域有一个长期存在的痛点:PLC程序逻辑的编写和调试高度依赖厂商工具,不同品牌的设备之间打通数据流程更是麻烦。传统做法要么写大量中转代码,要么依赖专用的网关硬件,成本高且灵活性差。
用流程图的方式编排自动化逻辑,让Modbus和西门子S7协议的数据流动变得可视化。它把PLC数据读取、逻辑判断、数值转换、写入控制这些操作都做成了可拖拽的节点,配上高性能的后端执行引擎,算是给工业自动化场景提供了一个低门槛的解决方案。

项目介绍

一个基于Blazor和ASP.NET Core构建的工业自动化流程编辑器。用户可以在浏览器里拖拽节点、画连线,组成一套完整的数据处理流程,然后由后端引擎并发执行。这个项目支持Modbus TCP和西门子S7两种主流工业协议,能直接跟PLC设备通信。
流程执行引擎采用异步非阻塞设计,配合背压控制和熔断器机制,保证在高负载下也能稳定运行。目前项目代码完全开源,结构清晰,适合做二次开发或者直接集成到现有的MES系统中。

项目功能

功能分类
具体能力
流程可视化编辑
浏览器内拖拽节点、连接线,实时保存流程图配置
PLC协议通信
Modbus TCP(线圈、寄存器、离散输入等全部功能码)和西门子S7(S7-1200/1500/300/400系列)
执行引擎
异步消息队列、线程池管理、优先级调度、对象池复用
稳定性机制
背压控制、流量限制、熔断器保护、超时控制
性能监控
实时查看流程吞吐量、节点延迟、系统资源占用
节点类型
注入节点、调试节点、函数节点、开关节点、延迟节点、PLC读写节点

项目特点

纯Web端编辑器:不需要安装任何客户端软件,有浏览器就能用
跨平台运行:基于.NET 8,后端可跑在Windows、Linux、容器里
高性能执行:理论吞吐量5万消息/秒,平均延迟控制在5毫秒左右
轻量架构:没有过度依赖第三方框架,核心执行引擎自己实现
模块化设计:共享模型层、API层、Web前端层分离,方便替换或扩展
工业协议内置:Modbus和S7协议直接集成,不用额外装驱动或中间件

项目技术

技术领域
采用方案
后端框架
ASP.NET Core(.NET 8)
前端框架
Blazor WebAssembly
高性能队列
System.Threading.Channels
协议库
自研Modbus TCP、西门子S7实现
并发模型
异步非阻塞 + 线程池
监控指标
自定义PerformanceMonitor
配置存储
JSON文件 + 内存缓存
项目结构分为三个核心部分:
FlowDesigner.Shared:存放流程模型、节点定义、执行状态等公共数据结构
FlowDesigner.Api:提供流程执行、节点调度、PLC通信的后端服务
FlowDesigner.Web:Blazor前端,负责流程编辑器的界面和交互

项目效果

实际运行时的典型工作流程是这样的:
1、打开浏览器访问  http://localhost:5001,进入编辑器界面
2、从左侧节点库拖拽一个"Modbus读取"节点到画布上,配置PLC的IP地址、寄存器地址和读取长度
3、再拖一个"函数节点"作为中间处理,写一段简单的JS表达式做数据换算(比如原始值乘以系数)
4、最后拖一个"Modbus写入"节点,把处理后的数值写回另一个寄存器
5、用连线把这三个节点串起来,保存流程
6、后端执行引擎加载这个流程定义,按照设定的触发条件(定时或事件)开始跑数据
整个过程完全可视化,逻辑修改只需要在编辑器里重新连线或调整节点参数,不用改代码、不用重启服务。对于那些需要频繁调整数据处理逻辑的产线场景,这套模式能省下大量时间。
性能方面,引擎采用Channel作为消息传递的载体,配合对象池减少GC压力。单机实测在普通服务器上可以同时跑100个流程实例,每个消息的处理延迟基本都在毫秒级。背压控制会在队列积压超过阈值时自动限流,防止系统被突发流量冲垮。

项目源码

项目结构包含以下关键文件:
FlowDesigner.sln:解决方案文件,用Visual Studio或Rider打开即可
src/FlowDesigner.Api/:后端服务代码,Controllers、Services、配置都在这里
src/FlowDesigner.Web/:Blazor前端,Components和Pages是主要关注点
src/FlowDesigner.Shared/:模型定义,包括Flow、FlowNode、PlcModels等
快速跑起来的步骤
1、确保本地安装了.NET 8 SDK
2、clone代码后执行  dotnet build
3、开两个终端窗口,一个进到Api目录运行  dotnet run --urls "http://localhost:5000"
4、另一个进到Web目录运行  dotnet run --urls "http://localhost:5001"
5、访问5001端口开始使用,5000端口的Swagger文档可以查看API细节

注意事项

项目目前处于开发阶段
PLC 通讯功能需要真实硬件设备测试
性能指标为理论值,实际取决于硬件配置
为了防止丢失,可以在评论区留言关键字自动化流程编辑器,即可获取完整源码地址。

总结

项目提供了一个很实用的思路:把工业自动化的数据流处理做成可视化流程编排。它没有试图做一个万能平台,而是聚焦在Modbus和S7这两个最常用的工业协议上,把读写操作、数据转换、逻辑判断这些高频操作用节点的方式标准化了。
对于需要快速搭建数据采集、设备联动的场景,这套方案可以直接拿来用或者稍微改改就能上生产。高性能执行引擎和稳定性机制也是值得单独拿出来复用的模块。当然,项目还在开发阶段,PLC通讯部分需要更多真实设备测试来验证稳定性,但整体的架构和设计思路已经相当清晰。

关键词

最后
如果你觉得这篇文章对你有帮助,不妨点个赞支持一下!你的支持是我继续分享知识的动力。如果有任何疑问或需要进一步的帮助,欢迎随时留言。也可以加入微信公众号[DotNet技术匠]  社区,与其他热爱技术的同行一起交流心得,共同成长!
作者:小码编匠
出处:gitee.com/smallcore/DotNetCore
声明:网络内容,仅供学习,尊重版权,侵权速删,歉意致谢!

END

方便大家交流、资源共享和共同成长
纯技术交流群,需要加入的小伙伴请扫码,并备注加群

推荐阅读

觉得有收获?不妨分享让更多人受益
关注「DotNet技术匠」,共同提升技术实力

收藏
点赞
分享
在看

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

上一主题上一主题         下一主题下一主题
QQ手机版小黑屋粤ICP备17165530号

关于我们·投诉举报· 用户帮助· 联系我们 · 本站服务 · 版权声明· 隐私政策 · 投搞指南

法律保护:PLC技术网,plcjs.com,plcjs.net等字样
Copyright 2010-2030. All rights reserved. 


微信公众号二维码 抖音二维码 百家号二维码 今日头条二维码哔哩哔哩二维码