Zuviel Werbung? - > Hier kostenlos beim SPS-Forum registrieren

Ergebnis 1 bis 9 von 9

Thema: Function erstellen und im Dynamikdialog von WinCC verwenden

  1. #1
    Registriert seit
    27.08.2004
    Ort
    Bei Bremen
    Beiträge
    648
    Danke
    11
    Erhielt 12 Danke für 10 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Hallo,
    ich habe ein kleines Problem, wo man mich mal auf die richtige Fährte schubsen muss....

    Ich möchte einfach ein Element blinken lassen. Soweit kein Thema.

    Nun zum Problem. Das Ding soll Blinken, wenn etliche Bedingungen erfüllt sind. Nun war meine Idee eine VBS-Funktion mit Parameterübergabe zu schreiben und diese im Dynamikdialog zu fütterrn. Die Funktion zu schreiben war auch nicht schlimm.

    Klappt nicht, weil ich es nicht geschaft habe, WinCC meine Funktion so zu verkaufen, dass ich diese auswählen kann.

    Da ich diese n-mal brauche darf die Function keine Objekte direkt ansprechen.

    Wie löst Ihr das Problem

    Danke für Euer Tipps...
    Gruß
    Heinz
    Zitieren Zitieren Function erstellen und im Dynamikdialog von WinCC verwenden  

  2. #2
    Registriert seit
    03.02.2004
    Beiträge
    117
    Danke
    0
    Erhielt 0 Danke für 0 Beiträge

    Standard

    Erläutere doch mal bitte die gewünschte Funktion.

  3. #3
    Registriert seit
    13.05.2005
    Beiträge
    31
    Danke
    1
    Erhielt 1 Danke für 1 Beitrag

    Standard

    Haben die Bedingungen immer das gleiche Ende z.b.
    xxxxxx.Bed1
    xxxxxx.Bed2
    ...

    yyyyyy.Bed1
    yyyyyy.Bed2
    ...

    Dann könntest du das sozusagen als Prefix an die Funktion übergeben und mittels Stringfunktionen zusammenschustern.

    Kenne mich allerdings nicht mit VBS aus.
    Mache sowas in C.
    Ähnlich habe ich Faceplatefunktionen geschrieben die immer vom Objektnamen abhängen von dem aus sie aufgerufen werden.

  4. #4
    Heinz ist offline Erfahrener Benutzer
    Themenstarter
    Registriert seit
    27.08.2004
    Ort
    Bei Bremen
    Beiträge
    648
    Danke
    11
    Erhielt 12 Danke für 10 Beiträge

    Standard

    Hallo,
    also die Funktion ist etwas komplizierter.

    Ich habe zwei Fälle:
    Einmal soll eine Fläche Blinken, wenn
    Variable a = 16 und ( B= 1 oder C =1)

    Das zweite Mal soll eine Berechnung in Abhängigkeit von einem Parameter durchgeführt werden:
    z.B.:
    Wenn a = 1 => Ergebnis = b+c
    Wenn a = 2 => Ergebnis = b*c
    Wenn a = 3 => Ergebnis = b-c

    Die Rechnung dient nur als Beispiel, sie in etwas komplizierter.

    Nun möchte ich meine komplizierte Funktion im Grafikeditor aufrufen.
    Zum Beispiel bein Blimken:
    Ich beführte, dass sich die Funktion auch noch ändern wird. Daher war u.a. mein Ansatz zu sagen ich verwende ein Script. Wenn sich die Funktion ändert, muss ich nur eine Stelle ändern und das wars.
    Gruß
    Heinz

  5. #5
    Registriert seit
    13.05.2005
    Beiträge
    31
    Danke
    1
    Erhielt 1 Danke für 1 Beitrag

    Standard

    Was die Funnktion macht ist eigentlich nicht so wichtig.
    Die Tags die abgefragt werden sollen sind der Knackpunkt.
    Sollte das Skript vollkommen verschiedene Tags abfragen wirst du nicht drum rum kommen die von Hand zu ändern.
    Sollten sie eine ähnliche Struktur haben kannst du dir das Leben leichter machen.
    Wenn z.B. die Tags so aussehen
    Area1.Tank1.ValveIn.value
    Area1.Tank1.ValveOut.value
    ...
    Area2.Tank1.ValveIn.value
    Area2.Tank1.ValveOut.value
    ...
    Dann kannst du im Skript einen String anlegen mit "ValveIn.value"... und der fehlende Teil wird durch einen Parameter übergeben.

    Habe ich das soweit richtig verstanden? (bezieht sich bei mir immer auf C Skripte)

  6. #6
    Registriert seit
    08.05.2004
    Beiträge
    121
    Danke
    0
    Erhielt 3 Danke für 2 Beiträge

    Standard

    Erstelle im Global Script Editor für VB eine neues Projektmodul. Lösche die zwei Zeilen Code die automatsch eingeblendet werden.

    Füge das ein :
    Code:
    Function Rechne ( Byval a, Byval b, Byval c )
    
    Dim x ' Dummy
    
    Select Case a
    	Case 1	' a ist gleich 1
    		x = b + c
    		
    	Case 2	' a ist gleich 2
    		x = b * c
    		
    	Case 3	' a ist gleich 3
    		x = b - c
    		
    	Case Else
    		x = 0 ' x erhält den Wert 0 wenn nichts zutrifft
    
    End Select
    
    Rechne = x	' berechneten Wert zurückschreiben
    
    End Function
    
    Function abfrage ( Byval a, Byval b, Byval c )
    
    If a = 16 And ( b = 1 Or c = 1 ) Then
    		abfrage = 1
    			Else
    				abfrage = 0
    End If
    
    End Function
    speichern und schliessen.
    Jetzt stehen dir zwei Projektfunktionen in deinen Bildern zur verfügung.
    Die erste heist rechne, und die zweite heist abfrage.

    Rechen kannst du nun so ( beispielhaft an einen Button gehängt ) :

    Code:
    Sub OnClick(ByVal Item)  
    
    ' Tags holen
    
    Dim ergebniss, wert, wertb, wertc, x, a, b, c
    
    Set ergebniss = HMIRuntime.Tags("ergebniss")
    Set wert = HMIRuntime.Tags("wert")
    Set wertb = HMIRuntime.Tags("wertb")
    Set wertc = HMIRuntime.Tags("wertc")
    
    ' rechnen
    
    x = Rechne ( wert.Read , wertb.read , wertc.Read )
    
    ' ergebniss in Tag schreiben
    
    ergebniss.Write x
    
    ' referenzen löschen
    
    Set ergebniss = Nothing
    Set wert = Nothing
    Set wertb = Nothing
    Set wertc = Nothing
    
    End Sub
    und etwas blinken lassen so ( beispielhaft an einen Button gehängt ) :

    Code:
    Sub OnClick(ByVal Item)     
    
    Dim wert, wertb, wertc, x
    
    ' Tags holen
    
    Set wert = HMIRuntime.Tags("wert")
    Set wertb = HMIRuntime.Tags("wertb")
    Set wertc = HMIRuntime.Tags("wertc")
    
    ' Grafikobejkt holen
    
    Set x = ScreenItems("Rechteck1")
    
    ' abfrage
    
    x.FlashBackColor = abfrage ( wert.Read , wertb.read , wertc.Read )
    
    ' referenzen löschen
    Set x = Nothing
    Set wert = Nothing
    Set wertb = Nothing
    Set wertc = Nothing
    
    End Sub
    Ich hoffe es ist verständlich

  7. #7
    Heinz ist offline Erfahrener Benutzer
    Themenstarter
    Registriert seit
    27.08.2004
    Ort
    Bei Bremen
    Beiträge
    648
    Danke
    11
    Erhielt 12 Danke für 10 Beiträge

    Standard

    @KaffeesaufenderKamin
    Bis dahin war ich auch

    Mein Problem ist nur noch, wie kann ich diese Function Abfrage direkt verwenden für alle Attritute, die eine Ja/nein Möglichkeit haben. Außerdem brauche ich diese Funktionen N - Mal und daher ist die Lösung mit dem Verweis auf das Grafikobjekt nicht so günstig.


    PS.: Am liebsten währe es, wenn es eine "Erweiterung" von WinCC wird, so ähnlich wie in Access, wo ich mir auch neue Funktionen schreiben kann, die im Formular-Editor zur Verfügung stehen.
    Gruß
    Heinz

  8. #8
    Registriert seit
    08.05.2004
    Beiträge
    121
    Danke
    0
    Erhielt 3 Danke für 2 Beiträge

    Standard

    Hallo Heinz,

    so hatte ich dich auch verstanden.

    Hab das jetzt mal in ein Projekt gepackt.
    So erkannt man die zusammenhänge besser.
    Angehängte Dateien Angehängte Dateien

  9. #9
    Heinz ist offline Erfahrener Benutzer
    Themenstarter
    Registriert seit
    27.08.2004
    Ort
    Bei Bremen
    Beiträge
    648
    Danke
    11
    Erhielt 12 Danke für 10 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    @KaffeesaufenderKamin
    danke für das Projekt.

    Ich habe es mir angeschaut das war soweit klar, einige andere Anregungen habe ich dadurch gewonnen.

    Vielen Dank für die Hilfe.

    Am Rande eine andere Sache.
    Bei der WinCC Sp3 Hotfix 2 wurde ein Problem mit den Scripten behoben, insbesondere der Aufruf von "eigenen" Scripten soll dort fehlerfrei laufen.

    PS. Sorry das ich erst jetzt antworte.
    Gruß
    Heinz

Ähnliche Themen

  1. Antworten: 7
    Letzter Beitrag: 24.11.2016, 18:25
  2. TreeView-Control in WinCC V6 verwenden
    Von Freiberger im Forum HMI
    Antworten: 1
    Letzter Beitrag: 17.11.2015, 12:16
  3. Symbolischen Namen für Function verwenden
    Von FrankTheTank im Forum Simatic
    Antworten: 3
    Letzter Beitrag: 09.09.2011, 12:23
  4. WinCC Function Trend Control
    Von tarzipan7 im Forum HMI
    Antworten: 0
    Letzter Beitrag: 14.05.2009, 08:34
  5. Function mit in VBScript mit WinCC flexible
    Von PeterGötz im Forum HMI
    Antworten: 3
    Letzter Beitrag: 02.04.2007, 21:59

Lesezeichen

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •