You are on page 1of 59

Soluciones de comunicacin

industrial para Windows

Manual del Driver XNAIS


NAIS Matsushita MEWTOCOL-COM Protocol Driver

El driver XNAIS 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 XNAIS forma parte de un conjunto de

Cuando Ud. adquiere una licencia de nuestro

ms de 125 drivers para comunicacin serie y

driver XNAIS, recibe un nmero de licencia

tcp/ip desarrollados por CPKSoft Ingeniera,

ilimitada y un utilitario manejador de licencias que

empresa argentina con presencia y experiencia

le va a permitir crear licencias runtime para sub-

en el sector de comunicaciones industriales

licenciar el driver a sus propios clientes, tantos

desde el ao 1990.

como necesite y a cualquier nmero de

Al igual que todos los dems drivers de CPKSoft

computadoras de destino, dentro y fuera de su

Ingeniera, el driver XNAIS se maneja a travs de

empresa. Las licencias ilimitadas no tienen ningn

un componente nativo para .NET llamado NetTalk

lmite en la cantidad de licencias runtime que se

o bien con un ActiveX/OCX OLE/COM llamado

pueden crear a partir de ellas, ni en la cantidad de

HMITalk. Ambos son totalmente abiertos y se

equipos con los que se podrn comunicar sus

distribuyen junto con cada driver. Estos

aplicaciones, ni en la cantidad de puntos o tags

CPKSoft Ingeniera

componentes multi-driver ofrecen una interfaz

que podrn ser accedidos desde su driver, ni

Drivers para comunicacin


industrial.

nica para manejar cualquier driver de manera

ninguna otra limitacin caracterstica de otros

idntica desde aplicaciones escritas con

productos similares. Es un producto ideal tanto

cualquiera de los lenguajes soportados por

para integradores como para usuarios finales.

www.cpksoft.com.ar
www.facebook.com/
cpksoftingenieria
cpksoftingenieria@
hotmail.com
tel: 54-11-1545788354

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.

1990-2013
pg. 1/59

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

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

1990-2013
pg. 2/59

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 XNAIS.............................................................................. 52


Informacin general..............................................................................................................................52
Listado de comandos ...........................................................................................................................53
Read one bit ON/OFF info ................................................................................................................................ 53
Read 16 block bits ON/OFF info ....................................................................................................................... 53
Read multiple word unit data value ................................................................................................................... 54
Read multiple Timer/Counter preset value ........................................................................................................ 55
Read multiple Timer/Counter elapsed value ..................................................................................................... 55
Set one bit ON/OFF info ................................................................................................................................... 56
Set multiple word unit data value ...................................................................................................................... 56
Set multiple Timer/Counter preset value ........................................................................................................... 57
Set multiple Timer/Counter elapsed value ........................................................................................................ 57

Mensajes de error ................................................................................................................................58


Equipos soportados..............................................................................................................................59

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

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:

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

XNAIS.*.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 XNAIS.32.tlk corresponde a la versin para plataformas de
destino de 32 bits y el archivo XNAIS.64.tlk corresponde a la versin para plataformas de
destino de 64 bits.
XNAIS.Castellano.pdf: es el manual del driver en espaol.
XNAIS.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 XNAIS.*.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 XNAIS.*.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.

1990-2013
pg. 4/59

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 XNAIS.
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-2013
pg. 5/59

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

Configuracin de una conexin ethernet

Drivers para comunicacin


industrial.
www.cpksoft.com.ar
www.facebook.com/
cpksoftingenieria
cpksoftingenieria@
hotmail.com
tel: 54-11-1545788354

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.

1990-2013
pg. 6/59

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 XNAIS 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 XNAIS.
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

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.

1990-2013
pg. 7/59

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.

CPKSoft Ingeniera
Drivers para comunicacin
industrial.

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.

www.cpksoft.com.ar
www.facebook.com/
cpksoftingenieria
cpksoftingenieria@
hotmail.com
tel: 54-11-1545788354
1990-2013
pg. 8/59

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

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:

1990-2013
pg. 9/59

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-2013
pg. 10/59

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

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 = "Manejador de comunicaciones";
this.netTalk1.Language = NetTalk.Languages.Castellano;
this.netTalk1.PanelMode = NetTalk.PanelModes.Hexadecimal;
}

1990-2013
pg. 11/59

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:

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

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.

(*) 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:

1990-2013
pg. 12/59

Soluciones de comunicacin
industrial para Windows

Boolean Connect(
String PortName,
Int32 BaudRate,
Parity Parity,
Int32 DataBits,
StopBits StopBits,
Int32 TimeOut,
Int32 T1Delay,
Int32 T2Delay,
Int32 T3Delay,
Boolean RtsEnable,
Boolean DtrEnable)
En el cdigo siguiente se muestra un ejemplo de llamado a esta funcin:
this.netTalk1.Connect("COM2", 9600, System.IO.Ports.Parity.None, 8,
System.IO.Ports.StopBits.One, 2000, 0, 0, 0, true, false);
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 URL 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):

