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

Ergebnis 1 bis 4 von 4

Thema: skript kopieren und smarttags

  1. #1
    Registriert seit
    05.08.2009
    Beiträge
    69
    Danke
    14
    Erhielt 0 Danke für 0 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Hallo,

    Wenn man ein erstelltes Skript kopiert und ins nächste Flex Projekt einfügt, dann werden alle intern deklarierten Variablen (die nicht mit der SPS verlinkt wurden) in smarttags umgewandelt. Also von Gelb nach smarttags...

    Warum passiert das?

    Und eine Frage noch- Habe mir zwar einige male die Definition von smarttags in der Flex Hilfe durchgelesen, aber um ehrlich zu sein, ich versteh da keinen Unterschied zu normalen Variablen, die im Flex Projekt deklariert und mit einem DB der SPS verlinkt wurden... Wie ist die genaue Definition von Smarttags und wo liegen die Unterschiede?!


    Mir sind noch einige andere Besonderheiten aufgefallen was das verwenden von Schleifen betrifft- da wird komischerweise wenn man zum Beispiel so etwas deklariert:

    e = 10
    For i = 1 to 100
    Daten(e) = smarttags("DB....Programm_"& i &"...")
    e = e + 1
    Next

    x = 10
    For k = 1 to 100
    f.LinePrint("Programm_"& k &" &Daten(x) )
    x = x + 1
    Next

    egal was passiert eine 0 ausgegeben.

    Dieser code soll aus dem DB über das Panel in eine txt datei schreiben von einem PC.

    Wenn ich zum Beispiel die 100 Variablen alle manuel dem Daten (feld) zuweise und jede der 100 Variablen manuell ohne For schleife über f.LinePrint in die Datei schreiben würde, dann kämen auch die Daten an!

    Habe es mehrmals getestet und es funktioniert nur so wie gerade beschrieben- keine Ahnung warum und ob ich was falsch mache...
    Zitieren Zitieren skript kopieren und smarttags  

  2. #2
    Registriert seit
    22.06.2009
    Ort
    Sassnitz
    Beiträge
    11.308
    Danke
    932
    Erhielt 3.321 Danke für 2.683 Beiträge

    Standard

    Hallo Hocheck,

    soweit ich mich erinnere, mag smarttags() keine zusammengesetzten Strings als direktes Argument.
    So sollte es funktionieren:
    Code:
    dim tagname
    
    For i = 1 to 100
        tagname = "DB....Programm_"& i &"..."
        Daten(e) = smarttags(tagname)
        e = e + 1
    Next
    Warum WCCflex beim Kopieren von Skripten in andere Projekte die im Skript benutzten Panel-internen
    Variablen in smarttags umwandelt, kann ich nicht sagen. Sowas ist mir noch nicht passiert.

    Vielleicht liegt das daran, daß WCCflex beim Kopieren zwischen Projekten "freundlicherweise" alle
    referenzierten Objekte mitkopiert. Und Panel-Variablen werden immer als SPS-Variablen auf der Verbindung
    "Verbindung_1" angelegt, wenn sie da noch nicht existieren.

    Eventuell hast Du nun doppelte Variablen und ggf. eine zusätzliche Verbindung, falls Du die Standard-
    Verbindung umbenannt hast.

    Gruß
    Harald
    Zitieren Zitieren smarttags() mag keine zusammengesetzten Strings als Argument  

  3. #3
    Registriert seit
    05.08.2009
    Beiträge
    69
    Danke
    14
    Erhielt 0 Danke für 0 Beiträge

    Standard

    Hallo Harald,

    Genau das ist es =)

    Habe es auch noch mal mit dem kopieren der Variablen ausprobieren können.. Auch wenn ich die standardverbindung "Verbindung_1" in beiden Projekten projektiert habe passiert dies komischerweise..
    Naja da weis ich mir nun wirklich keine Antwort drauf...

    Aber es ist doch nicht "schlechter", wenn man die smarttags anstelle normaler variablen nimmt, oder?!

  4. #4
    Registriert seit
    22.06.2009
    Ort
    Sassnitz
    Beiträge
    11.308
    Danke
    932
    Erhielt 3.321 Danke für 2.683 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Zitat Zitat von Hocheck Beitrag anzeigen
    Genau das ist es =)
    Ich nehme mal an, Du meinst mein Codebeispiel. Daß Dein Skript so nun korrekt funktioniert?
    Zitat Zitat von Hocheck Beitrag anzeigen
    Wenn man ein erstelltes Skript kopiert und ins nächste Flex Projekt einfügt, dann werden alle intern deklarierten
    Variablen (die nicht mit der SPS verlinkt wurden) in smarttags umgewandelt. Also von Gelb nach smarttags...

    Warum passiert das?
    Ich glaube, jetzt habe ich erst verstanden, was Du meinst:
    Beim Kopieren der Skripte werden nicht die referenzierten (und mitkopierten) Variablen "umgewandelt", sondern im
    Skript-Text werden die "nackt dastehenden" Variablennamen von global deklarierten RT-Variablen (Panel-interne
    UND SPS-verlinkte) in SmartTags() eingeschlossen.
    Code:
    Aus :
        skriptvar = Var_1
    wird :
        skriptvar = SmartTags("Var_1")
    Ja, das ist eigentlich in Skripten der Normalfall, daß auf die im Flex-Projekt global deklarierten RT-Variablen
    mit SmartTags("...") zugegriffen wird (kein Unterschied, ob als Panel-interne oder SPS-verlinkt deklariert).

    Zulässige Ausnahme (aus der WinCC flexible Onlinehilfe):
    Wenn der Variablenname den VBS-Namenskonventionen entspricht, brauchen Sie die SmartTags-Auflistung nicht zu
    verwenden. Sie können die Variable direkt über ihren Namen ansprechen, ...
    Zwingend erforderlich ist SmartTags("Varname"), wenn die RT-Variable in einem Ordner unterhalb "Variablen"
    deklariert wurde, wenn also der Variablenname einen Pfad enthält, z.B. SmartTags("_System\Hostname") oder
    SmartTags("_Intern\ActiveGroupNumber").

    Beim Einfügen eines kopierten Skriptes (sogar im selben Projekt), wird das Skript offensichtlich durch einen
    Konverter/Syntaxprüfer gejagt, der grundsätzlich alle Zugriffe auf globale RT-Variablen mit SmartTags() umgibt.
    Im Ziel-Projekt könnte ja ein Skript mit dem gleichen Namen wie eine RT-Variable des Quell-Projektes existieren.

    Und ich glaube mich zu erinnern, daß die automatische Anpassung der Variablennamen in Skripten manchmal nicht
    korrekt funktioniert, wenn die Variable nachträglich in einen anderen Variablen-Ordner verschoben wird und
    SmartTags() nicht verwendet wurde. Das soll vielleicht verhindert werden.

    Zitat Zitat von Hocheck Beitrag anzeigen
    Aber es ist doch nicht "schlechter", wenn man die smarttags anstelle normaler variablen nimmt, oder?!
    Alle im Flex-Projekt global deklarierten RT-Variablen sind Smarttags. Egal, ob als Panel-intern oder SPS-verlinkt
    deklariert. Es gibt keinen Unterschied "Smarttags" und "normale Variablen".

    Ich schreibe das SmartTags() grundsätzlich immer mit. Ich finde die Skripte dadurch besser lesbar.

    Gruß
    Harald
    Zitieren Zitieren SmartTags()  

Ähnliche Themen

  1. Antworten: 1
    Letzter Beitrag: 21.05.2010, 09:09
  2. Antworten: 10
    Letzter Beitrag: 22.03.2010, 21:16
  3. Brauche dringend Hilfe bei SmartTags
    Von cdieden im Forum HMI
    Antworten: 19
    Letzter Beitrag: 01.07.2008, 12:29
  4. VB - Skript
    Von tarzipan7 im Forum HMI
    Antworten: 2
    Letzter Beitrag: 17.11.2007, 07:41
  5. Vb Skript
    Von Reblaus im Forum HMI
    Antworten: 6
    Letzter Beitrag: 23.10.2005, 11:26

Lesezeichen

Berechtigungen

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