opencncmacro用户宏程序开发手册内容摘要:
号# i和另一时刻调用的用户宏 (也不论与前一个用户宏相同还是不同 )中所使用的# i是不同的,或者说不同的用户宏调用实例中的# i所占用系统内存地址是不同的,即使在多重调用情况下,当用户宏A 调用用户宏 B 的情况下,也不会将 A 中的局部变量破坏。 我们可以用局部变量级的这样一个概念来理解, 作用于宏程序某一级中的变量称为本级变量,即这一变量在同一程序级中调用时 内容 相同,若在另一级程序(如子程序)中使用,则意义不同。 本级变量主要用于变量间的相互传递,初始状态下未赋值的本级变量即为空白变量。 如图 2- 1,就是用 G 代码 (或 G65 时 )调用宏时,局部变量级会随着调用多重度的增加而增加,即存在如图的关系: 主程序 用户宏 用户宏 (第 1 级 ) (第 2 级 ) 局部变量 (0 级 ) (1 级 ) (2 级 ) 上图说明了以下几点: 1)主程序中具有# 1~# 50 的局部变量( 0 级)。 2)用 G65 调用宏(第 1 级)时,主程序的局部变量( 0 级)被保存起来。 再重新为用户宏(第 1 级)准备了另一套局部变量# 1~# 50(第 1 级),可以再向它赋值。 3)下一用户宏(第 2 级)被调用时,其上一级的局部变量 (第 l级 )被保存,再1 „ „ # 50 1 „ „ # 50 1 „ „ # 50 O_ G65 P_ M99 O_ G65 P_ M99 G65 P_ 第 12 页 准备出新的局部变量# 1-# 50(第 2 级 ),如此类推。 4)当用 M99 从各用户宏回到前一程序时,所保存的局部变量 (第 0、 2 级 )存在的状态出现。 对于没有赋值的局部变量,其初始状态为空,用户可自由使用。 系统变量: 1000~# 31986 系统变量是根据用途而被固定的变量。 主要有以下各种表 2- 2,详情请见附录。 表 2- 2 系统变量分配 变量编号 用途 1000~1058 模态信息 1500~1624 运行控制 /状态 1301~1436 运行时状态变量 1800~1916 模态变量 # 4001~# 5100 用户参数 # 6001~# 6032 信号接口 # 7001~7101 模式组变量 # 11000~# 12999 刀具补偿变量 # 20201~# 25986 工件坐标系补偿值 (工件零点偏移值 ) # 26001~# 31986 参考点 全局变量: @1~@14095 与局部变量相对,全局变量是在主程序以及调用的子程序中通用的变量,它 在不同程序级中调用时 内容 相同 ,即 它在同一系统中的 所有程序中都有效,因为全局变量在系统中所占用的内存地址是唯一不变的。 因此,对于任何一个全局变量 @i,它都可以在主程序和用户宏或者用户宏之间相互使用,传递数值,并对其操作。 全局变量在 @1~@14095 的范围内,按用途主要分为四组。 其中 @1~400 和 @656~@999 两组可以被用户宏程序所使用(可读可写),但它们具有不同的性质和使用方法,前者中的变量常用于一般的运算,可以用操作面板(人机界面)来读取显示;而后者中的变量为保持形变量有记忆性变量,可以被永久保存,即掉电不丢失,在操作面板上可进行读写操作。 具体可 见表 2- 3。 表 2- 3 全局变量使用对照表 变量编号 说明 宏程序 人机界面 永久保存 @1~@400 一般运算用变量 读 /写 只读 否 @401~@655 对应 PLC 寄存器 R1 ~ R255: @401=R1 „ @655=R255 ※ ※ ※ @656~@999 有记忆性变量 读 /写 读 /写 是 @10000~@14095 对应 PLC 寄存器 R0~R4095: @10000=R0 ※ ※ ※ 第 13 页 „ @14095=R4095 [注 ]: ※ 表示具体参见资源分配表 表 2- 4 中对应寄存器。 而 @401~@655和 @10000~@14095两组变量则影射为 PLC中系统预定义的一些寄存器 , 用户宏程序对其的读写规则和使用方法 不尽相同,具体 可参见 表 2- 4 资源分配表 中对应的寄存器 ,至于更详细的 寄存器 资源 用途和 规则可参阅《 OpenCNC PLC发展手册》书中介绍。 表 2- 4 资源分配表 编号 说明 读写规则 是否可位(Bit)存取 永久保存 宏程序或人机接口 阶梯程序 R0~R39 CNC系统接口区 只读 ※ 是 否 R40~R49 PLC警报讯息区 R50~R80 使用者自行定义 读 /写 读 /写 是 否 R81~R100 对应到系统参数3401~3420 PLC参数 只读 只读 是 否 R101~R102 刀具状态 读 /写 读 /写 是 是 R103~R255 使用者自行定义 读 /写 读 /写 是 是 R256~R511 否 R512~R639 CNC系统接口区 只读 ※ 是 否 R640~R1023 否 R1023~R4095 使用者自行定义 读 /写 读 /写 否 否 [注 ]: ※ 表示 更详细的 寄存器 资源 用途和 规则可参阅《 OpenCNC PLC 发展手册》一书。 第二节 变量运算及 变量表达式 一、用户宏运算符 要对变量进行各种运算操作就要用到运算符 , 它是“能对变量所存数据进行运算的符号”。 本系统的 运算 符及其优先级如表 32 所示。 表 32 运算 符及其优先级 运算名 符号 优先级 括号 ( ), [ ] 1 函数调用运算 函数名 (参数列表 ) 2 取负 3 求补运算 NOT 3 乘法运算 * 4 除法运算 / 4 模运算 /求余运算 MOD 4 加法运算 + 5 第 14 页 减法运算 5 关系运算 , , =, = 6 相等运算 = 7 不等运算 8 布尔逻辑 /按位与 amp。 , AND 9 布尔逻辑 /按位 异或 XOR 10 布尔逻辑 /按位 或 OR 11 二、基本算数运算符 (1) + (加法运算符,如 3+5, 12+4) (2) (减法运算符,或取负运算符,如 3316, 16) (3) * (乘法运算符,如 9*2, 13*8) (4) / (除法运算符,如 10/3, 43/15) (5)MOD (模运算符,或称求余运算符,其两侧均应为整型数据,如 7 MOD4的值为 3,当 18=20 时 18 MOD4 的值为 2) 三、算术表 达式和运算符优先级 用算术运算符和括号将运算对象连接起来的、符合语法规则的式子称为算术 表达式 ,运算对象 可以是常数、变量、函数 等。 例如: 6*8/+18+ ROUND( # 1) 这就是一个算术运算式,它可以作为一个整体赋值给某个变量,或用作其他表达式中的一个运算对象。 本系统按表表 32 规定了运算符的优先级和结合性。 在表达式求值时,先按运算符的优先级别高低次序执行,例如先乘除后加减。 如表达式 1241*5 的左侧为减,右侧为乘号,而乘号优先于减号,因此,相当于 12( 41*5)。 如 果在一个运算对象两侧的运算符的优先级别相同,如 25+23,则按规定的结合性(结合方向)处理,算术运算符的结合方向为“自左至右”,即先左后右。 因此 5 先与减号结合,执行 25 的运算,再执行加 23 的运算。 这样“自左至右的结合方向”又称为“左结合性”,即运算对象先与左面的运算符结合;对应地,也有“右结合性”的运算符,例如赋值运算符“: =”就是。 四、关系运算符和关系表达式 关系运算符是逻辑运算中比较简单的一种。 所谓“关系运算”实际上就是“比较运算”。 将两个值进行比较,判断比较的结果是否符合给定的条件。 例如, 3> 10 是一个关系表达式,大于号(>)是一个关系运算符,如果 3=12,则满足给定的“ 3> 10”条件,因此关系表达式的值为“真”(即“条件满足”);如果 3=6,不满足“ 3> 10”条件,则称关系表达式的值为“假”。 本系统提供 6 种关系运算符: (1) (小于) (2) = (小于或等于) 优先级相同(高) 优先级(较高) 优先级(低) 第 15 页 (3) (大于) (4) = (大于或等于) (5) = (等于) (6) (不等于) 关于优先次序: 前 4 种关系运算符(<,<=,>, =)的优先级别相同,它们却高于关系运算符“ =”,而“ =”又高于“ ” 关系运算符的优先级低于算术运算符。 关系运算符的优先级高于赋值运算符。 用两个关系运算符将两个表达式连接起来的式子,称为关系表达式。 例如: 6> 36, 13+423 关系表达式的值是一个逻辑值,即“真”或“假”。 例如,若 12 为 8,则关系表达式“ 12=10”的值为“假”,“ 12=6”的值为“真”。 五、逻辑运算和逻辑表达式 用逻辑运算 符将关系表达式或逻辑量连接起来就是逻辑表达式。 本系统提供 6 种逻辑运算符和逻辑运算 (1) amp。 , AND 逻辑与 (2) XOR 逻辑或 (3) OR 逻辑异或 它们都是“双目(元)运算符”,它要求有两个运算量(操作数),逻辑运算举例如下: 1 AND 2 若 1 、 2 为真,则 1 AND 2 为真。 1 OR 2 若 1 、 2 之一为真,则 1 XOR 2 为真。 逻辑运算符低于关系运算符,见图 31。 图 31 第三节 用户宏程序的流程控制 所谓程序的流程( Flow Control)是通过控制程序的执行方向,进而掌握程序动态。 这用户宏程序区别于一般数控程序的特征之一,也是用户选择用户宏程序编写数控代码的一大理由。 用户宏程序的流程控制包括无条件判断、循环控制、无条件算术运算符 关系运算符 逻辑运算符 赋值运算符 (高) (低) 第 16 页 转移三大类,这与其他的高级语言程序类似,下面将分别介绍其功能和使用语法。 一、条件判断 判断条件的真假,然后根据真假或者对应情况到指定的地方去执行程序,这方面的语句有 IF 和 CASE 语句。 IF 条件语句 1)基本语法: IF 条件表达式 THEN 操作 ELSEIF 条件表达式 THEN 操作 ELSE 操作 END_IF。 说明: IF 条件判断,根据真假情况到指定的地方去执行程序。 例如: % @MACRO // 启动 MACRO 语法 1 :=。 G01 G91 G92 X20. Y15. F202000。 IF 1 = 1 THEN X(*1)。 Y(*1)。 ELSEIF 1 = 2 THEN X(*2)。 Y(*2)。 ELSEIF 1 = 3 THEN X(*3)。 Y(*3)。 ELSE X(*4)。 Y(*4)。 END_IF。 X() Y()。 M30。 然而在实际使用中,可以有以下一些变形: 2)变形 1 语法: 第 17 页 IF 条件表达式 THEN 操作 ELSE 操作 END_IF。 3)变形 2 语法: IF 条件表达式 THEN 操作 END_IF。 编程时可根据需要选择合适的语法格式。 CASE 分支 语句 语法: CASE 条件表达式 OF 条件值 : 操作 条件表达式 , 条件表达式 , 条件表达式 : 操作 条件表达式 , … 条件表达式 : 操作 ELSE 操作 END_CASE。 说明: CASE 多条件判断分支,根据条件表达式运算结果所对应的条件值(整数),分别执行不同程序区块。 例如: % @MACRO // 启动 MACRO 语法 1 := 8。 G01 G91 G92 X20. Y15.。opencncmacro用户宏程序开发手册
相关推荐
,严格执行返销比例。 鉴于大多数中外合资移动通信产品造业企业技术转让程度和进度较差,通过发布全国统一的国产化程序来考核每个制造企业每一个型号产品的本地化率,并与该型产品的进口税率相挂钩,外资整机企业 要主动扶持境内零部件、元配件的 生产厂商,提高在中国境内对零部件的采购比例,从而推动国内移动通信配套 元器件工业的快速发展和促进中外合资设立技术研发中心,并转让技术。 (
V, Comcast, MGM Mirage, Chase Paymentech, AMD, Mayo Foundation, Retail Decisions 和 等。 GoldenGate 拓展全球市场,和领先技术提供商建立战略合作关系,他们包括 ACI Worldwide, Amdocs, Business Objects, Cerner, Eclipsys, Fujitsu, GE
、 导轨两头 有间隙 , 可以降低因 楼房变形和 气候的因数 , 造成导轨伸 缩不良而变 形。 导轨下方示 意图 无脚手架安 装指导手册 (第二版) 适用于有机 房对重后置 电梯 24 安装底坑爬 梯: 安 装龙门架 : 、 在安装龙门 架之前,先吊入 6 根 轿厢导轨 , 放在不影响 后期工作的 地方。 、 开始拼装龙 门架, 先把龙门架 、
理数据 发卡 分配权限 发放临时卡 直接无条件开关门 是 否 是 否,是双向门禁 单向门禁 进入控制区域 是否有效卡 持卡人刷卡 发长鸣声,开门 发短鸣声 ,不开门 /锁 /按钮 发长鸣声 ,开锁或按钮有效 按钮开门出 如是临时持卡人,则归还卡片 刷卡开门出 system 门禁系统 设计方案 11 B、工作流程: 管理员在管理软件中设置通道、人员等基本信息。 管理员给每个人发卡
体商城以及线上的 B2C 与 C2C 模式。 线下商城的好处在于,亲身的体验,最真实的触感,但价格方面的劣势让不少消费者望而却步。 在线上消费模式上, C2C“简单低端、针头 线脑 ”式的经营模式早已在滚滚而来的 B2C 浪潮面前溃不成军。 而最近几年,国内 B2C 市场的发展势如破竹,低价、便捷、相对完善的质量保障体系,成功将大量用户变身 “网购达人 ”。 但问题在于,不管线上的环节如何完善