找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 1204|回复: 0

Linuxcnc 的 ini 文件详解(转)

[复制链接]

56

主题

9

回帖

323

积分

管理员

积分
323
发表于 2024-2-5 10:30:06 | 显示全部楼层 |阅读模式
转自linuxcnc中文网
本文大部分内容翻译自官网,如翻译无法理解,请传送官网:https://linuxcnc.org/docs/html/config/ini-config.htm
1、ini文件结构
Linuxcnc使用的ini结构与其他软件的ini文件,结构并无不同,分为:注释,节和变量三部分
注意,本文提到的所有符号皆为英文半角符号,请注意!!!
1.1注释(comments)
使用 ; 或者 # 作为注释的标志,这个标志之后的内容皆为注释,例如
;这里的内容不会被执行
#这里的内容不会被执行
这里的内容会被执行  #这里的内容不会被执行
1.2节(sections)
节是为了方便查找内容,给一类变量取的名称。例如在一个学校里只知道名字找一个学生是很困难的,但是如果知道班级号,就迅速定位,节就相当于班级名称。节名称使用用中括号[ ],例如:
[EMC]
变量1 = 1
变量2 = 2
Linuxcnc中有以下默认的节,推荐把每个变量放在他所在的节里面。
[EMC]  通用信息
[DISPLAY]  与图形用户界面相关设置
[FILTER]  过滤器
[RS274NGC]  G代码解释器相关设置
[EMCMOT]  实时运动控制器相关设置
[TASK]  任务控制器相关设置
[HAL]  .hal 文件相关设置
[HALUI]  HALUI使用的 MDI 命令
[APPLICATIONS] LinuxCNC启动的其他应用程序
[TRAJ] 实时运动控制器使用的附加设置
[JOINT_n]  单个关节变量
[AXIS_l]  单个轴变量
[KINS]  运动学变量
[EMCIO]  I/O 控制器
1.3变量(variables)
变量由变量名称、等号和值组成。 从行首的非空格字符到行尾的所有内容都作为值传递,因此,如果您愿意或需要,可以在字符串符号中嵌入空格。 例如:
变量名称1 = 变量1
变量名称2 = 你好  世界  #“你好   世界”将会作为一个整体赋值给变量名称2
1.4自定义节和变量
你可以自己定义节和变量,然后自己去hal或者其他地方调用,例如在INI部分:
[PROBE]
Z_FEEDRATE = 50
Z_OFFSET = 12
Z_SAFE_DISTANCE = -10
在hal中可以直接:
setp offset.1.offset [PROBE]Z_OFFSET
setp stepgen.0.position-scale [JOINT_0]SCALE
即可实现将50赋值给offset.1.offset
2.INI 文件部分
2.1. [EMC] 部分
VERSION = 1.1– 配置的版本号。 除 1.1 以外的任何值都将导致配置检查器运行,并尝试将配置更新为新样式的关节轴配置类型。
MACHINE = My Controller– 这是控制器的名称,显示在大多数图形界面的顶部。 你可以在这里放任何你想要的东西。
DEBUG = 0– 调试级别 0 表示从终端运行 LinuxCNC 时不会打印任何消息。 调试标志通常只对开发人员有用。有关其他设置,请参见 src/emc/nml_intf/debugflags.h。
2.2. [DISPLAY]部分
不同的用户界面程序使用不同的选项,并且并非每个用户界面都支持每个选项。 有几个接口,如 AXIS、GMOCCAPY、Touchy、QtVCP 的 QtDragon 和 Gscreen。 AXIS 是用于普通计算机和显示器的界面,Touchy 用于触摸屏。 GMOCCAPY 可以双向使用,并且还为硬件控制提供了许多连接。 接口说明在用户手册的接口部分。
DISPLAY = axis– 提供要使用的用户界面的可执行文件的文件名。可选项(全部为小写):axis、touchy、 gmoccapy、gscreen 、tklinuxcnc 、qtvcp 、qtvcp-qtdragon 、qtvcp-qtplasmac。
POSITION_OFFSET = RELATIVE– 用户界面启动时要在 DRO 上显示的坐标系( 或 )。 RELATIVE 坐标系反映了当前有效的 G92 和 G5x 坐标偏移,即相对坐标。MACHINE即机械位置。可选项:RELATIVE MACHINE
POSITION_FEEDBACK = COMMANDED– 用户界面启动时在 DRO 上显示的坐标值(或)。 在 AXIS 中,可以从“视图”菜单进行更改。 COMMANDED 位置是 LinuxCNC 目标位置。 实际位置是编码器的反馈位置。 通常使用 COMMANDED 值。可选项:COMMANDED ACTUAL
DRO_FORMAT_MM = %+08.6f– 在公制模式下覆盖默认的 DRO 格式(通常为 3 位小数,左侧用空格填充到 6 位)。 上面的示例将用零填充,显示 6 位十进制数字,并强制显示正数的 + 号。 格式化遵循 Python 实践:https://docs.python.org/2/librar ... ation-mini-language 。 如果格式不能接受浮点值,则会引发错误。
DRO_FORMAT_IN = % 4.1f– 在英制模式下覆盖默认的 DRO 格式(通常为 4 位小数,左侧用空格填充 6 位)。 上面的示例将仅显示一个十进制数字。 格式化遵循 Python 实践:https://docs.python.org/2/librar ... ation-mini-language 。 如果格式不能接受浮点值,则会引发错误。
CONE_BASESIZE = .25– 覆盖图形显示中的默认圆锥/刀具基座尺寸 .5。
MAX_FEED_OVERRIDE = 1.2– 用户可以选择的最大反馈倍率。 1.2 表示编程进给率的 120%。
MIN_SPINDLE_OVERRIDE = 0.5– 用户可以选择的最小主轴倍率。 0.5 表示编程主轴转速的 50%。(用于设置最小主轴转速。
MIN_SPINDLE_0_OVERRIDE = 0.5– 用户可以选择的最小主轴倍率。 0.5 表示编程主轴转速的 50%。(用于设置最小主轴转速。 在多轴机床上,每个主轴编号都有条目。仅由基于 QtVCP 的用户界面使用。
MAX_SPINDLE_OVERRIDE = 1.0– 用户可以选择的最大主轴倍率。1.0 表示编程主轴转速的 100%。
MAX_SPINDLE_0_OVERRIDE = 1.0– 用户可以选择的最大反馈倍率。 1.2 表示编程进给率的 120%。 在多轴机床上,每个主轴编号都有条目。仅由基于 QtVCP 的用户界面使用。
PROGRAM_PREFIX = ~/linuxcnc/nc_files– G 代码文件、命名子例程和用户定义的 M 代码的默认目录。 Linuxcnc会先搜索这个参数指定的目录,再搜索PROGRAM_PREFIX[RS274]SUBROUTINE_PATH[RS274]USER_M_PATH和ini文件所在目录
INTRO_GRAPHIC = emc2.gif– 初始屏幕上显示的图像。
INTRO_TIME = 5– 显示初始屏幕的最长时间(以秒为单位)。
CYCLE_TIME = 100– 显示 GUI 的循环时间。 根据屏幕的不同,这可以是以秒或毫秒为单位(首选毫秒)。 这通常是更新速率,而不是更新之间的睡眠时间。 如果更新时间设置不正确,屏幕可能会变得无响应或非常生涩。 100 毫秒(0.1 秒)的值是常见的设置,但 50 – 200 毫秒(0.05 – 0.2 秒)的范围可能是可用的。 功率不足的 CPU 可能会随着设置时间的延长而有所改善。 通常默认值是可以的。
PREVIEW_TIMEOUT = 5– 加载 G 代码图形预览的超时(以秒为单位)。目前仅限 AXIS。
注意        以下 [DISPLAY] 项由 GladeVCP 和 PyVCP 使用, 有关更多信息,请参阅 GladeVCP 章节或 PyVCP 章节的嵌入选项卡部分。
EMBED_TAB_NAME = GladeVCP 示例
EMBED_TAB_COMMAND = halcmd loadusr -Wn gladevcp gladevcp -c gladevcp -x \{XID\} -u ./gladevcp/hitcounter.py ./gladevcp/manual-example.ui注意不同的用户界面程序使用不同的选项,并且并非每个用户界面都支持每个选项。 有关 AXIS 详细信息,请参见 AXIS GUI 文档。 有关GMOCCAPY的详细信息,请参阅GMOCCAPY文档。
DEFAULT_LINEAR_VELOCITY = .25– 线性点动的默认速度,以机器单位/秒为单位。
MIN_VELOCITY = .01– 慢速的近似最低值。
MAX_LINEAR_VELOCITY = 1.0– 线性点动的最大速度,以机器单位/秒为单位。
MIN_LINEAR_VELOCITY = .01– 慢速的近似最低值。
DEFAULT_ANGULAR_VELOCITY = .25– 角点动的默认速度,以机器单位/秒为单位。
MIN_ANGULAR_VELOCITY = .01– 旋转点动的近似最低值。
MAX_ANGULAR_VELOCITY = 1.0– 旋转点动的最大速度,以机器单位/秒为单位。
INCREMENTS = 1 mm, .5 in, ...– 定义可用于增量点动的增量。 INCREMENTS 可用于覆盖默认值。 这些值可以是十进制数(例如,0.1000)或小数(例如,1/16),也可以是后跟单位(cm、mm、um、inch、in或mil)。 如果未指定单位,则假定机器单位。 公制和英制距离可以混合使用:增量 = 1 英寸、1 密耳、1 厘米、1 毫米、1 微米是有效条目。
GRIDS = 10 mm, 1 in, ...– 定义网格线的预设值。 该值的解释方式与 相同。INCREMENTS
OPEN_FILE = /full/path/to/file.ngc– AXIS 启动时要在预览图中显示的文件。 使用空白字符串 “”,启动时不会加载任何文件。 GMOCCAPY 不会使用此设置,因为它在其设置页面上提供了相应的条目。
EDITOR = gedit– 选择“文件”(File) >“编辑”(Edit) 时要使用的编辑器,以从 AXIS 菜单中编辑 G 代码。 必须配置此选项才能使此菜单项正常工作。 另一个有效条目是 。 此条目不适用于 GMOCCAPY,因为 GMOCCAPY 有一个集成的编辑器。gnome-terminal -e vim
TOOL_EDITOR = tooledit– 编辑工具表时使用的编辑器 (例如,通过选择“文件”>“编辑工具表…”在轴中)。 其他有效条目包括 、 和 。 此条目不适用于 GMOCCAPY,因为 GMOCCAPY 有一个集成的编辑器。geditgnome-terminal -e vimgvim
PYVCP = /filename.xml– PyVCP 面板描述文件。 有关更多信息,请参见 PyVCP 章节。
PYVCP_POSITION = BOTTOM– PyVCP 面板在 AXIS 用户界面中的位置。 如果省略此变量,面板将默认为右侧。 唯一有效的替代方法是 。有关更多信息,请参见 PyVCP 章节。BOTTOM
LATHE = 1– 任何非空值(包括“0”)都会导致轴使用“车床模式”,该模式具有俯视图,并且 DRO 上的半径和直径。
BACK_TOOL_LATHE = 1 任何非空值(包括“0”)都会导致轴使用“后刀车床模式”和倒置的 X 轴。
FOAM = 1– 任何非空值(包括“0”)都会导致轴更改泡沫切割机模式的显示。
GEOMETRY = XYZABCUVW– 控制运动的预览和背景图。 此项由一系列轴字母和控制字符组成,可以选择在前面加上“-”符号:
字母 X、Y、Z 指定沿命名坐标的平移。
字母 A、B、C 指定围绕相应轴 X、Y、Z 的旋转。
字母 U、V、W 指定沿相关轴 X、Y、Z 的平移。
指定的每个字母都必须出现在 中才能生效。[TRAJ]COORDINATES
任何字母前面的“–”字符都反转操作的方向。
平移和旋转操作按从右到左的顺序计算。 因此,using 指定 C 旋转后跟 B 旋转,后跟 Z、Y、X 平移。 连续翻译字母的顺序无关紧要。GEOMETRY=XYZBC
正确的几何组串取决于机器配置和用于控制它的运动学。 字母的顺序很重要。 例如,先绕 C 再绕 B 旋转与绕 B 再绕 C 旋转是不同的。
默认情况下,相对于计算机原点应用旋转。 示例:首先将控制点转换为 X、Y、Z,然后绕以机器原点为中心的 Z 轴执行 C 旋转。GEOMETRY=CXYZ
UVW 平移示例:使 UVW 在刀具的坐标系中移动,使 XYZ 在材料的坐标系中移动。GEOMETRY=XYZUVW
泡沫切割机()应注明“XY;UV“或将该值留空,即使此值目前在泡沫切割机模式下被忽略。 未来的版本可能会定义“;”的含义,但如果它确实是“XY;UV“的含义与当前泡沫默认值相同。FOAM = 1
实验性的:如果感叹号 () 字符包含在 GEOMETRY 字符串中,则 A、B、C 旋转的显示点将遵循 G5x、G92 代码设置的 X、Y、Z 偏移量。 示例:用于具有 的计算机。 此规定仅适用于实时绘图 — G 代码预览应以零 G5x、G92 偏移量完成。 这可以通过仅在任务运行时在程序中设置偏移量来实现,如 #<_task> == 1 所示。 如果启动时由于持久性而存在非零偏移量,则应将偏移量归零并重新加载预览。!GEOMETRY = !CXZ[TRAJ]COORDINATES=XZC
注意如果 INI 文件中不包含 no,则 GUI 程序提供默认值(通常为“XYZABCUVW”)。[DISPLAY]GEOMETRY[DISPLAY]DISPLAY
ARCDIVISION = 64– 设置弧线预览的质量。 通过将弧线划分为多条直线来预览弧线;半圆被划分为ARCDIVISION部分。 较大的值提供更准确的预览,但加载时间更长,并导致显示更缓慢。 较小的值提供不太准确的预览,但加载所需的时间更短,并且可能导致显示速度更快。 默认值 64 表示最大 3 英寸的圆将显示在 1 密耳 (.03%) 以内。
MDI_HISTORY_FILE =– 本地 MDI 历史记录文件的名称。 如果未指定,AXIS 会将 MDI 历史记录以.axis_mdi_history保存在用户的主目录中。 如果一台计算机上有多个配置,这将非常有用。
JOG_AXES =– 将点动键分配给轴字母的顺序。 向左和向右箭头分配给第一个轴字母,向上和向下分配给第二个轴字母,向上/向下页面分配给第三个轴字母,将左括号和右括号分配给第四个轴字母。 如果未指定,则缺省值由 、 和 值确定。[TRAJ]COORDINATES[DISPLAY]LATHE[DISPLAY]FOAM
JOG_INVERT =– 对于每个轴字母,点动方向是反转的。 车床的默认值为“X”,否则为空白。注意应用于按轴坐标字母点动的世界模式的设置,在成功归位后在世界模式下有效。 在归位前以关节模式操作时,键盘点动键按固定顺序分配:左/右:joint0,上/下:joint1,上/下翻页:joint2,左/右括号:joint3JOG_AXESJOG_INVERT
USER_COMMAND_FILE = mycommands.py– 由 AXIS GUI 提供且特定于配置的可选 Python 文件的名称,而不是特定于用户的文件的名称。~/.axisrc
注意        以下项目仅供 TKLinuxCNC 接口使用。[DISPLAY]
HELP_FILE = tklinucnc.txt– 帮助文件的路径。
2.3. [FILTER] 部分
AXIS 和 GMOCCAPY 能够通过过滤器程序发送加载的文件。 这个过滤器可以让你快速定位你想要的程序:比如确保文件只打开ngc格式的程序,或者像打开的文件是否为带深度信息的图像,并生成 G 代码来加工。 INI 文件的部分控制筛选器的工作方式。 首先,对于每种类型的文件,写一行。 然后,指定要为每种类型的文件执行的程序。 该程序被赋予输入文件的名称作为其第一个参数,并且必须将RS274NGC代码写入标准输出。 此输出将显示在文本区域中,在显示区域中预览,并在运行时由LinuxCNC执行。[FILTER]PROGRAM_EXTENSION
PROGRAM_EXTENSION = .extension Description
如果后处理器输出的文件全部大写,则可能需要添加以下行:
PROGRAM_EXTENSION = .NGC XYZ Post Processor
以下几行增加了对 LinuxCNC增加的图像到 G 代码转换器的支持。
PROGRAM_EXTENSION = .png,.gif,.jpg # Greyscale Depth Image png = image-to-gcode gif = image-to-gcode jpg = image-to-gcode
位于 linuxcnc 目录中的自定义 G 代码转换器的示例。
PROGRAM_EXTENSION = .gcode 3D Printer gcode = /home/mill/linuxcnc/convert.py
注意        与扩展关联的程序文件必须具有程序的完整路径,或者位于path路径上的目录中。
也可以指定解释器:
PROGRAM_EXTENSION = .py Python Script py = python
这样,任何 Python 脚本都可以打开,其输出被视为 G 代码。 nc_files/holecircle.py 上提供了一个这样的示例脚本。 此脚本创建用于沿圆周钻一系列孔的 G 代码。 https://wiki.linuxcnc.org/,LinuxCNC Wiki 站点上还有更多 G 代码生成器。
Python 过滤器应使用 print 函数将结果输出到 AXIS。
此示例程序筛选文件并添加 W 轴以匹配 Z 轴。 这取决于每个轴号之间有一个空格才能工作。
#!/usr/bin/env python3
import sys
def main(argv):
  openfile = open(argv[0], 'r')
  file_in = openfile.readlines()
  openfile.close()
  file_out = []
  for line in file_in:
    # print(line)
    if line.find('Z') != -1:
      words = line.rstrip('\n')
      words = words.split(' ')
      newword = ''
      for i in words:
        if i[0] == 'Z':
          newword = 'W'+ i[1:]
      if len(newword) > 0:
        words.append(newword)
        newline = ' '.join(words)
        file_out.append(newline)
    else:
      file_out.append(line)
  for item in file_out:
    print("%s" % item)
if __name__ == "__main__":
  main(sys.argv[1:])
FILTER_PROGRESS=%d
如果设置了环境变量 AXIS_PROGRESS_BAR,则写入上述表单的 stderr 的行会将 AXIS 进度条设置为给定的百分比。 任何长时间运行的筛选器都应使用此功能。
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|Archiver|手机版|小黑屋|数控爱好者 ( 苏ICP备2023052795号-2 )

GMT+8, 2024-12-27 06:31 , Processed in 0.228004 second(s), 27 queries .

Powered by Linuxcnc X3.5

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表