|
|
USB Koppelfeld für Festplattenvon Torsten Crull Es entsteht ein modulares System, welches sich zu nahezu beliebig großen Quasi- Koppelfeldern für Festplatten kaskadieren läßt. Ein Koppelfeld-Modul hat Anschlüsse für vierzehn Festplatten; das entspricht einem 19"-Baugruppenträger. Die Stromversorgung der Festplatten läßt sich einzeln schalten. Die Platten werden - gesteuert vom Mikrocontroller - wahlweise über USB-SATA-Bridges, USB-IDE-Bridges oder über einen eSATA Port-Multiplier mit einem Host-Computer verbunden.
[Bearbeiten] EinleitungDas Projekt umfaßt:
Es können handelsübliche USB-Bridges verwendet werden; diese kosten etwa fünf Euro pro Stück: [Bearbeiten] Architektur und Mechanischer AufbauDa in einem 19"-Baugruppenträger bis zu vierzehn handelsübliche 3,5"-Festplatten untergebracht werden können, sind die Koppelfelder auf vierzehn Festplatten ausgelegt. Pro Baugruppenträger ist also eine Koppelfeld-Platine nötig. Es sind wahlweise USB- und SATA-Koppelfelder vorgesehen, man kann also beliebig Baugruppenträger mit USB-SATA-Bridges und Baugruppenträger mit eSATA Port-Multiplyer vermischen. Die Anzahl von maximal sechzehn Baugruppenträgern ergibt sich aus der Adressierung über I²C. Jedes Koppelfeld hat eine Ansteuerung für eine 230V-Box: Um Strom zu sparen, wenn alle Festplatten im betreffenden Baugruppenträger ausgeschaltet sind, kann jedes Netzteil auf der Primärseite ausgeschaltet werden. Es können übliche Netzteile aus alten PC-Gehäusen verwendet werden (ATX-PC oder AT-PC). In der Firmware muß sicher gestellt werden, dass pro Baugruppenträger nicht mehr Festplatten eingschaltet werden, als das Netzteil versorgen kann und dass ggf. eine minimal benötigte Belastung des Netzteils für den Netzteil-Regler nicht unterschritten wird. Alternativ zu einem teuren Baugruppenträger kann man sich auch aus gelochten Stahlbändern vom Baumarkt einen Rahmen für die Festplatten bauen; das sieht dann aus wie aus 'nem Trix-Metallbaukasten (s. Bild rechts). Ein Aufbau mit Holzleisten wählte Thomas Pfeifer in seinem Aufbau, der technisch der "Spar- Variante" (s.u.) entspricht. Da sich bei den Modulen je nach Ansichten und Anforderungen der Anwender untereschiedliche Technologien (µC-Familien, Relais oder MOSFETs als Schalter, ...) als vorteilhaft erweisen, ist es besonders wichtig, dass die Schnittstellen feststehen. Später kann man dann das System verändern oder nach seinen Bedürfnissen erweitern und kann dabei bestehende Module behalten. [Bearbeiten] Schnittstellen
[Bearbeiten] HardwareDie Hardware besteht aus den oben genannten Modulen, die im Folgenden beschrieben werden: [Bearbeiten] SteuerplatineZentrales Element der Steuerplatine ist ein PIC32MX764F128L-I/PT von Microchip. Er enthält bereits alle verwendeten Schnittstellen: UART (RS232), Ethernet, USB, I²C, SPI und Analogeingang. Für die CPU-Platine sind folgende Integrationsstufen geplant: 1. Gefädelte Lochrasterplatine mit Adapterplatine für das TQFP-100-Gehäuse und vornehmlich DIL-Gehäusen. 2. Aufbau mit professionell gefertigten Platinen mit Lötstopplack und vornehmlich SMD-Gehäusen. 2. Redesign und kleinserientaugliche Lösung. Die Gefädelte Lochrasterplatine wird während der Entwicklung Stück für Stück erweitert. In der ersten Ausbaustufe wird der Mikrocontroller über den integrierten UART und eine USB-RS232C-Brigde mit dem Host verbunden, damit die Software noch ohne USB-Stack auskommt. In der ersten Ausbaustufe soll zunächst die praktische Nutzbarkeit des Systems gewährleistet sein, um Erfahrung mit dem System zu sammeln. In weiteren Ausbaustufen werden dann der Analogeingang, die Ethernet-Schnittstelle und die USB-Schnittstelle in Betrieb genommen. Über den Analogeingang kann der Mikrocontroller die Spannungen an den Netzteilen der angeschlossenen Baugruppenträger bestimmen und überwachen; Details sind der Beschreibung der Koppelfelder (s.u.) zu entnehmen. [Bearbeiten] StromversorgungDamit die Netzteile nicht ständig Standby-Strom verbrauchen, kann der Mikrocontroller alle Netzteile primärseitig über eine 230V-Relaisbox ausschalten, auch das Netzteil, von dem die Steuerplatine versorgt wird. Wenn das Gerät über Wakeup-on-LAN eingeschaltet werden soll, wird es bei ausgeschaltetem Netzteil von einem Handy-Akku versorgt. Bei einer Versorgung über Ethernet (POE) wird der Handy-Akku nicht unbedingt benötigt, überbrückt aber ggf. Unterbrechungen in der POE-Versorgung. Wenn das System über USB vom Host gesteuert wird, verhält sich das Gerät in der Regel wie ein "self-powered USB-device". Im Standby-Betrieb nutzt das System je nach Verfügbarkeit ggf. 100mA oder 500mA vom USB-Uplink zum Host-PC, um den Akku geladen zu halten. Wenn POE nicht verfügbar ist kann das System bei niedrigem Ladestand des Akkus über die 230V-Relaisbox auch eines der Netzteile einschalten, um sich dann aus dem Netzteil mit Strom für eine Akku-Schnelladung zu versorgen. Die 230V-Relaisbox hat optional einen 230V-Ausgang, damit der Host-Computer primärseitig vom Netz getrennt werden kann, um die Stromkosten in den Standby-Zeiten zu senken. Das System kann optional mit einem PC-Netzteil, mehreren Mini-Netzteilen, einem Handy-Ladegerät und/oder POE versorgt werden. PC-Netzteil nach ATX-Standard haben eine Standby-Stromversorgung; es können aber auch alte PC-Netzteile (nach AT-PC-Standard ohne Standby) eingesetzt werden: Wenn eine oder mehrere Festplatten mit Strom versorgt werden müssen, geht das System in einen der hellblauen Zustände. Wenn der Akku voll geladen ist und keine Festplatte mehr aktiv ist, geht das System in den Standby (hellblaue Pfeile.) Zwischen den Zuständen "POE", "Akku" und "Uplink" wechselt das System je nachdem,
Auf diese Weise ist das System sehr flexibel und läßt sich je nach Bedürfnissen des Nutzers individuell versorgen. Durch Weglassen von optional bestückbaren Bauteilen kann man kosten sparen und die Flexibilität nach nach seinen Bedürfnissen bewußt einschränken. [Bearbeiten] Display-PlatineOptional ist eine Display-Platine mit einem Dreh-Drück-Geber und Siebensegment LED-Anzeigen vorgesehen. Sie ist auf Steuerplatine montiert und über einen zehnpolige Steckverbindung mit der Steuerplatine verbunden. Das Bedienkonzept steht noch nicht im Detail fest, nur soviel: Über den Dreh-Drück-Geber läßt sich das System einschalten und der anzuzeigende Wert auswählen. Angezeigt werden die Nummern der aktiven Festplatten und die gemessenen Spannungen an den Netzteilen. Der Aufwand für eine umfangreiche Benutzerschnittstelle über die Display-Platine lohnt sich kaum, da in der Praxis die Steuerung über RS232, Ethernet oder USB erfolgen wird. [Bearbeiten] USB KoppelfeldAus der Diskussion zu diesem Projekt ergab sich, dass die Variante 2 mit gestapelten USB-Hubs umgesetzt wird: Die ursprüngliche Idee aus einer Matrix mit FSUSB42-ICs wurde verworfen; die Vorteile der Varianten: Variante 1: FSUSB42-Matrix
Variante 2: USB-Hub-Stapel:
[Bearbeiten] Hub-Stapel & Vusb-SteuerungDas Herzstück eines USB Koppelfeldes sind die USB-Hubs und optionale USB-Power-Schalter für die 5V-Spannung "Vusb", jeweils an Pin 1 der USB-Anschlüsse. Über Vusb werden die USB-SATA-Bridges aktiviert und deaktiviert: Um Kosten zu sparen, kann man die USB-Power-Schalter auch weglassen, dann werden die USB-SATA-Bridges zusammen mit den 5V der Festplatten geschaltet. Diese "Spar-Variante" ist natürlich nicht konform zur USB-Spezifikation. Da die 5V der Festplatten auf separaten Relais-Platinen geschaltet werden, sind zwei Varianten der Verkabelung mit den Relais-Platinen vorgesehen. In der Variante 2 (s. Bild, "Spar-Variante") werden jeweils vier Adern pro Relais-Platine angeschlossen; bei der Verwendung von USB-Power-Schalten dürfen jeweils nur zwei Adern angeschlossen sein. (ToDo: Anschluss für Lüftersteuerung ergänzen) Legende: 1 Micromatch-Steckverbinder Von den vier Adern pro Relais-Platine werden zwei Adern zum getrennten Einschalten der Stromversorgung von zwei Festplatten verwedet; über die anderen zwei Adern werden optional die geschalteten 5V für die Versorgung der USB-Bridges zurückgeführt. Falls USB-Power-Schalter verbaut sind, müssen diese Adern abgekniffen werden. [Bearbeiten] Schieberegister für SteuerungsbitsDie Steuerungsbits werden mit dem SPI-Protokoll von einem Microcontroller in die kaskadierten Schieberegister (daisy chain) geschrieben. Die Slave-Select-Signale für die SPI-Schnittstelle werden von einem I²C-Expander (IC1, PCF8574) (s.u.) gesteuert. Um das Clock-Signal bei /SS = high (inaktivem Slave-Select) zu unterdrücken, ist noch ein Oder-Gatter vor den Clock-Eingang vorgesehen. (ToDo: Im Forum ansprechen)
[Bearbeiten] Slave-Select per I²CVon einem I²C-Expander (IC1, PCF8574) und einem 3:8 Decoder (IC37, 74HC138) werden pro Baugruppenträger die konkreten Slave-Select-Signale für das SPI (s.o.) erzeugt. Dadurch ist es möglich, bis zu sechzen Koppelfelder per I²C-Protokoll zu adrerssieren. Der 74HC138 enthält kein Latch. Um unerlaubte Zustände beim Umschalten der Adresse am 3:8 Decoder zu vermeiden, muß der Mikrocontroller beim Umschalten das globale Slave-Select-Signal "/SS" auf "high" halten. (ToDo: Schaltbild aktualisieren) Die I²C-Adresse des Baugruppenträgers wird über S1 und eine Bestückungsvariante für IC1 eingestellt. [Bearbeiten] Analogsignal "Probe"Von allen Baugruppenträgern wird eine gemeinsame "Probe"-Leitung verwendet, um eine zu messende Spannung an den Analogeingang des Mikrocontrollers zu geben. Über Analogschalter (IC32, s. Bild) wird die zu messende Spannung mit der "Probe"-Leitung verbunden. Die Firmware muß sicher stellen, dass immer nur ein Analogschalter auf allen Baugruppen leitend ist. [Bearbeiten] Ansteuerung der Relais-PlatinenUm die Festplatten-Stromversorgung über Relais oder MOSFTEs zu steuern, führen vom Koppelfeld insgesamt 56 Flachbandadern zu den Relaisplatinen. Die Belegung der Adern ist im Kapitel "Vusb-Steuerung" (s.o.) beschrieben. Sowohl Relais als auch die MOSFET-Transistoren werden über Open-Collector-Ausgänge eines ULN2003A angesteuert. Gegenüber einzelnen Transistoren hat ein ULN2003 keinen finanziellen Nachteil, es sind jedoch weniger Teile zu bestücken und das Platinenlayout vereinfacht sich. Datei:USB-Koppelfeld-ULN2003a.png [Bearbeiten] USB-Versorgung der USB-SATA/PATA-BridgesWie oben beschrieben, gibt es eine "Spar-Variante" Nr. 1 und eine spezifikationskonforme Variante Nr. 2. Bei der "Spar-Variante" werden die USB-Power-Schalter nicht bestückt und die 5V Vusb kommen über die Pins 3,4,7,8, ... von X1 und X2 von der geschalteten 5V-Stromversorgung der Festplatten. Datei:USB-Koppelfeld-HighSide.png [Bearbeiten] Steuerung der 230V-RelaisboxDie Relais in der 230V-Relaisbox (s.u.) werden über die Open-Collector-Ausgänge eines ULN2003A geschaltet. Durch die Open-Collector-Ausgänge können entweder Relais erregt werden, MOSFETs geschaltet oder Optokoppler angesteuert werden. 6-Pin-DIN-Stecker dienen der Verbindung zwischen der dem Koppelfeld und der Relaisbox. Datei:USB-Koppelfeld-ULN2003b.png [Bearbeiten] eSATA Koppelfeld
[Bearbeiten] RelaisplatineDie Relaismodule schalten in Zweiergruppen die Stromversorgung der Festplatten und sind mit vier Stromschienen aus Kupferdraht miteinander verbunden: Legende: 1 Relaisplatine mit Anschlussklemmen für das Netzteil, davon wird nur eine Platine pro Baugruppenträger benötigt. Darüber hinaus hat jedes Relaismodul einen Anschluss für einen Lüfter. (ToDo: Bild aktualisieren.) Das Relaismodul gibt es in zwei Varianten: Mit elektromagnetischen Schaltern und mit Halbleiter-Schaltern (MOSFETs): [Bearbeiten] 230V-RelaisboxDie Relaisbox kann optional über einen 6-poligen DIN-Stecker an eines der Koppelfelder angeschlossen werden, um die Netzteile für die Festplatten und für den Host-PC primärseitig vom Stromnetz zu trennen. Die Relaisbox muß nach VDE-Richtlinien aufgebaut sein. Damit beim Betrieb nicht ständig ein Relais angezogen (erregt) sein muß, kommen bistabile 230V-Relais zum Einsatz, die über Optokoppler (Halbleiterrelais) ein- und ausgeschaltet werden können. Am 230V-Anschluss hinter der Sicherung ist ein Gasableiter für einen zusätzlichen Blitzschutz vorgesehen. Bei Verwendung moderner Netzteile mit geringen Standby-Leistungen kann man natürlich auf die 230V-Relaisbox verzichten.
[Bearbeiten] Zustandsautomaten[Bearbeiten] Software / FirmwareDie Firmware wird komplet im internen EEPROM des PIC32MX764F128L-I/PT gespeichert und per In-Curcit-Debugger in den Mikrocontroller geladen. Die detaillierte Beschreibung der Firmware folgt, hier nur eine naheliegende Reihenfolge der Softwarestände der Integrationsstufen (s. o.): 1.1. Unidirektionale Steuerung über UART (RS232) zur Ansteuerung der Relaisplatinen in der "Spar-Variante". [Bearbeiten] ZustandsautomatenBevor die Implementierung der Software beginnt, sollten die Anforderungen klar sein. Viele Anforderungen lassen sich wie in den folgenden Kapiteln in Zustandsautomaten beschreiben: [Bearbeiten] Betriebszustände(ToDo: Kapitel vervollständigen) [Bearbeiten] Zustand offDieser Zustand wird
Ereignis "5V plugged 1":
Ereignis "POE plugged 1":
Ereignis "USB plugged 1":
Ereignis "on":
Ereignis "230V-Set":
wechselt das System in den Zustand "Battery" und prüft den Ladezustand der Batterie; wenn der obere Wert der Batteriespannungshysterese unterschritten ist, wird im Zustand "Battery" sofort versucht, den Akku zu laden. [Bearbeiten] Zustand 5V poweredFalls eine Mini-USB-Buchse verbaut und dort ein externes USB-Ladegerät angeschlossen ist, kann das Sytem in diesen Zustand wechseln. Wenn eine Batterie verbaut und nicht voll geladen ist, wird sie automatisch mit bis zu maximal zulässigem Ladestrom geladen; dabei wird die Versorgungsspannung über einen Analogeingang beobachtet, um Überlastungen des Netzteils zu verhindern. Wenn der Webserver aktiv ist, ist er über Ethernet erreichbar. Am USB-Anschluss verhält sich das System als "self powered USB Device". Ereignis "blackout 1":
Ereignis "POE plugged 2":
Ereignis "USB plugged 2":
Ereignis "battery full 1":
Ereignis "HDD on 1":
[Bearbeiten] Zustand POE poweredFalls die Ethernet-Schnittstelle verbaut ist und dort eine Versorgungsspannung anliegt, kann das Sytem in diesen Zustand wechseln und verhält sich wie im Zustand "5V powered". Der Akku wird ggf. mit maximal 10 Watt über die 48V geladen; dabei wird die 48V über einen Analogeingang beobachtet, um Überlastungen der POE-Versorgung zu verhindern. Ereignis "blackout 2":
Ereignis "blackout 5":
Ereignis "HDD on 2":
[Bearbeiten] Zustand USB-powered-100Falls das System über USB an ein einem Host-PC angeschlossen ist und und dort Vusb größer als 4,5V ist, kann das Sytem in diesen Zustand wechseln und wartet,
(ToDo: Wert von 4,5V prüfen) Ereignis "blackout 3":
Ereignis "5V plugged 2":
Ereignis "POE plugged 3":
Ereignis "500mA available":
Ereignis "USB unplugged":
Ereignis "HDD on 3":
[Bearbeiten] Zustand USB-powered-500Falls das System über USB an ein einem Host-PC angeschlossen ist und und dort 500mA zur Verfügung stehen, kann das Sytem in diesen Zustand wechseln und verhält sich wie im Zustand "5V powered", der Akku wird ggf. mit maximal 400mA über Vusb geladen. Ereignis "overcurrent":
Ereignis "battery full 2":
Ereignis "HDD on 4":
[Bearbeiten] Zustand BatteryEreignis "bat low 1":
Ereignis "off":
Ereignis "bat low 2":
Ereignis "5V plugged 3":
Ereignis "POE plugged 4":
Ereignis "USB plugged 2":
Ereignis "bat low 3":
Ereignis "HDD on 5":
[Bearbeiten] Zustand Power onEreignis "blackout 4":
Ereignis "all HDD off 1":
Ereignis "all HDD off 2":
Ereignis "all HDD off 3":
Ereignis "all HDD off 4":
[Bearbeiten] Sonstiges
[Bearbeiten] Downloads
[Bearbeiten] Siehe auch
|