SQL数据库和事务管理器在工业生产中的应用

本文介绍了关系数据库在工业生产中的应用以及如何使用事务管理器将生产参数下载到PLC,以简化OT/IT融合过程。

一 什么是配方(Recipe)

我们以一家汽车零件制造商的应用举例,该企业专业从事汽车轮毂生产制造。假设该轮毂的型号是“高级镁合金”,而关于其制造方式的描述则有多达数千个参数,例如尺寸、颜色、钻孔位置、孔的大小、轮毂辐条等等,这就是所谓的配方(Recipe)

如果客户订购“黑色高级镁合金”或“灰色高级镁合金”,则其配方都会有所不同。因为配方是一组参数的集合,而这些数据的值是不固定的,并会根据生产线或客户订单进行调整。与用于执行重复任务的传统PLC的静态数据相比,这些可根据生产需求而实时变化的数据更为复杂。

配方不仅是一组参数的集合,还是处理复杂数据的一个优秀工具。然而,对于PLC而言,配方是以什么形式提供?答案是一张表格(如图1)。对于该轮毂制造示例,表格的每一行是一个配方,每一列都有配方的参数:油漆类型(PAINTTYPE)、油漆级别(PAINTLEVEL)等。

7a07afc1-a7fe-484b-93c9-11c45e423009
图1 通过配方,这种表格形式的参数集合,可以很好地处理复杂数据。而PLC在处理表格数据方面则面临了一些挑战,对此可使用SQL数据库来处理这种复杂数据。

为什么PLC在处理表格数据时会面临一些挑战?因为PLC的内存和性能是经过优化的,专门用于处理简单数据:生产流程、移动机器、移动产品、制造产品,而处理复杂数据则需更多内存,PLC难以满足——在PLC中,内存是相当珍贵的。

那么,什么平台能够很好地处理复杂的表格数据并减轻PLC的负担和风险呢?——SQL数据库

二 SQL数据库的功能

什么是SQL数据库?您可将其想象为一张表格,而且您很可能已经拥有这样一个表格——您的IT部门经理或许已使用企业SQL数据库以在整个组织中共享信息(如图2)。因为企业需要在整个公司范围内共享信息,而SQL数据库正是为此而设计的。

例如,当接收到新订单后,该订单将被存入SQL数据库中。如果销售经理想要一份销售报告,他可从SQL数据库中获取该报告;如果生产部门需生产该订单产品,他们可从SQL数据库中获得订单的详细信息。此外,在零件生产完成后,其性能、质量等指标均可被存储在SQL数据库中。通过从SQL数据库中提取这些指标并分析数据之间的关系,可生成报告并优化生产流程。

a1c2f93d-d49b-42ba-bb2c-afa72d5a9aff
图2 公司使用企业SQL数据库在整个组织中共享信息。(图片来源: https://www.youtube.com/watch?v=s4BwNbnsjm0)

SQL数据库经过安全优化,可严格限制数据存储与读取权限,因此只有经过批准的用户才能访问某些数据。SQL数据库运行在功能强大的PC服务器上,这些设备往往具有大内存、大存储等特点,不仅支持冗余、故障转移等功能,而且还支持从多个位置访问,以确保整个公司始终处于在线状态。

一般情况下,您可能会将配方或生产关键绩效指标(KPIs)和质量参数直接以常数的形式存储在PLC中,然而,PLC是专门处理业务逻辑的设备,若使用PLC来处理复杂数据,则将导致其性能达到极限,容易出现故障,发生计划外的中断。对此,您完全可利用工厂中现有的这些服务器和数据库,来减轻PLC的重负。

如何充分利用这一庞大资源——企业SQL数据库或设施中已有的其他数据库来减轻PLC的负担?接下来我们将从以下这三个方面来进行阐述:准备PLC准备SQL数据库准备事务管理器

| 准备PLC

您需要在PLC中做一些准备工作,而无需在PLC中创建常数配方,比如,在您的PLC中有1000个常数×10种不同的车轮类型,您需要将这些常数更改为在PLC中的变量或用户定义数据类型(UDTs),用于存放从SQL数据库下载的配方,这样您将拥有一个逻辑代码库。当需要制造不同的零件时,您可从SQL数据库中下载新的配方到PLC,且这些新建的变量都将自动更新。

您如何更新PLC中的这些变量来制造10种轮毂中的任意一种呢?——这便需要发挥SQL数据库的作用。您可把1000个常数乘以10个车轮的数据存储在一个SQL数据库表中,并仅在需要时,才将SQL数据库中的数据下载到PLC,由此您的数据库服务器和事务管理器将承担存储和响应信息请求的任务,而PLC只需在读取到数据后进行它所擅长的逻辑控制处理即可。

如何准备企业SQL数据库呢?这就需要由工程师来引导管理SQL数据库的IT部门经理进行接下来的操作。以下将介绍IT部门经理需操作的内容。

| 创建SQL关系数据库

您的配方将存储在所谓的关系数据库中。为了让您的IT部门经理在SQL数据库中创建合适的表格,您需要向他/她提供三条信息:1)表头;2)配方名称;3)配方数据(如图3)。

