# Vorgehensweise Programmierung S7



## Filesharer (27 Februar 2010)

Schönen guten Tag!!!

Möchte kurz ein paar positive Worte loslassen, über dieses super SPS-Forum!

Super klasse übersichtlich aufgebaut. Top!!!

Nun komme ich mal zu meinem Anliegen, wir haben in der Abendschule auch

SPS-Programmieren & Simulieren bekommen. Leider wurde auf die grundlegenden Dinge des Programmierens nicht eingegangen, da der Lehrer es wohl nicht für richtig wichtig hält.

Nun gut, wie haben schon einige kleine Steuerungen "programmiert", nach dem Motto "learning by doing". 

Ich möchte nun gerne von Euch wissen, wenn ich eine Aufgabenstellung bekommen habe, womit fangt Ihr an???

Als 1. die Symbohltabelle mit Ein & Ausgängen definieren

2. jetzt wird es interessant, fangt Ihr erst an und fügt Netzwerke mit den zu schaltenden Ausgängen ein???? und dann später die Eingänge

Wie hatten damals in der Ausbildung mal etwas mit nem Strukturplan, aber
leider habe ich da keine Unterlagen mehr zu.(vielleicht auch schon zu alt die Methode der Übersicht)

Wir haben da keinen Routiene-Plan bekommen und bei mir liegt das schon Jahre zurück, das ich in Sachen SPS mal etwas gemacht habe.
Wie macht Ihr das?? Wie kann man sich am schnellsten & besten eine 
Übersicht über die Schaltung bekommen??

Über Hilfe würde ich mich super freuen.....

Danke
Filesharer


----------



## Markus (28 Februar 2010)

Also eine saubere Programmstruktur ist das wichtigste!

Grundsätzlich gibt es zwei arten einer Steuerung:

A) Ablaufsteuerung
==============

Z.B. in Form einer Schritkette bei einem Montageautomat

Schritt-1

WENN Bedingung-1 OK
DANN setze Schritt-1 zurück und setze Schritt-2

Schritt-2

WENN Bedingung-2 OK
DANN setze Schritt-2 zurück und setze Schritt-3

Schritketten können recht komplex mit allen mglichen Verzweigungen (also nicht nur linear) sein. Es gibt viele möglichkeiten si umzusetzen (Schrittmerker, Sprungleiste in AWL, Graph, Schrittbausteine,...)

Abläufe lassen sich mit Schrittketten recht einfach realisieren, aber wenn man ereichen will das die Maschine jederzeit aus jeder Situation oder nach einem Wechsel von einer anderen Betriebsart womöglich mit gespannten halbfertigen Werkstücken wieder sauber anläuft, dann ist das sehr schwer bis unmöglich...
Dafür sieht man oft eine eigene betriebsart vor wie z.B. "freifahren", "Grundstellungsfahrt" oder "richten"....
Diese Betriebsarten brignen die Maschine dann automatisch oder mittel zustimmung durch den Bediener oder durch manuelles fahren durch den Bediener in eine definierte Position von der aus die Schrittkette dann starten kann.


B) Zustandssteuerung
================

Diese Steuerung ermöglich im Gegensatz zur Schrittkette das Anlaufen der Maschine aus (fast  ) jeder Situation. Sie bentigt keine speicherndes Model wie eine Schrittkette, sie reagiert nur auf die eingelsesen Eingangssignale.

Sowas hat man z.B. in der Fördertechnik (WENN Sensor, DANN Band EIN, Wenn andere Sensor DANN Band wieder AUS...)

Oder in der Verfahrenstechnik (WENN Temperatur zu hoch, dann Kühlung EIN, oder eben irgendwelche Regelungen...)

Aber auch bei einfachen Maschinen würde ich dies einer Schrittkette vorziehen (WENN Zylinder vorne UND Greifer zu UND Werkstück erkannt DANN Bohren...)
Wenn es zu Komplex wird, dann wird sowas aber ohne Schrittkette zu aufwendig bis unmöglich...


Grundsätzlich solltest du dir also Gedanken machen was für deine Maschine in Frage kommt. Bei größeren Maschinen oder Anlagen kann beides bzw. auch Komninationen zum Einsatz kommen.

