序言
从业于非标设计行业已有许多年了,设计调试过的项目有几万一台的单机设备,也有几百万的生产线。基本上熟练使用目前市场上主流的PLC,如西门子、三菱、欧姆龙、基恩士。想当年大学毕业初入非标设计这行业时每天都充满着激情和好奇,在做项目的过中学会了PLC、变频器、伺服、机器人、视觉系统的使用,随着时间的流逝对工控行业激情和好奇心慢慢的退却。于此同时也逐步感觉到工控这行业的天花板有点低,想要比同事更有竞争优势就必须有别人不拥有的能力;两年前浏览论坛时无意发现 @梦到内河大神分享的C#上位机帖子,就顿时萌生了学习用C#开发上位机的想法。说干就干,利用下班空闲时间自学了C#、Winform、WPF、SqlServer/MySql,历经差不多两年时间终于有所成;开发小型的上位机基本上没什么难度。
废话不多说,正文开始:
本项目中使用了许多开源库,比如:materialdesigninxaml(主题框架)、LiveCharts(图表控件)、S7netplus(S7通信类库)、Microsoft.EntityFrameworkCore.Tools(操作数据库)、Microsoft.Extensions.DependencyInjection(实现依赖注入和控制反转);在此深深的感谢无私贡献的开源作者!。同时也借鉴了@梦到内河的一些设计思路,在此深表感谢!
一、系统构成
本系统基于CommunityToolkit框架设计,使用依赖注入(DI)和控制反转(IOC)软件设计模式,极大的减少了代码间的耦合度;采用Entity Framework (EF) Core来管理数据库,无需再像通常那样编写大部分数据访问代码。用到的软件有:VS2022+.Net6.0、mysql-8.0.11-winx64、博图V17
二、局部程序介绍
(1)PLC连接和数据实时读取


(2)数据写人PLC
批量写入

单个写入

(2)自定义控件TextBoxEx(为控件添加依赖属性:PlcAddr、PlcDataType)


(3)CommunityToolkit框架下的属性定义

(4)数据库配置(使用EF-CORE创建并管理数据库)

(5)向容器添加服务(使用依赖注入和控制反转的前提)

三、界面展示
(1)系统登陆(密码666)

(2)侧边导航栏

(3)主画面

(4)配方参数设置


(5)数据报表


(6)当前报警及历史报警


(7)IO监控

(8)更新后的版本,PLC IP地址和数据库连接信息放在配置文件中,如下图所示

(9)编译时出现Interaction、GearedValues<>错误时须重新添加引用,如下图所示

最后:
源代码百度网盘链接如下,源代码包含C#程序、MySql数据库、PLC(S7-1500)演示程序(PS:20240119 使用依赖注入与控制反转的软件设计模式重构了程序)
链接: https://pan.baidu.com/s/1zxf2nBUw_4fJkz36dAEK0w?pwd=igsi 提取码: igsi