西门子840c系统数控编程之@指令

更新时间:2024-05-25 13:13:01 阅读量: 综合文库 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

CL800

语言@指令详解

在880(数控龙门铣)/840C(MCMQ250镗床)的@指令: @0?程序结构一般指令 : 041 043

@1?程序分支 :111 121 122 123 124 125 126 174 @3?数据传输,系统记忆传输给R参数:

300 312 313 320 330 331 333 334 336 360 361 364 367 36a 36b 371 372 381 383 395 3b0 3b1 @4数据传输,R参数传输给系统记忆: 420 430 432 434 440 446 4c0 @6算术和逻辑功能: 614 622 630 631 634 652

@7 NC特定功能:706 713 714 720

说明:本资料中所涉及到的指令为在880(数控龙门铣)/840C(MCMQ250镗床)中所有主程序和子程序中使用而操作人员可能用到的全部指令。

下面章节为手册中部分@代码:

1.1目标代码

三个数字@代码是目标代码,具有下列结构: @ 1 2 3 三个数字@代码 第一位数字用于分类主组别 中间数字用于划分主组别为子组别

1

最后数字@用于定义特殊功能

1.1.1.主组别

下列功能赋予@代码的八个组别: @0?程序结构一般指令 @1?程序分支 @2?数据传输,一般

@3?数据传输,系统内存传输给R参数 @4?数据传输,R参数传输给系统内存 @5?文件处理,一般(在准备中) @6?算术和逻辑功能 @7?NC功能特定 @f 工件程序处理

1.1.2目标代码后操作数

为了其功能@码后需加附加信息。下列字母定义这些操作参数: K?常数

R?R参数(寄存器) P?指示字

常数K定义的值在程序里被固定,不能修改,(值是直接规定) 指示字涉及包含被应用功能参数地址的参数 举例:带操作数@代码 a) @201 R13 P37

2

指示字,具有源寄存器地址 目标寄存器(参数)

“数据传输,一般”功能@代码

解释:把源寄存器中内容(即在P37寄存器包含地址)寄存到目标寄存器R13中去 b) @201 P16 P37

指示字,具有源寄存器地址 指示字,具有目标寄存器地址 “数据传输,一般”功能@代码

解释:把源寄存器中的内容(即在寄存器R37包含地址)寄存到目标寄存器,该地址能在寄存器R16中被提供。

1.1.3符号

@代码要求严密符号,在下面几页各种指令表格中,一系列符号,在每个括号里,跟随在三个数字@代码之后,符号含义是: 数值直接规定(常数K) 间接规定数值(R参数) 间接规定数值(R参数或指示字) 混合规定数值(常数,R参数或指示字)

2.2程序结构一般指令

主组别0组成如下: @ 0 X Y 三个数字@代码

3

0—存储几个R参数 1—存储一个参数区域 2—取回几个R参数 3—取回一个参数区域 4—存储R参数 0— 主组别0

主组别0/子组别:存贮R参数 @040<常数>

用<常数>规定属于此功能的其后R参数号,R参数内容被存储传输到R300堆栈寄存器开始。 @041

中R参数内容被存贮传输到堆栈R300寄存器开头。

@042<常数>

此指令从堆栈寄存器中取出存贮值,并把它们存贮到规定的R参数中去,R参数必须以@040反过来顺序给定。 @043

在@041中存贮的值被送回到R参数中去。

当在带R参数子程序工作时,该参数亦可在最高层应用。这些指令在主组别0/子组别4被使用。

为了存贮数值和把数值0赋予规定R参数,一个进栈指令(@040或@041)必须写在子程序开始。

4

在子程序结束用出栈指令(@042或@043)重新建立原始状态。 举例在程序中指令格式: L100 调用子程序

@041 R61 R69 LF 从R61~R69的R参数内容传输到堆栈寄存器中并指定值为“0”

@043 R61 R69 LF 被存贮值送回到R61-R69中去 M17 子程序结束

1.3程序分支

主组别1组成如下: @ 1 X Y 三个数字@代码 0—无比较操作者 1--=等于 2--<>不等于 3->大于 4-->=大于或等于 5--<小于 6--<=小于或等于 0—无条件跳越 1—条件分支 2—IF语句

5

