FLProg для конечных автоматов, учебная задача
- eugeneb
- Лейтенант
- Сообщения: 481
- Зарегистрирован: 15 авг 2016, 11:20
- Откуда: Нижний Новгород
- Имя: Евгений
FLProg для конечных автоматов, учебная задача
Обсудим программирование конечных автоматов на FLProg.
Я уже поднимал эту тему
http://forum.flprog.ru/viewtopic.php?f= ... SFC#p22648
и наверное не был понят.
С тех пор появились условные платы (почему-то всегда хочется назвать их картами)
и командоаппарат. Может они нам помогут.
Предлагаю решить учебную задачу. Условия задачи следующие:
Имеется автомат. Автомат состоит из двух механизмов прямолинейного движения - М1 и М2. В начале и в конце каждого механизма имеются концевые датчики (начало/конец) - Н1, К1, Н2, К2. Также имеются кнопка ПУСК и внешний сигнал АВАРИЯ.
Алгоритм работы автомата следующий:
1. При включении, оба механизма отвести в начало.
2. При нажатии кнопки ПУСК, механизм М1 двинуть вперёд.
3. Когда М1 дойдёт до конца, механизм М2 двинуть вперёд.
4. Когда М2 дойдёт до конца, вернуть М2 в начало.
5. Когда механизм М2 вернётся в начало, механизм М1 вернуть в начало.
6. Ждать следующего нажатия кнопки ПУСК (перейти к пункту 2).
7. При появлении сигнала АВАРИЯ на любом этапе - немедленно отвести механизмы в начало и больше не двигаться до изчезновения аварийного сигнала.
Эта задача относится к классу конечных автоматов.
Конечный автомат, упрощенно говоря, это такой "чёрный ящик", сигналы на выходе которого зависят от сигналов на входе и, внимание, от его внутреннего состояния. То есть он имеет память.
Для решения такого класса задач на ПЛК есть специальный язык SFC (см приведённую ссылку), пока отсутствующий в FLProg.
Предлагаю поискать красивое решение имеющимися средствами.
Прилагаю проект-заготовку со всеми нужными сигналами.
Я уже поднимал эту тему
http://forum.flprog.ru/viewtopic.php?f= ... SFC#p22648
и наверное не был понят.
С тех пор появились условные платы (почему-то всегда хочется назвать их картами)
и командоаппарат. Может они нам помогут.
Предлагаю решить учебную задачу. Условия задачи следующие:
Имеется автомат. Автомат состоит из двух механизмов прямолинейного движения - М1 и М2. В начале и в конце каждого механизма имеются концевые датчики (начало/конец) - Н1, К1, Н2, К2. Также имеются кнопка ПУСК и внешний сигнал АВАРИЯ.
Алгоритм работы автомата следующий:
1. При включении, оба механизма отвести в начало.
2. При нажатии кнопки ПУСК, механизм М1 двинуть вперёд.
3. Когда М1 дойдёт до конца, механизм М2 двинуть вперёд.
4. Когда М2 дойдёт до конца, вернуть М2 в начало.
5. Когда механизм М2 вернётся в начало, механизм М1 вернуть в начало.
6. Ждать следующего нажатия кнопки ПУСК (перейти к пункту 2).
7. При появлении сигнала АВАРИЯ на любом этапе - немедленно отвести механизмы в начало и больше не двигаться до изчезновения аварийного сигнала.
Эта задача относится к классу конечных автоматов.
Конечный автомат, упрощенно говоря, это такой "чёрный ящик", сигналы на выходе которого зависят от сигналов на входе и, внимание, от его внутреннего состояния. То есть он имеет память.
Для решения такого класса задач на ПЛК есть специальный язык SFC (см приведённую ссылку), пока отсутствующий в FLProg.
Предлагаю поискать красивое решение имеющимися средствами.
Прилагаю проект-заготовку со всеми нужными сигналами.
У вас нет необходимых прав для просмотра вложений в этом сообщении.
FLProg для конечных автоматов, учебная задача
Я вот далек от программирования "черных ящиков". Может быть поэтому не могу представить, как обходясь только предложенными вами выходами можно остановить механизм в конечном положении. Или концевики предполагаются физические с НО и НЗ контактами? Тогда входов должно быть больше. Но все равно не понимаю. Может быть просветите? Какой сигнал должен быть на выходе, когда механизм в конечном положении?
У вас нет необходимых прав для просмотра вложений в этом сообщении.
FLProg для конечных автоматов, учебная задача
Не всеeugeneb писал(а): ↑04 янв 2018, 14:21Прилагаю проект-заготовку со всеми нужными сигналами.
Если
какой сигнал отключит двигатель? Без стоп и поехали не выходит...Механизм1. 0 - назад, 1 - вперёд
FLProg для конечных автоматов, учебная задача
Я так сделал Файл прикладываю Должен работать ИМХО. Входы тоже переименовал. Сейчас подумал, что надо было еще один шаг добавить. Без передвижений куда либо. Но это уже детали. Перезаливать не буду.
У вас нет необходимых прав для просмотра вложений в этом сообщении.
- eugeneb
- Лейтенант
- Сообщения: 481
- Зарегистрирован: 15 авг 2016, 11:20
- Откуда: Нижний Новгород
- Имя: Евгений
FLProg для конечных автоматов, учебная задача
![Улыбка! :)](./images/smilies/ha_smile.gif)
Ребята, не усложняем, здесь всё упрощено до максимума. Чтобы родить чистый алгоритм.
Представте себе пневмоцилиндр. Ему дают команду М1. Он едет вперёд. Не мгновенно. Он тратит время на свой путь. У него своя механическая скорость. Он доезжает до конца, упирается и останавливается. Там находится концевой выключатель К1. Он срабатывает. Мы команду не снимаем. Механизм стоит. Но по концевому выключателю мы знаем, что механизм находится в конце.
Когда нам надо перевести механизм в начало, мы снимаем сигнал М1. Механизм едет назад. Концевой выключатель К1 отключается. Через некоторое время механизм приезжает в начало, упирается и останавливается. Срабатывает концевик Н1. Мы узнаём, что механизм стоит в начале.
То же - со вторым механизмом.
FLProg для конечных автоматов, учебная задача
Ну если так, то можно двумя выходами обойтись. Я себе представил подачу механическую. Вал-гайка например. Но не суть.
Родили?
У вас нет необходимых прав для просмотра вложений в этом сообщении.
- eugeneb
- Лейтенант
- Сообщения: 481
- Зарегистрирован: 15 авг 2016, 11:20
- Откуда: Нижний Новгород
- Имя: Евгений
FLProg для конечных автоматов, учебная задача
https://www.youtube.com/watch?time_cont ... sEbJd_7lQc
Вот посмотрите с 1:55 как он управляет цилиндром одним сигналом. Там только концевиков нет.
Вот посмотрите с 1:55 как он управляет цилиндром одним сигналом. Там только концевиков нет.
FLProg для конечных автоматов, учебная задача
[ref]eugeneb[/ref], Ну так не подключайте выходы "назад" в предложенном мной варианте. Вы даже не посмотрели. Ноль скачиваний.
FLProg для конечных автоматов, учебная задача
[ref]Lisica[/ref], А зачем она нужна? По концевику определяем положение.
FLProg для конечных автоматов, учебная задача
[ref]Lisica[/ref], Контроллер снимает по сигналу концевика. Переходит к след шагу Командоаппарата.
В случае с пневматикой можно и не снимать команду.
В случае с пневматикой можно и не снимать команду.
FLProg для конечных автоматов, учебная задача
Вопрос повторю - что подаст на двиг напряжение и что снимет.
На двигателе с двумя направлениями вращения не один то вед. проводок. Туда нужно подать - направление и питание. (на блок реле, конечно)
Получается у вас он, при 1 едет туда, стоп нету, подал 0 поехал обратно. остановить как?
-
- Лейтенант
- Сообщения: 525
- Зарегистрирован: 29 окт 2015, 09:57
- Откуда: Kazakhstan
- Имя: Evgesha
FLProg для конечных автоматов, учебная задача
Brig62, что это за блог free log ?
ПОМОЩЬ ПРОЕКТУ FLPROG:
http://flprog.ru/pomoshh-proektu/
http://flprog.ru/pomoshh-proektu/
FLProg для конечных автоматов, учебная задача
[ref]Evgesha[/ref], ну что же вы даже штатные блоки не знаете...
это таблица состояний.
это таблица состояний.
FLProg для конечных автоматов, учебная задача
Переделал немного. Без хода назад.
У вас нет необходимых прав для просмотра вложений в этом сообщении.
-
- Лейтенант
- Сообщения: 525
- Зарегистрирован: 29 окт 2015, 09:57
- Откуда: Kazakhstan
- Имя: Evgesha
FLProg для конечных автоматов, учебная задача
PAN, я им никогда непользовался, что то неприходилось. Вот и незнаю. ![Да :yu:](./images/smilies/ucoz_yu.gif)
![Да :yu:](./images/smilies/ucoz_yu.gif)
Последний раз редактировалось Evgesha 04 янв 2018, 17:39, всего редактировалось 1 раз.
ПОМОЩЬ ПРОЕКТУ FLPROG:
http://flprog.ru/pomoshh-proektu/
http://flprog.ru/pomoshh-proektu/
Кто сейчас на конференции
Сейчас этот форум просматривают: нет зарегистрированных пользователей и 0 гостей