Отладка 4diac приложений
Уровни логирования FORTE
# Запуск с подробным логированием
forte --loglevel DEBUG
# Уровни: FATAL, ERROR, WARNING, INFO, DEBUG, TRACE
Лог FORTE
[INFO] Starting 4diac FORTE Runtime
[INFO] Waiting for connections on port 61499
[DEBUG] FB E_CYCLE: Event EO triggered
[DEBUG] FB MY_FB: Algorithm MAIN executed
[ERROR] Connection failed: timeout
Типичные проблемы и решения
FB не получает события
Причина: Неправильное соединение или FB не запущен.
Решение:
- Проверьте Watch Mode — есть ли события на выходе источника?
- Убедитесь, что ресурс запущен (зелёный статус)
- Проверьте маппинг FB на правильный ресурс
Данные не обновляются
Причина: Событие приходит, но данные не сопровождают его.
Решение: В IEC 61499 данные передаются т олько вместе с событием. Убедитесь, что соединения по данным привязаны к нужным событиям через With ассоциации.
FORTE падает при старте ресурса
Причина: Ошибка в алгоритме или неправильный тип данных.
Решение:
# Смотрим детальный лог
forte --loglevel DEBUG 2>&1 | grep ERROR
Проблема производительности
# Профилирование на Linux
perf record -g ./forte
perf report
Мониторинг событий и данных (Event/Data Flow)
Трассировка событий
В Debug Perspective можно отслеживать поток событий через FB-сеть:
- Правый клик на FB → Watch All — показывает все входы/выходы
- Счётчики событий показывают количество срабатываний каждого события
- Значения данных обновляются в реальном времени
Анализ event-data ассоциаций
Частая ошибка: данные не обновляются, хотя событие приходит.
Симптом: OUT всегда = 0, хотя EO срабатывает
Причина: Нет WITH-ассоциации между EO и OUT
Проверка:
1. Откройте определение типа FB (Ctrl+клик на имени типа)
2. Проверьте вкладку Interface → WITH-connections
3. Убедитесь, что выходное событие связано с выходными данными
Принудительное задание значений
В Debug Perspective:
- Force Value — задать фиксированное значение входу данных
- Trigger Event — вручную сгенерировать входное событие
Это позволяет тестировать отдельные FB без полной развёрнутой системы.
Удалённая отладка через IDE
Пошаговая настройка
- Убедитесь, что FORTE запущен на целевом устройстве (Ларус-100 или ПК)
- В 4diac IDE: Run → Debug Configurations → 4diac Remote Debug
- Создайте новую конфигурацию:
- Host: IP-адрес устройства
- Port: 61499 (порт управления FORTE)
- Нажмите Debug
- Переключитесь в Debug Perspective
- Правый клик на системе → Monitor System
Точки останова (Breakpoints)
Точки останова можно устанавливать на:
- Переходах ECC — выполнение приостановится перед переходом
- Алгоритмах — приостановка перед выполнением алгоритма
Точки останова останавливают весь ресурс, а не отдельный FB. Все FB в том же ресурсе прекратят выполнение.
Watches View
Окно Watches View показывает:
- Текущие значения отслеживаемых переменных
- Счётчики событий
- Статус соединения с устройством
Для добавления: правый клик на переменной → Watch, или на FB → Watch All.
Удалённая отладка замедляет выполнение — не использовать в продакшне.
Replay Debugger
4diac IDE поддерживает воспроизведение записанных сессий отладки.

- Запись: включите запись событий в Debug Perspective (кнопка Record)
- Выполните сценарий, который нужно проанали зировать
- Остановка: нажмите Stop Recording
- Воспроизведение: откройте записанный файл, используйте кнопки Play/Pause/Step
- Анализируйте поток событий и значения данных пошагово

Replay Debugger полезен для:
- Анализа редко возникающих ошибок
- Демонстрации работы системы
- Обучения и документирования
Примеры анализа проблем
Пример 1: E_CYCLE не генерирует события
Лог FORTE:
[INFO] Starting 4diac FORTE Runtime
[INFO] Waiting for connections on port 61499
[DEBUG] Resource EMB_RES: COLD event triggered
[DEBUG] FB E_CYCLE: START received
...
(нет строк о EO)
Диагностика:
- Проверьте, задано ли значение
DT(по умолчанию = 0, события не генерируются) - Убедитесь, что
STARTсоединён сCOLDилиWARMресурса - Попробуйте DT = T#1s для начала