bibliotheksfähiger Baustein

Supervisor

Level-1
Beiträge
93
Reaktionspunkte
2
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo SPS-Experten,

hab mal ne einfache Frage :) :

Wenn man einen Baustein erstellt, in dem andere Bausteine aufgerufen werden, ist es dann zwingend nötig, diese immer mitzuspeichern?

Beispiel:
Baustein FB1 soll in eine Bibliothek aufgenommen werden und soll allgemeingültig auf anderen SPSen zum Einsatz kommen. Nun ruft dieser FB1 andere Bausteine auf, beispielsweise FC2 und FC3 in denen spezielle Algorithmen abgearbeitet werden. Muss man nun die Funktionen FC2 und FC3 immer mit in die Bibliothek aufnehmen oder kann der FB1 die intern irgendwie mitabspeichern?
Blödes Beispiel, aber in dem Office-Programm WORD kann man ja auch Bilder nur verlinken (die müssen dann ja bei Weitergabe des Dokuments mitgegeben werden) oder direkt im Dokument speichern.
 
Also meines Wissens nach müssen alle Bausteine in die Bibliothek aufgenommen werden, damit diese auch aufgerufen und eingefügt werden können.

Ich würde aber höhere Nummern für den FBs und die FCs vorschlagen, da die niedrigen Nummern meist Siemens intern bereits vergeben sind.

(Siehe CP Funktionen, FC2 - IPConfig usw.)

Wenn diese Bausteine intern (im FB) aufgerufen werden, dürfen die FCs nicht umnummeriert werden, was dann zu Problemen führen kann.

(Z.B. IP - Konfig und die selbst erstellte Funktion sollen in selben Projekt zum Einsatz kommen - hatte bereits ein ähnliches Problem)


Außerdem wäre es programmverwaltungstechnisch keine saubere Lösung. Sobald das Projekt auf das verlinkt wird, gelöscht oder verschoben wird, könnte es passieren das zig Programme nicht mehr laufen, weil sie den Bezug verloren haben.


Fazit: Alles in die Bibliothek rein.
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo CrazyCat,

Mist! :???: Dann hab ich ein großes Problem! :twisted:

Ich hab einen FB erstellt, in dem zig andere FCs aufgerufen werden, weil ich dachte, dass es ja super bequem ist, einzelene Funktionen zu erstellen, die irgendwas machen und aus diesen baue ich dann einen großen FB und fertig. Das blöde is nur, dieser FB muss in eine Bibliothek, weil er woanders auf anderen Systemen auch zum Einsatz kommen soll und da gibt es aber schon andere FCs und FBs mit meinen Nummern.

Wenn ich das richtig sehe, dann dürf ich nun alles nochmal neu machen und alle verwendeten "Unterfunktionen" direkt in dem FB programmieren. Macht man das eigentlich immer so? Ist doch tierisch umständlich?
Und welche FB-Nummern nimmmt man eigentlich, um mit anderen Nummern nicht in den Konflikt zu kommen?
 
Hei,

bei Funktionen, die ich oft benutze, mache ich mir die Arbeit und programmiere soviel aus wie möglich. Somit bekomme ich nie Stress, wenn ich den Baustein in andere Projekte kopiere.

Ich habe aber auch einen Baustein, der die Endlagen von 8 Zylindern/Klappen etc. überwacht. Da habe ich einen FB15 den ich als Multiinstanz im FB16 aufrufe. Nur da laufe ich dann wie o.g. in das Problem, wenn die FB-Nr. schon benutzt ist, das ich alles ändern kann.

Fazit, du musst den Aufwand und die Häufigkeit abwiegen.


pt
 
Für Bibliotheksbausteine nehme ich in der Regel Nummern zwischen 50 und100.

Naja, in der Regel bastelt man bei einem großen Baustein nicht alles in einen Baustein, sondern in 2.

Einen der die Hauptfunktionen ausführt und einen in dem die ganzen Unterprogramme zusammengefasst sind. Macht auch Siemens so.

Oder ein modularer Aufbau, bei dem ich die Funktionen die ich benötige selektieren kann. In diesem Fall habe ich zwar viele FCs in der Bibliothek, aber ich lade mir nur die die ich tatsächlich benötige.

Z.B. eigene Funktion für die Berechnung der 4. Wurzel, eine eigene Funktion für die Berechnung vom Verteilungen usw.

Im Programm müssen aus diesen Funktionen dann eben wieder eine Funktion gebastelt werden.
(Zuerst Wurzel berechnen, dann Verteilung berechnen,.......)

Das ganze ist eine Frage der Aufgabenstellung. Wenn exakt die gleiche Funktion für viele andere Steuerungen übernommen werden soll, bist du besser dran wenn du einmal eine große Funktion schreibst.

Werden immer nur Teile verwendet ist der modulare Aufbau wahrscheinlich besser geeignet.
 
Hallo,

nimm doch einen zusammenhängenden Nummernbereich für die FB die du dann intern indirekt aufrufst und deren Startadresse an den "Ober-FB" anparametriert wird. Mit einer Anparametrierung der unter-FB wird es zwar schwieriger aber ein DB zum Datenaustausch sollte bestimmt auch noch frei sein.

Grüße Thomas
 
Hallo Supervisor,

