Sinnvolle Kombination aus SCL/GRAPH?

derbenny

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

hab auf Verdacht einfach mal SPS-Forum eingetippt und so wie es scheint gleich genau das gefunden was ich gesucht hatte.

Ich habe bisher nur ein wenig mit B&R (SCL/ST) sowie Rockwell/Allen Bradley Steuerungen (KOP) gearbeitet. Seit 2 Wochen arbeite ich mich nun in die S7 ein, bin also noch absoluter S7 Einsteiger.

In der Firma gibt es bisher einige S7 Pojekte, die alle komplett in SCL geschrieben sind (auch die Schrittketten). Es handelt sich um Programme für teilweise sehr komplexe Automatisierungslinien, die aus mehreren Stationen bestehen, wobei jede Station ihre eigene Steuerung hat (CPU 317 mit Profibus DP usw..).

SCL hat seine Vorteile, aber für Abläufe ist es vor allem für Servicemitarbeiter und bei der Inbetriebnahme schwer, die Abfolgen nachzuvollziehen, zu debuggen usw. Ausserdem ist es mühsam, aus einem SCL Quellcode ein Flussdiagramm zu erstellen.

Meine Aufgabe wird es sein, eine Lösung zu finden wie man das verbessern kann. Dabei soll evtl S7 GRAPH und SCL kombiniert werden, auch FUP-Teile wären denkbar. AWL schliesse ich aus, da sehr unübersichtlich für Hochsprachen-gewohnte Mitarbeiter.

Meine Frage ist nun, gibt es bekannte, vielleicht allgemeine Ansätze wie so etwas realisiert wird? Wie kombiniere ich SCL und GRAPH (und evtl FUP) sinnvoll? In GRAPH wird SCL ja mehr oder weniger ausgeschlossen, lediglich durch FB-Aufrufe im permanenten Teil kann ich es einbinden.

Gibt es sowas wie Standards? Oder macht das jede Firma wie es grad passt?

Kann mir jemand Bücher, Internetseiten oder sonstige Dokumente empfehlen?

Vielen Dank schonmal! :)
 
...
Dabei soll evtl S7 GRAPH und SCL kombiniert werden, auch FUP-Teile wären denkbar. AWL schliesse ich aus, da sehr unübersichtlich für Hochsprachen-gewohnte Mitarbeiter.
...

Klingt für mich alles super. (100% Ack)
Ich sehe da keine Probleme. Würde das genau mit den Sprachen realisieren.
Bitverknüpfungen -> FUP
Schrittketten -> Graph7
Berechnungen und Daten -> SCL

Wo ist die Firma sucht ihr noch Mitarbeiter?
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Sehr interessant! Ich habe noch nie große Schritteketten in SCL gesehen.

Zur Frage:

Wenn man "textuelles" Drag und Drop gewohn ist, dann geht einem Graph schnell auf den Keks.

Alles sehr schwerfällig für meinen Geschmack - auch wenns schön aussieht, wenn der "GRÜNE PUNKT" durch die Schrittkette huscht.

Die wichtigste Grundfrage ist - wo man die Ausgänge setzt und rücksetzt UND was macht man beim "SchritteVerschieben".

Setzt man sie außerhalb von Graph und man verwendet Schrittabhängige Zwischenmerker, dann wird das SchritteVerschieben zur Nervenprobe [Have ich leider bei enem "Firmenstandard" so erlebt]

Ich habe auch schon größere GRAPH-Projekte machen müssen - weil das FIRMENSTANDARD war.

Jede Firma hat ihren Eigenen, ausser man muß für BMW oder VW oder oder ...liefern, da ist ALLES wirklich jedes Leerzeichen vorgeschieben.


Gruß
 
Klingt für mich alles super. (100% Ack)

Schrittketten -> Graph7


Die Frage ist - siehe oben - wie man GRAPH einsetzt.
Es hängt sehr von der konkreten Art und Weise ab.

UND

Nutzt man SUPERVISION-FAULT-METHODEN [interg.: PDIAG]
werden sowohl in ProTool als auch in WinCCflex die
Schrittbasierenden Meldetexte nicht immer korrekt in das Panel geladen.

Verlässt man dann die Baustelle, sehen die Anwender nur noch die
Schrittnummern des gestörten Zustandes :ROFLMAO: .

Dieser Fehler wurde aus ProTool ist Flex "hinübergerettet" !!!!!!

SOVIEL :ROFLMAO: GRÜNE MÄNNCHEN KANN ICH GARNICHT HIER REINSTELLEN.


..
 
Das geht ja schnell mit den Antworten hier :cool:

Ich hatte ja schon so einige Ideen wie man das in die bisherige SCL-Struktur einfügen könnte, mein Problem dabei sind nur immer irgendwelche Variablen, die von einem FB in den anderen geschaufelt werden müssen so dass die Sache dann doch wieder unübersichtlich wird oder garnicht geht.

Die Sache ist so aufgebaut, dass der OB1 recht viele Module aufruft, welche Teilaufgaben der Anlage sind. Jedes Modul hat dann seine eigene Schrittkette, große Module auch mehrere. Die Zustände werden dann an lokale Merker zugewiesen und erst am Ende der FBs werden die Merker auf die Ausgänge geschrieben. Wenn ich diese Schrittketten in Graph machen wollte, müsste ich die FBs der Module ja gewissermaßen zerpflücken weil ich für die Schrittkette dann einen eigenen Graph-FB brauche, in welchem ich aber unmöglich alle Operationen usw durchführen kann, die jetzt in den Schritten der SCL-Schrittkette stehen. Und diese Schnittstelle wird das Problem werden so wie ich das bis jetzt sehe.

Kann ich in SCL überhaupt die aktuelle Schrittnummer einer Graph-Schrittkette abfragen? Konnte darüber bisher noch nichts finden.

Mit der Darstellung der Variablen hab ich bei S7 noch so meine Schwierigkeiten. Das war in B&R wesentlich übersichtlicher gelöst.
Vor allem die Darstellung von Strukturen und eigenen Datentypen ist nicht brauchbar, oder ich hab die richtige Möglichkeit noch nicht gefunden.

Wenn ich z.B. ein Array habe, dessen Elemente von einem UDT sind, hatte ich in B&R eine Tabelle, in der alle Elemente aufgelistet waren. Also z.B.

+ Element[1]
+ Element[2]
+ Element[3]

usw. Das konnte ich dann aufklappen, so dass ich für jedes Element die aktuellen Werte der Variablen des UDT sehen konnte. Also z.B. so:

- Element[1]
Variable1 INT 5
Variable2 BOOL false
Variable3 INT 2
+ Element[2]
+ Element[3]


In S7 konnte ich bisher nur den UDT öffnen, aber natürlich ist der dann allgemein, und nicht auf ein bestimmtes Element bezogen.

Was mir auch noch fehlt ist eine "projektweite Suchfunktion", so dass ich z.B. einen bestimmten Text/Variable in ALLEN FBs suchen kann.
Mit normalen globalen Variablen die in der Symboltabelle sind, funktioniert das mit den Referenzdaten/Querverweise ganz gut, aber sobald Strukturen ins Spiel kommen, wirds irgendwie schwierig. Und mit lokalen Daten sowieso.

Fragen über Fragen....ich vermute der Einstieg wird noch lange Dauern ;)
 
Zuviel Werbung?
-> Hier kostenlos registrieren
ZITAT:
Kann ich in SCL überhaupt die aktuelle Schrittnummer einer Graph-Schrittkette abfragen? Konnte darüber bisher noch nichts finden.
ENDE
------

Das ist schnell beantwortet. Solange nur immer EIN Schritt pro GRAPH - FB aktiv ist, kann der entspr. GRAPH-FB Ausgang S_NO direkt verwendet werden.

[Solange nur immer EIN Schritt pro GRAPH - FB aktiv ist]- PETRINETZPRINZIP

gibt es Parallelschritte, dann gibt es quasi UP und DOWN Eingänge am FB - und am S_NO wird die "getoggelte" S_NO angezeigt. Das ist für dich unbrauchbar denke ich.
In JEDEM Schritt ein Variable mit einer selbst gebildeten Schrittnummer zu beschreiben bringt dir bei Parallelschritten dann auch nichts mehr.



Gruß
 
Vorne weg. Zwingt euch der Kunde zu S7 oder ist das wirklich aus freien Stücken geschehen?

Das mit den "komplexen" Aktionen in Graph7 ist wohl eher ein Problem. Ich habe auch noch keine Möglichkeit gefunden wie man aus einem Graph7 Schritt heraus eine Funktion aufruft das würde es schon sehr vereinfachen.

Ich lese so zwischen den Zeilen das Du mittels der Schrittnummer eventuell in einem anderen FC/FB diese Operationen auszuführen die Graph7 nicht beherrscht. Wenn das die Idee ist finde ich die sehr schlecht. Das kann wirklich keiner mehr über blicken.

Vielleicht sollte man es doch trennen in die "Piff Paff Puff"-Schrittketten in Graph7 die sich um Simplere dinge kümmern und in "Technologie"-Schrittketten in SCL (als CASE) wo eben Berechnungen, Daten und Kommunikation ablaufen. Das ganze würde nur sinn machen wenn man das sauber in die Beiden Kategorien aufteilen lassen.

Sehr interessant! Ich habe noch nie große Schritteketten in SCL gesehen.
...

Große oder kleine Schrittketten lassen sich sehr gut in ST/SCL mittel einer CASE Verzweigung programmieren und handhaben. Die Überschaubarkeit ist recht gut. Wobei man Verzeigungen visuell am besten mit grafischen Schrittketten darstellen kann wie AS/Graph7.

Aber SCL ist seher schlecht implementiert. Gerade im Online verhalten finde ich es sehr mühselig. Das haben andere Hersteller die das auch ST nennen können oft besser im Griff.

...
Das ist schnell beantwortet. Solange nur immer EIN Schritt pro GRAPH - FB aktiv ist, kann der entspr. GRAPH-FB Ausgang S_NO direkt verwendet werden. ...

Ich meide auch Parallel-Verzweigungen wie der Teufel das Weihwasser. Wenn ich einen Fall habe in dem man wirklich eine Parallel-Verzweigung brauche ist das meist schon etwas größeres so das sich eine neue Kette rechnet.
 
Ich meide auch Parallel-Verzweigungen wie der Teufel das Weihwasser.

Komisch wie die Leute unterschiedliche Erfahrung machen. Vor ein paar Jahren hatte ich ein relativ grosses Project mit 21 funtionell identische(aber unterschiedlich dimesionierte) Module die parallel getrieben werden müssten. Ich möchte nicht denken wie ich das ohne S7Graph realisiert hätte. Gerade die Übersichtlichkeit war unübertroffen.
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Komisch wie die Leute unterschiedliche Erfahrung machen. Vor ein paar Jahren hatte ich ein relativ grosses Project mit 21 funtionell identische(aber unterschiedlich dimesionierte) Module die parallel getrieben werden müssten. Ich möchte nicht denken wie ich das ohne S7Graph realisiert hätte. Gerade die Übersichtlichkeit war unübertroffen.

Der Automatisierungsbereich ist groß.

Ih kenne aber viel Kollegen die auf Parallelverzweigungen nach Möglichkeit Verzichten. Das hat aber nichts mit der Programmiersprache zu tun.
 
hallo derbenny,

genau die Kombination verwenden wir auch. Schrittketten nur in Graph7, komplexe Funktionen in SCL, schreibschützen, und in einer Softwareversionsverwaltung ablegen. Einfache Sache, wo Monteure ranmüssen in FUP, wobei unsere auch AWL können.

Wir haben ein komplettes Framework, bestehend aus GRAPH7, SCL, WINCC und WINCC flex nach S88 realisiert. Seitdem müssen wir uns nur noch ums Verfahren kümmern, Standardfunktionen sind fertig und nach Pharmavorschrift getestet und dokumentiert.

Seitdem können wir unsere Projekte in weiniger als 50% der früher benötigten Zeit abwickeln.

Also, ich glaub Deine Kombination ist genau die richtige.

Gruß Schumi91
 
Also...

es geht nicht um einen bestimmten Kunden, es soll eine Basis für die kommenden Projekte werden. In sofern steckt kein Zwang dahinter, wenn freie Wahl ist kommt normal B&R rein, aber es gibt Kunden die sagen sie wollen eben Siemens oder ne Bosch Steuerung haben.

Zu den Parallelverzweigungen...ist das diese "simultane" Verzweigung im GRAPH? Oder meint ihr wenn 2 Schrittketten in einem FB gleichzeitig ablaufen?


genau die Kombination verwenden wir auch. Schrittketten nur in Graph7, komplexe Funktionen in SCL...

Wir haben ein komplettes Framework, bestehend aus GRAPH7, SCL, WINCC und WINCC flex nach S88 realisiert. Seitdem müssen wir uns nur noch ums Verfahren kümmern, Standardfunktionen sind fertig und nach Pharmavorschrift getestet und dokumentiert.

Seitdem können wir unsere Projekte in weiniger als 50% der früher benötigten Zeit abwickeln.

Also, ich glaub Deine Kombination ist genau die richtige.

Danke, so eine Meinung tut gut ;) Genau das soll nämlich früher oder später das Ziel sein.

Darf man fragen wie ihr das vom Prinzip her umgesetzt habt? Vor allem die Schnittstellen zwischen SCL und Graph sowie der Datenfluss ist für mich momentan noch ein großes Fragezeichen.
 
Zuviel Werbung?
-> Hier kostenlos registrieren
...
Zu den Parallelverzweigungen...ist das diese "simultane" Verzweigung im GRAPH?
...

Ja das ist gemeint. Bei Alternativverzweigungen ist ja auch nur ein Schritt aktiv. Bei Simultanverzweigungen können es ja mehr sein. Also wir vermeiden die Simultanverzweigungen grundsätzlich und machen dann lieber eine neue Kette.
 
Also...

es geht nicht um einen bestimmten Kunden, es soll eine Basis für die kommenden Projekte werden. In sofern steckt kein Zwang dahinter, wenn freie Wahl ist kommt normal B&R rein, aber es gibt Kunden die sagen sie wollen eben Siemens oder ne Bosch Steuerung haben.

Zu den Parallelverzweigungen...ist das diese "simultane" Verzweigung im GRAPH? Oder meint ihr wenn 2 Schrittketten in einem FB gleichzeitig ablaufen?




Danke, so eine Meinung tut gut ;) Genau das soll nämlich früher oder später das Ziel sein.

Darf man fragen wie ihr das vom Prinzip her umgesetzt habt? Vor allem die Schnittstellen zwischen SCL und Graph sowie der Datenfluss ist für mich momentan noch ein großes Fragezeichen.

Wie oben schon erwähnt, haben wir unsere Software an nach S88 angelegt. Hierbei wird die Anlage in kleine Module zerlegt. Wir verwenden sogenannte Controlmodule für Ventile / Motoren Analogwerte etc.. Diese Werden in Equipmentmodule zusammen gefasst. Unsere Phasen (Schrittketten in Graph) greifen nur auf EQMs zu. Es ist daher nicht notwendig, SCL von Graph aus zu bedienen. Ich habe es noch nicht ausprobiert, da aber SCL nach dem kompilieren normale Bausteine sind, sollten diese normal wie andere Bausteine auch, aus Graph aufrufbar sein. Alle unsere Controlmodule sind in SCL programmiert (diese bilden sozusagen unser Know how ab). Die Software ruft dann nur noch die CM entsprechend der Anlage auf. Schnittstellen sind über DB's / UDT's realisiert. Doku über S88 sind eigentlich, wenn meist auch in englisch im Internet zu finden.

Wir haben für ein halbwegs rundes Paket mit S7, WinCC / WinCC flex ca. 2 Mannjahre benötigt (inkl. Dokumentation, Softwaremodultest, Sourcecodereview etc.)

Gruß Schumi91
 
Zuletzt bearbeitet:
Wie oben schon erwähnt, haben wir unsere Software an nach S88 angelegt. Hierbei wird die Anlage in kleine Module zerlegt. Wir verwenden sogenannte Controlmodule für Ventile / Motoren Analogwerte etc.. Diese Werden in Equipmentmodule zusammen gefasst. Unsere Phasen (Schrittketten in Graph) greifen nur auf EQMs zu. Doku über S88 sind eigentlich, wenn meist auch in englisch im Internet zu finden.

Den S88 Standard kannte ich noch nicht. Hab auf die Schnelle nur die offizielle Seite gefunden die das Ding für 499€ anbietet. Werde da nächste Woche mal genauer suchen.

Das mit den Modulen ist bei uns im Prinzip ähnlich aufgebaut, nur alles in SCL, und teilweise etwas aufgebläht. Selbst ein Zylinder-Modul hat eine Schrittkette und eine extra Reset-Schrittkette. Werde mal testen müssen ob ich so ein Modul komplett in Graph umsetzen kann. Die Möglichkeit, etwas permanent vor oder nach der Schrittkette auszuführen gibt es ja. Wenn auch nur in FUP/KOP :(
 
Zuviel Werbung?
-> Hier kostenlos registrieren
So, nach vielen Versuchen, Tests und Überlegungen steht fest, dass GRAPH nicht eingesetzt wird.

Die Gründe:

- sehr eingeschränkte Möglichkeiten zur Programmierung von komplexeren/umfangreicheren Aktionen
- Hauptsächlich für einfachere Schrittketten die mit booleschen Variablen arbeiten
- hohe Zykluszeiten
- hoher Speicherbedarf
- Aktionen in SCL auslagern: unsauber, umständlich

Wäre die Programmierung der Aktionen in SCL möglich (wie in CoDeSys oder B&R), würde das ganze gleich anders aussehen. Aber GRAPH ist da sehr unflexibel und somit für unsere Zwecke leider unbrauchbar.
 
So, nach vielen Versuchen, Tests und Überlegungen steht fest, dass GRAPH nicht eingesetzt wird.
...

Die Gründe kann ich ja alle verstehen zumal ich ja auch CoDeSys mit ST und AS gewöhnt bin.

Jetzt hast Du ja bekannt gegeben das ihr euch gegen Graph7 Entschieden habt. Was mich jetzt aber interessieren würde ist was macht ihr statt dessen? Nur SCL und eine CASE als Schrittkette oder Schwenkt ihr auf B&R oder CoDeSys um?
 
Was mich jetzt aber interessieren würde ist was macht ihr statt dessen? Nur SCL und eine CASE als Schrittkette oder Schwenkt ihr auf B&R oder CoDeSys um?

B&R und CoDeSys werden auch eingesetzt, aber in diesem Fall geht es darum, ein Basisprojekt für S7 zu erstellen. Im Moment sieht es so aus, als ob tatsächlich CASE-Schrittketten in SCL verwendet werden. Ich habe dazu ein Tool geschrieben, das den SCL Code auswertet und die SCL Schrittketten grafisch darstellt. Damit kann ich den Prozess zwar nicht beobachten, aber ich kann den Ablauf gut erkennen und das Programm dokumentieren.

Evtl. kommen noch Teile aus KOP oder AWL zum Einsatz, das steht noch nicht endgültig fest.
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Das mit den "komplexen" Aktionen in Graph7 ist wohl eher ein Problem. Ich habe auch noch keine Möglichkeit gefunden wie man aus einem Graph7 Schritt heraus eine Funktion aufruft das würde es schon sehr vereinfachen.

CALL bzw. CALLC + SFB/FB/FC/SFC + Nr. + Instanz-DB wenn nötig
 
Zurück
Oben