如果您的PC已连接到Internet,则将LinuxCNC更新到新的小更新版本 (即,从相同的稳定系列更新到新版本,例如从2.7.0到2.7.1)是一个自动过程。 在小更新版本以及其他软件更新之后,您将看到更新提示。 如果您没有与PC的互联网连接, 请参考不通过网络进行更新.。

1. 升级到新版本

本节介绍如何将LinuxCNC从2.7版升级到最新版。假定您已经安装了需要更新的2.7版本。

要将LinuxCNC从2.7之前的版本升级到最新版,您必须首先 升级到2.7, 然后按照以下说明升级到最新版。

如果您没有要升级的旧版本LinuxCNC,则建议参照获取LinuxCNC一节全新安装新版本。

要在计算机具有网络连接时将2.6的主要版本升级到2.7,您需要禁用旧的linuxcnc.org APT源,并为2.7添加新的linuxcnc.org APT源,再然后升级LinuxCNC。

具体操作取决于您在哪个系统上运行。打开一个终端然后键入 lsb_release -ic 获取系统信息:

lsb_release -ic
Distributor ID: Debian
Codename:       wheezy

您应该在Debian Wheezy(如上例),Ubuntu Precise或Ubuntu Lucid上运行此命令。

1.1. 设置APT源

打开 软件源(Software Sources) 窗口。在上述三个受支持的平台上,操作此过程的流程略有不同:

  • Debian Wheezy:

    • 单击 `应用程序菜单(Applications Menu)`,然后单击 `系统(System)`,然后单击 `Synaptic软件包管理器(Synaptic Package Manager)`。

    • 在Synaptic中,单击 设置(Settings) 菜单,然后单击 仓库(Repositories) 以打开 软件源(Software Sources) 窗口。

  • Ubuntu Precise:

    • 单击左上方的 Dash Home 图标。

    • Search 输入框中,输入"software",然后单击 Ubuntu Software Center 图标。

    • 在Ubuntu软件中心窗口中,单击 Edit 菜单,然后单击 Software Sources... 以打开软件源窗口。

  • Ubuntu Lucid:

    • 单击 系统(System) 菜单,然后单击 `管理(Administration)`, 然后单击 `Synaptic软件包管理器(Synaptic Package Manager)`。

    • 在Synaptic中,单击 设置(Settings) 菜单,然后单击 存储库(Repositories) 以打开 软件源(Software Sources) 窗口。

      • 软件源(Software Sources) 窗口中,选择 其他软件(Other Software) 选项卡。

      • 删除或取消选中所有旧的linuxcnc.org条目(保留所有非linuxcnc.org条目)。

      • 单击 添加(Add) 按钮并添加新的APT行。在不同的平台上,该行会略有不同:

Platform apt source line

Debian Stretch

deb http://linuxcnc.org stretch base 2.8-rtpreempt

Debian Wheezy

deb http://linuxcnc.org wheezy base 2.8-rt

Ubuntu Precise

deb http://linuxcnc.org precise base 2.8-rt

Debian Jessie - preempt

deb http://linuxcnc.org jessie base 2.8-rtpreempt

Debian Jessie - RTAI

deb http://linuxcnc.org jessie base 2.8-rt

Debian Buster - preempt

deb http://linuxcnc.org buster base 2.8-rtpreempt

Debian Buster - RTAI

deb http://linuxcnc.org buster base 2.8-rt

Setting apt sources
  • 单击 添加源(Add Source)`,然后在软件源窗口中单击关闭。 如果它弹出一个窗口,通知您有关可用软件的信息已过期, 请单击 `重新加载(Reload) 按钮。

1.2. 升级到新版本

现在您的计算机知道从何处可以获取该软件的新版本,接下来我们需要安装它。

该流程再次因各平台而异。

1.2.1. Debian Wheezy和Ubuntu Lucid

Debian Wheezy和Ubuntu Lucid都使用Synaptic软件包管理器。

  • 使用上面的设置APT源中的说明打开Synaptic。

  • 单击 重新加载(Reload) 按钮。

  • 使用搜索功能搜索 `linuxcnc`。

  • 单击复选框,将新的linuxcnc和linuxcnc-doc- *软件包标记为要升级。 软件包管理器可能会选择要安装的许多其他软件包, 以满足新linuxcnc软件包的依赖。

  • 单击 应用(Apply) 按钮,然后您的计算机将会安装新软件包。 旧的linuxcnc软件包将自动升级到新的软件包。

1.3. Ubuntu Precise

  • 单击左上方的 Dash Home 图标。

  • 输入框中,输入"update",然后单击 `更新管理器(Update Manager)`图标。

  • 单击 检查(Check) 按钮以获取可用软件包的列表。

  • 单击 安装更新(Install Updates) 按钮以安装所有软件包的新版本。

2. 无网络更新

需要在没有网络连接的情况下进行更新,您需要下载deb, 然后使用dpkg安装它。每次更新时,buildbot都会构建新的Deb, 并将其存放在http://linuxcnc.org/dists/

您必须从上面的链接中从上至下翻找,以找到适合您的安装的deb。 打开 终端, 然后输入'lsb_release -ic'查找操作系统的名称。

> lsb_release -ic
Distributor ID: Debian
Codename:       buster

