Sorry für OT aber - kannst Du mir als einem nicht-Informatiker sondern Elektrotechniker mal erklären, was
- 1. "objektorientiert" und
- 2. "private" und "publik" bedeutet ???
Ich lese dies mit "objektorientiert" ständig in irgendwelchen Zusammenhängen und mich befällt jedesmal das Kotzen, weil ich a) mit diesen Begriffen nichts anfangen kann, b) es in den zahlreichen Steuerungen, die ich bisher programmiert habe, allenthalben verschiedene Objekte gegeben hat, aber ich verstehe nicht, wie etwas davon objektorientiert oder objekt-desorientiert sein kann, und was diese ganze Informatiker-Freaksprache überhaupt in meiner Steurerungswelt zu suchen hat ??
Ganz ernstlich ich verstehe es nicht. Ich habe Datenbausteine, Funktionen, Funktionsbausteine, von mir aus Multiinstanzen und Technologieobjekte. Ich verstehe sogar mittlerweile, was technische Hierarchie in PCS7 ist, und wie mit ihr umzugehen ist. Aber was zum Satan ist bitte schön "objektorientiert" ?? Und was soll ich in einer Bausteininstanz "private" und "publik" deklarieren können ??
Wie schon Rene schreibt, ist Objektorientierung für SPSler eigentlich was einfaches.
Wir haben schliesslich mit realen Objekten zu tun.
Nimm mal ein einfaches Handling mit Greifer, Vertikalhub und Horizontalachse.
Jedes dieser Elemente ist nun ein Objekt.
Und jedes Objekt hat sogenannte Zustände und Methoden.
Der Greifer hat die Zustände "Offen, Geschlossen, Leer, Belegt" und die Methoden "Spannen, Lösen"
Die Achse hat die Zustände "Bereit, Referenziert, Ist-Position, Ist-Drehzahl, ..." und die Methoden "Fahre zur Position, Tippen+, Tippen-, Referenzieren,..."
Bisher hast du für als dies FCs, FBs, Merker, Instanz-DBs und Global-DBs. Im Prinzip musst du dir also erstmal alles zusammensuchen was z.B. zur Horizontalachse gehört.
Bei der Objektorientierung gibt es diese Trennung zwischen Funktionen und Daten nicht mehr.
Nach aussen hin wird nicht mehr die Achs-Position in einen Achs-DB geschrieben und dann der Start-Merker gesetzt, sondern du rufst die Methode "Horizontalachse::Fahre zur Position (1234.0)" auf.
Jetzt brauchst du aber zur Ansteuerung einer Achse viele Befehle und musst auch viele Meldungen verschalten.
Viel davon ist für die anderen Programmteile / Objekte völlig uninteressant.
Deshalb gibt es einfach die Begriffe "public" und "private".
Mit "public" deklariert man Eigenschaften und Methoden, die für andere notwendig sind. Und mit "private" kapselt man eben die internen Dinge.
Dies ist wirklich nur eine extrem stark vereinfachte Beschreibung.
Eigentlich kannst du auch mit S7 objektorientiert programmieren.
Du packst alles in entsprechende FBs und greifst dann auf die Multiinstanzen zu.
Nur leider fehlen dann eben Dinge wie die Möglichkeit der Definition von Eigenschaften, Methoden, public, private und ein entsprechender Querverweis.
GrußDieter