offset指令

人气:484 ℃/2023-01-12 15:09:31

offset指令是什么,怎么使用呢?不知道的小伙伴来看看小编今天的分享吧!

1、offset指令简介:

伪指令offset是汇编语言中编译器处理的符号,它的功能是取得标号的偏移地址。

assume cs:code

code segment

start: mov ax,offset start ;相当于mov ax,0

;start所标记的是代码段的第一条指令,偏移地址为0

s: mov ax,offset s ;相当于mov ax,3

;s所标记的指令是代码段中的第二条指令,第一条指令的长度为3byte,则s的偏移地址为3

code ends

end start

2、问题:

有如下程序段,填写两条指令,使改程序在运行中将s处的第一条指令复制到s0处:

代码如下:

;问题:有如下程序段,填写两条指令,使改程序在运行中将s处的第一条指令复制到s0处:

assume cs:code

code segment

s: mov ax,bx ;mov ax,bx机器码占两个字节

mov si,offset s

mov di,offset s0

mov dx,cs:[si] ;数据从哪里来

mov cs:[di],dx ;数据到哪里去

s0: nop ;cpu遇到nop指令什么都不做,nop指令占一个字节

nop

code ends

end s

拓展资料:

addr和offset指令的区别:

一、相同点

1、addr 和 offset 操作符都是获得操作数的偏移地址;

2、addr 和 offset 的处理都是先检查处理的是全局还是局部变量,若是全局变量则把其地址放到目标文件中。

二、不同点

1、addr 伪操作符,只能用在 invoke 伪指令语句中;(本来就是为了在invoke指令中,使用局部变量的地址)

在其他例如mov指令中,可以先使用lea指令,来取得局部变量的地址

2、offset 伪操作符可以用在任何可能涉及偏移地址的指令(当然包括 invoke 伪指令)并想获取操作数偏移地址的场合中;

3、addr 不能处理向前引用(即 addr 引用的操作数必须在使用 addr 前就得定义或声明),而offset 则能(不管引用的操作数是

其前或其后定义或声明);

所谓向前引用是指:标号的定义是在invoke 语句之后,比如在如下的例子:

invoke MessageBox,NULL, addr MsgBoxText,addr MsgBoxCaption,MB_OK //引用MsgBoxText、MsgBoxCaption 在先

......

MsgBoxCaption db "Iczelion Tutorial No.2",0 //定义或声明 MsgBoxCaption 在 addr 后

MsgBoxText db "Win32 Assembly is Great!",0 //定义或声明 MsgBoxText 在 addr 后

如果您是用 addr 而不是 offset 的话,那 MASM 就会报

4、addr 是运行阶段在堆栈中分配内存空间,offset 是编译阶段由编译器解释。因此,addr 可以处理局部变量而 offset 则不能。

5、addr 如果检查到待处理的变量是局部变量,就在执行 invoke 语句前产生如下指令序列:

lea eax,operand

push eax

因为 lea 指令能够在运行时决定标号的有效地址,所以有了上述指令序列,就可以保证 invoke 的正确执行了。

总结:为了避免出现错误,建议除在局部变量中引用 addr 操作符外,其它场合使用 offset。

说明:某些文章中对 addr 和 offset 所引用的对象仅用了“变量或标号”,我是用“操作数”来阐述的,本人的观点是:

变量或标号感觉上包含的概念过窄,比如结构、函数等等,因此,觉得使用操作数好像感觉准确些。

以上就是小编今天的分享了,希望可以帮助到大家。

发那科offset指令

ROBOGUIDE软件:FANUC机器人弧焊焊接起始点接触寻位虚拟仿真

概述

弧焊焊接起始点接触寻位是工业机器人常用的一种工件位置偏差搜索检测方法,对于FANUC机器人,这个功能是通过接触式传感器功能来完成的。

接触式传感器功能,是在焊接工件出现安装误差时,为补偿该误差而自动地变更机器人路径的一种功能。

接触式传感器功能由如下基本功能构成:

依据预先设定的探索速度、探索方向数据,使接触式传感器部分(焊丝尖端或激光焦点)向着焊接工件移动。

使用数字量输入信号,检测机器人接触式传感器接触到焊接工件的事实。

将已搜索到的焊接工件的绝对位置值或距离原始位置的偏差值存储在指定的位置寄存器中。