d0ca9374-a911-48e8-ba2d-c630b3d0d99b
图3 为了让IT经理创建SQL数据库,您需要向IT经理提供三部分信息:表头、配方名称和配方数据。

表头位于每一列的顶部,其只是您数据的一个简短描述或说是一个列标题。如果您使用Microsoft Excel作为建立模板的工具,则可从定义电子表格中的表头开始,然后将其放在每一列的顶部。

在SQL数据库中,每一行被称为一条记录(Record)。配方名称放在每一行的第一个单元格中,如图2所示。如果您有10个配方,那您将有10行或说10条记录。

为什么称之为记录?在关系数据库中,我们有四个主要的任务:插入(Insert)记录、选择(Select)记录、更新(Update)记录和删除(Delete)记录。

在我们的例子中,由于我们要从数据库里获取配方并将配方下载到PLC中,因此我们将使用“Select”命令。在您的配方电子表格中,需将配方名称放在每一行的第一个单元格中,最后需填写您的配方电子表格数据。这意味着,对于每个配方,您都要填写每一列的常数数据。至此,您的电子表格已包含有配方名称、列描述和数据——而这就是IT经理构建SQL表格所需的全部信息。

目前,我们已引导您完成了最难的部分——SQL数据库模板构建过程。SQL数据库的另一个极其实用的应用是“Insert”命令,而这恰好也是最容易使用的命令,因为无需修改PLC程序。通过使用“Insert”命令,我们可将PLC的值上传到数据库中。“Insert”主要用于在SQL数据库中存储PLC变量,例如,当我们需要查看KPI(关键绩效指标)或产品质量时,可将这些变量上传到SQL数据库中。

在PLC标签和SQL表格被创建后,如何在PLC和SQL数据库之间进行数据的双向传输?如何将配方从SQL数据库下载到PLC?对此,可通过使用事务管理器来轻松解决。

| 准备事务管理器(Transaction Manager)

事务管理器有什么作用?如果您需要下载一个配方到PLC,则可使用“Select”命令,从SQL数据库中获取配方......

请点击此处,查看剩余30%精彩内容!

| 往期回顾

▶ Softing dataFEED OPC Suite:轻松应对工业4.0数据通信挑战

▶ Softing echocollect e:连接OT和IT的多协议工业网关

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

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

相关文章

短视频矩阵系统技术交付

短视频矩阵系统技术交付,短视频矩阵剪辑矩阵分发系统现在在来开发这个市场单个项目来说,目前基本上已经沉淀3年了,那么我们来就技术短视频矩阵剪辑系统开发来聊聊 短视频矩阵系统经过315大会以后,很多违规的技术开发肯定有筛选到了…

Java开发从入门到精通(九):Java的面向对象OOP:成员变量、成员方法、类变量、类方法、代码块、单例设计模式

Java大数据开发和安全开发 (一)Java的变量和方法1.1 成员变量1.2 成员方法1.3 static关键字1.3.1 static修饰成员变量1.3.1 static修饰成员变量的应用场景1.3.1 static修饰成员方法1.3.1 static修饰成员方法的应用场景1.3.1 static的注意事项1.3.1 static的应用知识…

用Stable Diffusion生成同角色不同pose的人脸

随着技术的不断发展,我们现在可以使用稳定扩散技术(Stable Diffusion)来生成同一角色但不同姿势的人脸图片。本文将介绍这一方法的具体步骤,以及如何通过合理的提示语和模型选择来生成出更加真实和多样化的人脸图像。 博客首发地…

[C语言]一维数组二维数组的大小

对于一维数组我们知道取地址是取首元素的地址,二维数组呢,地址是取第一行的地址,sizeof(数组名)这里计算的就是整个数组的大小,&数组名 表示整个数组,取出的是整个数组的地址,显示的是数组的首元素 记…

javascript:void(0);用法及常见问题解析

文章目录 用法:常见问题解析:示例:用法补充:注意事项:替代方案示例:安全性考虑:替代方案建议:ES6语法替代:性能优化:最佳实践: 在 JavaScript 中&…

【双指针】算法例题

目录 二、双指针 25. 验证回文数 ① 26. 判断子序列 ① 27. 两数之和II - 输入有序数组 ② 28. 盛最多水的容器 ② 29. 三数之和 ② 二、双指针 25. 验证回文数 ① 如果在将所有大写字符转换为小写字符、并移除所有非字母数字字符之后,短语正着读和反着读都一…

