guía de programación para visual basic™ 6 · pdf filequadralab guía...

26
Innova Service Tecnología www. istec .cl Guía de Programación para Visual Basic™ 6 Versión 1.1

Upload: vuongdiep

Post on 01-Feb-2018

240 views

Category:

Documents


1 download

TRANSCRIPT

Page 1: Guía de Programación para Visual Basic™ 6 · PDF fileQUADRALAB Guía de Programación en Visual Basic™ 6 Pag.2 Entorno de programación Visual Basic 6 DLL de control Puerto COM

Innova Service Tecnologíaw w w . i s t e c . c l

Guía de Programación para Visual Basic™ 6 Versión 1.1

Page 2: Guía de Programación para Visual Basic™ 6 · PDF fileQUADRALAB Guía de Programación en Visual Basic™ 6 Pag.2 Entorno de programación Visual Basic 6 DLL de control Puerto COM

Indice Introducción………………………………………………………………………………………………….1

Instalación y Enlace a Proyecto Visual Basic………………………………………………………….3

Consideraciones Generales Nombres de funciones y procedimientos…………………………………………………………5

Uso de puerto COMM (RS232) o USB…………………………………………………………...5

Valores de retorno de las funciones y condiciones de error……………………………………6

Tabla Resumen de Funciones y Subrutinas Visual Basic…………………………………………..8

Referencia de Funciones y Subrutinas A. Rutinas de Inicialización y Término………………………………………………………...10

B. Funciones de entradas y salidas……………………………………………………………13

C. Funciones especiales………………………………………………………………………...21

Page 3: Guía de Programación para Visual Basic™ 6 · PDF fileQUADRALAB Guía de Programación en Visual Basic™ 6 Pag.2 Entorno de programación Visual Basic 6 DLL de control Puerto COM

QUADRALAB

Guía de Programación en Visual Basic™ 6 Pag.1

Introducción

Microsoft™ Visual Basic™ es uno de los lenguajes de programación Windows más difundidos

actualmente. Combina facilidad de uso, programación atractiva y recursos adecuados tanto para

principiantes como para programadores expertos.

Figura 1. Ejemplo del entorno Visual Basic 6.0 en Windows XP.

La primera versión se presentó a principios de los ’90, hasta llegar a la actual, que forma parte de

Visual Studio 2005. No obstante, para muchas aplicaciones se sigue utilizando la versión 6.0

(aparecida en 1998) debido a la gran cantidad de licencias adquiridas para esa versión y a la

preferencia de muchos programadores por sobre versiones posteriores más complejas.

QuadraLab utiliza una librería DLL especial para permitir su control y administración vía Visual

Basic:

Page 4: Guía de Programación para Visual Basic™ 6 · PDF fileQUADRALAB Guía de Programación en Visual Basic™ 6 Pag.2 Entorno de programación Visual Basic 6 DLL de control Puerto COM

QUADRALAB

Guía de Programación en Visual Basic™ 6 Pag.2

Entorno de programación Visual Basic 6

DLL de control Puerto COM o USB QuadraLab

PC Compatible

Figura 2. Estructura conceptual de la comunicación via DLL.

Como se puede ver en el esquema, el DLL administra los detalles de la comunicación, actuando

como una “capa protectora” entre el programador Visual Basic y el hardware del módulo. Mediante

el DLL es posible:

• Acceder a las entradas y salidas de QuadraLab, tanto digitales como análogas.

• Programar algoritmos complejos de control, permitiendo a QuadraLab comportarse como

una interface industrial.

• Acceder a información especial del módulo, como número de serie y nombre del equipo.

Los detalles de la comunicación serial son enmascarados por el DLL, ofreciendo un conjunto de

funciones de alto nivel como ‘leer entrada’ o ‘cambiar salida’. Sólo se requiere que el programador

invoque una función especial de inicialización y proporcione el número de puerto COM (Virtual USB

o puerto COM físico) y lo demás es realizado automáticamente por el DLL.

Nota: El software de control del DLL requiere para su correcto funcionamiento la versión SP6 de Visual Basic

6.0. Este parche puede descargarse desde msdn.microsoft.com

El DLL ha sido especialmente diseñado para Visual Basic, por tanto no requiere que el

programador declare explícitamente sus funciones y subrutinas. Esto aumenta la sencillez de uso y

permite que el programador se concentre exclusivamente en la construcción y depuración del

software de control.

Page 5: Guía de Programación para Visual Basic™ 6 · PDF fileQUADRALAB Guía de Programación en Visual Basic™ 6 Pag.2 Entorno de programación Visual Basic 6 DLL de control Puerto COM

QUADRALAB

Guía de Programación en Visual Basic™ 6 Pag.3

Instalación y Enlace a Proyecto Visual Basic