根据已存储的绝对位置信息或偏差信息,使机器人移动到当前的焊接工件的焊接起始点位置。

在ROBOGUIDE软件的虚拟仿真环境中,FANUC机器人同样可以实现焊接起始点寻位功能,它使用的是虚拟接触式传感器,其搜索检测效果与真实的接触式传感器没有任何差别。

本期,就来介绍一下在ROBOGUIDE软件中机器人弧焊焊接起始点寻位虚拟仿真的操作方法。

使用软件版本:ROBOGUIDE V9.4

机器人弧焊焊接工作站创建

FANUC机器人接触式传感器功能的虚拟仿真必须在ROBOGUIDE软件的WeldPRO模块环境中使用,并在创建机器人的虚拟系统时添加Touch Sensing(J536)、Arc Weld Utility Pkg(R876)两个系统选项,其中前者为接触式传感器系统功能选项,后者为弧焊焊接实用程序包。

在工作站中添加机器人外围设备,如焊装夹具、弧焊焊枪、工件、清枪器、焊接电源、控制柜、气瓶等,并将其分别安装布局到合适位置,效果如下图所示。

对于高版本的ROBOGUIDE软件,在创建完工作站后,还要单独配置机器人弧焊焊接系统,详细配置方法已在名为《ROBOGUIDE软件:FANUC机器人弧焊焊接系统配置与虚拟仿真》文章中发布,可参考配置。

机器人虚拟接触式传感器添加与配置

ROBOGUIDE软件中机器人弧焊焊接起始点接触寻位功能使用的是虚拟接触式传感器,在使用前需要先对其添加与配置。

左侧Cell Browser中的Parts节点下展开添加的工件模型文件,可以看到其下包含一个Touch Sensors文件。右击Touch Sensors,然后选择“Add Touch Sensor”,弹出Touch Sensor对话框。

在Touch Sensor对话框中可以配置用于自动生成机器人接触式传感器工件搜索程序的相关参数,各选项卡功能介绍如下:

General:设置用于自动生成机器人工件接触式搜索程序的常规选项,如程序名称、机器人控制器、机器人组、工具和用户坐标系等。

Program:设置机器人接触式传感器条件和搜索运动参数。

Touch Frame:设置接触式传感器的参考坐标系。

Seach 1:设置机器人自动搜索方向与搜索起点位置标定,通常设置为沿X轴方向搜索。

Seach 2:设置机器人自动搜索方向与搜索起点位置标定,通常设置为沿Y轴方向搜索。

Seach 3:设置机器人自动搜索方向与搜索起点位置标定,通常设置为沿Z轴方向搜索。

Processes:设置用于自动生成机器人工件接触式搜索主程序内所包含的子程序。

一般情况下,在General选项卡内的Frame后选择接触式传感器使用的用户坐标系即可。对于需要自动生成机器人接触搜索程序的,可以在各选项卡中设置相关参数,然后点击“Generate TP Program for Touch Senser”按钮,程序就会自动生成。

属性参数配置完成后,在Touch Sensors文件下就创建了一个虚拟接触式传感器。

接触式传感器I/O信号配置

与真实的接触式传感器一样,虚拟接触式传感器也是通过I/O信号与机器人实现信息交互,这里就需要创建下虚拟接触式传感器与机器人虚拟控制器之间的I/O信号映射关系。

打开虚拟示教器,按“MENU”键,在弹出的菜单中依次选择“设置”→“接触感应器I/O”,虚拟示教器显示界面切换为碰触传感器I/O设置。

在碰撞传感器I/O设置界面中,可以设置接触式传感器类型、输入信号与输出信号。控制器支持分配的I/O信号包括机器人I/O信号、通用数字量I/O信号、焊接数字量I/O信号以及熔敷检测I/O信号,可以根据实际情况酌情选取。有关接触式传感器I/O信号的设定值及其详细说明如下表所示。

序号

名称

设定值

说明

1

Touch Sensing type

Wire Touch

包括Wire Touch、Laser Sensor

2

输入信号端口类型

RI

接触式传感器的接触检测信号属性

3

输入信号端口编号

1

接触式传感器的接触检测信号编号

4

输出信号端口类型

RO

接触式传感器的接触控制信号属性

5

输出信号端口编号

1

接触式传感器的接触控制信号编号

接触式传感器的接触控制信号编号

