logoup_v

COMUNICACIONES archivos - Kryon Ingenieria– Kryon Ingenieria

Category Archives: Comunicaciones

Puerto RS232

PUERTO RS232 INTERFACE DE COMUNICACIÓN

Dentro de las interfaces de comunicación serial, que se encuentran en el mercado y de muy amplia utilización por los diferentes fabricantes de equipos, se encuentra la interface puerto RS232  de la cual hablaremos a continuación.

La Interface de comunicación puerto RS-232 (popularmente llamada Puerto RS232 de Comunicación), conocida como (EIA/TIA RS-232C), es una interface normalizada para el intercambio de datos binarios entre un DTE (Data Terminal Equipment) y un DCE (Data Communication Equipment), utiliza para la comunicación un conector tipo DB-25 (de 25 pines), o DB-9 (de 9 pines), en algunos casos se encuentra también el conector tipo Bornera, el conector RJ45 (utilizado comúnmente en las conexiones entre Computadores a través de Switches , Routers etc.)  o el conector Mini-Din. En la figura “Puerto RS 232 PIN-OUT” encontramos la definición de cada pin y su correspondencia para ambos tipos de conector DB-25 y DB-9, también encontramos la disposición física de cada pin tanto para el conector DB-9 macho como para el conector DB-9 hembra. Actualmente el tipo de conector más utilizado es el DB-9.

Puerto RS232 PIN-OUT

Puerto rs232

La distancia máxima por norma de la interface puerto RS-232 para transmitir información, es de 15 metros, y para velocidades de comunicación no superiores a 20 kbps, pero en determinadas ocasiones donde no sea tan crítico si se pierde la comunicación, se pueden superar estos valores tanto en longitud como en velocidad con un resultado aceptable, pero la idea es siempre ajustarse a la norma. No trataremos los diferentes tipos de comunicación, tan solo los nombraremos. La interface puerto RS232 puede trabajar en comunicación asíncrona o síncrona y en forma Simplex (los datos siempre viajarán en un solo sentido, por ejemplo desde el DCE a DTE), o en forma Half Duplex (los datos pueden viajar en ambas direcciones, pero no simultáneamente), o en forma Full Duplex (los datos pueden viajar en ambos sentidos simultáneamente).

 Los valores de tensión que maneja la interface puerto RS232 son: Para el valor lógico de uno (1)  se corresponde a una tensión negativa que puede oscilar entre el valor de tensión –3 a –15V, y para el valor lógico cero (0)  se corresponde a una tensión positiva que puede oscilar entre el valor de tensión +3 a +15V. Los valores de tensiones en el rango de -3 V a +3 V se define como una región de transición, en dicha región, el valor no se define ni como uno (1)  ni como cero (0). A nivel práctico, los valores de tensión que se manejan son –12V para un valor de uno (1)  y +12V para un valor de cero (0).

La interface puerto RS 232 está definida para la comunicación punto a punto, es decir, que sólo podemos tener comunicación máximo entre dos (2) equipos, uno que trabajará como DCE y el otro que trabajará  como DTE,  en la figura “PUERTO RS232 COMUNICACIÓN PUNTO A PUNTO” podemos observar este tipo de comunicación, encontramos un Computador conectado a un equipo de Protecciones Eléctricas, hasta aquí podemos decir que los dos (2) equipos se encuentran conectados, aunque el hecho de solamente estar conectados, no es garantía de que se puedan comunicar, lo primero que habría que tener en cuenta, es que la conexión física del cable esté de acuerdo al tipo de pines que se deben de conectar entre los dos equipos y si existe algún tipo de puentes entre los diferentes pines de cada equipo que se deba realizar; esto lo define el fabricante de los equipos y es un requerimiento a seguir para poder lograr la comunicación, en la práctica, muchos fabricantes sólo requieren para la comunicación los pines 2,3 y 5 que equivalen a los pines RxD, TxD y GND del conector DB-9, (tener cuidado que en algunos casos será necesario cruzar los cables, esto es, intercambiar los terminales RxD con TxD en alguno de los extremos del cable). En los casos en que un equipo posea un conector tipo DB-25 y el otro equipo posea un conector tipo DB-9, será necesario hacer el cable con estos tipos de conectores, pero si nuestro cable es DB-9 a DB-9, se puede también utilizar un conversor de DB-25 a DB-9 y con esto solucionaremos el problema de conexionado.