► Instalación del DLL. El DLL no requiere de un programa especial de instalación. Sólo se

requiere copiarlo a la carpeta System, dentro de la carpeta WINDOWS (en Windows™ XP) o

dentro de la carpeta WINNT (en Windows™ 2000). Asegúrese de que Visual Basic no está

ejecutándose al momento de instalar el DLL.

En www.istec.cl/quadralab se encuentra siempre la versión más actual del DLL, que incluye

depuración de posibles errores y mejoras.

Una vez que el DLL está instalado en la carpeta de sistema, es necesario “enlazarlo” con el

proyecto Visual Basic (VB) para poder acceder a todos sus recursos y funciones. A continuación se

explica el procedimiento necesario; esto debe realizarse para cada nuevo proyecto VB creado.

► Para enlazar la biblioteca DLL a un proyecto Visual Basic:

1) En el menú Proyecto, hacer click en el ítem Referencias…

2) Seleccionar Quadralab_VB6.dll en la lista de referencias (si no está en la lista, debe

localizarse manualmente el DLL con el botón [Examinar] ):

En el ejemplo, el DLL se ha instalado en la carpeta de sistema de Windows XP en la unidad C:

C:\WINDOWS\SYSTEM\

Page 6: Guía de Programación para Visual Basic™ 6 · PDF fileQUADRALAB Guía de Programación en Visual Basic™ 6 Pag.2 Entorno de programación Visual Basic 6 DLL de control Puerto COM

QUADRALAB

Guía de Programación en Visual Basic™ 6 Pag.4

Una vez seleccionada esta referencia, las funciones y subrutinas del DLL estarán disponibles al

proyecto Visual Basic sin necesidad de declaraciones u otros pasos.

► Cómo comprobar la instalación y enlazado correcto del DLL.

Para comprobar si el DLL está enlazado correctamente, puede llamarse a la función

ql_version_dll, que mostrará la versión del DLL de control en una caja de mensajes.

Ejemplo: Se ha creado un botón de comando llamado command1 en el formulario del proyecto.

Haciendo doble clic sobre el mismo, al momento del diseño, se tipea el siguiente código para el

botón:

Private Sub Command1_Click()

ql_version_dll True

End Sub

Al momento de ejecutar el proyecto y hacer click sobre el botón, debiera aparecer el siguiente

mensaje:

Cualquier mensaje de error indica que el DLL no está correctamente enlazado al proyecto.

Notar que no es requerido llamar a esta función para inicializar al módulo y operarlo; se ha previsto esta función como una

manera de verificar la instalación del DLL y la posibilidad de obtener la versión del mismo.

Para comprobar el correcto funcionamiento de la comunicación y del módulo, se recurre a las

funciones de inicialización, a discutir en la siguiente sección: Referencia de Funciones y Subrutinas.

Page 7: Guía de Programación para Visual Basic™ 6 · PDF fileQUADRALAB Guía de Programación en Visual Basic™ 6 Pag.2 Entorno de programación Visual Basic 6 DLL de control Puerto COM

QUADRALAB

Guía de Programación en Visual Basic™ 6 Pag.5

Consideraciones Generales

Antes de proceder con la referencia completa de procedimientos y funciones disponibles en el DLL,

se recomienda estudiar con cuidado la siguiente información:

► Nombres de funciones y procedimientos.

Todos los procedimientos y funciones del DLL empiezan con el prefijo ql_, tal como ql_inic() o

ql_leer_ent_dig(). Esto permite evitar confusiones de nombres con funciones ya existentes,

independientes de QuadraLab. Los nombres están en lenguaje español para facilitar el aprendizaje

de los mismos.

► Uso de puerto COMM (RS232) o USB.

La biblioteca DLL administra de manera transparente al programador la comunicación,

independientemente de si se está usando un puerto COM virtual-USB o un puerto DB-9 físico. Al

momento de inicializar el módulo, mediante la función ql_inic(), se especifica al DLL qué puerto

COM se utilizará y éste intentará inicializar la comunicación por esa vía. Recuérdese que el control

por USB se realiza por medio de un puerto COM virtual; esto se explica en el capítulo de

Comunicaciones del Manual de Usuario.

No obstante lo anterior, el uso de un puerto COM virtual-USB tiene complicaciones particulares de

rendimiento que no son problemas del DLL o del módulo QuadraLab en sí mismo, sino que de la

manera en que el hardware USB administra la comunicación. En líneas generales, si se envían

demasiadas peticiones secuenciales de lectura o escritura al módulo, el tráfico por USB tenderá a

atascarse haciendo el rendimiento del programa VB lento.

Para paliar este inconveniente (inexistente cuando se usa un puerto COM RS-232 ‘verdadero’), el

DLL ofrece un modo ‘burst’ especial que permite leer el estado de todas las entradas y salidas del

módulo con un solo comando, reduciendo así en gran medida el tráfico USB. Esta característica se

explica detalladamente en la sección de Referencia de Funciones y Procedimientos.

Page 8: Guía de Programación para Visual Basic™ 6 · PDF fileQUADRALAB Guía de Programación en Visual Basic™ 6 Pag.2 Entorno de programación Visual Basic 6 DLL de control Puerto COM

QUADRALAB

Guía de Programación en Visual Basic™ 6 Pag.6

No olvidar que es necesario especificar en el mismo módulo QuadraLab explícitamente si el control

vía PC será por su puerto USB o RS-232. Para ello, referirse al capítulo de Comunicaciones del

Manual de Usuario.

► Valores de retorno de las funciones y condiciones de error.

Existen básicamente tres tipos de funciones disponibles en la biblioteca DLL para QuadraLab:

• Funciones de lectura

• Funciones de escritura

• Funciones especiales

Las funciones de lectura en su mayoría se refieren a las entradas digitales y análogas del

módulo. No obstante, algunas de ellas también leen valores escritos en las salidas e información

especial, como nombre del equipo.

La mayor parte de las funciones de lectura devuelven valores numéricos iguales o mayores que 0,

en formato entero (Integer, 16 bits) o bien formato punto flotante (Single, 32 bits), según el caso. Si

hay una condición de error, como un fallo en la comunicación, estas funciones devuelven un -1.

Las funciones de escritura, aunque por concepto no leen valores desde el módulo, retornan un

tipo boolean (verdadero o falso) para indicar que la operación se realizó en forma correcta. Si no se

requiere estricta certeza de que la operación se realizó, entonces puede ignorarse el valor de

retorno (False indica error en la operación).

Para una mayor sencillez en aplicaciones de laboratorio, es posible “omitir” el valor de retorno y

usar estas funciones simplemente como comandos:

todo_ok = ql_cambiar_sal_v1(2.5) ‘ejemplo usando valor de retorno, se guarda en

la variable tipo boolean todo_ok

o bien, ql_cambiar_sal_v1(2.5) ‘ejemplo ignorando el valor de retorno

La primera forma se recomienda en aplicaciones donde la seguridad de la conexión sea un

Page 9: Guía de Programación para Visual Basic™ 6 · PDF fileQUADRALAB Guía de Programación en Visual Basic™ 6 Pag.2 Entorno de programación Visual Basic 6 DLL de control Puerto COM

QUADRALAB

Guía de Programación en Visual Basic™ 6 Pag.7

problema crítico.

Notar que la versión simplificada (la de abajo) no lleva paréntesis, esto es por características

propias de Visual Basic. Los ejemplos de este manual están dados en esta forma simplificada.

La naturaleza de las funciones especiales y sus valores de retorno serán discutidas en detalle

según el caso.

Se provocará un error al intentar ejecutar funciones de lectura / escritura sin haber inicializado la comunicación con el módulo.

Page 10: Guía de Programación para Visual Basic™ 6 · PDF fileQUADRALAB Guía de Programación en Visual Basic™ 6 Pag.2 Entorno de programación Visual Basic 6 DLL de control Puerto COM

QUADRALAB

Guía de Programación en Visual Basic™ 6 Pag.8

Tabla Resumen de Funciones y Subrutinas Visual Basic para el módulo QuadraLab, Versión 1.0

Categoría Nombre Func / Sub

Tipo de retorno

Comentarios

ql_dll_version Function String Devuelve y/o muestra en pantalla la versión del DLL de control.

ql_inic Function Boolean Inicializa el módulo en el puerto COM (virtual USB o físico) especificado. Inicialización y

Término

ql_terminar Function Boolean “Cierra” la comunicación y libera al puerto COM usado. Devuelve false si

la operación falló.

ql_leer_ent_dig Function Byte Devuelve el estado lógico de la entrada digital especificada.

ql_leer_ent_v1

ql_leer_ent_v2 Function Single Devuelve la lectura de la entrada de voltaje v1 o v2, en volts.

ql_leer_ent_i1

ql_leer_ent_i2 Function Single Devuelve la lectura de la entrada de corriente i1 o i2, en miliamperes.

ql_leer_pot_datos Function Single Devuelve la posición absoluta de la perilla Datos del módulo, en %.

ql_leer_sal_dig Function Byte Devuelve el estado lógico de la entrada digital especificada.

ql_leer_sal_v1

ql_leer_sal_v2 Function Single Devuelve la lectura de la salida de voltaje v1 o v2, en volts.

Entradas y Salidas

ql_leer_ent_i1

ql_leer_ent_i2 Function Single Devuelve la lectura de la salida de corriente i1 o i2, en miliamperes.

