Linux 之父出席、干货分享、圆桌讨论,精彩尽在 OpenCloudOS 社区开放日,报名戳 了解详情
写点什么

使用 KEPServerEX 将不同的工业设备和应用程序从工厂车间连接到 AWS

  • 2019 年 9 月 25 日
  • 本文字数:5812 字

    阅读完需:约 19 分钟

使用 KEPServerEX 将不同的工业设备和应用程序从工厂车间连接到 AWS

在管理工业物联网 (IIoT) 数据时,收集这些数据并将其发送到云进行处理和高级分析(例如,预测质量或设备故障)可能具有挑战性。制造车间可能有许多不同的设备,每个设备都有自己的协议。在这篇博文中,我们将讨论客户如何通过在边缘使用 KepServerEX 进行工业协议转换来解决工业协议挑战、将 AWS IoT Greengrass 用于边缘处理以及使用 AWS IoT 将数据摄取到 AWS。在阅读完本文后,您应该能够掌握足够的知识来为实时工业数据创建安全可靠的流程,以便从车间到高级管理层的每个人都可以做出更明智的决策。


首先,我们将向您演示如何连接 KEPServerEX 与 AWS IoT Greengrass Core 并进行配置 。如果您的应用程序需要使用 AWS IoT Core 证书链连接到 AWS IoT Greengrass Core,则此信息非常有用。大多数应用程序不需要根 CA 来验证服务器 (AWS IoT Greengrass) 证书,但 KEPServerEX 要求它验证证书链。


AWS IoT Greengrass Core 软件提供以下功能:


  • 允许部署和执行使用 AWS Lambda 函数创建并通过部署 API 管理的本地应用程序。

  • 通过 MQTT 协议使用托管订阅方案,在安全网络上实现设备之间的本地消息传递。

  • 使用设备身份验证和授权确保设备与云之间的安全连接。

  • 提供对用户定义的 AWS Lambda 函数的安全、无线软件更新。

  • 使用 Greengrass ML Inference 部署针对在 AWS IoT Greengrass 上运行优化的机器学习模型。


先决条件

在本文中,我们建议您在同一 VPC 中的 EC2 实例上安装以下软件。


  • 在 Windows Amazon EC2 实例上从 Kepware 网站安装 KEPServerEX。要运行 Kepware IoT 网关,服务器需要一个可正常工作的 32 位 JRE。您可以从此处下载并安装当前的 JRE。

  • 按照 AWS IoT Greengrass 开发人员指南中的说明在 Linux 或 Rasberry Pi 上安装 AWS IoT Greengrass Core 软件:

  • 模块 1:AWS IoT Greengrass 的环境设置

  • 模块 2:安装 AWS IoT Greengrass 核心软件

  • KEPServerEX 支持 OPC UA 和 MQTT(库存实现)。我们使用 MQTT 消息与 AWS IoT Greengrass 进行通信。

  • 确保 KEPServerEX 和 AWS IoT Greengrass Core 软件在同一网络中运行。

  • 按照 AWS CLI 文档中的说明在您的个人计算机上安装 AWS CLI,然后使用您的 AWS 访问密钥和密钥对其进行配置。


架构图


入门

现在 AWS IoT Greengrass Core 软件应该已在网关上运行。如果您按照“开始使用”模块中的步骤操作,则还应该配置具有一个核心设备(例如 MyFirstGroup_Core)的 Greengrass 组(例如 MyFirstGroup)。核心设备应该能够与 AWS IoT Core 通信。


在这些过程中创建的资源应在同一 AWS 区域中创建。


  1. 打开 AWS IoT 控制台并选择 Greengrass,组,MyFirstGroup,然后选择核心,您应该能够看到您的核心设备:

  2. 选择您的核心设备,然后在左侧窗格中选择连接。记下终端节点地址和端口。


在 AWS IoT Greengrass 组中创建 AWS IoT 设备

现在我们将 KEPServerEx 设备添加到 AWS IoT Greengrass 组中。


  1. 在 AWS IoT 控制台中,选择 Greengrass,选择组,然后选择您的组以打开其配置页。接下来,选择设备,然后选择添加您的第一台设备(或添加设备)。

  2. 选择创建新设备。

  3. 要为此设备创建注册表项,请在名称中输入 KepServer,然后选择下一步。

  4. 在设置安全性页面上,选择使用默认值以使用 1-Click 选项。此选项使用 AWS IoT 根 CA 生成所需的密钥和证书,并使用默认权限创建默认策略和 IAM 角色。

  5. 在下载安全凭证页面上,将设备的证书下载到 kepserver_certificates 文件夹中,然后解压缩。请注意,在整个过程中您仅能够在该步骤下载密钥(因此请确保您在此处下载密钥,否则您必须创建新的 AWS IoT 设备)。选择完成。

  6. KepServer 现在应该会出现在 Greengrass 组的 Devices 列表中。


配置订阅

现在我们让 KEPServerEx 设备可以将消息发送到 AWS IoT 云。


  1. 在组配置页面上,选择订阅,然后选择添加订阅。


  • 对于选择源,请选择选择,设备,然后选择 KepServer。

  • 对于选择目标,选择选择,服务,然后选择 IoT Cloud。然后选择下一步。

  • 对于可选主题筛选器,输入 iotgateway,选择下一步,然后选择完成。


  1. 在组配置页面上,从操作菜单中,选择部署以将更新的组配置部署到 Greengrass 核心设备:

  2. 要确认部署成功,选择部署。您应该能够在接近启动部署的时间的状态列中看到已成功完成字样。


配置 KEPServer IoT 网关

复制先前下载和提取的设备证书。您可以使用 Microsoft 远程桌面连接软件的本地文件共享功能。


现在我们配置 MQTT 代理和 IoT 网关以将 Kepware 连接到 Greengrass 核心设备。


配置 IoT 网关

  1. 要访问 IoT 网关系统设置,请右键单击系统托盘中的“管理”图标,然后选择设置。选择 IoT Gateway 选项卡。

  2. 要配置 MQTT 代理,请选择管理证书。

  3. 在 MQTT 代理证书上,选择导入新证书。

  4. 浏览到您的 kepserver_certificates 文件夹,选择

  5. kepserverID.cert.pem 文件和 kepserverID.private.key。

  6. 如果系统提示您输入密码,请将其留空,然后选择确定。

  7. 验证公用名是 AWS IoT 证书,然后选择关闭。


检索 AWS IoT Greengrass Core 证书颁发机构 (CA)

要为 Greengrass 组检索 CA,请在终端中键入以下命令:


aws greengrass list-groups
复制代码


查找 MyFirstGroup,并复制 ID(此处称为 group-id)。


aws greengrass list-group-certificate-authorities --group-id [your_group_id]aws greengrass get-group-certificate-authority --certificate-authority-id [the_cert_auth_id_returned_above] --group-id [your_group_id] | awk -v beg='-----BEGIN CERTIFICATE-----' -v end='-----END CERTIFICATE-----' 'sub(".*"beg,beg){f=1} f; sub(end".*",end){exit}' | awk '{gsub(/\\n/,"\n")}1' | sed '$d' > greengrassgroupCA.pem
复制代码


输出为:


{"GroupCertificateAuthorityArn": "arn:aws:greengrass:[AWSregion]:[accountID]:/greengrass/groups/[group-id]/certificateauthorities/[certificate-authority-id]","GroupCertificateAuthorityId": "[certificate-authority-id]","PemEncodedCertificate": "-----BEGIN CERTIFICATE-----\nMIIEFTCCAv2gAwIBAgIVAJq6/DGtiKHvt96VZSPDRe/UCbRyMA0GCSqGSIb3DQEB\nCwUAMIGoMQswCQYDVQQGEwJVUzEYMBYGA1UECgwPQW1hem9uLmNvbSBJbmMuMRww\nGgYDVQQLDBNBbWF6b24gV2ViIFNlcnZpY2VzMRMwEQYDVQQIDApXYXNoaW5ndG9u\nMRAwDgYDVQQHDAdTZWF0dGxlMTowOAYDVQQDDDE3NTM0NTE0NTIwMTI6NDVjODhk\nZGYtOTE4MC00OGFmLWI2NzAtZDRmN2Q2ODQ4NzBhMCAXDTE4MTAyODAzMjU1MFoY\nDzIwOTgxMDI4MDMyNTQ5WjCBqDELMAkGA1UEBhMCVVMxGDAWBgNVBAoMD0FtYXpv\nbi5jb20gSW5jLjEcMBoGA1UECwwTQW1hem9uIFdlYiBTZXJ2aWNlczETMBEGA1UE\nCAwKV2FzaGluZ3RvbjEQMA4GA1UEBwwHU2VhdHRsZTE6MDgGA1UEAwwxNzUzNDUx\nNDUyMDEyOjQ1Yzg4ZGRmLTkxODAtNDhhZi1iNjcwLWQ0ZjdkNjg0ODcwYTCCASIw\nDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAJtpEpUd4UQNf8w401nwuOxy0U7H\nCIMXidsMQMUz7reKCkNd36RYi/fk3L8I0HjJQV4FeqSEgrn0R0+5/tTUsnLKWL2v\nhD1uoeYokQ093hOKXJ8sdZQX6+1C+5Cg2rzw5Z+yloebiaRuJ/1kBYBL48rhQOuj\nl/A9/hqRnK8MTratjFvvgLwens1LEFuEFECqgrAo8WcxyJH5mn2FpIi6+k1MY0Cu\njnASU44HbsGcWPEXf3wYCVJkXJdGJpDMT0HSIVY6t1ssDGqYv0N05Ho9jRU57qgc\nAfsWCVMf48ENwrcgJpV100R7t05vl8fBGR4Aw5fX89YPmm2fLSOII/wO3h8CAwEA\nAaMyMDAwDwYDVR0TAQH/BAUwAwEB/zAdBgNVHQ4EFgQUh1qliQIyct02aaLJDTTq\n0iaEOy4wDQYJKoZIhvcNAQELBQADggEBACPQruUOeGr+O/ulUc2TjX3gHxK58JhJ\n9P0SMKW/Gm/mRFQQsRG/fkvLl2ypmBfyxCYcJjXAYyKuu94HaB0+qmwastdbeLCI\niD8ytR66SoREKPtIKXHCczNIy5x7HLwfnmD97Vmr+WsDUp9jA/xAGmNE8vKuTil8\nzYh0KssxU0QpifzjqnEmaqjvIJQLWj9dP8AZGyv5UPT4fcG5VvNnBG6nTEaEIOzR\nSlzP0MPF88RfArVKV4MYLT/bfGIGF9m0JmOYIPkO1zuoEjEmag+IEAA2xCgubbEn\nkDOxT1ZC906HZsYP3krOf216BW9PBeF82S/S0XYDp+9+TvWpz2wcNv8=\n-----END CERTIFICATE-----\n"}
复制代码


复制 PemEncodedCertificate 值并将其粘贴到文本编辑器中。编辑内容,用回车符 (Enter) 替换任何换行符 (\n)。


您的文件应具有以下模板:


-----BEGIN CERTIFICATE-----MIIEFTCCAv2gAwIBAgIVAJq6/DGtiKHvt96VZSPDRe/UCbRyMA0GCSqGSIb3DQEBCwUAMIGoMQswCQYDVQQGEwJVUzEYMBYGA1UECgwPQW1hem9uLmNvbSBJbmMuMRwwGgYDVQQLDBNBbWF6b24gV2ViIFNlcnZpY2VzMRMwEQYDVQQIDApXYXNoaW5ndG9uMRAwDgYDVQQHDAdTZWF0dGxlMTowOAYDVQQDDDE3NTM0NTE0NTIwMTI6NDVjODhkZGYtOTE4MC00OGFmLWI2NzAtZDRmN2Q2ODQ4NzBhMCAXDTE4MTAyODAzMjU1MFoYDzIwOTgxMDI4MDMyNTQ5WjCBqDELMAkGA1UEBhMCVVMxGDAWBgNVBAoMD0FtYXpvbi5jb20gSW5jLjEcMBoGA1UECwwTQW1hem9uIFdlYiBTZXJ2aWNlczETMBEGA1UECAwKV2FzaGluZ3RvbjEQMA4GA1UEBwwHU2VhdHRsZTE6MDgGA1UEAwwxNzUzNDUxNDUyMDEyOjQ1Yzg4ZGRmLTkxODAtNDhhZi1iNjcwLWQ0ZjdkNjg0ODcwYTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAJtpEpUd4UQNf8w401nwuOxy0U7HCIMXidsMQMUz7reKCkNd36RYi/fk3L8I0HjJQV4FeqSEgrn0R0+5/tTUsnLKWL2vhD1uoeYokQ093hOKXJ8sdZQX6+1C+5Cg2rzw5Z+yloebiaRuJ/1kBYBL48rhQOujl/A9/hqRnK8MTratjFvvgLwens1LEFuEFECqgrAo8WcxyJH5mn2FpIi6+k1MY0CujnASU44HbsGcWPEXf3wYCVJkXJdGJpDMT0HSIVY6t1ssDGqYv0N05Ho9jRU57qgcAfsWCVMf48ENwrcgJpV100R7t05vl8fBGR4Aw5fX89YPmm2fLSOII/wO3h8CAwEAAaMyMDAwDwYDVR0TAQH/BAUwAwEB/zAdBgNVHQ4EFgQUh1qliQIyct02aaLJDTTq0iaEOy4wDQYJKoZIhvcNAQELBQADggEBACPQruUOeGr+O/ulUc2TjX3gHxK58JhJ9P0SMKW/Gm/mRFQQsRG/fkvLl2ypmBfyxCYcJjXAYyKuu94HaB0+qmwastdbeLCIiD8ytR66SoREKPtIKXHCczNIy5x7HLwfnmD97Vmr+WsDUp9jA/xAGmNE8vKuTil8zYh0KssxU0QpifzjqnEmaqjvIJQLWj9dP8AZGyv5UPT4fcG5VvNnBG6nTEaEIOzRSlzP0MPF88RfArVKV4MYLT/bfGIGF9m0JmOYIPkO1zuoEjEmag+IEAA2xCgubbEnkDOxT1ZC906HZsYP3krOf216BW9PBeF82S/S0XYDp+9+TvWpz2wcNv8=-----END CERTIFICATE-----
复制代码


