25
diego codevilla – argentina – 09.2012 – v. 1.1 Interfaz MCU - ModBus Prueba del “Driver ModBus”

Prueba del “Driver ModBus”diegocodevilla.com.ar/wp-content/uploads/modbus-mcu-1-adic1.pdf · Prueba de la placa – Diagrama en bloques del dispositivo SPI Master para prueba

  • Upload
    others

  • View
    3

  • Download
    0

Embed Size (px)

Citation preview

Page 1: Prueba del “Driver ModBus”diegocodevilla.com.ar/wp-content/uploads/modbus-mcu-1-adic1.pdf · Prueba de la placa – Diagrama en bloques del dispositivo SPI Master para prueba

diego codevilla – argentina – 09.2012 – v. 1.1

Interfaz MCU - ModBus

Prueba del “Driver ModBus”

Page 2: Prueba del “Driver ModBus”diegocodevilla.com.ar/wp-content/uploads/modbus-mcu-1-adic1.pdf · Prueba de la placa – Diagrama en bloques del dispositivo SPI Master para prueba

diego codevilla – argentina – 09.2012 – v. 1.1

Interfaz MCU - ModBusPrueba de la placa – Elementos y Conexiones

Elementos:

- Placa 232-485- Driver ModBus - Master SPI (µC en protoboard, ver más abajo)- PC + software de prueba dedicado, o genérico (ver más abajo)

Conexiones:

Master SPI

MOSI

PC 485

232-485

MISO

SPSCK

/SS

5V

0V

MOSI

MISO

SPSCK

/SS

5V

0V

Driver ModBus

B

A

B

A

Tx

Rx

Rx

Tx

0V 0V

232

5V 0V

Vcc 0V

Fuente

Fuente

LED 1

LED 2

Potenciómetro

LED RxOk

LED Aux

Page 3: Prueba del “Driver ModBus”diegocodevilla.com.ar/wp-content/uploads/modbus-mcu-1-adic1.pdf · Prueba de la placa – Diagrama en bloques del dispositivo SPI Master para prueba

diego codevilla – argentina – 09.2012 – v. 1.1

Interfaz MCU - ModBusPrueba de la placa – Esquemático del dispositivo SPI Master para prueba

En la placa adaptadora BDM a proto

A la placa “Driver ModBus”

No se utilizaron en el circuito de prueba (ver siguiente)

Page 4: Prueba del “Driver ModBus”diegocodevilla.com.ar/wp-content/uploads/modbus-mcu-1-adic1.pdf · Prueba de la placa – Diagrama en bloques del dispositivo SPI Master para prueba

diego codevilla – argentina – 09.2012 – v. 1.1

Interfaz MCU - ModBusPrueba de la placa – Diagrama en bloques del dispositivo SPI Master para prueba

SPI MasterPara prueba

de placa“Driver

ModBus”

BDM

MOSISPCK

MISOSS

5VGND

LED 1LED 2

Potenciómetro

Placa “Driver

ModBus”

- El SPI master enciende / apaga cada 1 s aproximadamente el LED2- Si el valor del registro 4 de la placa “driver modbus” es mayor a 150, enciende el LED1, sino lo apaga.- El SPI master escribe en el registro 3 de la placa “driver modbus” el resultado (8 bits) de la conversión del ADC de la tensión presente en el punto medio del potenciómetro.

En PCBPuede ser en protoboard

¿Qué debería hacer el circuito master?

Page 5: Prueba del “Driver ModBus”diegocodevilla.com.ar/wp-content/uploads/modbus-mcu-1-adic1.pdf · Prueba de la placa – Diagrama en bloques del dispositivo SPI Master para prueba

diego codevilla – argentina – 09.2012 – v. 1.1

Interfaz MCU - ModBusPrueba de la placa – Dispositivo SPI Master para prueba

potenciómetro

LED2

LED1

ConectorBDM

ConexionesSPI

μC SH08

