三层架构——工业控制领域简单理解

前言闲话

工业领域对好滴软件架构的需求不高,但不意味着可以用纯面向过程式编程解决问题,这样后期维护必将大乱。

曾经和一位从业30年的老电气工程师交流工业控制编程:
我问:为啥富士康这些大厂以前的机器都不联网?(挖个坑)
他答:为什么要联网,稳定就好,没什么数据要上传的。
我问:现在不是很多工厂都在弄什么智慧工厂,这不就连网了?
他回:是啊,MES系统最近10年都用得比较广泛了,但这个也是只是连内部。
我回:随着工厂的智能化,工厂内部数据的统计收集会更加广泛的,全厂数据联网云端控制是可以实现的。
他回:行业在发展,05年前没有你现在的这个职业(我从事工业软件自动化设备上位机开发),未来可期。

我问:你以前写程序用PLC写设备动作有什么好方法吗?
他回:状态机和写好注释
我回:是啊,我现在写上位机也是用状态机,很多公司也都是这种模式,但状态机有比较好的方式实现吗?
他答:有,每种设备都用不同的动作,也就是不同的状态,对于不同设备有不同的写法,不是一成不变的。(感觉像说了和没说一样)

印象中的三层架构

在这里插入图片描述
在这里插入图片描述

UI(表现层): 主要是指与用户交互的界面。用于接收用户输入的数据和显示处理后用户需要的数据。

BLL:(业务逻辑层): UI层和DAL层之间的桥梁。实现业务逻辑。业务逻辑具体包含:验证、计算、业务规则等等。

DAL:(数据访问层): 与数据库打交道。主要实现对数据的增、删、改、查。将存储在数据库中的数据提交给业务层,同时将业务层处理的数据保存到数据库。(当然这些操作都是基于UI层的。用户的需求反映给界面(UI),UI反映给BLL,BLL反映给DAL,DAL进行数据的操作,操作后再一一返回,直到将用户所需数据反馈给用户)

这里的三层架构在传统IT行业中的应用,但工业控制中,数据访问层貌似没有,但实际上数据访问层,应该为我们设备中的配置文件和产品信息数据,下面我们就对工业控制中的三层进行细致梳理。

工业控制中的三层

UI层:上位机的操作界面,通常会区分几个模块,自动画面,手动操作界面,参数配置界面。
BLL层:设备的动作逻辑全放在这一层,我们需要做的是尽量减少UI层对BLL的操作,但不限制UI层对BLL的读取,这个读取的主要作用是让操作者尽量多的了解设备的工作状态,这一层的构建是一门艺术,好的BLL层是可以很好的应对不同客户对同类型设备的特殊定制化需求,我们需要尽力的减少这设备各部分的动作逻辑耦合,同时提高复用,但在复用提高时不能引用太多的条件判断,过多的判断会给后面接收的同事制造很多的困难。
DAL层: 配置文件+产品信息数据,一款设备客户一般情况下会应对多款不相干产品的生产,此时DAL的作用就是存储生产时需要的动作数据信息(Recipe)。

三层以外

说到三成以外,就不得不说Mes,几乎所有的大厂都会上mes,但mes的使用程度都不尽相同,传统制造业行业(3c,新能源等)很难现在真正的黑灯工厂,主要原因是处于成本考虑,全车间自动化,搬运系统和EAP的成本非一般企业所能承受,到目前为止我也只在Fab厂里见过真正的黑灯工厂,Fab厂之所以能实现黑灯工厂,主要原因就是设备较为集中,产品的价值高,模糊的了解到一个光一套天车系统前期投资都在5-6亿,同时在半导体行业很有名的就是全部设备厂商都遵循Semi协议,只有这样才可能实现黑灯工厂,同时遵循Semi协议也给设备厂商增加了不少软件开发和维护成本,这里主要的成本就是人。简而言之卷的厂上不了EAP,人比机器便宜,除非能完成一个产品的创新化升级,能有较高的利润,同时对产品的每道工序的良率管理都有及其咳咳的行业。
一般情况,传统行业对Mes的需求主要集中在两点,当前机台状态和生成产品信息的收集;

