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

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 пользователей

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




×
×
  • Создать...