modbus modul hinzugefügt

CAN Nachrichten in config eingefügt
Logik in CANFilter integriert
This commit is contained in:
Philipp Rauch 2013-12-05 16:45:57 +01:00
parent 053dff064e
commit 149b702e05
9 changed files with 145 additions and 97 deletions

View file

@ -37,41 +37,21 @@ class CANFilter(Thread):
debug = self.conf['config_debug'])
self.pcan.initialize()
dc_battery = CanMessage(0x3A4, 8, 50, 'dc_battery')
dc_grid = CanMessage(0x3A5, 8, 50, 'dc_grid')
dc_pv = CanMessage(0x3A6, 8, 50, 'dc_pv')
dc_charging = CanMessage(0x3A7, 8, 50, 'dc_charger')
for message in self.conf['can_messages']:
self.pcan.addMessage(CanMessage(int(self.conf[message]['id'], 0), #hex-string to int
int(self.conf[message]['length']),
int(self.conf[message]['time']),
message))
print "Message: %s" % message
for signal in self.conf["sig_%s" % message]:
self.pcan.Messages[message].addSignal(CanSignal(int(self.conf[signal]['begin']),
int(self.conf[signal]['length']),
int(self.conf[signal]['offset']),
float(self.conf[signal]['scaling']),
int(self.conf[signal]['data']),
signal))
print " - %s" % signal
self.pcan.addMessage(dc_battery)
self.pcan.addMessage(dc_grid)
self.pcan.addMessage(dc_pv)
self.pcan.addMessage(dc_charging)
current = CanSignal(0, 16, 0, 0.001, 0, 'current')
voltage = CanSignal(16, 16, 0, 0.01, 0, 'voltage')
soc = CanSignal(32, 11, 0, 0.05, 0, 'soc')
isMaster = CanSignal(56, 1, 0, 1, 0, 'isMaster')
isFeed = CanSignal(57, 1, 0, 1, 0, 'isFeed')
isCharging = CanSignal(57, 1, 0, 1, 0, 'isCharging')
isOn = CanSignal(58, 1, 0, 1, 0, 'isOn')
self.pcan.Messages['dc_battery'].addSignal( current )
self.pcan.Messages['dc_battery'].addSignal( voltage )
self.pcan.Messages['dc_battery'].addSignal( soc )
self.pcan.Messages['dc_battery'].addSignal( isMaster )
self.pcan.Messages['dc_battery'].addSignal( isCharging )
self.pcan.Messages['dc_grid'].addSignal( current )
self.pcan.Messages['dc_grid'].addSignal( voltage )
self.pcan.Messages['dc_grid'].addSignal( isMaster )
self.pcan.Messages['dc_grid'].addSignal( isFeed )
self.pcan.Messages['dc_grid'].addSignal( isOn )
self.pcan.Messages['dc_pv'].addSignal( current )
self.pcan.Messages['dc_pv'].addSignal( voltage )
self.pcan.Messages['dc_charger'].addSignal( current )
self.pcan.Messages['dc_charger'].addSignal( voltage )
def mean(self, l):
return float(sum(l))/len(l) if len(l) > 0 else 0