Sie sind auf Seite 1von 6

Informtica Industrial: Comunicaciones Modbus RTU con Automatas ...

1 de 6

Ms

http://blog.goshield.es/2012/12/comunicaciones-modbus-rtu-con-automat...

Siguiente blog

Crear un blog

Acceder

Informacin til acerca de sistemas industriales tales como PLCs, Electrnica, Microcontroladores, Electrnica
Reconfigurable, control de motores, control de sistemas dinmicos, etc.

LUNES, 3 DE DICIEMBRE DE 2012

Comunicaciones Modbus RTU con Automatas OMRON CP1L


En este articulo, se pretende dar una gua de como montar un sistema de gestin de
comunicaciones con autmatas CP1L, que permita gestionar el envo y recepcin de
informacin a travs de protocolo modbus RTU, de forma sencilla y estandarizada. Permite la
gestin de las comunicaciones de una forma centralizada y extensible, por lo que sin mucha
complicacin es posible extender el uso para nuevos tipos de tramas. En este enlace se puede
encontrar un documento sobre como realizar las comunicaciones modbus RTU de forma
sencilla con un autmata CP1L. Este documento es un extracto de la gua completa de
dicho autmata. Aqu veremos los conceptos ms importantes y como aplicarlos a un caso
particular.

GOOGLE+

GoShield

En primer lugar comenzaremos viendo como configurar el puerto de comunicaciones


del autmata. Si se realiza un doble click en el men de la izquierda sobre el tem del rbol de
proyecto "Configuracin" aparecer el cuadro de dialogo de configuraciones generales
del autmata. Una vez ah, se elige la pestaa "Configuracin de entrada Puerto Serie 1"
"Configuracin de entrada Puerto Serie 2" segn corresponda y se selecciona la opcin
Configuracin Personalizada. Una vez ah, hay que configura la velocidad del puerto, y el
formato de trama
. En la

casilla Modo, hay que seleccionar el sistema que interese, en el caso que nos atae
seleccionaremos Puerta de enlace serie.

23 nos tienen en sus


crculos.

Ver
todo

BUSCAR

SUSCRIBIRME POR CORREO ELECTNICO

CATEGORAS

comprar electronica

Una vez configurado el puerto de configuraciones hay que cargarla al autmata, seleccionando
que enve la configuracin
.Ya
continuacin es preciso reiniciar el autmata para que cargue la nueva configuracin.

conceptos bsicos
OMRON
PostgreSQL
Programando PIC en C

Una vez configurado, se puede comenzar a comunicar, pero primero veamos los detalles
bsicos a tener en cuenta. La configuracin de la trama modbus, se almacena en direcciones de
memoria DM
. Los autmatas CP1L-M
incorporan dos puertos de comunicaciones, y la trama se almacena entre la direccin D32200 y
32249 para el puerto 1 y entre la D32300 y 32349 para el puerto 2. Sin embargo para la CPU
CP1L-L slo hay un puerto de comunicaciones y se emplean los ltimos
, cuidado con esto ltimo.

Proyectos de Alumnos
Raspberry Pi
Shields
Solucin problemas
Trabajos Personales
Tutorial

ARCHIVO DEL BLOG

10/11/2016 05:28 p.m.

Informtica Industrial: Comunicaciones Modbus RTU con Automatas ...

2 de 6

http://blog.goshield.es/2012/12/comunicaciones-modbus-rtu-con-automat...

De igual modo, la respuesta recibida se almacena en las direcciones entre D32250 y 32299 para
el puerto 1 y entre la D32350 y 32399 para el puerto 2 en las CPUs CP1L-M. Y entre las D32350
y D32399 en las versiones CP1L-L de la CPU.

2014
2013
2012

En las siguientes figuras se muestra el formato que debe tener la trama para poder ser enviada
y para poder procesar adecuadamente la respuesta recibida. En primer lugar se puede ver que
utilizando como direccin base 32300 32200 segn corresponda, se tiene que en la primera
palabra base+0 se debe escribir la direccin de esclavo modbus al que se desea mandar el
comando. Para ello se escribir en la parte baja de la palabra y no en la parte alta
. De igual modo ocurre en la segunda
palabra con direccin base+1, en la que se escribe la funcin de modbus a emplear. Esto no
coincide con la definicin estandar de modbus. Segn el protocolo modbus, estos dos datos
estaran incluidos en los primeros 16 bits enviados, a modo de cabecera, por lo que no hay que
confundir una cosa con la otra. A continuacin se escribe en base+2 el nmero de bytes a enviar
a partir de esta palabra, es decir si el comando completo tiene una longitud de 6 bytes en total
, habr que

