18 Star 27 Fork 6

skywolf / StepMotor_Matlab

加入 Gitee
与超过 1200万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
该仓库未声明开源许可证文件(LICENSE),使用请关注具体项目描述及其代码上游依赖。
克隆/下载
StepMotor_TriangleAcc.m 1.46 KB
一键复制 编辑 原始数据 按行查看 历史
%三角形加速度曲线
if exist('ini') == 0
disp ('未加载配置ini文件');
return;
end
InitVars; %初始化变量
%计算过程的中间变量
Acc0 = 0; %起步的加速度 hz/ms
dAcc = TriangleAccSlope(MinFreq, MaxFreq, (SpeedUpTime)/2); %变加速度系数,hz/ms2
Freq = MinFreq; %最小步开始计算
Acc=Acc0;
t=0;
MidTime = SpeedUpTime/2 - StepTime/2;
%加速度增大阶段
while t <= MidTime %前半段时间,加速度递增
Period = 1e3 / Freq; %当前频率换算到周期
Steps = round(StepTime * Freq / 1e3); %一个时间段里的步数,取整
Cnt = Cnt+1; %计数
A(Cnt,FREQ)=Freq;
A(Cnt,STEPS)=Steps;
if Cnt == 1
A(Cnt,STEP_SUM)=Steps;
A(Cnt, T_SUM) = Period*Steps;
else
A(Cnt,STEP_SUM)=A(Cnt-1,STEP_SUM) + Steps;
A(Cnt, T_SUM) = A(Cnt-1, T_SUM) + Period*Steps;
end
A(Cnt, ACC) = Acc;
t = A(Cnt, T_SUM);
Acc = Acc + dAcc * Period*Steps; %下一步的加速度
Freq = Freq + (Period*Steps) * Acc; %next freq
end
%加速度减小阶段
while Acc > 0
Period = 1e3 / Freq; %当前频率换算到周期
Steps = round(StepTime / Period); %一个时间段里的步数,取整
Cnt = Cnt+1; %计数
A(Cnt,FREQ)=Freq;
A(Cnt,STEPS)=Steps;
A(Cnt,STEP_SUM)=A(Cnt-1,STEP_SUM) + Steps;
A(Cnt, T_SUM) = A(Cnt-1, T_SUM) + Period*Steps;
A(Cnt, ACC) = Acc;
Acc = Acc - dAcc * Period*Steps; %下一步的加速度
Freq = Freq + (Period*Steps) * Acc; %next freq
end
%绘结果图
PlotResult;
SaveResult;
Matlab
1
https://gitee.com/dingtu/StepMotor_Matlab.git
git@gitee.com:dingtu/StepMotor_Matlab.git
dingtu
StepMotor_Matlab
StepMotor_Matlab
master

搜索帮助