Skip to main content

Cambiar entre cámaras

Básicamente, puedes cambiar entre diferentes cámaras en cualquier momento. Sin embargo, debes considerar algunos puntos:

  • En el editor de levas, la posición del esclavo se define unívocamente como valor de función de la función de levas. Esta función se define en el rango de valores maestros y se puede expresar de la siguiente manera:

    SlavePosition = CAM( MasterPosition )

  • Debido a que la posición actual del accionamiento maestro generalmente se desvía del rango de valores maestros, debe escalar la posición maestra en el rango de definición de la función de leva para representar un argumento válido:

    SlavePosition = CAM( MasterScale*MasterPosition + MasterOffset )

  • De manera similar, debe escalar el valor de la función (la posición del esclavo) si el inicio de la leva en el modo Absolute daría lugar a un salto:

    SlavePosition = SlaveScale*CAM( MasterPosition ) + SlaveOffset

  • Es posible que deba aplicar ambos valores de escala, lo que da como resultado lo siguiente:

    Slaveposition = SlaveScale*CAM( MasterScale*Masterposition + MasterOffset ) + SlaveOffset

  • Los valores apropiados para los parámetros de escala y compensación pueden variar de un período a otro.

  • El cambio entre cámaras se puede realizar de tres formas:

    1. Inicie la segunda cámara a través de una segunda instancia de MC_CamIn con BufferMode = MC_BUFFER_MODE.Buffered, StartMode = relative, MasterAbsolute = FALSE, y SlaveAbsolute = FALSE.

      Importante

      A partir de CODESYS SoftMotion versión 4.17.0.0

    2. Inicio de la nueva leva asignando MC_CamIn.CamTableID a la nueva leva (sin reinicio de la MC_CamIn bloque de funciones requerido).

      Se recomienda esta variante si los siguientes puntos se aplican a su caso de uso:

      • Todas las levas siguientes deben ejecutarse relativamente con MasterAbsolute = FALSE o SlaveAbsolute = FALSE.

      • La nueva leva debe comenzar exactamente al final de la anterior.

      • No se modifican otros parámetros (ejemplo: SlaveOffset).

        Importante

        • El salto, que se explica en el siguiente ejemplo para levas periódicas y SlaveAbsolute = FALSE, lo hace no se aplican a esta variante porque la leva siguiente se coloca exactamente en las posiciones finales de la leva anterior.

        • La nueva leva se coloca exactamente al final de la leva anterior solo si el cambio a la leva nueva se realiza en el mismo ciclo cuando la leva anterior informa EndOfProfile = TRUE.

    3. Inicio de la nueva leva reiniciando el MC_CamIn bloque de funciones

      Se recomienda esta variante si se deben cambiar los parámetros para el correcto funcionamiento de la nueva leva (por ejemplo, SlaveOffset del siguiente ejemplo). Se aplican las restricciones del siguiente ejemplo.

ejemplo 9. Ejemplo

En el siguiente ejemplo, cambia de CAM1 a CAM2:

CAM1 consta de un polinomio de quinto orden seguido de dos segmentos de línea.

_sm_img_cam_switching_1.png

CAM2 consta de dos segmentos de recta seguidos de un polinomio de quinto orden.

_sm_img_cam_switching_2.png

Al cambiar entre ambas cámaras, debe considerar lo siguiente:

  • Para evitar saltos, los valores de velocidad y aceleración en el punto final de la primera leva deben coincidir con los valores en el punto inicial de la segunda leva. En el ejemplo, esta condición se cumple porque se asigna la misma velocidad (=1) y aceleración (=0) al punto final de CAM1 y el punto de partida de CAM2.

  • Puede iniciar la segunda cámara en Relative modo cuando haya definido la posición de inicio del esclavo como 0. Sin embargo, la primera leva tiene que estar funcionando en non-periodic modo. De lo contrario, si CAM1 eran periódicas, entonces la Relative el ajuste daría como resultado un salto.

_sm_img_cam_switching_3.png

