连接的工厂解决方案加速器的常见问题解答

另请参阅 IoT 解决方案加速器的一般常见问题解答

在哪里可以找到此解决方案加速器的源代码?

源代码存储在以下 GitHub 存储库中:

OPC UA 是什么?

OPC 统一体系结构 (UA) 发布于 2008 年,是一种独立于平台、以服务为导向的互操作性标准。 OPC UA 为工业电脑、PLC 和传感器等多种行业体系和设备所采用。 OPC UA 将 OPC 经典规范的功能集成到一种具有内置安全性的可扩展框架。 它是一种由 OPC 基金会倡导的标准。 OPC 基金会是一个拥有 440 多个成员的非营利性组织。 组织的目标是使用 OPC 规范通过以下方面促进多供应商、多平台的安全可靠互操作性:

  • 基础结构
  • 规范
  • 技术
  • 进程

Microsoft 为何为连接的工厂解决方案加速器选择 OPC UA?

Microsoft 选择 OPC UA 的原因是,OPC UA 是一种开放、非专有、独立于平台、已获得行业认可和已经过验证的标准。 它是 Industrie 4.0 (RAMI4.0) 参考体系结构解决方案的必要条件,可确保大量制造流程和设备之间的互操作性。 Microsoft 看到了其客户对于构建工业 4.0 解决方案的需求。 OPC UA 支持有助于降低客户实现其目标的障碍,并为其提供即时业务价值。

如何将公共 IP 地址添加到模拟 VM?

可通过两种方式添加 IP 地址:

  • 使用存储库中的 PowerShell 脚本 Simulation/Factory/Add-SimulationPublicIp.ps1。 传入部署名称作为参数。 对于本地部署,请使用 <your username>ConnFactoryLocal。 该脚本会列显 VM 的 IP 地址。

  • 在 Azure 门户中,找到部署的资源组。 资源组名称即为你指定为解决方案名称或部署名称的名称,本地部署除外。 对于使用 build 脚本的本地部署,资源组名称为 <your username>ConnFactoryLocal。 现在向资源组添加新的公共 IP 地址

注意

在任意情况下,请按照 Ubuntu 网站上的说明保安装最新修补程序。 保持安装处于最新状态,确保可通过公共 IP 地址访问 VM。

如何将模拟 VM 的公共 IP 地址删除?

可通过两种方式删除 IP 地址:

  • 使用存储库的 PowerShell 脚本 Simulation/Factory/Remove-SimulationPublicIp.ps1。 传入部署名称作为参数。 对于本地部署,请使用 <your username>ConnFactoryLocal。 该脚本会列显 VM 的 IP 地址。

  • 在 Azure 门户中,找到部署的资源组。 资源组名称即为你指定为解决方案名称或部署名称的名称,本地部署除外。 对于使用 build 脚本的本地部署,资源组名称为 <your username>ConnFactoryLocal。 现将公共 IP 地址从资源组删除

如何登录到模拟 VM?

只有使用存储库中的 PowerShell 脚本 build.ps1 部署解决方案才支持登录到模拟 VM。

如果已从 www.azureiotsolutions.com 部署解决方案,则无法登录到 VM。 无法登录,因为密码随机生成且无法重置。

  1. 将公共 IP 地址添加到 VM。 请参阅如何将公共 IP 地址添加到模拟 VM?
  2. 使用 VM IP 地址创建 VM 的 SSH 会话。
  3. 要使用的用户名是:docker
  4. 要使用的密码取决于部署所用的版本:
    • 对于 2017 年 6 月 1 日前使用 build.ps1 脚本部署的解决方案,密码为:Passw0rd
    • 对于 2017 年 6 月 1 日之后使用 build.ps1 脚本部署的解决方案,密码为:<name of your deployment>.config.user。 此密码存储在 VmAdminPassword 设置中。 除非使用 build.ps1 脚本参数 -VmAdminPassword 指定密码,否则密码会在部署时随机生成。

如何在模拟 VM 中停止和启动所有 docker 进程?

  1. 登录到模拟 VM。 请参阅如何登录到模拟 VM?
  2. 若要查看处于活动状态的容器,请运行 docker ps
  3. 若要停止所有模拟容器,请运行 ./stopsimulation
  4. 若要启动所有模拟容器:
    • 导出名称为 IOTHUB_CONNECTIONSTRING 的 shell 变量。 使用 <name of your deployment>.config.user 文件中 IotHubOwnerConnectionString 设置的值。 例如:

      export IOTHUB_CONNECTIONSTRING="HostName={yourdeployment}.azure-devices.net;SharedAccessKeyName=iothubowner;SharedAccessKey={your key}"
      
    • 运行 ./startsimulation

如何更新 VM 中的模拟?

如已对模拟作出更改,可通过 updatedimulation 命令使用存储库中的 PowerShell 脚本 build.ps1。 此脚本会生成所有模拟组件,停止 VM 中的模拟,上传、安装并启动模拟。

如何查找解决方案所使用的 IoT 中心的连接字符串?

如果已使用存储库中的 build.ps1 脚本部署解决方案,此连接字符串是 <name of your deployment>.config.user 文件中 IotHubOwnerConnectionString 的值

