Перейти к публикации

KAREL FANUC


Kawazaki

Рекомендованные сообщения

Всем привет, есть ли тут ребята которые шарят в программирование KAREL?

Стоит задача передвинуть оси робота и доп оси на заданное значение. Вот то что пока накидал, но я что-то не догоняю.

 

PROGRAM TEST_KAREL

%ENVIRONMENT TPE
%ENVIRONMENT BYNAM
CONST

    MAX_AXS = 9
    JNT_POS = 9
    XYZ_POS = 2

VAR

    to_prog: STRING[25]
    open_id: INTEGER
    status: INTEGER
    position_no: INTEGER

    jp_org   : ARRAY [9] OF REAL
    jp_new   : ARRAY [9] OF REAL
    
    prg_select: INTEGER
    arr_size  : INTEGER
    indx      : INTEGER
    
    indx_pos: INTEGER
    num_pos : INTEGER
    indx_axs: INTEGER
    num_axs : INTEGER
    pos_typ : INTEGER
    
    group_no: INTEGER
    
    org_jpos : JOINTPOS
    new_jpos : JOINTPOS
    posn_type: INTEGER
    org_xyz  : XYZWPREXT
    new_xyz  : XYZWPREXT
    org_xyz_ext  : XYZWPREXT
    new_xyz_ext  : XYZWPREXT
    
    
BEGIN
    
    to_prog = 'TEST_TP_1'
    
    OPEN_TPE (to_prog, TPE_RWACC, TPE_RDREJ, open_id, status)
    
    group_no = 1
    position_no = 3
    
    GET_POS_TYP (open_id, indx_pos, group_no, posn_type, num_axs, status)
    
            WRITE ('get_pos_typ status', status,CR)
        
        SELECT pos_typ OF
            
            CASE (JNT_POS):
            
    SET_JPOS_TPE (open_id, indx_pos, new_jpos, status)
        
            WRITE ('indx_pos', indx_pos, 'new_jpos',CR, new_jpos,CR)
            
        ENDSELECT
                                        
            org_jpos = GET_JPOS_TPE (open_id, indx_pos, status)
    
        org_xyz = GET_POS_TPE (open_id , indx_pos, status)
            
        new_xyz.x = org_xyz.x +10
        new_xyz.y = org_xyz.y +0
        new_xyz.z = org_xyz.z +0
        new_xyz.w = org_xyz.w +0
        new_xyz.p = org_xyz.p +0
        new_xyz.r = org_xyz.r +0
        new_xyz_ext[1] = org_xyz_ext[1] + 10
        new_xyz_ext2 = org_xyz_ext2 + 10
        new_xyz_ext3 = org_xyz_ext3 + 10
        
        SET_POS_TPE (open_id, position_no, new_xyz, status)

    CLOSE_TPE (open_id, status)
    
END TEST_KAREL

 

ОШИБКИ при компиляции

 

KTRANS Version V8.30 (Build 30  11/12/2019)
Copyright (C) FANUC America Corporation, 1985 through 2016.
All Rights Reserved.

 

D:\NikolaevAS\Desktop\untitled18.kl(75)
  75   new_xyz_ext[1] = org_xyz_ext[1] + 10
                                  ^ ERROR
Id type is not an ARRAY or indexing exceeded number of dimensions.  Id: ORG_XYZ_EXT

D:\NikolaevAS\Desktop\untitled18.kl(76)
  76   new_xyz_ext2 = org_xyz_ext2 + 10
                                 ^ ERROR
Id must be defined before this use.  Id: ORG_XYZ_EXT2

D:\NikolaevAS\Desktop\untitled18.kl(77)
  77   new_xyz_ext3 = org_xyz_ext3 + 10
                                 ^ ERROR
Id must be defined before this use.  Id: ORG_XYZ_EXT3

D:\NikolaevAS\Desktop\untitled18.kl(79)
  79   SET_POS_TPE (open_id, position_no, new_xyz, status)
                                                ^ WARNING
Argument will be passed by value.  Id: NEW_XYZ


===============Translation not successful===============
Build Failed: Error translating program: Code: 0xFFFFFFFF:  
----------------------------------------------------------------------

 

 