Como mencionamos antes, para lograr la comunicación entre dos (2) equipos, lo primero es tenerlos conectados en sus extremos de acuerdo a los requerimientos de conexión recomendados por los fabricantes de los equipos, lo segundo, es garantizar que los parámetros de comunicación de cada equipo sean iguales, es decir, que los parámetros de comunicación como dirección física del equipo, velocidad, paridad, número de bits a transmitir y el número de bits de parada, sean iguales en ambos equipos, logrando esto, sólo hemos garantizado que las condiciones están dadas para lograr la comunicación; lo tercero que se requiere para lograr dicha comunicación, es que ambos equipos hablen el mismo idioma (Ej: Para una persona que sólo habla Español, no es posible comunicarse con otra persona que hable solamente Ruso), es decir, que hablen el mismo protocolo de comunicación, si no hablan el mismo protocolo de comunicación no va a ser posible lograr la comunicación, aunque se hayan logrado culminar los dos primeros pasos mencionados. Cumplidos los tres primeros pasos, todavía no es posible lograr la comunicación, dado que es como si nos encontráramos con otra persona que habla el mismo idioma que nosotros pero ninguna de las dos personas pronuncia palabra alguna, por eso es que se necesita el paso cuatro, que es que el participante  que va a funcionar como Maestro (el equipo que pregunta),  inicie la conversación y el que va a funcionar como Esclavo (equipo que responde)  responda a las preguntas del Maestro; en algunos casos,  el hablar el mismo protocolo de comunicación, tampoco nos garantiza la comunicación, esto es, podemos hablar el mismo idioma, pero si el léxico de una de las personas es muy diferente del léxico de la otra, no va a ser posible la comunicación; en el caso de tener el mismo protocolo de comunicación, puede pasar que algunas funciones o formas de comunicarse de un equipo no las entienda el otro equipo, en parte o en su totalidad, aunque ambos hablen el mismo protocolo de comunicación, razón por la cual, antes de proceder con la compra de un equipo o de comunicarnos con algún equipo determinado, debemos de verificar la compatibilidad aún sabiendo que tenemos el mismo protocolo de comunicación.

El tipo de comunicación que encontramos normalmente a través de esta interface puerto RS232, es  del tipo Maestro / Esclavo.  En el caso de la figura de ejemplo, el Computador se va a comunicar con el equipo de protección eléctrica, utilizando el Software de configuración del fabricante, en este software configuramos los parámetros de comunicación: Dirección física del equipo = 1, Velocidad = 9600 Baudios, Paridad = NONE, número de Bits a transmitir = 8  y número de Bits de parada =  1, valores que deben de configurarse también el el equipo de Protección Eléctrica, para lograr la comunicación; se sobreentiende que los pines de conexionado están de acuerdo a los requerimientos del fabricante del equipo, y que el protocolo de comunicación de ambos equipos sea el mismo, que para el caso del ejemplo sería el protocolo de comunicación “Modbus RTU”, ya con esto a través del software se puede lograr la conexión y configurar el equipo o simplemente  adquirir información del equipo.

 PUERTO RS 232 COMUNICACIÓN PUNTO A PUNTO

Puerto rs232

Como conclusión referente a la interface puerto RS232, debemos de hacer diferencia entre:

  • Tipo de conector a utilizar, que puede ser DB-9, DB-25 y en algunos casos conectores tipo Bornera, RJ45 o Mini-Din, los conectores forman parte integral de la interfase puerto RS232.
  • Interface a utilizar, que para este caso es RS232 (llamada también Puerto RS232, esta interface o puerto, es toda la parte Hardware o la electrónica incluído el conector “DB-9, DB-25, RJ45 etc, el que sea”), que permite manejar los diferentes niveles de tensión y la transmisión de las señales eléctricas,  así como también, la forma en que la información es transmitida.
  • Protocolo de comunicación, que es el lenguaje o mejor dicho las reglas, la semántica, la forma  como se va a transmitir la  información.

