92 lines
3.0 KiB
Python
Executable File
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)
|