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

Ergebnis 1 bis 10 von 10

Thema: Textfeld mit VB-Skript bearbeiten

  1. #1
    Registriert seit
    04.04.2008
    Beiträge
    389
    Danke
    85
    Erhielt 39 Danke für 24 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Hallo,
    da bin ich schon wieder - mit meinem nächsten Problem.
    Ich will über VB-Skript den Textinhalt eines Textfeldes verändern.
    Dazu habe ich folgenden VB-Code geschrieben:

    Dim objTextfeld
    Set objTextfeld=HmiRuntime.Screens("Bild1").ScreenItems("Textfeld_3")
    If SmartTags("G115")=True Then
    objTextfeld.Text="Kugelhahn ist geschlossen."
    End If
    If SmartTags("G116")=True Then
    objTextfeld.Text="Kugelhahn ist geöffnet."
    End If

    Ich weiß nicht, ob der Code stimmt, er wird nämlich nicht bearbeitet. Wie erreiche ich es , dass der Programmcode z.B. alle 100 ms einmal ausgeführt wird.
    Bemerkung: Bei VB2005 würde man den Code in einen Timer legen und den Timer auf z.B. 100 ms einstellen.

    Gruß
    Earny
    Zitieren Zitieren Textfeld mit VB-Skript bearbeiten  

  2. #2
    Registriert seit
    24.10.2007
    Ort
    USA
    Beiträge
    815
    Danke
    3
    Erhielt 73 Danke für 57 Beiträge

    Standard

    Hey,
    es muss eigentlich funktionieren
    Ich habe einen verdacht:
    versuch die temporäre Dateien zu löschen , das ganze projekt zu generieren.

    johnij
    Geändert von johnij (18.07.2008 um 12:20 Uhr)

  3. #3
    Registriert seit
    06.10.2004
    Ort
    Kopenhagen.
    Beiträge
    4.622
    Danke
    377
    Erhielt 799 Danke für 642 Beiträge

    Standard

    Die ganze Idee ist dumm.
    Verwende doch einen Symbolisches ausgabe feld mit ein Text-Liste und fertig damit.

    Ich verstehe nicht, warum so viele Leute wollen alles mit Skripte machen. Skripte sind großartig, aber sollte sparsam verwendet werden
    Jesper M. Pedersen

  4. Folgender Benutzer sagt Danke zu JesperMP für den nützlichen Beitrag:

    Larry Laffer (18.07.2008)

  5. #4
    Registriert seit
    24.10.2007
    Ort
    USA
    Beiträge
    815
    Danke
    3
    Erhielt 73 Danke für 57 Beiträge

    Standard

    Zitat Zitat von JesperMP Beitrag anzeigen
    Die ganze Idee ist dumm.
    Verwende doch einen Symbolisches ausgabe feld mit ein Text-Liste und fertig damit.

    Ich verstehe nicht, warum so viele Leute wollen alles mit Skripte machen. Skripte sind großartig, aber sollte sparsam verwendet werden
    Dumm ist es, wenn man nix mit Skripting anfangen kann.

    Es ist ja klar, dass Skripte die Leistung vom Panel_Prozessor beeinflussen , wenn sie ständig aufgerufen sind (only One Task is runing).
    Manchmal kommt man aber nicht drum herum--> Skripte

    johnij

  6. #5
    Registriert seit
    22.03.2007
    Ort
    Detmold (im Lipperland)
    Beiträge
    11.710
    Danke
    398
    Erhielt 2.397 Danke für 1.997 Beiträge

    Standard

    Ich sehe das so wie Jesper (und der weiß wovon er redet ...).
    Ich würde an dieser Stelle auch ähnlich vorgehen. Scripte sollte man dort einsetzen, wo man mit den Standard-Funktionen nicht mehr klarkommt.

    @Johnij:
    Deshalb hast du natürlich trotzdem Recht mit :
    Dumm ist es, wenn man nix mit Skripting anfangen kann.
    Gruß
    LL

  7. #6
    Registriert seit
    27.04.2006
    Ort
    Sauerland
    Beiträge
    623
    Danke
    183
    Erhielt 88 Danke für 81 Beiträge

    Standard

    Also ich würde sowas an eine Variable (oder auch an zwei) hängen und dann bei Änderung ausführen.
    Und was das skripten ansich angeht sehe ich das wie Jesper. Wohl dosiert kann man was damit anfangen.
    Die Kunst in der Personalführung ist es
    die Mitarbeiter so über den Tisch zu ziehen,
    dass sie die Reibungshitze als Nestwärme empfinden.

  8. #7
    Earny ist offline Erfahrener Benutzer
    Themenstarter
    Registriert seit
    04.04.2008
    Beiträge
    389
    Danke
    85
    Erhielt 39 Danke für 24 Beiträge

    Standard

    Hallo,
    ich habe mein Problem gelöst. Der Programmcode war richtig.
    Mir war nur nicht klar, wie ein Code zyklisch aufgerufen wird.
    Ich habe in der Zwischenzeit erfahren, dass in WinCC flexible die von VB6.0 und VB2005 altbekannten und altbewährten Timer nicht zur Verfügung stehen. Deshalb kommt hier nur eine Event-Abfrage in Frage.
    Ich habe die Erfassungsart der beiden Variablen auf "Zyklisch fortlaufend" gestellt. Außerdem muss noch bei "Erfassung" - "Wertänderung" der Skript aufgerufen werden.
    Das klappt jetzt. Allerdings ist die Logik falsch. Die habe ich jetzt richtig gestellt. Wenn ein Kugelhahn zwei Endschalter hat, so müssen nämlich vier Fälle unterschieden werden!

    Ich habe meinen Programmcode erweitert:

    Dim objTextfeld
    Set objTextfeld=HmiRuntime.Screens("Bild1").ScreenItems("Textfeld_3")
    If SmartTags("G115")=True And SmartTags("G116")=False Then
    objTextfeld.Text="Kugelhahn ist geschlossen."
    ElseIf
    SmartTags("G115")=False And SmartTags("G116")=True Then
    objTextfeld.Text="Kugelhahn ist geöffnet."
    ElseIf
    SmartTags("G115")=False And SmartTags("G116")=False Then
    objTextfeld.Text=""
    ElseIf
    SmartTags("G115")=True And SmartTags("G116")=True Then
    objTextfeld.Text="Endschalter defekt?"
    End If

    Womit ich schon beim nächsten Problem angekommen bin:
    Der obenstehende Programmcode wird nicht kompiliert, weil er einen Fehler enthält. Der Flex-Kompiler sagt lediglich, dass der Skript einen Fehler enthält, zeigt aber nicht die Stelle.

    Ich möchte mich auch für die von JesperMP vorgeschlagene Lösung bedanken. Ich werde das mal testen.

    Zum VB-Skript: Gibt es ein Buch oder pdf-Dokument, dass den Einsatz von VB-Skript unter WinCC flexible anhand von Beispielen zeigt. Das darf auch was kosten.
    Ich meine nicht die Standardwerke zu VB6.0 oder VB.Net. Davon habe ich schon genug.

    Noch was: Ich habe schon öfters Fragen in diesem Forum eingestellt und häufig geholfen bekommen. Ich habe mich eigentlich immer dafür bedankt, aber offensichtlich nicht richtig. Neben meinem Alias "Earny" steht bei: ... bedankt: 0
    Frage: Wie bedankt man sich richtig?

    Gruß
    Earny

  9. #8
    Registriert seit
    08.11.2006
    Ort
    Uckermark
    Beiträge
    903
    Danke
    201
    Erhielt 256 Danke für 208 Beiträge

    Standard

    Zitat Zitat von Earny Beitrag anzeigen
    .......
    Frage: Wie bedankt man sich richtig?

    Gruß
    Earny
    guggst Du hier...
    Angehängte Grafiken Angehängte Grafiken
    Neue Ideen begeistern jene am meisten, die auch mit den alten nichts anzufangen wussten.
    Karl Heinrich Waggerl (1897-1973)

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

    Earny (20.07.2008)

  11. #9
    Registriert seit
    27.05.2004
    Ort
    Thüringen/Berlin
    Beiträge
    12.218
    Danke
    533
    Erhielt 2.696 Danke für 1.948 Beiträge

    Standard

    Zitat Zitat von johnij Beitrag anzeigen
    Dumm ist es, wenn man nix mit Skripting anfangen kann.
    Im Zusammenhang mit der eigentlichen Frage gebührt dir heute die Krone.
    Für den "Dümmstem Spruch des Tages".
    Gruß
    Ralle

    ... there\'re 10 kinds of people ... those who understand binaries and those who don\'t …
    and the third kinds of people … those who love TIA-Portal

  12. #10
    Earny ist offline Erfahrener Benutzer
    Themenstarter
    Registriert seit
    04.04.2008
    Beiträge
    389
    Danke
    85
    Erhielt 39 Danke für 24 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Hallo,
    ich habe meinen Fehler gefunden. Die Syntax der ElseIf-Zweige war falsch. Man darf nach ElseIf nicht die Enter-Taste drücken.
    Der Code lautet richtig:

    Dim objTextfeld
    Set objTextfeld=HmiRuntime.Screens("Bild1").ScreenItems("Textfeld_3")
    If SmartTags("G115")=True And SmartTags("G116")=False Then
    objTextfeld.Text="Kugelhahn ist geschlossen."
    ElseIf SmartTags("G115")=False And SmartTags("G116")=True Then
    objTextfeld.Text="Kugelhahn ist geöffnet."
    ElseIf SmartTags("G115")=False And SmartTags("G116")=False Then
    objTextfeld.Text=""
    ElseIf SmartTags("G115")=True And SmartTags("G116")=True Then
    objTextfeld.Text="Endschalter defekt?"
    End If

    Das funktioniert.

    Gruß
    Earny

Ähnliche Themen

  1. Antworten: 11
    Letzter Beitrag: 15.09.2011, 11:13
  2. Skript um Open Office zu bearbeiten
    Von Black_Eagle im Forum HMI
    Antworten: 1
    Letzter Beitrag: 08.07.2011, 09:35
  3. Textfeld in einem Bildbaustein Beschreiben
    Von Bensen83 im Forum HMI
    Antworten: 2
    Letzter Beitrag: 22.03.2011, 12:58
  4. Eingabe von Zeiten in ein Textfeld
    Von wachsi im Forum HMI
    Antworten: 14
    Letzter Beitrag: 20.11.2008, 12:55
  5. Antworten: 1
    Letzter Beitrag: 25.08.2006, 20:56

Lesezeichen

Berechtigungen

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