亚马逊AWS官方博客

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

作者:Edouard Kachelmann 和 Ryan Dsouza

Original URL: https://aws.amazon.com/blogs/iot/connecting-disparate-industrial-devices-and-applications-from-the-plant-floor-to-aws-using-kepserverex/
在管理工业物联网 (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 软件:
  • 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 控制台并选择 GreengrassMyFirstGroup,然后选择核心,您应该能够看到您的核心设备:
  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 设备)。选择完成

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

配置订阅

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

  1. 在组配置页面上,选择订阅,然后选择添加订阅
    • 对于选择源,请选择选择设备,然后选择 KepServer
    • 对于选择目标,选择选择服务,然后选择 IoT Cloud。然后选择下一步
    • 对于可选主题筛选器,输入 iotgateway,选择下一步,然后选择完成
  2. 在组配置页面上,从操作菜单中,选择部署以将更新的组配置部署到 Greengrass 核心设备:
  3. 要确认部署成功,选择部署。您应该能够在接近启动部署的时间的状态列中看到已成功完成字样。

配置 KEPServer IoT 网关

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

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

配置 IoT 网关

  1. 要访问 IoT 网关系统设置,请右键单击系统托盘中的“管理”图标,然后选择设置。选择 IoT Gateway 选项卡。
  2. 要配置 MQTT 代理,请选择管理证书
  3. MQTT 代理证书上,选择导入新证书
  4. 浏览到您的 kepserver_certificates 文件夹,选择 kepserverID.cert.pem 文件和 kepserverID.private.key
  5. 如果系统提示您输入密码,请将其留空,然后选择确定
  6. 验证公用名是 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/UCbRyMA0GCSqGSIb3DQEB
CwUAMIGoMQswCQYDVQQGEwJVUzEYMBYGA1UECgwPQW1hem9uLmNvbSBJbmMuMRww
GgYDVQQLDBNBbWF6b24gV2ViIFNlcnZpY2VzMRMwEQYDVQQIDApXYXNoaW5ndG9u
MRAwDgYDVQQHDAdTZWF0dGxlMTowOAYDVQQDDDE3NTM0NTE0NTIwMTI6NDVjODhk
ZGYtOTE4MC00OGFmLWI2NzAtZDRmN2Q2ODQ4NzBhMCAXDTE4MTAyODAzMjU1MFoY
DzIwOTgxMDI4MDMyNTQ5WjCBqDELMAkGA1UEBhMCVVMxGDAWBgNVBAoMD0FtYXpv
bi5jb20gSW5jLjEcMBoGA1UECwwTQW1hem9uIFdlYiBTZXJ2aWNlczETMBEGA1UE
CAwKV2FzaGluZ3RvbjEQMA4GA1UEBwwHU2VhdHRsZTE6MDgGA1UEAwwxNzUzNDUx
NDUyMDEyOjQ1Yzg4ZGRmLTkxODAtNDhhZi1iNjcwLWQ0ZjdkNjg0ODcwYTCCASIw
DQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAJtpEpUd4UQNf8w401nwuOxy0U7H
CIMXidsMQMUz7reKCkNd36RYi/fk3L8I0HjJQV4FeqSEgrn0R0+5/tTUsnLKWL2v
hD1uoeYokQ093hOKXJ8sdZQX6+1C+5Cg2rzw5Z+yloebiaRuJ/1kBYBL48rhQOuj
l/A9/hqRnK8MTratjFvvgLwens1LEFuEFECqgrAo8WcxyJH5mn2FpIi6+k1MY0Cu
jnASU44HbsGcWPEXf3wYCVJkXJdGJpDMT0HSIVY6t1ssDGqYv0N05Ho9jRU57qgc
AfsWCVMf48ENwrcgJpV100R7t05vl8fBGR4Aw5fX89YPmm2fLSOII/wO3h8CAwEA
AaMyMDAwDwYDVR0TAQH/BAUwAwEB/zAdBgNVHQ4EFgQUh1qliQIyct02aaLJDTTq
0iaEOy4wDQYJKoZIhvcNAQELBQADggEBACPQruUOeGr+O/ulUc2TjX3gHxK58JhJ
9P0SMKW/Gm/mRFQQsRG/fkvLl2ypmBfyxCYcJjXAYyKuu94HaB0+qmwastdbeLCI
iD8ytR66SoREKPtIKXHCczNIy5x7HLwfnmD97Vmr+WsDUp9jA/xAGmNE8vKuTil8
zYh0KssxU0QpifzjqnEmaqjvIJQLWj9dP8AZGyv5UPT4fcG5VvNnBG6nTEaEIOzR
SlzP0MPF88RfArVKV4MYLT/bfGIGF9m0JmOYIPkO1zuoEjEmag+IEAA2xCgubbEn
kDOxT1ZC906HZsYP3krOf216BW9PBeF82S/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 文件的共享文件夹,然后选择打开

    注意
    :如果看不到该文件,请在文件名中输入通配符*并选择打开以查看扩展名为 *.pem 的所有文件。
  9. 选择下一步,然后选择完成。这时,您应该能名看到一条确认证书已成功导入的消息。如果系统提示您保存模板,请关闭控制台窗口并选择

配置代理

必须至少为一个代理配置一个活动标签才能启动网关服务。在 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。

了解更多: