Разработка пользовательских функциональных блоков
Eclipse 4diac позволяет создавать собственные типы функциональных блоков для специфических задач.
Типы создаваемых FB
| Тип | Когда использовать |
|---|---|
| Basic FB | Простая логика с конечным автоматом (ECC) |
| Composite FB | Объединение существующих FB в один блок |
| Service Interface FB | Взаимодействие с I/O, сетью, ОС |
Создание Basic FB в 4diac IDE
Шаг 1: Новый тип FB
- В палитре типов: правый клик →
New FB Type - Выберите
Basic FB - Введите имя, например
MY_PID_CONTROLLER
Шаг 2: Определение интерфейса
В редакторе FB определите:
События:
| Имя | Тип | Описание |
|---|---|---|
INIT | EI | Инициализация |
REQ | EI | Вычислить выход |
INITO | EO | Инициализация завершена |
CNF | EO | Вычисление завершено |
Данные:
| Имя | Тип | Описание |
|---|---|---|
SP | REAL | Уставка (setpoint) |
PV | REAL | Текущее значение (process variable) |
KP | REAL | Коэффициент пропорциональности |
OUT | REAL | Выходное значение |
Шаг 3: ECC (конечный автомат)
[START] ──INIT──► [INITIALIZED] ──REQ──► [COMPUTE]
▲ │
└───────────────────────┘
(возврат в INITIALIZED)
Действия в состоянии COMPUTE:
- Алгоритм:
COMPUTE_PID - Событие:
CNF
Шаг 4: Алгоритм на Structured Text
ALGORITHM COMPUTE_PID
VAR
error: REAL;
END_VAR
error := SP - PV;
OUT := KP * error;
// Для полного ПИД добавьте интегральную и дифференциальную составляющие
END_ALGORITHM
Шаг 5: Сохранение и использование
Сохраните тип FB (Ctrl+S). Теперь его можно перетащить в любое приложение из Type Library.
Service Interface FB (для I/O и сети)
SIFB определяется в XML (.fbt файл) и реализуется на C++ в FORTE:
<!-- MY_SENSOR.fbt -->
<FBType Name="MY_SENSOR">
<InterfaceList>
<EventInputs>
<Event Name="INIT" />
<Event Name="REQ" With="OUT" />
</EventInputs>
<EventOutputs>
<Event Name="INITO" />
<Event Name="IND" With="OUT" />
</EventOutputs>
<OutputVars>
<VarDeclaration Name="OUT" Type="REAL" />
</OutputVars>
</InterfaceList>
</FBType>
Реализация в FORTE на C++ находится в:
forte/src/modules/my_module/MY_SENSOR.cpp
Тестирование FB
Используйте встроенный тестовый фреймворк 4diac:
- Создайте тестовое приложение с вашим FB
- Запустите на FORTE
- Используйте Watch Mode для инспекции значений
- Принудительно устанавливайте значения входов через Force Mode