Macro-中文用户宏程序开发手册_第1页
Macro-中文用户宏程序开发手册_第2页
Macro-中文用户宏程序开发手册_第3页
Macro-中文用户宏程序开发手册_第4页
Macro-中文用户宏程序开发手册_第5页
已阅读5页,还剩46页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、新代科技2005/8/1Open CNC Macro 用户宏程序开发前言本发展环境OpenCNC开发的目的在于方便 Macro程序的撰写及测试,使得 程序设计师得以在实际上线执行程序之前可以先作一程序的测试, 经由图形化的 接口而得知其程序是否有逻辑上的错误存在。目录第一章OpenCNC开发环境安装及使用说明 1第一节系统需求 1第二节软件安装1第三节使用说明2第二章用户宏编程的基本概念和基本书写格式 4第一节用户宏编程的基本概念4第二节基本书写格式6一、用户宏文档格式 6二、普通数控程序段格式6三、用户宏程序段格式 8第三章用户宏程序的编写9第一节变量 9一、变量及其使用方法 9二、变量赋值

2、和引数赋值 9三、变量的种类 10第二节变量运算及变量表达式 13一、用户宏运算符13二、基本算数运算符14三、算术表达式和运算符优先级 14四、关系运算符和关系表达式 14五、逻辑运算和逻辑表达式15第三节 用户宏程序的流程控制 15一、条件判断 15二、循环控制 18三、无条件转移20第四节库函数21一、数学函数类 21、信息传递类 23三、操作辅助类24四、文档操作类24五、仿真绘图类25第四章宏程序的调用26第一节简单宏调用26一、简单宏调用指令26二、模态信息的回复 26第二节模态宏调用26一、模态宏调用指令 G66 26二、模态宏调用指令 G66.1 27第三节 扩充G代码宏指令调

3、用 28第五章用户宏程序范例 29第一节用户宏程序编写注意事项29第二节用户宏程序编写范例29一、车床 G21车床车牙 29附 录 34附录 I 基本 G 码指 览表 34附录H 地址码一览表35附录出引数赋值的地址码和变量的对应关系表35附录IV运算符及其优先级36附录V系统变量分配表 36附录VI 库函数 40附录VH程序调用方法47第一章OpenCNC开发环境安装及使用说 明第一节系统需求个人计算机:80486以上的中央处理器操作系统:NT 4.0以上的版本,Windows95以上的版本(需先安装 MSIE 3.0)硬盘空间:约1MB的硬盘空间第二节软件安装1、将安装磁盘放入3.5时磁盘

4、驱动器中,执行SETUP。建议在开始安装之前先行关 闭其它的窗口应用程序。2、稍待片刻即可进入下面之安装画面。3、选择Next继续安装的工作4、选才B Browse更改所要安装的目录或是接受内定的目录,选才N Next继续安装的工作。5、稍待片刻即可完成安装第三节使用说明操作说明:1、首先选取OpenCNC的图标,在图标上以鼠标左键点两下,即可进入主画面:备吉果独示展跚嫡鸟擦停耳模擦零/上J凶Praqram PositnnX O.COJ.Il0.CO3 J.UUU跚敢新槽 戴人琵式_ 儒存槽案G绅hEEttinjg咕5 1FccdictcTlrutCCOD17UtatuE/Messe YJir

