23.07.2023 09:03 | |
Beigetreten: 13.02.2016 Letzter Bes: 18.09.2023 Beiträge: 6 Bewertung:
|
Hallo und Danke erst mal an "motmonti" für seine Arbeit zum Thema. Ich habe die selben Komponenten im Einsatz und möchte eine kostengünstige Steuerung für E-Heizstab (3x 2,7KW) realisieren. Das Verhalten mit den Dezimalsprüngen ist dabei ein Problem, welches ich versucht habe zu lösen. Die Register 40285 und 40305 bilden die Werte DC Power1 (String1) und DC Power2 (String2) ab, diese "Rohwerte" müssen mit Register 40268 (DCW_SF) skaliert werden. Der Datentype von Reg. 40268 ist mit "sunssf" angegeben, eingelesen als Word und einem VM zugeordnet, dann über den variablen Speicher einem Vor, Rückwertszähler zugeführt bekomme ich Folgende Werte: 0 (SF = x10), 65535 (SF = 1), 65534 (SF = /10), 65533 (SF = /100). Leider kann die Logo mit Zahlen größer 32767 nicht rechnen bzw. ist mir nicht bekannt wie man das lösen könnte. Eine etwas unelegante Lösung habe ich für mich gefunden in dem ich den Wert 65535 runterbreche auf ~7 und mit 0 vergleiche, das Ergebnis ist dann 1 oder 0. Mit arithmetischen Anweisungen und einem MUX bekomme ich dann die Werte von ca. 1000 - 11000 Watt korrekt hin, unter 1000 Watt jedoch natürlich nicht ( /10, /100). Falls jemand eine Idee hat bitte melden. ------------------------------------------------------------------------------------------ |
Zuletzt bearbeitet von: Jen_Moderator am: 07/24/2023 10:35:07Neue Überschrift nach Splitten |
|
Für diesen Beitrag bedanken sich
1 Benutzer |
28.07.2023 09:58 | |
Beigetreten: 12.12.2014 Letzter Bes: 13.08.2024 Beiträge: 53 Bewertung:
|
Vielleicht siehst Du einen Lösungsweg, wenn Du die Zahlen als Hex-Wert oder Dual-Wert anschaust?
Man könnte mit den Bit1 und Bit0 einen Multiplexer ansteuern. Oder Enable einer Arithmetischen Anweisung. Oder ... |
Für diesen Beitrag bedanken sich
1 Benutzer |
28.07.2023 10:19 | |
Beigetreten: 12.12.2014 Letzter Bes: 13.08.2024 Beiträge: 53 Bewertung:
|
... oder schau Dir mal dieses Thema an: |
Für diesen Beitrag bedanken sich
1 Benutzer |
29.07.2023 16:41 | |
Beigetreten: 13.02.2016 Letzter Bes: 18.09.2023 Beiträge: 6 Bewertung:
|
Gerne, das "Grundprogramm (PV 5)" stammt ja ohnehin von Dir. Der Wert für Direktverbrauch braucht noch eine Skalierung, hier ist Register 40108 (DCP) dem VD4 zugeordet. Ob mit den selben SF, wie bei den Strings, gearbeitet werden kann hab ich noch nicht getestet. Was ich noch plane hin zu bekommen, Leistung vom und zum Netz, also AC Power. Die benötigten Register muss ich aber erst herausfinden. DateianhangPV 5_DC_skaliert.zip (114 Downloads) |
Für diesen Beitrag bedanken sich
1 Benutzer |
30.07.2023 10:37 | |
Beigetreten: 13.02.2016 Letzter Bes: 18.09.2023 Beiträge: 6 Bewertung:
|
Hallo, das Teilen des "Rohwerts" durch 10 ist notwendig weil ansonsten die Auswertung in Watt bzw. KW nicht korrekt möglich wäre sobald der (Uint16) Rohwert, 32767 übersteigt. Um das zu veranschaulichen habe ich Sreenshots von meiner Anlage angehängt. Es ist schon richtig das die Skalierung x10 dann genau das wieder aufhebt, das passiert aber nur dann, wenn ein String den Wert von 65535 überschreitet. In meinem Fall ist das bei 6,5KW von String1. Der Skalierfaktor des WR ändert sich und der neue SF muß für die Berechnung herangezogen werden. Ähnliches gilt im unteren Bereich, wird der Rohwert kleiner 6500 (ca. 650Watt) wird der Rohwert angehoben und der SF verleinert ÷10, unter 65Watt dann auf SF ÷100 Die Konvertierung von Uint16 zu Sint16 ist eventuell in dem Zusammenhang überhaupt nicht nötig, da bin ich aber noch am tüfteln wie man das Programm vereinfachen könnte.
DateianhangScreenshot.zip (110 Downloads) |
Folgen Sie uns auf