buenos aires, 13 de junio de 2008 -...

61
Contenido 1. Requerimientos ...................................................................................................................... 2 1.1. Hardware ....................................................................................................................... 2 1.2. Sistema Operativo ......................................................................................................... 2 1.3. Software ........................................................................................................................ 2 1.4. Plataforma de implemetación ........................................................................................ 2 1.5. Licencia ......................................................................................................................... 2 2. Instalación .............................................................................................................................. 3 2.1. Hardware ....................................................................................................................... 3 2.1.1. Llave de licencia USB:........................................................................................... 3 2.1.2. Sensor de huellas dactilares USB: ........................................................................ 3 2.1.3. Lector de tarjetas RFID ......................................................................................... 6 2.2. Software ........................................................................................................................ 7 2.2.1. Administrador de licencias Key Manager .............................................................. 7 2.2.2. QDactilSecure ..................................................................................................... 10 2.2.3. Registrar el elemento COM del sensor de huellas en sistemas embebidos....... 17 3. Implementación de scripts QDactilSecure ........................................................................... 19 3.1. Alta de usuario WinCC Flex/TIA Portal en QDactilSecure .......................................... 19 3.1.1. Descripción del Script .......................................................................................... 22 3.1.2. Ejemplo de implementación ................................................................................ 22 3.2. LogIn de un usuario WinCC Flex/TIA Portal a través de QDactilSecure .................... 23 3.2.1. Descripción del Script .......................................................................................... 25 3.2.2. Ejemplo de implementación ................................................................................ 25 3.3. El proyecto Demo QDactilSecure................................................................................ 27 4. Implementación de Scripts QDactilSecure + FDA ............................................................... 28 4.1. Campo de E/S (Entrada/Salida) .................................................................................. 28 4.1.1. Script 1º ............................................................................................................... 28 4.1.2. Script 2º ............................................................................................................... 29 4.1.3. Script 3º ............................................................................................................... 30 4.1.4. Ejemplo de implementación ................................................................................ 34 4.2. Invertir Bit .................................................................................................................... 37 4.2.1. Descripción del Script .......................................................................................... 40 4.2.2. Descripción de parámetros ................................................................................. 40 4.2.3. Ejemplo de implementación ................................................................................ 41 4.3. Activar Bit (Set), Desactivar Bit (Reset) ...................................................................... 42 4.3.1. Descripción del Script .......................................................................................... 46 4.3.2. Descripción de parámetros ................................................................................. 46 4.3.3. Ejemplo de implementación ................................................................................ 46 4.4. Navegar pantalla ......................................................................................................... 48 4.4.1. Descripción del script .......................................................................................... 51 4.4.2. Descripción de parámetros ................................................................................. 51 4.4.3. Ejemplo de implementación ................................................................................ 51 4.5. Ejecución en un Script ................................................................................................. 53 4.5.1. Descripción del script .......................................................................................... 56 4.5.2. Descripción de parámetros ................................................................................. 56 4.5.3. Ejemplo de implementación ................................................................................ 56 4.6. El proyecto Demo QdactilSecure + FDA ..................................................................... 59 5. Errores en tiempo de ejecución ........................................................................................... 60 5.1. Falta/Falla de Llave ..................................................................................................... 60 5.2. Falta/Falla de Sensor de huellas dactilares o tarjeta RFID ......................................... 60

Upload: dinhbao

Post on 07-Oct-2018

222 views

Category:

Documents


0 download

TRANSCRIPT

Contenido 1. Requerimientos ...................................................................................................................... 2

1.1. Hardware ....................................................................................................................... 2 1.2. Sistema Operativo ......................................................................................................... 2 1.3. Software ........................................................................................................................ 2 1.4. Plataforma de implemetación ........................................................................................ 2 1.5. Licencia ......................................................................................................................... 2

2. Instalación .............................................................................................................................. 3 2.1. Hardware ....................................................................................................................... 3

2.1.1. Llave de licencia USB:........................................................................................... 3 2.1.2. Sensor de huellas dactilares USB: ........................................................................ 3 2.1.3. Lector de tarjetas RFID ......................................................................................... 6

2.2. Software ........................................................................................................................ 7 2.2.1. Administrador de licencias Key Manager .............................................................. 7 2.2.2. QDactilSecure ..................................................................................................... 10 2.2.3. Registrar el elemento COM del sensor de huellas en sistemas embebidos ....... 17

3. Implementación de scripts QDactilSecure ........................................................................... 19 3.1. Alta de usuario WinCC Flex/TIA Portal en QDactilSecure .......................................... 19

3.1.1. Descripción del Script .......................................................................................... 22 3.1.2. Ejemplo de implementación ................................................................................ 22

3.2. LogIn de un usuario WinCC Flex/TIA Portal a través de QDactilSecure .................... 23 3.2.1. Descripción del Script .......................................................................................... 25 3.2.2. Ejemplo de implementación ................................................................................ 25

3.3. El proyecto Demo QDactilSecure ................................................................................ 27 4. Implementación de Scripts QDactilSecure + FDA ............................................................... 28

4.1. Campo de E/S (Entrada/Salida) .................................................................................. 28 4.1.1. Script 1º ............................................................................................................... 28 4.1.2. Script 2º ............................................................................................................... 29 4.1.3. Script 3º ............................................................................................................... 30 4.1.4. Ejemplo de implementación ................................................................................ 34

4.2. Invertir Bit .................................................................................................................... 37 4.2.1. Descripción del Script .......................................................................................... 40 4.2.2. Descripción de parámetros ................................................................................. 40 4.2.3. Ejemplo de implementación ................................................................................ 41

4.3. Activar Bit (Set), Desactivar Bit (Reset) ...................................................................... 42 4.3.1. Descripción del Script .......................................................................................... 46 4.3.2. Descripción de parámetros ................................................................................. 46 4.3.3. Ejemplo de implementación ................................................................................ 46

4.4. Navegar pantalla ......................................................................................................... 48 4.4.1. Descripción del script .......................................................................................... 51 4.4.2. Descripción de parámetros ................................................................................. 51 4.4.3. Ejemplo de implementación ................................................................................ 51

4.5. Ejecución en un Script ................................................................................................. 53 4.5.1. Descripción del script .......................................................................................... 56 4.5.2. Descripción de parámetros ................................................................................. 56 4.5.3. Ejemplo de implementación ................................................................................ 56

4.6. El proyecto Demo QdactilSecure + FDA ..................................................................... 59 5. Errores en tiempo de ejecución ........................................................................................... 60

5.1. Falta/Falla de Llave ..................................................................................................... 60 5.2. Falta/Falla de Sensor de huellas dactilares o tarjeta RFID ......................................... 60

1. Requerimientos

1.1. Hardware

Para poder utilizar QDactilSecure se requieren los siguientes componentes de Hardware:

• 1 x Puerto USB (Sensor de huellas dactilares) • 1 x Puerto USB (Llave USB, licencia de uso) • 1 x Puerto Ethernet RJ-45 (Lector de tarjetas RFID)

1.2. Sistema Operativo

El paquete de software QDactilSecure puede ser instalado en los siguientes Sistemas Operativos:

• Windows XP (32 Bits) • Windows XP Embedded • Windows 7 (32 Bits) • Windows 7 Embedded

1.3. Software

QDactilSecure requiere del siguiente componente de software: • Microsoft .NET Framework 3.5 (o posterior) • Siemens Audit Trail (QDactilSecure + FDA)

1.4. Plataforma de implemetación

QDactilSecure puede ser implementado en las siguientes plataformas:

• WinCC Flexible 2008 • TIA Portal v11/v12

1.5. Licencia

El uso del paquete de software QDactilSecure se encuentra protegido por la licencia física a través de una Llave USB. Es indispensable poseer la licencia USB para poder hacer uso de QDactilSecure.

2. Instalación La instalación del paquete QDactilSecure se divide en dos partes, Hardware y Software.

2.1. Hardware

2.1.1. Llave de licencia USB: Se debe conectar la llave USB en un puerto USB disponible, la instalación del driver es realizada automáticamente por el sistema operativo. Una vez instalado el driver de la llave USB, la misma puede conectarse en cualquier puerto USB disponible, indistintamente si es o no el mismo con el que fue instalada.

2.1.2. Sensor de huellas dactilares USB: Se debe conectar el sensor de huellas dactilares USB en un puerto USB disponible. Importante: el puerto USB elegido para el sensor de huellas dactilares no podrá

cambiarse. El driver debe instalarse de forma manual, como se explica a continuación: Nota: el procedimiento se mostrará en Windows 7, siendo de forma similar en los

demás Sistemas Operativos. Dirigirse a Panel de Control, y abrir “Administrador de dispositivos” En “Otros dispositivos -> CIF Single Chip” hacer “Click Derecho” y seleccionar “Actualizar software de controlador…”

Imagen 1: Administrador de dispositivos de Windows 7

Elegir “Buscar software de controlador en el equipo”

Imagen 2: Actualizar software de controlador

A través del botón “Examinar”, seleccionar la carpeta donde se encuentra el driver del dispositivo, y continuar con “Siguiente”.

Imagen 3: Establecer la ruta de la carpeta del driver

En la ventana de advertencia seleccionar “Instalar este software de controlador de todas formas”

Imagen 4: Advertencia de instalación del driver

Esperar a que Windows finalice la instalación y luego cerrar las ventanas.

Imagen 5: Instalación del dispositivo finalizada

A partir de aquí el sensor queda instalado y disponible para su uso.

2.1.3. Lector de tarjetas RFID

Se debe conectar a través de un cable UTP el lector de tarjetas RFID a un puerto Ethernet RJ-45 disponible en la red en la cual se encuentra la PC que ejecuta QDactilSecure. El lector de Tarjetas RFID tiene configurado por defecto la IP: 192.168.0.1 . Es recomendable realizar la configuración de IP del lector en un entorno separado a la red donde va a ser instalado, con el fin de no generar conflictos de red. La forma de configurar la IP del dispositivo se mostrará en el capítulo 2.2.2.

Imagen 6: Arquitectura de red, lector de tarjetas RFID

Imagen 7: Arquitectura de red, lector de tarjetas RFID

2.2. Software

Se deben instalar dos paquetes de software: Administrador de licencias y QDactilSecure.

2.2.1. Administrador de licencias Key Manager El Administrador de licencias es un programa que permite conocer el estado de las licencias de los paquetes QSolutions. Nota: Para el caso en que ya se encuentre instalado otro paquete QSolutions, no es

necesaria la instalación del Administrador de licencias. Para instalar el Administrador de licencias se debe ejecutar el archivo Administrador de Licencias Instalador.msi que se encuentra en la carpeta de instalación. A continuación el asistente de instalación indicará los pasos necesarios para completar la instalación.

Imagen 8: Instalación Administrador de Licencias

Imagen 9: Selección de carpeta de instalación del Administrador de Licencias

Importante: no cambiar la ubicación que aparece por defecto en donde se instalará.

Imagen 10: Confirmación de instalación del Administrador de Licencias

Al confirmar comenzará la instalación del Administrador de Licencias.

Imagen 11: Proceso de instalación del Administrador de Licencias.

Imagen 12: Finalización del proceso de instalación del Administrador de Licencias. Finalmente el asistente indica que se finalizó la instalación del Administrador de Licencias.

2.2.2. QDactilSecure

Para instalar QDactilSecure se debe ejecutar el archivo QDactilSecure Instalador.msi que se encuentra en la carpeta de instalación. A continuación el asistente de instalación indicará los pasos necesarios para completar la instalación.

Imagen 13: Instalación QDactilSecure

Imagen 14: Selección de carpeta de instalación de QDactilSecure

Importante: no cambiar la ubicación que aparece por defecto en donde se instalará.

Imagen 15: Confirmación de instalación de QDactilSecure

Al confirmar comenzará la instalación de QDactilSecure.

Imagen 16: Proceso de instalación de QDactilSecure

Antes de finalizar la instalación se desplegará el asistente de configuración de dispositivo de QDactilSecure. En caso de ser necesario, el asistente de configuración puede ser accedido en cualquier momento a través de la aplicación QDactilSecure.

Imagen 17: Asistente de configuración de dispositivo de QDactilSecure

Aquí deberá seleccionar el tipo de dispositivo que será utilizado.

En caso de seleccionar “Sensor de Huellas”, al dar click en el botón siguiente, el asistente finalizará estableciendo la configuración.

Imagen 18: Estableciendo el sensor de huella como dispositivo QDactilSecure

Si se selecciona “Lector de Tarjetas”, al dar click en siguiente, comenzará el asistente de configuración del lector. El mismo mostrará dos opciones para continuar.

Imagen 19: Asistente de configuración de IP del lector de tarjetas

La primera opción establece el dispositivo lector de tarjetas como predeterminado en QDactilSecure según la última configuración de IP cargada en el sistema. La segunda opción permite establecer manualmente la IP del dispositvo. En esta opción, el asistente intentará buscar el dispositivo en la red a la cual se encuentra conectada la computadora. Si no se encuentra el dispositivo, desplegará una ventana preguntando si desea establecer manualmente la IP actual del equipo.

Imagen 20: Mensaje de dispositivo no encontrado

Si se despliega la ventana de dispositivo no encontrado, y no desea especificar la dirección IP del lector, el asistente finalizará y regresará a la pantalla inicial. Si desea especificar la dirección IP, se le desplegará una ventana para que introduzca manualmente la IP actual del lector.

Imagen 21: Ventana de ingreso de dirección IP del lector

Nota:

Si usted no recuerda la dirección IP que tiene asignada el dispositivo, puede resetearlo a la configuración de fábrica. Para ello, deberá desmontar el fondo metálico del dispositivo y mientras el mismo se encuentra alimentado, presionar el botón de reset hasta que emita un ruido de confirmación. Al realizar el procedmiento, el dispositivo posee la IP 192.168.0.1

Imagen 22: Método para reestablecer la configuración IP

Una vez ingresada la IP correspondiente al lector, al hacer click en el botón conectar, se establecerá la conexión con el dispositivo y se mostrará la pantalla de configuración de IP.

Imagen 23: Ventana de configuración IP del lector

Una vez definida la configuración IP del dispositivo, haga click en establecer. El asistente establecerá la configuración el lector de tarjetas RFID y en QDactilSecure. Finalmente el asistente mostrara la ventana de configuración establecida.

Imagen 24: Ventana de configuración establecida

Luego de cerrar el asistente de configuración, se retorna a la instalación del software.

Imagen 25: Finalización del proceso de instalación de QDactilSecure

Finalmente el asistente indica que se finalizó la instalación de QDactilSecure.

2.2.3. Registrar el elemento COM del sensor de huellas en sistemas embebidos

Cuando el Sistema Operativo en donde se instala QDactilSecure es versión “Embedded”, debe registrarse el elemento COM de forma manual. De lo contrario se producirá un error en tiempo de ejecución.

Imagen 26: Error por falta del elemento COM al ejecutar QDactilSecure

Para registrar el elemento COM se debe seguir los siguientes pasos: Ir a Inicio -> Accesorios, “Click Derecho” en “Símbolo de Sistema” y seleccionar “Ejecutar como Administrador”

Imagen 27: Ejecutar como administrador

Una vez abierto, ejecutar en la consola el siguiente comando: RegSvr32 "%ProgramFiles%\Quantia S.A\QSolutions - QDactilSecure\WisSensorNL ib.dll"

Imagen 28: Ejecución en consola, registro del elemento COM

Luego aparecerá un cartel informando el registro del elemento COM.

Imagen 29: Registro del elemento COM finalizado

3. Implementación de scripts QDactilSecure QDactilSecure posee dos scripts VB que permiten la interacción entre el Programa de usuario y el Software QDactilSecure. Los mismos se encuentran programados para la totalidad del funcionamiento de QDactilSecure, por lo tanto no requiere modificación alguna. El implementador deberá agregarlos al proyecto para poder hacer uso de los mismos. Nota: los siguientes scripts se encuentran en el proyecto Demo, se sugiere copiar los scripts

del proyecto demo al proyecto donde se desea implementar.

3.1. Alta de usuario WinCC Flex/TIA Portal en QDactilSecure

Se deberá crear un script VB (VisualBasic) dentro del proyecto WinCC Flex 2008 ó TIA Portal v11/12 con las siguientes propiedades:

• Nombre: QDS_Logueo_Atm

• Tipo: Sub

Código: Dim usuario Dim contasena GetUserName usuario GetPassword contasena If usuario<>"" And contasena<>"" Then On Error Resume Next Dim programa Set programa = CreateObject("WScript.Shell") Dim path path = programa.RegRead("HKEY_LOCAL_MACHINE\SOFTWARE\Quantia S.A\QDactilSecure\Path") programa.Exec(path +"QDactilSecure - Adminitrador.exe "& "A02 " & usuario &" "& contasena) Else Exit Sub

End If

En TIA Portal se efectúa de la siguiente forma:

• Ir a Scripts -> VB Scripts y hacer “Doble click” en Agregar función VB

Imagen 30: Agregar función VB en TIA Portal

En Propiedades -> General, Configuración: establecer el nombre “QDS_Logueo_Atm” y tipo Sub

Imagen 31: Establecer el nombre al script en TIA Portal

Finalmente pegar el código dentro del editor.

Imagen 32: Código del Script en TIA Portal

3.1.1. Descripción del Script

Este Script utiliza el nombre y contraseña del usuario identificado en el sistema, para luego darlo de alta en la plataforma QDactilSecure, donde ejecutará el asistente para registrar la huella dactilar.

3.1.2. Ejemplo de implementación

• Crear un botón con el título “Alta DS” en la imagen deseada.

• En “Eventos->Pulsar” agregar los siguientes eventos:

o “Administración de usuarios->CerrarSesión” o “Administración de usuarios->MostrarDiálogoInicioSesión” o “Funciones VB->QDS_Logueo_Atm”

Imagen 33: Implementación de botón “Alta DS”

3.2. LogIn de un usuario WinCC Flex/TIA Portal a través de QDactilSecure

Se deberá crear un script VB (VisualBasic) dentro del proyecto WinCC Flex 2008 ó TIA Portal v11/12 con las siguientes propiedades:

• Nombre: QDS_Obtener_Usuario

• Tipo: Sub

Código:

Dim usuario Dim contrasena Dim usuario_actual Dim objeto Dim programa Set objeto = CreateObject("WScript.Shell") Dim path path = objeto.RegRead("HKEY_LOCAL_MACHINE\SOFTWARE\Quantia S.A\QDactilSecure\Path") On Error Resume Next Set programa = objeto.Exec(path +"QDactilSecure - Adminitrador.exe A01") usuario = programa.StdOut.ReadLine() contrasena = programa.StdOut.ReadLine() If usuario <>"" And contrasena <>"" Then Logon contrasena ,usuario GetUserName usuario_actual If usuario_actual = "" Then objeto.Popup "El Usuario " & usuario & " existe en la plataforma DactilSecure," & vbCrLf & "pero no existe en su Programa de Usuario",48,"Alta Usuario" End If End If

En TIA Portal se efectúa de la siguiente forma:

• Ir a Scripts -> VB Scripts y hacer “Doble click” en Agregar función VB

Imagen 34: Agregar función VB en TIA Portal

En Propiedades -> General, Configuración: establecer el nombre “QDS_Obtener_Usuario” y tipo Sub.

Imagen 35: Establecer el nombre al script en TIA Portal

Finalmente pegar el código dentro del editor.

Imagen 36: Código del Script en TIA Portal

3.2.1. Descripción del Script Este Script ejecuta el asistente QDactilSecure donde verifica la huella dactilar del usuario, y luego lo identifica en el sistema.

3.2.2. Ejemplo de implementación

• Crear un botón con el título “LogIn” en la imagen deseada.

• En “Eventos->Pulsar” agregar el siguientes evento: o “Funciones VB-> QDS_Obtener_Usuario”

Imagen 37: Implementación de botón “LogIn”

3.3. El proyecto Demo QDactilSecure El paquete de software QDactilSecure incluye un proyecto Demo donde se encuentra un programa de usuario de panel “Tipo” el cual implementa todas las funcionalidades del sistema QDactilSecure. Se aconseja utilizar el mismo como base para la futura implementación en el desarrollo que el implementador esté realizando.

Imagen 38: Imagen Principal del Proyecto Demo

En el manual de usuario de QDactilSecure se encuentra la explicación del uso y funcionamiento de la Demo. El implementador puede hacer uso de la Demo para probar los Scripts antes de realizar su desarrollo, ó verificar la correcta implementación que esté realizando.

4. Implementación de Scripts QDactilSecure + FDA QDactilSecure posee siete scripts VB que permiten la interacción entre el Programa de usuario y el Software QDactilSecure. Los mismos se encuentran programados para la totalidad del funcionamiento de QDactilSecure+FDA, por lo tanto no requiere modificación alguna. El implementador deberá agregarlos al proyecto para poder hacer uso de los mismos. Nota: los siguientes scripts se encuentran en el proyecto Demo, se sugiere copiar los scripts

del proyecto demo al proyecto donde se desea implementar.

4.1. Campo de E/S (Entrada/Salida)

Se deberá crear tres script VB (VisualBasic) dentro del proyecto WinCC Flex 2008 ó TIA Portal v11/12 con las siguientes propiedades:

4.1.1. Script 1º

• Nombre: QDS_Notificacion_Usuario_VA_1

• Tipo: Sub

• Parámetros: • Variable_GMP (ByRef)

Código:

Dim fso, file Set fso = CreateObject("Scripting.FileSystemObject") Set file = fso.OpenTextFile("C:\Users\Public\QDS.dat", 2, True, -2) file.WriteLine Variable_GMP file.Close

4.1.1.1 Descripción del Script

Este Script almacena el valor actual de la variable en forma temporal para poder hacer uso del mismo en los siguientes Scripts.

4.1.1.2 Descripción de parámetros • Variable_GMP:

Tipo: Variable_HMI Uso: variable asociada al campo de Entrada/Salida.

4.1.2. Script 2º

• Nombre: QDS_Notificacion_Usuarios_VA_2

• Tipo: Function

• Parámetros: • Pantalla (ByRef) • Campo (ByRef)

Código:

Dim fso, file, valor_anterior Set fso = CreateObject("Scripting.FileSystemObject") Set file = fso.OpenTextFile("C:\Users\Public\QDS.dat", 1) valor_anterior = CSng(file.ReadLine) file.Close Dim objeto Set objeto = HmiRuntime.Screens(Pantalla).ScreenItems(Campo) objeto.Activate Set file = fso.OpenTextFile("C:\Users\Public\QDS.dat", 2) file.WriteLine (objeto.ProcessValue) file.Close QDS_Notificacion_Usuarios_VA_2 = valor_anterior

4.1.2.1 Descripción del Script

Este Script almacena el valor ingresado en forma temporal para poder hacer uso del mismo en los siguientes Scripts.

4.1.2.2 Descripción de parámetros • Valor de retorno:

Tipo: Variable_HMI Uso: variable asociada al campo de Entrada/Salida.

• Pantalla:

Tipo: Imagen Uso: Imagen del proyecto donde se encuentra el Campo de Entrada/Salida.

• Campo:

Tipo: Objeto grafico Uso: Campo de Entrada/Salida asociado a la variable.

4.1.3. Script 3º

• Nombre: QDS_Notificacion_Usuario_VA_3

• Tipo: Function

• Parámetros: • Nombre_de_Objeto (ByRef) • Unidad (ByRef) • Variable_GMP (ByRef) • GMP (ByRef) • Tipo_de_Confirmacion (ByRef)

Código: Select Case Tipo_de_Confirmacion Case "Ninguna" Case "Firma" Case "Acuse" Case Else Dim msg_err1 Set msg_err1 = CreateObject("WScript.Shell") msg_err1.Popup "Error de parametrizaión, revise el parametro [Tipo_de_Confirmación] !!!"&vbCrLf &vbCrLf &"Valor ingresado: "&Tipo_de_Confirmacion &vbCrLf &"Valores posibles: Firma ; Acuse ; Ninguna",,"Error de Programación",4112 Exit Function End Select Dim valor_anterior Dim valor_actual Dim fso, file Set fso = CreateObject("Scripting.FileSystemObject") Set file = fso.OpenTextFile("C:\Users\Public\QDS.dat", 1) valor_actual = file.ReadLine file.Close valor_anterior = Variable_GMP If( CSng(valor_actual) <> CSng(valor_anterior)) Then Dim estado Select Case GMP Case 1 estado = 10 Case 2 estado = 50 Case 0 estado = 100 Case Else Dim msg_err2 Set msg_err2 = CreateObject("WScript.Shell") msg_err2.Popup "Error de parametrizacion, revise el

parametro [GMP] !!!"&vbCrLf &vbCrLf &"Valor ingresado: "&GMP &vbCrLf &"Valores posibles: 0 ; 1 ; 2",,"Error de Programación",4112 Exit Function End Select If(estado = 10)Then Dim usuario GetUserName usuario Dim objeto Set objeto = CreateObject("WScript.Shell") Dim path path = objeto.RegRead("HKEY_LOCAL_MACHINE\SOFTWARE\Quantia S.A\QDactilSecure\Path") Dim categoria Dim descripcion categoria = "Cambio de Valor" descripcion = "Cambio de "& Nombre_de_objeto & " de " & valor_anterior &" "& Unidad & " a " & valor_actual &" "& Unidad If Tipo_de_Confirmacion = "Ninguna" Then QDS_Notificacion_Usuario_VA_3 = valor_actual Set file = fso.OpenTextFile("C:\Users\Public\QDS.dat", 2) file.WriteLine valor_actual file.Close If usuario <> "" Then NotifyUserAction hmiNone, hmiFalse, categoria, Nombre_de_objeto, descripcion Else NotifyUserAction hmiNone, hmiFalse, categoria, Nombre_de_objeto, "(Sin Usuario Logueado) " & descripcion & descripcion End If Exit Function End If If usuario = "" Then Dim msg_login Set msg_login = CreateObject("WScript.Shell") msg_login.Popup "No hay un usuario identificado y la seguridad se encuentra deshabilitada"&vbCrLf &vbCrLf &"Los tipos de confirmacion Firma y Acuse requieren Seguridad" & usuario,,"Error de programacion",4112 Exit Function End If Dim programa Dim respuesta Dim respuesta_desglose Dim usuario_nok Dim tipo

If Tipo_de_Confirmacion = "Firma" Then On Error Resume Next Set programa = objeto.Exec(path +"QDactilSecure - Adminitrador.exe A03 "& usuario) tipo = "Firmado: " End If If Tipo_de_Confirmacion = "Acuse" Then On Error Resume Next Set programa = objeto.Exec(path +"QDactilSecure - Adminitrador.exe A04 "& usuario) tipo = "Acusado: " End If programa.StdIn.WriteLine descripcion Do While respuesta = "" respuesta = programa.StdOut.ReadLine() respuesta_desglose = Split(respuesta,";") Select Case respuesta_desglose(0) Case "ok" QDS_Notificacion_Usuario_VA_3 = valor_actual NotifyUserAction hmiNone, hmiFalse, categoria, Nombre_de_objeto,tipo & descripcion &respuesta_desglose(1) Set file = fso.OpenTextFile("C:\Users\Public\QDS.dat", 2) file.WriteLine valor_actual file.Close Case "nok" usuario_nok = respuesta_desglose(1) NotifyUserAction hmiNone, hmiFalse, categoria, Nombre_de_objeto, "Firma Incorrecta: El usuario " & usuario_nok & " intento firmar por el Usuario Actual" respuesta= "" Case "error" estado = 50 Case "cancelar" Set file = fso.OpenTextFile("C:\Users\Public\QDS.dat", 2) file.WriteLine valor_anterior file.Close End Select Loop End If If(estado = 50) Then Dim categoria_s Dim descripcion_s

categoria_s = "Cambio de Valor" descripcion_s = "Cambio de "& Nombre_de_objeto & " de " & valor_anterior & " a " & valor_actual Select Case Tipo_de_Confirmacion Case "Ninguna" On Error Resume Next NotifyUserAction hmiNone, hmiFalse, categoria_s, Nombre_de_objeto, descripcion_s If Err.Number = 0 Then QDS_Notificacion_Usuario_VA_3 = valor_actual Set file = fso.OpenTextFile("C:\Users\Public\QDS.dat", 2) file.WriteLine valor_actual file.Close End If Case "Acuse" On Error Resume Next NotifyUserAction hmiAcknowledgement, hmiFalse, categoria_s, Nombre_de_objeto, descripcion_s If Err.Number = 0 Then QDS_Notificacion_Usuario_VA_3 = valor_actual Set file = fso.OpenTextFile("C:\Users\Public\QDS.dat", 2) file.WriteLine valor_actual file.Close Else Set file = fso.OpenTextFile("C:\Users\Public\QDS.dat", 2) file.WriteLine valor_anterior file.Close End If Case "Firma" On Error Resume Next NotifyUserAction hmiSignature, hmiFalse, categoria_s, Nombre_de_objeto, descripcion_s If Err.Number = 0 Then QDS_Notificacion_Usuario_VA_3 = valor_actual Set file = fso.OpenTextFile("C:\Users\Public\QDS.dat", 2) file.WriteLine valor_actual file.Close Else Set file = fso.OpenTextFile("C:\Users\Public\QDS.dat", 2) file.WriteLine valor_anterior file.Close End If End Select End If

If(estado = 100) Then QDS_Notificacion_Usuario_VA_3 = valor_actual End If End If

4.1.3.1 Descripción del Script

Este Script establece el valor de la variable del campo de Entrada/Salida establecida por parámetro, dependiendo del “tipo de confirmación” establecido, QDactilSecure+FDA desplegará una ventana de confirmación por firma biométrica ó acuse, y luego lo asienta en el archivo de auditoría.

4.1.3.2 Descripción de parámetros • Valor de retorno:

Tipo: Variable_HMI Uso: variable asociada al campo de Entrada/Salida.

• Nombre_de_objeto

Tipo: String Uso: nombre representativo de la variable para asentar en el reporte.

• Unidad

Tipo: String Uso: nombre de la unidad de la variable para asentar en el reporte.

• Variable_GMP:

Tipo: Variable_HMI Uso: variable asociada al campo de Entrada/Salida.

• GMP: (0/1/2)

Tipo: String Uso: activa ó desactiva el reporte FDA Valores posibles:

• 0 (Sin auditoria) • 1 (Con auditoria, método QDactilSecure) • 2 (Con Auditoria, método Siemens)

4.1.4. Ejemplo de implementación

Nota: el siguiente ejemplo se muestra a través del proyecto Demo.

• Seleccionar el campo E/S a configurar y dirigirse a “Propiedades”.

• En “Eventos->Activar” agregar el siguiente evento: o “Funciones VB-> QDS_Notificacion_Usuario_VA_1”

• Completar el parámetro:

o Variable_GMP: Temperatura

• En “Eventos->Entrada finalizada” agregar los siguientes eventos: o “Funciones VB-> QDS_Notificacion_Usuario_VA_2” o “Funciones VB-> QDS_Notificacion_Usuario_VA_3”

• Completar los parámetros en “QDS_Notificacion_Usuario_VA_2”:

o Valor de retorno: Temperatura o Pantalla: Funciones FDA o Campo: Campo ES_1

• Completar los parámetros en “QDS_Notificacion_Usuario_VA_3”:

o Valor de Retorno: Temperatura o Nombre_de_Objeto: Temperatura del Reactor o Unidad: ºC o Variable_GMP: Temperatura o GMP: 1 (en demo, variable hmi) o Tipo_de_Confirmacion: Firma

Imagen 39: Implementación de Campo de E/S, “Activar”.

Imagen 40: Implementación de Campo de E/S, “Entrada finalizada”.

4.2. Invertir Bit

Se deberá crear un script VB (VisualBasic) dentro del proyecto WinCC Flex 2008 ó TIA Portal v11/12 con las siguientes propiedades:

• Nombre: QDS_Notificacion_Usuario_ON_Inv_OFF

• Tipo: Function

• Parámetros:

o Categoria (ByRef) o Nombre_de_objeto (ByRef) o Descripcion_ON (ByRef) o Descripcion_OFF (ByRef) o Variable_GMP (ByRef) o GMP (ByRef) o Tipo_de_Confirmacion (ByRef)

Código: Select Case Tipo_de_Confirmacion Case "Ninguna" Case "Firma" Case "Acuse" Case Else Dim msg_err1 Set msg_err1 = CreateObject("WScript.Shell") msg_err1.Popup "Error de parametrizacion, revise el parametro [Tipo_de_Confirmacion] !!!"&vbCrLf &vbCrLf &"Valor ingresado: "&Tipo_de_Confirmacion &vbCrLf &"Valores posibles: Firma ; Acuse ; Ninguna",,"Error de Programación",4112 Exit Function End Select Dim estado Select Case GMP Case 1 estado = 10 Case 2 estado = 50 Case 0 estado = 100 Case Else Dim msg_err2 Set msg_err2 = CreateObject("WScript.Shell") msg_err2.Popup "Error de parametrizacion, revise el parametro [GMP] !!!"&vbCrLf &vbCrLf &"Valor ingresado: "&GMP &vbCrLf &"Valores posibles: 0 ; 1 ; 2",,"Error de Programación",4112 Exit Function End Select

If(estado = 10)Then Dim usuario Dim Descripcion If Variable_GMP = False Then Descripcion = Descripcion_ON End If If Variable_GMP = True Then Descripcion = Descripcion_OFF End If GetUserName usuario If Tipo_de_Confirmacion = "Ninguna" Then QDS_Notificacion_Usuario_ON_Inv_OFF = Variable_GMP Xor True If usuario <> "" Then NotifyUserAction hmiNone, hmiFalse, Categoria, Nombre_de_objeto, Descripcion Else NotifyUserAction hmiNone, hmiFalse, Categoria, Nombre_de_objeto, "(Sin Usuario Logueado) "& Descripcion End If Exit Function End If If usuario = "" Then Dim msg_login Set msg_login = CreateObject("WScript.Shell") msg_login.Popup "No hay un usuario identificado y la seguridad se encuentra deshabilitada"&vbCrLf &vbCrLf &"Los tipos de confirmacion Firma y Acuse requieren Seguridad" & usuario,,"Error de programacion",4112 Exit Function End If Dim objeto Dim programa Dim respuesta Dim respuesta_desglose Dim usuario_nok Dim tipo Set objeto = CreateObject("WScript.Shell") If Tipo_de_Confirmacion = "Firma" Then On Error Resume Next Set programa = objeto.Exec("%ProgramFiles%\Quantia S.A\QSolutions - QDactilSecure\QDactilSecure - Adminitrador.exe A03 "& usuario) tipo = "Firmado: " End If If Tipo_de_Confirmacion = "Acuse" Then On Error Resume Next Set programa = objeto.Exec("%ProgramFiles%\Quantia S.A\QSolutions - QDactilSecure\QDactilSecure - Adminitrador.exe A04 "& usuario)

tipo = "Acusado: " End If programa.StdIn.WriteLine Descripcion Do While respuesta ="" respuesta = programa.StdOut.ReadLine() respuesta_desglose = Split(respuesta,";") Select Case respuesta_desglose(0) Case "ok" NotifyUserAction hmiNone, hmiFalse, Categoria, Nombre_de_objeto, tipo & Descripcion &respuesta_desglose(1) QDS_Notificacion_Usuario_ON_Inv_OFF = Variable_GMP Xor True Case "nok" usuario_nok = respuesta_desglose(1) NotifyUserAction hmiNone, hmiFalse, Categoria, Nombre_de_objeto, "Firmado Incorrecta: El usuario " & usuario_nok & " intento firmar por el Usuario Actual" respuesta= "" Case "error" estado = 50 Case "cancelar" Exit Function End Select Loop End If If(estado = 50) Then Select Case Tipo_de_Confirmacion Case "Ninguna" On Error Resume Next NotifyUserAction hmiNone, hmiFalse, Categoria, Nombre_de_objeto, Descripcion If Err.Number = 0 Then QDS_Notificacion_Usuario_ON_Inv_OFF = Variable_GMP Xor True Case "Acuse" On Error Resume Next NotifyUserAction hmiAcknowledgement, hmiFalse, Categoria, Nombre_de_objeto, Descripcion If Err.Number = 0 Then QDS_Notificacion_Usuario_ON_Inv_OFF = Variable_GMP Xor True Case "Firma" On Error Resume Next NotifyUserAction hmiSignature, hmiFalse, Categoria, Nombre_de_objeto, Descripcion If Err.Number = 0 Then QDS_Notificacion_Usuario_ON_Inv_OFF = Variable_GMP Xor True End Select End If

If(estado = 100) Then QDS_Notificacion_Usuario_ON_Inv_OFF = Variable_GMP Xor True

End If

4.2.1. Descripción del Script

Este Script invierte el valor booleano de la variable establecida por parámetro, dependiendo del “tipo de confirmación” establecido, QDactilSecure+FDA desplegará una ventana de confirmación por firma biométrica ó acuse, y luego lo asienta en el archivo de auditoría.

4.2.2. Descripción de parámetros

• Valor de retorno: Tipo: Variable_HMI (Bit) Uso: variable que contiene el bit a invertir

• Categoria:

Tipo: String Uso: descripción de la categoría en el reporte

• Nombre_de_objeto

Tipo: String Uso: nombre representativo de la variable para asentar en el reporte

• Descripción_ON:

Tipo: String Uso: descripción al activar el bit de la variable para asentar en el reporte

• Descipción_OFF:

Tipo: String Uso: descripción al desactivar la variable para asentar en el reporte

• Variable_GMP:

Tipo: Variable_HMI Uso: variable que contiene el bit a invertir (debe ser igual a valor de retorno)

• GMP: (0/1/2)

Tipo: String Uso: activa ó desactiva el reporte FDA Valores posibles:

• 0 (Sin auditoria) • 1 (Con auditoria, método QDactilSecure) • 2 (Con Auditoria, método Siemens)

• Tipo_de_Confirmación: (Firma/Acuse/Ninguna)

Tipo: String Uso: forma de confirmar la acción del usuario

4.2.3. Ejemplo de implementación

Nota: el siguiente ejemplo se muestra a través del proyecto Demo.

• Crear un botón con el título “Invertir Bit” en la imagen deseada.

• En “Eventos->Pulsar” agregar los siguientes eventos:

o “Funciones VB-> QDS_Notificacion_Usuario_ON_Inv_OFF”

• Completar los parámetros: o Valor de retorno: bool1 o Categoria: Invertir o Nombre_de_objeto: Bit o Descripcion_ON: Se pone en 1 o Descripcion_OFF: Se pone en 0 o Variable_GMP: bool1 o GMP: 1 (en demo, variable hmi) o Tipo_de_Confirmacion: Firma

Imagen 41: Implementación de botón “Invertir Bit”

4.3. Activar Bit (Set), Desactivar Bit (Reset)

Se deberá crear un script VB (VisualBasic) dentro del proyecto WinCC Flex 2008 ó TIA Portal v11/12 con las siguientes propiedades:

• Nombre: QDS_Notificacion_Usuario_ON_OFF

• Tipo: Function

• Parámetros:

o Categoria (ByRef) o Nombre_de_objeto (ByRef) o Descripcion (ByRef) o set_reset (ByRef) o GMP (ByRef) o Tipo_de_Confirmacion (ByRef)

Código: Select Case Tipo_de_Confirmacion Case "Ninguna" Case "Firma" Case "Acuse" Case Else Dim msg_err1 Set msg_err1 = CreateObject("WScript.Shell") msg_err1.Popup "Error de parametrizacion, revise el parametro [Tipo_de_Confirmacion] !!!"&vbCrLf &vbCrLf &"Valor ingresado: "&Tipo_de_Confirmacion &vbCrLf &"Valores posibles: Firma ; Acuse ; Ninguna",,"Error de Programación",4112 Exit Function End Select Select Case set_reset Case "set" Case "reset" Case Else Dim msg_err3 Set msg_err3 = CreateObject("WScript.Shell") msg_err3.Popup "Error de parametrizacion, revise el parametro [set_reset] !!!"&vbCrLf &vbCrLf &"Valor ingresado: "&set_reset &vbCrLf &"Valores posibles: set ; reset",,"Error de Programación",4112 Exit Function End Select Dim estado Select Case GMP Case 1 estado = 10 Case 2 estado = 50

Case 0 estado = 100 Case Else Dim msg_err2 Set msg_err2 = CreateObject("WScript.Shell") msg_err2.Popup "Error de parametrizacion, revise el parametro [GMP] !!!"&vbCrLf &vbCrLf &"Valor ingresado: "&GMP &vbCrLf &"Valores posibles: 0 ; 1 ; 2",,"Error de Programación",4112 Exit Function End Select If(estado = 10)Then Dim usuario GetUserName usuario If Tipo_de_Confirmacion = "Ninguna" Then Select Case set_reset Case "set" QDS_Notificacion_Usuario_ON_OFF = True Case "reset" QDS_Notificacion_Usuario_ON_OFF = False End Select If usuario <> "" Then NotifyUserAction hmiNone, hmiFalse, Categoria, Nombre_de_objeto, Descripcion Else NotifyUserAction hmiNone, hmiFalse, Categoria, Nombre_de_objeto, "(Sin Usuario Logueado) " & Descripcion End If Exit Function End If If usuario = "" Then Dim msg_login Set msg_login = CreateObject("WScript.Shell") msg_login.Popup "No hay un usuario identificado y la seguridad se encuentra deshabilitada"&vbCrLf &vbCrLf &"Los tipos de confirmacion Firma y Acuse requieren Seguridad" & usuario,,"Error de programacion",4112 Exit Function End If Dim objeto Dim programa Dim respuesta Dim respuesta_desglose Dim valor_anterior Dim usuario_nok Dim tipo Set objeto = CreateObject("WScript.Shell") Dim path path = objeto.RegRead("HKEY_LOCAL_MACHINE\SOFTWARE\Quantia S.A\QDactilSecure\Path")

If Tipo_de_Confirmacion = "Firma" Then On Error Resume Next Set programa = objeto.Exec(path +"QDactilSecure - Adminitrador.exe A03 "& usuario) tipo = "Firmado: " End If If Tipo_de_Confirmacion = "Acuse" Then On Error Resume Next Set programa = objeto.Exec(path +"QDactilSecure - Adminitrador.exe A04 "& usuario) tipo = "Acusado: " End If programa.StdIn.WriteLine Descripcion Do While respuesta ="" respuesta = programa.StdOut.ReadLine() respuesta_desglose = Split(respuesta,";") Select Case respuesta_desglose(0) Case "ok" NotifyUserAction hmiNone, hmiFalse, Categoria, Nombre_de_objeto, tipo & Descripcion & Descripcion &respuesta_desglose(1) Select Case set_reset Case "set" QDS_Notificacion_Usuario_ON_OFF = True Case "reset" QDS_Notificacion_Usuario_ON_OFF = False End Select Case "nok" usuario_nok = respuesta_desglose(1) NotifyUserAction hmiNone, hmiFalse, Categoria, Nombre_de_objeto, "Firma Incorrecta: El usuario " & usuario_nok & " intento firmar por el Usuario Actual" respuesta= "" Case "error" estado = 50 Case "cancelar" Exit Function End Select Loop End If If(estado = 50) Then Select Case Tipo_de_Confirmacion Case "Ninguna" On Error Resume Next NotifyUserAction hmiNone, hmiFalse, Categoria, Nombre_de_objeto, Descripcion

If Err.Number = 0 Then Select Case set_reset Case "set" QDS_Notificacion_Usuario_ON_OFF = True Case "reset" QDS_Notificacion_Usuario_ON_OFF = False End Select End If Case "Acuse" On Error Resume Next NotifyUserAction hmiAcknowledgement, hmiFalse, Categoria, Nombre_de_objeto, Descripcion If Err.Number = 0 Then Select Case set_reset Case "set" QDS_Notificacion_Usuario_ON_OFF = True Case "reset" QDS_Notificacion_Usuario_ON_OFF = False End Select End If Case "Firma" On Error Resume Next NotifyUserAction hmiSignature, hmiFalse, Categoria, Nombre_de_objeto, Descripcion If Err.Number = 0 Then Select Case set_reset Case "set" QDS_Notificacion_Usuario_ON_OFF = True Case "reset" QDS_Notificacion_Usuario_ON_OFF = False End Select End If End Select End If If(estado = 100) Then Select Case set_reset Case "set" QDS_Notificacion_Usuario_ON_OFF = True Case "reset" QDS_Notificacion_Usuario_ON_OFF = False End Select End If

4.3.1. Descripción del Script

Este Script setea ó resetea el valor booleano de la variable establecida por parámetro, dependiendo del “tipo de confirmación” establecido, QdactilSecure+FDA desplegará una ventana de confirmación por firma biométrica ó acuse, y luego lo asienta en el archivo de auditoría.

4.3.2. Descripción de parámetros

• Valor de retorno: Tipo: Variable_HMI (Bit) Uso: variable que contiene el bit a Setear ó Resetear

• Categoria:

Tipo: String Uso: descripción de la categoría en el reporte

• Nombre_de_objeto

Tipo: String Uso: nombre representativo de la variable para asentar en el reporte

• Descripción:

Tipo: String Uso: descripción al Setear/Resetar la variable para asentar en el reporte

• set_reset: (set/reset) Tipo: String Uso: define la acción sobre la variable; setear ó resetear

• GMP: (0/1/2)

Tipo: String Uso: activa ó desactiva el reporte FDA Valores posibles:

• 0 (Sin auditoria) • 1 (Con auditoria, método QDactilSecure) • 2 (Con Auditoria, método Siemens)

• Tipo_de_Confirmación: (Firma/Acuse/Ninguna)

Tipo: String Uso: forma de confirmar la acción del usuario

4.3.3. Ejemplo de implementación

Nota: el siguiente ejemplo se muestra a través del proyecto Demo.

• Crear un botón con el título “Invertir Bit” en la imagen deseada.

• En “Eventos->Pulsar” agregar el siguiente evento:

o “Funciones VB-> QDS_Notificacion_Usuario_ON_OFF”

• Completar los parámetros: o Valor de retorno: bool2 o Categoria: Set o Nombre_de_objeto: Bit o Descripcion: Se setea la variable o set_reset: set o GMP: 1 (en demo, variable hmi) o Tipo_de_Confirmacion: Acuse

Imagen 42: Implementación de botón “Set”

4.4. Navegar pantalla

Se deberá crear un script VB (VisualBasic) dentro del proyecto WinCC Flex 2008 ó TIA Portal v11/12 con las siguientes propiedades:

• Nombre: QDS_Notificacion_Usuario_Pantalla

• Tipo: Sub

• Parámetros:

o Categoria (ByRef) o Nombre_de_objeto (ByRef) o Descripcion (ByRef) o Imagen_Numero (ByRef) o GMP (ByRef) o Tipo_de_Confirmacion (ByRef)

Código: Select Case Tipo_de_Confirmacion Case "Ninguna" Case "Firma" Case "Acuse" Case Else Dim msg_err1 Set msg_err1 = CreateObject("WScript.Shell") msg_err1.Popup "Error de parametrizacion, revise el parametro [Tipo_de_Confirmacion] !!!"&vbCrLf &vbCrLf &"Valor ingresado: "&Tipo_de_Confirmacion &vbCrLf &"Valores posibles: Firma ; Acuse ; Ninguna",,"Error de Programación",4112 Exit Sub End Select Dim estado Select Case GMP Case 1 estado = 10 Case 2 estado = 50 Case 0 estado = 100 Case Else Dim msg_err2 Set msg_err2 = CreateObject("WScript.Shell") msg_err2.Popup "Error de parametrizacion, revise el parametro [GMP] !!!"&vbCrLf &vbCrLf &"Valor ingresado: "&GMP &vbCrLf &"Valores posibles: 0 ; 1 ; 2",,"Error de Programación",4112 Exit Sub End Select If(estado = 10)Then

Dim usuario GetUserName usuario If Tipo_de_Confirmacion = "Ninguna" Then ActivateScreenByNumber Imagen_Numero, 0 If usuario <> "" Then NotifyUserAction hmiNone, hmiFalse, Categoria, Nombre_de_objeto, Descripcion Else NotifyUserAction hmiNone, hmiFalse, Categoria, Nombre_de_objeto, "(Sin Usuario Logueado) "& Descripcion End If Exit Sub End If If usuario = "" Then Dim msg_login Set msg_login = CreateObject("WScript.Shell") msg_login.Popup "No hay un usuario identificado y la seguridad se encuentra deshabilitada"&vbCrLf &vbCrLf &"Los tipos de confirmacion Firma y Acuse requieren Seguridad" & usuario,,"Error de programacion",4112 Exit Sub End If Dim objeto Dim programa Dim respuesta Dim respuesta_desglose Dim valor_anterior Dim usuario_nok Dim tipo Set objeto = CreateObject("WScript.Shell") Dim path path = objeto.RegRead("HKEY_LOCAL_MACHINE\SOFTWARE\Quantia S.A\QDactilSecure\Path") If Tipo_de_Confirmacion = "Firma" Then On Error Resume Next Set programa = objeto.Exec(path +"QDactilSecure - Adminitrador.exe A03 "& usuario) tipo = "Firmado: " End If If Tipo_de_Confirmacion = "Acuse" Then On Error Resume Next Set programa = objeto.Exec(path +"QDactilSecure - Adminitrador.exe A04 "& usuario) tipo = "Acusado: " End If programa.StdIn.WriteLine Descripcion Do While respuesta ="" respuesta = programa.StdOut.ReadLine() respuesta_desglose = Split(respuesta,";")

Select Case respuesta_desglose(0) Case "ok" NotifyUserAction hmiNone, hmiFalse, Categoria, Nombre_de_objeto, tipo & Descripcion & Descripcion &respuesta_desglose(1) ActivateScreenByNumber Imagen_Numero, 0 Case "nok" usuario_nok = respuesta_desglose(1) NotifyUserAction hmiNone, hmiFalse, Categoria, Nombre_de_objeto, "Firma Incorrecta: El usuario " & usuario_nok & " intento firmar por el Usuario Actual" respuesta= "" Case "error" estado = 50 Case "cancelar" Exit Sub End Select Loop End If If(estado = 50) Then Select Case Tipo_de_Confirmacion Case "Ninguna" On Error Resume Next NotifyUserAction hmiNone, hmiFalse, Categoria, Nombre_de_objeto, Descripcion If Err.Number = 0 Then ActivateScreenByNumber Imagen_Numero, 0 Case "Acuse" On Error Resume Next NotifyUserAction hmiAcknowledgement, hmiFalse, Categoria, Nombre_de_objeto, Descripcion If Err.Number = 0 Then ActivateScreenByNumber Imagen_Numero, 0 Case "Firma" On Error Resume Next NotifyUserAction hmiSignature, hmiFalse, Categoria, Nombre_de_objeto, Descripcion If Err.Number = 0 Then ActivateScreenByNumber Imagen_Numero, 0 End Select End If If(estado = 100) Then ActivateScreenByNumber Imagen_Numero, 0

End If

4.4.1. Descripción del script

Este Script navega al número de imagen de panel establecido por parámetro, dependiendo del “tipo de confirmación” establecido, QDactilSecure+FDA desplegará una ventana de confirmación por la firma biométrica ó acuse, y luego lo asienta en el archivo de auditoría.

4.4.2. Descripción de parámetros

• Categoria: Tipo: String Uso: descripción de la categoría en el reporte

• Nombre_de_objeto

Tipo: String Uso: nombre representativo de la pantalla para asentar en el reporte

• Descripción:

Tipo: String Uso: descripción de la pantalla que se va a navegar

• Imagen_Numero:

Tipo: Int Uso: define el número de la imagen hacia donde navegar

• GMP: (0/1/2)

Tipo: String Uso: activa ó desactiva el reporte FDA Valores posibles:

• 0 (Sin auditoria) • 1 (Con auditoria, método QDactilSecure) • 2 (Con Auditoria, método Siemens)

• Tipo_de_Confirmación: (Firma/Acuse/Ninguna)

Tipo: String Uso: forma de confirmar la acción del usuario

4.4.3. Ejemplo de implementación

Nota: el siguiente ejemplo se muestra a través del proyecto Demo.

• Crear un botón con el título “Ir a la Pantalla de Funciones FDA” en la imagen

deseada.

• En “Eventos->Pulsar” agregar el siguiente evento: o “Funciones VB-> QDS_Notificacion_Usuario_Pantalla”

• Completar los parámetros: o Categoria: Navegacion de Pantallas o Nombre_de_objeto: Pantallas Principal o Descripcion: Se abre la pantalla de funciones FDA o Imagen_Numero: 2 o GMP: 1 (en demo, variable HMI) o Tipo_de_Confirmacion: Firma

Imagen 43: Implementación de botón “Ir a la Pantalla de Funciones FDA”

4.5. Ejecución en un Script

Se deberá crear un script VB (VisualBasic) dentro del proyecto WinCC Flex 2008 ó TIA Portal v11/12 con las siguientes propiedades:

• Nombre: QDS_Notificacion_Usuario_Scripts

• Tipo: Function

• Parámetros:

o Categoria (ByRef) o Nombre_de_objeto (ByRef) o Descripcion (ByRef) o GMP (ByRef) o Tipo_de_Confirmacion (ByRef)

Código: Select Case Tipo_de_Confirmacion Case "Ninguna" Case "Firma" Case "Acuse" Case Else Dim msg_err1 Set msg_err1 = CreateObject("WScript.Shell") msg_err1.Popup "Error de parametrizacion, revise el parametro [Tipo_de_Confirmacion] !!!"&vbCrLf &vbCrLf &"Valor ingresado: "&Tipo_de_Confirmacion &vbCrLf &"Valores posibles: Firma ; Acuse ; Ninguna",,"Error de Programación",4112 Exit Function End Select Dim estado Select Case GMP Case 1 estado = 10 Case 2 estado = 50 Case 0 estado = 100 Case Else Dim msg_err2 Set msg_err2 = CreateObject("WScript.Shell") msg_err2.Popup "Error de parametrizacion, revise el parametro [GMP] !!!"&vbCrLf &vbCrLf &"Valor ingresado: "&GMP &vbCrLf &"Valores posibles: 0 ; 1 ; 2",,"Error de Programación",4112 Exit Function End Select If(estado = 10)Then Dim usuario GetUserName usuario

