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

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

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

#41

Сообщение brig62 » 04.01.2018{, 18:40}

eugeneb, посмотрите с 11 по 22 минуты.

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

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

#42

Сообщение brig62 » 04.01.2018{, 18:43}

eugeneb писал(а):
04.01.2018{, 18:36}
смените оставшиеся FreeLog на /XOR
Вы сами это сделать не в состоянии? Мне проще было таблицу состояний поставить, чем думать у какого блока что надо инвертировать. На суть работы это никак не влияет.

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

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

#43

Сообщение eugeneb » 04.01.2018{, 18:45}

Lisica писал(а):
04.01.2018{, 18:37}
Видеоурок есть на ютубе
Очень полезный ответ! Очень содержательный! Просто исчерпывающий!

Товарищи, не торопитесь с ответом. Задача не тривиальная. Тут подумать надо.

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

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

#44

Сообщение eugeneb » 04.01.2018{, 18:48}

brig62, Спасибо! А понял, я просто сначала не заметил где записаны значения выходов.

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

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

#45

Сообщение eugeneb » 04.01.2018{, 19:01}

brig62 писал(а):
04.01.2018{, 18:43}
Вы сами это сделать не в состоянии? Мне проще было таблицу состояний поставить, чем думать у какого блока что надо инвертировать. На суть работы это никак не влияет.
Вот, сделал это за вас. Разбираюсь дальше.
Вложения
003 Механизмы.flp
(152.74 КБ) 74 скачивания

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

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

#46

Сообщение brig62 » 04.01.2018{, 19:10}

eugeneb писал(а):
04.01.2018{, 19:01}
Вот, сделал это за вас
Не за меня, а для того, кому это нужно. Мне без разницы, какие блоки будут стоять. Лишь бы работало правильно.

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

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

#47

Сообщение Олег » 04.01.2018{, 19:30}

По идее так должно работать на простой логике, может конечно где и ошибся, со временем, как понимаете не очень.
avtomat.JPG
Красным указаны уровни в состоянии готовности перед пуском.

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

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

#48

Сообщение eugeneb » 04.01.2018{, 19:57}

brig62 писал(а):
04.01.2018{, 19:10}
Мне без разницы, какие блоки будут стоять. Лишь бы работало правильно.
Не-ет, дружище. В условиях задачи было - найти красивое решение. В данном случае применение FreeLog - не красивое решение. Оно очень не наглядное.
brig62 писал(а):
04.01.2018{, 19:10}
а для того, кому это нужно.
Я встречал такую позицию среди писателей пользовательских блоков.
И она мне ОЧЕНЬ не нравится. Автор должен стремиться к совершенству своих перлов.

А в вашей программе я разобрался. И это решение мне кажется очень красивым. Собственно ради поиска таких решений я и затевал эту тему.
Я ещё попробую её на макете.
Справдливости ради хочу уточнить: на Шаге1 сигнал Н2 и на Шаге 3 сигнал К1 - это описки?

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

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

#49

Сообщение eugeneb » 04.01.2018{, 19:59}

Олег, вообще не ожидал такого решения!
Я ошибок не вижу. ЗдОрово!

Ну, собственно, триггеры это и есть элементы памяти.
Последний раз редактировалось eugeneb 04.01.2018{, 20:16}, всего редактировалось 1 раз.

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

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

#50

Сообщение eugeneb » 04.01.2018{, 20:02}

Подождём несколько дней, может ещё кто-нибудь чего-нибудь предложит. А потом я выложу своё решение, которым пользовался до сих пор.
Не красивое. Но, работает. Но, не красивое.

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

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

#51

Сообщение brig62 » 04.01.2018{, 20:04}

eugeneb писал(а):
04.01.2018{, 19:57}
на Шаге1 сигнал Н2 и на Шаге 3 сигнал К1 - это описки?
Описок я не исключаю. Но в самом начале предупредил, что концевики переименовал. Для лучшего восприятия. К1 это конечное положение М1. Н1 начальное его же. К2 и Н2 соответственно к М2.

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

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

#52

Сообщение eugeneb » 04.01.2018{, 20:14}

brig62, Я имею ввиду их значения. Мне кажется они оба должны быть True ?

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

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

#53

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

eugeneb писал(а):
04.01.2018{, 19:59}
вообще не ожидал такого решения!
Я в свое время делал автоматику для станков еще на реле, так что привык идти от простого к сложному. Лет пятнадцать назад делал четырехголовочную фрезу на пневматике с возможностью раздельного управления головками, около 40 реле в нем было, месяц или полтора угробил на разработку и монтаж. Сейчас на контроллере максимум неделя с монтажем ушла-бы, ну на отладку еще может парочку.

Кстати нашел один недочет. При данной реализации если авария промелькнет быстро и цилиндры не успеют вернуться обратно, то после снятия аварии цилиндры опять пойдут вперед. Для того чтобы этого не было аварией надо включить SR триггер, а сброс его делать блоком И на вход которго поданы Н1 и Н2.

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

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

#54

