Scrittura Colonna Valore Grezzo Mediato

This commit is contained in:
Marco Locatelli
2022-07-08 11:23:58 +02:00
parent 4ee6bb3c93
commit 263aa85f91
2 changed files with 41 additions and 18 deletions
+19 -15
View File
@@ -60,9 +60,10 @@ if redSrv0.get('SETTINGS:FOLDER:CURRENT') is None:
#funzione salva time+data e otto valori letti su file SE LOG è 1
def fileSave():
rawValue = getRedisVal('RTDATA:VALUE:RAW')
resultValue = getRedisVal('RTDATA:VALUE:REAL')
smoothedValue = getRedisVal('RTDATA:VALUE:SMOOTHED')
rawIstant = getRedisVal('RTDATA:VALUE:RAW')
fixedIstant = getRedisVal('RTDATA:VALUE:REAL')
rawAverage = getRedisVal('RTDATA:VALUE:SMRAW')
fixedAverage = getRedisVal('RTDATA:VALUE:SMOOTHED')
currentFolder = getRedisVal('SETTINGS:FOLDER:CURRENT')
workingDirectory = (DATA_path+currentFolder)
#dò un nome al nuovo file
@@ -80,12 +81,13 @@ def fileSave():
outFile = open(workingDirectory+"/"+dataFileName, "a")
else:
outFile = open(workingDirectory+"/"+dataFileName, "w+")
firstRow = "Data e Ora;"
firstRow += "Canale A;"
firstRow += "Canale B;"
firstRow += "Valore Grezzo;"
firstRow += "Valore Corretto;"
firstRow += "Valore Corretto e Mediato"
firstRow = "Data Ora;"
firstRow += "Ch A;"
firstRow += "Ch B;"
firstRow += "Istant Grezzo;"
firstRow += "Istant Corretto;"
firstRow += "Mediato Grezzo;"
firstRow += "Mediato Corretto"
outFile.write(firstRow+"\r\n")
# dichiaro una stringa in cui accumulo i valori
@@ -98,12 +100,14 @@ def fileSave():
chB = getRedisVal('SETTINGS:CHANNEL:B')
chBOut = getRedisVal('RTDATA:OUT:'+str(chB))
csvRow += chBOut+";"
#aggiungo il valore pulito
csvRow += rawValue+";"
#aggiungo il valore corretto con k1 k2 offset
csvRow += resultValue+";"
#aggiungo il valore risultante MEDIATO
csvRow += smoothedValue
#aggiungo il valore istant raw
csvRow += rawIstant+";"
#aggiungo il valore istant fixed
csvRow += fixedIstant+";"
#aggiungo il valore average raw
csvRow += rawAverage+";"
#aggiungo il valore average fixed
csvRow += fixedAverage
# scrivo in blocco la riga dei valori
outFile.write(csvRow +"\r\n")
outFile.close()
+22 -3
View File
@@ -60,6 +60,8 @@ if redSrv0.get('RTDATA:VALUE:RAW') is None:
redSrv0.set('RTDATA:VALUE:RAW', 1)
if redSrv0.get('RTDATA:VALUE:REAL') is None:
redSrv0.set('RTDATA:VALUE:REAL', 1)
if redSrv0.get('RTDATA:VALUE:SMRAW') is None:
redSrv0.set('RTDATA:VALUE:SMRAW', 1)
if redSrv0.get('SETTINGS:POWER:THRESH') is None:
redSrv0.set('SETTINGS:POWER:THRESH', 0)
if redSrv0.get('SETTINGS:SMOOTHING:FUNCTION') is None:
@@ -187,21 +189,38 @@ def calculateValue():
# calcolo il valore risultante pulito (senza correzioni)
XVal = (float(v2)/float(den))
redSrv0.set('RTDATA:VALUE:RAW',round(XVal,decimalsCount))
# applicare correzioni (costanti k1*x^2, k2*x e offset)
# Smoothing EWMA valori "grezzi""
strValInRaw = XVal
# EWMAx RAW RILEGGO DA REDIS vecchio valore
oldValRaw = float(redSrv0.get('RTDATA:VALUE:SMRAW'))
if(oldValRaw == 0):
oldValRaw = 0.01
# se variazione < 50% smooth, altrimenti usa il valore nuovo
if((abs(XVal - oldValRaw) / oldValRaw) < 0.5):
# effettuo smoothing valore
eFact = 3
strValInRaw = (XVal/eFact) + (oldValRaw * (eFact-1) / eFact)
redSrv0.set('RTDATA:VALUE:SMRAW',round(strValInRaw,decimalsCount))
# applicazione correzioni (costanti k1*x^2, k2*x e offset)
newValue = (float(k1)*float(XVal)*float(XVal))+(float(k2)*float(XVal))+float(offset)
redSrv0.set('RTDATA:VALUE:REAL',round(newValue,decimalsCount))
# Smoothing EWMA valori corretti (fattori k1 k2)
strValIn = newValue
# EWMA: RILEGGO DA REDIS vecchio valore
# EWMA: RILEGGO DA REDIS vecchio valore
oldVal = float(redSrv0.get('RTDATA:VALUE:SMOOTHED'))
if(oldVal == 0):
oldVal = 0.01
# se variazione < 50% smooth
# se variazione < 50% smooth, altrimenti usa il valore nuovo
if((abs(newValue - oldVal) / oldVal) < 0.5):
# effettuo smoothing valore
eFact = 3
strValIn = (newValue/eFact) + (oldVal * (eFact-1) / eFact)
redSrv0.set('RTDATA:VALUE:SMOOTHED',round(strValIn,decimalsCount))
# init array
smoothFact= int(getRedisVal('SETTINGS:SMOOTHING:FACTOR'))
initArray = [0.0] * 8