WinCC (PCS7): C-Skript in Server-Client-Umgebung

hub

Level-1
Beiträge
251
Reaktionspunkte
17
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo,

ich muss in einem Multiprojekt, bestehend aus
- 1 redundantes OS-Server-Paar
- 2 OS-Clients
- ca. 15 referenzierte Clients

eine C-Funktion erstellen.

Wo lege ich diese an?
Im Serverprojekt oder in den beiden Clientprojekten oder bei allen Clients?
Als Projektfunktion oder als Standardfunktion?
Welche Aktionen sind nötig, damit das Skript an jedem Client funktioniert?

hub.
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Es soll SFC-Informationen an einem Anwenderobjekt anzeigen.
- aktuelle Kette
- aktueller Schritt
- inkl. Farbumschlag in Abhängigkeit vom SFC-Status
- ...
 
naja auf jeden Fall im serverprojekt. bei den referenzierten Clients legst Du nix an, geht ja auch garnicht, sie werden ja mit dem referenzclientprojekt geladen. ob das Script auch auf den zwei referenzclients liegen muss, haengt jetzt davon ab, wie Du das ganze im Details umsetzt, ich denke aber es sollte nicht noetig sein.
Gruss.
 
ps, manchmal ist es evtl. auch komfortabler, die Scripte ins AnwenderObjekt zu legen und fertig. dann steckt alles an einer Stelle und man muss sich nicht noch um irgendwelche Scripte die sonstwo liegen kuemmern. aber sicherlich ansichtssache...
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Das Script wird öfters im Projekt benötigt und ist nicht gerade klein.
Deswegen will ich auf jeden Fall eine Funktion erstellen.

Wenn ich die Funktion im Serverprojekt erstelle, wird sie wahrscheinlich auch nur auf die Server übertragen.
Finden die Clients dann auch die Funktion?

Bei Variablen kann ich ja mit einem Serverpräfix arbeiten.
Gibt es sowas auch bei Funktionen?
 
Hmm, das Ganze ist in der Regel komplizierter, als man meinen möchte.

Bei Siemens gibt es 2 Arten von Client-Server-Systemen: Clients mit eigenem Projekt und Clients ohne eigenem Projekt. Leider ist es aber so, dass in den Siemens Dokus nicht durchgängig diese 2 Begrifflichkeiten verwendet werden, sondern je nach Arte und Alter der Doku Begriffe wie: Multiclient, Uniclient, Mehrplatzsysteme, Verteilte Systeme, "Clients mit Sicht auf einen Server" usw.
Du verwendest PCS7 und somit wie auch im Post 1 geschrieben, 2 Clients mit einem eigenen Projekt. Die 15 weiteren referenzierten Clients benutzen die Projekte der 2 Clients und werden mit einem davon geladen, sind also in dem Sinne auch Clients "mit eigenem Projekt". Sie benutzen also ein Clientprojekt und nicht das Serverprojekt!

So, jetzt folgt, was ich mir bisher zusammengereimt habe:
- Scripte, welche in Bildern liegen, werden aufgerufen, wenn der Server oder Client das Bild anzeigt, sind also im Bild gespeichert.
- globale Aktionen im Serverprojekt werden natürlich auf dem Server und dem redundaten Server ausgeführt, weiterhin auf Clients ohne eigenem Projekt.
- (lokale) Aktionen im Serverprojekt werden nur auf dem Server ausgeführt, (evtl. auch auf dem redundanten Server?) aber nicht auf den Clients
- globale Aktionen und (lokale) Aktionen auf dem Client-Projekt werden nur auf dem Client ausgeführt bzw. natürlich auf den referenzierten Clients wenn sie geladen wurden.

Wichtig ist natürlich aufzupassen, was das Script auf dem jeweiligen Rechner macht/machen soll.

So, jetzt zu den Funktionen: in der Doku zum Scripting ist ja gut beschrieben, wo die gespeichert werden, Standardfunktionen werden im WinCC-Installationsordner gespeichert und bei Neuinstallation überschrieben. Projektfunktionen werden im Projekt gespeichert und können somit durch Kopieren des Projektes auch wo anders hin übertragen/gesichert werden. Aus diesem Grunde würde ich Dir schon empfehlen, Projektfunktionen zu nutzen.

So, zu der Frage, ob die Projektfunktionen jetzt auch auf den 2 Clients liegen müssen: Wenn Du die Funktionen durch Aktionen am Client oder durch Bilder, welche nur auf dem Client liegen, ausführen willst, müssen die Projektfunktionen m.M. nach auch auf den 2 Clientprojekten liegen.
Wenn die Funktionen in Bildern des Serverprojektes verwendet werden bin ich mir nicht sicher, denke aber, das beim Übersetzen der Scripte, die Befehle aus den Funktionen mit in das Bild eingebaut werden. Und somit nicht im Clientprojekt liegen müssen. Aber das solltest Du bei Bedarf testen.

Ich hoffe, damit ist jetzt manches etwas klarer geworden.

Am Ende noch der Hinweis zu den Dingen mit einem @ oder @@ am Anfang. Damit wird die Standardvorgehen von WinCC ausgehebelt. Also z.B. müssen Bilder (und auch die Scripte in den Bildern) mit einem @ am Anfang nicht nur auf dem Server sondern auch auf dem Client liegen. Aber wenn Du damit zu tun hast, dann schreib ich dazu nochmal was.

Gruß.
 
Hallo,

danke für die ausführlichen Erklärungen.

Als Projektfunktion ablegen: ist jetzt klar

Die Client-Projekte haben keine eigenen Anlagenbilder (nur Systembilder von PCS7).
Die Anlagenbilder liegen alle im Serverprojekt.
Das heißt, auch die Funktion wird von einem Bild gestartet, das auf dem Server liegt.
Ob es jetzt genügt, nur die Server zu laden, werd ich wohl austesten müssen.

Das Ergebnis werde ich dann noch posten.
Nächste oder übernachste Woche.

hub.
 
Zuviel Werbung?
-> Hier kostenlos registrieren
nach ein paar Versuchen bin ich auf folgendem Stand:

OS-Server:
Da am Server keine Bilder angezeigt werden, benötigt der Server das Skript eigentlich nicht.

OS-Clients:
Die beiden Clients zeigen zwar die Bilder, die auf dem Server liegen an,
aber das Skript wird anscheinend direkt beim Client gesucht.

Projektierung mit ES:
Da die Bilder im Serverprojekt liegen kann das Skript nur aufgerufen werden, wenn es im Serverprojekt vorhanden ist (Projektfunktion) oder wenn es auf der ES als Standardfunktion vorhanden ist.
Standardfunktionen werden aber beim Laden nicht übertragen.
Damit beim Laden das Skript auf die Clients übertragen wird, muss es auch in den beiden Clientprojekten vorhanden sein.

Somit muss ich das Skript in der Projektierung aktuell an 3 Stellen anlegen.
Demnächst an 4 Stellen, weil ein weiteres Clientprojekt dazukommt.

Erscheint mir doch recht aufwendig und umständlich.
Gibt es da keine einfachere Möglichkeit?

Ich stelle mir da eine Lösung wie bei den Bildern vor.
Alle Bilder liegen nur auf dem Server. Trotzdem können alle Clients die Bilder anzeigen.
Wenn die Clients ein Skript vom Server verwenden könnten, müsste das Skript auch nur am Server vorhanden sein.
 
Zurück
Oben