5、djw1schine PositfelTJx(j.rmYO.CCO7O.CCOcD.LLIJ,另存新槽3糕参数线F Single Stao r r XY 广 7Z ZX r Lsrh附 ProgmnRssdynr andMacro琵式_ mH_IJdpREi |2、将所欲仿真之Macro程序存成*.nc文件,复制到底下,或是利用操作系统的注册编辑器(regedit),自行设定一目录以存放所编辑的 *.mmp文件,选取主窗口中的Load选项,将档案加载,选取开始模拟即可,仿 真的结果会显示在结果显示区。3、如欲自行设定一目录以存放所编辑的*.mmp档,请执行regedit:,选取 HKEY_LO

6、CAL_MACHINE t SOFTWARE-* Synteg OpenCNJ 2.0,选取选 项" MacroStorage”将设定值改为:;二一 Your files .location功能说明:1、设定所欲显示的空间:X YXYZ各个空间设定如上所示2、坐标参数设定:调整各轴的上限和原点的位置3、Single Step设定为Single Step可以一步步的执行程序。4、开始模拟:开始执行程序,并将结果显示于结果显示区。5、停止模拟:暂停程序的执行。6、重设:重新设定系统。7、开启新档:开启一个新的 Macro程序。8、加载程序:加载Macro程序。9、储存档案:储存目前的 M

7、acro程序。10、另存新槽:以新的文件名储存目前的 Macro程序。11、讯息显示区:显示错误讯息,此外亦可用来显示程序中各个变量值;命令栏 (Command)可以输入所欲察看的变量名称,而变量值会显示在讯息显示区13、Macro程序中变量的部份请参照第二章系统变量的说明。第二章 用户宏编程的基本概念和基本 书写格式第一节 用户宏编程的基本概念用一组指令构成某功能,并且象子程序一样存储在存储器中,再把这些存储的 功能由一个指令来代表,执行时只需写出这个代表指令,就可以执行其相应的功能。在这里,所存储的一组指令叫做宏程序体(或用户宏程序),简称为用户宏。其代 表指令称为用户宏命令,也称作宏程序

8、调用指令。使用时,编程人员只需会使用用户宏指令即可,而不必去关心宏程序体中的指令内容。例如,在下述程序流程中,可以这样使用用户宏:主程序用户宏O9011G65 P9011 A10 I5;X#1Y#4;在这个程序的主程序中,用 G65 P9011调用用户宏程序O9011,并且对用户宏 中的变量赋值:# 1=10、#4 = 5(A代表# 1、I代表# 4)。而在用户宏中未知量用变 量# 1及# 4来代表。用户宏有以下四个主要特征:1)在用户用户宏程序中可以使用变量,即宏程序体中能含有复杂的表达式;2)能够进行变量之间的各种运算;3)可以用用户宏指令对变量进行赋值,就象许多高级语言中的带参函数或过程

9、, 实参能赋值给形参;4)容易实现程序流程的控制。使用用户宏时的主要方便之处在于由于可以用变量代替具体数值,因而在加工 同一类的工件时.只得将实际的值赋予变量既可,而不需要对每个不同的零件都编 一个程序。下面再以一个示意性的例子来说明用户宏的概念。当图1 1中A、B、U、V的尺寸分别为 A = 20、B=10、U = 40、V = 20时, 其程序为:O1;G9l G00 X20.0 Y10.0;G01 Y10.0;X40.0Y-20.0;X-40.0;G00 X-20.0 Y-10.0;但是当图中A、B、U、V尺寸变化时则又需要编一个类似的程序。实际上,我们可以将程序写为:O1;G91 G0

10、0 XA YB ;G01Y V;XU;Y-V;X-U;G00 X-A Y-B;此时可以将其中变量,用用户宏中的变量# i代替,而字母与# i的对应关 系为:A#1B#2U #21V #22则用户宏程序即可写成如下形式09801;G9l G00 X#l Y #2;G01 Y# 22;X#21Y#22;X # 21;G00 X- #1 Y- 2 2;M99;使用时就可以用下述用户宏指令来调用:G65 P9801 A20.0 B10.0 U40.0 V20.0由于地址码A、B、U、V分别与变量# 1、#2、#21、#22有着一定的对应关系, 执行以上用户宏调用程序段时,实际数值就会将被赋予给对应的变

11、量,其对应结果 为# 1=20.0, #2=10.0, #21=40.0, #22=20.0;然后被调用的用户宏程序再按所得到 的变量值在宏程序中进行运算或执行指令,结束后返回主程序。实际使用时,一般还需要在这一指令前再加上F、S、T指令及进行坐标系设定等。如上述所示,当加工同一类,但只是尺寸不同的工件时,只需改变用户宏命令 的数值即可,而没有必要针对每一个零件都编一个程序。第二节基本书写格式一、用户宏文档格式数控程序文档中,一般以“ %”字符作为第一行的起头,该行将被视为标题行。 当标题行含有关键字“ MACRO”时整个文档就会以系统所定义的 MACRO语法 处理。如果该行无“MACRO”关

12、键词此档案就会被视为一般ISO程序文档格式处 理,此时将不能编写用户宏和使用其 MACRO语法。而当书写ISO程序文档时标题 行一般可以省略,直接书写数控程序。“ MACRO”关键词必须是大写字母。对于程序的注释可以采用“ /”的形式,这和高级语言 C+一样。例一:MACRO格式文档% MACRO/用户宏程序文档,必须包含“ MACRO”关键词IF 1 = 1 THENG00 X100.;ELSEG00 Y100.;END_IF;M99;例二:ISO格式文档%这是标题行,可当作档案用途说明,此行可有可无G00 X100.;G00 Y100.;G00 X0;G00 Y0;M99;二、普通数控程序

