Страница 1 из 4
FLProg для конечных автоматов, учебная задача
Добавлено: 04 янв 2018, 14:21
eugeneb
Обсудим программирование конечных автоматов на 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 для конечных автоматов, учебная задача
Добавлено: 04 янв 2018, 15:51
brig62
eugeneb писал(а): 04 янв 2018, 14:21со всеми нужными сигналами.
Я вот далек от программирования "черных ящиков". Может быть поэтому не могу представить, как обходясь только предложенными вами выходами можно остановить механизм в конечном положении.
2018-01-04_15-44-59.png
Или концевики предполагаются физические с НО и НЗ контактами? Тогда входов должно быть больше. Но все равно не понимаю. Может быть просветите? Какой сигнал должен быть на выходе, когда механизм в конечном положении?
FLProg для конечных автоматов, учебная задача
Добавлено: 04 янв 2018, 16:19
Lisica
eugeneb писал(а): 04 янв 2018, 14:21Прилагаю проект-заготовку со всеми нужными сигналами.
Не все
Если
Механизм1. 0 - назад, 1 - вперёд
какой сигнал отключит двигатель? Без стоп и поехали не выходит...
FLProg для конечных автоматов, учебная задача
Добавлено: 04 янв 2018, 16:32
brig62
Lisica писал(а): 04 янв 2018, 16:19Без стоп и поехали не выходит...
Я так сделал
2018-01-04_16-32-06.png
Файл прикладываю Должен работать ИМХО. Входы тоже переименовал.
001 Механизмы.flp
Сейчас подумал, что надо было еще один шаг добавить. Без передвижений куда либо. Но это уже детали. Перезаливать не буду.
FLProg для конечных автоматов, учебная задача
Добавлено: 04 янв 2018, 16:57
eugeneb

Ребята, не усложняем, здесь всё упрощено до максимума. Чтобы родить чистый алгоритм.
Представте себе пневмоцилиндр. Ему дают команду М1. Он едет вперёд. Не мгновенно. Он тратит время на свой путь. У него своя механическая скорость. Он доезжает до конца, упирается и останавливается. Там находится концевой выключатель К1. Он срабатывает. Мы команду не снимаем. Механизм стоит. Но по концевому выключателю мы знаем, что механизм находится в конце.
Когда нам надо перевести механизм в начало, мы снимаем сигнал М1. Механизм едет назад. Концевой выключатель К1 отключается. Через некоторое время механизм приезжает в начало, упирается и останавливается. Срабатывает концевик Н1. Мы узнаём, что механизм стоит в начале.
То же - со вторым механизмом.
FLProg для конечных автоматов, учебная задача
Добавлено: 04 янв 2018, 17:04
brig62
eugeneb писал(а): 04 янв 2018, 16:57упирается и останавливается
Ну если так, то можно двумя выходами обойтись. Я себе представил подачу механическую. Вал-гайка например. Но не суть.
eugeneb писал(а): 04 янв 2018, 16:57Чтобы родить чистый алгоритм.
Родили?
2018-01-04_17-04-51.png
FLProg для конечных автоматов, учебная задача
Добавлено: 04 янв 2018, 17:07
eugeneb
https://www.youtube.com/watch?time_cont ... sEbJd_7lQc
Вот посмотрите с 1:55 как он управляет цилиндром одним сигналом. Там только концевиков нет.
FLProg для конечных автоматов, учебная задача
Добавлено: 04 янв 2018, 17:13
brig62
[ref]eugeneb[/ref], Ну так не подключайте выходы "назад" в предложенном мной варианте. Вы даже не посмотрели. Ноль скачиваний.
FLProg для конечных автоматов, учебная задача
Добавлено: 04 янв 2018, 17:15
Lisica
eugeneb писал(а): 04 янв 2018, 16:57Он тратит время на свой путь. У него своя механическая скорость.
Как "чёрной коробочке", в которой нет вывода установки задержки, указывать временную задержку?
FLProg для конечных автоматов, учебная задача
Добавлено: 04 янв 2018, 17:16
brig62
[ref]Lisica[/ref], А зачем она нужна? По концевику определяем положение.
FLProg для конечных автоматов, учебная задача
Добавлено: 04 янв 2018, 17:16
Lisica
eugeneb писал(а): 04 янв 2018, 17:07Вот посмотрите
И что, там воздухом около 2х атмосфер управляется...
А представьте электродвиг, который упёрся, а напряжение не снимают.
FLProg для конечных автоматов, учебная задача
Добавлено: 04 янв 2018, 17:17
Lisica
brig62 писал(а): 04 янв 2018, 17:16По концевику определяем положение.
А что тогда снимает напряжение с двигателя?
FLProg для конечных автоматов, учебная задача
Добавлено: 04 янв 2018, 17:20
brig62
[ref]Lisica[/ref], Контроллер снимает по сигналу концевика. Переходит к след шагу Командоаппарата.
В случае с пневматикой можно и не снимать команду.
FLProg для конечных автоматов, учебная задача
Добавлено: 04 янв 2018, 17:25
Lisica
brig62 писал(а): 04 янв 2018, 17:20Контроллер снимает по сигналу концевика.
Вы попробуйте как ТС задачу дал сделать. На одном пине - вперёд, назад.
FLProg для конечных автоматов, учебная задача
Добавлено: 04 янв 2018, 17:27
brig62
Lisica писал(а): 04 янв 2018, 17:25Вы попробуйте как ТС задачу дал сделать.
brig62 писал(а): 04 янв 2018, 17:13Ну так не подключайте выходы "назад" в предложенном мной варианте
И все будет работать
FLProg для конечных автоматов, учебная задача
Добавлено: 04 янв 2018, 17:31
Lisica
brig62 писал(а): 04 янв 2018, 17:27И все будет работать
Вопрос повторю - что подаст на двиг напряжение и что снимет.
На двигателе с двумя направлениями вращения не один то вед. проводок. Туда нужно подать - направление и питание. (на блок реле, конечно)
Получается у вас он, при 1 едет туда, стоп нету, подал 0 поехал обратно. остановить как?
FLProg для конечных автоматов, учебная задача
Добавлено: 04 янв 2018, 17:33
Evgesha
Brig62, что это за блог free log ?
FLProg для конечных автоматов, учебная задача
Добавлено: 04 янв 2018, 17:35
pan
[ref]Evgesha[/ref], ну что же вы даже штатные блоки не знаете...
это таблица состояний.
FLProg для конечных автоматов, учебная задача
Добавлено: 04 янв 2018, 17:36
brig62
Переделал немного. Без хода назад.
002 Механизмы.flp
FLProg для конечных автоматов, учебная задача
Добавлено: 04 янв 2018, 17:38
Evgesha
PAN, я им никогда непользовался, что то неприходилось. Вот и незнаю.
