Está en la página 1de 36

Soluciones de comunicación

industrial para Windows CE

Manual del Driver X8705102


IEC 870-5-102 REE-Compatible Protocol Driver

• El driver X8705102 permite crear


poderosas aplicaciones de supervisión,
control y comando de sus equipos.

• El manejador de licencias le permite


distribuir ilimitadamente sus aplicaciones
a varios dispositivos o clientes.

• Las aplicaciones se arman con Visual


Studio 2005 Profesional, instalando
Smart Device for C++, Platform Builder y
Windows Embedded 6.0 R2/3, y
utilizando nuestro componente
NetTalkCE.dll para.NET.

• Soporta el sistema operativo Windows


CE para Pocket PC/Smart
Device/Platform Builder con ARM V4/4T y
ARM V5/5T.
El driver X8705102 forma parte de un conjunto de Cuando Ud. adquiere una licencia de nuestro
más de 130 drivers para comunicación serie y driver X8705102, recibe un “número de licencia
tcp/ip desarrollados por CPKSoft Ingeniería, 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 año 1990. como necesite y a cualquier número de
Al igual que todos los demás drivers de CPKSoft dispositivos de destino, dentro y fuera de su
Ingeniería, el driver X8705102 se maneja a través empresa. Las licencias ilimitadas no tienen ningún
de un componente nativo para .NET llamado límite en la cantidad de licencias runtime que se
NetTalkCE totalmente abierto que se distribuye pueden crear a partir de ellas, ni en la cantidad de
junto con cada driver. Este componente multi- equipos con los que se podrán comunicar sus
driver ofrece una interfaz unificada para manejar aplicaciones, ni en la cantidad de puntos o tags
CPKSoft Ingeniería cualquier driver de manera idéntica desde que podrán ser accedidos desde su driver, ni
Drivers para comunicación
aplicaciones escritas con cualquiera de los ninguna otra limitación característica de otros
industrial.

www.cpksoft.com.ar
lenguajes soportados por Microsoft Visual productos similares. Es un producto ideal tanto
carlos@cpksoft.com.ar Studio.NET 2005 Profesional que tenga para integradores como para usuarios finales.
tel: 54-11-45788354 instaladas las herramientas para desarrollar para
la plataforma Windows CE. CPKSoft Ingeniería
1990-2015
Drivers para comunicación industrial.

pág. 1/36
Soluciones de comunicación
industrial para Windows CE

Contenido
Instalación del driver ................................................................................................................... 4
Prueba de funcionamiento del driver .......................................................................................... 5
Uso del componente NetTalkCE ................................................................................................. 5
La interfaz de NetTalkCE .......................................................................................................................5
Crear una aplicación para Windows CE .................................................................................................6
Inicializaciones típicas ........................................................................................................................................ 8

Manejo de la conexión ...........................................................................................................................9


Conexión serie ................................................................................................................................................... 9
Conexión tcp/ip ................................................................................................................................................ 10
Código de conexión típico ................................................................................................................................ 11
Cierre de la conexión ....................................................................................................................................... 11

Manejo de lecturas ...............................................................................................................................11


Lecturas con espera ......................................................................................................................................... 13
Lecturas por eventos ........................................................................................................................................ 14

Manejo de escrituras ............................................................................................................................15


Guía rápida de propiedades, métodos y eventos .................................................................................16
Propiedades ..................................................................................................................................................... 16
Métodos ........................................................................................................................................................... 19
Eventos ............................................................................................................................................................ 22

Distribución de las aplicaciones ................................................................................................ 23


Archivos a ser distribuidos ...................................................................................................................23
Generación de licencias runtime ..........................................................................................................23
Explicación del proceso .................................................................................................................................... 23
Obtención del número de licencia ilimitada ....................................................................................................... 23
Obtención del PCId mediante el utilitario GetPCIdCE.exe ................................................................................ 24
Obtener PCId por código desde la aplicación ................................................................................................... 25
Creación del archivo .lic ................................................................................................................................... 25

Especificaciones técnicas del driver X8705102 ........................................................................ 26


Información general..............................................................................................................................26
Listado de comandos ...........................................................................................................................27
Lectura de fecha y hora actuales ...................................................................................................................... 27

CPKSoft Ingeniería Lectura de informacion de configuracion .......................................................................................................... 27

Drivers para comunicación Lectura de mediciones instantaneas ................................................................................................................ 29


industrial.
Lectura de totales integrados operacionales por intervalo de tiempo y rango de direcciones............................ 30
www.cpksoft.com.ar
Lectura de bloques de totales integrados operacionales por intervalo de tiempo y direccion ............................ 31
carlos@cpksoft.com.ar
Lectura de cierres/Informacion de tarificacion/Valores de contrato ................................................................... 32
tel: 54-11-45788354
Mensajes de error ................................................................................................................................34
1990-2015
Equipos soportados..............................................................................................................................35

pág. 2/36
Soluciones de comunicación
industrial para Windows CE

CPKSoft Ingeniería
Drivers para comunicación
industrial.

www.cpksoft.com.ar
carlos@cpksoft.com.ar

tel: 54-11-45788354

1990-2015

pág. 3/36
Soluciones de comunicación
industrial para Windows CE

Instalación del driver


Los drivers de CPKSoft Ingeniería se distribuyen como archivos .zip o como archivos .rename-to-zip.
Cuando se trate de archivos con extensión .rename-to-zip, éstos deberán ser previamente renombrados
como .zip antes de ser abiertos.

El proceso de instalación de un driver consiste en copiar el contenido del archivo comprimido en una
carpeta en el disco rígido y no requiere de la ejecución de ningún programa.

Los archivos más importantes que se incluyen son:

• X8705102.*.tlk: es el archivo que contiene al driver propiamente dicho y es quien tiene la


inteligencia para procesar los telegramas que se envían 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 X8705102.A4.tlk corresponde a la versión para plataformas de
destino basadas en ARM v4. El archivo X8705102.4T.tlk corresponde a la versión para
plataformas de destino basadas en ARM v4T. El archivo X8705102.A5.tlk corresponde a la
versión para plataformas de destino basadas en ARM v5. El archivo X8705102.5T.tlk
corresponde a la versión para plataformas de destino basadas en ARM v5T.
• X8705102.WinCE.Castellano.pdf: es el manual del driver en español.
• X8705102.WinCE.English.pdf: es el manual del driver en inglés.
• NetTalkCE.dll: es el archivo del ensamblado que corresponde al componente NetTalk, quien
actúa como interfaz para manejar el driver X8705102.*.tlk desde aplicaciones.NET escritas
para Windows CE. Este archivo debe distribuido con las aplicaciones.
• NetBridgeCE.dll: es un archivo del ensamblado que debe acompañar al archivo NetTalkCE.dll
y que se debe previamente copiar desde NetBridgeCE_A4.dll, NetBridgeCE_4T.dll,
NetBridgeCE_A5.dll o NetBridgeCE_5T.dll de acuerdo a la plataforma de destino. Este archivo
debe distribuido con las aplicaciones.
• GetPCIdCE.exe (*): es un utilitario para obtener un número de identificación o PCId de los
dispositivos donde correrán los drivers. Se puede distribuir a los clientes con el objeto de crear
las licencias runtime a partir de los PCId recolectados.
• MakeLic.exe (*): es un utilitario para generar licencias runtime de clientes a partir del número
de identificación PCId de la máquina del cliente. Corre en Windows (no en Windows CE). Para
habilitar su funcionalidad se requiere del ingreso del número de licencia ilimitada que se
entrega con el driver adquirido. Se entrega sólo al licenciatario y no debe ser distribuido. Puede
ser ejecutado tanto en 32 bits como en 64 bits indistintamente.

(*) Estos archivos están disponibles únicamente en las versiones licenciadas.

Adicionalmente también se incluyen estos drivers de apoyo 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
X8705102. Permite finalizar la llamada al terminar.
• XTEST: este driver permite probar un vínculo, enviando telegramas que espera recibir tal cual
han sido transmitidos. El uso de este driver requiere puentear el extremo más alejado del
vínculo 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 aplicación.

CPKSoft Ingeniería
Drivers para comunicación
industrial.

www.cpksoft.com.ar
carlos@cpksoft.com.ar

tel: 54-11-45788354

1990-2015

pág. 4/36
Soluciones de comunicación
industrial para Windows CE

Prueba de funcionamiento del driver


Para ensayar cualquiera de los drivers de CPKSoft Ingeniería se puede utilizar un mismo utilitario
llamado DriverTest.exe que se distribuye en el archivo .zip de instalación de cada driver, aunque está
presente solamente en las versiones para Windows. Esta herramienta de testeo permite validar el
funcionamiento de todos los comandos ofrecidos por cada driver, así como ensayar diferentes tipos de
conexión y seteos de comunicación.

Dado que esta herramienta no está disponible para Windows CE, se sugiere descargar la versión de
evaluación del driver para Windows y utilizarlo para las pruebas desde una computadora común. Una
vez determinados los parámetros apropiados para establecer una comunicación, se pueden utilizar esos
mismos parámetros para volcarlos en la aplicación para Windows CE.

Uso del componente NetTalkCE


La interfaz de NetTalkCE

El componente NetTalkCE.dll es un control nativo para .NET cuya finalidad es manejar los drivers de
comunicación de CPKSoft Ingeniería desde aplicaciones escritas en .NET. NetTalk permite desarrollar
aplicaciones que utilicen Windows CE 6.0.

Cada instancia de NetTalk posee su propia interfaz gráfica que se puede colocar en tiempo de diseño
en los formularios (WinForm) de las aplicaciones creadas con Visual Studio 2005 Professional. Las
instancias de NetTalk se pueden también crear dinámicamente de manera oculta agregando una
referencia a la librería o ensamblado en la aplicación y creando dichas instancias en tiempo de
ejecución.

NetTalk ofrece una amplia lista de propiedades, métodos y eventos para establecer todos los aspectos
funcionales necesarios para un manejo completo de la apariencia del objeto y de los drivers de
comunicación.

NetTalk ofrece una interfaz que


permite visualizar en tiempo real
todas las comunicaciones que
tienen lugar a través de la conexión
que está activa.

Cada telegrama tiene una marca de


tiempo o timestamp asociada, con
resolución al milisegundo.

Los telegramas enviados hacia los


equipos están precedidos por la
leyenda TX.

Los telegramas recibidos desde los


equipos están precedidos por la
CPKSoft Ingeniería leyenda RX.
Drivers para comunicación
El formato por defecto para
industrial.
visualizar los telegramas es el
www.cpksoft.com.ar hexadecimal, donde cada byte
carlos@cpksoft.com.ar transmitido o recibido se muestra
como un valor entre 00 y FF. Este
tel: 54-11-45788354 formato se puede modificar con la
propiedad PanelMode a ASCII o a
1990-2015 Decimal.

pág. 5/36
Soluciones de comunicación
industrial para Windows CE

Varias propiedades y métodos alteran la apariencia del objeto, como la propiedad PanelChars que
establece cuántos caracteres de historia de comunicación almacena la ventana.

Más adelante en este manual se da la lista completa de propiedades, métodos y eventos.

Crear una aplicación para Windows CE

Las aplicaciones .NET para Windows CE se pueden escribir en varios lenguajes .NET (VB, C#, C++,
etc.), siendo los más comunes Visual Basic y C#. Para mostrar cómo crear una aplicación utilizaremos
Microsoft Visual 2005 Professional.

Para poder desarrollar para Windows CE, se deben instalar las siguientes herramientas adicionales,
luego de haber instalado Visual Studio 2005 Professional:

1) VISUAL STUDIO 2005 PROFESSIONAL with Smart Device for C++


2) VS80sp1-KB926601-X86-ENU (Visual Studio 2005 SP1).exe
3) VS80sp1-KB932232-X86-ENU (Visual Studio 2005 SP1 for Vista).exe
4) VS80sp1-KB971090-X86-INTL (Visual Studio 2005 SP1 ATL Security Update).exe
5) setup.exe (Windows CE 6.0) (Ejecutar como administrador, sino da error en archivo MSIA8CA.tmp)
6) Windows Embedded CE 6.0 Platform Builder Service Pack 1.msi
7) setup.exe (Windows Embedded CE 6.0 R2)
8) setup.exe (Windows Embedded CE 6.0 R3)
9) setup.exe (Microsoft Virtual PC)
10) setup.exe (Virtual PC 2007) de http://www.microsoft.com/en-us/download/confirmation.aspx?id=4580
(para soporte de red desde el emulador de PocketPC)

Para crear una aplicación, el primer paso es ir a la opción de menú Archivo+Nuevo proyecto… y allí
seleccionar Device Application, como muestra la imagen:

CPKSoft Ingeniería
Drivers para comunicación
industrial.
Una vez establecido el nombre de la aplicación aceptamos, tras lo cual aparecerá un formulario vacío.
En el caso de nuestro ejemplo, hemos llamado al proyecto “PruebaNetTalkCE”:
www.cpksoft.com.ar
carlos@cpksoft.com.ar

tel: 54-11-45788354

1990-2015

pág. 6/36
Soluciones de comunicación
industrial para Windows CE

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 All Device Controls
presionamos botón derecho del mouse y aparecerá un menú descolgable. Allí seleccionamos la opción
Choose Items… y nos aparecerá una ventana con un botón Browse… que nos permitirá buscar el
archivo NetTalkCE.dll en nuestro disco rígido. Una vez ubicado lo aceptamos y aparecerá en la lista de
componentes.

CPKSoft Ingeniería
Drivers para comunicación
industrial.

www.cpksoft.com.ar
carlos@cpksoft.com.ar

tel: 54-11-45788354

1990-2015

pág. 7/36
Soluciones de comunicación
industrial para Windows CE

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 siguiente vemos el objeto NetTalk ya colocado en el formulario.

A continuación se explican las acciones más comunes del objeto NetTalk, como es el caso de su
inicialización, la apertura de una conexión y el disparo de lecturas y escrituras.
CPKSoft Ingeniería
Inicializaciones típicas
Drivers para comunicación
industrial. Es común dejar ya definidos algunos seteos iniciales del componente NetTalk al arrancar la aplicación o
al cargar el formulario contenedor del objeto.
www.cpksoft.com.ar
carlos@cpksoft.com.ar
Estas son algunas propiedades que definen comportamientos generales del objeto NetTalk y que es
común establecer en el evento de carga del formulario, aunque también se pueden dejar establecidas
tel: 54-11-45788354
en tiempo de diseño:
1990-2015
• this.netTalk1.Text
• this.netTalk1.Language (Castellano/English)
pág. 8/36
Soluciones de comunicación
industrial para Windows CE

• this.netTalk1.PanelMode (Hexadecimal/Decimal/ASCII)

Por ejemplo, este código establece valores típicos para estas propiedades:

public Form1()
{
InitializeComponent();

this.netTalk1.Text = "Manejador de comunicaciones";


this.netTalk1.Language = NetTalk.Languages.Castellano;
this.netTalk1.PanelMode = NetTalk.PanelModes.Hexadecimal;
}

Otras propiedades menos usadas pero que también 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 más adelante al significado de cada propiedad una en la sección sobre “Propiedades”.

Manejo de la conexión

Antes de poder utilizar un driver para comunicarse con cualquier equipo, es necesario abrir una
conexión, ya sea ésta del tipo serial o del tipo tcp/ip (ethernet), lo que dependerá del canal a través del
cual se va a comunicar. Esta acción, como la mayoría de las acciones que se pueden realizar con el
objeto, se debe implementar mediante la escritura de código.

La conexión necesita abrirse una única vez y mientras la misma permanezca abierta, se puede realizar
cualquier número de llamadas de lectura o escritura al objeto, incluso cambiando de driver entre llamada
y llamada. Los parámetros con los que se abrió la conexión permanecerán constantes hasta que ésta se
cierre y eventualmente se vuelva a abrir con otros parámetros.

Si se desea dejar libre el recurso utilizado por la conexión (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 comunicación, aunque esto agregará un
tiempo extra a cada operación de lectura o escritura. También la conexión se puede cerrar y volver a
abrir si se desea cambiar alguno de sus parámetros entre una llamada y otra (por ejemplo, si se quiere
cambiar la velocidad de una comunicación serial).

Conexión serie
Para abrir una conexión serie se utiliza el método Connect, pasándole los siguientes parámetros
CPKSoft Ingeniería relacionados con el puerto serial:
Drivers para comunicación
industrial. • PortName: Nombre del puerto serie (“COM1”, “COM2”, etc.).
• BaudRate: Velocidad de comunicación o baudiaje (4800, 9600, 19200, etc.).
www.cpksoft.com.ar
carlos@cpksoft.com.ar
• Parity: Paridad (None para “ninguna”, Even para “par”, Odd para “impar”).
• DataBits: Bits de datos (7 u 8).
tel: 54-11-45788354 • StopBits: Bits de stop (1, 1.5 o 2).
• Timeout(*): Tiempo máximo de espera de respuesta (en milisegundos, típico 2000).
1990-2015 • T1Delay: Tiempo desde encendido de RTS hasta inicio de transmisión (en milisegundos).
• T2Delay: Tiempo desde fin de transmisión hasta apagado de RTS (en milisegundos).
pág. 9/36
Soluciones de comunicación
industrial para Windows CE

• T3Delay: Tiempo de silencio forzado desde fin de recepción (en milisegundos).


• RtsEnable: Indicador de si se debe activar RTS durante la comunicación (**).
• DtrEnable: Indicador de si se debe activar DTR durante la comunicación.

(*) Se debe tener la precaución 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 declaración formal del método es la siguiente:

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 código siguiente se muestra un ejemplo de llamado a esta función:

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 conexión serial a través 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.

Conexión tcp/ip
Para abrir una conexión tcp/ip o ethernet, se utiliza una sobrecarga del mismo método Connect, pero
esta vez pasándole parámetros relacionados con la conexión IP:

• Address: Dirección IP ó URL de destino


• PortNum: Puerto IP de destino
• Protocol: Protocolo IP a utilizar (TCP, UDP)
• Timeout(*): Tiempo máximo de espera de respuesta (en milisegundos, típico 2000).
• T3Delay: Tiempo de silencio forzado desde fin de recepción (en milisegundos).

(*) Para este parámetro son válidas las mismas consideraciones que para el caso de una conexión
serial.

La declaración formal del método es la siguiente (sobrecarga del caso serial):


CPKSoft Ingeniería
Drivers para comunicación
Boolean Connect(
industrial. String Address,
Int32 PortNum,
www.cpksoft.com.ar
TcpIpProtocolType Protocol,
carlos@cpksoft.com.ar
Int32 TimeOut,
tel: 54-11-45788354
Int32 T3Delay)

1990-2015 En el código siguiente se muestra un ejemplo de llamado a esta función:

pág. 10/36
Soluciones de comunicación
industrial para Windows CE

this.netTalk1.Connect("95.154.201.59", 8010, NetTalk.TcpIpProtocolType.Tcp, 2000,


0);

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

Código de conexión típico


Un código típico para abrir una conexión desde un botón es el siguiente:

private void btnAbrirConexion_Click(object sender, EventArgs e)


{
if (!this.netTalk1.IsConnected && !this.netTalk1.IsConnecting)
{
if (!this.netTalk1.Connect("127.0.0.1", 502, NetTalk.TcpIpProtocolType.Tcp,
2000, 0))
{
MessageBox.Show("Error al abrir conexión: " + this.netTalk1.Status);
}
}
else MessageBox.Show("Ya hay una conexión abierta.");
}

En este código se agrega un chequeo previo de conexión “ya abierta” antes de intentar abrirla,
consultando para ello las propiedades IsConnected e IsConnecting antes de llamar al método Connect
(el símbolo “!” utilizado en el “if” funciona igual que la palabra “Not” de Visual Basic). Si la conexión ya se
encontraba abierta, se muestra un mensaje de aviso y el código no hace mas nada. Si no había ninguna
conexión abierta, se llama al método Connect, quien devuelve true si la conexión se pudo abrir OK y
false si hubo algún error. En caso de error, se muestran los detalles del mismo mediante la propiedad
Status.

Cierre de la conexión
No es necesario cerrar una conexión luego de cada comunicación, en la medida que dicha conexión
siga siendo válida para el próximo 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 conexión ya abierta.

Si ese va a comunicar con otro equipo que tiene un puerto serial o una dirección tcp/ip diferente,
entonces será necesario cerrar la conexión anterior y reabrirla con los nuevos parámetros necesarios.

La forma de cerrar la conexión es mediante una llamada al método 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 conexión: " + this.netTalk1.Status);
CPKSoft Ingeniería }
Drivers para comunicación }
industrial. else MessageBox.Show("No hay una conexión abierta.");
www.cpksoft.com.ar }
carlos@cpksoft.com.ar
Manejo de lecturas
tel: 54-11-45788354

Una vez abierta una conexión, ésta se utilizará para canalizar todas las lecturas que se realicen de ahí
1990-2015
en más, hasta que se la cierre.

pág. 11/36
Soluciones de comunicación
industrial para Windows CE

Las lecturas se realizan mediante llamados a los métodos ReadNumericValues y ReadBooleanValues


(según se trate de valores analógicos o discretos), en los que se le pasa al NetTalk el nombre del driver
y los parámetros relativos al comando específico que se quiere ejecutar. Estos parámetros son la
cantidad de puntos o valores a ser leídos, los parámetros DriverP0 a DriverP9 propios del comando y un
flag que indica si la llamada al método debe esperar o no a terminar la comunicación con el equipo
antes de devolver el control a la aplicación.

El comando ReadNumericValues se utiliza cuando los valores que se espera recibir desde el equipo son
del tipo numérico o analógico, es decir, valores del tipo 0, 1, 2, 3, etc., o bien valores en punto flotante,
tanto positivos como negativos. Se utiliza típicamente para consultar valores de registros enteros,
timers, contadores, entradas analógicas, valores en punto flotante (como puede ser el caso de
mediciones eléctricas), etc.

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 típicos cuando se leen entradas
digitales, estados de bobinas, etc.

