MCO 305 Befehlsreferenz
SDOREADSEGP
Kurzinfo
Syntax
Parameter
Rückgabewert
Beschreibung
Portabilität
Befehlsgruppe
Querverweise
Beispiel
__ Befehlsreferenz __
Segmentiertes Lesen von SDOs (gepackt).
erg = SDOREADSEGP id, index, subindex, arrayname
id
= CAN ID Nummer
-id = führt den Befehl ohne Warten auf Antwort aus
index
= 0x2000
subindex
= Parameternummer
arrayname
= Name eines existierenden Arrays
Wert im Array gegeben als Parameter: 4 Bytes in 1 Array-Element
Dieser Befehl erlaubt das segmentierte Lesen von gepackten SDOs. Dies ist
besonders für Strings oder binäre Daten nützlich.
SDOREADSEGP liest segmentiert (falls möglich) und liefert das Ergebnis als Para-
meter gepackt in ein Array. Der Befehl SDOREADSEGP packt die Bytes in die Array-
Elemente. Das heißt, jedes Array-Eelement enthält vier Bytes. Siehe unten Beispiel
mit Warten und gepackt.
Der Befehl kann entweder mit Warten auf das Ergebnis und Fehlermeldung, falls
etwas schief geht, oder ohne Warten und ohne Fehlermeldung benutzt werden. Im
zweiten Fall, muss das Ergebnis mit SDOSTATE geprüft werden, siehe dort.
Der Befehl ist ab MCO 5.00 verfügbar.
CAN
SDOREAD, SDOSTATE
DIM test[20]
vltid = 3
// Routine um einen gepackten String auszugeben.
// hierbei enthält jedes Element max 4 Zeichen
long printpackedstring (long[] arr, long len)
{
long ind,cc,rel
ind = 1
cc = 1
WHILE(cc <= len) DO
ind = ((cc-1) % 4) + 1
rel = ((cc-1) mod 4) + 1
PRINT chr(arr[ind].b rel);
cc++
ENDWHILE
PRINT " "
}
// Test der segmented SDO gepackt ohne Warten
PRINT ""
PRINT "Segmented SDO mit SdoReadSegP gepackt ohne Warten"
para = 1549
res = 0
wert = sdoreadsegp -vltid, (0x2000 + para), 0, test
WHILE(wert == 0) do
wert = sdostate vltid res
ENDWHILE
IF(wert > 0) THEN
PRINT "Parameter ",para," hat die Länge ",res
printpackedstring(test,res)
ELSE
PRINT "Lesen von ",para," ist fehlgeschlagen - Fehler ",wert
ENDIF
®
MG.34.R1.03 – VLT
ist ein eingetragenes Warenzeichen von Danfoss.
103