94 lines
2.1 KiB
C
94 lines
2.1 KiB
C
|
||
#ifndef __CURVES_H__
|
||
#define __CURVES_H__
|
||
|
||
#include "config.h"
|
||
|
||
//--------------------------------------------------
|
||
// 梯形加减速曲线
|
||
|
||
typedef struct
|
||
{
|
||
// 输入参数
|
||
u32 movement; // 本段位移量
|
||
|
||
float begPPS; // 本段初始速度
|
||
float endPPS; // 本段结束速度
|
||
float runPPS; // 本段运行速度
|
||
float maxPPSS; // 最大的加速度
|
||
|
||
// 计算中间变量和结果
|
||
u32 mvmtseg[3]; // 三段位移, 分段的位移量 (如果位移量不为零, 说明存在这个段)
|
||
float newRunPPS; // 新的运行速度
|
||
float newAddPPSS; // 新的加速度
|
||
|
||
}TTypeCtrl;
|
||
|
||
//--------------------------------------------------
|
||
|
||
// 计算位移量
|
||
u32 TTypeCalcDisplacement(float pps1, float pps2, float ppss);
|
||
|
||
// 计算加速度
|
||
float TTypeCalcAddPPSS(u32 disp, float pps1, float pps2);
|
||
|
||
// 计算运动结束的速度
|
||
float TTypeCalcEndSpd(u32 disp, float pps1, float ppss);
|
||
|
||
// 计算运动的时间
|
||
float TTypeCalcRunTime(u32 disp, u32 startpps, u32 stoppps, u32 runpps, u32 addppss);
|
||
|
||
// 计算运动相关参数
|
||
int TTypeCalcRunParas(TTypeCtrl * pTTypeCtrl);
|
||
|
||
// 计算生成分频系数表
|
||
int TTypeCalcDivTab(u32 fin, TTypeCtrl * pTTypeCtrl, u32 * pFidvTab, u32 * pTablen);
|
||
|
||
|
||
//--------------------------------------------------
|
||
// 7段S型加减速曲线
|
||
|
||
typedef struct
|
||
{
|
||
// 输入参数
|
||
u32 movement; // 本段位移量
|
||
|
||
float begPPS; // 本段初始速度
|
||
float endPPS; // 本段结束速度
|
||
float runPPS; // 本段运行速度(v)
|
||
float maxPPSS; // 最大的加速度(a)
|
||
float maxPPSSS; // 最大的加加速度(j)
|
||
|
||
// 计算中间变量和结果
|
||
u32 timeseg[7]; // 七段时间长度, 单位为1个时间片
|
||
u32 mvmtseg[7]; // 七段位移, 分段的位移量 (如果位移量不为零, 说明存在这个段)
|
||
float newRunPPS; // 新的运行速度
|
||
|
||
}STypeCtrl;
|
||
|
||
|
||
// 计算位移量
|
||
u32 STypeCalcDisplacement(float pps1, float pps2, float ppss);
|
||
|
||
// 计算加速度
|
||
float STypeCalcAddPPSS(u32 disp, float pps1, float pps2);
|
||
|
||
// 计算运动结束的速度
|
||
float STypeCalcEndSpd(u32 disp, float pps1, float ppss);
|
||
|
||
// 计算运动的时间
|
||
float STypeCalcRunTime(u32 disp, u32 startpps, u32 stoppps, u32 runpps, u32 addppss);
|
||
|
||
// 计算运动相关参数
|
||
int STypeCalcRunParas(STypeCtrl * pSTypeCtrl);
|
||
|
||
// 计算生成分频系数表
|
||
int STypeCalcDivTab(u32 fin, STypeCtrl * pSTypeCtrl, u32 * pFidvTab, u32 * pTablen);
|
||
|
||
|
||
//--------------------------------------------------
|
||
|
||
#endif
|
||
|
||
|