Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Isagraf - Modbus RTU PDF
Isagraf - Modbus RTU PDF
Presentado por: Juan David Contreras Garzón - Daniel Andrés López Rodríguez
20151383014 20151383002
Los datos disponibles por medio de Modbus son almacenados, en general, en uno de
los cuatro bancos de datos o rangos de dirección: bobinas, entradas discretas,
registros de retención y registros de entrada. Al igual que con gran parte de la
especificación, los nombres pueden variar dependiendo de la industria o de la
aplicación. Por ejemplo, los registros de retención pueden denominarse como registros
de salida y las bobinas pueden denominarse como salidas digitales o discretas. Estos
bancos de datos definen el tipo y los derechos de acceso de los datos contenidos. Los
dispositivos esclavos tienen acceso directo a estos datos, los cuales son alojados
localmente en los dispositivos. Los datos disponibles por medio de Modbus
generalmente son un subconjunto de la memoria principal del dispositivo. En
contraste, los maestros Modbus deben solicitar el acceso a estos datos a través de
diversos códigos de función. El comportamiento de cada bloque se describe en la
siguiente tabla.
Rangos de dirección
Aunque la especificación define los diferentes tipos de datos que existen en diferentes
bloques y asigna un rango de dirección local para cada tipo, esto no se traduce
necesariamente en un esquema intuitivo de dirección para fines de documentación o
para comprender la memoria disponible a través de Modbus de un dispositivo
determinado. Para simplificar la discusión de ubicaciones del bloque de memoria, se
introdujo un esquema de numeración, el cual añade prefijos a la dirección de los datos
en cuestión.
Una vez abierto vamos a crear un proyecto nuevo, para esto vamos a archivo, nuevo,
proyecto y aparecerá lo siguiente:
Seleccionamos el dispositivo que tenemos, en este caso el dispositivo es un RPI2B y
damos un nombre al proyecto y damos clic a aceptar. En el entorno de trabajo
aparecerá un archivo llamado Desployment.isadpl en el cual configuramos la dirección
ip del dispositivo, para configurar la ip damos doble clic sobre la línea verde oscura
como muestra la figura.
Ahora tenemos que saber que puerto vamos a usar hay varias formas de saber
conectando una pantalla a la RPI, y por medio de comando saber que puerto serial
usar, (Recordando que se pueden usar 2 puertos el /dev/ACM0 y el /dev/AMA0)
vamos a usar /dev/ACM0 debido a que el otro puerto genera errores al momento de la
transmisión de datos. Por ultimo terminamos todos los ítems según la aplicación que
necesitemos en nuestro caso se dejaron así:
Vamos a la ventana de explorador de solución y damos clic sobre programas, añadir y
seleccionamos el tipo de lenguaje que queramos en nuestro caso ST (Lenguaje
estructurado).
Una vez creado generamos el siguiente código en ST: (*Codigo Maestro MODBUS
RTU*):
analoga1:= _IO_IU1_0.Value;
digital1:=_IO_IU2_0.Value;
digital2:=_IO_IU3_0.value;
analoga2:=_IO_IU4_0.value;
Ahora vamos con la configuración del esclavo. Vamos a buscar la librería de esclavo
modbus en google, la descargamos y la instalamos de la siguiente manera:
Vamos a programa, incluir librería, añadir librería .zip y buscamos la librería en nuestro
caso usamos la de esta página web:
http://www.electronhacks.com/2014/04/arduino-modbus-plc-rtu/
El programa que se implementara en el arduino sera el siguinte:
#include <modbus.h>
#include <modbusDevice.h>
#include <modbusRegBank.h>
#include <modbusSlave.h>
modbusDevice regBank;
modbusSlave slave;
int AI0,AI1;
void setup()
{
regBank.setId(1);
regBank.add(10001); //Digital_Inpunt
regBank.add(1); //Coil
regBank.add(30001); //Inpunt_register
regBank.add(40001); //Holding_register
slave._device = ®Bank;
slave.setBaud(9600);
pinMode(2,INPUT);
pinMode(3,INPUT);
}
void loop(){
while(1){
byte DI1 = digitalRead(2); //Pin digital #2
if (DI1 >= 1)regBank.set(10001,1);
if (DI1 <= 0)regBank.set(10001,0);
bool DI2 = digitalRead(3); //Pin digital #3
if (DI2 >= 1)regBank.set(1,1);
if (DI2 <= 0)regBank.set(1,0);
slave.run();
}
}
Después de haber compilado el programa vamos al paso final. La conexión se realiza
por USB, conectamos un extremo en los puertos USB disponibles en la RPI y el puerto
disponible en el arduino como la figura: