Step 7 kWh-Zähler am FU (Danfoss)

Zuviel Werbung?
-> Hier kostenlos registrieren
Du hast Recht, wenn die 2-Byte-Werte richtig zu sein scheinen, dann hast Du nicht das Problem der "falschen" Reihenfolge der Bytes.

Der anfangs von Dir genannte ZahlenBereich 0..2.147.483.648 spricht eindeutig für DINT, also 4 Byte.
Deine PCD-Tabelle konnte ich noch nicht so richtig entschlüsseln.

PS:
Beim von Dir eingekringelten "Typ8" sind aber die Bytes 25..28 belegt (also 4 Bytes) - das entspricht dem, was wir erwarten?
Habe weiterhin Probleme, die Tabelle zu deuten.

PPS:
Wieviele Bytes werden denn durch L #EB.dw8 eingelesen?
Wo ist die Information der Länge versteckt? dw spricht für 2 Bytes (und EB für 1 Byte).
Ist EB.dw8 als DINT deklariert?
Ist EB.dw8 ein irreführender symbolischer Name?
Also die 8 entspricht de den Bytenr. 25-26, also 2 Byte bzw. ein Word3.PNG
Ja, der symbolische Name ist irreführend. Die sind als Word deklariert.
Die Parameter werden als Array eingelesen.
 
Das lesen der zwei aufeinander folgen PEWs bringt mehr! 16 Bit mehr zumindest. Man kann dann immer noch entscheiden, dass 1 PEW genug gewesen wäre.
wenn er fürs Prototoll nur 8 PPOs ausgewählt hat dann kommt nach dem PPO8 kein weiteres Word mehr, das gibts in der HW-Konfig nicht...

wenn der TE den Code vom Beitrag 1 in der Online Sicht gepostet hätte und dazu geschrieben, was der FU anzeigt, dann wärn wir schon längst fertig ;)

Ich vermute, das ITD muss weg, bzw. der Code so wie oben drüber bei den andern 2 Messwerten mit dem LW LD usw.
dann evtl. noch den Faktor anpassen...

er schreibt doch im ersten Beitrag, dass der wert negativ ist, dass liegt daran, dass im WORD irgendwas größer 32000 steht. Daraus wird dann durch ITD nen negativer DINT-Wert...
 
Nicht DAS PEW, sondern die beiden, aufeinander folgenden PEWs!

Was konkret liest denn der L #EBdw8 ein? Wie ist diese Variable deklariert?

UINT und INT wären in jedem Fall falsch. In beiden Fällen wird der genannte WerteBereich nicht annähernd erreicht!
Ob UDINT oder DINT wäre egal, wenn der genannte WerteBereich stimmt bzw. nicht überschritten wird.
Also der richtige Wert am Display ist 6862229 kWh
4.PNG1.PNG

das sind die 4 Werte die roh eingelesen werden 605 Frequenz, -23151 Strom (was eigentlich auch nicht sein kann) wird aber doch richitg
umgerechnet, 20608 Leistung, -19020 kWh



6.PNG
 
Zuletzt bearbeitet:
Zuviel Werbung?
-> Hier kostenlos registrieren
also probier mal:
Code:
L EB.dw8
DTR
L 147.52
*R
T Ergebnis

und zeigs uns dann mal in der Onlinesicht...
L 0
T LD 10
L #EB.dw6 // Istwertadresse elektr. Leistung im FU-DB
T LW 12
L LD 10

DTR
L 1.000000e+002
/R
T #Leistung_KW_IST
was ist eigentlich mit 2 rot markierten Befehlen? Müssen die nicht auch noch rein?

Mache ich, muss nur warten bis es wieder geht...
 
Wenn du 4 Byte einlesen willst müsste es heissen
L EB.DD8 wenn der Zählwert ab hier eingelesen werden

und dann kannst du mit den Umrechnungsfaktoren spielen.
 
L 0
T LD 10
L #EB.dw6 // Istwertadresse elektr. Leistung im FU-DB
T LW 12
L LD 10

DTR
L 1.000000e+002
/R
T #Leistung_KW_IST
was ist eigentlich mit 2 rot markierten Befehlen? Müssen die nicht auch noch rein?

Mache ich, muss nur warten bis es wieder geht...
also wenn Du diese Variante probieren willst, dann so:
Code:
L     0
      T     LD    10
      L     #EB.dw8
      T     LW    12
      L     LD    10
      DTR
      L     147.52
      *R  
      T     #Drehmoment_IST // was in Wahrheit der Zähler in kWh ist
 
Zuviel Werbung?
-> Hier kostenlos registrieren
der 147,52 scheint ja irgendwie willkürlich zu sein (also wie du auf den kommst ist ja klar, aber es ist ja dann trotzdem nicht so ganz richtig oder?
ja, kann ich mir auch nicht erklären... vielleicht liegt noch irgendwo anders nen Fehler oder das ist auf die FU-Nennleistung oder Motornennleistung skaliert... wieviel kW hatd der FU/Motor? vielleicht 150kW?
 
Anhang anzeigen 63102
es gibt jede Menge DWORD Datentypen im FU. Die werden aber alle als WORD übertragen. z.B. Strom oder Leistung. da funktioniert das auch so.
Ich sehe da aber, dass LeistungsWerte 4 Byte belegen (INT32 = DINT), egal, ob gefiltert oder ungefiltert, ob kW oder hp.
Auch, dass Motorstrom 4 Byte belegt (INT32 = DINT).
Ich würde das schon ernst/wörtlich nehmen.

Ich verstehe das so, dass bei der Übertragung aber nicht jedes zweite WORD unterschlagen wird, sondern alle übertragen werden und vom Empfänger wieder richtig zusammengesetzt werden müssen.
Habe jetzt meine Zweifel, ob die vorausgehenden Lesevorgänge auch schon falsche Zuordnungen und somit die angesprochenen Adressen kommulierende Abweichungen zu den richtigen Adressen enthalten.
Es könnte hier noch ein weit umfassenderer Bedarf an "Reparaturen" bestehen.
Wenn DWORD als 2 x WORD übertragen werden, ist das OK. Es könnte allenfalls Probleme mit der DatenKonsistenz geben?

Ist das Programm, das Du (showmewhatUgot) uns zeigst, denn für genau diese Schnittstelle programmiert worden und Du hast lediglich versucht, das Einlesen des Drehmomentes durch das Einlesen des EnergieZählers zu ersetzen?

Das Drehmoment sehe ich als INT32 = DINT für kW und als INT16 = INT für %.

Da müsste man schon genau wissen, was man tut, tun soll, tun will, weil sich die o.g. "Feinheiten" doch erheblich auf die Umsetzung im Programm auswirken.

Warum wird mit PEW (einem PeripherieBefehl) eingelesen und dann direkt schon in irgendwas umgerechnet?
Stehen die Informationen tatsächlich gleichzeitig komplett im PeripherieBereich, oder wird ein PEW als Schnittstelle belegt und die Daten, die hier nach und nach ankommen, müssten erstmal in einem Array of WORD gesammelt/zwischengespeichert werden (man verzeihe mir bitte meine totale Unwissenheit)?
 
Zuletzt bearbeitet:
Ducati's Beitrag #37 zeigt uns dass die Werte in PPO8 alle 1 Wort/2 Bytes belegen.

Wie z.B. die kWh Wert als nur 1 WORD oder DINT interpretiert werden soll kapiere ich noch nicht.
In Beitrag #27 erzählt showmewhatUgot dass das Display am FU "6862229" für die kWh anzeigt. Wie kommt das in ein DINT rüber ?
Stimmt die 6862229 kWh wirklich ? Das wäre ein recht hohen Wert.
 
Zurück
Oben