Page 6: Prueba del “Driver ModBus”diegocodevilla.com.ar/wp-content/uploads/modbus-mcu-1-adic1.pdf · Prueba de la placa – Diagrama en bloques del dispositivo SPI Master para prueba

diego codevilla – argentina – 09.2012 – v. 1.1

Interfaz MCU - ModBusPrueba de la placa – Soft dedicado

1. Ejecutar el programa. 2. Ingresar el número de port serie (Si hay dudas sobre cuáles están disponibles, ver el “Administrador de dispositivos”)

Page 7: Prueba del “Driver ModBus”diegocodevilla.com.ar/wp-content/uploads/modbus-mcu-1-adic1.pdf · Prueba de la placa – Diagrama en bloques del dispositivo SPI Master para prueba

diego codevilla – argentina – 09.2012 – v. 1.1

Interfaz MCU - ModBus

3. Ingresar la “Dirección de slave” Este número (entre 1 y 15) debe coicidir con la combinación fijada con S1 de la placa (Los 4 jumpers o DIP-switch conectados a patas 9, 10, 11, 12 del microcontrolador de la placa “driver ModBus”)

Prueba de la placa – Soft dedicado

Page 8: Prueba del “Driver ModBus”diegocodevilla.com.ar/wp-content/uploads/modbus-mcu-1-adic1.pdf · Prueba de la placa – Diagrama en bloques del dispositivo SPI Master para prueba

diego codevilla – argentina – 09.2012 – v. 1.1

Interfaz MCU - ModBus

4. Si las conexiones y placas funcionan correctamente, se mostrarán:

a) Respuesta al pedido de lectura, y el valor devuelto. Este valor entre 0 y 255 corresponde al resultado de la conversión del ADC del “spi master”

b) Respuesta a la escritura realizada. En este caso, se enciende y apaga el led del “spi master” cada 0,5 s aprox.

Prueba de la placa – Soft dedicado

Page 9: Prueba del “Driver ModBus”diegocodevilla.com.ar/wp-content/uploads/modbus-mcu-1-adic1.pdf · Prueba de la placa – Diagrama en bloques del dispositivo SPI Master para prueba

diego codevilla – argentina – 09.2012 – v. 1.1

Interfaz MCU - ModBus

En caso de ocurrir errores en la comunicación se informa en el sector indicado.

Verificar:

- Cables- Número de COM correcto.- Conexión correcta del bus 485 (“A” con “A”, “B” con “B”) Si se tiene dudas, invertir estas conexiones,- Si se utiliza un adaptador 232-485 “autopowered” y solo se enciende el led “Tx” la línea DTR tal vez esté OFF. En este caso, utilizar el RealTerm (ver a continuación)- Verificar los jumpers / DIP switch de “Slave Id” Esta combinación debe coincidir con la Dirección de Slave ingresada en el soft,

Prueba de la placa – Soft dedicado

Page 10: Prueba del “Driver ModBus”diegocodevilla.com.ar/wp-content/uploads/modbus-mcu-1-adic1.pdf · Prueba de la placa – Diagrama en bloques del dispositivo SPI Master para prueba

diego codevilla – argentina – 09.2012 – v. 1.1

Interfaz MCU - ModBus

1. Ir a la solapa “Port” (Donde vamos a configurar el port)2. Seleccionar la velocidad: 9600 en este caso.3. Paridad: Even (Par)4. Bits de datos: 75. Número de Port (Si hay dudas sobre cuáles están disponibles, ver el “Administrador de dispositivos”)6. Presionar “Change”7. Verificar que se muestre “9600 7E1 None”

Prueba de la placa – RealTerm

Page 11: Prueba del “Driver ModBus”diegocodevilla.com.ar/wp-content/uploads/modbus-mcu-1-adic1.pdf · Prueba de la placa – Diagrama en bloques del dispositivo SPI Master para prueba

diego codevilla – argentina – 09.2012 – v. 1.1

Interfaz MCU - ModBus

1. Ir a la solapa “Display”2. Seleccionar “Ansi”