Page 11: Guía de Programación para Visual Basic™ 6 · PDF fileQUADRALAB Guía de Programación en Visual Basic™ 6 Pag.2 Entorno de programación Visual Basic 6 DLL de control Puerto COM

QUADRALAB

Guía de Programación en Visual Basic™ 6 Pag.9

ql_cambiar_sal_v1

ql_cambiar_sal_v2 Function Boolean Programa el voltaje especificado en las salidas de voltaje.

ql_cambiar_sal_i1

ql_cambiar_sal_i2 Function Boolean Programa la corriente especificado en las salidas de corriente.

Entradas y Salidas (cont.)

ql_cambiar_sal_dig Function Boolean Programa la salida digital especificada.

ql_set_burst Sub -- Permite activar o desactivar el modo burst para lectura de entradas y

salidas.

ql_leer_burst Function Boolean Refresca el burst buffer del PC con la información de las entradas y

salidas del módulo.

ql_set_msg Sub -- Establece si se mostrarán o no mensajes de error en cajas de mensaje.

ql_leer_nombre Function String Retorna el nombre del equipo (12 caracteres) como un string.

ql_leer_OS Function String Retorna la Versión de Sistema instalada en el módulo como un string.

Funciones Especiales

ql_leer_modelo Function String Retorna el modelo del equipo como un string.

Page 12: Guía de Programación para Visual Basic™ 6 · PDF fileQUADRALAB Guía de Programación en Visual Basic™ 6 Pag.2 Entorno de programación Visual Basic 6 DLL de control Puerto COM

QUADRALAB

Guía de Programación en Visual Basic™ 6 Pag.10

Referencia de Funciones y Subrutinas A. Rutinas de Inicialización y Término

Public Function ql_version_dll(msg As Boolean) As String

Esta rutina retorna la version del DLL de control instalado en el sistema, lo que puede ser

útil en la medida en que nuevas versiones del DLL pueden ofrecer carácterísticas de

control adicionales y depuración de errores. Si el argumento msg=True, se muestra una

ventana con la información de versión en pantalla. Por ejemplo, al tipear desde Visual

Basic:

ql_version_dll(True)

se muestra una ventana como la siguiente:

El valor de retorno corresponde a la versión en forma de String. Por ejemplo, “1.0” o

“2.3”.

Public Function ql_inic(puerto As Byte) As Boolean

Esta rutina es fundamental, por cuanto ejecuta la inicialización del protocolo para utilizar las

características del módulo. Ninguna otra función o subrutina relacionada con el módulo

responderá si no se ha ejecutado correctamente esta rutina.

El argumento puerto corresponde al puerto COM (virtual-USB o RS-232) al que se

encuentra conectado la interface. Por ejemplo, para inicializar la interface en el puerto

COM3, se tipea lo siguiente:

Page 13: Guía de Programación para Visual Basic™ 6 · PDF fileQUADRALAB Guía de Programación en Visual Basic™ 6 Pag.2 Entorno de programación Visual Basic 6 DLL de control Puerto COM

QUADRALAB

Guía de Programación en Visual Basic™ 6 Pag.11

ql_inic(3)

Con lo que aparece una ventana similar a ésta:

La información que aparece en esta ventana es enviada directamente por el

microcontrolador del módulo.

Se mostrará una ventana con un mensaje de error si no es posible comunicarse con la

interface:

Esta función retorna True si la inicialización fue exitosa, o False si hubo un error de

comunicación u otro tipo. En caso de que la comunicación se haya establecido, el puerto

COM utilizado no estará disponible para otras aplicaciones hasta “cerrarlo” como es explica

inmediatamente.

Condiciones de error comunes son:

o Error en el puerto COM: Este mensaje indica que el puerto no pudo abrirse. Ello

puede deberse a que es un puerto inexistente, que ha sido ocupado por otra

aplicación o que un puerto COM virtual-USB está mal instalado.

o Comunicación fallida: Entre las causas posibles están: se intentó inicializar el

puerto equivocado, cables dañados o no conectados, o que la comunicación está

desactivada en el módulo QuadraLab.

Page 14: Guía de Programación para Visual Basic™ 6 · PDF fileQUADRALAB Guía de Programación en Visual Basic™ 6 Pag.2 Entorno de programación Visual Basic 6 DLL de control Puerto COM

QUADRALAB

Guía de Programación en Visual Basic™ 6 Pag.12

Durante la fase de inicialización, se envía información importante hacia el PC anfitrión, tal

como nombre del equipo (puede cambiarse, hasta 12 caracteres de largo), identificación de

manufactura, número de serie, etc. Esta información puede luego leerse usando funciones

especiales del DLL.

El LED naranjo del módulo se enciende permanentemente cuando la comunicación con PC