【进阶五】Python实现SDVRP(需求拆分)常见求解算法——差分进化算法(DE)

基于python语言,采用经典差分进化算法(DE)对 需求拆分车辆路径规划问题(SDVRP) 进行求解。 目录 往期优质资源1. 适用场景2. 代码调整3. 求解结果4. 代码片段参考 往期优质资源 经过一年多的创作,目前已经成…

Docker简介与安装

简介 用来快速构建、运行、管理应用的工具简单说,帮助我们部署项目以及项目所依赖的各种组件典型的运维工具 安装 1.卸载旧版 首先如果系统中已经存在旧的Docker,则先卸载: yum remove docker \docker-client \docker-client-latest \dock…

解决虚拟机Linux ens33 没有 IP 地址

解决方法: 先进入 root 模式 sudo su 查看目录 ls /etc/sysconfig 找到上述文件夹 ls /etc/sysconfig/network-scripts/ 用 vim 打开 ifcfg-ens33 这个文件(不都是这个名字,按这个方法找到这个文件就行) vim /etc/sysconfig/netw…

农业四情监测设备—全面、准确地收集农田环境数据

型号推荐:云境天合TH-Q3】农业四情监测设备是一种高科技的农田监测工具,旨在实时监测和管理农田中的土壤墒情、作物生长、病虫害以及气象条件。这些设备综合运用了传感器、摄像头、气象站等技术手段,能够全面、准确地收集农田环境数据&#x…

H264字节流编码格式

1.H264码流格式——字节流格式 字节流格式是大多数编码器,默认的输出格式。它的基本数据单位为NAL单元,也即NALU。为了从字节流中提取出NALU,协议规定,在每个NALU的前面加上起始码:0x000001或0x00000001(0…

Nodejs 第五十八章(大文件上传)

在现代网站中,越来越多的个性化图片,视频,去展示,因此我们的网站一般都会支持文件上传。 文件上传的方案 大文件上传:将大文件切分成较小的片段(通常称为分片或块),然后逐个上传这…

【3DsMax】UVW展开——以制作牙膏盒为例

效果 步骤 1. 从网上下载牙膏盒贴图,我下载的贴图地址为(牙膏盒贴图链接) 2. 打开3DsMax,创建一个长方体,设置长宽高分别为180、45、40毫米 打开材质编辑器,点击漫反射后的按钮 双击“位图” 将材质赋予长…

113 链接集10--ctrl+左键单击多选

1.ctrl+左键单击多选,单击单选 精简代码 <div class="model-list"><div@mousedown.prevent="handleClick(item, $event)"class="model-list-item"v-for="item in modelList":key="item.id":class="{ model-a…

QT6实现创建与操作sqlite数据库及读取实例(一)

一.Qt为SQL数据库提供支持的基本模块&#xff08;Qt SQL&#xff09; Qt SQL的API分为不同层&#xff1a; 驱动层 SQL API层 用户接口层 1.驱动层 对于Qt 是基于C来实现的框架&#xff0c;该层主要包括QSqlDriver&#xff0c;QSqlDriverCreator,QSqlDriverCreatorBase,QSqlPlug…

C++初阶 | [九] list 及 其模拟实现

摘要&#xff1a;介绍 list 容器&#xff0c;list 模拟实现&#xff0c;list与vector的对比 list&#xff08;带头双向循环列表&#xff09; 导入&#xff1a;list 的成员函数基本上与 vector 类似&#xff0c;具体内容可以查看相关文档(cplusplus.com/reference/list/list/)&…

UE4_官方动画内容示例1.1_使用动画资产

对一个SkeletalMeshActor进行设置&#xff0c;设置好之后&#xff0c;可以通过该Actor的细节&#xff08;Details&#xff09;面板播放指定的动画序列&#xff08;AnimationSequence&#xff09;资产&#xff08;例如让Actor翻跟斗并做开合跳&#xff09;。 骨架网格体定义&am…

后端系统开发之——接口参数校验

今天难得双更&#xff0c;大家点个关注捧个场 原文地址&#xff1a;后端系统开发之——接口参数校验 - Pleasure的博客 下面是正文内容&#xff1a; 前言 在上一篇文章中提到了接口的开发&#xff0c;虽然是完成了&#xff0c;但还是缺少一些细节——传入参数的校验。 即用户…

2024计算机二级Python6

在Python语言中局部变量可以是任意标识符&#xff0c;因为局部变量在函数结束时相当于被销毁&#xff0c;即使与全局变量同名也可以正常运行 在函数内部引用数字类型全局变量时&#xff0c;必须使用global保留字声明 函数内部引用组合类型全局变量时&#xff0c;可以不通过gl…

HTML实现卷轴动画完整源码附注释

动画效果截图 页面的html结构代码 <!DOCTYPE html> <html> <head lang=