<数值1>~<数值3>规定如下: <数值1> TO范围 范围1-8 <数值2>刀偏号D 范围1-204/409 <数值3>刀偏存贮器号 范围0-9/15

例:@320 R67 K1 K14 K2 把TO范围1中刀偏号D14的P2偏置值读入R67中去

主组别3/子组别3:把零偏传输入R参数中去 @330<变量><数值1><数值2><数值3> <数值1>~<数值3>规定如下: <数值1>设定零偏组别 (G54=1~G57=4) <数值2>坐标轴号 <数值3>粗或精值(0或1)

例:@330 R81 K1 K2 K0 第二坐标轴G54粗值读入参数R81中

@331<变量><数值1><数值2>

<数值1>编程附加零偏组别(G58=1,G59=2) <数值2>坐标轴号 @332<变量><数值2>

在<数值2>里定义从PLC输入外部零偏坐标轴号 @333<变量><数值2>

在<数值2>里定义DRF偏置坐标轴号 @336<变量><数值2>

16

在<数值2>里定义附加偏置的坐标轴号,其包括: ?被选择可设定零偏 ?可编程附加零偏 ?外部零偏 ?被选择刀偏

预置和DRF偏置不包括在内

@337<变量><数值1><数值2><数值3> <数值1>~<数值3>规定如下: <数值1>通道号,(0,自身通道)

<数值2>可设定组别坐标旋转(G54=1~G57=4) <数值3>角度数(目前为1)

设定坐标旋转的旋转角度被读入<变量>参数中去 @338<变量><数值1><数值2><数值3> 可编程坐标旋转之旋转角度被读入<变量>参数中 <数值1>通道号(0=自身通道)

<数值2>可编程组别附加坐标旋转(G58=1,G59=2) <数值3>角度数(目前为1)

主组别3/子组别4:把编程设定值读入R参数中 @345<变量><数值1><数值2>

用此指令,以G96编程切削速度被传输给R参数,通道号,(0=自身通道)<数值2>被赋值为0。 主组别3/子组别6:把实际值读入R参数

<数值1>为17

@360<变量><数值2>

以<数值2>定义的坐标轴的工件有关现行值被传输到R参数中去。

例:@360 R54 K2 读出涉及工件零点Y轴集团现行值输入寄存器R54中去 @361<变量><数值2>

以<数值2>定义坐标轴,且涉及机床现行值被传输到R参数中去。 对于旋转轴,结果被存贮于从R参数<变量>(Rn)向前两个参数中,取决于一个NC机床数据位。 存入下列参数: Rn=在一转之内的定位。 Rn+1=转数

@362<变量><数值2>

涉及机床实际值的定义在<数值2>中的那个轴将被传输到R参数中去。

对于旋转轴,结果被存贮在从R参数<变量>(Rn)向前两个参数,取决于一个NC机床数据位。 Rn=在一转之内的定位 Rn+1=转数

取决于NC机床数据位,读入的坐标 轴定位作为半径或直径值。 @363<变量><数值2>

18

以<数值2>定义主轴,且为其现行位置传输到R参数中。 @364<变量><数值2>

以<数值2>定义主轴实际旋转速度值传输到R参数中。 @367<变量><数值1>

R参数是以<变量>定义且它来自用G16选择平台坐标轴号,螺纹导程号存贮在第5个R参数中,必须以<数值1>定义通道号(0=自身通道)

如刀补偏程在G16XYZ负方向上,用@367值128被附加在Z轴上,为了识别负号 @36a<变量><数值1>

用此指令,被选择的刀偏D号被传输到R参数中去,通道号被规定在<数值1>中(0=自身通道) 说明:@代码中a代表十六进制“A” @36b<变量><数值1><数值3>

正在处理的工件程序段G功能从主存贮器中读入<变量>参数,<数值1>定义于通道号,如0定义则读入本通道。<数值3>定义当前G功能所从属内部G功能组别,详见第13章内部G功能划分一表

例子:@36b R50 K0 K0 本通道内第一组别G功能GO被读入R50中。

在@36a和@36b之前,必须编程@714独立程序段,为了能从另一通道读入值。

19

主组别3/子组 7:把程序数据读入R参数 @371<变量><数值1><数值3>

