You are on page 1of 39

COMUNCACION DE DATOS Y REDES INDUSTRIALES

INGENIERIA MCATRÓNICA
SESION V

BY:EULER DEZA FIGUEROA


-----------------------------------------------------------------------------------------------------------------------------------------
EULER DEZA FIGUEROA
euler_df28@hotmail.com
CONEXIÓN MODBUS TCP ENTRE
LABVIEW Y ARDUINO

BY:EULER DEZA FIGUEROA


-----------------------------------------------------------------------------------------------------------------------------------------
EULER DEZA FIGUEROA
euler_df28@hotmail.com
CONEXIÓN MODBUS TCP ENTRE
LABVIEW, PLCS7-1200 Y ARDUINO

-----------------------------------------------------------------------------------------------------------------------------------------
EULER DEZA FIGUEROA
euler_df28@hotmail.com
CONEXIÓN MODBUS TCP ENTRE ELS71200 Y ARDUINO…

 Materiales necesarios:
 Shield Ethernet: ENC 28J60
 PLC S7-1200 CPU: 1214 AC/DC/RLY 6ES7214 – 1BG40 – 0XB0
 Cables Ethernet
 Potenciómetro de 10K
 Cablecillo
 Protoboard
 Fuente Regulable de 0v – 30 Vdc
 Sensor Ultrasónico HSRF04

-----------------------------------------------------------------------------------------------------------------------------------------
EULER DEZA FIGUEROA
euler_df28@hotmail.com
CONEXIÓN MODBUS TCP ENTRE ELS71200 Y ARDUINO…
 Corroboramos que todos nuestros equipos involucrados en la
RED MODBUS estén conectados correctamente:

-----------------------------------------------------------------------------------------------------------------------------------------
EULER DEZA FIGUEROA
euler_df28@hotmail.com
PROGRAMA EN ARDUINO

-----------------------------------------------------------------------------------------------------------------------------------------
EULER DEZA FIGUEROA
euler_df28@hotmail.com
CONEXIÓN MODBUS TCP ENTRE ELS71200 Y ARDUINO…
 Creamos un proyecto en arduino y agregamos las librerías
correspondientes al shield Ethernet, en nuestro caso la
ENC28J60

/*
* APLICACION MODBUS TCP - ARDUINO - PLC - LABVIEW
* =================================================
* En la presente aplicacion, se envian datos
* analogicos del Arduino hacia el PLC S7 1200, y a la
* PC, a traves del protocolo de comunicación
* Modbus TCP
*/

#include <EtherCard.h>
//#include <Ethernet.h>
#include <ModbusIP_ENC28J60.h>
#include <Modbus.h>
-----------------------------------------------------------------------------------------------------------------------------------------
EULER DEZA FIGUEROA
euler_df28@hotmail.com
CONEXIÓN MODBUS TCP ENTRE ELS71200 Y ARDUINO…
//Modbus Registers Offsets (0-9999)
//Declarando Zona de Registros de Solo Lectura
[10001]
const int SWITCH_ISTS_1 = 100; //DIRECCION MODBUS =
//10001 + 100 = 10101
const int SWITCH_ISTS_2 = 101; //DIRECCION MODBUS =
//10001 + 101 = 10102
//Pines Usados
const int switch1 = 2;
const int switch2 = 3;

//Declarando Zona de Registros de Solo Lectura


[30001]
const int SENSOR_IREG_1 = 100; //DIRECCION MODBUS =
//30001 + 100 = 30101
const int SENSOR_IREG_2 = 101; //DR_MB = 30102
const int SENSOR_IREG_3 = 102; //DR_MB = 30103
const int SENSOR_IREG_4 = 103; //DR_MB = 30104
-----------------------------------------------------------------------------------------------------------------------------------------
EULER DEZA FIGUEROA
euler_df28@hotmail.com
CONEXIÓN MODBUS TCP ENTRE ELS71200 Y ARDUINO…
const int Channel_A0 = A0;
const int Channel_A1 = A1;
const int Channel_A2 = A2;
const int Channel_A3 = A3;

//Declarando Zona de Registros de Solo Escritura


[00001]
const int LED_COIL_1 = 100; //DIRECCION MODBUS =
10001 + 100 = 10101
const int LED_COIL_2 = 101; //DIRECCION MODBUS =
10001 + 101 = 10102
//Pines Usados
const int Led1 = 4;
const int Led2 = 7;

ModbusIP mb; //Creamos Objeto Modbus