Da sind wir beim nächsten Punkt:
Die Maschine gedanklich zerlegen, vielelicht kannst du die Struktur vom Schaltpaln übernehmen, wenn der E-Planer kein Depp war...
Sinnvoll ist eine Durchgehende aufteilung der Anlagenteile und der zugehöigen Funktionsgruppen vond er Konstruktion bis zur Software immer, aber das ist ein anderes Thema...

Eine Struktur kann z.B. so aussehen:

Produktionslinie
+ Anlage-1
++ Station-1
= Funktionsgruppe-1
= Funktionsgruppe-2
= Funktionsgruppe-3
= Funktionsgruppe-4
= Funktionsgruppe-5
++ Station-2
= Funktionsgruppe-1
= Funktionsgruppe-2
= Funktionsgruppe-3
= Funktionsgruppe-4
= Funktionsgruppe-5
++ Station-3
= Funktionsgruppe-1
= Funktionsgruppe-2
= Funktionsgruppe-3
= Funktionsgruppe-4
= Funktionsgruppe-5

+ Anlage-2
++ Station-1
= Funktionsgruppe-1
= Funktionsgruppe-2
= Funktionsgruppe-3
= Funktionsgruppe-4
= Funktionsgruppe-5
++ Station-2
= Funktionsgruppe-1
= Funktionsgruppe-2
= Funktionsgruppe-3
= Funktionsgruppe-4
= Funktionsgruppe-5
++ Station-3
= Funktionsgruppe-1
= Funktionsgruppe-2
= Funktionsgruppe-3
= Funktionsgruppe-4
= Funktionsgruppe-5
.
.
.
.


Eine Funktionsgruppe köntne z.B. ein Förderband mit Antrieb und Sensorik sein, oder eine Pumpe mit Durchflussmesser, Drucksensoren und Frequenzumrichter...

Jetzt könntest du für solche Funktionsgruppen weiderverwendbare bausteine z.B. FB´s schreiben.

Diese rufst du in FC´s oder als Multiinstanzen in übergeordneten FB´s auf.

Mit den Aufrufenden Bausteinen bildest du deine Anlagenstruktur oben ab.
FC(Anlage), FC(Station-1),....

wenn du in diese Struktur dann Anlagenweit und flexibel aber dennoch standartisiert dieKoppelbereiche für die VISU, Störmeldehandlig und Betriebsartenverwaltung sauber unterbingst bist du schon ganz gut... 

Aber das wird dich weniger interessieren, ich gehen mal davon aus ihr machen einfache Beispiele bzw. Maschinen. Nur so als Ansatz wo es mal hin gehen kann und wie weit man Strukturen ausdehnen kann/sollte...


Mann köntne hier ein Buch schreiben, aber jetzt tun mir die Finger weh...


----------



## vierlagig (28 Februar 2010)

Markus schrieb:


> Mann köntne hier ein Buch schreiben, aber jetzt tun mir die Finger weh...



welches aber nur die philosophie des autors wiedergeben könnte... es gibt viele unterschiedliche philosophien (wobei markus eigentlich das üblichste beschrieben hat) besonders wenn es um die funktionseinheiten von funktionsgruppen und das zusammenklöppeln dieser geht ... das ist dann ganz stark davon abhängig, wie die gesamte anlage aufgebaut ist... sind es standard funktionsgruppen mit standard funktionseinheiten oder ist jeder teil eine besonderheit für sich und in wie weit kann man diese besonderheiten durch parametrierung standadisieren und abfangen und wieviel muß man immer wieder neu stricken...


----------



## janusz (28 Februar 2010)