escribir un 4 en esta direccin. A continuacin de aqu, se debe escribir normalmente el resto del
comando, utilizando adecuadamente la parte alta y baja de los registros.
Veamos un ejemplo practico:

diciembre
Algunos detalles de
implementacin con
Omron
Comunicaciones Modbus
RTU con Automatas
OMRON CP1L...
noviembre
septiembre
agosto
julio
mayo
abril
marzo
enero

Si hay que enviar un comando Run a un variador de frecuencia MX2 que acte como
esclavo con direccin 1, el comando a enviar sera 01-05-00-00-FF-00 (para conocer mas
detalles sobre este mensaje puedes consultar aqu la referencia de aplicacin del
protocolo modbus en modbus.org). Los dos primeros bytes correspondera como se ha dicho
con la direccin de esclavo modbus y cdigo de funcin, mientras que los cuatro siguientes son
la direccin de memoria donde se desea escribir y el valor

. Tambin como curiosidad, si


se observa el Apendice B
manual del variador MX2 referenciado antes, se puede
observar que la direccin de memoria para el comando Run indicada en el manual es 0001 y en
el comando se escribe la 0000, esto se debe a que en Modbus para direccionar la posicin N de
memoria hay que escribir la N-1. Por tanto habra que escribir un 0000 en la direccin base+3 y
un FF00 en la direccin base+4.
.

2011

GOSHIELD

Go Shield
Cursos de Robtica
Mster en Automtica y
Robtica

INFORMTICA INDUSTRIAL

Entradas
Comentarios

El formato de las respuestas es el mismo desplazado a las direcciones comentadas antes. En la


parte baja del registro con direccin base+50 se tiene la direccin del esclavo que ha respondido
y en la parte baja de la direccin base+51 se tiene el cdigo de funcin del comando al que se
est respondiendo. En la direccin base+52 el cdigo de error
y en la posicin
base+53 se tiene el nmero de bytes recibidos, los cuales se encontrarn en las direcciones
siguientes.

10/11/2016 05:28 p.m.

Informtica Industrial: Comunicaciones Modbus RTU con Automatas ...

3 de 6

http://blog.goshield.es/2012/12/comunicaciones-modbus-rtu-con-automat...

Una vez que se tiene configurada la funcin a enviar, si se desea enviar el comando a travs del
puerto serie, se utiliza la palabra de funcin A640 para las CPUs CP1L-L en el puerto 1 bien
para las CPUs CP1L-M en el puerto 2. Lo mismo que se explica a continuacin, se realiza con la
palabra A641 para el puerto 1 en las CPUs CP1L-M. En nusetro caso utilizamos una CPU CP1L
tipo L, por lo que para enviar se activa la bobina A640.0 y cuando se reciba una
respuesta correcta la bobina A640.1 se activar automticamente. Si por el contrariop se recibe
una respuesta errnea o si se produce un problema de comunicacin se activar la bobina
A640.2. Para gestionar esto se propone crear un programa
en
el que se crear una seccin llamada comunicaciones_common y que contendr la gestin
comn de las comunicaciones. Esta seccin contendr el siguiente cdigo:

Comenzaremos explicando este cdigo desde el centro, ya que todo el cdigo se sustenta en la
variable com_EnviandoTrama. Se trata de una variable con enclavamiento, que se activa con la
seal set_EnviandoTrama y se desactiva con reset_EnviandoTrama. Esta seal es la que activa
el bit A640.0 que indica el inicio de la comunicacin. Adems se emplean dos temporizadores
para gestionar el envo automtico de una trama en caso de error del envo. La parte
interesante de este sistema es que se centraliza la comunicacin en variables independientes
que habr que ir aadiendo a las dos ltimos diagramas, en la activacin de
set_EnviandoTrama, se aade el flanco de subida de las variables de comunicacin segn la
trama que se desea enviar y en la de reset se aade el flanco de bajada de la misma variable.
Es decir, cada vez que se desea aadir un nuevo comando a utilizar, se crea una
variable asociada que gestione dicho comando
que en su
flanco de subida activa set_EnviandoTrama y en su flanco de bajada activa
reset_EnviandoTrama.
Despus se crea una seccin comn llamada, por ejemplo, comun_escribirDireccion. En ella se
debe realizar la escritura en las direcciones base+
de aquellas cosas comunes en