Quiero anotar que a través de los tipos de conector  mencionados anteriormente, también podemos utilizarlos con otro tipo de interfaces, luego el tener un tipo de conector determinado en un equipo no nos define que tipo de interface posee ese equipo, así como también, el tener una interface determinada en un equipo,  no nos define que tipo de protocolo de comunicación tiene ese equipo, por ende no hay que confundir los términos.

Nota: Como norma, la interface puerto RS232 se utiliza como punto a punto, pero existen casos aislados en que algunos fabricantes no la han tenido encuenta y por eso encontramos comunicaciones por el puerto RS232 del tipo Multipunto, es decir, encontramos un red de equipos en que un participante funciona como Maestro y los demás funcionan como Esclavos (recordar que la dirección física de los Esclavos no debe de repetirse, o lo que es lo mismo, deben de tener diferente dirección física), pero esta funcionalidad no es de mucha aplicabilidad dada las distancias de comunicación tan cortas (15 Metros según norma) que puede manejar esta interface.

KRYON: Si piensas que tienes que Ver para Creer, entonces estas más Ciego de lo que Crees.

IEC 61850 Protocolo Subestaciones

IEC 61850

Dentro de los Protocolos de Comunicación abiertos que son utilizados a nivel de control y adquisición de información en Subestaciones Eléctricas, encontramos los siguientes: Protocolo Modbus RTU , Modbus TCP, IEC60870-5-101,  IEC60870-5-103, IEC60870-5-104, DNP3.0  e IEC 61850, este último se ha consagrado como el estandar a nivel de Subestaciones y por ende es sobre el que vamos a tratar.

La norma IEC 61850 se publico en el 2003/2004 bajo el nombre de  “IEC 61850 Redes y Sistemas de Comunicación en Subestaciones” pretendiendo sólo ser la descripción de las comunicaciones entre equipos y sistemas al interior de las subestaciones, pero en estos momentos la norma va  más alla, incluyendo Comunicación entre Procesos, Modelos de Objetos Normalizados y Extensibles, Lenguaje de Extensión Normalizado, Especificación de las Pruebas de Conformidad  etc.

Los tres objetivos principales de la norma son:

  • Que los diferentes equipos IEDs, sean capaces de intercambiar información de una forma segura y confiable.
  • Debera permitir a Fabricantes y Empresas del sector Eléctrico, un grado de libertad para requerimientos específicos.
  • Debera ser capaz, de incorporar los adelantos tecnológicos en las comunicaciones así como también soportar cambios en los requerimientos de los sistemas.

En la figura “IEC 61850 VISTA GENERAL”  de la norma, se puede observar: Aspectos del Sistema (Partes 1 a 5), Configuración (Parte 6), Modelos de Datos y Servicios Abstractos de Comunicación (Partes 7-1 a 7-4),  Mapeos de Comunicación (Partes 8-1,9-1 y 9-2) y Pruebas  de Conformidad (Parte 10).

 IEC 61850 VISTA GENERAL

IEC 61850

En la figura “IEC 61850 LO QUE SE PUEDE LOGRAR CON LA NORMA”, se identifica claramente lo que se puede lograr con la aplicación de la norma, se define la estructura para la Protección y el Control, la comunicación entre dispositivos (IEDs), la representación de los almacenamientos de la fallas en los dispositivos en formato Comtrade, la sincronización de los dispositivos a traves de protocolos de comunicación como NTP (Network Time Protocol), SNTP (Simple Network Time Protocol)  e IEEE 1588 (PTP Precision Time Protocol), se toma como base el estandar Ethernet (IEEE 802.3), a la vez la comunicación se basa en  el estandar TCP-IP,  se estandariza el lenguaje de descripción de la Subestación y se define el Sistema de Configuración.

IEC 61850 LO QUE SE PUEDE LOGRAR CON LA NORMA

circulo En la figura “IEC 61850 GRUPOS”, vemos que  la norma define 13 grupos, los cauales están identificados cada uno por una letra, como ejemplo, el grupo M representa al grupo de Medidas Eléctricas, como Voltajes, Corrientes, Potencias, etc.,  el grupo P representa al grupo de las Protecciones Eléctricas, como Protección de Distancia, Protección de Sobrecorriente, Protección por Sobrefrecuencia etc., y así sucesivamente de acuerdo a cada letra se tendra el grupo de funciones respectivo.