está inicializada y por tanto disponible para las operaciones de entrada / salida.

Public Function ql_terminar() As Boolean

Esta función "cierra" el puerto y desconecta al módulo del software anfitrión.

Ninguna operación sobre QuadraLab se ejecutará hasta no inicializar la comunicación

nuevamente, usando la función ql_inic().

La función retorna True si la operación de "cierre" fue exitosa, o False si hubo un

error de comunicación u otro tipo. Esta función debiera ser llamada siempre que se va a

descargar el proyecto o formulario que invoca las funciones de QuadraLab.

Ejemplo: ql_terminar

Nota: Todas las funciones que intenten comunicarse con el módulo mostrarán un mensaje

de error en pantalla cuando la comunicación se pierda. Para evitar este mensaje, debe

invocarse a la subrutina ql_set_msg(False), con lo que no aparecerán más mensajes en

pantalla.

Page 15: Guía de Programación para Visual Basic™ 6 · PDF fileQUADRALAB Guía de Programación en Visual Basic™ 6 Pag.2 Entorno de programación Visual Basic 6 DLL de control Puerto COM

QUADRALAB

Guía de Programación en Visual Basic™ 6 Pag.13

B. Rutinas de Entradas y Salidas

Public Function ql_leer_ent_dig(n as Byte) As Byte

Esta función retorna el estado de la entrada digital especificada por n (n es un entero entre

1 y 8). El valor es '0' si la entrada no está conectada a tensión alguna, o '1' si está

conectada a una tensión entre 12 y 24V. Si la comunicación con el módulo se ha perdido o

no se ha inicializado, el valor de retorno es -1.

El siguiente ejemplo controla el estado de un control checkbox llamado "chk_ejemplo" de

acuerdo al valor de la entrada DIn2:

chk_ejemplo.value = ql_leer_ent_dig(4)

En este caso, cuando se conecte tensión a la entrada digital 4, el checkbox mostrará un

ticket al ponerse su propiedad value en 1 (que es el valor retornado por

ql_leer_ent_dig). Si la tensión leída es 0 V, el ticket no se mostrará al ser su propiedad

value=0.

Esta función lee la entrada desde el hardware en el momento de ser llamada, si el modo Burst no está activo. Si

el modo está activado, la función retornará el último estado leído con el comando ql_leer_burst().

Public Function ql_leer_ent_v1() As Single

Public Function ql_leer_ent_v2() As Single

Estas funciones leen el voltaje presente en las entradas de voltaje v1 o v2, respecto a uno

de los terminales de tierra G. El valor de retorno es un número en punto flotante (single, 32

bits) entre 0.0 y 5.0 V, usando 10 bits de precisión.

Si se desea reducir la cantidad de decimales, puede utilizarse la función round() de Visual Basic.

El siguiente ejemplo muestra el voltaje de la entrada 1 (con todos sus decimales) en una

etiqueta llamada etiq:

etiq.caption = ql_leer_ent_v1()

Page 16: Guía de Programación para Visual Basic™ 6 · PDF fileQUADRALAB Guía de Programación en Visual Basic™ 6 Pag.2 Entorno de programación Visual Basic 6 DLL de control Puerto COM

QUADRALAB

Guía de Programación en Visual Basic™ 6 Pag.14

Estas funciones retornan -1 si ocurrió un error.

Esta función lee la entrada desde el hardware en el momento de ser llamada, si el modo Burst no está activo. Si

el modo está activado, la función retornará el último estado leído con el comando ql_leer_burst().

Public Function ql_leer_ent_i1() As Single

Public Function ql_leer_ent_i2() As Single

Estas funciones leen la corriente presente en las entradas de corriente i1 o i2.

El valor de retorno es un número en punto flotante (single, 32 bits) entre 0.0 y 20.0 mA,

usando 10 bits de precisión.

El siguiente ejemplo muestra la corriente de la entrada 2 en una etiqueta llamada etiq:

etiq.caption = ql_leer_ent_i2()

Estas funciones retornan -1 si ocurrió un error.

Esta función lee la entrada desde el hardware en el momento de ser llamada, si el modo Burst no está activo. Si

el modo está activado, la función retornará el último estado leído con el comando ql_leer_burst().

Public Function ql_leer_pot_datos() As Single

Esta función retorna la posición absoluta de la perilla de datos. La posición es un número

tipo Single entre 0.0% (perilla en tope izquierdo) y 100.0% (perilla en tope derecho)

Esta función es útil para variar parámetros en el formulario VB de manera continua, desde

el mismo hardware, tal como barras de progreso, deslizadores, etc.

El siguiente ejemplo varía una barra de progreso (Progress Bar) llamada progbar. Esta

barra tiene sus propiedades min=0 y max=100, respectivamente:

ProgBar.Value = ql_leer_pot_datos()

