Resumen del algoritmo de control de movimiento del motor.

Sigue la cuenta pública + star y nunca te pierdas contenido interesante

01773e5cd7e12b9a2d135e7321d25d01.gif

Reimpreso de | Tío Trigo

Los amigos que se han involucrado en el control motor o de movimiento deben saber que la curva S es muy importante. Compare la siguiente imagen animada y conocerá los beneficios de la curva S:

aa88eb5d9552fa51f23a231a6d85552d.gif

Hoy les describiré el algoritmo de planificación de curvas de velocidad S.


1. Introducción

La característica más importante de la aceleración y desaceleración en forma de S es la forma de la curva de aceleración/desaceleración del algoritmo como la letra S. La curva de velocidad de aceleración y desaceleración en forma de S es suave, lo que puede reducir el impacto en el proceso de control y hacer que el proceso de interpolación sea flexible [ ^1]. Dado que la curva en forma de T en realidad tiene un gran sobrepaso durante el proceso de cambio de aceleración a velocidad constante, aquí hay una comparación entre el proceso real de la curva T y la curva S de 7 segmentos ;

  • Forma de T : Acelerar->Velocidad constante->Desacelerar

  • Forma de S : Aceleración ( ) -> Aceleración uniforme ( ) -> Desaceleración ( ) -> Uniforme ( ) -> Aceleración ( ) -> Desaceleración uniforme ( ) -> Desaceleración ( )

La descripción del texto anterior sobre la aceleración puede ser un poco complicada de leer. Vea la imagen a continuación:
c72b40a7942b9f8dd0f4e536c853ecc1.png

2 Análisis teórico

Dado que la aceleración de la curva S cambia durante la aceleración y desaceleración, aquí se introduce una nueva variable, a saber, tirón .

Por lo tanto, en la curva de velocidad S de 7 segmentos correspondiente a la figura anterior , la aceleración máxima se estipula como y la aceleración mínima es, entonces la relación entre aceleraciones es;

  • Jerk (): aumenta gradualmente;

    • en este momento

  • Aceleración uniforme (): alcanza el máximo;

    • en este momento

  • Desaceleración (): disminuir gradualmente;

    • en este momento

  • uniforme (): sin cambios;

    • en este momento

  • Aceleración/Desaceleración (): Aumentar gradualmente;

    • en este momento

  • Desaceleración uniforme (): alcanza el máximo;

    • en este momento 

  • Disminución (): disminuir gradualmente;

    • en este momento

es el valor absoluto de la aceleración; donde

Por lo tanto, generalmente es necesario determinar los tres parámetros más básicos del sistema: la velocidad máxima del sistema, la aceleración máxima a__{max} y la sacudida, y luego se puede determinar todo el proceso de operación [^ 2];

  • Velocidad máxima : refleja la capacidad operativa máxima del sistema;

  • Aceleración máxima : refleja la capacidad máxima de aceleración y desaceleración del sistema;

  • Jerk : refleja la flexibilidad del sistema;

    • Cuanto mayor sea la flexibilidad, mayor será el exceso y menor será el tiempo de ejecución;

    • Cuanto menor sea la flexibilidad, menor será el exceso y mayor será el tiempo de ejecución;

2.1 Ecuación de relación del tiempo de aceleración

Todo el proceso de cambio de aceleración se muestra específicamente en la siguiente figura;

d939fbc4b3c4be6ef5d15e4ab2fe45b8.png

Nuevamente, enfatice la relación entre y e introduzca variables aquí,

Por ejemplo, si el momento actual está en el intervalo, entonces si se usa como punto inicial, es el tiempo relativo al momento, entonces hay:

La función de relación entre aceleración y tiempo se puede obtener de la siguiente manera:

a'

Según la fórmula ①, sustituyendo en la fórmula ② podemos obtener:

En la fórmula anterior;

2.2 Ecuación de la relación velocidad-tiempo

La velocidad y la aceleración se satisfacen; la relación entre tirón y velocidad satisface:

Combinando la relación del tiempo de aceleración con la ecuación ②, se puede obtener la relación de la curva de velocidad. La relación específica se muestra en la siguiente figura; se
8a7f2a2474b162a73f325b45096da13c.png
puede obtener una mayor simplificación:
13b15374eba38bbde4dc9fdb27688d59.png

2.3 Ecuación de relación de tiempo de desplazamiento

El desplazamiento y la sacudida satisfacen directamente la relación de la siguiente manera:

derivación simple

Entonces podemos obtener:

Casi se me han olvidado los puntos, así que los repasaré cuando vuelva;

La ecuación para el desplazamiento final se muestra a continuación;
e2de0e258f396f35770b1731d4b84105.png

3 ideas para la implementación del programa

Como se mencionó anteriormente, la planificación de la curva S necesita determinar los tres parámetros más básicos del sistema: velocidad máxima del sistema, aceleración máxima a_max y sacudida, para que se pueda determinar el proceso operativo. Aquí hay una condición implícita, es decir, la velocidad máxima que se puede alcanzar durante la operación, esta es la curva S completa de 7 segmentos . Además, existen algunos parámetros intermedios:

  • , entonces alli esta;

  • idiota;

  • , el usuario especifica el tiempo requerido para todo el proceso en ejecución;

Pero normalmente en el proceso real, nos preocupamos por...

3.1 Derivación

Se supone que existe el estado ideal.y , el proceso de derivación es el siguiente:

Entonces podemos obtener:

Después de la simplificación obtenemos:

Según la fórmula ②, podemos saber:

Finalmente obtuve:

es la velocidad inicial;

El siguiente programa de discretización se puede escribir basándose en la ecuación de relación desplazamiento-tiempo .

Suponiendo que se puede alcanzar la velocidad máxima y el usuario proporciona el tiempo de ejecución de todo el proceso, la derivación es la siguiente:

Simplificando la fórmula anterior podemos obtener:

Según la fórmula anterior, podemos obtener:

Derivación de 3.2

En este momento aún queda un cálculo por hacer, el cual se puede deducir de las mediciones; en primer lugar, los desplazamientos satisfacen la siguiente relación:

dónde está la longitud de la zona de aceleración, dónde está la longitud de la zona de desaceleración;

Derivación específica; [^2] Como se mencionó anteriormente, entonces cuando = 0, entonces

â'£

Aquí hay una deducción simple:

â'¤

Según ④, ⑤ finalmente se simplifica a :

: es el tiempo total de carrera: es la distancia total de carrera

El proceso de derivación detallado es el siguiente:

porque:

porque:

Entonces, simplificando se obtiene:

Entonces puedes obtener:

porque:

Sustituyendo esto obtenemos:

Simplifica para obtener el resultado final :

4 programas matlab

El programa Matlab se puede ejecutar después de una prueba personal con modificaciones simples. Debido a que aquí se proporciona directamente el tiempo de todo el proceso de ejecución, el SCurveParavalor de la aceleración debe encontrarse en la función y la distancia es 1:

SCurvePara

function [Tf1,V,A,J,T] = SCurvePara(Tf, v, a)
 T = zeros(1,7);
for i=1:1000
    % 加加速度 J
    J = (a^2 * v) / (Tf*v*a - v^2 - a);
    % Tk
    T(1) = a / J;
    T(2) = v / a - a / J; % t2 = v / a - t1;
    T(3) = T(1);
    T(4) = Tf - 2 * a / J - 2 * v / a;    % t4 = Tf - 4*t1 - 2*t2;
    T(5) = T(3);
    T(6) = T(2);
    T(7) = T(1);
    % 根据T2和T4判断S曲线的类型
    if T(2) < -1e-6
        a = sqrt(v*J);
        display('t2<0');
    elseif T(4) < -1e-6
        v = Tf*a/2 - a*a/J;
        display('t4<0');
    elseif J < -1e-6
        Tf = (v^2 + a) / (v*a) + 1e-1;
        display('J<0');
    else
        break;
    end
end

 A = a;
 V = v;
 Tf1 = Tf;
 end

SCurveScaling

function s = SCurveScaling(t,V,A,J,T,Tf)
% J = (A^2 * V) / (Tf*V*A - V^2 - A);
% T(1) = A / J;
% T(2) = V / A - A / J; % T(2) = V / A - T(1);
% T(3) = T(1);
% T(4) = Tf - 2 * A / J - 2 * V / A;    % T(4) = Tf - 4*T(1) - 2*T(2);
% T(5) = T(3);
% T(6) = T(2);
% T(7) = T(1);
%%
if (t >= 0 && t <= T(1))
    s = 1/6 * J * t^3;
elseif (  t > T(1) && t <= T(1)+T(2) )
    dt = t - T(1);
    s = 1/2 * A * dt^2 + A^2/(2*J) * dt...
        + A^3/(6*J^2);
elseif ( t > T(1)+T(2) && t <= T(1)+T(2)+T(3) )
     dt = t - T(1) - T(2);
     s = -1/6*J*dt^3 + 1/2*A*dt^2 + (A*T(2) + A^2/(2*J))*dt ...
         + 1/2*A*T(2)^2 + A^2/(2*J)*T(2) + A^3/(6*J^2);
elseif ( t > T(1)+T(2)+T(3) && t <= T(1)+T(2)+T(3)+T(4) )
     dt = t - T(1) - T(2) - T(3);
     s = V*dt ...
         +  (-1/6*J*T(3)^3) + 1/2*A*T(3)^2 + (A*T(2) + A^2/(2*J))*T(3) + 1/2*A*T(2)^2 + A^2/(2*J)*T(2) + A^3/(6*J^2);