La ampliación muestra la transición de CAM1 a CAM2. Las líneas azules marcan las evaluaciones de las funciones de la leva en las posiciones maestras x1 y x2.

Ahora, veremos el caso desfavorable de periodic:

MasterAbsolute := TRUE; SlaveAbsolute := FALSE;

CAM(x1, CAM1, PERIODIC:=TRUE);

La llamada inicia una evaluación de la leva en la posición maestra x1, que es menor que la posición final del maestro de CAM1. Entonces CAM1 se evalúa por defecto y produce un punto 1 como la posición para el esclavo.

CAM(x2, CAM1, PERIODIC:=TRUE);

Para la siguiente llamada del módulo, la posición maestra x2 está fuera del rango de valores maestros de CAM1, cuyo límite está marcado por la línea discontinua verde y concuerda con el eje horizontal del punto 3p. Por lo tanto, la EndOfProfile Está establecido. Porque CAM1 se inició en periodic modo, su reinicio se produce al final del rango de valores, lo que finalmente produce el punto 2p como resultado de la llamada del módulo.

CAM(EXECUTE:=FALSE);

Cambiar a la nueva cámara

CAM(x2, CAM2, PERIODIC:=TRUE);

Segunda evaluación en posición de maestro x2. Esta vez, el nuevo CAM2 se evalúa. Después CAM2 se inicia en Relative modo, la posición actual del esclavo (2p) se agrega como compensación a la imagen de la función de leva de CAM2. Esto mueve el punto de inicio de su gráfico al punto 3p y su evaluación en el puesto de maestro x2 da el punto 4p, y por lo tanto un salto desfavorable.

Selecciona el non-periodic Modo para evitar saltos:

MasterAbsolute := TRUE; SlaveAbsolute := FALSE;

CAM(x1, CAM1, PERIODIC:=FALSE);

La llamada inicia una evaluación de la leva en la posición maestra x1, que es menor que la posición final del maestro de CAM1. Entonces CAM1 se evalúa por defecto y produce el punto 1 como la posición del esclavo.

CAM(x2, CAM1, PERIODIC:=FALSE);

Para la siguiente llamada del módulo, la posición maestra x2 está fuera del rango de valores maestros de CAM1, cuyo límite está marcado por la línea discontinua verde y coincide con el eje horizontal del punto 3n. Por lo tanto, la EndOfProfile Está establecido. Porque CAM1 se inició en non-periodic modo, posición esclava (2n) asignado al puesto maestro x2 es idéntica a la posición del esclavo al alcanzar el final del rango de valores de CAM1 (3n).

CAM(EXECUTE:=FALSE);

Cambiar a cámara nueva.

CAM(x2, CAM2, PERIODIC:=FALSE);

Segunda evaluación en posición de maestro x2. Esta vez, el nuevo CAM2 se evalúa. Después CAM2 se inicia en Relative modo, la posición actual del esclavo (2n) se agrega como compensación a la imagen de la función de leva de CAM2. Esto mueve el punto de inicio de su gráfico al punto 3n y su evaluación en el puesto de maestro x2 da el punto 4n, que está en la línea específica a través de los puntos 1 y 3n.

Para iniciar la cámara en Absolute modo, debe asegurarse de que el esclavo esté en una posición de inicio adecuada. Si el rango de valores del maestro coincide con el período del esclavo, entonces el cambio entre levas no tiene ninguna complicación, independientemente de si las levas son periódicas o no.

En el ejemplo anterior, puede comenzar CAM2 en Absolute modo cuando los períodos del maestro y el esclavo concuerdan con el rango de valor maestro de CAM2 (cada uno es de 360°).

Si no, por ejemplo cuando el período del esclavo es 270° (indicado por la línea azul claro), luego el Absolute opción no está permitida sin tomar acciones adicionales.

_sm_img_cam_switching_4.png

En este caso, el esclavo está a 90° cuando cambia de CAM1 a CAM2. A partir de CAM2 en Absolute modo provoca un salto a 0° (indicado por una línea gris).

Sin embargo, el salto se puede evitar ajustando la compensación del esclavo al valor apropiado de 90°.