Boolean Connect(
String Address,
Int32 PortNum,
TcpIpProtocolType Protocol,
Int32 TimeOut,
Int32 T3Delay)
En el cdigo siguiente se muestra un ejemplo de llamado a esta funcin:
this.netTalk1.Connect("95.154.201.59", 8010, NetTalk.TcpIpProtocolType.Tcp, 2000,
0);
CPKSoft Ingenier a
Drivers para comunicacin
industrial.
www.cpksoft.com.ar
www.facebook.com/
cpksoftingenieria
cpksoftingenieria@
hotmail.com
tel: 54-11-1545788354

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:
private void btnAbrirConexion_Click(object sender, EventArgs e)
{
if (!this.netTalk1.IsConnected)

1990-2013
pg. 13/59

Soluciones de comunicacin
industrial para Windows

{
if (!this.netTalk1.Connect("127.0.0.1", 502, NetTalk.TcpIpProtocolType.Tcp,
2000, 0))
{
MessageBox.Show("Error al abrir conexin: " + this.netTalk1.Status);
}
}
else MessageBox.Show("Ya hay una conexin 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:
private void btnCerrarConexion_Click(object sender, EventArgs e)
{
if (this.netTalk1.IsConnected)
{
if (!this.netTalk1.Disconnect()
{
MessageBox.Show("Error al cerrar conexin: " + this.netTalk1.Status);
}
}
else MessageBox.Show("No hay una conexin 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.

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

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.

1990-2013
pg. 14/59

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 Boolean ReadNumericValues/ReadBooleanValues(


String DriverName,
Int32 NumPoints,
String P0,
String P1,
String P2,
String P3,
String P4,
String P5,
String P6,
String P7,
String P8,
String P9,
bool Wait)
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 XNAIS, en cuyo caso NetTalk buscar por defecto el archivo
XNAIS.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\XNAIS.32.tlk (si la plataforma de destino va a ser de 32 bits),
c:\MiAplicacin\Drivers\XNAIS.64.tlk (si la plataforma de destino va a ser de 64 bits) o tambin
c:\MiAplicacin\Drivers\XNAIS. 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.

CPKSoft Ingenier a

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.

Drivers para comunicacin


industrial.

Lecturas con espera

www.cpksoft.com.ar
www.facebook.com/
cpksoftingenieria
cpksoftingenieria@
hotmail.com
tel: 54-11-1545788354

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.

1990-2013
pg. 15/59

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
XNAIS.
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:

private void btnLeerConBloqueo_Click(object sender, EventArgs e)


{
if (this.netTalk1.ReadNumericValues("XMODBTCP", 16, "1", "3", "0", "", "",
"", "", "", "", "", true))
{
MessageBox.Show("Valor del registro 0: " +
this.netTalk1.PointValue(0).ToString());
}
else MessageBox.Show("Error leyendo registro: " + this.netTalk1.Status);
}

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

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.

1990-2013
pg. 16/59

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:

private void btnLeerSinBloqueo_Click(object sender, EventArgs e)


{
if (!this.netTalk1.ReadNumericValues("XMODBTCP", 16, "1", "3", "0", "", "",
"", "", "", "", "", false))
{
MessageBox.Show("Error encolando pedido: " + this.netTalk1.Status);
}
}

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

private void netTalk1_Finished(object sender, bool finishedok)


{
if (finishedok)
{
MessageBox.Show("Valor del registro: " +
this.netTalk1.PointValue(0).ToString());
}
else MessageBox.Show("Error leyendo registro: " + this.netTalk1.Status);
}
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.

1990-2013
pg. 17/59

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:

private void btnEscritura_Click(object sender, EventArgs e)


{
this.netTalk1.PointValue(0, 100);
if (this.netTalk1.WriteNumericValues("XMODBTCP", 1, "1", "6", "0", "", "",
"", "", "", "", "", true))
{
MessageBox.Show("Registro escrito OK");
}
else MessageBox.Show("Error escribiendo registro: " + this.netTalk1.Status);
}
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

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:

1990-2013
pg. 18/59

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-2013
pg. 19/59

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.

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

www.cpksoft.com.ar
www.facebook.com/
cpksoftingenieria
cpksoftingenieria@
hotmail.com
tel: 54-11-1545788354
1990-2013
pg. 20/59

Soluciones de comunicacin
industrial para Windows

Gua rpida de propiedades, mtodos y eventos


Propiedades

CPKSoft Ingeniera

Nombre de la propiedad

Tipo

Descripcin

CheckLicense

Short

CommBaudRate

Int32

CommDataBits

Int32

CommDtrEnable

Boolean

CommParity

Parity

CommPortName

String

CommRtsEnable

Boolean

CommStopBits

StopBits

CommT1Delay

Int32

CommT2Delay

Int32

CommT3Delay

Int32

CommTimeOut

Int32

DateTimeFormat

String

DriverDescription

String

DriverDeveloper

String

DriverLocked

Boolean

DriverName

String

DriverNumPoints

Int32

DriverP0

String

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

Drivers para comunicacin


industrial.
www.cpksoft.com.ar
www.facebook.com/
cpksoftingenieria
cpksoftingenieria@
hotmail.com
tel: 54-11-1545788354
1990-2013

pg. 21/59

Soluciones de comunicacin
industrial para Windows

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

DriverP1

String

DriverP2

String

DriverP3

String

DriverP4

String

DriverP5

String

DriverP6

String

DriverP7

String

DriverP8

String

DriverP9

String

DriverStatus
DriverVersion

String
String

EnableAbortCommunicationButton

Boolean

EnableClearPanelButton

Boolean

EnableCloseConnectionButton

Boolean

EnableFreezeUnfreezePanelButton

Boolean

EnableReconnectButton

Boolean

EnableSavePanelButton

Boolean

EnableSetLinesToSaveButton

Boolean

EnableShowHidePanelButton

Boolean

FireEvents
FreezePanel

Boolean
Boolean

FreezeWhenDoubleClick

Boolean

IsCommunicating

Boolean

IsConnected

Boolean

Language

Languages

LastDriverStatus

String

LastException

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

1990-2013
pg. 22/59

Soluciones de comunicacin
industrial para Windows

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

LicenseType

String

LogPanel

Boolean

LogPanelFilename

String

MinimizeDoEventsCalls

Boolean

MonitorMode

MonitorModes

OnErrorReconnect

Boolean

PanelFont

Font

PanelLines

Int16

PanelMode

PanelModes

PanelText

String

PanelWordWrap

Boolean

PCId

String

SleepMilliseconds

int

ShowConnectionStatus

Boolean

ShowElapsedTimeBar

Boolean

ShowPanel

Boolean

ShowToolTips

Boolean

SilentMode

Boolean

Status

String

StatusBarFont

Font

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.
Modifica la base de tiempo de espera
interno que utiliza el objeto para
dormirse a la espera de chequear si
lleg una respuesta. El tiempo por
defecto es de 5 milisegundos.
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

1990-2013
pg. 23/59

Soluciones de comunicacin
industrial para Windows

TcpIpAddress

String

TcpIpHiddenAddress

String

TcpIpPortNum

Int32

TcpIpProtocol

TcpIpProtocolType

TcpIpT3Delay

Int32

TcpIpTimeOut

Int32

Text

String

TextFont

Font

UseTemporaryDrivers

Boolean

en la barra del men.


Direccin IP URL utilizada en la
ltima conexin tcp/ip abierta.
Si no est vaca, es la direccin IP
que ser realmente utilizada en las
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

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

Nombre del mtodo


AbortCommunication

Valor retornado
Boolean

AsyncPing

Boolean

AsyncReadAnalog

Boolean

AsyncReadBinary

Boolean

AsyncWriteAnalog

Boolean

AsyncWriteBinary

Boolean

ClearPanel
Connect

void
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

1990-2013
pg. 24/59

Soluciones de comunicacin
industrial para Windows

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

Disconnect

Boolean

GetConnectionParameters

String

GetDriverCheckLicense

String

GetDriverDescription

String

GetDriverDeveloper

String

GetDriverLicenseType

String

GetDriverParameters

String

GetDriverVersion

String

GetLastPointValue

double

GetMachineKey

String

GetPointDate

DateTime

GetPointTagName

String

GetPointText

String

GetPointValue

Double

GetPointValueChanged

Boolean

GetRunningBitMode

String

InjectSimulatedReply

void

LastPointValue

double/ Boolean

LogPanelHeader

void

Ping
PointDate

Boolean
DateTime/Boolean

PointTagName

String/Boolean

conexin serie o tcp/ip.


Fuerza la desconexin de una
conexin abierta.
Devuelve un texto descriptivo con los
parmetros utilizados en la ltima
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

1990-2013
pg. 25/59

Soluciones de comunicacin
industrial para Windows

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

PointText

String/Boolean

PointValue

Double/Boolean

PointTexts
PointValues
PointValueChanged

String
String
Boolean

ReadAnalog

Boolean

ReadBinary

Boolean

ReadBooleanValues
ReadNumericValues
Reconnect

Boolean
Boolean
Boolean

ResetLastDriverStatus

void

ResetLastException

void

SavePanel

Boolean

SetAbortCommunicationFlag

void

SerialConnect

Boolean

SetLastPointValue

Boolean

SetPointDate

Boolean

SetPointTagName

Boolean

SetPointText

Boolean

SetPointValue

Boolean

SetPointValueChanged

Boolean

SyncPing

Boolean

SyncReadAnalog

Boolean

SyncReadBinary

Boolean

SyncWriteAnalog

Boolean

SyncWriteBinary

Boolean

TcpIpConnect

Boolean

UnloadDriver

void

SetPointTagName.
Unificacin de GetPointText y
SetPointText.
Unificacin de GetPointValue y
SetPointValue.
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.
Solicita al objeto que aborte lo antes
posible la comunicacin en curso,
devolviendo el control a la aplicacin
sin aguardar a que la misma termine.
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

1990-2013
pg. 26/59

Soluciones de comunicacin
industrial para Windows

Wait

void

WriteAnalog

Boolean

WriteBinary

Boolean

WriteBooleanValues
WriteNumericValues
WriteToPanel

Boolean
Boolean
void

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.
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

Disconnected
Finished

finishedok

NewPanelMessage

message

User

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.

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

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

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

1990-2013
pg. 28/59

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.

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

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.

1990-2013
pg. 29/59

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-2013

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/59

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-2013
pg. 31/59

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

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.

1990-2013
pg. 32/59

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

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:

1990-2013
pg. 33/59

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

CPKSoft Ingeniera
Drivers para comunicacin
industrial.

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:

www.cpksoft.com.ar
www.facebook.com/
cpksoftingenieria
cpksoftingenieria@
hotmail.com
tel: 54-11-1545788354
1990-2013
pg. 34/59

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.

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.

www.cpksoft.com.ar
www.facebook.com/
cpksoftingenieria
cpksoftingenieria@
hotmail.com
tel: 54-11-1545788354
1990-2013
pg. 35/59

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.

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

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:

private void axHMITalk1_OnPointValueChanged(object sender,


AxHMITalkLib._DHMITalkEvents_OnPointValueChangedEvent e)
{
switch (e.point)
{

1990-2013
pg. 36/59

Soluciones de comunicacin
industrial para Windows

case 0: this.label1.Text =
this.axHMITalk1.get_PointValue(e.point).ToString(); break;
case 1: this.label2.Text =
this.axHMITalk1.get_PointValue(e.point).ToString(); break;
case 2: this.label3.Text =
this.axHMITalk1.get_PointValue(e.point).ToString(); 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:

private void axHMITalk1_OnSuccessfullyReceived(object sender, EventArgs e)


{
this.label1.Text = this.axHMITalk1.get_PointValue(0).ToString();
this.label2.Text = this.axHMITalk1.get_PointValue(1).ToString();
this.label3.Text = this.axHMITalk1.get_PointValue(2).ToString();
}
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:

private void axHMITalk1_OnErrorReceiving(object sender, EventArgs e)


{
MessageBox.Show(this.axHMITalk1.DriverStatus);
}
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

private void button1_Click(object sender, EventArgs e)


{
this.axHMITalk1.Trigger();
}
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

1990-2013
pg. 37/59

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:

private void button2_Click(object sender, EventArgs e)


{
if (this.axHMITalk1.TriggerAndWait())
{
this.label1.Text = this.axHMITalk1.get_PointValue(0).ToString();
this.label2.Text = this.axHMITalk1.get_PointValue(1).ToString();
this.label3.Text = this.axHMITalk1.get_PointValue(2).ToString();
}
else MessageBox.Show(this.axHMITalk1.DriverStatus);
}
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-2013
pg. 38/59

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:

private void button3_Click(object sender, EventArgs e)


{
this.axHMITalk2.set_PointValue(0, 100.0);
this.axHMITalk2.Trigger();
}
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:

private void axHMITalk2_OnErrorSending(object sender, EventArgs e)


{
MessageBox.Show(this.axHMITalk2.DriverStatus);
}
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

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

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

1990-2013
pg. 39/59

Soluciones de comunicacin
industrial para Windows

ScanInterval
ScanStart
TcpIpLocalPort
TcpIpRemotePort

ScanPriority
ScanStopAfter
TcpIpProtocol
TcpIpTimeout

ScanRetries
TcpIpEnabled
TcpIpRemoteAddress
TimerInterval

Mtodos

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

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)

1990-2013
pg. 40/59

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

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

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

1990-2013
pg. 41/59

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-2013
pg. 42/59

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-2013
pg. 43/59

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:

private void button1_Click(object sender, EventArgs e)


{
this.axLineChart1.ScrollPen1(50);
this.axLineChart1.Draw();
}
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-2013

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/59

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:

private void button2_Click(object sender, EventArgs e)


{
for (short i = 0; i < this.axLineChart1.Pen1NumSamples; i++)
{
this.axLineChart1.SetPenValue(0, i, 50);
}
this.axLineChart1.Draw();
}
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-2013
pg. 45/59

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-2013
pg. 46/59

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-2013
pg. 47/59

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 XNAIS.tlk desde aplicaciones .NET.
XNAIS.32.tlk: archivo del driver para plataforma de 32 bits.
XNAIS.64.tlk: archivo del driver para plataforma de 64 bits.
XNAIS.<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-2013

[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.
XNAIS.32.tlk: archivo del driver para plataforma de 32 bits.
XNAIS.64.tlk: archivo del driver para plataforma de 64 bits.
XNAIS.<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/59

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-2013
pg. 49/59

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 XNAIS.<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

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:

1990-2013
pg. 50/59

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-2013
pg. 51/59

Soluciones de comunicacin
industrial para Windows

Especificaciones tcnicas del driver XNAIS


Informacin general

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

XNAIS driver allows you to connect to PANASONIC NAIS MATSUSHITA PLCs which support the
OPEN MEWTOCOL-COM protocol to communicate with a PC.
<MEWTOCOL Format>
- Master/Slave communication(Half duplex communication)*4
- ASCII strings (One frame is up to 118 characters.)*5
- 19200 bps (or 9600 bps *1 *3)
- 8 bit data length (or 7 bit *2 *3)
- 1 stop bit fixed *3
- Odd parity fixed *3
- Cr (Carriage Return) fixed *3
- (*1) Dip switch configurable, located next to programming port for FP1, FPM, FP3, FP10SH.
For FP0 it is software configurable. The default for FP0 is 9600bps.
- (*2) Configurable in PLC system register through the programming software (NPSTGR/FPsoft) using the programming port.
- (*3) Configurable in PLC system register through the programming software (NPSTGR/FPsoft) using the secondary port.
- (*4) If you want the PLC to send some alarm signals or any other signals while the PLC is a
slave use the FP3 CCU module when it's one to one communications or FP3 MEWNET-W.
When it's one to N communication, it is duplex communications and has MEWTOCOL-DAT
which will allow the PLC to send some command to a master station (computer typically).
- (*5) If you need to send or receive more than 118 characters in one frame, use the delimiter
so that you can ask the PLC to keep sending the continuous data. The other way is that you
can keep sending 118 character frame repeatedly as one frame.
<MEWTOCOL Capabilities> Here is a list of what this protocol can do.
- Read one bit ON/OFF info. (Input, Output, Timer, Counter, Internal relay)
- Read 16 block bits ON/OFF info. (Input, Output, Internal relay)
- Read multiple word unit data value (DT, FL, LD)
- Read multiple Timer/Counter preset value
- Read multiple Timer/Counter elapsed value
- Set one bit ON/OFF (Output, Internal relay)
- Set multiple word unit data value (DT, FL, LD)
- Set multiple Timer/Counter preset value
- Set multiple Timer/Counter elapsed value
<Applicable ports and Modules>
- FP1 -------- Programming port (RS422) Secondary port (RS232C), configurable by PLC
through software
- FPM ------- Programming port (RS232C) Secondary port (RS232C), configurable by PLC
through software
- FP3 -------- Programming port (RS422)
- FP10SH -- Programming port (RS232C) Secondary port (RS232C), configurable by PLC
through software
- FP3/FP10SH modules --Computer Communication Unit(AFP3462) (RS232C) Computer
Communication Net Unit ( AFP3463) (RS485) Remote Slave Unit (AFP3741, AFP3743)
(RS422 port) MEWNET-H (AFP3700) (RS232C, and through the network) MEWNET-W
(AFP3720) (Through the network) MEWNET-P (AFP3710) (Through the network) Modbus
Unit (AFP3492, AFP3413) (RS232C, RS485)
<Recommended Format>
- RS232C
- 19200 bps (or 9600 bps *1*3 )
- 8 bit data length (or 7 bit *2*3 )
- 1 stop bit fixed *3
- Odd parity fixed *3
- Cr (Carriage Return) fixed *3
- (*1) Dip switch selectable, located next to programming port.
- (*2) Configurable in PLC system register through the programming software(NPST-GR)
using the programming port.

1990-2013
pg. 52/59

Soluciones de comunicacin
industrial para Windows

- (*3) Configurable in PLC system register through the programming software(NPST-GR) using
the secondary port.
<MEWTOCOL Procedure> Computer sends a COMMAND to PLC as an ASCII string. Then the
PLC automatically returns the RESPONSE based on the COMMAND. PLC mode (RUN/PROG
)does not effect the response. Input information shall be returned as all "0" in PROG mode.

Listado de comandos
Read one bit ON/OFF info
Descripcin del comando:
Reads the contents (ON/OFF) stored in one element of type Input, Output, Timer, Counter and
Internal or Link relay.
Mtodos usados para ejecutar este comando:
Digital Input (ReadBooleanValues)
Nmero de puntos permitidos para este comando:
1
Significado del parmetro P0:
PLC station number (1-32)
Significado del parmetro P1:
0
Significado del parmetro P2:
Indicates the type of bit:
- 0 = Input (X)
- 1 = Output (Y)
- 2 = Internal relay (R)
- 3 = Link relay (L)
- 4 = Timer (T)
- 5 = Counter (C)
Significado del parmetro P3:
Indicates if the BCC must be ignored:
0 = Use BCC
1 = Ignore BCC (two asterisks '**' will substitute it)
Significado del parmetro P6:
Indicates the contact number:
- Must be a 4-digit number
- First 3 digits are decimal digits (0-9)
- Last digit is an hexadecimal digit (0-F)
- Examples: 0003, 104F, 024E, 0047, etc.
Valores que son devueltos:
Valor del punto (0) = The requested bit value (0=OFF/1=ON)

Read 16 block bits ON/OFF info

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

Descripcin del comando:


Reads the contents (ON/OFF) stored in several consecutive Inputs (X), Outputs (Y), Internal
Relays (R) or Link Relays (L).
Mtodos usados para ejecutar este comando:
Digital Input (ReadBooleanValues)
Nmero de puntos permitidos para este comando:
1-432
Significado del parmetro P0:
PLC station number (1-32)
Significado del parmetro P1:
1
Significado del parmetro P2:
Indicates the type of bits:
- 0 = Inputs (X)
- 1 = Outputs (Y)
- 2 = Internal relays (R)
- 3 = Link relays (L)

1990-2013
pg. 53/59

Soluciones de comunicacin
industrial para Windows

Significado del parmetro P3:


Indicates if the BCC must be ignored:
0 = Use BCC
1 = Ignore BCC (two asterisks '**' will substitute it)
Significado del parmetro P6:
Indicates the starting data address:
- Must be a 4-digit number
- All digits are decimal digits (0-9)
- Examples: 0500, 0186, 0020, etc.
Significado del parmetro P7:
Indicates the ending data address:
- Must be equal or greater than the starting data address and return enough values as
requested in DriverNumPoints
- Must be a 4-digit number
- All digits are decimal digits (0-9)
- Examples: 0501, 0187, 0021, etc.
Valores que son devueltos:
Valor del punto (0) = Bit 0 of first data word returned
Valor del punto (1) = Bit 1 of first data word returned
Valor del punto (2) = Bit 2 of first data word returned
- ...
Valor del punto (16) = Bit 0 of second data word returned
- ...

Read multiple word unit data value

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

Descripcin del comando:


Reads the contents stored in words of type DT, FL or LD.
Mtodos usados para ejecutar este comando:
Analog Input (ReadNumericValues)
Nmero de puntos permitidos para este comando:
1-27
Significado del parmetro P0:
PLC station number (1-32)
Significado del parmetro P1:
0
Significado del parmetro P2:
Indicates the word type:
- 0 = (DT)
- 1 = (FL) (Available for FP3/FP10)
- 2 = (LD) (Available for FP3/FP10)
Significado del parmetro P3:
Indicates if the BCC must be ignored:
0 = Use BCC
1 = Ignore BCC (two asterisks '**' will substitute it)
Significado del parmetro P6:
Indicates the starting word address:
- Must be a 5-digit number
- All digits are decimal digits (0-9)
- Examples: 00500, 00186, 00020, etc.
Significado del parmetro P7:
Indicates the ending word address:
- Must be equal or greater than the starting data address and return enough values as
requested in DriverNumPoints
- Must be a 5-digit number
- All digits are decimal digits (0-9)
- Examples: 00501, 00187, 00021, etc.
Valores que son devueltos:
Valor del punto (0) = First word returned
Valor del punto (1) = Second word returned
- ...

1990-2013
pg. 54/59

Soluciones de comunicacin
industrial para Windows

Read multiple Timer/Counter preset value


Descripcin del comando:
Reads the contents stored in timer/counter preset values.
Mtodos usados para ejecutar este comando:
Analog Input (ReadNumericValues)
Nmero de puntos permitidos para este comando:
1-27
Significado del parmetro P0:
PLC station number (1-32)
Significado del parmetro P1:
1
Significado del parmetro P2:
3
Significado del parmetro P3:
Indicates if the BCC must be ignored:
0 = Use BCC
1 = Ignore BCC (two asterisks '**' will substitute it)
Significado del parmetro P6:
Indicates the starting timer address:
- Must be a 4-digit number
- All digits are decimal digits (0-9)
- Examples: 0500, 0186, 0020, etc.
Significado del parmetro P7:
Indicates the ending timer address:
- Must be equal or greater than the starting data address and return enough values as
requested in DriverNumPoints
- Must be a 4-digit number
- All digits are decimal digits (0-9)
- Examples: 0501, 0187, 0021, etc.
Valores que son devueltos:
Valor del punto (0) = First timer returned
Valor del punto (1) = Second timer returned
- ...

Read multiple Timer/Counter elapsed value

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

Descripcin del comando:


Reads the contents stored in timer/counter elapsed values.
Mtodos usados para ejecutar este comando:
Analog Input (ReadNumericValues)
Nmero de puntos permitidos para este comando:
1-27
Significado del parmetro P0:
PLC station number (1-32)
Significado del parmetro P1:
2
Significado del parmetro P2:
3
Significado del parmetro P3:
Indicates if the BCC must be ignored:
0 = Use BCC
1 = Ignore BCC (two asterisks '**' will substitute it)
Significado del parmetro P6:
Indicates the starting timer address:
- Must be a 4-digit number
- All digits are decimal digits (0-9)
- Examples: 0500, 0186, 0020, etc.
Significado del parmetro P7:
Indicates the ending timer address:
- Must be equal or greater than the starting data address and return enough values as
requested in DriverNumPoints
- Must be a 4-digit number
pg. 55/59

Soluciones de comunicacin
industrial para Windows

- All digits are decimal digits (0-9)


- Examples: 0501, 0187, 0021, etc.
Valores que son devueltos:
Valor del punto (0) = First timer returned
Valor del punto (1) = Second timer returned
- ...

Set one bit ON/OFF info


Descripcin del comando:
Sets the contents (ON/OFF) stored in one element of type Output or Internal relay.
Mtodos usados para ejecutar este comando:
Digital Output (WriteBooleanValues)
Nmero de puntos permitidos para este comando:
1
Significado del parmetro P0:
PLC station number (1-32)
Significado del parmetro P1:
0
Significado del parmetro P2:
Indicates the type of bit:
- 1 = Output (Y)
- 2 = Internal relay (R)
Significado del parmetro P3:
Indicates if the BCC must be ignored:
0 = Use BCC
1 = Ignore BCC (two asterisks '**' will substitute it)
Significado del parmetro P6:
Indicates the contact number:
- Must be a 4-digit number
- First 3 digits are decimal digits (0-9)
- Last digit is an hexadecimal digit (0-F)
- Examples: 0003, 104F, 024E, 0047, etc.
Valores que son enviados:
Valor del punto (0) = The new bit value (0=OFF/1=ON)

Set multiple word unit data value

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

Descripcin del comando:


Sets the contents stored in words of type DT, FL or LD.
Mtodos usados para ejecutar este comando:
Analog Output (WriteNumericValues)
Nmero de puntos permitidos para este comando:
1-27
Significado del parmetro P0:
PLC station number (1-32)
Significado del parmetro P1:
0
Significado del parmetro P2:
Indicates the word type:
- 0 = (DT)
- 1 = (FL) (Available for FP3/FP10)
- 2 = (LD) (Available for FP3/FP10)
Significado del parmetro P3:
Indicates if the BCC must be ignored:
0 = Use BCC
1 = Ignore BCC (two asterisks '**' will substitute it)
Significado del parmetro P6:
Indicates the starting word address:
- Must be a 5-digit number
- All digits are decimal digits (0-9)
- Examples: 00500, 00186, 00020, etc.

1990-2013
pg. 56/59

Soluciones de comunicacin
industrial para Windows

Significado del parmetro P7:


Indicates the ending word address:
- Must be equal or greater than the starting data address and return enough values as
requested in DriverNumPoints
- Must be a 5-digit number
- All digits are decimal digits (0-9)
- Examples: 00501, 00187, 00021, etc.
Valores que son enviados:
Valor del punto (0) = First word value
Valor del punto (1) = Second word value
- ...

Set multiple Timer/Counter preset value


Descripcin del comando:
Set the contents stored in timer/counter preset values.
Mtodos usados para ejecutar este comando:
Analog Output (WriteNumericValues)
Nmero de puntos permitidos para este comando:
1-27
Significado del parmetro P0:
PLC station number (1-32)
Significado del parmetro P1:
1
Significado del parmetro P2:
3
Significado del parmetro P3:
Indicates if the BCC must be ignored:
0 = Use BCC
1 = Ignore BCC (two asterisks '**' will substitute it)
Significado del parmetro P6:
Indicates the starting timer address:
- Must be a 4-digit number
- All digits are decimal digits (0-9)
- Examples: 0500, 0186, 0020, etc.
Significado del parmetro P7:
Indicates the ending timer address:
- Must be equal or greater than the starting data address and return enough values as
requested in DriverNumPoints
- Must be a 4-digit number
- All digits are decimal digits (0-9)
- Examples: 0501, 0187, 0021, etc.
Valores que son enviados:
Valor del punto (0) = First timer value
Valor del punto (1) = Second timer value
- ...

Set multiple Timer/Counter elapsed value

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

Descripcin del comando:


Sets the contents stored in timer/counter elapsed values.
Mtodos usados para ejecutar este comando:
Analog Output (WriteNumericValues)
Nmero de puntos permitidos para este comando:
1-27
Significado del parmetro P0:
PLC station number (1-32)
Significado del parmetro P1:
2
Significado del parmetro P2:
3
Significado del parmetro P3:
Indicates if the BCC must be ignored:
pg. 57/59

Soluciones de comunicacin
industrial para Windows

0 = Use BCC
1 = Ignore BCC (two asterisks '**' will substitute it)
Significado del parmetro P6:
Indicates the starting timer address:
- Must be a 4-digit number
- All digits are decimal digits (0-9)
- Examples: 0500, 0186, 0020, etc.
Significado del parmetro P7:
Indicates the ending timer address:
- Must be equal or greater than the starting data address and return enough values as
requested in DriverNumPoints
- Must be a 4-digit number
- All digits are decimal digits (0-9)
- Examples: 0501, 0187, 0021, etc.
Valores que son enviados:
Valor del punto (0) = First timer value
Valor del punto (1) = Second timer value
- ...

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.

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

[1005] DRIVER (Internal): Invalid driver stage


[1010] DRIVER (Internal): Error calculating elapsed milliseconds
[1201] DRIVER (System): Error closing %s
[1202] DRIVER (System): Error creating %s
[1208] DRIVER (System): Error seeking end of %s
[1210] DRIVER (System): Error writing to %s
[1214] DRIVER (System): Error deleting %s
[1300] PROTOCOL (Timeout): No answer
[1313] PROTOCOL (Timeout): No answer from meter after retrying with a Start Communications
message
[1332] PROTOCOL (Remote): Invalid date received
[1333] PROTOCOL (Remote): Couldn't decode received date
[1334] PROTOCOL (Remote): Invalid time received
[1338] PROTOCOL (Remote): Couldn't decode reference date
[1421] PROTOCOL (Format): Negative acknowledge received from device
[1429] PROTOCOL (Format): Unknown response
[1433] PROTOCOL (Format): Validation error in device response
[2138] CONFIG (NumValues): Only one bit can be requested
[2151] CONFIG (NumValues): Too many bits requested (max=432)
[2170] CONFIG (NumValues): Too many timers requested (max=27)
[2171] CONFIG (NumValues): Too many timers requested (max=7)
[2277] CONFIG (NumValues): Too many words requested (max=27)
[3025] CONFIG (P0): Invalid device address (1-32)
[3509] CONFIG (P1): Invalid command (0 only)
[3510] CONFIG (P1): Invalid command (0 or 1 only)
[3512] CONFIG (P1): Invalid command (0 to 2 only)
[4020] CONFIG (P2): Invalid bit type (0 to 3 only)
[4021] CONFIG (P2): Invalid bit type (0 to 5 only)
[4022] CONFIG (P2): Invalid bit type (1 or 2 only)
[6000] CONFIG (P6): Address length must be 4
[6034] CONFIG (P6): Starting address length must be 4
[6035] CONFIG (P6): Starting address length must be 5
[6501] CONFIG (P7): Ending address length must be 4
[6502] CONFIG (P7): Ending address length must be 5
[6504] CONFIG (P7): Must be empty
[8019] CONFIG (Remote): Address error
[8031] CONFIG (Remote): BCC error
[8035] CONFIG (Remote): Busy error
pg. 58/59

Soluciones de comunicacin
industrial para Windows

[8082] CONFIG (Remote): Data error


[8109] CONFIG (Remote): Device returned unknown error
[8143] CONFIG (Remote): Format error
[8147] CONFIG (Remote): Frame error
[8214] CONFIG (Remote): Missing data error
[8239] CONFIG (Remote): Not supported error
[8258] CONFIG (Remote): Parameter error
[8265] CONFIG (Remote): PLC mode error
[8273] CONFIG (Remote): Procedure error
[8363] CONFIG (Remote): Wack error

Equipos soportados
Este driver se puede comunicar con estos equipos, aunque no necesariamente est limitado a los
que aparecen en esta lista:
PANASONIC NAIS MATSUSHITA FP0 PLC Series
PANASONIC NAIS MATSUSHITA FP1 PLC Series
PANASONIC NAIS MATSUSHITA FP2 PLC Series
PANASONIC NAIS MATSUSHITA FP2SH PLC Series
PANASONIC NAIS MATSUSHITA FP3 PLC Series
PANASONIC NAIS MATSUSHITA FP10SH PLC Series
PANASONIC NAIS MATSUSHITA FP-SIGMA PLC Series
PANASONIC NAIS MATSUSHITA FP-X PLC Series

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

You might also like