rs-plc-aa
Level-1
- Beiträge
- 727
- Reaktionspunkte
- 57
-> Hier kostenlos registrieren
Hallo,
Ich bin jetzt das erste mal über die 16kB Limitierung gestolpert die für Bausteine gilt wenn eine CPU kleiner 317 verwendet wird.
Für die die das noch nicht wissen:
Die SIMATIC (egal ob 300 oder 400) hat eine generelle begrenzung für einzelne Bausteine auf 64kB. Dies geht bei der CPU 317 los und geht bis zur größten 400er. Die CPUs 315 und kleiner sind pro Baustein auf 16kB begrenzt - und hier liegt jetzt mein Problem...
Ich habe einen FB mit ziemlich umfangreicher Schnittstelle und sehr viel Code als eine Art "Black-Box" gebaut - d.h. er hat viele Optionen die nicht immer gebraucht werden aber von aussen über die Schnittstelle aktiviert werden können.
Dieser beinhaltet auch eine Schrittkette auf Basis einer Wortvariable (Schrittnummer).
Da das gute Stück von Projekt zu Projekt stetig wächst (immer mehr Optionen kommen hinzu) und ich eigentlich schon das ganze am stück behalten will weil es einfach besser zu pflegen ist stehe ich nun vor dem Problem dass ich ihn nicht mehr in eine 315er reinkriege - diese würde aber dieses mal reichen weil es verhälnismäßig wenig optionen sind, ein großteil also nicht genutzt wird.
Ich habe schon Überlegungen angestrengt bestimmte Teilfunktionen auszulagern - aber gerade diese bringen Speicherplatztechnisch am wenigsten.
Ich müsste also die Schrittkette splitten.
Angenommen es sind 100 Schritte und 50 davon packe ich in einen neuen FB, wie wäre jetzt die optimale Vorgehensweise die beiden Schnittstellen zu gestalten daß das ganze nachher noch so läuft als wäre es im selben FB ?
Die Schlüsselvariable wäre wohl die Schrittnummer - diese könnte z.B. in ein Merkerwort verlagert werden und an beiden FBs als IN_OUT Parameter gesetzt werden.
Aber da sind noch viele Eingänge und Durgangsparameter die auch immer für beide Teile gebraucht werden.
Müsste ich da einfach die Schnittstelle komplett vom einen zum anderen übernehmen ?
Zu dem habe ich den Verdacht daß die statischen Variablen ebenfalls in "neutrales Gebiet" ausgelagert werden müssen...
Ich dachte ich frage mal ob jemand schon ein ähnliches Problem bewältigt hat denn jeder Versuch kostet sehr viel zeit (es muss ja auch getestet werden)...
Bin für alle Anregungen und Tips dankbar!
Ich bin jetzt das erste mal über die 16kB Limitierung gestolpert die für Bausteine gilt wenn eine CPU kleiner 317 verwendet wird.
Für die die das noch nicht wissen:
Die SIMATIC (egal ob 300 oder 400) hat eine generelle begrenzung für einzelne Bausteine auf 64kB. Dies geht bei der CPU 317 los und geht bis zur größten 400er. Die CPUs 315 und kleiner sind pro Baustein auf 16kB begrenzt - und hier liegt jetzt mein Problem...
Ich habe einen FB mit ziemlich umfangreicher Schnittstelle und sehr viel Code als eine Art "Black-Box" gebaut - d.h. er hat viele Optionen die nicht immer gebraucht werden aber von aussen über die Schnittstelle aktiviert werden können.
Dieser beinhaltet auch eine Schrittkette auf Basis einer Wortvariable (Schrittnummer).
Da das gute Stück von Projekt zu Projekt stetig wächst (immer mehr Optionen kommen hinzu) und ich eigentlich schon das ganze am stück behalten will weil es einfach besser zu pflegen ist stehe ich nun vor dem Problem dass ich ihn nicht mehr in eine 315er reinkriege - diese würde aber dieses mal reichen weil es verhälnismäßig wenig optionen sind, ein großteil also nicht genutzt wird.
Ich habe schon Überlegungen angestrengt bestimmte Teilfunktionen auszulagern - aber gerade diese bringen Speicherplatztechnisch am wenigsten.
Ich müsste also die Schrittkette splitten.
Angenommen es sind 100 Schritte und 50 davon packe ich in einen neuen FB, wie wäre jetzt die optimale Vorgehensweise die beiden Schnittstellen zu gestalten daß das ganze nachher noch so läuft als wäre es im selben FB ?
Die Schlüsselvariable wäre wohl die Schrittnummer - diese könnte z.B. in ein Merkerwort verlagert werden und an beiden FBs als IN_OUT Parameter gesetzt werden.
Aber da sind noch viele Eingänge und Durgangsparameter die auch immer für beide Teile gebraucht werden.
Müsste ich da einfach die Schnittstelle komplett vom einen zum anderen übernehmen ?
Zu dem habe ich den Verdacht daß die statischen Variablen ebenfalls in "neutrales Gebiet" ausgelagert werden müssen...
Ich dachte ich frage mal ob jemand schon ein ähnliches Problem bewältigt hat denn jeder Versuch kostet sehr viel zeit (es muss ja auch getestet werden)...
Bin für alle Anregungen und Tips dankbar!