Ejemplo 02 de CNC: Decodificación en línea con variables
Ver el CNC02_online.project proyecto de ejemplo en el directorio de instalación de CODESYS bajo ..\CODESYS SoftMotion\Examples.
El ejemplo muestra cómo usar variables para decodificar un programa CNC.
Crear un programa NC en el editor CNC
Crear un
CNCOnlineprograma con un SoftMotion controlador.Cree una lista de variables globales y declare dos variables.
VAR_GLOBAL g_x: REAL:=100; g_y:REAL:=50; END_VARInsertar un Programa CNC objeto nombrado
Example.Selecciona el Implementación
Din66025y el Modo de compilaciónSMC_CNC_REF. Este modo es necesario porque utiliza variables en su programa.Especifique los siguientes bloques de movimiento:
Editor CNC:

Creación de una interfaz de accionamiento y configuración de PLC
Definir una estructura de unidad (p. Ej. CNCdirect).
Crear un programa IEC
Agregue un POU (CFC) llamado
Patha la aplicación.La decodificación del programa NC para OUTQUEUE y la verificación de velocidad se realizan en el
Pathprograma.Vocación
SMC_CheckVelocitieses requerido.CFC:

Agregue un POU (CFC) llamado
Ipoa la aplicación.Este programa es casi idéntico al
CNCdirectproyecto de muestra. Sin embargo, la entrada de datos del interpolador no se corresponde con los nombres de los programas del CNC (ADR(Example)), sino a la salida OutQueue de los bloques de funciones de preprocesamiento de ruta (checkVel.poqDataOut).
Crear una tarea para el preprocesamiento de rutas
Porque ha seleccionado el modo de compilación SMC_CNC_REF, debe realizar la decodificación y el preprocesamiento de ruta en el programa IEC. Este cálculo requiere mucho tiempo. No es necesario que se ejecute en el ciclo del interpolador porque se genera un objeto de ruta por llamada al decodificador, y este objeto se usa normalmente para muchas llamadas al interpolador. Debe cambiar esta operación a una tarea con baja prioridad y llamadas menos frecuentes.
Crear un
PathTasktarea.Defina los siguientes parámetros:
Prioridad: 10
Intervalo: T # 30 ms
Añade el
PathPOU a la tarea.

En la tarea lenta, al principio se genera aproximadamente un objeto GEOINFO por ciclo. Este objeto se almacena en la estructura OUTQUEUE del bloque de funciones del decodificador. Si la SALIDA está llena, los bloques de funciones de la tarea lenta se detienen hasta que la SALIDA ya no está llena. Esto sucede tan pronto como la tarea rápida procesa el primer objeto GEOINFO y lo elimina de la SALIDA.
Luego, los bloques de función de la tarea lenta se vuelven a activar y llenan la estructura OUTQUEUE.
En la tarea rápida, un punto de ruta de la estructura OUTQUEUE, que el
DataInpuntos de entrada, se calcula y procesa en cada ciclo. Debido a que un objeto GEOINFO generalmente consta de múltiples puntos de ruta, se necesitan algunos ciclos hasta que el primer objeto GEOINFO sea procesado y eliminado automáticamente por el interpolador.Como el procesamiento de un objeto GEOINFO dura varios ciclos en lugar de su creación, la tarea lenta se puede llamar con menos frecuencia que la tarea rápida.
Sin embargo, los tiempos de las tareas deben seleccionarse de modo que siempre se almacenen suficientes objetos GEOINFO en el último OUTQUEUE de la tarea lenta, evitando así la aparición de datos insuficientes. Esto sucede cuando no hay más objetos GEOINFO disponibles para el interpolador desde DataIn y aún no se ha alcanzado el final de la ruta. En este caso, el interpolador se ralentiza y se detiene hasta que los nuevos elementos de datos vuelven a estar disponibles.
Creación de una interfaz operativa y una interfaz de prueba
La visualización corresponde a la CNCdirect.project proyecto de muestra. Agregue plantillas adicionales a los nuevos bloques de funciones (SMC_NCDecoder y SMC_CheckVelocities). Cree una pantalla también para las variables globales g_x y g_y para que pueda comprobar su funcionamiento más tarde en la puesta en servicio.
Puesta en servicio
Compile e inicie el programa creado. El programa ejecuta el movimiento del CNC tan pronto como Execute Se ha configurado la entrada del decodificador y el interpolador. Si cambia los valores de las variables globales, entonces se utilizan cuando se reinicia el decodificador y la ruta se adapta en consecuencia. Supervise la función del Append entrada del decodificador también.