工控机上位机软件的开发历程(二)[通俗易懂]

工控机上位机软件的开发历程(二)[通俗易懂]仪器归一化设计这是具体内容的第一篇,我们先来讲述仪器的归一化设计。仪器是各种功能都有的,我只举我们在环境监测这方面所用到的仪器。我们要测试水是不是有污染物质,污染到什么程度,我们要测试水体的高锰酸盐指数、氨氮、总磷、总氮等值。我们的站房有一个后备电源,我们要知道市电是否断电了,是否在用备用电源。我们的站房是有空调的,我希望知道站房的温度和湿度,于是就有了一个温湿度计。我们可能还会有流量计、…

大家好,又见面了,我是你们的朋友全栈君。

仪器归一化设计

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

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

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

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

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

工控机上位机软件的开发历程(二)[通俗易懂]

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

工控机上位机软件的开发历程(二)[通俗易懂]

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

(1)名称。

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

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

(4)因子列表。

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

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

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

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

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

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

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/145069.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • 微信表情符号已写入判决书怎么删除_微信100个表情符号含义

    微信表情符号已写入判决书怎么删除_微信100个表情符号含义本文转载自IT之家,IT之家3月3日消息据法治日报报道,如今表情符号已经成为呈堂证供的一部分,登上多地法院判决书等司法文书。报道称,在广东省深圳市中级人民法院发布的一份民事判决书中,对一起涉及微信表情的合同纠纷案作出了判决。作为创作者的卢泓于2018年4月24日向深圳市道一影业集团有限公司法定代表人田民发送其创作的歌词。后者表明其在路上后,发送了微信表情符号[强]。“结合双方的前后聊天内容,一审法院认为该微信表情符号[强]并非是对卢泓歌词的认可,而是属于礼貌性回复,不能

    2025年8月18日
    4
  • endnote插入文献后没有生成域代码也没有生成参考文献列表

    endnote插入文献后没有生成域代码也没有生成参考文献列表endnote插入文献后没有生成域代码也没有生成参考文献列表查看下面链接https://zhidao.baidu.com/question/1381837979256371100.html

    2022年5月15日
    75
  • WPF中的布局方式

    WPF中的布局方式前言:WPF(WindowsPresentationFoundation)是微软推出的基于Windows的用户界面框架,属于.NETFramework3.0的一部分。它提供了统一的编程模型、语言和框架,真正做到了分离界面设计人员与开发人员的工作;同时它提供了全新的多媒体交互用户图形界面布局方式:1.Canvas2.Grid3.WarpPanel4.StackPanel5.ScrollViewer……

    2022年7月15日
    15
  • 3389之永不查杀的后门shift后门代码「建议收藏」

    3389之永不查杀的后门shift后门代码「建议收藏」永不查杀的3389后门其原理就是利用shift后门,连敲5次shift键既可以直接进入服务器。前些天在群里有个小伙伴问了一句谁知道shift后门的代码,当时我给了他一个链接,我总是觉得这个百度下就能找到吧,我查了一下,发现什么都有,有的不全有的要么复杂,我也搞不懂一个代码还不能认真的给我们吗?非要让大家赏你几根辣条!好了废话不多说,将下面的代码通过服务器上的DOS命令下执行即可,觉

    2022年9月18日
    1
  • 2019美赛A题—学习记录

    2019美赛A题—学习记录2019美赛a题论文来源:https://github.com/MATHmodelsAbstract【废话干货1:9开】一句话引入概述问题-概述方法-概述结果【三个模型,模型分析因素,解决的问题】灵敏度分析【修改参数看影响】一句话意义Introduction1.问题重述原问题问题A:生态博弈在虚构的电视连续剧《权力的游戏》中,以史诗幻想小说《冰与火之歌》系列…

    2022年5月31日
    29
  • 多值依赖的简单理解_第四范式智能客服官网

    多值依赖的简单理解_第四范式智能客服官网1.多值依赖1.1多值依赖:多值依赖属4nf的定义范围,比函数依赖要复杂得多。在关系模式中,函数依赖不能表示属性值之间的一对多联系,这些属性之间有些虽然没有直接关系,但存在间接的关系,把没有直接联系、但有间接的联系称为多值依赖的数据依赖。在函数依赖中,X与Y是否存在函数依赖关系,只需考察X,Y的两组属性,与别的属性无关。而在多值依赖中,X与Y是否存在多值依赖还需看属性Z。1.2数…

    2025年6月20日
    5

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号