3741 lines
162 KiB
Plaintext
3741 lines
162 KiB
Plaintext
VERSION 5.00
|
|
Begin VB.Form frmRefZaehlerPrf
|
|
BorderStyle = 0 'Kein
|
|
Caption = "Pruef2000"
|
|
ClientHeight = 9570
|
|
ClientLeft = 0
|
|
ClientTop = 0
|
|
ClientWidth = 12390
|
|
LinkTopic = "Form1"
|
|
ScaleHeight = 9570
|
|
ScaleWidth = 12390
|
|
ShowInTaskbar = 0 'False
|
|
StartUpPosition = 3 'Windows-Standard
|
|
Begin VB.CommandButton cmdSPSInfo
|
|
Caption = "Schaubild"
|
|
BeginProperty Font
|
|
Name = "MS Sans Serif"
|
|
Size = 12
|
|
Charset = 0
|
|
Weight = 400
|
|
Underline = 0 'False
|
|
Italic = 0 'False
|
|
Strikethrough = 0 'False
|
|
EndProperty
|
|
Height = 615
|
|
Left = 4785
|
|
TabIndex = 11
|
|
Top = 225
|
|
Width = 1935
|
|
End
|
|
Begin VB.CommandButton cmdOK
|
|
Caption = "Schließen"
|
|
BeginProperty Font
|
|
Name = "MS Sans Serif"
|
|
Size = 9.75
|
|
Charset = 0
|
|
Weight = 700
|
|
Underline = 0 'False
|
|
Italic = 0 'False
|
|
Strikethrough = 0 'False
|
|
EndProperty
|
|
Height = 615
|
|
Left = 6960
|
|
TabIndex = 2
|
|
Top = 240
|
|
Width = 1935
|
|
End
|
|
Begin VB.Frame frMain
|
|
Height = 8535
|
|
Left = -60
|
|
TabIndex = 0
|
|
Top = 1320
|
|
Width = 12015
|
|
Begin VB.CheckBox chkSimulation
|
|
Caption = "Simulation"
|
|
Height = 375
|
|
Left = 9600
|
|
TabIndex = 66
|
|
Top = 7680
|
|
Visible = 0 'False
|
|
Width = 2205
|
|
End
|
|
Begin VB.Timer Timer1
|
|
Enabled = 0 'False
|
|
Interval = 60000
|
|
Left = 9720
|
|
Top = 7260
|
|
End
|
|
Begin VB.CommandButton cmdAbweichungenAnzeigen
|
|
BackColor = &H008080FF&
|
|
Caption = "Abweichungen Anzeigen"
|
|
Height = 435
|
|
Left = 6840
|
|
TabIndex = 65
|
|
Top = 6330
|
|
Width = 2115
|
|
End
|
|
Begin VB.Frame Frame6
|
|
Caption = "Ereignisse"
|
|
Height = 4215
|
|
Left = 240
|
|
TabIndex = 35
|
|
Top = 360
|
|
Width = 3795
|
|
Begin VB.TextBox txtStatus
|
|
Height = 3675
|
|
Left = 120
|
|
MultiLine = -1 'True
|
|
ScrollBars = 2 'Vertikal
|
|
TabIndex = 36
|
|
Top = 360
|
|
Width = 3555
|
|
End
|
|
End
|
|
Begin VB.Frame Frame5
|
|
Caption = "Referenzzähler"
|
|
Height = 2415
|
|
Left = 4260
|
|
TabIndex = 25
|
|
Top = 4620
|
|
Width = 7575
|
|
Begin VB.Label Label29
|
|
Alignment = 1 'Rechts
|
|
Caption = "B"
|
|
Height = 195
|
|
Left = 480
|
|
TabIndex = 64
|
|
Top = 1140
|
|
Width = 255
|
|
End
|
|
Begin VB.Label lblFehlerB
|
|
Alignment = 1 'Rechts
|
|
BackColor = &H00FFFFFF&
|
|
BorderStyle = 1 'Fest Einfach
|
|
BeginProperty Font
|
|
Name = "Arial"
|
|
Size = 9.75
|
|
Charset = 0
|
|
Weight = 700
|
|
Underline = 0 'False
|
|
Italic = 0 'False
|
|
Strikethrough = 0 'False
|
|
EndProperty
|
|
Height = 315
|
|
Left = 2580
|
|
TabIndex = 63
|
|
Top = 1080
|
|
Width = 1455
|
|
End
|
|
Begin VB.Label lblFehlerA
|
|
Alignment = 1 'Rechts
|
|
BackColor = &H00FFFFFF&
|
|
BorderStyle = 1 'Fest Einfach
|
|
BeginProperty Font
|
|
Name = "Arial"
|
|
Size = 9.75
|
|
Charset = 0
|
|
Weight = 700
|
|
Underline = 0 'False
|
|
Italic = 0 'False
|
|
Strikethrough = 0 'False
|
|
EndProperty
|
|
Height = 315
|
|
Left = 2580
|
|
TabIndex = 62
|
|
Top = 660
|
|
Width = 1455
|
|
End
|
|
Begin VB.Label Label1
|
|
Caption = "Fehler"
|
|
Height = 195
|
|
Left = 2580
|
|
TabIndex = 61
|
|
Top = 420
|
|
Width = 1395
|
|
End
|
|
Begin VB.Label Label24
|
|
Caption = "Datum "
|
|
Height = 195
|
|
Left = 6000
|
|
TabIndex = 54
|
|
Top = 420
|
|
Width = 1395
|
|
End
|
|
Begin VB.Label lblDatumFehlerA
|
|
Alignment = 1 'Rechts
|
|
BackColor = &H00FFFFFF&
|
|
BorderStyle = 1 'Fest Einfach
|
|
BeginProperty Font
|
|
Name = "Arial"
|
|
Size = 9.75
|
|
Charset = 0
|
|
Weight = 700
|
|
Underline = 0 'False
|
|
Italic = 0 'False
|
|
Strikethrough = 0 'False
|
|
EndProperty
|
|
Height = 315
|
|
Left = 6000
|
|
TabIndex = 53
|
|
Top = 660
|
|
Width = 1455
|
|
End
|
|
Begin VB.Label lblDatumFehlerB
|
|
Alignment = 1 'Rechts
|
|
BackColor = &H00FFFFFF&
|
|
BorderStyle = 1 'Fest Einfach
|
|
BeginProperty Font
|
|
Name = "Arial"
|
|
Size = 9.75
|
|
Charset = 0
|
|
Weight = 700
|
|
Underline = 0 'False
|
|
Italic = 0 'False
|
|
Strikethrough = 0 'False
|
|
EndProperty
|
|
Height = 315
|
|
Left = 6000
|
|
TabIndex = 52
|
|
Top = 1080
|
|
Width = 1455
|
|
End
|
|
Begin VB.Label Label22
|
|
Caption = "letzter Fehler"
|
|
Height = 195
|
|
Left = 4260
|
|
TabIndex = 51
|
|
Top = 420
|
|
Width = 1395
|
|
End
|
|
Begin VB.Label lblLetzterFehlerA
|
|
Alignment = 1 'Rechts
|
|
BackColor = &H00FFFFFF&
|
|
BorderStyle = 1 'Fest Einfach
|
|
BeginProperty Font
|
|
Name = "Arial"
|
|
Size = 9.75
|
|
Charset = 0
|
|
Weight = 700
|
|
Underline = 0 'False
|
|
Italic = 0 'False
|
|
Strikethrough = 0 'False
|
|
EndProperty
|
|
Height = 315
|
|
Left = 4260
|
|
TabIndex = 50
|
|
Top = 660
|
|
Width = 1455
|
|
End
|
|
Begin VB.Label lblLetzterFehlerB
|
|
Alignment = 1 'Rechts
|
|
BackColor = &H00FFFFFF&
|
|
BorderStyle = 1 'Fest Einfach
|
|
BeginProperty Font
|
|
Name = "Arial"
|
|
Size = 9.75
|
|
Charset = 0
|
|
Weight = 700
|
|
Underline = 0 'False
|
|
Italic = 0 'False
|
|
Strikethrough = 0 'False
|
|
EndProperty
|
|
Height = 315
|
|
Left = 4260
|
|
TabIndex = 49
|
|
Top = 1080
|
|
Width = 1455
|
|
End
|
|
Begin VB.Label Label17
|
|
Caption = "Nennweite:"
|
|
Height = 195
|
|
Left = 960
|
|
TabIndex = 31
|
|
Top = 1560
|
|
Width = 1395
|
|
End
|
|
Begin VB.Label lblNennweite
|
|
Alignment = 1 'Rechts
|
|
BackColor = &H00FFFFFF&
|
|
BorderStyle = 1 'Fest Einfach
|
|
BeginProperty Font
|
|
Name = "Arial"
|
|
Size = 9.75
|
|
Charset = 0
|
|
Weight = 700
|
|
Underline = 0 'False
|
|
Italic = 0 'False
|
|
Strikethrough = 0 'False
|
|
EndProperty
|
|
Height = 315
|
|
Left = 960
|
|
TabIndex = 30
|
|
Top = 1800
|
|
Width = 1455
|
|
End
|
|
Begin VB.Label lblMIDB
|
|
Alignment = 1 'Rechts
|
|
BackColor = &H00FFFFFF&
|
|
BorderStyle = 1 'Fest Einfach
|
|
BeginProperty Font
|
|
Name = "Arial"
|
|
Size = 9.75
|
|
Charset = 0
|
|
Weight = 700
|
|
Underline = 0 'False
|
|
Italic = 0 'False
|
|
Strikethrough = 0 'False
|
|
EndProperty
|
|
Height = 315
|
|
Left = 960
|
|
TabIndex = 29
|
|
Top = 1080
|
|
Width = 1455
|
|
End
|
|
Begin VB.Label Label14
|
|
Alignment = 1 'Rechts
|
|
Caption = "A"
|
|
Height = 315
|
|
Left = 180
|
|
TabIndex = 28
|
|
Top = 720
|
|
Width = 555
|
|
End
|
|
Begin VB.Label lblMIDA
|
|
Alignment = 1 'Rechts
|
|
BackColor = &H00FFFFFF&
|
|
BorderStyle = 1 'Fest Einfach
|
|
BeginProperty Font
|
|
Name = "Arial"
|
|
Size = 9.75
|
|
Charset = 0
|
|
Weight = 700
|
|
Underline = 0 'False
|
|
Italic = 0 'False
|
|
Strikethrough = 0 'False
|
|
EndProperty
|
|
Height = 315
|
|
Left = 960
|
|
TabIndex = 27
|
|
Top = 660
|
|
Width = 1455
|
|
End
|
|
Begin VB.Label Label8
|
|
Caption = "SerienNr.:"
|
|
Height = 255
|
|
Left = 960
|
|
TabIndex = 26
|
|
Top = 420
|
|
Width = 1395
|
|
End
|
|
End
|
|
Begin VB.Frame Frame4
|
|
Caption = "Einstellungen"
|
|
Height = 2415
|
|
Left = 240
|
|
TabIndex = 23
|
|
Top = 4620
|
|
Width = 3795
|
|
Begin VB.Frame Frame7
|
|
Caption = "Dauerprüfung"
|
|
Height = 735
|
|
Left = 120
|
|
TabIndex = 45
|
|
Top = 240
|
|
Width = 3555
|
|
Begin VB.CommandButton cmdStopDP
|
|
Caption = "Beenden"
|
|
Enabled = 0 'False
|
|
Height = 315
|
|
Left = 1860
|
|
TabIndex = 48
|
|
Top = 270
|
|
Width = 1455
|
|
End
|
|
Begin VB.CheckBox chkDauer
|
|
Caption = " Anzahl:"
|
|
Height = 255
|
|
Left = 120
|
|
TabIndex = 47
|
|
Top = 300
|
|
Width = 975
|
|
End
|
|
Begin VB.TextBox txtDauer
|
|
Alignment = 1 'Rechts
|
|
Enabled = 0 'False
|
|
Height = 315
|
|
Left = 1200
|
|
TabIndex = 46
|
|
Text = "1"
|
|
Top = 300
|
|
Width = 375
|
|
End
|
|
End
|
|
Begin VB.Frame Frame2
|
|
Caption = "Regelart"
|
|
Height = 1215
|
|
Left = 120
|
|
TabIndex = 32
|
|
Top = 1020
|
|
Width = 3555
|
|
Begin VB.OptionButton OptRegelart
|
|
Caption = "Servo"
|
|
BeginProperty Font
|
|
Name = "MS Sans Serif"
|
|
Size = 9.75
|
|
Charset = 0
|
|
Weight = 700
|
|
Underline = 0 'False
|
|
Italic = 0 'False
|
|
Strikethrough = 0 'False
|
|
EndProperty
|
|
Height = 375
|
|
Index = 1
|
|
Left = 240
|
|
TabIndex = 34
|
|
Top = 780
|
|
Width = 2355
|
|
End
|
|
Begin VB.OptionButton OptRegelart
|
|
Caption = "FU "
|
|
BeginProperty Font
|
|
Name = "MS Sans Serif"
|
|
Size = 9.75
|
|
Charset = 0
|
|
Weight = 700
|
|
Underline = 0 'False
|
|
Italic = 0 'False
|
|
Strikethrough = 0 'False
|
|
EndProperty
|
|
Height = 375
|
|
Index = 0
|
|
Left = 240
|
|
TabIndex = 33
|
|
Top = 360
|
|
Width = 2355
|
|
End
|
|
End
|
|
End
|
|
Begin VB.Frame Frame3
|
|
Caption = "Fortschritt"
|
|
Height = 4215
|
|
Left = 4200
|
|
TabIndex = 21
|
|
Top = 360
|
|
Width = 1695
|
|
Begin VB.ListBox lstPruefpunkte
|
|
Height = 2205
|
|
Left = 240
|
|
TabIndex = 22
|
|
Top = 540
|
|
Width = 1215
|
|
End
|
|
Begin VB.Label Label18
|
|
Caption = "Prüfpunkte:"
|
|
Height = 195
|
|
Left = 240
|
|
TabIndex = 41
|
|
Top = 240
|
|
Width = 1335
|
|
End
|
|
Begin VB.Label Label15
|
|
Caption = "Zeit:"
|
|
Height = 255
|
|
Left = 240
|
|
TabIndex = 40
|
|
Top = 2820
|
|
Width = 1275
|
|
End
|
|
Begin VB.Label Label11
|
|
Caption = "Dauerprüfung:"
|
|
Height = 195
|
|
Left = 240
|
|
TabIndex = 39
|
|
Top = 3420
|
|
Width = 1275
|
|
End
|
|
Begin VB.Label lblZeit
|
|
Alignment = 1 'Rechts
|
|
BackColor = &H00FFFFFF&
|
|
BorderStyle = 1 'Fest Einfach
|
|
BeginProperty Font
|
|
Name = "Arial"
|
|
Size = 12
|
|
Charset = 0
|
|
Weight = 700
|
|
Underline = 0 'False
|
|
Italic = 0 'False
|
|
Strikethrough = 0 'False
|
|
EndProperty
|
|
Height = 315
|
|
Left = 240
|
|
TabIndex = 38
|
|
Top = 3060
|
|
Width = 1215
|
|
End
|
|
Begin VB.Label lblDauer
|
|
Alignment = 1 'Rechts
|
|
BackColor = &H00FFFFFF&
|
|
BorderStyle = 1 'Fest Einfach
|
|
BeginProperty Font
|
|
Name = "Arial"
|
|
Size = 12
|
|
Charset = 0
|
|
Weight = 700
|
|
Underline = 0 'False
|
|
Italic = 0 'False
|
|
Strikethrough = 0 'False
|
|
EndProperty
|
|
Height = 315
|
|
Left = 240
|
|
TabIndex = 37
|
|
Top = 3720
|
|
Width = 1215
|
|
End
|
|
End
|
|
Begin VB.CommandButton cmdStop
|
|
Caption = "Stop"
|
|
Height = 795
|
|
Left = 1530
|
|
TabIndex = 10
|
|
Top = 7350
|
|
Width = 1095
|
|
End
|
|
Begin VB.CommandButton cmdStart
|
|
Caption = "Start"
|
|
Height = 795
|
|
Left = 330
|
|
TabIndex = 3
|
|
Top = 7350
|
|
Width = 1095
|
|
End
|
|
Begin VB.Frame Frame1
|
|
Caption = "Status"
|
|
Height = 4215
|
|
Left = 6060
|
|
TabIndex = 4
|
|
Top = 360
|
|
Width = 5775
|
|
Begin VB.Label lblBVol
|
|
Alignment = 1 'Rechts
|
|
Caption = "gem. Volumen B:"
|
|
BeginProperty Font
|
|
Name = "Arial"
|
|
Size = 12
|
|
Charset = 0
|
|
Weight = 700
|
|
Underline = 0 'False
|
|
Italic = 0 'False
|
|
Strikethrough = 0 'False
|
|
EndProperty
|
|
Height = 375
|
|
Left = 180
|
|
TabIndex = 60
|
|
Top = 1260
|
|
Width = 2175
|
|
End
|
|
Begin VB.Label lblAVol
|
|
Alignment = 1 'Rechts
|
|
Caption = "gem. Volumen A:"
|
|
BeginProperty Font
|
|
Name = "Arial"
|
|
Size = 12
|
|
Charset = 0
|
|
Weight = 700
|
|
Underline = 0 'False
|
|
Italic = 0 'False
|
|
Strikethrough = 0 'False
|
|
EndProperty
|
|
Height = 255
|
|
Left = 180
|
|
TabIndex = 59
|
|
Top = 840
|
|
Width = 2175
|
|
End
|
|
Begin VB.Label Label25
|
|
Caption = "l"
|
|
BeginProperty Font
|
|
Name = "Arial"
|
|
Size = 12
|
|
Charset = 0
|
|
Weight = 700
|
|
Underline = 0 'False
|
|
Italic = 0 'False
|
|
Strikethrough = 0 'False
|
|
EndProperty
|
|
Height = 315
|
|
Left = 3840
|
|
TabIndex = 58
|
|
Top = 840
|
|
Width = 255
|
|
End
|
|
Begin VB.Label Label23
|
|
Caption = "l"
|
|
BeginProperty Font
|
|
Name = "Arial"
|
|
Size = 12
|
|
Charset = 0
|
|
Weight = 700
|
|
Underline = 0 'False
|
|
Italic = 0 'False
|
|
Strikethrough = 0 'False
|
|
EndProperty
|
|
Height = 315
|
|
Left = 3840
|
|
TabIndex = 57
|
|
Top = 1260
|
|
Width = 255
|
|
End
|
|
Begin VB.Label lblVolA
|
|
Alignment = 1 'Rechts
|
|
BackColor = &H00FFFFFF&
|
|
BorderStyle = 1 'Fest Einfach
|
|
BeginProperty Font
|
|
Name = "Arial"
|
|
Size = 12
|
|
Charset = 0
|
|
Weight = 700
|
|
Underline = 0 'False
|
|
Italic = 0 'False
|
|
Strikethrough = 0 'False
|
|
EndProperty
|
|
Height = 315
|
|
Left = 2520
|
|
TabIndex = 56
|
|
Top = 840
|
|
Width = 1095
|
|
End
|
|
Begin VB.Label lblVolB
|
|
Alignment = 1 'Rechts
|
|
BackColor = &H00FFFFFF&
|
|
BorderStyle = 1 'Fest Einfach
|
|
BeginProperty Font
|
|
Name = "Arial"
|
|
Size = 12
|
|
Charset = 0
|
|
Weight = 700
|
|
Underline = 0 'False
|
|
Italic = 0 'False
|
|
Strikethrough = 0 'False
|
|
EndProperty
|
|
Height = 315
|
|
Left = 2520
|
|
TabIndex = 55
|
|
Top = 1260
|
|
Width = 1095
|
|
End
|
|
Begin VB.Label Label20
|
|
Caption = "l"
|
|
BeginProperty Font
|
|
Name = "Arial"
|
|
Size = 12
|
|
Charset = 0
|
|
Weight = 700
|
|
Underline = 0 'False
|
|
Italic = 0 'False
|
|
Strikethrough = 0 'False
|
|
EndProperty
|
|
Height = 315
|
|
Left = 3840
|
|
TabIndex = 44
|
|
Top = 2100
|
|
Width = 255
|
|
End
|
|
Begin VB.Label lblSollV
|
|
Alignment = 1 'Rechts
|
|
BackColor = &H00FFFFFF&
|
|
BorderStyle = 1 'Fest Einfach
|
|
BeginProperty Font
|
|
Name = "Arial"
|
|
Size = 12
|
|
Charset = 0
|
|
Weight = 700
|
|
Underline = 0 'False
|
|
Italic = 0 'False
|
|
Strikethrough = 0 'False
|
|
EndProperty
|
|
Height = 315
|
|
Left = 2520
|
|
TabIndex = 43
|
|
Top = 2100
|
|
Width = 1095
|
|
End
|
|
Begin VB.Label Label16
|
|
Alignment = 1 'Rechts
|
|
Caption = "SollVolumen:"
|
|
BeginProperty Font
|
|
Name = "Arial"
|
|
Size = 12
|
|
Charset = 0
|
|
Weight = 700
|
|
Underline = 0 'False
|
|
Italic = 0 'False
|
|
Strikethrough = 0 'False
|
|
EndProperty
|
|
Height = 255
|
|
Left = 180
|
|
TabIndex = 42
|
|
Top = 2160
|
|
Width = 2175
|
|
End
|
|
Begin VB.Label Label13
|
|
Caption = "kg"
|
|
BeginProperty Font
|
|
Name = "Arial"
|
|
Size = 12
|
|
Charset = 0
|
|
Weight = 700
|
|
Underline = 0 'False
|
|
Italic = 0 'False
|
|
Strikethrough = 0 'False
|
|
EndProperty
|
|
Height = 315
|
|
Left = 3840
|
|
TabIndex = 24
|
|
Top = 3000
|
|
Width = 375
|
|
End
|
|
Begin VB.Label Label9
|
|
Caption = "m³/h"
|
|
BeginProperty Font
|
|
Name = "Arial"
|
|
Size = 12
|
|
Charset = 0
|
|
Weight = 700
|
|
Underline = 0 'False
|
|
Italic = 0 'False
|
|
Strikethrough = 0 'False
|
|
EndProperty
|
|
Height = 315
|
|
Left = 3840
|
|
TabIndex = 20
|
|
Top = 3600
|
|
Width = 975
|
|
End
|
|
Begin VB.Label lblGrenzwert
|
|
Alignment = 1 'Rechts
|
|
BackColor = &H00FFFFFF&
|
|
BorderStyle = 1 'Fest Einfach
|
|
BeginProperty Font
|
|
Name = "Arial"
|
|
Size = 12
|
|
Charset = 0
|
|
Weight = 700
|
|
Underline = 0 'False
|
|
Italic = 0 'False
|
|
Strikethrough = 0 'False
|
|
EndProperty
|
|
Height = 315
|
|
Left = 2520
|
|
TabIndex = 19
|
|
Top = 2940
|
|
Width = 1095
|
|
End
|
|
Begin VB.Label Label12
|
|
Alignment = 1 'Rechts
|
|
Caption = "Waagengrenzwert:"
|
|
BeginProperty Font
|
|
Name = "Arial"
|
|
Size = 12
|
|
Charset = 0
|
|
Weight = 700
|
|
Underline = 0 'False
|
|
Italic = 0 'False
|
|
Strikethrough = 0 'False
|
|
EndProperty
|
|
Height = 315
|
|
Left = 120
|
|
TabIndex = 18
|
|
Top = 2925
|
|
Width = 2295
|
|
End
|
|
Begin VB.Label Label7
|
|
Caption = "l"
|
|
BeginProperty Font
|
|
Name = "Arial"
|
|
Size = 12
|
|
Charset = 0
|
|
Weight = 700
|
|
Underline = 0 'False
|
|
Italic = 0 'False
|
|
Strikethrough = 0 'False
|
|
EndProperty
|
|
Height = 315
|
|
Left = 3840
|
|
TabIndex = 17
|
|
Top = 1680
|
|
Width = 255
|
|
End
|
|
Begin VB.Label lblQIst
|
|
Alignment = 1 'Rechts
|
|
BackColor = &H00FFFFFF&
|
|
BorderStyle = 1 'Fest Einfach
|
|
BeginProperty Font
|
|
Name = "Arial"
|
|
Size = 12
|
|
Charset = 0
|
|
Weight = 700
|
|
Underline = 0 'False
|
|
Italic = 0 'False
|
|
Strikethrough = 0 'False
|
|
EndProperty
|
|
Height = 315
|
|
Left = 2520
|
|
TabIndex = 16
|
|
Top = 3540
|
|
Width = 1095
|
|
End
|
|
Begin VB.Label Label6
|
|
Caption = "Durchfluß: "
|
|
BeginProperty Font
|
|
Name = "Arial"
|
|
Size = 12
|
|
Charset = 0
|
|
Weight = 700
|
|
Underline = 0 'False
|
|
Italic = 0 'False
|
|
Strikethrough = 0 'False
|
|
EndProperty
|
|
Height = 255
|
|
Left = 1140
|
|
TabIndex = 15
|
|
Top = 3600
|
|
Width = 1335
|
|
End
|
|
Begin VB.Label Label5
|
|
Alignment = 1 'Rechts
|
|
Caption = "gewählter Behälter:"
|
|
BeginProperty Font
|
|
Name = "Arial"
|
|
Size = 12
|
|
Charset = 0
|
|
Weight = 700
|
|
Underline = 0 'False
|
|
Italic = 0 'False
|
|
Strikethrough = 0 'False
|
|
EndProperty
|
|
Height = 315
|
|
Left = 120
|
|
TabIndex = 14
|
|
Top = 1680
|
|
Width = 2235
|
|
End
|
|
Begin VB.Label lblOVol
|
|
Alignment = 1 'Rechts
|
|
BackColor = &H00FFFFFF&
|
|
BorderStyle = 1 'Fest Einfach
|
|
BeginProperty Font
|
|
Name = "Arial"
|
|
Size = 12
|
|
Charset = 0
|
|
Weight = 700
|
|
Underline = 0 'False
|
|
Italic = 0 'False
|
|
Strikethrough = 0 'False
|
|
EndProperty
|
|
Height = 315
|
|
Left = 2520
|
|
TabIndex = 13
|
|
Top = 1680
|
|
Width = 1095
|
|
End
|
|
Begin VB.Label lbltxtGewicht
|
|
Alignment = 1 'Rechts
|
|
Caption = "Gewicht:"
|
|
BeginProperty Font
|
|
Name = "Arial"
|
|
Size = 12
|
|
Charset = 0
|
|
Weight = 700
|
|
Underline = 0 'False
|
|
Italic = 0 'False
|
|
Strikethrough = 0 'False
|
|
EndProperty
|
|
Height = 255
|
|
Left = 165
|
|
TabIndex = 12
|
|
Top = 2565
|
|
Width = 2175
|
|
End
|
|
Begin VB.Label lblGewicht
|
|
Alignment = 1 'Rechts
|
|
BackColor = &H00FFFFFF&
|
|
BorderStyle = 1 'Fest Einfach
|
|
BeginProperty Font
|
|
Name = "Arial"
|
|
Size = 12
|
|
Charset = 0
|
|
Weight = 700
|
|
Underline = 0 'False
|
|
Italic = 0 'False
|
|
Strikethrough = 0 'False
|
|
EndProperty
|
|
Height = 315
|
|
Left = 2520
|
|
TabIndex = 9
|
|
Top = 2520
|
|
Width = 1095
|
|
End
|
|
Begin VB.Label lbltxtGewichtUnit
|
|
Caption = "kg"
|
|
BeginProperty Font
|
|
Name = "Arial"
|
|
Size = 12
|
|
Charset = 0
|
|
Weight = 700
|
|
Underline = 0 'False
|
|
Italic = 0 'False
|
|
Strikethrough = 0 'False
|
|
EndProperty
|
|
Height = 315
|
|
Left = 3840
|
|
TabIndex = 8
|
|
Top = 2520
|
|
Width = 975
|
|
End
|
|
Begin VB.Label Label2
|
|
Caption = "Impulse"
|
|
BeginProperty Font
|
|
Name = "Arial"
|
|
Size = 12
|
|
Charset = 0
|
|
Weight = 700
|
|
Underline = 0 'False
|
|
Italic = 0 'False
|
|
Strikethrough = 0 'False
|
|
EndProperty
|
|
Height = 315
|
|
Left = 4080
|
|
TabIndex = 7
|
|
Top = 420
|
|
Width = 915
|
|
End
|
|
Begin VB.Label lblImpulseRZ2
|
|
Alignment = 1 'Rechts
|
|
BackColor = &H00FFFFFF&
|
|
BorderStyle = 1 'Fest Einfach
|
|
BeginProperty Font
|
|
Name = "Arial"
|
|
Size = 12
|
|
Charset = 0
|
|
Weight = 700
|
|
Underline = 0 'False
|
|
Italic = 0 'False
|
|
Strikethrough = 0 'False
|
|
EndProperty
|
|
Height = 315
|
|
Left = 4080
|
|
TabIndex = 6
|
|
Top = 1260
|
|
Width = 915
|
|
End
|
|
Begin VB.Label lblImpulseRZ1
|
|
Alignment = 1 'Rechts
|
|
BackColor = &H00FFFFFF&
|
|
BorderStyle = 1 'Fest Einfach
|
|
BeginProperty Font
|
|
Name = "Arial"
|
|
Size = 12
|
|
Charset = 0
|
|
Weight = 700
|
|
Underline = 0 'False
|
|
Italic = 0 'False
|
|
Strikethrough = 0 'False
|
|
EndProperty
|
|
Height = 315
|
|
Left = 4080
|
|
TabIndex = 5
|
|
Top = 840
|
|
Width = 915
|
|
End
|
|
End
|
|
End
|
|
Begin VB.Label lblTitle
|
|
Caption = "Referenzzähler Prüfung"
|
|
BeginProperty Font
|
|
Name = "MS Sans Serif"
|
|
Size = 12
|
|
Charset = 0
|
|
Weight = 700
|
|
Underline = 0 'False
|
|
Italic = 0 'False
|
|
Strikethrough = 0 'False
|
|
EndProperty
|
|
Height = 435
|
|
Left = 0
|
|
TabIndex = 1
|
|
Top = 0
|
|
Width = 12015
|
|
End
|
|
End
|
|
Attribute VB_Name = "frmRefZaehlerPrf"
|
|
Attribute VB_GlobalNameSpace = False
|
|
Attribute VB_Creatable = False
|
|
Attribute VB_PredeclaredId = True
|
|
Attribute VB_Exposed = False
|
|
Option Explicit
|
|
|
|
' Todo: rechtsbündige Anzeigen, mit Format richtig gerundet
|
|
' Todo: Einheiten von SPS (m^3 oder Liter)
|
|
' Todo: Balken in Listbox, welcher Pruefpunkt
|
|
' Todo: Dauerprüfung
|
|
' DebugMsg vs PrintStatus
|
|
|
|
' Private Member
|
|
' --------------
|
|
Private m_nRet As Integer
|
|
|
|
|
|
Private m_PruefpunktFertig As Boolean
|
|
Private m_DauerpruefungAnzahl As Integer
|
|
Private m_DauerBeenden As Boolean
|
|
|
|
Private m_SPS As CSPS
|
|
Private m_Pumpe As CPumpe
|
|
Private m_ColPumpen As Collection
|
|
Private m_ColRefZaehler As Collection
|
|
|
|
Private m_FMBus As CFMBus
|
|
|
|
Private m_Waage As CWaage
|
|
|
|
Private m_Regelart As String
|
|
Private m_letzterBehaelterNr As Integer
|
|
Private m_Temperatur As Double
|
|
|
|
'Änderung 23.03.00 Andreas Pfeiffer ##0003##
|
|
Private m_ImpulseRZ_A As Double
|
|
Private m_ImpulseRZ_B As Double
|
|
|
|
Private m_RefezaehlerStrang As Integer
|
|
|
|
Private m_ReferenzzaehlerA As CRefzaehler
|
|
Private m_ReferenzzaehlerB As CRefzaehler
|
|
Private m_RefZaehlerPruefpunkt As CRefZaehlerPruefpunkt
|
|
|
|
Private m_strGrund As String
|
|
|
|
Dim m_ArrayBehaelter(4) As CBehaelter
|
|
|
|
Private Timestamp As Date ' Timestamp
|
|
Private ErrorCount As Integer
|
|
|
|
Private m_dblStartFuellmenge As Double
|
|
Private m_blnMitFuellstand As Boolean
|
|
Private m_objFrmRZFehlerAbweichung As frmRZFehlerAbweichung
|
|
|
|
Private m_blnStrangHatAbweichung As Boolean
|
|
Private m_bln_PP_Wird_wiederholt As Boolean
|
|
Private m_blnIstErsterPPdesStranges As Boolean
|
|
|
|
|
|
Public Enum STATUS_WDH_RZ_PRUEFPUNKT
|
|
NOCH_NICHT_GEPRUEFT = 0
|
|
INNERHALB_FEHLERGRENZEN_BEI_ERSTER_PRUEFUNG = 1
|
|
ABWEICHUNG_BEI_ERSTER_PRUEFUNG = 2
|
|
ABWEICHUNG_BEI_ERSTER_WIEDERHOLUNG = 3
|
|
ABWEICHUNG_BEI_ZWEITER_WIEDERHOLUNG = 4
|
|
INNERHALB_FEHLERGRENZEN_BEI_ERSTER_WIEDERHOLUNG = 5
|
|
INNERHALB_FEHLERGRENZEN_BEI_ZWEITER_WIEDERHOLUNG = 6
|
|
End Enum
|
|
|
|
|
|
Private Sub Timer1_Timer()
|
|
m_PruefpunktFertig = True
|
|
End Sub
|
|
|
|
|
|
|
|
' @return Code, mit dem endDialog aufgerufen wurde
|
|
'
|
|
Public Function getExitCode() As Integer
|
|
getExitCode = m_nRet
|
|
End Function
|
|
|
|
'------------------------------------------------------------------------------
|
|
' Private Funktionalität
|
|
'------------------------------------------------------------------------------
|
|
' Dialog beenden
|
|
'
|
|
' @param nRet Returncode des Dialogs
|
|
'
|
|
Private Sub endDialog(nRet As Integer)
|
|
m_nRet = nRet
|
|
Unload Me
|
|
End Sub
|
|
|
|
Private Sub chkDauer_Click()
|
|
If chkDauer.value = 1 Then
|
|
txtDauer.Enabled = True
|
|
lblDauer.Enabled = True
|
|
cmdStopDP.Enabled = True
|
|
Else
|
|
txtDauer.Enabled = False
|
|
txtDauer.text = "1"
|
|
lblDauer.Enabled = False
|
|
cmdStopDP.Enabled = False
|
|
End If
|
|
End Sub
|
|
|
|
|
|
|
|
Private Sub cmdAbweichungenAnzeigen_Click()
|
|
If Not m_objFrmRZFehlerAbweichung Is Nothing Then
|
|
m_objFrmRZFehlerAbweichung.Visible = True
|
|
Else
|
|
cmdAbweichungenAnzeigen.Enabled = False
|
|
End If
|
|
End Sub
|
|
|
|
Private Sub cmdStopDP_Click()
|
|
PrintStatus "Dauerprüfung wurde abgebrochen. " & vbCrLf & "Prüfung wird nach diesem Prüfgang beendet."
|
|
m_DauerBeenden = True
|
|
cmdStopDP.Enabled = False
|
|
cmdStopDP.caption = "wird beendet"
|
|
End Sub
|
|
|
|
Private Sub ShowRZFehlerAbweichung(intNW As Integer, wdh As Integer, dblDurchfluss As Double, Fehler As Double, letzterFehler As Double, blnStrangA As Boolean, Referenzzaehler As CRefzaehler)
|
|
On Error GoTo Errorhandler
|
|
|
|
cmdOK.Enabled = False
|
|
cmdAbweichungenAnzeigen.Enabled = True
|
|
|
|
If m_objFrmRZFehlerAbweichung Is Nothing Then
|
|
Set m_objFrmRZFehlerAbweichung = New frmRZFehlerAbweichung
|
|
m_objFrmRZFehlerAbweichung.Show vbNormal, Me
|
|
|
|
m_objFrmRZFehlerAbweichung.Top = Screen.Height * 0.8
|
|
m_objFrmRZFehlerAbweichung.Left = Screen.Width * 0.35
|
|
|
|
m_objFrmRZFehlerAbweichung.AddText "An der Prüfstation " & g_App.PruefstationNr
|
|
m_objFrmRZFehlerAbweichung.AddText "wurde bei der Referenzzählerprüfung vom " & Format$(Timestamp, "dd.mm.yyyy hh:mm:ss")
|
|
m_objFrmRZFehlerAbweichung.AddText "die Wiederholgenauigkeit von " & g_App.Settings.get_RZ_Wiederholgenauigkeit & "% überschritten!"
|
|
|
|
End If
|
|
|
|
If Not IsMissing(Referenzzaehler) Then
|
|
SaveWiederholungen Referenzzaehler.SerienNr, Timestamp, wdh, Fehler, dblDurchfluss
|
|
End If
|
|
|
|
m_objFrmRZFehlerAbweichung.Visible = True
|
|
m_objFrmRZFehlerAbweichung.AddText "Abweichung " & Round(letzterFehler - Fehler, 2) & "% bei Strang " & IIf(blnStrangA, "A", "B") & ", Nennweite " & intNW & " bei " & dblDurchfluss & " m³/h " & wdh & ". Wiederholung!"
|
|
m_objFrmRZFehlerAbweichung.AddFehler intNW, wdh, dblDurchfluss & "", Fehler, letzterFehler, blnStrangA
|
|
Exit Sub
|
|
Errorhandler:
|
|
LogIntoDB "Fehler " & Err.Number & " in ShowRZFehlerAbweichung: " & Err.Description, "unerwartet"
|
|
End Sub
|
|
|
|
Private Sub LockFormular()
|
|
m_objFrmRZFehlerAbweichung.Show vbNormal, Me
|
|
m_objFrmRZFehlerAbweichung.Visible = True
|
|
m_objFrmRZFehlerAbweichung.cmdClose.Enabled = False
|
|
End Sub
|
|
|
|
'Private Sub cmdTest1_Click()
|
|
' Set m_objFrmRZFehlerAbweichung = Nothing
|
|
' g_Abbruch = False
|
|
'
|
|
' cmdAbweichungenAnzeigen.Enabled = False
|
|
'
|
|
' cmdStart.Enabled = False
|
|
' cmdStop.Enabled = True
|
|
'
|
|
' If Not g_blnVersuch Then
|
|
' ' Grund eingeben falls RZ Prüfung ausserhalb der dafür vorgesehenden Zeit
|
|
' m_strGrund = GetGrundFuerRZ()
|
|
' End If
|
|
'
|
|
' PrintStatus "RZ Prüfung wurde gestartet von Prüfer " & g_App.Mitarbeiter.getAnfangsbuchstabeVornameundName & "."
|
|
' If m_strGrund <> "" Then
|
|
' PrintStatus "Grund:" & m_strGrund
|
|
' End If
|
|
'
|
|
'
|
|
' cmdOK.Enabled = False
|
|
'
|
|
' ' Referenzzählerprüfung starten
|
|
' g_PruefungLaeuft = True
|
|
'
|
|
'
|
|
' Dim Referenzzaehler As CRefzaehler
|
|
' Set Referenzzaehler = New CRefzaehler
|
|
' Referenzzaehler.loadForDurchfluss 200, 1
|
|
'
|
|
'''''''''''''''''''''''''''''''
|
|
' MsgBox "RZ Prüfung wird 10 sekunden lang simuliert...."
|
|
' Timestamp = Now()
|
|
'
|
|
' Select Case MsgBox("Gibt es Abweichungen > 0,2%?", vbYesNoCancel)
|
|
' Case vbYes
|
|
' ShowRZFehlerAbweichung 125, 0, 120, 1, 1.3, True, Referenzzaehler
|
|
' ShowRZFehlerAbweichung 125, 1, 120, 1, 1.3, True, Referenzzaehler
|
|
' ShowRZFehlerAbweichung 125, 2, 120, 1, 1.3, True, Referenzzaehler
|
|
' m_objFrmRZFehlerAbweichung.ErzwingeFreigabe
|
|
' Case vbNo
|
|
' ShowRZFehlerAbweichung 125, 0, 120, 1, 1, True, Referenzzaehler
|
|
' ShowRZFehlerAbweichung 125, 1, 120, 1, 1, True, Referenzzaehler
|
|
' ShowRZFehlerAbweichung 125, 2, 120, 1, 1, True, Referenzzaehler
|
|
' Case vbCancel
|
|
' End Select
|
|
'
|
|
' m_objFrmRZFehlerAbweichung.AddText "ES HANDELT SICH NUR UM EINEN TEST MIT FIKTIVEN RZ FEHLERN."
|
|
' Sleep 2000, True
|
|
'
|
|
''''''''''''''''''''''''''''''''''
|
|
' g_PruefungLaeuft = False
|
|
'
|
|
' cmdOK.Enabled = True
|
|
' If g_Abbruch Then
|
|
' PrintStatus "Die RZ Prüfung wurde abgebrochen."
|
|
' Else
|
|
' PrintStatus "Die RZ Prüfung wurde beendet."
|
|
' End If
|
|
'
|
|
'
|
|
' ' Referenzzählerprüfung ist beendet oder abgebrochen
|
|
' ' Ende der Zeit speichern
|
|
' RZPruefgangSpeichern Timestamp, Now()
|
|
' MsgBox "Die Referenzzählerprüfung wurde " & IIf(g_Abbruch, "abgebrochen!", "beendet!")
|
|
'
|
|
' ' Endergebnisse erst drucken, wenn sich Mitarbeiter identifiziert
|
|
' Dim dlgLogin As frmLogin
|
|
' Set dlgLogin = New frmLogin
|
|
' dlgLogin.Caption = "Bitte identifizieren sie sich zum Ende der RZ Prüfung."
|
|
' Do While doModal(dlgLogin, True) <> IDOK
|
|
' MsgBox "Sie müssen sich anmelden, um die Referenzzählerprüfung beenden zu können."
|
|
' Loop
|
|
' g_App.Mitarbeiter = dlgLogin.getMitarbeiter()
|
|
' Set dlgLogin = Nothing
|
|
'
|
|
' If g_Abbruch = True Then
|
|
' RZPruefgangSpeichern Timestamp, Now(), , g_App.Mitarbeiter.getNr, "Abbruch"
|
|
' Else
|
|
' RZPruefgangSpeichern Timestamp, Now(), , g_App.Mitarbeiter.getNr
|
|
' End If
|
|
'
|
|
' PrintStatus "RZ Prüfung wurde beendet von Prüfer " & g_App.Mitarbeiter.getAnfangsbuchstabeVornameundName & "."
|
|
' m_objFrmRZFehlerAbweichung.AddText "RZ Prüfung wurde beendet von Prüfer " & g_App.Mitarbeiter.getAnfangsbuchstabeVornameundName & "."
|
|
' PrintStatus "Prüfprotokoll wird gedruckt..."
|
|
' RZFehlerDruck g_App.PruefstationNr, m_Temperatur
|
|
' PrintStatus "Prüfprotokoll wurde gedruckt."
|
|
' MsgBox "Es wurde ein Referenzzähler-Prüfprotokoll gedruckt."
|
|
'
|
|
'
|
|
' If Not m_objFrmRZFehlerAbweichung Is Nothing Then
|
|
' ' Formular darf nicht mehr ausgeblendet werden
|
|
' Me.Enabled = False
|
|
' Call m_objFrmRZFehlerAbweichung.PruefungIstBeendet
|
|
' Set m_objFrmRZFehlerAbweichung = Nothing
|
|
' Me.Enabled = True
|
|
'
|
|
' cmdAbweichungenAnzeigen.Enabled = False
|
|
' End If
|
|
' cmdOK.Enabled = True
|
|
'
|
|
' Call ResetFormAndVars
|
|
' PrintStatus "Bereit!"
|
|
'
|
|
'End Sub
|
|
|
|
|
|
Private Sub Form_Unload(Cancel As Integer)
|
|
On Error Resume Next
|
|
If Not m_Waage Is Nothing Then
|
|
m_Waage.releaseMScomm
|
|
Set m_Waage = Nothing
|
|
End If
|
|
End Sub
|
|
|
|
|
|
Private Sub txtDauer_Change()
|
|
On Error Resume Next
|
|
m_DauerpruefungAnzahl = CInt(txtDauer.text)
|
|
If m_DauerpruefungAnzahl > 0 And m_DauerpruefungAnzahl < 1000 Then
|
|
DebugMsg "Referenzzähler Dauerprüfung Anzahl=" & m_DauerpruefungAnzahl
|
|
lblDauer.caption = m_DauerpruefungAnzahl
|
|
Else
|
|
chkDauer.value = 0
|
|
txtDauer.text = "1"
|
|
m_DauerpruefungAnzahl = 1
|
|
End If
|
|
End Sub
|
|
|
|
Private Sub cmdSPSInfo_Click()
|
|
Call g_App.getSPS().ActivateProTool
|
|
End Sub
|
|
|
|
Private Sub cmdStart_Click()
|
|
Set m_objFrmRZFehlerAbweichung = Nothing
|
|
|
|
cmdAbweichungenAnzeigen.Enabled = False
|
|
|
|
cmdStart.Enabled = False
|
|
cmdStop.Enabled = True
|
|
|
|
If Not g_blnVersuch Then
|
|
' Grund eingeben falls RZ Prüfung ausserhalb der dafür vorgesehenden Zeit
|
|
m_strGrund = GetGrundFuerRZ()
|
|
End If
|
|
|
|
PrintStatus "RZ Prüfung wurde gestartet von Prüfer " & g_App.Mitarbeiter.getAnfangsbuchstabeVornameundName & "."
|
|
If m_strGrund <> "" Then
|
|
PrintStatus "Grund:" & m_strGrund
|
|
End If
|
|
|
|
|
|
cmdOK.Enabled = False
|
|
|
|
' Referenzzählerprüfung starten
|
|
g_PruefungLaeuft = True
|
|
Call StartPruefung
|
|
g_PruefungLaeuft = False
|
|
|
|
cmdOK.Enabled = True
|
|
If g_Abbruch Then
|
|
PrintStatus "Die RZ Prüfung wurde abgebrochen."
|
|
Else
|
|
PrintStatus "Die RZ Prüfung wurde beendet."
|
|
End If
|
|
|
|
|
|
' Referenzzählerprüfung ist beendet oder abgebrochen
|
|
' Ende der Zeit speichern
|
|
RZPruefgangSpeichern Timestamp, Now(), , , , Now()
|
|
MsgBox "Die Referenzzählerprüfung wurde " & IIf(g_Abbruch, "abgebrochen!", "beendet!")
|
|
|
|
' Endergebnisse erst drucken, wenn sich Mitarbeiter identifiziert
|
|
Dim dlgLogin As frmLogin
|
|
Set dlgLogin = New frmLogin
|
|
dlgLogin.caption = "Bitte identifizieren sie sich zum Ende der RZ Prüfung."
|
|
Do While doModal(dlgLogin, True) <> IDOK
|
|
MsgBox "Sie müssen sich anmelden, um die Referenzzählerprüfung beenden zu können."
|
|
Loop
|
|
g_App.Mitarbeiter = dlgLogin.getMitarbeiter()
|
|
Set dlgLogin = Nothing
|
|
|
|
If g_Abbruch = True Then
|
|
RZPruefgangSpeichern Timestamp, Now(), , g_App.Mitarbeiter.getNr, "Abbruch"
|
|
Else
|
|
RZPruefgangSpeichern Timestamp, Now(), , g_App.Mitarbeiter.getNr
|
|
End If
|
|
PrintStatus "RZ Prüfung wurde beendet von Prüfer " & g_App.Mitarbeiter.getAnfangsbuchstabeVornameundName & "."
|
|
|
|
If MsgBox("Möchten Sie ein Referenzzähler-Prüfprotokoll drucken?", vbQuestion Or vbDefaultButton2 Or vbYesNo, "") = vbYes Then
|
|
PrintStatus "Prüfprotokoll wird gedruckt..."
|
|
RZFehlerDruck g_App.PruefstationNr, m_Temperatur
|
|
PrintStatus "Prüfprotokoll wurde gedruckt."
|
|
MsgBox "Es wurde ein Referenzzähler-Prüfprotokoll gedruckt."
|
|
End If
|
|
|
|
|
|
If Not m_objFrmRZFehlerAbweichung Is Nothing Then
|
|
' Formular darf nicht mehr ausgeblendet werden
|
|
Me.Enabled = False
|
|
Call m_objFrmRZFehlerAbweichung.PruefungIstBeendet
|
|
Me.Enabled = True
|
|
Set m_objFrmRZFehlerAbweichung = Nothing
|
|
cmdAbweichungenAnzeigen.Enabled = False
|
|
End If
|
|
cmdOK.Enabled = True
|
|
|
|
Call ResetFormAndVars
|
|
PrintStatus "Bereit!"
|
|
End Sub
|
|
|
|
Private Sub cmdStop_Click()
|
|
PrintStatus "Abbruch erfolgt..."
|
|
cmdStop.Enabled = False
|
|
DoEvents
|
|
Call Abbruch
|
|
g_Abbruch = True
|
|
End Sub
|
|
|
|
Private Sub ResetFormAndVars()
|
|
' Setze Formelemente und Variablen zurück
|
|
cmdStopDP.caption = "Beenden"
|
|
cmdStopDP.Enabled = False
|
|
cmdStart.Enabled = True
|
|
cmdStop.Enabled = False
|
|
cmdOK.Enabled = True
|
|
lblDauer.caption = ""
|
|
End Sub
|
|
|
|
Private Sub Abbruch()
|
|
|
|
If Not g_ohneSPS Then
|
|
PrintStatus "Betrieb der Pumpen Stoppen..."
|
|
' Betrieb Stoppen
|
|
m_SPS.setBetrieb 0
|
|
m_SPS.WassserAblassen 0
|
|
m_SPS.SetServoStellung 50
|
|
|
|
'm_SPS.SetQSoll 0 AP 5.5.00
|
|
|
|
' Alle Pumpen abwählen
|
|
m_SPS.AllePumpenAbwaehlen
|
|
|
|
End If
|
|
|
|
lblQIst.caption = ""
|
|
lblSollV.caption = ""
|
|
|
|
If Not m_Waage Is Nothing And m_blnMitFuellstand = False Then
|
|
PrintStatus "Waagen-Grenzwert zurücksetzen..."
|
|
Call WaageZuruecksetzen
|
|
Call m_Waage.releaseMScomm
|
|
End If
|
|
|
|
PrintStatus "Abbruch: Warten auf vorzeitige Beendigung des RZ Prüfpunktes..."
|
|
End Sub
|
|
|
|
|
|
Private Sub WaageZuruecksetzen()
|
|
On Error Resume Next
|
|
Dim Behaelter As CBehaelter
|
|
Dim i As Integer
|
|
|
|
Set m_Waage = g_App.getWaage
|
|
For i = 1 To 4
|
|
Set Behaelter = m_ArrayBehaelter(i)
|
|
Set m_Waage = g_App.getWaage
|
|
m_Waage.Initialize Behaelter.m_Nr
|
|
If Behaelter.m_OVolumen > 0 Then
|
|
If Behaelter.m_WaageAnwahl <> 0 Then
|
|
m_Waage.Anwahl Behaelter.m_WaageAnwahl
|
|
End If
|
|
Sleep 1000, True
|
|
m_Waage.SetNettoGrenzwert1 Behaelter.m_WaageGrenzwert, Behaelter.m_Genauigkeit
|
|
End If
|
|
Next
|
|
End Sub
|
|
|
|
'----------------------------------------------------------------------------
|
|
' Event-Handling
|
|
'------------------------------------------------------------------------------
|
|
Private Sub Form_Load()
|
|
|
|
Dim Referenzzaehler As CRefzaehler
|
|
Dim Einbauplatz As Integer
|
|
|
|
m_DauerpruefungAnzahl = 1
|
|
|
|
Call ResetFormAndVars
|
|
Call setupStdDlg(Me)
|
|
|
|
If Not g_ohneSPS Then
|
|
Set m_SPS = g_App.getSPS
|
|
Set m_ColPumpen = g_App.Settings.getPumpen
|
|
m_SPS.SetNurMesseinsaetze False
|
|
End If
|
|
|
|
Set m_FMBus = g_App.getFMBus
|
|
|
|
Set m_ArrayBehaelter(1) = New CBehaelter
|
|
Set m_ArrayBehaelter(2) = New CBehaelter
|
|
Set m_ArrayBehaelter(3) = New CBehaelter
|
|
Set m_ArrayBehaelter(4) = New CBehaelter
|
|
|
|
m_ArrayBehaelter(1).LoadFromIni (1)
|
|
m_ArrayBehaelter(2).LoadFromIni (2)
|
|
m_ArrayBehaelter(3).LoadFromIni (3)
|
|
m_ArrayBehaelter(4).LoadFromIni (4)
|
|
|
|
If g_App.Settings.GetBenutzeFuellstandStattWaage() Then
|
|
' Fuellstandsensor generell verwenden (wird ersetzt durch Behälterabhängige Eigenschaft "Waagenart")
|
|
PrintStatus "Füllstands-Sensor wird verwendet!"
|
|
m_blnMitFuellstand = True
|
|
lbltxtGewicht.caption = "Füllstand"
|
|
lbltxtGewichtUnit = "Liter"
|
|
Else
|
|
m_blnMitFuellstand = False
|
|
Set m_Waage = g_App.getWaage
|
|
End If
|
|
|
|
If Not g_ohneSPS Then
|
|
m_SPS.setBetrieb 8 ' Bits zurücksetzen: kein Start, kein Stop, kein Programmende
|
|
Sleep 300
|
|
m_SPS.setBetrieb 0
|
|
m_SPS.SetServoStellung 50
|
|
End If
|
|
|
|
|
|
|
|
' Ermittle Daten der Referenzzähler:
|
|
' Gruppe, Nummer, Seriennummer, Prüfpunkte, letzte Prüfung
|
|
''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
|
|
' Listbox mit Prüfpunkten füllen
|
|
''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
|
|
Set m_ColRefZaehler = New Collection
|
|
lstPruefpunkte.Clear
|
|
For m_RefezaehlerStrang = 1 To 5
|
|
|
|
Einbauplatz = (m_RefezaehlerStrang - 1) * 2 + 1
|
|
|
|
Debug.Print "RZ Ebp: " & Einbauplatz
|
|
Set m_ReferenzzaehlerA = New CRefzaehler
|
|
If m_ReferenzzaehlerA.LoadForRefzaehlerpruefung(Einbauplatz) = 0 Then
|
|
' Referenzzähler konnte geladen werden
|
|
Debug.Print m_ReferenzzaehlerA.SerienNr
|
|
|
|
m_ColRefZaehler.Add m_ReferenzzaehlerA
|
|
|
|
If g_App.Settings.getAnzahlMIDGruppen > 1 Then
|
|
Set m_ReferenzzaehlerB = New CRefzaehler
|
|
If m_ReferenzzaehlerB.LoadForRefzaehlerpruefung(Einbauplatz + 1) = 0 Then
|
|
m_ColRefZaehler.Add m_ReferenzzaehlerB
|
|
End If
|
|
End If
|
|
|
|
|
|
' Aktiven Referenzzähler auswählen
|
|
Select Case g_App.Settings.getMIDGruppe
|
|
Case 1
|
|
Set Referenzzaehler = m_ReferenzzaehlerA
|
|
Case 2
|
|
Set Referenzzaehler = m_ReferenzzaehlerB
|
|
Case Else
|
|
Set Referenzzaehler = m_ReferenzzaehlerA
|
|
ErrorMsg ("MID-Gruppe in INI Datei ungültig: MidGr. A gewählt")
|
|
End Select
|
|
DoEvents
|
|
' Der Referenzzähler für Ermittlung der Prüfpunkte ist der jeweilige A-Referenzzähler
|
|
For Each m_RefZaehlerPruefpunkt In m_ReferenzzaehlerA.colPruefpunkte
|
|
lstPruefpunkte.AddItem m_ReferenzzaehlerA.Nennweite & ": " & Format(m_RefZaehlerPruefpunkt.Durchfluss, "0.000")
|
|
Next
|
|
Else
|
|
' Referenzzähler konnte nicht geladen werden
|
|
End If
|
|
Next
|
|
|
|
' If g_App.Mitarbeiter.getNr = 6316 Or g_strHostname = "la--020190llb0j" Then
|
|
' cmdTest1.Enabled = True
|
|
' cmdTest1.Visible = True
|
|
' End If
|
|
End Sub
|
|
|
|
Private Sub cmdOk_Click()
|
|
Call endDialog(IDOK)
|
|
End Sub
|
|
|
|
'Private Sub cmdCancel_Click()
|
|
' Call endDialog(IDCANCEL)
|
|
'End Sub
|
|
|
|
Private Sub StartPruefung()
|
|
|
|
Dim dummy As Variant
|
|
Dim DurchflussSoll As Double
|
|
Dim Einbauplatz As Integer
|
|
Dim Impulse As Integer
|
|
Dim Temperatur As Double
|
|
|
|
Dim VolumenA As Double
|
|
Dim VolumenB As Double
|
|
Dim VolumenIst As Double
|
|
Dim FehlerA As Double
|
|
Dim FehlerB As Double
|
|
|
|
Dim letzterFehlerA As Variant
|
|
Dim letzterFehlerB As Variant
|
|
Dim letzterFehler As Variant
|
|
|
|
Dim Endzeit As Long
|
|
Dim ImpulseQM As Double
|
|
Dim tempDatum As Date
|
|
|
|
Dim BehaelterNr As Integer
|
|
Dim i As Integer
|
|
Dim SollVolumen As Double
|
|
Dim Behaelter As CBehaelter
|
|
Dim Waagengrenzwert As Double
|
|
Dim Mindestmenge As Double
|
|
|
|
Dim AnzahlPeriodenRZ As Long
|
|
|
|
Dim Referenzzaehler As CRefzaehler
|
|
Dim PruefpunktNr As Integer
|
|
Dim PP_ZeitStart As Long ' Startzeit der Prüfpunkt-Zeit
|
|
Dim PP_Zeit As Long ' Prüfpunkt-Zeit
|
|
Dim PP_ZeitSoll As Long
|
|
Dim bDataSaved As Boolean 'Prüfpunkt-Daten nach 1/2 Prüfzeit in DB gespeichert
|
|
|
|
Dim StatusPruefpunktWdh As STATUS_WDH_RZ_PRUEFPUNKT
|
|
|
|
|
|
Dim PP_Durchfluss As Double
|
|
Dim m_DauerpruefungZaehler As Integer
|
|
|
|
|
|
Dim strDebugText As String
|
|
'Änderung Andreas Pfeiffer 23.03.00 ##0005## Testvariable eingefügt
|
|
Dim Test As String
|
|
Dim dblFuellstand As Double
|
|
|
|
On Error GoTo ErrorhandlerLogAndResumeNext
|
|
|
|
m_letzterBehaelterNr = 0
|
|
|
|
If Not g_ohneSPS Then
|
|
m_SPS.setBetrieb 8 ' Bits zurücksetzen: kein Start, kein Stop, kein Programmende
|
|
Sleep 300
|
|
m_SPS.setBetrieb 0 ' Bits zurücksetzen: kein Start, kein Stop, kein Programmende
|
|
m_SPS.SetRegulierungsSollwert 50
|
|
|
|
TestAutomatik:
|
|
If Not m_SPS.IstAutomatik Then
|
|
dummy = MsgBox("Bitte SPS auf Automatik stellen", vbOKCancel)
|
|
If dummy = vbCancel Then
|
|
endDialog (IDCANCEL)
|
|
Exit Sub
|
|
End If
|
|
GoTo TestAutomatik
|
|
End If
|
|
|
|
If Not m_SPS.IstRefZPrf Then
|
|
dummy = MsgBox("Bitte SPS auf Referenzzähler-Prüfung stellen", vbOKCancel)
|
|
If dummy = vbCancel Then
|
|
endDialog (IDCANCEL)
|
|
Exit Sub
|
|
End If
|
|
GoTo TestAutomatik
|
|
End If
|
|
End If ' g_ohneSPS
|
|
|
|
' todo : Grund für eine Referenzzählerprüfung angeben
|
|
|
|
cmdStart.Enabled = False
|
|
g_Abbruch = False
|
|
m_DauerBeenden = False
|
|
If m_DauerpruefungAnzahl > 1 Then
|
|
cmdStopDP.Enabled = True
|
|
Else
|
|
cmdStopDP.Enabled = False
|
|
End If
|
|
'-----------------------------------------------------------------
|
|
' Schleifenbeginn Dauerprüfung
|
|
'-----------------------------------------------------------------
|
|
For m_DauerpruefungZaehler = 1 To m_DauerpruefungAnzahl
|
|
|
|
|
|
Timestamp = Now()
|
|
|
|
If m_DauerpruefungZaehler = 1 Then
|
|
RZPruefgangSpeichern Timestamp, , g_App.Mitarbeiter.getNr, , m_strGrund
|
|
Else
|
|
RZPruefgangSpeichern Timestamp, , g_App.Mitarbeiter.getNr, , "Dauerprüfung " & m_DauerpruefungZaehler
|
|
End If
|
|
|
|
lblDauer.caption = m_DauerpruefungZaehler & " / " & m_DauerpruefungAnzahl
|
|
PrintStatus "Dauerprf: " & m_DauerpruefungZaehler & " / " & m_DauerpruefungAnzahl
|
|
|
|
lblGewicht.caption = ""
|
|
lblImpulseRZ1.caption = ""
|
|
lblImpulseRZ2.caption = ""
|
|
PrintStatus vbCrLf & "Starte neue Referenzzaehler Prüfung" & vbCrLf & "-----------------------------------"
|
|
|
|
WriteToLog Format(Now, "dd.mm.yyyy hh:mm:ss") & " Pruefung " & m_DauerpruefungZaehler & "/" & m_DauerpruefungAnzahl
|
|
|
|
|
|
''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
|
|
' Schleife über alle Stränge
|
|
''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
|
|
For m_RefezaehlerStrang = 1 To 5
|
|
m_blnStrangHatAbweichung = False
|
|
m_blnIstErsterPPdesStranges = True
|
|
' Einsprung für die Wiederholung des letzten Strangs
|
|
|
|
'Achtung funktioniert nicht bei den anderen Anlagen!!
|
|
'Andreas Pfeiffer 19.07.2004 geändert
|
|
Einbauplatz = (m_RefezaehlerStrang - 1) * 2 + 1
|
|
|
|
' Eingebaute Referenzzähler des Stranges ermitteln
|
|
Set m_ReferenzzaehlerA = New CRefzaehler
|
|
If m_ReferenzzaehlerA.LoadForRefzaehlerpruefung(Einbauplatz) = 0 Then
|
|
PrintStatus "RefZ-Strang: " & m_RefezaehlerStrang
|
|
Else
|
|
GoTo SkipStrang
|
|
End If
|
|
|
|
If g_App.Settings.getAnzahlMIDGruppen > 1 Then
|
|
Set m_ReferenzzaehlerB = New CRefzaehler
|
|
If m_ReferenzzaehlerB.LoadForRefzaehlerpruefung(Einbauplatz + 1) = 0 Then
|
|
PrintStatus "Daten für Referenzzaehler in B Gruppe vorhanden"
|
|
End If
|
|
End If
|
|
|
|
Set Referenzzaehler = m_ReferenzzaehlerA
|
|
' Aktiven Referenzzähler auswählen
|
|
Select Case g_App.Settings.getMIDGruppe
|
|
Case 1
|
|
lblAVol.FontBold = True
|
|
lblBVol.FontBold = False
|
|
Case 2
|
|
lblAVol.FontBold = False
|
|
lblBVol.FontBold = True
|
|
Case Else
|
|
lblAVol.FontBold = True
|
|
lblBVol.FontBold = False
|
|
End Select
|
|
|
|
If m_ReferenzzaehlerA.colPruefpunkte.Count > 0 Then
|
|
PrintStatus "RefZ A SNr: " & m_ReferenzzaehlerA.SerienNr
|
|
PrintStatus "RefZ A Impulswertigkeit: " & m_ReferenzzaehlerA.ImpulseQM
|
|
PrintStatus "- - - - - -"
|
|
|
|
If g_App.Settings.getAnzahlMIDGruppen > 1 Then
|
|
PrintStatus "RefZ B SNr: " & m_ReferenzzaehlerB.SerienNr
|
|
PrintStatus "RefZ B Impulswertigkeit: " & m_ReferenzzaehlerB.ImpulseQM
|
|
PrintStatus "- - - - - -"
|
|
lblMIDB.caption = m_ReferenzzaehlerB.SerienNr
|
|
End If
|
|
|
|
' Anzeige der Referenzzählerdaten
|
|
lblNennweite.caption = Referenzzaehler.Nennweite & " mm"
|
|
lblMIDA.caption = m_ReferenzzaehlerA.SerienNr
|
|
|
|
Else
|
|
PrintStatus "keine Prüfpunkte !"
|
|
lblNennweite.caption = ""
|
|
lblMIDA.caption = ""
|
|
lblMIDB.caption = ""
|
|
End If
|
|
|
|
WriteToLog "Referenzzähler im Strang " & m_ReferenzzaehlerA.Nennweite & " mm"
|
|
|
|
'-----------------------------------------------------------------
|
|
' Begin Schleife für alle Pruefpunkte
|
|
' des Pruefzählers der aktiven Gruppe
|
|
'-----------------------------------------------------------------
|
|
PruefpunktNr = 0
|
|
|
|
If m_ReferenzzaehlerA.colPruefpunkte.Count > 10 Then
|
|
ErrorMsg "Es sind mehr als 10 Prüfpunkte für Nennweite " & Referenzzaehler.Nennweite & " definiert! Abbruch."
|
|
Call Abbruch
|
|
Exit Sub
|
|
End If
|
|
|
|
' If g_App.PruefstationNr = 2005 And Int(Now * 1) < 39302 Then
|
|
' ' RH 6.8.2007
|
|
' m_SPS.AllePumpenAbwaehlen
|
|
' Set m_Pumpe = Pumpenwahl(DurchflussSoll, m_ColPumpen)
|
|
' PrintStatus "gewählte Pumpe (SPS VarName) " & m_Pumpe.GetSPSVarname
|
|
' m_Pumpe.Anwahl
|
|
'
|
|
' m_SPS.SetMID Referenzzaehler.EinbauplatzNr
|
|
'
|
|
' 'Auswahl des aktiven Stellgliedes während der Regelung
|
|
' ' INI Datei:
|
|
' Select Case m_Pumpe.GetRegelart
|
|
' ' Servo Vorgeschrieben
|
|
' Case "Servo"
|
|
' m_SPS.SetRegelart ("Servo")
|
|
' m_SPS.SetServoStellung m_RefZaehlerPruefpunkt.Servoposition
|
|
' Case "FU"
|
|
' ' FU vorgeschrieben
|
|
' m_SPS.SetRegelart ("FU")
|
|
' m_SPS.SetServoStellung m_RefZaehlerPruefpunkt.FUStellwert
|
|
' Case Else
|
|
' ErrorMsg "Es ist keine Regelart für die Pumpe " & m_Pumpe.getNr & " in der ini-Datei definiert."
|
|
' Call Abbruch
|
|
' Exit Sub
|
|
' End Select
|
|
'
|
|
' m_SPS.setBetrieb 2
|
|
' Sleep 10000
|
|
' m_SPS.setBetrieb 0
|
|
'
|
|
' End If
|
|
|
|
' If chkSimulation.Value = vbChecked Then
|
|
' MsgBox g_App.Settings.getAnzahlMIDGruppen & " Gruppen mit Gruppe=" & g_App.Settings.getMIDGruppe
|
|
' End If
|
|
|
|
For Each m_RefZaehlerPruefpunkt In m_ReferenzzaehlerA.colPruefpunkte
|
|
|
|
Temperatur = 0
|
|
PP_Durchfluss = 0
|
|
bDataSaved = False
|
|
|
|
PruefpunktNr = PruefpunktNr + 1
|
|
|
|
' Status der Wiederholung zurücksetzen
|
|
StatusPruefpunktWdh = STATUS_WDH_RZ_PRUEFPUNKT.NOCH_NICHT_GEPRUEFT
|
|
m_bln_PP_Wird_wiederholt = False
|
|
|
|
Pruefpunktwiederholung:
|
|
PrintStatus "====================="
|
|
|
|
' Durchflußvorgabe
|
|
'-----------------
|
|
DurchflussSoll = Round(m_RefZaehlerPruefpunkt.Durchfluss, 4)
|
|
PrintStatus "Durchfluss " & DurchflussSoll & " m³/h"
|
|
WriteToLog "neuer Prüfpunkt " & DurchflussSoll & " m³/h"
|
|
|
|
' If chkSimulation.Value = vbChecked Then
|
|
' MsgBox "neuer Prüfpunkt " & DurchflussSoll & " m³/h"
|
|
' End If
|
|
'
|
|
|
|
If DurchflussSoll > 0 Then
|
|
If m_bln_PP_Wird_wiederholt = True Then
|
|
PrintStatus "Prüfpunkt " & DurchflussSoll & " wird wiederholt!"
|
|
End If
|
|
|
|
' Durchfluß-Abhängige Daten der Referenzzähler anzeigen
|
|
If Not g_ohneSPS Then
|
|
Temperatur = m_SPS.GetEinlaufTemperatur()
|
|
Else
|
|
Temperatur = 25
|
|
End If
|
|
m_Temperatur = Temperatur
|
|
|
|
letzterFehler = m_ReferenzzaehlerA.letzterFehlerString(DurchflussSoll, Temperatur)
|
|
If letzterFehler <> "" Then
|
|
letzterFehlerA = letzterFehler
|
|
lblLetzterFehlerA.caption = Format(letzterFehler, "0.00") & "%"
|
|
tempDatum = m_ReferenzzaehlerA.DatumDesFehlers
|
|
DebugMsg "RefZ A: letzter Fehler für Q=" & DurchflussSoll & ",T=" & Temperatur & "°C, ermittelt am " & Format(tempDatum, "dd.mm.yyyy hh:mm") & ": F=" & letzterFehler & "%"
|
|
lblDatumFehlerA.caption = Format(tempDatum, "dd.mm.yyyy hh:mm")
|
|
Else
|
|
' Todo: Merken, daß der Zähler noch nie in diesem PP geprüft worden ist
|
|
' keine Überprüfung auf Abweichung!
|
|
lblLetzterFehlerA.caption = " - - -"
|
|
letzterFehlerA = Empty
|
|
End If
|
|
|
|
If g_App.Settings.getAnzahlMIDGruppen > 1 Then
|
|
letzterFehler = m_ReferenzzaehlerB.letzterFehlerString(DurchflussSoll, Temperatur)
|
|
If letzterFehler <> "" Then
|
|
letzterFehlerB = letzterFehler
|
|
tempDatum = m_ReferenzzaehlerB.DatumDesFehlers
|
|
lblDatumFehlerB.caption = Format(tempDatum, "dd.mm.yyyy hh:mm")
|
|
lblLetzterFehlerB.caption = Format(letzterFehler, "0.00") & "%"
|
|
DebugMsg "RefZ B: letzter Fehler für Q=" & DurchflussSoll & ",T=" & Temperatur & "°C, ermittelt am " & Format(tempDatum, "dd.mm.yyyy hh:mm") & ": F=" & letzterFehler & "%"
|
|
Else
|
|
lblLetzterFehlerB.caption = " - - -"
|
|
letzterFehlerB = Empty
|
|
End If
|
|
End If
|
|
|
|
|
|
' Balkenanzeige in der Liste der Durchflüsse aktualisieren
|
|
For i = 0 To lstPruefpunkte.ListCount - 1
|
|
If lstPruefpunkte.List(i) = Referenzzaehler.Nennweite & ": " & Format(DurchflussSoll, "0.00") Then
|
|
lstPruefpunkte.Selected(i) = True
|
|
Else
|
|
lstPruefpunkte.Selected(i) = False
|
|
End If
|
|
Next
|
|
|
|
If Not g_ohneSPS Then
|
|
' Für die Referenzzähler-Prüfung soll der unbereinigte Durchfluss Wert ermittelt werden
|
|
m_SPS.SetQDiff 0
|
|
End If ' g_ohneSPS
|
|
|
|
|
|
' Soll-Volumen = (Soll-Pruefzeit in Stunden) * (Soll-Durchfluß in m^3/h)
|
|
SollVolumen = (m_RefZaehlerPruefpunkt.Pruefzeit / 3600) * m_RefZaehlerPruefpunkt.Durchfluss
|
|
DebugMsg "SollVolumen für diesen Prüfpunkt: " & SollVolumen & " m³"
|
|
lblSollV.caption = Format(SollVolumen * 1000, "0")
|
|
' Soll-Prüfzeit in Sekunden
|
|
PP_ZeitSoll = m_RefZaehlerPruefpunkt.Pruefzeit
|
|
PrintStatus "Prüfzeit für diesen Prüfpunkt: " & PP_ZeitSoll
|
|
' Behälter festlegen
|
|
Set Behaelter = Nothing
|
|
For i = 1 To 4
|
|
If m_ArrayBehaelter(i).IstOkFuerVolumen(SollVolumen * 1000) Then
|
|
Set Behaelter = m_ArrayBehaelter(i)
|
|
BehaelterNr = i
|
|
Debug.Print "Behälter/Wage Nr " & BehaelterNr & " (siehe ini) gewählt"
|
|
PrintStatus "Behälter " & Behaelter.m_OVolumen & " l ist gewählt"
|
|
Exit For
|
|
End If
|
|
Next
|
|
|
|
' Fehlermeldung wenn Soll-Volumen > als Volumen des größten Behälters
|
|
' dann müssen Daten in Tabelle Referenzzähler-Pruefpunkt geändert werden
|
|
If Behaelter Is Nothing Then
|
|
MsgBox ("Es ist kein Behälter für das Volumen=" & SollVolumen & " vorhanden. " & vbCrLf & _
|
|
"Bitte überprüfen Sie die Ini Datei und die Tabelle ReferenzzaehlerPruefpunkt.")
|
|
cmdStart.Enabled = True
|
|
Exit Sub
|
|
End If
|
|
|
|
ErrorCount = 0
|
|
WaagenAnwahlWdh:
|
|
' Anwahl Waage zugehörig zum Behälter
|
|
If Not m_Waage Is Nothing Then
|
|
Set m_Waage = g_App.getWaage
|
|
End If
|
|
|
|
If Not m_Waage Is Nothing Then
|
|
m_Waage.Initialize Behaelter.m_Nr
|
|
|
|
'''''''''''''''''
|
|
If g_App.PruefstationNr = 2020 Then
|
|
' neu RH 12.4.2007 Immer Reset an der 2020
|
|
PrintStatus "Waagen-Reset, 5 sec warten..."
|
|
m_Waage.Reset
|
|
Sleep 5000
|
|
PrintStatus "OK."
|
|
End If
|
|
'''''''''''''''''
|
|
|
|
' neu RH 31.10.2011
|
|
|
|
If Not g_App.Settings.GetBenutzeFuellstandStattWaage() Then
|
|
' Füllstand-Sensor soll nicht generell verwendet werden
|
|
' Füllstand-Sensor abhängig von den Behälter-Eigenschaften verwenden
|
|
Select Case m_Waage.m_Waagenart
|
|
Case WAAGENART_FUELLSTAND
|
|
m_blnMitFuellstand = True
|
|
lbltxtGewichtUnit = "Liter"
|
|
lbltxtGewicht.caption = "Füllstand"
|
|
Case Else
|
|
lbltxtGewicht.caption = "Gewicht"
|
|
m_blnMitFuellstand = False
|
|
lbltxtGewichtUnit = "kg"
|
|
End Select
|
|
End If
|
|
|
|
If Behaelter.m_WaageAnwahl <> 0 Then
|
|
If Not m_Waage.Anwahl(Behaelter.m_WaageAnwahl) Then
|
|
PrintStatus "Waagen-Anwahl fehlgeschlagen: Reset & Wiederholung"
|
|
m_Waage.Reset
|
|
Sleep 2000
|
|
ErrorCount = ErrorCount + 1
|
|
If ErrorCount > 10 Then
|
|
MsgBox ("Waagen Fehler! Es erfolgt ein Abbruch")
|
|
Call Abbruch
|
|
Exit Sub
|
|
End If
|
|
GoTo WaagenAnwahlWdh
|
|
End If
|
|
End If
|
|
End If ' m_Waage Is Nothing
|
|
|
|
If Not g_ohneSPS Then
|
|
PrintStatus "SPS: Behälter mit Volumen " & Behaelter.m_OVolumen & " l gewählt"
|
|
' Behälter anwählen
|
|
m_SPS.setBehaelter Behaelter.m_BehaelterAnwahl
|
|
lblOVol.caption = Format(Behaelter.m_OVolumen, "0")
|
|
End If
|
|
|
|
' Anzeige Füllmenge
|
|
lblGewicht.caption = ""
|
|
|
|
PrintStatus "Behälter leeren..."
|
|
lblVolA.caption = ""
|
|
lblVolB.caption = ""
|
|
lblImpulseRZ1.caption = ""
|
|
lblImpulseRZ2.caption = ""
|
|
lblFehlerA.caption = ""
|
|
lblFehlerB.caption = ""
|
|
lblZeit.caption = ""
|
|
|
|
'RH 3.5.11 2
|
|
If m_blnMitFuellstand Then
|
|
|
|
'''''''''''''''''''''''''''''''' RH 07.08.2007 '''''''''''''''''''''''''''''''''''''''
|
|
''''''''''' jeweilige Steigrohre des Stranges entlüften
|
|
''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
|
|
If m_blnIstErsterPPdesStranges = True And g_ohneSPS = False Then
|
|
|
|
PrintStatus "alle Behälter leeren 90 sec" '(" & g_App.Settings.GetFuellstandEntleerzeit(0) & ")..."
|
|
|
|
m_SPS.WassserAblassen 1 + 2 + 4 + 8
|
|
|
|
For i = 1 To 90 'g_App.Settings.GetFuellstandEntleerzeit(0)
|
|
Debug.Print i & "s verstrichen"
|
|
lblZeit.caption = 90 - i
|
|
lblGewicht.caption = Format(m_SPS.GetFuellstand(Behaelter.m_Nr), "0.0")
|
|
Sleep 1000, True
|
|
Next
|
|
|
|
m_SPS.WassserAblassen 0
|
|
|
|
'''''''''''''''''''''''''''''''''''''''''''
|
|
' Steigrohr füllen
|
|
m_SPS.SetQSoll DurchflussSoll
|
|
PrintStatus "Nächster Durchfluss: " & Format(DurchflussSoll, "0.000")
|
|
|
|
m_SPS.AllePumpenAbwaehlen
|
|
Set m_Pumpe = Pumpenwahl(DurchflussSoll, m_ColPumpen)
|
|
PrintStatus "gewählte Pumpe (SPS VarName) " & m_Pumpe.GetSPSVarname
|
|
m_Pumpe.Anwahl
|
|
|
|
' Vorwahl Referenzzaehler Gruppe
|
|
' Vorwahl Referenzzaehler Nummer
|
|
'-------------------------------
|
|
' Referenzzaehler zur Anzeige von QIst enthält:
|
|
' - MIDGruppe des Referenzzählers aus Ini Datei
|
|
' - SPS setzen mit MID-Strang
|
|
m_SPS.SetMID Referenzzaehler.EinbauplatzNr
|
|
|
|
' RH 3.5.11 1
|
|
'Auswahl des aktiven Stellgliedes während der Regelung
|
|
' INI Datei:
|
|
Select Case m_Pumpe.GetRegelart
|
|
' Servo Vorgeschrieben
|
|
Case "Servo"
|
|
m_SPS.SetRegelart ("Servo")
|
|
m_SPS.SetServoStellung m_RefZaehlerPruefpunkt.Servoposition
|
|
PrintStatus "Servo Stellewert einstellen: " & m_RefZaehlerPruefpunkt.Servoposition
|
|
Case "FU"
|
|
' FU vorgeschrieben
|
|
m_SPS.SetRegelart ("FU")
|
|
m_SPS.SetServoStellung m_RefZaehlerPruefpunkt.FUStellwert
|
|
PrintStatus "FU Stellewert einstellen: " & m_RefZaehlerPruefpunkt.FUStellwert
|
|
Case Else
|
|
ErrorMsg "Es ist keine Regelart für die Pumpe " & m_Pumpe.getNr & " in der ini-Datei definiert."
|
|
Call Abbruch
|
|
Exit Sub
|
|
End Select
|
|
PrintStatus "Steigrohr entlüften 30 sec..."
|
|
m_SPS.setBetrieb 2
|
|
|
|
'''''''''''''''''''''''''''''''''''''''''''
|
|
For i = 1 To 30 'g_App.Settings.GetFuellstandEntleerzeit(0)
|
|
Debug.Print i & "s verstrichen"
|
|
lblZeit.caption = 30 - i
|
|
lblGewicht.caption = Format(m_SPS.GetFuellstand(Behaelter.m_Nr), "0.0")
|
|
Sleep 1000, True
|
|
Next
|
|
|
|
m_SPS.setBetrieb 0
|
|
PrintStatus " Steigrohr entlüftet."
|
|
End If ' erster PP des Strangs
|
|
|
|
m_SPS.WassserAblassen 1 + 2 + 4 + 8
|
|
|
|
PrintStatus "Alle Behälter leeren (" & g_App.Settings.GetFuellstandEntleerzeit(0) & ")..."
|
|
For i = 1 To g_App.Settings.GetFuellstandEntleerzeit(0)
|
|
Debug.Print i & "s verstrichen"
|
|
lblZeit.caption = g_App.Settings.GetFuellstandEntleerzeit(0) - i
|
|
lblGewicht.caption = Format(m_SPS.GetFuellstand(Behaelter.m_Nr), "0.0")
|
|
Sleep 1000, True
|
|
Next
|
|
|
|
m_SPS.WassserAblassen Behaelter.m_AblassAnwahl
|
|
' todo feste zeit warten
|
|
PrintStatus "Warte " & g_App.Settings.GetFuellstandEntleerzeit(Behaelter.m_Nr) & " s bis Behälter (" & Behaelter.m_OVolumen & " l) leer"
|
|
For i = 1 To g_App.Settings.GetFuellstandEntleerzeit(Behaelter.m_Nr)
|
|
Debug.Print i & "s verstrichen"
|
|
lblGewicht.caption = Format(m_SPS.GetFuellstand(Behaelter.m_Nr), "0.0")
|
|
lblZeit.caption = g_App.Settings.GetFuellstandEntleerzeit(Behaelter.m_Nr) - i
|
|
Sleep 1000, True
|
|
Next
|
|
|
|
m_SPS.WassserAblassen 0
|
|
End If ' Füllstand
|
|
|
|
|
|
If Not m_blnMitFuellstand Then
|
|
' Waage verwenden
|
|
m_SPS.WassserAblassen 0
|
|
|
|
' Behälter Grenzwert an Waage übergeben
|
|
m_Waage.SoftTaraReset
|
|
m_Waage.TaraReset
|
|
' nun Netto = Brutto da kein Tara
|
|
|
|
PrintStatus "Waagengrenzwert: " & Behaelter.m_WaageGrenzwert
|
|
|
|
m_Waage.SetNettoGrenzwert1 Behaelter.m_WaageGrenzwert, Behaelter.m_Genauigkeit
|
|
|
|
m_SPS.WassserAblassen 15
|
|
PrintStatus "Alle Behälter leeren bis Prüfmenge nicht mehr erreicht...(15s)"
|
|
Sleep 15000, True
|
|
|
|
Mindestmenge = Behaelter.m_Mindestmenge
|
|
If Mindestmenge > 0 Then
|
|
PrintStatus "Ist Mindestmenge zum Abpumpen erreicht ?"
|
|
' Vor jedem Prüfpunkt beide Behälter leeren bis Prüfmenge nicht mehr erreicht
|
|
|
|
If m_blnMitFuellstand Then
|
|
' Mindestmenge bei Prüfstation 2004,2005,2006, 2007 nicht nötig
|
|
Else
|
|
' Pumpe zum Abpumpen erfordert Mindestmenge
|
|
m_Waage.SoftTaraReset
|
|
m_Waage.TaraReset
|
|
If m_Waage.GetGewicht < Mindestmenge Then
|
|
' Diese Mindestmenge ist unterschritten
|
|
'Abpumpen stoppen
|
|
PrintStatus "Behälter füllen bis Mindestmenge " & Mindestmenge & "l zum Abpumpen erreicht"
|
|
m_SPS.WassserAblassen 0
|
|
PrintStatus "setze Waagengrenzwert: " & Mindestmenge & " kg"
|
|
' Grenzwert an Waage übergeben
|
|
m_Waage.SetNettoGrenzwert1 Mindestmenge, Behaelter.m_Genauigkeit
|
|
' Alle Pumpen abwählen
|
|
m_SPS.AllePumpenAbwaehlen
|
|
m_SPS.StartPumpe 2
|
|
' zum Füllen NW 32
|
|
m_SPS.SetMID 3
|
|
|
|
m_SPS.SetRegelart ("FU")
|
|
m_SPS.SetServoStellung 55
|
|
|
|
m_SPS.SetQSoll 25
|
|
m_SPS.StartPumpe 2
|
|
' Start Betrieb
|
|
m_SPS.setBetrieb 2
|
|
PrintStatus "Fülle bis Grenzwert erreicht"
|
|
Sleep 100
|
|
Do While Not m_SPS.GrenzwertWaageErreicht
|
|
' Anzeige Füllmenge
|
|
lblGewicht.caption = Format(m_Waage.GetGewicht, "0")
|
|
Sleep 100, True
|
|
Loop
|
|
m_SPS.setBetrieb 0
|
|
Else
|
|
|
|
PrintStatus "Mindestmenge zum Abpumpen ist erreicht"
|
|
End If
|
|
End If
|
|
End If
|
|
|
|
|
|
|
|
' PrintStatus "gewählten Behälter " & BehaelterNr & " leeren..."
|
|
' Vor jedem Prüfpunkt gewählten Behälter leeren
|
|
' ---------------------------------------------
|
|
' m_SPS.WassserAblassen Behaelter.m_AblassAnwahl
|
|
' Sleep 5000
|
|
|
|
Call AlleBehaelterLeeren(Me, m_SPS, m_Waage, Behaelter)
|
|
|
|
' Waage ist nun in Ruhe, Ablassen kann beendet werden
|
|
PrintStatus "Behälter sind leer.!"
|
|
|
|
' Wasser ablassen beenden
|
|
m_SPS.WassserAblassen 0
|
|
|
|
If g_Abbruch = True Then
|
|
Call Abbruch
|
|
Exit Sub
|
|
End If
|
|
|
|
' Hier ist jetzt Platz im Behälter um für das automatische
|
|
' Füllen genug Wasser auzunehmen
|
|
If BehaelterNr <> m_letzterBehaelterNr Then
|
|
m_letzterBehaelterNr = BehaelterNr
|
|
' Behälter wurde gewechselt, also zuerst einmal füllen
|
|
' RH 3.5.11 3
|
|
|
|
If m_Waage.m_Waagenart <> WAAGENART_FUELLSTAND Then
|
|
Call BehaelterFuellen(Behaelter)
|
|
Else
|
|
|
|
End If
|
|
|
|
If g_Abbruch = True Then
|
|
Call Abbruch
|
|
Exit Sub
|
|
End If
|
|
' Danach wieder Wasser ablassen
|
|
Call AlleBehaelterLeeren(Me, m_SPS, m_Waage, Behaelter)
|
|
End If
|
|
|
|
' auf Ruhe testen
|
|
If Not m_Waage Is Nothing And m_blnMitFuellstand = False Then
|
|
Behaelter.WarteAufRuhe
|
|
End If
|
|
|
|
If g_Abbruch = True Then
|
|
Call Abbruch
|
|
Exit Sub
|
|
End If
|
|
End If 'Waage und kein Fuellstand
|
|
|
|
|
|
' PrintStatus "10s warten bis Ablass zu"
|
|
' Sleep 10000, True
|
|
|
|
If Not g_ohneSPS Then
|
|
m_SPS.SetQSoll DurchflussSoll
|
|
PrintStatus "Nächster Durchfluss: " & Format(DurchflussSoll, "0.000")
|
|
' Pumpenauswahl
|
|
'--------------
|
|
' Hochbehälter Auswahl wenn Q < 1 m ^3 -> Pumpe.Nr = 4
|
|
' siehe modPumpe und CPumpe
|
|
'msgbox
|
|
|
|
m_SPS.AllePumpenAbwaehlen
|
|
Set m_Pumpe = Pumpenwahl(DurchflussSoll, m_ColPumpen)
|
|
PrintStatus "gewählte Pumpe (SPS VarName) " & m_Pumpe.GetSPSVarname
|
|
m_Pumpe.Anwahl
|
|
|
|
|
|
' Vorwahl Referenzzaehler Gruppe
|
|
' Vorwahl Referenzzaehler Nummer
|
|
'-------------------------------
|
|
' Referenzzaehler zur Anzeige von QIst enthält:
|
|
' - MIDGruppe des Referenzzählers aus Ini Datei
|
|
' - SPS setzen mit MID-Strang
|
|
m_SPS.SetMID Referenzzaehler.EinbauplatzNr
|
|
|
|
'RH 3.5.11 5
|
|
'Auswahl des aktiven Stellgliedes während der Regelung
|
|
' INI Datei:
|
|
Select Case m_Pumpe.GetRegelart
|
|
' Servo Vorgeschrieben
|
|
Case "Servo"
|
|
m_SPS.SetRegelart ("Servo")
|
|
m_SPS.SetServoStellung m_RefZaehlerPruefpunkt.Servoposition
|
|
PrintStatus "Servo Stellewert: einstellen: " & m_RefZaehlerPruefpunkt.Servoposition & " %"
|
|
Case "FU"
|
|
' FU vorgeschrieben
|
|
m_SPS.SetRegelart ("FU")
|
|
m_SPS.SetServoStellung m_RefZaehlerPruefpunkt.FUStellwert
|
|
PrintStatus "FU Stellewert: einstellen: " & m_RefZaehlerPruefpunkt.FUStellwert & " %"
|
|
Case Else
|
|
ErrorMsg "Es ist keine Regelart für die Pumpe " & m_Pumpe.getNr & " in der ini-Datei definiert."
|
|
Call Abbruch
|
|
Exit Sub
|
|
End Select
|
|
End If
|
|
|
|
If Not g_ohneSPS Then
|
|
m_SPS.m_FuellstandLeer = 0
|
|
End If
|
|
|
|
If Not m_blnMitFuellstand Then
|
|
'If Not m_Waage Is Nothing And m_Waage.m_Waagenart <> WAAGENART_FUELLSTAND Then
|
|
' Waage auf Null stellen
|
|
WaageAufNull1:
|
|
' RH 6.3.2006
|
|
If g_App.Settings.GetWaageTaraStattNullstellen(Behaelter.m_Nr) = False Then
|
|
PrintStatus "Waage auf 0.00 stellen: Nullstellen..."
|
|
If m_Waage.Nullstellen = False Then
|
|
ErrorMsg "Achtung: Nullstellung fehlgeschlagen!" & vbCrLf & " Bitte Fehler beheben und 'Ignorien' klicken oder abbrechen."
|
|
If MsgBox("Waage Nullstellen wiederholen?", vbYesNo) = vbYes Then
|
|
GoTo WaageAufNull1
|
|
End If
|
|
Else
|
|
PrintStatus "Waage wurde nullgestellt!"
|
|
End If
|
|
Sleep 2000
|
|
Else
|
|
m_Waage.SoftTaraReset
|
|
If m_Waage.Tara() = True Then
|
|
PrintStatus "Waage wurde tariert!"
|
|
Else
|
|
PrintStatus "Waage konnte nicht tariert werden! Softtara!"
|
|
m_Waage.SoftTara
|
|
|
|
If Round(m_Waage.GetGewicht(), 2) = 0 Then
|
|
PrintStatus "Soft-Tara bei " & m_Waage.SoftTaraGewicht & " kg"
|
|
Else
|
|
ErrorMsg "Soft-Tara konnte nicht ausgeführt werden. Antwort von Waage:" & m_Waage.m_strFehler
|
|
End If
|
|
End If
|
|
End If
|
|
|
|
|
|
' Anzeige Füllmenge
|
|
lblGewicht.caption = Format(m_Waage.GetGewicht, "0")
|
|
PrintStatus "Füllmenge: " & Format(m_Waage.GetGewicht, "0.00") & " kg"
|
|
WriteToLog "Füllmenge:" & vbTab & Format(m_Waage.GetGewicht, "0.000")
|
|
|
|
' Waagengrenzwert in Litern entspricht kg
|
|
Waagengrenzwert = SollVolumen * 1000 - DurchflussSoll * Behaelter.m_nUeberlaufFaktor
|
|
|
|
'neu RH 19.1.2006 noch nicht freigegeb, muß auch an der P2000 eingestellt werden
|
|
' If m_Behaelter.m_WaageGrenzwert > 0 Then
|
|
' If Waagengrenzwert > m_Behaelter.m_WaageGrenzwert Then
|
|
' PrintStatus "Der errechnete Grenzwert übersteigt den maximal zulässigen Grenzwert der Waage (ini: Waage" & m_Behaelter.m_Nr & ".Grenzwert) = " & m_Behaelter.m_WaageGrenzwert
|
|
' PrintStatus "Der Grenzwert für die Waage wurde auf den maximal zulässigen Grenzwert gesetzt."
|
|
' Waagengrenzwert = m_Behaelter.m_WaageGrenzwert
|
|
' lblGrenzwert.Caption = Format(Waagengrenzwert, "0.00")
|
|
' End If
|
|
' End If
|
|
|
|
PrintStatus "setze Waagengrenzwert: " & Waagengrenzwert & " kg"
|
|
lblGrenzwert.caption = Format(Waagengrenzwert, "0")
|
|
' Grenzwert an Waage übergeben
|
|
m_Waage.SetNettoGrenzwert1 Waagengrenzwert, Behaelter.m_Genauigkeit
|
|
|
|
PrintStatus "Waagen Grenzwert" & vbTab & Format(m_Waage.GetGewicht, "0.000")
|
|
End If
|
|
|
|
If Not g_ohneSPS Then
|
|
' Warte auf Startfreigabe
|
|
PrintStatus "Warte auf Startfreigabe"
|
|
Do While Not m_SPS.IstStreckePruefbereit
|
|
Sleep 1000, True
|
|
If g_Abbruch = True Then
|
|
Call Abbruch
|
|
Exit Sub
|
|
End If
|
|
Loop
|
|
Else
|
|
dummy = MsgBox("Ist die Prüfstation zur Prüfung bereit?", vbOKCancel, "Frage an den Bediener")
|
|
If dummy = vbCancel Then
|
|
Call Abbruch
|
|
Exit Sub
|
|
End If
|
|
End If 'Not g_ohneSPS And Not m_Waage Is Nothing
|
|
|
|
|
|
''''''''' zum testen
|
|
'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
|
|
''''
|
|
'''' FehlerA = CDbl(InputBox("Fehler A:", "Fehler bei " & DurchflussSoll, Round(letzterFehlerA, 3)))
|
|
'''' If g_App.Settings.getAnzahlMIDGruppen > 1 Then
|
|
'''' FehlerB = CDbl(InputBox("Fehler B:", "Fehler bei " & DurchflussSoll, Round(letzterFehlerB, 3)))
|
|
'''' End If
|
|
'''' GoTo TestStatusLogik
|
|
'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
|
|
|
|
' ----------------------------------------------------------
|
|
' Datenverkehr mit den FM85
|
|
' ----------------------------------------------------------
|
|
|
|
' Referenzzähler Pulszählung einschalten
|
|
' FM85 für diesen Prüfpunkt initialisieren:
|
|
'---------------------------------------
|
|
' Reset
|
|
Dim lngResetFM85counter As Long
|
|
lngResetFM85counter = 0
|
|
ResetFM85:
|
|
PrintStatus "Initialisierung der FM85...(" & lngResetFM85counter & ". Versuch)"
|
|
m_FMBus.send "**0@"
|
|
m_FMBus.receive (500)
|
|
m_FMBus.send "R"
|
|
m_FMBus.receive (500)
|
|
|
|
Sleep 1000, True
|
|
|
|
' ' Reset
|
|
' m_FMBus.send "**0@"
|
|
' m_FMBus.receive (500)
|
|
' m_FMBus.send "R"
|
|
' m_FMBus.receive (500)
|
|
'
|
|
' ' FM85 Nr 7 ansprechen
|
|
' ' Reset
|
|
' m_FMBus.send "**" & g_FM85RefZAdresse & "@"
|
|
' m_FMBus.receive (500)
|
|
' m_FMBus.send "R"
|
|
' m_FMBus.receive (500)
|
|
'
|
|
' ' zur Sicherheit ein zweites mal
|
|
' m_FMBus.send "**" & g_FM85RefZAdresse & "@"
|
|
' m_FMBus.receive (500)
|
|
' m_FMBus.send "R"
|
|
' m_FMBus.receive (500)
|
|
|
|
' Referenzzähler Prüfung einschalten
|
|
|
|
'Call m_FMBus.dialog("**" & g_FM85RefZAdresse & "@", "FM85P")
|
|
|
|
m_FMBus.send "**" & g_FM85RefZAdresse & "@"
|
|
' m_FMBus.receive (500)
|
|
|
|
If g_Abbruch Then
|
|
Call Abbruch
|
|
Exit Sub
|
|
End If
|
|
' '''''''''''''''''''''''
|
|
' ' Dummy-Werte setzen:
|
|
' '''''''''''''''''''''''
|
|
' ' Multiplikator
|
|
' m_FMBus.send "1s"
|
|
' m_FMBus.receive (500)
|
|
'
|
|
' ' keine Doppelimpulssperre
|
|
' m_FMBus.send "G"
|
|
' m_FMBus.receive (500)
|
|
'
|
|
' ' Dämpfung
|
|
' m_FMBus.send "3T"
|
|
' m_FMBus.receive (500)
|
|
'
|
|
' ' Doppelimpuls-Zeit
|
|
' m_FMBus.send "0000S"
|
|
' m_FMBus.receive (500)
|
|
'
|
|
' ' K-Wert sollte immer 1 sein, da Impulswertigkeit der beiden
|
|
' ' Referenzzähler immer gleich ist
|
|
' m_FMBus.send Trim("1000K+1")
|
|
|
|
' Für Referenzzähler : FM85P/7 PZ Eingang
|
|
m_FMBus.send "Q"
|
|
m_FMBus.receive (500)
|
|
|
|
' Für Referenzzähler : FM85P/7 RZ Eingang
|
|
' Sende und erwarte O
|
|
m_FMBus.send "O"
|
|
m_FMBus.receive (500)
|
|
|
|
' FM85 mit der Adresse 7 ansprechen
|
|
' 13 in 7 geändert Andreas Pfeiffer
|
|
' Fehlerbyte auslesen
|
|
m_FMBus.dialog "**" & g_FM85RefZAdresse & "@", ""
|
|
If g_Abbruch Then
|
|
Call Abbruch
|
|
Exit Sub
|
|
End If
|
|
|
|
m_FMBus.receive (500)
|
|
m_FMBus.send "42 "
|
|
dummy = Mid(m_FMBus.receive(500), 6, 2)
|
|
|
|
If dummy <> "00" And dummy <> "03" Then
|
|
If MsgBox("FM85P/7 Fehlerbyte ist nicht '00' oder '03' sondern '" & dummy & "':" & vbCrLf & Fehlerbyte42Meldung(dummy) & "Möchten Sie trotzdem weitermachen", vbYesNo) = vbYes Then
|
|
LogIntoDB "Fehlerbyte in frmRefZaehlerPrf StartPruefung() ist '" & dummy & "'", "FM85 Fehlerbyte"
|
|
If MsgBox("Programmierung der FM85 Wiederholen ?", vbYesNo) = vbYes Then
|
|
GoTo ResetFM85
|
|
End If
|
|
Else
|
|
g_Abbruch = True
|
|
End If
|
|
End If
|
|
|
|
'Steht counter auf 0?
|
|
m_ImpulseRZ_A = GetHexZahlFromFM85(g_FM85RefZAdresse, "L")
|
|
If m_ImpulseRZ_A <> 0 Then
|
|
LogIntoDB "Fehler: RefZ A mit " & m_ImpulseRZ_A & " Impulsen gestartet (" & lngResetFM85counter & " Wdh)!", "FM85 RZ Prüf"
|
|
PrintStatus "Fehler: RefZ A mit " & m_ImpulseRZ_A & " Impulsen gestartet (" & lngResetFM85counter & " Wdh)!"
|
|
lngResetFM85counter = lngResetFM85counter + 1
|
|
If lngResetFM85counter < 10 Then
|
|
GoTo ResetFM85
|
|
Else
|
|
LogIntoDB "Fehler: Start-Impulse für RZ_A= waren 10 mal größer 0!", "FM85 RZ Prüf"
|
|
End If
|
|
Else
|
|
PrintStatus "RefZ A mit 0 Impulsen gestartet."
|
|
End If
|
|
|
|
'Steht counter auf 0?
|
|
m_ImpulseRZ_B = GetHexZahlFromFM85(g_FM85RefZAdresse, "U")
|
|
If m_ImpulseRZ_B <> 0 Then
|
|
LogIntoDB "Fehler: RefZ B mit " & m_ImpulseRZ_B & " Impulsen gestartet (" & lngResetFM85counter & " Wdh)!", "FM85 RZ Prüf"
|
|
PrintStatus "Fehler: RefZ B mit " & m_ImpulseRZ_B & " Impulsen gestartet (" & lngResetFM85counter & " Wdh)!"
|
|
lngResetFM85counter = lngResetFM85counter + 1
|
|
If lngResetFM85counter < 10 Then
|
|
GoTo ResetFM85
|
|
Else
|
|
LogIntoDB "Fehler: Start-Impulse für RZ_B= waren 10 mal größer 0!", "FM85 RZ Prüf"
|
|
End If
|
|
Else
|
|
PrintStatus "RefZ B mit 0 Impulsen gestartet."
|
|
End If
|
|
|
|
If g_Abbruch = True Then
|
|
Call Abbruch
|
|
Exit Sub
|
|
End If
|
|
|
|
|
|
If Not g_ohneSPS Then
|
|
' Prüfung starten
|
|
' Pumpe ist schon angewählt: VB_Betrieb = START setzen
|
|
m_SPS.setBetrieb 2
|
|
|
|
PrintStatus "Warte auf Status Pumpe = läuft"
|
|
Do While (Not ((m_Pumpe.GetStatus And 4) = 4))
|
|
|
|
If m_blnMitFuellstand = False Then
|
|
lblGewicht.caption = Format(m_Waage.GetGewicht, "0")
|
|
ElseIf m_blnMitFuellstand = True Then
|
|
lblGewicht.caption = Format(m_SPS.GetFuellstand(Behaelter.m_Nr), "0.0")
|
|
End If
|
|
|
|
Sleep 500, True
|
|
|
|
If g_Abbruch Then
|
|
Exit Sub
|
|
End If
|
|
Loop
|
|
|
|
Else
|
|
dummy = MsgBox("Durchfluß " & Format(DurchflussSoll, "0.000") & " m³/h starten.", vbOKCancel, "Anweisung an den Bediener")
|
|
If dummy = vbCancel Then
|
|
Call Abbruch
|
|
g_Abbruch = True
|
|
End If
|
|
End If
|
|
|
|
If g_Abbruch = True Then
|
|
Exit Sub
|
|
End If
|
|
|
|
PP_ZeitStart = GetTickCount
|
|
|
|
PrintStatus "Referenzzählerprüfung läuft"
|
|
lblFehlerA.caption = "wird ermittelt "
|
|
|
|
If g_App.Settings.getAnzahlMIDGruppen > 1 Then
|
|
lblFehlerB.caption = "wird ermittelt "
|
|
End If
|
|
|
|
|
|
If Not g_ohneSPS Then
|
|
'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
|
|
' StartMessung
|
|
'----------------
|
|
' Schleifenbeginn
|
|
m_PruefpunktFertig = False
|
|
WriteToLog "*** Messung gestartet ***"
|
|
Timer1.Enabled = False
|
|
|
|
Do While Not m_PruefpunktFertig
|
|
strDebugText = ""
|
|
'strDebugText = Format(Now, "dd.mm.yyyy hh:mm:ss") & vbTab
|
|
strDebugText = strDebugText & Format(m_SPS.getQIst, "0.0000") & vbTab
|
|
|
|
' Durchflußanzeige
|
|
lblQIst.caption = Format(m_SPS.getQIst, "0.0000")
|
|
DoEvents
|
|
|
|
If g_Abbruch = True Then
|
|
Exit Sub
|
|
End If
|
|
|
|
'Änderung 23.03.00 Andreas Pfeiffer ##0003##
|
|
'Ansprechen der Adresse 13 ist nicht mehr nötig, da dieser
|
|
'bereits zuvor mehrfach angesprochen wurde
|
|
'dadurch schnellere Bildschimaktuallisierung
|
|
'Weiter CLng in Cvar geändert, Variablen in Double dimensioniert
|
|
'm_FMBus.send "**" & g_FM85RefZAdresse & "@"
|
|
'm_FMBus.receive (500)
|
|
|
|
' Referenzzähler Eingang
|
|
' m_FMBus.send "L"
|
|
' m_ImpulseRZ_A = Val("&H0" & m_FMBus.receive(500))
|
|
|
|
|
|
m_ImpulseRZ_A = GetHexZahlFromFM85(g_FM85RefZAdresse, "L")
|
|
strDebugText = strDebugText & "Imp A" & vbTab & m_ImpulseRZ_A & vbTab
|
|
|
|
|
|
' Referenzzählerimpulse Anzeige aktualisieren
|
|
lblImpulseRZ1.caption = CStr(m_ImpulseRZ_A)
|
|
|
|
lblVolA.caption = Format(1000 * m_ImpulseRZ_A / m_ReferenzzaehlerA.ImpulseQM, "0.000")
|
|
|
|
If g_App.Settings.getAnzahlMIDGruppen > 1 Then
|
|
' Prüfzähler Eingang
|
|
' m_FMBus.send "U"
|
|
' m_ImpulseRZ_B = Val("&H0" & m_FMBus.receive(500))
|
|
|
|
m_ImpulseRZ_B = GetHexZahlFromFM85(g_FM85RefZAdresse, "U")
|
|
|
|
strDebugText = strDebugText & "Imp B" & vbTab & m_ImpulseRZ_B & vbTab
|
|
|
|
' Referenzzählerimpulse Anzeige aktualisieren
|
|
lblImpulseRZ2.caption = CStr(m_ImpulseRZ_B)
|
|
|
|
lblVolB.caption = Format(1000 * m_ImpulseRZ_B / m_ReferenzzaehlerB.ImpulseQM, "0")
|
|
End If
|
|
|
|
If m_blnMitFuellstand = False Then
|
|
' Anzeige Füllmenge IstGewicht
|
|
lblGewicht.caption = Format(m_Waage.GetGewicht, Behaelter.m_Genauigkeit)
|
|
Else
|
|
lblGewicht.caption = Format(m_SPS.GetFuellstand(Behaelter.m_Nr), "0.0")
|
|
End If
|
|
|
|
strDebugText = strDebugText & "Gewicht" & vbTab & lblGewicht.caption & vbTab
|
|
|
|
' Abfrage SPS BehälterVoll
|
|
If m_SPS.GrenzwertWaageErreicht Then
|
|
Endzeit = GetTickCount
|
|
' Stop Messung
|
|
If Timer1.Enabled = False Then
|
|
PrintStatus "Waagen Grenzwert Signal: Prüfpunkt ist beendet"
|
|
Timer1.Interval = 60000
|
|
Timer1.Enabled = True
|
|
PrintStatus "Timer: 1 min warten..."
|
|
End If
|
|
|
|
'If g_App.PruefstationNr = 2007 Then
|
|
' m_PruefpunktFertig = True
|
|
'End If
|
|
End If
|
|
|
|
PP_Zeit = (GetTickCount() - PP_ZeitStart) / 1000
|
|
lblZeit.caption = PP_Zeit & "/" & PP_ZeitSoll
|
|
|
|
' Nach halber Prüfzeit Durchfluß und Temperatur merken
|
|
If bDataSaved = False And PP_Zeit > PP_ZeitSoll / 2 And Not g_ohneSPS Then
|
|
PrintStatus "Halbe Pruefzeit " & PP_Zeit & "/" & PP_ZeitSoll & "ist verstrichen:"
|
|
bDataSaved = True
|
|
' Halbe Pruefzeit ist verstrichen, es können Werte gespeichert werden:
|
|
' Wassertemperatur von der Strecke
|
|
Temperatur = m_SPS.GetEinlaufTemperatur
|
|
PrintStatus "Temperatur: " & Format(Temperatur, "0.0")
|
|
|
|
' RH: 8.7.2004 dieser Wert wird nicht benötigt da für RZP nicht aussagekräftig
|
|
'PrintStatus "SERVO/FU Stellwert: " & m_SPS.GetStellwert() & "%"
|
|
PrintStatus "SERVO/FU Stellwert: " & m_SPS.GetServoFUStellwert(m_Pumpe.GetRegelart, m_RefezaehlerStrang)
|
|
' RH 3.5.11 6
|
|
|
|
' Durchfluß-Istwert
|
|
PP_Durchfluss = m_SPS.getQIst
|
|
If Abs(PP_Durchfluss - DurchflussSoll) / DurchflussSoll > 0.1 Then
|
|
Printer.FontName = "Courier"
|
|
Printer.FontSize = 30
|
|
Printer.FontBold = True
|
|
Printer.CurrentX = 1000
|
|
Printer.CurrentY = 1000
|
|
Printer.Print "Warnung"
|
|
Printer.FontSize = 12
|
|
Printer.CurrentX = 1000
|
|
Printer.Print ""
|
|
Printer.CurrentX = 1000
|
|
Printer.Print "Prüfstation " & g_App.PruefstationNr
|
|
Printer.CurrentX = 1000
|
|
Printer.Print "Nach halber Prüfzeit (" & PP_Zeit & " s) "
|
|
Printer.CurrentX = 1000
|
|
Printer.Print "wurde der Solldurchfluß " & Format(DurchflussSoll, "0.000") & " m³/h nicht erreicht."
|
|
Printer.FontBold = False
|
|
Printer.CurrentX = 1000
|
|
Printer.Print ""
|
|
Printer.CurrentX = 1000
|
|
Printer.Print "Aktueller Durchfluß: " & Format(PP_Durchfluss, "0.000") & " m³/h"
|
|
Printer.CurrentX = 1000
|
|
Printer.Print "Nennweite: " & m_ReferenzzaehlerA.Nennweite
|
|
Printer.CurrentX = 1000
|
|
Printer.Print "Referenzzählerprüfung vom " & Format(Timestamp, "dd.mm.yyyy hh:mm")
|
|
Printer.CurrentX = 1000
|
|
Printer.Print "aufgetreten am " & Format(Now(), "dd.mm.yyyy hh:mm")
|
|
Printer.EndDoc
|
|
PrintStatus "Abweichung Ist-Durchfluß > 10%: " & Format(PP_Durchfluss, "0.000") & " m³/h"
|
|
Else
|
|
PrintStatus "Ist-Durchfluß: " & Format(PP_Durchfluss, "0.000") & " m³/h"
|
|
End If
|
|
End If
|
|
|
|
WriteToLog strDebugText
|
|
Loop
|
|
'pruefmenge wurde erreicht
|
|
Else ' g_ohneSPS
|
|
MsgBox "Weiter mit OK wenn Wasser gestoppt", , "Anweisung an den Bediener"
|
|
End If ' g_ohneSPS
|
|
|
|
'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
|
|
'''' Prüfpunkt beendet '''''
|
|
'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
|
|
' Betrieb stoppen
|
|
If Not g_ohneSPS Then
|
|
'm_SPS.SetQSoll 0 AP 5.5.00
|
|
m_SPS.setBetrieb 0
|
|
'
|
|
End If
|
|
|
|
lblQIst.caption = ""
|
|
|
|
|
|
If Not m_Waage Is Nothing And m_blnMitFuellstand = False Then
|
|
' Anzeige Füllmenge
|
|
lblGewicht.caption = Format(m_Waage.GetGewicht, "0")
|
|
|
|
' Anzeige Füllmenge :
|
|
PrintStatus "Gewicht: " & Format(m_Waage.GetGewicht, "0.000")
|
|
|
|
' Beruhigungsphase sleep Zeit
|
|
PrintStatus "Beruhigungsphase..."
|
|
Sleep 3000, True
|
|
|
|
' Leckage Kontrolle
|
|
' -----------------
|
|
' LeckageKontrollZeit = g_App.Settings.LeckageKontrollZeit
|
|
'm_Waage.WarteAufRuhe
|
|
Behaelter.WarteAufRuhe
|
|
If g_Abbruch = True Then
|
|
Call Abbruch
|
|
Exit Sub
|
|
End If
|
|
|
|
' Anzeige Füllmenge :
|
|
PrintStatus "Gewicht: " & Format(m_Waage.GetGewicht, "0.000")
|
|
lblGewicht.caption = Format(m_Waage.GetGewicht, "0")
|
|
|
|
WriteToLog "Gewicht " & vbTab & Format(m_Waage.GetGewicht, "0.000")
|
|
|
|
|
|
' Dauermessung: Gewicht gegen Zeit bleibt konstant ?
|
|
' getTickCount() ....
|
|
' m_Waage.GetGewicht
|
|
' Fehler anzeige: Leck in Behälter ?
|
|
End If ' m_Waage is nothing
|
|
|
|
If m_blnMitFuellstand = True Then
|
|
' Anzeige Füllmenge
|
|
lblGewicht.caption = Format(m_SPS.GetFuellstand(Behaelter.m_Nr), "0")
|
|
PrintStatus "Füllmenge: " & Format(m_SPS.GetFuellstand(Behaelter.m_Nr), "0.0")
|
|
' Beruhigungsphase sleep Zeit
|
|
PrintStatus "Beruhigungsphase..."
|
|
End If
|
|
|
|
|
|
' Fehlerermittlung
|
|
' m_FMBus.send "**" & g_FM85RefZAdresse & "@"
|
|
' m_FMBus.receive (500)
|
|
' m_FMBus.send "L"
|
|
' 'Änderung 23.03.00 Andreas Pfeiffer ##005## CVar oder CLng unklar
|
|
' m_ImpulseRZ_A = Val("&H0" & m_FMBus.receive(500))
|
|
|
|
m_ImpulseRZ_A = GetHexZahlFromFM85(g_FM85RefZAdresse, "L")
|
|
PrintStatus "Impulse RefZA=" & m_ImpulseRZ_A
|
|
' Referenzzählerimpulse Anzeige aktualisieren
|
|
lblImpulseRZ1.caption = CStr(m_ImpulseRZ_A)
|
|
If m_ImpulseRZ_A = -1 Then m_ImpulseRZ_A = 0
|
|
|
|
'm_FMBus.send "**" & g_FM85RefZAdresse & "@"
|
|
'm_FMBus.receive (500)
|
|
|
|
If g_App.Settings.getAnzahlMIDGruppen > 1 Then
|
|
' m_FMBus.send "U"
|
|
' m_ImpulseRZ_B = Val("&H0" & m_FMBus.receive(500))
|
|
|
|
m_ImpulseRZ_B = GetHexZahlFromFM85(g_FM85RefZAdresse, "U")
|
|
PrintStatus "Impulse RefZA=" & m_ImpulseRZ_B
|
|
|
|
' Referenzzählerimpulse Anzeige aktualisieren
|
|
lblImpulseRZ2.caption = CStr(m_ImpulseRZ_B)
|
|
If m_ImpulseRZ_B = -1 Then m_ImpulseRZ_B = 0
|
|
End If
|
|
|
|
' Wassertemperatur von der Strecke (1)
|
|
|
|
'Änderung 23.03.00 Andreas Pfeiffer ##0004##
|
|
'Es soll die Temperatur von der Mitte der Prüfung gespeichert werden
|
|
If Temperatur = 0 Then
|
|
' Temperatur wurde noch nicht ermittelt
|
|
If Not g_ohneSPS Then
|
|
Temperatur = Format(m_SPS.GetEinlaufTemperatur, "0.0")
|
|
Else
|
|
Temperatur = 22
|
|
PrintStatus "Ohne SPS: Temperatur von 22C angenommen."
|
|
End If
|
|
End If
|
|
|
|
VolumenA = m_ImpulseRZ_A / m_ReferenzzaehlerA.ImpulseQM
|
|
If g_App.Settings.getAnzahlMIDGruppen > 1 Then
|
|
VolumenB = m_ImpulseRZ_B / m_ReferenzzaehlerB.ImpulseQM
|
|
lblVolB.caption = Format(1000 * VolumenB, "0")
|
|
PrintStatus "VolumenB: " & VolumenB & " m^3"
|
|
End If
|
|
|
|
lblVolA.caption = Format(1000 * VolumenA, "0")
|
|
PrintStatus "VolumenA: " & VolumenA & " m^3"
|
|
|
|
|
|
If m_blnMitFuellstand = False Then
|
|
' Anzeige Füllmenge IstGewicht
|
|
lblGewicht.caption = Format(m_Waage.GetGewicht, "0")
|
|
VolumenIst = Errechne_Volumen_Von_Wasser_in_m3(m_Waage.GetGewicht, Temperatur)
|
|
Else
|
|
PrintStatus "Warte auf Ruhe Füllstand..."
|
|
VolumenIst = GetFuellstandInRuhe(Behaelter.m_Nr) / 1000
|
|
dblFuellstand = VolumenIst
|
|
End If
|
|
' Hier ist das Volumen in m³
|
|
PrintStatus "Ist-Volumen: " & Format(VolumenIst, "0.000")
|
|
|
|
If VolumenIst > 0 Then
|
|
|
|
FehlerA = (VolumenA - VolumenIst) * 100 / VolumenIst
|
|
lblFehlerA.caption = Format(FehlerA, "0.00") & "%"
|
|
PrintStatus "Fehler RZ-A: " & Format(FehlerA, "0.00") & "%"
|
|
|
|
If Not IsEmpty(letzterFehlerA) Then
|
|
PrintStatus "letzter Fehler RZ-A: " & Format(letzterFehlerA, "0.00") & "%"
|
|
PrintStatus "Abweichung RZ-A: " & Round(Abs(FehlerA - letzterFehlerA), 3) & "%"
|
|
Else
|
|
PrintStatus "letzter Fehler RZ-A konnte für diesen PP nicht ermittelt werden."
|
|
End If
|
|
|
|
If g_App.Settings.getAnzahlMIDGruppen > 1 Then
|
|
FehlerB = (VolumenB - VolumenIst) * 100 / VolumenIst
|
|
lblFehlerB.caption = Format(FehlerB, "0.00") & "%"
|
|
PrintStatus "Fehler RZ-B: " & Format(FehlerB, "0.00") & "%"
|
|
|
|
If Not IsEmpty(letzterFehlerB) Then
|
|
PrintStatus "letzter Fehler RZ-B: " & Format(letzterFehlerB, "0.00") & "%"
|
|
PrintStatus "Abweichung RZ-B: " & Round(Abs(FehlerB - letzterFehlerB), 3) & "%"
|
|
Else
|
|
PrintStatus "letzter Fehler RZ-B konnte für diesen PP nicht ermittelt werden."
|
|
End If
|
|
End If
|
|
|
|
TestStatusLogik:
|
|
' verstrichene Zeit für diesen Prüfpunkt
|
|
PP_Zeit = Int(GetTickCount - PP_ZeitStart) / 1000
|
|
|
|
Sleep 1000, True
|
|
|
|
|
|
Simulation:
|
|
''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
|
|
' Statusänderung für die Wiederholung von RZ Prüfpunkten
|
|
''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
|
|
'
|
|
' Todo
|
|
'
|
|
'''Select Case g_App.Settings.getMIDGruppe
|
|
''' Case 1
|
|
''' Set Referenzzaehler = m_ReferenzzaehlerA
|
|
''' Case 2
|
|
''' Set Referenzzaehler = m_ReferenzzaehlerB
|
|
''' Case Else
|
|
''' Set Referenzzaehler = m_ReferenzzaehlerA
|
|
''' ErrorMsg ("MID-Gruppe in INI Datei ungültig: MidGr. A gewählt")
|
|
'''End Select
|
|
'''
|
|
'''
|
|
' ein: StatusPruefpunktWdh mit Dim StatusPruefpunktWdh As STATUS_WDH_RZ_PRUEFPUNKT
|
|
' ein FehlerA
|
|
' ein letzterFehlerA
|
|
' ein FehlerB
|
|
' ein letzterFehlerB
|
|
|
|
' m_ReferenzzaehlerA
|
|
' m_ReferenzzaehlerB
|
|
' DurchflussSoll
|
|
|
|
' g_App.Settings.getMIDGruppe = 1 (A) , 2 (B)
|
|
' m_blnStrangHatAbweichung ist unwichtig / obsolete
|
|
' Timestamp
|
|
' m_bln_PP_Wird_wiederholt
|
|
|
|
' If chkSimulation.Value = vbChecked Then
|
|
' ZeigeSimulation StatusPruefpunktWdh, "vorher"
|
|
' End If
|
|
|
|
Select Case StatusPruefpunktWdh
|
|
Case STATUS_WDH_RZ_PRUEFPUNKT.NOCH_NICHT_GEPRUEFT
|
|
' Es findet die erste Prüfung statt
|
|
If RZFehlerWeichtAb(FehlerA, letzterFehlerA) And g_App.Settings.getMIDGruppe = 1 Then
|
|
' Der Fehler in Gruppe A weicht das erste Mal ab
|
|
m_blnStrangHatAbweichung = True
|
|
|
|
StatusPruefpunktWdh = STATUS_WDH_RZ_PRUEFPUNKT.ABWEICHUNG_BEI_ERSTER_PRUEFUNG
|
|
|
|
' Abweichungs-Formular nur anzeigen, wenn eine Abweichung festgestellt wurde
|
|
ShowRZFehlerAbweichung m_ReferenzzaehlerA.Nennweite, 0, DurchflussSoll, FehlerA, CDbl(letzterFehlerA), True, m_ReferenzzaehlerA
|
|
|
|
|
|
If g_App.Settings.getAnzahlMIDGruppen > 1 Then
|
|
ShowRZFehlerAbweichung m_ReferenzzaehlerB.Nennweite, 0, DurchflussSoll, FehlerB, CDbl(letzterFehlerB), False, m_ReferenzzaehlerB
|
|
End If
|
|
|
|
ZeigeAbweichungstext 0, FehlerA, CDbl(letzterFehlerA), DurchflussSoll, m_ReferenzzaehlerA, Timestamp
|
|
|
|
' Fahre mit der ersten Wiederholung der ersten Prüfung fort
|
|
m_bln_PP_Wird_wiederholt = True
|
|
GoTo Pruefpunktwiederholung
|
|
Else
|
|
' (A ist ausgewählt und A war OK) oder B ist ausgewählt
|
|
If g_App.Settings.getAnzahlMIDGruppen > 1 Then
|
|
' Es gibt Gruppe A und Gruppe B
|
|
If RZFehlerWeichtAb(FehlerB, letzterFehlerB) And g_App.Settings.getMIDGruppe = 2 Then
|
|
' Gruppe B ist ausgewählt und Fehler Gruppe B weicht das erste Mal ab
|
|
m_blnStrangHatAbweichung = True
|
|
|
|
' nächster Status
|
|
StatusPruefpunktWdh = STATUS_WDH_RZ_PRUEFPUNKT.ABWEICHUNG_BEI_ERSTER_PRUEFUNG
|
|
|
|
' Abweichungs-Formular nur anzeigen, wenn eine Abweichung festgestellt wurde
|
|
ShowRZFehlerAbweichung m_ReferenzzaehlerA.Nennweite, 0, DurchflussSoll, FehlerA, CDbl(letzterFehlerA), True, m_ReferenzzaehlerA
|
|
|
|
ShowRZFehlerAbweichung m_ReferenzzaehlerB.Nennweite, 0, DurchflussSoll, FehlerB, CDbl(letzterFehlerB), False, m_ReferenzzaehlerB
|
|
|
|
|
|
ZeigeAbweichungstext 0, FehlerB, CDbl(letzterFehlerB), DurchflussSoll, m_ReferenzzaehlerB, Timestamp
|
|
|
|
' Fahre mit der Wiederholung der ersten Prüfung fort
|
|
m_bln_PP_Wird_wiederholt = True
|
|
GoTo Pruefpunktwiederholung
|
|
Else
|
|
' (A ist ausgewählt und A war OK) oder (B ist ausgewählt und B war OK)
|
|
' der ausgewählte Strang ist in der ersten Prüfung OK
|
|
StatusPruefpunktWdh = STATUS_WDH_RZ_PRUEFPUNKT.INNERHALB_FEHLERGRENZEN_BEI_ERSTER_PRUEFUNG
|
|
' mit dem nächsten Prüfpunkt fortfahren
|
|
End If
|
|
Else
|
|
' Es gibt nur Gruppe A und A war OK
|
|
StatusPruefpunktWdh = STATUS_WDH_RZ_PRUEFPUNKT.INNERHALB_FEHLERGRENZEN_BEI_ERSTER_PRUEFUNG
|
|
' mit dem nächsten Prüfpunkt fortfahren
|
|
End If
|
|
End If
|
|
Case STATUS_WDH_RZ_PRUEFPUNKT.ABWEICHUNG_BEI_ERSTER_PRUEFUNG
|
|
'Abweichungsformular aktualisieren für Strang A
|
|
ShowRZFehlerAbweichung m_ReferenzzaehlerA.Nennweite, 1, DurchflussSoll, FehlerA, CDbl(letzterFehlerA), True, m_ReferenzzaehlerA
|
|
If g_App.Settings.getAnzahlMIDGruppen > 1 Then
|
|
|
|
ShowRZFehlerAbweichung m_ReferenzzaehlerB.Nennweite, 1, DurchflussSoll, FehlerB, CDbl(letzterFehlerB), False, m_ReferenzzaehlerB
|
|
|
|
End If
|
|
|
|
' Es findet die erste Wiederholung statt:
|
|
If RZFehlerWeichtAb(FehlerA, letzterFehlerA) And g_App.Settings.getMIDGruppe = 1 Then
|
|
' Strang A weicht ab und A ist ausgewählt
|
|
ZeigeAbweichungstext 1, FehlerA, CDbl(letzterFehlerA), DurchflussSoll, m_ReferenzzaehlerA, Timestamp
|
|
|
|
|
|
PrintStatus "Prüfstation wird gesperrt. Eine Freigabe durch die Prüfstellenleitung ist erforderlich."
|
|
m_objFrmRZFehlerAbweichung.ErzwingeFreigabe
|
|
|
|
|
|
' Fehler Gruppe A weicht in der ersten Wiederholung ab
|
|
StatusPruefpunktWdh = STATUS_WDH_RZ_PRUEFPUNKT.ABWEICHUNG_BEI_ERSTER_WIEDERHOLUNG
|
|
' zweite Wiederholung durchführen
|
|
m_bln_PP_Wird_wiederholt = True
|
|
GoTo Pruefpunktwiederholung
|
|
End If
|
|
|
|
If g_App.Settings.getAnzahlMIDGruppen > 1 Then
|
|
' Es gibt Gruppe A und Gruppe B, also auch Gruppe B betrachten
|
|
' Es findet die erste Wiederholung statt:
|
|
If RZFehlerWeichtAb(FehlerB, letzterFehlerB) And g_App.Settings.getMIDGruppe = 2 Then
|
|
' B weicht ab und B ist ausgewählt
|
|
|
|
ZeigeAbweichungstext 1, FehlerB, CDbl(letzterFehlerB), DurchflussSoll, m_ReferenzzaehlerB, Timestamp
|
|
|
|
PrintStatus "Prüfstation wird gesperrt. Eine Freigabe durch die Prüfstellenleitung ist erforderlich."
|
|
m_objFrmRZFehlerAbweichung.ErzwingeFreigabe
|
|
|
|
' Fehler des RZ in Gruppe B weicht in der ersten Wiederholung ab
|
|
StatusPruefpunktWdh = STATUS_WDH_RZ_PRUEFPUNKT.ABWEICHUNG_BEI_ERSTER_WIEDERHOLUNG
|
|
'zweite Wiederholung durchführen
|
|
m_bln_PP_Wird_wiederholt = True
|
|
GoTo Pruefpunktwiederholung
|
|
Else
|
|
' Entweder (A ist ausgewählt und A war OK) oder (B ist ausgewählt und B ist OK)
|
|
' = Der ausgewählte Strang ist OK
|
|
' = alle Fehler sind innerhalb der Fehlergrenzen
|
|
|
|
StatusPruefpunktWdh = STATUS_WDH_RZ_PRUEFPUNKT.INNERHALB_FEHLERGRENZEN_BEI_ERSTER_WIEDERHOLUNG
|
|
|
|
m_objFrmRZFehlerAbweichung.AddText "Keine Abweichung in der 1. Wiederholung. Zur Kontrolle wird Prüfpunkt Q=" & DurchflussSoll & " m³/h wiederholt!"
|
|
PrintStatus "Keine Abweichung in der 1. Wiederholung. Zur Kontrolle wird Prüfpunkt Q=" & DurchflussSoll & " m³/h wiederholt!"
|
|
|
|
' zweite Wiederholung durchführen zur Bestätgung eines einmaligen Ausreissers
|
|
m_bln_PP_Wird_wiederholt = True
|
|
GoTo Pruefpunktwiederholung
|
|
End If
|
|
Else
|
|
' es gibt nur Gruppe A und A war OK bei der ersten Wiederholung
|
|
StatusPruefpunktWdh = STATUS_WDH_RZ_PRUEFPUNKT.INNERHALB_FEHLERGRENZEN_BEI_ERSTER_WIEDERHOLUNG
|
|
' zweite Wiederholung zur Bestätgung eines einmaligen Ausreissers
|
|
m_objFrmRZFehlerAbweichung.AddText "Keine Abweichung in der 1. Wiederholung. Zur Kontrolle wird Prüfpunkt Q=" & DurchflussSoll & " m³/h wiederholt!"
|
|
PrintStatus "Keine Abweichung in der 1. Wiederholung. Zur Kontrolle wird Prüfpunkt Q=" & DurchflussSoll & " m³/h wiederholt!"
|
|
|
|
m_bln_PP_Wird_wiederholt = True
|
|
GoTo Pruefpunktwiederholung
|
|
End If
|
|
Case STATUS_WDH_RZ_PRUEFPUNKT.ABWEICHUNG_BEI_ERSTER_WIEDERHOLUNG
|
|
' zweite Wiederholung wurde gerade durchgeführt
|
|
ShowRZFehlerAbweichung m_ReferenzzaehlerA.Nennweite, 2, DurchflussSoll, FehlerA, CDbl(letzterFehlerA), True, m_ReferenzzaehlerA
|
|
If g_App.Settings.getAnzahlMIDGruppen > 1 Then
|
|
ShowRZFehlerAbweichung m_ReferenzzaehlerB.Nennweite, 2, DurchflussSoll, FehlerB, CDbl(letzterFehlerB), False, m_ReferenzzaehlerB
|
|
End If
|
|
|
|
' unabhängig vom Fehler
|
|
StatusPruefpunktWdh = STATUS_WDH_RZ_PRUEFPUNKT.ABWEICHUNG_BEI_ZWEITER_WIEDERHOLUNG
|
|
|
|
|
|
Case STATUS_WDH_RZ_PRUEFPUNKT.INNERHALB_FEHLERGRENZEN_BEI_ERSTER_PRUEFUNG
|
|
' Alles super, fortfahren mit nächstem Prüfpunkt
|
|
Case STATUS_WDH_RZ_PRUEFPUNKT.INNERHALB_FEHLERGRENZEN_BEI_ERSTER_WIEDERHOLUNG
|
|
' Erste Wiederholung ergab, daß dieser Prüfpunkt ein einmaliger Aussreisser sein könnte
|
|
' Zweite Wiederholung wird nun betrachtet
|
|
ShowRZFehlerAbweichung m_ReferenzzaehlerA.Nennweite, 2, DurchflussSoll, FehlerA, CDbl(letzterFehlerA), True, m_ReferenzzaehlerA
|
|
If g_App.Settings.getAnzahlMIDGruppen > 1 Then
|
|
ShowRZFehlerAbweichung m_ReferenzzaehlerB.Nennweite, 2, DurchflussSoll, FehlerB, CDbl(letzterFehlerB), False, m_ReferenzzaehlerB
|
|
End If
|
|
|
|
If RZFehlerWeichtAb(FehlerA, letzterFehlerA) And g_App.Settings.getMIDGruppe = 1 Then
|
|
' A ist ausgewählt und A weicht ab
|
|
' Fehler des RZ in Gruppe A weicht in der zweiten Wiederholung ab
|
|
ZeigeAbweichungstext 2, FehlerA, CDbl(letzterFehlerA), DurchflussSoll, m_ReferenzzaehlerA, Timestamp
|
|
|
|
PrintStatus "Prüfstation wird gesperrt. Eine Freigabe durch die Prüfstellenleitung ist erforderlich."
|
|
m_objFrmRZFehlerAbweichung.ErzwingeFreigabe
|
|
|
|
|
|
StatusPruefpunktWdh = STATUS_WDH_RZ_PRUEFPUNKT.ABWEICHUNG_BEI_ZWEITER_WIEDERHOLUNG
|
|
' Endzustand
|
|
Else
|
|
' A ist OK oder B ist ausgewählt
|
|
If g_App.Settings.getAnzahlMIDGruppen > 1 Then
|
|
' Es gibt Gruppe A und Gruppe B, also auch Gruppe B betrachten
|
|
' Es findet die erste Wiederholung statt:
|
|
If RZFehlerWeichtAb(FehlerB, letzterFehlerB) And g_App.Settings.getMIDGruppe = 2 Then
|
|
' B ist ausgewählt und weicht ab
|
|
ZeigeAbweichungstext 2, FehlerB, CDbl(letzterFehlerB), DurchflussSoll, m_ReferenzzaehlerB, Timestamp
|
|
|
|
PrintStatus "Prüfstation wird gesperrt. Eine Freigabe durch die Prüfstellenleitung ist erforderlich."
|
|
m_objFrmRZFehlerAbweichung.ErzwingeFreigabe
|
|
|
|
StatusPruefpunktWdh = STATUS_WDH_RZ_PRUEFPUNKT.ABWEICHUNG_BEI_ZWEITER_WIEDERHOLUNG
|
|
Else
|
|
' A und B sind OK
|
|
StatusPruefpunktWdh = STATUS_WDH_RZ_PRUEFPUNKT.INNERHALB_FEHLERGRENZEN_BEI_ZWEITER_WIEDERHOLUNG
|
|
' Endzustand
|
|
End If
|
|
Else
|
|
' A ist OK, B wird nicht betrachtet
|
|
StatusPruefpunktWdh = STATUS_WDH_RZ_PRUEFPUNKT.INNERHALB_FEHLERGRENZEN_BEI_ZWEITER_WIEDERHOLUNG
|
|
' Endzustand
|
|
End If
|
|
End If
|
|
' keine weitere Wiederholung
|
|
Case Else
|
|
MsgBox "nicht erwarteter Zustand " & StatusPruefpunktWdh
|
|
LogIntoDB "frmRefZaehlerPrf StartPruefung(): nicht erwarteter Zustand " & StatusPruefpunktWdh, "Programmfehler"
|
|
End Select
|
|
|
|
|
|
' If chkSimulation.Value = vbChecked Then
|
|
' ZeigeSimulation StatusPruefpunktWdh, "nachher"
|
|
' GoTo EinsprungSimulationNext
|
|
' End If
|
|
|
|
''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
|
|
'
|
|
''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
|
|
' folgende Daten Speichern
|
|
' m_ReferenzzaehlerA.SerienNr
|
|
' TimeStamp
|
|
' BehaelterNr ' wie in ini Datei
|
|
' DurchflussSoll
|
|
' VolumenIst
|
|
' m_Waage.GetGewicht
|
|
' Temperatur
|
|
' Impulse (neu seit 5.10.00)
|
|
If Not m_Waage Is Nothing And m_blnMitFuellstand = False Then
|
|
Call FehlerSpeichern(m_ReferenzzaehlerA.SerienNr, Timestamp, PruefpunktNr, PP_Zeit, DurchflussSoll, PP_Durchfluss, VolumenA, m_Waage.GetGewicht, Temperatur, BehaelterNr, CLng(m_ImpulseRZ_A))
|
|
If g_App.Settings.getAnzahlMIDGruppen > 1 Then
|
|
Call FehlerSpeichern(m_ReferenzzaehlerB.SerienNr, Timestamp, PruefpunktNr, PP_Zeit, DurchflussSoll, PP_Durchfluss, VolumenB, m_Waage.GetGewicht, Temperatur, BehaelterNr, CLng(m_ImpulseRZ_B))
|
|
End If
|
|
Else ' ohne Waage aber mit Füllstand
|
|
Call FehlerSpeichern(m_ReferenzzaehlerA.SerienNr, Timestamp, PruefpunktNr, PP_Zeit, DurchflussSoll, PP_Durchfluss, VolumenA, 0, Temperatur, BehaelterNr, CLng(m_ImpulseRZ_A), dblFuellstand)
|
|
End If
|
|
Else
|
|
PrintStatus "Die Referenzzähler-Fehler sind nicht ermittelbar, da IstVolumen=" & VolumenIst & " ist"
|
|
End If
|
|
|
|
DoEvents
|
|
If g_Abbruch = True Then
|
|
Exit Sub
|
|
End If
|
|
Else
|
|
' sollte nicht vorkommen
|
|
DebugMsg "Prüfpunkt " & DurchflussSoll & " wird übersprungen, da DurchflussSoll <= 0 ist"
|
|
End If ' DurchflussSoll > 0
|
|
' Schleifenende ReferenzzählerPruefpunkt
|
|
EinsprungSimulationNext:
|
|
|
|
m_blnIstErsterPPdesStranges = False
|
|
Next
|
|
|
|
' Select Case StatusWiederholung
|
|
' Case 0
|
|
' ' Es war keine Wiederholung nötig
|
|
' DebugMsg "keine Wdh nötig"
|
|
' Case 1
|
|
' ' Es wurde festgestellt, daß eine eine Wiederholung des Stranges nötig ist:
|
|
' StatusWiederholung = 0 ' Wdh ist im Gange
|
|
'
|
|
' ' ÄnderungRH 13.2.2002
|
|
' ' Es ist eine Wiederholung nötig.
|
|
' ' Der Timestamp der Prüfung des neuen Stranges wird aktualisiert
|
|
' ' Also vorher Druck veranlassen mit letztem Timestamp
|
|
'
|
|
' RZFehlerDruck g_App.PruefstationNr, m_Temperatur
|
|
' 'alten Prüfgang speichern
|
|
' RZPruefgangSpeichern Timestamp, Now(), , g_App.Mitarbeiter.getNr
|
|
' Timestamp = Now()
|
|
' 'neuen Prüfgang speichern
|
|
' RZPruefgangSpeichern Timestamp, , g_App.Mitarbeiter.getNr, , "Wiederholung des Stranges " & m_RefezaehlerStrang
|
|
'
|
|
' PrintStatus Timestamp & " Dieser Strang wird wiederholt, da Abweichung > " & g_App.Settings.get_RZ_Wiederholgenauigkeit() & " % aufgetreten."
|
|
' GoTo StrangWiederholung
|
|
' End Select
|
|
|
|
If g_Abbruch = True Then
|
|
Exit Sub
|
|
End If
|
|
|
|
' Schleifenende Referenzzähler / RefZ Strang
|
|
SkipStrang:
|
|
Next
|
|
|
|
If m_DauerpruefungZaehler < m_DauerpruefungAnzahl Then
|
|
' Änderung: RH 14.05.2009: Es wird als Standard kein RZ Protokoll mehr gedruckt
|
|
' RZFehlerDruck g_App.PruefstationNr, m_Temperatur
|
|
RZPruefgangSpeichern Timestamp, Now(), , g_App.Mitarbeiter.getNr
|
|
End If
|
|
|
|
If m_DauerBeenden = True Then Exit For
|
|
Next m_DauerpruefungZaehler ' Schleifenende Dauerprüfung
|
|
|
|
' ' letzte Prüfgang
|
|
' ' Endergebnisse erst drucken, wenn sich Mitarbeiter identifiziert
|
|
' Dim dlgLogin As frmLogin
|
|
' Set dlgLogin = New frmLogin
|
|
' dlgLogin.Caption = "Zum Ausdruck des Referenzzähler Protokolls bitte identifizieren!"
|
|
' Do While doModal(dlgLogin, True) <> IDOK
|
|
' MsgBox "Sie müssen sich anmelden, um das Referenzzähler Protokoll drucken zu können."
|
|
' Loop
|
|
' g_App.Mitarbeiter = dlgLogin.getMitarbeiter()
|
|
' Set dlgLogin = Nothing
|
|
' RZFehlerDruck g_App.PruefstationNr, m_Temperatur
|
|
' RZPruefgangSpeichern Timestamp, Now(), , g_App.Mitarbeiter.getNr
|
|
|
|
lblDauer.caption = ""
|
|
|
|
Call ResetFormAndVars
|
|
PrintStatus "Referenzzähler Prüfung abgeschlossen"
|
|
|
|
If Not m_Waage Is Nothing Then
|
|
PrintStatus "Waagen-Grenzwert zurücksetzen"
|
|
Call WaageZuruecksetzen
|
|
Call m_Waage.releaseMScomm
|
|
End If ' not m_Waage Is Nothing
|
|
|
|
If m_blnMitFuellstand Then
|
|
' Tara Reset
|
|
m_SPS.m_FuellstandLeer = 0
|
|
End If
|
|
|
|
If g_App.Settings.get_RZP_BehaelterLeeren() > 0 Then
|
|
Call AlleBehaelterLeeren(Me, m_SPS, m_Waage, Behaelter)
|
|
End If
|
|
|
|
Exit Sub
|
|
ErrorhandlerLogAndResumeNext:
|
|
ErrorMsg "Fehler " & Err.Number & " in der RefZ-Prüfung: " & Err.Description, "RZ Prüf"
|
|
Exit Sub
|
|
Resume
|
|
End Sub
|
|
|
|
'-------------------------------------------------------------------------
|
|
|
|
Public Sub PrintStatus(sText As String)
|
|
txtStatus.text = txtStatus.text & sText & vbCrLf
|
|
txtStatus.SelStart = Len(txtStatus.text)
|
|
DebugMsg ": " & sText
|
|
End Sub
|
|
|
|
Private Function FehlerSpeichern(SerienNr As Long, Timestamp As Date, PruefpunktNr As Integer, Pruefpunkt_Zeit As Long, DurchflussSoll As Double, DurchflussIst As Double, MIDVolumen As Double, Gewicht As Double, Temperatur As Double, BehaelterNr As Integer, Impulse As Long, Optional Fuellstand As Double = 0)
|
|
' Errechnet Fehler aus MIDVolumen und Gewicht und Temperatur
|
|
' Speichert Pruefpunkt Daten und Fehler in DB, Tabelle ReferenzzaehlerFehler
|
|
|
|
On Error GoTo FehlerSpeichernError
|
|
|
|
Dim Fehler As Double
|
|
Dim rs As CRecordset
|
|
Dim FeldnamePrefix As String
|
|
Dim sSQL As String
|
|
Dim BehaelterVolumen As Double
|
|
Dim strDatumSQL As String
|
|
|
|
Set rs = New CRecordset
|
|
|
|
strDatumSQL = FormatDateForSQL(Timestamp, g_App.getDB.getConnection)
|
|
sSQL = "Select * from ReferenzzaehlerFehler where SerienNr= " & SerienNr & " and Datum=" & strDatumSQL
|
|
|
|
rs.openRS (sSQL)
|
|
If rs.EOF Then
|
|
rs.addNew
|
|
Call rs.setValue("SerienNr", SerienNr)
|
|
If Timestamp > 0 Then
|
|
'Dim TimeStampDatum As Date
|
|
'Dim TimestampTime As Date
|
|
'TimeStampDatum = CDate(Mid(Str(Timestamp), 1, 9))
|
|
'TimestampTime = CDate(Mid(Str(Timestamp), 11, 5))
|
|
|
|
'Provisorium geändert am 24.09.02 Pfeiffer
|
|
'Datumskonvertierung für den SQLServer nicht in Ordnung
|
|
'getestet
|
|
'Call rs.setValue("Datum", TimeStampDatum + TimestampTime)
|
|
'alter Zustand
|
|
Call rs.setValue("Datum", Timestamp)
|
|
End If
|
|
Call rs.update
|
|
End If
|
|
|
|
PrintStatus "Ermittlung des Fehler des RefZ "
|
|
PrintStatus "------------------------------"
|
|
PrintStatus "Timestamp: " & Format(Timestamp, "dd.mm.yyyy hh.mm.ss")
|
|
PrintStatus "SerienNr: " & SerienNr
|
|
PrintStatus " "
|
|
|
|
If Fuellstand > 0 Then
|
|
BehaelterVolumen = Fuellstand
|
|
Else
|
|
BehaelterVolumen = Errechne_Volumen_Von_Wasser_in_m3(Gewicht, Temperatur)
|
|
End If
|
|
|
|
PrintStatus "gemessenes Behälter-Gewicht: " & Format(Gewicht, "0.0000")
|
|
PrintStatus "Temperatur: " & Format(Temperatur, "0.0")
|
|
PrintStatus "Behälter-Volumen: " & Format(BehaelterVolumen, "0.000")
|
|
PrintStatus "Volumen durch MID: " & Format(MIDVolumen, "0.000")
|
|
|
|
If BehaelterVolumen <> 0 Then
|
|
' Fehler in %
|
|
If g_objExternePruefformel Is Nothing Then
|
|
PrintStatus "Interne Pruefformel"
|
|
Fehler = (MIDVolumen - BehaelterVolumen) * 100 / BehaelterVolumen
|
|
PrintStatus " MIDVolumen = " & MIDVolumen
|
|
PrintStatus " BehaelterVolumen = " & BehaelterVolumen
|
|
PrintStatus " Fehler= " & Fehler
|
|
Else
|
|
' Fehlerberechnung in Externer DLL, neu RH 30.5.2017
|
|
Fehler = modPruefformel.Errechne_Relative_Messabweichung_in_Prozent(MIDVolumen, BehaelterVolumen, 0)
|
|
PrintStatus g_objExternePruefformel.GetLogText
|
|
End If
|
|
|
|
PrintStatus "daraus berechn. Fehler: " & Format(Fehler, "0.00") & " %"
|
|
|
|
FeldnamePrefix = "PP" & CStr(PruefpunktNr) & "_"
|
|
Call rs.setValue(FeldnamePrefix & "Soll_Q", DurchflussSoll)
|
|
Call rs.setValue(FeldnamePrefix & "Ist_Q", DurchflussIst)
|
|
Call rs.setValue(FeldnamePrefix & "Ist_V", BehaelterVolumen * 1000) ' Litern
|
|
Call rs.setValue(FeldnamePrefix & "Waage", BehaelterNr)
|
|
Call rs.setValue(FeldnamePrefix & "Gewicht", Gewicht)
|
|
Call rs.setValue(FeldnamePrefix & "WasserTemp", Temperatur)
|
|
|
|
Call rs.setValue(FeldnamePrefix & "Zeit", Pruefpunkt_Zeit)
|
|
|
|
Call rs.setValue(FeldnamePrefix & "Fehler", Fehler)
|
|
Call rs.setValue(FeldnamePrefix & "Ref_V", MIDVolumen * 1000) ' in Litern
|
|
Call rs.setValue("MitarbeiterNr", g_App.Mitarbeiter.getNr)
|
|
'neu, 4.10.00, RH:
|
|
Call rs.setValue(FeldnamePrefix & "Impulse", Impulse)
|
|
|
|
' Werte für die Datenbank
|
|
' Debug.Print "PP" & CStr(PruefpunktNr) & "_Soll_Q: " & DurchflussSoll
|
|
' Debug.Print "PP" & CStr(PruefpunktNr) & "_Ist_Q: " & DurchflussIst
|
|
' Debug.Print "PP" & CStr(PruefpunktNr) & "_Waage:" & BehaelterNr
|
|
' Debug.Print "PP" & CStr(PruefpunktNr) & "_Ist_V:" & BehaelterVolumen
|
|
' Debug.Print "PP" & CStr(PruefpunktNr) & "_Gewicht: " & Gewicht
|
|
' Debug.Print "PP" & CStr(PruefpunktNr) & "_WasserTemp: " & Temperatur
|
|
' Debug.Print "PP" & CStr(PruefpunktNr) & "_Zeit: " & Pruefpunkt_Zeit
|
|
' Debug.Print "PP" & CStr(PruefpunktNr) & "_Fehler: " & Fehler
|
|
' Debug.Print "MitarbeiterNr: " & g_App.Mitarbeiter.getNr
|
|
|
|
Call rs.update
|
|
FehlerSpeichern = True
|
|
Else
|
|
PrintStatus "Fehler: Behältervolumen ist Null! Der RefZ-Fehler konnte nicht ermittelt werden"
|
|
Fehler = -100
|
|
End If
|
|
Exit Function
|
|
FehlerSpeichernError:
|
|
ErrorMsg ("FehlerSpeichern fehlgeschlagen: " & Err.Description)
|
|
End Function
|
|
|
|
|
|
Private Function FehlerSpeichernOhneWaage(SerienNr As Long, Timestamp As Date, PruefpunktNr As Integer, Pruefpunkt_Zeit As Long, DurchflussSoll As Double, DurchflussIst As Double, MIDVolumen As Double, BehaelterVolumen As Double, BehaelterNr As Integer, Impulse As Long)
|
|
' Errechnet Fehler aus MIDVolumen und Gewicht und Temperatur
|
|
' Speichert Pruefpunkt Daten und Fehler in DB, Tabelle ReferenzzaehlerFehler
|
|
On Error GoTo FehlerSpeichernError
|
|
|
|
Dim Fehler As Double
|
|
Dim rs As CRecordset
|
|
Dim FeldnamePrefix As String
|
|
Dim sSQL As String
|
|
|
|
Set rs = New CRecordset
|
|
'sSQL = "Select * from ReferenzzaehlerFehler where SerienNr= " & Seriennr & " and Datum=" & Format(Timestamp, "\#MM\/DD\/YYYY HH:mm:SS\#") & ""
|
|
|
|
|
|
sSQL = "Select * from ReferenzzaehlerFehler where SerienNr= " & SerienNr & " and Datum=CONVERT(datetime, '" & Format(Timestamp, "yyyy-mm-dd hh:mm:00") & "')"
|
|
|
|
rs.openRS (sSQL)
|
|
If rs.EOF Then
|
|
rs.addNew
|
|
Call rs.setValue("SerienNr", SerienNr)
|
|
If Timestamp > 0 Then
|
|
Call rs.setValue("Datum", Timestamp)
|
|
End If
|
|
Call rs.update
|
|
End If
|
|
|
|
PrintStatus "Ermittlung des Fehler des RefZ "
|
|
PrintStatus "------------------------------"
|
|
|
|
'PrintStatus "Temperatur: " & Format(Temperatur, "0.0")
|
|
PrintStatus "Behälter-Volumen: " & Format(BehaelterVolumen, "0.000")
|
|
PrintStatus "Volumen durch MID: " & Format(MIDVolumen, "0.000")
|
|
|
|
' Fehler in %
|
|
Fehler = (MIDVolumen - BehaelterVolumen) * 100 / BehaelterVolumen
|
|
|
|
PrintStatus "daraus berechn. Fehler: " & Format(Fehler, "0.00") & " %"
|
|
|
|
FeldnamePrefix = "PP" & CStr(PruefpunktNr) & "_"
|
|
Call rs.setValue(FeldnamePrefix & "Soll_Q", DurchflussSoll)
|
|
Call rs.setValue(FeldnamePrefix & "Ist_Q", DurchflussIst)
|
|
Call rs.setValue(FeldnamePrefix & "Ist_V", BehaelterVolumen * 1000) ' Litern
|
|
'Call rs.setValue(FeldnamePrefix & "Waage", BehaelterNr)
|
|
'Call rs.setValue(FeldnamePrefix & "Gewicht", Gewicht)
|
|
'Call rs.setValue(FeldnamePrefix & "WasserTemp", Temperatur)
|
|
|
|
Call rs.setValue(FeldnamePrefix & "Zeit", Pruefpunkt_Zeit)
|
|
|
|
Call rs.setValue(FeldnamePrefix & "Fehler", Fehler)
|
|
Call rs.setValue(FeldnamePrefix & "Ref_V", MIDVolumen * 1000) ' in Litern
|
|
Call rs.setValue("MitarbeiterNr", g_App.Mitarbeiter.getNr)
|
|
'neu, 4.10.00, RH:
|
|
Call rs.setValue(FeldnamePrefix & "Impulse", Impulse)
|
|
|
|
' Werte für die Datenbank
|
|
' Debug.Print "PP" & CStr(PruefpunktNr) & "_Soll_Q: " & DurchflussSoll
|
|
' Debug.Print "PP" & CStr(PruefpunktNr) & "_Ist_Q: " & DurchflussIst
|
|
' Debug.Print "PP" & CStr(PruefpunktNr) & "_Waage:" & BehaelterNr
|
|
' Debug.Print "PP" & CStr(PruefpunktNr) & "_Ist_V:" & BehaelterVolumen
|
|
' Debug.Print "PP" & CStr(PruefpunktNr) & "_Gewicht: " & Gewicht
|
|
' Debug.Print "PP" & CStr(PruefpunktNr) & "_WasserTemp: " & Temperatur
|
|
' Debug.Print "PP" & CStr(PruefpunktNr) & "_Zeit: " & Pruefpunkt_Zeit
|
|
' Debug.Print "PP" & CStr(PruefpunktNr) & "_Fehler: " & Fehler
|
|
' Debug.Print "MitarbeiterNr: " & g_App.Mitarbeiter.getNr
|
|
|
|
Call rs.update
|
|
FehlerSpeichernOhneWaage = True
|
|
Exit Function
|
|
FehlerSpeichernError:
|
|
MsgBox ("FehlerSpeichern fehlgeschlagen: " & Err.Description)
|
|
End Function
|
|
|
|
Private Sub txtDauer_Validate(Cancel As Boolean)
|
|
If Not IsNumeric(txtDauer.text) Then
|
|
chkDauer.value = 0
|
|
txtDauer.text = "1"
|
|
txtDauer.Enabled = False
|
|
m_DauerpruefungAnzahl = 1
|
|
End If
|
|
End Sub
|
|
|
|
|
|
Public Function GetFuellstandInRuhe(BehaelterNr As Integer) As Double
|
|
Dim lngWarteZeit As Long
|
|
Dim i As Integer
|
|
|
|
Dim Fuellstand As Double
|
|
Dim dblSumme As Double
|
|
Dim lngMittelwertZeit As Long
|
|
|
|
Dim dblFuellstand As Double
|
|
|
|
lngWarteZeit = g_App.Settings.GetFuellstandWartezeit(BehaelterNr)
|
|
|
|
PrintStatus "Wartezeit für Füllstand Ruhe " & lngWarteZeit & " s..."
|
|
For i = 1 To lngWarteZeit
|
|
lblGewicht.caption = Format(m_SPS.GetFuellstand(BehaelterNr), "0.0")
|
|
Sleep 1000, True
|
|
lblZeit.caption = lngWarteZeit - i
|
|
Debug.Print "warte noch " & lngWarteZeit - i & " s"
|
|
Next
|
|
|
|
|
|
lngMittelwertZeit = g_App.Settings.GetFuellstandMittelwert(BehaelterNr)
|
|
If lngMittelwertZeit > 1 Then
|
|
' Mittelwert bilden
|
|
dblSumme = 0
|
|
PrintStatus "Mittelwertbildung über " & lngMittelwertZeit & " s ..."
|
|
lblZeit.caption = lngMittelwertZeit
|
|
For i = 1 To lngMittelwertZeit
|
|
dblFuellstand = m_SPS.GetFuellstand(BehaelterNr)
|
|
dblSumme = dblSumme + dblFuellstand
|
|
lblGewicht.caption = Format(dblSumme / i, "0.0")
|
|
Sleep 1000, True
|
|
lblZeit.caption = lngMittelwertZeit - i
|
|
PrintStatus i & ". Summant für die Mittelwertbildung: " & dblFuellstand
|
|
Next
|
|
GetFuellstandInRuhe = dblSumme / lngMittelwertZeit
|
|
Else
|
|
GetFuellstandInRuhe = m_SPS.GetFuellstand(BehaelterNr)
|
|
lblGewicht.caption = Format(GetFuellstandInRuhe, "0.0")
|
|
End If
|
|
|
|
PrintStatus "gemessener Füllstand: " & GetFuellstandInRuhe & " Liter"
|
|
lblGewicht.caption = Format(GetFuellstandInRuhe, "0.0")
|
|
End Function
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Private Function GetHexZahlFromFM85(EinbauplatzNr As Integer, strSende As String) As Long
|
|
Dim strAntwortAdressierung As String
|
|
Dim strAntwort As String
|
|
Dim Versuche As Long
|
|
|
|
On Error GoTo Errorhandler
|
|
|
|
Versuche = 0
|
|
startagain1:
|
|
If EinbauplatzNr > 0 Then
|
|
' FM85P mit entspr. Adresse ansprechen
|
|
m_FMBus.send "**" & EinbauplatzNr & "@"
|
|
strAntwortAdressierung = m_FMBus.receive(700)
|
|
If InStr(1, strAntwortAdressierung, EinbauplatzNr) = 0 Then
|
|
PrintStatus "FM85P-" & EinbauplatzNr & " antwortete bei Adressierung '" & strAntwortAdressierung & "'"
|
|
If Versuche < 10 Then
|
|
Versuche = Versuche + 1
|
|
GoTo startagain1
|
|
End If
|
|
LogIntoDB "FM85P-" & EinbauplatzNr & " antwortete mit '" & strAntwort & "'", "FM85 RZ Prüf"
|
|
End If
|
|
End If
|
|
Versuche = 0
|
|
|
|
startagain2:
|
|
m_FMBus.send strSende
|
|
strAntwort = m_FMBus.receive(700)
|
|
|
|
If IsNumeric("&H" & strAntwort) Then
|
|
GetHexZahlFromFM85 = CLng("&H" & strAntwort)
|
|
'PrintStatus "Anwort vom FM85: " & strAntwort & " = " & GetHexZahlFromFM85
|
|
Else
|
|
PrintStatus "FM85P-" & EinbauplatzNr & " antwortete mit '" & strAntwort & "'"
|
|
If InStr(1, strAntwort, "MESSERGEBNIS LIEGT NICHT VOR") > 0 Then
|
|
GetHexZahlFromFM85 = -1
|
|
Exit Function
|
|
End If
|
|
|
|
If Versuche < 10 Then
|
|
Versuche = Versuche + 1
|
|
GoTo startagain2
|
|
End If
|
|
LogIntoDB "FM85P-" & EinbauplatzNr & " antwortete mit '" & strAntwort & "'", "FM85 RZ Prf"
|
|
GetHexZahlFromFM85 = -1
|
|
End If
|
|
Exit Function
|
|
Errorhandler:
|
|
LogIntoDB "Fehler " & Err.Number & " in GetHexZahlFromFM85 (RZ Prf):" & Err.Description, "Prg Fehler!"
|
|
GetHexZahlFromFM85 = -1
|
|
End Function
|
|
|
|
' RH 3.5.11 4
|
|
Private Sub BehaelterFuellen(Behaelter As CBehaelter)
|
|
Dim Fuelldurchfluss As Double
|
|
Dim Pumpe As CPumpe
|
|
Dim Referenzzaehler As CRefzaehler
|
|
Dim Fuellvolumen As Double
|
|
Dim letztesGewicht As Double
|
|
Dim Gewicht As Double
|
|
|
|
m_Waage.Initialize Behaelter.m_Nr
|
|
If Behaelter.m_WaageAnwahl <> 0 Then
|
|
m_Waage.Anwahl (Behaelter.m_WaageAnwahl)
|
|
End If
|
|
|
|
|
|
m_Waage.TaraReset
|
|
m_Waage.SoftTaraReset
|
|
|
|
' Rohr füllen
|
|
Fuelldurchfluss = Behaelter.m_Fuelldurchfluss
|
|
Fuellvolumen = Behaelter.m_Fuellvolumen
|
|
If Fuellvolumen = 0 Then
|
|
Fuellvolumen = Behaelter.m_OVolumen * 0.1
|
|
PrintStatus "Füllvolumen auf 10% gesetzt. Bitte Fuellvolumen in ini Datei pflegen!"
|
|
End If
|
|
If Fuelldurchfluss = 0 Then
|
|
PrintStatus "Fülldurchfluss ist 0. Bitte Fuelldurchfluss in ini Datei (Waage" & Behaelter.m_Nr & " pflegen!"
|
|
End If
|
|
' Setze MID und MIDGruppe
|
|
Set Referenzzaehler = New CRefzaehler
|
|
Call Referenzzaehler.loadForDurchfluss(Fuelldurchfluss, g_App.Settings.getMIDGruppe)
|
|
|
|
m_SPS.SetMID Referenzzaehler.EinbauplatzNr
|
|
m_SPS.SetQDiff 0
|
|
|
|
|
|
|
|
m_SPS.AllePumpenAbwaehlen
|
|
Sleep 1000
|
|
Set Pumpe = Pumpenwahl(Fuelldurchfluss, m_ColPumpen)
|
|
Pumpe.Anwahl
|
|
|
|
If g_App.PruefstationNr = 2010 Then
|
|
m_Waage.Tara
|
|
End If
|
|
'----------------------------------------------------------
|
|
' Füllen bis 10% des Behältervolumens
|
|
PrintStatus "Rohr füllen mit Fülldurchfluß " & Fuelldurchfluss & " auf Füllvolumen " & Fuellvolumen & " l in " & Behaelter.m_OVolumen & " l Behälter"
|
|
m_Waage.SetNettoGrenzwert1 Fuellvolumen, Behaelter.m_Genauigkeit
|
|
|
|
If g_App.PruefstationNr = 2010 Then
|
|
m_SPS.WassserAblassen 15
|
|
Sleep 500
|
|
m_SPS.WassserAblassen 0
|
|
End If
|
|
|
|
m_SPS.SetRegelart Pumpe.GetRegelart '!!!!
|
|
m_SPS.SetServoStellung lookupFUServoStellwert(Fuelldurchfluss, Pumpe.GetRegelart)
|
|
m_SPS.SetQSoll Fuelldurchfluss
|
|
|
|
m_SPS.setBetrieb 0
|
|
Sleep 500, True
|
|
m_SPS.setBetrieb 2
|
|
|
|
Do
|
|
Sleep 1000, True
|
|
Gewicht = m_Waage.GetGewicht
|
|
lblQIst = Format(m_SPS.getQIst, "0.0")
|
|
lblGewicht = Gewicht
|
|
If Gewicht = -9999 Then
|
|
DebugMsg ("Fehler: Gewicht konnte nicht gelesen werden")
|
|
Sleep 200, True
|
|
Exit Sub
|
|
End If
|
|
If g_Abbruch = True Then
|
|
Exit Sub
|
|
End If
|
|
Loop While Gewicht < Fuellvolumen Or Not m_SPS.GrenzwertWaageErreicht
|
|
|
|
|
|
m_SPS.setBetrieb 0
|
|
PrintStatus "Füllvolumen erreicht."
|
|
lblQIst = ""
|
|
'-----------------------------------------
|
|
End Sub
|
|
|
|
|
|
Private Sub RZPruefgangSpeichern(Timestamp As Date, Optional DatumEnde As Variant, Optional PrueferStart As Variant, Optional PrueferEnde As Variant, Optional strBemerkung As Variant, Optional Stopdatum As Variant)
|
|
On Error GoTo Errorhandler
|
|
|
|
Dim strSQL
|
|
Dim rs As CRecordset
|
|
Dim strDatumSQL As String
|
|
|
|
strDatumSQL = FormatDateForSQL(Timestamp, g_App.getDB.getConnection)
|
|
|
|
strSQL = "SELECT * from ReferenzzaehlerPruefgang where StartDatum = " & strDatumSQL & " and Pruefstation = " & g_App.PruefstationNr
|
|
Set rs = New CRecordset
|
|
|
|
rs.openRS strSQL, False
|
|
If rs.EOF Then
|
|
rs.addNew
|
|
rs.setValue "StartDatum", Timestamp
|
|
rs.setValue "Pruefstation", g_App.PruefstationNr
|
|
End If
|
|
|
|
If Not IsMissing(DatumEnde) Then
|
|
rs.setValue "EndeDatum", CDate(DatumEnde)
|
|
End If
|
|
|
|
If Not IsMissing(PrueferStart) Then
|
|
rs.setValue "PrueferStart", CInt(PrueferStart)
|
|
End If
|
|
|
|
If Not IsMissing(PrueferEnde) Then
|
|
rs.setValue "PrueferEnde", CInt(PrueferEnde)
|
|
End If
|
|
|
|
If Not IsMissing(Stopdatum) Then
|
|
rs.setValue "Stopdatum", CDate(Stopdatum)
|
|
End If
|
|
|
|
If Not IsMissing(strBemerkung) Then
|
|
If Not rs.isFieldNull("Bemerkung") Then
|
|
If Trim(rs.getStringValue("Bemerkung")) <> "" Then
|
|
strBemerkung = rs.getStringValue("Bemerkung") & "," & strBemerkung
|
|
Else
|
|
strBemerkung = strBemerkung
|
|
End If
|
|
End If
|
|
rs.setValue "Bemerkung", Left(CStr(strBemerkung), 250)
|
|
End If
|
|
rs.update
|
|
Exit Sub
|
|
Errorhandler:
|
|
LogIntoDB "Fehler " & Err.Number & " in RZPruefgangSpeichern:" & Err.Description, "RZPruefung"
|
|
End Sub
|
|
|
|
|
|
Private Function GetGrundFuerRZ() As String
|
|
Dim strSchicht As String
|
|
Dim strStart As String
|
|
Dim strEnde As String
|
|
|
|
strSchicht = g_App.Settings.getRZPruefzeitraum()
|
|
|
|
If UBound(Split(strSchicht, "-")) = 1 Then
|
|
strStart = Split(strSchicht, "-")(0)
|
|
strEnde = Split(strSchicht, "-")(1)
|
|
If time() * 1 >= CDate(strStart) * 1 Or time() * 1 <= CDate(strEnde) * 1 Then
|
|
' innerhalb des RZ-Prüfzeitraums, z.B. nach 21:30 abends oder vor 6:00 morgens
|
|
GetGrundFuerRZ = ""
|
|
Else
|
|
' ausserhalb des RZ-Prüfzeitraums
|
|
Do While Trim(GetGrundFuerRZ) = ""
|
|
GetGrundFuerRZ = InputBox("Die RZ Prüfung liegt außerhalb der dafür vorgesehenen Zeit (" & strStart & "-" & strEnde & " Uhr) . Bitte geben Sie den Grund der RZ Prüfung für statistisch Zwecke an.")
|
|
|
|
|
|
Loop
|
|
End If
|
|
Else
|
|
LogIntoDB "Ini Wert '" & strSchicht & "' für RZPruefzeitraum ist nicht auswertbar.", "INI Werte"
|
|
End If
|
|
End Function
|
|
|
|
|
|
Private Function RZFehlerWeichtAb(dblFehlerAktuell As Double, varFehlerVorher As Variant) As Boolean
|
|
If IsEmpty(varFehlerVorher) Then
|
|
RZFehlerWeichtAb = False
|
|
Else
|
|
varFehlerVorher = CDbl(varFehlerVorher)
|
|
End If
|
|
|
|
If Abs(dblFehlerAktuell - varFehlerVorher) > g_App.Settings.get_RZ_Wiederholgenauigkeit() Then
|
|
RZFehlerWeichtAb = True
|
|
Else
|
|
RZFehlerWeichtAb = False
|
|
End If
|
|
End Function
|
|
|
|
'Public Sub RZPruefungvorzeitigAbbrechenWegenAbweichung(intNW As Integer, strStrang As String, dblFehler As Double, dbLetzterFehler As Double, dblDurchfluss As Double, strInfo As String, datTimestamp As Date, ReferenzzaehlerA As CRefzaehler, ReferenzzaehlerB As CRefzaehler)
|
|
' Dim strMeldung As String
|
|
' Dim strTextMail As String
|
|
' Dim objSQL As CSQL
|
|
' Dim rs As CRecordset
|
|
' Dim strSQL As String
|
|
' Dim strFehler As String
|
|
' Dim i As Integer
|
|
'
|
|
' Set objSQL = New CSQL
|
|
' Set rs = New CRecordset
|
|
'
|
|
' Call Abbruch
|
|
'
|
|
' If Not ReferenzzaehlerA Is Nothing And Not ReferenzzaehlerB Is Nothing Then
|
|
'
|
|
'
|
|
' ' RZFehler lesen und löschen
|
|
' strSQL = "SELECT * FROM Referenzzaehlerfehler where Datum = " & FormatDateForSQL(datTimestamp, g_App.getDB.getConnection) & " and (SerienNr = " & ReferenzzaehlerA.SerienNr & " or SerienNr = " & ReferenzzaehlerB.SerienNr & ")"
|
|
' Debug.Print strSQL
|
|
'
|
|
' rs.openRS strSQL
|
|
' strFehler = ""
|
|
' Do While Not rs.EOF
|
|
' For i = 1 To 10
|
|
' If rs.isFieldNull("PP" & i & "_Soll_Q") Then
|
|
' Exit For
|
|
' End If
|
|
' strFehler = strFehler & "SNr=" & rs.getLongValue("SerienNr") & ": Q=" & Round(rs.getDoubleValue("PP" & i & "_Soll_Q"), 3) & ", F=" & Round(rs.getDoubleValue("PP" & i & "_Fehler"), 3) & vbCrLf
|
|
' Next
|
|
' rs.delete
|
|
' rs.MoveNext
|
|
' Loop
|
|
' End If
|
|
'
|
|
' strMeldung = "Die Referenzzählerprüfung wurde automatisch abgebrochen an der Prüfstation " & g_App.PruefstationNr & "." & vbCrLf
|
|
' strMeldung = strMeldung & "Es wurde wiederholt ein RZ-Fehler ermittelt," & vbCrLf
|
|
' strMeldung = strMeldung & "dessen Wert die Abweichungstoleranz " & g_App.Settings.get_RZ_Wiederholgenauigkeit() & "%" & "überschritten hat." & vbCrLf
|
|
'
|
|
' strMeldung = strMeldung & "Strang: " & strStrang & vbCrLf
|
|
' strMeldung = strMeldung & "Nennweite: " & intNW & " mm " & vbCrLf
|
|
' strMeldung = strMeldung & "Durchfluss: " & Round(dblDurchfluss, 4) & vbCrLf
|
|
' strMeldung = strMeldung & "Fehler " & Round(dblFehler, 3) & vbCrLf
|
|
' strMeldung = strMeldung & "letzter Fehler: " & Round(dbLetzterFehler, 3) & vbCrLf
|
|
' strMeldung = strMeldung & strInfo & vbCrLf
|
|
' strMeldung = strMeldung & "Folgende RZ-Fehler wurden wieder gelöscht:" & vbCrLf
|
|
' strMeldung = strMeldung & strFehler & vbCrLf
|
|
' strMeldung = strMeldung & "Bis zur Klärung des Sachverhalts ist die Prüfstation nur bedingt einsatzbereit:" & vbCrLf
|
|
' strMeldung = strMeldung & "Es können nur Zähler, deren Prüfpunkte nicht im Bereich des Referenzzählers liegen, geprüft werden." & vbCrLf
|
|
' strMeldung = strMeldung & "Bitte informieren Sie die Prüfstellenleitung!" & vbCrLf
|
|
'
|
|
' PrintStatus strMeldung
|
|
'
|
|
' Printer.Print strMeldung
|
|
' Printer.EndDoc
|
|
'
|
|
' strTextMail = "Die Referenzzaehlerprüfung an Prüfstation " & g_App.PruefstationNr & " wurde automatisch abgebrochen." & vbCrLf
|
|
' strTextMail = strTextMail & "Die Abweichungstoleranz " & g_App.Settings.get_RZ_Wiederholgenauigkeit & " wurde überschritten." & vbCrLf
|
|
' strTextMail = strTextMail & "Strang: " & strStrang & vbCrLf
|
|
' strTextMail = strTextMail & "Nennweite: " & intNW & " mm " & vbCrLf
|
|
' strTextMail = strTextMail & "Durchfluss: " & Round(dblDurchfluss, 4) & vbCrLf
|
|
' strTextMail = strTextMail & "Fehler " & Round(dblFehler, 3) & vbCrLf
|
|
' strTextMail = strTextMail & "letzter Fehler: " & Round(dbLetzterFehler, 3) & vbCrLf
|
|
' strTextMail = strTextMail & strInfo & vbCrLf
|
|
' strTextMail = strTextMail & "Folgende RZ-Fehler wurden wieder gelöscht:" & vbCrLf
|
|
' strTextMail = strTextMail & strFehler & vbCrLf
|
|
' strTextMail = strTextMail & vbCrLf
|
|
' strTextMail = strTextMail & "Bis zur Klärung des Sachverhalts ist die Prüfstation nur bedingt einsatzbereit:" & vbCrLf
|
|
' strTextMail = strTextMail & "Es können nur Zähler, deren Prüfpunkte nicht im Bereich des Referenzzählers liegen, geprüft werden." & vbCrLf
|
|
'
|
|
' SendMail "reinhard.henning@sensus.com", "reinhard.henning@sensus.com;Arno.Schramm@sensus.com;Juergen.Dreyer@sensus.com", "RefZ. Wiederholgenauigkeit ueberschritten an der Prüfstation " & g_App.PruefstationNr, strTextMail
|
|
'
|
|
'
|
|
' MsgBox strMeldung
|
|
' m_strGrund = m_strGrund & ", Wiederholgenauigkeit überschritten"
|
|
' Exit Sub
|
|
'Errorhandler:
|
|
' LogIntoDB "Fehler " & Err.Number & " in RZPruefungvorzeitigAbbrechenWegenAbweichung:" & Err.Description, "Softwaretest"
|
|
' MsgBox "Fehler " & Err.Number & " in RZPruefungvorzeitigAbbrechenWegenAbweichung:" & Err.Description
|
|
'End Sub
|
|
|
|
Private Sub ZeigeAbweichungstext(ByVal wdh As Integer, ByVal FehlerNeu As Double, ByVal FehlerAlt As Double, ByVal Durchfluss As Double, ByRef Referenzzaehler As CRefzaehler, ByVal Timestamp As Date)
|
|
Dim intNW As Integer
|
|
Dim strStrang As String
|
|
|
|
intNW = Referenzzaehler.Nennweite
|
|
strStrang = Referenzzaehler.MidGruppe
|
|
|
|
|
|
|
|
PrintStatus "Abweichung in der " & wdh & ". Wiederholung bei Prüfpunkt mit Q=" & Durchfluss & ", Referenzzähler bei NW " & intNW & ", Strang " & strStrang
|
|
|
|
' If Not m_objFrmRZFehlerAbweichung Is Nothing Then
|
|
' m_objFrmRZFehlerAbweichung.AddText "Abweichung in der " & wdh & ". Wiederholung bei Prüfpunkt mit Q=" & Durchfluss & ", Referenzzähler bei NW " & intNW & ", Strang " & strStrang
|
|
' End If
|
|
End Sub
|
|
|
|
|
|
Private Sub SaveWiederholungen(SerienNr As Long, Timestamp As Date, Wiederholungen As Integer, Fehler As Double, QSoll As Double)
|
|
On Error GoTo Errorhandler
|
|
Dim strSQL As String
|
|
Dim rs As CRecordset
|
|
|
|
strSQL = "SELECT * from ReferenzzaehlerFehlerWdh where 1=0"
|
|
|
|
Set rs = New CRecordset
|
|
rs.openRS strSQL, False
|
|
rs.addNew
|
|
|
|
Call rs.setValue("SerienNr", SerienNr)
|
|
Call rs.setValue("Datum", Timestamp)
|
|
Call rs.setValue("QSoll", QSoll)
|
|
Call rs.setValue("Wdh", Wiederholungen)
|
|
Call rs.setValue("Fehler", Fehler)
|
|
rs.update
|
|
|
|
Exit Sub
|
|
Errorhandler:
|
|
LogIntoDB "Fehler " & Err.Number & " in SaveWiederholungen: " & Err.Description, "unerwartet"
|
|
End Sub
|
|
|
|
|
|
Private Sub ZeigeSimulation(StatusPruefpunktWdh As STATUS_WDH_RZ_PRUEFPUNKT, strPretext As String)
|
|
Dim strText As String
|
|
Select Case StatusPruefpunktWdh
|
|
Case STATUS_WDH_RZ_PRUEFPUNKT.ABWEICHUNG_BEI_ERSTER_PRUEFUNG
|
|
strText = "ABWEICHUNG_BEI_ERSTER_PRUEFUNG"
|
|
Case STATUS_WDH_RZ_PRUEFPUNKT.ABWEICHUNG_BEI_ERSTER_WIEDERHOLUNG
|
|
strText = "ABWEICHUNG_BEI_ERSTER_WIEDERHOLUNG"
|
|
Case STATUS_WDH_RZ_PRUEFPUNKT.ABWEICHUNG_BEI_ZWEITER_WIEDERHOLUNG
|
|
strText = "ABWEICHUNG_BEI_ZWEITER_WIEDERHOLUNG"
|
|
Case STATUS_WDH_RZ_PRUEFPUNKT.INNERHALB_FEHLERGRENZEN_BEI_ERSTER_PRUEFUNG
|
|
strText = "INNERHALB_FEHLERGRENZEN_BEI_ERSTER_PRUEFUNG"
|
|
Case STATUS_WDH_RZ_PRUEFPUNKT.INNERHALB_FEHLERGRENZEN_BEI_ERSTER_WIEDERHOLUNG
|
|
strText = "INNERHALB_FEHLERGRENZEN_BEI_ERSTER_WIEDERHOLUNG"
|
|
Case STATUS_WDH_RZ_PRUEFPUNKT.INNERHALB_FEHLERGRENZEN_BEI_ZWEITER_WIEDERHOLUNG
|
|
strText = "INNERHALB_FEHLERGRENZEN_BEI_ZWEITER_WIEDERHOLUNG"
|
|
Case STATUS_WDH_RZ_PRUEFPUNKT.NOCH_NICHT_GEPRUEFT
|
|
strText = "NOCH_NICHT_GEPRUEFT"
|
|
End Select
|
|
MsgBox strPretext & " Status=" & strText
|
|
End Sub
|