Einschränkungen bei mehrkanaligem Steuerungsaufbau
Beim Hochlauf der CNC werden für jeden NC-Kanal die GLOBAL deklarierten Variablen zu bereits evtl. vorhandenen Variablen inkrementell hinzugefügt. Erst nach Abschluss des Hochlaufs steht das Layout des Speichers in der Gesamtheit fest. Die Anfangsadresse auf den gemeinsamen Speicher wird dann der SPS zur Verfügung gestellt.
Die #EXPORT-Funktion kann nur jeweils in einem Kanal gestartet werden.
- Sie kennt daher nur die in diesem Kanal deklarierten GLOBAL Variablen. Variablen aus anderen Kanälen, die z.B. mit anderen Index-Werten belegt sind, sind unsichtbar. Sie werden daher auch nicht in der Struktur VE_GLOBAL_DATA_FROM_CH_? eingetragen.
- Je kanalspezifischer V.E-Liste entsteht eine eigenständige
VE_GLOBAL_-DATA_FROM_CH_? Struktur wobei - der durch eine ungünstige GLOBAL Deklarationen mögliche Mischbetrieb von indexbasierter Adressierung und Auto_Mem-Methode über mehrere Kanäle hinweg nicht detektiert werden kann.
Eine Lösung der Problemstellungen kann nur durch den SPS-Programmierer erfolgen oder muss in enger Zusammenarbeit mit demjenigen erarbeitet werden, der die V.E-Listen erstellt. Eine "typische" Vorgehensweise gibt es jedoch nicht.
Im Folgenden werden einige Vorschläge gezeigt, die helfen sollen, eine Entscheidung über das angewendete Vorgehen zu fällen:
Szenario (A)
Alle GLOBAL-Variablen werden in jedem Kanal (als Kopie) deklariert und (evtl.) nur durch Zugriffsmethoden (var[?].access_rights) unterschieden. In der Folge sind alle kanalweise erzeugten VE_GLOBAL_DATA_-FROM_CH_? -Strukturen identisch. Für den Zugriff von Seiten der SPS reicht es aus, eine der Strukturen als Basis für den Zugriff auf den GLOBAL Speicher zu nutzen.
Szenario (B)
Die GLOBAL Variablen der verschiedenen Kanäle unterscheiden sich teilweise oder komplett. Somit sind die erzeugten SPS-Strukturen unterschiedlich.
Ein erster Ansatz ist, die exportierten Strukturen manuell zu mischen und mit einer neuen selbstdefinierten Struktur auf den Speicher zuzugreifen. Nachteilig ist hier, dass die Verantwortung für den richtigen Zugriff wieder beim SPS-Programmierer liegt. Zudem muss der Vorgang wiederholt werden, wenn sich nur eine der V.E-Listen ändert und ein neues #EXPORT ausgelöst wird.
Ein zweiter möglicher Ansatz belässt die Unterscheidung nach Kanälen und definiert in der SPS mehrere eigenständige kanalspezifische Zeiger (auf den identischen GLOBAL Speicher). Hier muss der SPS-Programmierer Sorge tragen, dass mit der richtigen SPS-Variable auf die gewünschte Variable zugegriffen wird.