示例#1
0
from pymodbus3.client.sync import ModbusTcpClient
from pymodbus3.client.sync import ModbusSerialClient

client = ModbusSerialClient(method='rtu',port='/dev/ttyUSB0',parity='N',stopbits=1,bytesize=8,baudrate=9600,timeout=3)
result = client.read_holding_registers(1,2,unit=1)
client.close()

示例#2
0
SLAVE_UNIT = 0x1

client = ModbusClient("rtu",
                      port="COM9",
                      stopbits=2,
                      bytesize=8,
                      baudrate=9600,
                      timeout=10)
connected = client.connect()
if connected:
    print("Tristar Morningstar 1 connected!")
else:
    print("Something went wrong.")
    exit(1)
start = time.time()
rr = client.read_holding_registers(0xE000, 1, unit=0)
assert (rr.function_code < 0x80)
print(rr)
#data = client.read_coils(READ_COILS_PDU_Addr_Test_1, 1)

stop = time.time()
if data:
    succ = "was successful"
else:
    succ = "failed"
print("read %s, time spent reading: %fs" % (succ, stop - start))
print("Data read:")
print(data)
client.close()
try:
    data = client.read_coils(READ_COILS_PDU_Addr_Test_1, 1)
示例#3
0
class Modbus():

	# Init modbus device
	def __init__(self):

		self._client = ModbusClient(method='rtu',
			port = PORT,
			bytesize = BITS,
			parity = PARITY,
			baudrate = BAUDRATE,
			timeout = 1)

		if self._client.connect() == False:
			logger_modbus.error(bcolors.FAIL + "*******************************" + bcolors.ENDC)
			logger_modbus.error(bcolors.FAIL + "*** ERROR, DEVICE NOT FOUND ***" + bcolors.ENDC)
			logger_modbus.error(bcolors.FAIL + "*******************************" + bcolors.ENDC)
			time.sleep(1)

		return

	# Delete modbus device
	def __del__(self):

		logger_modbus.info("Delete modbus device")

		self.close_connection()

		return

	# Toggle relay
	def toggle_relay(self, channel, address):

		try:
			ret = self._client.write_register(channel, 0x0300, unit=address)
		except:
			logger_modbus.error(bcolors.FAIL + "Error, slave %s not responde!"  + bcolors.ENDC, address)
			return -1

		logger_modbus.info("Toggle relay %s" %ret)

		return ret

	# Read status relay
	def read_status_relay(self, channel, address):

		try:
			ret = self._client.read_holding_registers(channel, unit=address)
		except:
			logger_modbus.error(bcolors.FAIL + "Error, slave %s not responde!" + bcolors.ENDC, address)
			return -1

		logger_modbus.info("Status relay channel %d: %s" % (channel, int(ret.registers[0])))

		return int(ret.registers[0])

	# Close device
	def close_connection(self):

	    logger_modbus.info("Close connection!")

	    self._client.close()

	    return 0