Skip to content
Snippets Groups Projects
Commit 8ec41541 authored by Eduard Friske's avatar Eduard Friske
Browse files

Zusammenführung 20240506

parents e94a5588 3935a965
Branches
No related tags found
No related merge requests found
# leak analysis # leak analysis
Python-Programme für die Auswertung und Erstellung von Kalibrierscheinen ( TL1, TL2) Python-Programme für die Auswertung und Erstellung von Kalibrierscheinen ( TL1, TL2)
# writeLaTex-ks-TL1.py: # writeLaTex-ks-TL1.py:
Erstellung eines Kalibrierscheins für TL1 , nur das Tex-Dokument Erstellung eines Kalibrierscheins für TL1 , nur das Tex-Dokument
# writeLaTex-ks-TL2.py: # writeLaTex-ks-TL2.py:
Erstellung eines Kalibrierscheins für TL2 , nur das Tex-Dokument Erstellung eines Kalibrierscheins für TL2 , nur das Tex-Dokument
# attachment_cer.py: # attachment_cer.py:
Kalibrierscheine werden an das cer-dokument angehängt Kalibrierscheine werden an das cer-dokument angehängt
# attachment_bur.py: # attachment_bur.py:
Manuelle veränderte Versandaufträge und Gefahrenstoffe werden an das bur-dokument angehängt Manuelle veränderte Versandaufträge und Gefahrenstoffe werden an das bur-dokument angehängt
# API-V2-elab.py: # API-V2-elab.py:
Messwerte werden in das Laborbuch übertragen Messwerte werden in das Laborbuch übertragen
# file-to-couchdb_tl1_cL.py: # file-to-couchdb_tl1_cL.py:
Die Werte aus dem Messprogramm TL1 werden in das cal-dokument übertragen Die Werte aus dem Messprogramm TL1 werden in das cal-dokument übertragen
# file-to-couchdb_tl2.py: # file-to-couchdb_tl2.py:
Die Werte aus dem Messprogramm TL1 werden in das cal-dokument übertragen Die Werte aus dem Messprogramm TL1 werden in das cal-dokument übertragen
Genaue Erklärung folgt: Genaue Erklärung folgt:
# -*- coding: utf-8 -*-
"""
Created on Tue Mar 19 15:11:54 2024
@author: becker07
"""
import pathlib
import os
import couchdb
couch = couchdb.Server('http://a73434.berlin.ptb.de:5984')
db = couch['vl_db'] # existing
########## Vorgangsnummer und Jahr angeben #########
vn = "10"
year = "24"
bur = "bur-7.5-1V-" + year + "-" + vn
print(bur)
doc = db.get(bur)
sign = doc["Bureaucracy"]["Customer"]["Sign"]
sign = sign.lower()
########### Schedule Date finden ##############
n = 1000
i = 0
while i <= n:
date_type=doc["Bureaucracy"]["Date"][i]["Type"]
date=doc["Bureaucracy"]["Date"][i]["Value"]
if date_type == 'schedule':
i=n
i = i + 1
print (date_type,date )
i = 0
##################################################################
vn_np=float(vn)
if vn_np < 100:
if vn_np < 10:
vn_str = '00'+ vn
else:
vn_str = '0'+ vn
else:
vn_str = vn
print(vn_str)
vs= 'shipping-' + sign + '-' + vn_str + '-' + date
dang= 'dangerousgoods-' + sign + '-' + vn_str + '-' + date
print(vs,dang)
#dangerousgoods-alc-010-2024-01-22
vs_pdf= vs + ".pdf"
vs_tex= vs + ".tex"
#print(cer_pdf, cer_tex)
ship_pdf = "C:\\Users\\becker07\\ptb-latex\\versandauftrag\\" + vs_pdf
ship_tex = "C:\\Users\\becker07\\ptb-latex\\versandauftrag\\" + vs_tex
dg_pdf= dang + ".pdf"
dg_tex= dang + ".tex"
#print(cer_pdf, cer_tex)
dang_pdf = "C:\\Users\\becker07\\ptb-latex\\gefahrgutformular\\" + dg_pdf
dang_tex = "C:\\Users\\becker07\\ptb-latex\\gefahrgutformular\\" + dg_tex
################### Versand, Gefahrenstoffe werden an das bur-json-dokument angehangen ##################
content_ship_pdf=pathlib.Path(ship_pdf).read_bytes()
content_ship_tex=pathlib.Path(ship_tex).read_bytes()
db.put_attachment(doc, content_ship_pdf, vs_pdf , content_type='application/pdf')
db.put_attachment(doc, content_ship_tex, vs_tex , content_type='text/plain')
content_dang_pdf=pathlib.Path(dang_pdf).read_bytes()
content_dang_tex=pathlib.Path(dang_tex).read_bytes()
db.put_attachment(doc, content_dang_pdf, dg_pdf , content_type='application/pdf')
db.put_attachment(doc, content_dang_tex, dg_tex , content_type='text/plain')
################### die Kalibrierscheine werden im Ordner Kalibrierscheine gelöscht ##################
#cer_pdf= "ks-" +cers[i] + "-" + year + ".pdf"
#cer_tex= "ks-" +cers[i] + "-" + year + ".tex"
#cer_aux= "ks-" +cers[i] + "-" + year + ".aux"
#cer_log= "ks-" +cers[i] + "-" + year + ".log"
#cer_gz= "ks-" +cers[i] + "-" + year + ".synctex.gz"
#print(cer_pdf, cer_tex)
#ks_pdf = "C:\\Users\\becker07\\kalibrierschein\\" + cer_pdf
#ks_tex = "C:\\Users\\becker07\\kalibrierschein\\" + cer_tex
#ks_aux = "C:\\Users\\becker07\\kalibrierschein\\" + cer_aux
#ks_log = "C:\\Users\\becker07\\kalibrierschein\\" + cer_log
#ks_gz = "C:\\Users\\becker07\\kalibrierschein\\" + cer_gz
#print(ks_pdf, ks_tex)
#os.remove(ks_pdf)
#os.remove(ks_tex)
#os.remove(ks_aux)
#os.remove(ks_log)
#os.remove(ks_gz)
...@@ -7,27 +7,57 @@ Created on Fri Jan 6 11:14:44 2023 ...@@ -7,27 +7,57 @@ Created on Fri Jan 6 11:14:44 2023
import pathlib import pathlib
import os import os
import couchdb import couchdb
try:
from configparser import ConfigParser
except ImportError:
from ConfigParser import ConfigParser # ver. < 3.0
configtl1 = ConfigParser()
ini_values = ConfigParser()
# parse existing file
configtl1.read('tl1.ini')
ini_values.read('inputs.ini')
# read values from a section
cal_cert = ini_values.get('input_cer', 'cal_cert')
year = ini_values.get('input_gen', 'year')
year_str2=year[2:]
no = ini_values.get('input_gen', 'no')
path=configtl1.get('path', 'path')
server=configtl1.get('couch', 'couch')
db_vl=configtl1.get('couch', 'db')
couch = couchdb.Server(server)
db = couch[db_vl] # existing
RefNo = ini_values.get('bur', 'RefNo')
RefNo='bur-7.5-1V-' + year_str2 + '-' + RefNo
couch = couchdb.Server('http://a73434.berlin.ptb.de:5984') print(RefNo)
db = couch['vl_db'] # existing
doc_RefNo = db.get(RefNo)
year = "2024" cers =doc_RefNo["Bureaucracy"]["Certificate"]
cers = ["75552","75553"] # Beispiel: cers = ["75511_0001","75512_0001"]
#cers = ["75552","75553"] # Beispiel: cers = ["75511_0001","75512_0001"]
#cers = ["75562","75563"] # Beispiel: cers = ["75511_0001","75512_0001"] #cers = ["75562","75563"] # Beispiel: cers = ["75511_0001","75512_0001"]
################### die Kalibrierscheine werden an das cer-json-dokument angehangen ################## ################### die Kalibrierscheine werden an das cer-json-dokument angehangen ##################
i = 0
while i < len(cers):
json_file = "cer-" + year + '-' + cers[i] for cers_i in cers:
print(cers_i)
cers_i=str(cers_i)
json_file = "cer-" + year + '-' + cers_i
print(json_file) print(json_file)
doc = db.get(json_file) doc = db.get(json_file)
cer_pdf= "ks-" +cers[i] + "-" + year + ".pdf" cer_pdf= "ks-" +cers_i + "-" + year + ".pdf"
cer_tex= "ks-" +cers[i] + "-" + year + ".tex" cer_tex= "ks-" +cers_i + "-" + year + ".tex"
print(cer_pdf, cer_tex) print(cer_pdf, cer_tex)
ks_pdf = "C:\\Users\\becker07\\kalibrierschein\\" + cer_pdf ks_pdf = "C:\\Users\\becker07\\kalibrierschein\\" + cer_pdf
ks_tex = "C:\\Users\\becker07\\kalibrierschein\\" + cer_tex ks_tex = "C:\\Users\\becker07\\kalibrierschein\\" + cer_tex
...@@ -37,21 +67,21 @@ while i < len(cers): ...@@ -37,21 +67,21 @@ while i < len(cers):
db.put_attachment(doc, content_pdf, cer_pdf , content_type='application/pdf') db.put_attachment(doc, content_pdf, cer_pdf , content_type='application/pdf')
db.put_attachment(doc, content_tex, cer_tex , content_type='text/plain') db.put_attachment(doc, content_tex, cer_tex , content_type='text/plain')
i += 1
################### die Kalibrierscheine werden im Ordner Kalibrierscheine gelöscht ################## ################### die Kalibrierscheine werden im Ordner Kalibrierscheine gelöscht ##################
i = 0 for cers_i in cers:
while i < len(cers): cers_i=str(cers_i)
json_file = "cer-" + year + '-' + cers[i] json_file = "cer-" + year + '-' + cers_i
print(json_file) print(json_file)
doc = db.get(json_file) doc = db.get(json_file)
cer_pdf= "ks-" +cers[i] + "-" + year + ".pdf" cer_pdf= "ks-" + cers_i + "-" + year + ".pdf"
cer_tex= "ks-" +cers[i] + "-" + year + ".tex" cer_tex= "ks-" + cers_i + "-" + year + ".tex"
cer_aux= "ks-" +cers[i] + "-" + year + ".aux" cer_aux= "ks-" + cers_i + "-" + year + ".aux"
cer_log= "ks-" +cers[i] + "-" + year + ".log" cer_log= "ks-" + cers_i + "-" + year + ".log"
cer_gz= "ks-" +cers[i] + "-" + year + ".synctex.gz" cer_gz= "ks-" + cers_i + "-" + year + ".synctex.gz"
print(cer_pdf, cer_tex) print(cer_pdf, cer_tex)
ks_pdf = "C:\\Users\\becker07\\kalibrierschein\\" + cer_pdf ks_pdf = "C:\\Users\\becker07\\kalibrierschein\\" + cer_pdf
ks_tex = "C:\\Users\\becker07\\kalibrierschein\\" + cer_tex ks_tex = "C:\\Users\\becker07\\kalibrierschein\\" + cer_tex
...@@ -66,4 +96,4 @@ while i < len(cers): ...@@ -66,4 +96,4 @@ while i < len(cers):
os.remove(ks_log) os.remove(ks_log)
os.remove(ks_gz) os.remove(ks_gz)
i += 1
\ No newline at end of file \ No newline at end of file
{
"Pfad":
{
"Messwerte": "/home/friske01/O/Vakuum/Messplaetze/TL2/Messwerte/",
"Kalibrierschein": "/home/friske01/KS/"
},
"KS-Daten":
{
"Jahr": 2024,
"lfd. Nr.": 1
}
}
...@@ -28,7 +28,9 @@ db = couch['vl_db'] # existing ...@@ -28,7 +28,9 @@ db = couch['vl_db'] # existing
cal_cert = "75559" cal_cert = "75559"
year = "2024" year = "2024"
no = "0001" no = "0001"
......
<<<<<<<< HEAD:file-to-couchdb_TLV_cL.py
# -*- coding: utf-8 -*- # -*- coding: utf-8 -*-
""" """
Created on Fri Jul 1 12:12:37 2022 Created on Fri Jul 1 12:12:37 2022
...@@ -667,3 +668,693 @@ db.put_attachment(doc, content, "Scan.pdf" , content_type="'application/pdf") ...@@ -667,3 +668,693 @@ db.put_attachment(doc, content, "Scan.pdf" , content_type="'application/pdf")
========
# -*- coding: utf-8 -*-
"""
Created on Fri Jul 1 12:12:37 2022
@author: becker07
"""
import sys
import numpy as np
import couchdb
import pandas as pd
import json
import csv
import re
from matplotlib import pyplot as plt
import pathlib
try:
from configparser import ConfigParser
except ImportError:
from ConfigParser import ConfigParser # ver. < 3.0
configtl = ConfigParser()
ini_values = ConfigParser()
# parse existing file
configtl.read('tl.ini')
ini_values.read('inputs.ini')
server=configtl.get('couch', 'couch')
db_vl=configtl.get('couch', 'db')
couch = couchdb.Server(server)
db = couch[db_vl] # existing
## Eingabe von:
# - Kalibrierscheinnummer
# - Jahr der Kalibrierung
# - laufende Nummer der Kalibrierung
path=configtl.get('path', 'path_files')
cal_cert = ini_values.get('input_cer', 'cal_cert')
year = ini_values.get('input_gen', 'year')
no = ini_values.get('input_gen', 'no')
QMS="ja" ######### ja beim Scan
kk_ik_pn= "kk" ######## kk,ik oder pn
json_file = "cal-" + year + "-fm1-kk-" + cal_cert + "_" + no
doc = db.get(json_file)
print(json_file)
#path='C:\\Users\\becker07\\python\\TL1\\'
dateiTab = path + cal_cert + "_" + no
#dateiTab='C:\\Users\\becker07\\python\\TL1\\75561'
print(dateiTab)
dateiTab=pd.read_csv(dateiTab, sep="\t", decimal = ',' )
L_ar=dateiTab["C "]
print('Leitwert j= 1, nein = 0 :: ', L_ar)
L=L_ar[0]
print('Leitwert : ',L)
gauge = float(doc["Calibration"]["CustomerObject"]["Setup"]["CDG"])
print(gauge)
fileQMS = path + "QMS" + cal_cert + "_" + no + ".txt"
dateiQMS =fileQMS
ScanQMS= path + "Scan"+ cal_cert + "_" + no+ ".txt"
ScanOffsQMS= path + "ScanOffs"+cal_cert + "_" + no+ ".txt"
print(ScanQMS)
# Die Daten aus dem File mit der entsprechenden Kalibrierscheinnummer werden eingelesen:
# datum, time, p_up und alle Temperaturen,
#datei = "N:\Abt_7\Fb75\Vakuum\Messplaetze\TL1\Kalibrierungen\\22\\TP7464.txt"
if L == 1 :
m1=dateiTab["m1"]
m2=dateiTab["m2"]
m3=dateiTab["m3"]
m4=dateiTab["m4"]
t1=dateiTab["t1"]
t2=dateiTab["t2"]
t3=dateiTab["t3"]
t4=dateiTab["t4"]
time1=dateiTab["time1"]
time2=dateiTab["time2"]
time3=dateiTab["time3"]
pmean=dateiTab["p-mean"]*100
pmin=dateiTab["p-min"]*100
pmax=dateiTab["p-max"]*100
h=dateiTab["distance"]
print("Constantes Volumen",h)
else:
print("Constanter Leitwert")
datum=dateiTab["Datum"]
time=dateiTab["Zeit"]
gas=dateiTab["Gasart"]
if gauge== 0.01 :
p_offs_01=dateiTab["p-offset"]*100
p_fill_01=dateiTab["p-fill "]*100
p_fill_srg=dateiTab["p-max"]
p_offs_srg=dateiTab["p-min"]
else :
p_offs=dateiTab["p-offset"]*100
p_fill=dateiTab["p-fill "]*100
#p_fill=np.genfromtxt(dateiTab,skip_header=1,delimiter='\t',usecols=(5))
p_ig=dateiTab["Kommentar"]
T_room=dateiTab["T-Raum"]
T_fm=dateiTab["T-FM"]
T_tl1=dateiTab["T-TL1"]
T_tl2=dateiTab["T-TL2"]
T_tl3=dateiTab["T-TL3"]
T_tl4=dateiTab["T-TL4"]
#print(T_fm,T_room,T_tl1, T_tl2,T_tl3,T_tl4)
I_TL_time=dateiTab["Time-TL"]
I_Offs_time=dateiTab["Time-offset"]
I_FM_time=dateiTab["Time-FM"]
#print(I_TL_time,I_Offs_time,I_FM_time)
Valve=dateiTab["Ventil"]
if QMS == "ja" :
I_TL_time=dateiTab["Time-TL"]
I_Offs_time=dateiTab["Time-offset"]
I_FM_time=dateiTab["Time-FM"]
#print(I_TL_time,I_Offs_time,I_FM_time)
####################### Der Scan des QMS ##############################################################################
############## die leeren Zeilen und Überschriften werden gelöscht ###################
with open(ScanQMS, "r") as fp:
tab=fp.read()
with open('ScanQMS.txt', 'w') as fp:
fp.write(tab)
with open(ScanOffsQMS, "r") as fp:
tab=fp.read()
with open('ScanOffsQMS.txt', 'w') as fp:
fp.write(tab)
del_def = []
with open('ScanQMS.txt', "r") as fp:
del_def = fp.readlines()
with open('ScanQMS.txt', "w") as fp:
for number, line in enumerate(del_def):
if number not in [0, 1,6,7,22,23,24,25,47,48]:
fp.write(line)
del_def = []
with open('ScanOffsQMS.txt', "r") as fp:
del_def = fp.readlines()
with open('ScanOffsQMS.txt', "w") as fp:
for number, line in enumerate(del_def):
if number not in [0, 1,6,7,22,23,24,25,47,48]:
fp.write(line)
########### Scan #####################
with open('ScanQMS.txt','r') as file:
tab=file.read()
lstdef=tab.rfind("Channel count")+16
lsttab=tab.rfind("Scan Data (Pressures in mbar)")+32
filetab=tab[lsttab:] ### Das File wird getrennt und die Tabelle mit den Messwerten in das filetab übergeben
filedef=tab[:lstdef] ### Das File wird getrennt und die Einstellungen und Infos in filedef übergeben
with open('QMS-Def.txt', 'w') as f:
f.write(filedef)
df_tab = pd.read_csv("QMS-Def.txt",
sep="\t",
#usecols=["Time"]
header=None,
)
def_key=np.array(df_tab[0])
l=len(def_key)
print(l)
#def_key=np.delete(def_key, l-1)
def_value=np.array(df_tab[1], dtype=str)
#def_value=np.delete(def_value, l-1)
with open('QMS-Scan.txt', 'w') as f:
f.write(filetab)
df = pd.read_csv("QMS-Scan.txt",
sep="\t",
#usecols=["Time"]
header=None,
)
df=df.replace(np.nan, 0)
l=len(df)
print(l)
mass_no=np.array(df[0:1])
mass_unit=mass_no[0]
if l == 3:
mass_value=np.array(df[1:2])
mass_value=mass_value[0]
print(mass_value())
else:
mass_value=np.array(df[l-2:l-1])
mass_value=mass_value[0]
#############################################################################################################
########### Scan Offset #####################
with open('ScanOffsQMS.txt','r') as file:
tab_offs=file.read()
lstdef_offs=tab_offs.rfind("Channel count")+16
lsttab_offs=tab_offs.rfind("Scan Data (Pressures in mbar)")+32
filetab_offs=tab_offs[lsttab_offs:] ### Das File wird getrennt und die Tabelle mit den Messwerten in das filetab übergeben
filedef_offs=tab_offs[:lstdef_offs] ### Das File wird getrennt und die Einstellungen und Infos in filedef übergeben
with open('QMS_Offs-Def.txt', 'w') as f:
f.write(filedef_offs)
df_tab_offs = pd.read_csv("QMS_Offs-Def.txt",
sep="\t",
#usecols=["Time"]
header=None,
)
def_key_offs=np.array(df_tab_offs[0])
l=len(def_key_offs)
def_value_offs=np.array(df_tab_offs[1], dtype=str)
#def_value=np.delete(def_value, l-1)
with open('QMS_Offs-Scan.txt', 'w') as f:
f.write(filetab_offs)
df_offs = pd.read_csv("QMS_Offs-Scan.txt",
sep="\t",
#usecols=["Time"]
header=None,
)
df_offs=df_offs.replace(np.nan, 0)
l=len(df_offs)
print(l)
if l == 3:
mass_value_offs=np.array(df_offs[1:2])
mass_value_off=mass_value_offs[0]
print(mass_value_offs())
else:
mass_value_offs=np.array(df_offs[l-2:l-1])
mass_value_off=mass_value_offs[0]
#############################################################################################################
###################### Plot der Scans werden abgebildet und den json-dokument hinzugefügt #####################
I_Scan=np.float64(mass_value[2:-2])
I_Scan_Offs=np.float64(mass_value_off[2:-2])
Mass_Scan=mass_no[0]
Mass_Scan=Mass_Scan[2:-2]
for i in range(len(Mass_Scan)):
Mass_Scan[i] = re.sub(r"Mass ", "", Mass_Scan[i]).strip()
Mass_Scan=np.float64(Mass_Scan)
fig=plt.figure()
ax=fig.add_axes([0,0,4,2])
ax.set_xlabel('Masse')
ax.set_ylabel('QMS-Signal')
ax.set_yscale('log')
#plt.plot(1010,4.65e-10, 'bo')
plt.plot(Mass_Scan,I_Scan, label=r'Floww')
plt.plot(Mass_Scan,I_Scan_Offs,label=r'Offset' )
plt.legend()
plt.grid()
fig.savefig("Scan.pdf", bbox_inches='tight')
#############################################################################################################
from collections import OrderedDict
def getMassAverage(filename, tbegin = None, tend = None, trange = None):
def error_exit(x):
print('ERROR: ', str(x), file=sys.stderr)
sys.exit(1)
if not trange and (not tbegin or not tend):
error_exit('Missing time range')
try:
d = {}
with open(filename, 'r') as f:
line = f.readline()
dataValid = False
while line:
if dataValid:
# Ende der Daten
if line.startswith('"[Annotations/User Records'):
dataValid = False
else:
l = line.strip()
a = l.split('\t')# An Tabulatoren trennen
# a[0] = "Time", a[1] = "Scan", a[2] = "Mass 4", a[3] = "Sum Scanned Masses"
if a[0]:
key = a[0].strip('"')
# Timestamp als key für Dictionary
d[key] = a[2]
else:
# Beginn der Daten
if line.startswith('"Time"'):
dataValid = True
line = f.readline()
except:
error_exit("Can't read file: " + filename)
finally:
f.close()
# Sortieren bei neueren Python-Versionen unnötig?
data = OrderedDict(sorted(d.items()))
def doAverage(beg, end):
sum = 0.0
cnt = 0
for key in data:
if key >= beg and key < end:
#print(key, '-->', data[key])
cnt += 1
sum += float(data[key])
return sum / cnt
tb = []
te = []
res = []
if trange:
if not isinstance(trange,list):
trange = [trange]# Einzelwert zu Array machen
for x in trange:
a = x.split(' -')
tb.append(a[0].strip())
te.append(a[1].strip())
else:
if not isinstance(tbegin,list):
tb = [tbegin]# Einzelwert zu Array machen
if not isinstance(tend,list):
te = [tend]# Einzelwert zu Array machen
i = 0
while i < len(tb):
s = doAverage(tb[i], te[i])
res.append(s)
i += 1
if len(res) == 1:
return res[0]# Bei nur einem Wert: kein Array
else:
return res
trangeArrayTL=list(I_TL_time)
trangeArrayFM=list(I_FM_time)
trangeArrayOff=list(I_Offs_time)
xtrangeArray = [
'28.07.2022 09:19:19 -28.07.2022 09:21:18 '
]
#trangeArray = I_TL_time
x1 = getMassAverage(filename=dateiQMS,trange=trangeArrayTL )
i = 0
while i < len(x1):
print(i, 'Mass Avarage: ', x1[i])
i += 1
print(x1)
x2 = getMassAverage(filename=dateiQMS,trange=trangeArrayFM )
i = 0
while i < len(x2):
print(i, 'Mass Avarage: ', x2[i])
i += 1
print(x2)
x3 = getMassAverage(filename=dateiQMS,trange=trangeArrayOff)
i = 0
while i < len(x3):
print(i, 'Mass Avarage: ', x3[i])
i += 1
print(x3)
I_TL=np.array(x1)
I_FM=np.array(x2)
I_Offs=np.array(x3)
########################################################################################################################################
# Temperatur
lis_T_fm = T_fm.tolist()
lis_T_room = T_room.tolist()
lis_T_tl1 = T_tl1.tolist()
lis_T_tl2 = T_tl2.tolist()
lis_T_tl3 = T_tl3.tolist()
lis_T_tl4 = T_tl4.tolist()
# Druck
if gauge == 0.01 :
lis_p_offs_01 = p_offs_01.tolist()
lis_p_fill_01 = p_fill_01.tolist()
lis_p_offs_srg = p_offs_srg.tolist()
lis_p_fill_srg = p_fill_srg.tolist()
else:
lis_p_offs = p_offs.tolist()
lis_p_fill = p_fill.tolist()
lis_p_ig = p_ig.tolist()
# I-QMS
lis_I_TL_time = I_TL_time.tolist()
lis_I_Offs_time = I_Offs_time.tolist()
lis_I_FM_time = I_FM_time.tolist()
# I-QMS
lis_I_TL = I_TL.tolist()
lis_I_Offs = I_Offs.tolist()
lis_I_FM = I_FM.tolist()
# Datum
# Datum
lis_datum = datum.tolist()
lis_time = time.tolist()
# Ventil
lis_valve = Valve.tolist()
datum_meas = lis_datum[0:1]
if L == 1 :
#Leitwert
lis_c = L_ar.tolist()
# Steigung SZ
lis_m1 = m1.tolist()
lis_m2 = m2.tolist()
lis_m3 = m3.tolist()
lis_m4 = m4.tolist()
# Zeitpunkte
lis_t1 = t1.tolist()
lis_t2 = t2.tolist()
lis_t3 = t3.tolist()
lis_t4 = t4.tolist()
# Zeit pro SZ
lis_time1 = time1.tolist()
lis_time2 = time2.tolist()
lis_time3 = time3.tolist()
# Druck der SZ
lis_pmean = pmean.tolist()
lis_pmin = pmin.tolist()
lis_pmax= pmax.tolist()
# Druck der SZ
lis_h = h.tolist()
doc["Calibration"]["Measurement"]["Values"]={"Temperature": [{"Unit": "C","Type": "T-FM","Comment":"Temperatur T ","Value": lis_T_fm},
{"Unit": "C","Type": "T-Room","Comment":"Temperatur T","Value": lis_T_room},
{"Unit": "C","Type": "T-TL1","Comment":"Temperatur T","Value": lis_T_tl1},
{"Unit": "C","Type": "T-TL2","Comment":"Temperatur T","Value":lis_T_tl2},
{"Unit": "C","Type": "T-TL2","Comment":"Temperatur T","Value":lis_T_tl3},
{"Unit": "C","Type": "T-TL3","Comment":"Temperatur T","Value": lis_T_tl4}],
"Pressure": [{"Unit": "Pa","Type": "Offset pressure","Value":lis_p_offs},
{"Unit": "Pa","Type": "pressure mean","Value":lis_p_fill},
{"Unit": "bar","Type": "TL1 pressure ","Value":lis_p_ig}],
"Date": [{"Unit": "year-month-day","Type": "Datum","Value":lis_datum},
{"Unit": "hh:mm:ss","Type": "Messzeit","Value":lis_time}],
"Valve": [{"Unit": "1","Type": "Connection", "Comment":"Connection of the leak" ,"Value":lis_valve}],
"Current": [{"Unit": "mbar","Type": "I-TL","Value": lis_I_TL},
{"Unit": "mbar","Type": "I-FM","Value": lis_I_FM},
{"Unit": "mbar","Type": "I-Offs","Value": lis_I_Offs}],
"CurrentTime": [{"Unit": "dd.mm.yy hh:mm:ss -dd.mm.yy hh:mm:ss","Type": "I-TL","Value": lis_I_TL_time},
{"Unit": "dd.mm.yy hh:mm:ss -dd.mm.yy hh:mm:ss","Type": "I-FM","Value": lis_I_FM_time},
{"Unit": "dd.mm.yy hh:mm:ss -dd.mm.yy hh:mm:ss","Type": "I-Offs","Value": lis_I_Offs_time}]
}
doc["Calibration"]["Measurement"]["Date"]=[{"Type": "measurement","Value": datum_meas}]
doc["Calibration"]["Measurement"]["Values"]["Conductance"]={"t": [{"Unit": "s","Type": "t1","Comment":"Zeitpunkt t1 des 1.SZ","Value": lis_t1},
{"Unit": "s","Type": "t2","Comment":"Zeitpunkt t2 des 2.SZ","Value": lis_t2},
{"Unit": "s","Type": "t3","Comment":"Zeitpunkt t3 des 3.SZ","Value": lis_t3},
{"Unit": "s","Type": "t4","Comment":"Zeitpunkt t4 des 4.SZ","Value": lis_t4}],
"time": [{"Unit": "s","Type": "time1","Comment":"Zeit t2-t1 von SZ","Value": lis_time1},
{"Unit": "s","Type": "time2","Comment":"Zeit t3-t2 von SZ","Value": lis_time2},
{"Unit": "s","Type": "time3","Comment":"Zeit t4-t3 von SZ","Value": lis_time3}],
"m": [{"Unit": "Pa/s","Type": "m1","Comment":"Steigung m1 des 1.SZ","Value": lis_m1},
{"Unit": "Pa/s","Type": "m2","Comment":"Steigung m1 des 2.SZ","Value": lis_m2},
{"Unit": "Pa/s","Type": "m3","Comment":"Steigung m1 des 3.SZ","Value": lis_m3},
{"Unit": "Pa/s","Type": "m3","Comment":"Steigung m1 des 4.SZ","Value": lis_m3}],
"pressure": [{"Unit": "Pa","Type": "pmean","Comment":"Mittelwert von p","Value": lis_pmean},
{"Unit": "Pa","Type": "pmin","Comment":"p_min des SZ","Value": lis_pmin},
{"Unit": "Pa","Type": "pmax","Comment":"p_max des SZ","Value": lis_pmax}],
"l": [{"Unit": "mm","Type": "l","Comment":"Hub des Verdrängers","Value": lis_h}],
"C": [{"Unit": "m^3/s","Type": "Constanter Leitwert ","Value": lis_c}]
}
print("Constantes Volumen")
else:
lis_c = L_ar.tolist()
if gauge == 0.01 :
doc["Calibration"]["Measurement"]["Values"]={"Temperature": [{"Unit": "C","Type": "T-FM ","Comment":"Temperatur T ","Value": lis_T_fm},
{"Unit": "C","Type": "T-Room","Comment":"Temperatur T","Value": lis_T_room},
{"Unit": "C","Type": "T-TL1","Comment":"Temperatur T","Value": lis_T_tl1},
{"Unit": "C","Type": "T-TL2","Comment":"Temperatur T","Value":lis_T_tl2},
{"Unit": "C","Type": "T-TL2","Comment":"Temperatur T","Value":lis_T_tl3},
{"Unit": "C","Type": "T-TL3","Comment":"Temperatur T","Value": lis_T_tl4}],
"Pressure": [{"Unit": "DCR","Type": "Offset pressure SRG","Value":lis_p_offs_srg},
{"Unit": "DCR","Type": "Fill pressure SRG ","Value":lis_p_fill_srg},
{"Unit": "Pa","Type": "Offset pressure 01Torr","Value":lis_p_offs_01},
{"Unit": "Pa","Type": "Fill pressure 01Torr","Value":lis_p_fill_01},
{"Unit": "mbar","Type": "TL1 pressure ","Value":lis_p_ig}],
"Date": [{"Unit": "year-month-day","Type": "Datum","Value":lis_datum},
{"Unit": "hh:mm:ss","Type": "Messzeit","Value":lis_time}],
"Valve": [{"Unit": "1","Type": "Connection", "Comment":"Connection of the leak" ,"Value":lis_valve}],
"Current": [{"Unit": "mbar","Type": "I-TL","Value": lis_I_TL},
{"Unit": "mbar","Type": "I-FM","Value": lis_I_FM},
{"Unit": "mbar","Type": "I-Offs","Value": lis_I_Offs}],
"CurrentTime": [{"Unit": "dd.mm.yy hh:mm:ss -dd.mm.yy hh:mm:ss","Type": "I-TL","Value": lis_I_TL_time},
{"Unit": "dd.mm.yy hh:mm:ss -dd.mm.yy hh:mm:ss","Type": "I-FM","Value": lis_I_FM_time},
{"Unit": "dd.mm.yy hh:mm:ss -dd.mm.yy hh:mm:ss","Type": "I-Offs","Value": lis_I_Offs_time}]
}
print("SRG")
else:
doc["Calibration"]["Measurement"]["Values"]={"Temperature": [{"Unit": "C","Type": "T-FM","Comment":"Temperatur T ","Value": lis_T_fm},
{"Unit": "C","Type": "T-Room","Comment":"Temperatur T","Value": lis_T_room},
{"Unit": "C","Type": "T-TL1","Comment":"Temperatur T","Value": lis_T_tl1},
{"Unit": "C","Type": "T-TL2","Comment":"Temperatur T","Value":lis_T_tl2},
{"Unit": "C","Type": "T-TL2","Comment":"Temperatur T","Value":lis_T_tl3},
{"Unit": "C","Type": "T-TL3","Comment":"Temperatur T","Value": lis_T_tl4}],
"Pressure": [{"Unit": "Pa","Type": "Offset pressure","Value":lis_p_offs},
{"Unit": "Pa","Type": " pressure fill","Value":lis_p_fill},
{"Unit": "mbar","Type": "TL1 pressure","Value":lis_p_ig}],
"Date": [{"Unit": "year-month-day","Type": "Datum","Value":lis_datum},
{"Unit": "hh:mm:ss","Type": "Messzeit","Value":lis_time}],
"Valve": [{"Unit": "1","Type": "Connection", "Comment":"Connection of the leak" ,"Value":lis_valve}],
"Current": [{"Unit": "mbar","Type": "I-TL","Value": lis_I_TL},
{"Unit": "mbar","Type": "I-FM","Value": lis_I_FM},
{"Unit": "mbar","Type": "I-Offs","Value": lis_I_Offs}],
"CurrentTime": [{"Unit": "dd.mm.yy hh:mm:ss -dd.mm.yy hh:mm:ss","Type": "I-TL","Value": lis_I_TL_time},
{"Unit": "dd.mm.yy hh:mm:ss -dd.mm.yy hh:mm:ss","Type": "I-FM","Value": lis_I_FM_time},
{"Unit": "dd.mm.yy hh:mm:ss -dd.mm.yy hh:mm:ss","Type": "I-Offs","Value": lis_I_Offs_time}]
}
doc["Calibration"]["Measurement"]["Values"]["Conductance"]={ "C": [{"Unit": "m^3/s","Type": "Constanter Leitwert","Value": lis_c}]}
print("Constanter Leitwert")
doc["Calibration"]["Measurement"]["Date"]=[{"Type": "measurement","Value": datum_meas}]
lis_mass_no = mass_no.tolist()[0]
lis_mass_value = mass_value.tolist()
lis_mass_value_offs = mass_value_offs.tolist()[0]
key_value=dict(zip(def_key, def_value))
key_value_offs=dict(zip(def_key_offs, def_value_offs))
doc["Calibration"]["Measurement"]["AuxValues"]={"ScanQMS": [{"Unit": "Mass","Type": "QMS","Comment":"Masse ","Value":lis_mass_no},
{"Unit": "mbar","Type": "Current","Comment":"Wert / Masse","Value": lis_mass_value},
{"Unit": "mbar","Type": "Current Offset","Comment":"Wert / Masse","Value": lis_mass_value_offs}],
"DefQMS": [{"Type": "Scan QMS","Value":key_value},
{"Type": "Scan Offset QMS","Value": key_value_offs}]}
#doc["Calibration"]["Measurement"]["AuxValues"]={"ScanQMS": [{"Unit": "Mass","Type": "QMS ","Comment":"Masse ","Value":lis_mass_no},
# {"Unit": "mbar","Type": "Current","Comment":"Wert / Masse","Value": lis_mass_value},
## {"Unit": "mbar","Type": "Current Offset","Comment":"Wert / Masse","Value": lis_mass_value_offs}],
# "DefQMS": [{"Type": "Scan QMS ","Value":key_value},
# {"Type": "Scan Offset QMS","Value": key_value_offs}]}
#db.save(doc)
content=pathlib.Path('Scan.pdf').read_bytes()
db.put_attachment(doc, content, "Scan.pdf" , content_type="'application/pdf")
>>>>>>>> 3935a96522bd6df202a002bc0f35c344c9a917ac:file-to-couchdb_tl1.py
# -*- coding: utf-8 -*-
"""
Created on Thu Feb 22 11:21:17 2024
@author: becker07
"""
from matplotlib import pyplot as plt
import pathlib
from statistics import mean
from datetime import datetime
from IPython.display import Markdown as md
import numpy as np
import re
import math
import statistics
import pandas as pd
import json
import couchdb
import PyPDF2
couch = couchdb.Server('http://a73434.berlin.ptb.de:5984')
db = couch['vl_db'] # existing
#json_file = "cal-" + year + "-fm1-" + "-" + cal_cert + "_" + no
json_file = "cal-2024-fm1-kk-75565_0001"
print(json_file)
doc = db.get(json_file)
I_Scan_Offs=np.array(doc["Calibration"]["Measurement"]["AuxValues"]["ScanQMS"][2]["Value"])
I_Scan_Offs=np.float64(I_Scan_Offs[2:-2])
I_Scan=np.array(doc["Calibration"]["Measurement"]["AuxValues"]["ScanQMS"][1]["Value"])
I_Scan=np.float64(I_Scan[2:-2])
Mass_Scan=np.array(doc["Calibration"]["Measurement"]["AuxValues"]["ScanQMS"][0]["Value"])
Mass_Scan=Mass_Scan[2:-2]
for i in range(len(Mass_Scan)):
Mass_Scan[i] = re.sub(r"Mass ", "", Mass_Scan[i]).strip()
Mass_Scan=np.float64(Mass_Scan)
fig=plt.figure()
ax=fig.add_axes([0,0,4,2])
ax.set_xlabel('Masse')
ax.set_ylabel('QMS-Signal')
ax.set_yscale('log')
#plt.plot(1010,4.65e-10, 'bo')
plt.plot(Mass_Scan,I_Scan, label=r'Flow')
plt.plot(Mass_Scan,I_Scan_Offs,label=r'Offset' )
plt.legend()
plt.grid()
fig.savefig("Scan.pdf", bbox_inches='tight')
content=pathlib.Path('Scan.pdf').read_bytes()
db.put_attachment(doc, content, "Scan.pdf" , content_type="'application/pdf")
tl.ini 0 → 100644
[path]
path_ks=C:\\Users\\becker07\\kalibrierschein\\ks-
path_files=C:\\Users\\becker07\\python\\TL1\\
[couch]
couch = http://a73434.berlin.ptb.de:5984
db = vl_db
[api]
API_HOST_URL = https://elabftw.ptb.de/api/v2
API_KEY = Beispiel
\ No newline at end of file
# -*- coding: utf-8 -*-
"""
Created on Tue Aug 23 09:45:09 2022
@author: becker07
"""
import time import time
import couchdb import couchdb
from datetime import date from datetime import date
couch = couchdb.Server('http://a73434.berlin.ptb.de:5984') try:
db = couch['vl_db'] # existing from configparser import ConfigParser
except ImportError:
from ConfigParser import ConfigParser # ver. < 3.0
configtl1 = ConfigParser()
ini_values = ConfigParser()
# parse existing file
configtl1.read('tl.ini')
ini_values.read('inputs.ini')
# read values from a section
## Eingabe von: cal_cert = ini_values.get('input_cer', 'cal_cert')
# - Kalibrierscheinnummer year = ini_values.get('input_gen', 'year')
# - Jahr der Kalibrierung year_str2=year[2:]
# - laufende Nummer der Kalibrierung no = ini_values.get('input_gen', 'no')
path=configtl1.get('path', 'path')
server=configtl1.get('couch', 'couch')
db_vl=configtl1.get('couch', 'db')
cal_cert = "75552" couch = couchdb.Server(server)
year = "2024" db = couch[db_vl] # existing
year_Mark=year[2:]
print(year_Mark)
no = "0001"
CertificateDate = str(date.today())
CertificateDate = str(date.today())
json_file_cer = "cer-" + year + "-" + cal_cert json_file_cer = "cer-" + year + "-" + cal_cert
print(json_file_cer) print(json_file_cer)
### Kontrolle ob schon ein cer existiert #########
id_cer = 0 id_cer = 0
mango = {'selector': {'_id':json_file_cer}} mango = {'selector': {'_id':json_file_cer}}
...@@ -41,10 +47,11 @@ print(id_cer) ...@@ -41,10 +47,11 @@ print(id_cer)
doc = {'_id': json_file_cer} doc = {'_id': json_file_cer}
if id_cer == 0: if id_cer == 0:
db.save(doc) db.save(doc)
print ( "Warten! 30 Sekunden" ) print ( "Warten! 5 Sekunden" )
time.sleep ( 30 ) time.sleep ( 5 )
print ( json_file_cer," ist in der Couch angelegt" ) print ( json_file_cer," ist in der Couch angelegt" )
else: else:
...@@ -52,8 +59,7 @@ else: ...@@ -52,8 +59,7 @@ else:
id_ = "cal-" + year + "-fm1-kk-" + cal_cert + "_" + no id_ = "cal-" + year + "-fm1-kk-" + cal_cert + "_" + no
ks = "C:\\Users\\becker07\\kalibrierschein\\ks-" + cal_cert + "-" + year + ".tex" ks = path + cal_cert + "-" + year + ".tex"
cer = "cer-" + year + "-" + cal_cert cer = "cer-" + year + "-" + cal_cert
json_file_cal = id_ json_file_cal = id_
...@@ -62,19 +68,24 @@ doc_cal = db.get(json_file_cal) ...@@ -62,19 +68,24 @@ doc_cal = db.get(json_file_cal)
doc_cer = db.get(json_file_cer) doc_cer = db.get(json_file_cer)
print(json_file_cal)
##### Daten aus dem cal Dokument werden eingelesen#######
##### Meta ####### std = doc_cal["Calibration"]["ToDo"]["Standard"]
kind = doc_cal["Calibration"]["ToDo"]["Type"] kind = doc_cal["Calibration"]["ToDo"]["Type"]
gas = doc_cal["Calibration"]["ToDo"]["Gas"] gas = doc_cal["Calibration"]["ToDo"]["Gas"]
lang = doc_cal["Calibration"]["Customer"]["Lang"] lang = doc_cal["Calibration"]["Customer"]["Lang"]
todo = doc_cal["Calibration"]["ToDo"]["Type"]
print(lang)
calibration_type = "KK" calibration_type = "KK"
last_cert_no = doc_cal["Calibration"]["Presettings"] last_cert_no = doc_cal["Calibration"]["Presettings"]
###### überprüfen ob eine letztes Cal-Zeichen gibt ######################### ###### überprüfen ob eine letztes Cal-Zeichen gibt #########################
if "LastCalibrationYear" in last_cert_no: if "LastCalibrationYear" in last_cert_no:
...@@ -92,21 +103,6 @@ else: ...@@ -92,21 +103,6 @@ else:
##### Titlepage #######
MeasurementDateBegin = doc_cal["Calibration"]["Measurement"]["Date"][0]["Value"]
MeasurementDateBegin = MeasurementDateBegin[0]
MeasurementDateEnd = doc_cal["Calibration"]["Measurement"]["Date"][0]["Value"]
MeasurementDateEnd = MeasurementDateEnd[0]
CountryCode= lang
DeviceClass= "TLV"
Standard = doc_cal["Calibration"]["ToDo"]["Standard"] Standard = doc_cal["Calibration"]["ToDo"]["Standard"]
Land= doc_cal["Calibration"]["Customer"]["Address"]["Land"] Land= doc_cal["Calibration"]["Customer"]["Address"]["Land"]
...@@ -121,156 +117,194 @@ Zipcode= doc_cal["Calibration"]["Customer"]["Address"]["Zipcode"] ...@@ -121,156 +117,194 @@ Zipcode= doc_cal["Calibration"]["Customer"]["Address"]["Zipcode"]
ObjectOfCalibration= doc_cal["Calibration"]["CustomerObject"]["Type"] ObjectOfCalibration= doc_cal["Calibration"]["CustomerObject"]["Type"]
Producer= doc_cal["Calibration"]["CustomerObject"]["Device"]["Producer"] Producer= doc_cal["Calibration"]["CustomerObject"]["Device"]["Producer"]
Type= doc_cal["Calibration"]["CustomerObject"]["Device"]["Type"] ########## Type Type= doc_cal["Calibration"]["CustomerObject"]["Device"]["Type"] ########## Type
Object= doc_cal["Calibration"]["CustomerObject"]["NameCer"] ########## Gegenstand/Object Object= doc_cal["Calibration"]["CustomerObject"]["Type"] ########## Gegenstand/Object
Serial= doc_cal["Calibration"]["CustomerObject"]["Name"] ########## Kennummer Serial= doc_cal["Calibration"]["CustomerObject"]["Name"] ########## Kennummer
Examiner= doc_cal["Calibration"]["Measurement"]["Maintainer"] Examiner= doc_cal["Calibration"]["Measurement"]["Maintainer"]
ByOrder= "Dr. Matthias Bernien" ByOrder= "Dr. Matthias Bernien"
MeasurementDate= doc_cal["Calibration"]["Result"]["Formula"]["MeasurementDate"] MeasurementDate= doc_cal["Calibration"]["Result"]["Formula"]["MeasurementDate"]
QMS= doc_cal["Calibration"]["Result"]["Formula"]["QMS"] QMS= doc_cal["Calibration"]["Result"]["Formula"]["QMS"]
print(MeasurementDate)
obj ='\\object{'+ Object + '}\n' obj ='\\object{'+ Object + '}\n'
manufacturer = '\\manufacturer{' + Producer +' }\n' manufacturer = '\\manufacturer{' + Producer +' }\n'
typ = '\\type{' + Type + '}\n' typ = '\\type{' + Type + '}\n'
serialNo = '\\serialNo{' + Serial + '}\n' serialNo = '\\serialNo{' + Serial + '}\n'
applicant = '\\applicant{{' + Name + '}\n {' + Street + '} \n {' + Zipcode +' ' + Town +'}\n {' + Land+'}}\n' applicant = '\\applicant{{' + Name + '}\n {' + Street + '} \n {' + Zipcode + Town +'}\n {' + Land +'}}\n'
refNo = '\\refNo{ ' + ReferenceNo + '}\n' refNo = '\\refNo{ ' + ReferenceNo + '}\n'
calibMark = '\\calibMark{ ' + Certificate + ' PTB ' + year_Mark + '}\n' calibMark = '\\calibMark{ ' +' ' + Certificate + ' PTB ' + year_str2 + '}\n'
print(calibMark)
calibDate = '\\calibDate{' + MeasurementDate + '}\n' calibDate = '\\calibDate{' + MeasurementDate + '}\n'
examiner = '\\examiner{' + Examiner + '}\n' examiner = '\\examiner{' + Examiner + '}\n'
certificateDate = '\\certificateDate{' + CertificateDate + '}\n' certificateDate = '\\certificateDate{' + CertificateDate + '}\n'
##################section Beschreibung zum Kalibriergerät
if (sectionDiscription_noyes!= 'yes'):
sectionDiscription_2= " Dies ist die erste von der PTB durchgeführte Kalibrierung."
sectionDiscription_2_en= "This is the first calibration at PTB."
print(" 1. durchgeführte Kalibrierung")
else:
sectionDiscription_2= " Die von der PTB zuletzt durchgeführten Kalibrierung ist im Kalibrierschein " + last_cert + " beschrieben."
sectionDiscription_2_en= " The previous calibration at PTB had been carried out " + last_cert_year + ' with the calibration mark ' + last_cert + " ."
################## Ergebnisse ###################################################
NoOfMeasurements= doc_cal["Calibration"]["Result"]["Formula"]["NoOfMeasurements"]
FlowMol= doc_cal["Calibration"]["Result"]["Formula"]["FlowMol"]
FlowpV23= doc_cal["Calibration"]["Result"]["Formula"]["FlowpV23"]
FlowpV2X= doc_cal["Calibration"]["Result"]["Formula"]["FlowpV2X"]
TemperatureTL= doc_cal["Calibration"]["Result"]["Formula"]["TemperatureTL"]
TemperatureTLx= doc_cal["Calibration"]["Result"]["Formula"]["TemperatureTLx"]
Gauge= doc_cal["Calibration"]["Result"]["Formula"]["Gauge"]
LeakUncertainty= doc_cal["Calibration"]["Result"]["Formula"]["LeakUncertainty"]
print("TLX= ",TemperatureTLx)
TextDE= doc_cal["Calibration"]["CustomerObject"]["Text"]["description"]["de"] TextDE= doc_cal["Calibration"]["CustomerObject"]["Text"]["description"]["de"]
TextEN= doc_cal["Calibration"]["CustomerObject"]["Text"]["description"]["en"] TextEN= doc_cal["Calibration"]["CustomerObject"]["Text"]["description"]["en"]
sectionText_title_de = 'Beschreibung zum Kalibriergerät '
sectionText_title_en = 'Description relating to calibration device'
sectionTitleText_de = '\\section{' + sectionText_title_de + '\\linebreak {\\small \\emph{' + sectionText_title_en + 'Description relating to calibration device}}}\n' + TextDE + sectionDiscription_2+'\n' + '\\begin{english}' + TextEN + sectionDiscription_2_en +'\\end{english} \n'
sectionTitleText_en = '\\section{' + sectionText_title_en + ' }\n' + TextEN +sectionDiscription_2_en +'\n'
###############################################################################################################################################################
####### Überschriften ######################
######################### Messverfahren ######################################################################### ######## Deutsch ##########################
sectionDescriptionTitle = 'Beschreibung zum Kalibriergerät'
sectionTitelProcedure = 'Kalibrierverfahren ' sectionTitelProcedure = 'Kalibrierverfahren '
sectionTitelProcedure_en = 'Calibration procedure' sectionTitelResult = 'Messergebnis '
sectionTitelProcedure_text_en = '\\section{' + sectionTitelProcedure_en + '}\n ' sectionTitelUncertainty = 'Unsicherheit '
sectionTitelProcedure_text = '\\section{' + sectionTitelProcedure + '\\linebreak {\\small \\emph{' + sectionTitelProcedure_en + '}}}\n '
sectionProcedure1='Der aus dem thermostatisierten Testleck TL austretende Gasfluss wird mit Hilfe eines Massenspektrometers mit einem annähernd gleich groß eingestellten Gasfluss \\(q_{\\text{mol, FM}}\\) verglichen, dessen Größe mit einem Durchflussmesser (Flowmeter FM) bestimmt wird. Die Durchflussmessung erfolgt bei konstantem Druck \\(p_\\text{FM}\\) und konstanter Temperatur \\(T_{\\text{FM}}\\).\n '
sectionProcedure1_en ='The gas flow from the leak TL is compared with a gas flow \\(q_{\\text{mol, FM}}\\) of about the same flow rate from a flow meter FM by a mass spectrometer. The flow measurement is operated at constant pressure \\(p_{\\text{FM}}\\) and constant (absolute) temperature \\(T_{\\text{FM}}\\). \n'
sectionProcedureE1 = ' \\[ q_{\\text{mol, FM}} = p_{\\text{FM}} \\cdot C \\cdot \\frac{1}{R \\cdot T_{\\text{FM}}} \\] '
sectionProcedure2=' Der Druck \\(p_{\\text{FM}}\\) wurde mit einem kapazitiven Membranvakuummeter gemessen. Dieses Gerät ist durch Vergleich mit einem Primärnormal der PTB kalibriert worden. Der Leitwert \\(C\\) wird aus der zeitlichen Volumenänderung (\\(\\Delta V/\\Delta t\\)) eines zusammendrückbaren, kalibrierten Federbalgs (\\(\\Delta V\\)) und einer elektronischen Uhr (\\(\\Delta t\\)) ermittelt. Die molare Gaskonstante \\(R\\) hat den Wert 83,145~\\(\\text{mbar}\\)~\\(\\text{l}\\)~\\(\\text{mol}^{-1}\\)~\\(\\text{K}^{-1}\\). \n '
sectionProcedure2_en=' The pressure \\(p_{\\text{FM}}\\) is measured with a capacitance diaphragm gauge. This gauge is calibrated by comparison with a primary standard of PTB. The conductance \\(C\\) of the capillary integrated in the flow meter is obtained from the temporal volume change (\\(\\Delta V/\\Delta t\\)) that is needed to keep \\(p_\\text{FM}\\) constant. It is measured by means of a calibrated bellow and an electronic clock. The molar gas constant \\(R\\) has the value 83.145~\\(\\text{mbar}\\)~\\(\\text{l}\\)~\\(\\text{mol}^{-1}\\)~\\(\\text{K}^{-1}\\). '
sectionProcedureE3 = ' \\[ q_{\\text{mol, TL}} = q_{\\text{mol, FM}} \\cdot \\frac{S_{\\text{TL}}}{S_{\\text{FM}}} \\] '
sectionProcedure3=' Die Leckrate \\(q_{\\text{mol, TL}}\\) des Testlecks wird nach folgender Beziehung berechnet:'
sectionProcedure3_en=' The molar leak rate \\(q_{\\text{mol, TL}}\\) of the test leak can be calculated by the following equation:'
sectionProcedure4=' mit \\(S_\\text{TL}\\) dem Signal am Massenspektrometer für den Gasfluss des Testlecks und \\(S_\\text{FM}\\) dem Signal am Massenspektrometer für den eingestellten Vergleichsgasfluss.'
sectionProcedure4_en=' whereby \\(S_{\\text{TL}}\\) is the signal at the mass spectrometer for the gas flow from the test leak and \\(S_{\\text{FM}}\\) the signal at the mass spectrometer for the gas flow from the flow meter.'
sectionProcedure_text= sectionProcedure1 + sectionProcedure2 +'\\begin{english}' + sectionProcedure1_en + sectionProcedure2_en + '\\end{english}' + sectionProcedureE1 + sectionProcedure3 + '\\begin{english}' + sectionProcedure3_en + '\\end{english} '+ sectionProcedureE3 + sectionProcedure4 + '\\begin{english}' + sectionProcedure4_en + '\\end{english} ' ######## Englisch ##########################
sectionProcedure_text_en= sectionProcedure1_en + sectionProcedure2_en + sectionProcedureE1 + sectionProcedure3_en + sectionProcedureE3 + sectionProcedure4_en + '\n'
sectionDescriptionTitle_en = 'Description relating to calibration device'
sectionTitelProcedure_en = 'Calibration procedure '
sectionTitelResult_en = 'Measurement results'
sectionTitelUncertainty_en = 'Uncertainty of Calibration'
################## Ergebnisse ################################################### ####### Überschriften Ende ######################
NoOfMeasurements= doc_cal["Calibration"]["Result"]["Formula"]["NoOfMeasurements"]
FlowMol= doc_cal["Calibration"]["Result"]["Formula"]["FlowMol"]
FlowpV23= doc_cal["Calibration"]["Result"]["Formula"]["FlowpV23"]
FlowpV2X= doc_cal["Calibration"]["Result"]["Formula"]["FlowpV2X"]
TemperatureTL= doc_cal["Calibration"]["Result"]["Formula"]["TemperatureTL"]
TemperatureTLx= doc_cal["Calibration"]["Result"]["Formula"]["TemperatureTLx"]
####### Formeln ####################
q_mol_FM_allg = ' \\[ q_\\text{mol, FM} = p_{\\text{FM}} ~ C ~ \\frac{1}{RT_{\\text{FM}}}\\] '
q_mol_TL_allg = ' \\[ q_\\text{mol, TL} = q_\\text{mol, FM} ~ \\frac{S_\\text{TL}}{S_\\text{FM}}\\] \n '
q_mol_Val= 'q_\\text{mol}(\\vartheta_\\text{TL}) =\\SI{ ' + FlowMol + ' }{\\mol\\per\\second}'
q_pV_allg = ' \\[ q_{pV}(\\vartheta_\\text{Ch}) = q_{\\text{mol}} ~ R ~ (\\vartheta_\\text{Ch} + T_0) \\] '
q_pV_23C = 'q_{pV}(\\SI{23}{\\degreeCelsius})= \\num{' + FlowpV23 + '} ~\\text{Pa}~\\text{m}^3~\\text{s}^{-1}'
q_pV_2X = 'q_{pV}(\\SI{23}{\\degreeCelsius})= \\num{' + FlowpV2X + '} ~\\text{Pa}~\\text{m}^3~\\text{s}^{-1}'
QMS= doc_cal["Calibration"]["Result"]["Formula"]["QMS"] ######## Tabellen um die Formeln zu zentriert. Bei den deutsch englischen Kalibrierschein stehen beide Ergebnisse direkt untereinander###########################
Gauge= doc_cal["Calibration"]["Result"]["Formula"]["Gauge"]
LeakUncertainty= doc_cal["Calibration"]["Result"]["Formula"]["LeakUncertainty"]
print("TLX= ",TemperatureTLx)
sectionTitelMeasurement = 'Messergebnis ' tab_q_mol_Val= '\\begin{center}\\begin{tabular}[h]{c} $$$' + q_mol_Val + '$$$ \\\\ $$$\\begin{english} ' + q_mol_Val + ' \\end{english}$$$ \\end{tabular}\\end{center} '
sectionTitelMeasurement_en = 'Measurement results' tab_q_mol_Val_en= ' \\[ ' + q_mol_Val + '\\] \n'
sectionTitelMeasurement_text_en = '\\section{' + sectionTitelMeasurement_en + '}\n '
sectionTitelMeasurement_text = '\\section{' + sectionTitelMeasurement + '\\linebreak {\\small \\emph{' + sectionTitelMeasurement_en + '}}}\n '
tab_q_pV_Val= '\\begin{center}\\begin{tabular}[h]{c} $$$' + q_pV_23C + '$$$ \\\\ $$$\\begin{english} '+ q_pV_23C + '\\end{english}$$$ \\end{tabular}\\end{center}'
tab_q_pV_Val_en= ' \\[ ' + q_pV_23C + '\\] \n'
sectionResultMol = 'Mit dem thermostatisierten Testleck wurden insgesamt ' + NoOfMeasurements + '~Leckratenbestimmungen bei einer Testlecktemperatur von \\( \\vartheta_\\text{TL}= \\SI{' + TemperatureTL + '}{\\degreeCelsius} \\) durchgeführt. Der Mittelwert ergab die (molare) Leckrate: '
sectionResultMol_en = NoOfMeasurements + '~measurements were carried out at a leak temperature of \\( \\vartheta_\\text{TL}= \\SI{' + TemperatureTL + '}{\\degreeCelsius} \\) (thermostated). The mean leak rate (molar flow) was determined to: '
sectionResultMol_pup_en = NoOfMeasurements + '~measurements were carried out at a leak temperature of \\( \\vartheta_\\text{TL}= \\SI{' + TemperatureTL + '}{\\degreeCelsius} \\) (thermostated). The mean leak rate (molar flow) for relativ pressure \\( p_{\\text{up}}=\\SI{0.0}{\\bar} \\) (leak indication) at the upstream pressure side was determined to: '
sectionResultMolVal= '\\[ q_\\text{mol}(\\vartheta_\\text{TL}) =\\SI{' + FlowMol + '}{\\mol\\per\\second} \\] ' ######## Formeln Ende ######################
sectionResultMolVal_en= '\\( q_\\text{mol}(\\vartheta_\\text{TL}) =\\SI{' + FlowMol + '}{\\mol\\per\\second} \\) '
sectionResultpV = 'Daraus kann für den Ort mit einer Temperatur \\(\\vartheta_\\text{Ch}\\) in \\si{\\degreeCelsius}, an dem sich der Prüfling befindet und mit \\(T_0 = \\SI{273.15}{\\kelvin}\\), der \\(pV\\)-Durchfluss nach folgender Beziehung berechnet werden.'
sectionResultpV_en = 'From this the \\(pV\\)-flow can be calculated for a place at a temperature \\(\\vartheta_\\text{Ch}\\) (in \\si{\\degreeCelsius}), where a device under test is mounted and \\(T_0 = \\SI{273.15}{\\kelvin}\\), by the equation:'
sectionResultpVVal = '\\[q_{pV}(\\vartheta_\\text{Ch}) = q_{\\text{mol}}(\\vartheta_\\text{TL})\\cdot R \\cdot (\\vartheta_\\text{Ch} + T_0)\\] '
sectionResultpV_T = 'Bei einer Kammertemperatur von \\( \\vartheta_\\text{TL}= \\SI{23}{\\degreeCelsius} \\) beträgt die Leckrate \\( q_{pV}(\\SI{23}{\\degreeCelsius}) \\):'
sectionResultpV_T_en = 'At a chamber temperature \\(\\vartheta_\\text{Ch}=\\SI{23}{\\degreeCelsius}\\) the leak rate \\(q_{pV}(\\SI{23}{\\degreeCelsius})\\) will be:'
sectionResultpV_Tx = 'und bei einer Kammertemperatur von \\( \\vartheta_\\text{TL}= \\SI{'+ TemperatureTLx +'}{\\degreeCelsius} \\) beträgt die Leckrate \\( q_{pV}(\\SI{'+ TemperatureTLx +'}{\\degreeCelsius}) \\):'
sectionResultpV_Tx_en = 'and at a chamber temperature \\(\\vartheta_\\text{Ch}=\\SI{'+ TemperatureTLx +'}{\\degreeCelsius}\\) the leak rate \\(q_{pV}(\\SI{'+ TemperatureTLx +'}{\\degreeCelsius})\\) will be:'
sectionResultpVVal_T23 = ' \\[q_{pV}(\\SI{23}{\\degreeCelsius})= \\num{' + FlowpV23 + '} ~\\text{Pa}~\\text{m}^3~\\text{s}^{-1}\\]'
sectionResultpVVal_T23_en = '\\( q_{pV}(\\SI{23}{\\degreeCelsius})= \\num{' + FlowpV23 + '} ~\\text{Pa}~\\text{m}^3~\\text{s}^{-1}\\)'
sectionResultpVVal_Tx = ' \\[q_{pV}(\\SI{' + TemperatureTLx + '}{\\degreeCelsius})= \\num{' + FlowpV2X + '} ~\\text{Pa}~\\text{m}^3~\\text{s}^{-1}\\]'
sectionResultpVVal_Tx_en = ' \\( q_{pV}(\\SI{'+ TemperatureTLx +'}{\\degreeCelsius})= \\num{' + FlowpV2X + '} ~\\text{Pa}~\\text{m}^3~\\text{s}^{-1}\\)'
###### 1. Section: Beschreibung zum Kalibriergerät ###################
sectionResultU = 'Die relative Unsicherheit \\(U\\) der angegebenen Leckraten beträgt \\( \\SI{'+ LeakUncertainty +'}{\\percent} \\).'
sectionResultU_en = 'The relative uncertainty \\(U\\) of the stated leak rate is \\( \\SI{'+ LeakUncertainty +'}{\\percent} \\). '
sectionDiscription_1= TextDE ###### Beschreibung aus dem cal-Dokument
sectionDiscription_1_en= TextEN ###### Beschreibung aus dem cal-Dokument
if (sectionDiscription_noyes!= 'yes'):
sectionDiscription_2= " Dies ist die erste von der PTB durchgeführte Kalibrierung."
sectionDiscription_2_en= "This is the previous calibration at PTB."
print(" 1. durchgeführte Kalibrierung")
sectionResult = sectionResultMol + sectionResultMolVal +'\\begin{english}' + sectionResultMol_en + sectionResultMolVal_en + '\\end{english}' + sectionResultpV + '\\begin{english}' + sectionResultpV_en +'\\end{english}' + sectionResultpVVal + '\\linebreak ' + sectionResultpV_T + sectionResultpVVal_T23 + '\\begin{english}' + sectionResultpV_T_en + sectionResultpVVal_T23_en + '\\end{english}' + sectionResultU + '\\begin{english}' + sectionResultU + '\\end{english}' else:
sectionResult_Tx = sectionResultMol + sectionResultMolVal +'\\begin{english}' + sectionResultMol_en + sectionResultMolVal_en + '\\end{english}' + sectionResultpV + '\\begin{english}' + sectionResultpV_en +'\\end{english}' + sectionResultpVVal + sectionResultpV_T + sectionResultpVVal_T23 + sectionResultpV_Tx + sectionResultpVVal_Tx + '\\begin{english}' + sectionResultpV_T_en + sectionResultpVVal_T23_en + sectionResultpV_Tx_en + sectionResultpVVal_Tx_en + '\\end{english}' + sectionResultU + '\\begin{english}' + sectionResultU + '\\end{english}'
sectionDiscription_2= " Die von der PTB zuletzt durchgeführten Kalibrierung ist im Kalibrierschein " + last_cert + " beschrieben."
sectionDiscription_2_en= " The previous calibration at PTB had been carried out " + last_cert_year + ' with the calibration mark ' + last_cert + " ."
sectionDiscription_1_en= TextEN ###### Beschreibung aus dem cal-Dokument
sectionResult_en = sectionResultMol_en + sectionResultMolVal + sectionResultpV_en + sectionResultpVVal + sectionResultpV_T_en + sectionResultpVVal_T23 sectionDiscription = '\\section{' + sectionDescriptionTitle + '\\linebreak {\\small \\emph{' + sectionDescriptionTitle_en + '}}}\n' + sectionDiscription_1 + sectionDiscription_2 + '\n' + '\\begin{english}' + TextEN + sectionDiscription_2_en + '\\end{english} \n'
#sectionResult_en = sectionResultMol_pup_en + sectionResultMolVal + sectionResultpV_en + sectionResultpVVal + sectionResultpV_T_en + sectionResultpVVal_T23 sectionDiscription_en = '\\section{' + sectionDescriptionTitle_en +'}\n' + TextEN + sectionDiscription_2_en
######################################## Unsicherheit ######################################################
sectionU = 'Angegeben ist die erweiterte Messunsicherheit \\(U\\), die sich aus der Standardmessunsicherheit durch Multiplikation mit dem Erweiterungsfaktor \\(k = 2\\) ergibt. Sie wurde gemäß dem „Guide to the Expression of Uncertainty in Measurement (GUM)“ ermittelt. Der Wert der Messgröße liegt dann im Regelfall mit einer Wahrscheinlichkeit von annähernd \\SI{95}{\\percent} im zugeordneten Überdeckungsintervall.\\n ' print(sectionDiscription, " Discription funktioniert")
sectionU_en = 'The uncertainty \\(U\\) stated is the expanded measurement uncertainty obtained by multiplying the standard measurement uncertainty by the coverage factor \\(k = 2\\). It has been determined in accordance with the “Guide to the Expression of Uncertainty in Measurement (GUM)”. The value of the measurand then normally lies, with a probability of approximately \\SI{95}{\\percent} within the attributed coverage interval.'
sectionU_text = sectionU + '\\begin{english} ' + sectionU_en + '\\end{english}'
sectionU_text_en = sectionU_en
sectionTitelUncertainty = 'Unsicherheit ' ####### 2. Section: Procedure ###################################
sectionTitelUncertainty_en = 'Uncertainty of Calibration'
sectionTitelUncertainty_text_en = '\\section{' + sectionTitelUncertainty_en + '} '
sectionTitelUncertainty_text = '\\section{' + sectionTitelUncertainty + '\\linebreak {\\small \\emph{' + sectionTitelUncertainty_en + '}}}'
sectionProcedure1='''Der aus dem thermostatisierten Testleck TL austretende Gasfluss \\(q_{\\text{mol, TL}}\\) wird mit Hilfe eines Massenspektrometers mit einem annähernd gleich groß eingestellten Gasfluss \\(q_{\\text{mol, FM}}\\)
verglichen, dessen Größe mit einem Durchflussmesser (Flowmeter FM) bestimmt wird. Die Durchflussmessung erfolgt bei konstantem Druck \\(p_{\\text{FM}}\\) und konstanter Temperatur \\(T_{\\text{FM}}\\). Der Druck \\(p_{\\text{FM}}\\) wird
mit einem kapazitiven Membranvakuummeter gemessen. Dieses Gerät ist durch einen Vergleich mit einem Primärnormal der PTB kalibriert worden. Der Leitwert \\(C\\) wird aus der zeitlichen Volumenänderung (\\(\\Delta V/\\Delta t\\))
eines zusammendrückbaren, kalibrierten Federbalgs (\\(\\Delta V\\)) und einer elektronischen Uhr (\\(\\Delta t\\)) ermittelt. Die molare Gaskonstante \\(R\\) hat den Wert 8,3145~\\(\\text{Pa}\\)~\\(\\text{m}^3\\)~\\(\\text{mol}^{-1}\\)~\\(\\text{K}^{-1}\\).'''
sectionProcedure2=' Die Leckrate \\(q_{\\text{mol, TL}}\\) des Testlecks wird nach folgender Beziehung berechnet:\n '
sectionProcedure3=' mit \\(S_{\\text{TL}}\\) dem Signal am Massenspektrometer für den Gasfluss des Testlecks und \\(S_{\\text{FM}}\\) dem Signal am Massenspektrometer für den eingestellten Vergleichsgasfluss.'
sectionProcedure1_en ='''The gas flow from the leak TL \\(q_{\\text{mol, TL}}\\) is compared with a gas flow \\(q_{\\text{mol, FM}}\\) of about the same flow rate from a flow meter FM by a
mass spectrometer. The flow measurement is operated at constant pressure \\(p_{\\text{FM}}\\) and constant (absolute) temperature \\(T_{\\text{FM}}\\).
The pressure \\(p_{\\text{FM}}\\) is measured with a capacitance diaphragm gauge. This gauge is calibrated by comparison with a primary
standard of PTB. The conductance \\(C\\) of the capillary integrated in the flow meter is obtained from the temporal volume change
(\\(\\Delta V/\\Delta t\\)) that is needed to keep \\(p_{\\text{FM}}\\) constant. It is measured by means of a calibrated bellow (\\(\\Delta V\\)) and an electronic clock (\\(\\Delta t\\)). The
molar gas constant \\(R\\) has the value 8.3145~\\(\\text{Pa}\\)~\\(\\text{m}^3\\)~\\(\\text{mol}^{-1}\\)~\\(\\text{K}^{-1}\\). '''
sectionProcedure2_en='The molar leak rate \\(q_{\\text{mol, TL}}\\) of the test leak can be calculated by the following equation:'
sectionProcedure3_en=' whereby \\(S_{\\text{TL}}\\) is the signal at the mass spectrometer for the gas flow from the test leak and \\(S_{\\text{FM}}\\) the signal at the mass spectrometer for the gas flow from the flow meter.'
sectionProcedure = '\\section{' + sectionTitelProcedure + '\\linebreak {\\small \\emph{' + sectionTitelProcedure_en + '}}}\n' + sectionProcedure1 + '\\begin{english}' + sectionProcedure1_en + '\\end{english} \n' + q_mol_FM_allg + sectionProcedure2 + '\\begin{english}' + sectionProcedure2_en + '\\end{english} \n' + q_mol_TL_allg + sectionProcedure3 + '\\begin{english}' + sectionProcedure3_en +'\\end{english} \n'
sectionProcedure_en = '\\section{' + sectionTitelProcedure_en + '}\n' + sectionProcedure1_en + q_mol_FM_allg + sectionProcedure2_en + q_mol_TL_allg + sectionProcedure3_en
####### 3. Section: Result ###################################
sectionResult1 = 'Mit dem thermostatisierten Testleck wurden insgesamt ' + NoOfMeasurements + ' Leckratenbestimmungen bei einer Testlecktemperatur von \\( \\vartheta_\\text{TL}= \\num{ ' + TemperatureTL + '}\\pm \\SI{0.1}{\\degreeCelsius} \\) durchgeführt.\n Der Mittelwert ergab die (molare) Leckrate:'
sectionResult2 = 'Daraus kann für den Ort mit einer Temperatur \\(\\vartheta_\\text{Ch}\\) in \\si{\\degreeCelsius}, an dem sich das Testleck befindet, mit \\(T_0 = \\SI{273.15}{\\kelvin}\\), der \\(pV\\)-Durchfluss nach folgender Beziehung berechnet werden.'
sectionResult3 = 'Bei einer Kammertemperatur von \\( \\vartheta_\\text{Ch}= \\SI{ 23 }{\\degreeCelsius} \\) ergibt sich ein \\(pV\\)-Durchfluss \\(q_{pV}\\) '
sectionResult3_TX = 'Bei Kammertemperaturen von \\( \\vartheta_\\text{Ch}= \\SI{ 23 }{\\degreeCelsius} \\) und \\( \\vartheta_\\text{Ch}= \\SI{' + TemperatureTLx + ' }{\\degreeCelsius} \\) ergeben sich \\(pV\\)-Durchflüsse \\(q_{pV}\\) von'
sectionResult4 = 'Die relative Unsicherheit \\(U\\) der angegebenen Leckraten beträgt \\( \\SI{'+ LeakUncertainty +'}{\\percent} \\).'
sectionResult1_en = NoOfMeasurements + ' measurements were carried out at a leak temperature \\( \\vartheta_\\text{TL}= \\num{ ' + TemperatureTL + '}\\pm \\SI{0.1}{\\degreeCelsius} \\) (thermostated). The mean leak rate (molar flow) was determined to:'
sectionResult2_en = ' From this the \\(pV\\)-flow can be calculated for a place at a temperature \\(\\vartheta_\\text{Ch}\\) (in \\si{\\degreeCelsius}), where a device under test is mounted and \\(T_0 = \\SI{273.15}{\\kelvin}\\), by the equation '
sectionResult3_en = 'At the temperature \\( \\vartheta_\\text{Ch}= \\SI{ 23 }{\\degreeCelsius} \\) the flow rate is'
sectionResult3_TX_en = 'At the temperatures \\( \\vartheta_\\text{Ch}= \\SI{ 23 }{\\degreeCelsius} \\) and \\( \\vartheta_\\text{Ch}= \\SI{ 23 }{\\degreeCelsius} \\) the flow rates are'
sectionResult4_en = 'The relative uncertainty \\(U\\) of the stated leak rate are \\( \\SI{'+ LeakUncertainty +'}{\\percent} \\).'
sectionResult_en = '\\section{' + sectionTitelResult_en + '}\n' + sectionResult1_en
sectionResult = '\\section{' + sectionTitelResult + '\\linebreak {\\small \\emph{' + sectionTitelResult_en + '}}}\n' + sectionResult1 + '\\begin{english}' + sectionResult1_en + '\\end{english} ' + tab_q_mol_Val + sectionResult2 + '\\begin{english}' + sectionResult2_en + '\\end{english} ' + q_pV_allg + sectionResult3 + '\\begin{english}' + sectionResult3_en + '\\end{english} ' + tab_q_pV_Val + sectionResult4 + '\\begin{english}' + sectionResult4_en + '\\end{english} \n'
sectionResult_en = sectionResult_en + sectionResult2_en + sectionResult4_en
####### 4. Section: Uncertainty ###################################
sectionU1 = 'Angegeben ist die erweiterte Messunsicherheit \\(U\\), die sich aus der Standardmessunsicherheit durch Multiplikation mit dem Erweiterungsfaktor \\(k = 2\\) ergibt. Sie wurde gemäß dem „Guide to the Expression of Uncertainty in Measurement (GUM)“ ermittelt. Der Wert der Messgröße liegt dann im Regelfall mit einer Wahrscheinlichkeit von annähernd \\SI{95}{\\percent} im zugeordneten Überdeckungsintervall.\n '
sectionU1_en = 'The uncertainty \\(U\\) stated is the expanded measurement uncertainty obtained by multiplying the standard measurement uncertainty by the coverage factor \\(k = 2\\). It has been determined in accordance with the “Guide to the Expression of Uncertainty in Measurement (GUM)”. The value of the measurand then normally lies, with a probability of approximately \\SI{95}{\\percent} within the attributed coverage interval.'
sectionU = '\\section{' + sectionTitelUncertainty + '\\linebreak {\\small \\emph{' + sectionTitelUncertainty_en + '}}}\n' + sectionU1 + '\\begin{english}' + sectionU1_en + '\\end{english} \n'
sectionU_en = '\\section{' + sectionTitelUncertainty_en + '}\n' + sectionU1_en
if(lang!='en'): if(lang!='en'):
print("de",lang) print("Kalibrierschein in deutsch",lang)
with open(ks,'w', encoding='utf-8') as file:
with open(ks,'w', encoding='utf-8') as file:
file.write('\\listfiles\n') file.write('\\listfiles\n')
file.write('\\documentclass[de,KK,CMC]{kalibrierschein}\n ') file.write('\\documentclass[de,KK,CMC]{kalibrierschein}\n ')
file.write(obj) file.write(obj)
...@@ -284,47 +318,32 @@ if(lang!='en'): ...@@ -284,47 +318,32 @@ if(lang!='en'):
file.write('\\byOrder{Dr. M.Bernien}\n') file.write('\\byOrder{Dr. M.Bernien}\n')
file.write(examiner) file.write(examiner)
file.write(certificateDate) file.write(certificateDate)
file.write('\\begin{document}\n')
file.write('\\printFirstPage\n')
file.write(sectionTitleText_de)
sectionText = sectionTitleText_de
file.write(sectionTitelProcedure_text)
file.write(sectionProcedure_text)
file.write('\\pagebreak')
file.write(sectionTitelMeasurement_text)
if(TemperatureTLx!=23): file.write('\\begin{document}\n')
file.write(sectionResult_Tx)
print("nicht 23")
else:
file.write(sectionResult)
print(" 23 ToDo", sectionResult)
file.write('\\section{Unsicherheit \\linebreak {\\small \\emph{Uncertainty of Calibration}}} ')
file.write(sectionU_text)
file.write('\\printLastPage')
file.write('\\end{document}\\n')
file.write('\\printFirstPage\n')
file.write(sectionDiscription)
file.write(sectionProcedure)
file.write('\\pagebreak ')
file.write(sectionResult)
file.write(sectionU)
file.write('\\pagebreak ')
file.write('\\printLastPage')
file.write('\\end{document}\n')
print("bis hier funktioniert")
else: else:
print("en Kal",lang) print('"Kalibrierschein in ',lang, "en")
with open(ks,'w', encoding='utf-8') as file:
with open(ks,'w', encoding='utf-8') as file:
file.write('\\listfiles\n') file.write('\\listfiles\n')
file.write('\\documentclass[en,KK,CMC]{kalibrierschein}\n ') file.write('\\documentclass[en,KK,CMC]{kalibrierschein}\n ')
file.write(obj) file.write(obj)
...@@ -338,48 +357,49 @@ else: ...@@ -338,48 +357,49 @@ else:
file.write('\\byOrder{Dr. M.Bernien}\n') file.write('\\byOrder{Dr. M.Bernien}\n')
file.write(examiner) file.write(examiner)
file.write(certificateDate) file.write(certificateDate)
file.write('\\begin{document}\n') file.write('\\begin{document}\n')
file.write('\\printFirstPage\n') file.write('\\printFirstPage\n')
file.write(sectionDiscription_en)
file.write(sectionTitleText_en)
sectionText = sectionTitleText_en
file.write(sectionTitelProcedure_text_en)
file.write(sectionProcedure_text_en)
file.write(sectionTitelMeasurement_text_en)
file.write(sectionResult_en)
file.write(sectionResultU_en)
if(TemperatureTLx == 23):
file.write(sectionResult_Tx)
print("nicht 23",TemperatureTLx)
else:
print(" 23 ToDo")
#file.write(sectionTitelUncertainty_text_en) file.write(sectionProcedure_en)
#file.write(sectionU_text_en) file.write(sectionResult_en)
file.write(sectionU_en)
file.write('\\printLastPage')
file.write('\\end{document}')
file.write('\\pagebreak ')
file.write('\\printLastPage')
file.write('\\end{document}\n')
print("bis hier funktioniert")
####################Erstellung des cer-Dokuments ##########################
##### Doukument "cer" wird erstellt#######
MeasurementDateBegin = doc_cal["Calibration"]["Measurement"]["Date"][0]["Value"]
MeasurementDateBegin = MeasurementDateBegin[0]
MeasurementDateEnd = doc_cal["Calibration"]["Measurement"]["Date"][0]["Value"]
MeasurementDateEnd = MeasurementDateEnd[0]
DeviceClass= "TLA"
doc_cer["Certificate"]={"Meta":{"std": ["FM1"], doc_cer["Certificate"]={"Meta":{"std": ["FM1"],
"id":[id_], "id":[id_],
"kind" :[kind], "kind" :[kind],
"gas": [gas], "gas": [gas],
"lang":lang, "lang":lang,
"calibration_type":calibration_type, "calibration_type":calibration_type,
}} "last_cert":last_cert}}
doc_cer["Certificate"]["Titlepage"]={"CertificateDate" :CertificateDate, doc_cer["Certificate"]["Titlepage"]={"CertificateDate" :CertificateDate,
"FullYear": "2024", "FullYear": "2024",
"ShortYear": "24", "ShortYear": "24",
...@@ -406,30 +426,38 @@ doc_cer["Certificate"]["Titlepage"]={"CertificateDate" :CertificateDate, ...@@ -406,30 +426,38 @@ doc_cer["Certificate"]["Titlepage"]={"CertificateDate" :CertificateDate,
"ByOrder": ByOrder, "ByOrder": ByOrder,
} }
if(lang!='en'):
doc_cer["Certificate"]["Section"]= [{"Heading": "Description relating to calibration device","Paragraph":sectionDiscription},
{"Heading": "Calibration procedure","Paragraph":sectionProcedure},
doc_cer["Certificate"]["Section"]= [{"Heading": "Description relating to calibration device","Paragraph":sectionText},
{"Heading": "Calibration procedure","Paragraph":sectionProcedure_text},
{"Heading": "Measurement results","Paragraph":sectionResult}, {"Heading": "Measurement results","Paragraph":sectionResult},
{"Heading": "Uncertainty of Calibration","Paragraph":sectionU}], {"Heading": "Uncertainty of Calibration","Paragraph":sectionU}],
else:
doc_cer["Certificate"]["Section"]= [{"Heading": "Description relating to calibration device","Paragraph":sectionDiscription_en},
{"Heading": "Calibration procedure","Paragraph":sectionProcedure_en},
{"Heading": "Measurement results","Paragraph":sectionResult_en},
{"Heading": "Uncertainty of Calibration","Paragraph":sectionU_en}],
doc_cer["Certificate"]["Formula"]={"NoOfMeasurements": NoOfMeasurements, doc_cer["Certificate"]["Formula"]={"NoOfMeasurements": NoOfMeasurements,
"FlowMol": FlowMol, "FlowMol": FlowMol,
"FlowpV23": FlowpV23, "FlowpV23":FlowpV23,
"FlowpV2X":FlowpV2X, "FlowpV2X":FlowpV2X,
"Gauge": Gauge,
"TemperatureTL": TemperatureTL, "TemperatureTL": TemperatureTL,
"TemperatureTLx": TemperatureTLx, "TemperatureTLx": TemperatureTLx,
"LeakUncertainty": LeakUncertainty, "LeakUncertainty": LeakUncertainty
"MeasurementDate": MeasurementDate,
"QMS": QMS,
} }
#
#
db.save(doc_cer) db.save(doc_cer)
\ No newline at end of file
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment