开源改变世界

Carousel 停止与 Buildbot 2.9 更新同时工作 #2025

推推 grbl 2年前 (2023-01-31) 236次浏览
关闭
BSHoekstra 打开了这个问题 2022 年 9 月 12 日 · 16条评论
关闭

Carousel 停止与 Buildbot 2.9 更新同时工作#2025

BSHoekstra 打开了这个问题 2022 年 9 月 12 日 · 16条评论

注释

Carousel 停止与 Buildbot 2.9 更新同时工作 #2025

如果您能就最近的这个问题提供任何帮助,我们将不胜感激。谢谢你,巴里 :)

以下是我重现该问题所遵循的步骤:

  1. 昨晚,我更新/升级到最新版本的 Buildbot 2.9.0-pre0-7744-g3a1e19c4e,由于某种原因,我车床上的自动刀塔 (ATT) 停止正常工作。ATT 在过去一年中运行良好,包括 3 到 4 周前我最后一次在项目中使用它时。注意我使用 HAL 组件 Carousel 来控制 ATT。使用当前版本的 Buildbot,Carousel 在第一次发出工具更改命令时正常工作,但随后 Carousel 将不会使用其他工具更改命令为 ATT 编制索引。没有错误消息。但是,Axis 以图形方式显示执行了刀具更换。

  2. 为了解决这个问题,我卸载了 Buildbot 2.9 u-space 并加载了 Linuxcnc u-space 版本 2.8.3。ATT 工作完美,没有任何问题。然后我卸载了 Linuxcnc u-space 版本 2.8.3 并重新加载了 Buildbot 版本 2.9.0-pre0-7744-g3a1e19c4e。同样,ATT 只会正确索引 1 次,然后不接受额外的换刀命令。

  3. 请注意,当我退出 Linuxcnc 并重新启动它时,ATT 将再次正确索引 1 次,然后不接受额外的换刀命令。

  4. 要手动启动换刀,我使用 Axis 中的 MDI 选项卡并为工具 1 键入 G40 T1 M6 G43 或为工具 5 键入 G40 T5 M6 G43 等。

有关我的硬件和软件的信息:

我正在使用这个 Linux 发行版和版本:Buster 10
我正在使用这个内核版本:4.19.0-20-rt-amd64
我正在运行……
[X] 来自 linuxcnc.org 的二进制版本(包括 buildbot.linuxcnc.org )
我正在使用这个 LinuxCNC 版本:2.9.0-pre0-7744-g3a1e19c4e
我正在使用这个用户界面 (GUI):AXIS
我正在使用这个界面硬件供应商和芯片组:并行端口,Dell 3020

#****************************************************** *********

#****************************************************** *********
Hal编码如下,一年没变。

核心 HAL 配置文件

loadrt [KINS]运动学

运动控制器,从 ini 文件中获取线程周期

loadrt [EMCMOT]EMCMOT base_period_nsec=[EMCMOT]BASE_PERIOD servo_period_nsec=[EMCMOT]SERVO_PERIOD num_joints=[KINS]JOINTS
addf 运动命令处理程序伺服线程
addf 运动控制器伺服线程

loadrt hal_parport cfg=”0xe010 out”
addf parport.0.read base-thread
addf parport.0.write base-thread
addf parport.0.reset base-thread
setp parport.0.reset-time 3000

#Use Stepgen Position p for Axes XZA and Stepgen Velocity-mode v for CAROUSEL.
loadrt stepgen step_type=0,0,0,0 ctrl_type=p,p,p,v
addf stepgen.make-pulses 基础线程
addf stepgen.capture-position 伺服线程
addf stepgen.update-freq 伺服线程

#Break-out 卡启用控制
loadrt charge_pump
addf charge-pump base-thread
net charge-pump <= charge-pump.out

主轴转速显示

loadrt abs count=1
addf abs.0 伺服线程

#Spindle Encoder
loadrt encoder num_chan=1
addf encoder.update-counters base-thread
addf encoder.capture-position servo-thread
setp encoder.0.position-scale 60.000000 设置编码器.0.counter
-mode 1

#Spindle Speed Control
loadrt pwmgen output_type=1
addf pwmgen.make-pulses base-thread
addf pwmgen.update 伺服线程

以 RPM 为单位设置主轴的最高速度

setp pwmgen.0.scale 1725
setp pwmgen.0.offset 0.0
setp pwmgen.0.pwm-freq 100.0
setp pwmgen.0.dither-pwm true
net spindle-cmd-rpm => pwmgen.0.value
net spindle-on < = spindle.0.on => pwmgen.0.enable
net spindle-pwm <= pwmgen.0.pwm

净主轴位置编码器.0.position => spindle.0.revs
net spindle-velocity-feedback-rps encoder.0.velocity => spindle.0.speed-in
net spindle-index-enable encoder.0.index-启用 <=> spindle.0.index-启用

net spindle-phase-a encoder.0.phase-A
net spindle-index encoder.0.phase-Z
net spindle-cmd-rpm <= spindle.0.speed-out
净主轴-cmd-rpm-abs <= 主轴.0.speed-out-abs
net spindle-cmd-rps <= spindle.0.speed-out-rps
net spindle-cmd-rps-abs <= spindle.0.speed-out-rps-abs
净主轴-at -速度=> spindle.0.at-speed
net spindle-ccw <= spindle.0.reverse

#****************************************************** *********

******** ATT Control w/ Carousel************************

#****************************************************** ********
loadrt carousel pockets=5,1 encoding=index num_sense=2 dir=1

addf carousel.0 伺服线程

setp stepgen.3.position-scale 55.5555555556 setp
stepgen.3.maxaccel 1500
setp stepgen.3.steplen 1
setp stepgen.3.stepspace 1
setp stepgen.3.dirhold 28000
setp stepgen.3.dirsetup 28000

setp carousel.0.fwd-dc -140
setp carousel.0.rev-dc 20
setp carousel.0.rev-pulse .57

net xenable => stepgen.3.enable
net carousel-step <= stepgen.3.step
net carousel-dir <= stepgen.3.dir
net carousel-step => parport.0.pin-07-out
网络旋转木马目录=> parport.0.pin-08-out

net tool-num iocontrol.0.tool-prep-pocket => carousel.0.pocket-number
net start-change iocontrol.0.tool-change => carousel.0.enable
净更改完成 carousel.0.ready = > iocontrol.0.tool-changed
net 电机速度 carousel.0.motor-vel => stepgen.3.velocity-cmd

净指数 carousel.0.sense-0
净脉冲 carousel.0.sense-1
净指数 <= parport.0.pin-11-in-not
净脉冲 <= parport.0.pin-12-in-not

#****************************************************** *******************
net xenable => parport.0.pin-02-out
net zstep => parport.0.pin-03-out
setp parport.0。 pin-03-out-reset 0
net zdir => parport.0.pin-04-out
net xstep => parport.0.pin-05-out
setp parport.0.pin-05-out-reset 0
net xdir = > parport.0.pin-06-out
net spindle-on => parport.0.pin-09-out
net max-x <= parport.0.pin-10-in-not
net max-x => 关节。 0.pos-lim-sw-in

net spindle-phase-a <= parport.0.pin-13-in
net spindle-pwm => parport.0.pin-14-out
net spindle-index <= parport.0.pin-15-in
净主轴- ccw => parport.0.pin-16-out
净电荷泵 => parport.0.pin-17-out

#X轴
setp stepgen.0.position-scale [JOINT_0]SCALE
setp stepgen.0.steplen 1
setp stepgen.0.stepspace 0
setp stepgen.0.dirhold 28000
setp stepgen.0.dirsetup 28000
setp stepgen.0.maxaccel [JOINT_0]STEPGEN_MAXACCEL
net xpos-cmd joint.0.motor-pos-cmd => stepgen.0.position-cmd
net xpos-fb stepgen.0.position-fb => joint.0.motor-pos-fb
net xstep <= stepgen.0.step
net xdir <= stepgen.0.dir
net xenable joint.0.amp-enable-out => stepgen.0.enable

#Z轴
setp stepgen.1.position-scale [JOINT_1]SCALE
setp stepgen.1.steplen 1
setp stepgen.1.stepspace 0
setp stepgen.1.dirhold 28000
setp stepgen.1.dirsetup 28000
setp stepgen.1.maxaccel [JOINT_1]STEPGEN_MAXACCEL
net zpos-cmd joint.1.motor-pos-cmd => stepgen.1.position-cmd
net zpos-fb stepgen.1.position-fb => joint.1.motor-pos-fb
net zstep <= stepgen.1.step
net zdir <= stepgen.1.dir
net zenable joint.1.amp-enable-out => stepgen.1.enable

停止环回

net estop-out 电荷泵.enable iocontrol.0.user-enable-out
net estop-out <= iocontrol.0.user-enable-out
net estop-out => iocontrol.0.emc-enable-in

#****************************************************** ***************************

注释掉使用轮播

净工具更改 iocontrol.0.tool-change => hal_manualtoolchange.change

净工具更改 iocontrol.0.tool-changed <= hal_manualtoolchange.changed

#****************************************************** ************************
loadusr -W hal_manualtoolchange
net tool-number iocontrol.0.tool-prep-number => hal_manualtoolchange.number
网络工具准备-环回 iocontrol.0.tool-prepare => iocontrol.0.tool-prepared

Carousel 停止与 Buildbot 2.9 更新同时工作 #2025 andypugh 自己分配了这个 2022 年 9 月 12 日
Carousel 停止与 Buildbot 2.9 更新同时工作 #2025
合作者
彼得赖因霍尔特森 评论了 2022 年 9 月 12 日 通过电子邮件
Carousel 停止与 Buildbot 2.9 更新同时工作 #2025
合作者

我明天会试着看看这个。
同时,你可以从2.8获取carousel的版本,使用halcompile编译/安装。
忽略最近的推动,那是无关的杰出工作。

Carousel 停止与 Buildbot 2.9 更新同时工作 #2025

谢谢你们调查这个。这里有 3 个额外的细节,为了清晰起见,我今天想到的可能会有帮助,

  1. 过去一年我一直在运行 Buildbot 2.9,我大约每 2 – 3 周更新/升级一次。我昨天只临时加载了 Linuxcnc u-space 版本 2.8.3 来排除故障,因为这是我知道如何轻松完成的,而且 ATT 与 2.8.3 完美配合,所以我认为这可能排除了硬件问题。

  2. 今晚,我意识到我在我店里的另一台 CNC 计算机上加载了早期版本的 Buildbot 2.9.0-pre0-7123-g432oec2ea,我确信 ATT/Carousel 在那个版本中工作正常,所以我把它连接到我的数控车床。同样,ATT 只会正确索引 1 次,然后不接受额外的换刀命令。所以现在,我认为这个问题可能与 Buildbot 版本升级无关……虽然不确定。

  3. 所有其他命令和轴移动等都可以完美运行。

请注意,我不确定如何从 2.8 获取 carousel 的版本并使用 halcompile 进行编译/安装,但我会做一些阅读并找出答案。我会让你知道那是怎么回事。

谢谢,

巴里 :)

Carousel 停止与 Buildbot 2.9 更新同时工作 #2025

你好安迪。根据您的建议,我将 2.9 中的 carousel.so 文件重命名为 carousel29.so,然后将 carousel.so 文件从 2.8 复制到 2.9。你猜怎么了!!ATT 在 2.9.0-pre0-7744-g3a1e19c4e 中再次完美运行。所以这个错误似乎在最新的 2.9 carousel.so 文件中。?我希望这有助于解决问题。

谢谢,

巴里 :)

Carousel 停止与 Buildbot 2.9 更新同时工作 #2025
合作者

我试图回到这个问题上,但我真的不知道发生了什么,因为除非实际打开,否则所有新代码都不应处于活动状态。
您是否可以尝试编译/安装不同的版本并查看发生了什么?
不过,首先,您能否回到 buildbot 版本,并在第一次和第二次工具更换期间检查轮播图钉。特别是口袋号码、当前位置和状态。也许也准备好了和机动车

Carousel 停止与 Buildbot 2.9 更新同时工作 #2025

是的。没问题。我会帮助解决问题。

我不是软件专家,只是一名工程师,但我知道这是一个奇怪的案例,因为我认为通过任何潜在的软件升级,使 Carousel 工作的基本基本参数/结构将保持不变,但是这就是问题所在。我还注意到,根据彼得在此链中的注释,他使用的encoding=binary似乎对他来说没问题,而我使用的encoding=index似乎有问题……不确定这指向什么一个问题,但它可能有助于缩小范围。

所以,

  1. halscoping 没有问题。我会在本周晚些时候的晚上找时间为您获取这些信息。

  2. 但是,能否请您指导我一些关于如何编译和安装不同版本的书面说明。我知道我可以弄清楚,因为我以前在其他软件平台上做过,但我记得不是 Linux。此外,您要测试的是不同版本的 carousel.so 文件还是不同版本的 LinuxCNC。另外,我在哪里可以找到您想要测试的不同版本。

谢谢,

巴里 :)

Carousel 停止与 Buildbot 2.9 更新同时工作 #2025
合作者

因为“carousel”是用.comp预处理语言编写的HAL组件,它只是:

sudo halcompile –install carousel.comp

Carousel 停止与 Buildbot 2.9 更新同时工作 #2025
作者
BS胡克斯特拉 评论了 2022 年 10 月 12 日  

你好安迪。这是您请求的 Hal 数据。请注意,我注意到非工作 Carousl.so 文件和工作 Carousl.so 文件之间的 Hal 数据存在差异。这在附件中突出显示。请注意我的光标位置显示在工具更改按钮旁边,该按钮突出显示我的步骤顺序。我希望这有助于查明问题。如果您需要任何其他数据,请告诉我。

谢谢,

巴里 :)
旋转木马 Hal 数据 Rev0.pdf

Carousel 停止与 Buildbot 2.9 更新同时工作 #2025
合作者
安迪普 评论了 2022 年 10 月 12 日  

