Seite 13 von 14

Re: Strommessender Schaltaktor

Verfasst: 27. Jan 2021, 23:15
von Florian
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

Re: Strommessender Schaltaktor

Verfasst: 16. Mär 2021, 19:13
von Darthyson
Hallo Florian,

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
Viele Grüße
Denis

Re: Strommessender Schaltaktor

Verfasst: 16. Mär 2021, 21:10
von Florian
Gut erkannt. Ich habe das übernommen, danke für den Hinweis.

Re: Strommessender Schaltaktor

Verfasst: 10. Okt 2021, 23:21
von Darthyson
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:

Code: Alles auswählen

void AdcIsrCurrFilt(void)
wird die double Version von sqrt() aufgerufen.

In Appl.cpp:

Code: Alles auswählen

void Appl::OneCurrThresholdFct(int chno, float IMeas, int fctno) und
void Appl::CurrentFunctions(unsigned referenceTime)
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).

Code: Alles auswählen

 extern "C" __attribute__((optimize("O3"))) void ADC_IRQHandler (void)
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

Re: Strommessender Schaltaktor

Verfasst: 12. Okt 2021, 22:58
von Florian
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

Re: Strommessender Schaltaktor

Verfasst: 15. Nov 2021, 23:33
von Klamm
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 :oops:

Re: Strommessender Schaltaktor

Verfasst: 16. Nov 2021, 21:03
von Florian
Hallo,

das sollte keine Probleme machen. Es sieht halt nicht ordentlich aus :lol:

Und sonst, hast Du dem Aktor schon Lebenszeichen entlocken können?

Gruß,
Florian

Re: Strommessender Schaltaktor

Verfasst: 30. Nov 2021, 15:54
von Klamm
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.

Re: Strommessender Schaltaktor

Verfasst: 6. Dez 2021, 10:56
von Klamm
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?

Re: Strommessender Schaltaktor

Verfasst: 6. Dez 2021, 20:01
von Florian
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.