¿Cómo podemos ayudar?

Print

Usuarios, grupos de usuarios y registro de logs de los usuarios

Qué va a crear

El proyecto terminado incluye dos grupos, cuatro usuarios, controles protegidos por grupo, una zona de inicio de sesión y un registro de operaciones que muestra quién ha cambiado qué.

Grupo Usuarios Autorizados a (ejemplo)
Operators Operator1, Operator2 Manejar la máquina: marcha y paro, consignas, selección de recetas
Maintenance Tech1, Tech2 Todo lo que pueden hacer los Operators, más las pantallas de ajustes, la exportación del registro y el borrado del registro

Los nombres y los derechos son ejemplos; sustitúyalos por los suyos. Asigne a cada usuario una contraseña única y no conserve ninguna contraseña predeterminada.

 

Antes de empezar

Utilice User Permission para todo lo que se hace en este tutorial; es la gestión de usuarios actual de CommandHMI

  • User Permission (Project Manager > Setting > User Permission): usuarios con nombre y grupos de usuarios. Utilice esta.
  • Set user password (HMI Parameter Settings): 8 usuarios fijos con niveles del 1 al 8. Es la gestión de usuarios anterior, que se mantiene por compatibilidad con proyectos más antiguos. No la utilice en proyectos nuevos y no mezcle las dos.

Crear los dos grupos

Cree primero los grupos, para que existan cuando añada los usuarios.

  1. En el Project Manager, abra Setting y haga doble clic en User Permission.
  2. Utilice Add user group e introduzca el nombre Operators
  3. Repita la operación para Maintenance
  4. Deje los usuarios y grupos predeterminados tal como están. El software no permite eliminarlos.

Use nombres de grupo cortos: la HMI muestra el grupo actual mediante LW63200, que contiene 32 caracteres.

 

Crear los 4 usuarios

Añada cada usuario en el mismo cuadro de diálogo y asígnelo a un único grupo.

  1. En User Permission, utilice Add user.
  2. Introduzca el nombre de usuario y una contraseña y, a continuación, seleccione el grupo.
  3. Repita la operación para los cuatro usuarios indicados a continuación.
  4. Confirme con OK y guarde el proyecto.
  • LW60838~60853 muestra el nombre del usuario que ha iniciado sesión (ASCII, longitud 32)
  • LW63200~63215

 

 

Restringir los controles por grupo

El acceso se define para cada control (Bit switch, Word switch,..). La pestaña Advanced determina quién puede accionarlo y la pestaña Visibility determina quién puede verlo.

  1. Añada un control, por ejemplo un Bit switch, y abra la pestaña Advanced.
  2. Active la opción de control de acceso por usuario y seleccione los grupos autorizados.
    • Control de nivel operador: autorizar Operators y Maintenance
    • Control reservado a mantenimiento: autorizar Maintenance
  3. Para ocultar un control en lugar de bloquearlo, configure la misma opción en la pestaña Visibility.

 

Solo los controles de entrada tienen esta opción: 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 y recipe selector. Los controles de visualización solo se pueden ocultar mediante la pestaña Visibility.

Inicio de sesión, cierre de sesión y visualización del usuario actual

  • Botón de inicio de sesión: véase «Function Button» Log on
  • Botón de cierre de sesión: véase «Function Button» Cancel user login
  • Visualización del usuario que ha iniciado sesión
    • Nombre del usuario actual, ASCII Display, Monitor address LW60838, Total 32
    • Nombre del grupo actual, ASCII Display, Monitor address LW63200, Total 32

Coloque estos cuatro controles en un encabezado visible en todas las pantallas; una pantalla pública resulta adecuada para ello.

Para cerrar la sesión desde un script o desde el PLC, ponga LB60133 a 1. El bit se restablece automáticamente una vez finalizado el cierre de sesión.

Configurar el registro de operaciones con el registro histórico

Vamos a utilizar:

  • LW1000~1015 : nombre de usuario que se escribirá en el registro (32 caracteres ASCII, campo libre, a adaptar)
  • LW39900~39915 : copia del nombre de usuario anterior (campo libre, a adaptar)
  • LW60838~60853 : nombre del usuario que ha iniciado sesión (32 caracteres ASCII, solo lectura)
  • LB1000 : disparador para registrar los eventos
  1. Cree un registro de datos históricos
  2. Indique el número máximo de registros que desea (en este caso, 50)
  3. Añada LB1000 como disparador de registro, con Auto-Reset

El script que supervisa los cambios de usuario y los cierres de sesión

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

 

Péguelo en un nuevo script (New script) del Script Editor, compílelo y, a continuación, llámelo cada 500 ms.

y añada el control Historical data display

Para obtener esto:

Para hacer pruebas, puede añadir botones de cambio de usuario y de cierre de sesión con bit buttons

Puede descargar el proyecto aquí