G1_RED MODBUS.pdf
-
Upload
luis-alejandro-murillo -
Category
Documents
-
view
35 -
download
1
Transcript of G1_RED MODBUS.pdf
DEPARTAMENTO DE ELÉCTRICA Y ELECTRÓNICA
REDES DIGITALES INDUSTRIALES
GUÍA 2
IMPLEMENTACION DE UNA RED
MODBUS
Desarrollado por:
Andrés Guano
Aprobado por:
Ing. Jaqueline Llanos
INTRODUCCIÓN
El protocolo de comunicaciones industriales MODBUS fue desarrollado en 1979 por la
empresa norteamericana MODICON y debido a que es público, relativamente sencillo de
implementar y flexible se ha convertido en uno de los protocolos de comunicaciones más
populares en sistemas de automatización y control. A parte de que muchos fabricantes
utilizan este protocolo en sus dispositivos, existen también versiones con pequeñas
modificaciones o adaptadas para otros entornos.
MODBUS especifica el procedimiento que el controlador y el esclavo utilizan para
intercambiar datos, el formato de estos datos, y como se tratan los errores. No especifica
estrictamente el tipo de red de comunicaciones a utilizar, por lo que se puede
implementar sobre redes basadas en Ethernet, RS-485, RS-232 etc.
Materiales:
PLC S7 200 cpu 224, 226,226
Cable Modbus
Módulos EM 235
Cable PPI
Conversor serial/USB
Nota: Tener en cuenta las resistencias del cable Modbus.
ENVIÓ DE INFORMACIÓN DEL MAESTRO HACIA EL ESCLAVO
Se va a realizar una comunicación MODBUS entre los puertos Port 0 de 2 CPUs del S7-200.
En la parte del maestro también sería posible la selección del Port 1 con la selección de los
módulos de librería correspondiente "MBUS_CTRL_P1" y "MBUS_MSG_P1". El Port 1 se
conecta con un PC o una PG que tenga el software Micro/WIN. La comunicación entre las
CPUs a través del puerto 0 se realiza con ayuda de un cable PROFIBUS (conexión serie de
los pins 3 y 8).
AJUSTE DE LOS PARÁMETROS
Para la comunicación MODBUS, se utilizan los módulos de librería "MBUS_CTRL" y
"MBUS_MSG" en la parte del maestro y los módulos de librería "MBUS_INIT" y
"MBUS_SLAVE" en la parte del esclavo.
Cree en el Micro/WIN un nuevo proyecto para el maestro y/o el esclavo con los
segmentos y parámetros que se ven en la figura 1.
Hay que tener en cuenta que los parámetros "Baud" y "Parity" deben ser idénticos y que
la dirección "Slave" del módulo "MBUS_MSG" debe coincidir con el parámetro "Addr" del
módulo "MBUS_INIT".
El ajuste de la velocidad de transferencia para el Port 0 en la vista "Módulo de datos del
sistema" del Micro/WIN es irrelevante para el protocolo MODBUS ("Mode" = "1").
Figura 1. Parámetros de configuración de las librerías del protocolo Modbus
Las siguientes tablas describen el significado y las posibilidades de selección de los
parámetros de los módulos de las librerías:
MAESTRO
MBUS_CTRL
Parámetro Significado Posibilidades de selección
EN Liberación
Mode Indicación del protocolo 0 = PPI, 1 = MODBUS
Baud Velocidad de transmisión en kbit/s 1200, 2400, 4800, 9600, 19200, 38400,
57600, 115200
Parity Paridad 0 = Ninguna, 1 = impar, 2 = par
Timeout Tiempo máximo para la respuesta del
esclavo en ms
Done Aviso de finalización
Error Código de error
MBUS_MSG
Parámetro Significado Posibilidades de selección
EN Liberación
First Activación
Slave Dirección del esclavo
RW "lectura" o "escritura" 0 = lectura, 1 = escritura
Addr Dirección de inicio en MOBDUS 0 .. 128 = Salidas digitales A0.0 .. A15.7
10001 .. 10128 = Entradas digitales E0.0
.. E15.7
30001 .. 30092 = Entradas analógicas
AEW0 .. AEW62
40001 .. 49999 = Registros
Count Número de bits (0xxxx, 1xxxx) / Palabras
(3xxxx, 4xxxx)
DataPtr Puntero al inicio de la memoria de
variables
Done Aviso de finalización
Error Código de error
SLAVE MBUS_INIT
Parámetro Significado Posibilidades de selección
EN Liberación
Mode Indicación del protocolo 0 = PPI, 1 = MODBUS
Addr Dirección del esclavo
Baud Velocidad de transferencia en kbit/s 1200, 2400, 4800, 9600, 19200, 38400,
57600, 115200
Parity Paridad 0 = Ninguna, 1 = impar, 2 = par
Delay Protocolización de la señal en ms
MaxIQ Número de entradas y salidas digitales
disponibles
MaxAI Número de palabras analógicas disponibles
MaxHold Número máximo de de entradas de palabras
en los registros
HoldStart Puntero al comienzo de los registros (40001)
Done Aviso de finalización
Error Código de error
Las direcciones reales máximas que se pueden utilizar dependen el tipo de CPU y de sus valores máximos. MBUS_SLAVE
Parámetro Significado Posibilidades de selección
EN Liberación
Done Aviso de finalización
Error Código de error
DIRECCIONAMIENTO DE MEMORIA PARA LAS LIBRERÍAS
Tras la finalización del proyecto, hay que ajustar la memoria para la librería dentro de la
carpeta para los módulos en el contenedor del programa del Micro/WIN. Tenga en cuenta
al reservar la memoria para las librerías que la zona seleccionada no debe sobrescribir la
zona de memoria de variables para datos (en el maestro: "DataPtr" + "Count", y en el
esclavo: "HoldStart" + "MaxHold").
Figura 2. Direccionamiento de memoria para el protocolo Modbus
TRANSMISIÓN DE LOS VALORES DEL REGISTRO
Tras la carga de los proyectos en cada CPU, se puede escribir la zona de memoria de
variables del maestro mediante la activación del estado de tablas, y visualizarlo en la parte
del esclavo:
Activando la entrada I0.0 del maestro, se envía el contenido de la palabra de variables
VW2 a la CPU esclava y se escribe aquí en la palabra de variables VW2.
Esta asignación de valores a los registros está explicada en la figura 3:
El puntero "DataPtr" representa el comienzo de la memoria de variables a leer.
El parámetro "Count" indica en el direccionamiento "Addr" = "4xxxx" (registro de
mantenimiento) el número de palabras a leer.
La zona de memoria de variables a leer se debe escribir en la dirección de registros "Addr"
= "40002" ("RW" = "1").
El registro de mantenimiento hace de memoria intermedia, palabra a palabra, para la zona
de memoria de variables del esclavo:
El puntero "HoldStart" indica la dirección de inicio de la memoria de variables equivalente
a la dirección de inicio del puntero 40001.
De forma que el puntero de memoria de variables del esclavo se calcula de la siguiente
manera:
DataPtr= 2 * (Addr - 40001) + HoldStart = 2 * (40002 - 40001) + &VB0 = &VB2
Además, hay que tener en cuenta que el número máximo de entradas para palabras del
registro "MaxHold" cubra esta zona:
MaxHold >= Addr - 40001 + Count = 40002 - 40001 + 1 = 2
Figura 3. Asignación de valores
Desarrollo:
ENSAMBLAJE DE LA RED MODBUS
1. Reconocer todo los materiales ah utilizarse en la RED como son los siguientes:
PLC S7 200 CPU 224
PLC S7 200 CPU 226
Módulo EM 235
Cable PPI
Conversor Serial/USB
Cable Modbus
2. Conectar el Cable Modbus al PLC S7 200 CPU 224 y a los PLC S7 200 CPU 226 al
puerto 0 ya que el puerto 1 se lo va a utilizar para el cable PPI, tomar en cuenta
que se debe primero programar el PLC S7 200 CPU 200 para luego conectarlo a la
red ya que solo cuenta con un puerto de comunicación.
3. Conectar el módulo EM 235 a un esclavo de la red que nosotros le vamos a asignar para
que pueda realizar el control de la estación de temperatura.
4. Conectar los PLC S7 200 CPU 226 con el cable PPI a la PC, una vez realizado esto
conectar todos los PLC’s a la alimentación.
Reconocimiento del PLC
1. Abrir el STEP 7- Micro/WIN.
2. Conectar físicamente el PLC con la computadora a través del cable PPI y la ayuda
de un conversor de serial a USB.
3. Dirigirse a Comunicación, abrir en el signo más y dar doble clic en Comunicación.
4. Dirigirse a Mi PC, dar clic derecho y abrir las propiedades, dirigirse a Hardware y
dar clic en “Administrador de dispositivos”. Ver en puertos en que puerto se
encuentra conectado el PLC.
5. Dirigirse al botón “Ajustar Interface PG/PC” dar clic, dirigirse a propiedades, ahí se
debe elegir el puerto en el que se encuentra conectado el PLC y se acepta todo.
6. Dirigirse “Haga doble clic para actualizar” y dar doble clic y esperar hasta que se
encuentre al PLC y se acepta.
PROGRAMACIÓN DEL MAESTRO
1. Para programar el maestro se tiene que tomar en cuenta que se tienen dos
esclavos y que se requiere realizar una escritura desde el maestro y luego escuchar
al primer esclavo, después realizar lo mismo para el siguiente esclavo. Para poder
realizar esto se requiere generar una señal tren de pulsos con cuatro marcas, cada
marca activa los mensajes de la red MBUS_MSG en cada flanco positivo dando un
tiempo adecuado entre la activación de las marcas y por ende del envío y
recepción de los datos.
2. Una vez generado el tren de pulsos ahora procedemos a configurar al maestro
para que se comunique en la red Modbus a través del MBUS_CTRL, se tiene que
tomar en cuenta la velocidad y la paridad que vamos a utilizar para poner los
mismo datos en los esclavos.
3. Para realizar el envío y recepción de datos se requiere utilizar del MBUS_MSG, aquí
se va a configurar los siguientes aspectos como son: Slave al cual ponemos el
número del esclavo al que va dirigido el mensaje o del cual recibe el mensaje; RW
0 para lectura y 1 para escritura; Addr la dirección de inicio de Modbus una
diferente para cada mensaje se utiliza direcciones desde la 40001 .. 49999 que son
de tipo Registro pero utilizamos a partir de la 40002; Count = 1; DataPtr es el
puntero al inicio de la memoria de variables el cuál se calcula con la siguiente
fórmula:
Esclavo 1 (Slave 2):
Escritura
Lectura
Esclavo 2 (Slave 3):
Escritura
Lectura
Los bloques quedan configurados de la siguiente manera:
4. Asignamos el valor del potenciómetro SMB28 del maestro y lo enviamos hacia el
esclavo 1, ya que le asignamos a la variable VW2, podemos asignar el valor del
potenciómetro SMB29 para el esclavo 2, pero como vamos a realizar en este
esclavo el control de la estación de temperatura le asignamos a la variable VW6 la
variable VW44 que es un valor que se obtiene desde un HMI ya sea en Intouch o
en Labview.
PROGRAMACIÓN DEL ESCLAVO 1
1. Para programar al esclavo se requiere configurar el MBUS_INIT y el MBUS_SLAVE,
para el MBUS_INIT se debe configurar: Mode =1 para Modbus; Addr que es la
dirección que tiene el esclavo, es decir su nombre; la velocidad y paridad que debe
ser la misma del maestro; Delay =0; MaxIQ = 128 que es el número de entradas y
salidas digitales disponibles; MaxAI que es el número de palabras analógicas
disponibles; MaxHold el cual se calcula con la siguiente fórmula deacuerdo a la
dirección que da el maestro y es el número máximo de de entradas de palabras en
los registros; HoldST = &VB0 que indica la dirección de inicio de la memoria de
variables equivalente a la dirección de inicio del puntero 40001.
2. La variable que llega al esclavo es VW2, esta se le asigna a otra localidad y SMB28.0
que es el potenciómetro se le asigna a VW4, que es el dato que se envía desde el
esclavo hacia el maestro.
PROGRAMACIÓN DEL ESCLAVO 2
1. Para programar al esclavo se requiere configurar el MBUS_INIT y el MBUS_SLAVE,
para el MBUS_INIT se debe configurar: Mode =1 para Modbus; Addr que es la
dirección que tiene el esclavo, es decir su nombre; la velocidad y paridad que debe
ser la misma del maestro; Delay =0; MaxIQ = 128 que es el número de entradas y
salidas digitales disponibles; MaxAI que es el número de palabras analógicas
disponibles; MaxHold el cual se calcula con la siguiente fórmula deacuerdo a la
dirección que da el maestro y es el número máximo de de entradas de palabras en
los registros; HoldST = &VB0 que indica la dirección de inicio de la memoria de
variables equivalente a la dirección de inicio del puntero 40001.
2. SMB28.0 que es el potenciómetro se le asigna a VW8, que es el dato que se envía
desde el esclavo hacia el maestro se lo puede realizar asi solo para comprobar que
hay comunicación pero como se requiere realizar control este paso se omite.
3. La variable que llega al esclavo es VW6 que es la que se tomó desde el maestro y
nos va a dar el valor del set point esta se le asigna a otra localidad VW20 y la
entrada analógica del módulo EM 235 AIW0 se le asigna a VW8, que es el dato que
se envía desde el esclavo hacia el maestro.
4. Se tiene que cambiar la variable de set point vw20 de entero a real como se indica
a continuación y también se configurar el PID que se indicara a continuación
Configuración del PID
1. Dirigirse en MicroWIN a Herramientas/ Asistente de operaciones
2. Elegir PID y dar siguiente.
3. Elegir 0 en el lazo del PID
4. Se colocan los rangos inferiores y superiores a los que la estación se encuentra en nuestro caso son de 20 a 70 °C.
5. Los escalamientos deben ser unipolares como se muestra acontinuación.
6. Dar clic en siguiente, no se configura nada en esta ventana.
7. Se asigna direcciones de memoria diferentes a las que se utilizan en el programa
8. Se puede cambiar de nombre del PID o dar siguiente
9. Se finaliza el asistente y se puede sacar el bloque PID desde las subrutinas.
CONFIGURACIÓN DEL OPC
1. Se va a utilizar el TOP Server, se lo abre y se da clic en add cannel, para añadir un
canal.
2. Se pone el nombre del canal y dar clic en siguiente.
3. Elegir el PLC que se está ocupando S7 200.
4. Elegir el COM en el que se encuentra el PLC y la velocidad a la que se va a trabajar.
El COM se puede ver en Propiedades del Sistema/ Administrador de dispositivos/
Puertos.
5. Dar clic en siguiente.
6. Elegir el Master ID en 0.
7. Finaliza la configuración del canal.
8. Añadir un dispositivo, le damos un nombre y clic en siguiente.
9. Elegir el PLC que se está utilizando.
10. Colocar 2 en Device ID.
11. Dar clic lo demás en siguiente y finalizar la configuración del dispositivo.
12. Crear la tag en la cual se pone el nombre y en la dirección la localidad que se utiliza
en el programa.
13. Crear las demás tag.
14. Dar clic en el martillo OPC, y ver el funcionamiento de las variables.
HMI en Labview
1. Para la programación se requiere de un slide para enviar el valor del set point,
también indicadores para los valores del potenciómetro y de la variable del
proceso.
2. Se da clic derecho en el indicador y se dirige a propiedades, se va a Data Binding,
se elige ahí DataSocket, Acces Type Read/Write, en browse se elige DSTP/SERVER
3. Se dirige a SWToolbox.TOPServer, Channel1 este era el nombre del canal del OPC,
Device1 y se elige la variable a la que va a representar el indicador.
4. Se asignan todas las variables y se corre el programa.
HMI en InTouch
1. Abrir el InTouch dirigirse a ACCESS NAMES y dar clic en Add…
2. Dirigirse a archivos de porgrama/software Toolbox/ TopServer, buscar si existe un archivo
.exe y copiarlo en Application Name. En Access poner cualquier nombre.
3. Dirigirse a Edit, Alias Map
4. Copiar el nombre del Alias Map en Topic Name, elegir SuiteLink.
5. Se pone ok y se cierra el Access Names.
6. Se abre el Tagname Dictionary, en el tagname se pone el nombre de la tag con preferencia
del que se puso en el OPC y se elige el tipo.
7. Se elige variables de tipo I/O INTEGER.
8. Se debe elegir el Acces Name que se creó.
9. Se da clic en el valor en que se va a visualizar los valores de las variables y de le asigna un
valor analógico y se le asigna la variable creada en las tag.
10. Sacar un Real Time-Trend
11. Asignar las tag al Real time trend, la variable que indica el valor del proceso se debe
acondicionar.
12. Se pone en Runtime y se ve el funcionamiento.