Práctica 5

Anuncio
Práctica 5MODBUS: Bus Modbus
1
Objetivos
El objetivo de esta práctica es la utilización y la programación de una red Modbus. El alumno
debe ser capaz de:
• Diferenciar los tres niveles fundamentales de la red Modbus:
1. Nivel físico: RS485.
2. Nivel de protocolo. Trama básica del protocolo Modbus: cabecera, funciones,
direcciones, datos, CRC. Organización maestro/esclavo.
3. Nivel de aplicación. Tipos de funciones disponibles en el equipo que se
conecta vía Modbus. Datos que se pueden leer del equipo. Información que se
puede enviar al equipo.
•
2
Trabajar la red Modbus en modo programación y en modo mantenimiento:
1. Programación: montar la red con un maestro y varios esclavos. Programar el
maestro para crear un sistema complejo dirigido por el maestro (un PC o un
PLC). Aquí se incluye la versión más básica donde el maestro es la herramienta
Windmill.
2. Mantenimiento: utilizar una herramienta como Windmill para capturar la
información que circula entre maestro y esclavos con el fin de detectar
anomalías. La herramienta trabaja como un espía.
Tiempo de laboratorio
1 sesión.
3
Primeros pasos con el CP2003
En este apartado el alumno aprenderá a establecer una comunicación básica con el
multiconvertidor CP2003 a través de la RS485 mediante protocolo MODBUS para leer
información. También aprenderá a trabajar con el Windmill en modo maestro de una red
Modbus y con el Windmill en modo espía. El alumno aprenderá los primeros pasos que debe
seguir cuando, en la vida profesional, tiene que poner en marcha un nuevo aparato: ver el
manual del equipo, establecer la red, utilizar un programa de prueba (en nuestro caso
Windmill), intentar los ejemplos más sencillos que da el fabricante en su manual, etc.
El CP2003 es un multiconvertidor que mide tensión, intensidad, potencia, etc. Permite enviar
dichas medidas a un ordenador o a un centro de control a través de una RS485 mediante
protocolo MODBUS.
MODBUS es un protocolo que permite ver a un instrumento, desde un sistema remoto, como un
banco de registros contiguos. Cada registro tiene una dirección dentro del rango 0x0000 a
0xFFFF, y tiene un tamaño de 16 bits. Su equivalente, pensando en una CPU, es un mapa de
memoria de 16 bits en el bus de direcciones y 16 bits en el bus de datos. Según el tipo de
instrumento, no todos los registros están disponibles y cada uno almacena un determinado tipo
de información (tensión, intensidad, etc.) o tiene una determinada función (activar/desactivar un
relé, disparar una alarma, etc.). El protocolo MODBUS permite, mediante tramas enviadas a
través de la RS485, consultar o actualizar el valor de dichos registros. Las tramas básicas del
protocolo son las correspondientes a las funciones o comandos 0x04 (lectura de registros), 0x06
(escritura de un registro) y 0x10 (escritura de múltiples registros).
Práctica 5.
1
Hay más funciones que el alumno puede consultar en el manual del equipo (ver web del
laboratorio http://www.dea.icai.upcomillas.es/jarm). En la página 3 del manual del CP2003 se
describe el formato de las tramas que acepta el equipo. A partir de la página 13 del manual hay
ejemplos de las tramas que acepta y de las tramas que responde.
El primer paso es comprobar que el equipo funciona. Este paso se basa en utilizar los ejemplos
que lleva el manual del CP2003. En la práctica profesional, cuando se recibe un nuevo equipo,
el primer paso es intentar una comunicación sencilla siguiendo los ejemplos que da el
fabricante. En este caso, siguiendo la página 13 del manual, utilizaremos el comando 0x04 para
leer el número de serie del aparato, que se encuentra a partir de la dirección 0x04B0 y que
ocupa 5 registros (10 bytes). Como indica el manual del fabricante, existe una dirección
genérica ante la cual responden todos los equipos. Esta dirección es la 0xC7 (199 en decimal).
Hay que tener en cuenta que cuando se utiliza esta dirección, sólo debe haber un equipo
conectado al bus, para evitar colisiones en las respuestas.
Para consultar el número de serie siga los siguientes pasos:
1. Conecte el conversor RS232/RS485 de la siguiente forma: por el lado de la red RS232
al COM1 del ordenador; y por el lado de la red RS485 al CP2003. No se olvide conectar
una resistencia de carga en cada uno de los dos extremos del bus RS485.
2. Arranque el programa Windmill con la configuración COM1, 9600, 8 bits, sin paridad
y un bit de stop.
3. Envíe al CP2003 el siguiente comando, escrito en hexadecimal, para preguntarle su
número de serie: 0xC7, 0x04, 0x04, 0xB0, 0x00, 0x05, CRC.
CRC es un número de 16 bits que es calculado como el CRC del resto de la trama. Para
incluir el CRC pulse CRC en el menú superior. Windmill lo calcula automáticamente
cada vez que se envía la trama. Ante el comando enviado, el CP2003 deberá responder
tal y como se muestra en la siguiente figura:
Nota importante: Si todos los grupos del laboratorio están conectados al mismo
instrumento, sólo un grupo podrá hablar en cada momento con el instrumento, para evitar
colisiones en las tramas. En la ventana de respuesta del Windmill del resto de grupos
aparecerá la conversación entre el grupo que está hablando (maestro) con el CP2003
(esclavo). Los grupos que sólo escuchan están actuando como espías. El modo espía es muy
útil en la práctica para detectar problemas en una red Modbus o de otro tipo. Por
Práctica 5.
2
ejemplo: en un Windmill en modo espía se puede ver el verdadero CRC que envía el
Windmill que está trabajando en modo maestro.
En la página 13 del manual se describe lo que envía el CP2003 (primer ejemplo). A lo largo del
manual del CP2003 aparecen una serie de tablas donde se indica la información que se puede
encontrar en cada dirección o la función que se puede ejecutar. Por desgracia, las direcciones
indicadas no son absolutas, sino relativas a una dirección base. En el caso del CP2003 la
dirección base es 1000 (si no se modifica). Por ejemplo: en la tabla del apartado 1.2.6 se dice
que el número de serie se encuentra a partir del registro situado en la dirección 200. La
verdadera dirección no es 200 sino 1200 (0x04B0), como ya hemos visto en el ejemplo anterior.
Siguiendo las páginas 13, 11 y 3 del manual, explique la trama enviada al CP2003 en el ejemplo
anterior y la trama de respuesta del CP2003. Para determinar el verdadero valor del CRC mire
lo capturado en el Windmill de otro grupo, trabajando en modo espía.
Resultados a entregar al final de la sesión:
Explique la trama enviada al CP2003 y lo que devuelve (caso de preguntar por el
número de serie).
Siguiendo el ejemplo anterior lea el tipo de aparato (ver tabla 1.2.6 del manual del CP2003). El
número de registros a leer es 3. Póngase de acuerdo con el resto de grupos para evitar
demasiadas colisiones a la hora de acceder al CP2003.
Resultados a entregar al final de la sesión:
Explique la trama enviada al CP2003 y lo que devuelve (caso de preguntar por el tipo
de aparato). En este caso y en los siguientes no es necesario indicar el valor real del
CRC enviado, basta con indicar CRC al final de la trama.
4
Lectura de datos del CP2003
En este apartado el alumno comprenderá la problemática de trabajar con información de
varios tipos (byte, cadena de caracteres, palabra o word, datos en coma flotante) distribuida
sobre un esquema rígido de registros de 16 bits.
El CP2003 maneja, entre otros, los siguientes tipos de datos:
• Byte: ocupa los 8 bits bajos de un registro de 16 bits. La parte alta está a 0x00.
• Word o palabra: ocupa un registro completo de 16 bits.
• IEEE32: es el formato de coma flotante simple (32 bits) y ocupa 2 registros. Cuando se
transmite, primero se envía el registro bajo y después el registro alto. En el anexo 2
(página 17 del manual del CP2003) se explica cómo pasar de coma flotante en binario a
decimal. Ejemplo: 0x40A00000 significa 5. Sin embargo, en la trama aparece como
0x00, 0x00, 0x40, 0xA0.
• String o cadena de caracteres: Es una cadena de caracteres que utiliza registros
contiguos, 1 registro por cada 2 caracteres. Es el caso del ejemplo del apartado anterior.
4.1
Lectura de datos de tipo byte
Siguiendo la tabla del apartado 1.2.6, leer la dirección Modbus del equipo. Para ello enviar al
CP2003 la trama 0xC7, 0x04, 0x04, 0xB5, 0x00, 0x01, CRC. El equipo responderá con su
dirección.
Resultados a entregar al final de la sesión:
Práctica 5.
3
Explique la trama enviada al CP2003 y lo que devuelve (caso de preguntar por la
dirección del aparato).
4.2
Lectura de datos de tipo IEEE
Siguiendo la tabla del apartado 1.2.2, leer la escala de intensidad del aparato. Recuerde que
ocupa 2 registros. Comprobar que coincide con lo indicado en la tabla de características del
aparato (5 Amperios).
Resultados a entregar al final de la sesión:
Explique la trama enviada al CP2003 y lo que devuelve (caso de preguntar por la
escala de intensidad del aparato). Convertir la escala de formato binario según
IEEE32 a decimal.
De igual forma preguntar al CP2003 por la escala de tensión.
Resultados a entregar al final de la sesión:
Explique la trama enviada al CP2003 y lo que devuelve (caso de preguntar por la
escala de tensión del aparato). Convertir la escala de formato binario según IEEE32 a
decimal.
5
Escritura de datos en el CP2003
Mediante la función de escritura (0x06 o 0x10) se pueden activar los 2 relés de salida del
CP2003 (RL0 y RL1). Conectar: la borna de 24 V a los 24 V del PLC de la mesa; la borna RL0,
al piloto rojo; la borna RL1, al piloto verde; y las bornas libres de los pilotos, a la masa del PLC.
De esta forma se podrá identificar correctamente la maniobra.
Según el manual del CP2003, para trabajar con los relés, primero hay que configurarlos en
modo SW y después activarlos o desactivarlos (página 11 del manual). Siga los siguientes
pasos:
1. Envíe 0xDireccion, 0x06, 0x04, 0xB9, 0x00, 0x01, CRC para configurar los relés
en modo SW (tabla del apartado 1.2.7), donde 0xDirección corresponde con la
dirección del equipo en hexadecimal, obtenida en el apartado 4.1.
2. Envíe 0xDireccion, 0x06, 0x04, 0xBA, 0x00, 0x01, CRC para activar el RL0.
3. Envíe 0xDireccion, 0x06, 0x04, 0xBA, 0x00, 0x00, CRC para desactivar el RL0.
Realice la misma maniobra de activar y desactivar el relé RL1.
Resultados a entregar al final de la sesión:
Indique las tramas enviadas al CP2003 y su respuesta para el caso del relé RL1.
6
Manejo de un segundo aparato en la red MODBUS: multiconvertidor
MAR144.
En este apartado el alumno trabajará con dos esclavos sobre una única red Modbus.
El MAR144 es un convertidor de gama superior al CP2003, que permite visualizar las medidas
realizadas por el equipo in situ a través de su display, además de transmitirlas según protocolo
MODBUS a través de una RS485. La organización de los registros es prácticamente idéntica al
CP2003 (consúltese la documentación del equipo en la página web del laboratorio).
Práctica 5.
4
Al igual que el CP2003, el MAR144 responde a la dirección de dispositivo genérica 0xC7 (199
en decimal), por lo que, hasta que se conozca su dirección, es obligatorio tener conectado
únicamente el MAR144 en la red RS485.
Siguiendo los pasos del apartado 3 y el manual del aparato, lea el número de serie. Tenga en
cuenta que, al igual que en el CP2003, las direcciones que se indican en las diferentes tablas del
documento, son direcciones relativas. La dirección base es la 1000.
Resultados a entregar al final de la sesión:
Indique las tramas enviadas al MAR144 y su respuesta para leer el número de
serie.
De igual forma, active y desactive los relés RL0 y RL1 del MAR144.
Resultados a entregar al final de la sesión:
Indique las tramas enviadas al MAR144 y su respuesta para activar/desactivar los
relés.
Ahora conecte el CP2003 a la red RS485 junto con el MAR144, siempre y cuando las
direcciones de ambos dispositivos sean distintas. Si son iguales, antes de conectar el CP2003,
hay que modificar la dirección del MAR144. Siga los siguientes pasos:
1. Consulte la dirección MODBUS del equipo: envíe la trama 0xC7, 0x04, 0x04, 0xB5,
0x00, 0x01, CRC.
2. Compare la dirección obtenida en la respuesta ante la pregunta anterior, y la dirección
del CP2003 obtenida en el apartado 4.1.
3. Si son distintas, conecte el CP2003 a la red RS485, con lo que tendrá una red con dos
dispositivos esclavos: un CP2003 y un MAR144. Continúe en el punto 5.
4. Si son iguales, es necesario cambiar la dirección de uno de ellos para evitar colisiones
en el bus. En este caso vamos a modificar la dirección del MAR144, que es el que
tenemos conectado. Para ello hay que enviar la trama 0xC7, 0x06, 0x04, 0xB5, 0x00,
0xDirección, CRC; donde 0xDirección es un valor distinto de la dirección del
CP2003.
5. Ahora se puede conectar el CP2003 a la red RS485 junto con el MAR144.
Compruebe que sigue funcionando la conexión con el MAR144 y que también se puede
comunicar con el CP2003 (por ejemplo, active los relés del MAR144 y del CP2003 de forma
independiente).
7
Cálculo del CRC (Opcional).
Siguiendo el anexo 4 del manual del CP2003, prepare un programa en C para comprobar que el
CRC calculado por el Windmill es correcto. Para saber cuál el valor del CRC calculado por el
Windmill hay que mirar en el Windmill de otro grupo que esté trabajando en modo espía.
Práctica 5.
5
Práctica 5.
6
Plantilla para resultados 5Modbus
Alumno_____________________________________________________
Apartado 3
Pregunta por el número de serie: Explique la trama enviada al CP2003 y lo que
devuelve.
Pregunta:
Respuesta:
______________________________________________________________________
______________________________________________________________________
______________________________________________________________________
______________________________________________________________________
Pregunta por el tipo de aparato: Explique la trama enviada al CP2003 y lo que
devuelve. En este caso y en los siguientes no es necesario indicar el valor real del
CRC enviado, basta con indicar CRC al final de la trama.
Pregunta:
Respuesta:
______________________________________________________________________
______________________________________________________________________
______________________________________________________________________
______________________________________________________________________
Apartado 4
Pregunta por la dirección del aparato: Explique la trama enviada al CP2003 y lo
que devuelve.
Pregunta:
Respuesta:
______________________________________________________________________
______________________________________________________________________
______________________________________________________________________
______________________________________________________________________
Pregunta por la escala de intensidad del aparato: Explique la trama enviada al
CP2003 y lo que devuelve. Convertir la escala de formato binario según IEEE32 a
decimal.
Pregunta:
Respuesta:
Práctica 5.
7
______________________________________________________________________
______________________________________________________________________
______________________________________________________________________
______________________________________________________________________
Pregunta por la escala de tensión del aparato: Explique la trama enviada al
CP2003 y lo que devuelve. Convertir la escala de formato binario según IEEE32 a
decimal.
Pregunta:
Respuesta:
______________________________________________________________________
______________________________________________________________________
______________________________________________________________________
______________________________________________________________________
Apartado 5
Indique las tramas enviadas al CP2003 y su respuesta para el caso del relé RL1.
Pregunta:
Respuesta:
Objetivo:
Pregunta:
Respuesta:
Objetivo:
Pregunta:
Respuesta:
Objetivo:
Apartado 6
Indique las tramas enviadas al MAR144 y su respuesta para leer el número de
serie.
Pregunta:
Respuesta:
Indique las tramas enviadas al MAR144 y su respuesta para activar/desactivar los
relés.
Pregunta:
Respuesta:
Objetivo:
Pregunta:
Respuesta:
Objetivo:
Práctica 5.
8
Pregunta:
Respuesta:
Objetivo:
Pregunta:
Respuesta:
Objetivo:
Apartado 7
Entregar copia del código al profesor.
Práctica 5.
9
Descargar