Las declaraciones formales de estos métodos 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 parámetro DriverName indica el nombre del driver que el método debe utilizar para realizar la
comunicación. Para el driver al que se refiere este manual, el nombre que se utilice en este parámetro
puede ser directamente el texto “X8705102”, en cuyo caso NetTalk buscará por defecto el archivo
X8705102.xx.tlk en la carpeta en la que esté alojado el ensamblado NetTalkCE.dll, donde “xx” será A4,
A5, 4T o 5T según que versión de NetBridgeCE.dll se esté utilizando. Se puede también agregar el
camino completo al archivo .tlk del driver a ser utilizado, como por ejemplo
“c:\MiAplicación\Drivers\X8705102.A4.tlk”. También se puede utilizar
“c:\MiAplicación\Drivers\X8705102”, en cuyo caso, cuando se indica el nombre del driver sin su
extensión, NetTalk lo completa automáticamente con la extensión correcta.

El parámetro NumPoints indica la cantidad de puntos o valores que se desea leer y siempre debe estar
dentro de los límites admitidos por el comando específico que se vaya a ejecutar.

Los parámetros P0 a P9 suministran al driver toda la información requerida por el comando que se debe
ejecutar. Esa información se obtiene de la última parte del manual de cada driver, como ya se adelantó
en la sección dedicada al programa DriverTest.
CPKSoft Ingeniería
El parámetro Wait define si la lectura se realizará con bloqueo o sin bloqueo de la ejecución del código.
Drivers para comunicación
Estos dos tipos de lectura se explican en detalle más adelante.
industrial.

www.cpksoft.com.ar Tanto en el caso de entradas numéricas como booleanas, una vez realizada la comunicación los valores
carlos@cpksoft.com.ar recibidos quedan disponibles para la aplicación a través del método PointValue(PointIndex), donde
PointIndex es el subíndice del valor obtenido. Este subíndice toma el valor 0 para el primer valor y
tel: 54-11-45788354 (NumPoints-1) para el último valor leído, donde NumPoints es la cantidad de puntos o valores que se le
solicitaron al comando del driver.
1990-2015

pág. 12/36
Soluciones de comunicación
industrial para Windows CE

Ambos métodos devuelven un valor del tipo booleano que es true cuando la llamada al método fue
exitosa y es false cuando hubo algún error. Como se verá más adelante, las situaciones en las que
estos métodos devuelven true o false dependen en realidad de si hay o no hay bloqueo en la ejecución.

Lecturas con espera


Cuando el parámetro Wait se establece a true las lecturas se realizan con “espera” o “bloqueo de
ejecución”, también llamadas “lecturas sincrónicas”, lo que significa que al llamar a cualquiera de los
métodos ReadNumericValues o ReadBooleanValues, la ejecución del código se detendrá a la espera de
que se termine toda la comunicación necesaria con el equipo. La tarea que resultará bloqueada es
aquella desde la que se invocó al método de lectura. La aplicación puede mientras tanto mantener otras
tareas en ejecución sin problemas.

Al ejecutarse el método de lectura, se inicia un intercambio de telegramas entre el driver y el equipo.


Mientras la ejecución del código permanece detenida, el flujo de esta comunicación es manejado en
background por el propio objeto NetTalk, quien va realizando internamente llamadas al driver pidiéndole
que éste envíe 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 código del tipo lineal o sincrónico, es decir, que se vaya
ejecutando línea por línea siguiendo una secuencia clara y predecible. En ciertas aplicaciones, donde
las lecturas de los equipos se deben ir haciendo de manera controlada, sincronizada, según una cierta
secuencia o según una cierta dependencia de tipo cascada, lecturas a demanda, etc., este modo de
lectura es el más indicado.

En las lecturas con bloqueo, los métodos ReadNumericValues y ReadBooleanValues devuelven true
cuando ejecutaron correctamente la lectura solicitada y por lo tanto, cuando los valores leídos ya se
encuentran a disposición de la aplicación para ser levantados a través del método PointValue().

Cuando haya incongruencias o valores inválidos en los parámetros utilizados durante las llamadas a los
métodos, o bien cuando se hayan producido errores de comunicación de algún tipo (error de timeout
porque el equipo no respondió a tiempo, conexión sin abrir, conexión caída, etc.), los métodos
devolverán false y el detalle del error estará disponible en la propiedad Status del componente NetTalk.
En este caso, se deberán ignorar los valores que devuelva el método PointValue(). Al final del manual
se da una lista de los mensajes de error posibles durante una comunicación cuando se utiliza el driver
X8705102.

El tiempo que permanecerá la ejecución detenida mientras dure la llamada al método dependerá del
tiempo que tome la ejecución del comando del driver en ser completada. Puede variar desde algunas
centésimas de segundo hasta varios segundos o incluso minutos, según por ejemplo se esté pidiendo
un simple registro por tcp/ip o bien se estén 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 comunicación y el
equipo nunca respondiera o habiéndolo hecho, dejara de responder, el bloqueo terminará
automáticamente pasado el tiempo especificado en el parámetro Timeout de la conexión.

Un ejemplo de una lectura con bloqueo desde un botón es la siguiente:

private void btnLeerConBloqueo_Click(object sender, EventArgs e)


{
if (this.netTalk1.ReadNumericValues("XMODBTCP", 16, "1", "3", "0", "", "",
"", "", "", "", "", true))
CPKSoft Ingeniería
{
Drivers para comunicación
MessageBox.Show("Valor del registro 0: " +
industrial.
this.netTalk1.PointValue(0).ToString());
www.cpksoft.com.ar }
carlos@cpksoft.com.ar else MessageBox.Show("Error leyendo registro: " + this.netTalk1.Status);
}
tel: 54-11-45788354

En este ejemplo se utiliza el driver XMODBTCP para preguntar a un equipo que habla Modbus TCP y
1990-2015
con número de estación 1 por el estado de 16 registros enteros a partir de la dirección 0 de su mapa de
memoria. Es el mismo caso que ya se utilizó como ejemplo cuando se explicó el utilitario DriverTest al
pág. 13/36
Soluciones de comunicación
industrial para Windows CE

principio del manual, con la diferencia que los mismos datos que antes se cargaban en la pestaña de
Command Settings ahora aquí se le pasan como argumento en la llamada al método
ReadNumericValues.

La ejecución con bloqueo queda clara en este ejemplo donde el método ReadNumericValues se utiliza
en una sentencia “if” y donde inmediatamente terminada la ejecución del método, se puede mostrar con
tranquilidad el valor de los registros recibidos. Sólo se está mostrando un mensaje con el valor del
primer registro recibido, utilizando para ello la llamada al método PointValue pasándole el parámetro 0.
Se observa también 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.

Lecturas por eventos


Cuando el parámetro Wait se establece a false, las lecturas se realizan sin esperar a que la
comunicación con el equipo se termine de realizar y por lo tanto el método invocado devuelve el control
a la aplicación de forma inmediata y el código nunca se bloquea. Se conocen también como lecturas
asincrónicas y la característica es que no hay bloqueo en la ejecución mientras se espera que lleguen
los datos de respuesta. La finalidad del método en este caso es la de encolar el pedido en el objeto
NetTalk, quien se hará cargo internamente de procesar toda la comunicación, avisando luego cuando la
ésta haya terminado mediante el disparo del evento Finished. La ejecución en este caso no es del tipo
lineal sino que el código se ejecuta de manera asincrónica o por eventos, sin un hilo de ejecución
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 aplicación se “frene” en cada lectura, dando la sensación de que la aplicación
responde “de a ratos” a las órdenes del usuario. No obstante, un código donde se hagan lecturas con
bloqueo pero desde una tarea corriendo en background, también puede servir perfectamente para
realizar un barrido contínuo de equipos sin afectar la respuesta de la aplicación.

En las lecturas sin bloqueo, los métodos ReadNumericValues y ReadBooleanValues devuelven true
cuando encolaron correctamente la lectura solicitada, lo que no quiere decir que la comunicación ya se
haya realizado y que los datos leídos ya estén disponibles para ser accedidos a través del método
PointValue(). Cuando ReadNumericValues y ReadBooleanValues devuelven false, están indicando un
error al encolarse el pedido, cuya razón debe consultarse en la propiedad Status.

Para poder levantar con seguridad los datos leídos, habrá que esperar a que el método Finished se
haya disparado y verificar que el argumento finishedok haya sido true. Si el argumento recibido fuera
false, quiere decir que se produjo algún tipo de error durante la lectura y por lo tanto habrá que ignorar
los datos devueltos por el método PointValue y consultar la propiedad Status para averiguar el detalle
del error.