还可使用 Azure 门户查找此连接字符串。 在部署资源组中的 IoT 中心找到连接字符串设置。

连接的工厂模拟使用哪些 IoT 中心设备?

模拟自己注册以下设备:

  • proxy.beijing.corp.contoso
  • proxy.capetown.corp.contoso
  • proxy.mumbai.corp.contoso
  • proxy.munich0.corp.contoso
  • proxy.rio.corp.contoso
  • proxy.seattle.corp.contoso
  • publisher.beijing.corp.contoso
  • publisher.capetown.corp.contoso
  • publisher.mumbai.corp.contoso
  • publisher.munich0.corp.contoso
  • publisher.rio.corp.contoso
  • publisher.seattle.corp.contoso

使用 DeviceExplorer适用于 Azure CLI 的 IoT 扩展工具,可以查看解决方案当前所用的 IoT 中心中注册了哪些设备。 若要使用设备资源管理器,则部署中需要 IoT 中心的连接字符串。 若要使用适用于 Azure CLI 的 IoT 扩展,则需要 IoT 中心的名称。

如何从模拟组件获取日志数据?

模拟中的所有组件会将信息记录到日志文件。 可在 VM 中的文件夹 home/docker/Logs 中找到这些文件。 若要检索日志,可使用存储库中的 PowerShell 脚本 Simulation/Factory/Get-SimulationLogs.ps1

此脚本需要登录到 VM。 可能需要提供登录凭据。 有关查找凭据的信息,请参阅如何登录到模拟 VM?

如果 VM 尚无公共 IP 地址或将其删除,该脚本会添加/删除该地址。 该脚本将所有日志文件放入存档,并将存档下载至开发工作站。

也可通过 SSH 登录到 VM 并在运行时检查日志文件。

如何检查模拟是否正向云发送数据?

通过 Azure IoT 资源管理器Azure IoT CLI 扩展 monitor-events 命令可检查从特定设备发送到 IoT 中心的数据。 若要使用这些工具,需要知道部署中的 IoT 中心连接字符串。 请参阅如何查找解决方案所使用的 IoT 中心的连接字符串?

检查由以下某个发布者设备发送的数据:

  • publisher.beijing.corp.contoso
  • publisher.capetown.corp.contoso
  • publisher.mumbai.corp.contoso
  • publisher.munich0.corp.contoso
  • publisher.rio.corp.contoso
  • publisher.seattle.corp.contoso

如未看见发送至 IoT 中心的数据,则该模拟存在问题。 首先应分析模拟组件的日志文件。 请参阅 如何从模拟组件获取日志数据? 接下来,尝试停止并启动模拟,如果尚未发送任何数据,请完全更新模拟。 请参阅如何更新 VM 中的模拟?

如何在连接的工厂解决方案中启用互动地图?

若要在连接的工厂解决方案中启用互动地图,必须具有 Azure Maps 帐户。

www.azureiotsolutions.com 部署时,部署过程会将 Azure Maps 帐户添加到包含解决方案加速器服务的资源组。

在连接的工厂 GitHub 存储库中使用 build.ps1 脚本进行部署时,请将生成窗口中的环境变量 $env:MapApiQueryKey 设置为 Azure Maps 帐户的密钥。 互动地图随后会自动启用。

此外,还可以在部署后向解决方案加速器添加 Azure Maps 帐户密钥。 导航到 Azure 门户并访问连接的工厂部署中的应用服务资源。 导航到“应用程序设置”,在此处可以找到“应用程序设置”部分。 将 MapApiQueryKey 设置为 Azure Maps 帐户的密钥。 保存设置,然后导航到“概述”并重新启动应用服务。

如何创建 Azure Maps 帐户?

请参阅如何管理 Azure Maps 帐户和密钥

如何获取 Azure Maps 帐户密钥

请参阅如何管理 Azure Maps 帐户和密钥

在本地进行调试时如何启用互动地图?

在本地进行调试时,若要启用互动地图,请将你的部署的根目录中的文件 local.user.config<yourdeploymentname>.user.config 中的设置 MapApiQueryKey 的值设置为之前复制的查询密钥值。

如何在仪表板的主页上使用一个不同的图像?

若要更改在仪表板的主页上显示的静态图像,请替换图像 WebApp\Content\img\world.jpg。 然后,重新生成并重新部署 WebApp。

如何将非 OPC UA 设备与连接的工厂一起使用?

若要将遥测数据从非 OPC UA 设备发送到连接的工厂,请执行以下操作:

  1. ContosoTopologyDescription.json 文件中在连接的工厂拓扑中配置一个新工作站

  2. 以连接的工厂兼容的 JSON 格式引入遥测数据:

    [
      {
        "ApplicationUri": "<the_value_of_OpcUri_of_your_station",
        "DisplayName": "<name_of_the_datapoint>",
        "NodeId": "value_of_NodeId_of_your_datapoint_in_the_station",
        "Value": {
          "Value": <datapoint_value>,
          "SourceTimestamp": "<timestamp>"
        }
      }
    ]
    
  3. <timestamp> 的格式为:2017-12-08T19:24:51.886753Z

  4. 重新启动连接的工厂应用服务。

后续步骤

还可以浏览 IoT 解决方案加速器的一些其他特性和功能: