Skip to main content

El CODESYS Recipes Gestor de recetas

El CODESYS Recipes el complemento es un sistema para almacenar y cargar conjuntos de variables (recetas) en un controlador o mediante el sistema de programación. El gestor de recetas permite gestionar de forma centralizada diferentes configuraciones o estados de parámetros de una aplicación, guardarlos en el controlador y restaurarlos cuando sea necesario. Esto permite que el comportamiento de la aplicación se adapte de manera flexible a los diferentes estados operativos o variantes del producto

Uso del administrador de recetas en un CODESYS proyecto

Para usar el Recipe Manager, se debe crear un objeto Recipe Manager en el árbol de dispositivos de la aplicación. Se debe agregar al menos una definición de receta debajo del administrador de recetas para que las recetas se puedan crear, administrar y procesar.

Para obtener más información, consulte lo siguiente: Definición de receta

Principio básico de la gestión de recetas

Una receta consiste en un conjunto definido de variables, que es la definición de la receta. Al cargar o escribir una receta, todas las variables contenidas en una receta se actualizan simultáneamente en el controlador. Como resultado, los grupos de parámetros se pueden configurar o leer de forma coherente y reproducible.

ajustes como la ubicación de almacenamiento y el formato de almacenamiento se configuran en el objeto Recipe Manager. Se puede crear cualquier número de definiciones de recetas debajo de este objeto.

Las recetas pueden ser:

  • Almacenado en archivos

  • Cargado desde archivos al controlador

  • Gestionado exclusivamente dentro del controlador

Uso de recetas en dispositivos remotos

Si hay variables de fuente de datos implicadas y se configura un intercambio de fuentes de datos, los valores de las variables de las recetas se transfieren automáticamente hacia/desde otro controlador. La lectura y la escritura se producen de forma sincrónica. Esto significa que todas las variables configuradas en una definición de receta se actualizan al mismo tiempo

Después de leer o escribir, puede utilizar la llamada g_RecipeManager.LastError para comprobar si la transferencia se ha realizado correctamente o no (g_RecipeManager.LastError = 0).

Conceptos operativos

La gestión de recetas se puede controlar desde diferentes niveles:

  1. CODESYS interfaz de programación

    Puede cargar, editar y guardar manualmente las recetas directamente en la interfaz de programación.

  2. Visualización

    En la visualización, la llamada a los comandos de receta se implementa mediante el configuración de entrada (comando de ejecución) para un elemento de visualización. De este modo, un usuario de visualización puede controlar la ejecución de los comandos de la receta.

  3. Programa de aplicación

    En tiempo de ejecución, la definición de recetas y los comandos de recetas se pueden llamar en el programa de aplicación. Para hacer esto, implemente el proceso para escribir, leer o monitorear definiciones de recetas en su código usando los métodos del RecipeManCommands bloque de funciones de la RecipeManagement biblioteca.

    Para más información, ver: ComandosRecetaMan (FB)

Modos de carga

El Gestor de recetas admite dos modos de carga para cargar archivos de recetas:

  • Coincidencia exacta

    Los datos de un archivo de recetas se cargan solo si su estructura coincide completa y exactamente con la lista de variables de la definición de receta correspondiente.

  • Coincidencia selectiva

    cargan todas las variables de un archivo de recetas que aparecen en la lista de variables de la definición de recetas, independientemente de su posición en la lista. Las variables para las que no haya datos en el archivo de recetas no se actualizarán.

El modo de carga seleccionado en el Gestor de recetas es especialmente relevante en las siguientes situaciones:

  • Se ha creado o modificado un archivo de recetas con un editor externo y ya no coincide exactamente con las variables configuradas internamente ni con su orden.

  • Se ha ampliado un archivo de recetas para una nueva aplicación, pero ya no se puede usar en proyectos antiguos que no esperan estas variables adicionales. (Una solución más sencilla sería crear un archivo V2, pero el modo de carga también puede contribuir a la compatibilidad).

Si no se puede cargar el archivo de recetas

Si no se puede cargar un archivo de recetas, defina el modo de carga en Concordancia selectiva. Tenga en cuenta que esta configuración se aplica a todas las recetas cargadas en la aplicación en la que está integrado el administrador de recetas.

Para obtener más información, consulte lo siguiente: Administrador de recetas

Acceso a archivos

El acceso a los archivos externos que se encuentran fuera del sistema de archivos del PLC está restringido por motivos de seguridad. Como resultado, cualquier intento de abrir o escribir archivos en directorios externos fallará.

En el caso de CODESYS Control Win SL, la ruta predeterminada hace referencia, por ejemplo, al directorio de los archivos de ejecución PlcLogic que representan el sistema de archivos PLC interno. Para evitar infracciones de acceso, utilice este directorio u otro directorio interno de su controlador específico como ruta raíz.

