Está en la página 1de 53

Soluciones de comunicacin industrial para Windows

Manual del Driver XATOS


Atos PLC Driver for MPC-1600, MPC-2002 and MPC-4004

El driver XATOS permite crear poderosas aplicaciones de supervisin, control y comando de sus equipos.

El manejador de licencias le permite distribuir ilimitadamente sus aplicaciones a otras computadoras o clientes.

Las aplicaciones se arman con VB6 VisualStudio.NET utilizando componentes dll/.NET o bien OCX/ActiveX/COM.

Soporta todos los sistemas operativos Windows de 32 bits y de 64 bits, corriendo de manera nativa.

El driver XATOS forma parte de un conjunto de ms de 125 drivers para comunicacin serie y tcp/ip desarrollados por CPKSoft Ingeniera, empresa argentina con presencia y experiencia en el sector de comunicaciones industriales desde el ao 1990. Al igual que todos los dems drivers de CPKSoft Ingeniera, el driver XATOS se maneja a travs de un componente nativo para .NET llamado NetTalk o bien con un ActiveX/OCX OLE/COM llamado HMITalk. Ambos son totalmente abiertos y se distribuyen junto con cada driver. Estos
CPKSoft Ingeniera
Drivers para comunicacin industrial. www.cpksoft.com.ar www.facebook.com/ cpksoftingenieria cpksoftingenieria@ hotmail.com tel: 54-11-1545788354 1990-2012

Cuando Ud. adquiere una licencia de nuestro driver XATOS, recibe un nmero de licencia ilimitada y un utilitario manejador de licencias que le va a permitir crear licencias runtime para sublicenciar el driver a sus propios clientes, tantos como necesite y a cualquier nmero de computadoras de destino, dentro y fuera de su empresa. Las licencias ilimitadas no tienen ningn lmite en la cantidad de licencias runtime que se pueden crear a partir de ellas, ni en la cantidad de equipos con los que se podrn comunicar sus aplicaciones, ni en la cantidad de puntos o tags que podrn ser accedidos desde su driver, ni ninguna otra limitacin caracterstica de otros productos similares. Es un producto ideal tanto para integradores como para usuarios finales.

componentes multi-driver ofrecen una interfaz nica para manejar cualquier driver de manera idntica desde aplicaciones escritas con cualquiera de los lenguajes soportados por Microsoft Visual Studio.NET 2008/2010, como Visual Basic y Visual C# o bien desde Visual Basic 6.0 de 32 bits (VB6).

CPKS oft Ingeniera


Drivers para comunicacin industrial.

pg. 1/53

Soluciones de comunicacin industrial para Windows

Contenido
Instalacin del driver ................................................................................................................... 4 Prueba de funcionamiento del driver .......................................................................................... 6 Uso del componente NetTalk ...................................................................................................... 9
La interfaz de NetTalk ............................................................................................................................9 Crear una aplicacin ..............................................................................................................................9
Inicializaciones tpicas ...................................................................................................................................... 11

Manejo de la conexin .........................................................................................................................12


Conexin serie ................................................................................................................................................. 12 Conexin tcp/ip ................................................................................................................................................ 13 Cdigo de conexin tpico ................................................................................................................................ 13 Cierre de la conexin ....................................................................................................................................... 14

Manejo de lecturas ...............................................................................................................................14


Lecturas con espera ......................................................................................................................................... 15 Lecturas por eventos ........................................................................................................................................ 17

Manejo de escrituras ............................................................................................................................18 Interfaz COM del componente NetTalk ................................................................................................18 Gua rpida de propiedades, mtodos y eventos .................................................................................21
Propiedades ..................................................................................................................................................... 21 Mtodos ........................................................................................................................................................... 24 Eventos ............................................................................................................................................................ 27

Uso del componente HMITalk ................................................................................................... 28


La interfaz de HMITalk .........................................................................................................................28 Registro de HMITalk.............................................................................................................................28 Prueba de funcionamiento ...................................................................................................................31 Crear una aplicacin ............................................................................................................................32
Configuracin del puerto de comunicaciones ................................................................................................... 33

Manejo de lecturas ...............................................................................................................................34


Lecturas automticas por eventos .................................................................................................................... 35 Lecturas a demanda por eventos ..................................................................................................................... 37 Lecturas con espera ......................................................................................................................................... 37

Manejo de escrituras ............................................................................................................................38


CPKSoft Ingenier a
Drivers para comunicacin industrial. www.cpksoft.com.ar www.facebook.com/ cpksoftingenieria cpksoftingenieria@ hotmail.com tel: 54-11-1545788354 1990-2012 pg. 2/53

Gua rpida de propiedades, mtodos y eventos .................................................................................39


Propiedades ..................................................................................................................................................... 39 Mtodos ........................................................................................................................................................... 40 Eventos ............................................................................................................................................................ 41

Uso del componente LineChart ................................................................................................. 43


La interfaz de LineChart .......................................................................................................................43 Dibujar una pluma ................................................................................................................................43

Soluciones de comunicacin industrial para Windows

Manejo de la grilla de fondo .................................................................................................................45 Bandas de color ...................................................................................................................................46 Gua rpida de propiedades, mtodos y eventos .................................................................................47
Propiedades ..................................................................................................................................................... 47 Mtodos ........................................................................................................................................................... 47 Eventos ............................................................................................................................................................ 47

Distribucin de las aplicaciones ................................................................................................ 48


Archivos a ser distribuidos ...................................................................................................................48 Generacin de licencias runtime ..........................................................................................................49
Explicacin del proceso .................................................................................................................................... 49 Obtencin del nmero de licencia ilimitada ....................................................................................................... 49 Obtencin del PCId mediante el utilitario GetPCId.exe ..................................................................................... 50 Obtener PCId por cdigo desde la aplicacin ................................................................................................... 50 Creacin del archivo .lic ................................................................................................................................... 50

Especificaciones tcnicas del driver XATOS ............................................................................ 52


Informacin general..............................................................................................................................52 Listado de comandos ...........................................................................................................................52
PBYT Read a byte............................................................................................................................................ 52 PBLOCW Read a Memory Block (Words) ........................................................................................................ 52 PBLOCB Read a Memory Block (Bytes) ........................................................................................................... 52 VAR Write a variable (WORD) .......................................................................................................................... 52 BYT Write a byte .............................................................................................................................................. 53

Mensajes de error ................................................................................................................................53 Equipos soportados..............................................................................................................................53

CPKSoft Ingenier a
Drivers para comunicacin industrial. www.cpksoft.com.ar www.facebook.com/ cpksoftingenieria cpksoftingenieria@ hotmail.com tel: 54-11-1545788354 1990-2012 pg. 3/53

Soluciones de comunicacin industrial para Windows

Instalacin del driver


Los drivers de CPKSoft Ingeniera se distribuyen nicamente como archivos .zip o como archivos .rename-to-zip. Cuando se trate de archivos con extensin .rename-to-zip, stos debern ser previamente renombrados como .zip antes de ser abiertos. El proceso de instalacin de un driver consiste en copiar el contenido del archivo comprimido en una carpeta en el disco rgido y no requiere de la ejecucin de ningn programa. NetTalk.dll y todos los programas ejecutables que forman parte del entregable del driver requieren del FrameWork.Net 2.0 preinstalado en su mquina. Por su parte, los componentes ActiveX/OCX HMITalk y LineChart no requieren de ningn framework de .NET preinstalado para su uso. Los archivos ms importantes que se incluyen son: XATOS.*.tlk: es el archivo que contiene al driver propiamente dicho y es quien tiene la inteligencia para procesar los telegramas que se envan y reciben de los equipos de acuerdo al protocolo de comunicaciones que se debe manejar. Este archivo debe ser siempre distribuido con las aplicaciones. El archivo XATOS.32.tlk corresponde a la versin para plataformas de destino de 32 bits y el archivo XATOS.64.tlk corresponde a la versin para plataformas de destino de 64 bits. XATOS.Castellano.pdf: es el manual del driver en espaol. XATOS.English.pdf: es el manual del driver en ingls. DriverTest.exe: es un utilitario para ensayar los comandos del driver. Puede ser ejecutado tanto en 32 bits como en 64 bits indistintamente. NetTalk.dll: es el archivo del ensamblado que corresponde al componente NetTalk, quien acta como interfaz para manejar el driver XATOS.*.tlk desde aplicaciones .NET. Este archivo debe distribuido con las aplicaciones cuando ha sido utilizado en su construccin. Puede ser ejecutado tanto en 32 bits como en 64 bits indistintamente. Expone adems una interfaz tipo COM para poder ser utilizado desde entornos de desarrollo que lo soportan, como es el caso de VB6, PHP, etc. RegNetTalk.exe: utilitario para registrar NetTalk.dll en la GAC cuando se lo quiera utilizar como un objeto del tipo COM. Se ejecuta automticamente en modo administrador. HMITK32.ocx/HMITK64.ocx: son los archivos que corresponden al componente ActiveX HMITalk, quien acta como interfaz para manejar el driver XATOS.*.tlk desde aplicaciones VB6 o .NET, o cualquier otro entorno que soporte interfaz OLE/COM. Estos archivos deben ser distribuido con las aplicaciones cuando han sido utilizados en su construccin. La versin HMITK32.ocx se utiliza para aplicaciones con plataforma de destino de 32 bits y HMITK64.ocx se utiliza para aplicaciones con plataforma de destino de 64 bits. Si el entorno de desarrollo trabaja en 32 bits, ambas versiones se utilizan (HMITK32.ocx durante diseo y HMITK64.ocx en runtime), por lo que se recomienda que ambas versiones sean registradas en la mquina de trabajo. GRID32.ocx: archivo de la grilla de apoyo para las pginas de propiedades de HMITK32.ocx. Est disponible nicamente en 32 bits, aunque esto no representa un inconveniente para crear aplicaciones de 64 bits ya que slo se invoca en tiempo de diseo, mientras se est trabajando con las herramientas de desarrollo (VB6, VS 2008/2010 Express, etc.), quienes por lo general tambin trabajan nicamente en 32 bits. LCHART32.ocx/ LCHART64.ocx: son los archivos que corresponden al componente ActiveX LineChart, que se distribuye para brindar compatibilidad con aplicaciones que utilizan versiones anteriores del componente y se utiliza para colocar grficos de hasta cuatro plumas en los formularios de la aplicacin. AxInterop.HMITalkLib.dll / Interop.HMITalkLib.dll / AxInterop.LineChartLib.dll / Interop.LineChartLib.dll: son archivos requeridos por los objetos HMITalk y LineChart para su funcionamiento cuando se crean aplicaciones en .NET. No son necesarios si se utiliza VB6. Estos archivos se distribuyen con cada driver ya que son utilizados por el utilitario TestHMITalk durante su ejecucin. No obstante, se sugiere utilizar los que genera automticamente el compilador en la carpeta bin\Release de la aplicacin. Se debe tener en cuenta que cuando se compila para 32 bits, 64 bits o AnyCPU, estos archivos mantienen los mismos nombres pero sus contenidos son diferentes, por lo que se debe tener la precaucin de distribuir las versiones correctas segn la CPU de destino.
pg. 4/53

CPKSoft Ingenier a
Drivers para comunicacin industrial. www.cpksoft.com.ar www.facebook.com/ cpksoftingenieria cpksoftingenieria@ hotmail.com tel: 54-11-1545788354 1990-2012

Soluciones de comunicacin industrial para Windows

RegHMITalk.exe: utilitario para registrar HMITalk, Grid32 y LineChart. Se encarga de invocar al programa regsvr32.exe de Windows que corresponda a cada plataforma. Si la plataforma lo permite, registra ambas versiones (32 y 64 bits). Se ejecuta automticamente en modo administrador. Requiere Framework.NET 2.0 instalado para correr. Los objetos OCX pueden ser alternativamente registrados ejecutando manualmente el utilitario RegSvr32.exe de Windows en modo administrador desde una consola de comandos del sistema (DOS). TestHMITalk.exe: utilitario para probar si los objetos HMITalk y LineChart fueron correctamente registrados. Si se visualizan los controles en los formularios y se los ve funcionando correctamente, esto indica que el registro se realiz correctamente. GetPCId.exe (*): es un utilitario para obtener un nmero de identificacin o PCId de las mquinas cliente. Se puede distribuir a los clientes con el objeto de crear las licencias runtime a partir de los PCId recolectados. Puede ser ejecutado tanto en 32 bits como en 64 bits indistintamente. MakeLic.exe (*): es un utilitario para generar licencias runtime de clientes a partir del nmero de identificacin PCId de la mquina del cliente. Para habilitar su funcionalidad se requiere del ingreso del nmero de licencia ilimitada que se entrega con el driver adquirido. Se entrega slo al licenciatario y no debe ser distribuido. Puede ser ejecutado tanto en 32 bits como en 64 bits indistintamente.

(*) Estos archivos estn disponibles nicamente en las versiones licenciadas.

Adicionalmente tambin se incluyen estos drivers gratuitos con sus manuales: XMODEM: este driver permite comandar un modem serie o GPRS con secuencia de comandos Hayes AT para realizar un discado previo antes de pasar a comunicarse con el driver XATOS. Permite finalizar la llamada al terminar. XTEST: este driver permite probar un vnculo, enviando telegramas que espera recibir tal cual han sido transmitidos. El uso de este driver requiere puentear el extremo ms alejado del vnculo que se quiere probar. Los mensajes transmitidos son a su vez utilizados como respuesta y contienen valores aleatorios que pueden ser utilizados para animar la aplicacin.

CPKSoft Ingenier a
Drivers para comunicacin industrial. www.cpksoft.com.ar www.facebook.com/ cpksoftingenieria cpksoftingenieria@ hotmail.com tel: 54-11-1545788354 1990-2012 pg. 5/53

Soluciones de comunicacin industrial para Windows

Prueba de funcionamiento del driver


Para ensayar cualquiera de los drivers de CPKSoft Ingeniera se puede utilizar un mismo utilitario llamado DriverTest.exe que se distribuye en el archivo .zip de instalacin de cada driver. Esta herramienta de testeo permite validar el funcionamiento de todos los comandos ofrecidos por cada driver, as como ensayar diferentes tipos de conexin y seteos de comunicacin. No es necesario por lo tanto desarrollar aplicaciones cuando la nica finalidad es realizar pruebas de conectividad y viabilidad. La interfaz del programa DriverTest se muestra a continuacin (el /32 /64 luego del nmero de versin en el ttulo de la ventana del programa indica en qu modo se est ejecutando, si en 32 bits o en 64 bits):

El programa requiere de dos grupos de parmetros que deben ser definidos antes de probar un comando. En primer lugar estn los seteos que son propios de la conexin y que establecen en la pestaa Connection Settings, como se muestra a continuacin:

CPKSoft Ingeniera
Drivers para comunicacin industrial. www.cpksoft.com.ar www.facebook.com/ cpksoftingenieria cpksoftingenieria@ hotmail.com tel: 54-11-1545788354 1990-2012

Configuracin de una conexin ethernet Configuracin de una conexin serie

Estos parmetros deben estar en concordancia con la configuracin utilizada por el equipo con el cual se est intentando comunicar. Por ejemplo, en una conexin del tipo serial, la velocidad de comunicacin o baudrate que se establezca en el programa DriverTest deber ser la misma que est siendo utilizada por el equipo que se pretende acceder.

pg. 6/53

Soluciones de comunicacin industrial para Windows

El otro grupo de parmetros que se deben definir son los relacionados con el comando que se quiere probar y se establecen en la pestaa Command Settings. En primer lugar se debe definir cul va a ser el driver que se va a ensayar, seleccionndolo para ello de la lista de drivers disponibles. En esta lista se mostrarn todos aquellos drivers que estn presentes en la carpeta en la que reside el programa DriverTest.exe. Si el driver XATOS es el nico instalado en su computadora, ser el nico driver que le aparecer en el descolgable. A continuacin, se deben establecer los parmetros ActionType, NumPoints y DriverP0 a DriverP9, que constituyen la interfaz de configuracin comn a todos los drivers, y cuyos significados y rangos de valores permitidos se deben consultar para cada comando y driver en particular, en la ltima parte del manual de cada driver. Por ejemplo, al final de este manual se encuentran todos los comandos ofrecidos por el driver XATOS. A modo de ejemplo, tomaremos un driver que no necesariamente es el de este manual, pero que a los fines de esta explicacin es igualmente ilustrativo. Supongamos que se quisieran leer 16 registros analgicos (numricos) de un equipo con nmero de estacin 1 que hable el protocolo Modbus TCP, a partir de la direccin 0 de su mapa de memoria. Para realizar esta lectura ser necesario entonces utilizar el driver XMODBTCP que es quien sabe manejar el protocolo de comunicaciones Modbus TCP requerido. Si nos remitiramos a lo especificado en su manual, encontraramos que el comando que tendramos que ejecutar es el Read Holding Registers as Unsigned 16-bit Integers, ya que su descripcin concuerda con la tarea que deseamos realizar. A continuacin se muestra lo indicado en el manual del driver XMODBTCP para este comando, y cmo esa informacin se utiliza para configurar los parmetros del comando en DriverTest:

CPKSoft Ingeniera
Drivers para comunicacin industrial. www.cpksoft.com.ar www.facebook.com/ cpksoftingenieria cpksoftingenieria@ hotmail.com tel: 54-11-1545788354 1990-2012

Como se puede ver, para llevar a cabo la funcin de leer esos 16 registros y de acuerdo a lo que dice el manual del driver XMODBTCP para el comando Read Holding Registers, se debe configurar el parmetro ActionType como ReadNumericValues, el parmetro DriverP0 como 1 (ya que all se especifica el nmero de equipo a ser ledo), el parmetro DriverP1 como 3 y que es fijo para este comando, el parmetro DriverP2 como 0 (ya que all se indica la direccin de memoria del primer registro a ser ledo y que queremos que sea el 0), y finalmente NumPoints se configura 16 (ya que es la cantidad de registros deseados y est dentro de los lmites permitidos por este comando, que segn se indica es de 1 a 125). Respecto de los parmetros DriverP3 a DriverP9, se dejan en blanco ya que no son requeridos por este comando.
pg. 7/53

Soluciones de comunicacin industrial para Windows

Exactamente de igual manera se debe proceder para ensayar cualquier comando de cualquier driver. Es decir, se debe buscar la descripcin del comando a ser ensayado en su correspondiente manual, y luego de acuerdo a lo que all se explique configurar los parmetros del comando en el programa DriverTest. Una vez configurados los parmetros del comando, se debe presionar el botn Test para iniciar una lectura o escritura. En caso que se estn leyendo datos, stos se vern aparecer en la posicin que les corresponda en la tabla central. La posicin 0 corresponde al primer valor recibido y la posicin (NumPoints-1) corresponde al ltimo valor recibido. En el caso que se estn escribiendo valores, stos debern ser previamente ingresados manualmente en la columna Value de la planilla, antes de presionar el botn Test. La actividad del driver se puede seguir en el panel de la derecha, donde se registran todos los telegramas transmitidos y recibidos hacia y desde el equipo conectado. El objeto utilizado para construir ese panel no es otro que el mismo NetTalk, que es el que utilizar luego usted como usuario/integrador/desarrollador/programador para crear sus propias soluciones. DriverTest es entonces en realidad una aplicacin simple escrita en Visual C#.NET que utiliza NetTalk para manejar los drivers que se quieran probar. DriverTest puede ser colocado en modo de poleo automtico si se activa la casilla Poll. Si se activa la casilla Log, todos los telegramas Tx/Rx de la comunicacin se almacenan con timestamp en un archivo ASCII en el disco duro de la mquina, lo que es til para documentar fallas o para analizar la respuesta de los equipos. El programa tambin permite guardar un juego de parmetros de configuracin en un archivo .xml para poder ser nuevamente levantado en otro momento y continuar con los ensayos de un comando o utilizarlo como base para un ensayar otro comando bajo condiciones similares. DriverTest abre y cierra la conexin cada vez que se utiliza el botn Test. Si se deja la opcin Poll activada, la conexin se abre con la primera comunicacin y se cierra cuando se detiene el poleo al desactivar la casilla. Los telegramas que se muestran en el panel de comunicaciones se ven completos slo en el caso de los drivers correctamente licenciados o en el caso de los gratuitos. En los casos de drivers que requieren de licencia pero sta no se encuentra o no es vlida (como puede ser en el caso de una versin de evaluacin del driver), los telegramas se mostrarn slo parcialmente, con signos de interrogacin (?) sobre algunos de sus bytes.

CPKSoft Ingeniera
Drivers para comunicacin industrial. www.cpksoft.com.ar www.facebook.com/ cpksoftingenieria cpksoftingenieria@ hotmail.com tel: 54-11-1545788354 1990-2012

pg. 8/53

Soluciones de comunicacin industrial para Windows

Uso del componente NetTalk


La interfaz de NetTalk
El componente NetTalk.dll es un control nativo para .NET cuya finalidad es manejar los drivers de comunicacin de CPKSoft Ingeniera desde aplicaciones escritas en .NET. NetTalk permite desarrollar aplicaciones que utilicen FrameWork.NET 2.0 en adelante. Cada instancia de NetTalk posee su propia interfaz grfica que se puede colocar en tiempo de diseo en los formularios (WinForm) de las aplicaciones creadas con VisualStudio.NET. Las instancias de NetTalk se pueden tambin crear dinmicamente de manera oculta agregando una referencia a la librera o ensamblado en la aplicacin y creando dichas instancias en tiempo de ejecucin. NetTalk ofrece una amplia lista de propiedades, mtodos y eventos para establecer todos los aspectos funcionales necesarios para un manejo completo de la apariencia del objeto y de los drivers de comunicacin. NetTalk ofrece una interfaz que permite visualizar en tiempo real todas las comunicaciones que tienen lugar a travs de la conexin que est activa. Cada telegrama tiene una marca de tiempo o timestamp asociada, con resolucin al milisegundo. Los telegramas enviados hacia los equipos estn precedidos por la leyenda TX. Los telegramas recibidos desde los equipos estn precedidos por la leyenda RX. El formato por defecto para visualizar los telegramas es el hexadecimal, donde cada byte transmitido o recibido se muestra como un valor entre 00 y FF. Este formato se puede modificar con la propiedad PanelMode a ASCII o a Decimal. Varias propiedades y mtodos alteran la apariencia del objeto, como la propiedad PanelLines que establece cuntas lneas de historia de comunicacin almacena la ventana. Ms adelante en este manual se da la lista completa de propiedades, mtodos y eventos.
CPKSoft Ingeniera
Drivers para comunicacin industrial. www.cpksoft.com.ar www.facebook.com/ cpksoftingenieria cpksoftingenieria@ hotmail.com tel: 54-11-1545788354 1990-2012 pg. 9/53

Crear una aplicacin


Las aplicaciones .NET se pueden escribir en varios lenguajes .NET, siendo los ms comunes Visual Basic y C#. Para mostrar cmo crear una aplicacin utilizaremos Microsoft Visual C# 2010 Express, que es una herramienta totalmente gratuita y se puede descargar desde la pgina de Microsoft. Visual Basic y C# son lenguajes de aspecto bastante similar entre s y todo lo explicado para los ejemplos de este manual que estn escritos en C#, puede ser fcilmente trasladado a Visual Basic si prefiere trabajar con ese lenguaje. Para crear una aplicacin, el primer paso es ir a la opcin de men Archivo+Nuevo proyecto y all seleccionar Aplicacin de Windows Forms, como muestra la imagen:

Soluciones de comunicacin industrial para Windows

Una vez establecido el nombre de la aplicacin aceptamos, tras lo cual aparecer un formulario vaco. En el caso de nuestro ejemplo, hemos llamado al proyecto PruebaNetTalk:

Para poder agregar el objeto NetTalk, debemos antes agregarlo al cuadro de herramientas de Visual Studio. Para ello deberemos posicionarnos sobre el Cuadro de herramientas y sobre Controles comunes presionamos botn derecho del mouse y aparecer un men descolgable. All seleccionamos la opcin Elegir elementos y nos aparecer una ventana con un botn Examinar que nos permitir buscar el archivo NetTalk.dll en nuestro disco rgido:

CPKSoft Ingeniera
Drivers para comunicacin industrial. www.cpksoft.com.ar www.facebook.com/ cpksoftingenieria cpksoftingenieria@ hotmail.com tel: 54-11-1545788354 1990-2012 pg. 10/53

Soluciones de comunicacin industrial para Windows

Una vez localizado el archivo le damos aceptar y nos aparecer el componente en el cuadro de herramientas, listo para ser arrastrado a nuestro formulario.

En la imagen se aprecia el objeto NetTalk ya colocado en el formulario, junto con algunos botones adicionales que podran formar parte de una aplicacin real de prueba.

A continuacin se explican las acciones ms comunes del objeto NetTalk, como es el caso de su inicializacin, la apertura de una conexin y el disparo de lecturas y escrituras.

Inicializaciones tpicas
Es comn dejar ya definidos algunos seteos iniciales del componente NetTalk al arrancar la aplicacin o al cargar el formulario contenedor del objeto. Estas son algunas propiedades que definen comportamientos generales del objeto NetTalk y que es comn establecer en el evento de carga del formulario, aunque tambin se pueden dejar establecidas en tiempo de diseo:
CPKSoft Ingeniera
Drivers para comunicacin industrial. www.cpksoft.com.ar www.facebook.com/ cpksoftingenieria cpksoftingenieria@ hotmail.com tel: 54-11-1545788354 1990-2012 pg. 11/53

this.netTalk1.Text this.netTalk1.Language (Castellano/English) this.netTalk1.PanelMode (Hexadecimal/Decimal/ASCII)

Por ejemplo, este cdigo establece valores tpicos para estas propiedades:

public Form1() { InitializeComponent(); this.netTalk1.Text = " ane!a"or "e comunicaciones"; this.netTalk1.#an$ua$e = %etTalk.#an$ua$es.Castellano; this.netTalk1.&anel o"e = %etTalk.&anel o"es.'exa"ecimal; (

Soluciones de comunicacin industrial para Windows

Otras propiedades menos usadas pero que tambin suelen manejar desde el arranque son: this.netTalk1.OnErrorReconnect this.netTalk1.PanelLines this.netTalk1.PanelFont this.netTalk1.SilentMode this.netTalk1.MinimizeDoEventsCalls this.netTalk1.FreezeWhenDoubleClick this.netTalk1.EnableShowHidePanelButton this.netTalk1.EnableAbortCommunicationButton = false; this.netTalk1.EnableCloseConnectionButton = false; this.netTalk1.EnableReconnectButton

Puede encontrar ms adelante al significado de cada propiedad una en la seccin sobre Propiedades.

Manejo de la conexin
Antes de poder utilizar un driver para comunicarse con cualquier equipo, es necesario abrir una conexin, ya sea sta del tipo serial o del tipo tcp/ip (ethernet), lo que depender del canal a travs del cual se va a comunicar. Esta accin, como la mayora de las acciones que se pueden realizar con el objeto, se debe implementar mediante la escritura de cdigo. La conexin necesita abrirse una nica vez y mientras la misma permanezca abierta, se puede realizar cualquier nmero de llamadas de lectura o escritura al objeto, incluso cambiando de driver entre llamada y llamada. Los parmetros con los que se abri la conexin permanecern constantes hasta que sta se cierre y eventualmente se vuelva a abrir con otros parmetros. Si se desea dejar libre el recurso utilizado por la conexin (por ejemplo liberar un determinado puerto serial para poder utilizarlo desde otros programas) entre llamadas sucesivas de lectura o escritura, se puede abrir y cerrar la misma cada vez que se realice una comunicacin, aunque esto agregar un tiempo extra a cada operacin de lectura o escritura. Tambin la conexin se puede cerrar y volver a abrir si se desea cambiar alguno de sus parmetros entre una llamada y otra (por ejemplo, si se quiere cambiar la velocidad de una comunicacin serial).

Conexin serie
Para abrir una conexin serie se utiliza el mtodo Connect, pasndole los siguientes parmetros relacionados con el puerto serial:
PortName: Nombre del puerto serie (COM1, COM2, etc.). BaudRate: Velocidad de comunicacin o baudiaje (4800, 9600, 19200, etc.). Parity: Paridad (None para ninguna, Even para par, Odd para impar). DataBits: Bits de datos (7 u 8). StopBits: Bits de stop (1, 1.5 o 2). Timeout(*): Tiempo mximo de espera de respuesta (en milisegundos, tpico 2000). T1Delay: Tiempo desde encendido de RTS hasta inicio de transmisin (en milisegundos). T2Delay: Tiempo desde fin de transmisin hasta apagado de RTS (en milisegundos). T3Delay: Tiempo de silencio forzado desde fin de recepcin (en milisegundos). RtsEnable: Indicador de si se debe activar RTS durante la comunicacin (**). DtrEnable: Indicador de si se debe activar DTR durante la comunicacin.

CPKSoft Ingenier a
Drivers para comunicacin industrial. www.cpksoft.com.ar www.facebook.com/ cpksoftingenieria cpksoftingenieria@ hotmail.com tel: 54-11-1545788354 1990-2012

(*) Se debe tener la precaucin de establecer un Timeout lo suficientemente grande como para darle al equipo contactado tiempo a preparar y despachar su respuesta. Caso contrario, el driver puede arrojar errores de timeout (sin respuesta/no answer) cuando un equipo responde el pedido correctamente, pero fuera de ese tiempo. (**) Se recomienda dejar el RTS activado siempre que se utilice un conversor de RS-232 a RS-422/485. La declaracin formal del mtodo es la siguiente:
pg. 12/53

Soluciones de comunicacin industrial para Windows

)oolean Connect( *trin$ &ort%ame+ Int,- )au".ate+ &arit/ &arit/+ Int,- 0ata)its+ *top)its *top)its+ Int,- Time1ut+ Int,- T10ela/+ Int,- T-0ela/+ Int,- T,0ela/+ )oolean .ts2nable+ )oolean 0tr2nable)
En el cdigo siguiente se muestra un ejemplo de llamado a esta funcin: this.netTalk1.Connect("C1 -"+ 3455+ */stem.I1.&orts.&arit/.%one+ 6+ */stem.I1.&orts.*top)its.1ne+ -555+ 5+ 5+ 5+ true+ 7alse); Esta llamada abre una conexin serial a travs del puerto serie COM2, a 9600 baudios, sin paridad, con 8 bits de datos y 1 bit de stop, con 2000 milisegundos de timeout de espera, sin definir tiempos de espera de RTS ni tiempo de silencio, activando RTS y sin activar DTR.

Conexin tcp/ip
Para abrir una conexin tcp/ip o ethernet, se utiliza una sobrecarga del mismo mtodo Connect, pero esta vez pasndole parmetros relacionados con la conexin IP:
Address: Direccin IP de destino PortNum: Puerto IP de destino Protocol: Protocolo IP a utilizar (TCP, UDP) Timeout(*): Tiempo mximo de espera de respuesta (en milisegundos, tpico 2000). T3Delay: Tiempo de silencio forzado desde fin de recepcin (en milisegundos).

(*) Para este parmetro son vlidas las mismas consideraciones que para el caso de una conexin serial. La declaracin formal del mtodo es la siguiente (sobrecarga del caso serial):

)oolean Connect( *trin$ 8""ress+ Int,- &ort%um+ TcpIp&rotocolT/pe &rotocol+ Int,- Time1ut+ Int,- T,0ela/)
En el cdigo siguiente se muestra un ejemplo de llamado a esta funcin: this.netTalk1.Connect("39.19:.-51.93"+ 6515+ %etTalk.TcpIp&rotocolT/pe.Tcp+ -555+ 5);
CPKSoft Ingenier a
Drivers para comunicacin industrial. www.cpksoft.com.ar www.facebook.com/ cpksoftingenieria cpksoftingenieria@ hotmail.com tel: 54-11-1545788354 1990-2012 pg. 13/53

Esta llamada abre una conexin tcp/ip mediante un socket IP al puerto 8010 de la direccin IP 95.154.201.59, utilizando protocolo TCP, con 2000 milisegundos de timeout de espera y sin tiempo de silencio al final.

Cdigo de conexin tpico


