kernelv_sync_write_request()

Prototyp

signed long int

kernelv_sync_write_request (unsigned short port,
                                       unsigned long int indexGroup,
                                       unsigned long int indexOffset,
                                       unsigned long int length,
                                       void* data);

Beschreibung

Synchrones Schreiben von Variablen. Die Variablen werden dabei durch Port, indexGroup und indexOffset identifiziert.

Aktuell werden die folgenden Ports unterstützt:

Portnummer

CNC-Task

551

Task GEO

552

Task SDA

553

Task COM

Die Bedeutung von indexGroup und indexOffset ist abhängig vom adressierten Port und kann der Dokumentation entnommen werden.

Falls die Funktion aufgerufen wird, wenn der CNC-Kern noch nicht gestartet ist, wird ein Fehlercode zurückgegeben.

Abhängig vom verwendeten Indexgroup und Indexoffset kann ein Schreibvorgang mehrere NC-Zyklen dauern. In diesem Fall gibt die Funktion den Wert 1 (RET_BUSY) zurück.

Ist dies der Fall ist die ist diese Funktion nach jedem Aufruf von kernelv_do_cycle() erneut aufzurufen, bis entweder der Rückgabewert 0 (RET_FINISHED) oder eine Fehlerkennung zurückgegeben wird.

Parameter

Name

Typ

Bedeutung

port

unsigned short

Port über den die Daten zu schreiben sind.

indexGroup

unsigned long

Indexgroup des zu schreibenden Datums.

indexOffset

unsigned long

Indexoffset des zu schreibenden Datums.

length

unsigned long*

Größe des Speichers für den zu schreibenden Wert in Bytes.

data

void*

Zeiger auf Speicher für den zu schreibenden Wert.

Rückgabewerte

Symbol

Wert

Bedeutung

RET_FINISHED

0

Die Funktion wurde fehlerfrei durchgeführt.

RET_BUSY

1

Die Funktion wird gerade ausgeführt, ist aber noch nicht abgeschlossen.

Die API-Funktion muss weiter aufgerufen werden.

 

6

Die übergebene Portnummer ist nicht bekannt.

 

0x701

Der angeforderte Dienst wird nicht unterstützt.

 

0x702

Indexgroup ist ungültig

 

0x703

Indexoffset ist ungültig.

 

0x704

Die adressierte Variable darf nicht geschrieben werden.

 

0x705

Die zu schreibenden Daten passen nicht in die adressierte Variable.

 

0x706

Der Auftrag konnte nicht durchgeführt werden.

Mögliche Ursachen sind z. B.:

  • ungültige Daten bei Schreibzugriffen oder
  • ungültiger Zustand von kernelv, wie z. B. Listenaktualisieren, während CNC-Kanal im Fehler ist.