Hallo,
ich lese per Modbus zwei WORD Werte aus, wie kann ich diese zu einen DWORD Wert zusammen fassen / rechnen?
Ich kann die Werte nicht direkt als DWORD Wert vom Slave holen.
Danke für die Hilfe.
Ich glaube ich habe es.
Word 1: 68
Word 2: 54721
(65536 * 68 + 54721) /1000
DWORD: 4511
hallo
denke immer dran das oscat ja schon fast alles erfunden hat !
benutze einfach den baustein DWORD_OF_WORD von der oscat basic lib
du brauchst selber nichts rechnen
Sorry, das ganze ist in 3.5 :( Hab es ausversehn in 2.3 reingestellt.
Der Baustein ist aber doch für genau umgekehrt?
Gruß
über modbusregister kannst du ja maximal word übertragen
ein dword muss also über zwei register (words) übertragen werden
auf der anderen seite musst du dann die beiden words wieder zu einem DWORD zusammenfügen
das ist der standardweg
eventuell musst du die beiden words am baustein tauschen
es kann aber sein das deine beiden words anders aufgebaut sind , also kein echten DWORD !
warum dividierst du dann noch durch 1000 ?
OK, dann past es soweit.
Durch 1000 ist nur bei meinen Wert wichtig. Wird von mWh in kWh umgerechnet.
Ich habe es so gelöst, habe die Original Namen aus meinen Projekt gelassen:
I_FuBand_dnPosAct_p1 AT%IW234 : WORD; (* Aktuelle Position der Motorwelle in [Inkrementen] LowWord*)
I_FuBand_dnPosAct_p2 AT%IW236 : WORD; (* Aktuelle Position der Motorwelle in [Inkrementen] HighWord*)
diFuBand_AktPos := WORD_TO_DINT(I_FuBand_dnPosAct_p2); (* erst umwandeln *)
diFuBand_AktPos := SHL(diFuBand_AktPos,16); (* die länge des Words nach links verschieben *)
diFuBand_AktPos := diFuBand_AktPos + I_FuBand_dnPosAct_p1; (* Das Word dazu addieren *)
hallo
du kannst auch den oscat_basic baustein "DWORD_OF_WORD" verwenden