replace easymodbus with pymodbus

This commit is contained in:
Yeongdo Park 2020-08-10 19:08:21 -07:00
parent 5883246a01
commit 0b506b2e3b
2 changed files with 22 additions and 20 deletions

View file

@ -1,16 +1,16 @@
import easymodbus.modbusClient
from pymodbus.client.sync import ModbusTcpClient
class WebRelay:
def __init__(self, n_relay=10):
self.n_relay = n_relay
self.relay_status = [False for i in range(self.n_relay)]
self.client = None
self.client = None
def __del__(self):
if self.client:
if self.client.is_connected():
self.client.close()
self.client.close()
def apply_network_configs(self, nc_dict):
self.ip_address = nc_dict["ipaddr"]
@ -19,13 +19,8 @@ class WebRelay:
def connect_slave(self):
if not self.client:
self.client = easymodbus.modbusClient.ModbusClient(self.ip_address, self.port)
self.client.unitidentifier = self.uid
self.client = ModbusTcpClient(self.ip_address)
self.client.connect()
else:
if not self.client.is_connected():
self.client = None
self.connect_slave()
def disconnect_slave(self):
if self.client:
@ -62,5 +57,4 @@ values: Coil Values [0..quantity-1] to be written
def check_write_single_coil(self, relay_id, value):
if self.client:
if self.client.is_connected():
self.client.write_single_coil(relay_id, value)
self.client.write_coil(relay_id, value)

26
c2m.py
View file

@ -1,3 +1,5 @@
import time
import can
import cantools
@ -15,21 +17,26 @@ class BmsListener (can.Listener):
relay_state = msg.data
print (relay_id, relay_state)
if relay_id < 10:
if relay_state > 0:
pub.sendMessage("turn_relay_on", relay_id=relay_id)
if relay_state[-1] > 0:
# pub.sendMessage("turn_relay_on", relay_id=relay_id)
self.parent.turn_relay_on(relay_id)
else:
pub.sendMessage("turn_relay_off",relay_id=relay_id)
# pub.sendMessage("turn_relay_off",relay_id=relay_id)
self.parent.turn_relay_off(relay_id)
print ("message processed!")
class Model:
def __init__(self):
def __init__(self, modbus):
self.bus = None
self.notifier = None
self.printer = can.Printer()
self.listen_bms = BmsListener(self)
self.listen_bms = BmsListener(modbus)
def start_can(self):
self.bus = can.Bus()
#self.notifier = can.Notifier(self.bus, [self.printer])
self.notifier = can.Notifier(self.bus, [self.printer, self.listen_bms])
def stop_can(self):
@ -52,12 +59,13 @@ if __name__ == "__main__":
modbus.apply_network_configs(nc_dict)
modbus.connect_slave()
pub.subscribe(modbus.turn_relay_on, "turn_relay_on")
pub.subscribe(modbus.turn_relay_off, "turn_relay_off")
# pub.subscribe(modbus.turn_relay_on, "turn_relay_on")
# pub.subscribe(modbus.turn_relay_off, "turn_relay_off")
canbus = Model()
canbus = Model(modbus)
canbus.start_can()
while True:
pass
time.sleep(1)
# modbus.client.is_connected()