Pointer - für welche Fälle sinnvoll?

twincatter

Level-1
Beiträge
137
Reaktionspunkte
1
Zuviel Werbung?
-> Hier kostenlos registrieren
Guten Tag an alle Programmierer,

bin jetzt bei der Einarbeitung in Codesy/TwinCAT auf POINTER gestossen.
Prinzipiell ist mir aus anderen Programmiersprachen klar was Pointer sind.

Für welche Fälle verwendet Ihr in Zusammenhang mit der SPS-Programmierung Pointer?

Bin für Antworten dankbar.
 
Je nach Meinung des Programmierers von am Besten gar nicht bis richtig intensiv ;)

Pointer kannst Du z.B. verwenden, wenn Du aus verschiedenen Objekten heraus auf die selben Speicherbereiche bzw. auf andere Objekte zugreifen willst. Wenn möglich versuche ich dies aber lieber über Referencen zu tun. Sowohl die als auch Interface-Pointer sind Bestandteil von Codesys3/TwinCAT3.

Nettes Anwendungsbesipsiel für die Verwendung von Interface-Pointern wäre z.B. eine Betriebsartenumschaltung.
Nehmen wir an du hast eine Maschine, zusammengesetzt aus verschiedenen Komponenten. Die Funktionalität jeder Komponente wird repräsentiert durch einen FB. Dieser FB könnte dann ein Interface implementieren, mithilfe dessen diese Betriebsarten-Umschaltung realisiert werden soll. Solange Du sicherstellst, dass der Komponenten-FB jeder neuen Anlagenkomponente ebenfalls dieses Interface implementiert kannst Du folgendes tun.
* du erzeugst ein Array über diesen Interfacetyp
* weißt alle Instancen der Komponenten-FB's den einzelnen Felder des Array's zu
* erzeugst eine simple Schleife über alle Elemente des Arrays, welche die Betriebsarten-Umschaltung herbeiführt.

Dieser Code ist sehr schnell erweiterbar, denn solange jeder neue Komponenten-FB, wieder dieses Interface implementiert, kannst du die Instanzen sofort dem Array zuweisen. An dem Code der die Betriebsartenumschaltung herbeiführt brauchst du nix mehr ändern.
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Guten Tag an alle Programmierer,

bin jetzt bei der Einarbeitung in Codesy/TwinCAT auf POINTER gestossen.
Prinzipiell ist mir aus anderen Programmiersprachen klar was Pointer sind.

Für welche Fälle verwendet Ihr in Zusammenhang mit der SPS-Programmierung Pointer?

Bin für Antworten dankbar.

Pointer kannst Du z.B. verwenden, wenn Du ältere und nicht ganz "Programmierprofis" in die Schranken weisen willst. Das Programm wird dann (zumindest für mich) schön unübersichtlich:ROFLMAO:
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Guten Morgen,
Pointer sind sehr nützlich wenn du einem Baustein oder einer Funktion einen flexiblen Datenbereich übergeben willst. Findest du zum Beispiel bei den File Write/Read FBs. Da zeigst du dann mit einem POINTER TO BYTE auf einen Datenbereich und gibst zusätzlich an wieviele Bytes gelesen bzw. geschrieben werden sollen.
Es muss natürlich sehr sorgsam mit Pointern umgegangen werden, da du quasi einen Pointer überall hinzeigen lassen kannst und somit jede x beliebige Variable beschreiben kannst. Wenn das ungewollt geschieht wirds spannend! ;) Aber mit ARRAYs und Index-Variablen kann auch viel schief gehen.
Ich persönlich arbeite des öfteren mit Pointern, speziell wenn ich unterschiedliche Datentypen verarbeite.
z.Bsp. um einen STRING mit ASCII zeichen zu füllen oder wenn ich zwei WORD variablen in eine REAL "pressen" muss
 
Zurück
Oben