从列表中选择操作系统,然后选择所需的主要版本, 例如用于实时的2.7-rt或仅用于模拟的2.7-sim。

接下来,选择32位(i386)或者64位(amd64)的计算机类型。

接下来,从列表底部选择所需的版本,例如'linuxcnc-uspace_2.8.0_amd64.deb'。 下载deb并将其复制到您的主目录。您可以使用文件管理器将文件重命名为更短的名字(如linuxcnc_2.8.0.deb), 然后打开终端,并使用软件包管理器安装命令'sudo dpkg -i linuxcnc_2.8.0.deb'安装

sudo dpkg -i linuxcnc_2.8.0.deb

3. 更新配置文件(对于2.8.x)

新版本的LinuxCNC在某些方面与2.7版有所不同,可能需要更改您的计算机配置。

3.1. 配置分布(joints_axes的更新)

LinuxCNC发行版包括许多示例配置, 这些配置以名为by_machine,by_interface和sim(模拟机器)的目录层次结构组织。 这些配置通常用作进行新配置的起点, 研究示例或无需特殊硬件或实时内核即可运行完整模拟器。

这些目录树中的配置文件已针对joints_axes更新所需的更改进行了更新。

3.2. 自动更新(joints_axes的update_ini脚本)

由于joints_axes更新需要对用户ini文件及其相关的halfiles进行大量更改,因此提供了一个名为update_ini的脚本来自动转换用户配置。

用户在更新LinuxCNC之后首次启动现有配置时,将会调用此脚本。 该脚本在用户ini文件中搜索[EMC]VERSION项。如果此项1)不存在,或2) 存在且被设置为CVS历史值"$Revision$",或者是小于1.0的数值, 则update_ini脚本将弹出一个对话框,供您编辑用户文件以创建更新的配置。 如果用户接受,则配置将被更新。

例如,如果用户配置名为bigmill.ini,那么将对bigmill.ini文件及其本地关联的hal文件进行编辑以合并joints_axes更改。 初始配置的所有文件将保存在以原始配置命名的新目录中,后缀名为".old"(示例中为bigmill.old)。

update_ini脚本处理在采用特征运动学的基础机器中找到的所有常见用户选项。 在较复杂的机器中使用的不太常见的项目可能不会自动转换。 复杂机的器配置的示例包括:

  • 单轴上具有两个联合的龙门架

  • 带齿轮的机器

  • 具有非特征运动学的机器人

  • 使用haltcl文件进行配置

以下小节和'Hal Changes'部分列出了可能需要其他用户编辑ini或hal文件的项目。

3.3. Multiple Spindle Support

多主轴支持

LinuxCNC now supports up to 8 spindles (and can be recompiled for more) Existing G-code will run without modification and most configurations will default to single spindles. To specify more than one spindle set the [TRAJ]SPINDLES= entry in the INI file and include the num_spindles= parameter for the motion module (set with either [EMCMOT]EMCMOT = motmod num_spindles= or included in a halfile loadrt entry for motmod). LinuxCNC现在最多支持8个心轴(并且可以重新编译以获取更多心轴)。现有G代码将在不做任何修改的情况下运行,并且大多数配置将默认为单心轴。要指定多个主轴,请在INI文件中设置[TRAJ] SPINDLES =条目,并包括运动模块的num_spindles =参数(通过[EMCMOT] EMCMOT = motmod num_spindles =设置,或包含在motmod的Halfile loadrt条目中)。

运动模块num_spindles= parameter和[TRAJ]SPINDLES= settings 必须 匹配。

更改了主轴控制引脚的名称,使主轴看起来更像是轴和接头。 例如,motion.spindle-speed-out就是spindle.0.speed-out。 自动更新脚本将负责这些更改。 为了控制额外的主轴,控制主轴速度的G代码和M代码现在接受附加的"$"参数,例如M3 $2以启动第三个主轴。 选择"$"是为了避免与任何现有的代码字符冲突。可以创建自定义的G代码以匹配任何其他多主轴控制器。 有关代码更改,请参见G代码和M代码手册,以及有关HAL引脚更改的手动操作。

3.4. TRAJ速度,加速度名称

通过合并joints_axes功能,更改了一些名称以阐明可用功能。

was: [TRAJ]MAX_VELOCITY         is: [TRAJ]MAX_LINEAR_VELOCITY
was: [TRAJ]DEFAULT_VELOCITY     is: [TRAJ]DEFAULT_LINEAR_VELOCITY

was: [TRAJ]MAX_ACCELERATION     is: [TRAJ]MAX_LINEAR_ACCELERATION
was: [TRAJ]DEFAULT_ACCELERATION is: [TRAJ]DEFAULT_LINEAR_ACCELERATION

3.5. Kinematics modules 运动学模块

gentrivkins和gantrykins运动学模块已被删除,因为它们的功能现在在更新的trivkins模块中可用。

gentrivkins模块仅在先前的joints_axes分支中可用。要进行转换,必须更改名称。

Hal文件示例:

was: loadrt gentrivkins
 is: loadrt trivkins

was: loadrt gentrivkins coordinates=xyyz
 is: loadrt trivkins    coordinates=xyyz

使用gantrykins的配置应更新为使用kinstype= parameter设置为BOTH的trivkins配置(对于KINEMATICS_BOTH)。