10/11/2016 05:28 p.m.

Informtica Industrial: Comunicaciones Modbus RTU con Automatas ...

4 de 6

http://blog.goshield.es/2012/12/comunicaciones-modbus-rtu-con-automat...

todos los comandos configurados. Esto no es obligatorio pero permite ahorrar algo de memoria.
En este caso todos los comandos configurados se dirigen al esclavo 4 y tienen una longitud de 6
bytes

por lo que se aade el


cdigo correspondiente en esa seccin:

A continuacin se aconseja utilizar una seccin nueva por cada comando donde se configurar
la trama de envio. En nuestro caso _COM_LecturaConsigna. Esta escritura requerir que se
encuentren activas la seal com_EnviandoTrama y la variable de control de comunicaciones del
comando correspondiente, tal como se puede ver a continuacin:

Como se ve en el caso anterior, aqu se configura el resto del comando a enviar. En la parte final
de esta seccin, se tiene un control de set y reset de dicha variable, de forma que no
se acta nunca directamente sobre la variable sino a travs de seales de ser y reset. De forma
que si se requiere activar dicho comando desde diferentes sitios del cdigo se puede aadir
seales de set y reset segn sea necesario, evitando as escribir varias veces sobre la misma
variable.
Para el tratamiento de la respuesta hay que extraer los datos de las direcciones comentadas
anteriormente

y por ltimo se mover el resultado de


la extraccin a una direccin
. Esto ltimo como puede verse si
que depende directamente de que sea un comando u otro el que se est configurando, por este
motivo se aade la nueva condicin a dicha accin, en concreto en este caso se realiza una
divisin del valor
y un movimiento final a la

variable donde lo podremos consultar cuando lo deseemos a partir de este momento


. Por ltimo se puede observar que se utiliza
una seal com_Realizada para indicar que la comunicacin ha terminado
. Esta seal se activa con la seal

set_EnviandoTrama de manera que se activa en el instante en que se va a iniciar una


comunicacin.

10/11/2016 05:28 p.m.

Informtica Industrial: Comunicaciones Modbus RTU con Automatas ...

5 de 6

http://blog.goshield.es/2012/12/comunicaciones-modbus-rtu-con-automat...

Por ltimo, el uso de este sistema para la realizacin de una comunicacin se puede resumir en
tres estados. Un primer estado que activa la seal de envo a travs de set_LeerConsigna. Un
segundo estado que espera a que la comunicacin se realice satisfactoriamente

y por ltimo un estado


que realiza el reset de la variable activando la seal reset_LeerConsigna. Este ltimo habr de
esperar a que se desactive la variable com_EnviandoTrama para activar un flag que permite
salir de dicho estado. Dichas condiciones y activaciones se deben realizar en las secciones
correspondientes segn la metodologa que se est empleando. La programacin si se emplean
las guas recomendadas es muy sencilla aplicando este sistema a cualquiera de ellas. Aqu
un extracto de como quedara el uso comentado:

Como ventajas de este mecanismo, es que permite ampliar fcilmente el uso de nuevos
comandos modbus, permite el uso de estos desde diferentes puntos del cdigo de forma sencilla
y eficiente a nivel de espacio. Adems su diseo modular permite su uso a travs de infinidad de
modos de programacin aunque se recomienda su uso junto a las guas generales de
programacin de autmatas OMRON publicadas en este blog.
En este documento se muestran otras formas de realizar comunicaciones con automatas
OMRON empleando bloques de funcin, lo que ser tratado en otro momento.
Publicado por Ivan Perea Fuentes en 12:31

Etiquetas: Comunicaciones, ModBus, OMRON, PLC, redes

10/11/2016 05:28 p.m.

Informtica Industrial: Comunicaciones Modbus RTU con Automatas ...

6 de 6

Entrada ms reciente

Pgina principal

http://blog.goshield.es/2012/12/comunicaciones-modbus-rtu-con-automat...

Entrada antigua

Suscribirse a: Enviar comentarios

Por Ivn Perea Fuentes. Las imgenes de las plantillas son obra de Dizzo. Con la tecnologa de Blogger.

10/11/2016 05:28 p.m.

Das könnte Ihnen auch gefallen