Сообщение brig62 » 04.01.2018{, 20:25}

Олег писал(а):
04.01.2018{, 19:30}
По идее так должно работать
eugeneb писал(а):
04.01.2018{, 19:59}
вообще не ожидал такого решения!
В данном случае с двумя выходами не очень тяжело у Олега получилось. А если усложнить задачу до электродвигателей? А если потом еще чего нить навернуть в условие? Схема начнет расти в прогрессии. Но за пример, конечно, большое спасибо. Познавательно.
Олег писал(а):
04.01.2018{, 20:22}
автоматику для станков еще на реле
Вот и я хотел сказать, что раньше релейные схемы станками управляли. Огромные шкафы стояли и щелкали. И ведь работало!

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

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

#55

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

Для каждой задачи свой алгоритм и свое решение. А далше надо смотреть что будет после компилляции. Какой вариант занимает меньше места, тот и использовать. Ведь одну и туже задачу можно решить наверно сотней способов, Главное найти оптимум если места в контроллере мало, а если много, то просто использовать любой рабочмй вариант.

Отправлено спустя 4 часа 15 минут 53 секунды:
А по поводу SFC не знаю, не было ни одной задачи которую я не мог сделать с помощю FBD или Ladder. Описание SFC и IL читал, но мне не понравились, скорее всего потому что текстовое программирование не это мое. Но я разговаривал с программистами кто пишет большие программы для контроллеров, так многие из них если есть возможность, используют FBD или Ladder только потому что через какое-то время если надо что-то дополнить или переделать, то в визуальной программе разобраться намного проще чем в текстовой, как ты ее не комментируй.

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

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

#56

Сообщение Sancho » 05.01.2018{, 10:42}

А вот и мой, с единственным триггером по "Пуск".
На всех пинах включена подтяжка и анти-дребезг.(немного увеличивает размер)
Скетч использует 1988 байт (6%) памяти устройства. Всего доступно 32256 байт.
Глобальные переменные используют 48 байт (2%) динамической памяти, оставляя 2000 байт для локальных переменных.
Без подтяжек и антидребезга:
Скетч использует 1208 байт (3%) памяти устройства. Всего доступно 32256 байт.
Глобальные переменные используют 12 байт (0%) динамической памяти, оставляя 2036 байт для локальных переменных.
Вложения
FiniteStateMachine_Sancho_v1.flp
(147.58 КБ) 82 скачивания
Если не получится на контроллере - сделаю на тразисторах и 155/176...Научился, немного.
Поможем проекту вместе!

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

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

#57

Сообщение Олег » 05.01.2018{, 11:02}

О чем я и говорил, ждем еще 96 решений :victory:

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

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

#58

Сообщение eugeneb » 06.01.2018{, 16:07}

Sancho, Спасибо, что приняли участие! Вы предложили как раз тот метод, который я сам использовал с тех пор как появились условные карты.
То есть, разбиваем весь процесс на стадии(шаги), вводим переменную Stage(Step) И дальше каждую стадию выполняет отдельная карта. Такой себе псевдо-SFC.
Только я все исполнения выношу на одну отдельную карту. Типа такого:
СпойлерПоказать
Fig4.png
Sancho, вы не дописали свой вариант. Скажите, что вы имели ввиду под пятым шагом?


Олег, я думаю это всё. Не будет 96 способов.
Если только какая-нибудь извращённая FreeLog с триггерами и счётчиками.
Ну, вдруг кто-то ещё что-нибудь придумает. Подождём денёк-другой. Ещё не все вышли из праздников :)

Итак, пока имеем три варианта:
От brig62, на основе Командоаппарата;
от Олег, на жёсткой логике;
от Sancho (и от меня), на условных картах.

Для полноты картины здесь конечно не хватает варианта на SFC.
Если кто пишет на CoDeSys, может предложите свой вариант на SFC?

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

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

#59

Сообщение brig62 » 06.01.2018{, 16:36}

eugeneb писал(а):
06.01.2018{, 16:07}
Подождём денёк-другой. Ещё не все вышли из праздников
А что потом? Раздача ценных призов и дипломов?

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

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

#60

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

:)
Здесь всё есть общественный продукт. Всё что здесь сказано или сделано уже принадлежит всему человечеству :)
(кстати, поэтому я всё время топлю за то чтобы люди не выкладывали небрежных, не комментированных программ,
чтобы все программы имели автора)

Вот и Автор (да продлятся его годы!), взял да и подарил людям такую замечательную программу. Прямо как Прометей подарил огонь :)

Этот раздел форума посвящён обсуждению возможностей FLProg.
Я в самом деле интересуюсь эффективным программированием конечных автоматов. Благодаря вам, я узнал много нового. Кто-то ещё что-то узнает. И сейчас и позже.

Для кого-то это просто трёп. Для кого-то - исследование операций.
Мне, например хочется сравнить предложенные варианты. Для меня пока лучший способ не очевиден. Все кто в этом участвует - помогает мне и всем интересующимся. По-моему это отличное применение форума. А?

Ответить

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