Un cdigo tpico para abrir una conexin desde un botn es el siguiente: pri;ate ;oi" btn8brirConexion<Click(ob!ect sen"er+ 2;ent8r$s e) { i7 (=this.netTalk1.IsConnecte")

Soluciones de comunicacin industrial para Windows

{ i7 (=this.netTalk1.Connect("1->.5.5.1"+ 95-+ %etTalk.TcpIp&rotocolT/pe.Tcp+ -555+ 5)) { essa$e)ox.*ho?("2rror al abrir conexi@nA " B this.netTalk1.*tatus); ( ( else essa$e)ox.*ho?("Ca ha/ una conexi@n abierta."); ( En este cdigo se agrega un chequeo previo de conexin ya abierta antes de intentar abrirla, consultando para ello la propiedad IsConnected antes de llamar al mtodo Connect (el smbolo ! utilizado en el if funciona igual que la palabra Not de Visual Basic). Si la conexin ya se encontraba abierta, se muestra un mensaje de aviso y el cdigo no hace mas nada. Si no haba ninguna conexin abierta, se llama al mtodo Connect, quien devuelve true si la conexin se pudo abrir OK y false si hubo algn error. En caso de error, se muestran los detalles del mismo mediante la propiedad Status.

Cierre de la conexin
No es necesario cerrar una conexin luego de cada comunicacin, en la medida que dicha conexin siga siendo vlida para el prximo equipo a ser comunicado. Por ejemplo, si se va a seguir interrogando un mismo equipo o bien si se va a interrogar otro equipo pero que comparte el mismo puerto serial que el anterior, entonces se puede seguir utilizando la misma conexin ya abierta. Si ese va a comunicar con otro equipo que tiene un puerto serial o una direccin tcp/ip diferente, entonces ser necesario cerrar la conexin anterior y reabrirla con los nuevos parmetros necesarios. La forma de cerrar la conexin es mediante una llamada al mtodo Disconnect, como se muestra en el ejemplo: pri;ate ;oi" btnCerrarConexion<Click(ob!ect sen"er+ 2;ent8r$s e) { i7 (this.netTalk1.IsConnecte") { i7 (=this.netTalk1.0isconnect() { essa$e)ox.*ho?("2rror al cerrar conexi@nA " B this.netTalk1.*tatus); ( ( else essa$e)ox.*ho?("%o ha/ una conexi@n abierta."); (

Manejo de lecturas
Una vez abierta una conexin, sta se utilizar para canalizar todas las lecturas que se realicen de ah en ms, hasta que se la cierre. Las lecturas se realizan mediante llamados a los mtodos ReadNumericValues y ReadBooleanValues (segn se trate de valores analgicos o discretos), en los que se le pasa al NetTalk el nombre del driver y los parmetros relativos al comando especfico que se quiere ejecutar. Estos parmetros son la cantidad de puntos o valores a ser ledos, los parmetros DriverP0 a DriverP9 propios del comando y un flag que indica si la llamada al mtodo debe esperar o no a terminar la comunicacin con el equipo antes de devolver el control a la aplicacin. El comando ReadNumericValues se utiliza cuando los valores que se espera recibir desde el equipo son del tipo numrico o analgico, es decir, valores del tipo 0, 1, 2, 3, etc., o bien valores en punto flotante, tanto positivos como negativos. Se utiliza tpicamente para consultar valores de registros enteros, timers, contadores, entradas analgicas, valores en punto flotante (como puede ser el caso de mediciones elctricas), etc.

CPKSoft Ingenier a
Drivers para comunicacin industrial. www.cpksoft.com.ar www.facebook.com/ cpksoftingenieria cpksoftingenieria@ hotmail.com tel: 54-11-1545788354 1990-2012

pg. 14/53

Soluciones de comunicacin industrial para Windows

El comando ReadBooleanValues se utiliza cuando los valores que se espera recibir desde el equipo son del tipo bit o booleano, es decir, estados ON/OFF, 0/1, etc., que son tpicos cuando se leen entradas digitales, estados de bobinas, etc. Las declaraciones formales de estos mtodos son iguales:

public )oolean .ea"%umericDaluesE.ea")ooleanDalues( *trin$ 0ri;er%ame+ Int,- %um&oints+ *trin$ &5+ *trin$ &1+ *trin$ &-+ *trin$ &,+ *trin$ &:+ *trin$ &9+ *trin$ &4+ *trin$ &>+ *trin$ &6+ *trin$ &3+ bool Fait)
El parmetro DriverName indica el nombre del driver que el mtodo debe utilizar para realizar la comunicacin. Para el driver al que se refiere este manual, el nombre que se utilice en este parmetro puede ser directamente el texto XATOS, en cuyo caso NetTalk buscar por defecto el archivo XATOS.xx.tlk en la carpeta en la que est alojado el ensamblado NetTalk.dll, donde xx ser el modo de ejecucin (32 bits o 64 bits) de la aplicacin en ese momento. Se puede tambin agregar el camino completo al archivo .tlk del driver a ser utilizado, como por ejemplo c:\MiAplicacin\Drivers\XATOS.32.tlk (si la plataforma de destino va a ser de 32 bits), c:\MiAplicacin\Drivers\XATOS.64.tlk (si la plataforma de destino va a ser de 64 bits) o tambin c:\MiAplicacin\Drivers\XATOS. En este ltimo caso, cuando se indica el nombre del driver sin su extensin, NetTalk lo completa automticamente con la extensin correcta. El parmetro NumPoints indica la cantidad de puntos o valores que se desea leer y siempre debe estar dentro de los lmites admitidos por el comando especfico que se vaya a ejecutar. Los parmetros P0 a P9 suministran al driver toda la informacin requerida por el comando que se debe ejecutar. Esa informacin se obtiene de la ltima parte del manual de cada driver, como ya se adelant en la seccin dedicada al programa DriverTest. El parmetro Wait define si la lectura se realizar con bloqueo o sin bloqueo de la ejecucin del cdigo. Estos dos tipos de lectura se explican en detalle ms adelante. Tanto en el caso de entradas numricas como booleanas, una vez realizada la comunicacin los valores recibidos quedan disponibles para la aplicacin a travs del mtodo PointValue(PointIndex), donde PointIndex es el subndice del valor obtenido. Este subndice toma el valor 0 para el primer valor y (NumPoints-1) para el ltimo valor ledo, donde NumPoints es la cantidad de puntos o valores que se le solicitaron al comando del driver. Ambos mtodos devuelven un valor del tipo booleano que es true cuando la llamada al mtodo fue exitosa y es false cuando hubo algn error. Como se ver ms adelante, las situaciones en las que estos mtodos devuelven true o false dependen en realidad de si hay o no hay bloqueo en la ejecucin.

CPKSoft Ingenier a
Drivers para comunicacin industrial. www.cpksoft.com.ar www.facebook.com/ cpksoftingenieria cpksoftingenieria@ hotmail.com tel: 54-11-1545788354 1990-2012

Lecturas con espera


Cuando el parmetro Wait se establece a true las lecturas se realizan con espera o bloqueo de ejecucin, tambin llamadas lecturas sincrnicas, lo que significa que al llamar a cualquiera de los mtodos ReadNumericValues o ReadBooleanValues, la ejecucin del cdigo se detendr a la espera de que se termine toda la comunicacin necesaria con el equipo. La tarea que resultar bloqueada es aquella desde la que se invoc al mtodo de lectura. La aplicacin puede mientras tanto mantener otras tareas en ejecucin sin problemas.
pg. 15/53

Soluciones de comunicacin industrial para Windows

Al ejecutarse el mtodo de lectura, se inicia un intercambio de telegramas entre el driver y el equipo. Mientras la ejecucin del cdigo permanece detenida, el flujo de esta comunicacin es manejado en background por el propio objeto NetTalk, quien va realizando internamente llamadas al driver pidindole que ste enve telegramas hacia el equipo o que analice los telegramas recibidos desde el equipo, hasta que se haya cumplido con todas las transacciones requeridas por el comando solicitado o bien se haya producido un error de timeout. Este tipo de lectura con bloqueo permite escribir cdigo del tipo lineal o sincrnico, es decir, que se vaya ejecutando lnea por lnea siguiendo una secuencia clara y predecible. En ciertas aplicaciones, donde las lecturas de los equipos se deben ir haciendo de manera controlada, sincronizada, segn una cierta secuencia o segn una cierta dependencia de tipo cascada, lecturas a demanda, etc., este modo de lectura es el ms indicado. En las lecturas con bloqueo, los mtodos ReadNumericValues y ReadBooleanValues devuelven true cuando ejecutaron correctamente la lectura solicitada y por lo tanto, cuando los valores ledos ya se encuentran a disposicin de la aplicacin para ser levantados a travs del mtodo PointValue(). Cuando haya incongruencias o valores invlidos en los parmetros utilizados durante las llamadas a los mtodos, o bien cuando se hayan producido errores de comunicacin de algn tipo (error de timeout porque el equipo no respondi a tiempo, conexin sin abrir, conexin cada, etc.), los mtodos devolvern false y el detalle del error estar disponible en la propiedad Status del componente NetTalk. En este caso, se debern ignorar los valores que devuelva el mtodo PointValue(). Al final del manual se da una lista de los mensajes de error posibles durante una comunicacin cuando se utiliza el driver XATOS. El tiempo que permanecer la ejecucin detenida mientras dure la llamada al mtodo depender del tiempo que tome la ejecucin del comando del driver en ser completada. Puede variar desde algunas centsimas de segundo hasta varios segundos o incluso minutos, segn por ejemplo se est pidiendo un simple registro por tcp/ip o bien se estn descargando todos los eventos almacenados en la memoria de un equipo por un puerto serial. En cualquier caso, si se produjera una falla en la comunicacin y el equipo nunca respondiera o habindolo hecho, dejara de responder, el bloqueo terminar automticamente pasado el tiempo especificado en el parmetro Timeout de la conexin. Un ejemplo de una lectura con bloqueo desde un botn es la siguiente:

pri;ate ;oi" btn#eerCon)loGueo<Click(ob!ect sen"er+ 2;ent8r$s e) { i7 (this.netTalk1..ea"%umericDalues("H 10)TC&"+ 14+ "1"+ ","+ "5"+ ""+ ""+ ""+ ""+ ""+ ""+ ""+ true)) { essa$e)ox.*ho?("Dalor "el re$istro 5A " B this.netTalk1.&ointDalue(5).To*trin$()); ( else essa$e)ox.*ho?("2rror le/en"o re$istroA " B this.netTalk1.*tatus); (
En este ejemplo se utiliza el driver XMODBTCP para preguntar a un equipo que habla Modbus TCP y con nmero de estacin 1 por el estado de 16 registros enteros a partir de la direccin 0 de su mapa de memoria. Es el mismo caso que ya se utiliz como ejemplo cuando se explic el utilitario DriverTest al principio del manual, con la diferencia que los mismos datos que antes se cargaban en la pestaa de Command Settings ahora aqu se le pasan como argumento en la llamada al mtodo ReadNumericValues. La ejecucin con bloqueo queda clara en este ejemplo donde el mtodo ReadNumericValues se utiliza en una sentencia if y donde inmediatamente terminada la ejecucin del mtodo, se puede mostrar con tranquilidad el valor de los registros recibidos. Slo se est mostrando un mensaje con el valor del primer registro recibido, utilizando para ello la llamada al mtodo PointValue pasndole el parmetro 0. Se observa tambin que, ante un error (en la parte else del if), la rutina muestra un mensaje con la propiedad Status para describir el error que se produjo.

CPKSoft Ingenier a
Drivers para comunicacin industrial. www.cpksoft.com.ar www.facebook.com/ cpksoftingenieria cpksoftingenieria@ hotmail.com tel: 54-11-1545788354 1990-2012

pg. 16/53

Soluciones de comunicacin industrial para Windows

Lecturas por eventos


Cuando el parmetro Wait se establece a false, las lecturas se realizan sin esperar a que la comunicacin con el equipo se termine de realizar y por lo tanto el mtodo invocado devuelve el control a la aplicacin de forma inmediata y el cdigo nunca se bloquea. Se conocen tambin como lecturas asincrnicas y la caracterstica es que no hay bloqueo en la ejecucin mientras se espera que lleguen los datos de respuesta. La finalidad del mtodo en este caso es la de encolar el pedido en el objeto NetTalk, quien se har cargo internamente de procesar toda la comunicacin, avisando luego cuando la sta haya terminado mediante el disparo del evento Finished. La ejecucin en este caso no es del tipo lineal sino que el cdigo se ejecuta de manera asincrnica o por eventos, sin un hilo de ejecucin totalmente predecible. El tipo de lectura sin bloqueo puede ser apropiado cuando se va a tener un poleo o barrido permanente y no se desea que la aplicacin se frene en cada lectura, dando la sensacin de que la aplicacin responde de a ratos a las rdenes del usuario. No obstante, un cdigo donde se hagan lecturas con bloqueo pero desde una tarea corriendo en background, tambin puede servir perfectamente para realizar un barrido contnuo de equipos sin afectar la respuesta de la aplicacin. En las lecturas sin bloqueo, los mtodos ReadNumericValues y ReadBooleanValues devuelven true cuando encolaron correctamente la lectura solicitada, lo que no quiere decir que la comunicacin ya se haya realizado y que los datos ledos ya estn disponibles para ser accedidos a travs del mtodo PointValue(). Cuando ReadNumericValues y ReadBooleanValues devuelven false, estn indicando un error al encolarse el pedido, cuya razn debe consultarse en la propiedad Status. Para poder levantar con seguridad los datos ledos, habr que esperar a que el mtodo Finished se haya disparado y verificar que el argumento finishedok haya sido true. Si el argumento recibido fuera false, quiere decir que se produjo algn tipo de error durante la lectura y por lo tanto habr que ignorar los datos devueltos por el mtodo PointValue y consultar la propiedad Status para averiguar el detalle del error. A continuacin se muestra la misma lectura de 16 registros del ejemplo utilizado para el caso con bloqueo, adaptado a un caso sin bloqueo:

pri;ate ;oi" btn#eer*in)loGueo<Click(ob!ect sen"er+ 2;ent8r$s e) { i7 (=this.netTalk1..ea"%umericDalues("H 10)TC&"+ 14+ "1"+ ","+ "5"+ ""+ ""+ ""+ ""+ ""+ ""+ ""+ 7alse)) { essa$e)ox.*ho?("2rror encolan"o pe"i"oA " B this.netTalk1.*tatus); ( ( pri;ate ;oi" netTalk1<Finishe"(ob!ect sen"er+ bool 7inishe"ok) { i7 (7inishe"ok) { essa$e)ox.*ho?("Dalor "el re$istroA " B this.netTalk1.&ointDalue(5).To*trin$()); ( else essa$e)ox.*ho?("2rror le/en"o re$istroA " B this.netTalk1.*tatus); (
Aqu se ve como la llamada al mtodo ReadNumericValues simplemente devuelve el control a la aplicacin sin realizar ninguna otra accin, salvo la de mostrar un mensaje con la propiedad Status en caso que no se haya podido encolar correctamente el pedido. La accin de mostrar el valor recibido queda ahora delegada al evento Finished, quien se disparar una vez haya finalizado la comunicacin, ya sea que sta lo haya hecho de manera exitosa o que haya habido un error durante la misma. Mientras no se dispare el evento Finished, la tarea que llam al mtodo ReadNumericValues quedar libre de ejecutar otras lneas de cdigo o de atender otros eventos que se disparen en la aplicacin.
pg. 17/53

CPKSoft Ingenier a
Drivers para comunicacin industrial. www.cpksoft.com.ar www.facebook.com/ cpksoftingenieria cpksoftingenieria@ hotmail.com tel: 54-11-1545788354 1990-2012

Soluciones de comunicacin industrial para Windows

El ejemplo tambin muestra como al dispararse el evento Finished, se chequea el argumento finishedok para determinar si se puede mostrar el primer valor recibido o bien si se debe mostrar un mensaje de comunicacin fallida.

Manejo de escrituras
El manejo de escrituras con NetTalk es muy similar al manejo de las lecturas. En este caso tambin existen las escrituras con y sin bloqueo y ambos tipos se manejan de manera idntica a todo lo explicado anteriormente para las lecturas. Los mtodos que se utilizan en este caso son WriteNumericValues y WriteBooleanValues, dependiendo del tipo de dato a ser enviados al equipo. La nica diferencia entre lecturas y escrituras, es que en el caso de escrituras, los valores a ser enviados se deben cargar mediante el mtodo PointValue previamente a la llamada al mtodo de escritura que se utilice. Sintetizando esta diferencia: Lecturas: SE LLAMA AL METODO DE LECTURA -> SE LEEN LOS POINTVALUE() Escrituras: SE ESCRIBEN LOS POINTVALUE() -> SE LLAMA AL METODO DE ESCRITURA

El siguiente ejemplo muestra cmo utilizar el driver XMODBTCP para escribir un valor 100 en un nico registro en la direccin 0 de un equipo que habla Modbus TCP y con nmero de estacin 1:

pri;ate ;oi" btn2scritura<Click(ob!ect sen"er+ 2;ent8r$s e) { this.netTalk1.&ointDalue(5+ 155); i7 (this.netTalk1.Frite%umericDalues("H 10)TC&"+ 1+ "1"+ "4"+ "5"+ ""+ ""+ ""+ ""+ ""+ ""+ ""+ true)) { essa$e)ox.*ho?(".e$istro escrito 1I"); ( else essa$e)ox.*ho?("2rror escribien"o re$istroA " B this.netTalk1.*tatus); (
En este caso se utiliza una escritura con bloqueo y se puede ver cmo se carga previamente el valor 100 en el PointIndex 0 utilizando el mtodo PointValue. Tras la escritura, se muestra un mensaje indicando que la misma se realiz correctamente, o bien con error. Es relativamente sencillo adaptar este ejemplo a un caso de escritura sin bloqueo como el que ya fue explicado para las lecturas sin bloqueo. Las explicaciones dadas hasta aqu son genricas y aplicables a cualquier driver y hemos utilizado al driver Modbus TCP como base en todos los ejemplos por ser uno de los ms populares en la industria. Para el caso en que se utilice cualquier otro driver que no sea el Modbus TCP, deben seguirse los mismos lineamientos ya explicados en este manual. La nica diferencia que va a existir en la implementacin de comandos de otros drivers es que la configuracin de los parmetros NumPoints y DriverP0 a DriverP9 debern respetar los rangos y valores que se expliquen para cada comando en el manual del driver que se utilice.

Interfaz COM del componente NetTalk


CPKSoft Ingenier a
Drivers para comunicacin industrial. www.cpksoft.com.ar www.facebook.com/ cpksoftingenieria cpksoftingenieria@ hotmail.com tel: 54-11-1545788354 1990-2012 pg. 18/53

NetTalk posee una interfaz de tipo COM que puede ser expuesta para plataformas de desarrollo que soporten esta tecnologa, como es el caso de Visual Basic 6.0. En este caso, es necesario registrar previamente el ensamblado mediante el utilitario RegNetTalk.exe que se provee en el ,zip de instalacin:

Soluciones de comunicacin industrial para Windows

Tambin se puede registrar el objeto utilizando la herramienta de registro de ensamblados RegAsm.exe que est presente en Windows. El utilitario se puede encontrar en esta carpeta:
C:\Windows\Microsoft.NET\Framework\v2.0.50727

Para sistemas de 64 bits, se utiliza el que est en esta carpeta:


C:\Windows\Microsoft.NET\Framework64\v2.0.50727

La lnea de comando, que se debe ejecutar desde una consola de comandos del sistema disparada en modo administrador, es la siguiente:
Regasm.exe nettalk.dll

El siguiente cdigo muestra cmo crear dinmicamente un objeto NetTalk en un formulario de VB6:
Private Sub Command1_Click() Set nt = Controls.Add("NetTalk.NetTalk", "nt", Me) nt.Left = 100 nt.Width = Me.Width - 400 nt.Top = 100 nt.Height = Me.Height - 700 nt.Visible = True nt.object.Language = NetTalk.Languages_Castellano End Sub

En la siguiente imagen se muestra una imagen del formulario de VB6 con el objeto NetTalk creado en runtime:

CPKSoft Ingeniera
Drivers para comunicacin industrial. www.cpksoft.com.ar www.facebook.com/ cpksoftingenieria cpksoftingenieria@ hotmail.com tel: 54-11-1545788354 1990-2012 pg. 19/53

Soluciones de comunicacin industrial para Windows

Este otro cdigo crea un objeto NetTalk y llama al mtodo que devuelve la descripcin de un driver:
Private Sub Command2_Click() Dim obj As Object Set obj = CreateObject("NetTalk.NetTalk") MsgBox obj.GetDriverDescription("XMODBUSB") End Sub

Al ejecutarlo, produce la siguiente salida:

Este cdigo llama a la propiedad PCId para conocer el nmero de mquina en la que se ejecuta el objeto:
Private Sub Command3_Click() Dim obj As Object Set obj = CreateObject("NetTalk.NetTalk") MsgBox obj.PCId End Sub
CPKSoft Ingeniera
Drivers para comunicacin industrial. www.cpksoft.com.ar www.facebook.com/ cpksoftingenieria cpksoftingenieria@ hotmail.com tel: 54-11-1545788354 1990-2012 pg. 20/53

El resultado es un mensaje con el nmero PCId de la mquina:

Soluciones de comunicacin industrial para Windows

Gua rpida de propiedades, mtodos y eventos


Propiedades
Nombre de la propiedad
CheckLicense

Tipo Short

Descripcin Si es true, indica que el driver requiere de una licencia. Si es false, indica que el driver es gratuito. Velocidad de comunicaciones utilizada en la ltima conexin serie abierta. Bits de datos utilizados en la ltima conexin serie abierta. DtrEnable utilizado en la ltima conexin serie abierta. Paridad utilizada en la ltima conexin serie abierta. Puerto de comunicaciones utilizado en la ltima conexin serie abierta. RtsEnable utilizado en la ltima conexin serie abierta. Bits de stop utilizados en la ltima conexin serie abierta. Retardo T1 utilizado en la ltima conexin serie abierta. Retardo T2 utilizado en la ltima conexin serie abierta. Retardo T3 utilizado en la ltima conexin serie abierta. Timeout utilizado en la ltima conexin serie abierta. Formato de fecha y hora en el panel de comunicaciones. Por defecto se utiliza "HH:mm:ss.fff". Si se deja vaco, no se muestra el timestamp en el panel. Descripcin del driver utilizado en el ltimo llamado de lectura o escritura. Desarrollador del driver utilizado en el ltimo llamado de lectura o escritura. Si es true, indica que an no se valid la licencia del driver utilizado en el ltimo llamado de lectura o escritura. Si es false, la licencia ya fue validada OK. Nombre del driver utilizado en el ltimo llamado de lectura o escritura. Cantidad de puntos utilizados en el ltimo llamado de lectura o escritura. Parmetro P0 utilizado en el ltimo
pg. 21/53

CommBaudRate

Int32

CommDataBits CommDtrEnable CommParity CommPortName CommRtsEnable CommStopBits CommT1Delay CommT2Delay CommT3Delay CommTimeOut DateTimeFormat

Int32 Boolean Parity String Boolean StopBits Int32 Int32 Int32 Int32 String

DriverDescription DriverDeveloper
CPKSoft Ingeniera
Drivers para comunicacin industrial. www.cpksoft.com.ar www.facebook.com/ cpksoftingenieria cpksoftingenieria@ hotmail.com tel: 54-11-1545788354 1990-2012

String String Boolean

DriverLocked

DriverName DriverNumPoints DriverP0

String Int32 String

Soluciones de comunicacin industrial para Windows

DriverP1 DriverP2 DriverP3 DriverP4 DriverP5 DriverP6 DriverP7 DriverP8 DriverP9 DriverStatus DriverVersion EnableAbortCommunicationButton

String String String String String String String String String String String Boolean

EnableClearPanelButton

Boolean

EnableCloseConnectionButton

Boolean

EnableFreezeUnfreezePanelButton

Boolean

EnableReconnectButton

Boolean

EnableSavePanelButton

Boolean

EnableSetLinesToSaveButton

Boolean

EnableShowHidePanelButton

Boolean

FireEvents FreezePanel FreezeWhenDoubleClick


CPKSoft Ingenier a
Drivers para comunicacin industrial. www.cpksoft.com.ar www.facebook.com/ cpksoftingenieria cpksoftingenieria@ hotmail.com tel: 54-11-1545788354 1990-2012

Boolean Boolean Boolean

IsCommunicating IsConnected Language

Boolean Boolean Languages

LastDriverStatus LastException

String String

llamado de lectura o escritura. Parmetro P1 utilizado en el ltimo llamado de lectura o escritura. Parmetro P2 utilizado en el ltimo llamado de lectura o escritura. Parmetro P3 utilizado en el ltimo llamado de lectura o escritura. Parmetro P4 utilizado en el ltimo llamado de lectura o escritura. Parmetro P5 utilizado en el ltimo llamado de lectura o escritura. Parmetro P6 utilizado en el ltimo llamado de lectura o escritura. Parmetro P7 utilizado en el ltimo llamado de lectura o escritura. Parmetro P8 utilizado en el ltimo llamado de lectura o escritura. Parmetro P9 utilizado en el ltimo llamado de lectura o escritura. Idem propiedad Status. Versin del driver utilizado en el ltimo llamado de lectura o escritura. Establece si estar disponible la opcin Interrumpir Comunicacin en el men descolgable. Establece si estar disponible la opcin Limpiar Panel en el men descolgable. Establece si estar disponible la opcin Cerrar Conexin en el men descolgable. Establece si estar disponible la opcin Congelar/Descongelar Panel en el men descolgable. Establece si estar disponible la opcin Reconectar en el men descolgable. Establece si estar disponible la opcin Guardar Panel en el men descolgable. Establece si estar disponible la opcin Establecer cantidad de lneas en el men descolgable. Establece si estar disponible la opcin Ocultar/Mostrar Panel en el men descolgable. Establece si se disparan los eventos. Si es true el panel se congela y si es false el panel se descongela. Establece si el panel se puede congelar/descongelar haciendo doble-click con el mouse sobre l. Indica si el driver se est comunicando en ese momento. Indica si hay una conexin abierta en ese momento. Establece el idioma que se mostrar en la interfaz y en los mensajes propios del componente. Muestra un mensaje con el ltimo estado retornado por el driver. Muestra un mensaje con la ltima
pg. 22/53

Soluciones de comunicacin industrial para Windows

LicenseType

String

LogPanel LogPanelFilename

Boolean String

MinimizeDoEventsCalls

Boolean

MonitorMode

MonitorModes

OnErrorReconnect

Boolean

PanelFont PanelLines PanelMode

Font Int16 PanelModes

PanelText PanelWordWrap PCId

String Boolean String

ShowConnectionStatus ShowElapsedTimeBar ShowPanel ShowToolTips SilentMode

Boolean Boolean Boolean Boolean Boolean

CPKSoft Ingenier a
Drivers para comunicacin industrial. www.cpksoft.com.ar www.facebook.com/ cpksoftingenieria cpksoftingenieria@ hotmail.com tel: 54-11-1545788354 1990-2012

Status

String

StatusBarFont TcpIpAddress TcpIpHiddenAddress

Font String String

excepcin que se produjo en el componente. Tipo de licencia del driver utilizado en el ltimo llamado de lectura o escritura. Establece si se registra en disco la actividad del panel. Establece el nombre completo del archivo donde se almacena la actividad del panel. Si se deja vaco, se utiliza el archivo PanelLog.yyyyMMdd.txt. Establece que se reduzcan a un mnimo las llamadas a DoEvents dentro del componente. Esto reduce la respuesta de la aplicacin pero permite una ejecucin ms rpida del componente. Establece el criterio utilizado para hacer parpadear los leds de la interfaz (TxRx, StartFinish, AlwaysOn, AlwaysOff). Establece si ante una cada de la conexin, el componente debe intentar reconectarse automticamente. Establece el fuente del texto utilizado en el panel. Establece la cantidad de lneas que almacena el panel. Establece cmo se muestran los telegramas en el panel (Hexadecimal, ASCII, Decimal). Devuelve el texto presente en el panel. Establece la propiedad WordWrap del panel. Devuelve el PCId de la mquina donde se est ejecutando el componente. Establece si se muestra el estado de la conexin en la interfaz. Establece si se muestra la barra de progreso de tiempo en la interfaz. Establece si se muestra el panel en la interfaz. Establece si se muestran tooltips descolgables en la interfaz. Establece si la interfaz debe trabajar en modo silencioso (no se actualiza la interfaz ni el panel). Muestra un mensaje con el ltimo estado del componente, que combina el ltimo estado del driver o la ltima excepcin, segn cul de los dos se haya producido ltimo. Establece el fuente del texto utilizado en la barra del men. Direccin IP utilizada en la ltima conexin tcp/ip abierta. Si no est vaca, es la direccin IP que ser realmente utilizada en las
pg. 23/53

Soluciones de comunicacin industrial para Windows

TcpIpPortNum TcpIpProtocol TcpIpT3Delay TcpIpTimeOut Text

Int32 TcpIpProtocolType Int32 Int32 String

TextFont UseTemporaryDrivers

Font Boolean

llamadas Connect y Ping. La IP que se mostrar en los mensajes del panel de comunicaciones seguir siendo la establecida en TcpIpAddress o la suministrada al llamar a los mtodos. Esta IP oculta se utiliza para no mostrar la verdadera IP a la que se est realizando una comunicacin. Puerto IP utilizado en la ltima conexin tcp/ip abierta. Protocolo IP utilizado en la ltima conexin tcp/ip abierta. Retardo T3 utilizado en la ltima conexin tcp/ip abierta. Puerto IP utilizado en la ltima conexin tcp/ip abierta. Establece el texto que aparecer como ttulo en el marco que rodea al componente. Establece el fuente del texto del marco que rodea al componente. Establece si se deben cargar copias de los archivos de los drivers en lugar de los archivos originales. Esta opcin garantiza que cada dll cargada tenga su propio espacio en memoria y no haya conflictos entre los datos. Se recomienda su uso cuando varios objetos NetTalk puedan acceder a un mismo driver simultneamente (por ejemplo, con llamadas asincrnicas).

Mtodos
Nombre del mtodo AbortCommunication Valor retornado Boolean Descripcin Termina con una comunicacin que se est llevando a cabo, sin esperar a que termine normalmente o a que se agote el tiempo de espera establecido. Realiza un Ping a una direccin IP de manera asincrnica, es decir, sin bloquear completamente la aplicacin (permite que el formulario de la aplicacin siga respondiendo). Lee valores analgicos de manera asincrnica (sin bloqueo). Lee valores binarios de manera asincrnica (sin bloqueo). Escribe valores analgicos de manera asincrnica (sin bloqueo). Escribe valores binarios de manera asincrnica (sin bloqueo). Limpia el contenido del panel. Unificacin de TcpIpConnect y SerialConnect. Establece una conexin serie o tcp/ip. Fuerza la desconexin de una conexin abierta. Devuelve un texto descriptivo con los parmetros utilizados en la ltima
pg. 24/53

AsyncPing

Boolean

AsyncReadAnalog AsyncReadBinary AsyncWriteAnalog


CPKSoft Ingenier a
Drivers para comunicacin industrial. www.cpksoft.com.ar www.facebook.com/ cpksoftingenieria cpksoftingenieria@ hotmail.com tel: 54-11-1545788354 1990-2012

Boolean Boolean Boolean Boolean void Boolean

AsyncWriteBinary ClearPanel Connect

Disconnect GetConnectionParameters

Boolean String

Soluciones de comunicacin industrial para Windows

GetDriverCheckLicense GetDriverDescription GetDriverDeveloper

String String String

GetDriverLicenseType GetDriverParameters

String String

GetDriverVersion GetLastPointValue GetMachineKey GetPointDate GetPointTagName

String double String DateTime String

GetPointText

String

GetPointValue

Double

GetPointValueChanged

Boolean

GetRunningBitMode

String

InjectSimulatedReply

void

LastPointValue LogPanelHeader
CPKSoft Ingenier a
Drivers para comunicacin industrial. www.cpksoft.com.ar www.facebook.com/ cpksoftingenieria cpksoftingenieria@ hotmail.com tel: 54-11-1545788354 1990-2012

double/ Boolean void

Ping PointDate PointTagName PointText PointValue

Boolean DateTime/Boolean String/Boolean String/Boolean Double/Boolean

conexin. Averigua si un driver requiere de una licencia. Obtiene la descripcin de un driver por su nombre de archivo. Obtiene el nombre del desarrollador de un driver por su nombre de archivo. Obtiene el tipo de licencia de un driver por su nombre de archivo. Devuelve un texto descriptivo con los parmetros utilizados en la ltima lectura o escritura. Obtiene la versin de un driver por su nombre de archivo. Devuelve el valor anterior de un PointValue. Obtiene el PCId de la computadora en la que se ejecuta la aplicacin. Obtiene la fecha del ltimo PointValue. Obtiene un nombre de tag asociado a un PointValue que es previamente suministrado por el usuario. Obtiene un texto asociado a un PointValue que puede haber sido devuelto por el driver acompaando el valor numrico. Obtiene el valor correspondiente a un PointValue tal como fue recibido desde un equipo. Averigua si un PointValue cambi su valor en la ltima lectura respecto de la anterior. Devuelve 32 si la aplicacin se est ejecutando en 32 bits, y 64 si se est ejecutando en 64 bits. Inyecta un telegrama (escrito en hexadecimal por ejemplo 010AFE9B) como respuesta a un driver, de manera tal de simular una respuesta de un equipo real. El telegrama debe inyectarse antes de realizar la llamada al mtodo de lectura o escritura, para que est disponible. El telegrama puede ser suministrado hasta en dos partes. Sobrecarga de GetLastPointValue y SetLastPointValue. Agrega al log de actividad del panel un encabezado con informacin del driver, fecha y hora y datos de la conexin y del comando utilizado. Realiza un Ping a una direccin IP. Unificacin de GetPointDate y SetPointDate. Unificacin de GetPointTagName y SetPointTagName. Unificacin de GetPointText y SetPointText. Unificacin de GetPointValue y SetPointValue.
pg. 25/53

Soluciones de comunicacin industrial para Windows

PointTexts PointValues PointValueChanged

String String Boolean

ReadAnalog ReadBinary ReadBooleanValues ReadNumericValues Reconnect

Boolean Boolean Boolean Boolean Boolean

ResetLastDriverStatus ResetLastException SavePanel SerialConnect SetLastPointValue SetPointDate SetPointTagName SetPointText

void void Boolean Boolean Boolean Boolean Boolean Boolean

SetPointValue

Boolean

SetPointValueChanged

Boolean

SyncPing

Boolean

SyncReadAnalog SyncReadBinary SyncWriteAnalog SyncWriteBinary TcpIpConnect


CPKSoft Ingenier a
Drivers para comunicacin industrial. www.cpksoft.com.ar www.facebook.com/ cpksoftingenieria cpksoftingenieria@ hotmail.com tel: 54-11-1545788354 1990-2012

Boolean Boolean Boolean Boolean Boolean void

UnloadDriver

Wait WriteAnalog WriteBinary WriteBooleanValues WriteNumericValues

void Boolean Boolean Boolean Boolean

Lista de todos los PointTexts. Lista de todos los PointValues. Unificacin de GetPointValueChanged y SetPointValueChanged. Unificacin de AsyncReadAnalog y SyncReadAnalog. Unificacin de AsyncReadBinary y SyncReadBinary. Idem ReadBinary. Idem ReadAnalog. Intenta restablecer una conexin utilizando los mismos parmetros de la conexin anterior. Resetea la propiedad LastDriverStatus a un texto vaco. Resetea la propiedad LastException a un texto vaco. Guarda el contenido del panel en el archivo que se indique. Establece una conexin mediante un puerto serial. Redefine el valor anterior de un PointValue. Redefine la fecha del ltimo PointValue. Establece un nombre de tag asociado a un PointValue. Establece un texto asociado a un PointValue, que puede ser requerido por un driver para su envo. Establece el valor correspondiente a un PointValue para ser enviado a un equipo. Sobre-escribe la condicin que indica si un PointValue cambi su valor en la ltima lectura respecto de la anterior. Realiza un Ping a una direccin IP, que bloquea la aplicacin hasta que se termina de ejecutar el comando. Lee valores analgicos de manera sincrnica (con bloqueo). Lee valores binarios de manera sincrnica (con bloqueo). Escribe valores analgicos de manera sincrnica (con bloqueo). Escribe valores binarios de manera sincrnica (con bloqueo). Establece una conexin mediante un vnculo tcp/ip. Descarga el driver de la memoria, de manera que el archivo .tlk no quede retenido por el sistema operativo. Espera una cantidad de milisegundos llamando mientras tanto a DoEvents. Unificacin de AsyncWriteAnalog y SyncWriteAnalog. Unificacin de AsyncWriteBinary y SyncWriteBinary. Idem WriteBinary. Idem WriteAnalog.
pg. 26/53

Soluciones de comunicacin industrial para Windows

WriteToPanel

void

Agrega un texto de usuario al panel.

(Los parmetros requeridos por cada mtodo con sus sobrecargas se pueden consultar desde el entorno de desarrollo con la funcionalidad IntelliSense del IDE, tambin llamada autocompletar, que consiste en desplegar informacin de ayuda al usuario a medida que se escribe el cdigo).

Eventos
Nombre del evento Connected Argumentos autoreconnected Descripcin Informa que se estableci una nueva conexin, indicando adems si la misma fue producto de una reconexin automtica. Informa que una conexin se cerr. Informa que una transaccin de lectura o escritura finaliz, indicando si lo hizo de manera exitosa o fallida. Informa que se agreg un nuevo mensaje al panel y pasa el texto como argumento. Evento de usuario disparado cuando se hace click sobre el indicador del estado de la conexin.

Disconnected Finished

finishedok

NewPanelMessage

message

User

CPKSoft Ingeniera
Drivers para comunicacin industrial. www.cpksoft.com.ar www.facebook.com/ cpksoftingenieria cpksoftingenieria@ hotmail.com tel: 54-11-1545788354 1990-2012 pg. 27/53

Soluciones de comunicacin industrial para Windows

Uso del componente HMITalk


La interfaz de HMITalk
El componente HMITalk es un control ActiveX/OCX con interfaz tipo OLE/COM cuya finalidad es manejar los drivers de comunicacin de CPKSoft Ingeniera desde aplicaciones escritas en lenguajes que soporten objetos COM, como es el caso de VB6, Visual Studio 2005/2008/2010.NET, etc. Se puede utilizar para construir aplicaciones que corran tanto en 32 bits como en 64 bits. Se presenta como dos archivos de extensin ocx: HMITK32.ocx para aplicaciones de 32 bits y HMITK64.ocx para aplicaciones de 64 bits. Al igual que NetTalk, HMITalk ofrece su propia interfaz grfica que se puede colocar en tiempo de diseo en los formularios (WinForm) de las aplicaciones que soportan objetos OCX. HMITalk ofrece una amplia lista de propiedades, mtodos y eventos para establecer todos los aspectos funcionales necesarios para un manejo completo de la apariencia del objeto y de los drivers de comunicacin. HMITalk ofrece una interfaz con cajas de tamao configurable para ver los telegramas transmitidos, los telegramas recibidos y el resultado final de la comunicacin. Muestra tambin leds parpadeantes opcionales cada vez que se transmiten o reciben datos. Cada objeto tiene un texto de encabezado configurable por el usuario. Ofrece ventanas de propiedades en tiempo de diseo que facilitan su configuracin.

Registro de HMITalk
Como es normal con cualquier ActiveX u OCX, HMITalk debe ser previamente registrado en la maquina donde se lo deba utilizar, ya sea en la carpeta de trabajo donde descarg el .zip que contiene los archivos del driver, o bien donde estar la aplicacin que se est desarrollando. Esta eleccin queda a criterio de cada desarrollador. Registrar un ocx es un procedimiento que no est relacionado con licenciar el objeto. No es un requisito de CPKSoft sino ms bien un paso previo que se debe seguir para poder utilizar cualquier componente ocx en una mquina que corra Windows. Segn lo explica Microsoft, al distribuir una aplicacin de que utiliza un control ActiveX (archivo .ocx), el archivo .ocx se debe incluir correctamente en el Registro para que la aplicacin funcione correctamente.
CPKSoft Ingeniera
Drivers para comunicacin industrial. www.cpksoft.com.ar www.facebook.com/ cpksoftingenieria cpksoftingenieria@ hotmail.com tel: 54-11-1545788354 1990-2012 pg. 28/53

El Registro de Windows es una base de datos jerrquica que almacena los ajustes de configuracin y opciones en los sistemas operativos Microsoft Windows. Contiene la configuracin de los componentes de bajo nivel del sistema operativo, as como de las aplicaciones que hay funcionando en la plataforma: hacen uso del registro el kernel, los controladores de dispositivos, los servicios, el SAM, la interfaz de usuario y las aplicaciones de terceros. El registro tambin proporciona un medio de acceso a los contadores para generar un perfil del rendimiento del sistema. El proceso de registracin de HMITalk y sus ocx asociados se debe realizar tanto para la mquina de desarrollo como en la del usuario donde se luego vayan a ejecutar las aplicaciones desarrolladas. Para

Soluciones de comunicacin industrial para Windows

ello se provee la herramienta RegHMITalk.exe, que invoca al utilitario regsvr32.exe de Windows que corresponda para registrar correctamente a HMITalk y sus dependencias.

Antes de correr RegHMITalk, y sobre todo si utiliza sistemas operativos anteriores a Windows 7, debe asegurarse de contar con todas las dll de Windows requeridas para ejecutar aplicaciones MFC/C++. Si tiene XP es necesario tener la versin SP2 instalada, o bien colocar manualmente los archivos mfc100.dll y msvcr100.dll en su mquina, sino recibir un error al registrar o utilizar los objetos. Para asegurarse de contar con todas las libreras de Microsoft necesarias en su sistema, puede descargar el paquete redistribuible Microsoft Visual C++ 2010 Redistributable Package (x86/x64) desde la pgina de Microsoft, llamado vcredist_x86/x64.exe, quien se ocupa de instalar todos los archivos necesarios. Este paso se debe hacer en todas las mquinas que presenten problemas al registrar los ocx. Cuando el sistema operativo sea de 64 bits, existen dos versiones diferentes de regsvr32.exe, una para 32 bits (en c:\windows\sysWOW64) y otra para 64 bits (en c:\windows\system32), y RegHMITalk se ocupa en cada caso de invocar la versin correcta. Se recomienda registrar ambas versiones de 32 y 64 bits siempre que su mquina y sistema operativo lo permitan, especialmente si usted planea construir aplicaciones que deban ejecutarse luego como programas de 64 bits. Adems, se sugiere copiar todos los .ocx en la carpeta c:\Windows\system32 y tambin en la carpeta c:\Windows\SysWOW64 (si sta existe en su sistema operativo), ya que las interfaces de desarrollo pueden ir a buscar all los ocx en tiempo de diseo. Por otra parte, un problema conocido con las plataformas Visual Studio que trabajan en 32 bits es que slo trabajan bien en diseo si la CPU de destino establecida para la aplicacin es de 32 bits. Si se compila una aplicacin para CPU de destino de 64 bits, una vez compilada se recomienda volver a establecer la plataforma de destino en 32 bits. La aplicacin generada (el archivo ejecutable) funcionar correctamente en 64 bits. Pero si se omite volver a establecer el destino como de 32 bits y guardamos el proyecto apuntando a una CPU de 64 bits y luego cerramos Visual Studio, al ingresar nuevamente al proyecto nos dar un error al mostrar los formularios que contengan los objetos ocx.

CPKSoft Ingeniera
Drivers para comunicacin industrial. www.cpksoft.com.ar www.facebook.com/ cpksoftingenieria cpksoftingenieria@ hotmail.com tel: 54-11-1545788354 1990-2012

pg. 29/53

Soluciones de comunicacin industrial para Windows

El problema se resuelve estableciendo la plataforma de destino nuevamente a 32 bits (mientras persiste el error), guardando el proyecto de la aplicacin, cerrando Visual Studio y volviendo a cargar el proyecto. Este error se produce porque Visual Studio se ejecuta siempre en 32 bits, y si la plataforma qued establecida en 64 bits, al recargar el proyecto trata de utilizar las versiones de 64 bits de los ocx, en sus formularios, lo que causa un conflicto de plataforma. Otro problema conocido con aplicaciones que utilizan ocx desarrollados en MFC/C++ es que dependen del archivo stdole.dll que es parte de Windows y al compilar pueden aparecer advertencias del tipo: Se cre una referencia al ensamblado de interoperabilidad incrustado 'c:\Windows\assembly\GAC\stdole\7.0.3300.0__b03f5f7f11d50a3a\stdole.dll' debido a una referencia indirecta a ese ensamblado creada por el ensamblado 'c:\....\AxInterop.HMITalkLib.dll'. Considere cambiar la propiedad 'Incrustar tipos de interoperabilidad' en alguno de los ensamblados.

CPKSoft Ingeniera
Drivers para comunicacin industrial. www.cpksoft.com.ar www.facebook.com/ cpksoftingenieria cpksoftingenieria@ hotmail.com tel: 54-11-1545788354 1990-2012

Si esta advertencia aparece, se debe ir a las referencias del proyecto, localizar el archivo stdole32.dll, ir a sus propiedades y all marcar Incrustar tipos de interoperabilidad en false. Al compilar nuevamente, desaparece el error.
pg. 30/53

Soluciones de comunicacin industrial para Windows

Finalmente, es muy importante tener en cuenta que tanto si se utiliza Visual Basic 6.0 (VB6) como Visual Studio C#.NET, Visual Basic.NET o cualquier otro entorno de desarrollo desde el que se tengan que agregar los componentes a una barra de herramientas en tiempo de diseo, es necesario siempre ejecutar estos entornos de desarrollo en modo administrador, cuando el sistema operativo lo permita (como es el caso de Windows Vista y Windows 7 por ejemplo) para que no se produzca un error al
Resumen:

1. 2. 3. 4.

5.

6.

Instalar todas las dll requeridas para utilizar ocx en su sistema. Si es necesario, instalar el paquete redistribuible vcredist_x86/x64.exe para MFC/C++ 2010 desde la pgina de Microsoft. Correr el programa RegHMITalk.exe en modo administrador (si el sistema le da la opcin), tanto para 32 bits como para 64 bits (ste ltimo si la CPU de la mquina lo permite). Correr el entorno de desarrollo que utilice en modo administrador (si el sistema le da la opcin). Copiar todos los ocx que forman parte del driver en las carpetas c:\windows\system32 y en c:\windows\syswow64 (cuando esta ltima est disponible). Puede valerse de la herramienta RegHMITalk para asegurar este requisito. Cuando se compilen aplicaciones para CPU de 64 bits en Visual Studio, volver a apuntar la CPU en el compilador a 32 bits antes de guardar el proyecto, para que no falle la prxima vez que se abra. Si al compilar en Visual Studio aparece una advertencia relacionada con stdole.dll, ir a las Referencias del proyecto y en las propiedades de stdole.dll establecer Incrustar tipos de interoperabilidad en False.

Prueba de funcionamiento
Para asegurarse de que los componentes ActiveX/OCX se han registrado correctamente en su sistema, se sugiere correr el utilitario TestHMITalk.exe. Si al ejecutarlo le aparece un formulario donde se muestra los objetos HMITalk y LineChart en funcionamiento, esto indica que no han existido conflictos.

CPKSoft Ingeniera
Drivers para comunicacin industrial. www.cpksoft.com.ar www.facebook.com/ cpksoftingenieria cpksoftingenieria@ hotmail.com tel: 54-11-1545788354 1990-2012 pg. 31/53

Soluciones de comunicacin industrial para Windows

Crear una aplicacin


Para mostrar cmo crear una aplicacin utilizaremos Microsoft Visual C# 2010 Express. Para poder agregar el objeto HMITalk debemos antes haberlo registrado con RegHMITalk.exe (para 32 bits y si se puede, tambin para 64 bits), para que aparezca entre los componentes COM disponibles. Suponiendo que HMITalk ya fue correctamente registrado, hay que para agregarlo al cuadro de herramientas de Visual Studio. Para ello deberemos posicionarnos sobre el Cuadro de herramientas y sobre Controles comunes presionar botn derecho del mouse donde aparecer un men descolgable. All seleccionamos la opcin Elegir elementos y luego seleccionamos la pestaa Componentes COM. Buscamos el componente CPKSoft HMITalk en la lista, lo marcamos y aceptamos:

CPKSoft Ingeniera
Drivers para comunicacin industrial. www.cpksoft.com.ar www.facebook.com/ cpksoftingenieria cpksoftingenieria@ hotmail.com tel: 54-11-1545788354 1990-2012

Vale hacer aqu una aclaracin importante a ser tenida en cuenta: si usted est trabajando con una mquina de 64 bits, con sistema operativo de 64 bits y necesita crear una aplicacin de 64 bits que utilice HMITalk, una vez que haya registrado el objeto (tanto para 32 bits como para 64 bits), lo esperable ser que seleccione la versin de 64 bits de HMITalk desde el listado de Componentes COM disponibles en su Visual Studio 2010 o la plataforma de desarrollo que utilice. Pero lo que realmente suceder probablemente ser que los componentes que Visual Studio le va a mostrar en la lista van a depender de si el propio Visual Studio corre en 32 o en 64 bits. El Visual C#.NET 2010 Express gratuito que utilizamos en nuestros ejemplos est escrito por Microsoft como una aplicacin de 32 bits (a pesar de que es capaz de producir aplicaciones de 64 bits sin problemas), por lo que la versin del componente HMITalk que le aparecer en el listado ser solamente la de 32 bits. En realidad slo le va a mostrar el componente de 64 bits cuando el propio Visual Studio est corriendo en 64 bits, lo que probablemente suceder con versiones futuras de ese entorno de desarrollo. No obstante, mientras tanto esto no significa que no se puedan desarrollar aplicaciones de 64 bits con HMITalk desde un Visual Studio de 32 bits. Simplemente seleccione el HMITalk de 32 bits que all se ofrece, y utilcelo normalmente. Sepa que mientras se est en modo diseo, donde Visual Studio de 32 bits es quien maneja el componente, la versin de HMITalk que se estar mostrando en sus formularios ser la de 32 bits. Cuando se ejecute la aplicacin desarrollada por usted para 64 bits, ya sea desde dentro o desde fuera del IDE, la versin de HMITalk que estar all corriendo ser la de 64 bits. Por eso es importante que estn registradas ambas versiones de HMITalk, ya que Windows pasa automticamente de una a otra dependiendo de si el entorno de ejecucin sea de 32 o 64 bits, sin que usted lo note. Tambin es importante que cuando se distribuya la aplicacin, se considere incluir los dos archivos HMITK32.ocx y HMITK64.ocx para asegurar la compatibilidad en ambos casos, junto con ambas versiones de los drivers utilizados (*.32.tlk y *.64.tlk). Una vez marcado el componente HMITalk de la lista, le damos aceptar y nos aparecer el componente en el cuadro de herramientas, listo para ser arrastrado a nuestro formulario.

pg. 32/53

Soluciones de comunicacin industrial para Windows

En la imagen siguiente se ve el componente HMITalk ya colocado en el formulario, cuyo tamao se ha agrandado para recibir al objeto:

En este punto, usted puede hacer una prueba de compilacin del proyecto, que por supuesto an no hace nada ms que mostrar el objeto en pantalla. Si le llegara a aparecer un error de este tipo: Advertencia: Se cre una referencia al ensamblado de interoperabilidad incrustado 'c:\...\stdole.dll' debido a una referencia indirecta a ese ensamblado creada por el ensamblado 'c:\... \AxInterop.HMITalkLib.dll'. Considere cambiar la propiedad 'Incrustar tipos de interoperabilidad' en alguno de los ensamblados, la solucin es simple y consiste en lo siguiente: en el Explorador de Soluciones, en las Referencias del proyecto, localice el archivo stdole, vaya a sus propiedades y desactive la casilla Incrustar tipos de interoperabilidad. Otra alternativa es directamente eliminar stdole de sus Referencias. Compile nuevamente su proyecto y compruebe que el problema se solucion. A continuacin se explican las acciones ms comunes del objeto HMITalk, como es el caso de la configuracin del puerto y el manejo de lecturas y escrituras.

Configuracin del puerto de comunicaciones


En general el objeto HMITalk se puede configurar totalmente en tiempo de diseo a travs de sus pginas de propiedades. Para configurar el puerto de comunicaciones, se debe ir a las pestaas TCP/IP y Comm, que se acceden con botn derecho sobre el objeto, y seleccionando luego la opcin Propiedades.

CPKSoft Ingeniera
Drivers para comunicacin industrial. www.cpksoft.com.ar www.facebook.com/ cpksoftingenieria cpksoftingenieria@ hotmail.com tel: 54-11-1545788354 1990-2012 pg. 33/53

La pestaa TCP/IP permite establecer si la comunicacin se va a realizar sobre TCP/IP. De ser as, se debe activar la casilla TcpIpEnabled y establecer los dems parmetros de la comunicacin TCP/IP:

Soluciones de comunicacin industrial para Windows

La pestaa Comm permite establecer las propiedades del puerto serial, en el caso que la comunicacin no se realice por TCP/IP sino por un puerto COM serial:

Se pueden colocar varias instancias de objetos compartiendo un mismo puerto de comunicaciones, tanto serial como TCP/IP. El motor manejador de los objetos que corre detrs de la escena se encarga de ir dndole permiso de uso del vnculo a cada objeto que as lo requiera.

Manejo de lecturas
Una vez configurado el puerto de comunicaciones, se debe seleccionar el driver que se va a utilizar y configurar sus parmetros. Esto se realiza en la pestaa Drivers de las pginas de propiedades que se muestra a continuacin, y que ya est configurada para producir la misma lectura que se utiliz como ejemplo para el componente NetTalk:

CPKSoft Ingeniera
Drivers para comunicacin industrial. www.cpksoft.com.ar www.facebook.com/ cpksoftingenieria cpksoftingenieria@ hotmail.com tel: 54-11-1545788354 1990-2012

pg. 34/53

Soluciones de comunicacin industrial para Windows

Obsrvese que, a diferencia del componente NetTalk, en este caso no es necesario escribir ninguna lnea de cdigo para configurar el objeto. Para HMITalk es vlido todo lo ya explicado para el componente NetTalk en cuando a cmo configurar las propiedades o parmetros relacionados con el comando. Se utilizan los mismos parmetros DriverP0 a DriverP9, con idnticos significados. La propiedad DriverDataType de HMITalk es el modo de establecer el tipo de operacin que se va a realizar. Las equivalencias con NetTalk son las siguientes: Analog Input equivale a ReadNumericValues Digital Input equivale a ReadBooleanValues Analog Output equivale a WriteNumericValues Digital Output equivale a WriteBooleanValues

Lecturas automticas por eventos


Para activar las comunicaciones automticas, se debe acceder a la pestaa Scan, donde se debe activar la propiedad ScanActive para que el motor de comunicaciones realice un poleo automtico mientras la aplicacin se est ejecutando. Una aplicacin tpica puede consistir de varios objetos HMITalk corriendo en simultneo, cada uno configurado para apuntar a diferentes equipos o a diferentes porciones de memoria o de datos de un mismo equipo. Cuando se crea el primer objeto en la aplicacin, ste a su vez inicializa un motor de poleo interno que trabaja en background y que lleva la cuenta de todos los dems objetos que corren en la misma aplicacin, manejando los accesos a los diferentes puertos y otorgndoles las prioridades necesarias para hacer uso de los mismos cuando se les cumple el tiempo de realizar cada comunicacin.
CPKSoft Ingeniera
Drivers para comunicacin industrial. www.cpksoft.com.ar www.facebook.com/ cpksoftingenieria cpksoftingenieria@ hotmail.com tel: 54-11-1545788354 1990-2012 pg. 35/53

El usuario no necesita colocar un objeto Timer en su aplicacin para resolver el barrido automtico ya que de esto se encarga el propio HMITalk.

Soluciones de comunicacin industrial para Windows

En tiempo de ejecucin, se podr ver al objeto comunicndose, mostrando los leds parpadeando y los telegramas intercambiados en las cajas de texto de su interfaz:

Cuando se deja la propiedad ScanActive activada, el motor polea peridicamente cada un cierto tiempo que se establece en la propiedad ScanInterval. La forma de obtener los datos recibidos es tpicamente mediante el evento OnPointValueChanged, que se produce cada vez que alguno de los datos recibidos ha cambiado su valor con respecto a su valor anterior. Por ejemplo, si se quisieran tomar los tres primeros valores recibidos y asignarlos a tres objetos Label diferentes (label1, label2 y label3), el cdigo sera as:

CPKSoft Ingeniera
Drivers para comunicacin industrial. www.cpksoft.com.ar www.facebook.com/ cpksoftingenieria cpksoftingenieria@ hotmail.com tel: 54-11-1545788354 1990-2012

pri;ate ;oi" ax' ITalk1<1n&ointDalueChan$e"(ob!ect sen"er+ 8x' ITalk#ib.<0' ITalk2;ents<1n&ointDalueChan$e"2;ent e) { s?itch (e.point) {
pg. 36/53

Soluciones de comunicacin industrial para Windows

case 5A this.label1.Text = this.ax' ITalk1.$et<&ointDalue(e.point).To*trin$(); break; case 1A this.label-.Text = this.ax' ITalk1.$et<&ointDalue(e.point).To*trin$(); break; case -A this.label,.Text = this.ax' ITalk1.$et<&ointDalue(e.point).To*trin$(); break; ( (
La particularidad de este evento es que, al ejecutarse ante el cambio en un determinado punto, si cambian tres puntos, el evento se dispara tres veces. La diferencia entre cada llamada es que la propiedad e.Point va cambiando para apuntar al ndice del punto que cambi. Por ello se utiliza una sentencia switch o select que permita actualizar el objeto que corresponda de acuerdo a qu dato cambi. Otra manera de recibir los valores, ignorando si hubo o no hubo cambios, es utilizando el evento OnSuccessfullyReceived. Este evento se dispara al final de la comunicacin, siempre y cuando la misma haya sido exitosa. En este caso, el cdigo podra quedar as:

pri;ate ;oi" ax' ITalk1<1n*uccess7ull/.ecei;e"(ob!ect sen"er+ 2;ent8r$s e) { this.label1.Text = this.ax' ITalk1.$et<&ointDalue(5).To*trin$(); this.label-.Text = this.ax' ITalk1.$et<&ointDalue(1).To*trin$(); this.label,.Text = this.ax' ITalk1.$et<&ointDalue(-).To*trin$(); (
Si se produjo un error en la comunicacin, lo habitual es escuchar el evento OnErrorReceiving y consultar el mensaje de error en la propiedad DriverStatus, por ejemplo as:

pri;ate ;oi" ax' ITalk1<1n2rror.ecei;in$(ob!ect sen"er+ 2;ent8r$s e) { essa$e)ox.*ho?(this.ax' ITalk1.0ri;er*tatus); (


Otra manera de reportar un error es directamente escuchar el evento OnDriverStatusChanged, que reporta cada vez que DriverStatus pas del valor que tena a un valor diferente. De esta manera, si persiste un mismo error, este evento se dispara una nica vez cuando se produjo el error. Existen varios otros eventos relacionados con el manejo de la comunicacin que se pueden ver en el listado de eventos ms adelante y su uso se puede inducir por lo general del propio nombre del evento.

Lecturas a demanda por eventos


Las lecturas a demanda son un caso especial donde en lugar de mantener la propiedad ScanActive activada, se deja que la aplicacin sea quien solicite una lectura mediante el llamado al mtodo Trigger() del objeto de la siguiente manera:

CPKSoft Ingenier a
Drivers para comunicacin industrial. www.cpksoft.com.ar www.facebook.com/ cpksoftingenieria cpksoftingenieria@ hotmail.com tel: 54-11-1545788354 1990-2012

pri;ate ;oi" button1<Click(ob!ect sen"er+ 2;ent8r$s e) { this.ax' ITalk1.Tri$$er(); (


Los eventos que se disparan son exactamente los mismos que en una lectura automtica. Incluso la propiedad ScanActive se puede activar en tiempo de ejecucin, pasando de lectura automtica a manual segn lo requiera la aplicacin.

Lecturas con espera


Las lecturas con espera son un caso poco utilizado con HMITalk ya que es un objeto que est diseado para reportar todas las situaciones posibles mediante el disparo de diferentes eventos. No obstante, es
pg. 37/53

Soluciones de comunicacin industrial para Windows

posible iniciar una lectura que bloquee la ejecucin de la aplicacin, a la espera de que una comunicacin finalize antes de continuar con la ejecucin de la siguiente lnea de cdigo. Para ello se utiliza el mtodo TriggerAndWait, quien devuelve true o false de acuerdo a si la comunicacin fue exitosa o si termin con errores. Por ejemplo, combinando lo que ya hacan los ejemplos anteriores, se tendra este cdigo:

pri;ate ;oi" button-<Click(ob!ect sen"er+ 2;ent8r$s e) { i7 (this.ax' ITalk1.Tri$$er8n"Fait()) { this.label1.Text = this.ax' ITalk1.$et<&ointDalue(5).To*trin$(); this.label-.Text = this.ax' ITalk1.$et<&ointDalue(1).To*trin$(); this.label,.Text = this.ax' ITalk1.$et<&ointDalue(-).To*trin$(); ( else essa$e)ox.*ho?(this.ax' ITalk1.0ri;er*tatus); (
Es importante sealar que, aunque haya espera, al terminar la comunicacin igual se disparan todos los eventos relacionados con la aplicacin si stos estn siendo escuchados.

Manejo de escrituras
El manejo tpico de las escrituras desde HMITalk es bsicamente una accin que se realiza a demanda donde se envan uno o ms datos a un equipo por nica vez. Lo normal es crear un objeto nuevo que est dedicado solamente a manejar escrituras, o bien crear varios objetos, si se requiere enviar escrituras simultneamente a travs de varios puertos o a varios equipos. Es raro mantener la propiedad ScanActive encendida en los objetos encargados de escrituras, ya que esto causara que se estn renviando siempre los mismos datos a un equipo. Puede ser til si dichos datos cambian todo el tiempo, como podra ser el caso de enviar una seal de control o bien mantener actualizado un watchdog para que un equipo sepa que la aplicacin permanece activa, pero normalmente el scan se deja apagado. En la imagen siguiente se muestra cmo configurar las propiedades del driver de un segundo objeto para realizar la misma escritura que se ejemplific para NetTalk:

CPKSoft Ingeniera
Drivers para comunicacin industrial. www.cpksoft.com.ar www.facebook.com/ cpksoftingenieria cpksoftingenieria@ hotmail.com tel: 54-11-1545788354 1990-2012 pg. 38/53

Soluciones de comunicacin industrial para Windows

El procedimiento habitual consiste en cargar el valor a ser enviado y luego invocar al mtodo Trigger, como en el caso de las lecturas a demanda. Un ejemplo de esto es el siguiente:

pri;ate ;oi" button,<Click(ob!ect sen"er+ 2;ent8r$s e) { this.ax' ITalk-.set<&ointDalue(5+ 155.5); this.ax' ITalk-.Tri$$er(); (
En caso que se haya producido un error al hacer el envo del dato, el objeto disparar el evento OnErrorSending. Al igual que con el evento OnErrorReceiving (que se dispara ante un error al recibir datos), aqu tambin se puede consultar el valor de la propiedad DriverStatus para obtener los detalles del error:

pri;ate ;oi" ax' ITalk-<1n2rror*en"in$(ob!ect sen"er+ 2;ent8r$s e) { essa$e)ox.*ho?(this.ax' ITalk-.0ri;er*tatus); (


No es usual usar el mtodo TriggerAndWait() porque por lo general el envo de datos o escrituras se realiza a demanda y una vez despachadas, solo interesa saber si se produjo algn tipo de error. Pero si fuera necesario asegurarse de que el envo se realiz correctamente antes de continuar con alguna otra accin, puede ser til utilizar la variante con espera de ejecucin.

Gua rpida de propiedades, mtodos y eventos


Propiedades
AlarmsInfo ArrayOfValuesFormat CommBaudRate CommHoldRTSWhileReceiving CommLogTxBuffer CommReleaseRTS CommSkipEcho CommT2Delay CommTxBuffer CPUConsumption DriverEfficiency DriverErrorPresent DriverNumPoints DriverP2 DriverP5 DriverP8 ElapsedSeconds EnableCalculations ImgAutoSize ImgFontAppearance ImgInvertTxRx ImgRxBoxLines ImgRxLedColor ImgStatusBoxBackColor ImgStatusShowDetails ImgTxCaption ImgTxShowDetails ObjectLocalCount PointsInfo ArrayOfPointValueDates CachesInfo CommCustomBaudRate CommHoldRTSWhileTransmitting CommParity CommRxBuffer CommStopBits CommT3Delay CommTxShowMode CPUPriority DriverErrorCount DriverFilter DriverP0 DriverP3 DriverP6 DriverP9 EnableAlarms EnablePIDs ImgBackColor ImgForeColor ImgLedAppearance ImgRxCaption ImgRxShowDetails ImgStatusBoxLines ImgTxBoxBackColor ImgTxLedBackColor ImgTxShowLed ObjectNumber ScanActive ArrayOfPointValues Caption CommDataBits CommLogRxBuffer CommPort CommRxShowMode CommT1Delay CommTimeout CommunicationAborted DriverDataType DriverErrorLimit DriverName DriverP1 DriverP4 DriverP7 DriverStatus EnableCaches EnableTimer ImgBoxAppearance ImgHideAll ImgRxBoxBackColor ImgRxLedBackColor ImgRxShowLed ImgStatusCaption ImgTxBoxLines ImgTxLedColor ObjectCount PIDsInfo ScanAutoTrigger
pg. 39/53

CPKSoft Ingenier a
Drivers para comunicacin industrial. www.cpksoft.com.ar www.facebook.com/ cpksoftingenieria cpksoftingenieria@ hotmail.com tel: 54-11-1545788354 1990-2012

Soluciones de comunicacin industrial para Windows

ScanInterval ScanStart TcpIpLocalPort TcpIpRemotePort

ScanPriority ScanStopAfter TcpIpProtocol TcpIpTimeout

ScanRetries TcpIpEnabled TcpIpRemoteAddress TimerInterval

Mtodos
AbortCommunication() CommTotalCount(commport) FindPoint(pointname) GetCalculatedDate(BaseDate, Seconds) GetCurrentRetry() GetDateMilliseconds(Date) GetHAlarmColor(point) GetHRAlarmColor(point) GetLLAlarmColor(point) InitPointValue(point, value) PointCacheDirection(point) PointCachePeriod(point) PointCacheSamples(point) PointCacheSource(point) PointDeadBand(point) PointDeltaValue(point) PointHAlarmCount(point) PointHAlarmDeclared(point) PointHAlarmEnabled(point) PointHAlarmMessage(point) PointHAlarmNotifiedCount(point) PointHAlarmThreshold(point) PointHAlarmToleranceExceeded(point) PointHHAlarmCount(point) PointHHAlarmDeclared(point) PointHHAlarmEnabled(point) PointHHAlarmMessage(point) PointHHAlarmNotifiedCount(point) PointHHAlarmThreshold(point) PointHHAlarmToleranceExceeded(point) PointHighHardLimit(point) PointHighPhysicValue(point) PointHRAlarmCount(point) PointHRAlarmDeclared(point) PointHRAlarmEnabled(point) PointHRAlarmMessage(point) PointHRAlarmNotifiedCount(point) PointHRAlarmThreshold(point) PointHRAlarmToleranceExceeded(point) PointLAlarmBlinkEnabled(point) PointLAlarmDate(point) PointLAlarmElapsedTime(point) PointLAlarmHysteresis(point) PointLAlarmNotified(point) PointLAlarmNotifiedDate(point) PointLAlarmTimeTolerance(point) PointLastScanDate(point) PointLLAlarmCount(point) PointLLAlarmDeclared(point) PointLLAlarmEnabled(point) CommOwner(commport) CommUseCount(commport) ForcePIDCalculation(point) GetCurrentDate() GetDateDifference(LastDate, FirstDate) GetDriverValue(point) GetHHAlarmColor(point) GetLAlarmColor(point) GetLRAlarmColor(point) PointCacheDefaultValue(point) PointCacheEnabled(point) PointCachePointer(point) PointCacheSampleValue(point, sample) PointCalculationsEnabled(point) PointDeltaTime(point) PointHAlarmBlinkEnabled(point) PointHAlarmDate(point) PointHAlarmElapsedTime(point) PointHAlarmHysteresis(point) PointHAlarmNotified(point) PointHAlarmNotifiedDate(point) PointHAlarmTimeTolerance(point) PointHHAlarmBlinkEnabled(point) PointHHAlarmDate(point) PointHHAlarmElapsedTime(point) PointHHAlarmHysteresis(point) PointHHAlarmNotified(point) PointHHAlarmNotifiedDate(point) PointHHAlarmTimeTolerance(point) PointHighDriverValue(point) PointHighHardLimitDate(point) PointHRAlarmBlinkEnabled(point) PointHRAlarmDate(point) PointHRAlarmElapsedTime(point) PointHRAlarmHysteresis(point) PointHRAlarmNotified(point) PointHRAlarmNotifiedDate(point) PointHRAlarmTimeTolerance(point) PointIntegral(point) PointLAlarmCount(point) PointLAlarmDeclared(point) PointLAlarmEnabled(point) PointLAlarmMessage(point) PointLAlarmNotifiedCount(point) PointLAlarmThreshold(point) PointLAlarmToleranceExceeded(point) PointLLAlarmBlinkEnabled(point) PointLLAlarmDate(point) PointLLAlarmElapsedTime(point) PointLLAlarmHysteresis(point)
pg. 40/53

CPKSoft Ingenier a
Drivers para comunicacin industrial. www.cpksoft.com.ar www.facebook.com/ cpksoftingenieria cpksoftingenieria@ hotmail.com tel: 54-11-1545788354 1990-2012

Soluciones de comunicacin industrial para Windows

PointLLAlarmMessage(point) PointLLAlarmNotifiedCount(point) PointLLAlarmThreshold(point) PointLLAlarmToleranceExceeded(point) PointLowHardLimit(point) PointLowPhysicValue(point) PointLRAlarmCount(point) PointLRAlarmDeclared(point) PointLRAlarmEnabled(point) PointLRAlarmMessage(point) PointLRAlarmNotifiedCount(point) PointLRAlarmThreshold(point) PointLRAlarmToleranceExceeded(point) PointNextScanDate(point) PointPIDControlSignalDate(point) PointPIDEnabled(point) PointPIDErrorIntegral(point) PointPIDHighPhysic(point) PointPIDKi(point) PointPIDLowPhysic(point) PointPIDMinControlSignal(point) PointPIDSetPoint(point) PointPreviousRateOfChange(point) PointPreviousValueDate(point) PointPWMSetpoint(point) PointRateOfChangeDeadBand(point) PointUnits(point) PointValueDate(point) ResetCache(point) ResetPWM(point) ScrollCache(point, value) SetCommDTR(Status) SetInitialPointValue(point, value) ShowAboutPropertyPage() ShowCachesPropertyPage() ShowCommPropertyPage() ShowDriverPropertyPage() ShowImagePropertyPage() ShowPIDsPropertyPage() ShowPropertyPages() ShowTcpIpPropertyPage() TransmitMessage(message) TriggerAndWait() Wait(timeout) WakeUp()

PointLLAlarmNotified(point) PointLLAlarmNotifiedDate(point) PointLLAlarmTimeTolerance(point) PointLowDriverValue(point) PointLowHardLimitDate(point) PointLRAlarmBlinkEnabled(point) PointLRAlarmDate(point) PointLRAlarmElapsedTime(point) PointLRAlarmHysteresis(point) PointLRAlarmNotified(point) PointLRAlarmNotifiedDate(point) PointLRAlarmTimeTolerance(point) PointName(point) PointPIDControlSignal(point) PointPIDDeadBand(point) PointPIDError(point) PointPIDErrorRateOfChange(point) PointPIDKd(point) PointPIDKp(point) PointPIDMaxControlSignal(point) PointPIDMode(point) PointPIDSetPointAsPercentage(point) PointPreviousValue(point) PointPWMPeriod(point) PointRateOfChange(point) PointScanTime(point) PointValue(point) ReadComm(header, footer, size, timeout) ResetPending() ScaleDriverValue(point, value) SetCommBreak(Status) SetCommRTS(Status) Setm_timeOffset(offset) ShowAlarmsPropertyPage() ShowColorsPropertyPage() ShowCPUPropertyPage() ShowFontsPropertyPage() ShowInfoPropertyPage() ShowPointsPropertyPage() ShowScanPropertyPage() TransmitBuffer(buffer, length) Trigger() TriggerWithDeadBand() WaitForMessage(message, timeout)

Eventos
CPKSoft Ingenier a
Drivers para comunicacin industrial. www.cpksoft.com.ar www.facebook.com/ cpksoftingenieria cpksoftingenieria@ hotmail.com tel: 54-11-1545788354 1990-2012 pg. 41/53

Click() OnAfterRequest() OnBeforeRequest() OnCommTxBufferChanged() OnDriverEfficiencyDecreased() OnDriverStatusChanged() OnErrorDeclared() OnErrorSending() OnHAlarmCleared(point)

DblClick() OnAnyPointValueChanged() OnCommRxBufferChanged() OnDriverEfficiencyChanged() OnDriverEfficiencyIncreased() OnErrorCleared() OnErrorReceiving() OnHAlarmBlinking(point) OnHAlarmDeclared(point)

Soluciones de comunicacin industrial para Windows

OnHAlarmElapsedTimeChanged(point) OnHAlarmToleranceExceeded(point) OnHLAlarmBlinking(point) OnHLAlarmDeclared(point) OnHLAlarmNotified(point) OnHRAlarmBlinking(point) OnHRAlarmDeclared(point) OnHRAlarmNotified(point) OnLAlarmBlinking(point) OnLAlarmDeclared(point) OnLAlarmNotified(point) OnLLAlarmBlinking(point) OnLLAlarmDeclared(point) OnLLAlarmNotified(point) OnLowHardLimitReached(point) OnLRAlarmCleared(point) OnLRAlarmElapsedTimeChanged(point) OnLRAlarmToleranceExceeded(point) OnPointControlSignalChanged(point) OnPointControlSignalIncreased(point) OnPointPWMOutputChanged(point) OnPointRateOfChangeDecreased(point) OnPointReset(point) OnPointValueChanged(point) OnPointValueIncreased(point) OnRequestError() OnRequestStart(boolean* Cancel) OnRxLedOn() OnSuccessfullyReceived() OnTimer() OnTxLedOn()

OnHAlarmNotified(point) OnHighHardLimitReached(point) OnHLAlarmCleared(point) OnHLAlarmElapsedTimeChanged(point) OnHLAlarmToleranceExceeded(point) OnHRAlarmCleared(point) OnHRAlarmElapsedTimeChanged(point) OnHRAlarmToleranceExceeded(point) OnLAlarmCleared(point) OnLAlarmElapsedTimeChanged(point) OnLAlarmToleranceExceeded(point) OnLLAlarmCleared(point) OnLLAlarmElapsedTimeChanged(point) OnLLAlarmToleranceExceeded(point) OnLRAlarmBlinking(point) OnLRAlarmDeclared(point) OnLRAlarmNotified(point) OnPointCacheChanged(point) OnPointControlSignalDecreased(point) OnPointIntegralChanged(point) OnPointRateOfChangeChanged(point) OnPointRateOfChangeIncreased(point) OnPointSet(point) OnPointValueDecreased(point) OnRequestCompleted(out retry) OnRequestRetried() OnRxLedOff() OnScanStopped() OnSuccessfullySent() OnTxLedOff()

CPKSoft Ingenier a
Drivers para comunicacin industrial. www.cpksoft.com.ar www.facebook.com/ cpksoftingenieria cpksoftingenieria@ hotmail.com tel: 54-11-1545788354 1990-2012 pg. 42/53

Soluciones de comunicacin industrial para Windows

Uso del componente LineChart


La interfaz de LineChart
El componente LineChart es un control ActiveX/OCX con interfaz tipo OLE/COM que se distribuye con el driver para dar compatibilidad a aplicaciones basadas en HMITalk que lo han venido utilizando y que necesiten ser migradas a la nuevas plataformas soportadas. Su finalidad es permitir armar grficos sencillos de hasta cuatro plumas para visualizar la evolucin de los datos que se van recibiendo desde el driver, ya sea que se hayan obtenido mediante el componente HMITalk o NetTalk. En realidad, el componente se puede utilizar para graficar datos provenientes de cualquier fuente, si bien fue originalmente diseado para trabajar en conjunto con HMITalk.

LineChart permite colocar una grilla de tamao, densidad y color configurable detrs de las plumas graficadas. La cantidad de muestras permitidas es hasta 2400, siendo 120 por defecto. Las muestras se van empujando dentro del grfico, lo que produce un efecto de avance o scroll. Se pueden definir zonas de diferente color que sirvan para indicar visualmente que las plumas estn dentro de rangos no permitidos. Las plumas pueden ser horizontales o verticales, y moverse de derecha a izquierda o de abajo hacia arriba.

Por tratarse de un control Activex/OCX, debe tambin ser registrado antes de ser utilizado. El programa RegHMITalk.exe, utilizado para registrar HMITalk, tambin se encarga de registrar LineChart tanto para 32 bits como para 64 bits y son vlidas todas las explicaciones ya dadas sobre este punto al explicar el componente HMITalk.

Dibujar una pluma


Para dibujar una pluma que muestre datos, primero debemos colocar una instancia del objeto en cualquier formulario:

CPKSoft Ingeniera
Drivers para comunicacin industrial. www.cpksoft.com.ar www.facebook.com/ cpksoftingenieria cpksoftingenieria@ hotmail.com tel: 54-11-1545788354 1990-2012 pg. 43/53

Soluciones de comunicacin industrial para Windows

Con botn derecho sobre el objeto, se debe acceder a la pestaa Pen1 de las pginas de propiedades, donde se le indica al objeto la cantidad de muestras o puntos que contendr la pluma, los rangos mximo y mnimo, el espesor de la pluma y si la misma es horizontal o vertical:

Adicionalmente se puede ir a la pestaa Colores y modificar el color de la pluma. Si se quieren colocar ms plumas, se pueden colocar hasta cuatro, activndolas en las pestaas correspondientes. El cdigo recomendado para ir cargando valores a ser mostrados en la pluma Pen1 es el siguiente, por ejemplo utilizando un botn para cargar un valor 50:

pri;ate ;oi" button1<Click(ob!ect sen"er+ 2;ent8r$s e) { this.ax#ineChart1.*croll&en1(95); this.ax#ineChart1.0ra?(); (


El resultado luego de presionar repetidas veces el botn ser el siguiente:

CPKSoft Ingeniera
Drivers para comunicacin industrial. www.cpksoft.com.ar www.facebook.com/ cpksoftingenieria cpksoftingenieria@ hotmail.com tel: 54-11-1545788354 1990-2012

Es decir, cada vez que se llame al mtodo ScrollPen1, la pluma 1 empujar todas las muestras existentes de derecha a izquierda y har lugar para una nueva muestra con el valor indicado en su extremo derecho. El resultado ser un grfico que ir avanzando mostrando la historia reciente. El mtodo .Draw() es quien produce la actualizacin del grfico. Se lo llama al final, cuando las muestras ya han sido cargadas en el buffer del objeto. La razn de separar la carga de los valores del refresco del grfico es para permitir actualizar varias muestras o varias plumas, y que mientras tanto no se produzca un efecto de flickering o parpadeo del grfico.
pg. 44/53

Soluciones de comunicacin industrial para Windows

Una alternativa para llenar una pluma es mediante el mtodo SetPenValue, que permite establecer el valor de cualquier muestra del grfico en cualquier momento. Es ideal para transferir de una sola vez un conjunto completo de muestras al grfico, en lugar de hacer scrollear el grfico con cada muestra. Por ejemplo, este cdigo carga de punta a punta toda la pluma con un valor 50, llamando al mtodo Draw() al terminar la carga:

pri;ate ;oi" button-<Click(ob!ect sen"er+ 2;ent8r$s e) { 7or (short i = 5; i J this.ax#ineChart1.&en1%um*amples; iBB) { this.ax#ineChart1.*et&enDalue(5+ i+ 95); ( this.ax#ineChart1.0ra?(); (
El resultado que se obtiene es el siguiente:

Manejo de la grilla de fondo


La grilla de fondo se puede ajustar para que tenga mas o menos divisiones, tanto horizontal como verticalmente. Para ello se utiliza la pestaa Grid de las pginas de propiedades del objeto:

CPKSoft Ingeniera
Drivers para comunicacin industrial. www.cpksoft.com.ar www.facebook.com/ cpksoftingenieria cpksoftingenieria@ hotmail.com tel: 54-11-1545788354 1990-2012 pg. 45/53

Soluciones de comunicacin industrial para Windows

La propiedad GridHLines define cuantas lneas horizontales tendr la grilla. Por su parte, GridVLines define la cantidad de lneas verticales. Obsrvese que se trata de cantidad de lneas, y no de cantidad de divisiones o de espacios entre lneas. Por este motivo, si se quisiera tener 60 divisiones para representar los ltimos 60 minutos o 60 segundos, se debe indicar un valor 59 en GridVLines. Por ejemplo, aqu se definieron 29 lneas horizontales y 59 lneas verticales. Con esto se obtienen 30 divisiones a lo alto y 60 divisiones a lo ancho:

Bandas de color
LineChart permite definir una zona o banda superior y otra inferior de diferentes colores que sirven para establecer visualmente si determinadas porciones del grfico de una o varias plumas se encuentran fuera de un rango. Para establecer estas zonas, se utiliza la pestaa Zones de la pgina de propiedades:

Cada zona se puede activar individualmente y su tamao se define en relacin al rango establecido para la pluma 1 (Pen1). Sus colores se establecen en la pestaa Color. En la imagen se estableci una zona verde de 0 a 35 y una zona roja de 65 a 100, teniendo en cuenta que la pluma 1 estaba definida con un rango de 0 a 100.
CPKSoft Ingeniera
Drivers para comunicacin industrial. www.cpksoft.com.ar www.facebook.com/ cpksoftingenieria cpksoftingenieria@ hotmail.com tel: 54-11-1545788354 1990-2012 pg. 46/53

Soluciones de comunicacin industrial para Windows

Gua rpida de propiedades, mtodos y eventos


Propiedades
BackColor GridColor GridWidth HighZoneLimit LowZoneLimit Pen1MaxValue Pen1Vertical Pen2Color Pen2NumSamples Pen3Active Pen3MinValue Pen3Width Pen4MaxValue Pen4Vertical BorderColor GridHLines HighZoneActive LowZoneActive Pen1Active Pen1MinValue Pen1Width Pen2MaxValue Pen2Vertical Pen3Color Pen3NumSamples Pen4Active Pen4MinValue Pen4Width BorderWidth GridVLines HighZoneColor LowZoneColor Pen1Color Pen1NumSamples Pen2Active Pen2MinValue Pen2Width Pen3MaxValue Pen3Vertical Pen4Color Pen4NumSamples

Mtodos
Draw() FillPen1(hmitalkcachepointer) FillPen3(hmitalkcachepointer) GetPenAverage(pen) ScrollPen(pen, value) ScrollPen2(value) ScrollPen4(value) ShowAboutPropertyPage() ShowGridPropertyPage() ShowPen2PropertyPage() ShowPen4PropertyPage() ShowZonesPropertyPage() FillPen(pen, hmitalkcachepointer) FillPen2(hmitalkcachepointer) FillPen4(hmitalkcachepointer GetPenValue(pen, sample) ScrollPen1(value) ScrollPen3(value) SetPenValue(pen, sample, value) ShowColorsPropertyPage() ShowPen1PropertyPage() ShowPen3PropertyPage() ShowPropertyPages()

Eventos
Click DblClick MouseDown MouseMove MouseUp

CPKSoft Ingenier a
Drivers para comunicacin industrial. www.cpksoft.com.ar www.facebook.com/ cpksoftingenieria cpksoftingenieria@ hotmail.com tel: 54-11-1545788354 1990-2012 pg. 47/53

Soluciones de comunicacin industrial para Windows

Distribucin de las aplicaciones


Archivos a ser distribuidos
Para distribuir una aplicacin escrita con NetTalk se deben copiar en la mquina de destino todos los archivos requeridos para que la misma se ejecute correctamente. Estos archivos son bsicamente el .exe de la aplicacin, el archivo NetTalk.dll del componente NetTalk, el archivo .tlk del driver, y el archivo de licencia runtime .lic del driver. Este ltimo es generado por el propietario de la licencia ilimitada en funcin de la identificacin de la maquina de destino. Adicionalmente, se deber constatar que la mquina de destino tenga previamente instalada la versin del Framework.NET requerida por la aplicacin. La distribucin del framework no es responsabilidad de la aplicacin, aunque sta podra venir acompaada de todos los ensamblados que se utilicen para asegurarse que no falten. No obstante, es comn que Windows ya tenga algn framework preinstalado. Por ejemplo, Windows 7 ya viene con el Framework 3.5. El componente NetTalk slo necesita la versin 2.0 del framework para correr sin problemas. Los archivos que deben ser distribuidos cuando se construye una aplicacin utilizando el componente NetTalk son:
[Su aplicacin].exe: El ejecutable de la aplicacin. NetTalk.dll: es el archivo del ensamblado que corresponde al componente NetTalk, quien acta como interfaz para manejar el driver XATOS.tlk desde aplicaciones .NET. XATOS.32.tlk: archivo del driver para plataforma de 32 bits. XATOS.64.tlk: archivo del driver para plataforma de 64 bits. XATOS.<PCId>.lic: es el archivo con la licencia runtime del driver para la mquina de destino cuyo nmero de identificacin es <PCId>. Esta licencia es vlida tanto para 32 bits como para 64 bits. RegNetTalk.exe: utilitario opcional para registrar la interfaz COM de NetTalk, en el caso en que se utiliz como objeto tipo COM desde la aplicacin. Se puede remplazar por un programa de instalacin propio que realice el registro del ensamblado o bien con una explicacin al cliente para que lo registre l mismo con regasm.exe.

Los archivos que deben ser distribuidos cuando se construye una aplicacin utilizando el componente HMITalk son:
CPKSoft Ingenier a
Drivers para comunicacin industrial. www.cpksoft.com.ar www.facebook.com/ cpksoftingenieria cpksoftingenieria@ hotmail.com tel: 54-11-1545788354 1990-2012

[Su aplicacin].exe: El ejecutable de la aplicacin. HMITK32.ocx y HMITK64.ocx: los archivos del ActiveX HMITalk, para 32 y 64 bits. Se recomienda distribuir ambas versiones, especialmente si la aplicacin se compil con la opcin Any CPU. XATOS.32.tlk: archivo del driver para plataforma de 32 bits. XATOS.64.tlk: archivo del driver para plataforma de 64 bits. XATOS.<PCId>.lic: es el archivo con la licencia runtime del driver para la mquina de destino cuyo nmero de identificacin es <PCId>. Esta licencia es vlida tanto para 32 bits como para 64 bits. GRID32.ocx: slo si la aplicacin de destino es 32 bits y se invocan en runtime alguno de los mtodos que muestran las pginas de propiedades del objeto HMITalk. LCHART32.ocx y LCHART64.ocx: slo si la aplicacin utiliza el objeto LineChart. Se recomienda distribuir ambas versiones. RegHMITalk.exe: utilitario opcional para registrar HMITalk. Se puede remplazar por un programa de instalacin propio que realice el registro o bien con una explicacin al cliente para que lo registre l mismo con el utilitario regsvr32.exe que corresponda a la plataforma de destino. AxInterop.HMITalkLib.dll / Interop.HMITalkLib.dll / AxInterop.LineChartLib.dll / Interop.LineChartLib.dll: requeridos por los objetos HMITalk y LineChart para su funcionamiento cuando se crean aplicaciones en .NET. Se sugiere utilizar los que genera automticamente el compilador en la carpeta bin\Release de la aplicacin. Se debe tener en cuenta que cuando se compila para 32 bits, 64 bits o AnyCPU, estos archivos mantienen los mismos nombres pero sus contenidos son diferentes, por lo que se debe tener la precaucin de distribuir las versiones correctas segn la CPU de destino.
pg. 48/53

Soluciones de comunicacin industrial para Windows

Generacin de licencias runtime


Explicacin del proceso
Cada vez que se deba correr una aplicacin escrita con NetTalk, cada driver utilizado que no sea gratuito chequear la existencia y validez de un archivo de licencia runtime de extensin .lic que debe ser creado previamente por el poseedor de la licencia ilimitada del driver. Los archivos de licencias runtime .lic son vlidos para un driver en particular y para una mquina en particular. El poseedor de la licencia ilimitada puede crear tantos archivos .lic como desee y para cada driver que se utilice en las aplicaciones se deber crear un .lic individual para cada mquina de destino donde deban correr esas aplicaciones. Para poder generar licencias runtime, se necesitan los siguientes elementos: Un nmero de licencia ilimitada, otorgado al adquirir el producto. Un nmero de identificacin de la mquina de destino, recolectado con GetPCId.exe. Un utilitario para generar los archivos .lic, MakeLic.exe entregado con el producto.

Obtencin del nmero de licencia ilimitada


Cuando usted adquiere una licencia ilimitada de cualquiera de nuestros drivers no gratuitos, entre los archivos entregados usted recibe un documento .pdf protegido con password conteniendo los datos de su licencia. Utilizando como clave el correo electrnico que nos suministr en su compra podr abrir el documento, que se ver como sigue:

CPKSoft Ingeniera
Drivers para comunicacin industrial. www.cpksoft.com.ar www.facebook.com/ cpksoftingenieria cpksoftingenieria@ hotmail.com tel: 54-11-1545788354 1990-2012 pg. 49/53

Soluciones de comunicacin industrial para Windows

En el centro del documento, encontrar su nmero de licencia ilimitada, que es nico para el driver adquirido y para su empresa. Este nmero debe ser bien custodiado por usted y jams revelado a sus clientes. Se utiliza para activar la herramienta de armado de licencias runtime.

Obtencin del PCId mediante el utilitario GetPCId.exe


Para obtener el PCId de una mquina con el utilitario GetPCId.exe slo se necesita correr este pequeo ejecutable que no requiere de ninguna instalacin previa en la mquina de su cliente. Al correrlo, el programa le mostrar una ventana donde le aparecer un nmero como se ve en la imagen siguiente:

El utilitario puede ser corrido por usted si es que tiene acceso a la computadora de destino, o bien puede enviarlo a su cliente para que sea l quien lo corra. En cualquier caso, usted deber hacerse del nmero obtenido ya que luego le ser necesario para generar la licencia runtime correspondiente a esa mquina. El utilitario deliberadamente no muestra ninguna referencia a CPKSoft ni a NetTalk HMITalk. El nmero obtenido es vlido para correr aplicaciones tanto de 32 bits como de 64 bits. En la ventana mostrada por GetPCId, el nmero completo ya aparece pre-seleccionado para que sea fcil copiarlo y pegarlo en un correo o directamente en el utilitario MakeLic.exe de generacin de licencias.

Obtener PCId por cdigo desde la aplicacin


Una forma alternativa de obtener el PCId de una mquina es llamar al mtodo GetMachineKey() de NetTalk o bien consultar la propiedad PCId desde componente NetTalk. La aplicacin debe estar corrindose en la mquina cuyo PCId se desee obtener. De esta forma, la obtencin del PCId puede hacerse sin la intervencin directa del cliente. Usted puede hacer que la aplicacin chequee la existencia del archivo de licencia XATOS.<PCId>.lic, y en caso de no encontrarse, le despliegue un mensaje al cliente mostrando el PCId con instrucciones para hacrselo llegar a usted.

Creacin del archivo .lic


Para generar las licencias runtime a partir de su nmero de licencia ilimitada y del nmero de identificacin de la mquina de destino, se utiliza el programa MakeLic.exe que se distribuye nicamente con las versiones licenciadas de cada driver. Este programa no est presente en las versiones de evaluacin y prueba de los drivers.
CPKSoft Ingeniera
Drivers para comunicacin industrial. www.cpksoft.com.ar www.facebook.com/ cpksoftingenieria cpksoftingenieria@ hotmail.com tel: 54-11-1545788354 1990-2012 pg. 50/53

Los archivos generados de extensin .lic y su nombre est formado por el nombre del driver licenciado y el PCId de la mquina de destino, como en el ejemplo siguiente: XMODBTCP.M73711E-3ACA5FD-1268560-00A3A10.lic. Ese archivo .lic es vlido para utilizar sin restricciones al driver XMODBTCP en una mquina cuyo PCId sea M73711E-3ACA5FD-1268560-00A3A10. El contenido del archivo consiste en informacin interna sobre el driver, datos del creador del mismo, fecha de expiracin (si la tiene) y un cdigo de validacin. La interfaz del utilitario MakeLic, que no se debe distribuir a los usuarios, es la siguiente:

Soluciones de comunicacin industrial para Windows

Este utilitario se debe utilizar para cada driver y para cada mquina de destino en la que se deba correr la aplicacin generada con NetTalk o HMITalk. Los archivos .lic resultantes deben acompaar a la aplicacin a la mwuina de destino correspondiente, y se deben copiar en la misma carpeta donde residan los .tlk de cada driver.

CPKSoft Ingeniera
Drivers para comunicacin industrial. www.cpksoft.com.ar www.facebook.com/ cpksoftingenieria cpksoftingenieria@ hotmail.com tel: 54-11-1545788354 1990-2012 pg. 51/53

Soluciones de comunicacin industrial para Windows

Especificaciones tcnicas del driver XATOS


Informacin general
XATOS driver allows you to connect to the ATOS Plc's to computer by RS-485 with communication protocol APR03. This driver was developed by Main Ingenieros Ltda., Chile.

Listado de comandos
PBYT Read a byte
Descripcin del comando: Request Byte information from Slave device. Mtodos usados para ejecutar este comando: Analog Input (ReadNumericValues) or Digital Input (ReadBooleanValues) Nmero de puntos permitidos para este comando: 1 Significado del parmetro P0: Station number (1-31) Significado del parmetro P1: 5 Significado del parmetro P2: Adress to read

PBLOCW Read a Memory Block (Words)


Descripcin del comando: Request Slave device Memory Block (Words). Mtodos usados para ejecutar este comando: Analog Input (ReadNumericValues) Nmero de puntos permitidos para este comando: 1-256 Significado del parmetro P0: Station number (1-31) Significado del parmetro P1: 7 Significado del parmetro P2: Adress to read

PBLOCB Read a Memory Block (Bytes)


Descripcin del comando: Request Slave device Memory Block (Bytes). Mtodos usados para ejecutar este comando: Analog Input (ReadNumericValues) or Digital Input (ReadBooleanValues) Nmero de puntos permitidos para este comando: 1-256 Significado del parmetro P0: Station number (1-31) Significado del parmetro P1: 8 Significado del parmetro P2: Adress to read

CPKSoft Ingenier a
Drivers para comunicacin industrial. www.cpksoft.com.ar www.facebook.com/ cpksoftingenieria cpksoftingenieria@ hotmail.com tel: 54-11-1545788354 1990-2012

VAR Write a variable (WORD)


Descripcin del comando: Write Slave device variable value (Word). Mtodos usados para ejecutar este comando: Analog Output (WriteNumericValues)
pg. 52/53

Soluciones de comunicacin industrial para Windows

Nmero de puntos permitidos para este comando: 1 Significado del parmetro P0: Station number (1-31) Significado del parmetro P1: 0 Significado del parmetro P2: Adress to read

BYT Write a byte


Descripcin del comando: Write Byte information from Slave device. Mtodos usados para ejecutar este comando: Analog Output (WriteNumericValues) or Digital Output (WriteBooleanValues) Nmero de puntos permitidos para este comando: 1 Significado del parmetro P0: Station number (1-31) Significado del parmetro P1: 3 Significado del parmetro P2: Adress to read

Mensajes de error
La siguiente lista muestra los mensajes de error que pueden ser retornados por el driver en la propiedad 'Status' durante una comunicacin fallida. [1005] DRIVER (Internal): Invalid driver stage [1300] PROTOCOL (Timeout): No answer Checksum error Internal error:Invalid stage P0:Invalid Adress (1-31) P1:Invalid command SIZE:Demasiados Datos (max.:1) SIZE:Demasiados Datos (max.:8) SIZE:Too many elements (max.:1)

Equipos soportados
Este driver se puede comunicar con estos equipos, aunque no necesariamente est limitado a los que aparecen en esta lista: ATOS MPC-1600 PLC ATOS MPC-2002 PLC ATOS MPC-4004 PLC

CPKSoft Ingenier a
Drivers para comunicacin industrial. www.cpksoft.com.ar www.facebook.com/ cpksoftingenieria cpksoftingenieria@ hotmail.com tel: 54-11-1545788354 1990-2012 pg. 53/53