Überlegung zur Wilssen Hardware
Der Wilssen ist ja gerade „heftig“ in der Diskussion. Wenn ich allerdings Arduino und FFT im gleichen Atemzug lese, bekomme ich das softwaretechnische Grausen! 
Lasst uns doch einmal zusammenfassen, was der Controller alles Können muss:
- Strom- und Spannungsmessung
- Dreiphasenüberwachung
- Kommunikation mit Hostcomputer und anderen Nodes
- Akkuladungen durchführen
- Sich bis zu einem gewissen Grad autark mit Energie zu versorgen
- Als Frequenzumrichter / Wechselrichter fungieren
- Als Stromsenke bei Überspannung dienen
- Phasenschiebung zur Blindlastkompensation vornehmen
- Logging von Spannungen, Strömen, Konfigurationszuständen, etc
- Galvanische Trennung von dem Powerteil
Das sind alles Dinge, die man mit einer einzelnen Platine nicht wirklich bewerkstelligt bekommt. Einen Arduino als Prozessor zu nutzen finde ich ein wenig fehl am Platze. Das hat ijon allerdings schon angemerkt (Siehe hier: https://discourse.test.opensourceecology.de/t/krtik-von-ijon-an-dem-controller/133/1 ), wenn auch in etwas drastischeren Tönen.
Mein Vorschlag wäre daher, ein modulares System zu entwickeln, um Interoperabilität mit anderen Devices zu erreichen. Das gesamte Konzept lässt sich dann zweimal aufbauen: Einmal für größere Maschinen in einem 19 Zoll, 4 Höheneinheiten Rackträger und einmal in PC104 Größe mit kleinen Steckern oder Aufsteckplatinen um die ganze Sache in kleineren Dingen zu verbauen.
Die Hauptplatine erhält einen relativ großen Prozessor und relativ wenig Peripherie. Um die Hauptplatine zu betreiben muss diese dann auf ein Powersupply gesteckt werden. Damit ist sichergestellt, das jede Platine für sich gekapselt entwickelt werden kann und keine Überschneidungen mit anderen Projekten entstehen können. Auch kann man so sicherstellen, das Spannungen genau da hin kommen, wo sie hingehören: Man nutzt einfach ein Steckersystem, welches 50 oder mehr Pins hat. Damit ist dann aufgeschlossen, dass – gleiches Auflagemaß vorausgesetzt – ein Modul 12V statt 5V bekommt und somit durchbrennt.
Das ganze macht es auch leichter, einen gemeinsamen Formfaktor für solche Dinge zu finden. Ich würde hier 10*10 Zentimeter vorschlagen. Das ist ein gutes Maß, um eine Menge an Bauteilen unterzubringen und eine relativ große Kühlfläche für Bauteile, die heiß werden, auf die Platine zu bringen. Von der Höhe halte ich 3,5cm von der Platinenoberfläche zur nächsten ausreichend. Damit könnte man – falls es denn jemals Erweiterungsbedarf geben sollte – kleine Module, ähnlich den DDR2 RAM Riegeln, in die Platinen zu stecken und ihnen somit extra Features, wie einen leistungsfähigen Coprozessor zur Verfügung zu stellen.
An sich sollte jedes Modul mit einem ISP / JTAG Header ausgerüstet werden, mit dem die Software entwickelt werden kann oder aber bei Problemen mit einem Bootloader das Board einzeln geflasht werden.
Das würde auf jedem Board mit µC einen kleinen „Coprozessor“ nötig machen, der den eigentlichen Controller im RESET Zustand hält und dafür sorgt, dass das Programm auch auf den Chip kommt und nicht irgendwo im Nirvana landet. Oft sind die Signalleitungen nämlich durch andere Platinen gegen Masse gelegt und können somit den Download auf den Flash stören. Das kostet pro Platine etwa ein bis zwei Euro mehr, benötigt ein wenig Zeit, um programmiert zu werden, doch damit hätte man dann die Möglichkeit geschaffen, dass sich jede Platine durchs Anhängen an das „Mainboard“ oder eine CPU Karte sich selbst und ihre Softwareversion preisgibt. Zusätzlich dazu kann man im EEPROM der kleinen Management CPU auch Dinge verstecken, wie zum Beispiel ein kleines Loggingsystem oder ob die Software auf dem Hauptprozessor des Boards noch intakt ist.
Wie man allerdings am Arduino sieht, benötigt man oft nicht mehrere Boards mit je einer CPU in einem Stack. Daher kann das auch gerne ein Hirngespinst bleiben. Was auf jeden Fall Sinn macht, ist eine Trennung der Komponenten.
Eigentlich hatte ich einen längeren Post geplant, allerdings läuft mir gerade die Zeit davon. Daher von mir nur mal so viel und nicht mehr 
einball 