8. Script Servidor

Para ejecutar el script si utilizamos el puerto por defecto (502) debemos ejecutarlo como superusuario debido a que los puertos menores a 1024 son de sistema.

_____________________________________________________________________________________________________

#SCRIPT REDES I. Servidor MODBUS TCP
#es necesario ejecutar como root para utilizar puerto 502,
#no obstante qmodmaster puede ser ejecutado como usuario normal.

from pyModbusTCP.server import ModbusServer, DataBank
import time
import random

#Modificar por IP de la interface a la que estamos conectados para tener salida.
server = ModbusServer('localhost', 502, no_block=True)

try:
print("Inicia servidor")
server.start()
#rellenamos los holding reg 0, 1 ,2 ,3
server.data_bank.set_holding_registers(0, [100, 200 ,300, 400], None)
#rellenamos los input 0, 1 ,2 ,3
server.data_bank.set_input_registers(0, [1, 2 ,3, 4])
print("Servidor Online")
while True:
hreg=random.randint(0,100)
#holding reg 0: cada 1 segundo cambia.
server.data_bank.set_holding_registers(0, [hreg], None)
time.sleep(1)

except:
print("Desconectando servidor")
server.stop()
print("Servidor Offline")


_____________________________________________________________________________________________________

Si ejecutamos el comando netstat -an | grep 502 podemos observar que el puerto se encuentra escuchando: