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

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

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

#1

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

Обсудим программирование конечных автоматов на 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.
Предлагаю поискать красивое решение имеющимися средствами.

Прилагаю проект-заготовку со всеми нужными сигналами.
Вложения
FiniteStateMachine.flp
Проект-заготовка
(42.4 КБ) 87 скачиваний

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

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

#2

Сообщение brig62 » 04.01.2018{, 15:51}

eugeneb писал(а):
04.01.2018{, 14:21}
со всеми нужными сигналами.
Я вот далек от программирования "черных ящиков". Может быть поэтому не могу представить, как обходясь только предложенными вами выходами можно остановить механизм в конечном положении.
2018-01-04_15-44-59.png
2018-01-04_15-44-59.png (4.04 КБ) 1760 просмотров
Или концевики предполагаются физические с НО и НЗ контактами? Тогда входов должно быть больше. Но все равно не понимаю. Может быть просветите? Какой сигнал должен быть на выходе, когда механизм в конечном положении?

Аватара пользователя
Lisica
Сержант
Сообщения: 244
Зарегистрирован: 18.12.2017{, 17:25}
Репутация: 14
Откуда: Золотоноша

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

#3

Сообщение Lisica » 04.01.2018{, 16:19}

eugeneb писал(а):
04.01.2018{, 14:21}
Прилагаю проект-заготовку со всеми нужными сигналами.
Не все
Если
Механизм1. 0 - назад, 1 - вперёд
какой сигнал отключит двигатель? Без стоп и поехали не выходит...

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

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

#4

Сообщение brig62 » 04.01.2018{, 16:32}

Lisica писал(а):
04.01.2018{, 16:19}
Без стоп и поехали не выходит...
Я так сделал
2018-01-04_16-32-06.png
2018-01-04_16-32-06.png (3.2 КБ) 1750 просмотров
Файл прикладываю Должен работать ИМХО. Входы тоже переименовал.
001 Механизмы.flp
(184.49 КБ) 75 скачиваний
Сейчас подумал, что надо было еще один шаг добавить. Без передвижений куда либо. Но это уже детали. Перезаливать не буду.

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

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

#5

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

:)
Ребята, не усложняем, здесь всё упрощено до максимума. Чтобы родить чистый алгоритм.

Представте себе пневмоцилиндр. Ему дают команду М1. Он едет вперёд. Не мгновенно. Он тратит время на свой путь. У него своя механическая скорость. Он доезжает до конца, упирается и останавливается. Там находится концевой выключатель К1. Он срабатывает. Мы команду не снимаем. Механизм стоит. Но по концевому выключателю мы знаем, что механизм находится в конце.

Когда нам надо перевести механизм в начало, мы снимаем сигнал М1. Механизм едет назад. Концевой выключатель К1 отключается. Через некоторое время механизм приезжает в начало, упирается и останавливается. Срабатывает концевик Н1. Мы узнаём, что механизм стоит в начале.

То же - со вторым механизмом.

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

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

#6

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

eugeneb писал(а):
04.01.2018{, 16:57}
упирается и останавливается
Ну если так, то можно двумя выходами обойтись. Я себе представил подачу механическую. Вал-гайка например. Но не суть.
eugeneb писал(а):
04.01.2018{, 16:57}
Чтобы родить чистый алгоритм.
Родили?
2018-01-04_17-04-51.png

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

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

#7

Сообщение eugeneb » 04.01.2018{, 17:07}

https://www.youtube.com/watch?time_cont ... sEbJd_7lQc
Вот посмотрите с 1:55 как он управляет цилиндром одним сигналом. Там только концевиков нет.

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

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

#8

Сообщение brig62 » 04.01.2018{, 17:13}

eugeneb, Ну так не подключайте выходы "назад" в предложенном мной варианте. Вы даже не посмотрели. Ноль скачиваний.

Аватара пользователя
Lisica
Сержант
Сообщения: 244
Зарегистрирован: 18.12.2017{, 17:25}
Репутация: 14
Откуда: Золотоноша

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

#9

Сообщение Lisica » 04.01.2018{, 17:15}

eugeneb писал(а):
04.01.2018{, 16:57}
Он тратит время на свой путь. У него своя механическая скорость.
Как "чёрной коробочке", в которой нет вывода установки задержки, указывать временную задержку?

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

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

