FC's mit Parameterübergabe

Gini

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

ein anderer (passenderer) Titel fiel mir leider nicht ein.

Mich würde mal eine Sache brennend interessieren:

Ich habe hier ein Projekt übernommen. Die CPU 315-2DP ist so ziemlich rappelvoll. Nun habe ich gesehen, dass der "Vorgänger" 16! mehr oder weniger identische Bausteine (Länge > 1000) geschrieben hat.

In diesen Bausteinen sind lediglich Ein- und Ausgänge, einige Timer und natürlich irgendwelche Merker unterschiedlich.

Wie würde es sich jetzt verhalten wenn ich einen FC oder FB erstelle in denen ich diese EA's usw. per Parameter übergebe ?

Wird das Programm kürzer oder dient es nur offline der Vereinfachung ?

Wie wird das Programm dann in der CPU abgearbeitet ? Wirklich nur einen FC oder FB (mit DB) inkl. Paramterübergabe, oder wird das beim Compilieren wieder in einzelne Bausteinaufrufe übersetzt ?

Wäre für mich wirklich interessant zu wissen bevor ich versuche diese 16 Bausteine auf einen zu verkürzen. Die sind wirklich exakt identisch bis auf die paar EA's usw.


MfG, Iris
 
Hallo Gini,

zuerst musst Du dir im klaren sein, welche Operanden "immer wieder" (also die jeweils verwendeten Hilfsmerker ect.) und welche Operanden "immer unterschiedlich" (Eingänge, Ausgänge) verwendet werden.
Die verschiedenen Eingänge deklarierst Du dann als "IN"-Parameter, die Ausgänge als "OUT"-Parameter.
Die Hilfsmerker, die immer wieder vorkommen kannst Du dann im "TEMP"-Bereich deklarieren. Vorsicht bei R/S-Gliedern! Diese musst Du bei einem FC als "INOUT" verwenden, oder Du nimmst gleich einen FB und deklarierst diese Speicherbausteine im "STAT"-Bereich. Bei verwendung von FB's kannst Du zum Sparen von Instanz-DB's diese FB's als "mulitiinstanzen" deklarieren. Dazu musst Du deinen neu geschriebenen FB in einem übergeordneten FB im "STAT"-Bereich aufrufen.

Viel Spaß beim Vereinfachen. :p

Gruß Approx

P.S.: Ja, das Programm wird dadurch kürzer und belegt weniger Speicher.
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Moin,

warum sollte es kürzer werden?
Jetzt hast du das Programm auf mehrere FC´s aufgeteilt und diese werden nacheinander bearbeitet.
Wenn du nur einen parametrierbaren FC hast und diesen oftmals aufruft, dann hast du im Prinzip das gleiche, nur halt offline nicht so viel geschrieben.

Das Programm arbeitet den beispielsweise FC3 (parametrierbar) eben öfters ab, nur mit anderen Parametern.

Wie heißt es so schön:
Never change a running system

Vereinfachen geht fast immer, aber warum?!
Wenns läuft, dann ist es doch gut!

Gruß wolder
 
Quatsch,

natürlich wird die Bausteinsumme kleiner, da es den baustein nur noch einmal gibt. Der Bausteinaufruf wird zwar größer aber das sind nur ein paar Byte.

Ein klassisches Beispiel dafür das der Programmersteller davon keine Ahnung hatte.

Wichtig ist aber zu sehen ob die bausteine wirklich gleich sind, aber selbst wenn man eventuell aus den 16 zwei oder drei macht , bringt das einiges.
 
Die Bausteinsumme wird kleiner. Klar.
Anstatt 16 hab ich dann vielleicht nur noch 1 Baustein.

Aber das Programm bzw. die Programmzeilen werden doch nicht kürzer.

Ob ich 16 Bausteine mit 10 Zeilen mache oder 1 mit 10 Zeilen, den ich dann 16 mal aufrufe. Wo ist da der große Unterschied?

P.S.: ich hatte mich verlesen. Ich dachte er meinte es auch auf die Zykluszeit bezogen.
Das Programm wird natürlich kürzer!
 
Zuletzt bearbeitet:
Zuviel Werbung?
-> Hier kostenlos registrieren
Moin,

...

Wie heißt es so schön:
Never change a running system

Vereinfachen geht fast immer, aber warum?!
Wenns läuft, dann ist es doch gut!

Gruß wolder


Ich kenn' den Spruch entweder: "Never change a winning Team!" oder: "Never touch a running System!" :p

Aber wenn es der Übersichtlichkeit dient, warum dann nicht das Programm vereinfachen? Teile, die immer wieder bearbeitet werden, schreien geradezu danach parametrierbar gestaltet zu werden!

Ein klassisches Beispiel dafür das der Programmersteller davon keine Ahnung hatte.

*ACK*

Gruß Approx
 
Zurück
Oben