我真的需要 carousel.0.state 参数,这样可以更容易地看到 halcope 跟踪发生了什么,如下所示:

Carousel 停止与 Buildbot 2.9 更新同时工作 #2025

这是一个 Halscope 配置文件,它(希望)可以为您省去设置它的麻烦。尽管习惯(奇怪的)控件、触发等可能仍然需要一些麻烦。
如果您可以将第一次和第二次工具更改的数据保存到 .log 文件(来自 Halscope)

旋转木马.halscope.txt

(您可能需要去掉文件名末尾的 .txt 才能让 Halscope 打开它)

Carousel 停止与 Buildbot 2.9 更新同时工作 #2025

没问题。我会在接下来的 2 天内为您提供信息。

谢谢,

巴里 :)

Carousel 停止与 Buildbot 2.9 更新同时工作 #2025

Workinghalscope.csv
非 Workinghalscope.csv

根据您的要求,这里是使用您的 halscope 配置文件的 halscope 日志文件。一个文件显示来自非工作 Carousel.so 文件的跟踪,另一个显示来自工作 Carousel.so 文件的跟踪。顺便说一句,感谢您为我预先配置了 halscope 设置。如果需要任何其他信息,请告诉我。

谢谢,

巴里 :)

Carousel 停止与 Buildbot 2.9 更新同时工作 #2025

在查看我之前的注释中附加的 2 个日志文件后,我认为这不是您要查找的内容。它们似乎被截断了。我正在努力为您提供另一个带有 halscope 屏幕截图的文件

Carousel 停止与 Buildbot 2.9 更新同时工作 #2025
作者
BS胡克斯特拉 评论了 2022 年 10 月 13 日  

好的,我认为这可能是您所期望的数据。抱歉,我今晚必须学习如何使用 HalScope。
Workinghalscope 文件 2.csv
非 Workinghalscope 文件 2.csv

在职的

Carousel 停止与 Buildbot 2.9 更新同时工作 #2025

不工作:注意:我忘记为这个屏幕截图降低 Hal Scope 上电机速度的增益设置,但所有其他增益设置应该相同。

Carousel 停止与 Buildbot 2.9 更新同时工作 #2025

对于每个文件,初始工具是#1。然后我选择了 Tool #2,在 ATT 前进到 Tool #2之后,我又选择了 Tool #3。在工作的 Carousel.so 文件中,工具将 rom #1高级到#2#3。在非工作 Carousel.so 文件工具从#1前进到#2,但不会再次前进到工具#3

如果需要任何其他数据,请告诉我。

谢谢,

巴里 :)

Carousel 停止与 Buildbot 2.9 更新同时工作 #2025
合作者

.csv 文件有我需要的东西。很明显,该组件卡在状态 7 上,如果没有配置 align-dc,它永远不会出现这种情况。
错误似乎是缺少“中断”;在 switch 语句中,以便执行失败。
(小学生错误!)

请尝试附件。(从文件名中删除 .txt,我必须添加它才能作为附件使用)

轮播.comp.txt

Carousel 停止与 Buildbot 2.9 更新同时工作 #2025
作者
BS胡克斯特拉 评论了 2022 年 10 月 14 日  

成功!!!固定的!!好极了!非常感谢你!!:) 您可以将这个新的 carousel.so 文件上传到 2.9 buildbot master 分支吗?

仅供参考….我注意到的一件事是 Halcompile 不会随 Buildbot 2.9 自动下载,我不得不返回到 2.8 来编译 carousel.comp 文件,然后将 .so 文件传输到 2.9。我注意到您在 2021 年 1 月 11 日就此问题发表了评论。我想这仍在研究中。

最后一件快事……知道是否有关于 2021 年 5 月 3 日发布的 G71.X 路径问题(1146#)的更新(#1146(评论))?我对这个问题考虑了更多,我认为如果 G71.2 不能“识别”给定零件形状和切割方向的任何凸起边缘/口袋,那么 linuxcnc 就会发疯。鉴于我对编程的了解有限,我认为可以添加几行代码作为第一步来检查是否有 0 个凸起的边缘/口袋,如果没有找到,则让 G71.2 生成一条注释消息,说明已找到零个口袋用于切割。可能的概念性思维如下图所示。

Carousel 停止与 Buildbot 2.9 更新同时工作 #2025

再次感谢安迪。与您共事总是我的荣幸。我很羡慕你的技能和才华。

祝你今天过得愉快,

巴里 :)

Carousel 停止与 Buildbot 2.9 更新同时工作 #2025
合作者

我只是在等待确认更改解决了问题。感谢您进行测试,这让我们更容易找出问题所在。

至于halcompile,我觉得安装linuxcnc-dev包就应该安装吧?