WinCC Automatischer Bildwechsel

GoodOld

Level-1
Beiträge
51
Reaktionspunkte
0
Zuviel Werbung?
-> Hier kostenlos registrieren
Hi,
kann mir jemand sagen wie ich bei WinCC per Knopfdruck einen Automatischen Bildwechsel starten kann.
Wir haben bei uns in der Firma eine Visu mit mehreren Bereichen, jetzt möchte ich das wenn ich einen Knopf drücke alle Bereiche nacheinander (sagen wir mal alle 5sek) durchgeschaltet werden, bis ich z.B. wieder auf die Taste drücke oder ähliches (damit die Funktion wieder angehalten wird).

Gruß
GoodOld
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Hi,
WinCC 7.

Ne bin kein Programmieren bin Elektriker.
Ich habe hier 5 Bilder (*.PDL Dateien) und diese möchte ich per Mausklick auf ein Symbol im 5 Sek. abstand immer wieder durchschalten.
 
Hmm,

WinCC Scripte sind nicht mal eben geschrieben. Und wenn Du was falsch machst, stürzt auch mal eben WinCC ab.

Wenn Du Lust hast Dich einzuarbeiten, fang mit den Getting Starteds bzw. den Ausbildungsunterlagen von Siemens an. Da steht auch etwas zu Scripten.

Prinzipiell würd ichs evtl. so machen:

- interne Variable erstellen, welche durch den Button 0 oder 1 gesetzt wird
- in jedem Bild ein Script hinterlegen, welches bei Bildaufruf gestartet wird und bei interne Variable =1 die 5 Sekunden wartet und dann das nächste Bild aufruft.

eigentlich nicht schwierig...

wobei das mit der internen Variablen bei Server/Client zu beachten ist, das die lokal auf dem jeweiligen Rechner gesetzt wird...
 
Zuletzt bearbeitet:
Hmmm,
lust zu lernen ist da, Zeit aber nicht.
Das sollte doch nicht so schwerz sein... soviel Code kann das nicht sein.
Ist noch nur ein Timer/Delay, Loop und die Bildaufrufe.
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Ist noch nur ein Timer/Delay, Loop und die Bildaufrufe.

jo, und eben die musst Du lernen, bzw. wie Du überhaupt ein Script in WinCC aufbaust, wo Du es einbaust, wie Du es startest, nimmst Du C oder VB-Script usw.

Ich beantworte Dir gern konkrete Fragen, aber ich mache nicht Deine Arbeit bzw. die Arbeit der Firma die Ihr eigentlich beauftragen müsstet.

Gruß.
 
Zuletzt bearbeitet:
firma kommt nicht in frage da es fuer die kollegen und mich ist ( evtl faul / bequem).
welche befehle muss ich mir in c ansehen weil vb in wincc kann ich nichts mit anfangen.
und fuer 10 zeilen programieren lernen macht keinen sinn.

wenn mir jemand die passenden befehle sagen koennte suche ich mir die weiteren infos zusammen, bze. wie die zusammengehoeren.
 
SetTagBool GetTagBool SSMChangeWorkField ...

fang erstmal mit dem Button an, der eine interne VAriable setzt bzw. wieder rücksetzt. Der Befehl dafür: SetTagBool.

wenn Du das hast, sehn wir weiter.


Ich hoffe Ihr probiert nicht an der Produktivanlage rum...

Gruß

firma kommt nicht in frage da es fuer die kollegen und mich ist ( evtl faul / bequem).
und fuer 10 zeilen programieren lernen macht keinen sinn.

Autofahren zu lernen macht keinen Sinn, ich will ja nur 10km fahren. Taxi bezahlt mein Chef nicht, da es ja ne Privatfahrt ist.

Viel Erfolg.
 
Zuletzt bearbeitet:
Zuviel Werbung?
-> Hier kostenlos registrieren
Hi,
kann mir jemand sagen wie ich bei WinCC per Knopfdruck einen Automatischen Bildwechsel starten kann.
Wir haben bei uns in der Firma eine Visu mit mehreren Bereichen, jetzt möchte ich das wenn ich einen Knopf drücke alle Bereiche nacheinander (sagen wir mal alle 5sek) durchgeschaltet werden, bis ich z.B. wieder auf die Taste drücke oder ähliches (damit die Funktion wieder angehalten wird).

