Q:关于CAN控制电机的问题我比较好奇,也有些疑惑……希望能够得到解答。
例程在CAN控制电机方面,似乎是使用了中断接收CAN回报的各种信息,如果我没有记错的话是1kHz发送的报文。然后在RTOS中开了一个线程来尽可能快的解析收到的信息并计算PID,向电机发出PID计算出的目标电流值,并且这个线程执行速度应该远快于1kHz。
所以如果说电机回报的速度是1kHz,那么理论上PID的执行频率如果大于1kHz,是否可以说PID计算出来的信息就是重复的呢?如果是重复的,那以1kHz的速度发送控制数据包,是否可以达到同样的控制效果?
另外在我自己实验的时候发现,单纯发送一帧数据哪怕电流给到最大值,电机也不会转动。只有当以一定频率(印象中是100Hz)发送的时候,电机才会转动。但是无论是以100Hz的频率发送数据包还是以1kHz的频率发送数据包,电机的转速都没有显著的变化。
其中电调对CAN控制的处理机制让我很不解,查阅大量资料未果,希望得到一些解答。例如,是否一帧控制帧在电调内有着一定时间的生命周期,每包在下一包到来之前都会维持当前电流环目标值一定的时间?如果能略加指点,不胜感激!
A:控制频率应该与数据反馈频率相一致, 对于不一致场景 ,通常是使用串级PID ,外内环频率不一致,但对应PID频率应该是需要一致的,对于控制不了电机问题, 应该检测CAN发送函数,或者使用逻辑分析仪采集发送的can包,以确认是否消息发送,或者使用一些官方demo程序,发送全固定值进行检测。
|