PDA

Просмотр полной версии : кнопка Прерывания Процесса



Югорск
04.04.2020, 12:35
Здравствуйте!

Имеется ПР200-24. Управление тремя каретками. Цель - провести по специальному алгоритму три каретки в крайнее правое положение.
Кнопкой S1 (триггер DI-1) запускается длительный процесс последовательных срабатываний DO-1, DO-2 и DO-3. Каретки движутся вправо. Используются макросы "Интервал v13Ex1".
ЭТО СДЕЛАНО

48250

ТРЕБУЕТСЯ ОРГАНИЗОВАТЬ ВОЗМОЖНОСТЬ ПРЕРЫВАНИЯ ПРОЦЕССА

Планирую установить три геркона в начальном (левом) положении.
Получится, что в начальном положении все каретки находятся слева (герконы DI-4, DI-5, DI-6 замкнуты)
При нажатии "кнопки сброса" S2 (DI-2) процесс требуется прервать и вернуть каретки на исходную позицию: подать сигналы на DO-4, DO-5, DO-6 до срабатывания датчиков DI-4, DI-5, DI-6 (при срабатывании DI-5 пропадает сигнал на DO-5, при срабатывании DI-6 пропадает сигнал на DO-6)
По умолчанию, когда последняя каретка приходит в крайнее правое положение (по программе), также выполняется программа возврата в исходное левое положение.
Переход в режим ожидания нажатия триггера S1.

Теоретически интервалы времени могли бы быть одинаковыми. BB=CC=DD=FF=GG=HH
Но макросы не дают пользоваться одной и той же переменной ВВ. Можно ли как-нибудь упростить?

Помогите, пожалуйста.

dan75
04.04.2020, 18:15
Не зная начинку макроса, трудно сказать. Где вы его взяли?

Югорск
05.04.2020, 05:38
Мне его дал уважаемый Petera.
Программу можно прерывать между макросами, когда заканчивает двигаться одна каретка и начинает другая.

Югорск
05.04.2020, 05:43
Если задачу упростить:
С чистого листа . . .
Нажатие кнопки (триггер) DI-1 = логическая единица на DO-1
срабатывание датчика DI-2 = логический ноль на DO-1

Югорск
05.04.2020, 05:52
внутри макроса Интервал макрос Ton
48263
48264

ferret_maybe
06.04.2020, 00:57
Здравствуйте!

Имеется ПР200-24. Управление тремя каретками. Цель - провести по специальному алгоритму три каретки в крайнее правое положение.
Кнопкой S1 (триггер DI-1) запускается длительный процесс последовательных срабатываний DO-1, DO-2 и DO-3. Каретки движутся вправо. Используются макросы "Интервал v13Ex1".
ЭТО СДЕЛАНО

48250

ТРЕБУЕТСЯ ОРГАНИЗОВАТЬ ВОЗМОЖНОСТЬ ПРЕРЫВАНИЯ ПРОЦЕССА

Планирую установить три геркона в начальном (левом) положении.
Получится, что в начальном положении все каретки находятся слева (герконы DI-4, DI-5, DI-6 замкнуты)
При нажатии "кнопки сброса" S2 (DI-2) процесс требуется прервать и вернуть каретки на исходную позицию: подать сигналы на DO-4, DO-5, DO-6 до срабатывания датчиков DI-4, DI-5, DI-6 (при срабатывании DI-5 пропадает сигнал на DO-5, при срабатывании DI-6 пропадает сигнал на DO-6)
По умолчанию, когда последняя каретка приходит в крайнее правое положение (по программе), также выполняется программа возврата в исходное левое положение.
Переход в режим ожидания нажатия триггера S1.

Теоретически интервалы времени могли бы быть одинаковыми. BB=CC=DD=FF=GG=HH
Но макросы не дают пользоваться одной и той же переменной ВВ. Можно ли как-нибудь упростить?

Помогите, пожалуйста.
Если честно, то задание совсем не понятно. В чем заключается мысль выражения - "провести по специальному алгоритму"? Можете описать подробнее? Например, после поступления разрешающего сигнала 1-я каретка движется до крайнеправого положения, после завершения движения 1-й каретки - сигнал от концевого датчика начинает двигаться 2-я каретка вправо до крайне правого положения, затем третья. Затем все каретки одновременно должны вернуться или есть какая-то последовательность?