Ссылка на сообщение
Поделиться на других сайтах


UnPinned posts

@Kawazaki Ну он же пишет вам в чем ошибка при компиляции.

ORG_XYZ_EXT - не является массивом или указан индекс за пределами массива

ORG_XYZ_EXT2 - не определена

ORG_XYZ_EXT3 - не определена

Думаю, вместо:

        new_xyz_ext[1] = org_xyz_ext[1] + 10
        new_xyz_ext2 = org_xyz_ext2 + 10
        new_xyz_ext3 = org_xyz_ext3 + 10

Должно быть:

        new_xyz_ext[1] = org_xyz_ext[1] + 10
        new_xyz_ext[2] = org_xyz_ext[2] + 10
        new_xyz_ext[3] = org_xyz_ext[3] + 10

Может org_xyz_ext нужно будет определить начальные значения?

Не в курсе особенностей программирования для KAREL, но как минимум часть проблемных моментов видно и так. Руководство есть?

 

 

Ссылка на сообщение
Поделиться на других сайтах
1 час назад, mr_Voden сказал:

@Kawazaki Ну он же пишет вам в чем ошибка при компиляции.

ORG_XYZ_EXT - не является массивом или указан индекс за пределами массива

ORG_XYZ_EXT2 - не определена

ORG_XYZ_EXT3 - не определена

Думаю, вместо:

        new_xyz_ext[1] = org_xyz_ext[1] + 10
        new_xyz_ext2 = org_xyz_ext2 + 10
        new_xyz_ext3 = org_xyz_ext3 + 10

Должно быть:

        new_xyz_ext[1] = org_xyz_ext[1] + 10
        new_xyz_ext[2] = org_xyz_ext[2] + 10
        new_xyz_ext[3] = org_xyz_ext[3] + 10

Может org_xyz_ext нужно будет определить начальные значения?

Не в курсе особенностей программирования для KAREL, но как минимум часть проблемных моментов видно и так. Руководство есть?

 

 

как ты пробовал раньше, проблема в том что не в джоинте не знаю как определить доп оси, через JOY_POS пытался ничего не вышло, скомпилировал, но по итогу результата не было никакого, руководство есть могу скинуть.

 

 

 

 

это через JOY_POS

 

PROGRAM TEST_KAREL_2

%ENVIRONMENT TPE
%ENVIRONMENT BYNAM

CONST

    MAX_AXS = 9
    JNT_POS = 9
    XYZ_POS = 2

VAR

    to_prog: STRING[25]
    open_id: INTEGER
    status: INTEGER
    position_no: INTEGER

    jp_org   : ARRAY [9] OF REAL
    jp_new   : ARRAY [9] OF REAL
    
    prg_select: INTEGER
    arr_size  : INTEGER
    indx      : INTEGER
    
    indx_pos: INTEGER
    num_pos : INTEGER
    indx_axs: INTEGER
    num_axs : INTEGER
    pos_typ : INTEGER
    
    group_no: INTEGER
    
    org_jpos : JOINTPOS
    new_jpos : JOINTPOS
        
BEGIN
    
    to_prog = 'TEST_TP'
    
    OPEN_TPE (to_prog, TPE_RWACC, TPE_RWREJ, open_id, status)
    
    group_no = 1
    
    position_no = 3

    GET_POS_TYP (open_id, indx_pos, group_no, pos_typ, num_axs, status)
    
        WRITE ('get_pos_typ status', status,CR)
        
        SELECT pos_typ OF
            
            CASE (JNT_POS):
                                        
            org_jpos = GET_JPOS_TPE (open_id, indx_pos, status)
            
        CNV_JPOS_REL (org_jpos,  jp_org, status)
        
        FOR indx_axs = 7 TO num_axs DO
            
            jp_new[7] = jp_org[7] + 300
            jp_new[8] = jp_org[8] + 1000
            jp_new[9] = jp_org[9] + 5000
            
        ENDFOR
        
        SET_JPOS_TPE (open_id, indx_pos, new_jpos, status)
        
            WRITE ('indx_pos', indx_pos, 'new_jpos',CR, new_jpos,CR)
            
        ENDSELECT
            
    CLOSE_TPE (open_id, status)
        
