Подключение устройств 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 подключаются к Центру Интернета вещей через шлюз 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, см. в проекте Развертывание Azure IoT Edge на имитированном устройстве в ОС Windows (предварительная версия) на 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

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

Если вы хотите протестировать функции шлюза Modbus, корпорация Майкрософт предлагает использовать пример модуля.If you want to test the Modbus gateway functionality, Microsoft has a sample module that you can use. Для этого перейдите к разделу Запуск решения и введите в качестве URI образа следующее:To use the sample module, go to the Run the solution section and enter the following as 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. Если вы создаете собственный образ контейнера, см. инструкции по публикации образов контейнеров в реестр и развертывании настраиваемого модуля на устройстве в статье о разработке и развертывании модуля IoT Edge на C#.If you create your own container image, refer to Develop and deploy a C# IoT Edge module for instructions on publishing container images to a registry, and deploying a custom module to your device.

Запуск решенияRun the solution

  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 для вывода данных, а upstream — специальное место назначения, которое указывает Центру Edge отправлять сообщения в Центр Интернета вещей.In this route, ''modbusOutput'' is the endpoint that Modbus module use to output data, and ''upstream'' is a special destination that tells 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:

docker logs -f modbus

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

Дополнительная информацияNext steps