13、段格式数控程序是由若干个程序段所组成,而每个程序段是由若干个程序字和程序段 结束组成。例如:N20 G01 X25 Y-36 F100 S300 T02 M03 ;而程序字又是由地址符及其后面的数字所组成,如N(地址码)20(数字)、Y(地址码)-36(数字)。在程序中能作指令的最小单位是字,仅用地址码或仅用数字是不 能作为指令 的。程序段的格式如下:N G X 一Y-Z _F-S-T M 一;3顺序准备尺寸字进给主轴刀具辅助程序号功能功能转速功能功能段结字字功能字字束程序字程序段内各字说明如下:(1)顺序号 放在程序段前用以识别各程序段, 它由地址码N及其后面的5位以 内数字组成的。程序段号

14、不是必须的,可在需要时用,数字号码的顺序也是任意的, 可以每段都加也可只加在需要的地方。例如:N20表示该的程序段号为20。(2)准备功能字 也称G功能字,使数控机床做好某种操作准备指令,它由地址 码G及其后面的两位以内数字所组成。主要指令有:1)动作指令 如G01(直线插补)、G02(圆弧插补);2)平面指令 如G17(设定XY工作平面);3)刀补指令 如G41(左刀径补偿);4)其它指令。G代码及功能可参见表2-1。G代码分为模态代码(又称续效代码)和非模态代码两种。所谓模态代码是指 某一 G代码(如G01) 一经指定就一直有效,直到后面程序段中使用同组 G代码(如 G03)才能取代它。而

15、非模态代码只在指定的本程序段中有效。下一程序段需要时 必须重写(如G04) 0另外,不同组的G代码可以放在同一程序段中。但在同一程 序段中出现2个以上同一组的G代码指令时,则只有最后的 G代码有效。(4)尺寸字 由地址码、+、一符号及绝对值(或增量)的数值组成。它主要包 括以下几项:1)坐标轴的移动指令例如:X35.418。2)附加轴的移动指令如回转轴的转动,例如:A45。3)圆弧圆心坐标 它是在圆弧插补时用来指定圆弧圆心的值,用I、J、K表示。(5)进给功能字 指定刀具中心运动时的进给速度,由地址码F及其后面的数字组成。这个数字的单位取决于每个数控系统所采用的进给速度的指定方法。例如:F10

16、0表示进给速度为 100mm/min。(6)主轴功能字 指定主轴转速或速度,由地址码 S及其后面的数字组成,单位 为转速单位(r/min)。例如:S300表示主轴转速为 800r/min。(7)刀具功能字 指定刀号以选择刀具,由地址码 T及其后面的数字组成,刀具 功能字的数字就表示指定的刀号,数字的位数由所用的系统决定。例如:T08表示第八号刀。(8)辅助功能字又称M功能字,主要用来表示机床操作时各种辅助动作及其状 态,它由地址码M及其后面的两位数字组成。常用辅助代码可参见表1-3。表1 3常用2浦助功能代码功能说明代码功能说明M00程序停止M08切削液开M01选择停止M09切削液关M02程序

17、结束M30程序会M03主轴正转M98调用子程序M04主轴反转M99返回主程序M05主轴停止(9)程序段结束 写在每一程序段之后,表示程序结束,一般用符号“;”表表1 2地址码一览表功能地址意义程序号:/ O / %程序编号顺序号N程序段编号准备功能G建立工作方式尺寸字X、Y、Z各坐标的移动指令A、B、C、U、V、W各附加轴的移动指令R圆弧半径I、J、K圆弧圆心的(增量)坐标进给功能F指定进给的速度主轴功能S指定主轴的旋转速度刀具功能T刀具选择中用于指定刀号辅助功能M实现机床操作的各种辅助动作偏置号H、D偏置号的指定,长度偏移用H,半径补偿用 D暂停P、X暂停时间指定子程序号指定P在M98程序段

18、中,用以指定子程序号顺序号指定P在顺序号的位置,程序被重复执行重复次数L子程序或固定循环的重复次数参数P、Q、R固定循环中参数的指定三、用户宏程序段格式用户宏程序段的书写格式与 普通数控程序段格式 相似,每个程序段也是由若干 个程序字和程序段结束组成,但是在地址码后面的具体数值可以被变量置换。例如:N100 G33 U-(#18*2-#31) W(#23-SIGN(#23)*#33) Q#37 F(#9*#11);可见,两者的不同之处就是组成程序字的地址符后面不仅仅可以是数字,而且 可以是变量或者变量的表达式,如G(地址码)33(数字)、U(地址码)-(#18*2-#31)(表 达式)、Q(地

19、址码)#37 (变量)。但需注意的是,作为地址码的 O N、/等不能引用变量,其余功能字均可在用 户宏中按上述格式使用,功能字的意义和使用方法不变。第三章用户宏程序的编写第一节变量一、变量及其使用方法如前所述,变量是指可以在用户宏程序中的地址码后代替具体数值,在调用宏 程序时进行赋值的符号# i (i = 1, 2, 3,)。使用变量可以使用户宏程序具有通用 性。用户宏程序中可以使用多个变量,以变量编号进行识别。1、变量的形式变量是用符号#或后面加上变量编号所构成的,即:#i(i = 1, 2, 3,)例如:5 51 1091 1005也可用# (表达式 的形式来表示。例如:# #100#10

