1. 不同的电机,不同的负载,不同的速度,需要配置不同的参数 -----> 2. 电机存在一个参数列表 1. 归零时,清零编码器 2. ------------------------------------------------------------------------------- 电机驱动 1. 初始化电机参数,对电机参数进行优化。 2. 电机单圈精度配置,需要在电机驱动程序中完成。 3. 参数配置是一个指令集合(list)。 4. 驱动器的参数可以根据项目写死。 驱动器配置完成后的目标: 1. 一圈的脉冲数和应用对齐。例如单位是mm,或者单位是0.01度 2. 编码器对于上层来说是透明的,如果驱动器使用了编码器,则上报编码器的真实位置。 3. 底层自己检查丢步事件。当丢步事件发生时,上报丢步事件。(丢步事件的检查 允许误差,由底层调整) 4. 上层不需要对电机进行任何配置,直接使用。(特殊情况下,如果不方便更新代码,可允许临时覆盖部分参数) 5. 归零只需要上层下发一条指令。 6. 归零存在归零超时这个参数,由底层自己配置 单片机层需要设置好: 1. 默认速度(快速,慢速,中速) 2. 上层可修改速度等级(例如快速,慢速,中速) 3. 每种速度等级可能需要微调部分参数。 加速度,减速度........ 每种速度使用一样的参数 4. 上位机需要支持脚本加载。 cmdType, regadd regval speedlevel local_reg 0/default subdevice_reg ------------------------------------------------------------------------ 去现场版本: 1. 上位机&驱动 2. 不去现场版本: 1. 读取编码器真实位置() 1. 读取编码器处理过后的位置() 2. 清零,清零编码器 3. 经过设置的编码器数值(配置好转换因子) 1. 参数配置同以前保持一致 2. 增加一个set_cover_reg的指令 3. readpos读取的位置是编码器的位置(如果有编码器) 4. 底层检查位置是否有偏差,如果出现偏差则报错。 5. 上层可以读取偏差数值。 6. 上层可以设置编码器偏差数值。 7. 添加终点光电检测,这个检查需要上层自己检查。(上层应该抽象出两个指令,开门,关门,附带检查的自定义指令) 8. 归零时,清零编码器,清零驱动器位置。 9. 上层可以读到编码器的数值 ------------------------------------------------------------------------ setspeedlevel 覆盖部分配置 设置部分参数() move_to_zero 归零