现实中的机器人焊接起始点接触寻位是通过焊丝与工件的接触实现的,在虚拟仿真环境中也是如此,它是通过焊丝模型与工件模型接触,并发出一个反馈信号给机器人。这样,就需要在虚拟仿真环境中给机器人模型添加一个接触检测反馈的I/O信号。

打开机器人模型的属性配置对话框,在General选项卡中的Collision I/O功能区内,On collision, set后选择“RI[1]”,作为焊丝模型与工件模型碰触的检测反馈信号。通常情况,这个信号必须与上一步中设置的接触式传感器输入信号保持一致。

同时,勾选“Show robot collisions”选项,这样机器人与工件发生碰触时,会显示出碰触效果。

接触式传感器坐标系设置

接触式传感器坐标系决定搜索动作中机器人的TCP运动方向,接触式传感器坐标系由3个示教点来定义。最初的位置为原点位置,即搜索起点;第2个位置,定义接触式传感器坐标系的 X方向;第3个位置,定义接触式传感器坐标系的 Y方向;接触式传感器坐标系的Z方向由已被定义的X、Y轴自动生成。

碰触传感器I/O设置界面中,按“F1 类型”键,在弹出的类型菜单中选择“接触坐标系”,进入碰触传感器坐标系设置界面。

接触式传感器坐标系的设定方法有两种:示教标定法和直接输入数值法。示教标定法是对将要作为接触式传感器坐标系的3个参考位置分别进行示教,并对每一个参考位置进行标定。直接输入数值法是通过输入对象的旋转角度来定义接触式传感器坐标系,成为旋转对象的坐标系,依据参照组设定的不同而有所不同,通常情况下参照组设定为1时,旋转对象的坐标系为用户坐标系。

在一般的系统中,碰撞传感器坐标系设置画面中的参照组均设定为1(接触式传感器坐标系与机器人的用户坐标系相关)。希望在含有协调运动的系统中相对协调(参照)组定义接触式传感器坐标系时,将参照组设定为2以上的数值。

根据实际情况,示教标定接触式传感器坐标系。当然,此步骤也可以在Touch Sensor对话框里的Touch Frame选项卡内完成。

接触器传感器条件设置

要想接触式传感器发挥出最佳检测效果,还需要设定接触式传感器的执行条件,即接触式传感器条件设置。在接触式传感器条件中,可以设定机器人执行搜索动作的动作条件,系统默认提供32个接触式传感器条件文件,可根据不同的搜索情景进行设定和调用。

机器人虚拟示教器操作面板上,按“DATA”键,然后在数据界面中按“F1 类型”键,在弹出的类型菜单中选择“碰触传感器设置”,进入碰撞传感器数据设置界面。

首先进入的是碰触传感器条件数据一览画面,在其中可以查看或设定一些典型的条件参数,如碰触传感器条件编号、探索速度、探索距离、碰触传感器坐标系、基准标识、机器人组掩码。

选择其中一个碰触传感器条件文件,按“F2 详细”键,显示界面切换为碰触传感器条件数据详细设置。

根据实际需求,设定相关参数值,各个设定项的详细说明及参考设定值如下表所示。

序号

名称

设定值

说明

1

碰触传感器设置

1 [Touch Schdule 1]

接触式传感器条件编号与注释

2

基准标识

OFF

打开后,将机器人接触到的位置作为计算偏置量的基准位置并存储,记录完成后再将其关闭

3

探索速度

5.0mm/sec

机器人搜索运动速度

4

探索距离

100.0mm

机器人搜索运动距离

5

碰触传感器坐标系

1

搜索运动参考坐标系编号

6

探索模式

简易检索

包括简易检索、角焊缝/搭接检索、V坡口检索、外径/内径检索

7

探索类型

2_D平移

包括1_D平移、2_D平移、3_D平移、1_D平移&旋转、2_D平移&旋转、3_D平移&旋转

8

增量探索

ON

通过第1个搜索动作获得的偏置量,对第2个以后的搜索开始位置进行偏置处理

9

自动返回

ON

接触到工件时,机器人自动返回搜索开始位置

10

返回速度

500mm/sec

机器人返回运动速度

11

返回距离

2000.0mm

机器人返回运动距离

12

参照组

1

设置值与机器人组掩码相同

13

返回动作终止类型

FINE

机器人返回运动的定位类型

14

检索位置输出寄存器

32

搜索位置缓存寄存器