Se puede fijar otras características: tipo y tamaño de letra, si mostrar o no los bytes enviados, ver en Hexa, etc.

Prueba de la placa – RealTerm

Page 12: Prueba del “Driver ModBus”diegocodevilla.com.ar/wp-content/uploads/modbus-mcu-1-adic1.pdf · Prueba de la placa – Diagrama en bloques del dispositivo SPI Master para prueba

diego codevilla – argentina – 09.2012 – v. 1.1

Interfaz MCU - ModBus

1. Ir a la solapa “Send” (Desde donde vamos a enviar mensajes modbus a nuestra placa) 2. Ingresar el mensaje (Ver instructivo más adelante) 3. Marcar los casilleros “+CR” y “+LF”4. Para enviar, click en el botón “Send ASCII”

Prueba de la placa – RealTerm

Page 13: Prueba del “Driver ModBus”diegocodevilla.com.ar/wp-content/uploads/modbus-mcu-1-adic1.pdf · Prueba de la placa – Diagrama en bloques del dispositivo SPI Master para prueba

diego codevilla – argentina – 09.2012 – v. 1.1

Interfaz MCU - ModBus

- Si todo va bien, veremos las respuestas a nuestros requerimientos en amarillo, en la zona indicada (1)- Existe otro conjunto (2) de cuadro de texto para mensaje (3), botones “Send Numbers” y “Send ASCII” (4) y casillas “+CR” y “+LF” (5) Esto posibilita trabajar con dos mensajes sin la necesidad de ingresar uno y otro cada vez.

Prueba de la placa – RealTerm

Page 14: Prueba del “Driver ModBus”diegocodevilla.com.ar/wp-content/uploads/modbus-mcu-1-adic1.pdf · Prueba de la placa – Diagrama en bloques del dispositivo SPI Master para prueba

diego codevilla – argentina – 09.2012 – v. 1.1

Interfaz MCU - ModBus

- Para cerrar el programa vamos a la solapa “Port” (1) y ahi hacemos click en el botón “Open” (2) hasta que quede “hacia afuera” (como se muestra en la imagen) Notar que en la parte inferior derecha aparece la leyenda “Port: Closed”

Prueba de la placa – RealTerm

Page 15: Prueba del “Driver ModBus”diegocodevilla.com.ar/wp-content/uploads/modbus-mcu-1-adic1.pdf · Prueba de la placa – Diagrama en bloques del dispositivo SPI Master para prueba

diego codevilla – argentina – 09.2012 – v. 1.1

Interfaz MCU - ModBus

Conceptos para la prueba del “Driver ModBus”

Page 16: Prueba del “Driver ModBus”diegocodevilla.com.ar/wp-content/uploads/modbus-mcu-1-adic1.pdf · Prueba de la placa – Diagrama en bloques del dispositivo SPI Master para prueba

diego codevilla – argentina – 09.2012 – v. 1.1

Interfaz MCU - ModBusIntroducción

● En los proyectos que se proponen este año, existen tres elementos que necesitan comunicarse: La estación de mando, basada en un microcontrolador S08SH8, un PLC (Twido o Nano) y una PC

● Dicha comunicación deberá realizarse utilizando un bus 485 y protocolo ModBus.

● El PLC puede unirse al bus sin nigún adicional.

● La estación de mando y la PC necesitan interfaces.

Estación de mando(µC SH8)

PLC PC

Bus 485

“Driver ModBus” 232-485

Page 17: Prueba del “Driver ModBus”diegocodevilla.com.ar/wp-content/uploads/modbus-mcu-1-adic1.pdf · Prueba de la placa – Diagrama en bloques del dispositivo SPI Master para prueba

diego codevilla – argentina – 09.2012 – v. 1.1

Interfaz MCU - ModBusModBus

● La interfaz física entre el port serie del µC (niveles 0V y 5V común) y 485 se puede realizar mediante un MAX485 o similar, de forma muy sencilla.

● La complicación reside en el protocolo, el “lenguaje” con el que se comunica el PLC; en este caso, como se dijo, será ModBus.