IEC 61850 GRUPOS

Grupos

En la figura “IEC 61850 NODOS” se puede apreciar que  cada grupo está subdividido en nodos lógicos, en total se tienen 92 nodos lógicos. Como ejemplo en el caso del grupo R (Protection Relate Functions), este está subdividido en 10 nodos lógicos; como ejemplo, PDIR que hace referencia a la protección diferencial, PDIS haciendo referencia a la protección de distancia, PTUV que hace referencia a la protección por bajo voltaje y así sucesivamente para cada grupo está definido la caracteriística de cada nodo lógico.

IEC 61850 NODOS

Nodos

En la figura “IEC 61850 CLASES”, vemos que la norma define 355 clases y la cantidad de elementos que contiene cada clase; como ejemplo tomamos la clase de mediciones (Measurands) la cual contiene 66 elementos, tomamos el primer elemento de la clase, el elemento  A, este elemento nos define que la medida que se está tomando es la corriente entre la fase 1 y tierra o la corriente entre la fase 2 y tierra o la corriente entre la la fase 3 y tierra, valores que son medidos en amperios; si se toma el elemento Ang, este nos define que el valor que se está midiendo es el ángulo de fase entre el voltaje y la corriente de cada una de las fases, o sea el ángulo entre el voltaje y la corriente de la fase 1, o de la fase 2 o de la fase 3, y así sucesivamente para cada clase se tendrán los correspondientes elementos.

 IEC 61850 CLASES

Clases

En la figura “IEC 61850 VISTA GENERAL MODELO DE DATOS”, se puede apreciar como el IEC61850, utiliza el concepto de virtualización en la creación del modelo de datos, modelando la información de equipos reales encontrados en subestaciones, proporcionando una imagen del mundo físico al sistema de automatización de la subestación. Este modelo de datos, tiene una organización gerárquica, que consta de cinco niveles como se aprecia en la figura, como ejemplo se aprecia que el (XCBR) representa a un Interruptor y el (MMXU) representa una medición eléctrica.

  • El nivel 1, que corresponde al Sevidor, es el nivel gerárquico más alto, y representa al dispositivo físico (IED) el cual contiene la información y posee un punto de conexión al mundo exterior a través de la red de comunicaciones.
  • El nivel 2, corresponde al Dispositivo Lógico (Logical Device LD), permite la subdivisión de un dispositivo físico en varias partes distintas, cada una de las cuales recibe el nombre de “Dispositivo Lógico”, esta subdivisión permite la organización de los datos dependiendo de su aplicación o función, lo cual permite identificar y gestionar los datos más fácilmente. El número de dispositivos lógicos no está definido en la norma, los fabricantes son libres de implementar soluciones particulares.
  • El nivel 3, es el Nodo Lógico (Logical Node LN), en el proceso de virtualización, los dispositivos y las funciones de aplicación se descomponen en Nodos Lógicos, y se organizán al interior de los dispositivos lógicos. Los nodos lógicos corresponden a funciones establecidas en los dispositivos físicos. Todos los nodos lógicos normalizados tienen un nombre de 4 caracteres.
  • El nivel 4, es el Objeto de Datos  (Data Object DO), de acuerdo a su funcionalidad, cada nodo lógico contiene un cierto número de datos, en la norma se define que objeto de datos debe de contener cada nodo lógico, y los datos tienen una estructura y sintaxis bien definida.
  • El nivel 5, es el Atributo de Datos (Data Attribute DA), cada objeto de datos contiene atributos específicos, los cuales contienen información detallada del valor del objeto de datos.  Dado que muchos de los objetos tienen siempre los mismos atributos de datos, la norma define las clases comunes de datos (Common Data Classes CDC), una CDC define que atributos se incluyen en un tipo específico de datos.

IEC 61850 VISTA GENERAL MODELO DE DATOS

Logical Device

KRYON: El más rico no es el que más tiene, sino el que menos necesita.

Binario a Decimal (Bin, Octal, Hex y Flotante)

CONVERSION DE DATOS  DE BINARIO A DECIMAL, OCTAL Y HEXADECIMAL