当前机台状态

机台运行状态
机台各部件状态
机台报警
WPH

生成产品信息

良率
产品ID
产品加工前后特效

这里不在深入说了,后面会写一篇关于Mes和EAP理解文章;

对于工业控制,除了本身设备的稳定高效运行外,还需要将设备对接到工厂,这也就是三层架构以外的东西。

想法实现

实现三层架构的好处在文章开头有说:避免混乱。
这里我简单的说一下想法实现。
整个软件分为几个模块:
硬件模块
逻辑模块
数据管理模块
UI模块
进程管理模块
看门狗模块(进程管理模块双机)

各模块最好采用单独进程,之所以采用单独进程的原因主要是windous其实在某种程度上是没办法保证软件的绝对稳定,在一个模块崩溃后,不应影响整个软件运行,这是工业设备控制的一个重点(稳定),这也是为什么PLC能流行半个世纪兴盛不衰的原因之一。

各模块之间通过进程管理模块进行通讯,避免各模块的耦合,这里UI通过信号通道操作的就是逻辑模块和数据管理模块,后期Mes和EAP读取和操作的也是这两个模块。当前这里也可以用数据驱动UI,UI中预留号对应的数据槽。

上面只是提供一个简单的思路,其实有很多方法可以实现~~~

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/633852.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

MySQL UPDATE 更新

昨天介绍了 MySQL 数据库 WHERE 子句的用法,今天来讲解下UPDATE 更新。 语法 在 MySQL 使用过程中,我们经常需要修改数据,这时就要用到UPDATE 命令。 老规矩,先介绍一下语法。以下是 UPDATE 命令修改 MySQL 数据表数据的通用 S…

CSS进阶

CSS进阶 目标:掌握复合选择器作用和写法;使用background属性添加背景效果 01-复合选择器 定义:由两个或多个基础选择器,通过不同的方式组合而成。 作用:更准确、更高效的选择目标元素(标签)。…

vue2 使用vuex状态管理工具 如何配置与搭建。

等我研究研究,下一期给大家出一个后台管理左侧侧边栏如何搭建的。 首先我们先下载一下 vuex包 yarn add vuex3 1.先导入我们需要的 Vue 和 vuex 2.注册vuex 3.创建vuex实例 4.导出store export default store 5.在main.js中导入并挂载到全局。 Vuex如何实…

MATLAB解决考研数学一题型(上)

闲来无事,情感问题和考研结束后的戒断反应比较严重,最近没有什么写博文的动力,抽空来整理一下考研初试前一直想做的工作——整理一下MATLAB解决数学一各题型的命令~ 本贴的目录遵循同济版的高数目录~ 目录 一.函数与极限 1.计算双侧极限 2…

Pytest系列(14)- 配置文件pytest.ini的详细使用

前言 pytest配置文件可以改变pytest的运行方式,它是一个固定的文件pytest.ini文件,读取配置信息,按指定的方式去运行 非test文件 pytest里面有些文件是非test文件 pytest.ini:pytest的主配置文件,可以改变pytest的…

网络安全最大的威胁:洞察数字时代的风险之巅

在数字化时代,网络安全问题越发突显,企业和个人都面临着来自多方面的威胁。究竟网络安全领域的最大威胁是什么?本文将深入探讨这一问题,揭示数字空间中最为严重的威胁。 1. 恶意软件的肆虐: 恶意软件一直是网络安全的…

4456系列数字荧光示波器

4456系列数字荧光示波器 简述: 4456系列数字荧光示波器具有6个产品型号,带宽350MHz~1GHz,最高采样率5GSa/s,最大存储深度500Mpts/CH,最快波形捕获率100万个波形/秒,独创的Any Acquire Phosphor技术&#xf…

Kafka Console Client 的 Consumer Group

以往使用 kafka-console-consumer.sh 消费 Kafka 消息时并没有太在意过 Consumer Group,在命令行中也不会使用 --group 参数,本文针对 Kafka Console Client 命令行中的 Consumer Group 进行一次统一说明。 1. 如不设置 --group 参数会自动生成一个 Con…

