ADS C++ Summenkommando Variablen schreiben

vo13

Level-1
Beiträge
31
Reaktionspunkte
0
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo,
ich möchte per ads mit dem Summenkommando Werte in die Variablen in der SPS schreiben.
Das Lesen der Variablen mit dem Summenkommando funktioniert bereits!
Beim Schreiben einer INT und einer DINT Variable bekomme ich jedoch Fehler 1797.
Die Symbolinfo für die Variablen habe ich mir, wie bei der Lesefunktion, geholt. Ist das korrekt?
Im Anhang der Sourcecode.

Hat jemand einen Tipp, was da schiefläuft?
Danke....
 

Anhänge

  • ads_sum_write.txt
    5,8 KB · Aufrufe: 30
ADS Code 1797 bedeutet "parameter size not correct".

Versuch mal in Zeile 95 anstatt

nErr = AdsSyncReadWriteReq(pgAddr, 0xf081, reqNum, 4*reqNum, (void*)(mAdsSumBufferRes), 16*reqNum, &parReq);

die WriteLen mit sizeof anzugeben.

nErr = AdsSyncReadWriteReq(pgAddr, 0xf081, reqNum, 4*reqNum, (void*)(mAdsSumBufferRes), sizeof(parReq), &parReq);
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo Neals,
daran hatte ich auch schon gedacht, funktioniert leider nicht.
Was ich rausgefunden habe:
Erste Var ist int, Zweite ist float (REAL)
Mit der int Variable rufe ich AdsSyncReadWriteReq auf. parReg.Length wird aus dieser Funktion ermittelt. Ist 2, was ja auch korrekt ist.
Setze ich nur parReg.Length auf 4 (4 Byte) dann bekomme ich keinen Fehler und ich kann die beiden Werte problemlos setzen.
Ist eigentlich falsch, aber nur so gehts wohl.

Danke für den Tipp.
Gruß
 
Zurück
Oben