Actuación
La planificación de movimientos se realiza en una tarea separada porque el cálculo requiere un uso intensivo de la CPU. Esta tarea separada se denomina tarea de planificación y se ejecuta en paralelo con la tarea del bus. Si el rendimiento del PLC no es suficiente para planificar la ruta en la tarea de planificación a tiempo para la tarea del bus, entonces se trata de problemas de rendimiento.
Los problemas de rendimiento en la planificación del movimiento pueden conducir a la SMC_CP_QUEUE_UNDERRUN
error, pero también pueden provocar un movimiento entrecortado o más lento de lo esperado. Para información sobre el SMC_CP_QUEUE_UNDERRUN
error, ver el Errores comunes capítulo. El diagnóstico de problemas relacionados con el rendimiento con los movimientos se describe a continuación.
Diagnóstico en caso de movimientos lentos o espasmódicos.
Si no hay problemas de ejecución, entonces cada movimiento se planifica de tal manera que al menos uno de los límites efectivos se alcanza durante todo el movimiento. Como ejemplo, considere un pórtico bidimensional simple con dos ejes X e Y y un movimiento PTP desde la posición (0,0) a (10,-10). La velocidad máxima del eje es 20, la aceleración máxima del eje es 100 y la sacudida máxima del eje es 1000.
El movimiento esperado se ve así:

La aceleración se establece primero con una sacudida máxima hasta alcanzar el valor límite de aceleración de 100. Después de una breve fase de aceleración constante, la aceleración se reduce nuevamente con un tirón máximo, de modo que con aceleración 0 se alcanza el valor límite de velocidad 20. Después de una fase de velocidad constante, se desacelera de manera que se alcanza la posición objetivo con velocidad. y aceleración 0.
Hay dos posibles razones por las que el movimiento real se desvía de esta curva ideal:
El movimiento planificado no se corresponde con la curva ideal debido a problemas de desempeño en la tarea de planificación.
El movimiento planificado corresponde a la curva ideal, pero el robot no lo ejecuta como se esperaba.
Caso 1: Problemas de desempeño de la tarea de planificación
Si hay problemas con el rendimiento durante la planificación, entonces el movimiento podría verse así:

Esto se debe a que el movimiento se planifica en la tarea de planificación en paralelo a la ejecución en la tarea de autobús. En promedio, la tarea de planificación debe proporcionar tanta trayectoria como requiere la tarea del autobús. Si el rendimiento no es suficiente para ello, el movimiento se ralentiza. Esto conduce a la curva de velocidad ondulada.
La primera y más importante herramienta para diagnosticar este tipo de problemas es el rastreo. Además de fSetPosition
, fSetVelocity
, y fSetAcceleration
variables para cada eje, la numTimeBudgetExceeded
y numSlowDownLowIpoQueue
salidas de la SMC_GroupReadPlanningStatistics
El bloque de funciones también debe registrarse. Si estos contadores aumentan continuamente, entonces hay un problema de rendimiento.
Aviso
De manera similar a la fSetPosition
, fSetVelocity
, y fSetAcceleration
variables, también está la fSetJerk
variable para el tirón. Cabe señalar que la sacudida no es la sacudida promedio que se aplica durante el ciclo de la tarea del bus (como a menudo se espera), sino más bien la sacudida instantánea al final del ciclo. Por lo tanto, FSetJerk
tiene sólo una importancia limitada para diagnosticar problemas de rendimiento.
Formas de mejorar el movimiento.
La siguiente lista contiene pasos para manejar problemas de rendimiento:
Ajuste de los valores límite de velocidad, aceleración y sacudida:
Cuanto más se tarde en desacelerar desde la velocidad actual hasta detenerse, mayor será la potencia de cálculo necesaria
Por lo tanto, es más probable que un valor límite efectivo alto para la velocidad y unos valores límite efectivos bajos para la aceleración y la sacudida conduzcan a problemas de rendimiento.
En particular, los valores límite para la aceleración y la sacudida no deberían fijarse innecesariamente bajos.
Aumente la prioridad de la tarea de planificación o disminuya la prioridad de las otras tareas si están bloqueando la tarea de planificación. La tarea de planificación debería tener la segunda prioridad más alta después de la tarea del autobús.
Asigne la tarea de planificación a un núcleo dedicado si hay varios núcleos de CPU disponibles (consulteConfiguración de la tarea de planificación).
Usar
SMC_TuneCPKernel
para aumentar el valor de lafPlanningInterval
y/ofSyncBufferDuration
parámetros de planificación.El
fPlanningInterval
El parámetro especifica el incremento máximo de planificación (en segundos). El tiempo de ciclo de la tarea de planificación no debe exceder permanentemente este valor. Un valor más alto reduce la potencia de cálculo, pero también puede provocar que los valores límite ajustados para velocidad, aceleración y sacudida no se aprovechen en su totalidad. A partir de un valor inicial de 0,016 segundos (el valor predeterminado desde CODESYS SoftMotion versión 4.6.0.0), el valor debe aumentarse gradualmente hasta que el rendimiento sea aceptable.El
fSyncBufferDuration
El parámetro especifica el tamaño del búfer entre la tarea de planificación y de bus. Los tiempos de ciclo pico de la tarea de planificación no deben exceder este valor. Un valor más alto puede compensar los picos en el tiempo del ciclo de la tarea de planificación. Al mismo tiempo, esto también aumenta la latencia en la ejecución de interrupciones y movimientos de interrupción.
Caso 2: El robot no sigue el movimiento planificado como se esperaba
Si el robot no sigue el movimiento planificado como se esperaba, esto puede deberse a las siguientes razones:
Capacidad insuficiente del controlador en tiempo real
Problemas en el circuito de control de los variadores.
En un controlador sin capacidad de tiempo real, como el CODESYS Control Win, o un controlador basado en Linux sin un parche en tiempo real del sistema Linux subyacente, pueden ocurrir movimientos demasiado lentos o entrecortados incluso con un rendimiento suficiente. Esto sucede si la tarea del bus no se ejecuta a tiempo en el período de tiempo configurado.
Formas de mejorar el movimiento.
En la pestaña "Monitoreo" de la configuración de tareas 1, compruebe si la tarea de la tarea del bus 2 es muy alto. Este puede ser el caso porque la tarea del bus está siendo desplazada por una tarea con la misma o mayor prioridad, o porque el controlador no tiene suficiente capacidad en tiempo real.
Si la fluctuación es demasiado alta y ya se ha asegurado de que la tarea del bus tenga la máxima prioridad, entonces la capacidad en tiempo real del controlador no es suficiente. En este caso, utilice un controlador con mejores propiedades en tiempo real.
Si hay problemas con el circuito de control en el variador, entonces deberá ajustar los parámetros del circuito de control. El control de avance del par también puede mejorar el rendimiento del circuito de control.
Para más información, ver: Limitación de par y control de avance de par
1: Es aconsejable restablecer los valores medidos de la supervisión de tareas en el menú contextual porque el primer ciclo del PLC después de iniciar la aplicación a menudo tiene una duración mayor y una mayor fluctuación.
2: Valores de fluctuación de hasta aprox. 20 us son muy buenos y valores de hasta aprox. 100 nosotros estamos bien. Dependiendo de las unidades utilizadas, también puede funcionar el funcionamiento con valores de fluctuación más altos. Los valores de fluctuación que alcanzan el orden de magnitud del intervalo de tarea de la tarea del bus pueden dar como resultado el patrón de error descrito anteriormente.