Programmaufbau, -ablauf

Stoif

Level-1
Beiträge
4
Reaktionspunkte
0
Zuviel Werbung?
-> Hier kostenlos registrieren
Servus!

die Abschlussprüfungen rücken näher, und ich steh noch immer auf ner 5 in Steuer- und Regelungstechnik X_X
Wie fangt ihr an? Was mach ich nur falsch? Ich brauch echt dringend die Hilfe von Profis, sonst kann ich meinen Technikertitel vergessen.
Wir programmieren auf Step5, Zeug wie die allgemein bekannten Rolltore, Silobefüllung, Ampelschaltung..eigentlich den ganzen Kram, über den ihr wahrscheinlich lachen werdet.
"Erstelle ein ablauffähiges Programm in AWL", der Satz verfolgt mich schon nachts.
Einen Grafcet krieg ich ja noch hin (najaaa..ich hoff es mal) aber FUP bricht mir anschließend endgültig das Genick.

Wie fangt ihr an, ein Programm zu schreiben?
Gibt es irgendwelche Tricks, die Übersicht zu behalten?
----wie schreibt man ein Programm?!


:confused:

viele Grüße, Stoif
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Strukturierte Programmierung?

Vielen Dank für die Antwort, doch hilft sie mir ehrlich gesagt, absolut nicht weiter. Ich versuch verzweifelt jedesmal eine strukturierte Programmierung, aber es haut nicht hin. Nicht im Geringsten.
Erstmal Grunstellung zusammenfassen, alles klar, mach ich.
Dann die weiteren Schritte programmieren...auch logisch...
Nur Klappen tut es nie.
Hat jemand vielleicht Aufgaben mit Lösungen?! Wo auch Hilfestellungen dabei sind, warum man was grad tun muss?
*Verzweiflung*
 
Wie fangt ihr an, ein Programm zu schreiben?
Bei "Rolltore, Silobefüllung, Ampelschaltung" könnte ich jetzt sagen: Ich schreib es von oben runter im OB1. Aber das ist nicht das, was du hören willst; es stimmt auch nicht ganz, ich schreib bei S5 immer FB, weil man da alle Befehle nehmen darf und den FB wiederverwenden kann.
Gibt es irgendwelche Tricks, die Übersicht zu behalten?
Ablaufdiagramme. Tabellen. Standard-Methoden.
----wie schreibt man ein Programm?!
So, wie man mag, wie man es kann, wie es eine Kundenanforderung vorgibt oder wie es die Resourcen zulassen.

Zu den Hilfsmitteln:
Ablaufdiagramme sind besonders nützlich für Schrittketten, wie sie z:B. in Verpackungs- oder Handhabungsmaschinen vorkommen. Leider muß ich ein Beispiel erfinden. Nahe an der Silobefüllung ist eine Abfüllstation.
1. Behälter fällt hinein.
2. Waage erhält Signal für Leerbehälter wiegen (Tara)
3. Waage meldet "Tara ermittelt"
4. Füllschlauch wird über Behälter positioniert
5. Befüllung
6. Füllschlauch zurückziehen
7. Behälterdeckel wird in Position gebracht
8. Behälterdeckel wird niedergedrückt
9. Stempel für Deckel niederdrücken wird angehoben
10. Behälter wird rausgefördert
Weiter bei 1

0. Station ist in unbekanntem Zustand (z.B. nach Netz aus mit Behälter drin).

Der Übergang zwischen zwei Zuständen wird durch eine Bedingung bewirkt (Transition).

1->2 Endschalter "Behälter vorhanden" (EBV)
2->3 Zeitglied (die Waage braucht eine Mindest-Signaldauer) (T1)
3->4 Eingang "Tara gewogen" von der Waage kommt (ETG)
4->5 Endschalter "Füllschlauch über Behälter" (EFB)
5->6 Eingang "Gewicht erreicht" von der Waage kommt (EGE)
6->7 Endschalter "Füllschlauch in Ruheposition" (EFR)
7->8 Endschalter "Deckel über Behälter" (EDUB)
8->9 Endschalter "Deckel niedergedrückt" (EDNG)
9->10 Endschalter "Stempel oben" (ESTO)
10->1 nicht Endschalter "Behälter vorhanden" (EBV) und Endschalter "Behälter erreicht Position hinter Füllstation" (EBHF)

Jeder Zustand wird durch einen Merker repräsentiert.
1=M0.1
...
7=M0.7
8=M1.0
9=M1.1
10=M1.2

Nun die Schritte durch die Übergangsbedingungen weiterschalten:
U M0.1 // wenn Schritt 1
U EBV // und Endschalter "Behälter vorhanden"
S M0.2 // nächsten Schritt setzen
R M0.1 // aktuellen Schritt löschen

U M0.2 // wenn Schritt 1
U T1 // Zeit für Signal an Waage
S M0.3 // nächsten Schritt setzen
R M0.2 // aktuellen Schritt löschen

Das kannst du für alle Schritte so machen.

... (mach mal!)

