电工学习网

 找回密码
 立即注册
查看: 1047|回复: 0
打印 上一主题 下一主题

用户自定义变量及应用

[复制链接]
跳转到指定楼层
楼主
发表于 2021-11-6 20:45:47 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
        用户自定义变量是由用户在程序中通过指令DEF进行定义并赋值的变量,又称用户变量(User Data)。它们仅在运行时才会被CNC创建,其数量、数据类型、可见性及其他属性均由用户自行定义。(1) 用户变量的3个类型
        根据变量的有效范围(即变量可见范围),用户变量可细分为3个类型,即局部用户变量(LUD)、程序全局用户变量(PUD)和全局用户变量(GUD)。
        1)局部用户变量
         LUD是在非主程序级别的零件程序中定义并局部使用的用户变量,类似于FANUC系统的局部变量;也就是仅在其被定义的程序内有有效。在用指令DEF定义LUD时,既要以单独的程序段给予数据定义,又要每次定义使用的数据类型不可超过1种,但每次可以定义多个相同数据类型的变量。在零件程序执行时,LUD被创建;在零件程序结束或CNC复位时,创建的LUD被删除。
        2)程序全局用户变量
        PUD是在主程序级别的零件程序中定义并共同使用[1]的用户变量,类似于FANUC系统的公共变量。在用指令DEF定义PUD时,既要以单独的程序段给予数据定义,又要每次定义使用的数据类型不可超过1种,但每次可定义多个相同数据类型的变量。在零件程序执行时,PUD被创建;在零件程序结束或CNC复位时,创建的PUD被删除。修改机床日期,可将主程序内已定义过的GUD重新定义为PUD。
        3)全局用户变量
        GUD是在数据块(SGUD、MGUD、UGUD、GUD4~GUD9)中定义的NC或通道全局变量。PUD可在所有零件程序中进行存/取操作,并在CNC断电重启后不被删除——一旦定义便会持续保留。在用指令DEF定义GUD时,既要在定义文件(如_N_DEF_DIR/_M_SGUD_DEF)中定义,又要以单独的程序段给予数据定义,还要保证每次定义使用的数据类型不超过1种。
(2) 用户变量定义句法
        在SINUMERIK系统中,用指令DEF定义用户变量LUD、PUD和GUD的句法形式为“DEF <范围> <类型> <预处理停止> <初始化时间> <物理单位> <限值> <存取权限> <名称> [<值_1>,<值_2>,<值_3>] =<初始值>”。式中,DEF为定义用户变量的指令,其余参数的属性及注意事项如下。
        1)参数<范围>是仅与GUD相关的有效范围。
          参数<范围>=NCK时,表示NC全局用户变量(GUD)的有效范围为整个NCK。
          参数<范围>=CHAN时,表示通道全局用户变量(GUD)的有效范围为整个通道。
        2)参数<类型>给定数据的类型。
          参数<类型>=INT时,表示数据类型为INT,即带+、-符号的整数值。例如,“N05 DEF INT CYCLE”表示CYCLE设为整数型变量,“N10 DEF INT ANZAHL=7”表示起始值为7的ANZAHL(数目)设为整数型变量。
          参数<类型>=REAL时,表示数据类型为REAL,即实数。例如,“N15 DEF REAL COSALFA=1,XVORPOS, ZVORPOS”表示起始值为1°的cosα设为实数型变量,预设为0的XVORPOS(X轴预停位置)、ZVORPOS(Z轴预停位置)设为实数型变量。
          参数<类型>=BOOL时,表示数据类型为BOOL,即布尔量;其结果为TRUE(1)或FALSE(0)。例如,“N20 DEF BOOL _ZV[2],_SOWZ”表示预设为FALSE(0)的_ZV[2]和_SOWZ设为布尔型变量。
          参数<类型>=CHAR时,表示数据类型为CHAR,即ASCII字符。例如,“N25 DEF CHAR BTA="L"”表示字符类型的变量BTA赋值为一个ASCII字符"L"的代码值76。
          [1] 即在主程序级别的零件程序与所有子程序中存入和读取。
        参数<类型>=STRING[<最大长度>]时,表示数据类型为STRING,即给定最大长度的字符串,如STRING[100]。例如,“N22 DEF STRING[32] _SLA,_SLE”表示_SLA和_SLE设为长度≤32的字符串。