用此指令,特殊位被读出而为了各种生效信号的获得相关通道位:位0=段搜索生效,位1=试选转速率生效,位2=模拟生效 通道号必须输入<数值1>中,(0自身通道),<数值3>包括位号。 不相关通道位:位0=测量输入1生效,位1=测量输入2生效 99必须被输入于<数值1:<数值3>包含位号

例:@371 R81 K0 K1 在自身通道中“试运行速率”特殊位的状态被读入参数R81 @372<变量>

当前通道号读入<变量>参数中

主组别3/子组别8:把PLC位信号读入R参数 @380<变量><数值1><数值2><数值3>

把PLC中一个输入位状态读入由<变量>定义的参数中,<数值1>定义PLC号,<数值2>定义字节地址,<数值2>定义字节地址,<数值3>定义位地址。

例:@380 R50 K1 K2 K0 把№1 PLC中№2字节中,0位输入状态读入R50中。

@381<变量><数值1><数值2><数值3>

把PLC中一个输出状态读入由<变量>定义的参数中,<数值1>定义PLC号,<数值2>定义字地址,<数值3>定义位地址。 @382<变量><数值1><数值2><数值3>

20

把PLC中一个标志位状态读入由<变量>定义的参数中,<数值1>定义PLC号,<数值2>定义字节地址,<数值3>定义位地址。 @383<变量><数值1><数值2><数值3><数值4>

一个PLC数据字位的状态读入<变量>定义参数中,<数值1>定义PLC号,<数值2>定义DB或DX号,<数值3>定义数据字号,<数值4>定义位地址。

例:@383 R51 K1 K2 K4 K2 把定义PLC数据字位状态读入R51

主组别3/子组别9,把PLC字节信号读入R参数 @390<变量><数值1><数值2>

PLC中一个输入字节被读入定义在<变量>参数中,<数值1>定义PLC号,<数值2>定义字节地址。

例:@390 R52 K1 K2 把PLC输入字节状态读入R52。 @391<变量><数值1><数值2>

PLC中一个输出字节状态被读入定义在<变量>参数中,<数值1>定义PLC号,<数值2>定义字节地址。 @392<变量><数值1><数值2>

PLC一个外围字节状态读入<变量>参数中,<数值1>定义PLC号,<数值2>定义字节地址。 @393<变量><数值1><数值2>

PLC一个标志字节状态读入<变量>参数中,<数值1>定义PLC号,<数字2>定义字节地址。

21

@394<变量><数值1><数值2><数值3>

PLC数据字(左)状态读入<变量>参数中,PLC号被定义在<数值1>中,<数值2>定义DB或DX号,<数值3>定义数据字号。 例:@394 R53 K1 K2 K4 定义PLC输入字节状态读入R53 @395<变量><数值1><数值2><数值3>

PLC数据字(右)状态读入<变量>参数中,PLC号被定义在<数值1>中,<数值2>定义DB或DX号,<数值3>定义数据字号。 主组别3/子组别a:把PLC的信号字读入R参数 @3a0<变量><数值1><数值2><数值3>

PLC中一个输入字状态被读入<变量>参数中,<数值1>定义PLC号,<数值2>定义字地址,<数值3>标志范围规定怎样读入PLC信号字状态。

<数值3>标识范围定义:

<数值3> 定点 <数值3> BCD(二进制) 0 不带小数点数值 100 不带小数点数值 1 带小数点数值 101 带小数点数值 2 小数点后1位 102 小数点后1位 3 小数点后2位 103 小数点后2位 4 小数点后3位 104 小数点后3位 5 小数点后4位 105 小数点后4位 6 小数点后5位 106 小数点后5位 7 小数点后6位 107 小数点后6位

22

8 小数点后7位 108 小数点后7位 9 小数点后8位 109 小数点后8位

例:@3a0 R50 K1 K3 K100 PLC定义输入字状态以BCD格式读入R50中

@3a1<变量><数值1><数值2><数值3>

PLC中一个输出字状态读入<变量>参数中,<数值1>定义PLC号,<数值2>定义字地址,<数值3>标志范围规定怎样读入PLC信号字状态。

@3a2<变量><数值1><数值2><数值3>

PLC中一个外围字的状态被读入<变量>参数中,<数值1>定义PLC号<数值2>定义字地址,<数值3>标志范围规定怎样读入PLC信号字状态。 <数值3>定义:见@3a0