Hallo,
also als erstes: programmieren ist kein Hexenwerk und keine Magie: jedervkann es lernen !. Wenn du ein Anfänger bist, hast du schon gute Tipps vonvKollegen hier (sehe Oben) erhalten. Ich würde dir folgende Überlegungen vorschlagen: gehe davon aus, das Programmieren nur ein Handwerk ist, meistens sind es nicht mehr als ca. 50 Befehle - das Problem also scheint woanders zu legen, nämlich in einer guten Analyse der Aufgabe und dann Umsetzung der Erkenntnisse.
Der Reihe nach.
1. Gibt es dazu ein Pflichte-/Lastenheft oder zumindest eine genaue Beschreibung? Wenn nicht, dann SCHREIBT ES AUF was die Maschine/Anlage machen soll bzw. was erreicht werden soll - kein Witz, es ist enorm wichtig zu definieren worum es geht !
2. SCHREIBE AUF (!) was die Maschine/Anlage UNTER KEINEN UMSTÄNDEN NICHT MACHEN DARF  z.B : weiterlaufen nach NOT-Aus, Spannungsausfall, Auslösung der Si-Einrichtung sowie automatisch starten nach diesen oder ähnlichen
Fällen - ich betone, es ist für einen Anfänger sehr. sehr wichtig !
3. Definiere welche Betriebsarten (Automatik/Semiautomatik/Hand/Fahren ohne Sicherheiten usw) geben soll und wie die Maschine/Anlage sich verhalten soll beim Umschalten: weiterlaufen zur Bewegungsende, Sofort-Stopp usw. oder Bewegung so lange Befehl ansteht(Taster EIN) oder zum Endpunkt bei Hand usw. 
4. Definiere welche Sicherheitseinrichtungen gibt es und was sollen diese bewirken - Hauptspannung abschalten, Steuerspannung Aus oder was auch immer - klären ob Vorgaben vom Auftraggeber den Vortschrifften entsprechen.
5. Stromlaufpläne überprüfen ob sichtbare Fehler vorliegen, wenn ja -abklären.
6.wenn alles OK ound klar: in der Software zuerst Symboltabelle/Zuordnungsliste anlegen. Dabei auf klare und Eindeutige Bezeich nung achten.
7. Wie schon Kollegen oben geschrieben haben, anfangen und keine Angst vor Fehler haben.
Immer schön kommentieren und sich fragen:
- hat das Sinn was ich gemacht habe?
- kann ein Anderer damit was anfangen und verstehen?

viel Spaß
Janusz


----------



## Filesharer (28 Februar 2010)

Hallo Zusammen!!

Danke erstmal für Eure Tips & Tricks, super geschrieben und beschrieben.

Also Wir programmieren momentan nur im im FC und und rufen den dann über

denn Call FC1 befehl im DB auf.

Mit Automtik & Hand Betrieb haben Wir noch nichts gemacht.

Die Symboltabelle habe ich soweit immer einwandfrei hinn bekommen.

Ich verliere nur sehr schnell den Überblick, wenn´s drum geht von dem 

einen Schritt in den nächsten zu gelangen und dann die richtigen

Bedingungen zu erfüllen. 

Wir arbeiten momentan mit Zeitgliedern und Zählern in Kombination.

Ich selber bin mir im klaren darüber, das ich in diese Thematik mehr Zeit

investieren muss, um da mehr "Durchblick" zu erlangen.

Dafür möchte ich mir eine Vorgehensweise für die Zukunft angewöhnen,

damit ich solche schulischen Aufgaben schnell&zuverlässig verstehen und

umsetzen kann. Leider wird Uns genau das, nicht vermittelt und Wir sollen

so ins "blaue" programmieren und probieren. Und das finde ich so nicht

i.O, deswegen wende ich mich an Euch.

Von Schrittketten hat Uns der Lehrer noch gar nichts erzählt, vielleicht könnte mir das jemand besser erklären, vielleicht hilft mir das dann auch schon weiter.

Grüße
Filesharer


----------



## Kai (28 Februar 2010)

Filesharer schrieb:


> Von Schrittketten hat Uns der Lehrer noch gar nichts erzählt, vielleicht könnte mir das jemand besser erklären, vielleicht hilft mir das dann auch schon weiter.


 
Ein Programmbeispiel für eine einfache Schrittkette in FUP findest Du hier:

http://www.sps-forum.de/showpost.php?p=120722&postcount=1

http://www.sps-forum.de/showpost.php?p=121127&postcount=15

http://www.sps-forum.de/showpost.php?p=121128&postcount=16

Gruß Kai


----------



## Filesharer (28 Februar 2010)

Danke für die Links, habe ich mir mal angeschaut, ist schon ordentlich für

Anfänger.

Mich würde es jetzt aber interessieren, nach welchem Plan ich die einzelnen

Bausteine zusammenfüge.


----------



## Larry Laffer (28 Februar 2010)

zur Beantwortung dieser Frage würde ich hier ausdrücklich nochmals auf den Beitrag von Markus verweisen. Dort bist das für dich Relevante wirklich gut beschrieben ...

