示例#1
0
        print(MSval)
        self.client.write_register(4024, LSval[0])
        self.client.write_register(4023, MSval[0])


def thread_modbus_server():
    StartTcpServer(context,
                   address=(tcpipvals["modServerIp"],
                            tcpipvals["modServerPort"]))


myBlock = dataBlock(4015, [
    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
    0, 0, 0, 0, 0, 0, 0
])  # seteamos dos registros
store = contextSlave(di=None, co=None, hr=myBlock, ir=None)
context = contextServer(slaves=store, single=True)

tcpipvals = {
    "modServerIp": "192.168.0.17",
    "modServerPort": 5020,
    "brokerIp": "192.168.0.10",
    "brokerPort": 1884
}  #PUT HERE THE IP/PORT VALUES

modbus_thread = Thread(target=thread_modbus_server)
modbus_thread.start()

sleep(2)

#client_1 = client("192.168.2.105",5020)
示例#2
0
        self.thread.start()

    def cancel(self):
        self.thread.cancel()


#Asignamos valores para conexión TCP/IP
serverIp = "192.168.1.107"  #La IP de esta PC
serverPort = 5020  #El puerto para la escucha
clientIp = "192.168.1.100"  #La IP de la otra PC
clientPort = 5021  #El puerto para la lectura/escritura

#CONFIGURAMOS EL CLIENTE MODBUS TCP
client = ModbusTcpClient(clientIp, clientPort)
print(client.connect())
readReg = readHoldRegisters(client, 4014, 2)

#CONFIGURAMOS EL SERVIDOR MODBUS TCP
myBlock = dataServer(
    4015, [1000, 8000])  #Creamos el bloque de datos del servidor Modbus TCP
store = contextSlave(
    di=None, co=None, hr=myBlock,
    ir=None)  #Asignamos los bloques de datos al servidor Modbus TCP
context = contextServer(slaves=store, single=True)
StartTcpServer(context,
               address=(serverIp,
                        serverPort))  #Encendemos el servidor ModbusTCP
while True:
    print("SERVER ACTIVE")
    sleep(5)
    def __init__(self, tcpipdict):
        tk.Tk.__init__(self)
        self.tcpipdict = tcpipdict
        self.threadreg = Timer(0.3, self.refresh)
        self.regsval = [0, 0]
        self.myBlock = dataBlock(4015, self.regsval)
        self.store = contextSlave(di=None, co=None, hr=self.myBlock, ir=None)
        self.context = contextServer(slaves=self.store, single=True)
        self.serverthread = refreshRegisters(self.context, self.tcpipdict)
        self.serverthread.start()
        self.title("PRUEBAS MODBUS-TCP")
        self.geometry("600x600")
        self.resizable(0, 0)
        self.label1 = tk.Label(self,
                               text="Registro 1",
                               height=2,
                               width=10,
                               font="Times 14 bold")
        self.label1.grid(row=0, column=0)
        self.register1Main = tk.Label(self)
        self.register1Main.grid(row=1, column=0)
        self.registerTxt1 = tk.Text(self.register1Main, height=2, width=10)
        self.registerTxt1.grid(row=0, column=0)
        self.registerLab1 = tk.Label(self.register1Main,
                                     bg="PaleGreen1",
                                     bd=2,
                                     highlightthickness=2,
                                     height=2,
                                     width=10)
        self.registerLab1.grid(row=0, column=1)
        self.changeReg1Button = tk.Button(self.register1Main,
                                          text="Setear",
                                          command=self.reg1Button)
        self.changeReg1Button.grid(row=0, column=2)

        self.label2 = tk.Label(self,
                               text="Registro 2",
                               height=2,
                               width=10,
                               font="Times 14 bold")
        self.label2.grid(row=2, column=0)
        self.register2Main = tk.Label(self)
        self.register2Main.grid(row=3, column=0)
        self.registerTxt2 = tk.Text(self.register2Main, height=2, width=10)
        self.registerTxt2.grid(row=0, column=0)
        self.registerLab2 = tk.Label(self.register2Main,
                                     bg="PaleGreen1",
                                     bd=2,
                                     highlightthickness=2,
                                     height=2,
                                     width=10)
        self.registerLab2.grid(row=0, column=1)
        self.changeReg2Button = tk.Button(self.register2Main,
                                          text="Setear",
                                          command=self.reg2Button)
        self.changeReg2Button.grid(row=0, column=2)

        self.labelDebbug = tk.Label(self,
                                    height=4,
                                    width=35,
                                    bg="orange2",
                                    anchor="nw",
                                    text="LOGS:")
        self.labelDebbug.grid(row=4, column=0, padx=10, pady=15)
        self.labelDebbug.configure(text="LOGS:" + "\n\r" + self.readReg.log)