数控技术产生 20 世纪中期, 是一种数字, 控制一台或多台机械设备动作的技术是由文本和符号组成的指令。 数控技术的发展首先产生了硬件数控系统(Numerical Control, NC) 代表产品, 硬件数控系统利用由逻辑元件和记忆元件组成的逻辑电路来实现操作和控制功能,但存在灵活性差、灵活性差的缺点。 随着计算机技术的发展,计算机数控系统用计算机取代了以前的逻辑电路,实现了数控设备的所有功能(Computerized Numerical Control, CNC)逐渐成为市场的主流产品。
补充:传统的机械加工是用手操作普通机床,用手摇动机械刀切割金属,用卡尺等工具用眼睛测量产品精度。现代工业已经使用计算机数字控制机床进行操作,数控机床可以根据技术人员编制的程序自动直接处理任何产品和部件。这就是我们所说的数控加工。数控加工广泛应用于所有机械加工的任何领域,是模具加工的发展趋势、重要和必要的技术手段。
LinuxCNC 基于数控平台 Linux 开发了操作系统。 Linux 操作系统是一循GPL 通用操作系统协议并打开源代码。虽然 Linux 操作系统具有运行稳定、平均响应时间短、吞吐量高等优点 Linux 操作系统的过程调度模式、中断屏蔽、频繁换页等限制 Linux 系统的实时性能。实时系统是指系统中计算结果的正确性不仅取决于计算逻辑的正确性,还取决于产生结果的时间,即无论实时应用程序执行什么任务,它不仅需要正确执行,而且必须及时完成。常用的提高 Linux有两种方法可以直接修改操作系统的实时性能 Linux 核源代码法和双核法。由于 Linux内核复杂,发展速度快,直接修改 Linux内核源代码的方法难以保持同步。通过双内核法 Linux 在操作系统中引入实时内核管理实时任务, 同时把原来的Linux 在实时内核上运行内核作为一个普通过程。双核法使改造后的双核法 Linux 操作系统不仅能及时响应实时任务,还能管理复杂的非实时通用任务。常用的双核实时补丁包括 RTLinux/GPL、 RTAI 和 Xenomai。 Xenomai 和 RTAI都是利用Adeos(Adaptive Domain Environment for Operating Systems)技术构建的。 Adeos它是一个实时系统框架,在同一套硬件上提供多个独立的域。一个域通常包含一个操作系统,但并非所有域的实现都是操作系统,域的实现也可以是软件实体。这样, Xenomai 微内核和 Linux 内核就能在 Adeos 在灵活可扩展的环境中共存硬件资源。为保证系统的实时性, Adeos 中断发生时,先调度 Xenomai 只有当系统没有实时任务和中断时,才应中断并执行相应的实时任务, Adeos 才会调度 Linux 运行。本论文采用 Xenomai 实时补丁改造 Linux 操作系统使其成为实时操作系统。虽然 Xenomai 操作系统的实时性能比 RTAI 稍低,但是 Xenomai 实时性能足以满足大多数实时任务的需要 Xenomai 它还可以为系统和实时任务程序提供更好的可移植性和兼容性。 此外, Xenomai 拥有一套称为拥有一套skin”的 API,该 API 与传统工业级实时操作系统(如 VxWorks、 VRTX、 pSOS 、 RTDM 等)相同的功能有利于将传统实时操作系统下的应用程序移植到基础上 Linux 实时操作系统。Xenomai 的结构如图 2-3 所示。 测试证书,使用 Xenomai 补丁改造 Linux 实时做法简单高效,能满足要求 LinuxCNC 对数控平台实时任务高效运行的要求。
[外链图片存储失败,源站可能有防盗链机制,建议保存图片直接上传(img-rSyOeuXM-1640700195833)(https://www.shanlily.cn/wordpress/wp-content/uploads/2020/03/LC2.png)]
软件平台采用开放式数控系统,最初由美国标准和技术研究所开发,用于机器人和通用数控机床的运动控制。原名为EMC后来改名为LinuxCNC,该系统是一个免费的源代码开放软件,该系统最大支持9轴联动控制,内置前瞻性实时轨迹规划器,通过定制运动模块支持非笛卡尔空间运动控制,包括机器人关节控制和六轴连杆昆虫机器人控制。
LinuxCNC 是一个在 Linux 开源数控机床控制器下运行。 从美国国家标准与技术研究所开始(NIST)主持的增强型运动控制器 EMC(Enhanced Machine Controller)该项目用于机床数控系统。经过十几年的发展, LinuxCNC 该系统可驱动铣床、车床、 3D打印机、激光切割机、等离子切割机、机器人手臂、 六足机器人等。
-
LinuxCNC支持最多9轴运动控制,内置前瞻性实时轨迹规划器,具有实时轨迹误差限制、轴同步运动控制、自适应进给率控制等功能。
-
提供适用的RS-G代码解析器,274机床编程语言,使机床编程易于理解,降低了推广应用的难度。
-
为模块化自由配置提供了HAL实现控制系统的自由定制和功能的灵活扩展。
-
非笛卡尔空间的运动控制可以通过定制的运动模块来支持。
-
支持多种人机交互图形界面。Tcl/Tk、Python实现的Tkinter、Pyqt等。
LinuxCNC 主要由界面模块、任务控制器、运动控制器和数控平台组成, IO 控制器和硬件抽象层(HAL)组成。 (1) 界面模块 界面模块是用户与数控系统交互的模块。用户的操作命令通过界面模块传输到任务控制器,分析操作命令并分配到运动控制器或 IO 用户还可以通过界面模块获得任务控制器、运动控制器、 IO 控制器的状态信息和错误信息。
(2) 任务控制器 任务控制器是数控系统各模块之间的协调者,是整个数控系统的枢纽。任务控制器接收其他模块的命令,使用任务分析器分析命令,最终将命令分配到相应的模块中。此外,任务控制器还可以进行分析 NC 并生成标准指令。
(3) 运动控制器 运动控制器主要负责运动轨迹计算、插补计算、伺服控制值计算等运动控制功能的实现。运动控制器通过硬件抽象层间接控制电机等外部设备。
(4) IO控制器 IO 控制器负责数控系统输入输出的控制。 IO 控制器可以从数控机床接收数字信号,也可以将控制信号输出到数控机床。
(5) 硬件抽象层(HAL) 硬件抽象层是位于操作系统和驱动程序之上的服务程序,主要为应用程序提供与实际物理硬件无关的统一查询接口。
[外链图片存储失败,源站可能有防盗链机制,建议保存图片直接上传(img-IPMnR9d6-1640700195834)(https://www.shanlily.cn/wordpress/wp-content/uploads/2020/03/LC1.png)]
硬件抽象层(HAL) 数控系统的硬件资源,如: IO 模块、ADC 模块、 DAC 模块、脉冲模块和编码器模块。硬件抽象层作为硬件和应用程序之间的桥梁 (1) 该组件是具有多个输入/输出引脚的软件模块, 可动态加载 HAL 或从 HAL 中移除。 (2) 对组件进行调整, HAL 有两种类型:输入参数和输出参数。 (3) 引脚、引脚分为物理引脚和组件引脚两种,物理引脚与外部硬件相连,组件 引脚用于连接 HAL 只存在于组件中 HAL 中。 (4) 信号,信号用于连接 HAL 引脚,可随意连接或断开。 (5) 类型、引脚和信号都有类型属性,信号只能连接相同类型的引脚。 HAL 具有 BIT(位)、 FLOAT(32 位浮点数), U32(32 位无符号整数)和 S32(32 位整 数) 四种类型。 (6) 函数,函数是执行具体行为的代码块,可以使用 HAL 线程调度函数。 (7) 线程,“线程”是实时任务的组成部分,以特定时间间隔运行。线程运行时会按 执行加载到该线程的函数
G 代码是数控加工过程中最常见的编程语言。 LinuxCNC 的 G 代码基于RS274/NGC语言开发[22]。 G 代码文件通常由几行代码组成,每行(也称为块)可能包含几个执行不同事物的命令。典型的代码行从可选行号开始,然后由一个或多个代码组成。行号通常是字母 N 代码由非字母组成 N由字母和数字组成,代码可能是命令的参数或直接是命令。 例如, G1 X3 有效的代码有两个字。 G1 是指以编程给定的进给速度直线移动到编程终点的命令, X3 表示 X 移动结束时的值应该是 3。大多数Linux CNC 以字母命令处理代码 G 或 M 开头(表示 General 和 Miscellaneous),分别称为 G 代码和 M 代码。 G 代码按工作模式分类 3-1 所示。 其中, 在机床运动中很常见 G 代码及对应释如下。 1) G0(默认速度直线运动)
指坐标轴将按默认最大速率直线运动到指定位置,各坐标轴的速率由该速率分解而来,如: G0 X1 Y-2.3,表示从当前位置以默认最大速度直线运动到点(1 ,-2.3)。
2) G1(指定速度直线运动) 编程给定进给速度的线性运动,如: G1 X1.2 Y-3 F10,表示从当前位置以进给 速度 10 直线运动到点(1.2 ,-3)。
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-6TRLKtym-1640700195834)(https://www.shanlily.cn/wordpress/wp-content/uploads/2020/03/LC3.png)]
3) G2、 G3(圆弧运动) 使用 G2(顺时针圆弧)或 G3(逆时针圆弧)表示以当前进给速率坐圆弧运动 或螺旋弧运动。命令使用格式是: G2(或 G3) <X1- X2 - I- J- P->,其中 X1, X2 指代两个不同的轴所形成的平面, I 指 X1 轴上的偏移, J 指 X2 轴上的偏移, P 指 旋转圈数,运动时以相对于当前位置的偏移量为(I-,J-)的点为中心作画圆弧运动到 点(X1-,X2-),示例代码如下: G0 X1 Y1 表示(先运动到起始点(1,1), G2 X1 Y2 I1 J0.5 F25,表示在 X 轴 Y 轴平面上,以坐标点(2,1.5)为弧中心用速度 25 顺时针方 向作画弧运动到点(1,2)。
4) G4(暂停等待) G4 表示所有坐标轴暂时停止运动,等待一段时间。 G4 不影响主轴,冷却液和 任何 I/O 的功能使用。如: G4 P0.5 (所有坐标轴等待 0.5 秒后再前进)
5) G7(车床直径模式)、 G8(车床半径模式) G7 表示进入车床 X 轴的直径模式; G8 表示进入车床 X 轴的半径模式。
6) G90、 G91(距离模式) G90-绝对距离模式,表示以目前坐标系零点为参考,运动到到对应坐标; G91- 增量距离模式,表示以目前位置为参考,以一定偏移量运动。如:G90 G54 X0Y0Z0,表示运动到当前 G54 坐标系坐标原点; G91 X18 Y-20,表示以当前位置作参考, 向 X 正向移动 18 单位距离,向 Y 负向移动 20 单位距离。 G90 与 G91 两个命令互 斥, G91 模式下坐标系的设置对运动不会影响。
7) G54-G59(坐标系设定) G54-G59 是坐标系的选择设定。 其它 G 代码指令,功能简单介绍如下: G10 L1 设置刀具表项; G10 L10 设置 工具台,计算工件; G10 L11 设置工具台,计算夹具; G10 L2 坐标系原点设定; G10 L20 坐标系原点设定计算; G17 - G19.1 平面选择; G20 G21 测量单位设定; G28 - G28.1 运动到设定位置; G40 取消刀具补偿; G41 G42 刀具补偿; G43 使用 工具表中的刀具长度偏移量; G92 坐标系偏移 G93 G94 G95 Feed 模式。 M 代码按工作模式分类如表 3-2 所示。
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-i8eaHIxz-1640700195835)(https://www.shanlily.cn/wordpress/wp-content/uploads/2020/03/LC4.png)]
M0 - 临时暂停正在运行的程序,该指令在自动模式下才能生效, MDI 模式和 其他手动操作不起作用; M3 、 M4 、 M5-主轴控制, M3 表示以主轴设定速度 S 顺时针方向启动主轴运 动,M4 表示以主轴设定速度 S 逆时针方向启动主轴运动,M5 表示停止主轴运动; M6-刀具更换; M7 、 M8 、 M9-冷却液控制;
以下隐藏内容为LinuxCNC英文手册和LinuxCNC中文手册(部分翻译),有需要的可以下载。
[erphpdown]解压密码:ZMJPY123[/erphpdown]