20、01 1#6/2其实,通过用符号后面加上变量编号也可构成的变量,即: i(i = 1, 2, 3,)例如:5 5但一般地,由符号后面加上变量编号构成的变量称为全局变量,不提倡在用 户宏程序中使用,具体见后面的介绍。2、变量的引用在地址符后的数值可以用变量置换。例如:若写成F#33,则当# 33=1.5时,与F1.5相同。若写成Z-#18,则当# 18=20.0时,与Z-20.0相同。但需要注意,作为地址符的 O、N、/等,不能引用变量。例如,O#27、N#1等,都是错误的。3、未定义变量尚未被定义的变量,被称为空(VACANT )。变量#0, 0始终为空,经常被用作空变量使用。、变量赋值和引数

21、赋值二”,不可仅用“二”符号。因为在1、变量赋值用户宏程序中变量赋值使用赋值运算符”: 本系统中符号“二”是被规定为关系运算符,用来比较是否相等的。例如#30: =100,会将变量#30赋值为整数100;而#30=100,将不能为变量#30 赋值,实际上是比较变量#30是否与整数100相等。2、引数赋值对于用户宏程序的另外一些接口变量,如何获得实际的数值,这是通过引数赋 值实现的,下面我们再回头看看第一章第一节中的用户宏程序调用例子:G65 P9801 A20.0 B10.0 U40.0 V20.Q执行这条用户宏调用程序段后,子程序中的变量就会得到# 1 = 20.0、#2=10.0、 #21

22、=40。#22=20.0的结果,这就是引数赋值。实际上,用户宏编程系统中,地址码A、B、C、D分别与变量# 1、#2、#3、 #7有着一定的对应关系,当执行用户宏调用程序段时,地址码后面的实际数值 就被赋予给用户宏程序中所对应的变量,这个过程就称为引数赋值。除去G、L、N、O、P以外的地址码都可作为引数赋值的地址码,大部分无顺 序要求,但对I、J、K则必须按字母顺序排列,对没有使用的地址可省略。例如:B A D I K 正确,而B_ A_ D_ _就是不允许。引数赋值所指定的地址码和用户宏程序中所使用的变量编号的对应关系如表2一 1所示。表2-1引数赋值的地址码和变量的对应关系引数赋值的地址码

23、用户宏中的变量引数赋值的地址码用户宏中的变量A#1P#16B#2Q#17C#3R#18D#7S#19E#8T#20F#9U#21H#11V#22I#4W#23J#5X#24K#6Y#25M#13Z#26注:关于扩充的地址码,X1=,请使用GETARG(address)函式读取。三、变量的种类按变量的组成符号和编号可将变量分为局部 (Local)变量、系统变量(System) 和全局变量(Global),其性质和用途都是不同的。1、局部变量:#1 #50所谓局部变量,就是在用户宏程序内部使用的变量,它只在定义它的用户宏程 序中有效,也就是说只有该用户宏程序内使用,在此用户宏程序以外是使用不到这

24、些变量的。但这并不意味着在此外的用户宏程序就不可以再使用# i这样的变量编号,因为 在某一时刻调出的用户宏中所使用的局部变量编号#i和另一时刻调用的用户宏(也不论与前一个用户宏相同还是不同)中所使用的# i是不同的,或者说不同的用户宏 调用实例中的# i所占用系统内存地址是不同的,即使在多重调用情况下,当用户宏 A调用用户宏B的情况下,也不会将A中的局部变量破坏。我们可以用局部变量级的这样一个概念来理解, 作用于宏程序某一级中的变量 称为本级变量,即这一变量在同一程序级中调用时 内容相同,若在另一级程序(如 子程序)中使用,则意义不同。本级变量主要用于变量间的相互传递,初始状态下 未赋值的本级

25、变量即为空白变量。如图21,就是用G代码(或G65时)调用宏时,局部变量级会随着调用多重度 的增加而增加,即存在如图的关系:主程序G65 P用户宏(第1级)0_G65 P用户宏(第2级)0_ G65 PM99M99局部变量(0级)#1(1级)#1(2级)#1#50上图说明了以下几点:#50#501)主程序中具有# 1# 50的局部变量(0级)2)用G65调用宏(第1级)时,主程序的局部变量(0级)被保存起来。再重 新为用户宏(第1级)准备了另一套局部变量# 1# 50 (第1级),可以再向它赋 值。3)下一用户宏(第2级)被调用时,其上一级的局部变量(第l级)被保存,再 准备出新的局部变量#

