Le CODESYS Recipes Gestionnaire de recettes
Le CODESYS Recipes L'add-on est un système permettant de stocker et de charger des ensembles de variables (recettes) sur un contrôleur ou via le système de programmation. Le gestionnaire de recettes permet de gérer de manière centralisée les différentes configurations ou états des paramètres d'une application, de les enregistrer dans le contrôleur et de les restaurer en cas de besoin. Cela permet d'adapter de manière flexible le comportement de l'application aux différents états de fonctionnement ou variantes de produits
Utilisation du gestionnaire de recettes dans un CODESYS projet
Pour utiliser le Recipe Manager, un objet Recipe Manager doit être créé dans l'arborescence des appareils de l'application. Au moins une définition de recette doit être ajoutée sous le gestionnaire de recettes afin que les recettes puissent être créées, gérées et traitées.
Pour plus d'informations, consultez les rubriques suivantes : Définition de recette
Principe de base de la gestion des recettes
Une recette se compose d'un ensemble défini de variables, qui constitue la définition de la recette. Lors du chargement ou de l'écriture d'une recette, toutes les variables contenues dans une recette sont mises à jour simultanément sur le contrôleur. Par conséquent, les groupes de paramètres peuvent être définis ou lus de manière cohérente et reproductible
Les paramètres tels que l'emplacement de stockage et le format de stockage sont configurés dans l'objet Recipe Manager. Un certain nombre de définitions de recettes peuvent être créées en dessous de cet objet.
Les recettes peuvent être :
Stocké dans des fichiers
Chargé depuis des fichiers vers le contrôleur
Géré exclusivement au sein du contrôleur
Utilisation de recettes sur des appareils distants
Si des variables de source de données sont impliquées et qu'un échange de sources de données est configuré, les valeurs des variables des recettes sont automatiquement transférées vers/depuis un autre contrôleur. La lecture et l'écriture se font de manière synchrone. Cela signifie que toutes les variables configurées dans une définition de recette sont mises à jour en même temps.
Après avoir lu ou écrit, vous pouvez utiliser l'appel g_RecipeManager.LastError pour vérifier si le transfert a été effectué avec succès (g_RecipeManager.LastError = 0).
Concepts de fonctionnement
La gestion des recettes peut être contrôlée à différents niveaux :
CODESYS interface de programmation
Vous pouvez charger, modifier et enregistrer manuellement les recettes directement dans l'interface de programmation.
Visualisation
Dans la visualisation, l'appel des commandes de recette est implémenté à l'aide du configuration d'entrée (commande d'exécution) pour un élément de visualisation. Ce faisant, un utilisateur de visualisation peut contrôler l'exécution des commandes de recettes.
Programme de candidature
Lors de l'exécution, la définition de recette et les commandes de recette peuvent être appelées dans le programme d'application. Pour ce faire, vous implémentez le processus d'écriture, de lecture ou de surveillance des définitions de recette dans votre code en utilisant les méthodes du
RecipeManCommandsbloc fonction duRecipeManagementbibliothèque.Pour plus d'informations, consultez : RecipeManCommands (FB)
Modes de chargement
Le gestionnaire de recettes prend en charge deux modes de chargement pour le chargement des fichiers de recettes :
Correspondance exacte
Les données d'un fichier de recettes ne sont chargées que si sa structure correspond complètement et exactement à la liste de variables de la définition de recette correspondante.
Correspondance sélective
Toutes les variables d'un fichier de recette qui apparaissent dans la liste des variables de la définition de la recette sont chargées, quelle que soit leur position dans la liste. Les variables pour lesquelles aucune donnée n'existe dans le fichier de recette ne seront pas mises à jour.
Le mode de chargement sélectionné dans le gestionnaire de recettes est particulièrement pertinent dans les situations suivantes :
Un fichier de recettes a été créé ou modifié à l'aide d'un éditeur externe et ne correspond plus exactement aux variables configurées en interne ni à leur ordre.
Un fichier de recettes a été étendu pour une nouvelle application, mais ne peut plus être utilisé dans les anciens projets qui ne nécessitent pas ces variables supplémentaires. (Une solution plus simple serait de créer un fichier V2, mais le mode de chargement peut également contribuer à la compatibilité.)
Si le fichier de recette ne peut pas être chargé
Si un fichier de recettes ne peut pas être chargé, réglez le mode de chargement sur Correspondance sélective. Notez que ce paramètre s'applique à toutes les recettes chargées dans l'application où le gestionnaire de recettes est intégré.
Pour plus d'informations, consultez les rubriques suivantes : Gestionnaire de recettes
Accès aux fichiers
L'accès aux fichiers externes situés en dehors du système de fichiers PLC est restreint pour des raisons de sécurité. Par conséquent, toute tentative d'ouverture ou d'écriture de fichiers dans des répertoires externes échouera.
Dans le cas de CODESYS Control Win SL, le chemin par défaut fait référence, par exemple, au répertoire des fichiers d'exécution PlcLogic qui représentent le système de fichiers interne du PLC.
Pour éviter les violations d'accès, utilisez ce répertoire ou un autre répertoire interne de votre contrôleur spécifique comme chemin racine.
Si le système de fichiers PLC n'est pas accessible (ou ne devrait pas être accessible) via l'explorateur de fichiers du système hôte, utilisez Onglet : Fichier à l'intérieur CODESYS pour gérer les fichiers (par exemple, ceux utilisés dans les recettes).
Résolution des problèmes
Les procédures suivantes sont disponibles pour évaluer les états d'erreur :
Capture du code d'erreur renvoyé par une opération
Comparez la valeur de retour avec les états d'erreur définis dans la liste des Valeurs de retour (GVL).
Récupération de la dernière erreur survenue
Pour obtenir le dernier code d'erreur survenu, utilisez
RecipeManCommands.GetLastError()méthode.
Pour une analyse détaillée de la réussite totale ou partielle d'une opération de chargement (par exemple, si toutes les variables d'une recette n'ont pas été chargées), utilisez le RecipeManCommands.GetLastInfo() méthode.
Cette méthode fournit un code d'information qui peut être évalué à l'aide de InfoValeurs (ENUM) énumération.
Astuce
Les codes d'erreur enregistrés peuvent devoir être réinitialisés manuellement, par exemple à l'aide du RecipeManCommands.ResetLastInfo() méthode.
Détection des changements
Pour détecter facilement les modifications, utilisez le InfoValeurs (ENUM) énumération comme décrit dans la section de dépannage.
Si des informations plus détaillées sur les changements d'état sont nécessaires, vous pouvez implémenter des structures de données redondantes. Cela vous permet de comparer l'état précédent et l'état actuel d'une recette, ainsi que les valeurs des variables actuelles sur le contrôleur.
Mécanisme de fenêtre coulissante
Le mécanisme de fenêtre coulissante est fréquemment utilisé pour lire les valeurs des recettes et leurs noms de variables.
Il est utilisé pour visualiser une plage définie d'entrées dans une mémoire tampon significativement plus grande en utilisant une taille de fenêtre et un décalage (positionnement de la fenêtre sur la liste de données).
Pour plus d'informations, consultez les rubriques suivantes : RecipeManCommands.getRecipeValues (), RecipeManCommands.getRecipeVariableNames (), et RecipeManCommands.getRecipeNames ()