如用@3a2寻址一个PLC中不存在的外围 字,PLC处于停止状态,必须再起动之。

@3a3<变量><数值1><数值2><数值3>

PLC中一个标志字状态被读入<变量>参数中,<数值1>定义PLC号,<数值2>定义字地址,<数值3>标识范围规定怎样读入PLC信号字状态。

<数值3>定义,见@3a0 @3a4<变量><数值1><数值2>

PLC中计时器状态被读入<变量>参数中,被读入值为小数点后

23

两位,单位为秒,<数值1>定义PLC号,<数值2>定义计时器地址。

例:@3a4 R80 K1 K2 定义PLC计时器状态读入R80 @3a5<变量><数值1><数值2>

PLC中计数状态被读入<变量>参数中。<数值1>定义PLC号,<数值2>定义计数器地址。

例:@3a5 R81 K1 K2 定义PLC计数器状态读入R81 主组别3/子组别b:把PLC信号数据字读入R参数中。 @3b0<变量><数值1><数值2><数值3><数值4><数值5> PLC中一个数据字或双字定点数值被读入<变量>参数中,<数值1>定义PLC号,<数值2>定义DB或DX号,<数值3>定义数据字号,<数值4>定义 <数值5>标识范围定义:

<数值5> 数据字或串行双字 <数值5> 并列双字 0 不带小数点数值 10 不带小数点数值 1 带小数点数值 11 带小数点数值 2 小数点后1位 12 小数点后1位 3 小数点后2位 13 小数点后2位 4 小数点后3位 14 小数点后3位 5 小数点后4位 15 小数点后4位 6 小数点后5位 16 小数点后5位 7 小数点后6位 17 小数点后6位

24

8 小数点后7位 18 小数点后7位 9 小数点后8位 19 小数点后8位

例:@3b0 Rb0=(1,3,2,2,10) 定义双字定点值被读入Rb0 @3b1<变量><数值1><数值2><数值3><数值4><数值5> 把PLC中定义数据字的二进制判值读入<变量>定义的参数中,<数值1>定义PLC号,<数值2>定义DB或DX号,<数值3>定义数据字数,<数值4。定义数据字号和<数值5>定义标识范围。 取决于定义数据字号<数值4>,读入操作既是串行或是并行。 <数值4>BCD(二进制)

1 一个数据字读入,<数值5>无意义 2 双数据字以并行读入,<数值5>无意义

3 三数据字以串行读入,<数值5>规定如何读入二进制值 <数值5>标识范围定义: <数值5> BCD二进制判 100 不带小数点值 101 带小数点值 102 小数点后1位 103 小数点后2位 104 小数点后3位 105 小数点后4位 106 小数点后5位 107 小数点后6位

25

108 小数点后7位 109 小数点后8位

例:@3b1 R51 K1 K2 K10 K100 把定义双字的二进制数读入R51。

@3b2<变量><数值1><数值2><数值3>

定义PLC中数据字浮点值被读入<变量>定义参数中。两个数据总是逐次被读入,<数值1>定义PLC号,<数值2>定义DB或DX号和<数值3>定义数据字号。

@3b2 R70 K71 K72 K70 把定义双字的浮点读入R70 主组别3/子组别C:把报警读入R参数 @3C0<变量>

用此指令,控制器导致NC报警被读入<变量>中。 例:@3c0 R50 出现NC报警装从R50向前。 主组别3/子组别d:把报警指示读入R参数 @3d0<变量>

用此指令和,输入NC报警号读入<变量>中 例:@3d0 R51 出现NC报警号读入R51中

1.5 数据传输:把R参数内容送入系统中

主组别4组成如下:

@ 4 X Y 三个数字@代表@代码: 特殊功能 0-机床数据

26

1-设定数据 2-刀具偏置 3-零点偏置 4-程序设定值 e:系统单元 主组别

在此组别中所有@指令有<数值>作为最后符号,它定义被传输的值。该值可直接用常数或间接借助于R参数或指示字。 注释:使用子组别0,1,2和3前必须编程@714 主组别4/子组别0:把R参数内容送入机床数据 @400<数值1><数值>

<数值1>定义NC机床数据地址,地址范围:0-999

