C#上位机与欧姆龙PLC的通信12----【再爆肝】上位机应用开发(WPF版)

1、先上图

继上节完成winform版的应用后,今天再爆肝wpf版的,看看看。

C#上位机与欧姆龙PLC的通信12----【再爆肝】上位机应用开发(WPF版)_第1张图片

可以看到,wpf的确实还是漂亮很多,现在人都喜欢漂亮的,颜值高的,现在是看脸时代,作为软件来说,是交给用户使用的,UI自然是要讲究,可以看出,wpf比winform漂亮多了,因为wpf使用样式css来美化界面,虽然这只是抛砖引玉,但说明作为软件工程师,特别是应用软件开发者,颜值一定要有,才有吸引力。这个例子应用了表格控件datagrid和LiveCharts控件,前者呈现数据表格,后者图形展示数据。

2、如何爆?

1、创建plc中的寄存器数据

      这里是有一个生产车间的设备,4台窑炉,长这样的,设备都由PLC工程师程序控制,软件开发者需要将PLC的一些数据获取得到并展示到PC或屏幕上,所以经过与PLC电气硬件工程师沟通,明确了这3个区的寄存器分别是CIO区的BOOL,H区的SHORT,W区的FLOAT数据类型,具体哪些寄存器存放的是什么数据,需要与他们仔细沟通,并用excel记录下来,现在只是举例每个窑炉有温度,水位,转速,转角,状态,这个很关键,需要一个个数据地址要明确清晰,不出差错,具体还需要哪些数据看你的需求,作为上层软件开发者需要的是PLC的变量地址,里面的PLC程序是怎么控制生产设备的,不关心。 

C#上位机与欧姆龙PLC的通信12----【再爆肝】上位机应用开发(WPF版)_第2张图片

 这里模拟下现场的数据,各位高僧能明白这个意思吗?

C#上位机与欧姆龙PLC的通信12----【再爆肝】上位机应用开发(WPF版)_第3张图片

将12个地址保存在excel文件中,程序中来读取这个excel,也就是说我们要将现场需要采集PLC数据的寄存器地址全部放在EXCEL文件中,统一管理和程序读取利用起来,程序通过读取excel文件,然后利用通讯库的功能与PLC通信,这个思路这很重要,这样做扩展性很好。

C#上位机与欧姆龙PLC的通信12----【再爆肝】上位机应用开发(WPF版)_第4张图片

2、创建wpf项目方案

C#上位机与欧姆龙PLC的通信12----【再爆肝】上位机应用开发(WPF版)_第5张图片

 C#上位机与欧姆龙PLC的通信12----【再爆肝】上位机应用开发(WPF版)_第6张图片

C#上位机与欧姆龙PLC的通信12----【再爆肝】上位机应用开发(WPF版)_第7张图片

3、创建有关目录,引入dll库文件,类文件等

C#上位机与欧姆龙PLC的通信12----【再爆肝】上位机应用开发(WPF版)_第8张图片

引入NPOI,这个东西是EXCEL读写的库

C#上位机与欧姆龙PLC的通信12----【再爆肝】上位机应用开发(WPF版)_第9张图片

C#上位机与欧姆龙PLC的通信12----【再爆肝】上位机应用开发(WPF版)_第10张图片

引入通讯库及sqlite库,即dll文件

 C#上位机与欧姆龙PLC的通信12----【再爆肝】上位机应用开发(WPF版)_第11张图片C#上位机与欧姆龙PLC的通信12----【再爆肝】上位机应用开发(WPF版)_第12张图片

命令基类,这个类的作用是控件的命令的父类

C#上位机与欧姆龙PLC的通信12----【再爆肝】上位机应用开发(WPF版)_第13张图片

PLC读写时的实体类

C#上位机与欧姆龙PLC的通信12----【再爆肝】上位机应用开发(WPF版)_第14张图片

