# Funktionsbausteine - So in Ordnung?



## MSP (19 Juli 2005)

Hallo,

meine ersten Schritte in S7 nehmen so langsam Form an 

Ich bin im Moment dabei ein Hochregallager zu Programmieren, wo ein Stapler auf 3 Achsen (x,y,z) halt Waren ein- und auslagern soll.

Dabei dachte ich mir, das ich für jede Funktion einen eigenen FB nehme:

FB1 - X-Achse links
FB2 - X-Achse rechts
FB3 - Y-Achse hoch
etc pp..

Halt für alles was irgendwie eine eigene Funktion ist, wird ein eigenes FB erstellt und anschließend im OB1 aufgerufen..

Nun die Frage die im Walde steht:
Ist das so in Ordnung? Oder geht man an solch Dinge ganz anders heran?
Wie gesagt, mir fehlt die Erfahrung in dem Bereich...  :? 

Dann eine weitergehende Frage:
Wenn ich in besagtem FB1 z.B.  mit den Netzwerken arbeite, in wie fern beisst sich da die zyklische Bearbeitung?
Wenn ich zB in Netzwerk 1 die Abschaltbedingungen abfrage, in Netzwerk 2 dann die Bedingungen für die Ausgabe einer eigenen Störung, in Netzwerk 3 dann das Fahren der Achse, in Netzwerk 4 dann das beenden der Fahrt ( Endschalter ) und in Netzwerk 5 zB das erfassen der Position durch auswerten einer Flanke und hoch- bzw. runterzählen eines Counters.

Ist das auch so normal das man in einen solchen FB dann alles hinein stopft was mit der Funktion zu tun hat die dieser FB darstellen soll?`

Wie gesagt, bisher noch keine Erfahrung wie man solch ein Programm am einfachsten und logischsten aufbaut 

Und als letztes dann... ich habe einen DB in dem ich 14 Array's speichern möchte, bool'sche Werte und den letzten Zugriff auf dieses Array ( Uhrzeit und Datum ).
Welchen Datentyp müss ich dem Feld für das Datum / Uhrzeit geben? date_and_time ( oder wie das genau heisst ) bringt bei jeder aktualisierung eine neue Uhrzeit in das Feld  :?: 

Ich hoffe Ihr könnt mir ein wenig aus Eurer Erfahrung berichten wie Ihr solche Programme erstellt bzw. aufteilt.

Michael


----------



## plc_tippser (20 Juli 2005)

Hallo Michael,
ich hätte einen FB für vor/zurück geschrieben, und diesen dann für alle 3 Achsen genutzt. Dazu würde der FB 3x in einem FC(alternativ FB mit Multiinstanz) aufgerufen und entsprechend beschaltet. Es ist egal, ob die Achse rauf/runter  od. rechts/links  od. vor/zurück fährt. Dann brauchst du einen Fehler auch nur einmal korregieren.

Die Netzwerke sind nur für die Übersicht da. Du könntest auch alles in ein NW schreiben. Der Interpreter liest von oben nach unten. Dabei ist drauf zu achten, dass du Signal, die in folg. Netzwerken gebildet werden, nicht im vorherigen NW gebraucht werden (Stichwort: Gültigkeit von Varialben).

Date_and_time ist schon gut. Aber das Problem kann ich so nicht erkennen. Wahrscheinlich stimmt dein Code nicht..


Gruß, pt


----------