Hal文件示例:

was: loadrt gantrykins coordinates=xyyz
 is: loadrt trivkins   coordinates=xyyz kinstype=BOTH

有关更多信息,请参见trivkins手册页('$ man trivkins')

注意:在joints_axes中指定运动学的最受支持的用法是在配置ini文件[KINS}部分中设置值, 然后在指定的[HAL]HALFILES(.hal .tcl文件)中引用它们。

例如:

inifile:    [KINS]
            KINEMATICS = trivkins
            JOINTS = 3
            ...

halfile:    loadrt [KINS]KINEMATICS

haltclfile: loadrt $::KINS(KINEMATICS)

3.6. 车床配置

在合并joints_axes之前,通常将车床配置为三轴(XYZ)机床,且轴(Y)未使用。 这对于共享Hal文件非常方便(尤其是对于模拟配置), 但是需要指定[TRAJ]AXES =3,一个伪装的AXIS_Y部分,以及用于归零未使用的Y坐标的规定。 且这些配置排列不再需要或建议。

历史车床配置使用trivkins运动学模块的默认选项。这些默认选项配置所有轴字母(XYZABCUVW)。 通过并入joints_axes,更合适的运动学规范将坐标设置为所使用的精确坐标(XZ), 并将接头数相应地设置为2。不再需要ini文件[AXIS_Y]部分,仅需要两个[JOINT_N]部门被定义。

车床的ini文件示例(仅显示与运动学有关的部分):

[KINS]
KINEMATICS = trivkins coordinates=xz
JOINTS = 2

[TRAJ]
COORDINATES = XZ
...

[AXIS_X]
...

[AXIS_Z]
...

[JOINT_0]
...

[JOINT_1]
...

请注意,某些模拟配置可能仍会使用历史车床配置的例子。

3.7. 一致的接头/轴规格

影响接头和轴使用的Ini文件项必须保持一致。

通常配置有[KINS]KINEMATICS='的运动运动学模块必须使用与[KINS]JOINTS='指定的接头数相等的数目。

运动学模块必须实现与任务模块选项'[TRAJ]COORDINATES='使用的规范相一致的轴字母。

示例:

使用trivkin(KINEMATICS_IDENTITY)的三轴直角坐标系:

  [KINS]KINEMATICS  = trivkins
  [KINS]JOINTS      = 3
  [TRAJ]COORDINATES = XYZ

使用带有非连续轴字母的trivkin(KINEMATICS_IDENTITY)的两轴车床:

  [KINS]KINEMATICS  = trivkins coordinates=XZ
  [KINS]JOINTS      = 2
  [TRAJ]COORDINATES = XZ

龙门使用带有重复的轴字母,和KINEMATICS_BOTH的trivkins进行单个接头定位(用于归位):

  [KINS]KINEMATICS  = trivkins coordinates=XYYZ kinstype=BOTH
  [KINS]JOINTS      = 4
  [TRAJ]COORDINATES = XYYZ

龙门使用三轴(KINEMATICS_BOTH)带有重复的轴字母和一个旋转轴带有跳过的轴字母(跳过了A,B):

  [KINS]KINEMATICS  = trivkins coordinates=XYYZC kinstype=BOTH
  [KINS]JOINTS      = 5
  [TRAJ]COORDINATES = XYYZC

具有非相同kin(KINEMATICS_BOTH)的线性Delta机器人在笛卡尔框架中工作,并带有附加的旋转坐标:

  [KINS]KINEMATICS  = lineardeltakins
  [KINS]JOINTS      = 4
  [TRAJ]COORDINATES = XYZA

注意:某些通用运动学模块(例如trivkins)实现了支持坐标指定(轴字母)的特征运动学。 轴字母可以省略。轴字母可能重复。 接头以定义的方式分配给轴字母('$ man trivkins')。

注意:对于trivkins模块加载,请勿在=符号或字母之间包含空格:

正确:     [KINS]KINEMATICS = trivkins coordinates=XZ
错误:     [KINS]KINEMATICS = trivkins coordinates = X Z

注意:实现非特征运动学的自定义运动学模块(例如lineardeltakins)定义了一组坐标和一组接头之间特定于机器的关系。 通常,自定义运动学模块将计算自定义模块内的接头-轴关系, 但是对相关ini项目使用一致的设置很重要:[KINS]JOINTS'和[TRAJ]COORDINATES'。 通常将在模块手册页中解释这些详细信息(例如,'$ man lineardeltakins')。

3.8. 归位序列

负值 可用于名为[JOINT_n]HOME_SEQUENCE的ini文件选项。 在joints_axes合并之前,值为-1或省略该项目表示没有适用的序列。 现在,仅省略该选项用于此目的。 有关更多信息,请参见章节: 归位配置

3.9. 锁定旋转分度器(joints_axes的更新)

对于joints_axes,分度器是可以归位的接头(接头模式),但还必须从gcode中解锁。 这需要单个接头和一条轴之间一一对应。

使用该轴的ini文件设置,指定与旋转轴(L = A,B,或者C)相对应的接头编号:

  [AXIS_L]LOCKING_INDEXER_JOINT = joint_number_for_indexer

指定接头是带有该接头的ini文件设置的锁定分度器(N是joint_number_for_indexer):

  [JOINT_N]LOCKING_INDEXER = 1

