写点什么

即刻到位!快速落地 Amazon 智能工厂解决方案

  • 2021 年 12 月 23 日
  • 本文字数:5489 字

    阅读完需:约 18 分钟

即刻到位!快速落地 Amazon 智能工厂解决方案


{ 智能工厂背景 }


很多的制造企业正在利用数字化技术进行转型,并利用机器学习、计算机视觉和机器人等技术提升制造自动化程度。智能工厂便是在制造数字化的基础上,整合信息技术(IT)和运营技术(OT),利用物联网,AI,机器学习等技术进行实时收集、连接、分析和推断企业数据。这些数据可以通过各种应用实现可操作性,这些数据还可用于有效衡量某条生产线或工厂的性能,与组织中的其他生产线或全球基准进行比较,以提高生产过程可控性、减少生产线人工干预,优化计划排程,并在性能、质量和安全方面进行持续的优化。


然而大部分制造企业的数字化和智能工厂转型道路并不是一帆风顺,在这个进程中他们都会面临着各种各样的问题,这其中包括了很多产线设备数据因网络、协议等问题没有被很好的收集;海量的运营数据因本地存储限制而被丢弃,没有被很好的利用;企业紧缺的 IT 人才被繁琐的系统维护花费了大量的精力,而没有时间投入到能为生产制造带来价值的创新和优化上。近些年云计算、物联网、大数据、人工智能等技术正在从各个方面改变我们的生活,同时这些技术也可以为制造企业的数字化转型扫清很多技术障碍,为智能工厂提供技术保障。本文将介绍亚马逊云科技如何利用这些技术为智能工厂提供解决方案并展示如何利用物联网技术将产线数据上云,如何利用边缘计算技术实时控制设备。


{ Amazon 智能工厂解决方案简述 }


要让数据驱动我们向智能制造的转型,就需要数字化和智能工厂平台让数据真正流动起来,这里我们介绍亚马逊云科技的智能工厂的解决方案如何让工业数据流动起来,下图我们给出一个端、边、云的智能工厂参考架构。



在左边的工厂站点“端”侧是底层的工业设备和 PLC 控制器,这是数据的源头,这些源头数据我们可以通过协议转换将特定的工业协议转换为物联网通用的协议。在工厂侧的小数据中心我们称“边缘”侧,这里可以部署边缘网关负责数据的收集和预处理工作,预处理后的数据通过专线或者互联网发送到“云端”,并且作为实时的热数据存储起来,对于这些实时数据一方面给到操作 KPI 仪表板展示给工厂经理和主管,同时对于一些异常数据比如温度过高、震动异常等数据需要立即触发报警管理系统。另外这些热数据也会最终流入数据湖中作为温数据或者冷数据存储起来,用于机器学习和大数据分析或者构建数据仓库的数据源。


数据湖除了具有各种类型和体量数据的存储能力之外,还要具有灵活的数据访问能力,以便于为数据工程师和科学家提供训练机器学习模型的能力。同时也为工厂经理企业决策者提供业务智能报表的能力。对于工厂生产工艺或者业务经理人员,也可以利用自助服务即可访问数据湖的数据做相应的业务分析。对于企业的 IT 数据例如 ERP,CRM 等可以通过远端的服务调用访问相应的数据做 OT 和 IT 的融合。在这个参考架构的每一部分亚马逊云科技都提供了相应的服务来帮助企业快速构建自己的智能工厂平台,如下图所示,在工厂本地端和边缘侧,亚马逊云科技提供的 Amazon IoT Greengrass 服务可以帮助做边缘数据的收集,预处理工作;在云端,亚马逊云科技也提供了各种的服务来满足不同业务的需求,比如使用 IoT 服务做工业数据的入口,使用 Amazon S3 做数据湖的载体,使用 Amazon SageMaker 服务做机器学习的训练等等。在后边的章节中将展示如何利用亚马逊云科技的合作伙伴研华的硬件设备来实际搭建智能工厂的演示环境。



{ 利用研华硬件实际搭建智能工厂的演示环境 }


整体架构图


我们基于 Amazon IoT 合作伙伴研华的硬件设备,快速搭建了一个演示环境。整体架构图如下:



如下是实际的演示环境:



图中所涉及到的各类硬件设备介绍如下:


1. ECU-1251 工业网关负责协议转换和通信。可以采集多个 PLC 的数据,并转换为工业标准协议,如 OPC UA 等。通过这个网关进行多种协议聚合和协议转换,对外提供标准的 OPC UA 或者 MQTT 协议格式。


2. PLC 可编程逻辑控制器负责工业环境的数字/模拟量采集和控制。这里用于采集下方多个按钮的状态,并且实时反应在其下方的多个 LED 上面,和电机上面。


3. ADAM-4055 传感器采集器提供 8 路数字输入通道和 8 路数字输出通道。采集工业现场的数字/模拟类型的传感器,比如电表等。