Si la comunicación con el módulo se ha perdido o no se ha inicializado, el valor de retorno

Page 17: Guía de Programación para Visual Basic™ 6 · PDF fileQUADRALAB Guía de Programación en Visual Basic™ 6 Pag.2 Entorno de programación Visual Basic 6 DLL de control Puerto COM

QUADRALAB

Guía de Programación en Visual Basic™ 6 Pag.15

es -1.

Esta función lee la salida desde el hardware en el momento de ser llamada, si el modo Burst no está activo. Si el

modo está activado, la función retornará el último estado leído con el comando ql_leer_burst().

Public Function ql_leer_sal_dig(n as Byte) As Byte

Esta función retorna el estado de la salida digital especificada por el parámetro n (n es un

entero entre 1 y 8). El valor es '0' si la salida está abierta y '1' si está conectada.

Si bien parece contradictorio leer una salida, ello tiene sentido por cuanto el modo Monitor

o una aplicación corriendo en QuadraLab puede modificar las salidas. Por tanto, esta

función permite que el software VB “actualice” su registro de las salidas activas e inactivas.

El siguiente ejemplo controla el estado de un control checkbox llamado "chk_ejemplo" de

acuerdo al valor de la salida digital 8:

chk_ejemplo.value = ql_leer_sal_dig(8)

Si la comunicación con el módulo se ha perdido o no se ha inicializado, el valor de retorno

es -1.

Esta función lee la salida desde el hardware en el momento de ser llamada, si el modo Burst no está activo. Si el

modo está activado, la función retornará el último estado leído con el comando ql_leer_burst().

Public Function ql_leer_sal_v1() As Single

Public Function ql_leer_sal_v2() As Single

Estas funciones leen el último voltaje ajustado en las salidas v1 o v2, respecto a uno de los

terminales de tierra G. El valor de retorno es un número en punto flotante (single, 32 bits)

entre 0.0 y 5.0 V, usando 10 bits de precisión.

Si bien parece contradictorio leer una salida, ello tiene sentido por cuanto el modo Monitor

o una aplicación corriendo en QuadraLab puede modificar las salidas de manera ajena a

Page 18: Guía de Programación para Visual Basic™ 6 · PDF fileQUADRALAB Guía de Programación en Visual Basic™ 6 Pag.2 Entorno de programación Visual Basic 6 DLL de control Puerto COM

QUADRALAB

Guía de Programación en Visual Basic™ 6 Pag.16

Visual Basic. Por tanto, esta función permite que el software VB “actualice” su registro de

las salidas de voltaje.

El siguiente ejemplo muestra el voltaje de la salida 1 en una etiqueta llamada etiq:

etiq.caption = ql_leer_sal_v1()

Una manera simple de comprobar esta función consiste en diseñar un formulario VB donde

el valor de una salida sea leído continuamente desde QuadraLab y mostrado en una

etiqueta o cuadro de texto. Cuando esta salida sea modificada desde el modo Monitor, este

cambio también será mostrado en pantalla de manera inmediata.

Estas funciones retornan -1 si ocurrió un error.

Esta función lee la salida desde el hardware en el momento de ser llamada, si el modo Burst no está activo. Si el

modo está activado, la función retornará el último estado leído con el comando ql_leer_burst().

Public Function ql_leer_sal_v1() As Single

Public Function ql_leer_sal_v2() As Single

Estas funciones leen el último voltaje ajustado en las salidas v1 o v2, respecto a uno de los

terminales de tierra G. El valor de retorno es un número en punto flotante (single, 32 bits)

entre 0.0 y 5.0 V, usando 10 bits de precisión.

Si bien parece contradictorio leer una salida, ello tiene sentido por cuanto el modo Monitor

o una aplicación corriendo en QuadraLab puede modificar las salidas. Por tanto, esta

función permite que el software VB “actualice” su registro de las salidas de voltaje.

El siguiente ejemplo muestra el voltaje de la salida 1 en una etiqueta llamada etiq:

etiq.caption = ql_leer_sal_v1()

Una manera simple de comprobar esta función consiste en diseñar un formulario VB donde

el valor de una salida sea leído continuamente desde QuadraLab y mostrado en una

etiqueta o cuadro de texto. Cuando esta salida sea modificada desde el modo Monitor, este

cambio también será mostrado en pantalla de manera inmediata.

Page 19: Guía de Programación para Visual Basic™ 6 · PDF fileQUADRALAB Guía de Programación en Visual Basic™ 6 Pag.2 Entorno de programación Visual Basic 6 DLL de control Puerto COM

QUADRALAB

Guía de Programación en Visual Basic™ 6 Pag.17

Estas funciones retornan -1 si ocurrió un error.

