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

Seite 1 von 2 12 LetzteLetzte
Ergebnis 1 bis 10 von 19

Thema: WinCC flexible VBScript Parameter an Funktion übergeben

  1. #1
    Registriert seit
    04.11.2013
    Ort
    Salzburg
    Beiträge
    18
    Danke
    15
    Erhielt 3 Danke für 3 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Hallo zusammen

    Ich will in WinCCflexible ein paar Parameter an eine Funktion übergeben welche ich dann öfters aufrufe.

    In den Einstellungen des Skripts bleibt aber das "Hinzufügen", "Ändern", "Entfernen" von Parametern ausgegraut.

    Ich verwende eine flexible Runtime.

    Was mache ich falsch bzw. muss ich die Parameter irgendwie anders übergeben?
    Zitieren Zitieren WinCC flexible VBScript Parameter an Funktion übergeben  

  2. #2
    Registriert seit
    25.02.2010
    Beiträge
    618
    Danke
    35
    Erhielt 121 Danke für 110 Beiträge

    Standard

    Morgen
    Ein zusammenklicken von Einstellungen zur Parameterübergabe geht in Scripten nicht. Dies musst du schon selber programmeieren.
    z.B. "Funktion Meine_Funktion(ByVal Parameter1, ByRef Parameter2, ByVal Parameter3) Antwort"
    Ob ByVal oder ByRef definiert wird, hängt von der Deklaration der Variablen ab.
    Grüsse Holger
    Schöne Ostern

  3. Folgender Benutzer sagt Danke zu holgermaik für den nützlichen Beitrag:

    xperia (18.04.2014)

  4. #3
    Registriert seit
    29.03.2004
    Beiträge
    5.739
    Danke
    143
    Erhielt 1.686 Danke für 1.225 Beiträge

    Standard

    Die Schaltfläche "Hinzufügen" wird erst aktiv, wenn du einen Parameternamen eingegeben hast.

  5. Folgender Benutzer sagt Danke zu Thomas_v2.1 für den nützlichen Beitrag:

    xperia (18.04.2014)

  6. #4
    xperia ist offline Neuer Benutzer
    Themenstarter
    Registriert seit
    04.11.2013
    Ort
    Salzburg
    Beiträge
    18
    Danke
    15
    Erhielt 3 Danke für 3 Beiträge

    Standard

    Wie deklariere ich die Variablen in flex, im TIA portal ist das einfach weil ich hier meine Parameter nur anklicken und auswählen muss ob ByVal oder ByRef.

  7. #5
    Registriert seit
    22.06.2009
    Ort
    Sassnitz
    Beiträge
    11.191
    Danke
    923
    Erhielt 3.292 Danke für 2.661 Beiträge

    Standard

    WinCC flexible Information System > Arbeiten mit WinCC flexible > Systemfunktionen und Runtime Scripting > Erstellen von Skripten > ...
    oder schneller: Index > Skript > ... (projektieren, Parameterübergabe, ...)

    Zitat Zitat von WinCC flexible Information System - Neues Skript erstellen
    Wenn Sie im Skript Parameter benötigen, dann geben Sie im Eigenschaftsfenster den Parameternamen ein und klicken Sie auf "Hinzufügen".
    siehe auch Beitrag #3 von Thomas_v2.1
    Den Beitrag #2 von holgermaik kannst Du ignorieren, der hat nichts mit VBS unter WinCC flexible zu tun.

    Datentyp und Übergabeart ByVal/ByRef kann nicht festgelegt werden.

    Zitat Zitat von WinCC flexible Information System - Aufruf von Skripten und Systemfunktionen in Skripten
    Parameter werden beim Aufruf eines Skripts als "Call by Reference" übergeben.
    Harald
    Es ist immer wieder überraschend, wie etwas plötzlich funktioniert, sobald man alles richtig macht.

    FAQ: Linkliste SIMATIC-Kommunikation über Ethernet

  8. #6
    Registriert seit
    29.03.2004
    Beiträge
    5.739
    Danke
    143
    Erhielt 1.686 Danke für 1.225 Beiträge

    Standard

    Ich habs grad mal getestet. Es scheint so als ob die Parameter ByVal und nicht ByRef sind.

    Code:
    Sub TestByRefAendern( val1 )
    val1 = 100
    End Sub
    und Testfunktion die über eine Schaltfläche aufgerufen wird:
    Code:
    Dim inValue
    inValue = SmartTags("IntWertTest1")
    TestByRefAendern(inValue)
    SmartTags("IntWertTest2") = inValue
    Dann hat IntWertTest2 nach Aufruf immer den gleichen Wert wie IntWertTest1, und nicht 100.

    Edit:
    getestet auf der PC Runtime, WinCCflex 2008 SP2 Upd3.

  9. #7
    Registriert seit
    25.02.2010
    Beiträge
    618
    Danke
    35
    Erhielt 121 Danke für 110 Beiträge

    Standard

    Zitat Zitat von PN/DP Beitrag anzeigen
    Datentyp und Übergabeart ByVal/ByRef kann nicht festgelegt werden.
    Code:
    Meine_Funktion(var1,var2, "ref1", "ref2")
    Code:
    Sub Meine_Funktion(Zahl1,Zahl2, Name1, Name2)
    
      HMIRuntime.SmartTags(Name1) = ......
    
    End Sub
    var1 und var2 wird als ByVal übergeben.
    ref1 und ref2 wird als ByRef übergeben.
    Grüsse Holger

  10. Folgender Benutzer sagt Danke zu holgermaik für den nützlichen Beitrag:

    NeoNlAmp3 (21.08.2015)

  11. #8
    Registriert seit
    29.03.2004
    Beiträge
    5.739
    Danke
    143
    Erhielt 1.686 Danke für 1.225 Beiträge

    Standard

    Zitat Zitat von holgermaik Beitrag anzeigen
    Code:
    Meine_Funktion(var1,var2, "ref1", "ref2")
    Code:
    Sub Meine_Funktion(Zahl1,Zahl2, Name1, Name2)
    
      HMIRuntime.SmartTags(Name1) = ......
    
    End Sub
    var1 und var2 wird als ByVal übergeben.
    ref1 und ref2 wird als ByRef übergeben.
    Ich bin zwar nicht der Vb-Experte, aber ich sehe da keine Unterscheidung in ByVal oder ByRef.
    So wie du das verwendest, werden einzig und allein die Tagnamen "ref1" und "ref2" als Stringliterale übergeben. Das hat überhaupt nichts mit ByVal oder ByRef zu tun.

  12. #9
    Registriert seit
    22.03.2007
    Ort
    Detmold (im Lipperland)
    Beiträge
    11.726
    Danke
    398
    Erhielt 2.401 Danke für 2.001 Beiträge

    Standard

    @Thomas:
    Naja ... der Trick ist schon interessant.
    Dadurch, dass Holger den Item-Namen übergibt und den in seiner Funktion zum Adressieren des SmartTags hernimmt, ist es im Grunde schon das Verwenden als Referenz - es wird ja mit den gewünschten Variablen direkt gearbeitet und nicht mit deren Wert.
    Ob das in jedem Fall aber immer praktikabel einsetzbar ist (Objekt-Referenz) ist eine andere Sache ...

    Gruß
    Larry

  13. #10
    Registriert seit
    25.02.2010
    Beiträge
    618
    Danke
    35
    Erhielt 121 Danke für 110 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Morgen
    Die ganze Sache ist bei Flex sicherlich nicht entscheidend Aufgrung der beschränkten Fähigkeit von Scripten. Wer aber mit Scripten anfängt landet wahrscheinlich auch irgendwann bei WinCC. Wenn nun in mehreren "Task" gearbeitet wird mit langen Scripten, kann es schon entscheident sein wann einer Variablen ein Wert zugewiesen wird.
    Ich bin der Meinung man sollte es gleich richtig lernen um zu verstehen wo der Unterschied bei der Zuweisung ist um spätere ungewollte Erlebnisse zu vermeiden.
    Grüsse Holger

Ähnliche Themen

  1. Ausgang als Parameter übergeben
    Von IOSam im Forum Simatic
    Antworten: 14
    Letzter Beitrag: 10.02.2013, 14:05
  2. WinCC Flexible 2008 vbscript/Textliste
    Von eloboy im Forum HMI
    Antworten: 1
    Letzter Beitrag: 18.03.2009, 12:21
  3. Parameter Movimot Movidrive in WinCC flexible
    Von S7T-User im Forum SEW-EURODRIVE
    Antworten: 1
    Letzter Beitrag: 06.12.2007, 12:32
  4. Wincc flexible und VBScript
    Von Lipperlandstern im Forum HMI
    Antworten: 2
    Letzter Beitrag: 15.03.2006, 09:14
  5. Datenbaustein als Parameter übergeben.
    Von Jochen Kühner im Forum Simatic
    Antworten: 2
    Letzter Beitrag: 07.07.2004, 08:13

Stichworte

Lesezeichen

Berechtigungen

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