4. 电机本地可执行部件,用于多种场景,如启动风扇等。


5. UNO-2484G 工业边缘计算单元基于 x86 架构的边缘计算单元,安装了 AWS Greengrass,协调 1 和 6 之间的本地通讯,以及与 Amazon IoT Core 的交互。工厂的应用场景中可能有一台或多台的边缘计算设备,利用 Greengrass 的 lambda 等功能进行 local shadow 或者 ML 等高级功能。


6. ADAM-3600 无线智能 RTU 集合了 1 和 2 和 3 的功能,并且带有无线传输的可选功能。提供 8 路数字输入通道和 4 路数字输出通道,以及 8 路模拟输入和 USB/ETH/RS485 等接口。


7. 按钮用于演示触发本地电机运转。本地可模拟多种事件,比如烟雾报警器等。


8. SCADA 工业现场软件(研华)本地数据采集与监控系统。


{ 数据采集与上传 Amazon IoT Core }


什么是 OPC UA


OPC UA 的全名是 OPC Unified Architecture(OPC 统一架构),他着重在数据收集以及控制为目的的通讯,用在工业设备以及系统中,并且它是一个跨平台的开源标准。


为什么工业现场需要 OPC UA 工业现场有多种通信协议,不完全统计:工业现场常用的通讯协议不低于 20 种。OPC 基金会在旧的开放平台通信(OPC)协议基础上开发一个针对全新而且独立的 OPC UA 通讯协议栈来取代 COM/DCOM。目前,OPC UA 是多数工业现场事实上的统一协议标准?


amazon-iot-greengrass-opcua-adapter 是如何实现的?


基于 OPC UA 的协议,amazon-iot-greengrass-opcua-adapter 利用了 node-OPC UA 编写的 OPC UA stack 模拟成 OPC UA client, 而根据 OPC UA 的 client-server 的架构向 OPC UA Server 订阅 node 的 information,OPC UA Server 会在这些 node 的数据改变时, 将数据发送给这些订阅者。除了向 OPC UA Server 订阅收集数据外,Amazon IoT OPC UA adapter 并且整合了 Greengrass SDK,使之能成为一个 Lambda function,这样一来就能随着 Greengrass 的部署从云端 download 到边缘端执行该 function。


以下将介绍如何将 amazon-iot-greengrass-opcua-adapter Lambda 设定 git apply patch/Fix-the-npm-install-issue-due-to-openssl.patchnpm rebuild:


1. Nodejs 安装


请确认安装 Greengrass 的边缘装置有安装 nodejs 版本 x:请参考

https://nodejs.org/en/download/


安装完后将 node 执行档 copy 到/usr/bin/node or /usr/local/bin


将 node 执行档更名成 x


2. 从 GitHub 下载 Amazon IoT OPC UA adater 代码,并且透过 npm 安装 package


git clone https://github.com/aws-samples/aws-iot-greengrass-OPC UA-adapter.gitcd greengrass-OPC UA-adapter-nodejsnpm install
复制代码


2.3.2.1 npm install 时遇到 openssl 相关的 issue, solution 如下:


git apply patch/Fix-the-npm-install-issue-due-to-openssl.patchnpm rebuild
复制代码


2.3.2.2 安装完后, 另外需要在 apply patch:


git apply patch/factories.patch
复制代码


2.3.3 编辑 config 文件夹中(amazon-iot-greengrass-OPC UA-adapter/greengrass-OPC UA-adapter-nodejs/config/)的 json 配置文件,并且移动至指定位置.


2.3.3.1 published_nodes.json: 将 OPC UA Server 及 node 相关信息填入


PowerShell            {                "serInfo": [                    {                        "endpointName": "UNO-1372G",                        "endpointUrl": "opc.tcp://localhost:26543",                        "certExist": false,                        "userIdentity": {                            "userName": "",                            "password": ""                        },                        "OpcNodes": [                            {                            "Id": "ns=1;s=Temperature",                            "DisplayName": "M140001"                            },                            {                            "Id": "ns=1;s=FanSpeed",                            "DisplayName": "M140002"                            },                            {                            "Id": "ns=1;s=PumpSpeed",                            "DisplayName": "M140003"                            }                        ]                    }                ]            }
复制代码


endpointName: OPC UA Server 名称


endpointUrl: OPC UA Server 的 IP 及 Port 编号


OpcNodes: OPC UA Server 支持的 node 信息


OpcNodes:


2.3.3.2 client_config.json: OPC UA client 相关的设定


其他字段详细设定可参考该链接说明:

https://github.com/aws-samples/aws-iot-greengrass-opcua-adapter#use-greengrass-opc-ua-to-interact-with-your-opc-ua-server


2.3.4 移动 config 文件夹(amazon-iot-greengrass-OPC UA-adapter/greengrass-OPC UA-adapter-nodejs/config/)至指定位置/etc/greengrass/OPC UA-adapter/config, 或是客户自行指定位置但需要自行记录在 Lambda 的环境变量.