26、1 # 50(第2级),如此类推。4)当用M99从各用户宏回到前一程序时,所保存的局部变量 (第0、1、2级)存在的状态出现。对于没有赋值的局部变量,其初始状态为空,用户可自由使用。2、系统变量:#1000# 31986系统变量是根据用途而被固定的变量。主要有以下各种表2-2,详情请见附录表2 2系统变量分配变量编号用途#1000#1058模态信息#1500#1624运行控制/状态#1301#1436运行时状态变量#1800#1916模态变量4 4001# 5100用户参数6 6001#6032信号接口7 7001#7101模式组变量# 11000-# 12999刀具补偿变量#20001#25

27、986工件坐标系补偿值(工件零点偏移值)#26001#31986参考点3、全局变量:114095与局部变量相对,全局变量是在主程序以及调用的子程序中通用的变量,它 在 不同程序级中调用时 内容相同,即它在同一系统中的所有程序中都有效,因为全局 变量在系统中所占用的内存地址是唯一不变的。因此,对于任何一个全局变量i,它都可以在主程序和用户宏或者用户宏之间相互使用,传递数值,并对其操作。全局变量在114095的范围内,按用途主要分为四组。其中1400和656999两组可以被用户宏程序所使用(可读可写),但它 们具有不同的性质和使用方法,前者中的变量常用于一般的运算,可以用操作面板 (人机界面)来读

28、取显示;而后者中的变量为保持形变量有记忆性变量,可以被永 久保存,即掉电不丢失,在操作面板上可进行读写操作。具体可见表2-3。表2-3全局变量使用对照表变量编号说明宏程序人机界面永久保存1400一般运算用变量读/写只读否401655对应PLC4器R1R255:401=R1 655=R255656999有记忆性变量读/写读/写是1000014095对应PLC寄存器R0R4095: 10000=R014095=R4095注:表示具体参见资源分配表 表2-4中对应寄存器而401655和1000014095两组变量则影射为PLC中系统预定义的一些 寄存器,用户宏程序对其的读写规则和使用方法 不尽相同,

29、具体可参见表2-4资源 分配表中对应的寄存器,至于更详细的寄存器资源用途和规则可参阅OpenCNPLC 发展手册书中介绍。表2 - 4资源分配表编号说明读写规则是含可位(Bit)存取永久 保存宏程序或人机接口阶梯程序R0R39CNC系统接口区只读是否R40R49PLC警报讯息区R50R80使用者自行定义读/写读/写是否R81R100对应到系统参数34013420 PLC# 数只读只读是否R101R102刀具状态读/写读/写是是R103R255使用者自行定义读/写读/写是是R256R511否R512R639CNC系统接口区只读是否R640R1023否R1023R4095使用者自行定义读/写读/写

30、否否注:表示更详细的寄存器资源用途和规则可参阅OpenCNPLC发展手册一书第二节变量运算及变量表达式一、用户宏运算符要对变量进行各种运算操作就要用到运算符,它是“能对变量所存数据进行运 算的符号”。本系统的运算符及其优先级如表3-2所示。表3-2运算符及其优先级运算名符号优先级(),1函数调用运算函数名 (参数列表 )2取负-3求补运算NOT3乘法运算*4除法运算/4模运算/求余运算MOD4加法运算+5减法运算-5关系运算<,>,<=,>=6相等运算=7不等运算<>8布尔逻辑/按位与&, AND9布尔逻辑/按位异或XOR10布尔逻辑/按位或OR11