long ts;
-----------------------------------------------------------------------------------------------------------------------------------------
EULER DEZA FIGUEROA
euler_df28@hotmail.com
CONEXIÓN MODBUS TCP ENTRE ELS71200 Y ARDUINO…
void setup(){
Serial.begin(9600);
byte mac[]={0xDE,0xAD,0xBE,0xEF,0xFE,0xED};
byte ip[]={192, 168, 0, 8};
mb.config(mac,ip);
//Agregando Registros de solo lectura [30001...]
mb.addIreg(SENSOR_IREG_1);
mb.addIreg(SENSOR_IREG_2);
mb.addIreg(SENSOR_IREG_3);
mb.addIreg(SENSOR_IREG_4);
//Add SWITCH_ISTS register - Use addIsts() for
digital input
//Agregando Registros de solo lectura [10001...]
mb.addIsts(SWITCH_ISTS_1);
mb.addIsts(SWITCH_ISTS_2);
//Defino Pin switchPin como entrada
pinMode(switch1, INPUT);
pinMode(switch2, INPUT);
-----------------------------------------------------------------------------------------------------------------------------------------
EULER DEZA FIGUEROA
euler_df28@hotmail.com
CONEXIÓN MODBUS TCP ENTRE ELS71200 Y ARDUINO…
//Agregando Registros de solo Escritura [00001...]
mb.addCoil(LED_COIL_1);
mb.addCoil(LED_COIL_2);
//Defino Pin leds como salida
pinMode(Led1, OUTPUT);
pinMode(Led2, OUTPUT);
ts = millis();
}
void loop(){
mb.task();
if(millis()>ts+100){
ts=millis();
//Entradas Analogicas [IW -> 30001]
mb.Ireg(SENSOR_IREG_1, analogRead(Channel_A0));
mb.Ireg(SENSOR_IREG_2, analogRead(Channel_A1));
mb.Ireg(SENSOR_IREG_3, analogRead(Channel_A2));
mb.Ireg(SENSOR_IREG_4, analogRead(Channel_A3));
-----------------------------------------------------------------------------------------------------------------------------------------
EULER DEZA FIGUEROA
euler_df28@hotmail.com
CONEXIÓN MODBUS TCP ENTRE ELS71200 Y ARDUINO…
//Entradas Digitales [I -> 10001]
//Attach switchPin to SWITCH_ISTS register
mb.Ists(SWITCH_ISTS_1, digitalRead(switch1));
mb.Ists(SWITCH_ISTS_2, digitalRead(switch2));
visualizarDatos(Channel_A0, Channel_A1,
Channel_A2, Channel_A3);
//Channel_A5, digitalRead(switch2));
}
}
void visualizarDatos(int dato1, int dato2, int dato3, int dato4){
Serial.print(" > Ch0: ");
Serial.print(analogRead(dato1));
Serial.print(" > Ch1: ");
Serial.print(analogRead(dato2));
Serial.print(" > Ch2: ");
Serial.print(analogRead(dato3));
Serial.print(" > Ch3: ");
Serial.println(analogRead(dato4));
}
-----------------------------------------------------------------------------------------------------------------------------------------
EULER DEZA FIGUEROA
euler_df28@hotmail.com
NI OPC SERVER

-----------------------------------------------------------------------------------------------------------------------------------------
EULER DEZA FIGUEROA
euler_df28@hotmail.com
CREANDO EL SERVIDOR OPC MODBUS POR ARDUINO
 Abrimos el NI OPC Servers y creamos un channel, y le
nombramos: Arduino_S71200

-----------------------------------------------------------------------------------------------------------------------------------------
EULER DEZA FIGUEROA
euler_df28@hotmail.com
CREANDO EL SERVIDOR OPC MODBUS POR ARDUINO
 Abimos el NI OPC Servers y creamos un channel, y le
nombramos: Arduino_S71200

-----------------------------------------------------------------------------------------------------------------------------------------
EULER DEZA FIGUEROA
euler_df28@hotmail.com
CREANDO EL SERVIDOR OPC MODBUS POR ARDUINO
 Click en siguiente

-----------------------------------------------------------------------------------------------------------------------------------------
EULER DEZA FIGUEROA
euler_df28@hotmail.com
CREANDO EL SERVIDOR OPC MODBUS POR ARDUINO
 Click en siguiente: Elegimos la tarjeta de red de la PC, por la que
nos comunicaremos con el arduino

-----------------------------------------------------------------------------------------------------------------------------------------
EULER DEZA FIGUEROA
euler_df28@hotmail.com
CREANDO EL SERVIDOR OPC MODBUS POR ARDUINO
 Click en siguiente

-----------------------------------------------------------------------------------------------------------------------------------------
EULER DEZA FIGUEROA
euler_df28@hotmail.com
CREANDO EL SERVIDOR OPC MODBUS POR ARDUINO
 Click en siguiente

-----------------------------------------------------------------------------------------------------------------------------------------
EULER DEZA FIGUEROA
euler_df28@hotmail.com
CREANDO EL SERVIDOR OPC MODBUS POR ARDUINO
 Click en siguiente

-----------------------------------------------------------------------------------------------------------------------------------------
EULER DEZA FIGUEROA
euler_df28@hotmail.com
CREANDO EL SERVIDOR OPC MODBUS POR ARDUINO
 Click en Finalizar

