Skip to main content

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 :

  1. CODESYS interface de programmation

    Vous pouvez charger, modifier et enregistrer manuellement les recettes directement dans l'interface de programmation.

  2. 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.

  3. 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 RecipeManCommands bloc fonction du RecipeManagement bibliothè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 ()

SlidingWindowExample.png

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.

Tableau 1. Utilisation de la mémoire pour CODESYS V3 SP6 avec CODESYS Control Win SL Contrôleur V3

Taille du code (octets)

Taille des données (octets)

Total (octets)

Définition de la recette avec 100 INT variables

194406

79400

267352

Définition de la recette avec 200 INT variables

238318

121284

459344

Définition de la recette avec 300 INT variables

282230

163084

543856

Définition de la recette avec 100 BOOL variables

192742

69884

343168

Définition de la recette avec 200 BOOL variables

235446

101568

436872

Définition de la recette avec 300 BOOL variables

278146

133284

510072

Définition de la recette avec 100 STRING variables

203278

870084

1154000

Définition de la recette avec 100 STRING variables

255570

1709784

2973296

Définition de la recette avec 100 STRING variables

307886

2549484

2964112