Название: Инициализация конечного автомата после сбоя Отправлено: lit-uriy от Октябрь 29, 2015, 07:13 оговорка: использую Qt и её QStateMachine, но интересует и абстрактная система.
Дано: - Имеется оборудование с насосами, - имеется средство двусторонней связи оборудования с компьютером и - ПО управляющее этим оборудованием. Программно реализован конечный автомат управления насосами. Бывают ситуации, когда нужно инициализировать конечный автомат в зависимости от фактического текущего состояния оборудования, например, после аварийного завершения ПО. Т.е. ПО стартует и должно определить в каком состоянии должен находится автомат, на основе сигналов с оборудования. Для простоты предположим, что комбинация сигналов однозначно определяет текущее состояние автомата. В практике программирования автоматов обычно из одного состояния в другое можно перейти только по событию, в частности в QStateMachine реализовано так же. Проблема: Т.к. физическая система находится в неком стабильном состоянии, то и событий в ней не происходит. Как заставить автомат перейти в некое состояние минуя, возможно, многие другие? Есть ли у кого-нибудь опыт/идеи как это сделать? Сообщение отредактировал Litkevich Yuriy - 27.10.2015, 14:47 Название: Re: Инициализация конечного автомата после сбоя Отправлено: Fat-Zer от Октябрь 31, 2015, 19:15 Первое что приходит в голову — добавить сурогатное начальное состояние, и переход из него по внутреннему событию в любое нужное состояние по анализу информации на датчиках.
Или изначально определить и передать в QStateMachine нужное начальное состояние. Название: Re: Инициализация конечного автомата после сбоя Отправлено: lit-uriy от Ноябрь 01, 2015, 19:18 >>Или изначально определить и передать в QStateMachine нужное начальное состояние.
Такой вариант мне в голову пока не приходил. Вот что значит зациклился. Спасибо, поработаю над этим вариантом. |