1. Du solltest alle Deine Bausteine, die Du für Dein Programm brauchst zusammen in deb Biliothek ablegen. Dafür kannst du in Deiner Biliothek ein S7 Programm einfügen, welchem Du einen verständlichen Namen gibst. Andere Funktionen können in einem anderen S7 Programm abgelegt sein, so Ähnlich wie im Explorer die Baumstruktur. Damit weist Du immer was zusammen gehört und dann in das Programm kopiert werden muß.
Code:
Biliothek
    S7- Heizungssteuerung 
    S7- Transportsteuerung
    :

2. Du kannst normalerweise alle Bausteine umnummerieren. Im Simatic Manager, rechte Maus auf Baustein, Umbenennen. Allerdings ist S7 nicht so schlau und ändert dadurch Deinen Baustein Aufruf. Der muß händich geändert werden.
Allerdings könntest Du wenn Du mit AWL Source Code arbeitest mit Symbolischer Adressierung arbeiten. Dann würde die Bausteinzuordnung bei der Generierung durchgeführt werden.
Könnte in deinem Fall eine Lösung darstellen. War das verständlich genug, was ich meine?

3. Es gibt leider keinen garanierten freien Adressraum für die Siemensbausteine, selbst die überschneiden sich manchmal und müssen dann umnummeriert werden. Die meisten liegen unter 100. hab aber auch schon welche zwischen 100 und 200 gesehen.

Hoffe konnte etwas helfen,
Gruß Floh
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Danke für die Antworten :) !

Da muss ich mich wohl oder übel doch noch mal ransetzen und anfangen mein FB neu zu tippen. Mein Auftraggeber wünscht halt nur einen FB, den er seinen Kunden (die vielleicht so wie ich keine Ahnung mit dem Umgang der SPS haben !?) anbieten kann. Der erstellte FB hat mehrere feste Funktionen, die immer gleich ablaufen auf allen SPSen. Hätt ich das mit der Bibliothek bloß von Anfang an gewusst...Mist!
Hätt ich bloß mal bei euch früher nachgefragt...
 
Hallo,

auf die Gefahr hin das ich etwas falsch verstanden habe,

mal grob ausgedrückt:
kopier die einzelnen FB hintereinander in einen FBder über eine anparametrierbare Funktionsaufrufnummer dann zur gewünschten Funktion springt und den Rest ignoriert.

Grüße Thomas
 
verstehe ich dich richtig?
du willst einen baustein sozusagen indirekt aufrufen?

also in etwa so
call FC[MD10]
 
Zuviel Werbung?
-> Hier kostenlos registrieren
warum nicht?

bei s5 öfters gemacht sollte es bei s7 nicht mehr gehen?

ich lass mich gern eines besseren belehren

Grüße Thomas
 
Zuletzt bearbeitet:
Hallo,

das mit der anparametrierbaren Funktionsaufrufnummer meine ich so,

du gibst z.B. die Nummer 4 von außen deinem FB mit der springt dann intern an den Bereich der dafür hinterlegt ist z.B.Division von 2 DW und die anderen Bereiche wie Multiplikation oder Addition die vielleicht hinter Funktion 1 bzw2 liegen werden ignoriert

Grüße Thomas
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Ach so, so meinst du das.
Aber ich glaube das bringt mich nicht viel weiter bei meinem Problem?
Deswegen muss ich doch trotzdem noch die Funktionen 1...irgendwas in meinem Hauptprogramm zur Verfügung stellen, oder ?

Nur das wir uns nicht missverstehen:
Ich haben einen großen FB, der sich aus vielen kleinen FCs zusammensetzt. Wenn ich nur diesen FB allein in eine Bibliothek aufnehme, dann funktioniert dieser FB auf anderen Systemen nicht, weil er ja meine anderen FCs, die er intern aufruft, nicht finden kann oder schon auf dem neuen System durch andere FCs mit der gleichen Nummer belegt sind.
 
Zuletzt bearbeitet:
Hallo,
ja vielleicht ist es weniger aufwand denInhalt des FC1 in NW1 kopieren, den Inhalt FC2 in NW2 kopieren ... usw als alles neu zu machen war nur so ne idee
Grüße Thomas
 
Zuviel Werbung?
-> Hier kostenlos registrieren
1. ein indirekter bausteinaufruf ist imho nicht möglich. aber da lasse ich mich gerne eines besseren belehren. ;)

2. alle fc's in eine fc zu packen halte ich für äusserst schlecht.
da hat man, was weiss ich, 20 funktionen drin von der gerade mal eine gebraucht wird. das müllt nur das programm voll.

am besten wäre wahrscheinlich über eine quelle zu arbeiten in der der aufruf symbolisch erfolgt.
oder die nummer der fc für diese funktionen in allen anlagen reservieren, was im nachhinein wahrscheinlich gar nicht so ohne weiteres geht.
 
thomass5 schrieb:
Hallo,
ja vielleicht ist es weniger aufwand denInhalt des FC1 in NW1 kopieren, den Inhalt FC2 in NW2 kopieren ... usw als alles neu zu machen war nur so ne idee
Grüße Thomas

Man muss auf die maximale Bausteingröße achten. Bei kleinen 300er liegt die bei 8K. Bei der 312 könnte er sogar noch kleiner sein, keine Ahnung. Also, du musst auch wissen, in welchen CPU´s der Baustein zum Einsatz kommt und dann dich über die technischen Daten informieren.

pt
 
Zurück
Oben