基于Springboot+vue鲜花商城系统(前后端分离)

该项目完全免费 项目技术栈: 前端:vueelementUIecharts 后端:SpringbootmybatisMySQL 项目主要功能: 商品信息 商品分类 角色管理 公告管理 轮播图管理 订单管理 收货地址管理 日志管理 部分功能截图:

RDMA Scatter Gather List详解

1. 前言 在使用RDMA操作之前,我们需要了解一些RDMA API中的一些需要的值。其中在ibv_send_wr我们需要一个sg_list的数组,sg_list是用来存放ibv_sge元素,那么什么是SGL以及什么是sge呢?对于一个使用RDMA进行开发的程序员来说&#…

shell编程-3

文章目录 shell学习第三天while 循环第一天的小游戏练习: 编写抽同学回答问题的脚本要想让这个脚本永久有效如何知道两个文件里的内存一样?如何判断某个人已经抽过了 文本处理相关命令seqxargsuniqsorttrcutawkpastesplitcoljoin小结一下作业 小知识点写脚本的流程怎…

LeetCode面试题02.07链表相交

力扣题目链接 思想(数学):设链表A的长度为a,链表B的长度为b,A到交点D的距离为c,B到交点D的距离为d。显然可以得到两者相交链表的长度为:a - c b - d ,变换一下式子得到:a d b c…

css-动画效果学习示例

阴影 x-轴 y-轴 模糊度 颜色 (正负值可以表示角度问题) 可以加多个阴影 内置阴影 transition 可以添加动画延迟效果 向z轴缩进,开启透视respective 触发旋转效果 学习来源 :动画属性_哔哩哔哩_bilibili

如何做标准化?| 京东云技术团队

在现代信息化的市场环境和社会中,标准化已经成为了各种行业的一个重要的标志。标准化不仅可以提升生产效率,减轻质量问题,还可以增加产品的可靠性和互通性。在这篇文章中,我们将探讨如何做标准化,为您提供详细的指导和…

深入Docker5:安装nginx部署完整项目

目录 准备 为什么要使用nginx mysql容器构建 1.删除容器 2.创建文件夹 3.上传配置文件 4.命令构建mysql容器 5.进入mysql容器,授予root所有权限 6.在mysql中用命令运行sql文件 7.创建指定数据库shop 8.执行指定的sql文件 nginx安装与部署 1.拉取镜像 2…

docker:Java通过nginx获取客户端的真实ip地址

问题现象 我们的平台使用Spring Cloud微服务架构,使用Spring Boot构建Java服务,使用google的jib插件打成docker镜像包我们使用docker虚拟化部署,使用docker-compose统一管理所有服务,包括Java服务和nginx等组件我们前后端分离&am…

游戏《泰坦陨落2》msvcr120.dll丢失的多种解决方法分享

在Windows 11操作系统环境下,众多玩家在体验《泰坦陨落2》这款备受瞩目的射击游戏时,遭遇了一个令人困扰的技术问题:系统提示缺失msvcr120.dll文件。这一关键的动态链接库文件对于游戏的正常运行至关重要,它的缺失直接导致了《泰坦…

小白数学建模 Mathtype 7.7傻瓜式下载安装嵌入Word/WPS以及深度使用教程

数学建模Mathtype的下载安装嵌入Word/WPS以及深度使用教程 一 Mathtype 的下载安装1.1 安装前须知1.2 下载压缩包1.3 安装注册 二 嵌入Word/WPS2.1 嵌入Word2.1.1 加载项嵌入 Word2.1.2 宏录制嵌入 Word 2.2 嵌入 WPS2.2.1 加载项嵌入 WPS2.2.2 宏录制嵌入 WPS 2.3 嵌入时报错解…

【GNN报告】“青源Talk”-图可信学习与图大模型研究进展

北航王啸-图自监督学习 简介 介绍 浙大杨洋-探索大图模型预训练 总括 介绍 参考 Yang Yang - Zhejiang University dgraph-web DGraph: ALarge-Scale Financial Dataset for Graph Anomaly Detection All in One: Multi-task Prompting for Graph Neural Networks&#xf…