例:@400 K2241 R90 把R90中内容送入第二坐标轴正向第一软件限位机床数据中 @401<数值1><数值>

<数值1>定义NC机床数据的字节地址,地址范围:5000-6999 @402<数值1><数值2><数值>

<数值1>定义NC机床数据位的字节地址同,地址范围:5000-6999,<数值2>给出位地址(0-7) @403<数值1><数值2><数值> <数值2>定义循环机床数据地址

<数值1>通道号,0=自身通道,<数值2>字地址

27

@404<数值1><数值2><数值>

<数值1>通道号,0=自身通道;<数值2>字节地址。 @405<数值1><数值2><数值3><数值> <数值3>定义循环机床数据位地址

<数值1>通道号,0=自身通道;<数值2>字节地址 <数值3>位地址。 @406<数值1><数值>

<数值1>定义PLC机床数据字节地址,地址范围:0-5999 @407<数值1><数值>

<数值1>定义PLC机床数据字节地址;地址范围:6000-8999 @408<数值1><数值>

<数值1>定义PLC机床数据字节位地址:地址范围:6000-8999,位地址范围(0-7)由<数值2>给出。

主组别4/子组别1:把R参数内容送入设定数据 @410<数值1><数值> <数值1>定义设定数据地址。

例:@410 R80 第二坐标轴的最大加工区域限位送入R80中去 @411<数值1><数值>

<数值1>定义设定数据字节的地址,地址范围:5000-9999 @412<数值1><数值2><数值> <数值1>定义设定数据位字节地址:

地址范围:5000-9999,<数值2>给出位地址(0-7)

28

@413<数值1><数值2><数值> <数值2>定义循环设定数据地址

<数值1>定义通道号,0自身通道;<数值2>字地址 @414<数值1><数值2><数值> <数值2>定义循环设定数据字节地址

<数值1>通道号,0:自身通道,<数值2>字节地址 @415<数值1><数值2><数值3><数值> <数值3>定义循环设定数据位字节地址; <数值1>通道号,0:自身通道 <数值2>字节地址 <数值3>位地址

主组别4/子组别2:把R参数中值写入刀偏中 @420<数值1><数值2><数值3><数值>

数值被输入到刀偏存贮器里,存贮器中原来值被重写,符号<数值1>~<数值3>必须如下分配: <数值1>TO范围,范围:1-16 <数值2>刀偏号(D号),范围1-204/409 <数值3>P参数号,范围0-9/15

例:@420 K1 K2 K3 R80 在TO1区域里,把R80中值送入D2偏置存贮器中P3参数中去。 @423<数值1><数值2><数值3><数值> 数值被加到包含在刀偏存贮器中的值上。

29

符号<数值1>~<符号3>规定如下: <数值1>TO区域,范围:1-16 <数值2>刀偏号D,范围:1-204/409 <数值3>P参数号,范围:0-9/16

主组别4/子组别3:把R参数中值写入零点偏置 @430<数值1><数值2><数值3><数值> 把数值送入零点偏置存贮器中,原存在内被重写 符号<数值1>设定零偏组别(G54=1~G57=5) <数值2>坐标轴号 <数值3>粗或精值(0或1)

