• 大小: 2KB
    文件类型: .rar
    金币: 1
    下载: 0 次
    发布日期: 2021-05-19
  • 语言: Matlab
  • 标签: S曲线  

资源简介

S曲线 MATLAB仿真通过 共分三段:平方曲线;直线;平方曲线倒转并移动

资源截图

代码片段和文件信息

%**********************************************************%
%指令最后加分号,表示该变量不显示;指令最前面加%表示注释该行
%时间都以ms为单位,频率都以Hz为单位
%**********************************************************%
%下面几条参数是S曲线调用时的参数传递进来的
MIN_F=0 %先假设最低频率为0
MAX_F=2000 %先假设最高频率为2K,目前做最高可达20K
N=10000; %假设总脉冲个数为<=10000
T=100 %假设总时间为1S
%**********************************************************%
%下面3个参数调用伺服里面的或者PLC自己设定的
UP_T=30     %加速时间(单位:mS)%T1T2把UP_T分割成三段
DN_T=30    %减速时间(单位:mS)
S_T =10    %第一段平方曲线时间(单位:mS);由此可以调节
%它在整个S型曲线时间(UP_T或DN_T)
%所占比例,从而调节S曲线的程度
%**********************************************************%
%把时间转换成以10us为基本单位
T3=UP_T*100       %加速时间2S%T1T2把UP_T分割成三段
DN_TT=DN_T*100     %减速时间2S
S_TT=S_T*100  %第一段平方曲线时间(单位:mS);由此可以调节
TT=T*100 %总时间T/10us=多少个10us

%**********************************************************%
%S曲线中间的6个分界点时间计算
%加速段的两个分界时间
T1= S_TT
T2=T3-S_TT
%中间保持段的两端时间
T3= T3
T4=TT-DN_TT
%减速段的两个分界时间
T5=T4 +S_TT
T6=TT-S_TT

%**********************************************************%
Supt=0.5* (MAX_F+MIN_F) * T3  %到UP_T时刻的面积
Sroundt= (T4-T3)*MAX_F  %ROUND_T段的面积
Sdnt=0.5*MAX_F*DN_TT            %从DN_T开始到结束段的面积
Sall= Supt+ Sroundt+ Sdnt %整个S曲线的面积
%**********************************************************%

%if  S_T ~= 0
    
A1= (MAX_F-MIN_F)/( T1 *T3- T1^2)  %平方曲线系数 %T1<0.5UP_T

    
    
    
%第二步:判断T3是否
%if  2*T3>T
%晚点做

%**********************************************************%   
%画图f1
t=linspace(0TTTT+1);  

  B=0
    a=zeros(TT+11);
for     t1=1:T1-1
C= ((1/6)*t1^3*A1 +MIN_F*t1) *N /Sall;
        a(t1)=round(C-B);
if a(t1)~=0
B= B+a(t1);
        end
end
f1_c=C;
plot(ta);
grid on
%**********************************************************%
%**********************************************************%   
%画图f2 
if T1~=T2
for     t2=T1:T2-1
C= ( (MIN_F-0.5*A1*T1^2)*(t2-T1)+0.5*A1*T1*(t2^2-T1^2) )*N/Sall;
         a(t2)=round(C+ f1_c -B);
if a(t2)~=0
B= B+a(t2);
         end
end
f2_c=C+ f1_c ;
plot(ta);
grid on
end
%**********************************************************%
%**********************************************************%   
%画图f3

for  t3=T2:T3-1
C=(  MAX_F*(t3-T2)-0.5*A1*( T3^2*(t3-T2)-T3*(t3^2-T2^2)+(1/3)*(t3^3-T2^3) )   )*N/Sall;
        a(t3)=round(C+f2_c-B);
if a(t3)~=0
B= B+a(t3);
        end
end
f3_c=C+f2_c;
  plot(ta);
grid on
%**********************************************************%
%画图f4
for  t4= T3: T4-1
C=(t4-T3)* MAX_F*N/Sall;
     a(t4)=round(C+f3_c-B);
if a(t4)~=0
B= B+a(t4);
        end
end
f4_c=C+f3_c;
  plot(ta)

grid on
;  
A2= MAX_F /( T1 *DN_TT- T1^2)  %平方曲线系数
%**********************************************************%
%画图f5
for  t5= T4: T5-1
C=(MAX_F*(t5-T4)-(0.5*A2*((1/3)*t5^3-T4*t5^2+T4^2*t5-(1/3)*T4^3)))*N/Sall;
     a(t5)=round(C+f4_c-B);
if a(t5)~=0
B= B+a(t5);
        end
end
f5_c=C+f4_c;
  plot(ta)
grid on
%**

 属性            大小     日期    时间   名称
----------- ---------  ---------- -----  ----

     文件       3916  2008-12-18 17:09  完整的S曲线下次还加判断S部分=0时变线性的.m

----------- ---------  ---------- -----  ----

                 3916                    1


评论

共有 条评论