Added Code for Fill Cell, Complete Part State
This commit is contained in:
114
DB.py
114
DB.py
@@ -108,7 +108,7 @@ class DB:
|
||||
Get Processdata
|
||||
"""
|
||||
try:
|
||||
cursor = self.executesql ("SELECT dmc, startts, endts, ladungstraeger, seriennr, variante, pruefzelle1, putzzelle, chiron, blindniet, bajonettclip, cclip, masseblech, pruefzelle2, nacharbeit, csv FROM bde WHERE dmc = '%s';" % dmc)
|
||||
cursor = self.executesql ("SELECT dmc, startts, endts, ladungstraeger, seriennr, variante, pruefzelle1, putzzelle, chiron, blindniet, bajonettclip, cclip, masseblech, pruefzelle2, nacharbeit, csv, pruefzelle3, gesamtstatus FROM bde WHERE dmc = '%s';" % dmc)
|
||||
except:
|
||||
print ("Couldnt read from BDE")
|
||||
|
||||
@@ -177,6 +177,9 @@ class DB:
|
||||
self.updatebde (data['dmc'], 'pruefzelle1', data['bauteilstatus'])
|
||||
if data['dmc'] == 'n.i.O.':
|
||||
self.updatebde (data['dmc'], 'endts', data['endts'])
|
||||
self.updatebde (data['dmc'], 'gesamtstatus', 'n.i.O.')
|
||||
else:
|
||||
self.updatebde (data['dmc'], 'gesamtstatus', 'n.Durchlaufen')
|
||||
self.updatebde (data['dmc'], 'variante', data['bauteil'] + '-' + data['variante'])
|
||||
self.updatebde (data['dmc'], 'csv', '')
|
||||
|
||||
@@ -222,6 +225,8 @@ class DB:
|
||||
self.addblindnietvalues (data);
|
||||
self.updatebde (data['dmc'], 'blindniet', data['bauteilstatus'])
|
||||
self.updatebde (data['dmc'], 'ladungstraeger', data['ladungstraeger'])
|
||||
if data['bauteilstatus'] == 'n.i.O.':
|
||||
self.updatebde (data['dmc'], 'gesamtstatus', 'n.i.O.')
|
||||
|
||||
|
||||
def addblindnietvalues (self, data):
|
||||
@@ -285,6 +290,8 @@ class DB:
|
||||
|
||||
self.updatebde (data['dmc'], 'putzzelle', data['bauteilstatus'])
|
||||
self.updatebde (data['dmc'], 'ladungstraeger', data['ladungstraeger'])
|
||||
if data['bauteilstatus'] == 'n.i.O.':
|
||||
self.updatebde (data['dmc'], 'gesamtstatus', 'n.i.O.')
|
||||
|
||||
|
||||
def getputzzelle (self, dmc):
|
||||
@@ -319,6 +326,8 @@ class DB:
|
||||
self.updatebde (data['dmc'], 'variante', data['bauteil'] + '-' + data['variante'])
|
||||
self.log (1,'PD99 - Change variante')
|
||||
self.updatebde (data['dmc'], 'ladungstraeger', data['ladungstraeger'])
|
||||
if data['bauteilstatus'] == 'n.i.O.':
|
||||
self.updatebde (data['dmc'], 'gesamtstatus', 'n.i.O.')
|
||||
|
||||
|
||||
def getchiron (self, dmc):
|
||||
@@ -350,6 +359,8 @@ class DB:
|
||||
|
||||
self.updatebde (data['dmc'], 'bajonettclip', data['bauteilstatus'])
|
||||
self.updatebde (data['dmc'], 'ladungstraeger', data['ladungstraeger'])
|
||||
if data['bauteilstatus'] == 'n.i.O.':
|
||||
self.updatebde (data['dmc'], 'gesamtstatus', 'n.i.O.')
|
||||
|
||||
|
||||
def getbajonettclip (self, dmc):
|
||||
@@ -392,6 +403,8 @@ class DB:
|
||||
|
||||
self.updatebde (data['dmc'], 'cclip', data['bauteilstatus'])
|
||||
self.updatebde (data['dmc'], 'ladungstraeger', data['ladungstraeger'])
|
||||
if data['bauteilstatus'] == 'n.i.O.':
|
||||
self.updatebde (data['dmc'], 'gesamtstatus', 'n.i.O.')
|
||||
|
||||
|
||||
def getcclip (self, dmc):
|
||||
@@ -434,6 +447,8 @@ class DB:
|
||||
|
||||
self.updatebde (data['dmc'], 'masseblech', data['bauteilstatus'])
|
||||
self.updatebde (data['dmc'], 'ladungstraeger', data['ladungstraeger'])
|
||||
if data['bauteilstatus'] == 'n.i.O.':
|
||||
self.updatebde (data['dmc'], 'gesamtstatus', 'n.i.O.')
|
||||
|
||||
|
||||
def getmasseblech (self, dmc):
|
||||
@@ -477,7 +492,7 @@ class DB:
|
||||
self.log (1, 'PD09 keine BDE Daten %s abbruch' % data['dmc'])
|
||||
return 0
|
||||
|
||||
#dmc, startts, endts, ladungstraeger, seriennr, variante, pruefzelle1, putzzelle, chiron, blindniet, bajonettclip, cclip, masseblech, pruefzelle2, nacharbeit, csv
|
||||
#dmc, startts, endts, ladungstraeger, seriennr, variante, pruefzelle1, putzzelle, chiron, blindniet, bajonettclip, cclip, masseblech, pruefzelle2, nacharbeit, csv, pruefzelle3, gesamtstatus
|
||||
_states = {'pruefzelle1' : l[6],
|
||||
'putzzelle' : l[7],
|
||||
'chiron' : l[8],
|
||||
@@ -486,7 +501,8 @@ class DB:
|
||||
'cclip': l[11],
|
||||
'masseblech' : l[12]
|
||||
}
|
||||
|
||||
_ges = l[17]
|
||||
_gesio = 1
|
||||
#'Blindniet'
|
||||
if _states ['blindniet'] == 'n.Durchlaufen':
|
||||
self.log (5, 'PD09 Blindniet %s nDurchlaufen do nothing' % data['dmc'])
|
||||
@@ -524,6 +540,8 @@ class DB:
|
||||
|
||||
if io:
|
||||
self.updatebde (data['dmc'], 'blindniet', 'i.O. NA')
|
||||
else:
|
||||
_gesio = 0
|
||||
|
||||
|
||||
#'Bajonettclip'
|
||||
@@ -540,6 +558,8 @@ class DB:
|
||||
io = 0
|
||||
if io:
|
||||
self.updatebde (data['dmc'], 'bajonettclip', 'i.O. NA')
|
||||
else:
|
||||
_gesio = 0
|
||||
|
||||
|
||||
#'CClip'
|
||||
@@ -556,6 +576,8 @@ class DB:
|
||||
io = 0
|
||||
if io:
|
||||
self.updatebde (data['dmc'], 'cclip', 'i.O. NA')
|
||||
else:
|
||||
_gesio = 0
|
||||
|
||||
|
||||
|
||||
@@ -607,10 +629,12 @@ class DB:
|
||||
|
||||
if io:
|
||||
self.updatebde (data['dmc'], 'masseblech', 'i.O. NA')
|
||||
else:
|
||||
_gesio = 0
|
||||
|
||||
|
||||
|
||||
|
||||
#if _gesio and _ges == 'i.O.':
|
||||
#nav = NAV (path = "/srv/navision/", db = self)
|
||||
#nav.createcsv (data['dmc'])
|
||||
#try:
|
||||
@@ -640,11 +664,9 @@ class DB:
|
||||
self.updatebde (data['dmc'], 'ladungstraeger', data['ladungstraeger'])
|
||||
self.updatebde (data['dmc'], 'endts', data['endts'])
|
||||
|
||||
if data['bauteilstatus'] == 'n.i.O.':
|
||||
self.log (5, 'PD10 n.i.O updatding part data')
|
||||
l = self.getbde (data['dmc'])[0]
|
||||
#dmc, startts, endts, ladungstraeger, seriennr, variante, pruefzelle1, putzzelle, chiron, blindniet, bajonettclip, cclip, masseblech, pruefzelle2, nacharbeit, csv
|
||||
_states = {'pruefzelle1' : l[6],
|
||||
l = self.getbde (data['dmc'])[0]
|
||||
#dmc, startts, endts, ladungstraeger, seriennr, variante, pruefzelle1, putzzelle, chiron, blindniet, bajonettclip, cclip, masseblech, pruefzelle2, nacharbeit, csv, pruefzelle3, gesamtstatus
|
||||
_states = {'pruefzelle1' : l[6],
|
||||
'putzzelle' : l[7],
|
||||
'chiron' : l[8],
|
||||
'blindniet': l[9],
|
||||
@@ -652,7 +674,16 @@ class DB:
|
||||
'cclip': l[11],
|
||||
'masseblech' : l[12]
|
||||
}
|
||||
|
||||
if data['bauteilstatus'] == 'i.O.':
|
||||
self.log (5, 'PD10 .i.O checking part data')
|
||||
if _states['pruefzelle1'] == 'i.O.' and _states['putzzelle'] == 'i.O.' and _states['chiron'] in ('i.O.','n.Durchlaufen') and _states['blindniet'] == 'i.O.' and _states['putzzelle'] == 'i.O.' and _states['bajonettclip'] == 'i.O.' and _states['cclip'] == 'i.O.' and _states['masseblech'] == 'i.O.':
|
||||
self.log (5, 'PD10 .i.O All part data i.O. Part is i.O.')
|
||||
self.updatebde (data['dmc'], 'gesamtstatus', 'i.O.')
|
||||
|
||||
elif data['bauteilstatus'] == 'n.i.O.':
|
||||
self.log (5, 'PD10 n.i.O updatding part data')
|
||||
self.updatebde (data['dmc'], 'gesamtstatus', 'n.i.O.')
|
||||
|
||||
for i in range (1,42):
|
||||
if data ['pp%02d' % i] == 'n.i.O.':
|
||||
where, field = pruefpunkte ['pp%02d' % i]
|
||||
@@ -665,8 +696,13 @@ class DB:
|
||||
|
||||
|
||||
nav = NAV (path = "/srv/navision/", db = self)
|
||||
|
||||
if "Error" in data['dmc']:
|
||||
self.log (5, 'PD10 No Read')
|
||||
elif '' == data['dmc'] :
|
||||
self.log (5, 'PD10 No Read')
|
||||
elif int (data['dmc']) == 0:
|
||||
self.log (5, 'PD10 0 Read')
|
||||
else:
|
||||
nav.createcsv (data['dmc'])
|
||||
try:
|
||||
@@ -736,6 +772,64 @@ class DB:
|
||||
raise Warning
|
||||
|
||||
|
||||
|
||||
def addpruefzelle3 (self, data):
|
||||
"""
|
||||
Add Processdata 20 - pruefzelle 3
|
||||
and update BDE data
|
||||
"""
|
||||
if len (self.getpruefzelle3 (data['dmc'])):
|
||||
self.errlog ('PD20 for %s already exists - Overwrite and increment' % data['dmc'])
|
||||
|
||||
#FixMe
|
||||
|
||||
try:
|
||||
cursor = self.executesql ("INSERT OR REPLACE INTO pruefzelle3 (dmc, endts, anzahl, pp01, pp02, pp03, pp04, pp05, pp06, pp07, pp08, pp09, pp10, pp11, pp12, pp13, pp14, pp15, pp16, pp17, pp18, pp19, pp20, pp21, pp22, pp23, pp24, pp25, pp26, pp27, pp28, pp29, pp30, pp31, pp32, pp33, pp34, pp35, pp36, pp37, pp38, pp39, pp40, pp41, pp42) VALUES ('%(dmc)s', '%(endts)s', '1', '%(pp01)s', '%(pp02)s', '%(pp03)s', '%(pp04)s', '%(pp05)s', '%(pp06)s', '%(pp07)s', '%(pp08)s', '%(pp09)s', '%(pp10)s', '%(pp11)s', '%(pp12)s', '%(pp13)s', '%(pp14)s', '%(pp15)s', '%(pp16)s', '%(pp17)s', '%(pp18)s', '%(pp19)s', '%(pp20)s', '%(pp21)s', '%(pp22)s', '%(pp23)s', '%(pp24)s', '%(pp25)s', '%(pp26)s', '%(pp27)s', '%(pp28)s', '%(pp29)s', '%(pp30)s', '%(pp31)s', '%(pp32)s', '%(pp33)s', '%(pp34)s', '%(pp35)s', '%(pp36)s', '%(pp37)s', '%(pp38)s', '%(pp39)s', '%(pp40)s', '%(pp41)s', '%(pp42)s');" % data)
|
||||
except:
|
||||
print ("Couldnt insert PD30 pruefzelle3")
|
||||
raise Warning
|
||||
|
||||
self.updatebde (data['dmc'], 'pruefzelle3', data['bauteilstatus'])
|
||||
|
||||
if 0 and data['bauteilstatus'] == 'n.i.O.':
|
||||
self.log (5, 'PD20 n.i.O updatding part data')
|
||||
l = self.getbde (data['dmc'])[0]
|
||||
#dmc, startts, endts, ladungstraeger, seriennr, variante, pruefzelle1, putzzelle, chiron, blindniet, bajonettclip, cclip, masseblech, pruefzelle2, nacharbeit, csv
|
||||
_states = {'pruefzelle1' : l[6],
|
||||
'putzzelle' : l[7],
|
||||
'chiron' : l[8],
|
||||
'blindniet': l[9],
|
||||
'bajonettclip': l[10],
|
||||
'cclip': l[11],
|
||||
'masseblech' : l[12]
|
||||
}
|
||||
|
||||
for i in range (1,42):
|
||||
if data ['pp%02d' % i] == 'n.i.O.':
|
||||
where, field = pruefpunkte ['pp%02d' % i]
|
||||
if _states [where] != 'n.Durchlaufen':
|
||||
self.log (5, 'PD10 pp%02d n.i.O updating part data and State in bde %s' % (i, where))
|
||||
self.updateinformation (data['dmc'], where, field, 'n.i.O.')
|
||||
self.updatebde (data['dmc'], where, 'n.i.O.')
|
||||
else:
|
||||
self.log (5, 'PD10 pp%02d %s nDurchlaufen do nothing' % (i, where))
|
||||
|
||||
|
||||
def getpruefzelle3 (self, dmc):
|
||||
"""
|
||||
Get Processdata 20 - prufezelle3
|
||||
"""
|
||||
try:
|
||||
cursor = self.executesql ("SELECT dmc, endts, anzahl, pp01, pp02, pp03, pp04, pp05, pp06, pp07, pp08, pp09, pp10, pp11, pp12, pp13, pp14, pp15, pp16, pp17, pp18, pp19, pp20, pp21, pp22, pp23, pp24, pp25, pp26, pp27, pp28, pp29, pp30, pp31, pp32, pp33, pp34, pp35, pp36, pp37, pp38, pp39, pp40, pp41, pp42 FROM pruefzelle3 WHERE dmc = '%s';" % dmc)
|
||||
except:
|
||||
print ("Couldnt get PD20 pruefzelle3")
|
||||
raise Warning
|
||||
|
||||
return cursor.fetchall ()
|
||||
|
||||
|
||||
|
||||
|
||||
def getactuallimits (self):
|
||||
"""
|
||||
Get limits for processvalues
|
||||
|
||||
86
bde.py
86
bde.py
@@ -162,6 +162,9 @@ class BDEServer ():
|
||||
if teltype == 'DM01' and self.connections[_channel][(client_id)][3] !='PD01':
|
||||
print ("Invalid Telegram from this Station")
|
||||
raise Warning
|
||||
if teltype == 'DM20' and self.connections[_channel][(client_id)][3] !='PD20':
|
||||
print ("Invalid Telegram from this Station")
|
||||
raise Warning
|
||||
|
||||
DB_con = self.connections['DB']
|
||||
|
||||
@@ -175,7 +178,7 @@ class BDEServer ():
|
||||
self.errlog (' DT_handler : FixMe repeated Tel %d' % (count))
|
||||
_quit = 0
|
||||
|
||||
elif (count == 0) or (count == (count_old % 32767) + 1) or (count == -1) or self.connections[_channel][(client_id)][3] == 'PD09' :
|
||||
elif (count == 0) or (count == (count_old % 32767) + 1) or (count == -1) or self.connections[_channel][(client_id)][3] == 'PD09' or self.connections[_channel][(client_id)][3] == 'PD20' :
|
||||
#Other Telegram received
|
||||
self.log (3, "DT_handler : Tel Counter valid %d" % (count))
|
||||
_quit = ret_val['check']
|
||||
@@ -216,6 +219,13 @@ class BDEServer ():
|
||||
elif teltype == 'PD10':
|
||||
self.message (3, ' DT_handler : Store Data from PD10 Pruefzelle2 for %s' % ret_val['dmc'])
|
||||
DB_con.addpruefzelle2 (ret_val)
|
||||
elif teltype == 'PD20':
|
||||
#FiXMe check if Part in Table
|
||||
if len (DB_con.getbde (ret_val['dmc'])):
|
||||
self.message (3, ' DT_handler : Store Data from PD20 Pruefzelle Fill in BDE - G11 for %s' % ret_val['dmc'])
|
||||
DB_con.addpruefzelle3 (ret_val)
|
||||
else:
|
||||
self.message (3, ' DT_handler : DONNOT Store Data from PD20 Pruefzelle Fill for %s' % ret_val['dmc'])
|
||||
elif teltype == 'PD99':
|
||||
self.message (3, ' DT_handler : Store Data from PD99 Chiron for %s' % ret_val['dmc'])
|
||||
DB_con.addchiron (ret_val)
|
||||
@@ -235,7 +245,7 @@ class BDEServer ():
|
||||
self.log (2, ' DT_handler : Tel count FAILED --> Synchronisation')
|
||||
_quit = 99
|
||||
|
||||
if _quit > -1 and teltype not in ('DM01', 'DM09'):
|
||||
if _quit > -1 and teltype not in ('DM01', 'DM09', 'DM20'):
|
||||
# Prepare Quit teltgramm
|
||||
self.generatequit (count, _channel, client_id, teltype, ret_val ['src'], ret_val ['dst'], _quit)
|
||||
self.message (5, ' DT_handler : Quit Tel queued: Result: %d teltype %s' % (_quit, teltype))
|
||||
@@ -247,14 +257,80 @@ class BDEServer ():
|
||||
elif teltype == 'DM09':
|
||||
self.message (5, ' DT_handler : Send PD Data Tel queued:"')
|
||||
self.generatepd (count, _channel, client_id, teltype, ret_val ['src'], ret_val ['dst'], ret_val['dmc'])
|
||||
elif teltype == 'DM20':
|
||||
self.message (5, ' DT_handler : Send PD Data Tel queued:"')
|
||||
self.generatepdfill (count, _channel, client_id, teltype, ret_val ['src'], ret_val ['dst'], ret_val['dmc'])
|
||||
else:
|
||||
self.message (1,'"DT_Handler : unknown Telegram type, no Number')
|
||||
self.debug ()
|
||||
|
||||
|
||||
def generatepdfill (self, count, channel, client_id, msgtype, src, dst, dmc):
|
||||
"""
|
||||
Generate an QUIT telegram for Fill and send it
|
||||
"""
|
||||
DB_con = self.connections['DB']
|
||||
|
||||
self. message (3, " generatepdfill : generate PD-Fill Telegram for %s on channel %s, dmc %s" % (msgtype, channel, dmc))
|
||||
#Fillword
|
||||
_data = bytes ([((count >> 8) & 0xFF)]) + bytes ([(count & 0xFF)])
|
||||
_data2 = \
|
||||
doublechar (src) +\
|
||||
doublechar (dst) +\
|
||||
msgtype + + (4 - len(dmc)) * ' '
|
||||
_dmc = dmc + (28 - len(dmc)) * ' '
|
||||
#Bde Daten holen
|
||||
bde = DB_con.getbde (dmc)
|
||||
_typ = ' '.encode ()
|
||||
_var = ' '.encode ()
|
||||
_st = '0' # Gesamtstatus
|
||||
_bnst = ' '
|
||||
_bajost = ' '
|
||||
_ccst = ' '
|
||||
_mbst = ' '
|
||||
_err = bytes ([0])
|
||||
|
||||
if len (bde):
|
||||
dmc1, startts, endts, ladungstraeger, seriennr, variante, pruefzelle1, putzzelle, chiron, blindniet, bajonettclip, cclip, masseblech, pruefzelle2, nacharbeit, csv, pruefzelle3, gesamtstatus = bde [0]
|
||||
_t = 0
|
||||
if 'G11' in variante:
|
||||
_typ = bytes ([1])
|
||||
_t = 1
|
||||
elif 'G3' in variante:
|
||||
_typ = bytes ([2])
|
||||
_t = 2
|
||||
|
||||
_rl = 0
|
||||
if 'RL' in variante:
|
||||
_rl = 1
|
||||
|
||||
if 'HUD' in variante:
|
||||
_var = bytes ([_rl + 2])
|
||||
else:
|
||||
_var = bytes ([_rl])
|
||||
|
||||
_bnst = bauteilstatusRev.get (blindniet)
|
||||
_bajost = bauteilstatusRev.get (bajonettclip)
|
||||
_ccst = bauteilstatusRev.get (cclip)
|
||||
_mbst = bauteilstatusRev.get (masseblech)
|
||||
if _bnst == '1' and _bajost == '1' and _ccst == '1' and _mbst == '1':
|
||||
_st == '1'
|
||||
else:
|
||||
_st == '2'
|
||||
|
||||
|
||||
_data += _data2.encode ()
|
||||
_data += _dmc.encode () + _typ + _var + _st.encode () + _err
|
||||
print (len (_data))
|
||||
print (_data)
|
||||
|
||||
self.queue_add (channel, client_id, msgtype, _data)
|
||||
return
|
||||
|
||||
|
||||
def generatelockdata (self, count, channel, client_id, msgtype, src, dst, dmc):
|
||||
"""
|
||||
Generate an QUIT telegram and send it
|
||||
Generate an QUIT telegram with lockdata and send it
|
||||
"""
|
||||
DB_con = self.connections['DB']
|
||||
|
||||
@@ -308,7 +384,7 @@ class BDEServer ():
|
||||
_ccst = ' '
|
||||
_mbst = ' '
|
||||
if len (bde):
|
||||
dmc1, startts, endts, ladungstraeger, seriennr, variante, pruefzelle1, putzzelle, chiron, blindniet, bajonettclip, cclip, masseblech, pruefzelle2, nacharbeit, csv = bde [0]
|
||||
dmc1, startts, endts, ladungstraeger, seriennr, variante, pruefzelle1, putzzelle, chiron, blindniet, bajonettclip, cclip, masseblech, pruefzelle2, nacharbeit, csv, pruefzelle3, gesamtstatus = bde [0]
|
||||
_t = 0
|
||||
if 'G11' in variante:
|
||||
_typ = bytes ([1]) + bytes ([0])
|
||||
@@ -798,7 +874,7 @@ if __name__ == '__main__':
|
||||
|
||||
|
||||
server = BDEServer (address = IP_BDE, verbose = loglevel, debug = debuglevel, DB = (DBFILE, DBTALOG) )
|
||||
for i in chain (range (1, 11), range (98,100)):
|
||||
for i in chain (range (1, 11), range (20, 21), range (98,100)):
|
||||
IPPLC = config.get ('PD%02d' % i , 'ipsps')
|
||||
if not IPPLC:
|
||||
print ('No IP for PD%02d' % i)
|
||||
|
||||
Reference in New Issue
Block a user