Comment pouvons-nous aider ?

Print

Utilisateurs, groupes d’utilisateurs et journal des logs des utilisateurs

Ce que vous allez réaliser

Le projet terminé comprend deux groupes, quatre utilisateurs, des contrôles protégés par groupe, une zone de connexion et un journal des opérations qui indique qui a modifié quoi.

Groupe Utilisateurs Autorisés à (exemple)
Operators Operator1, Operator2 Piloter la machine : marche et arrêt, consignes, sélection de recette
Maintenance Tech1, Tech2 Tout ce que les Operators peuvent faire, plus les écrans de réglages, l’export du journal et l’effacement du journal

Les noms et les droits sont des exemples ; remplacez-les par les vôtres. Attribuez à chaque utilisateur un mot de passe unique et ne conservez aucun mot de passe par défaut.

 

Avant de commencer

Utilisez User Permission pour tout ce tutoriel ; c’est la gestion des utilisateurs actuelle de CommandHMI

  • User Permission (Project Manager > Setting > User Permission) : utilisateurs nommés et groupes d’utilisateurs. C’est celle qu’il faut utiliser.
  • Set user password (HMI Parameter Settings) : 8 utilisateurs fixes avec des niveaux de 1 à 8. C’est l’ancienne gestion des utilisateurs, conservée pour la compatibilité avec les projets plus anciens. Ne l’utilisez pas dans les nouveaux projets et ne mélangez pas les deux.

Créer les deux groupes

Créez d’abord les groupes, afin qu’ils existent lorsque vous ajouterez les utilisateurs.

  1. Dans le Project Manager, ouvrez Setting et double-cliquez sur User Permission.
  2. Utilisez Add user group et saisissez le nom Operators
  3. Répétez l’opération pour Maintenance
  4. Laissez en place les utilisateurs et groupes par défaut. Le logiciel ne permet pas de les supprimer.

Choisissez des noms de groupe courts : l’IHM affiche le groupe courant via LW63200, qui contient 32 caractères.

 

Créer les 4 utilisateurs

Ajoutez chaque utilisateur dans la même boîte de dialogue et affectez-le à un seul et unique groupe.

  1. Dans User Permission, utilisez Add user.
  2. Saisissez le nom d’utilisateur et un mot de passe, puis sélectionnez le groupe.
  3. Répétez l’opération pour les quatre utilisateurs ci-dessous.
  4. Validez avec OK et enregistrez le projet.
  • LW60838~60853 affiche le nom de l’utilisateur actuellement connecté (ASCII, longueur 32)
  • LW63200~63215

 

 

Restreindre les contrôles par groupe

L’accès se définit pour chaque contrôle (Bit switch, Word switch,..). L’onglet Advanced détermine qui peut l’actionner, l’onglet Visibility détermine qui peut le voir.

  1. Ajoutez un contrôle, par exemple un Bit switch, et ouvrez l’onglet Advanced.
  2. Activez l’option de contrôle d’accès par utilisateur et sélectionnez les groupes autorisés.
    • Contrôle de niveau opérateur : autoriser Operators et Maintenance
    • Contrôle réservé à la maintenance : autoriser Maintenance
  3. Pour masquer un contrôle au lieu de le verrouiller, réglez la même option dans l’onglet Visibility.

 

Seuls les contrôles de saisie disposent de cette option : bit button, word button, screen button, function button, multi-function button, multi-state button, numeric input, ASCII input, combo box, radio button, stepping button, slider et recipe selector. Les contrôles d’affichage ne peuvent être masqués que via l’onglet Visibility.

Connexion, déconnexion et affichage de l’utilisateur courant

  • Bouton de connexion : voir « Function Button » Log on
  • Bouton de déconnexion : voir « Function Button » Cancel user login
  • Affichage de l’utilisateur connecté
    • Nom de l’utilisateur courant, ASCII Display, Monitor address LW60838, Total 32
    • Nom du groupe courant, ASCII Display, Monitor address LW63200, Total 32

Placez ces quatre contrôles dans un en-tête visible sur chaque écran ; un écran public convient bien pour cela.

Pour déconnecter l’utilisateur depuis un script ou depuis l’automate, mettez LB60133 à 1. Le bit se remet automatiquement à zéro une fois la déconnexion effectuée.

Configurer le journal des opérations avec le journal d’historique

Nous allons utiliser :

  • LW1000~1015 : nom d’utilisateur à écrire dans le journal (32 caractères ASCII, champ libre, à adapter)
  • LW39900~39915 : copie du nom d’utilisateur précédent (champ libre, à adapter)
  • LW60838~60853 : nom de l’utilisateur connecté (32 caractères ASCII, lecture seule)
  • LB1000 : déclencheur d’enregistrement des événements
  1. Créez un journal de données historiques
  2. Indiquez le nombre maximal d’enregistrements souhaité (ici, 50)
  3. Ajoutez LB1000 comme déclencheur d’enregistrement, avec Auto-Reset

Le script qui surveille les changements d’utilisateur et les déconnexions

#include "MacroInit.h"
//#include "subFun1.c" //Example
#define USER_NAME_ADDR 60838 // LW60838~60853 : user name of the logged-in user (32 ASCII characters, read-only)
#define PREV_NAME_ADDR 39900 // copy of the previous user name (free-form field, to be adapted)
#define LOG_TEXT_ADDR 1000 // LW1000~1015 : user name to bewrite in log (32 ASCII characters, free-form field, to be adapted)
#define USER_NAME_WORDS 16 // 32 char = 16 words
void Macro_main(IN *p)
{
MarcoInit
int i;
int changed = 0;
char logoutText[] = "User logout";
// Check if logged user changed
for (i = 0; i < USER_NAME_WORDS; i++) { if (LocalWord[USER_NAME_ADDR + i] != LocalWord[PREV_NAME_ADDR + i]) { changed = 1; LocalWord[PREV_NAME_ADDR + i] = LocalWord[USER_NAME_ADDR + i]; } } if (changed) { if (LocalWord[USER_NAME_ADDR] == 0) { // Logout : empty name -> fixed text
for (i = 0; i < USER_NAME_WORDS; i++)
{
LocalWord[LOG_TEXT_ADDR + i] = 0;
}
for (i = 0; logoutText[i] != 0; i++)
{
LocalWord[LOG_TEXT_ADDR + i / 2] |= (unsigned short)logoutText[i] << (8 * (i % 2));
}
}
else
{
// Login : copy of the user’s name
for (i = 0; i < USER_NAME_WORDS; i++)
{
LocalWord[LOG_TEXT_ADDR + i] = LocalWord[USER_NAME_ADDR + i];
}
}
// Trigger for recording events
LocalBit[1000] = 1;
}
}

 

Collez-le dans un nouveau script (New script) du Script Editor, compilez-le, puis appelez-le toutes les 500 ms.

et ajoutez le contrôle Historical data display

Pour obtenir ceci :

Pour tester, vous pouvez ajouter des boutons de changement d’utilisateur et de déconnexion avec des bit buttons

Vous pouvez télécharger le projet ici