Sonstiges hat hier jemand eine 840D SL mit 2 Kanälen im Zugriff?

LowLevelMahn

Level-2
Beiträge
767
Reaktionspunkte
90
Zuviel Werbung?
-> Hier kostenlos registrieren
ich versuche gerade mit dem User st_rupp(https://www.sps-forum.de/simatic/73...und-antriebsparameter-lesen-schreiben-15.html) ein paar Sinumerik-Variablen-Kombinationen mit AGLink zu verarbeiten
für einen Abschluss-Test fehlt uns leider beiden eine Maschine mit mind. 2 Kanälen - damit könnte ich testen ob das Lesen 100% sauber klappt

kann jemand eine kleine Exe ausführen welche sich zu einer SL verbindet, ein paar Variablen-Kombinationen ausließt(KEIN SCHREIBEN) und die Ergebnisse hier einstellen? Bitte melden
 
Hallo LowLevelMahn
,
falls das noch ein Thema ist, koennte ich aushelfen.
Mache gerade selbst Gehversuche mit der CNC-Anbindung.
Leider ohne ghne groesseren Erfolg.
Irgendwie komme ich nicht mit den Parametern Num und Timeout bei den Funktionen :

int WINAPI AGL_NCK_ReadMixEx( int ConnNr, LPNCKDataRW Buff, int Num, int Timeout, LONG_PTR UserVal );
int WINAPI AGL_NCK_CheckVarSize( int ConnNr, LPNCKDataRW Buff, int Num, int Timeout, LONG_PTR UserVal );

zurecht :-(
Beim Lesen des R-Parameters ("/Channel/Parameter/rpa[u2,3]") kommt mit den Werten 1,1 kommt immer der Fehler "Ungueltiger Kontext".
Ich vermute, dass es am Timeout liegt.

Habe den Ag-Link seit Jahren zur Anbindung an die Sinumerik-PLC im Einsatz und wollte jetzt Werkzeug- und Magazindaten einlesen.
Vielleicht koenntest Du mir mal eine paar Zeilen Zeile Code als Anregung zukommen lassen, auch wenn sich das mit dem test inzwischen erledigt haben sollte.

Gruss
Burkhard
 
Zuviel Werbung?
-> Hier kostenlos registrieren
int WINAPI AGL_NCK_ReadMixEx( int ConnNr, LPNCKDataRW Buff, int Num, int Timeout, LONG_PTR UserVal );

Beim Lesen des R-Parameters ("/Channel/Parameter/rpa[u2,3]") kommt mit den Werten 1,1 kommt immer der Fehler "Ungueltiger Kontext".
Ich vermute, dass es am Timeout liegt.

keine Ahnung wo du 1,1 reinsteckst - ohne eine richtig bestueckte NCKDataRW-Struktur kannst du nichts lesen und bekommst wilde Fehler von der NC

Area = eNCK_AreaChannelUnit = 2
Block = eNCK_BlockRP
Column = 1
Row = 1
Typ ist ein Float64 mit der größe 8 Bytes


Code:
double wert = 0.0;
NCKDataRW rw;
rw.Area = eNCK_AreaChannel;
rw.Unit = 2; // Kanal
rw.Block = eNCK_BlockRP;
rw.Column = 1;
rw.Row = 1; // RPA-Nummer 1-n - glaube 0=rpa[1] oder sowas - einfach mal 2,3,4 probieren
rw.RowCount = 1; // eine Variable ab da lesen
rw.BuffLen = sizeof(wert); // 8 bytes
rw.Buff = &wert;


AGL_NCK_ReadMixEx(ConnNr, &rw, 1, 3000, ...)

bei Buff gibst du eine oder mehrere NCKDataRWs an - genau so wie bei PLC - da sind es eben DataRW40s
Num = 1 - weil du eine NCKDataRW nutzt - genau so wie bei PLC



in AGLink gibt es eine Funktion: AGL_NCK_GetNCKDataRWByNCDDEItem - damit kannst du dir aus dem "/Channel/Parameter/rpa[u2,3]" string eine NCKDataRW-Variablen bestuecken lassen - nur noch der Puffer fehlt
int WINAPI AGL_NCK_CheckVarSize( int ConnNr, LPNCKDataRW Buff, int Num, int Timeout, LONG_PTR UserVal );

die brauchst du nur wenn du keine Ahnung hast wie groß die Variable auf der NC ist - manchmal sind die Angaben im NC-Var-Selektor oder den NSKs falsch
 
Hallo LowLevelMahn
danke für die schnelle Antwort.
Ich hatte inzwischen auch Kontakt mit Deltalogic.
Das Problem war die Slot-Adresse der NCU. Die richtige Slot.Adresse ist bei der 840Dsl die 4.

Die Struktur NCKDataRW hatte ich schon mit der Funktion NCK_GetNCKDataRWByNCDDEItem gefuellt,
dabei hatte ich aber uebersehen, den Pointer rw.Buff auf meine Zieldaten zu setzen :-).
Das war mit Deinem Codebeispiel leicht zu erkennen.
Sorry, dass ich mich so unklar ausgedrueckt hatte. Mit 1,1 waren die Variablen Num und Timeout gemeint.
Gruß
Burkhard
 
Zurück
Oben