¿Cómo podemos ayudar?

Print

Subrutina: Modbus Master RTU para Leer Registros de Retención, Leer Registros de Entrada y Escribir Registros de Retención

 

Esta subrutina Modbus Master es muy útil si desea utilizar nuestro increíble PLC ACE para leer o escribir en dispositivos Modbus RTU Slave.

¡Si desea conectar el ACE PLC a un variador de frecuencia, un sensor inteligente, una simple pantalla, E/S remotas o incluso un ACE PLC !

Esta subrutina le permite:

  • Leer Registros de Retención – Código de función 03
  • Leer Registros de Entrada – Código de función 04
  • Escribir Registros de Retención – Código de función 06

Puede descargar la subrutina con su ejemplo aquí.

Cuidado, este Modbus Master no es tan rápido como un Modbus Master nativo. Mira este video para hacerte una idea.
Sondeamos 8 sensores de temperatura Modbus esclavos en la red RS485. (ACE-1430)

¿Cómo funciona la subrutina Modbus Master?

Su ACE PLC debe ser configurado como Tipo = «Custom» puerto serie.

Importe en su proyecto las 2 subrutinas mediante el botón «Añadir subrutina» :

  • MBCRC16
  • ModbusMaster

Defina sus peticiones Modbus para leer y escribir datos. Es muy importante leer primero los datos y luego escribir los demás.

En nuestro ejemplo, queremos leer y escribir estos registros Modbus:

Número » n « de la Petición Modbus SlaveID del dispositivo esclavo Modbus
SlaveID[n]
¿Lectura o escritura en el registro?
FunctionCode[n]
Dirección en el registro Modbus ?
Registro[n]
[0] 01 03 (Leer registros de retención) 00
[1] 01 03 (Lectura de registros de retención) 01
[2] 01 06 (Escribir registros de retención) 02 (Escribimos en 65432 en nuestro ejemplo)
[3] 01 06 (Escribir registros de retención) 03 (Escribimos en la etiqueta «ValueMove» en nuestro ejemplo)

Usamos un array de «n» elementos para cada parámetro

Configurar estas etiquetas:

  • FunctionCode, ui8, is array, 16 (16 si desea leer/escribir hasta 16 valores en el registro Modus)
  • SlaveID, ui8, es array, 16
  • Registro, ui16, es matriz, 16
  • Datos, ui16, is array, 16

Si, como ejemplo, sólo tienes 3 registros para leer/escribir, puedes ajustar el array de 16 a 3.

Ahora, puede completar su matriz con los 3 valores para cada solicitud Modbus:

Empezamos con n = 0

  • SlaveID[0] = 01
  • CódigoFunción[0] = 03
  • Registro[0] = 00

y siguiente… n = 1

  • SlaveID[1] = 01
  • CódigoFunción[1] = 03
  • Registro[1] = 01

< ! > Importante: La última línea debe ser SlaveID[n 1] = 00, en nuestro ejemplo SlaveID[4] = 00
¡Esto es para avisar a la subrutina Modbus Master que no hay más registros para leer! ¡Es el final! ¡Reiniciamos desde el principio (n=0)!

¡Y añade ahora la subrutina ModbusMaster !

Usted debe llamar a esta subrutina en cada ciclo del PLC.

Recuperará los datos en el campo Datos[n] array.

Si utiliza la función de escritura, no olvide introducir el valor. En nuestro ejemplo, escribimos 65432 en Data [2] y el valor de otra etiqueta «ValueMove» en Datos [3].