|
|
@ -18,35 +18,16 @@ class TcpMaster():
|
|
|
|
# hooks.install_hook("modbus_tcp.TcpMaster.after_recv", afterRecv)
|
|
|
|
# hooks.install_hook("modbus_tcp.TcpMaster.after_recv", afterRecv)
|
|
|
|
# hooks.install_hook("modbus_tcp.TcpMaster.after_send", afterSend)
|
|
|
|
# hooks.install_hook("modbus_tcp.TcpMaster.after_send", afterSend)
|
|
|
|
|
|
|
|
|
|
|
|
def writeMultipleRegister(self, slaveId, address, outputValue, order = 'ABCD'):
|
|
|
|
def writeMultipleRegister(self, slaveId, address, outputValue):
|
|
|
|
try:
|
|
|
|
try:
|
|
|
|
valueByte = []
|
|
|
|
self.master.execute(slaveId, cst.WRITE_MULTIPLE_REGISTERS, starting_address = address, output_value=valueByte)
|
|
|
|
for i in outputValue:
|
|
|
|
|
|
|
|
if '.' not in str(i):
|
|
|
|
|
|
|
|
valueByte = outputValue
|
|
|
|
|
|
|
|
self.master.execute(slaveId, cst.WRITE_MULTIPLE_REGISTERS, starting_address=address,
|
|
|
|
|
|
|
|
output_value=valueByte)
|
|
|
|
|
|
|
|
else:
|
|
|
|
|
|
|
|
if order == 'ABCD': # 大端模式
|
|
|
|
|
|
|
|
valueByte=(floatToABCD(i))
|
|
|
|
|
|
|
|
elif order == 'DCBA': # 小端模式
|
|
|
|
|
|
|
|
valueByte = floatToDCBA(outputValue)
|
|
|
|
|
|
|
|
elif order == 'BADC':
|
|
|
|
|
|
|
|
valueByte = floatToBADC(outputValue)
|
|
|
|
|
|
|
|
elif order == 'CDAB':
|
|
|
|
|
|
|
|
valueByte = floatToCDAB(outputValue)
|
|
|
|
|
|
|
|
self.master.execute(slaveId, cst.WRITE_MULTIPLE_REGISTERS, starting_address = address, output_value=valueByte)
|
|
|
|
|
|
|
|
address = address + 2
|
|
|
|
|
|
|
|
except Exception as e:
|
|
|
|
except Exception as e:
|
|
|
|
return 'error'
|
|
|
|
return 'error'
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
def readHoldingRegisters(self, slaveId, startAddress, varNums, order = 'ABCD'):
|
|
|
|
def readHoldingRegisters(self, slaveId, startAddress, varNums):
|
|
|
|
try:
|
|
|
|
try:
|
|
|
|
if order == 'int':
|
|
|
|
value = self.master.execute(slaveId, cst.READ_HOLDING_REGISTERS, startAddress, varNums)
|
|
|
|
value = self.master.execute(slaveId, cst.READ_HOLDING_REGISTERS, startAddress, varNums)[0]
|
|
|
|
|
|
|
|
else:
|
|
|
|
|
|
|
|
value = self.master.execute(slaveId, cst.READ_HOLDING_REGISTERS, startAddress, varNums)
|
|
|
|
|
|
|
|
# if order == 'ABCD': # 大端模式
|
|
|
|
# if order == 'ABCD': # 大端模式
|
|
|
|
# valueByte = ABCDToFloat(value)
|
|
|
|
# valueByte = ABCDToFloat(value)
|
|
|
|
# elif order == 'DCBA': # 小端模式
|
|
|
|
# elif order == 'DCBA': # 小端模式
|
|
|
|