Перейти к основному содержимому

Шаг 2 — Распределённые приложения

Этот туториал продолжает приложение Blinking из Шага 1 (Начало работы). Мы добавим счётчик — подсчёт количества миганий — и разместим его на втором устройстве с FORTE. Это ключевая особенность IEC 61499: распределение логики между несколькими устройствами.

Архитектура распределённого приложения

Расширение приложения

Чтобы считать мигания, нужно добавить 2 новых FB в редактор приложения BlinkTestApp.

Перетащите из Palette (папка events):

  • E_PERMIT
  • E_CTU

Создайте соединения между FB, как показано на рисунке.

примечание

Соединения событий (event) и данных (data) нельзя смешивать.

Добавление FB счётчика

Добавление второго устройства

Перейдите в редактор System Configuration (BlinkTest) и добавьте второе устройство из Palette. Счётчик будет работать на нём.

  1. Перетащите из Palette устройство FORTE_PC рядом с существующим.
  2. Переименуйте его в Counter.
  3. Задайте адрес localhost:61500 (устройства не могут иметь одинаковый адрес).
  4. Переименуйте ресурс в Counter_RES.

Добавление второго устройства

Вернитесь в редактор приложения BlinkTestApp и замапируйте два новых FB на ресурс Counter_RES. После маппинга появятся пунктирные соединения между устройствами.

Маппинг FB на второе устройство

Настройка коммуникации между устройствами

Откройте редактор ресурса Testee.Blinky_RES или Counter.Counter_RES. Вы увидите неполные FB у E_SR или E_PERMIT — они символизируют разрывы соединений между устройствами. Нам нужно добавить коммуникационные FB.

Неполные FB — разрыв соединения между устройствами

Настройка части Blinky

Перейдите в редактор ресурса Testee.Blinky_RES.

Перетащите из Palette (папка net) FB PUBLISH_1 и настройте соединения. FB PUBLISH нужно инициализировать — лучше подключить его событие INIT напрямую к START.

Полная схема Blinky_RES

Установите:

  • QI = 1
  • ID = "239.0.0.1:61000" (UDP multicast адрес для передачи данных)

Настройка части Counter

Перейдите в редактор ресурса Counter.Counter_RES.

Перетащите из Palette (папка net) FB SUBSCRIBE_1 и настройте соединения. FB SUBSCRIBE тоже нужно инициализировать.

Полная схема Counter_RES

Установите:

  • QI = 1
  • ID = "239.0.0.1:61000" (тот же адрес, что у PUBLISH)
Как работают коммуникационные FB

PUBLISH_X отправляет сообщения по сети, SUBSCRIBE_X их принимает. Число X — количество передаваемых элементов данных. В нашем случае передаётся 1 значение, поэтому используем PUBLISH_1 / SUBSCRIBE_1.

Значение ID задаёт UDP multicast адрес (239.0.0.1) и порт (61000). Это не связано с адресами localhost:61499 / localhost:61500, которые используются для управления устройствами через TCP.

Запуск обоих устройств

Перейдите в Deployment Perspective.

  1. Установите Port 61499 и нажмите Launch Local 4diac FORTE.
  2. Установите Port 61500 и нажмите Launch Local 4diac FORTE ещё раз.
  3. Убедитесь, что в консоли отображается путь к FORTE и кнопка Terminate активна.
  4. Выберите оба устройства Counter и Testee в списке развёртывания.
  5. Нажмите кнопку Deploy.
  6. Убедитесь, что в Deployment Console нет красных предупреждений.

Развёртывание приложения

Проверка работы

Откройте Monitor Mode и наблюдайте за значениями. Счётчик должен увеличиваться каждый раз, когда мигает индикатор.

Мониторинг распределённого приложения

Что дальше?