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:
CODESYS interfaz de programación
Puede cargar, editar y guardar manualmente las recetas directamente en la interfaz de programación.
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.
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
RecipeManCommandsbloque de funciones de laRecipeManagementbiblioteca.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 ()

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.
Tamaño del código (bytes) | Tamaño de los datos (bytes) | Total (bytes) | |
|---|---|---|---|
Definición de receta con 100 | 194406 | 79400 | 267352 |
Definición de receta con 200 | 238318 | 121284 | 459344 |
Definición de receta con 300 | 282230 | 163084 | 543856 |
Definición de receta con 100 | 192742 | 69884 | 343168 |
Definición de receta con 200 | 235446 | 101568 | 436872 |
Definición de receta con 300 | 278146 | 133284 | 510072 |
Definición de receta con 100 | 203278 | 870084 | 1154000 |
Definición de receta con 100 | 255570 | 1709784 | 2973296 |
Definición de receta con 100 | 307886 | 2549484 | 2964112 |