26.08.2020, 12:25
|
#11
|
Гуру
Регистрация: 19.04.2020
Сообщения: 215
Сказал Спасибо: 4
Сказали Спасибо 3 раз(а) в 3 сообщении
|
DEF interrupt_20( )
GLOBAL INTERRUPT DECL 33 WHEN $MEAS_PULSE[3]==TRUE DO forward()
INI
INT i;
INT t;
INT l;
INT cou;
INT hicou;
INT cmhicou;
INT r;
и т.д.
Ну дословный же перевод - глобальное объявление прерывания 33, когда $MEAS и далее...
Я же просто по форуму нашел обсуждение ошибочного, и быстро исправленного примера: http://robotforum.ru/forum/showthrea...ight=interrupt
====
Вот потому и упираюсь рогом не в логику или даже семантику, а в, видимо, оформление.
Это как те, кто и так прекрасно программируют на куче языков, как я, в первые несколько дней люто матерятся от простейшего Питона, потому что там каждый отступ и табуляция очень важны, хотя это безумие какое-то .
Значит что-то не так с оформлением... Но что? В сотенностраничных талмудах уже упрел ковыряться ))
|
|
|
|
26.08.2020, 13:25
|
#12
|
Гуру
Регистрация: 19.04.2020
Сообщения: 215
Сказал Спасибо: 4
Сказали Спасибо 3 раз(а) в 3 сообщении
|
Полнейший маразм... Наплевал на ОранжЭдит и влепил в обычном текстовике. Кстати Оранж весело чавкнул и проглотил, но где делать грамотно INI я так и не нашел.
Однако на оба этих варианта - https://yadi.sk/i/IQlnt-pYIACgXg
выдаётся одинаковая ошибка?!?:
"
Описание не находится а разделе описаний
***INT i;
"
Опупенительно. А где этот раздел тогда, куда пихать свои переменные, если подфолдер fold user ini не подходит, а после всего ini место тоже неподходящее, хотя до возни с прерыванием я тупо строчил
"
INI
INT i;
"
и все прекрасно работало?!!!
Прямо такой же бред, как с костылявым gw-basic на первых PC после нормальных бейсиков для z80, atari и даже бк0010...
Где глюк? ((
|
|
|
|
26.08.2020, 14:57
|
#13
|
Гуру
Регистрация: 20.12.2017
Сообщения: 712
Сказал Спасибо: 19
Сказали Спасибо 145 раз(а) в 138 сообщении
|
сделай декларацию переменных до формуляра ini
|
|
|
cказали "Спасибо" Роботёр за это сообщение:
|
|
|
26.08.2020, 15:03
|
#14
|
Гуру
Регистрация: 19.04.2020
Сообщения: 215
Сказал Спасибо: 4
Сказали Спасибо 3 раз(а) в 3 сообщении
|
гм... сейчас попробую через 10 мин!
|
|
|
|
26.08.2020, 15:35
|
#15
|
Гуру
Регистрация: 19.04.2020
Сообщения: 215
Сказал Спасибо: 4
Сказали Спасибо 3 раз(а) в 3 сообщении
|
обалденительно! робот сожрал код.
спасибо!!!
все же это не я тупой, это немцы наперекор своей немецкости оставили сырость в языке! хоть бы взяли за образец простенький, но за полвека буквально вылизанный до блеска синтаксис паскаля.
теперь можно разбираться с самим прерыванием, потому что пока не срабатывает эвент...
|
|
|
|
26.08.2020, 18:15
|
#16
|
Гуру
Регистрация: 20.12.2017
Сообщения: 712
Сказал Спасибо: 19
Сказали Спасибо 145 раз(а) в 138 сообщении
|
еще все переменные можно деккларировать в файле config.dat. при этом они автоматически становятся глобальными.
что с прерыванием, что не срабатывает?
|
|
|
|
28.08.2020, 08:58
|
#17
|
Гуру
Регистрация: 19.04.2020
Сообщения: 215
Сказал Спасибо: 4
Сказали Спасибо 3 раз(а) в 3 сообщении
|
само прерывание уже сработало, но нельзя сделать, например, в общем коде
--
PTP_REL{Z 1000}
--
А в процедуре прерывания
--
PTP_REL {Z 100}
--
И вернуться так, чтобы PTP_REL{Z 1000} осталось актуальным, то есть чтобы конечная точка движения не изменилась - робот просто ыдает вполне ожидаемую ошибку и стопорится. Вместо 1000 нужна переменная, но, во-первых, мнений прорва, а в доступных описаниях есть только синтаксис оформления, но рабочих примеров у меня нет.
Пока реалистичными выглядят варианты просто с переменными, как вы указали, но не знаю банально как их там оформлять - это юниты, списки или составные переменные просто синтаксис неясен.
Но есть еще, как бает интернет, переменные, которые являются системными, и одна из них, например, в любой момент времени выдает текущее состояние координат. Логично в начале самой процедуры прерывания сохранить в отдельную переменную текущие координаты и конце процедуры отправить PTP_ по этой переменной.
Но снова как с этим работать, чтобы PTP принял переменную. Видимо оба вопроса актуальны: как оформляются все эти e6pos и т.д., в чем их отличие, и как использовать технопеременные с актуальными координатами.
По сути это и есть "окончательное решение робото-вопроса" ))
P.S.
У меня PTP_REL на больших расстояниях делает заметную дугу (что логично для суставного робота), а чем заменить команду, чтобы движение было строго по прямой?
А то у меня есть прорва глубоких и хитрых мануалов, которые я тоннами дергал в первую очередь не глядя, как только нарывался на них, а такой простоты нет, так как думал, что доберусь до них в любой момент Но пока с местным интернетом даже сюда строчить приходится через телефон - Рыгорыч лютует аццки уже которую неделю ))
|
|
|
|
28.08.2020, 13:29
|
#18
|
Гуру
Регистрация: 19.04.2020
Сообщения: 215
Сказал Спасибо: 4
Сказали Спасибо 3 раз(а) в 3 сообщении
|
с птп разобрался )) а вот с переменной пока нет.. интернет как у глухонемого в подлодке
Последний раз редактировалось sheppard, 28.08.2020 в 14:07
|
|
|
|
28.08.2020, 19:34
|
#19
|
Мастер
Регистрация: 03.03.2019
Сообщения: 49
Сказал Спасибо: 2
Сказали Спасибо 11 раз(а) в 11 сообщении
|
DECL E6POS MyPoint ;объявляем переменную
E6POS MyPoint={X 0,Y 0,Z 0,A 0,B 0,C 0,S 0,T 0,E1 0.0,E2 0.0,E3 0.0,E4 0.0,E5 0.0,E6 0.0} ;Можешь объявить переменную в dat файле с таким же именем что и src, тогда все значения переменной буду перезаписываться в файл
XP1=$POS_ACT ; в твоем прерывании записываем координату события
$VEL_AXIS[1] = 40 ; задаем если надо другую скорость
$ACC_AXIS[1] = 40 ; и ускорение c A1
.
. ; А2-А5
.
$VEL_AXIS[6] = 40 ; скорость
$ACC_AXIS[6] = 40 ; ускорение по A6
Можно не задавать явно значения скорости, тогда эти величины будут взяты из предыдущего PTP, сделанного через тачап
PTP MyPoint ; выполняем движение
Последний раз редактировалось Ignis, 28.08.2020 в 19:55
|
|
|
|
29.08.2020, 14:13
|
#20
|
Гуру
Регистрация: 19.04.2020
Сообщения: 215
Сказал Спасибо: 4
Сказали Спасибо 3 раз(а) в 3 сообщении
|
не понял от слова совсем ))
---
Тут все ясно:
DECL E6POS MyPoint ;объявляем переменную
E6POS MyPoint={X 0,Y 0,Z 0,A 0,B 0,C 0,S 0,T 0,E1 0.0,E2 0.0,E3 0.0,E4 0.0,E5 0.0,E6 0.0}
XYZ - просто координаты от BASE? (мм, полагаю)
ABC - ?
ST - ?
E1..E6 - углы движков в градусах? И если "да", то дробные значения можно использовать?
Теперь к "боевой" практивке: как мне, например, использовать MyPoint в вычислениях? Мне, например, нужно менять только координату Х.
Я должен по синтаксису написать MyPoint.X=MyPoint.X+10, к примеру? Или MyPoint(X)=MyPoint(X)+10 или использовать {}? В этом вопрос ))
Суть енамов едина со времен макросов ассемблера )) Просто немцам в KRL орднунг отшибло наглухо - косяков в банальном оформлении просто больше, чем в первом Питоне Разок сделали и не стали что-то вылизывать, мол, инженер за пару дней запомнит
2. В вашем примере:
XP1=$POS_ACT
Кто это? Это две переменные типа E6POS, где вторая - системное автоотслеживание текущих координат и поворотов? Насколько я успел уцепить суть, есть три вида переменных, которые предназначены для работы с координатами и углами, из которых тип E6POS - самый универсальный.
Если на все вопросы "да", тогда все совершенно понятно Вот только все-таки хотелось бы расшифровку ABCST...
|
|
|
|
Опции темы |
Поиск в этой теме |
|
|
Ваши права в разделе
|
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения
HTML код Выкл.
|
|
|
Часовой пояс GMT +2, время: 23:23.
|
|