Schéma de dénomination pour les fichiers de recettes
Les fichiers de recettes suivent un schéma de dénomination défini afin de pouvoir, par exemple, être identifiés de manière unique dans le système de fichiers.
Note the following naming scheme: <recipe>.<recipe definition>.<extension>
Recipe: nom de la recette spécifique.Recipe definition: nom de la définition de recette correspondante.Extension: extension de fichier (par exemple .txt ou .csv) qui est spécifiée dans l'arborescence des appareils sur l'onglet Recipe Manager.
Fonctionnalité spéciale pour les nombres à virgule flottante
Pour les variables de type REAL ou LREAL, une distinction est faite si la valeur est exactement convertible ou non.
S'il est possible de convertir la valeur exactement, seule la valeur numérique est enregistrée dans le fichier de recette.
Si la conversion exacte n'est pas possible, une chaîne codée en hexadécimal est écrite dans le fichier de recette à côté de la valeur numérique. Cela devrait avoir pour effet qu'un nombre à virgule flottante non convertible renvoie également
Cette fonctionnalité peut être désactivée à l'aide du RECIPE_GENERATE_SIMPLE_STRINGREAL définir par le compilateur.
Astuce
Dans les propriétés de l'objet de l'application parente sur Construisez onglet, vous pouvez entrer RECIPE_GENERATE_SIMPLE_STRINGREAL défini par le compilateur dans le Définitions du compilateur champ. Par conséquent, aucune chaîne codée en hexadécimal n'est stockée
Pour plus d'informations, consultez les rubriques suivantes : Boîte de dialogue : Propriétés : Construire
Gestion des recettes sur le contrôleur — utilisation de la mémoire
Lorsque vous effacez le Gestion des recettes dans le PLC option, le gestionnaire de recettes et les définitions de recettes n'utiliseront aucune mémoire sur l'automate.
Lorsque vous sélectionnez cette option, le code est généré pour le gestionnaire de recettes et toutes les définitions de recettes, et ce code est stocké sur l'automate. La taille de la mémoire utilisée dépend principalement du nombre de recettes et de leurs variables, ainsi que du type de données des variables. Le fait que les champs de la définition de recette soient remplis ou non a également un effet. L'utilisation de la mémoire des recettes ne peut pas être calculée. Il doit être déterminé par des expériences au moment où cela est nécessaire. Le tableau suivant ne fournit que quelques principes directeurs.
Taille du code (octets) | Taille des données (octets) | Total (octets) | |
|---|---|---|---|
Définition de la recette avec 100 | 194406 | 79400 | 267352 |
Définition de la recette avec 200 | 238318 | 121284 | 459344 |
Définition de la recette avec 300 | 282230 | 163084 | 543856 |
Définition de la recette avec 100 | 192742 | 69884 | 343168 |
Définition de la recette avec 200 | 235446 | 101568 | 436872 |
Définition de la recette avec 300 | 278146 | 133284 | 510072 |
Définition de la recette avec 100 | 203278 | 870084 | 1154000 |
Définition de la recette avec 100 | 255570 | 1709784 | 2973296 |
Définition de la recette avec 100 | 307886 | 2549484 | 2964112 |