Здравствуйте, гость ( Вход | Регистрация )
|
Litkevich Yuriy |
27.10.2015, 12:47
Сообщение
#1
|
![]() разработчик РЭА ![]() ![]() ![]() ![]() ![]() ![]() ![]() Группа: Сомодератор Сообщений: 9669 Регистрация: 9.1.2008 Из: Тюмень Пользователь №: 64 Спасибо сказали: 807 раз(а) Репутация: 94
|
оговорка: использую Qt и её QStateMachine, но интересует и абстрактная система.
Дано: - Имеется оборудование с насосами, - имеется средство двусторонней связи оборудования с компьютером и - ПО управляющее этим оборудованием. Программно реализован конечный автомат управления насосами. Бывают ситуации, когда нужно инициализировать конечный автомат в зависимости от фактического текущего состояния оборудования, например, после аварийного завершения ПО. Т.е. ПО стартует и должно определить в каком состоянии должен находится автомат, на основе сигналов с оборудования. Для простоты предположим, что комбинация сигналов однозначно определяет текущее состояние автомата. В практике программирования автоматов обычно из одного состояния в другое можно перейти только по событию, в частности в QStateMachine реализовано так же. Проблема: Т.к. физическая система находится в неком стабильном состоянии, то и событий в ней не происходит. Как заставить автомат перейти в некое состояние минуя, возможно, многие другие? Есть ли у кого-нибудь опыт/идеи как это сделать? Сообщение отредактировал Litkevich Yuriy - 27.10.2015, 12:47 |
|
|
|
![]() |
|
Iron Bug |
31.10.2015, 13:18
Сообщение
#2
|
![]() Профессионал ![]() ![]() ![]() ![]() ![]() Группа: Модератор Сообщений: 1611 Регистрация: 6.2.2009 Из: Yekaterinburg Пользователь №: 533 Спасибо сказали: 219 раз(а) Репутация: 12
|
я работала конечными автоматами в промышленной автоматизации. обычно система сначала приводится в некое начальное состояние, а потом она переходит из одного состояния в другое, а программа их отслеживает и управляет автоматикой. мы для таких вещей сами писали код на плюсах, он несложный.
очевидно, в случае с QStateMachine это проблемы реализации. видимо, код писали теоретики, которые никогда не работали с железом. в нормальной реализации автомат всегда можно привести в любое его состояние, потому что в реальной жизни в системах случаются сбои и периодически приходится запускать управление из произвольного состояния оборудования. может, тебе лучше поискать другую реализацию или вообще самому написать то, что тебе нужно. |
|
|
|
Litkevich Yuriy Инициализация конечного автомата после сбоя 27.10.2015, 12:47
Iron Bug Для таких систем процедура инициализации всегда сн... 28.10.2015, 16:24
Litkevich Yuriy нельзя работу физической системы прерывать, там пр... 28.10.2015, 19:53
Iron Bug ну, тогда гипотетически тебе нужен автомат с N-фак... 29.10.2015, 10:01
Litkevich Yuriy Дело не в том какой автомат мне нужен, а в:
Цитата... 29.10.2015, 13:18
ahalaj Цитата(Iron Bug @ 31.10.2015, 13:18) ...
... 1.11.2015, 12:35
Iron Bug по-моему, это как раз примеры сферического програм... 2.11.2015, 13:25
ahalaj Цитата(Iron Bug @ 2.11.2015, 13:25) по-мо... 3.11.2015, 1:55
Iron Bug я без названия проектов сразу скажу, что это точно... 3.11.2015, 10:51
ahalaj Цитата(Iron Bug @ 3.11.2015, 10:51) я без... 3.11.2015, 13:50
lanz http://doc.qt.io/qt-5/qstate.html#setInitialState
... 3.11.2015, 12:30![]() ![]() ![]() |
|
Текстовая версия | Сейчас: 16.12.2025, 9:06 |