TIA VB Script Automatisiert starten

thomas_95

Level-1
Beiträge
27
Reaktionspunkte
1
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo zusammen,
habe da eine kleine Anfängerfrage die wahrscheinlich ziemlich schnell zu lösen wäre wenn man weiß wie bzw wo...


Verwendete Software:TIA Portal V14 +WinCC V14
Hardware: S7 1214C + TP900 Comfort Panel

Folgendes Problem...

Ich möchte nachdem ich 5 bzw 10s Sekunden nachdem ich keine neuen Pos/Neg Flanken mehr von meinem Inkrementalgeber erhalte ein VB - Script starten lasse, dabei dachte ich das ich einfach über eine Ausschaltverzögerung mein Ausgangssignal dann in den HMI-Variablen-Tabellen angebe : Bei Wertänderung => Script xyz ausführen..

ABER das macht er ja auch wenn er von 1 auf 0 bzw von 0 auf 1 wechselt... gibt es noch eine andere Möglichkeit?

Das er NUR bei Signal 1 oder NUR bei Signal 0 das Script einmalig startet?


Ich bedanke mich vielmals im Vorraus für eure Hilfe
 
Ich würde auf der SPS einen Timer starten, der hochzählt und dann bei erreichen des Zeitwertes den Wert 10 in ein Byte schreibt.
In der HMI projektierst du dieses Byte und hängst bei Grenzwert überschritten (Grenze z.B. Wert 8 ) dein Skript an.
Am Ende des Skriptes setzt du dann dieses Byte wieder auf den Wert 0. In diesem Skript kannst du natürlich auch
ein BOOL setzen, um deinen TimeOut neu zu starten.

Also das wäre eine Möglichkeit
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Habe den Timer nun hochzählen lassen und lasse dann den wert 10 in einen DatenTyp INT schreiben... das würde klappen...
Nun die frage... wie setze ich das wieder in VB auf 0? Habe in dem Script nur mit dem Befehl ResetBit und SetBit gearbeitet... um mir aus meinen Arrays Archivdaten zu beschreiben... bin Anfänger in dem Gebiet Sry :sad:
 
Thomas,

was auch noch wichtig ist, damit es funktioniert: Deine Int Variable muss in den Eigenschaften unter Erfassungsart auf "Zyklisch fortlaufend" stehen.
Ansonsten kann es sein, dass du die Variable in den Grenzbereich 10 steuerst, aber keine Reaktion steht, da die Variable nicht abgeholt wird.

Das ist ein typischer Fehler bei solchen Sachen.
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Thomas,

was auch noch wichtig ist, damit es funktioniert: Deine Int Variable muss in den Eigenschaften unter Erfassungsart auf "Zyklisch fortlaufend" stehen.
Ansonsten kann es sein, dass du die Variable in den Grenzbereich 10 steuerst, aber keine Reaktion steht, da die Variable nicht abgeholt wird.

Das ist ein typischer Fehler bei solchen Sachen.

Dieser Fehler kommt mir bekannt vor ;) Habe das jetz alles gemacht und werde das nun dann mal testen Vielen Herzlichen Dank dir!
 
Bei Wertänderung => Script xyz ausführen..

ABER das macht er ja auch wenn er von 1 auf 0 bzw von 0 auf 1 wechselt... gibt es noch eine andere Möglichkeit?
Du könntest gleich am Anfang des Skriptes abfragen, ob es bei 0 oder 1 aufgerufen wurde, und bei einem von beiden die Skriptausführung gleich wieder abbrechen.

"Grenzwert überschritten" würde ich nicht als Auslöser nehmen - da sieht irgendwie doof aus im Meldepuffer/Archiv. Man kann auch gleich den Timerausgang auf eine Bool-Variable legen und normal auf Wertänderung auswerten. Oder den Timerausgang auf eine Bitmeldung, und bei der Bitmeldung beim Ereignis "Kommen" das Skript aufrufen.

"Archivdaten schreiben": beachte, daß Variablen, die im Skript angesprochen werden vermutlich nicht aktualisiert sind. Variablenwerte (besonders zum Archivieren) bekommt man nur per Rezeptur sicher ins HMI eingelesen.

Harald
 
Ich habe nun beide Varianten probiert... beide haben nicht wirklich funktioniert... die eine als dauerschleife die andere wollte garnicht... also : einfach über nen Button das Skript ausführen.. werde mir heute darüber mal keine Gedanken mehr machen . Ich danke euch beiden trotzdem wirklich sehr für eure Hilfe.
 
Zuviel Werbung?
-> Hier kostenlos registrieren
die eine als dauerschleife
Das wird vermutlich daran liegen, dass du mit dem Skript den Wert 10 wieder auf 0 schreibst und dann auf der SPS direkt wieder mit 10 überschreibst.
Du müsstest auf der SPS den Wert 10 nur einmalig bei erreichen deines Zeitwertes schreiben. Also nicht permanent wenn der Zeitwert erreicht wird.
 
Ja beide habt ihr recht. Genau das ist mein problem. Einmal wird es eben immer wieder ausgeführt und beim anderen verhindert der Schutzmechanismus dass, das Skript ausgeführt wird.

Gesendet von meinem SM-G930F mit Tapatalk
 
Zurück
Oben