SEW Movidrive B Parameterkanal 8 Byte

exclis066

Level-2
Beiträge
28
Reaktionspunkte
0
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo Zusammen,

bitte nicht steinigen :), ich versuche aus Lernzwecke, awl code im scl umzusetzen.Ich weiß, dass es nicht immer geht.


Read : STRUCT
A : BYTE ;
B : BYTE ;
C : BYTE ;
D : BYTE ;
E : BYTE ;
F : BYTE ;
G : BYTE ;
H : BYTE ;
END_STRUCT ;

nun möchte ich E,F,G,H in DatumIst(DINT) speichern.

in awl sieht so aus:

LAR1 P##Read; // Empfangsbereich Adressieren
TAR2 ; // Adresse in AR1 zu AR2
UD DW#16#FFFFFF; // Operendenbereich ausblenden
+AR1 ; // AR2 und AR1 addieren
TAR1 ; // AR1 bilden
L D [AR1,P#4.0]; // Zweites Doppelwort laden
T #DatumIst; // Istwert (DINT)
BEA ;

Nun möchte das im scl realisieren (s7-300).

Ich hoffe mir kann hier einer auf die Sprünge helfen und danke im Voraus!
 
ich habe eine Lösung gefunden. (vielleicht hilft das jemandem) .

//Byte to Word
Read_Word_1:= SHL (IN:=BYTE_TO_WORD(A),N:=8 ) OR BYTE_TO_WORD(B);
Read_Word_2:= SHL (IN:=BYTE_TO_WORD(C),N:=8 ) OR BYTE_TO_WORD(D);
Read_Word_3:= SHL (IN:=BYTE_TO_WORD(E),N:=8 ) OR BYTE_TO_WORD(F);
Read_Word_3:= SHL (IN:=BYTE_TO_WORD(G),N:=8 ) OR BYTE_TO_WORD(H);

//Word to DWord
Read_DWord_1:= SHL (IN:=WORD_TO_DWORD(Read_Word_1),N:=16) OR WORD_TO_DWORD(Read_Word_2);
Read_DWord_2:= SHL (IN:=WORD_TO_DWORD(Read_Word_3),N:=16) OR WORD_TO_DWORD(Read_Word_4);


DatumIst:=DWORD_TO_DINT(Read_DWord_2);

//1.Edit spätesten erkennt man den Fehler beim beim übersetzen :)
 
Zuletzt bearbeitet:
Zuviel Werbung?
-> Hier kostenlos registrieren
Hi,

du wirst sicher nicht gesteinigt,
aber wenn du den Zusammenhang zu deinem Thema noch herstellst hätten ich und andere Nutzer auch etwas davon.

Gruß Sinix
 
Hi,

eigentlich es geht um SEW Umrichter Parameterdaten lesen und schreiben.ich convertiere diese Baustein in scl.
Manchmal sieht man den Wald vor lauter Bäumen nicht.

Gruss
exclis
 
Zurück
Oben