Подключение устройств Modbus TCP через шлюз устройств IoT EdgeConnect Modbus TCP devices through an IoT Edge device gateway

Чтобы подключить устройства IoT, которые используют протокол Modbus TCP или Modbus RTU, к центру Azure IoT, используйте устройство IoT Edge в качестве шлюза.If you want to connect IoT devices that use Modbus TCP or RTU protocols to an Azure IoT hub, use an IoT Edge device as a gateway. Устройство шлюза считывает данные с устройства Modbus, а затем передает эти данные в облако с помощью поддерживаемого протокола.The gateway device reads data from your Modbus devices, then communicates that data to the cloud using a supported protocol.

Устройства Modbus подключаются к центру Интернета вещей через шлюз IoT Edge

В этой статье объясняется, как создать собственный образ контейнера для модуля Modbus (или можно использовать предварительно подготовленный пример), а затем развернуть его на устройство IoT Edge, которое будет выполнять роль шлюза.This article covers how to create your own container image for a Modbus module (or you can use a prebuilt sample) and then deploy it to the IoT Edge device that will act as your gateway.

В этой статье предполагается, что вы используете протокол Modbus TCP.This article assumes that you're using Modbus TCP protocol. Дополнительные сведения о том, как настроить модуль для поддержки Modbus RTU, см. в проекте модуля Modbus для Azure IoT Edge в GitHub.For more information about how to configure the module to support Modbus RTU, see the Azure IoT Edge Modbus module project on GitHub.

Технические условияPrerequisites

  • Устройство Azure IoT Edge.An Azure IoT Edge device. Пошаговое руководство по настройке, см. в разделе развертывание Azure IoT Edge на Windows или Linux.For a walkthrough on how to set up one, see Deploy Azure IoT Edge on Windows or Linux.
  • Строка подключения первичного ключа для устройства IoT Edge.The primary key connection string for the IoT Edge device.
  • Физическое устройство или имитация устройства, которые поддерживают Modbus TCP.A physical or simulated Modbus device that supports Modbus TCP.

Подготовка контейнера ModbusPrepare a Modbus container

Если вы хотите протестировать функции шлюза Modbus, корпорация Майкрософт предлагает использовать пример модуля.If you want to test the Modbus gateway functionality, Microsoft has a sample module that you can use. Доступ к модулю Azure Marketplace, Modbus, или с помощью URI, образа mcr.microsoft.com/azureiotedge/modbus:1.0.You can access the module from the Azure Marketplace, Modbus, or with the image URI, mcr.microsoft.com/azureiotedge/modbus:1.0.

Если вы хотите создать собственный модуль и настроить его для своей среды, в проекте GitHub можно найти модуль Modbus для Azure IoT Edge с открытым кодом.If you want to create your own module and customize it for your environment, there is an open-source Azure IoT Edge Modbus module project on GitHub. Следуйте инструкциям в этом проекте, чтобы создать образ контейнера.Follow the guidance in that project to create your own container image. Если вы создаете собственный образ контейнера, см. разработка C# модулей в Visual Studio или разработки модулей в Visual Studio Code.If you create your own container image, refer to Develop C# modules in Visual Studio or Develop modules in Visual Studio Code. Эти статьи содержат инструкции по созданию новых модулей и публикации образов контейнеров в реестр.Those articles provide instructions on creating new modules and publishing container images to a registry.

Попробуйте решениеTry the solution

В этом разделе описывается процедура развертывания модуль Modbus пример корпорации Майкрософт к устройству IoT Edge.This section walks through deploying Microsoft's sample Modbus module to your IoT Edge device.

  1. Найдите нужный Центр Интернета вещей на портале Azure.On the Azure portal, go to your IoT hub.

  2. Щелкните IoT Edge и выберите устройство IoT Edge.Go to IoT Edge and click on your IoT Edge device.

  3. Щелкните Set modules (Настроить модули).Select Set modules.

  4. Добавьте модуль Modbus:Add the Modbus module:

    1. Щелкните Добавить и выберите Модуль IoT Edge.Click Add and select IoT Edge module.

    2. В поле Имя введите modbus.In the Name field, enter "modbus".

    3. В поле Изображение введите URI образа в примере контейнера: mcr.microsoft.com/azureiotedge/modbus:1.0.In the Image field, enter the image URI of the sample container: mcr.microsoft.com/azureiotedge/modbus:1.0.

    4. Установите флажок Включить, чтобы обновить требуемые свойства двойника модуля.Check the Enable box to update the module twin's desired properties.

    5. Скопируйте следующий JSON в текстовое поле.Copy the following JSON into the text box. Замените значение SlaveConnection IPv4-адресом устройства Modbus.Change the value of SlaveConnection to the IPv4 address of your Modbus device.

      {
        "properties.desired":{
          "PublishInterval":"2000",
          "SlaveConfigs":{
            "Slave01":{
              "SlaveConnection":"<IPV4 address>","HwId":"PowerMeter-0a:01:01:01:01:01",
              "Operations":{
                "Op01":{
                  "PollingInterval": "1000",
                  "UnitId":"1",
                  "StartAddress":"400001",
                  "Count":"2",
                  "DisplayName":"Voltage"
                }
              }
            }
          }
        }
      }
      
    6. Щелкните Сохранить.Select Save.

  5. Вернитесь к окну Добавление модулей и нажмите кнопку Далее.Back in the Add Modules step, select Next.

  6. На шаге указания маршрутов скопируйте следующий код JSON в текстовое поле.In the Specify Routes step, copy the following JSON into the text box. Этот маршрут отправляет все сообщения, собранные модулем Modbus, в Центр Интернета вещей.This route sends all messages collected by the Modbus module to IoT Hub. В этом маршруте '' modbusOutput'' является конечной точки, используйте модуль Modbus для вывода данных, которая '' вышестоящего '' специальным пунктом назначения, который говорит центру Edge Интернета вещей для отправки сообщений в центр Интернета вещей.In this route, ''modbusOutput'' is the endpoint that Modbus module use to output data, and ''upstream'' is a special destination that tells IoT Edge hub to send messages to IoT Hub.

    {
     "routes": {
       "modbusToIoTHub":"FROM /messages/modules/modbus/outputs/modbusOutput INTO $upstream"
     }
    }
    
  7. Щелкните Далее.Select Next.

  8. В окне Проверка развертывания выберите Отправить.In the Review Deployment step, select Submit.

  9. Вернитесь на страницу сведений об устройстве и выберите Обновить.Return to the device details page and select Refresh. Вы должны увидеть новый модуль modbus который работает вместе со средой выполнения IoT Edge.You should see the new modbus module running along with the IoT Edge runtime.

Просмотр данныхView data

Просмотр данных, поступающих через модуль modbus:View the data coming through the modbus module:

iotedge logs modbus

Данные телеметрии, которые передает устройство, можно также просматривать, используя расширение "Набор средств Центра Интернета вещей Azure" для Visual Studio Code (ранее называлось расширением "Набор средств для Интернета вещей Azure").You can also view the telemetry the device is sending by using the Azure IoT Hub Toolkit extension for Visual Studio Code (formerly Azure IoT Toolkit extension).

Дальнейшие действияNext steps