工具与软件:
你(们)好、
在 OSAL_Sched_sleep()中、参数的单位是什么?
是否有可能获取该函数的实现代码?
此致、
Jinlong
This thread has been locked.
If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.
工具与软件:
你(们)好、
在 OSAL_Sched_sleep()中、参数的单位是什么?
是否有可能获取该函数的实现代码?
此致、
Jinlong
此外、 我想取代 OSAL_Sched_yield ();和 OSAL_Sched_Sleep ()。
您是否认为这是一个普遍的问题?
(;;)
{
EC_API_SLV_mainLoopCyclic ();
EC_API_SLV_getState (pApplicationInstance->ptEcSlvApi、&state、&alErrorCode);
如果(EC_API_SLV_eESM_init <状态)
{
OSAL_Sched_yield ();
}
设计
{
/*开瓶给一些空气*/
OSAL_Sched_Sleep (10);
}
}
您好、沈金龙
API OSAL_SCHED_SLEEP() 该参数以毫秒为单位、该 API 实现位于 OSAL 库中。
调用 API OSAL_Sched_yield () 将使线程处于就绪状态、下一个高/相同优先级线程可以运行并调用 API OSAL_SCHED_SLEEP() 将在指定的时间内阻止该线程。
如果您更换 OSAL_Sched_yield () 或者会与 OSAL_SCHED_SLEEP() 在您提到的代码部分中、 它会影响的执行周期时间 EC_API_SLV_mainLoopCyclic () 对于低于1ms 的周期时间、它具有很大的影响。
此致、
您好、沈金龙
"0"的参数、就会跳过该行 OSAL_SCHED_SLEEP() 与具有相同的行为 OSAL_Sched_yield ()。
API EC_API_SLV_mainLoopCyclic () 包含 EtherCAT 子器件固件的主周期。 它处理 EtherCAT 状态机、CoE 邮箱服务、过程数据等。 如果避免此 API 的 执行频率高于较小的 EtherCAT 周期、则会对与应用程序之间的过程数据交换产生很大影响。 由于 EtherCAT 帧由 PRU-ICSS 块处理、因此会延迟的执行 EC_API_SLV_mainLoopCyclic () 电缆长度 对丢失的 EtherCAT 帧不会产生任何影响。
此致、
是的、 Beckhoff 建议执行 mainLoopCyclic ()的方法与本文档第14页上的 chrome-extension://efaidnbmnnnibpcajpcglclefindmkaj/download.beckhoff.com/.../an_et9300_v1i8.pdf.相同
然而,仍然有可能以较慢的频率(如1kHz)执行 mainLoopCyclic ()。 为什么? 由于我们使用的是 dc 同步,根据 Bechhoff 代码中的文档,MainLoop ()不负责 ESC 和用户应用程序之间的交换。 相反、PDI_ISR()正在获取它。 由于 TI 也在使用 Beckhoff 代码、PDI_ISR()将是相同的。
是否在任何 EtherCAT 演示项目中启用了 PDI_ISR()?
此致!
Jinlong
您好、沈金龙
用户应用 API EC_SLV_APP_SS_applicationRun () 与 DC SYNC0事件同步。 您可以在此应用程序 API 中添加 GPIO 切换代码、并对照 TwinCAT 中配置的 DC 周期时间检查切换周期(请参阅 DC --> Advanced Settings... -->分布式时钟-->同步0周期时间)。 这样、您就可以确认 PDI_ISR()处于活动状态。
当 应用程序 API EC_SLV_APP_SS_applicationRun ()调用和测量 GPIO 引脚切换周期时、会切换 GPIO 引脚(更改引脚状态)。 请参阅下面的屏幕截图-直流周期时间配置为50us。
此致、
我支持的 sync0显示了与通过切换一个 GPIO 引脚所测得的模式相同的模式、即1个 EtherCAT 周期时间。
但是、J7.5上的 sync1显示了2倍于 EtherCAT 周期的频率(未显示数据)。
我认为 sync1信号频率不正确。 你怎么看?
请参考:我可以通过其他工具实时看到以下值。
SM 输出参数为0x1C32:01为0x02、0x1C32:02为250000、和
SM 输入参数为0x1C33:01为0x03、0x1C33:02为250000。