En el ámbito de las comunicaciones y en especial en lo referente al Protocolo de comunicación MODBUS, la conversión de datos de binario a decimal y otros es muy importante, se trabaja mucho con Bits (un Bit tan solo puede tener el valor TRUE o FALSE, o en términos mas entendibles, puede tener el valor UNO o el valor CERO).

Se define el BYTE como una palabra (Word) de 8 Bits y que puede almacenar un valor comprendido entre el valor Cero y el valor 255; también se define el REGISTRO como 2 BYTEs (Words) consecutivas, lo cual quiere decir que la unión de 2 BYTEs nos genera un  Registro de 16 Bits, en dicho registro se puede almacenar un valor comprendido entre el valor Cero y el valor 65535.

También podemos tener registros de 32 Bits, que se generan al unir dos registros de 16 Bits consecutivos y que son llamados comúnmente como ENTEROS LARGOS y en dichos registros se puede almacenar un valor comprendido entre el valor Cero y el valor 4.294.967.295.

La Tabla 1, nos muestra como un registro de 16 Bits se divide en 2 BYTEs “Primer BYTE menos significativo (8 Bits)  y Segundo BYTE mas significativo (8 Bits) ”; también se muestra el valor en decimal del Primer BYTE (valor 45) y el valor en decimal del Segundo BYTE (113), lo mismo para el registro de 16 Bits, el cual tiene un valor en decimal de 28973.

Cómo se obtuvo el valor en decimal del Primer BYTE?, como vemos el Primer BYTE tiene el valor en binario de 00101101, y el peso para cada Bit respectivamente es 128, 64, 32,16, 8, 4, 2, 1; el valor en decimal del Primer BYTE sale de la suma de multiplicar el peso que tiene cada Bit por el valor del Bit, por ende dicho valor es: 128*0 + 64*0 + 32*1 + 16*0 + 8*1 + 4*1 + 2*0 + 1*1 = 45.

Para obtener el valor del Segundo BYTE, se hace de la misma forma, el valor binario del Segundo BYTE es 01110001 y los pesos de cada Bit respectivamente son 128, 64, 32,16, 8, 4, 2, 1; el valor en decimal del Segundo BYTE sale de la suma de multiplicar el peso que tiene cada Bit por el valor del Bit, por ende dicho valor es: 128*0 + 64*1 + 32*1 + 16*1 + 8*0 + 4*0 + 2*0+ 1*1 = 113.

Para obtener el valor del Registro de 16 Bits (2 BYTES consecutivos) se realiza de la misma forma, el valor binario del registro de 16 bits es: 0111000100101101 y los pesos de cada Bit respectivamente son 32768, 16384, 8192, 4096, 2048, 1024, 512, 256, 128, 64, 32, 16, 8, 4, 2, 1; con lo cual el valor decimal del registro sería: 32768*0 + 16384*1 + 8192*1 + 4096*1 + 2048*0 + 1024*0 + 512*0 + 256*1 + 128*0 + 64*0 + 32*1 + 16*0 + 8*1 + 4*1 + 2*0 + 1*1 = 28973.

Las Tablas TABLA 2 y TABLA 3  son otros ejemplos de conversión de valores, son mostrados como ejemplos para verificar si hemos entendido bien el concepto o no.

En las Tablas  TABLA 4, TABLA 5 y TABLA 6 se presentan ejemplos de conversión de valores de Binario a Decimal, a Octal y a Hexadecimal, estos son ejemplos colocados para analizarlos, dado que sabiendo el concepto de Binario y de Decimal, podemos fácilmente extrapolar este concepto a los formatos Octal y Hexadecimal .

Recordemos que los números en Octal van del cero al 7, esto es: 0, 1, 2, 3, 4, 5, 6, 7, 10, 11,1 2, 13, 14, 15, 16, 17, 20, 21, 22, 23, 24, 25, 26, 27, 30….etc.

Los números en Hexadecimal van del cero a la F, esto es: 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, A, B, C, D, E, F, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 1A, 1B, 1C, 1D, 1E, 1F, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 2A, 2B, 2C, 2D, 2E, 2F, 30…..etc.

