Autor Thema: 2 WORD zu ein DWORD  (Gelesen 14715 mal)

0 Mitglieder und 1 Gast betrachten dieses Thema.

Offline mfreye

  • Jr. Member
  • **
  • Beiträge: 65
    • Profil anzeigen
2 WORD zu ein DWORD
« am: 14. Oktober 2017, 19:32:45 »
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.

Offline mfreye

  • Jr. Member
  • **
  • Beiträge: 65
    • Profil anzeigen
Re: 2 WORD zu ein DWORD
« Antwort #1 am: 14. Oktober 2017, 19:44:13 »
Ich glaube ich habe es.

Word 1: 68

Word 2: 54721


(65536 * 68 + 54721) /1000


DWORD: 4511

Offline peewit

  • Moderator
  • *****
  • Beiträge: 2 378
    • Profil anzeigen
Re: 2 WORD zu ein DWORD
« Antwort #2 am: 15. Oktober 2017, 08:07:32 »
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

Offline mfreye

  • Jr. Member
  • **
  • Beiträge: 65
    • Profil anzeigen
Re: 2 WORD zu ein DWORD
« Antwort #3 am: 15. Oktober 2017, 10:11:08 »
Sorry, das ganze ist in 3.5 :( Hab es ausversehn in 2.3 reingestellt.

Der Baustein ist aber doch für genau umgekehrt?

Gruß

Offline peewit

  • Moderator
  • *****
  • Beiträge: 2 378
    • Profil anzeigen
Re: 2 WORD zu ein DWORD
« Antwort #4 am: 15. Oktober 2017, 12:53:19 »
ü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 ?

Offline mfreye

  • Jr. Member
  • **
  • Beiträge: 65
    • Profil anzeigen
Re: 2 WORD zu ein DWORD
« Antwort #5 am: 15. Oktober 2017, 14:05:16 »
OK, dann past es soweit.

Durch 1000 ist nur bei meinen Wert wichtig. Wird von mWh in kWh umgerechnet.

Offline dacown

  • Newbie
  • *
  • Beiträge: 1
    • Profil anzeigen
Re: 2 WORD zu ein DWORD
« Antwort #6 am: 09. Oktober 2018, 07:54:39 »
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 *)

Offline peewit

  • Moderator
  • *****
  • Beiträge: 2 378
    • Profil anzeigen
Re: 2 WORD zu ein DWORD
« Antwort #7 am: 12. Oktober 2018, 06:11:18 »
hallo

du kannst auch den oscat_basic baustein "DWORD_OF_WORD" verwenden