elseif ( t > T(1)+T(2)+T(3)+T(4) && t <= T(1)+T(2)+T(3)+T(4)+T(5) )
     t_temp = Tf - t; 
     dt = t_temp - T(1) - T(2);
     s = -1/6*J*dt^3 + 1/2*A*dt^2 + (A*T(2) + A^2/(2*J))*dt ...
         + 1/2*A*T(2)^2 + A^2/(2*J)*T(2) + A^3/(6*J^2);
     s = 1 - s;
elseif ( t > T(1)+T(2)+T(3)+T(4)+T(5) && t <= T(1)+T(2)+T(3)+T(4)+T(5)+T(6) )
     t_temp = Tf - t; 
     dt = t_temp - T(1);
     s = 1/2 * A * dt^2 + A^2/(2*J) * dt + A^3/(6*J^2);
     s = 1 - s;  
elseif ( t > T(1)+T(2)+T(3)+T(4)+T(5)+T(6) && t <= T(1)+T(2)+T(3)+T(4)+T(5)+T(6)+T(7) + 1e5 )
     t_temp = Tf - t; 
     s = 1/6 * J * t_temp^3;
     s = 1 - s;     
end
 
end

El código para la prueba es el siguiente:TEST

%%
N = 500;

ThetaStart = 0; %起始位置
ThetaEnd = 90; %最终位置
VTheta = 90;    %1   速度
ATheta = 135;   %1.5   加速度
Tf = 1.8;  % 总行程时间

v = VTheta/(ThetaEnd - ThetaStart);
a = ATheta/(ThetaEnd - ThetaStart);
v = abs(v);
a = abs(a);


Theta = zeros(1,N);
s = zeros(1,N);
sd = zeros(1,N);
sdd = zeros(1,N);

[TF,V,A,J,T] = SCurvePara(Tf, v, a);
display(J, 'J:');
display(TF,'Tf:');
display(V,'v:');
display(A, 'da:');

display(TF-Tf,'dTf:');
display(V-v,'dv:');
display(A-a, 'da:');

t=linspace(0,TF,N);
dt = t(2) - t(1);
for i = 1:N
    if i == N
        a = a;
    end
    s(i) = SCurveScaling(t(i),V,A,J,T,TF);
    Theta(i) = ThetaStart + s(i) * (ThetaEnd - ThetaStart);
    if i>1
        sd(i-1) = (s(i) - s(i-1)) / dt;
    end
    if i>2
        sdd(i-2) = (sd(i-1) - sd(i-2)) / dt;
    end
end

subplot(3,1,1);
legend('Theta');
xlabel('t');
subplot(3,1,1);
plot(t,s)
legend('位移');
xlabel('t');
title('位置曲线');

subplot(3,1,2);
plot(t,sd);
legend('速度');
xlabel('t');
title('速度曲线');

subplot(3,1,3);
plot(t,sdd);
legend('加速度');
xlabel('t');
title('加速度曲线');

Vea que los resultados finales de la simulación sean los mismos que se esperaban;6c89c80d75fbcd55c17edae9cb26a238.jpeg

Finalmente, echemos un vistazo a la comparación de los efectos de la planificación de curvas de velocidad en forma de T y en forma de S:

5 Resumen

Este artículo solo brinda una derivación detallada y una introducción a la planificación de la curva S de 7 segmentos. Los programas en Matlab se implementan tanto para segmentos de 4 como para segmentos de 5. Muchos de ellos se deducen en condiciones ideales. La velocidad inicial por defecto es 0 y la velocidad terminal también es 0, y se supone que las áreas de aceleración y desaceleración son simétricas entre sí. El resultado final de carrera está en línea con las expectativas.

6 Referencia

[1]: Chen Youdong, Wei Hongxing, Wang Qikui. Algoritmos discretos de aceleración y desaceleración lineal y en forma de S para sistemas CNC [D] Beijing: China Mechanical Engineering, 2010. [2]: Guo Xingui, Li Congxin, Investigación sobre Algoritmo de aceleración y desaceleración de curva S,
Centro de Investigación de Ingeniería CAD de Moldes Nacionales de la Universidad Jiao Tong de Shanghai, 200030

------------  FIN  ------------

f64f38b0a33cb761097c196473ef91f1.gif

●Columna "Herramientas integradas "

●Columna "Desarrollo integrado"

●Columna "Tutorial de Keil"

●Tutoriales seleccionados de columnas integradas

Siga la cuenta oficial y responda " Agregar grupo " para unirse al grupo de intercambio técnico de acuerdo con las reglas, y responda " 1024 " para ver más contenido.

bb2cd42857e58c7942a7483f9013bdf7.jpeg

b2b57a90d06581841ef7bf4a20a57e12.png

Haga clic en " Leer el texto original " para ver más contenido compartido.

Supongo que te gusta

Origin blog.csdn.net/ybhuangfugui/article/details/132893206
Recomendado
Clasificación