A continuación 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 comunicación
industrial. private void netTalk1_Finished(object sender, bool finishedok)
{
www.cpksoft.com.ar
if (finishedok)
carlos@cpksoft.com.ar
{
tel: 54-11-45788354 MessageBox.Show("Valor del registro: " +
this.netTalk1.PointValue(0).ToString());
1990-2015 }
else MessageBox.Show("Error leyendo registro: " + this.netTalk1.Status);
pág. 14/36
Soluciones de comunicación
industrial para Windows CE

Aquí se ve como la llamada al método ReadNumericValues simplemente devuelve el control a la


aplicación sin realizar ninguna otra acción, salvo la de mostrar un mensaje con la propiedad Status en
caso que no se haya podido encolar correctamente el pedido.

La acción de mostrar el valor recibido queda ahora delegada al evento Finished, quien se disparará una
vez haya finalizado la comunicación, 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
método ReadNumericValues quedará libre de ejecutar otras líneas de código o de atender otros eventos
que se disparen en la aplicación.

El ejemplo también 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 comunicación fallida.

Manejo de escrituras

El manejo de escrituras con NetTalk es muy similar al manejo de las lecturas. En este caso también
existen las escrituras con y sin bloqueo y ambos tipos se manejan de manera idéntica a todo lo
explicado anteriormente para las lecturas. Los métodos 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 método PointValue previamente a la llamada al método 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 cómo utilizar el driver XMODBTCP para escribir un valor 100 en un único
registro en la dirección 0 de un equipo que habla Modbus TCP y con número de estación 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 cómo se carga previamente el valor
100 en el PointIndex 0 utilizando el método 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
CPKSoft Ingeniería bloqueo.
Drivers para comunicación
industrial. Las explicaciones dadas hasta aquí son genéricas y aplicables a cualquier driver y hemos utilizado al
driver Modbus TCP como base en todos los ejemplos por ser uno de los más populares en la industria.
www.cpksoft.com.ar
carlos@cpksoft.com.ar
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
tel: 54-11-45788354
implementación de comandos de otros drivers es que la configuración de los parámetros NumPoints y
DriverP0 a DriverP9 deberán respetar los rangos y valores que se expliquen para cada comando en el
1990-2015 manual del driver que se utilice.

pág. 15/36
Soluciones de comunicación
industrial para Windows CE

Guía rápida de propiedades, métodos y eventos

Propiedades
Nombre de la propiedad Tipo Descripción
CheckLicense Short Si es true, indica que el driver
requiere de una licencia. Si es false,
indica que el driver es gratuito.
CommBaudRate Int32 Velocidad de comunicaciones
utilizada en la última conexión serie
abierta.
CommDataBits Int32 Bits de datos utilizados en la última
conexión serie abierta.
CommDtrEnable Boolean DtrEnable utilizado en la última
conexión serie abierta.
CommParity Parity Paridad utilizada en la última
conexión serie abierta.
CommPortName String Puerto de comunicaciones utilizado
en la última conexión serie abierta.
CommRtsEnable Boolean RtsEnable utilizado en la última
conexión serie abierta.
CommStopBits StopBits Bits de stop utilizados en la última
conexión serie abierta.
CommT1Delay Int32 Retardo T1 utilizado en la última
conexión serie abierta.
CommT2Delay Int32 Retardo T2 utilizado en la última
conexión serie abierta.
CommT3Delay Int32 Retardo T3 utilizado en la última
conexión serie abierta.
CommTimeOut Int32 Timeout utilizado en la última
conexión serie abierta.
DateTimeFormat String Formato de fecha y hora en el panel
de comunicaciones. Por defecto se
utiliza "HH:mm:ss.fff". Si se deja
vacío, no se muestra el timestamp en
el panel.
DriverDescription String Descripción del driver utilizado en el
último llamado de lectura o escritura.
DriverDeveloper String Desarrollador del driver utilizado en el
último llamado de lectura o escritura.
DriverLocked Boolean Si es true, indica que aún 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.
DriverName String Nombre del driver utilizado en el
último llamado de lectura o escritura.
DriverNumPoints Int32 Cantidad de puntos utilizados en el
último llamado de lectura o escritura.
DriverP0 String Parámetro P0 utilizado en el último
llamado de lectura o escritura.
CPKSoft Ingeniería DriverP1 String Parámetro P1 utilizado en el último
Drivers para comunicación llamado de lectura o escritura.
industrial. DriverP2 String Parámetro P2 utilizado en el último
www.cpksoft.com.ar
llamado de lectura o escritura.
carlos@cpksoft.com.ar
DriverP3 String Parámetro P3 utilizado en el último
llamado de lectura o escritura.
tel: 54-11-45788354
DriverP4 String Parámetro P4 utilizado en el último
llamado de lectura o escritura.
1990-2015 DriverP5 String Parámetro P5 utilizado en el último
llamado de lectura o escritura.
DriverP6 String Parámetro P6 utilizado en el último
pág. 16/36
Soluciones de comunicación
industrial para Windows CE

llamado de lectura o escritura.


DriverP7 String Parámetro P7 utilizado en el último
llamado de lectura o escritura.
DriverP8 String Parámetro P8 utilizado en el último
llamado de lectura o escritura.
DriverP9 String Parámetro P9 utilizado en el último
llamado de lectura o escritura.
DriverStatus String Idem propiedad Status.
DriverVersion String Versión del driver utilizado en el
último llamado de lectura o escritura.
EnableAbortCommunicationButton Boolean Establece si estará disponible la
opción ‘Interrumpir Comunicación’ en
el menú descolgable.
EnableClearPanelButton Boolean Establece si estará disponible la
opción ‘Limpiar Panel’ en el menú
descolgable.
EnableCloseConnectionButton Boolean Establece si estará disponible la
opción ‘Cerrar Conexión’ en el menú
descolgable.
EnableFreezeUnfreezePanelButton Boolean Establece si estará disponible la
opción ‘Congelar/Descongelar Panel’
en el menú descolgable.
EnableReconnectButton Boolean Establece si estará disponible la
opción ‘Reconectar’ en el menú
descolgable.
EnableSavePanelButton Boolean Establece si estará disponible la
opción ‘Guardar Panel’ en el menú
descolgable.
EnableSetLinesToSaveButton Boolean Establece si estará disponible la
opción ‘Establecer cantidad de líneas’
en el menú descolgable.
EnableShowHidePanelButton Boolean Establece si estará disponible la
opción ‘Ocultar/Mostrar Panel’ en el
menú descolgable.
FireEvents Boolean Establece si se disparan los eventos.
FreezePanel Boolean Si es true el panel se congela y si es
false el panel se descongela.
FreezeWhenDoubleClick Boolean Establece si el panel se puede
congelar/descongelar haciendo
doble-click con el mouse sobre él.
IsCommunicating Boolean Indica si el driver se está
comunicando en ese momento.
IsConnected Boolean Indica si hay una conexión abierta en
ese momento.
IsConnecting Boolean Indica si se está en proceso de abrir
una conexión en ese momento.
Language Languages Establece el idioma que se mostrará
en la interfaz y en los mensajes
propios del componente.
LastDriverStatus String Muestra un mensaje con el último
estado retornado por el driver.
CPKSoft Ingeniería
LastException String Muestra un mensaje con la última
excepción que se produjo en el
Drivers para comunicación
componente.
industrial.
LicenseType String Tipo de licencia del driver utilizado en
www.cpksoft.com.ar el último llamado de lectura o
carlos@cpksoft.com.ar escritura.
LogPanel Boolean Establece si se registra en disco la
tel: 54-11-45788354 actividad del panel.
LogPanelFilename String Establece el nombre completo del
1990-2015 archivo donde se almacena la
actividad del panel. Si se deja vacío,
pág. 17/36
Soluciones de comunicación
industrial para Windows CE

se utiliza el archivo
PanelLog.yyyyMMdd.txt.
MinimizeDoEventsCalls Boolean Establece que se reduzcan a un
mínimo las llamadas a DoEvents
dentro del componente. Esto reduce
la respuesta de la aplicación pero
permite una ejecución más rápida del
componente.
MonitorMode MonitorModes Establece el criterio utilizado para
hacer parpadear los leds de la
interfaz (TxRx, StartFinish, AlwaysOn,
AlwaysOff).
OnErrorReconnect Boolean Establece si ante una caída de la
conexión, el componente debe
intentar reconectarse
automáticamente.
PanelChars Int16 Establece la cantidad de caracteres
máxima que almacena el panel.
PanelFont Font Establece el fuente del texto utilizado
en el panel.
PanelMode PanelModes Establece cómo se muestran los
telegramas en el panel (Hexadecimal,
ASCII, Decimal).
PanelText String Devuelve el texto presente en el
panel.
PanelWordWrap Boolean Establece la propiedad WordWrap del
panel.
PCId String Devuelve el PCId de la máquina
donde se está ejecutando el
componente.
SleepMilliseconds int 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.
ShowConnectionStatus Boolean Establece si se muestra el estado de
la conexión en la interfaz.
ShowElapsedTimeBar Boolean Establece si se muestra la barra de
progreso de tiempo en la interfaz.
ShowPanel Boolean Establece si se muestra el panel en la
interfaz.
ShowToolTips Boolean Establece si se muestran tooltips
descolgables en la interfaz.
SilentMode Boolean Establece si la interfaz debe trabajar
en modo silencioso (no se actualiza la
interfaz ni el panel).
Status String Muestra un mensaje con el último
estado del componente, que combina
el último estado del driver o la última
excepción, según cuál de los dos se
haya producido último.
CPKSoft Ingeniería
StatusBarFont Font Establece el fuente del texto utilizado
en la barra del menú.
Drivers para comunicación
TcpIpAddress String Dirección IP ó URL utilizada en la
industrial.
última conexión tcp/ip abierta.
www.cpksoft.com.ar TcpIpHiddenAddress String Si no está vacía, es la dirección IP
carlos@cpksoft.com.ar que será realmente utilizada en las
llamadas Connect y Ping. La IP que
tel: 54-11-45788354 se mostrará en los mensajes del
panel de comunicaciones seguirá
1990-2015 siendo la establecida en
TcpIpAddress o la suministrada al
pág. 18/36
Soluciones de comunicación
industrial para Windows CE

llamar a los métodos. Esta IP oculta


se utiliza para no mostrar la
verdadera IP a la que se está
realizando una comunicación.
TcpIpPortNum Int32 Puerto IP utilizado en la última
conexión tcp/ip abierta.
TcpIpProtocol TcpIpProtocolType Protocolo IP utilizado en la última
conexión tcp/ip abierta.
TcpIpT3Delay Int32 Retardo T3 utilizado en la última
conexión tcp/ip abierta.
TcpIpTimeOut Int32 Puerto IP utilizado en la última
conexión tcp/ip abierta.
Text String Establece el texto que aparecerá
como título en el marco que rodea al
componente.
TextFont Font Establece el fuente del texto del
marco que rodea al componente.
UseTemporaryDrivers Boolean Establece si se deben cargar copias
de los archivos de los drivers en lugar
de los archivos originales. Esta
opción 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 simultáneamente (por
ejemplo, con llamadas asincrónicas).

Métodos
Nombre del método Valor retornado Descripción
AbortCommunication Boolean Termina con una comunicación que
se está llevando a cabo, sin esperar a
que termine normalmente o a que se
agote el tiempo de espera
establecido.
AsyncPing Boolean Realiza un Ping a una dirección IP de
manera asincrónica, es decir, sin
bloquear completamente la aplicación
(permite que el formulario de la
aplicación siga respondiendo).
AsyncReadAnalog Boolean Lee valores analógicos de manera
asincrónica (sin bloqueo).
AsyncReadBinary Boolean Lee valores binarios de manera
asincrónica (sin bloqueo).
AsyncWriteAnalog Boolean Escribe valores analógicos de
manera asincrónica (sin bloqueo).
AsyncWriteBinary Boolean Escribe valores binarios de manera
asincrónica (sin bloqueo).
ClearPanel void Limpia el contenido del panel.
Connect Boolean Unificación de TcpIpConnect y
SerialConnect. Establece una
CPKSoft Ingeniería
conexión serie o tcp/ip.
Drivers para comunicación Disconnect Boolean Fuerza la desconexión de una
industrial. conexión abierta.
www.cpksoft.com.ar GetConnectionParameters String Devuelve un texto descriptivo con los
carlos@cpksoft.com.ar parámetros utilizados en la última
conexión.
tel: 54-11-45788354 GetDriverCheckLicense String Averigua si un driver requiere de una
licencia.
1990-2015 GetDriverDescription String Obtiene la descripción de un driver
por su nombre de archivo.

pág. 19/36
Soluciones de comunicación
industrial para Windows CE

GetDriverDeveloper String Obtiene el nombre del desarrollador


de un driver por su nombre de
archivo.
GetDriverLicenseType String Obtiene el tipo de licencia de un
driver por su nombre de archivo.
GetDriverParameters String Devuelve un texto descriptivo con los
parámetros utilizados en la última
lectura o escritura.
GetDriverVersion String Obtiene la versión de un driver por su
nombre de archivo.
GetLastPointValue double Devuelve el valor anterior de un
PointValue.
GetMachineKey String Obtiene el PCId de la computadora
en la que se ejecuta la aplicación.
GetPointDate DateTime Obtiene la fecha del último
PointValue.
GetPointTagName String Obtiene un nombre de tag asociado a
un PointValue que es previamente
suministrado por el usuario.
GetPointText String Obtiene un texto asociado a un
PointValue que puede haber sido
devuelto por el driver acompañando
el valor numérico.
GetPointValue Double Obtiene el valor correspondiente a un
PointValue tal como fue recibido
desde un equipo.
GetPointValueChanged Boolean Averigua si un PointValue cambió su
valor en la última lectura respecto de
la anterior.
GetRunningBitMode String Devuelve “32” si la aplicación se está
ejecutando en 32 bits, y “64” si se
está ejecutando en 64 bits.
InjectSimulatedReply void 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 método de
lectura o escritura, para que esté
disponible. El telegrama puede ser
suministrado hasta en dos partes.
LastPointValue double/ Boolean Sobrecarga de GetLastPointValue y
SetLastPointValue.
LogPanelHeader void Agrega al log de actividad del panel
un encabezado con información del
driver, fecha y hora y datos de la
conexión y del comando utilizado.
Ping Boolean Realiza un Ping a una dirección IP.
PointDate DateTime/Boolean Unificación de GetPointDate y
SetPointDate.
CPKSoft Ingeniería
PointTagName String/Boolean Unificación de GetPointTagName y
SetPointTagName.
Drivers para comunicación
PointText String/Boolean Unificación de GetPointText y
industrial.
SetPointText.
www.cpksoft.com.ar PointValue Double/Boolean Unificación de GetPointValue y
carlos@cpksoft.com.ar SetPointValue.
PointTexts String Lista de todos los PointTexts.
tel: 54-11-45788354 PointValues String Lista de todos los PointValues.
PointValueChanged Boolean Unificación de
1990-2015 GetPointValueChanged y
SetPointValueChanged.
pág. 20/36
Soluciones de comunicación
industrial para Windows CE

ReadAnalog Boolean Unificación de AsyncReadAnalog y


SyncReadAnalog.
ReadBinary Boolean Unificación de AsyncReadBinary y
SyncReadBinary.
ReadBooleanValues Boolean Idem ReadBinary.
ReadNumericValues Boolean Idem ReadAnalog.
Reconnect Boolean Intenta restablecer una conexión
utilizando los mismos parámetros de
la conexión anterior.
ResetLastDriverStatus void Resetea la propiedad
LastDriverStatus a un texto vacío.
ResetLastException void Resetea la propiedad LastException a
un texto vacío.
SavePanel Boolean Guarda el contenido del panel en el
archivo que se indique.
SetAbortCommunicationFlag void Solicita al objeto que aborte lo antes
posible la comunicación en curso,
devolviendo el control a la aplicación
sin aguardar a que la misma termine.
SerialConnect Boolean Establece una conexión mediante un
puerto serial.
SetLastPointValue Boolean Redefine el valor anterior de un
PointValue.
SetPointDate Boolean Redefine la fecha del último
PointValue.
SetPointTagName Boolean Establece un nombre de tag asociado
a un PointValue.
SetPointText Boolean Establece un texto asociado a un
PointValue, que puede ser requerido
por un driver para su envío.
SetPointValue Boolean Establece el valor correspondiente a
un PointValue para ser enviado a un
equipo.
SetPointValueChanged Boolean Sobre-escribe la condición que indica
si un PointValue cambió su valor en
la última lectura respecto de la
anterior.
SyncPing Boolean Realiza un Ping a una dirección IP,
que bloquea la aplicación hasta que
se termina de ejecutar el comando.
SyncReadAnalog Boolean Lee valores analógicos de manera
sincrónica (con bloqueo).
SyncReadBinary Boolean Lee valores binarios de manera
sincrónica (con bloqueo).
SyncWriteAnalog Boolean Escribe valores analógicos de
manera sincrónica (con bloqueo).
SyncWriteBinary Boolean Escribe valores binarios de manera
sincrónica (con bloqueo).
TcpIpConnect Boolean Establece una conexión mediante un
vínculo tcp/ip.
UnloadDriver void Descarga el driver de la memoria, de
CPKSoft Ingeniería
manera que el archivo .tlk no quede
retenido por el sistema operativo.
Drivers para comunicación
Wait void Espera una cantidad de milisegundos
industrial.
llamando mientras tanto a DoEvents.
www.cpksoft.com.ar WriteAnalog Boolean Unificación de AsyncWriteAnalog y
carlos@cpksoft.com.ar SyncWriteAnalog.
WriteBinary Boolean Unificación de AsyncWriteBinary y
tel: 54-11-45788354 SyncWriteBinary.
WriteBooleanValues Boolean Idem WriteBinary.
1990-2015 WriteNumericValues Boolean Idem WriteAnalog.
WriteToPanel void Agrega un texto de usuario al panel.
pág. 21/36
Soluciones de comunicación
industrial para Windows CE

(Los parámetros requeridos por cada método con sus sobrecargas se pueden consultar desde el
entorno de desarrollo con la funcionalidad IntelliSense del IDE, también llamada “autocompletar”, que
consiste en desplegar información de ayuda al usuario a medida que se escribe el código).

Eventos
Nombre del evento Argumentos Descripción
Connected autoreconnected Informa que se estableció una nueva
conexión, indicando además si la
misma fue producto de una
reconexión automática.
Disconnected Informa que una conexión se cerró.
Finished finishedok Informa que una transacción de
lectura o escritura finalizó, indicando
si lo hizo de manera exitosa o fallida.
NewPanelMessage message Informa que se agregó un nuevo
mensaje al panel y pasa el texto
como argumento.

CPKSoft Ingeniería
Drivers para comunicación
industrial.

www.cpksoft.com.ar
carlos@cpksoft.com.ar

tel: 54-11-45788354

1990-2015

pág. 22/36
Soluciones de comunicación
industrial para Windows CE

Distribución de las aplicaciones


Archivos a ser distribuidos

Para distribuir una aplicación escrita con NetTalkCE se deben copiar en el dispositivo de destino todos
los archivos requeridos para que la misma se ejecute correctamente. Estos archivos son básicamente el
.exe de la aplicación, el archivo NetTalkCE.dll del componente NetTalk, el archivo NetBridgeCE.dll que
corresponda a la plataforma de destino, 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 función de la identificación
del dispositivo de destino (obtenido con GetPCIdCE.exe).

Los archivos que deben ser distribuidos cuando se construye una aplicación utilizando el componente
NetTalk son:

• [Su aplicación].exe: El ejecutable de la aplicación.


• NetTalkCE.dll: es el archivo del ensamblado que corresponde al componente NetTalk, quien
actúa como interfaz para manejar el driver X8705102.tlk desde aplicaciones .NET escritas para
Windows CE.
• NetBridgeCE.dll: es un archivo del ensamblado que debe acompañar al archivo NetTalkCE.dll
y que se debe previamente copiar desde NetBridgeCE_A4.dll, NetBridgeCE_4T.dll,
NetBridgeCE_A5.dll o NetBridgeCE_5T.dll de acuerdo a la plataforma de destino.
• X8705102.*.tlk: es el archivo que contiene al driver propiamente dicho y es quien tiene la
inteligencia para procesar los telegramas que se envían 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 X8705102.A4.tlk corresponde a la versión para plataformas de
destino basadas en ARM v4. El archivo X8705102.4T.tlk corresponde a la versión para
plataformas de destino basadas en ARM v4T. El archivo X8705102.A5.tlk corresponde a la
versión para plataformas de destino basadas en ARM v5. El archivo X8705102.5T.tlk
corresponde a la versión para plataformas de destino basadas en ARM v5T.
• X8705102.<PCId>.lic: es el archivo con la licencia runtime del driver para el dispositivo de
destino cuyo número de identificación es “<PCId>”.

Generación de licencias runtime

Explicación del proceso


Cada vez que se deba correr una aplicación escrita con NetTalk, cada driver utilizado que no sea
gratuito chequeará la existencia y validez de un archivo de licencia runtime de extensión .lic que debe
ser creado previamente por el poseedor de la licencia ilimitada del driver.

Los archivos de licencias runtime .lic son válidos para un driver en particular y para un dispositivo 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 disposotivo de
destino donde deban correr esas aplicaciones.

Para poder generar licencias runtime, se necesitan los siguientes elementos:

• Un número de licencia ilimitada, otorgado por CPKSoft al adquirir el producto.


CPKSoft Ingeniería • Un número de identificación del dispositivo de destino, recolectado con GetPCIdCE.exe.
Drivers para comunicación • Un utilitario para generar los archivos .lic, MakeLic.exe entregado con el producto (que se corre
industrial. en una PC con Windows).

www.cpksoft.com.ar Obtención del número de licencia ilimitada


carlos@cpksoft.com.ar
Cuando usted adquiere una licencia ilimitada de cualquiera de nuestros drivers no gratuitos, entre los
tel: 54-11-45788354 archivos entregados usted recibe un documento .pdf protegido con password conteniendo los datos de
su licencia.
1990-2015

pág. 23/36
Soluciones de comunicación
industrial para Windows CE

Utilizando como clave el correo electrónico que nos suministró en su compra podrá abrir el documento,
que se verá como sigue:

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

Obtención del PCId mediante el utilitario GetPCIdCE.exe


Para obtener el PCId de un dispositivo con el utilitario GetPCIdCE.exe sólo se necesita correr este
pequeño ejecutable que no requiere de ninguna instalación previa en el propio dispositivo. Al correrlo, el
programa le mostrará una ventana donde le aparecerá un número como se ve en la imagen siguiente:

CPKSoft Ingeniería
Drivers para comunicación
industrial.

www.cpksoft.com.ar
carlos@cpksoft.com.ar

tel: 54-11-45788354

1990-2015

pág. 24/36
Soluciones de comunicación
industrial para Windows CE

El utilitario puede ser corrido por usted si es que tiene acceso al dispositivo de destino, o bien puede
enviarlo a su cliente para que sea él quien lo corra. En cualquier caso, usted deberá hacerse del número
obtenido ya que luego le será necesario para generar la licencia runtime correspondiente a ese
dispositivo. El utilitario no muestra ninguna referencia a CPKSoft ni a NetTalk.

En la ventana mostrada por GetPCIdCE, el número completo ya aparece pre-seleccionado para que sea
fácil copiarlo y pegarlo en un correo o directamente en el utilitario MakeLic.exe de generación de
licencias.

Obtener PCId por código desde la aplicación


Una forma alternativa de obtener el PCId de una máquina es llamar al método GetMachineKey() de
NetTalk o bien consultar la propiedad PCId desde componente NetTalk. La aplicación debe estar
CPKSoft Ingeniería
corriéndose en el dispositivo cuyo PCId se desee obtener.
Drivers para comunicación
industrial.
De esta forma, la obtención del PCId puede hacerse sin la intervención directa del cliente. Usted puede
www.cpksoft.com.ar hacer que la aplicación chequee la existencia del archivo de licencia X8705102.<PCId>.lic, y en caso de
carlos@cpksoft.com.ar no encontrarse, le despliegue un mensaje al cliente mostrando el PCId con instrucciones para hacérselo
llegar a usted.
tel: 54-11-45788354
Creación del archivo .lic
1990-2015
Para generar las licencias runtime a partir de su número de licencia ilimitada y del número de
identificación del dispositivo de destino, se utiliza el programa MakeLic.exe que se distribuye
pág. 25/36
Soluciones de comunicación
industrial para Windows CE

únicamente con las versiones licenciadas de cada driver. Este programa no está presente en las
versiones de evaluación y prueba de los drivers.

Los archivos generados de extensión .lic y su nombre está formado por el nombre del driver licenciado y
el PCId de la máquina de destino, como en el ejemplo siguiente:

XMODBTCP.P73711E-3ACA5FD-1268560-00A3A10.lic.

Ese archivo .lic es válido para utilizar sin restricciones al driver XMODBTCP en una máquina cuyo PCId
sea P73711E-3ACA5FD-1268560-00A3A10. El contenido del archivo consiste en información interna
sobre el driver, datos del creador del mismo, fecha de expiración (si la tiene) y un código de validación.

La interfaz del utilitario MakeLic, que no se debe distribuir a los usuarios, es la siguiente:

CPKSoft Ingeniería
Drivers para comunicación
industrial.

www.cpksoft.com.ar
Especificaciones técnicas del driver X8705102
carlos@cpksoft.com.ar
Información general
tel: 54-11-45788354

1990-2015 El driver X8705102 implementa el protocolo de comunicaciones entre los registradores de


medidas (RM) y los concentradores de medidas (CM) o los Terminales Portátiles de Lectura

pág. 26/36
Soluciones de comunicación
industrial para Windows CE

(TPL), dentro del marco del Reglamento de Puntos de Medida de la REE, manejando el protocolo
de acuerdo a la norma internacional IEC 870-5-102, tal como aparece en la edición de 1996.
El protocolo se puede utilizar mediante conexiones seriales RS-232/422/485 o bien mediante
conexiones TCP/IP a traves de conversores serie/ip.
Mediante el driver XMODEM de apoyo que se incluye con este driver, también es posible realizar
comunicaciones mediante enlaces GSM.
Cuando se utilicen conversores RS-232/422 o RS-232/485, se sugiere activar el parametro
RTSEnable al realizar llamadas a los metodos de lectura o escritura.
Se recomienda utilizar un timeout de al menos 5000 milisegundos para minimizar errores de
comunicacion.
NOTA: Si se suma 1000 al valor indicado en el parametro DriverP1, el driver ignora el CC
(checksum) recibido del equipo y no rechaza respuestas que tengan CC erroneos. Esto resuelve
problemas con algunos modelos de contadores donde se encontró que en ocasiones generan un
CC diferente al esperado.
CPKSoft agradece especialmente al Sr. Jonathan Fraile Aguilera por su valioso aporte al
desarrollo de este driver de comunicaciones.

Listado de comandos

Lectura de fecha y hora actuales


Descripción del comando:
Lee fecha y hora actuales en el contador utilizando el ASDU 103 (C_TI_NA_2). Se recomienda
utilizar un timeout de al menos 5000 milisegundos para minimizar errores de comunicacion.
Métodos usados para ejecutar este comando:
Analog Input (ReadNumericValues)
Número de puntos permitidos para este comando:
1-6
Significado del parámetro P0:
Direccion de enlace / Direccion del contador (0-65535)
Significado del parámetro P1:
103 (+1000 = ignorar CC)
Significado del parámetro P2:
Clave de acceso (-2147483648 a 2147483647)
Significado del parámetro P3:
Punto de medida (0-255)
Significado del parámetro P4:
No utilizado
Significado del parámetro P5:
No utilizado
Significado del parámetro P6:
No utilizado
Significado del parámetro P7:
No utilizado
Significado del parámetro P8:
No utilizado
Significado del parámetro P9:
No utilizado
Valores que son devueltos:
Valor del punto (0) = Año
Valor del punto (1) = Mes
CPKSoft Ingeniería Valor del punto (2) = Dia
Drivers para comunicación
Valor del punto (3) = Hora
industrial.
Valor del punto (4) = Minutos
Valor del punto (5) = Segundos
www.cpksoft.com.ar
carlos@cpksoft.com.ar Lectura de informacion de configuracion
tel: 54-11-45788354 Descripción del comando:
Lee informacion de configuracion del contador utilizando el ASDU 141 (C_RM_NA_2). Se
1990-2015 recomienda utilizar un timeout de al menos 5000 milisegundos para minimizar errores de
comunicacion.
pág. 27/36
Soluciones de comunicación
industrial para Windows CE

Métodos usados para ejecutar este comando:


Analog Input (ReadNumericValues)
Número de puntos permitidos para este comando:
1-33
Significado del parámetro P0:
Direccion de enlace / Direccion del contador (0-65535)
Significado del parámetro P1:
141 (+1000 = ignorar CC)
Significado del parámetro P2:
Clave de acceso (-2147483648 a 2147483647)
Significado del parámetro P3:
Punto de medida (0-255)
Significado del parámetro P4:
No utilizado
Significado del parámetro P5:
No utilizado
Significado del parámetro P6:
No utilizado
Significado del parámetro P7:
No utilizado
Significado del parámetro P8:
No utilizado
Significado del parámetro P9:
No utilizado
Valores que son devueltos:
Valor del punto (0) = Codigo del fabricante
Valor del punto (1) = Codigo de modelo (entero de 16 bits)
Texto del punto (1) = Codigo de modelo (ASCII de 2 caracteres)
Valor del punto (2) = Version de firmware
Valor del punto (3) = Numero de serie
Valor del punto (4) = Fecha del estandar
Valor del punto (5) = Dia de la version del protocolo
Valor del punto (6) = Mes de la version del protocolo
Valor del punto (7) = Año de la version del protocolo
Valor del punto (8) = Estado de carga de bateria (%)
Valor del punto (9) = Velocidad del puerto serie 1 (0=puerto no disponible, 999999=Desconocida)
Valor del punto (10) = Bits de datos del puerto serie 1
Valor del punto (11) = Paridad del puerto serie 1 (0=Ninguna, 1=Par, 2=Impar)
Texto del punto (11) = Paridad del puerto serie 1 (N=Ninguna,E=Par,O=Impar)
Valor del punto (12) = Bits de stop del puerto serie 1
Valor del punto (13) = Modo de envio de cadena de inicializacion del puerto serie 1 (0=no se usa
en este ASDU, 1-250=frecuencia en horas, 254=luego del power-up, 255=no se envia)
Valor del punto (14) = Longitud de la cadena ascii a enviar por puerto serie 1
Texto del punto (14) = Cadena ascii a enviar por puerto serie 1
Valor del punto (15) = Velocidad del puerto serie 2 (0=puerto no disponible, 999999=Desconocida)
Valor del punto (16) = Bits de datos del puerto serie 2
Valor del punto (17) = Paridad del puerto serie 2 (0=Ninguna, 1=Par, 2=Impar)
Texto del punto (17) = Paridad del puerto serie 2 (N=Ninguna,E=Par,O=Impar)
Valor del punto (18) = Bits de stop del puerto serie 2
Valor del punto (19) = Velocidad del puerto optico (0=puerto no disponible, 999999=Desconocida)
Valor del punto (20) = Bits de datos del puerto optico
CPKSoft Ingeniería
Valor del punto (21) = Paridad del puerto optico (0=Ninguna, 1=Par, 2=Impar)
Texto del punto (21) = Paridad del puerto optico (N=Ninguna,E=Par,O=Impar)
Drivers para comunicación
Valor del punto (22) = Bits de stop del puerto optico
industrial.
Valor del punto (23) = Valor del primario de V (en Volts)
www.cpksoft.com.ar Valor del punto (24) = Valor del secundario de V (en Volts)
carlos@cpksoft.com.ar Valor del punto (25) = Valor del primario de I (en Amperes)
Valor del punto (26) = Valor del secundario de I (en Amperes)
tel: 54-11-45788354 Valor del punto (27) = Periodo de integracion de la primer curva de carga (en minutos)
Valor del punto (28) = Periodo de integracion de la segunda curva de carga (en minutos)
1990-2015 Valor del punto (29) = Periodo de integracion de la tercer curva de carga (en minutos)
Valor del punto (30) = Estado del contrato 1 (0=no disponible, 1=inactivo, 3=activo)
pág. 28/36
Soluciones de comunicación
industrial para Windows CE

Valor del punto (31) = Estado del contrato 2 (0=no disponible, 1=inactivo, 3=activo)
Valor del punto (32) = Estado del contrato 3 (0=no disponible, 1=inactivo, 3=activo)

Lectura de mediciones instantaneas


Descripción del comando:
Lee mediciones instantaneas del contador utilizando el ASDU 162 y los objetos C0, C1 y C2. Se
recomienda utilizar un timeout de al menos 5000 milisegundos para minimizar errores de
comunicacion.
Métodos usados para ejecutar este comando:
Analog Input (ReadNumericValues)
Número de puntos permitidos para este comando:
1-24
Significado del parámetro P0:
Direccion de enlace / Direccion del contador (0-65535)
Significado del parámetro P1:
162 (+1000 = ignorar CC)
Significado del parámetro P2:
Clave de acceso (-2147483648 a 2147483647)
Significado del parámetro P3:
Punto de medida (0-255)
Significado del parámetro P4:
No utilizado
Significado del parámetro P5:
No utilizado
Significado del parámetro P6:
No utilizado
Significado del parámetro P7:
No utilizado
Significado del parámetro P8:
No utilizado
Significado del parámetro P9:
No utilizado
Valores que son devueltos:
Valor del punto (0) = Activa importacion
Valor del punto (1) = Activa exportacion
Valor del punto (2) = Reactiva Q1
Valor del punto (3) = Reactiva Q2
Valor del punto (4) = Reactiva Q3
Valor del punto (5) = Reactiva Q4
Valor del punto (6) = Potencia activa total (kW)
Valor del punto (7) = Potencia reactiva total (kVAr)
Valor del punto (8) = Factor de potencia total (0 a 1)
Valor del punto (9) = Potencia activa fase 1 (kW)
Valor del punto (10) = Potencia reactiva fase 1 (kVAr)
Valor del punto (11) = Factor de potencia fase 1 (0 a 1)
Valor del punto (12) = Potencia activa fase 2 (kW)
Valor del punto (13) = Potencia reactiva fase 2 (kVAr)
Valor del punto (14) = Factor de potencia fase 2 (0 a 1)
Valor del punto (15) = Potencia activa fase 3 (kW)
Valor del punto (16) = Potencia reactiva fase 3 (kVAr)
Valor del punto (17) = Factor de potencia fase 3 (0 a 1)
CPKSoft Ingeniería Valor del punto (18) = Corriente I1 (A)
Drivers para comunicación Valor del punto (19) = Tension V1 (V)
industrial. Valor del punto (20) = Corriente I2 (A)
www.cpksoft.com.ar
Valor del punto (21) = Tension V2 (V)
carlos@cpksoft.com.ar
Valor del punto (22) = Corriente I3 (A)
Valor del punto (23) = Tension V3 (V)
tel: 54-11-45788354

1990-2015

pág. 29/36
Soluciones de comunicación
industrial para Windows CE

Lectura de totales integrados operacionales por intervalo de tiempo y rango de direcciones


Descripción del comando:
Lee totales integrados operacionales (lecturas absolutas o incrementales) por intervalo de tiempo
para un determinado rango de direcciones utilizando el ASDU 122 o el ASDU 123. Se recomienda
utilizar un timeout de al menos 5000 milisegundos para minimizar errores de comunicacion. El
ASDU 122 se utiliza para lecturas absolutas. El ASDU 123 se utiliza para lecturas incrementales o
totales integrados operacionales repuestos periodicamente. En las lecturas incrementales, los
valores devueltos representan la diferencia entre la lectura actual y la lectura anterior y son
generalmente numeros bajos. En las lecturas absolutas, se devuelve directamente la lectura
actual que marca el contador y son generalmente numeros altos por tratarse de valores
acumulados.
Deposita los datos recibidos en un archivo plano ASCII donde cada registro adopta el siguiente
formato: [ID;]FECHA;IV;TIS;SU;RES1;DOW;ETI;PTI;RES2;TOTAL1;TOTAL2;...;TOTALn donde:
- ID=(OPCIONAL) Primer columna opcional cuyo texto fijo se define en DriverP8 y que sirve
como para diferenciar entre multiples bajadas de multiples equipos en un mismo archivo de
destino.
- FECHA=Fecha del registro recibido en formato YYYYMMDDHHMM
- IV=Indicador de validez del registro (1=valido, 0=posiblemente invalido)
- TIS=Informacion de tarifa (0=OFF, 1=ON)
- SU=Horario de verano (0=tiempo estandar, 1=horario verano)
- RES1=Reserva 1
- DOW=Dia de la semana (1=Lunes, 7=Domingo)
- ETI=Info tarifa energia (0 a 2)
- PTI=Info tarifa potencia (0 a 2)
- RES2=Reserva 2
- TOTAL1,...,TOTALn=Totales integrados recibidos en el registro.

Cuando DriverP5 se define como 1 y DriverP6 se define como 8, el encabezado adopta el


siguiente formato:
[ID;]FECHA;IV;TIS;SU;RES1;DOW;ETI;PTI;RES2;AE;AS;AQ1;AQ2;AQ3;AQ4;R1;R2 donde:
- AE=ActivaEntrante
- AS=ActivaSaliente
- AQ1=ActivaQ1
- AQ2=ActivaQ2
- AQ3=ActivaQ3
- AQ4=ActivaQ4
- R1=Reserva1
- R2=Reserva2
Métodos usados para ejecutar este comando:
Analog Input (ReadNumericValues)
Número de puntos permitidos para este comando:
1-11
Significado del parámetro P0:
Direccion de enlace / Direccion del contador (0-65535)
Significado del parámetro P1:
ASDU (122 para lecturas absolutas, 123 para lecturas incrementales) (+1000 = ignorar CC)
Significado del parámetro P2:
Clave de acceso (-2147483648 a 2147483647)
Significado del parámetro P3:
Punto de medida (0-255)
Significado del parámetro P4:
CPKSoft Ingeniería Tipo de registro solicitado:
Drivers para comunicación - 11=Curva de carga con periodo de integracion 1
industrial. - 12=Curva de carga con periodo de integracion 2
www.cpksoft.com.ar
- 13=Curva de carga con periodo de integracion 3
carlos@cpksoft.com.ar - 21=Resumen diario con periodo de integracion 1
- 22=Resumen diario con periodo de integracion 2
tel: 54-11-45788354 - 23=Resumen diario con periodo de integracion 3
Significado del parámetro P5:
1990-2015 Direccion del primer total integrado a ser leido:
- 1=Activa entrante
- 2=Activa saliente
pág. 30/36
Soluciones de comunicación
industrial para Windows CE

- 3=Reactiva primer cuadrante


- 4=Reactiva segundo cuadrante
- 5=Reactiva tercer cuadrante
- 6=Reactiva cuarto cuadrante
- 7=Datos de reserva 1
- 8=Datos de reserva 2
Significado del parámetro P6:
Cantidad de totales integrados a ser leidos a partir del primer total integrado (1-8)
Significado del parámetro P7:
Fecha inicial y fecha final (Formato: AAMMDDHHMM,AAMMDDHHMM). Para indicar una lectura
desde las 00:00:00, segun como trabaje su contador puede ser necesario indicar la hora 23:59:59
del dia inmediato anterior.
Significado del parámetro P8:
Datos del archivo de destino, en el siguiente formato: FILENAME[,ID]
- FILENAME=Nombre con path completo del archivo de destino de los datos obtenidos. Si se
deja vacio, el nombre se construye automaticamente a partir de las fechas establecidas en el
parametro DriverP7.
- ID=(OPCIONAL) Primer columna opcional cuyo texto fijo se define en DriverP8 y que sirve
como para diferenciar entre multiples bajadas de multiples equipos en un mismo archivo de
destino.
- EJEMPLO=[path]curva.csv,MEDIDOR1
Significado del parámetro P9:
Empresa, contacto y correo tal cual como figura en la licencia, separado por comas, sin espacios
(si este parametro se omite, el primer digito de cada valor se sobre-escribe con un signo de
interrogacion)
Valores que son devueltos:
Valor del punto (0) = Cantidad de registros agregados al archivo.
Valor del punto (1) = Año del primer registro recibido (AA)
Valor del punto (2) = Mes del primer registro recibido (MM)
Valor del punto (3) = Dia del primer registro recibido (DD)
Valor del punto (4) = Hora del primer registro recibido (HH)
Valor del punto (5) = Minuto del primer registro recibido (MM)
Valor del punto (6) = Año del ultimo registro recibido (AA)
Valor del punto (7) = Mes del ultimo registro recibido (MM)
Valor del punto (8) = Dia del ultimo registro recibido (DD)
Valor del punto (9) = Hora del ultimo registro recibido (HH)
Valor del punto (10) = Minuto del ultimo registro recibido (MM)

Lectura de bloques de totales integrados operacionales por intervalo de tiempo y direccion


Descripción del comando:
Lee bloques de totales integrados operacionales (lecturas absolutas o incrementales) por intervalo
de tiempo para una determinada direccion utilizando el ASDU 189 o el ASDU 190. Se recomienda
utilizar un timeout de al menos 5000 milisegundos para minimizar errores de comunicacion. El
ASDU 189 se utiliza para lecturas absolutas. El ASDU 190 se utiliza para lecturas incrementales o
totales integrados operacionales repuestos periodicamente.
Deposita los datos recibidos en un archivo plano ASCII donde cada registro adopta el siguiente
formato: [ID;]FECHA;IV;TIS;SU;RES1;DOW;ETI;PTI;RES2;TOTAL1;TOTAL2;...;TOTALn donde:
- ID=Texto opcional de usuario que se define en el parametro P8
- FECHA=Fecha del registro recibido en formato YYYYMMDDHHMM
- IV=Indicador de validez del registro (1=valido, 0=posiblemente invalido)
- TIS=Informacion de tarifa (0=OFF, 1=ON)
CPKSoft Ingeniería - SU=Horario de verano (0=tiempo estandar, 1=horario verano)
Drivers para comunicación - RES1=Reserva 1
industrial. - DOW=Dia de la semana (1=Lunes, 7=Domingo)
www.cpksoft.com.ar
- ETI=Info tarifa energia (0 a 2)
carlos@cpksoft.com.ar
- PTI=Info tarifa potencia (0 a 2)
- RES2=Reserva 2
tel: 54-11-45788354 - TOTAL1,...,TOTALn=Totales integrados recibidos en el registro.
Métodos usados para ejecutar este comando:
1990-2015 Analog Input (ReadNumericValues)
Número de puntos permitidos para este comando:
1-11
pág. 31/36
Soluciones de comunicación
industrial para Windows CE

Significado del parámetro P0:


Direccion de enlace / Direccion del contador (0-65535)
Significado del parámetro P1:
ASDU (189 para lecturas absolutas, 190 para lecturas incrementales) (+1000 = ignorar CC)
Significado del parámetro P2:
Clave de acceso (-2147483648 a 2147483647)
Significado del parámetro P3:
Punto de medida (0-255)
Significado del parámetro P4:
Tipo de registro solicitado:
- 11=Curva de carga con periodo de integracion 1
- 12=Curva de carga con periodo de integracion 2
- 13=Curva de carga con periodo de integracion 3
- 21=Resumen diario con periodo de integracion 1
- 22=Resumen diario con periodo de integracion 2
- 23=Resumen diario con periodo de integracion 3
Significado del parámetro P5:
Tipo de bloque de totales integrados a ser leidos:
- 9=Bloque de totales integrados generico con datos de reserva (puntos de medida con
direcciones de objeto 1 a 8)
- 10=Bloque de totales integrados generico sin datos de reserva (puntos de medida con
direcciones de objeto 1 a 6)
- 11=Bloque de totales integrados de consumo puro sin reservas (puntos de medida con
direcciones de objeto 1, 3 y 6)
Significado del parámetro P6:
No utilizado
Significado del parámetro P7:
Fecha inicial y fecha final (Formato: AAMMDDHHMM,AAMMDDHHMM). Para indicar una lectura
desde las 00:00:00, segun como trabaje su contador puede ser necesario indicar la hora 23:59:59
del dia inmediato anterior.
Significado del parámetro P8:
Datos del archivo de destino, en el siguiente formato: FILENAME[,ID]
- FILENAME=Archivo de destino de los datos obtenidos con su path completo
- ID=(OPCIONAL) Primer columna opcional cuyo texto fijo se define en DriverP8 y que sirve
como para diferenciar entre multiples bajadas de multiples equipos en un mismo archivo de
destino.
- EJEMPLO=[path]curva.csv,MEDIDOR1
Significado del parámetro P9:
Empresa, contacto y correo tal cual como figura en la licencia, separado por comas, sin espacios
(si este parametro se omite, el primer digito de cada valor se sobre-escribe con un signo de
interrogacion)
Valores que son devueltos:
Valor del punto (0) = Cantidad de registros agregados al archivo.
Valor del punto (1) = Año del primer registro recibido (AA)
Valor del punto (2) = Mes del primer registro recibido (MM)
Valor del punto (3) = Dia del primer registro recibido (DD)
Valor del punto (4) = Hora del primer registro recibido (HH)
Valor del punto (5) = Minuto del primer registro recibido (MM)
Valor del punto (6) = Año del ultimo registro recibido (AA)
Valor del punto (7) = Mes del ultimo registro recibido (MM)
Valor del punto (8) = Dia del ultimo registro recibido (DD)
CPKSoft Ingeniería
Valor del punto (9) = Hora del ultimo registro recibido (HH)
Valor del punto (10) = Minuto del ultimo registro recibido (MM)
Drivers para comunicación
industrial.
Lectura de cierres/Informacion de tarificacion/Valores de contrato
www.cpksoft.com.ar
carlos@cpksoft.com.ar
Descripción del comando:
Lee informacion de tarificacion para valores en curso y para valores memorizados utilizando los
tel: 54-11-45788354 ASDU 133 y 134. Esta informacion se conoce habitualmente como lectura de cierres y en general
corresponde a los valores mensuales de energias. Se recomienda utilizar un timeout de al menos
1990-2015 5000 milisegundos para minimizar errores de comunicacion.
Deposita los datos recibidos en un archivo plano ASCII donde cada registro adopta el siguiente
formato:
pág. 32/36
Soluciones de comunicación
industrial para Windows CE

[ID;]FechaIni;FechaFin;Contrato;Periodo;VabA;VinA;CinA;VabRi;VinRi;CinRi;VabRc;VinRc;CinRc;
VMaxA;FechaMaxA;CMaxA;VexcA;CexcA
Donde:
- ID=Columna opcional Texto opcional de usuario identificatorio para cada registro de la
descarga, que se inserta como primer columna, para diferenciar entre multiples bajadas de
multiples equipos en un mismo archivo de destino.
- FechaIni=Fecha de inicio del periodo (YYYYMMDDHHMM)
- FechaFin=Fecha de fin del periodo (YYYYMMDDHHMM)
- Contrato=Numero de contrato leido
- Periodo=Periodo leido
- VabA=Energia absoluta activa (kWh)
- VinA=Energia incremental activa (kWh)
- CinA=Cualificador de energia activa
- VabRi=Energia absoluta reactiva inductiva (kVAr)
- VinRi=Energia incremental reactiva inductiva (kVAr)
- CinRi=Cualificador de energia reactiva inductiva
- VabRc=Energia absoluta reactiva capacitiva (kVAr)
- VinRc=Energia incremental reactiva capacitiva (kVAr)
- CinRc=Cualificador de energia reactiva capacitiva
- VMaxA=Maximo de las potencias (kWh)
- FechaMaxA=Fecha del maximo (YYYYMMDDHHMM)
- CMaxA=Cualificador de maximos
- VexcA=Excesos de las potencias (kWh)
- CexcA=Cualificador de excesos

Periodo:
- 0=Informacion de tarificacion (Totales)
- 1=Informacion de tarificacion (Periodo tarifario 1)
- 2=Informacion de tarificacion (Periodo tarifario 2)
- 3=Informacion de tarificacion (Periodo tarifario 3)
- 4=Informacion de tarificacion (Periodo tarifario 4)
- 5=Informacion de tarificacion (Periodo tarifario 5)
- 6=Informacion de tarificacion (Periodo tarifario 6)
- 7=Informacion de tarificacion (Periodo tarifario 7)
- 8=Informacion de tarificacion (Periodo tarifario 8)
- 9=Informacion de tarificacion (Periodo tarifario 9)

Cualificadores:
El valor del campo de cualificadores para cada canal es un número entre O y 255 donde cada bit
individual tiene un significado particular cuando su estado se encuentra en 1:
- RES=Reserva (bit 0)
- AL=Periodo incompleto por fallo de alimentacion en el periodo (bit 1)
- INT=Se produjo un intrusismo durante el periodo (bit 2)
- MP=Modificacion de parametros durante el periodo (bit 3)
- VH=Verificacion horaria durante el periodo (bit 4)
- CY=Overflow (bit 5)
- CA=Contador sincronizado durante el periodo (bit 6)
- IV=Lectura invalida (bit 7)
Métodos usados para ejecutar este comando:
Analog Input (ReadNumericValues)
Número de puntos permitidos para este comando:
CPKSoft Ingeniería
1-11
Significado del parámetro P0:
Drivers para comunicación
Direccion de enlace / Direccion del contador (0-65535)
industrial.
Significado del parámetro P1:
www.cpksoft.com.ar ASDU (133 para valores en curso y 134 para valores memorizados) (+1000 = ignorar CC)
carlos@cpksoft.com.ar Significado del parámetro P2:
Clave de acceso (-2147483648 a 2147483647)
tel: 54-11-45788354 Significado del parámetro P3:
Punto de medida (0-255)
1990-2015 Significado del parámetro P4:
Direccion de registro solicitado:
pág. 33/36
Soluciones de comunicación
industrial para Windows CE

- 134=Informacion de tarificacion relativa al Contrato I


- 135=Informacion de tarificacion relativa al Contrato II
- 136=Informacion de tarificacion relativa al Contrato III
- 137=Informacion de tarificacion relativa al Contrato Latente I
- 138=Informacion de tarificacion relativa al Contrato Latente II
- 139=Informacion de tarificacion relativa al Contrato Latente III
Significado del parámetro P5:
No utilizado
Significado del parámetro P6:
No utilizado
Significado del parámetro P7:
Fecha inicial y fecha final (Formato: AAMMDDHHMM,AAMMDDHHMM). Para indicar una lectura
desde las 00:00:00, segun como trabaje su contador puede ser necesario indicar la hora 23:59:59
del dia inmediato anterior.
Significado del parámetro P8:
Datos del archivo de destino, en el siguiente formato: FILENAME[,ID]
- FILENAME=Nombre con path completo del archivo de destino de los datos obtenidos. Si se
deja vacio, el nombre se construye automaticamente a partir de las fechas establecidas en el
parametro DriverP7.
- ID=(OPCIONAL) Primer columna opcional cuyo texto fijo se define en DriverP8 y que sirve
como para diferenciar entre multiples bajadas de multiples equipos en un mismo archivo de
destino.
- EJEMPLO=[path]curva.csv,MEDIDOR1
Significado del parámetro P9:
Empresa, contacto y correo tal cual como figura en la licencia, separado por comas, sin espacios
(si este parametro se omite, el primer digito de cada valor se sobre-escribe con un signo de
interrogacion)
Valores que son devueltos:
Valor del punto (0) = Cantidad de registros agregados al archivo.
Valor del punto (1) = Año del primer registro recibido (AA)
Valor del punto (2) = Mes del primer registro recibido (MM)
Valor del punto (3) = Dia del primer registro recibido (DD)
Valor del punto (4) = Hora del primer registro recibido (HH)
Valor del punto (5) = Minuto del primer registro recibido (MM)
Valor del punto (6) = Año del ultimo registro recibido (AA)
Valor del punto (7) = Mes del ultimo registro recibido (MM)
Valor del punto (8) = Dia del ultimo registro recibido (DD)
Valor del punto (9) = Hora del ultimo registro recibido (HH)
Valor del punto (10) = Minuto del ultimo registro recibido (MM)

Mensajes de error

La siguiente lista muestra los mensajes de error que pueden ser retornados por el driver en la
propiedad 'Status' durante una comunicación fallida.

[1005] DRIVER (Internal): Invalid driver stage


[1007] DRIVER (Internal): Code logic error 1
[1007] DRIVER (Internal): Code logic error 2
[1007] DRIVER (Internal): Code logic error 3
[1007] DRIVER (Internal): Code logic error 4
[1007] DRIVER (Internal): Code logic error 5
CPKSoft Ingeniería [1007] DRIVER (Internal): Code logic error 6
Drivers para comunicación [1007] DRIVER (Internal): Code logic error 7
industrial. [1007] DRIVER (Internal): Code logic error 8
[1010] DRIVER (Internal): Error calculating elapsed milliseconds
www.cpksoft.com.ar
[1201] DRIVER (System): Error closing %s
carlos@cpksoft.com.ar
[1202] DRIVER (System): Error creating %s
[1208] DRIVER (System): Error seeking end of %s
tel: 54-11-45788354
[1210] DRIVER (System): Error writing to %s
1990-2015
[1214] DRIVER (System): Error deleting %s
[1215] DRIVER (I/O): Invalid destination file
[1216] DRIVER (I/O): Error creating file
pág. 34/36
Soluciones de comunicación
industrial para Windows CE

[1217] DRIVER (I/O): Error seeking to end of file


[1218] DRIVER (I/O): Error writting to file
[1219] DRIVER (I/O): Error closing file
[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
[1413] PROTOCOL (Format): Invalid password
[1433] PROTOCOL (Format): Validation error in device response
[1443] PROTOCOL (Format): Invalid number of bytes in response
[1449] PROTOCOL (Format): Invalid device address in reply
[1450] PROTOCOL (Format): Invalid type identifier in response
[1451] PROTOCOL (Format): Requested data record not available
[1452] PROTOCOL (Format): ASDU type not available
[1453] PROTOCOL (Format): DATE INTERVAL NOT AVAILABLE or INVALID PASSWORD or
ASDU REGISTER NUMBER NOT AVAILABLE
[1454] PROTOCOL (Format): Unknown ASDU address sent
[1455] PROTOCOL (Format): Object information not available
[1456] PROTOCOL (Format): Integration period not available
[1457] PROTOCOL (Format): Unexpected cause value in response
[1458] PROTOCOL (Format): Invalid record date in response
[2001] CONFIG (DataType): Analog outputs are not supported by this driver
[2002] CONFIG (DataType): Digital inputs are not supported by this driver
[2003] CONFIG (DataType): Digital outputs are not supported by this driver
[3016] CONFIG (P0): Invalid device address (0-65535)
[3508] CONFIG (P1): Invalid command
[4546] CONFIG (P3): Invalid number (0-255)
[5017] CONFIG (P4): Invalid number
[5518] CONFIG (P5): Invalid total type (1-8)
[5519] CONFIG (P5): Invalid block type (9-11)
[6044] CONFIG (P6): Invalid number of totals (1-8)
[6045] CONFIG (P6): Last total cannot be over 8
[6505] CONFIG (P7): Invalid date interval (YYMMDDHHMM,YYMMDDHHMM)

Equipos soportados

Este driver se puede comunicar con estos equipos, aunque no necesariamente está limitado a los
que aparecen en esta lista:

ABB AMC 1320 Meters


ABB AMC 1400 Meters
ABB PB3 AAB Meters
ABB PB3 FAA Meters
ABB PM3 Meters
ACTARIS S7000
CIRCUTOR CIRWATT X05-XT Meters
ELIOP ELICONTAX 3 C15 Meters
ELIOP ELICONTAX 3 C11 Meters
CPKSoft Ingeniería ELIOP ELICONTAX 2 C25 Meters
Drivers para comunicación ELIOP ELICONTAX 2 C21 Meters
industrial. I.E.ELECTROMATIC INDRA TARCON RC 6000 Meters
I.E.ELECTROMATIC ORBIS ORBITAX Meters
www.cpksoft.com.ar
ORBIS Meters
carlos@cpksoft.com.ar
SAGEM CX 1000 Meters
SCHLUMBERGER SL761 DXXX Meters
tel: 54-11-45788354
SCHLUMBERGER SL761 EXXX Meters
1990-2015
SCHLUMBERGER SL761 BXXX Meters
SCHLUMBERGER SL761 CXXX Meters
SIEMENS MM 2415R1 Meters
pág. 35/36
Soluciones de comunicación
industrial para Windows CE

SIEMENS MM 2900R1 Meters


SIEMENS ZMB 405CT Meters
SIEMENS ZMU 102A Meters
SIEMENS ZMU 202C Meters
LANDIS & GYR DATAGYR FAF
LANDIS & GYR DATAGYR FCL
LANDIS & GYR DATAGYR FAG
LANDIS & GYR DATAGYR FBC
LANDIS & GYR DATAGYR METCOM
LANDIS & GYR RMx.x
LANDIS & GYR RMTi.bf6
LANDIS & GYR RMC
LANDIS & GYR RMCS
LANDIS & GYR TARIGYR EKM647M
LANDIS & GYR ZMD 405 CTS Meters
LANDIS & GYR ZMD 410 CTS Meters
LANDIS & GYR ZMD 410CTSAT Meters
LANDIS & GYR ZMD 410CTSAT Meters
LANDIS & GYR ZMD 410CTSCD Meters
LANDIS & GYR ZMD 402CTSAT Meters
LANDIS & GYR ZMD
LANDIS & GYR ZMG
LANDIS & GYR ZMQ
ZIV 5 CTR Meters
ZIV 5 CTE Meters

CPKSoft Ingeniería
Drivers para comunicación
industrial.

www.cpksoft.com.ar
carlos@cpksoft.com.ar

tel: 54-11-45788354

1990-2015

pág. 36/36

También podría gustarte