TIA "Objektorientiert" Programmieren

Hugo Schlonz

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

ich habe mal eine Frage bezüglich der sinnvollen Quelltextverwaltung. Ich habe folgenden Aufbau an meiner Anlage:

1) Eine Hauptsteuerung S7-1500
2) 8x identische Anlagenteile, jeweils bestehend aus:
a) Einer ET200SP mit CPU, die als I-Device mit der Hauptsteuerung verbunden ist.
b) 5 Antrieben mit FU, als PN-Slave mit der ET200SP verbunden.

Die Hauptsteuerung ist also mit 8 I-Devices verbunden, die wiederum jeweils IO-Controller von 5 Antrieben sind. Insgesamt also 8 ET200SP und 40 Antriebe. Die 8 identischen Anlagenteile machen alle exakt das gleiche, d.h. der Quelltext ist überall gleich.

Ich habe in meinem TIA-Projekt jetzt aber eine große Struktur mit einer S7-1500, 8 ET200SP und 40 Antrieben und den Quelltext für die ET200SP 8x kopiert.

Frage:

1. Gibt es eine Möglichkeit, den Quelltext für die ET200SP nur 1x anzulegen und z.B. ein fertiges Modul zu erzeugen. Habe schon gesehen dass man ein I-Device als GSD exportieren kann. Aber wie teilt man dem dann mit, für welche 5 Antriebe es zuständig sein soll? Eventuell über eine Konfig? Oder eine Bibliothek erstellen? Andere Möglichkeiten?

Vorab vielen Dank
 
Hallo,
OOP ist ein Thema, zu dem du in der Forensuche etliche Beiträge finden wirst.
Gleichzeitig ist es aber auch ein Thema, dass sich in dieser Programmierwelt nicht pauschal beantworten und umsetzen läßt.
Die Frage, die DU dir als allererstes stellen mußt ist : was verstehe ich unter einem Objekt.
Ich würde, ohne deine Anforderung zu kennen (das wäre allerdings ungemein hilfreich für weitere Antworten) erstmal die Antriebe / Antriebsregler als Objekt betrachten. Das nächste (vielleicht darüber liegende Objekt) ist dann das, das den Ablauf dieser Antriebe realisiert. Deine ET200Sp ist für mich kein Objekt sondern jede für sich (zwar ggf. mit dem gleichen Programm) eine eigene Einheit. Lediglich die Kopplung an die Haupt-CPU könnte (innerhalb der Haupt-CPU) wieder ein Objekt sein, dass ggf. 8 mal instanziert wird.

Aber vielleicht schreibst du ja mal etwas mehr dazu ...

Gruß
Larry
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo Larry,

danke für deine Antwort. "Objektorientiert" war vielleicht nicht der richtige Ausdruck. Mein wichtigstes Anliegen wäre zunächst der Quelltext der ET200SP. Ich habe das Programm im ersten Schritt natürlich nur für eine Et200SP geschrieben und getestet. Die gesamte Anlage besteht aus mehrerern Modulen. Jedes Modul ist exakt gleich aufgebaut mit 5 Antrieben, für die die ET200SP der IO-Controller ist. Nach oben werden die Module von einer übergeordneten S7-1500 verwaltet. Dafür ist jede ET200SP ein I-Device für die S7-1500.

Nachdem ich das erste Modul in Betrieb hatte, habe ich die ET200SP einfach kopiert, 5x die Antriebe (über die GSD) rein gezogen, die IP-Adressen angepasst und die PN-Namen vergeben. Jetzt muss ich aber jedesmal den Quelltext 8x ändern, wenn ich einen Bug finde oder eine Änderung habe.

Deshalb meine Frage, wie man in so einem Fall am sinnvollsten im TIA vorgeht.

Danke und Gruß
 
.. Jetzt muss ich aber jedesmal den Quelltext 8x ändern, wenn ich einen Bug finde oder eine Änderung habe.

Deshalb meine Frage, wie man in so einem Fall am sinnvollsten im TIA vorgeht...

Ich würde die Bausteine unbedingt in der Projektbibliothek ablegen. Damit ist schon einmal sicher gestellt dass Änderungen bzw. Versionsstände nur an einer Stelle gemacht werden können. Das Nachziehen der Änderungen auf alle Steuerungen ist völlig problemlos. Mehr Funktion braucht es nicht.
 
Jetzt muss ich aber jedesmal den Quelltext 8x ändern, wenn ich einen Bug finde oder eine Änderung habe.

Deshalb meine Frage, wie man in so einem Fall am sinnvollsten im TIA vorgeht.

Hallo Hugo,
eine Funktion, wie von dir beschrieben, gibt es nicht.
Was du nur machen kannst wäre Bausteine rüberkopieren. Ich würde hier so vorgehen, dass ich generell FB's erstellen würde, die die IN's und OUT's und PW's über die Baustein-Schnittstelle beziehen. So kannst du eine abweichende EA-Belegung bei gleichem Programm-Ablauf realisieren ...

Gruß
Larry
 
Zurück
Oben