EVOG2-Spiffs-Avery/motor.h

122 lines
2.4 KiB
C

#ifndef MOTOR_H
#define MOTOR_H
bool motorInit();
void motorTask();
void motorMove(uint16_t position);
void motorStart(uint8_t motor); // 1 - Master, 2 - Slave, 3 - Both
void motorStop();
uint8_t motorCycle(uint16_t cycles, uint16_t cycle_delay);
void motorSetSpeed(uint8_t motor, uint8_t duty);
uint8_t motorGetSetSpeed(uint8_t motor);
uint8_t motorGetActualSpeed(uint8_t motor);
void motorSetPosition(uint8_t motor, uint16_t position);
uint16_t motorGetPosition(uint8_t motor);
void motorSetCurrentLimit(uint8_t motor, uint16_t limit);
uint16_t motorGetCurrent(uint8_t motor);
uint8_t motorGetFlags(uint8_t motor, uint8_t flag);
void motorJog(uint8_t motor, uint8_t state, uint16_t position);
#define MASTER 0
#define SLAVE 1
enum
{
MOTOR_ERROR_NONE = 0,
MOTOR_ERROR_TIMEOUT, // 1
MOTOR_ERROR_MAX_DELTA, // 2
MOTOR_ERROR_M1_FATAL, // 3
MOTOR_ERROR_M2_FATAL, // 4
MOTOR_ERROR_M1_CURRENT, // 5
MOTOR_ERROR_M2_CURRENT, // 6
MOTOR_ERROR_M1_SAT, // 7
MOTOR_ERROR_M2_SAT, // 8
MOTOR_ERROR_M1_VOLTS, // 9
MOTOR_ERROR_M2_VOLTS, // 10
MOTOR_ERROR_M1_TEMP, // 11
MOTOR_ERROR_M2_TEMP, // 12
MOTOR_ERROR_M1_BKDRV, // 13
MOTOR_ERROR_M2_BKDRV, // 14
MOTOR_ERROR_M1_PARM, // 15
MOTOR_ERROR_M2_PARM, // 16
MOTOR_ERROR_START_TIMEOUT // 17
} motorError_t;
uint16_t motorError;
enum
{
MOTOR_IDLE = 0,
MOTOR_START = 1,
MOTOR_RAMP = 10,
MOTOR_RUN = 50,
MOTOR_END = 100,
MOTOR_SEAL = 110,
MOTOR_STOP = 200,
MOTOR_CYCLE_DELAY = 1000
} motorState_t;
extern int motorState;
enum
{
MOTOR_FLAG_VOLTAGE_ERROR = 0,
MOTOR_FLAG_TEMP_ERROR,
MOTOR_FLAG_MOTION,
MOTOR_FLAG_OVERLOAD,
MOTOR_FLAG_BACKDRIVE,
MOTOR_FLAG_PARAMETER,
MOTOR_FLAG_SATURATION,
MOTOR_FLAG_FATAL_ERROR
};
bool motorDir; // 0 = extend, 1 = retract
#define EXTEND 1
#define RETRACT 0
int8_t currentDir; // actual running direction
//
#define RUN_IDLE 0
#define RUN_RETRACT -1
#define RUN_EXTEND 1
uint16_t masterSpeed;
// extern uint16_t masterSpeed;
extern bool bSyncEnable;
bool jogMotor;
// the following values to be suppled by
// end application
// extern int32_t parm[100];
#define P_MOTOR_ADJ_INTERVAL 41
#define P_MOTOR_ADJ_I 42
#define P_MOTOR_ADJ_P 43
#define P_MAX_DELTA 44
#define P_MAX_CURRENT 45
#define P_MOTOR_SPEED 46
#define P_EXTEND_LIMIT 47
#define P_SLAVE_OFFSET 48
#define P_MAX 49
const int32_t defParms[P_MAX] =
{
0,
5,
100,
50,
200,
250,
50,
3000,
0};
#endif // MOTOR_H