将文件另存为 greengrassgroupCA.pem。


将 AWS IoT Greengrass Core 证书颁发机构 (CA) 添加到 Windows

  1. 从 Windows 开始菜单中,打开运行。

  2. 键入 mmc,然后选择确定。

  3. 在控制台窗口中,从文件菜单中选择添加/删除管理单元。

  4. 选择证书,然后选择添加。选择计算机帐户,然后选择下一步。

  5. 选择完成,然后选择确定。

  6. 展开证书,受信任的根证书颁发机构,然后选择证书。

  7. 在右侧菜单中,选择证书,选择更多操作,所有任务,然后选择导入。

  8. 在导入向导页面上,选择下一步。浏览您的本地文件夹或保存 greengrassgroupCA.pem 文件的共享文件夹,然后选择打开。

  9. 注意:如果看不到该文件,请在文件名中输入通配符*并选择打开以查看扩展名为 *.pem 的所有文件。

  10. 选择下一步,然后选择完成。这时,您应该能名看到一条确认证书已成功导入的消息。如果系统提示您保存模板,请关闭控制台窗口并选择否。


配置代理

必须至少为一个代理配置一个活动标签才能启动网关服务。在 IoT Gateway 部分中配置代理和标签。


  1. 在 IoT Gateway 下,选择添加代理。


  • 使用以下参数配置代理:


  • 名称:Kepserver

  • 类型:MQTT 客户端,选择下一步。


  • 使用先前保存的连接参数,使用以下参数配置 MQTT 客户端代理:


  • URL:ssl://Greengrass_Core IPAddress:8883

  • 主题:iotgateway

  • QOS:0(最多一次),将其他参数保持为默认值,然后选择下一步。


  • 按如下方式配置 MQTT 客户端安全性:


  • 客户端 ID:KepServer

  • 用户名:<留空>

  • 密码:<留空>,客户端 ID 必须与 AWS IoT 控制台中的设备名称相匹配。选择完成。


  • 右键单击刚刚创建的 KEPServer 代理,然后选择属性。


  • 转到安全性,然后修改 TLS 配置,以便 KEPServer 客户端发送其证书:

  • 客户端证书:启用


  • 转到消息,然后自定义默认模板,如下所示:


  • 消息格式:高级模板

  • 模板:


{"timestamp": |SERVERTIMESTAMP|,"values": Hello IoT Cloud}
复制代码


选择确定。


您的 MQTT 代理配置应如下所示:



  • 选择 KEPServer 代理,然后选择添加 IoT 项:


  • 选择 IoT_Gateway_ / Kepserver 分支,然后选择 _PublishesSent 标签。选择应用。

  • 在发布下,选择每次扫描。


将 KEPServer 连接到 Greengrass 核心

KEPServerEX 和 Greengrass 组现在都已配置完成。在这个步骤中,我们验证来自 KEPServer 的连接是否成功,然后订阅 AWS IoT Core 中的主题。


验证连接是否成功


在 KEPServer 中:


  • 从运行时菜单中,选择重新初始化。

  • 在事件日志窗口中,您应该能够看到一条确认 MQTT 代理程序 KEPServer 已连接到 Greengrass 核心设备的消息:



如果事件日志窗口中出现以下错误之一:


  • 'Software caused connection abort: recv failed'.

  • 检查您是否在安全选项中启用了客户端证书选项,并查看 AWS IoT Greengrass 日志以解决连接问题。

  • 您还可以启用 Amazon CloudWatch logs 并查看。

  • 'unable to find valid certification path to requested target'

  • 检查 Greengrass Core 证书颁发机构 (CA) 是否已添加到 Windows 证书存储区。


测试主题订阅