例:@430 K1 K2 K0 K500 第二坐标轴G54零偏粗值为500 @431<数值1><数值2><数值3><数值> 数值被加到包含在零偏存贮器中的值上。 符号<数值1>~<数值3>规定如下: <数值1>设定零偏组别(G54=1和G57=4 <数值2>坐标轴号

<数值3>粗/精转换(当前,必须输入0) @432<数值1><数值2><数值>

<数值1>编程零偏组别(G58=1和G59=2) <数值2>坐标轴号

在一程序段不允有横移运动指令。 @434<数值2><数值>

30

1-算术功能 2-算术过程 3-三角函数功能 4-对数功能 5-逻辑功能 6-逻辑过程 7-布尔运算比较 主组别6

主组别6/子组别0:算术运算赋值

在此子组别中,不须要@,执行等号右边几个符号的链计算。<变量>=<数值1>+<数值2> 加法 <变量>=<数值1>-<数值2> 减法 <变量>=<数值1>*<数值2> 乘法 <变量>=<数值1>/<数值2> 除法 主组别6/子组别1:算术功能 @610 <变量><数值>

定义在<数值>中不带符号的数值总和被存入<变量>中 例 R12=34

@610 R76 R12 ;R76=34 @613<变量><数值>

<数值>定义的值的平方根存入<变量>中。

例:@613 R13 K64 常数64开平方,根8存入R13中。

36

@614<变量><数值1><数值2><数值3>

<数值1><数值2>中定义值的平方和,开根号,并存入<变量>中。 例:R25=15 R26=20

@614 R77 R25 R26 R25平方为225,R26平方为400,其和开根为25,并存入R77中。 主组别6/子组别2:算术过程 @620<变量>

<变量>定义的R参数内容是增量。

例: R70=1 R70参数内容是增量,新的内容为2 @620 R70 @621<变量>

<变量>定义的R参数内容是递减量

例:R70=1 R70参数内容是递减量,新的内容是0 @622<变量>

给用R参数或指示字定义的值取整。结果仍保持在R参数或指示字中。 例R60=2.9

@622 R60 给R60内容取整,新的内容为2 主组别6/子组别3:三角函数功能 @630<变量><数值>

<数值>定义角度正弦值存入<变量>中。 例:R27=30

37

@630 R15 R27 R27内容正弦值0.5存入R15中 @631<变量><数值>

<数值>定义角度余弦值存入<变量>中。 @632<变量><数值>

<数值>定义角度正切值存入<变量>中。 @634 <变量><数值>

<数值>定义角度反正弦值存入<变量>中。

例:R35=0.70710678 R35中内容反正弦,45存入R17中 @634 R17 R35

@637<变量><数值1><数值2>

<数值1><数值2>定义值是矢量,结果是一个在<数值2>和合成矢量间构成的一个角度。

作为操作数<数值1>和<数值2>只允许一个常数,其他必须为<变量>(R参数或指示字) 例:R35=20 R36=-30

@637 R17 R35 R36 R35和R36参数中内容构成矢量角度,结果146.30993存入R17中 主组别6/子组别4:对数功能 @640<变量><数值>

<数值>定义的数值的自然对数存入<变量>中

例:@640 R80 K10 常数10的自然对数,结果2.3025846存入R80中

38

@641<变量><数值>

<数值>定义的数值的指数ex存入<变量>中

例:@641 R80 K2.5 常数进行指数ex运算,结果12.182496存入R80中

主组别6/子组别5:逻辑功能 @650<变量><变量1><数值>

<变量1><数值>中位模式是“或”门逻辑,其结果存入<变量>中

例:R50=00101100 R51=10110011

@650 R52 R50 R51 R50和R51是或门逻辑,结果存入R52,其内容为10111111 @651<变量><变量1><数值>

<变量1><数值>中位模式是“异或”门逻辑,其结果存入<变量> @652<变量><变量1><数值>

<变量1><数值>中位模式是“与”门逻辑,其结果存入<变量>中

@653<变量><变量1><数值>

<变量1>和<数值>中位模式是“与非”逻辑,其结果是非门,并存入<变量>中

@654<变量><变量1><数值>

<数值>中位模式是“非”门逻辑,结果存入<变量>中

39

例: R50=00101100

@654 R52 R50 模式变量R50中的内容是非门,结果存入R52中,R52=11010011 @655<变量><变量1><数值>

<变量1>和<数值>中位的逻辑是“或”门,其结果存入<变量>中

@656<变量><变量1><数值>

<变量1>和<数值>中位“异或”门逻辑,其结果存入<变量>中

@657<变量><变量1><数值>

<变量1>和<数值>中位是“与”门逻辑,其结果存入<变量>中 例 R50=1 R51=0

@657 R52 R50 R51 在布尔代数变量R50和R51上执行逻辑与操作,结果存入R52,其内容是0 @658<变量><变量1><数值>

<变量1>和<数值>中位与门逻辑,其结果是非门,并存入<变量>中

例:R50=1 R51=0

@658 R52 R50 R51 在布尔代数变量R50上执行逻辑与操作,结果是非门并存入R52中,R52为1 @659<变量><数值>

<数值>定义位(0~7);<变量>定义位模式中位置“1”

40

本文来源:https://www.bwwdw.com/article/0ma7.html

Top