Gruß
GoodOld


Hallo GoodOld,
es gibt von Siemens eine Tool was diese Aufgabe übernimmt. Habe ich glaube ich mal von 10 Jahren benutzt.
Schau ich morgen mal nach wie das heißt bzw wie man es startet.
Gruß
Mark
 
Hi,
wie ein Button funktiniert bzw. man diesen ansteuert ist mir bekannt.
brauche nur den Sleep ähnlichen befehlt oder was auch immer, das ich auf jedem Bildschirm etwas programmieren muss bzw. diese Variable abfrage, währe auch kein ding.

@Mark
hast du was gefunden

Gruß
 
Zuviel Werbung?
-> Hier kostenlos registrieren
So habe mal einen Butten erstellt und in diesem Bei Mausklick folgenden Code in C eingetragen.
Code:
#include "apdefap.h"
void OnClick(char* lpszPictureName, char* lpszObjectName, char* lpszPropertyName)
{
#pragma code("Kernel32.dll")
void Sleep(int Milliseconds);
#pragma code()

SetTagBit("TestDurchschalten",1);    //Return-Type: BOOL 

Sleep(5000); //Zeitangabe in Millisekunden 
OpenPicture("S_Test1.pdl");
}

Das ganze löse ich per Mausklick aus, das Bit wird auch gesetzt.
Wie frage ich jetzt das Bit auf der anderen Seite wieder ab, kann es ja nicht wieder mit einem Mausklick auslösen.

Gruß
 
so habe es auf dem zweiten Bild so gemacht.
Code:
#include "apdefap.h"
 BOOL _main(char* lpszPictureName, char* lpszObjectName, char* lpszPropertyName)
{
#pragma code("Kernel32.dll")
void Sleep(int Milliseconds);
#pragma code()

if( GetTagBit("TestDurchschalten")==0)    //Return-Type: BOOL 
return 0;
else
Sleep(5000); //Zeitangabe in Millisekunden 
OpenPicture("S_test.pdl");
}
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Hmm, ich würde Sleep nicht verwenden. Hab grad mal geschaut und meine Befürchtungen haben sich bestätigt. Deshalb meine Empfehlung mit dem Trigger:
Achtung:
Die Funktion "Sleep()" hat einen äußerst
negativen Einfluss auf die Performance der Aktionsbearbeitung. Bitte beachten
Sie daher unbedingt die folgenden Punkte, wenn Sie diese Funktion einsetzen
möchten.
  • Die Bearbeitung des C-Skriptes wird bei der Benutzung von Sleep() um die
    angegebene Zeit unterbrochen. Auftretende Anforderungen an die unterbrochene
    Funktion können während dieser Zeit nicht bearbeitet werden.
  • Weiterhin werden alle Aktionen mit dem gleichen Trigger nicht mehr
    bearbeitet. Mit dem gleichen Trigger bedeutet, dass alle Aktionen mit zyklischem
    Trigger oder alle Aktionen mit einem Variablentrigger nicht mehr bearbeitet
    werden. Rufen Sie gleichzeitig Aktionen auf, welche zyklisch, azyklisch, auf
    einen Variablentrigger und auf ein Ereignis gestartet werden und wenn alle diese
    Funnktionen die Sleep()-Funktionen nutzen, dann werden sämtliche Aktionen in
    Ihrer Ausführung gestoppt. Im ungünstigsten Fall halten Sie mit vier gestarteten
    Aktionen, sämtliche Aktionen in Ihrer Bearbeitung an.
  • Wenn Sie beispielsweise die Sleep()-Funktion in einer Aktion mit einem 10
    Sekunden Trigger verwenden, dann werden alle zyklisch aufgerufenen Aktionen
    unterbrochen. Dies hat zur Folge, dass z.B. eine Aktion mit einem 1 Sekunden
    Trigger in Ihrer Abarbeitung unterbrochen wird und zusätzlich
    alle noch folgenden Aktionen ebenfalls nicht abgearbeitet werden. Somit werden
    nicht nur aktuelle Aktionen nicht abgearbeitet, sondern auch Aktionen, welche
    noch gestartet werden sollen.
  • Die durch die Unterbrechung nicht abgearbeiteten Aufträge werden in einer
    Warteschlange gespeichert. Ist die Unterbrechung beendet, dann werden alle
    Anforderungen aus der Warteschlange abgearbeitet. Nach der Unterbrechung werden
    die Aktionen aus der Warteschlange aber nicht mehr in Ihrem Zyklus abgearbeitet.
    Wenn also, wie in dem zuvor geschilderten Fall, sich noch Aktionen in der
    Warteschlange befinden, dann werden diese nacheinander abgearbeitet. Bei dieser
    Abarbeitung wird keine Rücksicht mehr auf den Trigger genommen, sondern diese
    Aktionen werden so schnell wie möglich abgearbeitet (theoretisch
    gleichzeitig).

