Introduction
PLC-to-PLC communication lets two or more controllers share data to work together smoothly.
(* Example: Sending a BOOL from PLC1 to PLC2 using Modbus TCP *) // On PLC1 (Sender): ModbusWriteCoil(Address := 1, CoilNumber := 10, Value := StartSignal); // On PLC2 (Receiver): StartSignal := ModbusReadCoil(Address := 1, CoilNumber := 10);
(* Send a BOOL signal *) ModbusWriteCoil(Address := 1, CoilNumber := 5, Value := MotorStart);
(* Read a BOOL signal *) MotorStart := ModbusReadCoil(Address := 1, CoilNumber := 5);
(* Send an INT value *) ModbusWriteRegister(Address := 1, RegisterNumber := 20, Value := SpeedSetpoint);
(* Read an INT value *) SpeedSetpoint := ModbusReadRegister(Address := 1, RegisterNumber := 20);
(* Simple PLC-to-PLC communication example using Modbus TCP *) PROGRAM PLC1_Sender VAR StartSignal : BOOL := TRUE; END_VAR // Send start signal to PLC2 ModbusWriteCoil(Address := 1, CoilNumber := 10, Value := StartSignal); END_PROGRAM PROGRAM PLC2_Receiver VAR StartSignal : BOOL := FALSE; MotorRunning : BOOL; END_VAR // Read start signal from PLC1 StartSignal := ModbusReadCoil(Address := 1, CoilNumber := 10); // Use the signal to start a motor IF StartSignal THEN MotorRunning := TRUE; ELSE MotorRunning := FALSE; END_IF; END_PROGRAM;
modbusClient = ModbusTCP('192.168.1.10', 502) matches the correct class name and port number for Modbus TCP client.modbusClient.write_coil(1, True) status = modbusClient.read_coil(1)
status after execution?modbusClient = ModbusTCP('192.168.1.20')
modbusClient.write_register(10, 123)Pass the test and this pattern moves unknown