if anweisung erstellen

bacher

Member
Beiträge
11
Punkte Reaktionen
0
Zuviel Werbung?
->Hier kostenlos registrieren
ich versuche über ein vba skript den wert einer variable abhängig von der zeit zu ermitteln. Folgendes script soll das ergebnis liefern.

Dim timesekunde,eafeld38,eafeld39,eafeld40,wirkarbeitkumkW
timesekunde = HMIRuntime.Tags("timesekunde").Read
If timesekunde = 0 Then
eafeld38 = HMIRuntime.Tags("wirkarbeitkumkW").Read
HMIRuntime.Tags("eafeld38").write wirkarbeitkumkW*1000
End If

If timesekunde = 59 Then
eafeld39 = HMIRuntime.Tags("wirkarbeitkumkW").Read
HMIRuntime.Tags("eafeld39").write wirkarbeitkumkW*1000
HMIRuntime.Tags("eafeld40").write (eafeld39-eafeld38)
End If

Der code funktioniert leider nicht! Kann mir jemand damit weiterhelfen?
Wo findet man eine syntax auflistung für vbs in winncc, bzw. wie kann man im skripteditor die aktuellen variableninhalte beobachten?
danke bacher
PS. WinCC V7.0SP1HF4
 

ducati

Well-known member
Beiträge
6.018
Punkte Reaktionen
1.167
OP
B

bacher

Member
Beiträge
11
Punkte Reaktionen
0
Anbei das vollständige script, funktioniert leider noch immer nicht. Ich hab probleme mit der subtraktion!

deltaarbeit0.write (a20-a10)
HMIRuntime.Tags("deltaarbeit").write deltaarbeit0

Vielleicht kann jemand helfen, danke bacher!!
PS.: Triggerung über standardtrigger alle 500ms

Option Explicit
Function action

Dim a20,a2,a10,a1,deltaarbeit,deltaarbeit0,wirkarbeitkumkW,wirkarbeitkumkW0,timesekunde,timestunde,timeminuten,arbeitT1,arbeitT2,tagesarbeit

timesekunde = HMIRuntime.Tags("timesekunde").Read
timeminuten = HMIRuntime.Tags("timeminuten").Read
timestunde = HMIRuntime.Tags("timestunde").Read

If (timesekunde=0) Then
a10 = HMIRuntime.Tags("wirkarbeitkumkW").Read
HMIRuntime.Tags("a1").write a10*1000 'umrechnung von kW in W

Elseif (timesekunde=59) Then

a20 = HMIRuntime.Tags("wirkarbeitkumkW").Read
HMIRuntime.Tags("a2").write a20*1000
deltaarbeit0.write (a20-a10)
HMIRuntime.Tags("deltaarbeit").write deltaarbeit0

End If



If ((timestunde=0) And (timeminuten=0) And (timesekunde=0)) Then
arbeitT1 = HMIRuntime.Tags("wirkarbeitkumkW").Read
HMIRuntime.Tags("arbeitT1").write arbeitT1

Elseif ((timestunde=24) And (timeminuten=0) And (timesekunde=0)) Then
arbeitT2 = HMIRuntime.Tags("wirkarbeitkumkW").Read
HMIRuntime.Tags("arbeitT2").write arbeitT2
tagesarbeit=(arbeitT2-arbeitT1)
HMIRuntime.Tags("tagesarbeit").write tagesarbeit
End If

End Function

Fehlermeldung: fehlermeldung.jpg
 
OP
B

bacher

Member
Beiträge
11
Punkte Reaktionen
0
Zuviel Werbung?
->Hier kostenlos registrieren
Ich möchte die differenz aus den zwei variablen a20 und a10 (entspricht der arbeit zum zeitpunkt sekunde=0 und der arbeit zum zeitpunkt sekunde=59) ermitteln und anschließend auf die variable deltaarbeit schreiben
HMIRuntime.Tags("deltaarbeit").write deltaarbeit0
 

ducati

Well-known member
Beiträge
6.018
Punkte Reaktionen
1.167
Steuerst Du Dein Eigenheim mit PCS7?

Ist Doch mit Atombomben auf Spatzen ballern, bei dem Preis, aber naja.

was soll delataarbeit0.write machen?

ist doch ne lokale Variable im Script, also deltaarbeit0=a20-a10

oder hab ich was nicht kapiert?

Ansonsten nehm ich auch lieber C, kann mich mit dem VBS auch nur schwer anfreunden...

gruß.
 

ducati

Well-known member
Beiträge
6.018
Punkte Reaktionen
1.167
Zuviel Werbung?
->Hier kostenlos registrieren
Mehr oder weniger Offtopic:
SPS=steuert, rechnet, regelt
PC=Knopf drücken, Trends und Bilder anschauen

Jo, ich kanns auch nicht leiden, immer mehr Sachen, welche eigentlich in die SPS gehören, auf den PC auszulagern, mit den ersichtlichen und bekannten Problemen...

also mal übersetzt für den TE: schon mal drüber nachgedacht, die Berechnung in der SPS zu machen?

Gruß.
 
Oben