PDA

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


Клишанец Петя
19.04.2016, 18:21
есть ли способ узнать, сколько времени занимает выполнение набора команд в кrl? может есть таймер?

ProductManager
19.04.2016, 22:49
такт цикла выполнения программы - 50 мс.
опишите вашу критичную ко времени задачу.

Саша Ястрин
19.04.2016, 22:51
да! можно поставить и потом остановить таймер

ProductManager
20.04.2016, 08:55
$timer[1]=0
$timer_stop[1]=False
PTP p1
...
PTP p10
$timer_stop[1]=true

Посмотреть значение можно через верхнее меню - переменные - таймеры

Клишанец Петя
20.04.2016, 21:39
сделал, но не вижу по дисплею, что таймер работает.

Саша Ястрин
21.04.2016, 17:31
использовали Wаit Sес 0?

Антон Комаров
21.04.2016, 20:05
или еще можно команду Trigger

Клишанец Петя
23.04.2016, 18:12
спасибо, я попробую и отпишу

Фарит
28.12.2019, 07:23
здравствуйте.
появилась необходимость в программе включать выход на несколько секунд (больше 3 секунд, которые есть в Pulse). решил использовать такую последовательность:

$timer_stop[1]=true; стоп таймера
$timer[1]=0; обнуление таймера
Out[10] True;включить выход 10
$timer[1]=-10000;установка времени 10 сек
$timer_stop[1]=false; пуск таймера
If $timer_flag[1]==true Then;при переходе таймера с минуса в плюс срабатывает флаг
Out[10] False; выключить выход 10
$timer_stop[1]=true; стоп таймера
Endif

запускаю программу, в мониторе смотрю состояние таймера. начинается отсчёт с -10000. при достижении значения 0 появляется галочка.
но операторы внутри условия (if) не выполняются, выход не выключается, таймер продолжает считать. ошибок (сообщений) не выдаёт.
что посоветуете? где неправильно?

Pavel_T
29.12.2019, 09:08
попробуйте вместо:
If $timer_flag[1]==true
использовать:
WAIT FOR $timer_flag[1]==true

Роботёр
30.12.2019, 00:35
Фарит, у тебя по синтаксису написано все правильно. Но сама программа некорректна. Т.е. условие if у тебя никогда не выполнить, т.к. просто не проходит 10 секунд, поэтому и выход не выключается. Pavel_T прав, надо использовать команду wait

Фарит
10.01.2020, 10:55
формуляр Wait For останавливает программу. стоит ждёт, пока таймер не кончит считать. в формулярах Pulse и Syn Out максимальное время по умолчанию =3 сек. в режиме экспертного программирования можно изменить это время. но я не нашел как это сделать. может кто-то изучал экспертное программирование? в каком файле это лежит?

Роботёр
10.01.2020, 11:23
Так Pavel_T выше же написал как это сделать.
Т.е. ты заходишь в режим эксперта, открываешь программу (надо нажать именно "открыть", а не "выбрать") и в нужном месте прописываешь строчку руками на клавиатуре
WAIT FOR $timer_flag[1]==true

Роботёр
10.01.2020, 11:28
WAIT FOR $timer_flag[1]==true - ожидание переменной в состояние true
wait sec 5 - ожидание 5 секунд.
Если нельзя ставить более трех секунд, то можно нафигачить несколько раз по 3 секунды

Роботёр
10.01.2020, 11:36
Если именно в по сигналу Pulse, то вот так он пишется не в формуляре
PULSE ($OUT[1],TRUE,2.1)
Соответственно последнее это время, Но я не уверен, что можно больше 3 сек. поставить. Надо пробовать

Роботёр
10.01.2020, 11:38
конечно вместо $out[1] можно использовать переменную

Фарит
10.01.2020, 12:16
1. при использовании Wait For - программа останавливается. а если мне нужно в нескольких местах программы по 30 секунд включать какой-то выход, то сколько набежит простоя.
2. Pulse - максимальное время=3 секунды. несколько раз подряд использовать не получится. будет постоянное вкл/выкл выхода.
3. экспертное программирование - это зайти в системные файлы и изменить атрибуты выбранного формуляра. например: изменить максимальное время с 3 сек до 20 сек в формуляре Pulse. а вот как это сделать? вопрос в этом.

Роботёр
10.01.2020, 15:02
1. При использованием команды "continue" перед wait for или $out программа не будет останавливаться. Но в данном случае тяжело предугадать момент срабатывания. Как правило срабатывание происходит за три строчки до команды (это при условии что препроцессор advance настроен по умолчанию на 3). Пример ниже, сам так использовал раньше.

continue
wait for vacuum
CONTINUE
$OUT[6]=TRUE

2. По поводу сигнала Pulse. Посмотрел в мануале - длительность сигнала может быть до 1000000 секунд. Так что никакие не 3 секунды. Еще раз говорю попробуй не формуляром писать, а KRL.

Фарит
13.01.2020, 12:00
всем спасибо. работает команда набранная с пульта
Pulse ($out[1],true,20). даже выключается раньше времени по заданному условию.