可以创建Hal引脚来协调锁定指示器接头的使用:

   joint.N.unlock      (BIT output from Hal)
   joint.N.is-unlocked (BIT input  to   Hal)

要创建用于锁定接头的这些hal销,请使用motmod模块的'unlock_joints_mask'参数指定用作锁定索引器的所有接头。 (bit0(LSB)==>joint0,bit1==>joint1,依此类推)

  [EMCMOT]
  EMCMOT = motmod unlock_joints_mask=BITMASK

例如,考虑一台使用trivkins运动学且坐标为XYZB的机器,其中B是锁定分度器。 对于trivkin,接头编号(从0开始)被连续分配给指定的坐标(可以省略轴坐标字母)。 对于此示例,X==>oint0,Y==>joint1,Z==>joint2,B==>joint3。 指定接头3的掩码为000001000(二进制)== 0x08(十六进制)

此trivkins XYZB示例所需的ini文件选项为:

  [KINS]
  JOINTS = 4
  KINEMATICS = trivkins coordinates=XYZB
  ...

  [TRAJ]
  COORDINATES = XYZB
  ...

  [EMCMOT]
  EMCMOT = motmod unlock_joints_mask=0x08
  ...

  [AXIS_B]
  LOCKING_INDEXER_JOINT = 3
  ...

  [JOINT_3]
  LOCKING_INDEXER = 1
  ...

对于更复杂的运动学,请根据需要选择接头编号-旋转轴和接头编号之间必须一一对应。

(有关motmod的更多信息,请参见运动手册页('$ man motion'))

3.10. 更加严格的INI文件语法

带有数字INI变量的行不再允许行尾跟随其他文本。 在早期版本的LinuxCNC中,数字后的任何文本都被默认忽略, 但是从此版本开始,此类文本完全被禁止。 这包括哈希字符("#"),在此位置是值的一部分,而不是注释字符。

例如,以下行将不再被接受:

MAX_VELOCITY = 7.5 # This is the max velocity of the axis.

它们可以转换成如下行样式:

# This is the max velocity of the axis.
MAX_VELOCITY = 7.5

3.11. [Trail]设置

在2.7.x版本中,轨迹规划([TRAJ])设置包括:

[TRAJ]
DEFAULT_ACCELERATION
MAX_ACCELERATION

为不同的线性和角度选项准备的过渡工作, 如下重命名:

[TRAJ]
DEFAULT_LINEAR_ACCEL
MAX_LINEAR_ACCEL

由于这些缩写名称与其他名称约定和update_ini脚本的实现不一致, 因此临时命名已更正为使用:

[TRAJ]
DEFAULT_LINEAR_ACCELERATION
MAX_LINEAR_ACCELERATION
Note
支持指定轨迹规划角度默认值和最大加速度的支持尚未实现。

4. Hal更改(joints_axes 2.8.x的更新)

4.1. 滚轮或MPG(手动脉冲发生器)点动

在合并joints_axes更新之前,仅在接头模式下支持车轮慢跑,并通过hal引脚控制:

   bit   IN  axis.M.jog-enable
   float IN  axis.M.jog-scale
   s32   IN  axis.M.jog-counts
   bit   IN  axis.M.jog-vel-mode

其中'M'是与轴字母相对应的数字(0==>X,1==>Y等)

通过合并joints_axes更新,可以在接头模式下对接头和伸缩模式下的每个轴坐标进行点动。 提供的控制hal引脚是:

   bit   IN  joint.N.jog-enable
   float IN  joint.N.jog-scale
   s32   IN  joint.N.jog-counts
   bit   IN  joint.N.jog-vel-mode

   bit   IN  axis.L.jog-enable
   float IN  axis.L.jog-scale
   s32   IN  axis.L.jog-counts
   bit   IN  axis.L.jog-vel-mode

其中'N'是接头编号,'L'是轴字母。

要在标识号配置中使用MPG,其中接头编号和轴字母一一对应, 则可以方便地连接相应的hal引脚。 例如,如果接头1恰好对应于轴字母y:

   net jora_1_y_enable   => joint.1.jog-enable => axis.y.jog-enable
   net jora_1_y_scale    => joint.1.jog-scale  => axis.y.jog-scale
   net jora_1_y_counts   => joint.1.jog-counts => axis.y.jog-counts
   net jora_1_y_vel-mode => joint.1.jog-counts => axis.y.jog-vel-mode

(信号名称jora_1_y_*是示例,joints_axes转换之前的名称将取决于特定的配置详细信息。)

具有非特征运动学的配置以及使用重复的轴字母的配置(例如,对于一个轴坐标,使用多个接头的龙门架) 将需要适当的独立控制逻辑来支持接头和伸缩(全局)点动。

4.2. Ini Hal引脚

为接头([JOINT_N]部分)和轴([AXIS_L]部分)的ini文件项创建Hal引脚:

For N = 0 ... [KINS](JOINTS -1)
Ini File Item              hal pin name
[JOINT_N]BACKLASH          ini.N.backlash
[JOINT_N]FERROR            ini.N.ferror
[JOINT_N]MIN_FERROR        ini.N.min_ferror
[JOINT_N]MIN_LIMIT         ini.N.min_limit
[JOINT_N]MAX_LIMIT         ini.N.max_limit
[JOINT_N]MAX_VELOCITY      ini.N.max_velocity
[JOINT_N]MAX_ACCELERATION  ini.N.max_acceleration
[JOINT_N]HOME              ini.N.home
[JOINT_N]HOME_OFFSET       ini.N.home_offset
For L = x y z a b c u v w:
Ini File Item              hal pin name
[AXIS_L]MIN_LIMIT          ini.L.min_limit
[AXIS_L]MAX_LIMIT          ini.L.max_limit
[AXIS_L]MAX_VELOCITY       ini.L.max_velocity
[AXIS_L]MAX_ACCELERATION   ini.L.max_acceleration

注意:在LinuxCNC的先前版本中(在joints_axes更新之前), hal引脚名称ini.N.*'所指的轴为0==>x,1==>y等 (所有9个轴都创建了引脚)页面($ man milltask')以获取更多信息

5. Hal变化(其他2.8.x)

5.1. halcompile

names=实例数量以前限制为16。 现在,对于实时组件(loadrt),实例是动态分配的,没有内置限制。 16个限制仍然适用于用户空间names=选项(loadusr)组件的项目。

对于使用'个性'的组件,最大数量现在可以通过命令行选项-P|--personalities设置。

5.2. 更改引脚参数

以下hal输出引脚已从参数更改为引脚,以便可以将其连接到信号:

   motion.servo.last-period    (servo last period in clks)
   motion.servo.last-period_ns (kernel-dependent availability)

6. joints_axes 2.8.x的接口更改

6.1. python linuxcnc模块

jog()接口包含一个'joint-flag',用于指定接头(True)或伸缩(False)点动:

jog(command, joint-flag, axis-or-joint-number, velocity[, distance]])

jog(linuxcnc.JOG_STOP, joint-flag, axis-or-joint-number)
jog(linuxcnc.JOG_CONTINUOUS, joint-flag, joint-flag, velocity)
jog(linuxcnc.JOG_INCREMENT, joint-flag, axis-or-joint-number, velocity, distance)

7. GUI(joints_axes 2.8.x的更新)

7.1. 关于接头/轴点动,归位和运动学的注意事项

通过结合joints_axes更新,LinuxCNC强制执行接头和轴(坐标字母)的区别, 但是某些gui(如轴gui)可能隐藏了一些简单机器的区别。

在大多数情况下,您可以将接头视为‘电机’。

接头和轴坐标之间的关系由描述机器运动的数学运动学函数确定。

世界坐标(X,Y,Z,A,B,C,U,V,W)是通过对接头(电机)位置进行正向运动学运算来确定的。

在世界空间中移动(例如gcode运动)时, 所需的接头(马达)位置是通过将‘反向’运动学操作应用于在世界空间中请求运动的坐标来确定的。

归位 才有可能在世界空间中移动。

对于简单的机器(例如铣床和车床),接头和轴坐标字母是一一对应的。 例如,在XYZ铣床上,这些关系通常为:axisX==joint0,axisY==joint1,axisZ=joint2。 这种对应关系被称为“特征”运动学,通常使用的运动学模块是trivkins运动学(通用的运动学)。 (请参见trivkins手册页'$ man trivkins')

在接头模式下使用接头点动(接头编号为0,1,…)(通常仅在归位之前使用)。 归位完成后,点动模式会自动从接头模式切换为世界模式,并使用轴点动(坐标字母X,Y,…)。 这适用于MDI命令或gcode程序请求的所有gcode移动。

尽管归位后通常不需要在联合模式下慢跑,但是某些GUI(如轴)会提供键盘快捷键('$'), 以允许使用非特征运动学的机器在联合模式和世界(teleop)模式之间切换。

在许多常见情况下,由于使用归位交换机和/或LinuxCNC提供的各种归位方法完成了归位, 因此不再需要联合点动。只需打开机器,发出Home-All命令, 机器就自动归位并更改为世界模式。 请参阅 归位配置

不使用归位开关的机器可能需要在联合模式下手动进行点动,然后再建立每个接头。 对于不需要归位到固定位置的接头,也可以使用立即归位(请参阅归位文档)。

尽管GUI可能会隐藏特征运动学机器的接头/轴区别, 但完成归位通常很重要,以便运行程序或使用GUI提供的功能。

默认情况下,trivkins模块声明自己具有特征运动学。 通过使用'kinstype=both'将运动学类型设置为非特征类型, 可以在使用trivkins时使联合/世界操作的区别在gui轴上可见。 两种设置均指示正向和反向运动学功能均可用,并且不应使用隐藏接头和轴字母区别的gui规定。 例如,对于xyz配置,请指定:

[KINS]
KINEMATICS = trivkins coordinates=xyz kinstype=both

通过此设置,将使用特征运动学,但轴gui将:

  1. 在归位之前显示接头编号

  2. 成功归位后显示轴字母

  3. 支持使用'$'键在联合和teleop模式之间切换

7.2. Halui

Halui现在支持慢跑,从而更改了一些引脚名称,并为与慢跑相关的引脚提供了许多新名称。

有关所有引脚名,请参见手册页('$ man halui')。

7.2.1. 慢跑(也称为轴慢跑或全局慢跑)

