【求助】怎么样转换成台达的机器人语言的学习范例? 点击:242 | 回复:7



gikuy

    
  • 精华:0帖
  • 求助:4帖
  • 帖子:4帖 | 15回
  • 年度积分:85
  • 历史总积分:235
  • 注册:2023年12月29日
发表于:2024-07-30 00:47:38
楼主
求助帖80分-已结帖

求指教:如下机器人编程范例,怎么样转换成台达的机器人语言的学习范例?

  


NG!=0.0

PDEF(0)=4,4,1

*STO1:

MOVE P,P0,Z=NG!

WAIT DI(20)=1

FOR NA%=1 TO 16

        PMOVE(0,NA%),Z=NG!

        WAIT ARM

        DO(20)=1

        WAIT DI(21)=1

        *STO2

        IF DI(21)=0 THEN

            MOVE P,P11,Z=NG!

            WAIT ARM

            DO(20)=0

            DELAY 300

            GOTO *STO1

        ELSEIF DI(22)=0 THEN

            MOVE P,P12,Z-NG!

            WAIT ARM

            DO(20)=0

            DELAY 300

            GOTO *STO1

        ELSE

            MOVE P,P10,Z=NG!

            WAIT DI(21)=0 OR DI(22)=0

            GOTO *STO2

        ENDIF

NEXT




1分不嫌少!


楼主最近还看过

空不异色

  • [版主]
  • 精华:0帖
  • 求助:0帖
  • 帖子:22帖 | 662回
  • 年度积分:21
  • 历史总积分:28179
  • 注册:2020年3月27日
发表于:2024-07-30 09:52:36
1楼

将上述机器人编程范例转换为台达(Delta)机器人语言时,需要注意台达机器人常用的编程语言和语法结构,如通常使用的D-H(Denavit-Hartenberg)参数模型、运动指令(如MOVJ、MOVL等)以及条件判断与循环结构。由于台达的具体编程语言可能因型号和软件版本而异,以下是一个基于一般性的台达机器人编程语言的转换示例。


### 假设台达机器人使用类似以下的语法:


- **MOVJ**:关节空间内的快速移动

- **MOVL**:直线插补移动

- **WAIT**:等待条件满足

- **IF...THEN...ELSEIF...ELSE...ENDIF**:条件判断

- **FOR...NEXT**:循环结构

- **DO...DONE**:数字输出控制(假设)


### 转换后的代码示例:


```plaintext

; 假设NG是全局变量,用于设置Z轴偏移

GLOBAL NG = 0.0


; 假设PDEF不是直接指令,但可以通过其他方式设置位置变量

; 假设已经通过某种方式定义了P0, P10, P11, P12


; 主程序开始

LABEL STO1

    MOVJ P0, Z=NG ; 移动到P0位置,Z轴偏移由NG决定

    WAIT DI(20)=ON ; 等待数字输入20变为ON


    FOR NA=1 TO 16

        MOVL P(NA), Z=NG ; 假设P(NA)是已经定义好的位置数组,使用直线插补

        WAIT ARM_READY ; 假设ARM_READY是表示机械臂准备就绪的信号


        DO 20, ON ; 打开数字输出20


        WAIT DI(21)=ON ; 等待数字输入21变为ON


        ; 跳转到STO2标签(在台达中可能需要其他方式处理,因为直接跳转不常见)

        ; 假设使用变量或条件来模拟


        IF DI(21)=OFF THEN

            MOVL P11, Z=NG

            WAIT ARM_READY

            DO 20, OFF

            DELAY 300

            GOTO STO1


        ELSEIF DI(22)=OFF THEN

            MOVL P12, Z=-NG ; 注意Z轴偏移的符号

            WAIT ARM_READY

            DO 20, OFF

            DELAY 300

            GOTO STO1


        ELSE

            MOVL P10, Z=NG

            WAIT (DI(21)=OFF) OR (DI(22)=OFF) ; 等待任一条件满足

            ; 假设STO2的处理逻辑已包含在ELSE的后续代码中


        ENDIF

    NEXT


; 注意:由于台达机器人编程的具体语法可能不同,

; 上面的代码需要根据实际使用的机器人型号和软件版本进行调整。

```


### 注意事项:


1. **位置和变量**:在台达机器人中,位置和变量可能需要以不同的方式定义和引用。

2. **输入输出控制**:数字输入输出(DI/DO)的具体实现可能依赖于机器人的硬件和软件配置。

3. **循环和条件判断**:台达机器人可能使用不同的语法来实现循环和条件判断。

4. **注释和标签**:注释和标签的使用可以帮助理解代码逻辑,但具体语法可能因机器人型号而异。

5. **测试和调整**:在实际应用中,需要对转换后的代码进行测试和调整,以确保其符合实际需求。


回复本条

    

robingsion

  • [版主]
  • 精华:21帖
  • 求助:71帖
  • 帖子:1975帖 | 3709回
  • 年度积分:28
  • 历史总积分:57893
  • 注册:2011年4月11日
发表于:2024-07-30 10:09:35
2楼

PDEF P0 4,4,1  ; 定义点位P0,使用4,4,1作为参数(这些参数可能需要根据实际情况调整)


; 初始化程序段

*STO1:

MOVE P, P0, V=MG  ; 移动到点位P0,速度为MG(这里假设MG是一个已定义的速度变量)

WAIT DI(20)=1  ; 等待数字输入20变为1


; 循环程序段

FOR NA=1 TO 16  ; 从1循环到16

    PMOVE(0, NA), V=NG  ; 以速度NG移动到由参数0和NA确定的动态点位(这里假设PMOVE是用于动态点位的移动指令)

    WAIT ARM  ; 等待机械臂到达目标位置

    DO(20)=1  ; 设置数字输出20为1

    WAIT DI(21)=1  ; 等待数字输入21变为1


*STO2:

    IF DI(21)=0 THEN  ; 如果数字输入21为0

        MOVE P, P11, V=NG  ; 移动到点位P11,速度为NG

        WAIT ARM  ; 等待机械臂到达目标位置

        DO(20)=0  ; 设置数字输出20为0

        DELAY 300  ; 延时300毫秒

        GOTO *STO1  ; 跳转到*STO1标签处继续执行

    ELSEIF DI(22)=0 THEN  ; 如果数字输入22为0

        MOVE P, P12, V=-NG  ; 移动到点位P12,速度为-NG(这里假设负号表示反向速度)

        WAIT ARM  ; 等待机械臂到达目标位置

        DO(20)=0  ; 设置数字输出20为0

        DELAY 300  ; 延时300毫秒

        GOTO *STO1  ; 跳转到*STO1标签处继续执行

    ELSE  ; 如果以上条件都不满足

        MOVE P, P10, V=NG  ; 移动到点位P10,速度为NG

        WAIT DI(21)=0 OR DI(22)=0  ; 等待数字输入21或22变为0

        GOTO *STO2  ; 跳转到*STO2标签处继续执行

    ENDIF  ; 结束条件判断语句块

NEXT  ; 结束循环语句块(注意:台达机器人语言中可能没有NEXT指令,这里仅用于表示循环的结束)


回复本条

    

gikuy

  • 精华:0帖
  • 求助:5帖
  • 帖子:5帖 | 15回
  • 年度积分:506
  • 历史总积分:656
  • 注册:2023年12月29日
发表于:2024-07-30 16:30:37
3楼

这是YAMAHA机器人托盘应用的完整程序范例,因为找不到台达的,就想请教怎么样转变过来,想对照学习台达机器人托盘的完整的应用程序范例。

回复本条

    

gikuy

  • 精华:0帖
  • 求助:5帖
  • 帖子:5帖 | 16回
  • 年度积分:506
  • 历史总积分:656
  • 注册:2023年12月29日
发表于:2024-07-30 16:31:46
4楼

微信图片_20240730151444.jpg

回复本条

    

gikuy

  • 精华:0帖
  • 求助:5帖
  • 帖子:5帖 | 17回
  • 年度积分:506
  • 历史总积分:656
  • 注册:2023年12月29日
发表于:2024-07-30 16:35:30
5楼

如图,不懂怎么错的,几番修改,还是不懂错在哪里。

回复本条

    

gikuy

  • 精华:0帖
  • 求助:5帖
  • 帖子:5帖 | 18回
  • 年度积分:506
  • 历史总积分:656
  • 注册:2023年12月29日
发表于:2024-07-30 16:39:08
6楼

这是点位错呢,还是表达式错呢?系统函式库错误,指的是什么呢?

回复本条

    

Smile-lyc

  • [管理员]
  • 精华:136帖
  • 求助:54帖
  • 帖子:3604帖 | 22980回
  • 年度积分:790
  • 历史总积分:161781
  • 注册:2006年8月04日
发表于:2024-09-02 09:56:37
7楼

感谢求助者和答疑者对求助答疑板块的厚爱,赠人玫瑰,手留余香。

对于求助者要求:

1、请在一个月内自行结贴,把悬赏积分(如果设置积分悬赏求助)发放给答疑者;

2、如果在求助答疑过程中,自己已经有效解决问题,建议大家把解决问题方法在自己求助帖分享,有效分享可以获得50积分奖励。

3、求助答疑板块版主结贴时间一般滞后30~45天,以方便大家对求助问题答疑足够时间,也为了每一个优秀答疑人员都可以获取到自己的积分和MP奖励。

4、2024龙年加油!龙年棒棒!



回复本条

    

热门招聘
相关主题

官方公众号

智造工程师