CONVERSION DE DATOS KRYON TABLA 1

Binario a Decimal

 CONVERSION DE DATOS KRYON TABLA 2

Binario a Decimal

CONVERSION DE DATOS KRYON TABLA 3

Binario a Decimal

CONVERSION DE DATOS KRYON TABLA 4

Binario a Decimal

CONVERSION DE DATOS KRYON TABLA 5

Binario a Decimal

CONVERSION DE DATOS KRYON TABLA 6

Binario a Decimal

 

 Puedes descargar el archivo de conversion de datos en Excel oprimiendo el Mouse sobre el Link Mostrado en color Azul

El ejemplo en Excel, muestra la conversión de valores de Binario a decimal (Octal y Hexadecimal); de Decimal a (Binario, Octal y Hexadecimal); de Octal a (Binario, Decimal y Hexadecimal) y de Hexadecimal a (Binario, Decimal y Octal).

Convertir Valores - Bin, Dec, Octal y Hex - Excel

El siguiente ejemplo en Excel, muestra la conversión de un valor Binario, registro de 32 bits segun norma IEEE 754 Precisión Simple a un valor en punto Flotante.

Convertir valor Binario a Flotante - Excel

Video conversión valores de Binario a Decimal

 

Ver video en Youtube

Video Conversión de valores de Binario a Octal

 

Conversión de valores de Binario a Hexadecimal

 

KRYON: Nada es imposible, sólo que nos cuesta un poquito. Conversion de datos

Modbus Protocolo de Comunicación

Modbus Protocolo de comunicación

Para entender un poco mas el protocolo MODBUS y sus funciones, haremos un pequeño repaso de como fué su desarrollo.

Este protocolo de comunicación, lo desarrolló MODICON para la comunicación entre sus PLCs (Programmable Logic Controllers), en estos PLCs se definió para su configuración lo siguiente:

Las entradas digitales del PLC, (Inputs) se denominarían 1x, esto quiere decir que las entradas digitales se almacenarían en posiciones de memoria que irían en las direcciones 10001 en adelante. Como ejemplo, la Entrada 1 tendría su representación en la dirección de memoria 10001, la Entrada 2 tendría su representación en la dirección de memoria 10002 y así sucesivamente.

Las salidas digitales del PLC, (Coils) se denominarían 0x, esto quiere decir que las salidas digitales se almacenarían en posiciones de memoria que irían en las direcciones 00001 en adelante. Como ejemplo, la Salida 1 tendría su representación en la dirección de memoria 00001, la Salida 2 tendría su representación en la dirección de memoria 00002 y así sucesivamente.

Los registros de Lectura / Escritura del PLC, (Holding Registers) se denominarían 4x, esto quiere decir que existe un área de memoria donde se puede almacenar información en forma de registros de 16 bits, área que comienza a partir de la dirección 40001. Como ejemplo, la información contenida en el primer registro tendría su representación en la dirección de memoria 40001, la información contenida en el segundo registro tendría su representación en la dirección de memoria 40002 y así sucesivamente.

Los registros de configuración de los módulos análogos de Entrada / Salida del PLC, (Input Registers) de sólo lectura, se denominarían 3x, lo que quiere decir que existe un área de memoria donde el PLC almacena información referente a la configuración de dichos módulos, esta información es guardada en forma de registros de 16 bits, área que comienza a partir de la dirección 30001. Como ejemplo, la información contenida en el primer registro tendría su representación en la dirección de memoria 30001, la información contenida en el segundo registro tendría su representación en la dirección de memoria 30002 y así sucesivamente.

Teniendo en cuenta esta información, para la definición del protocolo, se definió que si se quería leer el estado de las entradas digitales o lo que es lo mismo, saber si una entrada en particular o varias entradas en particular se encontraban activadas o no, se utilizaría la función MODBUS referenciada así: Función 02 Read Input Staus.

Para poder leer el estado de las salidas digitales del PLC (Coils), saber si determinadas salidas se encontraban activadas o no, la función MODBUS a utilizar sería: Función 01 Read Coils.

