FLProg для конечных автоматов, учебная задача
- brig62
- Лейтенант
- Сообщения: 469
- Зарегистрирован: 13 май 2016, 16:37
- Откуда: Казань
- Имя: Игорь
- Благодарил (а): 1 раз
FLProg для конечных автоматов, учебная задача
[ref]eugeneb[/ref], https://www.youtube.com/watch?v=Z12ADr7s6xY&t=6s посмотрите с 11 по 22 минуты.
- brig62
- Лейтенант
- Сообщения: 469
- Зарегистрирован: 13 май 2016, 16:37
- Откуда: Казань
- Имя: Игорь
- Благодарил (а): 1 раз
FLProg для конечных автоматов, учебная задача
Вы сами это сделать не в состоянии? Мне проще было таблицу состояний поставить, чем думать у какого блока что надо инвертировать. На суть работы это никак не влияет.
- eugeneb
- Лейтенант
- Сообщения: 486
- Зарегистрирован: 15 авг 2016, 11:20
- Откуда: Нижний Новгород
- Имя: Евгений
- Благодарил (а): 1 раз
FLProg для конечных автоматов, учебная задача
Очень полезный ответ! Очень содержательный! Просто исчерпывающий!
Товарищи, не торопитесь с ответом. Задача не тривиальная. Тут подумать надо.
С уважением,
Евгений Бобков
Евгений Бобков
- eugeneb
- Лейтенант
- Сообщения: 486
- Зарегистрирован: 15 авг 2016, 11:20
- Откуда: Нижний Новгород
- Имя: Евгений
- Благодарил (а): 1 раз
FLProg для конечных автоматов, учебная задача
[ref]brig62[/ref], Спасибо! А понял, я просто сначала не заметил где записаны значения выходов.
С уважением,
Евгений Бобков
Евгений Бобков
- eugeneb
- Лейтенант
- Сообщения: 486
- Зарегистрирован: 15 авг 2016, 11:20
- Откуда: Нижний Новгород
- Имя: Евгений
- Благодарил (а): 1 раз
FLProg для конечных автоматов, учебная задача
Вот, сделал это за вас. Разбираюсь дальше.brig62 писал(а): 04 янв 2018, 18:43Вы сами это сделать не в состоянии? Мне проще было таблицу состояний поставить, чем думать у какого блока что надо инвертировать. На суть работы это никак не влияет.
У вас нет необходимых прав для просмотра вложений в этом сообщении.
С уважением,
Евгений Бобков
Евгений Бобков
- brig62
- Лейтенант
- Сообщения: 469
- Зарегистрирован: 13 май 2016, 16:37
- Откуда: Казань
- Имя: Игорь
- Благодарил (а): 1 раз
FLProg для конечных автоматов, учебная задача
Не за меня, а для того, кому это нужно. Мне без разницы, какие блоки будут стоять. Лишь бы работало правильно.
FLProg для конечных автоматов, учебная задача
По идее так должно работать на простой логике, может конечно где и ошибся, со временем, как понимаете не очень.
Красным указаны уровни в состоянии готовности перед пуском.У вас нет необходимых прав для просмотра вложений в этом сообщении.
- eugeneb
- Лейтенант
- Сообщения: 486
- Зарегистрирован: 15 авг 2016, 11:20
- Откуда: Нижний Новгород
- Имя: Евгений
- Благодарил (а): 1 раз
FLProg для конечных автоматов, учебная задача
Не-ет, дружище. В условиях задачи было - найти красивое решение. В данном случае применение FreeLog - не красивое решение. Оно очень не наглядное.brig62 писал(а): 04 янв 2018, 19:10Мне без разницы, какие блоки будут стоять. Лишь бы работало правильно.
Я встречал такую позицию среди писателей пользовательских блоков.
И она мне ОЧЕНЬ не нравится. Автор должен стремиться к совершенству своих перлов.
А в вашей программе я разобрался. И это решение мне кажется очень красивым. Собственно ради поиска таких решений я и затевал эту тему.
Я ещё попробую её на макете.
Справдливости ради хочу уточнить: на Шаге1 сигнал Н2 и на Шаге 3 сигнал К1 - это описки?
С уважением,
Евгений Бобков
Евгений Бобков
- eugeneb
- Лейтенант
- Сообщения: 486
- Зарегистрирован: 15 авг 2016, 11:20
- Откуда: Нижний Новгород
- Имя: Евгений
- Благодарил (а): 1 раз
FLProg для конечных автоматов, учебная задача
[ref=#aa0000]Олег[/ref], вообще не ожидал такого решения!
Я ошибок не вижу. ЗдОрово!
Ну, собственно, триггеры это и есть элементы памяти.
Я ошибок не вижу. ЗдОрово!
Ну, собственно, триггеры это и есть элементы памяти.
Последний раз редактировалось eugeneb 04 янв 2018, 20:16, всего редактировалось 1 раз.
С уважением,
Евгений Бобков
Евгений Бобков
- eugeneb
- Лейтенант
- Сообщения: 486
- Зарегистрирован: 15 авг 2016, 11:20
- Откуда: Нижний Новгород
- Имя: Евгений
- Благодарил (а): 1 раз
FLProg для конечных автоматов, учебная задача
Подождём несколько дней, может ещё кто-нибудь чего-нибудь предложит. А потом я выложу своё решение, которым пользовался до сих пор.
Не красивое. Но, работает. Но, не красивое.
Не красивое. Но, работает. Но, не красивое.
С уважением,
Евгений Бобков
Евгений Бобков
- brig62
- Лейтенант
- Сообщения: 469
- Зарегистрирован: 13 май 2016, 16:37
- Откуда: Казань
- Имя: Игорь
- Благодарил (а): 1 раз
FLProg для конечных автоматов, учебная задача
Описок я не исключаю. Но в самом начале предупредил, что концевики переименовал. Для лучшего восприятия. К1 это конечное положение М1. Н1 начальное его же. К2 и Н2 соответственно к М2.
- eugeneb
- Лейтенант
- Сообщения: 486
- Зарегистрирован: 15 авг 2016, 11:20
- Откуда: Нижний Новгород
- Имя: Евгений
- Благодарил (а): 1 раз
FLProg для конечных автоматов, учебная задача
[ref]brig62[/ref], Я имею ввиду их значения. Мне кажется они оба должны быть True ?
С уважением,
Евгений Бобков
Евгений Бобков
FLProg для конечных автоматов, учебная задача
Я в свое время делал автоматику для станков еще на реле, так что привык идти от простого к сложному. Лет пятнадцать назад делал четырехголовочную фрезу на пневматике с возможностью раздельного управления головками, около 40 реле в нем было, месяц или полтора угробил на разработку и монтаж. Сейчас на контроллере максимум неделя с монтажем ушла-бы, ну на отладку еще может парочку.
Кстати нашел один недочет. При данной реализации если авария промелькнет быстро и цилиндры не успеют вернуться обратно, то после снятия аварии цилиндры опять пойдут вперед. Для того чтобы этого не было аварией надо включить SR триггер, а сброс его делать блоком И на вход которго поданы Н1 и Н2.
- brig62
- Лейтенант
- Сообщения: 469
- Зарегистрирован: 13 май 2016, 16:37
- Откуда: Казань
- Имя: Игорь
- Благодарил (а): 1 раз
FLProg для конечных автоматов, учебная задача
В данном случае с двумя выходами не очень тяжело у Олега получилось. А если усложнить задачу до электродвигателей? А если потом еще чего нить навернуть в условие? Схема начнет расти в прогрессии. Но за пример, конечно, большое спасибо. Познавательно.
Вот и я хотел сказать, что раньше релейные схемы станками управляли. Огромные шкафы стояли и щелкали. И ведь работало!
FLProg для конечных автоматов, учебная задача
Для каждой задачи свой алгоритм и свое решение. А далше надо смотреть что будет после компилляции. Какой вариант занимает меньше места, тот и использовать. Ведь одну и туже задачу можно решить наверно сотней способов, Главное найти оптимум если места в контроллере мало, а если много, то просто использовать любой рабочмй вариант.
Отправлено спустя 4 часа 15 минут 53 секунды:
А по поводу SFC не знаю, не было ни одной задачи которую я не мог сделать с помощю FBD или Ladder. Описание SFC и IL читал, но мне не понравились, скорее всего потому что текстовое программирование не это мое. Но я разговаривал с программистами кто пишет большие программы для контроллеров, так многие из них если есть возможность, используют FBD или Ladder только потому что через какое-то время если надо что-то дополнить или переделать, то в визуальной программе разобраться намного проще чем в текстовой, как ты ее не комментируй.
Отправлено спустя 4 часа 15 минут 53 секунды:
А по поводу SFC не знаю, не было ни одной задачи которую я не мог сделать с помощю FBD или Ladder. Описание SFC и IL читал, но мне не понравились, скорее всего потому что текстовое программирование не это мое. Но я разговаривал с программистами кто пишет большие программы для контроллеров, так многие из них если есть возможность, используют FBD или Ladder только потому что через какое-то время если надо что-то дополнить или переделать, то в визуальной программе разобраться намного проще чем в текстовой, как ты ее не комментируй.
- Sancho
- Полковник
- Сообщения: 4066
- Зарегистрирован: 25 дек 2015, 17:32
- Откуда: Ярославль.
- Имя: Александр
- Поблагодарили: 5 раз
- Контактная информация:
FLProg для конечных автоматов, учебная задача
А вот и мой, с единственным триггером по "Пуск".
На всех пинах включена подтяжка и анти-дребезг.(немного увеличивает размер)
Скетч использует 1988 байт (6%) памяти устройства. Всего доступно 32256 байт.
Глобальные переменные используют 48 байт (2%) динамической памяти, оставляя 2000 байт для локальных переменных.
Без подтяжек и антидребезга:
Скетч использует 1208 байт (3%) памяти устройства. Всего доступно 32256 байт.
Глобальные переменные используют 12 байт (0%) динамической памяти, оставляя 2036 байт для локальных переменных.
На всех пинах включена подтяжка и анти-дребезг.(немного увеличивает размер)
Скетч использует 1988 байт (6%) памяти устройства. Всего доступно 32256 байт.
Глобальные переменные используют 48 байт (2%) динамической памяти, оставляя 2000 байт для локальных переменных.
Без подтяжек и антидребезга:
Скетч использует 1208 байт (3%) памяти устройства. Всего доступно 32256 байт.
Глобальные переменные используют 12 байт (0%) динамической памяти, оставляя 2036 байт для локальных переменных.
У вас нет необходимых прав для просмотра вложений в этом сообщении.
мой ник в нете и почте omelchuk890, если что. запомните на всякий. многие знают номер тлф.
- eugeneb
- Лейтенант
- Сообщения: 486
- Зарегистрирован: 15 авг 2016, 11:20
- Откуда: Нижний Новгород
- Имя: Евгений
- Благодарил (а): 1 раз
FLProg для конечных автоматов, учебная задача
[ref]Sancho[/ref], Спасибо, что приняли участие! Вы предложили как раз тот метод, который я сам использовал с тех пор как появились условные карты.
То есть, разбиваем весь процесс на стадии(шаги), вводим переменную Stage(Step) И дальше каждую стадию выполняет отдельная карта. Такой себе псевдо-SFC.
Только я все исполнения выношу на одну отдельную карту. Типа такого:
[spoiler] [/spoiler]
[ref]Sancho[/ref], вы не дописали свой вариант. Скажите, что вы имели ввиду под пятым шагом?
[ref=#aa0000]Олег[/ref], я думаю это всё. Не будет 96 способов.
Если только какая-нибудь извращённая FreeLog с триггерами и счётчиками.
Ну, вдруг кто-то ещё что-нибудь придумает. Подождём денёк-другой. Ещё не все вышли из праздников
Итак, пока имеем три варианта:
От [ref]brig62[/ref], на основе Командоаппарата;
от [ref=#aa0000]Олег[/ref], на жёсткой логике;
от [ref]Sancho[/ref] (и от меня), на условных картах.
Для полноты картины здесь конечно не хватает варианта на SFC.
Если кто пишет на CoDeSys, может предложите свой вариант на SFC?
То есть, разбиваем весь процесс на стадии(шаги), вводим переменную Stage(Step) И дальше каждую стадию выполняет отдельная карта. Такой себе псевдо-SFC.
Только я все исполнения выношу на одну отдельную карту. Типа такого:
[spoiler] [/spoiler]
[ref]Sancho[/ref], вы не дописали свой вариант. Скажите, что вы имели ввиду под пятым шагом?
[ref=#aa0000]Олег[/ref], я думаю это всё. Не будет 96 способов.
Если только какая-нибудь извращённая FreeLog с триггерами и счётчиками.
Ну, вдруг кто-то ещё что-нибудь придумает. Подождём денёк-другой. Ещё не все вышли из праздников

Итак, пока имеем три варианта:
От [ref]brig62[/ref], на основе Командоаппарата;
от [ref=#aa0000]Олег[/ref], на жёсткой логике;
от [ref]Sancho[/ref] (и от меня), на условных картах.
Для полноты картины здесь конечно не хватает варианта на SFC.
Если кто пишет на CoDeSys, может предложите свой вариант на SFC?
У вас нет необходимых прав для просмотра вложений в этом сообщении.
С уважением,
Евгений Бобков
Евгений Бобков
- brig62
- Лейтенант
- Сообщения: 469
- Зарегистрирован: 13 май 2016, 16:37
- Откуда: Казань
- Имя: Игорь
- Благодарил (а): 1 раз
- eugeneb
- Лейтенант
- Сообщения: 486
- Зарегистрирован: 15 авг 2016, 11:20
- Откуда: Нижний Новгород
- Имя: Евгений
- Благодарил (а): 1 раз
FLProg для конечных автоматов, учебная задача

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

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

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