Universidad Técnica de Ambato

10
UNIVERSIDAD TÉCNICA DE AMBATO MÓDULO DE INTERFAZ DE PC Santiago Barahona [email protected] PROTOCOLO MODBUS AUTOR: ELMER S. BARAHONA G. AMBATO, 7 DE JUNIO DEL 2015

description

protocolo modbus

Transcript of Universidad Técnica de Ambato

  • UNIVERSIDAD TCNICA DE

    AMBATO MDULO DE INTERFAZ DE PC

    Santiago Barahona [email protected]

    PROTOCOLO MODBUS

    AUTOR: ELMER S. BARAHONA G. AMBATO, 7 DE JUNIO DEL 2015

  • Introduccin

    El MODBUS es un protocolo de comunicacin serial basado en el modelo

    maestro/esclavo, a la fecha es un estndar de facto, es pblico, muy seguro, no

    requiere licencias y su implementacin es relativamente fcil en dispositivos

    electrnicos, por ejemplo nuestros ingenieros, usan el microcontrolador

    PIC16F648A programado para responder comandos MODBUS, esas son

    algunas de las razones por las que goza de muchsima aceptacin, adems de

    que tiene ms de 30 aos en la industria.

    Desarrollo

    El Protocolo MODBUS

    Historia

    Hasta los aos 60, el control industrial se vena realizando mediante lgica

    cableada a base de rels electromecnicos. El desarrollo de la electrnica hizo

    posible la implantacin de los dispositivos con microprocesador, tambin

    llamados Autmatas Programables o Controladores Lgicos Programables.

    La historia del protocolo Modbus va ligada a la historia de los PLCs. El PLC

    (Controlador Lgico Programable) apareci con el propsito de eliminar el

    enorme costo que significaba el mantenimiento de un sistema de control

    electromecnico (basado en rels) a finales de los aos 60.

    La empresa Bedford Associates (Bedford, MA) propuso a General Motors un

    sistema que permita realizar cambios en las maniobras de un equipo de

    control sin necesidad de modificar el cableado. A este sistema le di el nombre

    de: Modular Digital Controller, o MODICON. El MODICON 084 fue el primer

    PLC producido comercialmente.

    La posibilidad de comunicar equipos apareci por el ao 1973. El primer

    sistema que lo hizo servir fu Modbus de Modicon. Permita establecer

    comunicaciones Maestro-Esclavo y Cliente-Servidor entre dispositivos

    inteligentes y con dispositivos de campo (Transmitir seales digitales,

  • analgicas, registros e informacin de estado entre ellos)

    La posibilidad de conectar los autmatas entre s permiti eliminar casi todo el

    cableado de control entre mquinas, quedando solamente una lnea de

    comunicacin entre ellas. A travs de sta se poda coordinar el

    funcionamiento de todos los componentes de un sistema, programar a

    distancia, supervisar remotamente, diagnsticar todos los elementos

    conectados,etc.

    Debido a las dificultades que siempre han presentado los sistemas cerrados

    (propietarios), en 1979, Modicon public de forma abierta y estandariz el

    protocolo, ganando inmediatamente seguidores en la industria, debido a que:

    El cdigo era totalmente abierto y libre de royalties

    Fcil y rpido de implementar

    Intercambio sencillo de informacin entre equipos

    Modbus define una estructura de mensaje que los controladores podrn

    reconocer y utilizar sin tener en cuenta el tipo de red que stos harn servir

    para comunicarse.

    [3]

    Que es Modbus?

    El MODBUS es un protocolo de comunicacin serial basado en el modelo

    maestro/esclavo, Modbus funciona siempre en modo maestro-esclavo (cliente -

    servidor), siendo el maestro (cliente) quien controla en todo momento las

    comunicaciones con los esclavos que pueden ser hasta 247. Los esclavos

    (servidores) se limitan a retornar los datos solicitados o a ejecutar la accin

    indicada por el maestro.

    Cada esclavo debe tener una nica direccin, as el maestro sabe con quin se

    debe comunicar.

    [1]

  • Figura 1. Una relacin entre Maestro-Esclavo

    Cableado y acceso al medio

    Modbus hace servir RS-232C, que define las caractersticas fsicas de la

    conexin.

    La comunicacin es del tipo Maestro-Esclavo. Un maestro Modbus puede ser

    un ordenador central o un Panel de Operador, mientras que un esclavo puede

    ser un autmata programable.

    A nivel fsico (cableado y estructura de red) se pueden presentar distintas

    variantes de cableado:

    Interfaz RS232:Cableado punto a punto basado en el estndar TIA/EIA-

    232-E. Utilizado para distancias cortas y comunicacin entre dos

    equipos.

    Interfaz RS485: Cableado multipunto basado en el estndar TIA/EIA-

    485-E. Es un bus con la lnea de comunicacin balanceada (permite

    mayores distancias que la comunicacin RS232) y con varios

    participantes simultneos (Las direcciones vlidas van desde 0 a 247).

    Habitualmente se implementa mediante 2 hilos, pero tambin existe la

    posibilidad de utilizar un cableado de 4 hilos.

    [2]

    El acceso al medio se realiza mediante un modelo maestro/esclavo. Un nodo

    principal (maestro) realiza peticiones explcitas a cada uno de los esclavos y

  • procesa sus respuestas. Los esclavos no transmitirn nunca datos a no ser que

    sean preguntados por el maestro y no podrn comunicarse entre s.

    En cuanto al formato de los datos que se transmiten por la red, se distinguen

    dos tipos de

    modos de transmisin:

    RTU (Remote Terminal Unit):Formato de transmisin binario (8 bits de

    datos en cada byte transmitido). Es el formato habitual para la

    transmisin de datos entre equipos.

    ASCII: Formato basado en caracteres ASCII, en que cada grupo de 4

    bits del formato RTU se codifica con un carcter ASCII (carcter

    hexadecimal representado en ASCII).

    [3]

    Estructura:

    Como en cualquier protocolo de campo destinado al intercambio de informacin

    entre un servidor y los dispositivos esclavo, el protocolo Modbus RTU sigue una

    estructura de trama bien definida por campos. Como veris la estructura de

  • trama Modbus es muy sencilla, siendo uno de los motivos de su xito junto a ser

    un protocolo abierto y a no estar orientado a conexin

    As pues la estructura bsica de una trama Modbus RTU, tanto de lectura como

    escritura, es la que se muestra a continuacin:

    Direccin Esclavo

    Limita el nmero de esclavos que podemos tener conectados de forma correcta

    al bus serie Modbus. Dado que existen direcciones reservadas para propsitos

    especiales como el broadcast el valor que puede ir de 1 a 247.

    Valor comprendido entre 1-247.

    No se v afectado por si se trata de una trama de escritura o lectura.

    Cuando el master pregunta al slave este campo contiene la direccin del

    slave al que va dirigido. Cuando se trata de una trama de respuesta de

    un slave al master este campo contiene tambin la direccin del esclavo

    indicando quin es el que responde.

    Funcin Modbus

    Con este campo se especifica que accin requiere el master del slave al que va

    dirigida la trama. Con el paso de los aos se han ido aadiendo ms funciones

    especificas. En cualquier caso, os explico las mas utilizadas y/o genricas.

    En este caso, el valor contenido en este campo si que puede variar si se trata de

    una trama Master->Slave o si por el contrario es Slave->Master. El valor de este

    byte se ver modificado en la trama de respuesta slo cuando exista algn error

    en el campo de datos de la trama Modbus enviada por el Master, no cuando el

    cdigo de comprobacin de errores de esta sea errneo. Reiterando lo dicho, si

    la trama del Master es correcta, la trama de respuesta tiene este byte con el

    mismo valor. En el caso de existir error el Slave responder con la misma funcin

  • que en la trama enviada por el Master pero con la mscara 080 aplicada. Por

    ejemplo: si el mster enva una trama con funcin 003 correcta el Slave

    responder con el mismo campo y el mismo valor, 003; si por el contrario

    contiene algn error, el Master aplicar la mscara 080 y responder con una

    trama con el valor 083. Poco a poco, mas adelante explicar con mas detalle la

    trama de error de respuesta para que quede mas claro. Ahora centrmonos en

    los casos no excepcionales y sin error. Pues primero se gatea y despus se

    camina.

    Funciones de lectura de datos:

    Funcin 01 (01 hex): Lectura de seales discretas de salida (Discrete

    Output Coils)

    Funcin 02 (02 hex): Lectura de seales discretas de entradas

    (Discrete Input Contacts)

    Funcin 03 (03 hex): Lectura de registros analgicos (Analog Output

    Holding Registers)

    Funcin 04 (04 hex): Lectura de registros analgicos de entrada

    (Analog Input Registers)

    Funciones de escritura de datos:

    Funcin 05 (05 hex): Escritura de una seal discreta de salida (Simple

    Discrete Output Coil)

    Funcin 15 (0F hex): Escritura de mltiples seales discretas de salida

    (Mltiple Discrete Output Coils)

    Funcin 06 (06 hex): Escritura de un Simple Analog Output Holding

    Register

    Funcin 16 (10 hex): Escritura Mltiple Analog Output Holding

    Registers

  • Byte de datos

    Este campo depender tanto en contenido como en longitud de la funcin que

    se indique en el campo anterior (Funcin) as como de si se trata de una trama

    Master-Slave o de respuesta Slave-Master.

    En este post podis ver como son cada una de las funciones. He preferido

    dedicarle un post por su variabilidad.

    CRC Campo de comprobacin de errores

    Este campo consta de dos bytes y como en cualquier otro protocolo en el caso

    de Modbus sirve para la deteccin de errores en la trama. El CRC (Cyclic

    Redundancy Check o comprobacin de redundancia cclica) es un cdigo ms

    que frecuente en la deteccin de errores en redes digitales, sistemas de

    almacenamiento para la deteccin de modificacin accidental de los datos o en

    este caso para comprobar la integridad de los datos en su transmisin por buses

    de campo.

    Para el clculo del CRC se utilizan cada uno de los bytes que conforman la trama.

    El procedimiento es el siguiente:

  • Se enva la trama Modbus con el CRC calculado.

    El receptor del mensaje recibe la trama completa e internamente calcula

    el CRC con los datos recibidos. Y lo compara con el CRC que le ha

    llegado.

    o Si el cdigo coincide, la trama Modbus es correcta y se prosigue

    con el funcionamiento normal generando la respuesta pertinente.

    o Si el cdigo es errneo, es decir que no coincide el CRC recibido

    con el CRC no se responder a la peticin de datos por parte del

    Slave, de manera que ocurrir un Timeout en recepcin del Master

    y este deber entender que el Slave no ha recibido la trama

    correctamente y proceder a un reintento.

    [4]

    Conclusiones:

    Modbus es el estndar de facto de la industria desde 1979, que permite

    comunicarse a millones dispositivos de automatizacin.

  • Modbus se utiliza para monitorear y programar dispositivos; para

    comunicar dispositivos inteligentes con sensores e instrumentos; para

    supervisar los dispositivos de campo utilizando PCs y HMIs.

    Modbus es tambin un protocolo ideal para aplicaciones RTU donde se

    utiliza comunicacin inalmbrica

    Cada esclavo tiene su propia direccin, que puede ir desde 1 hasta 247.

    El maestro siempre inicia la comunicacin enviando un paquete de

    informacin bien estructurado a todos los esclavos, entre otras muchas

    cosas en la informacin se incluye el nmero del esclavo.

    El esclavo elegido responde, enviando lo que se le pide por medio

    tambin de un paquete de informacin bien estructurado.

    Referencias:

    [1] A. Creus Sol, Transmisores, Instrumentacin Industrial. 8Ed, Editorial

    Marcombo.

    [2] J. Colomer LLins, J. Melndez, J. Ayza, Introduccin a la monitorizacin y

    supervisin experta de procesos: mtodos y herramientas, Sistemas de

    supervisin., 1ra, Editorial Cetisa Boixareu, 2000.

    [3] Informacin Detallada sobre el Protocolo Modbus [Online] 2014, Disponible

    en: file:///C:/Users/Jorge/Downloads/NI-Tutorial-52134-es.pdf.

    [4] Modbus [Online] Disponible en: http://www.modbus.org/