Im Script am Button würde ich erstmal nur die Variable setzen bzw. bei nochmaligem Click wieder rücksetzen.

Die Bildumschaltung würde ich in einer lokalen Aktion ausführen. diese wird zyklisch ausgeführt.
Darin fragst Du zuerst die Variable ab, wenn die 1 dann nächstes Bild, ansonsten nix.

Gruß.
 
Das sagt mir nichts!
Bedenkt bitte ich bin Betriebstechniker und kein Programieren.

Hilfe im Scripteditor!

Merkmale von lokalen Aktionen

Lokale Aktionen ...
werden von Ihnen selbst erstellt

können von Ihnen geändert werden

können gegen Änderungen und Einsicht durch ein Passwort geschützt werden

besitzen mindestens einen Trigger

werden nur auf dem zugeordneten Rechner ausgeführt

besitzen den Dateinamen "*.pas"

Lokale Aktionen werden im Unterverzeichnis "\<Rechnername>\Pas" des Projektverzeichnisses abgelegt.

Verwendung von lokalen Aktionen

Aktionen werden für bildunabhängige Hintergrundtätigkeiten eingesetzt, wie z.B. der tägliche Ausdruck eines Protokolls, die Überwachung von Variablen oder die Ausführung von Berechnungen. Die Ausführung der Aktion wird durch den projektierten Trigger gestartet. Damit die Aktion ausgeführt werden kann, ist es notwendig, Global Script Runtime in die Anlaufliste aufzunehmen.

Lokale Aktionen können im Gegensatz zu globalen Aktionen einem Rechner zugeordnet werden. Damit wird erreicht, dass beispielsweise ein Protokoll nur auf dem Server ausgedruckt wird.
 
Hi,
ich habe mir 3 Buttons gemacht.
Einer Startet die Aktion, auf der Hauptseite.
Eine Beendet die Aktion indem er das Bit auf Null setzt.
Der andere Butten zeigt an das das Script aktiv ist und dient halt als aufruf für das nächste bild.

Das mit der Programmunterbrechung hatte ich schon vorher gelesen, aber das spiel keine Rolle.

Das mit dem Trigger bin ich mir nicht sicher ob das das richtige ist, da wir einen Server / Client Visu haben.

Gruß
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Das mit der Programmunterbrechung hatte ich schon vorher gelesen, aber das spiel keine Rolle.

Das mit dem Trigger bin ich mir nicht sicher ob das das richtige ist, da wir einen Server / Client Visu haben.

Gruß

Naja, wenn Du der Meinung bist, das es nicht schlimm ist, wenn alle Scripte die durch Dich, den Programmierer oder WinCC angelegt wurden oder noch werden, nicht richtig funktionieren...:confused: Genau aus dem Grund sagte ich mal irgendwann, Scripte sind nicht mal eben programmiert...

Die lokale Aktion ist genau das richtige. die legst Du im Client an. Dann hast schonmal den Vorteil, dass das Script nur auf den Clients läuft und nicht auf den Servern.

Gruß.
 
Hi,
also das mal richtiger Bahnhof für mich!
Habe einen Trigger erstellt, habe ihm einen Namen gegeben und 5 Sec eingestellt.
Habe die Aktion auf dem PC erstellt, aber dann hört es auch schon auf. Verstehe nichts mehr, wie soll ich ihm den sagen das er die Bilder durchschalten soll.
 
in dem du einen array anlegst der id und name speichert, eine for-while schleife programmierst und aus dem array via id den aufzurufenden bildnamen einließt, danach kommt der befehl OpenPicture
 
Zurück
Oben