#10

Сообщение brig62 » 04.01.2018{, 17:16}

Lisica, А зачем она нужна? По концевику определяем положение.

Аватара пользователя
Lisica
Сержант
Сообщения: 244
Зарегистрирован: 18.12.2017{, 17:25}
Репутация: 14
Откуда: Золотоноша

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

#11

Сообщение Lisica » 04.01.2018{, 17:16}

eugeneb писал(а):
04.01.2018{, 17:07}
Вот посмотрите
И что, там воздухом около 2х атмосфер управляется...
А представьте электродвиг, который упёрся, а напряжение не снимают.

Аватара пользователя
Lisica
Сержант
Сообщения: 244
Зарегистрирован: 18.12.2017{, 17:25}
Репутация: 14
Откуда: Золотоноша

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

#12

Сообщение Lisica » 04.01.2018{, 17:17}

brig62 писал(а):
04.01.2018{, 17:16}
По концевику определяем положение.
А что тогда снимает напряжение с двигателя?

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

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

#13

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

Lisica, Контроллер снимает по сигналу концевика. Переходит к след шагу Командоаппарата.
В случае с пневматикой можно и не снимать команду.

Аватара пользователя
Lisica
Сержант
Сообщения: 244
Зарегистрирован: 18.12.2017{, 17:25}
Репутация: 14
Откуда: Золотоноша

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

#14

Сообщение Lisica » 04.01.2018{, 17:25}

brig62 писал(а):
04.01.2018{, 17:20}
Контроллер снимает по сигналу концевика.
Вы попробуйте как ТС задачу дал сделать. На одном пине - вперёд, назад.

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

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

#15

Сообщение brig62 » 04.01.2018{, 17:27}

Lisica писал(а):
04.01.2018{, 17:25}
Вы попробуйте как ТС задачу дал сделать.
brig62 писал(а):
04.01.2018{, 17:13}
Ну так не подключайте выходы "назад" в предложенном мной варианте
И все будет работать

Аватара пользователя
Lisica
Сержант
Сообщения: 244
Зарегистрирован: 18.12.2017{, 17:25}
Репутация: 14
Откуда: Золотоноша

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

#16

Сообщение Lisica » 04.01.2018{, 17:31}

brig62 писал(а):
04.01.2018{, 17:27}
И все будет работать
Вопрос повторю - что подаст на двиг напряжение и что снимет.
На двигателе с двумя направлениями вращения не один то вед. проводок. Туда нужно подать - направление и питание. (на блок реле, конечно)
Получается у вас он, при 1 едет туда, стоп нету, подал 0 поехал обратно. остановить как?

Аватара пользователя
Evgesha
Лейтенант
Сообщения: 512
Зарегистрирован: 29.10.2015{, 09:57}
Репутация: 17
Откуда: Kazakhstan
Имя: Evgesha

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

#17

Сообщение Evgesha » 04.01.2018{, 17:33}

Brig62, что это за блог free log ?
ПОМОЩЬ ПРОЕКТУ FLPROG:
http://flprog.ru/pomoshh-proektu/

pan
Полковник
Сообщения: 2860
Зарегистрирован: 13.04.2017{, 11:57}
Репутация: 204
Имя: noname

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

#18

Сообщение pan » 04.01.2018{, 17:35}

Evgesha, ну что же вы даже штатные блоки не знаете...
это таблица состояний.

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

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

#19

Сообщение brig62 » 04.01.2018{, 17:36}

Переделал немного. Без хода назад.
002 Механизмы.flp
(173.08 КБ) 81 скачивание

Аватара пользователя
Evgesha
Лейтенант
Сообщения: 512
Зарегистрирован: 29.10.2015{, 09:57}
Репутация: 17
Откуда: Kazakhstan
Имя: Evgesha

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

#20

Сообщение Evgesha » 04.01.2018{, 17:38}

PAN, я им никогда непользовался, что то неприходилось. Вот и незнаю. :yu:
Последний раз редактировалось Evgesha 04.01.2018{, 17:39}, всего редактировалось 1 раз.
ПОМОЩЬ ПРОЕКТУ FLPROG:
http://flprog.ru/pomoshh-proektu/

Ответить

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