注释
|
你可以有一个将线程同步到某个外部时钟的 pll。 |
|
Mesa 固件中也有 DPLL。 |
|
应该有可能足够早地唤醒“接近”预期中断的线程,然后在 pin 上忙等待(当然有一些超时)。 |
|
Machinekit 有一种使用 Mesa PCI 中断来触发 RT 线程的方法(我认为 Charles S 致力于此)在这种情况下,他们使用 DPLL 速率生成器作为主机而不是从机。 |
|
这样做有什么好处吗? |
|
我猜你会以必须在驱动程序中包含中断代码为代价获得较低的抖动 |
|
在 2018/11/15 02:07,Rene Hopf 写道: 这样做有什么好处吗?
好吧,在真实的伺服系统中,如果由软件触发,则在对轴的位置进行采样时会出现时间抖动。例如,我的 Pico Systems 运动控制器具有一个功能,可以通过电路板中的硬件定时器对位置进行采样,然后 CNC 控制器可以被中断,并让整个伺服周期获取位置并计算新的位置发送速度。这会将采样抖动降低到亚纳秒级别。但是,我还没有深入研究软件来完成它,因为它看起来是一个非常重要的变化。一个问题是我在硬件中只提供了 4 种伺服速率(1、2、5 和 10 KHz)。乔恩
|
|
在这种情况下(“一个真正的伺服系统”)主机时钟的抖动应该没有那么重要,因为硬件可以对编码器进行采样并在它自己的时钟滴答时锁存新的速度。主机只需在这两个时钟滴答之间的任何时间使用硬件的时间戳进行计算。 即使您将中断传递到 linux 以唤醒伺服线程,我怀疑延迟或抖动也不会改善太多,因为首先导致抖动的任何原因都可能会干扰唤醒线程,无论导致它的事件如何. 至少在 RT 抢占的情况下。 |
|
在 11/16/2018 03:49 AM,Robert Schöftner 写道:在这种情况下(“一个真正的伺服系统”)主机时钟的抖动应该没有那么重要,因为硬件可以对编码器进行采样并在其上锁定新的速度自己的时钟滴答作响。主机只需在这两个时钟滴答之间的任何时间使用硬件的时间戳进行计算。
许多系统与 LinuxCNC 一起工作的方式是软件确定何时对位置进行采样。Mesa 有一个锁相环生成采样时钟的方案。如果没有某种方式让硬件与软件线程保持大致同步,您会使事情变得更糟。
即使您将中断传递到 linux 以唤醒伺服线程,我怀疑延迟或抖动也不会改善太多,因为首先导致抖动的任何原因都可能会干扰唤醒线程,无论导致它的事件如何. 至少在 RT 抢占的情况下。
是的,仅当软件仍然导致对位置进行采样时。那将毫无意义。如果位置采样是在硬件内触发的,至少 Pico Systems 设备可以做到这一点,那么采样抖动将在亚纳秒范围内。然后,伺服线程只需要在下一个中断之前处理它,只要满足,时间无关紧要。这个想法是硬件定时器对编码器位置进行采样,然后触发伺服线程处理精确采样的位置。但是,由于软件的原因,它现在不能那样工作了。乔恩
|
|


我想问一下是否可以从外部中断触发实时线程。Pico Systems 板都可以锁存编码器计数并通过并行端口生成定期中断。这会将位置采样抖动降低到板上石英振荡器的抖动。只要实时线程在下一个时钟滴答之前完成,RT 抖动将不复存在。
这将需要 loadrt emcmot 命令行接受中断号而不是线程周期。