Concept de diagnostic

Présentation

PacDrive 3 vous fournit un concept de diagnostic à trois niveaux pour les bibliothèques. Ce concept est valable pour les bibliothèques Technology/Module du système PacDrive 3 (bibliothèque PD_PacDrive.lib, par exemple) et utilise des énumérations pour le codage de diagnostic.

En principe, les informations de diagnostic sont organisées selon les niveaux suivants :

  1. Informations générales sur l'exception. Aucune connaissance particulière concernant le fonctionnement du POU n'est requise.

  2. Messages de diagnostic et d'état propres au POU (partie 1) : informations détaillées sur la source à l'origine des messages de diagnostic ou d'état.

  3. Messages de diagnostic et d'état propres au POU (partie 2) : informations dynamiques détaillées sur la source à l'origine des messages de diagnostic ou d'état.

    Ces informations changent lors de l'exécution (par exemple, informations sur la condition des paramètres d'entrée). Cette sortie de diagnostic est facultative pour les POU.

Le concept de diagnostic de la famille de bibliothèques PacDrive 3 offre les avantages suivants :

  • Affichage en ligne des messages de diagnostic

  • Informations précises sur les événements de diagnostic via les codes de diagnostic

  • Présentation de l'état ou de la condition exceptionnelle d'un POU

  • Solutions pertinentes pour corriger les causes de conditions exceptionnelles

  • Messages de diagnostic au format énumération permettant la prise en charge multilingue des afficheurs IHM

Structure des informations indépendantes des POU

La sortie de diagnostic q_etDiag de type GD.ET_Diag fournit des informations de diagnostic indépendantes de la bibliothèque, telles que InputParameterInvalid. Il peut s'agir d'une solution au problème diagnostiqué.

Selon la valeur de GD.ET_Diag, la sortie est soit une description d'état, soit un message d'exception. Une valeur différente de GD.ET_Diag.Ok correspond à un message d'exception.

L'énumération GD.ET_Diag et ses éléments figurent dans la bibliothèque PD_GlobalDiagnostics. Cette bibliothèque inclut également une fonction de conversion pour l'énumération GD.ET_Diag.

L'espace de noms par défaut de la bibliothèque PD_GlobalDiagnostics est GD. L'adressage des POU, structures de données, énumérations et constantes doit s'effectuer au moyen de cet espace de noms.

Structure des informations propres aux POU

Les informations de diagnostic des POU peuvent exprimer soit une condition exceptionnelle, soit une condition interne (état) pendant le fonctionnement normal du POU (par exemple, WaitForStart). Les informations (condition exceptionnelle ou état) sont rapportées via la même sortie (q_etDiagExt). La sortie q_etDiag indique si un état ou une exception est signalé.

Blocs fonction

Les blocs fonction comportent trois sorties : q_etDiag, q_etDiagExt et q_sMsg (facultative). Ces sorties sont regroupées, c'est-à-dire qu'elles sont définies l'une après l'autre dans le POU.

L'exemple de bloc fonction ci-après reprend la structure schématique d'un POU :

Sortie

Type de données

Signification

q_etDiag

GD.ET_Diag

Informations de diagnostic générales, par exemple InputParameterInvalid.

NOTE : si possible, GD.ET_Diag contient des codes de diagnostic formulés de façon générique (par exemple, DriveConditionInvalid et InputParameterInvalid). Chaque élément d'énumération est représenté par un nom et une valeur. L'IHM peut utiliser ensuite cette valeur afin que le nom de l'énumération puisse être converti dans un langage neutre.
  • GD.ET_Diag.Ok : le message d'état q_etDiagExt renseigne sur l'état du POU.

  • <> GD.ET_Diag.Ok : le message de diagnostic q_etDiagExt indique le type d'exception.

q_etDiagExt

ET_DiagExt

Informations de diagnostic détaillées, codées en tant que valeur de la fonction ou du service exécuté dans le POU. Par exemple, AccRange (Accélération hors limites)/WaitForStart peut être renvoyé comme diagnostic ou état.

q_etDiagExt fournit une valeur numérique faisant office d'index d'une explication plus détaillée de l'origine du message renvoyé, qui peut être utilisée comme index pour des messages d'afficheur dans plusieurs langues.

q_sMsg

STRING[80]

Message facultatif déclenché par un événement et fournissant plus de détails sur la condition de diagnostic (par exemple, 0 < i_lrAcc < MaxAcc).

q_sMsg renvoie une chaîne dynamique contenant diverses informations (en anglais) à propos du diagnostic.

q_sMsg est modifié en cours d'exécution (par l'exception VelRange: ActualValue: 5003, MaxValue: 5000, par exemple).

Au cours du fonctionnement normal des POU (q_etDiag=GD.ET_Diag.Ok), q_sMsg peut fournir des informations sur l'état (comme le délai d'étanchéité restant).

Exemple d'informations de diagnostic :

Fonctions

Les fonctions disposent elles aussi des sorties q_etDiag, q_etDiagExt et q_sMsg (facultative).

S'il n'existe qu'un résultat, il est fourni par la valeur renvoyée directe. Si une fonction possède plusieurs résultats, la valeur renvoyée directe est une structure comprenant les résultats.

Il est également possible de renvoyer les résultats de la fonction via plusieurs sorties. Dans ce cas, la valeur renvoyée directe est une valeur BOOL aléatoire impossible à interpréter.

Lisez la valeur q_etDiag pour vérifier que l'appel de fonction a abouti. En effet, cette information ne figure pas dans la valeur renvoyée directe de la fonction.

Il existe une exception lorsque la valeur renvoyée est <> GD.ET_Diag.Ok. Les fonctions sont alors entièrement traitées dans la tâche d'appel, leur état est ensuite évalué, puis les sorties q_etDiag et q_etDiagExt indiquent le résultat de l'opération.