31、二、基本算数运算符(1) +(加法运算符,如3+5, #12+4)(2)-(减法运算符,或取负运算符,如#33-16, -#16)(3) *(乘法运算符,如9*2, #13*8)(4) /(除法运算符,如10/3, #43/15)(5)MOD (模运算符,或称求余运算符,其两侧均应为整型数据,如 7 MOD4 的值为3,当#18=20时#18 MOD4的值为2) 三、算术表达式和运算符优先级用算术运算符和括号将运算对象连接起来的、符合语法规则的式子称为算术表达式,运算对象可以是常数、变量、函数 等。例如:#6*8/#32-1.5+#18+ ROUND (#1)这就是一个算术运算式,它可以作为一

32、个整体赋值给某个变量,或用作其他表 达式中的一个运算对象。本系统按表表3-2规定了运算符的优先级和结合性。在表达式求值时,先按运 算符的优先级别高低次序执行,例如先乘除后加减。如表达式#12-#41*5的左侧为减, 右侧为乘号,而乘号优先于减号,因此,相当于 #12- (#41*5)。如果在一个运算对象两侧的运算符的优先级别相同,如 #2-5+#23,则按规定的 结合性(结合方向)处理,算术运算符的结合方向为“自左至右”,即先左后右。 因此5先与减号结合,执行#2-5的运算,再执行加#23的运算。这样“自左至右的 结合方向”又称为“左结合性”,即运算对象先与左面的运算符结合;对应地,也 有“右

33、结合性”的运算符,例如赋值运算符“:=”就是。四、关系运算符和关系表达式关系运算符是逻辑运算中比较简单的一种。所谓“关系运算”实际上就是“比 较运算”。将两个值进行比较,判断比较的结果是否符合给定的条件。例如,#3> 10是一个关系表达式,大于号(>)是一个关系运算符,如果#3=12, 则满足给定的“ #3>10”条件,因此关系表达式的值为“真”(即“条件满足”); 如果#3=6,不满足“#3>10”条件,则称关系表达式的值为“假”。本系统提供6种关系运算符:(1) <(小于)卜优先级相同(高).J1优先级(较高),优先级(低)(2) <=(小于或等于) &

34、gt;(大于)(4) >=(大于或等于)(5)=(等于)(6) <>(不等于)关于优先次序:1、前4种关系运算符(<,< = ,>,> =)的优先级别相同,它们却高于关系运算符“=",而“二”又高于“<>"2、关系运算符的优先级低于算术运算符。3、关系运算符的优先级高于赋值运算符。用两个关系运算符将两个表达式连接起来的式子,称为关系表达式。例如:#6> 36, #13+4<>#23关系表达式的值是一个逻辑值,即“真”或“假”。例如,若 #12为8,则关系 表达式“#12=10”的值为“假”,"

35、 #12>=6”的值为“真”。五、逻辑运算和逻辑表达式用逻辑运算符将关系表达式或逻辑量连接起来就是逻辑表达式。本系统提供6种逻辑运算符和逻辑运算(1) &, AND 逻辑与(2) XOR 逻辑或(3) OR 逻辑异或它们都是“双目(元)运算符”,它要求有两个运算量(操作数),逻辑运算 举例如下:# 1 AND #2 若#1、#2 为真,WJ#1 AND #2 为真。# 1 OR #2若#1、#2之一为真,则#1 XOR #2为真。逻辑运算符低于关系运算符,见图 3-1。算术运算符f ,言、(图)关系运算符逻辑运算符(低)赋值运算符图3-1第三节 用户宏程序的流程控制所谓程序白流程

36、(Flow Control)是通过控制程序的执行方向,进而掌握程序动 态。这用户宏程序区别于一般数控程序的特征之一,也是用户选择用户宏程序编写 数控代码的一大理由。用户宏程序的流程控制包括无条件判断、循环控制、无条件 转移三大类,这与其他的高级语言程序类似,下面将分别介绍其功能和使用语法。 一、条件判断判断条件的真假,然后根据真假或者对应情况到指定的地方去执行程序,这方 面的语句有IF和CASE语句。1、IF条件语句1)基本语法:IF 条件表达式 THEN操作ELSEIF 条件表达式 THEN操作ELSE操作END_IF ;说明:IF条件判断,根据真假情况到指定的地方去执行程序。 例如:% M

37、ACRO / 启动 MACRO 语法# 1 := 3.0;G01 G91 G92 X20. Y15. F200000;IF #1 = 1 THENX(1.0*1);Y(1.0*1);ELSEIF #1 = 2 THENX(1.0*2);Y(1.0*2);ELSEIF #1 = 3 THENX(1.0*3);Y(1.0*3);ELSEX(1.0*4);Y(1.0*4);END_IF;X(1.0) Y(1.0);M30;然而在实际使用中,可以有以下一些变形:2)变形1语法:IF 条件表达式 THEN操作ELSE操作END_IF ;3)变形2语法:IF 条件表达式 THEN操作END_IF ;编程时

38、可根据需要选择合适的语法格式。2、CAS劭支语句语法:CASE 条件表达式 OF条件值:操作条件表达式 , 条件表达式 , 条件表达式:操作条件表达式,条件表达式:操作ELSE操作END_CASE ;说明:CASE多条件判断分支,根据条件表达式运算结果所对应的条件值(整 数),分别执行不同程序区块。例如:% MACRO / 启动 MACRO 语法# 1 := 8;G01 G91 G92 X20. Y15, F200000;CASE #1 OF1:X(1.0*1);Y(1.0*1);2:X(1.0*2);Y(1.0*2);3: 4, 5:X(1.0*#1);Y(1.0*#1);ELSEX(1.0

