四个电机,相同的动作函数集,想重写,如何改进?
原先的架构//motor1.h
void motor1_init();
void motor1_reset();
void motor1_move(s32 mPulse, u32 mSpeed);
void motor1_moveabs(s32 mPulse, u32 mSpeed);
void motor1_moveguide(u32 mSpeed);
void motor1_interrupt();
//motor1.c
void motor1_init()
{
}
void motor1_reset()
{
}
void motor1_move(s32 mPulse, u32 mSpeed)
{
}
void motor1_moveabs(s32 mPulse, u32 mSpeed)
{
}
void motor1_moveguide(u32 mSpeed)
{
}
void motor1_interrupt()
{
}
//motor2.h
void motor2_init();
void motor2_reset();
void motor2_move(s32 mPulse, u32 mSpeed);
void motor2_moveabs(s32 mPulse, u32 mSpeed);
void motor2_moveguide(u32 mSpeed);
void motor2_interrupt();
//motor2.c
void motor2_init()
{
}
void motor2_reset()
{
}
void motor2_move(s32 mPulse, u32 mSpeed)
{
}
void motor2_moveabs(s32 mPulse, u32 mSpeed)
{
}
void motor2_moveguide(u32 mSpeed)
{
}
void motor2_interrupt()
{
}
...
想仿照MCX314函数库实现这个样子的架构
//motor.h
void motor_sel(...); /*选择运动轴*/
void motor_dir(...);
void motor_speed(...);
void motor_acc(...);
void motor_dec(...);
void motor_home(...);
void motor_move(...); /*相对运动*/
void motor_moveabs(...); /*绝对运动*/
void motor_move2(...) /*两轴插补*/
void motor_move3(...) /*三轴插补*/
...
//motor.c
void motor_sel(...) /*选择运动轴*/
{
}
void motor_reset(...)
{
}
void motor_move(...) /*相对运动*/
{
}
void motor_moveabs(...) /*绝对运动*/
{
}
void motor_move2(...) /*两轴插补*/
{
}
void motor_move3(...) /*三轴插补*/
{
}
...
调用像这样子0:X轴 1:Y轴2:Z轴 3:U轴
void main
{
//初始化
motor_sel(0, 1, 2, 3);
motor_dir(0, 0, 0, 0); /*0:正方向,1:反方向*/
motor_speed(2000, 2000, 2000, 2000); /*2000Hz*/
motor_acc(10000, 10000, 10000, 10000); /*加速度*/
motor_dec(10000, 10000, 10000, 10000); /*减速度*/
//X轴复位
motor_sel(0);
motor_home();
//Z轴复位
motor_sel(2);
motor_home();
//U轴运转2000脉冲
motor_sel(3);
motor_move(2000);
//XY两轴插补(0, 0)=>(40, 60)
motor_sel(0, 1);
motor_move(40, 60);
//XYU三轴插补(0, 0,0)=>(40, 60, 80)
motor_sel(0, 1, 3);
motor_move(40, 60, 80);
}
但具体用C语言怎么实现想的不是很明白?有想法的说说
还有一种想法是将电机用C语言实现类的概念
//cmotor.h
//cmotor.c
调用时先实例化
cmotormotor1, motor2, motor3, motor4;
但是实现插补之类的比较不能统一cmotor类到里面去
看看谁能帮忙统一一下
页:
[1]