工控机上位机软件的开发历程(二)

  • 仪器归一化设计

原文链接:https://blog.csdn.net/lweiyue/article/details/83113699

仪器归一化设计

这是具体内容的第一篇,我们先来讲述仪器的归一化设计。

仪器是各种功能都有的,我只举我们在环境监测这方面所用到的仪器。我们要测试水是不是有污染物质,污染到什么程度,我们要测试水体的高锰酸盐指数、氨氮、总磷、总氮等值。我们的站房有一个后备电源,我们要知道市电是否断电了,是否在用备用电源。我们的站房是有空调的,我希望知道站房的温度和湿度,于是就有了一个温湿度计。我们可能还会有流量计、DTU、数采仪等仪器。这些仪器跟工控机的连接也不尽相同,有的使用串行线,有的使用网线。用网线的仪器,有的作为客户端,有的作为服务端,有的使用UDP。总之,这些仪器的通讯协议是五花八门的,通信链路也是有区别的。

但我们需要对仪器做出归一化设计。

其实无论仪器有什么功能,工控机对仪器的操作无非就两个:读和写。读的话,可能是读到测量的值、仪器的状态等;写的话,就是启动仪器测量、修改仪器的参数等。而读和写的操作,都是通过发送和接收完成的。虽然通信协议各不相同,但我们总是可以把发送和接收的内容转化为最基础的字节流。要发送怎样的字节流,接收到的字节流如何解释,就要根据仪器的特性去定义了。

根据这样的特点,我们为所有仪器定义了一个基类,它包含了发送字节流和接收字节流两个方法。而所有仪器类,都继承自这个基类。

每个仪器特定的类,只需要完成拼装发送的字节流,和解析接收的字节流即可,它不需要理会如何发送和接收。 而实际上的发送和接收,我们知道链路是有多种的,如上面提到的串行线和网线。使用哪种方式去传输,我们需要根据仪器的属性去判断。如下图所示的方法,在基类里实现。

解决了上面仪器类的结构设计以后,我们需要考虑仪器的属性如何表示和存储。我们把所有仪器都称为设备,设备包含以下内容:

(1)名称。

(2)传输方式,以及传输的参数。
例如用串口,那应该有串口号、波特率等。如果用网线,应该有IP、端口等。

(3)使用的通信协议。
选定之后,上位机能够找到相应的通信协议类,对字节流进行操作。顺便一说,我们把通信协议类用反射的方法去做,每个协议是一个dll,选择不同的协议即会执行不同的代码。

(4)因子列表。

没错,说到这里,我们就发现,设备里有一个因子的概念。因子是什么?这个比较难解释。从最原始的因子来看,因子就是仪器的测量值。例如我们有一台温湿度计,它的测量值会有两个,分别是温度和湿度。我们就把温度和湿度作为两个因子。我们对因子的概念进行扩展,把状态也作为因子。例如仪器的工作状态、故障状态,都可以看作是一个个的因子。甚至,我们把控制仪器的命令,也看成是因子。例如是启动测量、更换运行模式,每一个动作都看成是一个因子。这样下来之后,仪器的所有功能,都变成了因子的列表。因子有很多属性,但不是所有因子都一样的。名称是我们想到的唯一一个共性属性。我们在实际的开发过程中,定义了几种因子:

(1)实际因子: 就是测量值。它应该有单位、超标限制、因子地址(Modbus协议)等属性。

(2)计算因子: 跟实际因子类似,只是它不是直接读取仪器值得到的,而是根据实际因子计算出来的。这样的话,计算因子就要有一个表达式的属性,例如是:温度*9/5+32

(3)状态因子: 仪器的状态。它的值不一定是数,可能是一个字符串。

(4)反控因子: 对仪器的控制命令。可以用一个数字去表示控制的类型,只需要在协议类里面解释清楚即可。

通过上面的方法,我们把所有仪器都归一成统一的类了。

