Come possiamo aiutarti?

Print

Utenti, gruppi di utenti e registro dei log degli utenti

Cosa verrà realizzato

Il progetto finito comprende due gruppi, quattro utenti, controlli protetti per gruppo, un’area di login e un registro delle operazioni che mostra chi ha modificato che cosa.

Gruppo Utenti Autorizzati a (esempio)
Operators Operator1, Operator2 Far funzionare la macchina: avvio e arresto, setpoint, selezione delle ricette
Maintenance Tech1, Tech2 Tutto ciò che possono fare gli Operators, più le schermate di impostazione, l’esportazione del registro e la cancellazione del registro

Nomi e diritti sono esempi; sostituirli con i propri. Assegnare a ogni utente una password univoca e non mantenere alcuna password predefinita.

 

Prima di iniziare

Utilizzare User Permission per tutto ciò che riguarda questo tutorial; è l’attuale gestione utenti di CommandHMI

  • User Permission (Project Manager > Setting > User Permission): utenti nominativi e gruppi di utenti. È quella da utilizzare.
  • Set user password (HMI Parameter Settings): 8 utenti fissi con livelli da 1 a 8. È la precedente gestione utenti, mantenuta per compatibilità con i progetti più vecchi. Non utilizzarla nei nuovi progetti e non mescolare le due.

Creare i due gruppi

Creare prima i gruppi, in modo che esistano quando si aggiungono gli utenti.

  1. Nel Project Manager, aprire Setting e fare doppio clic su User Permission.
  2. Utilizzare Add user group e inserire il nome Operators
  3. Ripetere per Maintenance
  4. Lasciare al loro posto gli utenti e i gruppi predefiniti. Il software non consente di eliminarli.

Usare nomi di gruppo brevi: l’HMI visualizza il gruppo corrente tramite LW63200, che contiene 32 caratteri.

 

Creare i 4 utenti

Aggiungere ogni utente nella stessa finestra di dialogo e assegnarlo a un solo gruppo.

  1. In User Permission, utilizzare Add user.
  2. Inserire il nome utente e una password, quindi selezionare il gruppo.
  3. Ripetere per i quattro utenti riportati di seguito.
  4. Confermare con OK e salvare il progetto.
  • LW60838~60853 visualizza il nome dell’utente attualmente connesso (ASCII, lunghezza 32)
  • LW63200~63215

 

 

Limitare i controlli per gruppo

L’accesso si imposta per ogni controllo (Bit switch, Word switch,..). La scheda Advanced stabilisce chi può azionarlo, la scheda Visibility stabilisce chi può vederlo.

  1. Aggiungere un controllo, ad esempio un Bit switch, e aprire la scheda Advanced.
  2. Attivare l’opzione di controllo degli accessi per utente e selezionare i gruppi autorizzati.
    • Controllo di livello operatore: autorizzare Operators e Maintenance
    • Controllo riservato alla manutenzione: autorizzare Maintenance
  3. Per nascondere un controllo invece di bloccarlo, impostare la stessa opzione nella scheda Visibility.

 

Solo i controlli di input dispongono di questa opzione: 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 e recipe selector. I controlli di visualizzazione possono essere nascosti solo tramite la scheda Visibility.

Login, logout e visualizzazione dell’utente corrente

  • Pulsante di login: vedere “Function Button” Log on
  • Pulsante di logout: vedere “Function Button” Cancel user login
  • Visualizzazione dell’utente connesso
    • Nome dell’utente corrente, ASCII Display, Monitor address LW60838, Total 32
    • Nome del gruppo corrente, ASCII Display, Monitor address LW63200, Total 32

Posizionare questi quattro controlli in un’intestazione visibile su ogni schermata; una schermata pubblica è adatta a questo scopo.

Per eseguire il logout da uno script o dal PLC, impostare LB60133 a 1. Il bit si azzera automaticamente una volta completato il logout.

Configurare il registro delle operazioni con il registro storico

Utilizzeremo:

  • LW1000~1015 : nome utente da scrivere nel registro (32 caratteri ASCII, campo libero, da adattare)
  • LW39900~39915 : copia del nome utente precedente (campo libero, da adattare)
  • LW60838~60853 : nome dell’utente connesso (32 caratteri ASCII, sola lettura)
  • LB1000 : trigger per la registrazione degli eventi
  1. Creare un registro dati storico
  2. Specificare il numero massimo di registrazioni desiderato (in questo caso, 50)
  3. Aggiungere LB1000 come trigger di registrazione, con Auto-Reset

Lo script che monitora i cambi di utente e i logout

#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;
}
}

 

Incollarlo in un nuovo script (New script) dello Script Editor, compilarlo, quindi richiamarlo ogni 500 ms.

e aggiungere il controllo Historical data display

Per ottenere questo:

Per i test è possibile aggiungere pulsanti di cambio utente e di logout con dei bit button

È possibile scaricare il progetto qui