Si quisiésemos escribir en las direcciones de memoria de las salidas digitales, o mejor dicho si quisiéramos activar o desactivar una determinada salida en particular, la función MODBUS a utilizar sería: Función 05 Write Single Coil. Para el caso que quisiéramos activar o desactivar varias salidas simultáneamente, la función MODBUS a utilizar sería: Función 15 Write Múltiple Coils.

Para leer los registros del tipo 4x (uno o varios registros), la función MODBUS a utilizar sería: Función 03 Read Holding Register. Para el caso de querer escribir tan solo un único registro, la función MODBUS a utilizar sería:Función 06 Write Single Register, y en el caso de querer escribir múltiples registros, la función MODBUS a utilizar sería: Función 16 Write Múltiple Register.

En el caso de los registros 3x, registros de sólo lectura, para leer un solo registro o leer múltiples registros, la función MODBUS a utilizar sería: Función 04 Read Input Register.

El protocolo Modbus es del tipo MAESTRO / ESCLAVO, (MAESTRO el que pregunta, ESCLAVO el que responde) esto quiere decir que en una red de equipos, tan sólo uno de ellos puede ser el MAESTRO, los demás deben de ser ESCALVOS, el dispositivo MAESTRO es el único que puede preguntar, y los dispositivos ESCLAVOS tan solo pueden responder a las peticiones del MAESTRO, los dispositivos ESCLAVOS, están identificados por un número comprendido entre el 1 y el 255, nigún dispositivo en la red debe de tener el mismo número de identificación, así el MAESTRO sabe con que dispositivo comunicarse, y a la vez, cada dispositivo ESCLAVO, sabe cuando le están preguntando.

En la Figura “FUNCIONES MODBUS”  se encuentra un resumen de las diferentes funciones modbus, el significadao de cada una de ellas y el código de función correspondiente.

MODBUS FUNCIONES

Modbus

Como vemos, dentro del protocolo existen muchas funciones,  pero las más  relevantes son las siguientes :

  • 02 Read Input Status
  • 01 Read Coils
  • 05 Write Single Coil
  • 15 Write Multiple Coils
  • 04 Read Input Register
  • 03 Read Holding Register
  • 06 Write Single Register
  • 16 Write Multiple Registers

No trataremos la Función 8 Diagnostic, dado que sólo algunos equipos (Esclavos) la requieren para iniciar cualquier tipo de conversación, es decir, si un dispositivo Maestro, intenta comunicacrse con un dispositivo Esclavo, y este requiere de la función 8 para establecer la comunicación, el dispositivo maestro antes de realizar cualquier petición o función modbus (como la función 02,03,04,05,06 etc.) debe primero ejecutar la función 8, de lo contrario el dispositivo esclavo nunca le respondera.

Teniendo estas funciones como base, vamos a ver un ejemplo de como se crea una lectura de un equipo que tiene configurado como dirección física el valor de 1 y tiene configurado los valores 675 en la dirección de memoria 17 y el valor 994 en la dirección de memoria 18, si representáramos los valores 675 y 994  en formato Hexadecimal tendríamos los valores 02A3 y 03E2 respectivamente.

Si el equipo que interroga utiliza la función Modbus 03 Read Holding Register para leer 2 registros comenzando en  la dirección 17, este equipo debe configurar un FRAME como el mostrado en la TABLA 1 y enviarlo al equipo con el que se quiere comunicar y esperar la respuesta. Los valores mostrados en el FRAME se encuentran en formato Hexadecimal.

En la TABLA 1A, se encuentra el FRAME que responde el equipo al ser interrogado. Los valores mostrados en el FRAME se encuentran en formato Hexadecimal.

 MODBUS FUNCIÓN 03 PreguntaModbus

MODBUS FUNCIÓN 03 RespuestaModbus

En la TABLA 2, encontramos la función modbus 05, como vemos el frame de pregunta es el mismo frame de respuesta (TABLA 2A). En caso de querer  colocar la misma coil (33) en posición OFF, el frame de pregunra seria: 01 05 00 20 00 00 cc 00, y el frame de respuesta seria exactamente igual; para colocar cualquier otra coil en posición ON o en posición OFF, sólo cambiaria en el frame la dirección de memoria y por ende el CRC.

MODBUS FUNCIÓN 05 PreguntaModbus

MODBUS FUNCIÓN 05 RespuestaModbus

