You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
57 lines
1.4 KiB
Python
57 lines
1.4 KiB
Python
2 years ago
|
import sys
|
||
|
sys.path.append('../')
|
||
|
sys.path.append('../../')
|
||
|
sys.path.append('../../../')
|
||
|
from protocol.ModBus.rtuslave_example import RTUSlave
|
||
|
|
||
|
import modbus_tk.defines as cst
|
||
|
|
||
|
class HartSimulate(object):
|
||
|
def __init__(self):
|
||
|
self.rtuSlave = RTUSlave(port = 'COM7', baudrate = 9600, bytesize = 8, parity = 'E', stopbits = 1, xonxoff = 0)
|
||
|
self.varAddrList = [x for x in range(4100, 4107) if x % 2 == 0]
|
||
|
self.spanAddrList = [4200, 4202]
|
||
|
self.writeList = self.varAddrList + self.spanAddrList
|
||
|
|
||
|
def start(self):
|
||
|
self.rtuSlave.start()
|
||
|
try:
|
||
|
self.addSlave()
|
||
|
except:
|
||
|
pass
|
||
|
|
||
|
def stop(self):
|
||
|
self.rtuSlave.server.stop()
|
||
|
|
||
|
def addSlave(self):
|
||
|
self.rtuSlave.server.add_slave(1)
|
||
|
slave = self.rtuSlave.server.get_slave(1)
|
||
|
slave.add_block('4', cst.HOLDING_REGISTERS, 4000, 5000)
|
||
|
|
||
|
def readValue(self):
|
||
|
valueList = []
|
||
|
for index, address in enumerate(self.writeList):
|
||
|
order = 'ABCD'
|
||
|
value = self.rtuSlave.readValue(1, '4', address, order = order)
|
||
|
valueList.append(value)
|
||
|
return valueList
|
||
|
|
||
|
def writeValue(self, index, value):
|
||
|
index = int(index)
|
||
|
# if index < 4:
|
||
|
value = float(value)
|
||
|
order = 'ABCD'
|
||
|
# else:
|
||
|
# value = int(value)
|
||
|
# order = 'int'
|
||
|
self.rtuSlave.setValue(1, '4', self.writeList[index], value, order = order)
|
||
|
|
||
|
|
||
|
if __name__ == '__main__':
|
||
|
a = HartSimulate()
|
||
|
a.start()
|
||
|
# a.addSlave()
|
||
|
a.writeValue(1, 16.5)
|
||
|
a.writeValue(3, 1)
|
||
|
# print(a.readValue())
|
||
|
# print(a.writeList)
|