optical/NxFuncs/closedriver/driverparas.h
2025-09-04 09:45:08 +08:00

260 lines
4.4 KiB
C
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

#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