#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