Der Übergang von 10->1 hat allerdings eine Kombination als Bedingung:

U M1.2 // wen Schritt 10
UN EBV // und nicht Endschalter "Behälter vorhanden", also Behälter wech
U EBHF // Behälter erreicht Position hinter Füllstation
S M0.1 // nächsten Schritt setzen
R M10.2 // aktuellen Schritt löschen

Jetzt kommen die Aktoren:
In Schritt 1 öffnet eine Klammer, die den Behälter fallen läßt:

U M0.1
= A_MAGNETVENTIL_BEHÄLTERKLAMMER

In Schritt 2 wird der Waage signalisiert, daß sie Tara wiegen soll. Zudem wird ein Zeitglied laufen lassen:

U M0.2
= A_TARAWIEGEN

U M0.2
L KT 5.1 // 0.5 Sekunden Impulsdauer, damit die Waage es merkt
SE T1 // Beendet diesen Schritt nach der Zeit

In Schritt 3 wird gar kein Aktor angesteuert. Wir warten einfach auf die Waage.

In Schritt 4 wird ein Magnetventil angesteuert, daß den Füllschlauch über den Behälter schiebt.

Den Rest kannst du selbst ergänzen.

Schritt 0 tritt auf, wenn die Steuerung eingeschaltet wird. Je nach Bauart der Maschine muß geprüft werden, ob alle Elemente in Grundstellung sind. Wenn nicht, ist Handeingriff nötig, z.B. um einen Halbvollen Behälter oder einen verklemmten Deckel zu entfernen. Nach Startsignal und wenn dabei alle Endschalter etc. in Grundstellung sind, geht es zu Schritt 1.

Was ich mit "Standard-Methoden" meine:
1. Stop oder Endlagenschalter drahtbruchsicher ausführen. Eingang liefert 1, solange Schalter nicht betätigt.
2. Etliche Schritte enden dadurch, daß ein Aktor eingeschaltet und auf das Ende der Bewegung gewartet wird. Möglicherweise "klemmt" etwas und die Endlage wird nie erreicht. Zu Diagnosezwecken startet man eine Zeit, die größer ist als die Zeit, die die Bewegung normalerweise braucht. Läuft diese Zeit ab, klemmt wohl etwas. Aktor aus und Störmeldung.
3. Oft kann man auch schon überwachen, ob sich der Aktor überhaupt aus der Ausgangsstellung (der vorigen Endlage) wegbewegt. Wenn nicht, kann man das Klemmen schon früher erkennen und Überlastung minimieren.
4. Bei Endschaltern für entgegengesetzte Endlagen dürfen nie beide (oder mehrere) signalisieren, sonst ist wohl ein Endschalter defekt.
5. Auch der Füllvorgang kann mit einer Zeit überwacht werden.
6. Sinnvollerweise überprüft man die Bereitschaft von Aktoren (Motorschutz, Luftmangel, Bereitschaft von Umrichtern,...), die man benötigt, um einen Schritt zu beenden, bevor man diesen Schritt startet (Wenn man trotz Luftmangel das Magnetventil zur Befüllung öffnet, geht es vielleicht unter dem Druck von Schüttgut auf, aber nicht gegen den Druck wieder zu und der ganze Zeug "läuft aus").

Natürlich kann man auch die Ampelschaltung in so eine Schrittkette fassen. Aber für eine Kreuzung mit zwei Strassen reicht eine Tabelle:

Ost-West Nord-Süd
rot grün
rot-gelb gelb
grün rot
gelb rot-gelb

Transitionsbedingung ist immer eine Zeit, eben die Dauer der Ampelphase.
Das ist natürlich nur eine von vielen Möglichkeiten...
 
Respekt Zottel !!!

Gut erklärt. Damit sollte er eigentlich klar kommen.
Aber mal ganz ehrlich. Er macht ne Technikerprüfung auf S5?!?!

Sag doch bitte mal deinem Lehrer, er solle mal einen Schritt in das "Jetzt" machen und nicht in Vergangenheit schwelgen....

Gruß wolder
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Respekt Zottel !!!

Gut erklärt. Damit sollte er eigentlich klar kommen.
Aber mal ganz ehrlich. Er macht ne Technikerprüfung auf S5?!?!

Sag doch bitte mal deinem Lehrer, er solle mal einen Schritt in das "Jetzt" machen und nicht in Vergangenheit schwelgen....

Gruß wolder

Du nimmst mir das Wort aus dem Mund, genau das habe ich auch gedacht wo ich es gelesen habe :rolleyes:
 
=d

Super, Zottel, vielen Dank!
Ich versuch das Ganze gleich mal, echt toll erklärt.
@Wolder: Wenn man mit dem reden könnte, würd er mir vielleicht auch das Programmieren anständig erklären ;) Aber nächstes Jahr gibts Step7 (wenn ich nicht mehr da bin) ..ach und.. ich bin ne sie :p

So, hier mal mein Programm: (in hoffentlich ablauffähiger Form)