慢跑的新引脚是:

      新: halui.axis.jog-speed
      新: halui.axis.jog-deadband

      新: halui.axis.L.plus
      新: halui.axis.L.minus
           ... 等等.

其中'L'是与[TRAJ]COORDINATES指定的轴字母之一相对应的字母,或为halui.axis.L.select引脚选择的轴选择的字母。

7.2.2. 联合慢跑

出于特殊性,所有用于联合点动的引脚都已重命名:

      曾经: halui.jog-speed          现在: halui.joint.jog-speed
      曾经: halui.jog-deadband       现在: halui.joint.jog-deadband

      曾经: halui.jog.N.plus         现在: halui.joint.N.plus
      曾经: halui.jog.N.minus        现在: halui.joint.N.minus
           ...  等等.                    ... 等等.

其中'N'是接头编号(0…num_noints-1)或由halui.joint.N.select引脚选择的接头选择'selected'。

7.2.3. 额外的引脚重命名

所选接头的hal引脚已重命名,以与相关引脚保持一致。

      曾经: halui.joint.selected.is_homed
      现在: halui.joint.selected.is-homed

      曾经: halui.joint.selected.on-soft-limit
      现在: halui.joint.selected.on-soft-min-limit

7.3. 轴GUI

7.3.1. 特征运动学

轴gui继续支持特征运动学配置。 该gui隐藏了轴和接头的区别,以简化简单机器的显示和使用。

7.3.2. 特例运动学

一些机器,通常是龙门,可能使用一种配置,其中多个接头分配给一个轴字母。 这可以通过trivkins运动学模块使用重复的坐标字母来完成。 例如,配置了ini设置的计算机:

[KINS]
KINEMATICS = trivkins coordinates=XYYZ kinstype=BOTH
...
[TRAJ]
COORDINATES = XYYZ
...

归位后,该机器在单轴字母(Y)和一对接头(1,2)之间具有一对一的对应关系。 如果需要的话,使用kinematics=BOTH可以在接头模式下控制单个接头。

7.3.3. 非特征运动学

轴gui支持使用非特征运动学进行以下配置:

  1. 按键绑定('$')切换联合或遥控模式

  2. 根据接头或伸缩模式的接头或轴的预览选项卡显示

  3. 在联合模式下预览“主页”和“限制”图标的选项卡

  4. Preview Tab display of All-homed and 'Any-limit icons in teleop mode伸缩模式下“全宿”和“任意限制”图标的“预览”选项卡显示

  5. DRO Tab display of joint or axes according to joint or teleop mode根据关节或伸缩模式的关节或轴的DRO标签显示

  6. Jogging is supported in both joint and teleop motion modes联合和伸缩运动模式均支持慢跑

  7. External changes to the joint/teleop motion mode are detected.检测到关节/远距运动模式的外部变化。

7.3.4. Home icons

For identity kinematics, Home icons are shown for the corresponding (one-to-one) axis letter when a joint is homed.

For non-identity kinematics, Home icons are shown for individual joints when a joint is homed in joint display mode. An All-homed icon is displayed for all axis letters when ALL joints are homed in world display mode.

7.3.5. Limit icons

For identity kinematics, Limit icons are shown for the corresponding (one-to-one) axis letter when a joint limit is active.

For non-identity kinematics, Limit icons are shown for individual joints when the joint limit is active in joint display mode. An Any-Limit icon is displayed if any joint is at a limit in teleop display mode.

7.3.6. Key bindings for a fourth axis

In the AXIS gui, jogging keys are assigned to axes in a configurable fashion. For 3-axis machines, XYZA machines, and lathes the default is the same as in 2.7. For other machines, the 4 pairs of jogging keys are assigned to the first 4 axes that exist in the order XYZ ABC UVW. These assignments can be controlled by new inifile directives in the [DISPLAY section of the inifile]

Note that the parameters used for jogging may not be appropriate for both modes for machines with non-identity kinematics.

7.4. tklinuxcnc

tklinuxcnc gui支持特征和非特征运动学, 包括gui单选按钮和用于切换联合和伸缩模式的键绑定('$')。 检测到接头或伸缩运动模式的外部变化。 接头和伸缩运动模式均支持慢跑。 请注意,用于慢速运动的参数可能不适用于运动模式不相同的两种模式。

tklinuxcnc不使用OpenGL,因此可用于隔离问题和系统依赖关系,而这些问题和依赖关系是由更现代的GUI(如axis)暴露的。

提供的基本backplot gui可用于特征运动学(xyz)机器配置。

7.4.1. emcsh命令

emcsh.cc的代码提供了tklinuxcnc使用的tcl命令集。 这些命令可作为名为Linuxcnc的tcl软件包提供给tcl应用程序。 以前有许多命令需要使用数字参数来指定轴坐标(0-→X,1-→Y,…,8-→W)。 这些命令已简化为使用只是坐标字母的参数。

现在使用坐标字母参数的命令是:

  1. emc_pos_offset

  2. emc_abs_cmd_pos

  3. emc_abs_act_pos

  4. emc_rel_cmd_pos

  5. emc_rel_act_pos

  6. emc_tool_offset

  7. emc_probed_pos

7.5. touchy

touchy gui继续支持在joints_axes合并之前所支持的特征运动学配置。 慢跑在遥控模式下完成。

7.6. gscreen

