FLProg для конечных автоматов, учебная задача

В этом форуме можно обсудить интерфейс программы, работу встроенных блоков, взаимодейсткие с Ардуино IDE и т.д.
Аватара пользователя
Олег
Полковник
Сообщения: 1532
Зарегистрирован: 13.10.2015{, 16:47}
Репутация: 62
Контактная информация:

FLProg для конечных автоматов, учебная задача

#61

Сообщение Олег » 06.01.2018{, 18:39}

eugeneb писал(а):
06.01.2018{, 18:05}
Для меня пока лучший способ не очевиден
Тут как подходить. С точки зрения заказчика все способы равнозначны, так-как прошитый любым решением контроллер удовлетворяет ТЗ. Для заказчика лучшим будет более дешевый.
Если подходить сточки зрения экономии места, то это важно только в больших проектах когда не хватает ресурсов контроллера, И в этом случае мой вариант может быть будет выигрышнее (а может и нет), потому что обычно не хватает памяти переменных, хотя это и от используемых блоков зависит.
И вообще в программировании нет лучшего решения, всегда можно сделать немного по другому и чуть улучшить и это может растянуться на годы.

Аватара пользователя
brig62
Лейтенант
Сообщения: 461
Зарегистрирован: 13.05.2016{, 16:37}
Репутация: 12
Откуда: Казань
Имя: Игорь

FLProg для конечных автоматов, учебная задача

#62

Сообщение brig62 » 06.01.2018{, 18:39}

eugeneb, Тогда непонятна фраза
eugeneb писал(а):
06.01.2018{, 16:07}
Подождём денёк-другой.
Как будто что то потом произойдет значительное. Или
eugeneb писал(а):
06.01.2018{, 18:05}
хочется сравнить предложенные варианты.
Это оно и есть? Тогда по каким критериям судить? Для каждого лучший тот вариант, которые ему удобнее.
Вот Sancho, горд тем, что его код
Sancho писал(а):
05.01.2018{, 10:42}
(3%) памяти устройства.
Спорить трудно. В больших проектах это важно. Но мне лично проще Мегу поставить и не думать об этом. Да и проетов больших у меня не ожидается.

Аватара пользователя
Олег
Полковник
Сообщения: 1532
Зарегистрирован: 13.10.2015{, 16:47}
Репутация: 62
Контактная информация:

FLProg для конечных автоматов, учебная задача

#63

Сообщение Олег » 06.01.2018{, 18:54}

Не везде Мега физически влезет туда куда встанет Уно, Про мини или Нано. Так что иногда приходится поджиматься и на это уходит значительное котичество времени. Один раз вообще проект по новой пришлось переписывать.

Аватара пользователя
eugeneb
Лейтенант
Сообщения: 481
Зарегистрирован: 15.08.2016{, 11:20}
Репутация: 19
Откуда: Нижний Новгород
Имя: Евгений

FLProg для конечных автоматов, учебная задача

#64

Сообщение eugeneb » 06.01.2018{, 20:05}

brig62 писал(а):
06.01.2018{, 18:39}
eugeneb писал(а): ↑Сегодня{, 18:05}
хочется сравнить предложенные варианты.
Это оно и есть? Тогда по каким критериям судить? Для каждого лучший тот вариант, которые ему удобнее.
А, я понял. Хочется как-бы логически завершить этап (условный, конечно) сбора вариантов, а потом перейти к этапу тестирования или сравнения. У меня нет готового плана. Я не программист и тем более не тестировщик. Сообща что-нибудь придумаем.

Например, я хотел бы дать пару усложнений алгоритма и посмотреть насколько легко их можно внедрить в предложенные варианты.
Уже предлагается сравнивать требуемые ресурсы. Можно смотреть на удбство и наглядность программы, что даёт надёжность и скорость программирования или модификации.

Если удастся выработать хороший подход к автоматам, то и SFC не нужен будет.
Вобщем, мы сами себе хозяева...

Да и просто, мне нравится наш неспешный разговор специалистов.

Axelforce
Рядовой
Сообщения: 20
Зарегистрирован: 26.08.2016{, 17:45}
Репутация: 2

FLProg для конечных автоматов, учебная задача

#65

Сообщение Axelforce » 06.01.2018{, 20:30}

Олег, обратите внимание на сие чудо китайских технологий, место экономит.

Аватара пользователя
Олег
Полковник
Сообщения: 1532
Зарегистрирован: 13.10.2015{, 16:47}
Репутация: 62
Контактная информация:

FLProg для конечных автоматов, учебная задача

#66

Сообщение Олег » 06.01.2018{, 20:43}

Тогда такая Мега стоила раз в пять дороже Про Мини, как сайчас не знаю.

ksandr13
Рядовой
Сообщения: 14
Зарегистрирован: 18.08.2016{, 10:00}
Репутация: 0

Конечный автомат на командоаппарате

#67

Сообщение ksandr13 » 07.01.2018{, 19:15}

Хочу поделиться своими мыслями.
Когда то давным давно, когда я не знал что в природе существуют микроконтроллеры, мы с друзьями делали достаточно сложные штуки на так называемых микропрограмных автоматах на ПЗУ. Выглядит он примерно вот так:
image031.gif
image031.gif (10.09 КБ) 924 просмотра
Суть работы в том, что часть битов шины данных используется для хранения адреса перехода к следующему шагу. Свободная часть шины данных используется для нужд устройства.

В командоаппарате легко реализовать тот же принцип:
pic1.png
pic1.png (5.58 КБ) 924 просмотра
pic.gif
В данном случае программа выполняется последовательно, но возможно сделать практически любой алгоритм (переходы и циклы).

Аватара пользователя
Sancho
Полковник
Сообщения: 3999
Зарегистрирован: 25.12.2015{, 17:32}
Репутация: 571
Откуда: Ярославль.
Имя: Александр
Контактная информация:

FLProg для конечных автоматов, учебная задача

#68

Сообщение Sancho » 09.01.2018{, 09:41}

Олег писал(а):
06.01.2018{, 18:54}
Не везде Мега физически влезет туда куда встанет Уно, Про мини или Нано. Так что иногда приходится поджиматься и на это уходит значительное котичество времени. Один раз вообще проект по новой пришлось переписывать.
Полностью согласен. На одном дачном посёлке видел систему управления насосами водоснабжения в которой была установлена ATtiny в корпусе от промежуточного реле Finder 55.34, вставлена в цоколь (релейную базу) и благополучно всем управляла.
А памяти в ATtiny не особо, поэтому изначально просчитываешь минимальные размеры кода.
Кстати, обновлённый вариант :) Даже триггер был лишним ( праздники кончились, мозг ожил :haha: )
Скетч использует 1170 байт (3%) памяти устройства. Всего доступно 32256 байт.
Глобальные переменные используют 10 байт (0%) динамической памяти, оставляя 2038 байт для локальных переменных.
Можно ещё немного переделать, но FLProg не хочет при компиляции выполнять по одному условию if сразу два действия. Править ручками. Результатом будет меньшее время цикла программы.
eugeneb писал(а):
06.01.2018{, 16:07}
Sancho, вы не дописали свой вариант. Скажите, что вы имели ввиду под пятым шагом?
Пункты из условия
ПунктыПоказать
Алгоритм работы автомата следующий:
1. При включении, оба механизма отвести в начало.
2. При нажатии кнопки ПУСК, механизм М1 двинуть вперёд.
3. Когда М1 дойдёт до конца, механизм М2 двинуть вперёд.
4. Когда М2 дойдёт до конца, вернуть М2 в начало.
5. Когда механизм М2 вернётся в начало, механизм М1 вернуть в начало.
6. Ждать следующего нажатия кнопки ПУСК (перейти к пункту 2).
7. При появлении сигнала АВАРИЯ на любом этапе - немедленно отвести механизмы в начало и больше не двигаться до изчезновения аварийного сигнала.
Вложения
FiniteStateMachine_v2.flp
(141.82 КБ) 85 скачиваний
Если не получится на контроллере - сделаю на тразисторах и 155/176...Научился, немного.
Поможем проекту вместе!

Ответить

Вернуться в «Обсуждение программы FLProg (Не багтрекер, и не хотелки. Делимся опытом!!)»