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...