Strommessender Schaltaktor
Re: Strommessender Schaltaktor
Ein Nachtrag: November 2020 hatte ich eine Änderung bei github eingecheckt, damit das Projekt bei mir wieder übersetzt werden konnte. Meine (neuere) mcuxpresso-Version hatte auf einmal Probleme mit mehrfach definierten Mathematikfunktionen. Siehe auch:
https://github.com/selfbus/software-arm ... 170c7d8d7f
https://github.com/selfbus/software-arm ... 170c7d8d7f
Tags:
Re: Strommessender Schaltaktor
Hallo Florian,
ich glaub dir ist da in Zeile 296 ein TS_ARM_2CH durch die Lappen gegangen.
Viele Grüße
Denis
ich glaub dir ist da in Zeile 296 ein TS_ARM_2CH durch die Lappen gegangen.
Code: Alles auswählen
diff --git a/actuators/outputs/out-cs-bim112/inc/config.h b/actuators/outputs/out-cs-bim112/inc/config.h
index d66e124..5a1b338 100644
--- a/actuators/outputs/out-cs-bim112/inc/config.h
+++ b/actuators/outputs/out-cs-bim112/inc/config.h
@@ -293,7 +293,7 @@
#if CHANNELCNT <= 2
-#ifndef TS_ARM_2CH
+#ifndef HW_2CH_WO_CS
// mit Strommessung
#define DEVICETYPE 0xA05B // SA/S2.16.6.1
#define SPIRELDRIVERBYTES 1
Denis
5x in16-bim112 ARM | 1x rol-jal-bim112 ARM | 2x MSA | 1x raincenter-bim112 ARM | 8x Kombisensor LPC | 1x out8 LPC | 2x 2in2out LPC
Re: Strommessender Schaltaktor
Gut erkannt. Ich habe das übernommen, danke für den Hinweis.
Re: Strommessender Schaltaktor
Hallo Florian,
beim Versuch die delayMicroseconds() zu optimieren, bin ich darauf gestoßen (Dank geht an Mirko), dass es sehr leicht passieren kann, dass vom Compiler/Linker double-Operations eingebunden werden, die sehr viel Speicherplatz verbrauchen.
Das sind allein rund 6,1kB für die Funktionen __aeabi_dsub (1,79kB), __aeabi_dadd (1,62kB), __aeabi_ddiv (1,48kB) und __aeabi_dmul (1,21kB). Selbst mit -O3 oder -Os werden die nicht wirklich kleiner.
Unter anderem bindet der out-cs-bim112 diese ein. Schön zu sehen im Vergleich zwischen HW_2CH_WO_CS und HW_2CH.
Über die Compiler Warnings (-Wconversion) und die Image-Info konnte ich rausfinden, dass allein der Aufruf von sqrt() mit double alle 4 __aeabi_d* benötigt.
In Adclsr.cpp:
wird die double Version von sqrt() aufgerufen.
In Appl.cpp:
wird __aeabi_dmul verwendet.
Hier mal die ungetestete patch-Datei, welche die double Operations als float ausführt.
Edit: Patch ist jetzt im master.
Beinhaltet auch ein -O3 für den ADC_IRQHandler (ob das reicht kann ich leider nicht sagen).
Alles ungetestet da ich keinen out-cs habe.
Viele Grüße
Denis
edit: richtige Datei angehängt
edit2: patch gelöscht, da jetzt im master
beim Versuch die delayMicroseconds() zu optimieren, bin ich darauf gestoßen (Dank geht an Mirko), dass es sehr leicht passieren kann, dass vom Compiler/Linker double-Operations eingebunden werden, die sehr viel Speicherplatz verbrauchen.
Das sind allein rund 6,1kB für die Funktionen __aeabi_dsub (1,79kB), __aeabi_dadd (1,62kB), __aeabi_ddiv (1,48kB) und __aeabi_dmul (1,21kB). Selbst mit -O3 oder -Os werden die nicht wirklich kleiner.
Unter anderem bindet der out-cs-bim112 diese ein. Schön zu sehen im Vergleich zwischen HW_2CH_WO_CS und HW_2CH.
Über die Compiler Warnings (-Wconversion) und die Image-Info konnte ich rausfinden, dass allein der Aufruf von sqrt() mit double alle 4 __aeabi_d* benötigt.
In Adclsr.cpp:
Code: Alles auswählen
void AdcIsrCurrFilt(void)
In Appl.cpp:
Code: Alles auswählen
void Appl::OneCurrThresholdFct(int chno, float IMeas, int fctno) und
void Appl::CurrentFunctions(unsigned referenceTime)
Hier mal die ungetestete patch-Datei, welche die double Operations als float ausführt.
Edit: Patch ist jetzt im master.
Beinhaltet auch ein -O3 für den ADC_IRQHandler (ob das reicht kann ich leider nicht sagen).
Code: Alles auswählen
extern "C" __attribute__((optimize("O3"))) void ADC_IRQHandler (void)
Viele Grüße
Denis
edit: richtige Datei angehängt
edit2: patch gelöscht, da jetzt im master
5x in16-bim112 ARM | 1x rol-jal-bim112 ARM | 2x MSA | 1x raincenter-bim112 ARM | 8x Kombisensor LPC | 1x out8 LPC | 2x 2in2out LPC
Re: Strommessender Schaltaktor
Hallo Denis,
danke für's rausfinden.
Ja, die Segnungen des C-Standards... Da wollte ich extra floats verwenden um zu sparen, und es werden doch double Berechnungen verwendet, weil die Konstanten automatisch doubles sind, wenn man kein f-Postfix dranhängt.
Mit den kleinen Änderungen schrumpft das Programm um 5,6kB.
Gruß,
Florian
danke für's rausfinden.
Ja, die Segnungen des C-Standards... Da wollte ich extra floats verwenden um zu sparen, und es werden doch double Berechnungen verwendet, weil die Konstanten automatisch doubles sind, wenn man kein f-Postfix dranhängt.
Mit den kleinen Änderungen schrumpft das Programm um 5,6kB.
Gruß,
Florian
Re: Strommessender Schaltaktor
Hallo!
Ich habe den Aktor nachgebaut. Selbstverständlich habe ich die Anleitung für den Zusammenbau vorher NICHT vollständig durchgelesen. Jetzt habe ich gesehen, dass die Stromwandler alle in eine Richtung verbaut werden sollten. Was für ein Problem habe ich wenn das nicht so ist? Bei einem Aktor ist es nur ein Stromwandler, den könnte ich also drehen. Bei den anderen beiden sind es aber genau 3
Ich habe den Aktor nachgebaut. Selbstverständlich habe ich die Anleitung für den Zusammenbau vorher NICHT vollständig durchgelesen. Jetzt habe ich gesehen, dass die Stromwandler alle in eine Richtung verbaut werden sollten. Was für ein Problem habe ich wenn das nicht so ist? Bei einem Aktor ist es nur ein Stromwandler, den könnte ich also drehen. Bei den anderen beiden sind es aber genau 3
Re: Strommessender Schaltaktor
Hallo,
das sollte keine Probleme machen. Es sieht halt nicht ordentlich aus
Und sonst, hast Du dem Aktor schon Lebenszeichen entlocken können?
Gruß,
Florian
das sollte keine Probleme machen. Es sieht halt nicht ordentlich aus
Und sonst, hast Du dem Aktor schon Lebenszeichen entlocken können?
Gruß,
Florian
Re: Strommessender Schaltaktor
Morgen!
Habe einen Aktor eingebaut und der scheint auch gut zu funktionieren. Bisher nutze ich nur einen Ausgang. Die anderen muss ich erst noch vedrahten.
Habe einen Aktor eingebaut und der scheint auch gut zu funktionieren. Bisher nutze ich nur einen Ausgang. Die anderen muss ich erst noch vedrahten.
Re: Strommessender Schaltaktor
Hallo nochmal!
Ich nutze jetzt den Aktor und für den Stromwert wie von ETS vorgeschlagen den 2 Byte DPT 7.012.
Merkwürdigerweise bekomme ich auch ohne, dass ein Gerät angesteckt ist den Messwert (12mA)
Außerdem bekomme ich während dem Betrieb der Waschmaschine immer mal wieder ströme deutlich über 16A was ich doch für Unwahrscheinlich halte.
Das wären die Werte für den Waschgang der Gerade läuft:
Flot Chart
Passt da was an der ETS Einstellung oder am Aktor nicht?
Ich nutze jetzt den Aktor und für den Stromwert wie von ETS vorgeschlagen den 2 Byte DPT 7.012.
Merkwürdigerweise bekomme ich auch ohne, dass ein Gerät angesteckt ist den Messwert (12mA)
Außerdem bekomme ich während dem Betrieb der Waschmaschine immer mal wieder ströme deutlich über 16A was ich doch für Unwahrscheinlich halte.
Das wären die Werte für den Waschgang der Gerade läuft:
Flot Chart
Passt da was an der ETS Einstellung oder am Aktor nicht?
Re: Strommessender Schaltaktor
Puh, das deutet darauf hin, dass die Strommessung bei Dir ein Problem hat. Die 12mA ohne angeschlossene Geräte zeigt schon mal ein erhöhtes Grundrauschen oder andere Störungen.
Es existiert immer ein gewisses Rauschen in der Strommessung, das sich als kleiner "Phantomstrom" bemerkbar macht. Die Firmware setzt daher alle Ströme kleiner 7mA einfach auf Null. In der Praxis ist dieses Rauschen jedoch deutlich kleiner als 7mA (2 bis 3mA).
Hast Du diesen 12mA Grundwert auch, wenn keine Netzspannung am Aktor angeschlossen ist? Ist der auch auf den anderen Kanälen messbar?
Die Fehlmessungen über 25A sind im Bereich des maximal messbaren Stroms.
Kannst Du Messungen mit ohmschen Verbrauchern (sinusförmiger Strom) <1A und >2A machen? Die Strommessung arbeitet intern mit zwei Strommessbereichen und so würden beide Bereiche angesprochen.
Die wahrscheinlichste Ursache ist ein Bestückungsfehler (oder Bauteildefekt) im Aktor.
Es existiert immer ein gewisses Rauschen in der Strommessung, das sich als kleiner "Phantomstrom" bemerkbar macht. Die Firmware setzt daher alle Ströme kleiner 7mA einfach auf Null. In der Praxis ist dieses Rauschen jedoch deutlich kleiner als 7mA (2 bis 3mA).
Hast Du diesen 12mA Grundwert auch, wenn keine Netzspannung am Aktor angeschlossen ist? Ist der auch auf den anderen Kanälen messbar?
Die Fehlmessungen über 25A sind im Bereich des maximal messbaren Stroms.
Kannst Du Messungen mit ohmschen Verbrauchern (sinusförmiger Strom) <1A und >2A machen? Die Strommessung arbeitet intern mit zwei Strommessbereichen und so würden beide Bereiche angesprochen.
Die wahrscheinlichste Ursache ist ein Bestückungsfehler (oder Bauteildefekt) im Aktor.