2.3.5 打包代码, 并且将之上传到 Lambda Function.


2.3.5.1 打包代码 cd amazon-iot-greengrass-OPC UA-adapter/greengrass-OPC UA-adapter-nodejszip -r OPC UALambda.zip2.3.5.2 上传压缩包至 Lambda

请参考该链接:

https://docs.aws.amazon.com/greengrass/latest/developerguide/config-lambda.html


2.3.6 在 Greengrass Group 设定 Lambda


2.3.6.1 添加 Lambda,并且加入以下设定–生命周期为 Long-Lived



–设定 Memory Limit



–设定环境变量 AMAZON_LAMBDA_OPC UA_ADAPTER_CONFIG_FILE_PATH



– 设定环境变量 AMAZON_LAMBDA_OPC UA_ADAPTER_SEND_ALL_DATA_TO_CLOUD



2.4 配置 Greengrass 的“订阅”权限,



2.5 在 Amazon Iot Core 中订阅“/OPC UA/#” Topic,并测试数据。



2.6 设置 Amazon IoT rule,过滤并导出数据到新的 Topic,方便其他服务调用。



2.7 配置 NodeRED server,读取上一步中指定的 Topic,并在 web 上显示实时的数据状态。



{ 设备本地控制 }


什么是 Local shadow


影子是用于存储事物的当前或所需状态信息的 JSON 文档,demo 中安装在 UNO-2484G 里面的 AWS Greengrass 保存有本地设备的设备影子文件。使用本地影子可以不同步到云,当 Amazon IoT 连接到 Internet 时,可以启用云同步,影子可以同步到 Amazon IoT Greengrass Core。


为什么要用 Local shadow


在设备、应用程序和其他云服务连接到 Amazon IoT 后,它们可以通过设备影子访问和控制设备的当前状态。例如,应用程序可以更新影子以请求更改设备的状态。Amazon IoT 发布一条消息以指示对设备所做的更改。设备接收该消息,更新其状态以保持匹配,然后发布一条消息以指示其更新状态。Device Shadow 服务在相应的影子中反映该更新状态。应用程序可以订阅影子的更新,也可以查询影子以获取其当前状态。在设备脱机时,应用程序仍然可以与 Amazon IoT 和设备的影子进行通信。在设备重新连接时,它接收其影子的当前状态,以便它可以更新其状态以与其影子的状态匹配,然后发布一条消息以指示其更新状态。同样,如果应用程序脱机并且设备状态在其脱机时发生变化,则设备将影子保持更新状态,以便应用程序可以在设备重新连接时查询影子以获取其当前状态。


如何利用 Local shadow 实现本地设备联动。



1.按下按钮,模拟烟雾报警器被触发。


2.Greengrass 通过 OPC UA adapter lambda 采集 PLC 中的按钮触发信息,并发送到另一个本地触发的 lambda 中(这里叫做 shadow_example)



3.本地触发的 lambda 判断收到的信息为烟雾报警后,会更改 local shadow 的期望值,希望启动喷淋系统(这里以转动电机来表示)。



4.Shadow 负责把期望值和原有值的差距(开启或者停止电机转动的 JSON)发送给网关 ECU-1251。


5.ECU-1251 收到后差距值后,通过现场的控制总线(这里是 RS485 总线)发送控制命令给 PLC。


6.PLC 收到 RS485 总线上的命令后,开启或者停止转动电机。


7.最后,进入 Greengrass 的 Devices 设置,把本地设备上的 local shadow 的状态同步到云端。



设备本地控制部分,全部操作可以在不连接 Amazon IoT Core 的离线情况下执行。


{ 相关资料 }


视频介绍:

https://www.bilibili.com/video/BV1vv411C7BA/

https://www.bilibili.com/video/BV1CA411j7Bj/


本篇作者



陈雪杰

亚马逊云科技制造业解决方案架构师

负责制造行业的方案咨询和架构设计,致力于智能制造,智能产品的方案应用和推广。


林俊

亚马逊云科技高级解决方案架构师

主要负责现代应用程序的方案咨询与架构设计,致力于无服务器 (Serverless) 技术的推广与应用。


孙铭鸿

亚马逊云科技物联网实验室软件开发工程师

负责基于 Amazon IoT 服务之设备端的开发,设计,以及应用。在加入亚马逊云科技之前曾在芯片厂服务多年, 专精于嵌入式系统领域。


徐开

亚马逊云科技物联网实验室解决方案架构师

主要负责物联网解决方案,致力于 Amazon IoT 相关技术的的推广与应用。


用户头像

还未添加个人签名 2019.09.17 加入

还未添加个人简介

评论

发布
暂无评论
即刻到位!快速落地 Amazon 智能工厂解决方案