如何实现EtherCAT与电机控制之间的同步处理

环贸财神 2025-10-24 4220人围观

EtherCAT与电机控制之间的同步处理

上篇提到利用EtherCAT产生的sync信号,同步所有从站节点系统,完成在同一时刻的电机指令更新。那么,今天跟大家介绍的是如何利用sync信号去同步电机控制系统。

该参考设计为单芯片双电机控制,因此首先需要向大家介绍的是如何将两个电机系统进行同步,电机如何与采样进行同步。

a0bc7bcc-9429-11f0-8c8f-92fbcf53809c.png

上图为两个电机的PWM计数器与采样触发示意图。

PWM-1&2 Counter分别对应电机1和电机2的PWM计数器。i.MX RT1180每个PWM可以输出多路Trigger,用于同步其他模块,这里我们利用PWM-1周期的中间时刻产生一个Trigger,通过XBAR连接至PWM-2计数器的外部同步信号,同步PWM-1和PWM-2计数器。

当图中的红色Trigger产生后,PWM-2计数器即被初始化,如此便可以完成两个电机之间的计数器同步。之所以两个PWM计数器错相位180度,1.能够在时间上平摊CPU负载;2.对应有效电压矢量也会错相,瞬时电压负载不会过大;3.该应用单个节点上的两个电机并不是相同的用途,其中一个电机用于齿轮对接,另一个用于控制滑台丝杆,因此两个PWM不必同步,只需要所有从站同一功能的PWM计数器同步。

电机控制中,电流的采样同样需要和PWM同步。该参考设计中,利用的是基于sigma-delta ADC的相电阻采样,为了保证能够采样得到对应的相电流基波,需要在电压矢量0或者电压矢量1的中心时刻进行采样。以电机1为例,PWM-1在电压矢量0中心时刻的前OSR*ORD/Fsinc时刻产生PWM Trigger,触发sinc filter进行转换,其中OSR为sinc filter抽样率,ORD为sinc filter阶数,Fsinc为sinc filter调制时钟。整个转换时间为:2*OSR*ORD/Fsinc,采样得到的电流即为0电压矢量中心时刻的电流。

可以看到两者的同步,都是利用了PWM的Trigger功能,在设定时刻产生,并通过XBAR路由到其他外设,这里是PWM和sinc filter外设,进行相关事件的触发,整个同步流程操作十分简单,利于用户开发。

最后,便是如何将EtherCAT的sync信号去同步整个电机控制系统,由上文可知,两个电机与对应的采样都已经完成了同步,那么我们只需要将EtherCAT产生的sync信号与电机1的PWM计数器同步即可。

如上图所示为PWM模块的同步逻辑框图,可以看到该计数器有两个同步初始化源,在图中已经标识。常规使用中,一般只需要第二个初始化信号对PWM计数器进行初始化,以确保PWM输出的周期。除了PWM自身的载波周期外,我们还需要利用EtherCAT的sync信号去对PWM计数器进行同步初始化,这里我们只需要通过XBAR将sync信号路由至FORCE_OUT信号,去作为PWM计数器的第二初始化源。如此即可完成EtherCAT系统和电机控制系统之间的同步。

a170747e-9429-11f0-8c8f-92fbcf53809c.png

如图给出了PWM-1的初始化示意图,首先是初始化信号2为local初始化信号,该信号确定了PWM的周期,当计数到固定值时便会初始化PWM计数器。初始化信号2即为EtherCAT的sync信号,该信号并不会每个PWM周期都产生,该参考设计EtherCAT同步频率为4kHz,PWM频率为16kHz,因此,每4个PWM周期产生一个sync信号,当sync信号到来时,PWM波同样会被初始化。

图中为了突出同步的效果,刻意将sync信号与local sync信号区别开来,实际应用中,在经过第一次sync初始化后,后续的两个同步信号基本处于完全同步的状态,不会导致PWM波的突变。

在完成了EtherCAT与电机控制同步的基础上,下期将会给大家介绍如何设计一个高动态性能的电机控制系统。下周见!

Powered By Z-BlogPHP