Esclavo Modbus Interno

El equipo cuenta con una zona de memoria de 1000 palabras que pueden ser leidas o escritas desde el script.

Esto permite principalmente hacer cálculos con los valores de las entradas y ponerlos a disposición en el registro Modbus interno.

Los registros van desde el Holding Register 1001 al 2000 (41001 al 42000)

Las fuentes/destinos 403 y 404 usados para acceder al buffer pueden ser compartidos por otra funciones.

Despues de elegir el buffer y la posición con el destino 402, la dirección se autoincrementa a medida que se cargan datos.

Fuente /
Destino
Indice
Valor
R/W
Descripción
Función
402
3
1 a 1000
write_io Buffer Modbus - Selecciona y posiciona
(Auto incremento para escritura)
Esclavo Modbus
403
1
10^N
-2 -> 0.01
-1 -> 0.1
0 -> 1
1 -> 10
2 -> 100
write_io Buffers - Configura exponente para flotantes
2
0-> MSB / 1 ->LSB
0-> MSW / 1 ->LSW
write_io Buffers - Configura orden bytes/words
404
3
Numero según formato, exponente y orden. read/write_io Buffers - Entero 16 bits sin signo
4
read/write_io Buffers - Entero 16 bits con signo
6
read/write_io Buffers - Entero 32 bits con signo
7
read/write_io Buffers - Flotante 32 bits

Ejemplo de escritura: Carga los siguientes valores en registros Modbus desde el 41001

Registro Modbus
Valor (orden byte/word)
Valor hexadecimal
41001
-3000 (MSB)
F448
41002
1000 (MSB)
03E8
41003:4
-70000 (MSW)
FFFEEE90
41005:6
70000 (MSW)
00011170
41007:8
-70000 (LSB)
EE90FFFE
41009:10
70000 (LSB)
11700001
41011
1000 (LSB)
E803

write_io 402,3,1; #Elige buffer Modbus y posiciona en direccion 1 (41001);

write_io 403,2,0;#MSB;
write_io 404,4,-3000; #41001;
write_io 404,4,1000; #41002;
write_io 403,2,0;#MSW;
write_io 404,6,-70000; #41003:4;
write_io 404,6,70000; #41005:6;
write_io 403,2,1;#LSW;
write_io 404,6,-70000; #41007:8;
write_io 404,6,70000; #41009:10;
write_io 403,2,1;#LSB;
write_io 404,4,1000; #41011;

end;

Ejemplo de lectura:Lee los valores de los registros Modbus 41001 a 41011 y los carga en variables con distintos formatos.

Registro Modbus
Valor hexadecimal
Valor variable
41001
F448
a=-3000
41002
03E8
b=1000
41003:4
FFFEEE90
c=-70000
41005:6
00011170
d=70000
41007:8
EE90FFFE
e=-70000
41009:10
11700001
f=70000
41011
E803
g=1000

write_io 403,2,0;#MSB;
write_io 402,3,1; read_io 404,a,4; #41001;
write_io 402,3,2; read_io 404,b,4; #41002;
write_io 403,2,0;#MSW;
write_io 402,3,3; read_io 404,c,6; #41003:4;
write_io 402,3,5; read_io 404,d,6; #41005:6;
write_io 403,2,1;#LSW;
write_io 402,3,7; read_io 404,e,6; #41007:8;
write_io 402,3,9; read_io 404,f,6; #41009:10;
write_io 403,2,1;#LSB;
write_io 402,3,11; read_io 404,g,4; #41011;

end;

2024-04-23