关于.NET上位机开发的一些心得体会
xsobi 2025-01-05 20:44 1 浏览
作为一个技术人员,跟大家分享一个上位机开发的技术案例,希望可以对大家有所帮助。
上位机这个词,我相信大家都不陌生,从广义的角度来说,一切可以和下位机进行通信的HMI都可以称作为上位机,从狭义的角度来说,是指采用计算机高级语言编写的上层监控系统,这里常用的编程语言包括C++、JAVA、Python、C#,毋庸置疑,在工控行业,最适合工控上位机开发的编程语言莫过于微软旗下的C#语言。
这个上位机案例是比较早期开发的一个项目了,针对的下位机是西门子S7-1500 PLC,由于没有相对应的硬件进行数据交互,所以可能大家看到的数据不是正常工作的数据。这个上位机是一个比较典型的上位机监控系统,包括各个不同子站的运行参数及运行状态监控,重要参数的设置,同时具备实时报警、日志查询、参数设置、用户管理、授权管理等功能。
开发流程分析:
如果想独立开发出这样的一套系统,是需要有一些技术储备的,我跟大家简单分析一下:
(1) 首先如果我们自己本身就是做PLC编程的话,那这块就简单很多了;如果本身不是做PLC编程的话,需要去了解一下通信变量的格式和数据类型。
(2) 其次是上位机与PLC的通信方式,PLC的种类和品牌很多,常用的品牌包括西门子、欧姆龙、三菱、基恩士、松下、AB等,不同品牌PLC支持的协议是不一样的,对于这个项目用到的S7-1500 PLC,其实也支持很多种通信方式,比如S7、Modbus、TCP/IP、OPCUA等,这里我们选择的是最方便使用的S7通信协议。
(3) 最后就涉及到C#编程这块了,这块也是上位机开发的核心。基本界面框架的搭建、多线程的应用、数据通信及解析、实时报警检测及历史数据储存等等,都要求我们能够熟练运用C#语言。
有了上面的技术储备之后,那么接下来就跟大家说说具体开发的过程。
具体开发流程:
(1) 登录模块实现:如果没有特别的要求,我一般会采用比较简洁的登录界面,登录模块的逻辑具有一定的通用性。
(2) 用户权限管理:对于不同的用户,一般会存在权限分配的问题,可以通过用户组的形式,比如管理员、班组长、操作员,也可以分配到每个用户。
(3) 整体界面布局:对于界面布局这块,要完全根据个人及客户的审美来设计。首先要确定结构形式,比如上中下、左右,或者多种形式的结合,我一般以简洁、清爽为原则,再结合一下实际工艺和用户喜好,做一些优化。
(4) 数据通信显示:数据通信是整个上位机的核心,通过数据通信及处理为后续开发提供数据源。数据通信主要包括设备连接、数据读取、数据解析、数据写入、断开连接、断线重连等一系列操作,一般需要通过多线程、异步、委托等一系列知识,比如简单的项目,通过定时器也可以实现相应的功能。
(5) 实时历史报警:对于实时报警及历史报警,都会涉及到报警检测的问题。一般报警会根据变量情况分为离散量报警和模拟量报警,离散量报警主要是针对布尔变量的上升沿或下降沿的变化状态进行检测,模拟量报警主要是针对非布尔量的输出数值进行判断,模拟量报警状态分为高限、高高限、低限、低低限。对于报警的检测,主要原理就是当前值与上次扫描数值之间进行比对,判断是否触发了报警。
(6) 实时历史曲线:实时及历史曲线是上位机的一个重要组成部分,一般实时曲线的显示是将当前采集的数据实时更新到曲线控件中,由于曲线控件的显示局限性,不可能保留所有数据,一般可以设置保留最近半小时或者1小时的数据。而历史数据主要是进行查询使用,便于后期进行故障追溯或数据分析。
(7) 数据报表打印:对于某些项目可能会涉及到数据报表的设计及其打印导出,这个主要是涉及到数据的分析及查询,这个根据复杂程度,可以采用不同的方式,比如常用的采用表格控件、RDLC、水晶报表或者其他三方插件。
写在最后:
(1) 建议大多数技术人员都要学一门计算机语言,也许你工作现在不会立即用得上。但是编程思维和编程思想对你理解很多技术问题,会有很大的帮助。
(2) 如果你想通过阅读公众号的技术文章学会一门技术,我劝你还是死了这条心吧,技术文章可以扩展你的知识面,让你知道下一步学习的方向,却不会教你具体怎么做。
(3) 互联网时代,最不缺的是资源和信息,最缺的是具备筛选的能力,如果在资源的汪洋大海中找到自己想要的,这其中,需要自己不断地摸索。
相关推荐
- 听说你还不知道Java代码是怎么运行的?
-
作者:Jay_huaxiao前言作为一名Java程序员,我们需要知道Java代码是怎么运行的。最近复习了深入理解Java虚拟机这本书,做了一下笔记,希望对大家有帮助,如果有不正确的地方,欢迎提出,感激...
- 如何开始学习JAVA编程?
-
#记录我的9月生活#...
- java后端开发需要学什么?
-
Java属于后端开发中最常见的语言之一,Java这种语言的体系比较中立,而且具备了构建多线程的能力,在许多大型互联网平台Java的应用范围特别广泛。 java后端主要涉及到如下4个技术: 第一、S...
- 细思极恐:你真的会写Java吗?
-
导语自2013年毕业后,今年已经是我工作的第4个年头了,总在做java相关的工作,终于有时间坐下来,写一篇关于java写法的一篇文章,来探讨一下如果你真的是一个java程序员,那你真的会写java吗?...
- 七年Java开发的一路辛酸史:分享面试京东、阿里、美团后的心得
-
前言我觉得有一个能够找一份大厂的offer的想法,这是很正常的,这并不是我们的饭后谈资而是每个技术人的追求。像阿里、腾讯、美团、字节跳动、京东等等的技术氛围与技术规范度还是要明显优于一些创业型公司...
- 我把Java基础编程及思维导图整理的超级详细,小白都能看懂
-
Java基础编程及其思维导图目录:Java学习导图一、Java基本语法1.关键字与标识符2.变量分类3.运算符4.流程控制二、数组1.数组概述2.一维数组3.二维数组4.数组常见算法5....
- Java 开发中的 9 个实用技巧:案例详解
-
Java开发中,总有一些技巧能够帮助我们提高代码质量和开发效率。下面,我们来分享9个Java技巧,每个技巧都附上实际案例,帮助你在工作中立刻应用。1.合理使用final关键字...
- Java 20年,以后将往哪儿走?
-
在今年的Java20周年的庆祝大会中,JavaOne2015的中心议题是“Java的20年”。甲骨文公司Java平台软件开发部的副总裁GeorgesSaab的主题演讲就将关注点放在了java...
- 推荐1个java快速开发项目,让你接私活不用愁
-
??大家好,我是小编南风吹,每天推荐一个小工具/源码,装满你的收藏夹,让你轻松节省开发效率,实现不加班不熬夜不掉头发!...
- 教你用Java开发一个简单的JVM
-
一、前言几年前,接到一个开发任务:用Java开发能运行Java智能合约的虚拟机。在开发Java智能合约时,只能使用智能合约SDK提供的类和一些Java常用类(8种基本数据类型包装类;String、Bi...
- java实战教程(一)软件开发流程&开发模式
-
这里小编为了方便处于不同学习阶段的童鞋,准备了三个系列的文章,java系列教程、java实战教程、java进阶教程,对于刚入坑的童鞋,可以先按照这三个系列教程一步步的了解,循序渐进,java实战系列教...
- Java 核心技术之入门指南:全面解析Java概述
-
大家好,这里是Java码牛!Java核心技术入门:全面解析Java概述一、引言Java,作为一门在当今信息技术领域中被广泛应用于企业级开发的主流编程语言,其核心技术的精准掌握对于众多开发者而言,具有...
- 小白如何轻松上手Java开发?
-
Java,这款流行的编程语言,被广大开发者所钟爱。但对于初学者来说,如何入门确实是一个大问题。尤其对于毫无经验的小白,从何处开始、如何推进,都是关键。本文将带你走进Java的世界,为你揭示从零到一的进...
- 初学Java应该知道的知识点:Java的程序开发是什么?
-
Java的程序开发是什么呢?下面和千锋广州小编一起来看看吧!一般来说,Java的程序开发包括三个步骤:编写程序,编译程序,运行程序编写程序——Java源代码,.Java文件编译程序——Javac用来进...
- 厉害了!全靠经典之作-Java编程思想,把小白教的明明白白
-
今天我们来聊聊这本《Java编程思想》从我学习Java的经验来看,《ThinkinginJava》是讲解Java编程的最佳书籍! 这本书不仅详细地介绍Java语法、知识点、API类库使用,更...
- 一周热门
- 最近发表
- 标签列表
-
- grid 设置 (58)
- 移位运算 (48)
- not specified (45)
- patch补丁 (31)
- 导航栏 (58)
- context xml (46)
- scroll (43)
- dedecms模版 (53)
- c 视频教程下载 (33)
- listview排序 (33)
- firebug 使用 (31)
- characterencodingfilter (33)
- getmonth (34)
- hibernate教程 (31)
- label换行 (33)
- curlpost (31)
- android studio 3 0 (34)
- android应用开发 (31)
- html转js (35)
- 索引的作用 (33)
- css3 0 (31)
- checkedlistbox (34)
- localhost 8080 (32)
- 多态 (32)
- net开发 (31)