¿Qué es ModBus?

● Es una forma de intercomunicar varios dispositivos. ● Consta de un Master (Maestro) y uno o varios Slaves (Esclavos)● Cada Slave tiene que tener una identificación única.● Los Slaves tienes “registros” (Ej. %MW3 del PLC) que se identifica con una dirección.● El Master es el que inicia una comunicación, mandando un mensaje y queda esperando respuesta.● El Slave correspondiente le responderá y con esto, el master queda libre para enviar otro mensaje.● Cada mensaje ModBus tiene una estructura determinada. ● Cada dispositivo puede soportar más o menos operaciones.● Esta placa está preparada solo para dos operaciones:

● Escribir Registro (Función ModBus 06)● Leer Registro (Función ModBus 03)

Page 18: Prueba del “Driver ModBus”diegocodevilla.com.ar/wp-content/uploads/modbus-mcu-1-adic1.pdf · Prueba de la placa – Diagrama en bloques del dispositivo SPI Master para prueba

diego codevilla – argentina – 09.2012 – v. 1.1

Interfaz MCU - ModBusSPI

● Es una forma de interconectar circuitos integrados cercanos (distancia de conexión menor a 20 cm)● Hay un Master y uno o más Slaves.● La estructura interna es muy sencilla:

● El master y el slave tienen cada uno un registro de desplazamiento.● El master, para enviar información, carga su registro con información (8 bits en el ejemplo) y luego genera pulsos de clock (8 en este caso) para que la información salga del master y entre en el slave.

● A la vez, a causa de que el clock es compartido entre los dos registros, lo que contenía el registro del slave se transmitió al del master.

● De esta operatoria surgen los nombres MOSI (Master Out – Slave In) y MISO (Master In – Slave Out)

Page 19: Prueba del “Driver ModBus”diegocodevilla.com.ar/wp-content/uploads/modbus-mcu-1-adic1.pdf · Prueba de la placa – Diagrama en bloques del dispositivo SPI Master para prueba

diego codevilla – argentina – 09.2012 – v. 1.1

Interfaz MCU - ModBusEsquema del “Driver ModBus”

● Se puede pensar este dispositivo como un conjunto de 16 registros que se pueden leer y escribir● Utilizando ModBus y SPI● El lado de ModBus permite el intercambio de información con el Master presente en el Bus 485● El SPI permite a cualquier microcontrolador acceder a los registros.

(µC

DriverModBus

Bus 485

Registros

● Con esta estructura, si el µC quiere compartir algo con algún dispsitivo ModBus, lo escribe en un registro determinado del driver modbus, y el master modbus eventualmente accederá a dicha información.

● Y puede leer cualquier registro, que pudo haber sido escrito por el master modbus.

Page 20: Prueba del “Driver ModBus”diegocodevilla.com.ar/wp-content/uploads/modbus-mcu-1-adic1.pdf · Prueba de la placa – Diagrama en bloques del dispositivo SPI Master para prueba

diego codevilla – argentina – 09.2012 – v. 1.1

Interfaz MCU - ModBus

Estructura de los mensajes ModBus ASCII

Page 21: Prueba del “Driver ModBus”diegocodevilla.com.ar/wp-content/uploads/modbus-mcu-1-adic1.pdf · Prueba de la placa – Diagrama en bloques del dispositivo SPI Master para prueba

diego codevilla – argentina – 09.2012 – v. 1.1

Interfaz MCU - ModBusMensajes ModBus

Un mensaje ModBus ASCII tiene la siguiente forma:

:050300030001F4CRLF

Comienza con “:”

Dirección de Esclavo / Slave

Función a realizar

Dirección de Registro a leer / modificar

Cantidad de registros a leerO valor a escribir,

LRC (verificaciónde integridad)

Termina con los caracteres

CR y LF

- La placa soporta función 03 (Leer registro) y 06 (Escribir registro)- La dirección de slave puede ser cualquier valor entre 1 y F

Argumentos para la función

Page 22: Prueba del “Driver ModBus”diegocodevilla.com.ar/wp-content/uploads/modbus-mcu-1-adic1.pdf · Prueba de la placa – Diagrama en bloques del dispositivo SPI Master para prueba

diego codevilla – argentina – 09.2012 – v. 1.1

Interfaz MCU - ModBusMensajes ModBus

Ejemplo de mensaje ModBus ASCII para escritura de registro (función 06)

:0206000A00C8??CRLF

Comienza con “:”

Dirección de Slave: 12

Función a realizar

Dirección de Registro a escribir 000A

Valor a escribir.200 en hexa (C8)

En esta placa entre 0 y 255

LRC (verificaciónde integridad)

Termina con los caracteres

El mensaje queda → :0206000A00C826CrLf

0206000A00C8DA

+

D A

1101 1010

0010 0101 1

0010 0110 2 6

En binario...

Complemento a 2:Se inverten bitsY se suma 1

LRC

Si se procesa el requerimiento en forma exitosa la respuesta del slave es igual al mensaje enviado por el master.

¿Cómo calcular el LRC?

- Se suman los caracteres de a pares, descartando carry.- El LRC es el complemento a 2 del resultado obtenido.- Para este proceso no considerar los “:”

Page 23: Prueba del “Driver ModBus”diegocodevilla.com.ar/wp-content/uploads/modbus-mcu-1-adic1.pdf · Prueba de la placa – Diagrama en bloques del dispositivo SPI Master para prueba

diego codevilla – argentina – 09.2012 – v. 1.1

Interfaz MCU - ModBusMensajes ModBus

Ejemplo de mensaje ModBus ASCII para lectura de registro (función 03)

:0C0300090001??CRLF

Comienza con “:”

Dirección de Slave: 12

Función a realizar

Dirección de Registro a leer 0009

Cantidad de registros a leer.Para esta placa

siempre usamos 1

LRC (verificaciónde integridad)

Termina con los caracteres

¿Cómo calcular el LRC?

- Se suman los caracteres de a pares, descartando carry.- El LRC es el complemento a 2 del resultado obtenido.- Para este procesran los “:”

0C030009000119

+

1 9

0001 1001

1110 0110 1

1110 0111 E 7

En binario...

Complemento a 2:Se inverten bitsY se suma 1

LRC

El mensaje queda → :0C0300090001E7CrLf

Page 24: Prueba del “Driver ModBus”diegocodevilla.com.ar/wp-content/uploads/modbus-mcu-1-adic1.pdf · Prueba de la placa – Diagrama en bloques del dispositivo SPI Master para prueba

diego codevilla – argentina – 09.2012 – v. 1.1

Interfaz MCU - ModBusMensajes ModBus

Ejemplo de mensaje ModBus ASCII para lectura de registro (función 03) – Respuesta...

:0C030200D916CRLF

Comienza con “:”

Dirección de Slave: 12

Función

Cantidad de bytes devueltos

(Con esta placa siempre será 2)

LRC (verificaciónde integridad)

Valor del registro pedido

Para leer el registro 3 del dispositivo con ID = 7, enviar: :070300030001F2CrLf

Para escribir 250 en el registro 4 del dispositivo con ID = 10, enviar: :0A06000400FAF2CrLf

Para escribir 50 en el registro 4 del dispositivo con ID = 14, enviar: :0E0600040032B6CrLf

Ej.:

Page 25: Prueba del “Driver ModBus”diegocodevilla.com.ar/wp-content/uploads/modbus-mcu-1-adic1.pdf · Prueba de la placa – Diagrama en bloques del dispositivo SPI Master para prueba

diego codevilla – argentina – 09.2012 – v. 1.1

Interfaz MCU - ModBus

1. Introducir el mensaje, sin “:”2. Click en el botón “calcula LRC”3. Se obtiene el LRC

Calculadora de LRC

a. Descargar el programa: http://www.diegocodevilla.com.ar/?p=423b. Descomprimir y ejecutar.