要测试主题订阅,请在 AWS IoT 控制台的左侧窗格中,选择测试。


  • 选择订阅主题,在订阅主题中,输入iotgateway,然后选择订阅主题。

  • 您应该能够看到 KEPServer 发布的消息:



总结

在本文中,我们研究了如何连接 KEPServerEX 与 AWS IoT Greengrass Core 并进行配置 。我们安装了 AWS IoT Core 证书链,以允许这些服务相互通信。


我们现在能够处理 AWS 环境中不同工业设备的物联网消息。


小结和其他资源

通过本文中的步骤,您可以从可编程逻辑控制器 (PLC)、SCADA 系统、工厂历史记录和其他制造系统中收集工业数据,并在几个小时内安全、高效且具成本效益地让数据进入 AWS。在工业数据摄取到 AWS 后,可用于各种智能制造用例,包括构建用于预测性维护的机器学习模型。自己来看吧。立即开始将工厂资产和应用程序从工厂车间连接到 AWS。


相关文章:



本文转载自 AWS 技术博客。


原文链接:


https://amazonaws-china.com/cn/blogs/china/connecting-disparate-industrial-devices-and-applications-from-the-plant-floor-to-aws-using-kepserverex/


2019 年 9 月 25 日 15:52750
用户头像

发布了 1496 篇内容, 共 52.9 次阅读, 收获喜欢 58 次。

关注

评论

发布
暂无评论
发现更多内容

Elasticsearch-Base

lee

elasticsearch search 搜索

LeetCode 1339. Maximum Product of Splitted Binary Tree

隔壁小王

算法

为什么你在群里的提的技术问题没人回答?

古时的风筝

程序员 提问的艺术

硬不硬你说了算!近 40 张图解被问千百遍的 TCP 三次握手和四次挥手面试题

小林coding

面试 TCP 网络安全 网络编程 计算机网络

2020年6月5日 继承

瑞克与莫迪

一文带你了解 Kafka 原理

cxuan

kafka

PlantUML 的介绍和使用

Puran

UML PlantUML

createRef、useRef、useMemo对比分析和应用场景

费马

React Hooks useRef useMemo createRef

前端开发必备工具箱

LeanCloud

CSS 性能优化 vscode 大前端 工具

持续集成实践系列 」Jenkins 构建 CI 自动化流水线常见技巧 (二)

狂师

持续集成 jenkins jenkins-plugin CI/CD

修改git里commit信息用户名

张张张小烦

cpu分析利器 — async-profiler

捉虫大师

Java cpu profiler

从SDL到DevSecOps:始终贯穿开发生命周期的安全

Fooying

DevOps SDL DevSecOps 安全开发 软件开发生命周期

读《平凡的世界》

YoungZY

读书

程序员未来会成为非常内卷的职业?

非著名程序员

程序员 程序人生 职业 职业规划

分布式系统技术:存储之数据库

奈学教育

分布式

大话设计模式 | 1 简单工厂模式

Puran

C# 设计模式 PlantUML

如何辨别有发展潜力的员工​

Neco.W

工作 招聘

实时更新:计算机编程语言排行榜—TIOBE世界编程语言排行榜(2020年6月份最新版)

ATGU:阿宝哥

ARTS打卡-02

Geek_yansheng25

关于Synchronized锁升级,你该了解这些

学习Java的小姐姐

并发编程 synchronized 轻量级锁 偏向锁 重量级锁

ARTS-Week 01

chasel

2020年5月北京BGP机房网络质量评测报告

博睿数据

网络 服务器 存储 机房 主机

厉害了,SpaceX-API 开源了

非著名程序员

GitHub 开源 程序员

27岁了,程序员写给自己的一封信

学习Java的小姐姐

程序员 生活 总结 程序媛 职场回顾

从技术思维角度聊一聊『程序员』摆地摊的正确姿势

牧码哥

随笔杂谈 技术人生 经验分享

C#和TS的范型实例化

猫定谔的靴

C# typescript 泛型

存储让“想象”势不可挡

焱融科技

Java技术奇迹

ATGU:阿宝哥

《龙教授私享会职场沟通心法》最佳学习路线(2020最新版)

ATGU:阿宝哥

《Oracle Java SE编程自学与面试指南》最佳学习路线图(2020最新版)

ATGU:阿宝哥

GPU容器虚拟化:用户态和内核态的技术和实践详解

GPU容器虚拟化:用户态和内核态的技术和实践详解

使用 KEPServerEX 将不同的工业设备和应用程序从工厂车间连接到 AWS_文化 & 方法_亚马逊云科技 (Amazon Web Services)_InfoQ精选文章