En la TABLA 3, encontramos la función modbus 03 Read Colils, en este ejemplo se van a leer 16 Coils comenzando con la número 1, (El valor almacenado de Coils  en el dispositivo del que se quiere leer es: 0100001000001101) cuyo valor de la parte baja del registro o los primeros 8 bits en decimal es 13 o su equivalente en hexadecimal 0D, el valor de la parte alta del registro o los bits del 9 al 16 es de 66 en decimal o de 42 en su equivalente hexadecimal).  En la respuesta, “TABLA 3A”, se tiene que como la cantidad de Coils es de 16,  entonces se requieren 2 BYTEs (Número de Bytes en la Respuesta) de información en la respuesta, y en la parte del frame (Cantidad de Coils (Bits) a leer) se tiene el número 10 en hexadecimal, que equivale a 16 en decimal. El valor del estado de los primeros 8 bits es (oD hexadecimal) o “00001101” en binario, y el valor de los bits del 9 al 16 es (42 hexadecimal) o “01000010” en binario.

MODBUS FUNCIÓN 01 PreguntaModbus

MODBUS FUNCIÓN 01 RespuestaModbus

En la “TABLA 4”, encontramos la función modbus 06 Write Single Register, en este ejemplo se va a colocar el valor 9876 en decimal al registro 5 del dispositivo al que se le quiere escribir, si colocamos el valor 9876 en formato hexadecimal tendriamos el valor 2694, que es el valor referenciado el la casilla “Valor Registro a Escribir”. En la “TABLA 4A” vemos que el frame de respuesta es el mismo que el de la pregunta.

MODBUS FUNCIÓN 06 PreguntaModbus

MODBUS FUNCIÓN 06 RespuestaModbus

En la “TABLA 5”, encontramos la función modbus 16 Write Multiple Register, con la cual vamos a escribir 2 registros a partir de la dirección de memoria 6 del equipo receptor, estos dos valores son en decimal 4106 y 8213 con su correspondiente en hexadecimal “100A y 2015” respectivamente, como se aprecia en la tabla (Valor primer Registro y Valor segundo Registro), se aprecia también la cantidad de registros a leer (2) y la cantidad de Bytes a leer (4).  En la respuesta “TABLA 5A”, en el frame se aprecia el número de registros escritos, que para este caso son 2.

MODBUS FUNCIÓN 16 PreguntaModbus

MODBUS FUNCIÓN 16 RespuestaModbus

En el siguiente Link puedes descargar un programa ejecutable (Windows) que te permite hallar el “Chequeo de Error CRC” de un Frame Modbus,  cuando lo ejecutes te va a aparecer un campo denominado “Código al cual se le debe hallar el CRC”, para el ejemplo de la TABLA 1  se debe de llenar con los valores 010300100002 y oprimir “Ejecutar” seguido del cual en el Campo denominado “Resultado” debe de aparecer el código del Chequeo de Error CRC “CEC5”  que es el código del Chequeo de Erroor CRC del Frame mostrado en la TABLA 1 de forma invertida.

Para el caso de la TABLA 1A se debe de colocar el código 01030402A303E2, y en el Resultado debe de aparecer el código CRC “108B” que es el CRC de la TABLA 1A mostrado de manera invertida.

Con este programa, si conoces el código del Frame que quieres transmitir, puedes hallar el CRC, esto es funcional cuando necesitas enviar una información en particular a un dispositivo desde un simulador o analizador de protocolo que te permita generar el código (Frame).

Cálculo CRC Protocolo Modbus (Windows)

 

MODBUS CRC

El siguiente ejemplo en Excel, muestra la conversión de un valor Binario, registro de 32 bits segun norma IEEE 754 Precisión Simple a un valor en punto Flotante y de Punto Flotante a Binario.

Conv. Binario a Flotante y Flotante a Binario - Excel

Video Protocolo Modbus Parte 1

 

 

Ver Video en Youtube

Video Protocolo Modbus Parte 2

 

 

Video Protocolo Modbus Parte 3

 

 

Video Protocolo Modbus Parte 4

 

 

KRYON: No intentes ser lo que ya eres, por que nunca lo conseguiras. Modbus