Beruflich Dokumente
Kultur Dokumente
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.
GOOGLE+
GoShield
casilla Modo, hay que seleccionar el sistema que interese, en el caso que nos atae
seleccionaremos Puerta de enlace serie.
Ver
todo
BUSCAR
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
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
2011
GOSHIELD
Go Shield
Cursos de Robtica
Mster en Automtica y
Robtica
INFORMTICA INDUSTRIAL
Entradas
Comentarios
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
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
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
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
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
6 de 6
Entrada ms reciente
Pgina principal
http://blog.goshield.es/2012/12/comunicaciones-modbus-rtu-con-automat...
Entrada antigua
Por Ivn Perea Fuentes. Las imgenes de las plantillas son obra de Dizzo. Con la tecnologa de Blogger.