gscreen gui继续支持在joints_axes合并之前它支持的身份运动学配置。 慢跑在遥控模式下完成。

7.7. gmoccapy

The gmoccapy gui continues to support the identity kinematics configurations that it supported prior to joints_axes incorporation. Jogging is done in teleop mode. gmoccapy gui继续支持在joints_axes合并之前所支持的身份运动学配置。 慢跑在遥控模式下完成。

7.8. shuttlexpress 驱动已重命名为 shuttle

Contour Designs ShuttleXpress设备的HAL驱动程序已从"shuttlexpress"重命名为"shuttle"。 如果您的hal文件包含"loadusr shuttlexpress"的某些变体,则将"shuttlexpress"替换为"shuttle"。

增加了对ShuttlePRO(ShuttleXpress的较大版本)的支持,因此旧的驱动程序名称不再准确。

7.9. linuxcncrsh

现在,通过使用-1作为联合号,set home子命令支持“Home All”

更改了慢跑命令以适应联合(自由)和遥控(世界)慢跑。

    was: set jog      joint_number             speed
     is: set jog      joint_number|axis_letter speed

    was: set jog_incr joint_number             speed increment
     is: set jog_incr joint_number|axis_letter speed increment

    was: set jog_stop
     is: set jog_stop joint_number|axis_letter

注意:使用以下命令测试Teleop模式:如果TELEOP_ENABLE=YES,则teleop_enable,使用axis_letter,否则使用joint_number

注意:以前,命令set jog 0 1.234'将在任何模式(自由或伸缩)下以请求的速度=1.234点动第零轴(X)。 现在,如果模式为自由(非远程),则此命令尝试点动第0关节(Joint0)。 要点动X轴,模式必须为远程,并且相应的命令为:'set jog x 1.234

8. 工具

8.1. 校准(emccalib.tcl)

校准/调整工具现在支持部分:

[JOINT_N], [AXIS_L], [SPINDLE_S], [TUNE]

其中N是接头编号(0 ..([KINS]JOINTS-1)),L是轴坐标字母(X,Y,Z,A,B,C,U,V,W),S是主轴号(0 .. 9)

Note
允许的主轴数为8,但是传统配置可能包含与实际主轴号无关的部分[SPINDLE_9]。
Note
[TUNE]部分可用于指定与其他受支持部分无关的可调项。

9. 过时的Gui(针对2.8.x版本已删除)

GUI 'mini','keystick'和'xlinuxcnc'已与joints_axes的更新一起删除。 git存储库中提供了所有相关的源代码,示例和文档。

10. 不推荐使用的Guis(在2.8.x标记)

linuxcnclcd GUI是可以删除的候选对象。 如果删除此组件,则所有相关的源代码,示例和文档都将在git存储库中提供。

11. 模拟器配置(接头轴2.8.x的更新)

11.1. Pre-joints_axes

在加入joints_axes之前,在sim配置中使用的halfiles通常支持一台普通铣床,即具有传统的运动学和三个名为'X Y Z'的轴的笛卡尔系统。 典型的半身条目:

[HAL]
HALFILE = core_sim.hal
HALFILE = sim_spindle_encoder.hal
HALFILE = axis_manualtoolchange.hal
HALFILE = simulated_home.hal

车床配置通常共享相同的halfiles,并使用了方便的方法来指定3个未使用'Y'轴。 更复杂的sim config根据配置目的提供了特定的halfiles。

11.2. Post-joints_axes

通过结合joints_axes功能,该发行版中提供的许多模拟现在都利用了通用halfile,该halfile自动支持多种配置。 典型的sim config HALFILE规范为:

[HAL]
HALFILE = LIB:basic_sim.tcl

basic_sim.tcl HALFILE支持任意数量的接头的许多常用功能,这些功能由以下方式指定:

[KINS]
...
JOINTS = number_of_joints
...

支持的功能包括:

  1. ddts — 为每个接头加载并连接微分器hal组件(对于trivkins机器,则为xy,xyz)

  2. simulated_home — 将为每个接头加载并连接一个sim_home_switch hal组件。归位条件由通常的[JOINT_n]HOME_* ini文件项指定。

  3. use_hal_manualtoolchange -- 用户空间hal_manualtoolchange组件已加载并连接。

  4. sim_spindle — sim_spindle组件已加载并连接到其他已加载的hal组件,以模拟旋转主轴质量的惯性。

这些功能默认情况下处于激活状态,但可以使用以下选项将其排除:-no_make_ddts, -no_simulated_home, -no_use_hal_manualtoolchange, '-no_sim_spindle'。

例如,要省略ddts的创建:

HALFILE = LIB:basic_sim.tcl -no_make_ddts

省略一个或多个核心功能可进行测试,而无需添加功能或添加新的HALFILE来实现或扩展功能。

11.2.1. 等效的Hal命令文件

使用LIB:basic_sim.tcl时,将在配置目录中创建等效的halfile以显示发出的halcmd命令。 文件名基于inifile的名称,基本名称后附加_cmds'和常规的.hal'文件扩展名。 例:

inifilename:            example.ini
equivalent_halfilename: example_cmds.hal

等效的halfile替代了具有相同文件名的文件的先前实例。 在inifile中指定并由halcmd解释的inifile变量替换会自动在创建的Halfile中替换。 如果在LIB:basic_sim.tcl之前指定了[HAL] HALFILE,则它们的halcmd命令也将包括在内。