Si no se puede acceder al sistema de archivos del PLC (o no se debería poder acceder a él) mediante el explorador de archivos del sistema host, utilice Pestaña: Archivo dentro CODESYS para administrar archivos (por ejemplo, los que se usan en recetas).

Solución de problemas

Están disponibles los siguientes procedimientos para evaluar los estados de error:

  • Capturar el código de error devuelto por una operación

    Compare el valor devuelto con los estados de error definidos de la lista de ReturnValues (GVL).

  • Recuperando el último error que se produjo

    Para obtener el último código de error que se ha producido, utilice RecipeManCommands.GetLastError() método.

Para obtener un análisis detallado de si una operación de carga se realizó total o parcialmente correctamente (por ejemplo, si no se han cargado todas las variables de una receta), utilice el RecipeManCommands.GetLastInfo() método.

Este método proporciona un código de información que se puede evaluar mediante el InfoValues (ENUM) enumeración.

Sugerencia

Es posible que los códigos de error almacenados tengan que restablecerse manualmente, por ejemplo, mediante el RecipeManCommands.ResetLastInfo() método.

Detección de cambios

Para detectar cambios con facilidad, utilice el InfoValues (ENUM) enumeración tal como se describe en la sección de solución de problemas.

Si se necesita información más detallada sobre los cambios de estado, puede implementar estructuras de datos redundantes. Esto le permite comparar el estado anterior y el estado actual de una receta, así como los valores de las variables actuales en el controlador

Mecanismo de ventana corredera

El mecanismo de ventana deslizante se usa con frecuencia para leer los valores de las recetas y sus nombres de variables.

Se usa para ver un rango definido de entradas dentro de un búfer significativamente mayor mediante el uso de un tamaño de ventana y un desplazamiento (posición de la ventana en la lista de datos).

Para obtener más información, consulte lo siguiente: RecipeManCommands.getRecipeValues (), RecipeManCommands.getRecipeVariableNames (), y RecipeManCommands.getRecipeNames ()

SlidingWindowExample.png

Esquema de nombres para archivos de recetas

Los archivos de recetas siguen un esquema de nombres definido para que, por ejemplo, puedan identificarse de forma única en el sistema de archivos.

Note the following naming scheme: <recipe>.<recipe definition>.<extension>

  • Recipe: Nombre de la receta específica.

  • Recipe definition: Nombre de la definición de receta respectiva.

  • Extension: Extensión de archivo (p. ej., .txt o .csv) que se especifica en el árbol de dispositivos de la pestaña Gestor de recetas.

Funcionalidad especial para números de punto flotante

Para variables de tipo REAL o LREAL, se hace una distinción entre si el valor es exactamente convertible o no.

  • Si es posible convertir el valor exactamente, solo se guarda el valor numérico en el archivo de recetas.

  • Si la conversión exacta no es posible, se escribe una cadena codificada en hexadecimal en el archivo de recetas junto al valor numérico. Esto debería tener el efecto de que también un número de punto flotante no convertible devuelva

Esta función se puede desactivar con la RECIPE_GENERATE_SIMPLE_STRINGREAL definición del compilador.

Sugerencia

En las propiedades del objeto de la aplicación principal del Construir pestaña, puedes entrar en la RECIPE_GENERATE_SIMPLE_STRINGREAL el compilador se define en el El compilador define campo. Como resultado, no se almacena ninguna cadena codificada en hexadecimal.

Para obtener más información, consulte lo siguiente: Diálogo: Propiedades: Construir

Administración de recetas en el controlador: uso de memoria

Cuando borres el Gestión de recetas en el PLC Si opta por esta opción, el gestor de recetas y las definiciones de recetas no utilizarán ninguna memoria del PLC.

Al seleccionar esta opción, se genera código para el Gestor de recetas y todas las definiciones de recetas, y este código se almacena en el PLC. El tamaño de la memoria utilizada depende principalmente del número de recetas y sus variables, así como del tipo de datos de las variables. El hecho de que los campos de la definición de la receta estén o no rellenados también influye. No se puede calcular el uso de memoria de las recetas. Debe determinarse mediante experimentación en el momento en que sea necesario. La siguiente tabla simplemente proporciona algunos principios rectores.

tabla 1. Uso de memoria para CODESYS V3 SP6 con CODESYS Control Win SL Controlador V3

Tamaño del código (bytes)

Tamaño de los datos (bytes)

Total (bytes)

Definición de receta con 100 INT variables

194406

79400

267352

Definición de receta con 200 INT variables

238318

121284

459344

Definición de receta con 300 INT variables

282230

163084

543856

Definición de receta con 100 BOOL variables

192742

69884

343168

Definición de receta con 200 BOOL variables

235446

101568

436872

Definición de receta con 300 BOOL variables

278146

133284

510072

Definición de receta con 100 STRING variables

203278

870084

1154000

Definición de receta con 100 STRING variables

255570

1709784

2973296

Definición de receta con 100 STRING variables

307886

2549484

2964112