LinuxCNC中RS-274/NGC解析器的编译和使用

LinuxCNC中RS-274/NGC解析器的编译和使用

转载2015-10-09 21:11:20

标签:linuxcncrs274/ngc解析器

      LinuxCNC是一个著名的开源数控软件,目前最新发行版本是:LinuxCNC 2.6.8,截止2015/6/14.LinuxCNC来源于NISTEMC项目,先后推出了EMC1EMC2,由于与EMC公司的版权纠纷,遂改名为LinuxCNC。

      在LinuxCNC源码中包含一个独立的G代码(RS-274)解析器(Stand Alone Interpreter,下文我们简称SAI),我们可以自己编译得到SAI

      以下部分是对SAI编译过程和使用过程的详细介绍。​

      ===编译环境简介:

      安装在VMware Workstation 9.0.0上的Ubuntu 10.04虚拟机,你也可以选择在 其他的环境下进行编译。    

      ​你可以在这里下载得到RS274NGC_3独立解析器的源代码rs274ngc2.zip和说明文档RS274NGC_3.pdf:

       https://code.google.com/p/rs274ngc/downloads/list

转载:http://blog.sina.com.cn/s/blog_a2a6dd380102vrai.html

第一部分 编译SAI

    1.进入源代码所在目录,该目录包含以下11个文件:

        ​​a.源代码文件(7个) :

           canon.hh  rs274ngc_return.hh  rs274ngc.hh

           ​canon_pre.cc  driver.cc   rs274ngc_error.cc  rs274ngc_pre.cc 

        b.参数文件(2个):rs274ngc.tool_default    rs274ngc.var

        c.makefile文件(1个):Makefile

        d.版权信息文件(1个):COPYING

   2.源代码文件介绍     

源代码文件内容介绍 

   3.Ubuntu 10.04虚拟机上用GNU-G++编译解析器源代码,我们先看一下源代码目录下Makefile文件的内容。​

Makfile文件内容

​      在该Makefile中,我们可以发现,在编译时三种类型的编译器选项

      (1)轴存在选项(axis existence options) -DAA,-DBB,and -DCC;

      (2)-DALL_AXES;

      ​(3)-DAXIS_ERROR.

      其中,轴存在选项是针对拥有不同旋转轴组合的数控机床的编译而设定的。-DAA 意味着包含A-axis,-DBB 意味着包含B-axis;-DCC意味着包含C-axis.  -DALL_AXES选项,如果你想让解析器在标准加工函数调用时包含所有的三个旋转轴的话,需要使用此选项。-DAXIS_ERROR选项,如果RS274/NGC程序的一个输入用到了解析器不能编译的一个旋转轴时,你若想要解析器报告该错误的话,需要使用此选项.

     ​该Makefile对于每一个选项都给出了实例。这些选项组合总共能够得到29个不同的可执行程序(1个包含全部三个旋转轴的,4组每组包含少于3个旋转轴的组合).

   4.参数文件:rs274ngc.tool_default 和 rs274ngc.var

     注意:要执行SAI,必须要有刀具信息文件和参数信息文件。

     a.rs274ngc.tool_default:该文件包含了刀具信息;    

     b.rs274ngc.var:该文件包含了参数信息.

     这两个文件均为LinuxCNC自带的配置文件,用户可以按照上述文件中的格式,根据实际需要编写自己的参数和刀具信息文件。

    5.用户要得到一个3-axix的名为"rs274"的可执行的SAI,需要在当前目录下执行如下命令:make rs274;

      ​这样我们便得到了一个可执行的RS274/NGC的解析器:"rs274".

   第二部分 使用SAI

  1.Ubuntu 10.04 虚拟机的终端中输入:./rs274,回车,会出现如下界面:

执行命令./rs274

     当选择 1 的时候,菜单消失,解析开始。用户可能选择2到5之间的数字0次,1次或者很多次;只有这些选项的最终的设定才是有效的。

     如果用户选择 2 或 3 的时候,用户会被提示输入文件的名字,并且再次出现相同的菜单。

     ​如果用户选择 4 ,会再次弹出相同的菜单,由"turn block delete switch ON"转换为"turn block delete switch OFF",当 4 被选中的时候,两个开关进行来回切换。(注意:如果块删除开关(block delete)打开,那么以"/"开头的RS274/NGC的代码行,将不会被解析;如果块删除开关关闭,那么以 "/" 开头的G代码行正常解析)。