-----------------------------------------------------------------------------------------------------------------------------------------
EULER DEZA FIGUEROA
euler_df28@hotmail.com
CREANDO EL SERVIDOR OPC MODBUS POR ARDUINO
 Adherimos un dispositivo Modbus, y le asignamos un nombre:
Arduino_MB_TCP

-----------------------------------------------------------------------------------------------------------------------------------------
EULER DEZA FIGUEROA
euler_df28@hotmail.com
CREANDO EL SERVIDOR OPC MODBUS POR ARDUINO
 Click en siguiente

-----------------------------------------------------------------------------------------------------------------------------------------
EULER DEZA FIGUEROA
euler_df28@hotmail.com
CREANDO EL SERVIDOR OPC MODBUS POR ARDUINO
 Click en siguiente, y le colocamos la IP del ENCJ28J60

-----------------------------------------------------------------------------------------------------------------------------------------
EULER DEZA FIGUEROA
euler_df28@hotmail.com
CREANDO EL SERVIDOR OPC MODBUS POR ARDUINO
 Click en siguiente

-----------------------------------------------------------------------------------------------------------------------------------------
EULER DEZA FIGUEROA
euler_df28@hotmail.com
CREANDO EL SERVIDOR OPC MODBUS POR ARDUINO
 Click en siguiente

-----------------------------------------------------------------------------------------------------------------------------------------
EULER DEZA FIGUEROA
euler_df28@hotmail.com
CREANDO EL SERVIDOR OPC MODBUS POR ARDUINO
 Click en siguiente

-----------------------------------------------------------------------------------------------------------------------------------------
EULER DEZA FIGUEROA
euler_df28@hotmail.com
CREANDO EL SERVIDOR OPC MODBUS POR ARDUINO
 Click en Finalizar

-----------------------------------------------------------------------------------------------------------------------------------------
EULER DEZA FIGUEROA
euler_df28@hotmail.com
CREANDO EL SERVIDOR OPC MODBUS POR ARDUINO

 Creamos los tags correspondientes a las variables que estamos


compartiendo procedentes del arduino

-----------------------------------------------------------------------------------------------------------------------------------------
EULER DEZA FIGUEROA
euler_df28@hotmail.com
CREANDO EL SERVIDOR OPC MODBUS POR ARDUINO
 Finalmente nuestro Opc server , debe quedar de la siguiente
manera:

 Comprobamos la conexión con OPC Quick Client:

-----------------------------------------------------------------------------------------------------------------------------------------
EULER DEZA FIGUEROA
euler_df28@hotmail.com
PROGRAMA EN LABVIEW

-----------------------------------------------------------------------------------------------------------------------------------------
EULER DEZA FIGUEROA
euler_df28@hotmail.com
CREANDO EL SERVIDOR OPC MODBUS POR ARDUINO
 Creamos un proyecto en LabVIEW y agregamos un nuevo IO
Server: OPC_Client

-----------------------------------------------------------------------------------------------------------------------------------------
EULER DEZA FIGUEROA
euler_df28@hotmail.com
CREANDO EL SERVIDOR OPC MODBUS POR ARDUINO
 Elegimos el OPC correspondiente:

-----------------------------------------------------------------------------------------------------------------------------------------
EULER DEZA FIGUEROA
euler_df28@hotmail.com
CREANDO EL SERVIDOR OPC MODBUS POR ARDUINO
 Creamos las variables compartidas correspondientes:

-----------------------------------------------------------------------------------------------------------------------------------------
EULER DEZA FIGUEROA
euler_df28@hotmail.com
CREANDO EL SERVIDOR OPC MODBUS POR ARDUINO
 Creamos el vi [HMI]:

-----------------------------------------------------------------------------------------------------------------------------------------
EULER DEZA FIGUEROA
euler_df28@hotmail.com
CREANDO EL SERVIDOR OPC MODBUS POR ARDUINO
 Creamos el vi [HMI]:[Diagrama de Bloques]

-----------------------------------------------------------------------------------------------------------------------------------------
EULER DEZA FIGUEROA
euler_df28@hotmail.com
CREANDO EL SERVIDOR OPC MODBUS POR ARDUINO
 Corroboramos que todos los dispositivos estén en red,
mediante el software SoftPerfect Network Scanner

-----------------------------------------------------------------------------------------------------------------------------------------
EULER DEZA FIGUEROA
euler_df28@hotmail.com
CONEXIÓN OPC MODBUS ARDUINO S71200 - PC
 Finalmente vemos todos los equipos conectados en RED
Modbus TCP

-----------------------------------------------------------------------------------------------------------------------------------------
EULER DEZA FIGUEROA
euler_df28@hotmail.com
-----------------------------------------------------------------------------------------------------------------------------------------
EULER DEZA FIGUEROA
euler_df28@hotmail.com

You might also like