Gruß
LL


----------



## WolfgangKa (11 März 2010)

Guten Tag an alle -
also ich denke es ist für grössere Anlagen komplizierter (das was Markus geschrieben hat finde ich nicht schlecht) - hier eine paar zusätzliche Bemerkungen (ich denke es gibt sicher besseres - aber das hat bisher gut geholfen) (und Software erstellen auch S7 ... ist eine Kunst).
Ein Ansatz ist sicher die Anlage in "handliche" Teile zu zergliedern. Also, so dass möglichst wenig Schnittstellen zu anderen "vorderen" und "hinteren" vorhanden sind. Dabei gibt es noch einen wichtigen Teil, den ich mal mit Schrank bezeichen möchte. 
Diese Teile / Gruppen bekommen dann ihre FCs / FBs. Innerhalb der Gruppen sollte mann einen "Start" FC nehmen, der die "untergeordnen" FCs aufruft. Den Start FC dann in den OB1 aufnehmen. Hat den Vorteil, das mann die Gruppen Stück für Stück in Betrieb nehmen kann, und die noch ungetesten einen nicht zwischenfunken.
Nun zu einem möglichen Gruppenaufbau
OB1
      ---- FC_Gruppe1 (hier Start / Stop Gruppenfreigabe / Hand - Automatik ...)
                    +
                    +  FC_Gruppe1_error (Sammelmeldung Störungen, Störungserkennung
                    +                            Plausibilitäten, Fahrüberwachungen etc.)
                    +  FC_Gruppe1_Hand (Logik für Hand- / Einrichten ...)
                    +  FC_Gruppe1_Automatik (Schrittketten etc. )
                    +  FC_Gruppe1_Visu   (Zusammenführen von Meldungen für Visu
                    +                              Kommunikation ....)
                    +  FC_Gruppe1_Ouputs (Setzen - Schreiben der Ausgänge)    

Den Schaltschrank auch als Gruppe betrachten. Hier z.B. die Sammelmeldungen aller Gruppen zusammenfassen. Freigabe der Anlage dann erzeugen, wenn z.B. NotAus ok, Steuerspannung ok, kein Automat / keine Sicherung gefallen ist / Druckluft da ist etc.
Dieses System hat meiner Meinung einige Vorteile.
Also ein Antrieb läuft nicht (soll aber)
im Output FC schauen kommt der Merker aus Hand / Automatik
nicht da - z.B. Hand - dann im FC-Hand schauen --> Freigabe nicht da
dann in Gruppen FC schauen --> z.B. Sammelfehler der Gruppe (ggf. der Anlage)
im error Baustein schauen --> z.B. Überwachung angesprochen 
Aus diesen Überlegungen ergeben sich dan die weiteren Schritte der Programmierung. 
Hilfreich bei komplexeren Sachen war die Erstellung von Zustandsgraphen. Die sind dann eine gute Grundlage für Schrittketten.

Ach so - da gibt es noch ein gutes Buch (mal in einer guten Bücherei schauen) Günter Wellenreuther - P. Zsatrow Automatisieren mit SPS Theorie und Praxis.

Für weitere Ideen etc. wäre ich dankbar - wenn auch selbst manchmal nicht so einfach ist es zu sehen, es gibt oft immer noch was besseres.
mit Gruß an alle
Wolfgang
PS: Zuordnungsliste nebenbeimachen (importieren auch ElektroCAD wenn möglich)


----------



## Jan (11 März 2010)

Ich persönlich habe die Frage anders verstanden.

Vom Grundsatz gehe ich so vor.

1. HW-Konfig. anlegen
2. Symbolik anlegen (DE/DA/PEW/PAW)
3. Grundstruktur anlegen (in unserer Firma gibts viele Standartbausteine)
4. Antriebe anlegen und grundsätzlich beschalten (dann ist die Handbedienung schon fertig).
5. Automatikfunktion programmieren (Ob Schrittkette oder einzelne Bedingungen, je nach dem, was passieren soll), (hierzu wurde schon einiges geschrieben)
6. Simmulation des Programms (bevorzugt mit der original Hardware, damit es keine bösen Überraschungen gibt)
7. Inbetriebnahme der Anlage.

Vieleicht habe ich die Frage falsch verstanden, dann darf der Text ignoriert werden.


----------

