def display_remote_io(ip_address): ''' display remote I/O information at the given IP address ''' try: client = ModbusTcpClient(ip_address) client.write_coil(HW_CY_006, False) ip_holding_regs = client.read_holding_registers(HR_CI_006_CV, 6) client.write_registers(HW_CI_006_PV, ip_holding_regs.registers) cur_ip = format_modbus_ip_address(ip_holding_regs.registers[0], ip_holding_regs.registers[1]) cur_gateway = format_modbus_ip_address(ip_holding_regs.registers[2], ip_holding_regs.registers[3]) cur_subnet = format_modbus_ip_address(ip_holding_regs.registers[4], ip_holding_regs.registers[5]) ip_holding_regs = client.read_holding_registers(HR_CI_009_CV, 4) cur_mac = format_mac(ip_holding_regs.registers) ip_holding_regs = client.read_holding_registers(HR_KI_003, 2) cur_version = format_version(ip_holding_regs.registers[0]) print("{0} - {1}, version:{2}.{3}.{4} ".format( ip_address, device_type_name(ip_holding_regs.registers[1]), cur_version[1], cur_version[2], cur_version[3]), end='') print("gateway:{0}, subnet:{1} mac:{2}".format(cur_gateway, cur_subnet, cur_mac)) client.close() except ConnectionException: print("{0} - unavailable".format(ip_address))
def setRelayState(interlock: Interlock_model, state: {0, 1}) -> Interlock_model.State: client = ModbusTcpClient(interlock.card.server) client.connect() client.write_coil(interlock.channel, state, unit=1) sleep(0.3) reply = client.read_coils(interlock.channel, 1, unit=1) state = reply.bits[0] client.close() if state == ModbusInterlock.MODBUS_OFF: return Interlock_model.State.LOCKED elif state == ModbusInterlock.MODBUS_ON: return Interlock_model.State.UNLOCKED
def write_network_config(cuip, aip, agw, asn, amac): try: client = ModbusTcpClient(cuip) client.write_register(HW_CI_006_PV, aip >> 16) client.write_register(HW_CI_006_PV + 1, aip & 0xffff) client.write_register(HW_CI_007_PV, agw >> 16) client.write_register(HW_CI_007_PV + 1, agw & 0xffff) client.write_register(HW_CI_008_PV, asn >> 16) client.write_register(HW_CI_008_PV + 1, asn & 0xffff) client.write_register(HW_CI_009_PV, 0) client.write_register(HW_CI_009_PV + 1, amac >> 32) client.write_register(HW_CI_009_PV + 2, (amac & 0xFFFFFFFF) >> 16) client.write_register(HW_CI_009_PV + 3, (amac & 0xFFFFFFFF) & 0xffff) client.write_coil(HW_CY_006, True) client.close() except ConnectionException: print("{0} - unavailable".format(cuip))
import time from pymodbus3.client.sync import ModbusTcpClient client = ModbusTcpClient('127.0.0.1') while True: client.write_coil(0, True) time.sleep(1.0) client.write_coil(0, False) time.sleep(1.0)
from pymodbus3.client.sync import ModbusTcpClient inp = input( u"Press any key and enter to send a packet... (Just enter to quit)") client = ModbusTcpClient('100.100.100.2') while (inp): client.write_coil(1, True) result = client.read_coils(1, 1) print(result.bits[0]) client.close() inp = input( u"Press any key and enter to send a packet... (Just enter to quit)")
print("config set") # save configuration to flash (doesn't work... see Opto doc 1465, page 104) #client.write_register(0, 0x00000003, unit=30) #print("saved to flash") # save configuration to flash (also doesn't work... see Opto doc 1678, page 35) #client.write_register(61496, True) #print("saved to flash") # save configuration to flash (also doesn't work... see Opto doc 1678, page 35) #client.write_coil(257, True) #print("saved to flash") # set module2 ch1 output high client.write_coil(4, True) print("done") # scan module4 ch1 for input, send output to module3 ch1 while [True]: result = client.read_coils(12) print(result.bits[0]) if (result.bits[0] == 1): for r in range(5): client.write_coil(8, True) sleep(.2) client.write_coil(8, False) sleep(.2) else: client.write_coil(8, False)
from pymodbus3.client.sync import ModbusTcpClient #.client.sync import time as t from twisted.internet import reactor, protocol from pymodbus3.constants import Defaults import logging logging.basicConfig() a = 1 client = ModbusTcpClient('10.181.5.35', port=502) rq = client.write_coil(1, True) rr = client.read_coils(1, 1) assert (rq.function_code < 0x80) # test that we are not an error assert (rr.bits[0] == True) # test the expected value #result = client.read_coils(0,1) """arguments = { 'read_address': 1, 'read_count': 8, 'write_address': 1, 'write_registers': [20]*8,""" while a < 4: rq = client.write_registers(0, [0] * 15) rq2 = client.write_registers( 1000, [241] * 100) #Startadresse, skrevet verdi, antall registre log = logging.getLogger() log.setLevel(logging.DEBUG) client.write_coil(0, True) client.write_coil(1, True) client.write_coil(2, False) client.write_coil(3, True)