If Tipo_de_Confirmacion = "Ninguna" Then QDS_Notificacion_Usuario_Scripts = "ok" If usuario <> "" Then NotifyUserAction hmiNone, hmiFalse, Categoria, Nombre_de_objeto, Descripcion Else NotifyUserAction hmiNone, hmiFalse, Categoria, Nombre_de_objeto, "(Sin Usuario Logueado) " & Descripcion End If Exit Function End If If usuario = "" Then Dim msg_login Set msg_login = CreateObject("WScript.Shell") msg_login.Popup "No hay un usuario identificado y la seguridad se encuentra deshabilitada"&vbCrLf &vbCrLf &"Los tipos de confirmacion Firma y Acuse requieren Seguridad" & usuario,,"Error de programacion",4112 Exit Function End If Dim objeto Dim programa Dim respuesta Dim respuesta_desglose Dim usuario_nok Dim tipo Set objeto = CreateObject("WScript.Shell") If Tipo_de_Confirmacion = "Firma" Then On Error Resume Next Set programa = objeto.Exec("%ProgramFiles%\Quantia S.A\QSolutions - QDactilSecure\QDactilSecure - Adminitrador.exe A03 "& usuario) tipo = "Firmado: " End If If Tipo_de_Confirmacion = "Acuse" Then On Error Resume Next Set programa = objeto.Exec("%ProgramFiles%\Quantia S.A\QSolutions - QDactilSecure\QDactilSecure - Adminitrador.exe A04 "& usuario) tipo = "Acusado: " End If programa.StdIn.WriteLine Descripcion Do While respuesta ="" respuesta = programa.StdOut.ReadLine() respuesta_desglose = Split(respuesta,";") Select Case respuesta_desglose(0) Case "ok" QDS_Notificacion_Usuario_Scripts = "ok" NotifyUserAction hmiNone, hmiFalse, Categoria, Nombre_de_objeto,tipo & Descripcion &respuesta_desglose(1)

Case "nok" usuario_nok = respuesta_desglose(1) NotifyUserAction hmiNone, hmiFalse, Categoria, Nombre_de_objeto, "Firmado Incorrecta: El usuario " & usuario_nok & " intento firmar por el Usuario Actual" respuesta= "" Case "error" estado = 50 Case "cancelar" QDS_Notificacion_Usuario_Scripts = "nok" End Select Loop End If If(estado = 50) Then Select Case Tipo_de_Confirmacion Case "Ninguna" On Error Resume Next NotifyUserAction hmiNone, hmiFalse, Categoria, Nombre_de_objeto, Descripcion If Err.Number = 0 Then QDS_Notificacion_Usuario_Scripts = "ok" Else QDS_Notificacion_Usuario_Scripts = "nok" End If Case "Acuse" On Error Resume Next NotifyUserAction hmiAcknowledgement, hmiFalse, Categoria, Nombre_de_objeto, Descripcion If Err.Number = 0 Then QDS_Notificacion_Usuario_Scripts = "ok" Else QDS_Notificacion_Usuario_Scripts = "nok" End If Case "Firma" On Error Resume Next NotifyUserAction hmiSignature, hmiFalse, Categoria, Nombre_de_objeto, Descripcion If Err.Number = 0 Then QDS_Notificacion_Usuario_Scripts = "ok" Else QDS_Notificacion_Usuario_Scripts = "nok" End If End Select End If If(estado = 100) Then QDS_Notificacion_Usuario_Scripts = "ok"

End If

4.5.1. Descripción del script

Este script retorna el valor “ok” cuando el parámetro “Tipo_de_Confirmacion” sea “Ninguna”, ó en caso de ser “Firma”/”Acuse” y se confirme mediante la ventana de QDactilSecure+FDA, en caso contrario retornará el valor “nok”

Nota: el uso de este script es exclusivo para la programación de scripts de usuarios.

4.5.2. Descripción de parámetros

• Categoria: Tipo: String Uso: descripción de la categoría en el reporte

• Nombre_de_objeto

Tipo: String Uso: nombre representativo del objeto que es modificado para asentar en el reporte

• Descripcion:

Tipo: String Uso: descripción de la acción sobre el objeto para asentar en el reporte

• GMP: (0/1/2)

Tipo: String Uso: activa ó desactiva el reporte FDA Valores posibles:

• 0 (Sin auditoria) • 1 (Con auditoria, método QDactilSecure) • 2 (Con Auditoria, método Siemens)

• Tipo_de_Confirmación: (Firma/Acuse/Ninguna)

Tipo: String Uso: forma de confirmar la acción del usuario

4.5.3. Ejemplo de implementación

Nota: el siguiente ejemplo se muestra a través del proyecto Demo. • Crear un círculo en la imagen deseada con las siguientes características:

• “Apariencia->Fondo->Color” en “Rojo” • “Misceláneo->Objeto->Nombre” “Círculo_1”

Crear un script VB (VisualBasic) dentro del proyecto WinCC Flex 2008 ó TIA Portal v11/12 con las siguientes propiedades:

• Nombre: Ejemplo_Scripts

• Tipo: Sub

Código: Dim resultado resultado = QDS_Notificacion_Usuario_Scripts ("Cambio de Color","Circulo","Se cambia el color",SmartTags("Tipo_GMP"),"Acuse") If resultado="ok" Then Dim objeto Set objeto = HmiRuntime.Screens("Funciones FDA").ScreenItems("Círculo_1") If SmartTags("bool3")=True Then objeto.BackColor = RGB(255,0,0) Else objeto.BackColor = RGB(0,255,0) End If SmartTags("bool3") = SmartTags("bool3") Xor True End If

Este Script invoca a la función VB “QDS_Notificacion_Usuario_Scripts” y guarda el valor de retorno en “resultado”. Cuando el valor de “resultado” es igual a “ok” cambia el color del circulo “Círculo_1” de rojo a verde y viceversa. El valor de los parámetros es:

• Categoria: “Cambio de Color” • Nombre_de_objeto: “Circulo” • Descripcion: “Se cambia el color” • GMP: 1 (en demo, variable HMI) • Tipo_de_Confirmacion: “Acuse”

• Crear un botón con el título “Ejemplo Script” en la imagen donde se encuentra “Círculo_1”.

• En “Eventos->Pulsar” agregar el siguiente evento: o “Funciones VB-> Ejemplo_Scripts”

Imagen 44: Implementación botón “Ejemplo Script”

4.6. El proyecto Demo QdactilSecure + FDA

El paquete de software QDactilSecure+FDA incluye un proyecto Demo donde se encuentra un programa de usuario de panel “Tipo” el cual implementa todas las funcionalidades del sistema QDactilSecure+FDA.

Imagen 45: Proyecto Demo, QDactilSecure+FDA

En este proyecto se encuentran los “ejemplos de implementación” de los scripts descriptos anteriormente. Se recomienda utilizarlos como base para la futura implementación en el desarrollo que el implementador esté realizando.

5. Errores en tiempo de ejecución Durante la ejecución del programa HMI puede producirse errores por la ausencia o falla de dispositivos. Cuando se produzca un error en tiempo de ejecución controlado, el sistema QDactilSecure cambiará el método de identificación a Siemens de forma automática.

5.1. Falta/Falla de Llave Cuando la “Llave USB” no está presente ó se encuentre dañada, al realizar una acción que haga uso de QDactilSecure se desplegará una ventana de error con el código Nº 20

Imagen 46: Ventana de Error Nº20

Si el sistema informa este error, deberá comprobarse la presencia de la “Llave USB” y que esté debidamente conectada. De no solucionar el problema deberá solicitar asistencia.

5.2. Falta/Falla de Sensor de huellas dactilares o tarjeta RFID

Cuando el “Sensor de huellas dactilares” o el “lector de tarjetas RFID” no está presente ó se encuentre dañado, al realizar una acción que haga uso de QDactilSecure se desplegará una ventana de advertencia informando la situación.

Imagen 47: Ventana de advertencia, falta del sensor de huellas dactilares

Si el sistema informa esta advertencia, deberá comprobar que el sensor de huellas dactilares o lector de tarjetas RFID esté debidamente conectado. De no solucionar el problema deberá solicitar asistencia.