15

失败时的错误输出

ON

打开后,机器人在超过指定的搜索距离时报警

16

错误寄存器编号

32

搜索错误标识寄存器

17

机器人组掩码

[1,*,*,*,*,*,*,*]

在该接触式传感器条件下生效的机器人组

18

碰触传感器类型

焊丝

包括焊丝、激光传感器

19

激光信号极性反转

OFF

激光信号生效极性

工作站外围设备碰撞检测属性配置

由于机器人使用的是焊丝与工件接触碰撞实现的焊接起始点寻位,所以还需要激活弧焊焊枪工具模型与工件模型的碰撞检测效果。

在机器人弧焊焊枪工具属性设置对话框的General选项卡中,勾选“Show collisions”选项,激活工具模型接触碰撞检测效果显示功能。

在工装夹具属性设置对话框的General选项卡中,勾选“Show robot collisions”选项。然后在Parts选项卡中勾选“Show collisions”选项,激活工件模型接触碰撞检测效果显示功能。

机器人接触式传感器指令介绍

在FAUNC机器人中接触式传感器功能要使用专门的指令创建出接触式传感器程序,来实现对工件的搜索检测和对所示教的位置的偏置处理。

通常情况下,在机器人中编写的接触式传感器程序包含两种指令,一种是接触式搜索指令,用于控制接触式传感器的开启与关闭,同时命令机器人执行搜索检测动作,并根据反馈信号记录工件的当前位置;另一种是接触式偏置指令,这种指令能够把接触式搜索指令中记录的工件偏差位置叠加到基准程序中,使机器人按照偏移后的示教点执行指令运动。

接触式搜索指令由接触搜索开始指令、接触搜索结束指令、接触搜索动作附加指令组成,接触搜索开始指令如下图所示,该指令用于设定接触传感器条件和位置存储寄存器,并打开接触式传感器。

接触搜索结束指令(Search End)用于关闭接触式传感器,指令格式较为简单,且没有可设定的指令参数,直接插入使用即可。

在接触搜索开始指令与接触搜索结束指令之间,还要插入接触搜索动作附加指令,这种指令是一种添加在运动程序语句末尾的附加指令,指令格式如下图所示。本指令为控制机器人开始搜索运动的指令,k用来指定搜索运动方向,可设定为X、-X、Y、-Y、Z、-Z中的任意一个,有关X、Y、Z的具体运动方向,由在接触式传感器条件中指定的接触式传感器坐标系来决定。并且,在机器人(TCP)接触到工件时,将当前位置存储到搜索输出位置寄存器中。

接触式偏置指令由接触偏置开始指令与接触偏置结束指令(Touch Offset End)组成,接触偏置开始指令如下图所示,其中的i为保存了偏差值的位置寄存器编号。

接触偏置结束指令相对较为简单,且没有可设定的指令参数,直接插入使用即可。

机器人焊接起始点接触寻位与偏置程序编写

在虚拟示教器中编写机器人焊接起始点接触寻位程序,当然,也可以在Touch Sensor对话框中自动生成。程序中,搜索起点程序中的示教位置可以与搜索运动程序中的示教位置为同一点。搜索起点位置与工件接触点之间的距离要小于接触器传感器条件中设置的探索距离,以保证机器人能够搜索到工件。

由于简易搜索模式机器人记录的是绝对位置坐标值,所以,这里需要与焊接起始点原始位置坐标值进行差值运算,并把计算出的偏差值存储到新的位置寄存器中。

在编写好的机器人弧焊焊接程序中,首先调用焊接起始点接触寻位子程序,然后在焊接起始点上方点程序语句前插入接触偏置开始指令语句,偏置数据为存储偏差坐标值的位置寄存器,在焊接结束点上方点程序语句后插入接触偏置结束指令语句。这样,机器人在运行焊接程序时就能够叠加偏移量,对有安装误差的工件进行准确定位焊接了。

仿真运行

仿真运行机器人,可以看到机器人在焊接之前先对工件焊接起始点进行接触寻位,然后再叠加了偏移量后进行定位焊接,效果如下方动态图所示。也可以在工装夹具Parts选项卡中手动设置工件的偏移增量,然后再次仿真运行机器人来查看搜索定位效果。

The End


上一篇:

推荐

首页/电脑版/网名
© 2025 NiBaKu.Com All Rights Reserved.