840d.docx
《840d.docx》由会员分享,可在线阅读,更多相关《840d.docx(26页珍藏版)》请在冰豆网上搜索。
![840d.docx](https://file1.bdocx.com/fileroot1/2023-2/3/2085e12e-3f61-4866-b953-d2ad6afda027/2085e12e-3f61-4866-b953-d2ad6afda0271.gif)
840d
出口版本
在出口版本中不含有以下功能:
功能810DE840DE
5轴加工软件包------
操作转换软件包(5轴)-------
多轴插补(>4轴)------
螺旋线插补2D+6------
同步动作,级别2---1
测量,级别2---1
适配控制11
连续修整11
使用编译循环(OEM)------
垂度补偿,多维11
--)没有此功能1)有限的功能
计算变量
正常情况下,如果没有做进一步说明,则在地址R下有100个计算变量供使用,数据为实数型。
计算变量的具体个数(最大1000)由机床参数决定。
系统变量类型一览
1.字母
意义
$M机床参数
$S设定数据
$T刀具管理参数
$P程序数值
$A实际数值
$V服务参数
2.字母
意义
NNCK-全局
C通道专用
A轴专用
用户定义变量
除了预设的变量,编程者还可以确定自己的变量,并用数值加以注明。
局部变量(LUD)仅在其被定义的那个程序中才有效。
全局变量(GUD)在所有程序中都有效。
参见机床制造商说明。
所有级上都是有效的。
它们随着零件程序起始而设置,随
着零件程序结束或复位而被删除。
举例:
$MN_LUD_EXTENDED_SCOPE=1
PROCMAIN;主程序
DEFINTVAR1;PUD-定义
SUB2;子程序调用
M30
PROCSUB2;子程序SUB2
DEFINTVAR2;LUD-定义
IF(VAR1==1);PUD读
VAR1=VAR1+1;PUD读和写
VAR2=1;LUD写
ENDIF
SUB3;子程序调用
M17
PROCSUB2;子程序SUB2
IF(VAR1==1);PUD读
VAR1=VAR1+1;PUD读取和写
VAR2=1;错误LUD自SUB2;未知
ENDIF
M17
如果在定义时没有给变量赋值,那么系统将之预定为0。
变量必须在使用之前、在程序开始时定义。
定义必须在一个独立的程序段中进行;每个程序段只能定义一个变量类型。
说明
INT变量类型整数型,意即整数的
REAL变量类型实数,意即带小数点的分数
BOOL变量类型布尔意即1或0(TRUE或者FALSE)
CHAR变量类型字符意即与ASCII-代码相对应的字符(0到255)
STRING变量类型字符串,意即符号串
AXIS变量类型轴,意即轴地址和主轴
FRAME变量类型框架,意即几何数据
名称变量名称
运算符
/
计算功能+加法-减法*乘法/除法
注意(TypINT)/(TypINT)=(TypREAL);比如:
3/4=0.75
DIV除法,用于变量类型整数型和实数型
注意(TypINT)DIV(TypINT)=(TypINT);比如:
3DIV4=0
MOD取模除法(整数型或者实数型),提供一个整数型除法的余数,比如3MOD4=3串运算符(在框架变量时)
Sin()正弦
COS()余弦
TAN()正切
ASIN()反正弦
ACOS()反余弦
ATAN2(,)反正切2
SQRT()平方根
ABS()总计
POT()2.乘方(平方)
TRUNC()整数部分
ROUND()整数园整
LN()自然对数
EXP()指数函数
CTRANS()偏移
CROT()旋转
如果机床参数
$MN_LUD_EXTENDED_SCOPE已经设定,就不能在主程序和子程序中用相同的名称再去定义一个变量。
变量名称
一个变量名称最多由31个符号组成。
前面两个符号必须是字母或下划线。
符号
"$"不能用于用户定义的变量,因为这个符号已经用于系统变量了。
用数值表赋予初值
SET数组定义的方法
DEFTypVARIABLE=设定(值)
DEFTypFELD[n,m]=设定(值,值,…)或者DEFTypVARIABLE=值
DEFTypFELD[n,m]=(值`,值…)
有多少初值被编程就有多少数组元被赋值。
没有值的数组元
(数值表中的空白)会自动被填上0。
轴类型的变量是不允许有空白的。
如果被编程的值超过现有的剩余数组元就会触发系统警报。
举例:
DEFREALFELD[2,3]=(10,20,30,40)
在使用轴变量时,轴变址不能运行:
举例:
在一行里面赋初值$MA_AX_VELO_LIMIT[1,AX1]=设置(1.1,2.2,3.3)
与之相应的:
$MA_AX_VELO_LIMIT[1,AX1]=1.1
$MA_AX_VELO_LIMIT[2,AX1]=2.2
$MA_AX_VELO_LIMIT[3,AX1]=3.3
2.无限程序循环
LOOP
无限循环在无限程序中被应用。
在循环结尾总是跳转
到循环开头重新进行。
LOOP
NC-程序段
ENDLOOP
3.计数循环
FOR当一个带有一个确定值的操作程序被循环重复,
FOR循环就会被运行。
记数变量同时会从初始值到最后值
增加数值初始值必须小于最后值。
变量必须属于
INT类型。
FOR变量=初始值TO最后值NC程序段
ENDFOR
4.在循环开头带有条件的程序循环
WHILE
只要条件满足,WHILE循环就被执行。
WHILE表达式NC程序段
ENDWHILE
5.在循环结尾带有条件的程序循环
REPEAT
REPEAT循环一旦被执行会不断重复,直到条件被满足为止。
REPEAT,NC程序段UNTIL(表达式)
命令解释
RELEASE(Achsname,Achsname,…)轴使能
GET(Achsname,Achsname,…)轴接收
GETD(Achsname,Achsname,…)轴直接接收
Achsname在系统中轴赋值:
AX1,AX2,…或者给出加工轴名称
RELEASE(S1)主轴S1,S2,…的使能
GET(S2)主轴S1,S2,…的接收
GETD(S3)主轴S1,S2,…的直接接收
控制结构
解释
IF–ELSE–ENDIF二选一
LOOP–ENDLOOP无限循环
FOR–ENDFOR计数循环
WHILE–ENDWHILE在循环开头有条件的循环
REPEAT–UNTIL在循环结尾有条件的循环
运行
1.IF–ELSE–ENDIF
IF–ELSE–ENDIF-模块用于二选一:
:
IF(表达式)NC程序段ELSENC程序段ENDIF
如果表达式值为TRUE,也就是说条件被满足,这样后面的程序模块被执行。
如果条件不满足,ELSE分支被执行。
这个ELSE分支可取消。
2.
无限程序循环LOOP
无限循环在无限程序中被应用。
在循环结尾总是跳转
到循环开头重新进行。
LOOP
NC-
程序段
ENDLOOP
3.
计数循环
FOR
当一个带有一个确定值的操作程序被循环重复,FOR循环就会被运行。
记数变量同时会从初始值到最后值增加数值初始值必须小于最后值。
变量必须属于INT类型。
FOR变量=初始值TO最后值
NC程序段
ENDFOR
4.在循环开头带有条件的程序循环
WHILE
只要条件满足,WHILE循环就被执行。
WHILE表达式
NC程序段
ENDWHILE
5.在循环结尾带有条件的程序循环REPEAT
REPEAT循环一旦被执行会不断重复,直到条件被满足为止。
REPEAT
NC程序段
UNTIL(表达式)
界限条件
带有标准控制结构数组元的程序段不能被跳过。
在这些程序段中不允许有标签。
标准控制结构被翻译。
在识别一个循环结尾时,考虑到所找到的标准控制结构,会寻找循环开头。
之后在翻译过程中,模块结构不会完全被检测。
建议不要混合使用标准控制结构和程序跳转。
在循环的预处理中,会检查控制结构的正确嵌套。
轴使能
:
RELEASE
在轴使能时必须要注意:
1.轴不可以参加转换。
2.在轴耦合时(正切控制),所有相关轴都必须使能。
3.一个角逐的定位轴在这种状态下不能交换。
4.在龙门架主轴机床中,所有跟随轴也被交换。
5.在轴耦合时(联动,引导轴耦合,电子齿轮)只有相连的引导轴被使能。
轴接收
:
GET
用这个命令执行原来的轴交换。
轴的职责完全取决于
通道
在这个通道中编程了该命令。
GET的作用带同步的轴变换:
假如一个轴间断的在另一个通道中赋值,或者被PLC赋值,并且在GET之前不通过“WAITP“、G74或取消剩余行程使之同步,则该轴必须始终同步。
停止进刀(与STOPRE相同)加工停止,直至交换完成为止。
不同步的轴变换:
如果轴不必同步,则GET不产生进刀停止。
比如:
N01G0X0
N02RELEASE(AX5)
N03G64X10
N04X20
N05GET(AX5)
N06G01F5000
N07X20
N08X30
N09…
轴直接接收:
GETD用GETD(GETDirectly)将一个轴从另一个通道中直接取出。
这意味着,不必有合适的RELEASE在另一个通道中为这个GETD编程。
这也意味着,现在必须建立另一个通道通讯(比如等待符)。
编程举例
6个轴在通道1中用于加工的为:
1.,2.,3.和第4.轴。
5.和第6.轴用于通道2中进行工件更换。
轴2应当在两个轴之间可以进行交换并在POWERON之后给通道1赋值。
通道1中的程序“MAIN“
%_N_MAIN_MPF
INIT(2,"TAUSCH2")在通道2中选择程序TAUSCH2
N…START
(2)启动通道2中的程序
N…GET(AX2)接收轴AX2
…
…
N…RELEASE(AX2)使能轴AX2
N…WAITM(1,1,2)在通道1和2中等待等待符以便在两个通道中实现同步。
N…
N…M30轴变换之后的流程
通道2中的程序“变换2“
%_N_TAUSCH2_MPF
N…RELEASE(AX2)
N160WAITM(1,1,2)在通道1和2中等待等待符以便在两个通道中实现同步。
N150GET(AX2)接收轴AX2
N…
N…M30轴变换之后的流程
轴变换性能更改设定
轴交换的时间点由MD10722:
AXCHANGE_MASK按以下方法设定:
如果轴通过WAITP处于一个中性状态(与前面的性能一样),那么也可以在两个通道之间进行自动的轴变换。
版本SW5.3以上,所有用GET或者GETD
取到轴容器中的轴,在轴容器旋转以后才可以再次被变换。
版本SW6.4以上,在插入一个中间程序段之后会在主程序中检测,
是否需要重组。
只有当这个程序段的轴状态和实际的轴状态不相符时
才需要进行重组。
功能
用WRITE命令可以在给出的文件结束处附加文件(比如测量循环时的测量结果)。
通过MD11420LEN_PROTOCOL_FILE可以把协议文件的最大长度调节到千字节。
这个长度对于所有用WRITE命令设定的文件都有效。
如果文件达到给定的长度,就会出现一个出错提示,字符串不会被保存。
如果存储器够用,则可以编制一个新的文件。
用WRITE命令可以从零件程序中存放到文件中。
记录文件(千字)的大小在MD中确定。
功能
用DELETE命令可以删除所有的文件,无论它是否通过WRITE命令产生。
通过更高存取级别产生的文件可以用DELETE删除。
在主程序和子程序之间的参数传递
如果在主程序中带参数工作,则您也可以在子程序中使用相应计算的或者赋值的数值。
在此主程序的实际参数的值在子程序调用时传递到子程序的形式参数,并且在子程序执行过程中处理。
举例:
N10DEFREALLAENGE,BREITE
N20LAENGE=12BREITE=10
N30RAHMEN(LAENGE,BREITE)
在主程序
N20中赋值的数值传递到子程序N30中。
参数传送按照所给定的顺序进行。
参数名称在主程序和子程序中不可一样。
模态子程序:
MCALL
模态有效的子程序调用,MCALL
用此功能,子程序可以在每个带轨迹运行的程序段之后自动调用和执行。
为此可以自动化子程序调用,这些子程序应在不同的工件位置处执行。
比如用于加工的钻孔图。
间接调用子程序
CALL
根据所给定的条件,可以在一个地点调用不同的子程
序。
这里子程序名称存放在一个字符串类型的变量中。
子
程序调用通过
CALL
和变量名进行。
间接调用子程序仅可以用于没有参数传送的子程序。
为了直接调用一个子程序,存放该名称在一个字符串常量中。
举例:
直接调用字符串常量:
CALL"/_N_WKS_DIR/_N_SUBPROG_WPD/_N_TEIL1_SPF"间接调用,通过变量:
DEFSTRING[100]PROGNAME
PROGNAME="/_N_WKS_DIR/_N_SUBPROG_WPD/_N_TEIL1_SPF"
CALLPROGNAME
调用带路径说明和参数的子程序:
PCALL编程
带绝对的路径说明和参数传送调用子程序
PCALL<路径/程序名>(参数1,…,参数n)
功能
使用指令
CALLPATH
可以扩展查找路径用于子程序调用。
由此也可以从一个没有选择的工件目录中调用
子程序,而不对子程序进行完整的、绝对的路径名称说明。
在登记用户循环之前进行查找路径的扩展。
(_N_CUS-DIR)。
撤销选择查找路径扩展
查找路径扩展通过以下的事件撤销选择:
CALLPATH带空字符串
CALLPATH没有参数
零件程序结束
复位
其它说明
CALLPATH
检查所编程的路径名是否实际存在。
在故障情况下,零件程序加工带补偿程序段报警
14009中断。
CALLPATH也可以在INI文件中编程。
它对INI文件的加工时间有影响(WPD-INI-文件或者初始化程序,用于NC有效的数据,比如第一通道中的框架_N_CH1_UFR_INI)。
然后初始化程序再次复位。
抑制当前的程序段显示:
DISPLOF
功能用DISPLOF抑制子程序的当前程序段显示。
DISPLOF位于PROC指令的结束处。
显示循环的调用或者子程序的调用,而不显示当前的程序段。
正常情况下打开程序段显示。
用DISPLOF关闭程序段显示,直至从子程序返回或者程序结束。
如果从带DISPLOF属性的子程序中调用其它的子程序,则在这个子程序中也抑制当前的程序段显示。
如果一个子程序带抑制的程序段显示,由一个异步的子程序中断,则当前子程序的程序段被显示。
单段抑制:
SBLOF,SBLON(自软件版本SW4.3起)
说明
SBLOF关闭单段
SBLON再次接通单段
功能
程序专用的单段抑制
用SBLOF
标记的程序,在每个单段类型时如同一个程序段完全执行。
SBLOF位于PROC行,并且一直有效,直至子程序结束或者中断。
使用返回指令判断在子程序结束处是否被停止。
用M17返回:
在子程序结束处停止
用RET返回:
在子程序结束处没有停止SBLOF也适用于所调用的子程序。
举例说明子程序,没有在单段中停止
PROCBEISPIELSBLOF
G1X10
RET
异步子程序单段禁止
为了在一步中执行单段的一个ASUP,必须在ASUP中编程一个带SBLOF的PROC指令。
这也适用于功能“可编辑的系统ASUP”,通过MD11610:
ASUP_EDITABLE。
在单段中的程序影响
在单段功能中,用户可以按程序段方式执行零件程
序。
单段有以下的设定方式:
SBL1:
IPO单段,在每个加工功能程序段之后停顿
SBL2:
单段,在每个程序段之后停顿
SBL3:
在循环中停顿(通过选择SBL3抑制SBLOF指令)。
程序嵌套时单段抑制
如果在一个子程序中编程SBLOF在PROC指令中,则用M17停止到子程序返回。
由此防止在调用的程序中已经执行下一个程序段
如果在一个子程序(带SBLOF在PROC指令中)中激活一个单段抑制,则在调用程序的下一个加工功能程序段之后才停止。
边界条件
当前的程序段显示可以用
DISPLOF在循环中抑制。
如果DISPLOF连同SBLOF一起编程,则在循环之内在单段停止时,如同在
调用循环之前一样显示。
如果在系统ASUP或者用户ASUP中,单段停止用位0=1或者位1=1(机床数据MD10702:
IGNORE_SINGLEBLOCK_MASK)抑制,则通过在ASUP中编程SBLON,可以再次激活单段停止。
在用户ASUP中,单段停止由MD20117:
IGNORE_SINGLEBLOCK_ASUP
抑制,并且不可以通过编程SBLON再次激活。
通过选择
SBL3,抑制指令SBLOF自软件版本SW6.4起
在单段类型2中拒绝单段停止。
当MD10702:
IGNORE_SINGLEBLOCK_MASK中位12=1设置时,在单段类型2(SBL2)中,在SBLON程序段不停止。
使用EXTCALL
您可以由HMI后装载一个程序,方式“执行外部程序”。
在此所有通过HMI的目录结构可以到达的程序可以后装载并执行。
一个外部程序路径的说明
SD42700:
EXT_PROG_PATH可以灵活地设定调用路径。
SD42700包含一个路径说明,它与所编程的子程序名一起构成所调用程序的绝对路径名。
FIFO缓存器)
NCK中需要一个后装载存储器,用于在方式“执行30K字节。
MD18360:
MM_EXT_PROG_BUFFER_SIZE
MD18362:
MM_EXT_PROG_BUFFER_NUM
扩展T功能替代SW6.4起,T功能替代被扩展,从而通过
机床数据可以设定:
是否在同时编程D号或者DL号和T号时
在一个程序段中,D或者DL根据预设置作为参数传送到T替换循环中(预设置),或者应该在调用T替代循环之前执行。
MD10719:
T_NO_FCT_CYCLE_MODET功能替代的参数化用
值0:
如同当前一样,把D或者DL号直接
传送到循环,(缺省值)。
值1:
D或者DL号直接在程序段中计算。
只有设计了带M功能的刀具更换(MD22550:
TOOL_CHANGE_MODE=1)时该功能才有效,其它情况下始终传送D或者DL值。
循环:
给用户循环设定参数
循环概述
循环调用说明
关键字和所保留的名称不允许用宏指令过定义。
使用宏指令技术可以很大地改变系统的编程语言!
因此您必须要特别小心地使用宏指令技术!
宏指令也可以在NC程序中约定。
只有命名符才允许用作宏指令名称。
G功能宏指令仅可以在宏指令模块中由系统全局约定。
使用宏指令技术可以定义任意的命名符、G-/M-/H-功能和L-程序名。
允许宏指令名带1个字母和1个数字(仅在FM-NC)。
存储器结构
有一个存储器结构供用户使用,它分为两个部分。
1.工作存储器
工作存储器包含当前的系统数据和用户数据,控制系统以此数据运行(有源文件系统)。
举例:
有效的机床数据,刀具补偿数据,零点偏移。
2.程序存储器
在程序存储器中存储文件和程序,并且可以长期保存(无源文件系统)
举例:
主程序和子程序,宏指令定义。
主程序和子程序存储在零件存储器中。
除此之外还有一些文件类型可以中间存储,在需要时(比如加工某一个工件)传送到工作存储器中(比如用于初始化目的)。
工件目录,_N_WKS_DIR工件目录在正常情况下建立在程序存储器的
_N_WKS_DIR名称下。
工件目录包含所有编程工件的相应工件目录。
工件目录,WPD标志
为了可以灵活处理数据和程序,可以把某些数据和程序打包,或者存放在单独的工件目录下。
一个工件目录包含加工该工件所需要的所有文件。
它可以是主程序,子程序,任意初始化程序和注释文件。
初始化程序仅执行一次,它是根据机床数据MD11280:
WPD_INI_MODE中的设定,在选择程序之后以第一个零件程序起始。
在外部PC中编制工件目录
PC到控制系统)参见操作说明。
;$PATH-指令在一个文件的第二行用$PATH=…说明目标路径。
举例:
;$PATH=/_N_WKS_DIR/_N_WELLE_WPD文件存放在所说明的路径下。
查找路径顺序
1.当前的路径/名称工件目录或者
标准目录_N_MPF_DIR
2.当前的路径/名称_SPF
3.当前的路径/名称_MPF
4./_N_SPF_DIR/名称_SPF全局子程序
5./_N_CUS_DIR/名称_SPF用户循环
6./_N_CMA_DIR/名称_SPF机床制造商循环
7./_N_CST_DIR/名称_SPF标准循环
工作存储器
初始化程序
这里讨论工作存储器数据可以预置(初始化)时如何
编程。
可以使用以下的文件类型:
name_TEA机床数据
name_SEA设定数据
name_TOA刀具补偿
name_UFR零点偏移/框架
name_INI初始化文件
name_GUD全局用户数据
name_RPAR参数
数据区
数据可以划分为不同的区。
举例来说一个控制系统一
般有几个通道(不包括810DCCU1,840DNCU571)或者通常也有几个轴。
多个通道的控制系统中如何进行
CHANDATA(通道号)用于多个通道,仅可以在文件N_INITIAL_INI中使用。
N_INITIAL_INI是开机调试文件,用此文件可以初始化控制系统的所有文件。
定义用户数据功能
在开机调试时(G