等效的halfile可用于基于LIB:basic_sim.tcl进行的原始配置来创建新配置,包括以下步骤:

1)运行模拟器配置以创建新的等效halfile,例如:'example_cmds.hal'。

要在原始模拟器配置infile(或它的副本)中使用这个等效的新halfile,请进行更改以进行以下更改:

[HAL]
HALFILE = LIB:basic_sim.tcl other_parameters

至:

[HAL]
HALFILE = ./example_cmds.hal

11.2.2. 注意

可以使用halcmd查看LIB:basic_sim.tcl建立的所有组件和连接。 可以使用以下方法将整个hal配置(加载了loadusr的用户空间组件除外)保存到文件中:

$ halcmd save > hal.save

LIB:basic_sim.tcl的使用减少了进行模拟配置所需的工作量, 因为它可以处理大多数所需的组件加载和hal连接。

sim config示例配置 Sample Configurations/sim/axis/minimal_xyz.ini 演示了一个有效的xyz配置, 该配置使用LIB:basic_sim.tcl以及最少的ini文件设置。

12. 2.8.x的其他更新

提交更改到未发布分支,可能会影响测试人员和未发布软件的早期试用者。

12.1. 运动引脚

新引脚(有关更多信息,请参见运动手册页):

axis.L.jog-accel-fraction
joint.N.jog-accel-fraction

12.2. Hal引脚

名称更改:

was: axis.L.vel-cmd
 is: axis.l.teleop-vel-cmd

新引脚:

motion.homing-inhibit (参见运动手册)

12.3. Hal组件更新

  1. siggen: 新引脚'reset'以将输出信号值设置为预定义状态

  2. biquad: 引脚 type,f0,Q,s1,s2 以前是参数

12.4. XHC-HB04 Pendant支持

12.4.1. xhc_hb04_util.comp(帮助程序组件)

移除未使用的引脚jogenable-off

添加引脚 amux-enable ,以便现在通过对这些引脚进行与操作, 来实现多路加速降低: is-manualamux-enable'。 这两个引脚通常分别连接到 'halui.mode.is-manualhalui.mode.is-teleop

12.4.2. xhc_hb04.tcl(可选的LIB配置halfile)

卸下信号pendant: jogenable-off,以除去引脚 pendant_util.jogenable-off

支持新的运动引脚,以降低加速度(axis.L.jog-accel-fraction, joint.N.jog-accel-fraction), 以实现车轮点动。不再支持使用[APPLICATIONS]APP=xhc-hb04-accels。 减小的加速度仅适用于车轮慢跑(不适用于gui发出的nml命令)。

12.5. [JOINT_n]HOME_SEQUENCE起始值

起始序列值只能是0,1(或-1)。有关更多信息,请参见“归位配置”文档。

12.6. [JOINT_n]HOME_SEQUENCE负值

不允许使用负HOME_SEQUENCE的接头在接头模式下慢跑,以防止常见龙门配置中的未对准(倾斜)。 与往常一样,必须启用任何运动学类型的机器,然后才能进行常规的世界模式点动。

12.7. TWOPASS支持复杂的loadrt config=选项

其中多个设置用空格分隔并用引号引起来。例:

loadrt hm2_eth board_ip=10.10.10.10 config="num_encoders=2 num_pwmgens=2 num_stepgens=3"

13. 2.8.x之后的更改(主分支开发)

master分支带有预发行标记的版本标记,通常为2.9〜pre*

13.1. 配置更新

13.1.1. Inifile设置

New: [JOINT_n]HOME_INDEX_NO_ENCODER_RESET — support encoder with index that does not reset upon receipt of index pulse following assertion of index_enable. 新增:[JOINT_n]HOME_INDEX_NO_ENCODER_RESET-支持具有索引的编码器,该索引在声明index_enable之后在收到索引脉冲后不会复位。

13.2. 代码更新

13.2.1. 反向运行

在路径调度器,任务和运动模块,python接口,轴界面和测试套件中增加了对反向运行的支持。

13.2.2. 接头数

接头的最大数量(EMCMOT_MAX_JOINTS)从9增加到16。 轴界面现在支持最多显示16个接头。

13.2.3. 扩展接头

新的motmod参数(num_extrajoints)指定通过常规接头归位方法归位, 但在归位后由新的hal引脚(joint.N.posthome-cmd)控制的接头。 此类接头可以由独立的运动调度器/控制器控制,并且可以使用自定义M代码从gcode中进行操纵。 有关更多信息,请参见运动手册页。

13.2.4. 归位

src/emc/motion/homing.h提供了一个归位api,以支持用户的自定义归位代码, 该代码将src/emc/motion/homing.c替换为用户自定义的homing.c文件。

13.2.5. 其他

lib/hallib/sim_lib.tcL:如果指定了[JOINT_n]HOME_USE_INDEX,则模拟编码器索引。

lib/python/vismach.py​​:新的hal pin vismach.plotclear

13.3. Hal

13.3.1. 组件

sim_home_switch:为index-enable添加了I/O引脚

13.4. 配置

13.4.1. 仿真配置

sim/configs/axis/axis_9axis:演示模拟编码器索引