工控机上位机软件的开发历程(二)相关推荐

  1. 工控机上位机软件的开发历程(三)

    工控机上位机软件的开发历程(三) 数据库设计 原文链接:https://blog.csdn.net/lweiyue/article/details/83140932 数据库设计 首先在数据库的选择上, ...

  2. mfc上位机网络接收图片并显示_工控机上位机软件的开发历程

    微信号 :thinger_swj微博:@新阁程序园扫码关注 上位机软件的主要功能是采集各仪器的数据,然后存储起来,并传送到环保局平台. 刚开始使用的是组态软件(用以显示流程图),然后再开发了报表软件. ...

  3. python做工控机_「上位机软件」工控机上位机软件的开发历程(一) - seo实验室...

    上位机软件 本人就职于一家环境监测公司,上位机软件的主要功能是采集各仪器的数据,然后存储起来,并传送到环保局平台. 刚到公司的时候,公司使用的是组态软件(用以显示流程图),然后再开发了报表软件.数据上 ...

  4. 上位机软件定制开发,应该如何选择软件开发服务商

    一.什么是上位机软件 如果说PLC是工业控制的小脑,那么上位机软件就是其大脑.在概念上,控制者和提供服务者是上位机,被控制者和被服务者是下位机,上位机往往是数字信号的处理和命令的下发,下位机往往是模拟 ...

  5. 上位机软件开发项目案例(一)_C#开发

    了解或咨询 上位机软件开发/LabVIEW软件开发/C#软件开发/QT软件开发,请访问AgainDo再度科技官网:www.againdo.com 概述 该软件为线束连接器自动化生产设备上位机软件,系统 ...

  6. 海德上位机软件学习总结(NetScada5.0)

    海德软件学习总结 通讯 变量 事件/动作 报表 日志 数据库 数据归档 画面组态 报警 配方 安全策略 脚本语言 作为一款上位机软件,海德软件常规功能基本都已满足.具体功能如下: 通讯 ​ 作为一款上 ...

  7. A_A07_003 AS608指纹模块上位机软件使用

    A_A07_003 AS608指纹模块上位机软件使用 一.软件获取 二.测试用模块与接线 三.上位机界面分块和功能 1.指纹图像显示区域 2.硬件信息 3.打开设备 4.设备配置 5.信息显示 6.图 ...

  8. 泰克示波器上位机软件功能分享,这几款你都用过吗?

    泰克示波器作为电子工程师的常用仪器,在它的背后有很多的程控接口,那他们都是在什么时候发挥作用的呢?今天纳米软件Namisoft小编就给大家介绍一下几款泰克示波器上位机软件 及功能. 一.泰克示波器Te ...

  9. labview 上位机软件开发——实用技巧1000例

    labview 上位机软件开发--实用技巧1000例 标题商与余数函数的用法 今天跟大家分享一个实用小技巧--商与余数函数的用法 1.真实工况: 一个测试台上位软件开发项目中,一个被试元件,要求做寿命 ...

  10. labview 上位机软件开发——实用技巧1000例 单位转换VI的巧妙用法

    标题第2例:单位转换VI的巧妙用法 标题labview 上位机软件开发--实用技巧1000例 今天跟大家分享一个工业领域上位机开发的实用小技巧--单位转换VI的巧妙用法 1.真实工况: 楼主做工业领域 ...

最新文章

  1. 第十六届智能车竞赛英飞凌技术培训日程安排
  2. Java:socket服务端,socket服务端支持多连接,socket客户端,socket客户端支持发送和接受
  3. Linux加密框架 crypto算法模板 以及CBC算法模板实例
  4. vue 绑定背景图片、图片
  5. 计算机桌面程序经常打不开了,电脑开机后桌面软件打不开怎么办
  6. openstack安装配置(一)
  7. PMP知识点速记——4.1制定项目章程
  8. CE-植物大战僵尸-子弹速度-豌豆射手
  9. Linux 7通过防火墙安全策略修补安全漏洞
  10. [题单]多校补题 2017-2012
  11. IP切换代理 免费资源共享
  12. 【题目】动态规划:小朋友过桥问题
  13. 时间是6G研发成功的关键
  14. 面渣逆袭:Spring三十五问,四万字+五十图详解
  15. 2022年R2移动式压力容器充装考试试题及答案
  16. 坐席排序java_坐席排队功能 - osc_sd6j22mg的个人空间 - OSCHINA - 中文开源技术交流社区...
  17. VScode保存代码时自动格式化代码
  18. 航空发动机原理复习之计算题总结(二)
  19. 系统集成工程师的标准
  20. 装修 —— 刮腻子和刷乳胶漆的区别

热门文章

  1. 创业维艰:为啥大多数创业者都不开心?
  2. 动态生成的html click事件,如何动态生成HTML时将jquery附加到click()事件?
  3. The Backrooms - Level 0.2 - 我爱杏仁水
  4. 从阿里一面谈面试需要准备什么
  5. 计算机语言元素周期表,多国语言的化学元素周期表
  6. Veeam Backup 11 配置信息备份与恢复
  7. 如何清除PCB中负片层的死铜?
  8. java对象赋值优雅写法_JavaScript优雅写法及骚操作
  9. 异步编程不会?我教你啊!CompletableFuture(JDK1.8)
  10. Kafka producer程序本地运行时发送信息失败解决方案