ch9-子程序和程序包
- 格式:ppt
- 大小:464.50 KB
- 文档页数:28
实验名称:子程序设计实验日期:2023年X月X日实验地点:XX大学计算机实验室实验目的:1. 理解子程序的概念和作用。
2. 掌握子程序的设计方法和调用方式。
3. 学会使用子程序提高程序的可读性和可维护性。
实验内容:一、实验背景子程序是程序设计中常用的一种结构,它可以将一段具有独立功能的代码封装起来,方便在其他程序中调用。
使用子程序可以提高程序的可读性、可维护性和模块化程度。
二、实验环境1. 操作系统:Windows 102. 编译器:Visual Studio 20193. 编程语言:C++三、实验步骤1. 创建一个新的C++项目,命名为“子程序设计”。
2. 在项目中创建一个头文件“Subroutine.h”,用于声明子程序。
3. 在头文件中声明两个子程序:`Add` 和 `Subtract`。
4. 在头文件中定义一个全局变量 `Result`。
5. 在源文件“Subroutine.cpp”中实现头文件中声明的子程序。
6. 在主函数中调用子程序,并输出结果。
7. 编译并运行程序,观察输出结果。
四、实验代码1. 头文件“Subroutine.h”:```cpp#ifndef SUBROUTINE_H#define SUBROUTINE_Hvoid Add(int a, int b);void Subtract(int a, int b); int Result;#endif // SUBROUTINE_H```2. 源文件“Subroutine.cpp”:```cpp#include "Subroutine.h"void Add(int a, int b) {Result = a + b;}void Subtract(int a, int b) { Result = a - b;}```3. 主函数“main.cpp”:```cpp#include <iostream>#include "Subroutine.h"int main() {int a = 10;int b = 5;Add(a, b);std::cout << "Add: " << Result << std::endl;Subtract(a, b);std::cout << "Subtract: " << Result << std::endl;return 0;}```五、实验结果与分析1. 编译并运行程序,输出结果如下:```Add: 15Subtract: 5```2. 分析:(1)在实验中,我们首先在头文件中声明了两个子程序 `Add` 和 `Subtract`,它们分别用于计算两个整数的和与差。
欢迎下载支持,谢谢!数控技术培训系列教程世纪星车床数控系统HNC-21/22T编程说明书华中科技大学国家数控系统工程技术研究中心武汉华中数控股份有限公司2001 年11 月前言非常感谢您选用了本公司生产的 HNC-21/22 世纪星系列数控系统。
本说明书详细介绍了数控编程基本知识、指令体系、各指令功能的特点、注意事项和宏指令编程方法,并配以大量典型编程实例和图例加以说明。
既可作为世纪星车床数控系统产品说明书,也可作为数控编程的培训教材。
在使用本产品前,请先仔细阅读本说明书,以达到最佳使用效果。
请妥善保存说明书,并交最终使用者认真阅读。
本说明书版权为武汉华中数控股份有限公司所有。
华中科技大学国家数控系统工程技术研究中心武汉华中数控股份有限公司2002 年11 月目录第一章概述 (1)1.1 数控编程概述 (1)1.2 数控编程基本知识 (1)1.2.1 机床坐标轴 (1)1.2.2 机床坐标系、机床零点和机床参考点 (3)1.2.3 工件坐标系、程序原点和对刀点 (4)第二章零件程序的结构 (5)2.1 指令字的格式 (5)2.2 程序段的格式 (6)2.3 程序的一般结构 (7)2.4 程序的文件名 (7)第三章 HNC-21T 的编程指令体系 (8)3.1 辅助功能M 代码 (8)3.1.1 CNC 内定的辅助功能 (9)(1) 程序暂停M00 (9)(2) 程序结束M02 (9)(3) 程序结束并返回到零件程序头M30 (9)(4) 子程序调用M98 及从子程序返回M99 (9)3.1.2 PLC 设定的辅助功能 (11)(1) 主轴控制指令M03、M04、M05 (11)(2) 冷却液打开、停止指令M07、M09 (11)3.2 主轴功能S、进给功能F 和刀具功能T (11)3.2.1 主轴功能S (11)3.2.2 进给速度F (12)3.2.3 刀具功能(T 机能) (12)3.3 准备功能G 代码 (13)3.3.1 有关单位的设定 (14)(1) 尺寸单位选择G20,G21 (14)(2) 进给速度单位的设定G94、G95 (15)3.3.2 有关坐标系和坐标的指令 (15)(1) 绝对编程G90 与增量编程G91 指令 (15)I(2) 工件坐标系设定G92 (15)(3) 零点偏置G54~G59 (18)(4) 直径方式和半径方式编程 (20)3.3.3 进给控制指令 (21)(1) 快速定位G00 (21)(2) 线性进给及倒角G01 (22)(3) 圆弧进给G02/G03 (25)(4) 螺纹切削G32 (27)3. 3.4 回参考点控制指令 (30)(1) 自动返回参考点G28 (30)(2) 自动从参考点返回G29 (31)3.3.5 暂停指令G04 (32)3.3.6 恒线速度功能G96、G97 (32)3.3.7 简单循环 (34)(1) 内(外)径切削循环G80 (34)★圆柱面内(外)径切削循环 (34)★园锥面内(外)径切削循环 (35)(2) 端面切削循环G81 (37)★端平面切削循环 (37)★园锥端面切削循环 (38)(3) 螺纹切削循环G82 (40)★直螺纹切削循环 (40)★锥螺纹切削循环 (41)3.3.8 复合循环 (43)(1) 内(外)径粗车复合循环G71 (43)(2) 端面粗车复合循环G72 (50)(3) 闭环车削复合循环G73 (54)(4) 螺纹切削复合循环G76 (57)(5) 复合循环指令注意事项 (60)3.3.9 刀具补偿功能指令 (60)刀具偏置补偿和刀具磨损补偿 (60)(3) 刀尖半径补偿G40,G41,G42 (63)3.3.9 综合编程实例 (64)第一章概述 (1)1.1 数控编程概述 (1)1.2 数控编程基本知识 (1)1.2.1 机床坐标轴 (1)1.2.2 机床坐标系、机床零点和机床参考点 (3)1.2.3 工件坐标系、程序原点和对刀点 (4)第二章零件程序的结构 (5)2.1 指令字的格式 (5)2.2 程序段的格式 (6)2.3 程序的一般结构 (7)2.4 程序的文件名 (7)第三章 HNC-21/22T 数控系统的编程指令体系 (8)3.1 辅助功能M 代码 (8)3.1.1 CNC 内定的辅助功能 (9)(1) 程序暂停M00 (9)(2) 程序结束M02 (9)(3) 程序结束并返回到零件程序头M30 (9)(4) 子程序调用M98 及从子程序返回M99 (9)3.1.2 PLC 设定的辅助功能 (11)(1) 主轴控制指令M03、M04、M05 (11)(2) 冷却液打开、停止指令M07、M09 (11)3.2 主轴功能S、进给功能F 和刀具功能T (11)3.2.1 主轴功能S (11)3.2.2 进给速度F (12)3.2.3 刀具功能(T 机能) (12)3.3 准备功能G 代码 (13)3.3.1 有关单位设定的G 功能 (14)(1) 尺寸单位选择G20,G21 (14)(2) 进给速度单位的设定G94、G95 (15)3.3.2 有关坐标系和坐标的G 功能 (15)(1) 绝对值编程G90 与相对值编程G91 (15)(2) 坐标系设定G92 (16)(3) 坐标系选择G54~G59 (18)(4) 直接机床坐标系编程G53 (19)(5) 直径方式和半径方式编程 (20)3.3.3 进给控制指令 (21)(1) 快速定位G00 (21)(2) 线性进给及倒角G01 (22)(3) 圆弧进给G02/G03 (25)(4) 螺纹切削G32 (27)3. 3.4 回参考点控制指令 (30)(1) 自动返回参考点G28 (30)(2) 自动从参考点返回G29 (31)3.3.5 暂停指令G04 (32)3.3.6 恒线速度指令G96、G97 (32)3.3.7 简单循环 (34)(1) 内(外)径切削循环G80 (34)★圆柱面内(外)径切削循环 (34)★园锥面内(外)径切削循环 (35)(2) 端面切削循环G81 (37)★端平面切削循环 (37)★园锥端面切削循环 (38)(3) 螺纹切削循环G82 (40)★直螺纹切削循环 (40)★锥螺纹切削循环 (41)3.3.7 复合循环 (43)(1) 内(外)径粗车复合循环G71 (43)(2) 端面粗车复合循环G72 (50)(3) 闭环车削复合循环G73 (54)(4) 螺纹切削复合循环G76 (57)(5) 复合循环指令注意事项 (60)3.3.8 刀具补偿功能指令 (60)刀具偏置补偿和刀具磨损补偿 (60)刀尖圆弧半径补偿G40,G41,G42 (63)编程步骤 (67)综合编程实例 (68)3.4 宏指令编程 (70)3.4.1 宏变量及常量 (70)(1) 宏变量 (70)(2) 常量 (73)3.4.2 运算符与表达式 (73)(1) 算术运算符: (73)(2) 条件运算符 (73)(3) 逻辑运算符 (74)(4) 函数 (74)(5) 表达式 (74)3.4.3 赋值语句 (74)3.4.4 条件判别语句IF,ELSE,ENDIF (74)3.4.5 循环语句WHILE,ENDW (74)附表1准备功能一览表 (76)附表2直径编程注意条件 (78)附录1HNC-21T 车削循环宏程序 (78)(1) 车削循环指令的实现及子程序调用的参数传递 (78)(2) 车削循环指令的宏程序实现 (83)第一章概述本书针对HNC-21/22T 世纪星数控车床系统进行编程说明,其编程语言为广泛使用的ISO 码。
Mastercam9提供有效的后处理解决方案对于Mastercam 9.1软件用户来说非常重要。
优化后处理程序可以提高CNC(数控加工)过程中的效率和精确性。
本文档将介绍一些优化Mastercam 9.1后处理的方法。
1. 后处理程序调试在使用Mastercam 9.1软件进行CNC编程时,出现后处理错误是常见的。
为了优化后处理程序,首先需要在开发或获取后处理器之前进行调试。
通过检查后处理程序的输出和与机床的预期行为进行比较,可以确定其中的错误并进行修正。
2. 定制后处理程序针对特定的机床和加工需求,定制后处理程序可以显著提高加工效率。
Mastercam 9.1软件提供了灵活的后处理定制工具,以满足不同的加工需求。
通过理解机床的特殊功能和限制,并根据具体需求进行后处理程序的修改,可以最大程度地优化后处理过程。
3. 优化刀具路径在进行CNC加工时,优化刀具路径可以节省时间和材料,并提高加工质量。
Mastercam 9.1软件提供了多种工具来优化刀具路径,例如刀具半径补偿、切割策略和连续切削等。
合理选择并配置这些工具,可以最大程度地优化后处理过程。
4. 选择合适的后处理选项在Mastercam 9.1软件中,后处理选项提供了多种控制和配置选项。
通过了解后处理选项的含义和功能,可以根据特定需求进行适当的配置。
合理选择后处理选项可以避免不必要的问题,并提高后处理的效率和准确性。
5. 及时更新软件版本Mastercam软件开发商经常发布软件更新和补丁,以修复错误和改进性能。
定期检查并安装最新的软件更新对于优化后处理过程非常重要。
这些更新通常包括后处理程序的改进和优化,可以提供更好的加工体验。
综上所述,通过调试后处理程序、定制后处理、优化刀具路径、选择合适的后处理选项和及时更新软件版本,可以最大程度地优化Mastercam 9.1后处理过程。
这些方法将提高CNC加工的效率和精确性,帮助用户获得更好的加工结果。
子程序的调试方法在软件开发过程中,子程序(也称为函数或方法)是一种重要的编程工具,用于实现代码的模块化和重用。
然而,由于子程序的复杂性和交互性,调试子程序可能会变得相当困难。
本文将介绍一些专业的调试方法,以帮助开发人员更有效地调试子程序。
1. 理解子程序的功能在调试子程序之前,首先要确保对其功能有深入的理解。
仔细阅读子程序的文档和源代码,了解其输入和输出以及内部逻辑。
这将有助于确定可能的错误源,并缩小调试的范围。
2. 使用断点断点是调试中最常用的工具之一。
在调试器中设置断点,可以暂停程序的执行,以便检查变量的值、执行路径和调用堆栈。
通过在子程序的关键位置设置断点,可以逐步跟踪代码的执行,并找到潜在的错误。
3. 利用日志记录日志记录是另一种有用的调试技术。
在子程序中插入日志语句,记录关键变量的值和执行路径,可以帮助开发人员追踪代码的执行过程。
通过分析日志文件,可以发现潜在的问题,并了解代码中的错误行为。
4. 使用调试工具现代集成开发环境(IDE)通常提供了强大的调试工具,如变量查看器、堆栈跟踪和表达式评估器。
利用这些工具,可以更方便地检查和修改变量的值,跟踪代码的执行路径,并评估复杂表达式的结果。
熟练使用调试工具可以大大提高调试效率。
5. 编写单元测试编写单元测试是一种预防性的调试方法。
通过编写针对子程序的测试用例,可以验证其功能和正确性。
当子程序出现问题时,可以通过运行相应的单元测试来定位错误。
单元测试还可以帮助开发人员更好地理解子程序的预期行为,并提供一种可靠的调试手段。
6. 与他人合作有时,调试一个复杂的子程序可能超出了个人的能力范围。
在这种情况下,与其他开发人员合作可能是一个明智的选择。
他们可以提供新的思路和观点,帮助解决难以调试的问题。
通过团队合作,可以更快地找到子程序中的错误,并共同学习和成长。
总结起来,调试子程序需要一定的专业知识和技巧。
通过深入理解子程序的功能、使用断点和日志记录、利用调试工具、编写单元测试以及与他人合作,开发人员可以更有效地调试子程序,并提高软件开发的质量和效率。
第九章 微型计算机的微型计算机的微型计算机的中断系统中断系统中断系统主要内容:§9-1 概述§9-2 中断处理过程§9-3 中断优先级和中断嵌套§9-4 可编程中断控制器8259A§9-1 1 概述概述概述一、中断概念1、中断 什么是中断?与生活场景的比较如下图:(1)定义CPU 执行程序时,由于发生了某种随机的事件(外部或内部),引起CPU 暂时中断正在运行的程序,转去执行一段特殊的服务程序(称为中断服务程序或中断处理程序),以处理该事件,该事件处理完后又返回被中断的程序继续执行,这一过程称为中断。
(2)特点中断方式是一种常用的数据传送的控制方式,利用中断可以避免不断检测外部设备状态,提高CPU 的效率。
2、中断源引起程序中断的事件称为中断源。
中断源有内部中断和外部中断两种。
内部中断由程序预先安排的指令(INT n)引起,或CPU 运算中产生某些错误引起;外部中断是外部设备向CPU 发出中断申请引起的。
3、中断响应中断请求何时发生是随机的。
CPU 在每一条指令的最后一个时钟(T)周期去检测INTR引脚,一旦检测到有中断请求,并满足响应中断的要求,CPU就响应中断。
4、中断向量表CPU响应中断后,必须由中断提供地址信息,引导程序进入中断服务子程序,这些中断服务程序的入口地址存放在专门开辟的区域,该区域存放中断向量表。
5、中断优先级当多个中断源请求中断时,中断系统判别中断申请的优先级,CPU响应高级的中断,挂起优先级低的中断。
6、中断屏蔽当中断源申请中断时,CPU可以由软件设置,使之不能响应,称为中断屏蔽。
7、中断基本功能(3个)(1)能实现中断响应,中断服务,中断返回,中断屏蔽;(2)能实现中断优先级排队;(3)能实现中断嵌套。
本章主要介绍8086/8088CPU的中断系统和可编程的中断控制器的芯片8259A。
二、中断分类8086/8088有一个强有力的中断系统,可以处理256种不同的中断。
主程序调⽤⼦程序的c语⾔例⼦,⼦程序调⽤M98编程举例编程时,为了简化程序的编制,当⼀个⼯件上有相同的加⼯内容时,常⽤调⼦程序的⽅法进⾏编程。
调⽤⼦程序的程序叫做主程序。
⼦程序的编号与⼀般程序基本相同,只是程序结束字为M99表⽰⼦程序结束,并返回到调⽤⼦程序的主程序中。
调⽤⼦程序的编程格式 M98 P~ ;式中:P―表⽰⼦程序调⽤情况。
P后共有8位数字,前四位为调⽤次数,省略时为调⽤⼀次;后四位为所调⽤的⼦程序号。
例:如图所⽰,在⼀块平板上加⼯6个边长为10mm的等边三⾓形,每边的槽深为-2mm,⼯件上表⾯为Z向零点。
其程序的编制就可以采⽤调⽤⼦程序的⽅式来实现(编程时不考虑⼑具补偿)。
设置G54:X=-400,Y=-100,Z=-50。
主程序:O10N10 G54 G90 G01 Z40 F2000 //进⼊⼯件加⼯坐标系N20 M03 S800 //主轴启动N30 G00 Z3 //快进到⼯件表⾯上⽅N40 G01 X 0 Y8.66 //到1#三⾓形上顶点N50 M98 P20 //调20号切削⼦程序切削三⾓形N60 G90 G01 X30 Y8.66 //到2#三⾓形上顶点N70 M98 P20 //调20号切削⼦程序切削三⾓形N80 G90 G01 X60 Y8.66 //到3#三⾓形上顶点N90 M98 P20 //调20号切削⼦程序切削三⾓形N100 G90 G01 X 0 Y -21.34 //到4#三⾓形上顶点N110 M98 P20 //调20号切削⼦程序切削三⾓形N120 G90 G01 X30 Y -21.34 //到5#三⾓形上顶点N130 M98 P20 //调20号切削⼦程序切削三⾓形N140 G90 G01 X60 Y -21.34 //到6#三⾓形上顶点N150 M98 P20 //调20号切削⼦程序切削三⾓形N160 G90 G01 Z40 F2000 //抬⼑N170 M05 //主轴停N180 M30 //程序结束⼦程序:O20N10 G91 G01 Z -2 F100 //在三⾓形上顶点切⼊(深)2mm N20 G01 X -5 Y-8.66 //切削三⾓形N30 G01 X 10 Y 0 //切削三⾓形N40 G01 X 5 Y 8.66 //切削三⾓形N50 G01 Z 5 F2000 //抬⼑N60 M99 //⼦程序结束。
数控车床子程序M M新新
编程
The following text is amended on 12 November 2020.
数控车床子程序M98、M99编程
把程序中某些固定顺序和重复出现的程序单独抽出来,按一定格式编成一个程序供调用,这个程序就是常说的子程序,这样可以简化主程序的编制。
子程序可以被主程序调用,同时子程序也可以调用另一个子程序。
这样可以简化程序的编制和节省CNC系统的内存空间。
子程序必须有一程序号码,且以M99作为子程序的结束指令。
主过程调用子程序的指令格式如下:
M98 P___L___;
其中P为被调用的子程序号
L为重复调用的次数
例如:M98 P1234L4
主程序调用同一子程序执行加工,最多可执行999次,且子程序亦可再调用另一子程序执行加工,最多可调用4层子程序(不同的系统其执行的次数及层次可能不同)。
例:以HNC-21T系统子程序指令,加工图2-11工件上的四个槽。
分别编制主程序和子程序如下:
主程序
%123;
M3 S600 G95 T0101;
G00 X82.0 Z0;
M98 P1234 L4;(调用于程序1234执行四次,切削四个凹槽)
X150.0 Z200.0;
M30;
子程序
%1234;
W-20.0;
G01 X74.0 F0.08;
G00 X82.0;
M99;
M99指令也可用于主程序最后程序段,此时程序执行指针会跳回主程序的第一程序段继续执行此程序,所以此程序将一直重复执行,除非按下RESET键才能中断执行。
子程序的调用和返回指令
子程序是指在一个程序中定义的可以被其他程序调用的一段代码。
通过使用子程序,
程序员可以将重复的代码封装起来,减少代码的复制粘贴,提高代码的复用率和可维护性。
在编程语言中,子程序也被称为函数、过程或方法。
子程序的调用指令和返回指令是用于在程序中调用和退出子程序的指令。
在大多数编
程语言中,这些指令可以通过程序的控制流语句实现,在汇编语言中,这些指令是由特定
的汇编语句生成的机器指令。
子程序的调用指令通常包括以下步骤:
1. 保存当前程序计数器(PC)的值,以便返回时恢复执行点。
3. 将栈指针向下移动一定的偏移量,为子程序分配新的栈空间。
4. 将传入子程序的参数压入栈中,以便被子程序使用。
1. 弹出子程序的返回值,如果有的话。
4. 使用跳转指令将程序计数器更新为保存的返回地址,以便返回到调用者的程序
流。
子程序的调用和返回指令是编程中常用的技巧,可以优化程序的结构和代码重用。
在
高级编程语言中,编译器通常会自动为程序员处理子程序的调用和返回指令。
然而,在底
层编程和系统级编程中,程序员需要手动处理这些指令,以便更好地控制程序的执行流和
资源管理。
浅析子程序编程方法在三种数控系统中的使用发布时间:2021-11-26T07:27:40.680Z 来源:《科学与技术》2021年8月24期作者:郝继红1 秦涵2 [导读] 在实际生产中经常需要加工具有多处相同轮廓形状的零件郝继红1 秦涵2北京电子科技职业学院,北京 100176摘要:在实际生产中经常需要加工具有多处相同轮廓形状的零件,使用常规方法进行编程会使程序段较多,出错率高。
本文以多槽轴的加工为例,分别在FANUC 0i Mate-TC、SINUMERIK 802S/C、HNC-21T这三个系统使用子程序方法进行编程,精简了常规编程方法。
关键词:主程序;子程序;数控编程1引言在实际生产中,我们经常需要加工具有多处相同轮廓形状的零件。
常规编程方法需要对相同轮廓形状分别进行编程,这会造成程序段增多,手工输入量大,程序调试时间长,容易出错,机床待机时间延长等问题,严重影响生产效率,增加操作人员的工作量。
如何简化编程工作,减少程序输入量,缩短程序调试时间,就成为了一个现实的问题。
本文利用子程序方法进行编程,对常规编程方法下的加工程序进行了精简。
下面以加工图1中的20个3×Φ30的多槽为例进行阐述。
本文借助实例对比了子程序编程方法在三种数控系统中的具体实现,突出了子程序编程方法相较传统编程方法的优势。
本文的研究结论可以对子程序在实际编程时的使用提供参考。
2子程序的相关知识如果一个程序中包含重复出现的程序段,这样的程序段就可以编写成子程序。
调用子程序的程序称为主程序。
在主程序执行期间,若出现了子程序的调用指令,就执行子程序;当子程序执行结束时,返回主程序继续执行后续程序。
子程序可以被主程序调用,被调用的子程序也可以调用其它子程序,这个过程称为子程序的嵌套。
3应用子程序编程FANUC 0i Mate-TC、SINUMERIK 802S/C、HNC-21T三个系统应用子程序嵌套编写多槽的加工程序见表1。
子程序的调用
一、子程序的概念
学习调用子程序要知道什么是主程序、什么是子程序。
通常机床的加工程序可以分为主程序和子程序两种。
主程序:
一个完整的零件加工程序,是零件加工程序的主体部分,它和被加工零件或加工要求一一对应,不同的零件或不同的加工要求,都有唯一的主程序。
子程序:在编制加工程序中,有时会遇到一组程序段反复出现,或者在几个程序中都要使用它。
这个典型的加工程序可以做成固定程序,并单独加以命名,这组程序段就称为子程序。
格式:在FANUC系统中的指令格式 M98 P_ _ _ _ ××××
调用次数子程序名
例如:M98 P80003表示调用第3号子程序8次
主程序:
O0001; N10…; N20M98P80003; N30…;
…;
M30; 子程序:
O0003;
G91;
…;
M99;
主程序的结束语句是M30;
子程序的结束语句是M99;
在子程序中直接写加工
过程就可以了。
另外,为了实现程序的循
环,子程序应该使用相对
值编程,在子程序开始的
位置要有G91。
你学会了吗?。