Сергей0308
06.04.2020, 01:51
Если задачу упростить:
С чистого листа . . .
Нажатие кнопки (триггер) DI-1 = логическая единица на DO-1
срабатывание датчика DI-2 = логический ноль на DO-1

Тогда вам и таймеры не нужны, достаточно триггеров!

Была подобная тема(про задание интервалов времени): https://owen.ru/forum/showthread.php?t=27872

Югорск
06.04.2020, 19:32
Если честно, то задание совсем не понятно. В чем заключается мысль выражения - "провести по специальному алгоритму"? Можете описать подробнее? Например, после поступления разрешающего сигнала 1-я каретка движется до крайнеправого положения, после завершения движения 1-й каретки - сигнал от концевого датчика начинает двигаться 2-я каретка вправо до крайне правого положения, затем третья. Затем все каретки одновременно должны вернуться или есть какая-то последовательность?

На примере видно, что по времени движутся первая, затем вторая, затем третья каретки. Далее опять первая-вторая-третья. Очерёдность может быть любой, главное что каждая каретка проходит свой путь за пять-десять "шагов". Датчика финиша нет. Программа проводит все каретки до конца по временнЫм сигналам и подаёт сигнал обратного хода на все каретки до срабатывания датчика "на старте".

Югорск
06.04.2020, 19:54
Предвижу ситуацию, когда нажали кнопку RESET (DI-2). Первая каретка успела пройти 3 шага, вторая 6 шагов, а третья стоит на финише (10 шагов).
На каждую каретку подаётся сигнал "реверс". Все каретки начинают двигаться в начало. Вначале срабатывает датчик у первой каретки и она останавливается. Вторая и третья продолжают двигаться. Затем останавливается вторая каретка и, наконец, третья.
Режим ожидания. Ждём нажатия DI-1.

Югорск
06.04.2020, 20:00
Интуиция подсказывает двигаться в таком вот направлении . . .
48317

Югорск
06.04.2020, 20:03
Пока получилась кнопка пауза. Но как перенаправить сигнал на DO-4, DO-5 и DO-6 ?

Сергей0308
07.04.2020, 16:40
Пока получилась кнопка пауза. Но как перенаправить сигнал на DO-4, DO-5 и DO-6 ?

Возвращаться в начальное положение они тоже должны по очереди или можно всем одновременно назад ехать?

Югорск
07.04.2020, 23:19
Каретки начинают двигаться обратно одновременно, но каждая каретка пройдёт разное расстояние. Я привёл подробное описание.

Сергей0308
07.04.2020, 23:34
Каретки начинают двигаться обратно одновременно, но каждая каретка пройдёт разное расстояние. Я привёл подробное описание.

Да, это я просмотрел, Вы об этом написали! Хорошо, с этим понятно, как тогда макросы работают, я так понимаю, это нечто похожее на импульс включения заданной длительности? И зачем по два на каждый выход(каретку)?
У вас, как я понимаю на данный момент, команды перемещения вправо следуют по очереди, не накладываясь друг на друга, короче, мне кажется достаточно одного таймера на все каретки(выхода), если продолжительность импульсов разная для разных кареток(выходов), то + мультиплексор(целочисленный) и зачем какой-то специальный макрос, неужели не хватает ФБ из ОЛ?

Примерно как-то так:

48339

48340

Вот немного переделал проект, насколько понял ваши хотелки с одинаковым временем импульса для всех кареток:

48341

48342

Короче, если надо разное время импульса для разных кареток можно добавить мультиплексор, уже писал об этом, из того, что Вы написали, так и не смог этого понять, боюсь никто не станет из Вас вытягивать, что Вы хотите, это должно быть абсолютно понятно из ваших описаний, ну я так думаю!

Вот второй вариант проекта:

48394

48395

Югорск
08.04.2020, 07:08
Время импульсов одинаковое.
Я постарался как можно точнее, пошагово, описать алгоритм работы.

Югорск
08.04.2020, 10:19
48343

Какой макрос сюда бы подошёл?
IF DI2=1 then GOTO reverse ELSE next step