Ответ
 
Опции темы Поиск в этой теме
Старый 18.04.2020, 14:19   #1
Сергей-Олевс
Мастер
 
Регистрация: 28.09.2019
Сообщения: 46
Сказал Спасибо: 4
Сказали Спасибо 1 раз(а) в 1 сообщении
По умолчанию программирование цифровых входов/выходов

Здравствуйте. Подскажите пожалуйста кто может правильно написать код.
1) Необходимо написать строку кода по приходу в которую робот останавливается и стоит ждёт если к примеру на 1 входе ничего нет (false), а когда появляется (True) начинает выполнение программы с самого начала.
2) Когда к примеру на 2 вход приходит сигнал останавливался к примеру на 60 сёк, а далее продолжал программу.
Сергей-Олевс вне форума   Ответить с цитированием
Старый 18.04.2020, 17:22   #2
andy_18
Гуру
 
Регистрация: 15.07.2014
Сообщения: 93
Сказал Спасибо: 0
Сказали Спасибо 6 раз(а) в 6 сообщении
По умолчанию

По варианту "1" не понятно, что означает "начинает выполнение программы с самого начала", начало текущей (выбранной) программы или нужен возврат в программу cell ?

По поводу варианта "2" одной строчкой не получится, тут надо
а) активировать прерывание в программе Cell
б) создать подпрограмму задержки необходимого времени


а) кусок кода в программе Cell который нужно дописать до выбора рабочей программы.

INTERRUPT DECL 81 WHEN $in[2] DO wait_time()
INTERRUPT ON 81

б) Вновь созданная программа "wait_time" содержит всего одну команду

Wait sec 60
andy_18 вне форума   Ответить с цитированием
Старый 19.04.2020, 07:04   #3
Сергей-Олевс
Мастер
 
Регистрация: 28.09.2019
Сообщения: 46
Сказал Спасибо: 4
Сказали Спасибо 1 раз(а) в 1 сообщении
По умолчанию

спасибо за решение второго вопроса.
а по первому - нужен непосредственно возврат на начало той программы в которой находится обращение к входу.
Сергей-Олевс вне форума   Ответить с цитированием
Старый 19.04.2020, 08:07   #4
Сергей-Олевс
Мастер
 
Регистрация: 28.09.2019
Сообщения: 46
Сказал Спасибо: 4
Сказали Спасибо 1 раз(а) в 1 сообщении
По умолчанию

Вот собственно программа. После ее выполнения робот останавливается и стоит. Цель : оператор подходит и жмет на отдельно выведенную кнопку подключенную к входу и робот начинает выполнять программу снова. В этой программе как видите есть переходы на другие программы, а в них еще десяток подпрограмм, но в итоге он вернется обратно в эту программу и должен после нажатия на кнопку начать все с начала выполнять программу palete.
DEF palete( )
DECL POS PICKPOS [3,3]
DECL POS PREPOS [3,3]
DECL INT ROW,COL
DECL REAL DX,DY,DZ
DX=-80.0
DY=80.0
DZ=-136.0
FOR ROW= 1 TO 3
FOR COL= 1 TO 3
PICKPOS[ROW,COL] =XSTARTPOS
PICKPOS[ROW,COL].X=PICKPOS[ROW,COL].X+ (ROW-1)*DX
PICKPOS[ROW,COL].Y=PICKPOS[ROW,COL].Y+ (COL-1)*DY
ENDFOR
ENDFOR


FOR ROW= 1 TO 3
FOR COL= 1 TO 3
PREPOS[ROW,COL]=PICKPOS[ROW,COL]
PREPOS[ROW,COL].Z=PREPOS[ROW,COL].Z-DZ
ENDFOR
ENDFOR