39、*6);Y(1.0*6);END_CASE;X(1.0) Y(1.0);M30;二、循环控制1、REPEAT直到型循环语法:REPEAT<循环体>UNTIL <条件表达式 > END_REPEAT ;说明:REPEAT直到型循环控制,先执行循环体,后判断条件表达式,当条件 满足时退出循环。例如:% MACRO / 启动 MACRO 语法# 10 := 30.;# 11 := 22.5.;# 12 := #10/2;# 13 := #11/2;# 14 := 2.0;# 15 := 1.5;G01 G92 X#12 Y#13 F200.0;REPEATG00 X(#12+

40、#14) Y(#13+#15);G01 X(#12+#14) Y(#13-#15);X(#12-#14) Y(#13-#15);X(#12-#14) Y(#13+#15);X(#12+#14) Y(#13+#15);#14 := #14 + 2.0;#15 := #15 + 1.5;UNTIL (#14 > #12) OR (#15 > #13) END_REPEAT;X(1.0) Y(1.0);M30;2、WHILE当型循环语法:WHILE 条件表达式 DO循环体END_WHILE ;说明:WHILE当型循环控制,先判断条件表达式,当条件满足时执行循环体, 否则退出循环。例如:%

41、 MACRO / 启动 MACRO 语法# 10 := 20.;# 11 := 15.;# 12 := #10/2;# 13 := #11/2;# 14 := 2.0;# 15 := 1.5;G01 G92 X#12 Y#13 F200.0;WHILE (#14 = #12) AND (#15 = #13) DOG00 X(#12+#14) Y(#13+#15);G01 X(#12+#14) Y(#13-#15);X(#12-#14) Y(#13-#15);IF #14 6.0 THENEXIT;END_IF;X(#12-#14) Y(#13+#15);X(#12+#14) Y(#13+#15

42、);#14 := #14 + 2.0;#15 := #15 + 1.5;END_WHILE;X(-5.0) Y(5.0);M02;2、FOR循环语法:FOR 循环变量 := 表达式1 TO 表达式2 BY 表达式3 D O循环体END_FOR;说明:FOR循环控制,式中各参数意义如下循环变量控制循环次数的变量;表达式1一一循环计数的起始值,可为整数或表达式;表达式2一一循环计数的终止值,可为整数或表达式;表达式3一一循环计数每次的累加值,可为整数或表达式;循环体 一一循环每次执行内容;FOR循环执行过程为:先给循环变量赋起始值,然后判断循环变量是否为终止值, 当循环变量已为终止值时退出循环,否

43、则执行循环体,再对循环变量加上每次累加 值,继续判断直到循环变量为终止值时退出循环。范例:% MACRO /# 1 := 2.0;# 2 := 8.0;# 3 := 9;# 4 := 360.0 / #3;# 5 := (180.0 + #4)/2;启动MACRO语法(*INITIAL RADIUS*) (*FINIAL RADIUS*) (* SIDES*)(*THETA*)(*START ANGLE*)G91 G92 X0. Y0. F300000;G01 X(#1);FOR #6:=#1 TO #2 BY 2.0 DO# 7 := 2.0 * #6 * COS(180.0-#5);# 8