Esta función lee la salida desde el hardware en el momento de ser llamada, si el modo Burst no está activo. Si el

modo está activado, la función retornará el último estado leído con el comando ql_leer_burst().

Public Function ql_leer_sal_i1() As Single

Public Function ql_leer_sal_i2() As Single

Estas funciones leen la corriente presente en las salidas de corriente i1 o i2.

El valor de retorno es un número en punto flotante (single, 32 bits) entre 0.0 y 20.0 mA,

usando 8 bits de precisión.

El siguiente ejemplo muestra la corriente de la salida 1 en una etiqueta llamada etiq:

etiq.caption = ql_leer_sal_i1()

Estas funciones retornan -1 si ocurrió un error.

Esta función lee la salida desde el hardware en el momento de ser llamada, si el modo Burst no está activo. Si el

modo está activado, la función retornará el último estado leído con el comando ql_leer_burst().

Page 20: Guía de Programación para Visual Basic™ 6 · PDF fileQUADRALAB Guía de Programación en Visual Basic™ 6 Pag.2 Entorno de programación Visual Basic 6 DLL de control Puerto COM

QUADRALAB

Guía de Programación en Visual Basic™ 6 Pag.18

Public Function ql_cambiar_sal_v1(v as Single) As Boolean

Public Function ql_cambiar_sal_v2(v as Single) As Boolean

Estas funciones programan el voltaje en las salidas v1 o v2.

Los valores aceptados estan entre 0.000 y 5.000 volts; valores fuera de este rango serán

aproximados al límite más cercano. Por ejemplo, si se intentan colocar -3 V en la salida v1,

el equipo colocará 0 V.

El siguiente ejemplo establece la salida v2 en 3.14 volts:

ql_leer_cambiar_sal_v2(3.14)

El valor programado siempre puede revisarse en el modo Monitor.

Public Function ql_cambiar_sal_i1(i as Single) As Boolean

Public Function ql_cambiar_sal_i2(i as Single) As Boolean

Estas funciones programan la corriente en las salidas i1 o i2.

Los valores aceptados estan entre 0.0 y 20.0 miliamperes; valores fuera de este rango

serán aproximados al límite más cercano. Por ejemplo, si se intentan colocar 100 mA en la

salida v1, el equipo colocará 20 mA.

El siguiente ejemplo establece la salida i1 en 12.3 mA:

ql_leer_cambiar_sal_i1(12.3)

El valor programado siempre puede revisarse en el modo Monitor.

Page 21: Guía de Programación para Visual Basic™ 6 · PDF fileQUADRALAB Guía de Programación en Visual Basic™ 6 Pag.2 Entorno de programación Visual Basic 6 DLL de control Puerto COM

QUADRALAB

Guía de Programación en Visual Basic™ 6 Pag.19

Public Function ql_cambiar_sal_dig(n As Byte, v As Byte) As Boolean

Estas función programa una de las 8 salidas digitales al valor especificado:

- Si v = 0, entonces la salida es desconectada (circuito abierto)

- Si v = 1, entonces la salida es conectada (circuito cerrado).

El parámetro n especifica la salida a programar, desde 1 a 8.

El siguiente ejemplo conecta la salida digital 3: ql_leer_cambiar_sal_dig(3,1)

El siguiente ejemplo desconecta la salida digital 7: ql_leer_cambiar_sal_dig(7,0)

El estado es inmediatamente mostrado en los LEDs verdes de las salidas digitales.

El valor programado siempre puede revisarse en el modo Monitor.

Page 22: Guía de Programación para Visual Basic™ 6 · PDF fileQUADRALAB Guía de Programación en Visual Basic™ 6 Pag.2 Entorno de programación Visual Basic 6 DLL de control Puerto COM

QUADRALAB

Guía de Programación en Visual Basic™ 6 Pag.20

Page 23: Guía de Programación para Visual Basic™ 6 · PDF fileQUADRALAB Guía de Programación en Visual Basic™ 6 Pag.2 Entorno de programación Visual Basic 6 DLL de control Puerto COM

QUADRALAB

Guía de Programación en Visual Basic™ 6 Pag.21

C. Funciones especiales.

Public Sub ql_set_burst(x as Boolean)

Nota Este comando y el modo burst tienen sentido cuando se quiere mejorar el rendimiento por puerto virtual

USB.

Este comando permite establecer de qué forma serán leídas las entradas y salidas del

módulo con las funciones correspondientes.

Si x=True, se activa el modo burst: todos los valores de entradas y salidas de QuadraLab

serán leídos desde el burst buffer en el PC, aumentando de esta forma el rendimiento del

modo USB. Ello implica que estos valores deben ser refrescados manualmente con

regularidad, usando el comando ql_leer_burst().

Si x=False, se desactiva el modo burst: todos los valores de entradas y salidas de