参数<类型>=AXIS时,表示数据类型为AXIS,即进给轴或主轴的标识符。例如,“N35 DEF AXIS ACHSNAME=(X1)”表示AXIS类型的变量名为ACHSNAME,标识符为带有扩展地址的进给轴X1。
参数<类型>=FRAME时,表示数据类型为FRAME,即静态坐标转换的几何设定。
        3)可选参数<预处理停止>是仅与GUD相关的预处理停止;在句法内被省略(未编程)时,默认无预处理停止。
          参数<预处理停止>=SYNR时,表示在读取用户变量时执行预处理停止。
          参数<预处理停止>=SYNW时,表示在写入用户变量时执行预处理停止。
          参数<预处理停止>=SYNRW时,表示在读取/写入用户变量时执行预处理停止。
        4)可选参数<初始化时间>是在指令REDEF重新定义系统变量和用户变量时,变量重新设置为初始化值的时间,也就是变量重新初始化的时间。此参数在句法内被省略时,默认为0.0。
          参数<初始化时间>=INIPO时,表示上电,即在上电时重新初始化变量。
          参数<初始化时间>=INIRE时,表示复位,即在主程序结束(M02/M30)、CNC复位、BAG复位或上电时重新初始化变量。
          参数<初始化时间>=INICF时,表示新配置,即在通过hmi或指令NEWCONFIG请求重新配置时,或者主程序结束、CNC复位、BAG复位及上电时,重新初始化变量。
          参数<初始化时间>=PRLOC时,表示程序局部更改,即在当前零件程序范围内修改变量后,唯有CNC复位、BAG复位、程序结束(M02/M30)或上电,方可重新初始化。PRLOC属性必须与可编程设定数据42000、42010、42400、42800、43210~43230、43300、43420、43430、43510、43520、43700、43710~43790一起使用。
        5)可选参数<物理单位>是仅为类型INT或REAL的变量设定物理单位。参数<物理单位>采用“PHU<单位>”的句法形式进行实点数设定的。
        6)可选参数<限值>是仅为类型INT、REAL或CHAR的数据给定定义范围的上极限值和下极限值。参数<限值>采用“LLI <数值>”的句法形式表示定义范围的下极限,采用“ULI <数值>”的句法形式表示定义范围的上极限。<限值>在句法内被省略(未编程)时,数据类型INT、REAL与CHAR分别默认为0、0.0和0。
        7)可选参数<存取权限>是通过零件程序或BTSS读取/写入GUD的权限。参数<存取权限>采用“APRP <保护等级>”的句法形式表示通过零件程序读取GUD的权限,采用“APWP <保护等级>”的句法形式表示通过零件程序写入GUD的权限,采用“APRB <保护等级>”的句法形式表示通过BTSS读取GUD的权限,采用“APWB <保护等级>”的句法形式表示通过BTSS写入GUD的权限。
        8)参数<名称>用来给定DEF定义的用户变量的名称。变量名称的前2个字符必须为字母或下划线“_”,所用字符数不可超过31,且字符“$”预留给系统变量而不可使用。例如,用户变量STROM_1、ZEIT_2、GUD5_NAME等。AXIS类型变量的轴名称带有扩展地址时,必须将轴名称写在圆括号内。
        9)可选参数[<值_1>,<值_2>,<值_3>]既可用于设定类型为BOOL、CHAR、INT、REAL、AXIS或FRAME的1维~3维数组变量的数组长度,也可用于设定类型为STRING的1维~2维数组变量的数组长度。其中,<值_1>、<值_2>、<值_3>分别对应于1维数组、2维数组和3维数组,彼此的最大值均为65535。
        10)可选参数<初始值>为用户变量或数组变量预设一个初始化值。
          ① 参数<初始值>可为用户变量(GUD、PUD或LUD)预设一个初始化值,例如程序段“DEF NCK REAL PHU 13 LLI 10 APW(P) 3 APR(P) 3 APW(B) 0 APR(B) 2 ZEIT_1=12,ZEIT_2=45”表示定义了2个数据类型为REAL的全局用户变量ZEIT_1、ZEIT_2并预设其初始化值对应为12.0和45.0。
          ② 参数<初始值>可用于类型为BOOL、CHAR、INT、REAL、AXIS或FRAME的1维~3维数组变量的初始化。在指令DEF使用值列表对数组变量初始化时,句法形式为“DEF <数据类型> <变量名称>[<值_1>,<值_2>,<值_3>]=SET(值1,值2,值3)”;在指令DEF使用重复值对数组变量初始化时,句法形式为“DEF <数据类型> <变量名称>[<值_1>,<值_2>,<值_3>]=REP(值)”,或“DEF <数据类型> <变量名称>[<值_1>,<值_2>,<值_3>]=REP(值,数量_数组元素)”。
          ③ 参数<初始值>可用于类型为STRING的1维~2维数组变量的初始化。在指令DEF使用值列表对数组变量初始化时,句法形式为“DEF <数据类型> <变量名称>[<值_1>,<值_2>]=SET(值1,值2)”;在指令DEF使用重复值对数组变量初始化时,句法形式为“DEF <数据类型> <变量名称>[<值_1>,<值_2>]=REP(值)”,或“DEF <数据类型> <变量名称>[<值_1>,<值_2>]=REP(值,数量_数组元素)”。

回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

电工学习网 ( )

GMT+8, 2024-4-30 10:59

Powered by © 2011-2022 www.diangon.com 版权所有 免责声明 不良信息举报

技术驱动未来! 电工学习网—专业电工基础知识电工技术学习网站。

栏目导航: 工控家园 | 三菱plc | 西门子plc | 欧姆龙plc | plc视频教程

快速回复 返回顶部 返回列表