Uso de MC_DigitalCamSwitch_HighPrecision
El ejemplo BasicMotion_DigitalCamSwitch_HighPrecision.project
se encuentra en el directorio de instalación CODESYS debajo ..\CODESYS SoftMotion\Examples
.
En este ejemplo se muestra cómo utilizar las salidas de SMC_DigitalCamSwitch_HighPrecision
para controlar salidas digitales con alta resolución temporal. Los terminales EL2258 y EL2252 de Beckhoff
Aviso
Las descripciones de los dispositivos de Beckhoff no se incluyen en el ejemplo. Puede descargarlas directamente del proveedor e instalarlas en el repositorio de dispositivos. Para ejecutar el ejemplo, necesita un acoplador de bus EK1100, un terminal EL2258 y un terminal EL2252
Importante
Este ejemplo se desarrolló y probó de acuerdo con la revisión 0017 de EL2258 y la revisión 0020 de EL2252. Solo sirve como ejemplo. No garantizamos la exactitud. El código fuente debe probarse antes de usarlo. Si es necesario, debe modificarse para adaptarlo a otras revisiones de los terminales.
Estructura de la solicitud
La aplicación consiste en Main
programa, el DigitalCamSwitch_EL2258
y DigitalCamSwitch_EL2252
bloques de funciones y un acoplador de bus EK1100 con los terminales de salida EL2258 y EL2252.
El DigitalCamSwitch_EL2258
y DigitalCamSwitch_EL2252
bloques de funciones son las partes esenciales del ejemplo. Muestran cómo usar el Events
salida de SMC_DigitalCamSwitch_HighPrecision
para programar salidas digitales. Los bloques de funciones deben entenderse como ejemplos que pueden adaptarse a otro hardware.
DigitalCamSwitch_EL2258
El bloque de función se inicializa en un borde ascendente en el
Enable
entrada. En elSTATE_INIT_0
ySTATE_INIT_1
estados, elOutputBufferReset
se escriben las señales del terminal EL2258 y elaLastEventIds
la matriz está inicializada. El ID del último evento procesado para cada pista se guarda en esta matriz. Esto evita que un evento se transfiera al terminal varias veces.Una vez inicializado (
STATE_ACTIVE
), todas las pistas se procesan sucesivamente y se ejecuta la siguiente lógica para cada pista:Compruebe si el terminal EL2258 ya ha aceptado los últimos eventos ordenados (
ChannelsIn[channel].OutputOrderFeedback = ChannelsOut[channel].OutputOrderCounter
).Recorre todos los eventos de la pista. Solo aquellos eventos cuyo
ToggleEventId
es mayor que la última ID procesada y se consideran más adelante. (ConsultaEventId_GreaterThan(event^.ToggleEventId, aLastEventIds[channel])
)Consulta la sección: «Nota sobre el orden de los eventos».
Convierte el
Duration
del evento en una marca de tiempo de EtherCAT y la correspondiente escritura delChannelsOut[channel].OutputEventState
yChannelsOut[channel].OutputEventTime
salidas.Anule el procesamiento después de un máximo de 5 eventos.
Notifique a la terminal que existen nuevos eventos si se ha encontrado al menos un evento (
ChannelsOut[channel].OutputOrderCounter := ChannelsOut[channel].OutputOrderCounter + 1
).
Nota sobre el orden de los eventos
Los eventos son devueltos por el SMC_DigitalCamSwitch_HighPrecision
bloque de función para cada pista de una matriz. SwitchNumber
y un ToggleEventId
se devuelven para cada evento. ToggleEventId
es único y ascendente para cada pista.
Para obtener más información, consulte: SMC_CAMSWITCH_TOGGLE_EVENT.
En el ejemplo, el aLastEventIds[trackNo]
una matriz almacena para cada pista que ToggleEventId
transfirió por última vez al terminal en una llamada de bloqueo de funciones anterior. Porque el ToggleEventIds
están en orden ascendente, la próxima llamada sabrá exactamente qué eventos aún deben transferirse.
Porque no se sabe en qué
ToggleEventId
los eventos comienzan, avalid
la bandera se guarda enEventId
tipo de datos además del ID. Para elEventId_GreaterThan
comparación, estovalid
la bandera se tiene en cuenta en consecuencia.El
ToggleEventIds
tienen el tipo de datos de 32 bitsUDINT
y, por lo tanto, puede, en principio, desbordarse con un tiempo de ejecución largo o una frecuencia de conmutación alta, respectivamente. A continuación, el valor pasa de 2^32-1 a 0. La función de comparaciónEventId_GreaterThan
también tiene en cuenta los desbordamientos de 32 bits.
Mapeo PDO EL2258
El ChannelsOut
y ChannelsIn
salidas del DigitalCamSwitch_EL2258
bloques de funciones están conectados a los canales de E/S respectivos del terminal EL2258. La siguiente imagen muestra las asignaciones del canal 1. El canal 2 es similar; solo cuando se accede ChannelsOut
y ChannelsIn
el índice es 2, no 1.

DigitalCamSwitch_EL2252
El principio básico es idéntico al DigitalCamSwitch_EL2258
. La diferencia está en la forma en que se escriben las señales porque el terminal EL2252 solo puede programar un evento activo
En primer lugar, el bloque de función se inicializa en
STATE_INIT
.Entonces
STATE_CHECK_FOR_EVENT
comprueba si los eventos delSMC_DigitalCamSwitch_HighPrecision
el bloque de funciones está pendiente.Si hay un evento disponible, debe programarse en dos ciclos:
Las salidas y la marca de tiempo de EtherCAT se escriben en el primer ciclo. El
Activate
la salida se establece en 0.En el segundo ciclo, el
Activate
la salida está configurada en 3 pulgadasSTATE_ACTIVATE_EVENT_IN_EL2252
. Esto activa el evento en la terminal.
En
STATE_WAIT_UNTIL_THE_INPUTS_MATCH_THE_OUTPUTS
, el sistema espera entonces hasta que se haya ejecutado el evento. Las señales delFeedback
para ello se utiliza la entrada del terminal.
Mapeo PDO EL2252

Main
En el programa principal, se configuran cuatro conmutadores (dos en cada pista). Las pistas también tienen diferentes compensaciones de encendido/apagadoOnComp
, OffComp
):

El programa incluye las llamadas a bloques de funciones necesarias para activar una previsión para el eje y moverlo constantemente a 180°/s (*), así como para SMC_DigitalCamSwitch_HighPrecision
, DigitalCamSwitch_EL2258
, y DigitalCamSwitch_EL2252
. Antes de iniciar el movimiento, el bus de campo debe estar completamente encendido. De lo contrario, los eventos no se pueden transmitir al terminal
(*) Se eligió el movimiento constante para mantener el ejemplo simple y claro. Sin embargo, el SMC_DigitalCamSwitch_HighPrecision
el bloque de funciones funciona con todo tipo de movimientos. Por ejemplo, también proporciona marcas de tiempo exactas durante una fase de aceleración o con
Puesta en servicio
Cree la aplicación y descárguela en un controlador.
Inicie la aplicación.