QuadraLab serán leídos usando peticiones de comunicación individuales. En este caso, el

tráfico sobre el puerto COM virtual USB puede atascar bastante la aplicación. Este es el

modo por defecto cuando se llama al DLL.

Como se ha dicho antes, si la aplicación VB está controlando al módulo vía puerto COM

RS232 real, el modo burst no aporta grandes beneficios respecto a la complejidad de su

uso.

Si bien no es recomendado, el modo puede cambiarse “sobre la marcha”, una vez que la

aplicación VB está corriendo.

Public Function ql_leer_burst() as Boolean

Nota Este comando y el modo burst tienen sentido cuando se quiere mejorar el rendimiento por puerto virtual

USB.

Esta función refresca o actualiza el burst buffer presente en el PC, con la información de

todas las entradas y salidas del módulo, de una sola vez. Corresponde a un “muestreo” de

estos valores y esto queda presente en memoria, para lectura instantánea de las funciones

correspondientes, sin cargar el tráfico USB con excesivas peticiones de lectura

individuales.

Page 24: Guía de Programación para Visual Basic™ 6 · PDF fileQUADRALAB Guía de Programación en Visual Basic™ 6 Pag.2 Entorno de programación Visual Basic 6 DLL de control Puerto COM

QUADRALAB

Guía de Programación en Visual Basic™ 6 Pag.22

Nota Para que las funciones de lectura utilicen esta facilidad, es necesario que el modo burst esté activo.

Debe tenerse la precaución de ejecutar esta función cada vez que se quiera leer un nuevo

grupo de valores de las entradas y salidas. De otro modo, estas funciones siempre

arrojarán el mismo valor “muestreado” anteriormente con ql_leer_burst().

La aparente complicación de este modo queda compensada por la notable mejora en

rendimiento en la comunicación USB.

Por ejemplo, es posible programar un timer en Visual Basic que ejecute esta función cada

1/50 de segundo. Ello implica que los estados de las entradas y salidas del módulo serán

actualizados en el PC cada 20 mS. Entre una actualización y la siguiente, todas las

funciones de lectura, como ql_leer_ent_v1 o ql_leer_ent_dig, leerán sus valores

desde el buffer del PC y con ello no saturarán el tráfico USB.

Public Function ql_leer_nombre() As String

Esta función retorna el nombre del equipo (12 caracteres) como un string.

El siguiente ejemplo muestra una caja de mensajes con el nombre del equipo:

m=msgbox(ql_leer_nombre)

Si la comunicación con el módulo se ha perdido o no se ha inicializado, el valor de retorno

es “” (string vacio).

Public Function ql_leer_OS() As String

Esta función retorna la Versión de Sistema instalada en el módulo como un string.

El siguiente ejemplo muestra una caja de mensajes con esta información

m=msgbox(“Version de Sistema:” + ql_leer_OS)

Page 25: Guía de Programación para Visual Basic™ 6 · PDF fileQUADRALAB Guía de Programación en Visual Basic™ 6 Pag.2 Entorno de programación Visual Basic 6 DLL de control Puerto COM

QUADRALAB

Guía de Programación en Visual Basic™ 6 Pag.23

Si la comunicación con el módulo se ha perdido o no se ha inicializado, el valor de retorno

es “” (string vacio).

Public Function ql_leer_modelo() As String

Esta función retorna el modelo del equipo como un string. En la presente versión de

hardware, todos los módulos corresponden al modelo “QuadraLab”.

Si la comunicación con el módulo se ha perdido o no se ha inicializado, el valor de retorno

es “” (string vacio).

Public Function ql_set_msg(x as Boolean)

Este comando determina si se mostrarán mensajes de error en pantalla (vía cajas de

mensaje) cuando éstos se produzcan en la operación del módulo.

Si x=True, los errores de comunicación serán mostrados en pantalla. Este es el modo por

defecto cuando se llama al DLL.

Si x=False, no se mostrarán mensajes de error de comunicación.

Independientemente de este ajuste, los valores de retorno de error (en la mayor parte de

los casos es -1) siempre funcionarán de la misma manera.

Page 26: Guía de Programación para Visual Basic™ 6 · PDF fileQUADRALAB Guía de Programación en Visual Basic™ 6 Pag.2 Entorno de programación Visual Basic 6 DLL de control Puerto COM

QUADRALAB

Guía de Programación en Visual Basic™ 6 Pag.24

Notas:

Innova Service Tecnologíaw w w . i s t e c . c l

QuadraLab es un producto desarrollado por ISTEC Innova Service Ltda.

Sta. Magdalena 75 of. 412, Providencia, Santiago Fono (02)-2444082

Microsoft™, Windows™ y Visual Basic™ son marcas registradas de Microsoft Corporation.