Member 12923231 Ответов: 1

Расширенная задача конечного автомата


Привет, у меня есть проект встроенной системы c++ с основным EFSM (центральные насосы PCOXS) с другими объектами для управления: n производственных насосов (0, max 8), n распределительных насосов (0, max 8).
Тема - энология.
Каждый подобъект (производственный насос или распределительный насос) также имеет EFSM.

Что я уже пробовал:

Я видел лишь 1 машину ЕМФС, используя переключатель и государств перечисления. Одна функция графа состояний. Существует также класс timer для выполнения действий, когда таймер выключен.
Как я могу решить эту проблему с несколькими EFSM ? С помощью нитей ?

Я думаю о композиции c++, но не могу представить себе проблему с более чем 1 EFSM.

Заранее спасибо
Франческо (Италия)

nv3

Можете ли вы опубликовать код вашего EFSM или, по крайней мере, его основные части? Многое зависит от того, как организован ваш EFSM. В зависимости от этого вы можете просто чередовать работу нескольких EFSM, вызывая их функции execute в цикле, или вам придется организовать их в отдельные потоки волокон.

1 Ответов

Рейтинг:
2

KarstenK

Сначала вы получаете несколько экземпляров EFSM. Вы можете решить эту проблему с помощью структур или объектов класса в массиве.

Я думаю, что потоки были бы самым ясным способом, но вам может понадобиться некоторая синхронизация. Другой способ-написать Квек с своевременными отсортированными действиями, чтобы вы знали, какое действие над каким объектом можно выполнить.

Большой проблемой будут временные допуски или различия в вызываемых действиях и их поведении в реальном времени.