1 В избранное 0 Ответвления 0

OSCHINA-MIRROR/dingtu-StepMotor_Matlab

Присоединиться к Gitlife
Откройте для себя и примите участие в публичных проектах с открытым исходным кодом с участием более 10 миллионов разработчиков. Приватные репозитории также полностью бесплатны :)
Присоединиться бесплатно
В этом репозитории не указан файл с открытой лицензией (LICENSE). При использовании обратитесь к конкретному описанию проекта и его зависимостям в коде.
Клонировать/Скачать
StepMotor_TriangleAcc.m 1.5 КБ
Копировать Редактировать Web IDE Исходные данные Просмотреть построчно История
Zhang Jianjun Отправлено 07.06.2015 12:57 bdcec9c
%三角形加速度曲线
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;

Опубликовать ( 0 )

Вы можете оставить комментарий после Вход в систему

1
https://api.gitlife.ru/oschina-mirror/dingtu-StepMotor_Matlab.git
git@api.gitlife.ru:oschina-mirror/dingtu-StepMotor_Matlab.git
oschina-mirror
dingtu-StepMotor_Matlab
dingtu-StepMotor_Matlab
master