OB1
PB1 Behälter fällt auf Endschalter
U M0.1 // Grundstellung (?)
U E0.1 // Endschalter 1-Signal
S M0.2 // Setze FF
R M0.1 // Neues Teil fällt auf Endschalter und setzt M0.2 zurück

PB2 Zeitglied SE
U M0.2 // Start Zeit
L KT 5.1 // Zeitwert 5 s
SE T1

PB3 Wiegen
U M0.2 // Setzbedingung
U T1 //und Zeit
S M0.3 // set
R M0.2 //reset

PB4 Tara wiegen
U M0.3 //Setzbedingung
U E0.2 // Ausgang Waage hat 1-Signal
S M0.4
R M0.3

PB5 Schlauch kommt
U M4.0
U E0.3 // Füllschlauch in Endlage
S M0.5
R M0.4

PB6 füllen
U M0.5
U E0.4 // Sollgewicht erreicht => Ausgang 1-Signal
S M0.6
R M0.5

PB7 Füllschlauch in Ruheposition
U M0.6
U E0.5 // Endschalter Füllschlauch Ruheposition
S M0.7
R M0.6

PB8 Deckel positionieren
U M0.7
U E0.6 //Endschalter Deckel über Behälter
S M1.1
R M0.7

PB9 Deckel schließen
U M1.1
U E0.7 // Untere Endlage Deckel verschließen
S M1.2
R M1.1

PB10 Stempel in oberer Endlage
U M1.2
U E1.0 // Obere Endlage Stempel
S M1.3
R M1.2

PB11 Setzen in Grundstellung nach Durchlauf (?)
U M1.3 // Setzbedingung vorhergehen
U E1.1 // Behälter auf hinterer Position
UN M0.2 // kein neuer Behälter da
S M0.1
R M1.2

:: DE (oder so?)

E0.1 Endschalter Behälter ist da
E0.2 Waage auf Tara gesetzt
E0.3 Endlage unten Füllschlauch
E0.4 Gewicht erreicht
E0.5 Endlage Füllschlauch Ruhestellung
E0.6 Endlage Deckel über Behälter
E0.7 Endlage unten Stempel
E1.1 Endlage oben Stempel
E1.2 Behälter in hintere Position


jetzt is nur die drahtbruchsicherheit weg..oder?
 
Zuletzt bearbeitet:
So, hier mal mein Programm: (in hoffentlich ablauffähiger Form)
in OB1 müßten die anderen Bausteine ja aufgerufen werden, damit sie überhaupt bearbeitet werden:
SPA PB1
SPA PB2
SPA PB3
...
BE

Es ist keine so gute Idee, jeden Schritt in einen eigenen PB zu packen, wegen der Übersichtlichkeit. Bei großen Programmen reichen auch die 255 PBs, die die S5 erlaubt nicht mehr. Typisch wäre ein Netzwerk pro Schritt.

Ein weiterer PB könnte z.B. benutzt werden, um die Ansteuerung der Aktoren zu bewirken.

Das folgende kannst du in die Symboltabelle schreiben:
E0.1 EBV Endschalter Behälter ist da
E0.2 ETG Waage auf Tara gesetzt
usw.

Der Vorteil: Du kannst mit den Symbolischen Namen arbeiten und mußt dir nicht die Funktion aller Eingänge merken. Natürlich geht das auch für Merker und Ausgänge.
Wenn du bei S5 den Batch Compiler oder bei Step7 Quellen benutzt, kannst du zum UMVERDRAHTEN einfach einen Eingang, Merker usw austauschen und alles neu übersetzen.

Ich hatte im Beispiel auch noch keine Drahtbruchsicherheit angenommen. Ein Drahtbruchsicherer Schalter liefert halt so lange 1, wie er NICHT betätigt ist. Aus:

PB5 Schlauch kommt
U M4.0
U E0.3 // Füllschlauch in Endlage
S M0.5
R M0.4

wird also:
U M4.0
UN E0.3 // Füllschlauch in Endlage wenn Eingang 0
S M0.5
R M0.4
 
Zuviel Werbung?
-> Hier kostenlos registrieren
in OB1 müßten die anderen Bausteine ja aufgerufen werden, damit sie überhaupt bearbeitet werden:
SPA PB1
SPA PB2
SPA PB3
...
BE

Ach du Schande, jetzt wo du es sagst...das hätten Mal NW´s werden sollen glaub ich :p

Ich hab heut mal alle Aufgaben gemacht, die wir so in der letzten Zeit bekommen haben und die Erstellung dauert keine 15 Minuten pro Aufgabe mit deinem System! :shock:
Morgen stellt sich dann hoffentlich raus, ob alles stimmt was ich da gebastelt hab. (die Zuversicht ist jedenfalls zurück!)

Arbeitszeitverkürzung -150%
Verständnis +99% Level up auf 100%

Neues aus der SPS-Hölle dann morgen nach der Korrektur, ob die Werte einzuhalten sind :p
DANKE ZOTTEL!
 
Zurück
Oben