123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164 |
- #ifndef MOTOR_H
- #define MOTOR_H
- #include <p33FJ64MC204.h>
- #include <stdio.h>
- #include "math.h"
- #include "string.h"
- #define MOTOR1_FORWARD (!(Motor1.Reset_Direction&0X0001))
- #define MOTOR1_REVERSAL (Motor1.Reset_Direction&0X0001)
- #define MOTOR2_FORWARD (!(Motor2.Reset_Direction&0X0001))
- #define MOTOR2_REVERSAL (Motor2.Reset_Direction&0X0001)
- #define MOTOR3_FORWARD (!(Motor3.Reset_Direction&0X0001))
- #define MOTOR3_REVERSAL (Motor3.Reset_Direction&0X0001)
- #define MOTOR4_FORWARD (!(Motor4.Reset_Direction&0X0001))
- #define MOTOR4_REVERSAL (Motor4.Reset_Direction&0X0001)
- #define UNKNOWN 0x03
- #define SUCCESS 0x00
- #define MOTOR1_HOME !PORTAbits.RA10//1电机复位光电
- #define MOTOR2_HOME !PORTCbits.RC2//2电机复位光电
- #define MOTOR3_HOME !PORTCbits.RC4//3电机复位光电
- #define MOTOR4_HOME !PORTAbits.RA7//磁铁电机复位光电
- #define MOTOR1_PWM LATCbits.LATC9 //1电机
- #define MOTOR1_DIR LATBbits.LATB10 //1电机
- #define MOTOR2_PWM LATBbits.LATB4 //2电机
- #define MOTOR2_DIR LATAbits.LATA4 //2电机
- #define MOTOR3_PWM LATBbits.LATB5 //3电机
- #define MOTOR3_DIR LATCbits.LATC5 //3电机
- #define MOTOR4_PWM LATBbits.LATB13 //4电机
- #define MOTOR4_DIR LATBbits.LATB15 //4电机
- /*电机复位指令定义*/
- #define ACCLTH (unsigned int)2000 //加速度脉冲数限值
- //#define ACCLENGTH (unsigned int)1000 //实际加速度脉冲数
- #define REAGENT_MOTOR_ACC (unsigned int)500 //加速脉冲数
- #define REAGENT_MOTOR_FREQMAX (unsigned int)50000 //电机运行的最大速度
- #define REAGENT_MOTOR_FREQMIN (unsigned int)3000 //电机运行的起跳速度
- #define REAGENT_MOTOR_XFLEXIBLE (float)5 //x轴的压缩系数
- #define MOTOR_FREQLIMIT_H (unsigned int)300000 //电机运行的最大速度
- #define MOTOR_FREQLIMIT_L (unsigned int)10 //电机运行的起跳速度
- #define REAGENT_MOTOR_ACC2 (unsigned int)1000 //加速脉冲数
- #define REAGENT_MOTOR_FREQMAX2 (unsigned int)60000 //(unsigned int)2000 //电机运行的最大速度
- #define REAGENT_MOTOR_FREQMIN2 (unsigned int)1000//电机运行的起跳速度
- #define REAGENT_MOTOR_XFLEXIBLE2 (float)3 //x轴的压缩系数
- #define REAGENT_MOTOR_ACC3 (unsigned int)1000 //加速脉冲数
- #define REAGENT_MOTOR_FREQMAX3 (unsigned int)65000 //(unsigned int)2000 //电机运行的最大速度
- #define REAGENT_MOTOR_FREQMIN3 (unsigned int)4000 //电机运行的起跳速度
- #define REAGENT_MOTOR_XFLEXIBLE3 (float)2 //x轴的压缩系数
- #define REAGENT_MOTOR_ACC4 (unsigned int)800 //加速脉冲数
- #define REAGENT_MOTOR_FREQMAX4 (unsigned int)50000 //(unsigned int)2000 //电机运行的最大速度
- #define REAGENT_MOTOR_FREQMIN4 (unsigned int)4000 //电机运行的起跳速度
- #define REAGENT_MOTOR_XFLEXIBLE4 (float)2 //x轴的压缩系数
- /*电机运行参数定义*/
- extern unsigned char g_ucMotorXFinishFlag,g_ucMotorYFinishFlag,g_ucMotorZFinishFlag,g_ucMotorZ1FinishFlag,g_ucMotorZ2FinishFlag,g_ucMotor4FinishFlag; //电机运行完成标志位
- extern unsigned int g_uiAccIndex ;
- extern unsigned long int g_uliRunningPulse ;
- extern unsigned long int g_uliPulseCount ;
- extern unsigned int g_uiReagentMotorPeriod[REAGENT_MOTOR_ACC];
- extern unsigned int g_uiReagentMotorPeriod2[REAGENT_MOTOR_ACC2];
- extern unsigned int g_uiReagentMotorPeriod3[REAGENT_MOTOR_ACC3];
- extern unsigned int g_uiReagentMotorPeriod4[REAGENT_MOTOR_ACC4];
- extern unsigned long PulseNum;
- extern unsigned char Motor1_HOME_Flag,Motor2_HOME_Flag,Motor3_HOME_Flag,Motor4_HOME_Flag,Motor5_HOME_Flag;
- extern unsigned int Moving_Speed;
- extern unsigned int Reset_Speed;
- struct MotorParam
- {
- unsigned char ucXDirection;
- unsigned char uiXSpeed_switch;
- unsigned int uiXSpeed;
- unsigned int uiXprd;
- unsigned long int ulXiPosition;
- unsigned long int ulXiAccPulse;
- unsigned long int ulXiConstPulse;
-
- unsigned char ucZDirection;
- unsigned char uiZSpeed_switch;
- unsigned int uiZSpeed;
- unsigned int uiZprd;
- unsigned long int ulZiPosition;
- unsigned long int ulZiAccPulse;
- unsigned long int ulZiConstPulse;
-
- unsigned char ucZ1Direction;
- unsigned char uiZ1Speed_switch;
- unsigned int uiZ1Speed;
- unsigned int uiZ1prd;
- unsigned long int ulZ1iPosition;
- unsigned long int ulZ1iAccPulse;
- unsigned long int ulZ1iConstPulse;
-
- unsigned char uc4Direction;
- unsigned char ui4Speed_switch;
- unsigned int ui4Speed;
- unsigned int ui4prd;
- unsigned long int ul4iPosition;
- unsigned long int ul4iAccPulse;
- unsigned long int ul4iConstPulse;
- };
- extern struct MotorParam g_tReagentMotorParam;
- struct MotorParamEEPROM
- {
- unsigned int Moving_Speed;
- unsigned int Reset_Speed;
- unsigned int Reset_Direction;
- unsigned int Overshoot_Pulse;
- unsigned int Back_Pulse;
- unsigned long int Limit_Pulse;
- unsigned long int Limit_speed;
- };
- extern struct MotorParamEEPROM Motor1;
- extern struct MotorParamEEPROM Motor2;
- extern struct MotorParamEEPROM Motor3;
- extern struct MotorParamEEPROM Motor4;
- //extern struct MotorParamEEPROM Motor5;
- extern void CalculateSModelLine( unsigned int * period, unsigned int len, unsigned int fre_max, unsigned int fre_min, float flexible);
- extern void InitMotor1PWM(void);
- extern void InitMotor2PWM(void);
- extern void InitMotor3PWM(void);
- extern void InitMotor4PWM(void);
- //extern void InitMotor5PWM(void);
- extern void SetMotor1(unsigned long int Pulses,unsigned int spd,unsigned long int *AccPLS,unsigned long int *constVPLS);
- extern void SetMotor2(unsigned long int Pulses,unsigned int spd,unsigned long int *AccPLS,unsigned long int *constVPLS);
- extern void SetMotor3(unsigned long int Pulses,unsigned int spd,unsigned long int *AccPLS,unsigned long int *constVPLS);
- extern void SetMotor4(unsigned long int Pulses,unsigned int spd,unsigned long int *AccPLS,unsigned long int *constVPLS);
- //extern void SetMotor5(unsigned long int Pulses,unsigned int spd,unsigned long int *AccPLS,unsigned long int *constVPLS);
-
- extern void Motor1Home(unsigned int pulseoffset,unsigned int MOVEspd,unsigned int LEAVspd );
- extern void Motor2Home(unsigned int pulseoffset,unsigned int MOVEspd,unsigned int LEAVspd );
- extern void Motor3Home(unsigned int pulseoffset,unsigned int MOVEspd,unsigned int LEAVspd );
- extern void Motor4Home(unsigned int pulseoffset,unsigned int MOVEspd,unsigned int LEAVspd );
- //extern void Motor5Home(unsigned int pulseoffset,unsigned int MOVEspd,unsigned int LEAVspd );
- extern void Motor1Move(unsigned long int pulse,unsigned char dir,unsigned int spd);
- extern void Motor2Move(unsigned long int pulse,unsigned char dir,unsigned int spd);
- extern void Motor3Move(unsigned long int pulse,unsigned char dir,unsigned int spd);
- extern void Motor4Move(unsigned long int pulse,unsigned char dir,unsigned int spd);
- //extern void Motor5Move(unsigned long int pulse,unsigned char dir,unsigned int spd);
- extern void Motor1MoveTo(unsigned long int pulse,unsigned int spd);
- extern void Motor2MoveTo(unsigned long int pulse,unsigned int spd);
- extern void Motor3MoveTo(unsigned long int pulse,unsigned int spd);
- extern void Motor4MoveTo(unsigned long int pulse,unsigned int spd);
- //extern void Motor5MoveTo(unsigned long int pulse,unsigned int spd);
- extern void Motor2MoveTo_ok(unsigned long int pulse,unsigned int spd);
- extern void Move_to_by_volume(unsigned int volume,unsigned int spd);
- #endif /* MOTOR_H */
|