END TEST_KAREL_2

 

Ссылка на сообщение
Поделиться на других сайтах

@Kawazaki Я говорил про синтаксические ошибки в коде в вашем первом посте. Да и во втором они тоже есть. Может поэтому не получалось? Кидайте руководство, лишним не будет. 

Ссылка на сообщение
Поделиться на других сайтах

Есть у кого нибудь пример программы на Karel по сдвигу дополнительных осей на роботах FANUC?

 

Или проконсультировать по этому вопросу.

Ссылка на сообщение
Поделиться на других сайтах

Присоединяйтесь к обсуждению

Вы можете опубликовать сообщение сейчас, а зарегистрироваться позже. Если у вас есть аккаунт, войдите в него для написания от своего имени.
Примечание: вашему сообщению потребуется утверждение модератора, прежде чем оно станет доступным.

Гость
Ответить в тему...

×   Вставлено в виде отформатированного текста.   Вставить в виде обычного текста

  Разрешено не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отобразить как ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставить изображения напрямую. Загрузите или вставьте изображения по ссылке.

  • Сейчас на странице   0 пользователей

    Нет пользователей, просматривающих эту страницу.




  • Сообщения

    • ID_Hacker
      Не упускаю. Потому что сообщение 21612 с причиной 1 точно описывает что разрешение работы сброшено. Последующий аварийный останов от привода и ошибки контроля контура это подтверждают.   Дефекты энкодера, кабеля, разъёма приведут к своим ошибкам которых не наблюдается. Как и пропадание готовности привода приведёт к своим ошибкам.   В любом случае необходимо определять формирование DBX2.1.
    • Нурлан
      Здравствуйте.   Если были бы у нас поблизости компетентные люди разбирающиеся в током вопросе . Которые смогли бы помочь и правильно объяснить как с этой проблемой бороться, но увы таковых нет.  
    • Bot
      Об авторах: Мария Золотова — BIM-специалист строительной компании, по первому образованию — театральный режиссер, Софья Минина — BIM-менеджер, по второму образованию — психолог, Владимир Талапов — BIM-эксперт, всего одно образование — математик. См. также BIM и Театр: искусство возможного. Часть 1, BIM и Театр: искусство возможного. Часть 2, BIM и Театр: искусство возможного. Часть 3. Информационное моделирование зданий и сооружений, как творческий процесс, имеет много общего с не менее творческим процессом постановки театральных спектаклей. Поэтому изучение театрального опыта, его наработанных взаимосвязей участников и методик их взаимодействия может существенно помочь становлению и использованию BIM в строительной отрасли. В этой части речь пойдет о тех, кто вроде бы непосредственно не участвует в постановке спектакля или информационном моделировании, но от кого эти процессы существенно зависят. «Кто платит, тот и заказывает музыку» Итак, кто же [...] View the full article
    • Guhl
      Понятия не имею
    • Александр 36
      А где можно скачать русифицированную версию
    • BASH_HD
      В Москве) но вообще по мнению японцев станок в Германии) но это не точно...   Аукцон и BAFA знали куда продали.
    • Alexandr97
    • Andrey_kzn
      Логика работы у них та же самая. И интерфейсные сигналы те же. Вы упускаете из виду сигнал готовность привода. Это DB3x.DBX93.5. Выстраивайте логическую цепь событий. Формирование сигнала DDX2.1 может быть завязано на готовность привода.  Не будет готовности привода, можете сколько угодно выставлять DBX2.1, ось никуда не поедет. А готовность может пропадать из-за дефекта энкодера, кабеля, разъёмов и т.п.  Надо сделать трассировку всех этих приводных сигналов,  заодно посмотрите также DBX93.7 и DBX21.7.  И понять, что какой сигнал пропадает первым.
    • Guhl
      Опять я забыл про это меню. Оно в корне лежит, а я туплю Спасибо  
    • gudstartup
      @Guhl все это настраивается здесь
×
×
  • Создать...