Страница 3 из 4
FLProg для конечных автоматов, учебная задача
Добавлено: 04 янв 2018, 18:40
brig62
[ref]eugeneb[/ref],
https://www.youtube.com/watch?v=Z12ADr7s6xY&t=6s посмотрите с 11 по 22 минуты.
FLProg для конечных автоматов, учебная задача
Добавлено: 04 янв 2018, 18:43
brig62
eugeneb писал(а): 04 янв 2018, 18:36смените оставшиеся FreeLog на /XOR
Вы сами это сделать не в состоянии? Мне проще было таблицу состояний поставить, чем думать у какого блока что надо инвертировать. На суть работы это никак не влияет.
FLProg для конечных автоматов, учебная задача
Добавлено: 04 янв 2018, 18:45
eugeneb
Lisica писал(а): 04 янв 2018, 18:37Видеоурок есть на ютубе
Очень полезный ответ! Очень содержательный! Просто исчерпывающий!
Товарищи, не торопитесь с ответом. Задача не тривиальная. Тут подумать надо.
FLProg для конечных автоматов, учебная задача
Добавлено: 04 янв 2018, 18:48
eugeneb
[ref]brig62[/ref], Спасибо! А понял, я просто сначала не заметил где записаны значения выходов.
FLProg для конечных автоматов, учебная задача
Добавлено: 04 янв 2018, 19:01
eugeneb
brig62 писал(а): 04 янв 2018, 18:43Вы сами это сделать не в состоянии? Мне проще было таблицу состояний поставить, чем думать у какого блока что надо инвертировать. На суть работы это никак не влияет.
Вот, сделал это за вас. Разбираюсь дальше.
FLProg для конечных автоматов, учебная задача
Добавлено: 04 янв 2018, 19:10
brig62
eugeneb писал(а): 04 янв 2018, 19:01Вот, сделал это за вас
Не за меня, а для того, кому это нужно. Мне без разницы, какие блоки будут стоять. Лишь бы работало правильно.
FLProg для конечных автоматов, учебная задача
Добавлено: 04 янв 2018, 19:30
Олег
По идее так должно работать на простой логике, может конечно где и ошибся, со временем, как понимаете не очень.
avtomat.JPG
Красным указаны уровни в состоянии готовности перед пуском.
FLProg для конечных автоматов, учебная задача
Добавлено: 04 янв 2018, 19:57
eugeneb
brig62 писал(а): 04 янв 2018, 19:10Мне без разницы, какие блоки будут стоять. Лишь бы работало правильно.
Не-ет, дружище. В условиях задачи было - найти красивое решение. В данном случае применение FreeLog - не красивое решение. Оно очень не наглядное.
brig62 писал(а): 04 янв 2018, 19:10а для того, кому это нужно.
Я встречал такую позицию среди писателей пользовательских блоков.
И она мне ОЧЕНЬ не нравится. Автор должен стремиться к совершенству своих перлов.
А в вашей программе я разобрался. И это решение мне кажется очень красивым. Собственно ради поиска таких решений я и затевал эту тему.
Я ещё попробую её на макете.
Справдливости ради хочу уточнить: на Шаге1 сигнал Н2 и на Шаге 3 сигнал К1 - это описки?
FLProg для конечных автоматов, учебная задача
Добавлено: 04 янв 2018, 19:59
eugeneb
[ref=#aa0000]Олег[/ref], вообще не ожидал такого решения!
Я ошибок не вижу. ЗдОрово!
Ну, собственно, триггеры это и есть элементы памяти.
FLProg для конечных автоматов, учебная задача
Добавлено: 04 янв 2018, 20:02
eugeneb
Подождём несколько дней, может ещё кто-нибудь чего-нибудь предложит. А потом я выложу своё решение, которым пользовался до сих пор.
Не красивое. Но, работает. Но, не красивое.
FLProg для конечных автоматов, учебная задача
Добавлено: 04 янв 2018, 20:04
brig62
eugeneb писал(а): 04 янв 2018, 19:57на Шаге1 сигнал Н2 и на Шаге 3 сигнал К1 - это описки?
Описок я не исключаю. Но в самом начале предупредил, что концевики переименовал. Для лучшего восприятия. К1 это конечное положение М1. Н1 начальное его же. К2 и Н2 соответственно к М2.
FLProg для конечных автоматов, учебная задача
Добавлено: 04 янв 2018, 20:14
eugeneb
[ref]brig62[/ref], Я имею ввиду их значения. Мне кажется они оба должны быть True ?
FLProg для конечных автоматов, учебная задача
Добавлено: 04 янв 2018, 20:22
Олег
eugeneb писал(а): 04 янв 2018, 19:59 вообще не ожидал такого решения!
Я в свое время делал автоматику для станков еще на реле, так что привык идти от простого к сложному. Лет пятнадцать назад делал четырехголовочную фрезу на пневматике с возможностью раздельного управления головками, около 40 реле в нем было, месяц или полтора угробил на разработку и монтаж. Сейчас на контроллере максимум неделя с монтажем ушла-бы, ну на отладку еще может парочку.
Кстати нашел один недочет. При данной реализации если авария промелькнет быстро и цилиндры не успеют вернуться обратно, то после снятия аварии цилиндры опять пойдут вперед. Для того чтобы этого не было аварией надо включить SR триггер, а сброс его делать блоком И на вход которго поданы Н1 и Н2.
FLProg для конечных автоматов, учебная задача
Добавлено: 04 янв 2018, 20:25
brig62
Олег писал(а): 04 янв 2018, 19:30По идее так должно работать
eugeneb писал(а): 04 янв 2018, 19:59вообще не ожидал такого решения!
В данном случае с двумя выходами не очень тяжело у Олега получилось. А если усложнить задачу до электродвигателей? А если потом еще чего нить навернуть в условие? Схема начнет расти в прогрессии. Но за пример, конечно, большое спасибо. Познавательно.
Олег писал(а): 04 янв 2018, 20:22автоматику для станков еще на реле
Вот и я хотел сказать, что раньше релейные схемы станками управляли. Огромные шкафы стояли и щелкали. И ведь работало!
FLProg для конечных автоматов, учебная задача
Добавлено: 05 янв 2018, 00:48
Олег
Для каждой задачи свой алгоритм и свое решение. А далше надо смотреть что будет после компилляции. Какой вариант занимает меньше места, тот и использовать. Ведь одну и туже задачу можно решить наверно сотней способов, Главное найти оптимум если места в контроллере мало, а если много, то просто использовать любой рабочмй вариант.
Отправлено спустя 4 часа 15 минут 53 секунды:
А по поводу SFC не знаю, не было ни одной задачи которую я не мог сделать с помощю FBD или Ladder. Описание SFC и IL читал, но мне не понравились, скорее всего потому что текстовое программирование не это мое. Но я разговаривал с программистами кто пишет большие программы для контроллеров, так многие из них если есть возможность, используют FBD или Ladder только потому что через какое-то время если надо что-то дополнить или переделать, то в визуальной программе разобраться намного проще чем в текстовой, как ты ее не комментируй.
FLProg для конечных автоматов, учебная задача
Добавлено: 05 янв 2018, 10:42
Sancho
А вот и мой, с единственным триггером по "Пуск".
На всех пинах включена подтяжка и анти-дребезг.(немного увеличивает размер)
Скетч использует 1988 байт (6%) памяти устройства. Всего доступно 32256 байт.
Глобальные переменные используют 48 байт (2%) динамической памяти, оставляя 2000 байт для локальных переменных.
Без подтяжек и антидребезга:
Скетч использует 1208 байт (3%) памяти устройства. Всего доступно 32256 байт.
Глобальные переменные используют 12 байт (0%) динамической памяти, оставляя 2036 байт для локальных переменных.
FLProg для конечных автоматов, учебная задача
Добавлено: 05 янв 2018, 11:02
Олег
О чем я и говорил, ждем еще 96 решений

FLProg для конечных автоматов, учебная задача
Добавлено: 06 янв 2018, 16:07
eugeneb
[ref]Sancho[/ref], Спасибо, что приняли участие! Вы предложили как раз тот метод, который я сам использовал с тех пор как появились условные карты.
То есть, разбиваем весь процесс на стадии(шаги), вводим переменную Stage(Step) И дальше каждую стадию выполняет отдельная карта. Такой себе псевдо-SFC.
Только я все исполнения выношу на одну отдельную карту. Типа такого:
[spoiler]
Fig4.png
[/spoiler]
[ref]Sancho[/ref], вы не дописали свой вариант. Скажите, что вы имели ввиду под пятым шагом?
[ref=#aa0000]Олег[/ref], я думаю это всё. Не будет 96 способов.
Если только какая-нибудь извращённая FreeLog с триггерами и счётчиками.
Ну, вдруг кто-то ещё что-нибудь придумает. Подождём денёк-другой. Ещё не все вышли из праздников
Итак, пока имеем три варианта:
От [ref]brig62[/ref], на основе Командоаппарата;
от [ref=#aa0000]Олег[/ref], на жёсткой логике;
от [ref]Sancho[/ref] (и от меня), на условных картах.
Для полноты картины здесь конечно не хватает варианта на SFC.
Если кто пишет на CoDeSys, может предложите свой вариант на SFC?
FLProg для конечных автоматов, учебная задача
Добавлено: 06 янв 2018, 16:36
brig62
eugeneb писал(а): 06 янв 2018, 16:07Подождём денёк-другой. Ещё не все вышли из праздников
А что потом? Раздача ценных призов и дипломов?
FLProg для конечных автоматов, учебная задача
Добавлено: 06 янв 2018, 18:05
eugeneb

Здесь всё есть общественный продукт. Всё что здесь сказано или сделано уже принадлежит всему человечеству

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