C#上位机与欧姆龙PLC的通信12----【再爆肝】上位机应用开发(WPF版)_第15张图片 这个类跟下面要讲的sqlite数据库的表结构保持一致,同时也与excel文件里的表头一致

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace OmRonMesWPFApp.Model
{
    /// 
    /// PLC变量实体类
    /// 
    public class PlcVariableModel
    {
        /// 
        ///序号
        /// 
        public string Id { get; set; }
        /// 
        ///名称
        /// 
        public string Name { get; set; }
        /// 
        /// 状态
        /// 
        public string State { get; set; }
        /// 
        /// 温度
        /// 
        public string Temperature { get; set; }
        /// 
        /// 水位
        /// 
        public string Waterlevel { get; set; }
        /// 
        /// 转速
        /// 
        public string Speed { get; set; }
        /// 
        /// 转角
        /// 
        public string Corner { get; set; }
        /// 
        /// 时间
        /// 
        public string Inserttime { get; set; }

    }
}

 这里需要引用这个图形控件LiveChart,功能强大

C#上位机与欧姆龙PLC的通信12----【再爆肝】上位机应用开发(WPF版)_第16张图片

 4、创建sqlite数据库

这里简单介绍下sqlite数据库,这个数据库很好,虽然功能没有sqlserver,mysql,oracle等强大,但它在上位机软件中非常方便,不需要安装,不需要配置,即插即用,,所有sql命令都支持,不太清楚的可百度求助下。

注意将sqlite数据库放在项目编译生成的debug\net5.0-windows目录下,因为程序编译后会有debug目录,这样方便访问,便于部署和移植项目,这样程序打包后部署不影响文件的读取。

C#上位机与欧姆龙PLC的通信12----【再爆肝】上位机应用开发(WPF版)_第17张图片C#上位机与欧姆龙PLC的通信12----【再爆肝】上位机应用开发(WPF版)_第18张图片

 5、UI布局

5.1 消息框窗体

C#上位机与欧姆龙PLC的通信12----【再爆肝】上位机应用开发(WPF版)_第19张图片

5.2 主界面布局

 定义通用样式文件、


    
    

    
    

    
    

    
    
        
        
    
    

    
    

定义表格数据样式文件


    
    
    
    
    
    
    
    
    
    
     
    
    
    

 布局中用到了常规的UI控件,但比winform复杂,还设置了图标,以增强美化效果。

C#上位机与欧姆龙PLC的通信12----【再爆肝】上位机应用开发(WPF版)_第20张图片


    
        
    
    
        
            
            
        
        
        
            
                
                
                
                
                
                
                
            
            
            
            
            
            

5.3 主界面视图模型

所有的逻辑业务处理写在这个viewmodel中,这是wpf中的mvvm的数据驱动控件,强大的屌。

C#上位机与欧姆龙PLC的通信12----【再爆肝】上位机应用开发(WPF版)_第21张图片

6、运行软件

因为现在还没有连接PLC

C#上位机与欧姆龙PLC的通信12----【再爆肝】上位机应用开发(WPF版)_第22张图片C#上位机与欧姆龙PLC的通信12----【再爆肝】上位机应用开发(WPF版)_第23张图片

连接加载实时数据,这里设置的每5秒读取PLC数据,存入到DB中,并显示在图形上,同时左边表格的鼠标滑动的样式效果。

C#上位机与欧姆龙PLC的通信12----【再爆肝】上位机应用开发(WPF版)_第24张图片 C#上位机与欧姆龙PLC的通信12----【再爆肝】上位机应用开发(WPF版)_第25张图片

C#上位机与欧姆龙PLC的通信12----【再爆肝】上位机应用开发(WPF版)_第26张图片

数据准确无误,这个livechart图形控件很强大,这里只使用了柱状图,还有很多图。

3、小结 

以上是常规的应用,只起到抛砖引玉的作用,还有很多功能可以扩展做,如打印,导出,日志,分页,登录,授权等很多,希望这个例子可以帮到小伙伴。

打字不易,截图不易,代码不易,准备不易,原创不易,多多点赞收藏,江湖有你,共同致富。

C#上位机与欧姆龙PLC的通信12----【再爆肝】上位机应用开发(WPF版)_第27张图片C#上位机与欧姆龙PLC的通信12----【再爆肝】上位机应用开发(WPF版)_第28张图片

你可能感兴趣的:(C#上位机开发笔记,c#,mes,上位机,PLC,多线程,wpf,窗体)