​    如果用户选择5,会出现如下所示的另外一个菜单,上边的菜单也会再次出现:

When Choice  is 5

      此时如果用户选择 1,前边的菜单会再次出现。如果用户选择 2,会弹出同样相同的菜单,同时"print stack on error"变换为"do not print stack on error";当 2 被选择的时候,两个开关会来回进行切换.  

   2.通过键盘输入运行SAI

       当用户键盘输入(MDI)以下命令的时候SAI被调用:          

       rs274

       用户会看到上边出现的菜单。输入 1 ,执行完毕后,会出现以下两步循环直到用户退出:

       ​(1)SAI输出提示符 READ =>

       (2)当用户输入一行RS274/NGC代码,按下Enter键,该行代码就会被解析,解析结果默认出现在命令行终端上。   

       用户进行键盘输入的时候,只有当SAI读到一行含有"quit"的单词后才会退出。"quit"的各种变种都是有效的,例如"Q uI t"     

      一个简单的通过键盘输入工作的SAI会话过程如下: 

SAI键盘输入会话过程

   3.通过输入RS274/NGC文件运行SAI    

      用户可以通过终端输出或者文件输出两种方式来处理SAI文件输入操作。两种不同的方式下输出结果都是对标准加工函数(canonical machining functions)的调用。    

      a.对于终端输出操作,运行如下命令:

         rs274 input_filename

         这里的input_filename 是一个RS274/NGC输入文件的名字,该命令执行后正常的SAI输出会出现在标准输出上(屏幕).   

     b.对于文件输出操作,运行如下命令:

       rs274 input_filename output_filename

        这里的output_filename是输出文件的名字。如果该文件不存在,就会新建一个;如果确实存在,原文件将会被覆盖。

        在这里,我们把要解析的RS274/NGC文件放在当前目录下,比如我们使用cds.ngc文件作为输入文件,对于终端输出方式,会得到以下类似的结果:       

        ​执行命令:rs274 cds.ngc

        309 N3500 STOP_SPINDLE_TURNING<>

        310 N3510 SET_ORIGIN_OFFSETS<0.0000,0.0000,0.0000>   

        311 N3510 STOP_SPINDLE_TURNING<>    

        312 N3510 PROGRAM_END<>  

        对于文件输出输出,假设我们指定输出到cds.prim中:   

        执行命令:rs274 cds.ngc cds.prim  

        解析得到的结果就保存在了cds.prim文件中了。

  

参考链接:

      http://www.linuxcnc.org

      http://wiki.linuxcnc.org/cgi-bin/wiki.pl?StandAloneInterpreter

      https://code.google.com/p/rs274ngc/

  • 0
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
交叉编译是指在一个操作系统上编译运行另一个不同操作系统的程序。要交叉编译 LinuxCNC,首先需要了解 LinuxCNC编译要求和目标平台的系统配置。 首先,准备交叉编译环境。需要下载并安装交叉编译工具链,该工具链包含目标平台的编译器、链接器等工具。工具链的选择通常取决于目标平台的架构和操作系统。 接下来,在本机上配置交叉编译环境。这包括设置环境变量,如指定交叉编译工具链的路径等。 然后,下载 LinuxCNC 的源代码。可以从官方网站上获取最新的稳定版本或开发版本。 在配置 LinuxCNC 编译选项时,需要指定编译目标平台的架构和操作系统类型。这可以通过设置环境变量或在编译命令添加参数来实现。 接下来,执行编译命令。这将使用交叉编译工具链编译 LinuxCNC 的源代码。编译过程可能需要一些时间,具体取决于计算机的性能和代码库的大小。 如果编译过程遇到错误或依赖问题,可能需要解决这些问题。这可能涉及更新依赖库的版本、安装缺少的依赖项等。在这个过程,需要参考 LinuxCNC 的文档或开发者社区的资源来获取帮助和支持。 最后,如果编译成功,即可得到交叉编译LinuxCNC 可执行文件。将其传输到目标平台并在该平台上运行即可。 总之,交叉编译 LinuxCNC 需要了解目标平台的系统配置和环境要求,准备交叉编译工具链,并进行适当的配置和编译步骤。这需要一定的技术和经验,并且可能会涉及一些挑战和问题解决过程。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值