260 lines
4.4 KiB
C
260 lines
4.4 KiB
C
|
||
|
||
#ifndef __DRIVERPARAS_H__
|
||
#define __DRIVERPARAS_H__
|
||
|
||
#include "config.h"
|
||
|
||
#define DRIVER_PARA_ST 0
|
||
#define DRIVER_PARA_NOR 1
|
||
|
||
#ifndef DRIVER_PARA
|
||
#define DRIVER_PARA DRIVER_PARA_NOR
|
||
#endif
|
||
|
||
|
||
#if (DRIVERS_NUM > 0)
|
||
|
||
#if (DRIVER_PARA == DRIVER_PARA_NOR)
|
||
#include "norparas.h"
|
||
#define DRV_PARA_NUMS PARA_NUM_PER_BLK
|
||
#define DRV_PARA_STR_LEN PARA_STR_LEN
|
||
#else
|
||
|
||
#define DRV_PARA_NUMS 64
|
||
#define DRV_PARA_STR_LEN 30
|
||
|
||
#endif
|
||
|
||
|
||
#define CTRLMODE_OPEN 0
|
||
#define CTRLMODE_CLOSE 1
|
||
|
||
typedef struct
|
||
{
|
||
// 0
|
||
int closeCtrlMode; // 开闭环模式
|
||
int cmdSource; // 命令来源, 0 内部命令; 1, 外部脉冲;
|
||
int stepPerCircle; // 每圈脉冲数
|
||
|
||
// 3
|
||
int openRunCircle; // 开环运行电流
|
||
int openLockCircle; // 开环锁定电流
|
||
int openMaxOffset; // 开环最大偏移限制
|
||
|
||
// 6
|
||
s32 maxSpeed; // 最高转速限制, 单位: 可控位置个数/控制周期
|
||
|
||
// 7
|
||
int closeAdjust; // 闭环磁场修正
|
||
int closeCircle; // 闭环电流比例
|
||
|
||
// 9
|
||
int maxAdvance; // 最大控制偏差
|
||
|
||
// 10
|
||
// 闭环位置控制pid
|
||
int kp; // 位置环比例增益 范围(0--1000), 默认 500
|
||
int ki; // 位置环积分增益 范围(0--1000), 默认 20
|
||
int kd; // 位置环微分增益 范围(0--1000), 默认 800
|
||
|
||
// 13
|
||
int ecdAdjust; // 编码器较准
|
||
|
||
// 14
|
||
u32 startPPS; // 启动速度
|
||
u32 runPPS; // 运行速度
|
||
u32 addPPSS; // 加速度
|
||
u32 brkPPSS; // 刹车速度
|
||
|
||
// 18
|
||
u32 numerator; // 电子齿轮分子
|
||
u32 denominator; // 电子齿轮分母
|
||
|
||
// 20
|
||
u32 basecircle; // 闭环最小电流
|
||
|
||
// 21
|
||
u32 rev[DRV_PARA_NUMS-21];
|
||
}DriverPara;
|
||
|
||
#ifdef _IN_DRIVERPARAS_C
|
||
|
||
// 默认参数表
|
||
static const u32 g_defDriverParaList[DRV_PARA_NUMS][3] =
|
||
{
|
||
// 最小 最大 默认
|
||
// 0
|
||
{0, 1, 0 } , // int closeCtrlMode; // 开闭环模式
|
||
{0, 1, 0 } , // int cmdSource; // 命令来源, 0 内部命令; 1, 外部脉冲;
|
||
{100, 204800, 4000} , // int stepPerCircle; // 每圈脉冲数
|
||
|
||
// 3
|
||
{1, 320, 200 } , // int openRunCircle; // 开环运行电流
|
||
{0, 320, 0 } , // int openLockCircle; // 开环锁定电流
|
||
{1, 1000, 200 } , // int openMaxOffset; // 开环最大偏移限制
|
||
|
||
// 6
|
||
{1, 10000, 4000} , // s32 maxSpeed; // 最高转速限制, 单位: 可控位置个数/控制周期
|
||
|
||
// 7
|
||
{0, 0, 0 } , // int closeAdjust; // 闭环磁场修正
|
||
{1, 1000, 100 } , // int closeCircle; // 闭环电流比例
|
||
{1, 1200, 1200} , // int maxAdvance; // 最大控制偏差
|
||
|
||
// 10
|
||
// 闭环控制pid
|
||
{0, 1000, 400 } , // int kp; // 位置环比例增益 范围(0--1000), 默认 400
|
||
{0, 1000, 20 } , // int ki; // 位置环积分增益 范围(0--1000), 默认 20
|
||
{0, 1000, 800 } , // int kd; // 位置环微分增益 范围(0--1000), 默认 800
|
||
|
||
// 13
|
||
{0, 0, 0 } , // int ecdAdjust; // 编码器较准
|
||
|
||
// 14
|
||
{1, 10000, 1000 } , // u32 startPPS; // 启动速度
|
||
{1, 200000, 40000 } , // u32 runPPS; // 运行速度
|
||
{1, 40000, 100 } , // u32 addPPSS; // 加速度
|
||
{1, 40000, 10000 } , // u32 brkPPSS; // 刹车速度
|
||
|
||
// 18
|
||
{100, 204800, 4000} , // u32 numerator; // 电子齿轮分子
|
||
{1, 204800, 1 } , // u32 denominator; // 电子齿轮分母
|
||
|
||
// 20
|
||
{0, 50, 0 }, // 闭环最小电流
|
||
{0, 0, 0 },
|
||
{0, 0, 0 },
|
||
{0, 0, 0 },
|
||
{0, 0, 0 },
|
||
{0, 0, 0 },
|
||
{0, 0, 0 },
|
||
{0, 0, 0 },
|
||
{0, 0, 0 },
|
||
{0, 0, 0 },
|
||
{0, 0, 0 },
|
||
|
||
// 32
|
||
{0, 0, 0 },
|
||
{0, 0, 0 },
|
||
{0, 0, 0 },
|
||
{0, 0, 0 },
|
||
{0, 0, 0 },
|
||
{0, 0, 0 },
|
||
{0, 0, 0 },
|
||
{0, 0, 0 },
|
||
{0, 0, 0 },
|
||
{0, 0, 0 },
|
||
{0, 0, 0 },
|
||
{0, 0, 0 },
|
||
{0, 0, 0 },
|
||
{0, 0, 0 },
|
||
{0, 0, 0 },
|
||
{0, 0, 0 },
|
||
{0, 0, 0 },
|
||
{0, 0, 0 },
|
||
{0, 0, 0 },
|
||
{0, 0, 0 },
|
||
{0, 0, 0 },
|
||
{0, 0, 0 },
|
||
{0, 0, 0 },
|
||
{0, 0, 0 },
|
||
{0, 0, 0 },
|
||
{0, 0, 0 },
|
||
{0, 0, 0 },
|
||
{0, 0, 0 },
|
||
{0, 0, 0 },
|
||
{0, 0, 0 },
|
||
{0, 0, 0 },
|
||
{0, 0, 0 },
|
||
};
|
||
|
||
static const char g_driverParaStrList[DRV_PARA_NUMS][DRV_PARA_STR_LEN] =
|
||
{
|
||
"开闭环模式; 0开环; 1, 闭环;",
|
||
"命令来源, 0 内部; 1, 外部;",
|
||
"每圈脉冲数",
|
||
"开环运行电流",
|
||
"开环锁定电流",
|
||
"开环最大控制偏差",
|
||
"最高转速限制",
|
||
"闭环磁场修正",
|
||
"闭环电流比例",
|
||
"闭环最大控制偏差",
|
||
"位置环比例增益(0--1000)",
|
||
"位置环积分增益(0--1000)",
|
||
"位置环微分增益(0--1000)",
|
||
"编码器较准,默认0",
|
||
"启动速度",
|
||
"运行速度",
|
||
"加速度",
|
||
"刹车速度",
|
||
"电子齿轮分子",
|
||
"电子齿轮分母",
|
||
|
||
// 20
|
||
"闭环最小电流(0-50)",
|
||
"",
|
||
"",
|
||
"",
|
||
"",
|
||
"",
|
||
"",
|
||
"",
|
||
"",
|
||
"",
|
||
"",
|
||
// 32
|
||
"",
|
||
"",
|
||
"",
|
||
"",
|
||
"",
|
||
"",
|
||
"",
|
||
"",
|
||
"",
|
||
"",
|
||
"",
|
||
"",
|
||
"",
|
||
"",
|
||
"",
|
||
"",
|
||
"",
|
||
"",
|
||
"",
|
||
"",
|
||
"",
|
||
"",
|
||
"",
|
||
"",
|
||
"",
|
||
"",
|
||
"",
|
||
"",
|
||
"",
|
||
"",
|
||
"",
|
||
"",
|
||
};
|
||
|
||
#endif
|
||
|
||
//-----------------------
|
||
|
||
void InitDriverParas(void);
|
||
|
||
DriverPara * GetDriverParas(int didx);
|
||
void SaveDriverParas(int didx);
|
||
|
||
const char * GetDriverParaName(int pidx);
|
||
|
||
//-----------------------
|
||
|
||
#endif
|
||
|
||
//-----------------------
|
||
|
||
#endif
|