44、 := (#7/2.0) / COS(180.0/6);# 9 := #5;G01 X(1.0);FOR #10:= 1 TO #3 DOG03X(#7*COS(#9)Y(#7*SIN(#9)I(#8*COS(#9-180.0/6)J(#8*SIN(#9-180.0/6);#9 := #9 + #4;END_FOR;END_FOR;三、无条柞转移1、GOTO转移语句语法:GOTO n;说明:无条件地跳到指定的n行号执行,其中n可为整数或表达式。GOTO常 和IF语句搭配使用,那就是说当程序检查到某个条件满足时用 GOTO语句去进一步 处理,但应尽量少用该语句以提高程序可读性。范例:% MACR

45、O / 启动 MACRO 语法IF( #1 = 2 ) THEN GOTO 100;G01 X10. Y10.;N100 G01 X30. Y30.;M02;2、EXIT循环中断语句语法:EXIT;说明:循环中断,跳离循环控制;用在循环控制中,通常 EXIT都和IF语句搭 配使用,当某个条件满足后就跳离循环。请参考WHILE范例。第四节库函数库函数是系统开发人员根据用户的需要事先编制并提供给用户使用的。在进行 用户宏编程时若用户需要就直接在程序中调用即可,具体方法前面已有论述。本系 统就提供了丰富的库函数,并分为四类,见表3-4;此将分别介绍其中的常用函数使 用方法,其他函数请参见附录。表3-

46、4系统库函数分类类别用途说明函数名数学函数类基本的数学运算,象三 角函数、求整,规范化 数据等ABS、ACOS、ASIN、ATAN、COS、MAX、MIN、SIN、SQRT、TAN、SIGN、CEIL、FLOOR、ROUND、STD、STDX、RANDOM信息传递类对系统信息的读取,显 示,数据保存等PUSH、POP、STKTOP、ALARM、PRINT、AXID、GETARG、COMMENT > GETTRAPARG、 PARAM、 SYSVAR、 SCANTEXT操作辅助奥辅助完成操作SLEEP WAIT文档操作类对文档或数据的一些 操作OPEN、CLOSE、DBOPEN、DBLOA

47、D仿真状态类在仿真状态下的一些 绘图操作DRAWHOLE、DRAWMARK、SETDRAW一、数学函数类1、ABS调用方法:ABS(参数)函数描述:求一个数的绝对值范例:# 1 := ABS(-2.3); / #1 的结果是 2.3注:此处函数内“参数”既可为实际数值,也可为变量或表达式,以下若无特殊说 明均按此处理。2、SIN调用方法:SIN (参数)函数描述:求一个数的正弦值范例:# 1 := SIN(#10);3、ASIN调用方法:ASIN (参数)函数描述:求一个数的反正弦值范例:# 1 := ASIN(#10);4、MAX调用方法:MAX(参数1,参数2)函数描述:求两个数的最大值范

48、例1:# 1 := MAX(10 , 20); / #1 等于 20范例2:# 1 := MAX(#2 , #3);5、SQRT调用方法:SQRT (参数)函数描述:求一个数的平方根值范例1:# 2 := SQRT(3); / #2 等于 1.732范例2:# 16 := SQRT(#10);6、SIGN调用方法:SIGN (参数)函数描述:返回一个数的符号,-1表示该数是负数,1表示该数是正数,0表示该数 是零。范例:IF( SIGN(#10) 0 ) THENEND_IF;6、 CEIL调用方法:CEIL(参数)函数描述:返回比一个数大或与其相等的最小整数范例1:# 2 := CEIL(2

49、.3); / #2 等于 3范例2:# 2 := CEIL(#10);7、ROUND调用方法:ROUND (参数)函数描述:四舍五入化整,范例1:# 2 := ROUND(2.3); / #2 等于 2范例2:# 2 := ROUND(#10);二、信息传递类1、PUSH调用方法:PUSH (参数)函数描述:进宏堆栈范例:PUSH(#1); /变量#1内容进栈PUSH(#3); /变量#3内容进栈2、STKTOP调用方法:STKTOP ( i)函数描述:从栈顶依据索引获取堆栈元素,但不弹出此元素,其中 i为整数。范例:STKTOP(0);/栈顶元素STKTOP(1);/栈顶下的第一个元素STK

50、TOP(2);/栈顶下的第二个元素 3、ALARM调用方法:ALARM ( 参数)函数描述:发出整型参数所对应的宏警告范例:ALARM(300);/发出标识号为300的警告ALARM(#1); / #1必须为整数4、AXID调用方法:AXID ( 轴标识符)函数描述:查找轴的标识符, 轴的标识符就是机器轴的号数;当输入的轴名称不存 在时,返回为空范例:假定:第六轴的名称为Y2 ,第六轴的名称为Y;那么:AXID(Y)返回 2AXID(Y2)返回 65、PRINT调用方法:PRINT ( <字符串”>)函数描述:此函数用来输出字符串,输出字符串中的变量名称会被取代成该变量的值,此函数

51、如果成功响应值为1,失败时响应值为00例:53 = 20;# 3 = 23.1;PRINT( "G01 X#3 Y53 Z20.0 " );输出结果为G01 X23.100 Y20 Z20.0;字符'为逃脱字符,特殊字符定义如下:0 表示字符 表示'软符# ' 表示'好符p' 表示肆符因此欲输出G01 X(20/30) Y#20/2.0;其语法格式为PRINT( "G01 X(#20/2.0 ” );三、操作辅助类1、SLEEP()调用方法:SLEEP()函数描述:临时放弃执行循环范例:SLEEP();2、 WAIT( )调

52、用方法:WAIT()函数描述:等待直到前一个动作或逻辑指令执行完毕范例:WAIT( ) ;四、文档操作类1、OPEN调用方法:OPEN ( <文件名称”>)函数描述:开启所指定的文件名称。此函数如果成功响应值为1,失败时响应值为0 档案开启后PRINT函数才有效。文件名称为“COM时表示打开RS232传输端口,其设定由系统参数 3905等参 数设定之。例:OPEN("PROBE.NC );/打开PROBE.NC文档准备输出例:OPEN("COM );/打开传输口PRINT("p"); 输出 却符FOR #1 = 1 TO 5000 DO#30

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论