;PALLETE
FOR ROW = 1 TO 3
FOR COL = 1 TO 3
PAL1_0()
$BASE=BASE_DATA[1]
$TOOL=TOOL_DATA[2]
SPTP PREPOS [ROW,COL]
SLIN PICKPOS[ROW,COL]
WAIT SEC 5
SLIN PREPOS [ROW,COL]
PAL_1_1()
kol6_chern()
kol6_chisto()
;DEPALLETE
;FOR ROW = 1 TO 3
;FOR COL = 1 TO 3
pal_1()
$BASE=BASE_DATA[1]
$TOOL=TOOL_DATA[2]
SPTP PREPOS[ROW,COL]
SLIN PICKPOS[ROW,COL]
WAIT SEC 6
SLIN PREPOS[ROW,COL]
PAL_1_1()
ENDFOR
ENDFOR
END
Сергей-Олевс вне форума   Ответить с цитированием
cказали "Спасибо" Сергей-Олевс за это сообщение:
kuka_man (19.04.2020)
Старый 19.04.2020, 16:19   #5
kuka_man
Гуру
 
Регистрация: 17.12.2008
Сообщения: 199
Сказал Спасибо: 6
Сказали Спасибо 6 раз(а) в 6 сообщении
По умолчанию

Сообщение от сергей-олевс Посмотреть сообщение
вот собственно программа.
+1
качественный бекстейдж!
kuka_man вне форума   Ответить с цитированием
Старый 19.04.2020, 17:42   #6
andy_18
Гуру
 
Регистрация: 15.07.2014
Сообщения: 93
Сказал Спасибо: 0
Сказали Спасибо 6 раз(а) в 6 сообщении
По умолчанию

у вас в программе много разных позиций робота и из любой из них он может вернуться в исходную точку ничего не поломав ? или контроль входа нужен только в конце программы ?
andy_18 вне форума   Ответить с цитированием
Старый 19.04.2020, 18:20   #7
Сергей-Олевс
Мастер
 
Регистрация: 28.09.2019
Сообщения: 46
Сказал Спасибо: 4
Сказали Спасибо 1 раз(а) в 1 сообщении
По умолчанию

да, только в конце программы когда он уже находится в нужной точке.
Сергей-Олевс вне форума   Ответить с цитированием
Старый 19.04.2020, 18:33   #8
andy_18
Гуру
 
Регистрация: 15.07.2014
Сообщения: 93
Сказал Спасибо: 0
Сказали Спасибо 6 раз(а) в 6 сообщении
По умолчанию

это начало вашей программы, но добавлена метка begin

DEF palete( )
begin:
DECL POS PICKPOS [3,3]
DECL POS PREPOS [3,3]
DECL INT ROW,COL
DECL REAL DX,DY,DZ
DX=-80.0



далее конец программы, но добавлены команды wait for $in [1] и goto begin


SLIN PREPOS[ROW,COL]
PAL_1_1()
ENDFOR
ENDFOR

wait for $in [1]
goto begin

END
andy_18 вне форума   Ответить с цитированием
cказали "Спасибо" andy_18 за это сообщение:
Старый 19.04.2020, 18:42   #9
Сергей-Олевс
Мастер
 
Регистрация: 28.09.2019
Сообщения: 46
Сказал Спасибо: 4
Сказали Спасибо 1 раз(а) в 1 сообщении
По умолчанию

пробовал примерно так же только не через wait а when- спасибо- завтра протестирую отпишусь
Сергей-Олевс вне форума   Ответить с цитированием
Старый 19.04.2020, 18:44   #10
andy_18
Гуру
 
Регистрация: 15.07.2014
Сообщения: 93
Сказал Спасибо: 0
Сказали Спасибо 6 раз(а) в 6 сообщении
По умолчанию

а если кнопка оператора залипнет ? робот сразу начнет работать с начала программы. Правильнее будет так:

SLIN PREPOS[ROW,COL]
PAL_1_1()
ENDFOR
ENDFOR

wait for not $in [1]
wait for $in [1]
goto begin
andy_18 вне форума   Ответить с цитированием
Ответ
Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.


Часовой пояс GMT +2, время: 17:37.

vBulletin v3.6.2, Copyright ©2000-2024, Jelsoft Enterprises Ltd.
Русский перевод: zCarot, Vovan & Co