Files
BDE/limits.py
2017-05-18 12:50:24 +02:00

92 lines
3.0 KiB
Python
Executable File

#!/usr/bin/python3
__author__ = "Michael Rest"
__date__ = "1 June 2009"
__email__ = "michi@rosstein.de"
__version__ = "$Revision: 1.0 $"[11:-2]
import pydave3
from davedefs import *
from DB_MariaDB import DBMaria
from datetime import datetime
from time import sleep
from select import select
import sys
import os
import string
import signal
params = ['DGBM8_12-M', 'DGBM8_12-D', 'DGBM8_12-W', 'DGBM8_12-T', 'DGBM8_34-M', 'DGBM8_34-D', 'DGBM8_34-W', 'DGBM8_34-T', 'M6-F', 'M6-S', 'M8-F', 'M8-S', 'Kombimutter-M', 'Kombimutter-D', 'Kombimutter-W', 'Kombimutter-T', 'Blindniet-F', 'Blindniet-S']
def loglimits (msg):
"""
log relevant messages in logfile
and print if loglevel is reached
"""
file = open ("/var/log/bde/limits.log", "a")
dt = datetime.now ()
file.write ("%4d-%02d-%02d %02d:%02d:%02d.%06d: " %(dt.year, dt.month, dt.day, dt.hour, dt.minute, dt.second, dt.microsecond)),
file.write (msg + "\n")
file.close ()
def pydavecon ():
#for _id, _name, _proto, _addr, _port, _mpi, _rack, _slot in [[5,'H6L1', 'ISO_TCP', '192.168.100.73', 102, 3, 0, 4]]:
_proto, _addr, _port, _mpi, _rack, _slot, _rsid1, _rsid2, _rrack, _rslot, _rmpi = ['ISO_TCP', '192.168.6.80', 102, 0, 0, 2, 0, 0, 0, 0, 0]
daveinst = pydave3
pydave3.OpenSocket (_proto, _addr, _port, _mpi, _rack, _slot, _rsid1, _rsid2, _rrack, _rslot, _rmpi)
#routingSubnetFirst, routingSubnetSecond, routingRack, routingSlot
return daveinst
def getlimits (daveinst):
retval = {}
param = 0
for i in range (0, 12):
offset = i * 4
temp = pydave3.ReadBytes (daveAreas["DB"], 450, offset, 4)
valmin = (temp [0] << 8) + temp [1]
valmax = (temp [2] << 8) + temp [3]
retval [params[param]] = [valmin, valmax, 450, offset]
param += 1
for i in range (0, 6):
offset = i * 4
temp = pydave3.ReadBytes (daveAreas["DB"], 451, offset, 4)
valmin = (temp [0] << 8) + temp [1]
valmax = (temp [2] << 8) + temp [3]
retval [params[param]] = [valmin, valmax, 451, offset]
param += 1
return retval
def setlimit (daveinst, dbnr, offset, minval, maxval):
val = [minval >> 8, minval & 255, maxval >> 8, maxval & 255]
pydave3.WriteBytes (daveAreas["DB"], dbnr, offset, 4, val)
def disconnect (daveinst):
daveinst.DisconnectPLC ()
if __name__ == '__main__':
dbconn = DBMaria ('bde', 'bde', 'eczema-orleans-queuing-surplus', '/tmp/talog.sql')
dblimits = dbconn.getactuallimits ()
try:
daveinst = pydavecon ()
plclimits = getlimits (daveinst)
except:
exit (0)
# setlimit (daveinst, dbnr, offset, dbmin, dbmax)
for param in plclimits:
dbmin, dbmax = dblimits [param]
plcmin, plcmax, dbnr, offset = plclimits [param]
#print ("Parameter: %s, DB-%d Offset %d" % (param, dbnr, offset))
#print ("DB: %d - %d" % (dbmin, dbmax))
#print ("PLC %d - %d" % (plcmin, plcmax))
if (dbmin != plcmin or dbmax != plcmax):
#print ("Limits different")
loglimits ("New Limits from DB for %s: Min: %d Max: %d" % (param, dbmin, dbmax))
setlimit (daveinst, dbnr, offset, dbmin, dbmax)
disconnect (daveinst)