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

Шаг 4 — Создание собственных типов FB

Создание собственных типов функциональных блоков позволяет инкапсулировать логику и повторно использовать её в проектах. В этом туториале мы создадим четыре типа FB, каждый из которых реализует переключение булевого значения — поведение, аналогичное миганию.

Для создания нового типа FB: File → New → New Type


Basic FB (Базовый функциональный блок)

Basic FB — наиболее распространённый тип. Поведение определяется через ECC (Execution Control Chart) — граф состояний.

Создание через мастер

В мастере создания:

  • Папка: BlinkTest
  • Имя: BasicTest
  • Тип: TemplateBasic

Мастер создания Basic FB

После создания открывается FBT Editor (Function Block Type Editor).

Общий вид после создания Basic FB

Настройка интерфейса

Нам нужен FB с:

  • 1 входным событием (триггер изменения)
  • 1 выходным событием (сигнал об изменении)
  • 1 булевым выходом данных (текущее состояние)

Редактируем интерфейс шаблона:

  1. Удалите событие INIT, а также QI и INITO.
  2. Переименуйте выход QO в STATE.
  3. Убедитесь, что тип STATEBOOL.
  4. Проверьте связи WITH между событиями и данными — CNF должен быть связан с STATE.

Интерфейс Basic FB

Настройка ECC

Перейдите на вкладку ECC в нижней части редактора.

ECC — это граф состояний:

  • Фиолетовые блоки — состояния (начальное выделено двойной рамкой)
  • Жёлтые блоки — алгоритмы, выполняемые при входе в состояние
  • Зелёные блоки — события, генерируемые после алгоритма
  • Стрелки — переходы по входящим событиям

Создание ECC:

  1. Удалите всё, кроме состояния START.
  2. Добавьте состояние On, затем состояние Off.
  3. В разделе Properties → Algorithms удалите существующие алгоритмы.
  4. Добавьте алгоритм turnOn (ST):
    STATE := TRUE;
  5. Добавьте алгоритм turnOff (ST):
    STATE := FALSE;
  6. Назначьте алгоритмы действиям состояний и укажите выходное событие CNF.

Алгоритм в действии

Состояния и действ�ия

  1. Добавьте переходы:
    • START → On с условием REQ
    • On → Off с условием REQ
    • Off → On с условием REQ

Готовый ECC

Логика работы: в состоянии START при получении REQ FB переходит в On, выполняет turnOn, отправляет CNF. При следующем REQ — переходит в Off и так далее.


Simple FB (Простой функциональный блок)

Simple FB имеет один алгоритм и не содержит ECC.

В мастере:

  • Имя: SimpleTest
  • Тип: Simple

Мастер создания Simple FB

Настройте интерфейс аналогично Basic FB:

Интерфейс Simple FB

Перейдите на вкладку Algorithm и задайте поведение:

Алгоритм Simple FB


Composite FB (Составной функциональный блок)

Composite FB содержит сеть из других FB внутри себя.

В мастере:

  • Имя: CompositeTest
  • Тип: Composite

Мастер создания Composite FB

Настройте интерфейс аналогично Basic FB:

Интерфейс Composite FB

Перейдите на вкладку Composite Network и создайте внутреннюю сеть из E_SWITCH и E_SR — аналогично оригинальному Blink-приложению. По краям редактора отображаются события и данные интерфейса — подключите их к внутренним FB:

Сеть Composite FB


Service Interface FB (Сервисный функциональный блок)

Service Interface FB используется для интеграции с внешним кодом на C++. Поведение реализуется напосредственно в сгенерированном коде.

В мастере:

  • Имя: ServiceInterfaceTest
  • Тип: Service Interface

Мастер создания Service Interface FB

Настройте интерфейс:

Интерфейс Service Interface FB

После экспорта в файле ServiceInterfaceTest.cpp найдите функцию executeEvent и реализуйте логику переключения:

void FORTE_ServiceInterfaceTest::executeEvent(TEventID paEIID,
CEventChainExecutionThread *const paECET) {
switch(paEIID) {
case scm_nEventREQID:
st_STATE() = !st_STATE(); // Переключить значение
sendOutputEvent(scm_nEventCNFID, paECET);
break;
}
}

Экспорт типов FB

4diac IDE генерирует C++-код, который включается в процесс сборки 4diac-Forte.

Способы экспорта:

  • File → Export → 4diac IDE → 4diac IDE Type Export
  • Правый клик на FB → Export → 4diac IDE → 4diac Type Export

Выбор типа экспорта

В мастере экспорта:

  1. Укажите папку назначения (например, ext_modules/EXAMPLE_TEST).
  2. Выберите экспортёр FORTE 1.x NG.
  3. Выберите нужные FB (не выбирайте все подряд!).
  4. Опционально: включите Export CMakeLists.txt для автоматической сборки.

Мастер экспорта типов

Если в папке назначения уже есть старая версия файла, появится диалог слияния:

Окно слияния при экспорте

примечание

Сгенерированный код подключается к исходникам 4diac-Forte при сборке runtime. Для Ларус этот шаг выполняется командой разработки Лиман при обновлении прошивки.


Тестирование FB

После создания типа его можно использовать в приложениях так же, как стандартные FB из библиотеки. Перетащите его из Type Library в редактор приложения и подключите к схеме.

Что дальше?