CopyRawBytes不能用来从一个rawbytes变量中的一些数据复制到同一个rawbytes变量的其它部分。 语法:
CopyRawBytes [FromRawData ‘:=’ ] < rawbytes类型的变量(VAR)>’ , ‘ [FromIndex’ :=’ ] < num类型的表达式(IN)> ‘,’ [ToRawData’ :=’ ] < rawbytes类型的变量(VAR)>’ , ‘ [ToIndex’ :=’ ] < num类型的表达式(IN)> [‘\\’NoOfBytes’ :=’ < num类型的表达式(IN)> ]’;’ 相关信息: 相关信息 Rawbytes数据
获得rawbytes数据的长度 清除rawbytes数据的内容
把设备网的标题打包进rawbytes数据 把数据打包进rawbytes数据 写rawbytes数据 读rawbytes数据
从rawbytes数据解压数据
参看
第994页rawbytes—原始数据
第806页RawBytesLen—获得rawbytes数据的长度 第40页ClearRawBytes—清除rawbytes数据的内容
第258页PackDNHeader—把设备网标题打包进rawbytes数据 第261页PackRawBytes—把数据打包进rawbytes数据 第604页WriteRawBytes—写rawbytes数据 第319页ReadRawBytes—读rawbytes数据
第556页UnpackRawBytes—从rawbytes数据中解压数据
36
1.29.CorrClear—删除所有修正发生器
描述:
CorrClear用来删除所有连接的修正发生器。该指令用来删除所有之前由修正发生器提供的偏移。 基本范例: 该指令的基本范例说明如下: 例1 CorrClear;
该指令删除所有连接的修正发生器。 注意:
确保所有修正发生器(已连接的)在程序开始的时候都被删除的一个简单方法是在START事件routine中运行CorrClear。参看系统参数—标题:控制器 语法:
CorrClear ‘;’ 相关信息: 相关信息
连接到修正发生器 从修正发生器断开连接 写修正发生器 读取当前总偏移量 修正描述符
参看
第61页CorrCon—连接到一个修正发生器 第66页CorrDiscon—从修正发生器断开连接 第67页CorrWrite写修正发生器 第685页CorrRead—读取当前总偏移量 第934页corrdescr—修正发生器描述符
37
1.30.CorrCon—连接到一个修正发生器
用途:
CorrCon用来连接到一个修正发生器。 基本范例: 该指令的基本范例说明如下: 也可参照第61页更多范例。 例1 VAR corrdescr id;
…
CorrCon id;
参考的修正发生器符合变脸id的预定。 项目:
CorrCon Descr Descr: 数据类型:corrdescr 修正发生器的描述符。 更多范例: 该指令得更多范例说明如下: 路径坐标系统: 所有路径修正(路径上的偏移量)都被加入路径坐标系统。路径坐标系统按照以下说明定义: P=路径坐标系统 T=工具坐标系统
z 路径坐标X轴作为路径的正切值被给出。
z 路径坐标Y轴由工具坐标轴Z和路径坐标轴X交叉产生。 z 路径坐标轴Z由路径坐标轴X和路径坐标轴Y交叉产生。 应用范例: 用路径修正的一个应用实例是机器人拿着装有两个传感器的工具,监测到到工作对象的垂直和水平距离。下图说明了路径修正装置。
程序范例:
CONST num TARGET_DIST := 5; CONST num SCALE_FACTOR := 0.5; VAR intnum intno1; VAR corrdesc hori_id; VAR corrdesc vert_id; VAR pos total_offset; VAR signalai hori_sig; VAR signalai vert_sig; VAR pos write_offset;
PROC PathRoutine( ) ! 连接到修正发生器寻找水平和垂直方向。 CorrCon hori_id; CorrCon Vert_id;
38
!设定一个5赫兹的计时器中断。陷阱程序将读取传感器数值并计算路径修正值。 CONNECT intno1 WITH ReadSensors; Itimer\\singel 0.2, intno1 ! 计时器跟踪开始的位置。 MoveJ P10,v100,z10,tool1; !用垂直和水平方向运行MoveL。 MoveL p20,v100,z10,tool1\\Corr; ! 读取所有修正发生器增加的总的修正值。 Total_offset := CorrRead( ); ! 在示教器上写出垂直修正的总数。 TPWrite “垂直修正的总数是:”\\Num:=total_offset.z; ! 断开垂直方向上修正发生器的连接。谁拼修正将不受影响。 CorrDiscon vert_id; ! 只在水平中断方向上运行MoveL。 MoveL p30,v100,z10,tool1 \\Corr; ! 删除所有突出连接的修正发生器。
!在这种情况下,仅存的修正发生器就是水平方向的修正发生器。
CorrClear; !删除计时器中断。 IDelete intno1; ENDPROC
TRAP ReadSensors ! 计算水平修正值并进行修正。 Write_offset.x := 0; Write_offset.y := (hori_sig – TARGET_DIST) *SCALE_FACTOR; Write_offset.z :=0; CorrWrite hori_id, write_offset; ! 计算垂直修正值并进行修正。 Write_offset.x := 0; Write_offset.y := 0; Write_offset.z := (vert_sig – TARGET_DIST) *SCALE_FACTOR; CorrWrite vert_id, write_offset; ! 再次设定中断。 IDelete intno1; CONNECT intno1 WITH R诶的Sensors; ITimer\\singel 0.2, intno1; ENDTRAP 程序解释: 两个修正发生器用指令CorrCon连接。每一个修正发生器用一个独立的corrdesc类型的描述符(hori_id和vert_id)参考。 两个传感器每一个都用一个修正发生器。 设置了一个计时器中断以5赫兹的频率来调用陷阱程序ReadSensors。路径修正需要的偏移量在陷阱程序中计算并且通过指令CorrWrite被写到相应的修正发生器(由hori_id和vert_id参考)。所有的修正将会立即对路径起影响。当使用路径修正器的时候,MoveL指令必须使用可选项目Corr来编程。否则,将不会执行修正。 当第一个MoveL指令准备好的时候,用CorrRead功能来读取由所有连接的修正发生器提供的所有的修正的总数(路径修正总数)。总的垂直路径的修正的结果用TPWrite指令写到示教器上。
CorrDiscon将断开垂直修正(由描述符vert_id参考)的修正发生器。由该修正发生器添加的所有修正将从
39
总路径修正中删除。由水平修正的修正发生器添加的修正仍旧保留。 最后,CorrClear功能将删除所有保留的连接修正发生器和之前累加的修正。在这种情况下,只有水平修正的修正发生器将被删除。计时器中断也将由Idelete指令删除。 修正发生器: 下图说明了修正发生器。
X Y z 路径坐标轴
0 0 3 垂直修正发生器,带有它自身修正的总数
0 1 0 水平路径发生器,带有它则身修正的总数
- - - 没连接的修正发生器
- - - 没连接的修正发生器
- - - 没连接的修正发生器
0 1 3 由所有连接的修正发生器完成的所有修正的总数
限制: 最多可以同时连接5个修正发生器。连接的修正发生器控制器重启后不能幸存。 语法:
CorrCon [ Descr ‘ :=’ ] < corrdiscr类型的变量(VAR)> ‘;’ 相关信息: 相关信息 断开修正发生器 写入修正发生器 读取当前总偏移量 删除所有修正发生器 修正发生器描述符
参看
第66页CorrDiscon—断开修正发生器 第67页CorrWrite—写入修正发生器 第685页CorrRead—读取当前总偏移量 第60页CorrClear—删除所有修正发生器 第934页corrdescr—修正发生器描述符
40