# Iseg-HV-Geräte Kontroll-/Testprogramm #
*****************************************

*(Testergebnisse für: EHQ-8210n, NHS-6230n, EHS-8230n-F)*

     16.Mar.2016 K. Huber, Strahlenzentrum Univ. Gießen
     Version 11.Jul.2016

1 Funktion von IsegHV
*********************

Das IsegHV Programm dient dem Testen der Iseg-HV Geräte und der
CAN-Bus-Verbindung zum Steuern der Geräte

   Mit dem IsegHV Programm wurde das Verhalten der Iseg-HV Geräte beim
Programm gesteuerten Fahren der Hochspannung untersucht. Dazu
existieren einige Testroutinen.  Ferner können damit die Iseg-HV Geräte
konfiguriert werden, also u.A. die Spannungen der einzelnen Kanäle
eingestellt und der Status abgefragt werden.

   Die Iseg-HV Geräte können sowohl über das Standard-Control-Routing
mit CAN-Interface als auch über das VME-CAN-Interface i4000 gesteuert
werden. Das IsegHV Programm erkennt ob das angesprochene Iseg-HV das
neuere EDCMP-Protokoll versteht (s.h. Iseg-Manuals) und verwendet ggf.
dieses. Andernfalls wird versucht mit dem älteren DCMP-Protokoll
Verbindung aufzunehmnen.

Die Hard- und Software Voraussetzungen sind:
   * VME Labor-Rechner-System

   * ggf. Standard-Control-Routing

   * ggf. I4000 VME Modul mit vier SJA1000 CAN Controllern

   * IsegHV Netzgerät

   * VT240/330 Terminal oder PC mit TeraTerm

   * VxWorks Betriebssystem

   * Netzwerkanschluss zu einem Host-Rechner

2 Bedienung von IsegHV
**********************

Die notwendigen Eingaben werden in Dialogform angefordert.  Der Dialog
ist in einer Hierarchiestruktur aufgebaut, wobei mittels Menülisten von
einer Dialogebene in die andere gewechselt werden kann. Für
Parametereingaben existieren im Allgemeinen Vorbelegungswerte, die
editiert werden können.

        --- IsegHV Top-Menü ---

        --- Konfigurations-Menü ---

Select CAN Controller

        --- CAN Controller Menü ---

Test SJA1000 CAN Controller

        --- Iseg HV Module Menü ---

Iseg HV CAN Control
 IsegHV CAN ID (0 - 63) = 0x3f

2.1 Exit IsegHV
===============

Verlassen des Programmes.

2.2 Set configuration
=====================

Das Konfigurations-Menü muss zu Beginn einmal durchlaufen werden.  Für
die verwendeten VME-Module müssen die Basisadressen angegeben werden.
Dazu wird eine Übersicht des Address-Mapping auf dem VME-Bus ausgegeben.

   Zunächst muss der verwendete CAN-Controler-Typ angegeben werden:

   *Bosch CC770 on Routing Board*
Der CC770 ist auf einer Steckkarte im Control Routing untergebracht,
das  über ein VME VIPC610 oder IPC01 Interface mit dem Laborrechner
verbunden ist. Es ist die Basisadresse des Anschluss B des
VME-Interfaces einzutragen.  Ferner muss für den CC770 noch die
Steckplatz ID im Control Routing angegeben werden.

   *Philips SJA1000 on VME Board i4000*
Der SJA1000 befindet sich auf einem i4000 VME-Board, dessen Basisadresse
angegeben werden muss. Ferner muss noch eingetragen werden welches Modul
des i4000 verwendet wird.

2.3 CAN Controller
==================

SJA1000 CAN Controller Kontroll- und Test-Menü

2.3.1 Return
------------

Rückkehr zum Top-Menü.

2.3.2 Init CAN Controller
-------------------------

Baustelle!

2.3.3 Check Bus Speed
---------------------

Baustelle!

2.3.4 Show Controller Status
----------------------------

Baustelle!

2.3.5 SJA1000 Self Tests
------------------------

Baustelle!

2.3.6 Listen to CAN Messages
----------------------------

Baustelle!

2.3.7 Send CAN Message
----------------------

Baustelle!

2.3.8 Write CAN Register
------------------------

Baustelle!

2.3.9 Read CAN Register
-----------------------

Baustelle!

2.4 Iseg HV Module
==================

Iseg HV Module Kontroll- und Test-Menü
Um über den CAN-Bus mit den Iseg Modulen eine Verbindung aufbauen zu
können muss deren CAN-IDs angegeben werden:
*IsegHV CAN ID (0x00 - 0x3f) = 0x3f*
Die beiden Module im Iseg-Crate haben die IDs 0x00 bzw. 0x01.  Das
Modul im VME-Crate hat die ID 0x3f.

2.4.1 Return
------------

Rückkehr zum Top-Menü.

2.4.2 Init ISEG-HV device
-------------------------

Baustelle!

2.4.3 Module status and events
------------------------------

Baustelle!

2.4.4 Module control
--------------------

Baustelle!

2.4.5 Channel status and events
-------------------------------

Baustelle!

2.4.6 Channel control
---------------------

Baustelle!

2.4.7 Set voltage
-----------------

Baustelle!

2.4.8 Show voltage
------------------

Baustelle!

2.5 Help
========

Bringt diese Anleitung über das menüorientierte GNU-INFO-Programm auf
den Bildschirm.  INFO läuft dabei auf einem Server (z.Z. Servix).

2.6 IsegHV Konfigurations-Menü
==============================

Unter diesem Konfigurations-Menü erfolgen alle notwendigen Anpassungen
des Programmes. Beim allerersten Start des Messprogrammes wird dieser
Menüpunkt stets automatisch aufgerufen. Danach sollte er nur noch bei
Konfigurationsänderungen benutzt werden.

2.6.1 Return
------------

Rückkehr zum Top-Menü.

2.6.2 Data Routing hardware
---------------------------

Da das Data-Routing im Experiment zum Einsatz kommt, muss die Software
wissen, auf welchem Wege das Data-Routing ans VME angeschlossen ist. Es
gibt hierfür mehrere Möglichkeiten:
   * Direkter Anschluss an das Prozessor-Board (MVME162, MVME172)

   * Anschluss an die Interface-Boards VIPC610 oder IPC01. Dabei wird
     für das Data-Routing üblicherweise der IP-Slot C/D verwendet
     (unterer frontseitiger Stecker).

   * Anschluss an ein anderes Interface-Board. Dessen VME-Bus-Adresse
     muss eingetragen werden.

2.6.3 Control Routing hardware
------------------------------

Da das Control-Routing im Experiment zum Einsatz kommt, muss die
Software wissen, auf welchem Wege das Control-Routing ans VME
angeschlossen ist. Es gibt hierfür mehrere Möglichkeiten:
   * Direkter Anschluss an das Prozessor-Board (MVME162, MVME172)

   * Anschluss an die Interface-Boards VIPC610 oder IPC01. Dabei wird
     für das Control-Routing üblicherweise der IP-Slot A/B verwendet
     (oberer frontseitiger Stecker).

   * Anschluss an ein anderes Interface-Board. Dessen VME-Bus-Adresse
     und die Interrupt_Priorität müssen eingetragen werden.

2.6.4 Electron current converter
--------------------------------

(Projekt!)
Der Elektronenstrom wird über einen Spannungs-Frequenz-Konverter in eine
Frequenz gewandelt. Der Konverter ist so ausgelegt, dass er bei
Vollausschlag auf dem Keithly-Elektrometer 500kHz abgibt. Für die
einzelnen Messbereiche kann es jedoch geringfügige Abweichungen geben,
die durch eine exakte Messung bestimmt werden müssen. In den
Elektronenstrom-Konversions-Faktoren können diese Abweichungen
berücksichtigt werden.

2.6.5 CAN/IsegHV parameters
---------------------------

Für das über den CAN-Bus gesteuerte IsegHV-Netzgerät werden die
folgenden Parameter benötigt. Die in Klammer angegebenen Werte haben
sich bewährt:
   * *CAN module on i4000*
     Das i4000 VME-Modul ist ein Träger für vier CAN-Controller. Hier
     ist anzugeben an welchen Controller das IsegHV angeschlossen ist.

   * *IsegHV CAN ID*
     Das Iseg-Modul hat auf dem CAN-Bus eine ID, mit der es
     angesprochen wird (auf der Rückseite des Moduls verdrahtet;
     unverdrahtet: 0x7f).

   * *Voltage ramp speed*
     Das IsegHV muss auf eine Geschwindigkeit der Spannungsänderung
     eingestellt werden. Die Einstellung erfolgt in Prozent der
     Nominalspannung und ist begrenzt auf 20%.

   * *ADC sample rate*
     Dies ist die Abtastrate bei der IsegHV Spannungsmessung. Sie sollte
     möglichst groß gewählt werden (max 50Hz) um Spannungssprünge
     schnell einregeln zu können.

   * *ADC sample time*
     Die IsegHV ADCs benötigen eine Mindestzeit um einen neuen
     Spannungswert zu konvertieren. Mit dem IsegHV-Programm kann dieser
     Wert ermittelt werden.

   * *Wait after step*
     Nach einem IsegHV-Kommendo zur Spannungsänderung liefert der ADC
     für eine gewisse Zeit unbrauchbare Messwerte, die ausgeblendet
     werden müssen.

3 Test der Iseg HV-Netzgeräte
*****************************

Die Iseg HV-Netzgeräte wurden entwickelt um langzeitstabile Spannungen
zu liefern, nicht jedoch um Spannungen im Sekundentakt zu fahren. Nach
unseren Erfahrungen mit dem Iseg8210n-505F (8 * 1kV) haben wir es
zunächst mit dem von Iseg empfohlenen NHS-6230n (6 * 3kV) versucht. Die
Tests waren aber recht enttäuschend obwohl Iseg sich viel Mühe gegeben
hatte mit vier Firmware-Updates die entdeckten Macken zu beseitigen.
Schließlich hat uns Iseg das EHS-8230n-F (8 * 3kV) empfohlen, das für
unsere Zwecke deutlich besser geeignet ist, und gegen das NHS-6230n
ausgetauscht.
Die folgende Dokumentation der Tests zeigt die Eignung der Iseg
HV-Netzgeräte zum Fahren von Spannungsrampen. Sie stellt einen Auszug
aus dem regen Email- und Telefonverkehr mit Iseg dar.

3.1 Tests am EHQ-8210n-505F
===========================

3.1.1 Das Messverfahren
-----------------------

Die Messungen wurden mit dem eingebauten ADC (0.1mV Auflösung) des
Iseg8210n 505F Netzgerätes durchgeführt am Kanal 7.  Es wurden
verschiedene Spannungssprünge zu höheren und niedrigeren Spannungen
untersucht.  Da der ADC für jeden Kanal nur etwa alle Sekunde ein neues
Ergebnis liefert, wurden die Spannungssprünge und Messungen vielfach
wiederholt.  Da Messungen und Spannungssprünge asynchron zueinander
sind, erhält man so mit der Zeit auch alle Zwischenwerte.  Die
Messwerte wurden mit der größtmöglichen Geschwindigkeit (ca. 1ms)
ausgelesen aber nur die Werte nach einer Änderung registriert. Dies kann
im Falle, dass zwei aufeinanderfolgende Messungen innerhalb der
Auflösung des ADC (0.1mV) gleich sind, eine um ca. 1s zu lange Zeit
ergeben. Die Wahrscheinlichkeit dafür ist jedoch gering und dies kann
nicht während des Fahrens der Spannung auftreten.  Als Zeittakt diente
der 10ms Takt des Computer-Systems.  Offensichtlich funktioniert dieses
Verfahren nicht immer richtig und es gibt gelegentlich zeitliche
Fehlmessungen (Abb.6.1) deren Ursache unklar ist.

3.1.2 Ergebnisse
----------------

Das Iseg8210n 505F Netzgerät benötigt einige Zeit bis die Spannungen
innerhalb vorgegebener Toleranzen stabil stehen. Nach Erhalt des
Spannungskommandos vergehen ca. 200ms bis es mit dem Fahren der
Spannung beginnt (Abb.6.1). Die Geschwindigkeit des Fahrens (Ramp Speed,
max. 100V/s) wird vorgegeben.  Die Fahrphase kann über Status-Bits
(Ramp-Bits) gemeinsam für alle Kanäle (General Status) oder individuell
für die einzelnen Kanäle (Channel Status) abgefragt werden. Das
Status-Bit im General Status ist allerdings eine völlig unzuverlässige
Angelegenheit: es erscheint meist mit erheblicher, unterschiedlicher
Verspätung und ebenso endet es zu einem eher zufälligen Zeitpunkt. Die
Ramp-Bits im Channel Status sind zuverlässiger, wenn man beachtet, dass
auch sie mit etwa 80 - 120 ms Verspätung erst gesetzt werden.

   Nach Abschluss der Fahrphase folgt eine Einschwingphase, deren
Verlauf auch von der äußeren Last abhängt. Ohne Lastwiderstand ist ein
erhebliches Unterschwingen beim Runterfahren aufgetreten (Abb.6.2).
Unabhängig vom Lastwiderstand kann man bei größeren Spannungssprüngen
zwei exponentielle Komponenten von etwa 1.5s und 15s Abklingzeit
beobachten (Abb.6.3).

   Nach der Einschwingphase ergeben die Spannungsmessungen eine
Verteilung mit einer Halbwertsbreite von etwa 10mV (Abb.6.4). Dabei
bleibt allerdings offen ob diese Streuung von der Messung herrührt oder
die Unschärfe der Spannung wiedergibt. Da die Messung über 2 Tage
gelaufen ist, beinhaltet sie auch die Langzeitstabilität.

   Für 10 Spannungsprünge von 1V, 2V, ..., 512V, ausgehend bzw. endend
bei 50V, wurde bei einer Ramp-Speed von 100V/s untersucht, nach welcher
Zeit der Mittelwert der Verteilung sich auf 5mV dem Endwert genähert
hat (Abb.6.5-8). Diese Ergebnisse wurden mit einer Hyperbel gefittet, um
eine Formel für die notwendige Pausenzeit T in Abhängigkeit vom
Spannungsprung U zu erhalten:
     T = P1 * SQRT(P2 + U^2) + P3

     Spannung    steigend    fallend
        P1         50.55       41.02
        P2         38.58      127.00
        P3        127.29        9.38
   Von S100 = 100V/s abweichende Ramp-Speeds Sx wurden, ohne
experimentelle Nachprüfung, durch die folgende Rechnung berücksichtigt:
     Tx = T - Tr100 + Trx
     mit Tr = U / S, dem jeweiligen Anteil der Ramp-Speed S an T.

3.1.3 Messdaten
---------------

Alle nachfolgenden Messungen wurden mit einer Ramp-Speed von 100V/s
durchgeführt.

*Abb.6.1: 500V Spannungssprung*
*Abb.6.2: Unterschwingen bei fehlender Last*
*Abb.6.3: Einschwingphase*
*Abb.6.4: Streuung der Messwerte*
*Abb.6.5: Einschwingzeiten für Spannungssprünge aufwärts (5mV
Toleranz)*
*Abb.6.6: Ausschnitt von Einschwingzeiten für Spannungssprünge
aufwärts*
*Abb.6.7: Einschwingzeiten für Spannungssprünge abwärts (5mV Toleranz)*
*Abb.6.8: Ausschnitt von Einschwingzeiten für Spannungssprünge abwärts*

3.2 Tests am NHS-6230n
======================

3.2.1 Das Messverfahren
-----------------------

Die Spannungen der sechs bzw. acht Kanäle der NHS6 und EHS8 Netzgeräte
wurden mit den eingebauten 24 Bit ADCs (22 Bit genutzt -> 0.715256mV
Auflösung) gemessen. Die unter dem EDCP-Protokoll verwendete
Floatingpoint-Darstellung der Spannungswerte hat eine Genauigkeit von
0.3576mV bei 3kV.

   Der Takt, mit dem die ADCs neue Spannungswerte liefern (Sample Rate)
ist in Grenzen einstellbar.  Werden die ADCs in kürzeren Zeiten als den
Sample-Zeiten abgefragt, so erhält man gelegentlich zweimal den selben
Messwert. Eine Synchronisationsmöglichkeit mit den ADC-Zyklen ist nicht
vorhanden.  Zur Synchronisation der Messung mit den ADCs wurden je nach
Ziel der Messung zwei unterschiedliche Verfahren benutzt.  Die
Zeiteinheit ist der 10ms Takt des Rechners:
   * Zu Beginn wird der ADC in einer Schleife beständig
     ausgelesen und die Zeiten bestimmt, die er benötigt 	um
     einen neuen Wert zu generieren. Mithilfe dieser Statistik 	wird
     eine geeignete Sample-Zeit für die weiteren 	Messungen
     festgelegt.  	Dieses Verfahren gibt keine genaue Information
     über 	den Zeitpunkt der Spannungsmessung.

   * 	Für einige Untersuchungen wird jedoch der Zeitpunkt der
     Spannungsmessung benötigt. Um diesen zu ermitteln 	wird zusätzlich
     zu dem verhergehenden Schritt 	der Spannungswert wh"rend der
     weiteren Untersuchungen 	permanent in einer Schleife so lange
     ausgelesen bis eine 	Änderung auftritt oder bis die
     ermittelte ADC-Sample-Time 	um ist, falls zwei
     aufeinanderfolgende Messwerte gleich sind.

3.2.2 Kaltstart
---------------

Das Verhalten nach dem Einschalten des NHS6 ist in der Grafik
"Kaltstart" festgehalten. Nach ca. 9000s wurde die Raumtemperatur durch
Öffnen des Fensters abgesenkt.  Das NHS6 zeigt eine starke Abhängigkeit
von der Board-Temperatur.  Durch die integrierte
'Fine-Adjustment'-Funktion korrigiert das NHS6 in mehr oder weniger
regelmäßigen Abständen die Ausgangsspannung was zu diesem
Sägezahnverlauf führt.

3.2.3 Fine-Adjustment
---------------------

In der Grafik "Fine-Adjustment" sind mehrere solcher Korrekturschritte
übereinander aufgezeichnet um den Spannungsverlauf während einer
Fine-Adjustment-Phase zu zeigen. Sie wird nach jeder neuen
Spannungseinstellung aktiviert, mittelt mehrere ADC-Messungen und
korrigiert die Spannung über den DAC.
Zum Fahren einer Spannungsrampe ist die Fine-Adjustment-Funktion
offensichtlich nicht brauchbar weil sie zu viel Zeit benötigt.  Wir
werden sie abschalten und die Regelung per Software durchführen müssen.

3.2.4 Spannungsspitzen
----------------------

Das NHS-6 wird ohne Fine Adjustment betrieben und die Spannung mittels
eingebautem ADC überwacht und ggf. der Set-Wert korrigiert.  Dabei gibt
es immer mal wieder drastische Ausreiser mit Überspannungsalarm (grüne
LED aus). Um dies näher zu untersuchen wurde das NHS-6 im 100ms Takt
abwechselnd mit 100.0/100.1V programmiert und anschließend die
Ist-Spannung ausgelesen und aufgezeichnet falls die Abweichung >1V war.
In unregelmäßigen zeitlichen Abständen gibt es beachtliche Ausreiser.
Diese Spannungsspitzen lassen sich auch am Oszilloscop beobachten.

     Messwerte 100ms Takt
       Time-tot  Time-diff   Vset         Vact
           [s]    [ms]       [V]           [V]
         11.12   11120     100.0000     -105.3799
         11.22     100     100.1000     -102.2633
         12.12     900     100.0000     -542.7143
         12.22     100     100.1000     -143.4496
         12.32     100     100.0000     -141.8372
         12.42     100     100.1000     -140.9439
         12.52     100     100.0000     -140.4428
         12.62     100     100.1000     -107.6744
         12.72     100     100.0000     -101.3366
         17.22    4500     100.1000     -105.3622
         30.02   12800     100.1000     -124.3019
         30.12     100     100.0000     -107.1177
         30.22     100     100.1000     -101.5427
         39.32    9100     100.0000     -527.5201
         39.42     100     100.1000     -143.1538
         39.52     100     100.0000     -141.7549
         39.62     100     100.1000     -140.9491
         39.72     100     100.0000     -140.4850
         39.82     100     100.1000     -107.0850
         56.42   16600     100.1000     -310.9559
         56.52     100     100.0000     -142.3383
         56.62     100     100.1000     -141.0069
         56.72     100     100.0000     -106.2659
         56.82     100     100.1000     -101.1750
        105.12   48300     100.0000     -444.9102
        105.22     100     100.1000     -143.4674
        105.32     100     100.0000     -142.0307
        105.42     100     100.1000     -140.5858
        105.52     100     100.0000     -116.4178
        105.62     100     100.1000     -104.3406

     Channel events
      00 01 02 03 04 05  Channel number
       0  0  0  0  0  0  Change from ON to OFF without ramp
       1  0  0  0  0  0  End of ramp
       1  0  0  0  0  0  Hardware voltage limit exceeded
       0  0  0  0  0  0  Hardware current limit exceeded
       0  0  0  0  0  0  Software current limit exceeded
       0  0  0  0  0  0  External inhibit
       0  0  0  0  0  0  Voltage bounds exceeded
       0  0  0  0  0  0  Current bounds exceeded
       1  0  0  0  0  0  Voltage control state
       0  0  0  0  0  0  Current control state
       0  0  0  0  0  0  Emergency OFF state
       0  0  0  0  0  0  Command error

   *Antwort von Iseg:*
Iseg kann das beschriebene Verhalten reproduzieren und schickt zur
Reparatur eine neue Firmwareversion 1.13 (N06C2_113).

3.2.5 ADC-Kalibrierung
----------------------

Beim Durchfahren der Spektrometerspannungen weicht in zufälligen
Abständen der Istwert für 25s um ca. 50mV nach oben oder unten ab.  Die
Abweichung tritt auf mit der Ausgabe eines neuen Sollwertes und endet
unabhängig von einer Ausgabe.
Eine Messung mit einem Keithly 2000 hat gezeigt, dass die
Ausgangsspannung nicht wirklich springt, sondern der ADC für ca. 25s
falsche Werte liefert.

*Antwort von Iseg:*
Die beobachtete Stufe ist auf eine Fehlkalibrierung des ADC
zurückzuführen. Sie hat als Ursache die Änderung der Set-Spannung
während des Kalibriervorgangs. Da bei unserer Anwendung sehr häufig
Spannungsänderungen durchgeführt werden, wird mit hoher
Wahrscheinlichkeit auch während einer ADC Kalibrierung die Spannung
über den DAC verändert und es kommt dann zu fehlerbehafteten Messungen.
Der Effekt wird mit der neuen Firmwareversion 1.14 ausgeschlossen, wenn
nach dem Einschalten vom Modul gewartet wird bis sich die
Modultemperatur nur noch unwesentlich ändert.

   Bisher wurde die ADC Kalibrierung in konstanten Zeitabständen ca.
alle 72 Sekunden durchgeführt. Mit der Firmwareversion 1.14 wird als
Kriterium zum Starten einer ADC Kalibrierung nicht mehr die
verstrichene Zeit herangezogen, sondern die Temperaturdifferenz zur
letzten Kalibrierung. Unterscheidet sich diese zur letzten Kalibrierung
um 5K wird erneut eine ADC Kalibrierung gestartet, so dass bei
einigermaßen temperaturstabilen Verhältnissen keine ADC Kalibrierung
mehr erfolgt. Diese Lösung sollte genügen, da die Drift des ADC selber
schon viel weniger von der Temperatur beeinflusst wird als die des DAC.

   *Zusatzfrage:*
Die ADC-Kalibrierung verhält sich unter 114 so wie angegeben: beim
Warmup wird ca. alle 5°C eine Kalibrierung durchgeführt und der ADC
driftet nur wenig mit der Temperatur (ca. 2-3mV/1K?).  Ein Problem muss
dabei allerdings noch bedacht werden: je nach dem wo der Warmup landet,
könnte das knapp unterhalb der nächsten 5°C Grenze sein und die nächste
Kalibrierung platzt irgend wann in die laufende Messung. Dies ist umso
fataler als unter 114 eine solche Misskalibrierung nicht nach 25s
wieder rückgängig gemacht wird wie unter 113. Deshalb muss vor jeder
Messung eine letzte Kalibrierung erzwungen werden. Ich habe dies
versucht durch einen Hardware Reset in der Annahme, dass der ADC sich
danach kalibrieren muss. Es scheint zu funktionieren und liefert auch
bis auf wenige mV reproduzierbare Ergebnisse (gemessen mit Keithley
2000), ist jedoch mit einigem Zeit raubenden Umstand verbunden.
Insbesondere muss ich nach jedem HW-Reset jedesmal das NHS von Hand
wieder auf INFO stellen damit die Sample-Rate des ADC ausreichend hoch
ist. Das NHS-Menü ganz abschalten wäre für unsere Zwecke sowieso das
Beste. Gibt es eine sanftere Alternative zum Hardware Reset?

   *Antwort von Iseg:*
Eine ADC-Kalibrierung lässt sich erzwingen durch einen Wechsel der
ADC-Sample-Rate.

3.2.6 DAC-LSB-Fehler
--------------------

Bei einem kontinuierlichen Anstieg des Sollwertes tritt reproduzierbar
bei bestimmten Bitmustern ein Versatz im Istwert auf.  Dieser Versatz
ist bei den verschiedenen Kanälen unterschiedlich stark ausgeprägt.
     Bitmuster bei Ausgabe mit DCP:    0x5366d -> 0x5366e
     Rücklesen mit EDCP:            102.4839 -> 102.4842
     Beobachteter Versatz:            ca. 25 mV
   Dieses Verhalten wäre typisch für einen differenziellen DAC-Fehler,
allerdings nicht für das ausgegebene Bitmuster. Auch ist der Fehler
für einen 20-Bit DAC eigentlich deutlich zu groß.

   Für den Plot wurde der Sollwert alle 2s in 10mV Schritten erhöht.
Nach der Sollwertausgabe war 1s Pause, danach wurde der Istwert für 1s
in 70ms Abständen gemessen.

*Antwort von Iseg:*
Das NHS-6 hat nicht wirklich einen 20 Bit DAC sondern zwei kaskadierte
16 Bit DACs. Der Sägezahn resultiert aus dem LSB-Fehler des
höherwertigen DACs. Diese Fehler werden im statischen Betrieb durch das
Fine Adjustment korrigiert.

3.2.7 CAN-Bus-Errors
--------------------

Wenn wir die Spannung stufenweise hochfahren so landet der CAN-Bus
früher oder später in einem "Bus-Error", ist also massiv gestört. Meine
Untersuchungen dazu haben folgendes ergeben:
   * Der Bus-Error tritt nicht auf wenn nur ausschließlich Ausgaben zu
     dem 	NHS-6 erfolgen und nur bei Eingabeaufforderungen.

   * Der Bus-Error tritt nicht auf wenn durch Logon die
     Logon-Aufforderungen 	des Gerätes schweigen.

   * Auf dem CAN-Bus kann man per Oszi erkennen, dass vielfach
     hintereinander 	die Eingabeaufforderungen nach der CAN-ID durch
     einen Error-Frame 	abgebrochen werden bis alles mit einem
     Bus-Error endet.

   * Der CAN-Controller meldet Bit-Fehler im Data-Frame.

   * Der Bus-Error tritt gehäuft auf (Sekundenabstände) bei einer
     Bit-Rate 	von 20 kHz und beständigem Abrufen eines
     Geräteparameters.

   Ich vermute folgende Ursache für dieses Verhalten:
Die Logon-Messages und Eingabeaufforderungen haben die gleiche CAN-ID.
Da sie asynchron gesendet werden kommt es mit einer gewissen
Wahrscheinlichkeit zur Kollision. Da sie gleiche ID haben gewinnen beide
die Arbitrierung und senden weiter, was dann im Data-Frame zu
Bit-Fehlern und Abbruch durch einen Error-Frame führt. Da auf beiden
Seiten der gleiche CAN-Controller (SJA1000) arbeitet, starten beide
Seiten gleichzeitig eine Wiederholung usw...

   Vorschlag:
Durch ein Logon-Kommando können weitere Logon-Aufforderungen des Gerätes
verhindert werden. Nach Pausen - in unserem Fall 10-20s - beginnt das
Gerät jedoch wieder zu senden und ein neues Logon ist notwendig. Da wir
während des Betriebes beständig die ADC-Daten abrufen entstehen keine
längeren Pausen.

   *Antwort von Iseg:*
Versuchen Sie den Modul im Zustand Log On zu halten, d.h. erstmalig
nach Log-On den Modul in den Zustand Connect schalten und dann
mindestens in Zeitintervallen von 20 Sekunden z.B. den Modulstatus
lesen. So kann es zu keinen Buskonflikten mit gleichen CAN-ID beim
Auslesen kommen.

   Testen Sie auch mal die Kommunikation für Schreibdaten durch die
Befehlsfolge (Beispiel Modul auf Adresse 0): CAN_ID=0x200 LENGTH=4
DATAID=0x12A0 DATA0=0x00 DATA=0x01 sicher zu entkoppeln. Jetzt kommt
die Antwort vom Modul mit einem zusätzlichen rezessiven Bit.

   Abfrage Kanal 0 EventStatus: CAN_ID=0x201 LENGTH=2 DATAID=0x4002
Data0=0x00 Antwort vom Modul : CAN_ID=0x204 LENGTH=5 DATAID=0x4002
Data0=0x00 Data1=0x00 Data2=0x00

3.2.8 Firmwareversion 1.15
--------------------------

Im Laufe der Tests gab es noch die Firmwareversion 1.15.  Leider ist in
den Emails nicht dokumentiert was damit repariert wurde.  Einiges wurde
am Telefon verabredet...

3.2.9 Störung durch manuelle Bedienung
--------------------------------------

Die ADC-Abtastrate hängt wesentlich von dem gerade eingestellten Menü
des NHS-6 ab. Insbesondere im Grundzustand ist die Abtastrate besonders
gering was einer schnellen Spannungsregelung abträglich ist.

   *Antwort von Iseg:*
Im Menüpunkt INFO hat der ADC seine höchste Abtastrate.

Ich frage nach der Möglichkeit die manuelle Bedienung vollständig
abzuschalten.

   *Antwort von Iseg:*
Die neue Firmwareversion 1.16 sorgt dafür, dass der ADC im Grundzustand
des NHS-6 Menüs nicht mehr ausgebremst wird.

   Es stellt sich jedoch heraus, dass jegliche manuelle Bedienung am
NHS-6 die Spannungsmessung erheblich stört.  Auch in diesem Fall ist
die Spannung in Ordnung und der ADC hat 25s lang Fehlmessungen.  Der
Effekt tritt bereits auf beim Aufwecken des Menüs wenn es vorher dunkel
war.  Die Grafik zeigt die Auswirkungen beim Aufwecken und Umschalten
vom Menü-Grundzustand nach Info und wieder zurück.
Also Finger weg während der Messung!

3.2.10 Reaktion auf Spannungssprung
-----------------------------------

Es ist auffällig, dass ein Sprung nach unten nahezu prompt nach dem
Kommando startet, während ein solcher nach oben ca. 0.2s Verzögerung
hat.

3.2.11 Störung nach Spannungssprung
-----------------------------------

Bei weiteren Tests zum Verhalten des NHS bei Spannungsstufen ist mir
Folgendes aufgefallen: nach einer festen, reproduzierbaren Zeit nach der
Spannungsstufe sind die ADC-Messwerte gestört. Die Lage der Störung ist
linear abhängig von der ADC-Sample-Rate:
          Rate    Lage
          500     0.6s
          100     3.0s
           50     6.0s
   Die Störung ist unabhängig von der Höhe des Spannungssprunges, bei 0V
verschwindet sie allerdings.

   Hierzu gibt es keine Antwort von Iseg, da wir zu diesem Zeitpunkt
die Arbeiten mit dem NHS-6 aufgegeben hatten, um mit dem EHS-8
fortzufahren...

3.3 Tests am EHS-8230n-F
========================

Das EHS-8230n-F ist die "floating ground" Version des EHS-8, weshalb
jeder der acht Kanäle mit eigenem DAC und ADC ausgerüstet ist, während
das NHS-6230n DAC und ADC multiplext.  Das Verhalten des EHS-8 ist
daher deutlich besser geeignet für das Fahren von Spannungsrampen:
   * Jeder der acht Kanäle des EHS-8230n wird über einen eigenen
     20 Bit DAC programmiert.

   * Jeder der acht Kanäle des EHS-8230n hat einen eigenen 	24 Bit
     ADC (22 Bit genutzt) zur Spannungsmessung, was eine deutlich
     höhere ADC-Abtastrate zulässt. Die ADC-Sample-Rate ist jedoch
     auf 60Hz begrenzt was eine minimale Abtastzeit von 60ms 	erlaubt
     (70ms bei 50Hz).

   * Das EHS-8230n kann nicht manuell bedient werden, was einige
     Probleme 	garnicht erst entstehen lässt.

   * Das EHS-8230n kostet weniger, so dass beim Tausch noch eine
     Detektor-Hochspannung drin war.
   Einige der mit dem NHS-6230n entdeckten Probleme sind auch für das
EHS-8230n-F relevant. Andere können konstruktionbedingt nicht auftreten:
   * Kaltstart: deutlich geringere Temperaturabhängigkeit

   * Fine-Adjustment: gleiches Problem, gelöst

   * Spannungsspitzen: keine

   * ADC-Kalibrierung: gleiches Problem, gelöst

   * DAC-LSB-Fehler: sehr klein wegen Verwendung eines 20 Bit DACs

   * CAN-Bus-Errors: gleiches Problem, gelöst

   * Firmwareversion 1.15: installiert

   * Störung durch manuelle Bedienung: keine manuelle Bedienung möglich

   * Reaktion auf Spannungssprung: beide Reaktionen prompt

   * Störung nach Spannungssprung: nicht beobachtet

3.3.1 Das Messverfahren
-----------------------

Das Messverfahren ist das gleiche wie beim NHS-6230n.

3.3.2 Keithly2000 stört
-----------------------

Bei diesen Messungen erfolgt zur Zeit 0 abwechselnd ein Spannungssprung
von 50 mV nach oben bzw. unten. Diese Sequenz wird mehrfach durchlaufen
damit sich ein gutes Bild vom Verhalten bei einem Spannungssprung
ergibt.  FineAdjust ist abgeschaltet. ADC-Kalibrierung wird zu Beginn
erzwungen durch einen Wechsel der ADC-Rate.

   Bei Sollspannungen bis 199V liegt der ADC-Wert bis ca. 3.5s um ca.
10 mV zu tief und springt dann auf den richtigen Wert jedoch nur für den
Sprung nach oben. Die Ausgangsspannung zeigt dieses Verhalten nicht!
Getestet für 90V, 100V, 110V, 120V, 150V, 190V, 199V.

   Bei 200V gibt es eine bemerkenswerte Änderung.

   Bei 201V ist der ganze Spuk vorbei. Getestet für 201V, 210V, 500V.

   Es ist das Keithly 2000, das diesen Unfug macht! Bei 200V schaltet es
den Messbereich um. Ohne das Keithly zeigt der EHS-ADC das erwartete
Verhalten.  Ich kann mir allerdings keinen Reim drauf machen wie das
Keithly die Spannung richtig anzeigt und den ADC stört???

3.3.3 Auflösung der Spannungsmessung
------------------------------------

In den Iseg Datenblättern gibt es unterschiedliche Angaben für die
Auflösung der Spannungsmessung:
10mV; Vnom * 10^-6 = 3mV; 24 Bit ADC, 22 Bit genutzt => 0.715256mV
Mit EDCP werden die Messdaten als Single Prec. übertragen, d.h.  mit
einer Genauigkeit von (IEEE 754) 23 Bit => 1.19209290E-7 bei 3 kV also
0.3576 mV.
Gemessen wurde für verschiedene Spannungen von 10V bis 3Kv ca. 0.7 mV
Auflösung. Dies enspricht einem 22 Bit ADC.

3.3.4 Streuung der Spannungsmesswerte
-------------------------------------

Diese Messungen werden mit dem IsegHV-Programm (Voltage distribution)
durchgeführt und können zur Kontrolle wiederholt werden. Der Ablauf der
Messung ist folgender: Zuerst wird der Sollwert eingestellt. Während
die Spannung hochfährt wird die ADC-Sample-Time gemessen indem im 10ms
Takt die Zeit gemessen wird, die der ADC benötigt um einen neuen Wert
zu generieren. Danach wird mittels Soll-Istwert-Vergleich die Spannung
auf den Sollwert geregelt. Während des Auslesens der Istwerte im
ADC-Sample-Time Takt erfolgt keine weitere Regelung.
Für eine gute Messung den Kanal voher schon auf den Sollwert
programmieren (Set Voltage) und die Messung nach einer Weile starten
wenn die Spannung stabil steht!

   Die Streuung der Spannungsmesswerte wurde für drei Spannungen
gemessen (100V, 1000V, 2900V). Der Fehler der Messwerte liegt bei ca.
10%. Die folgenden Grafiken zeigen in den Messungen Strukturen, die
deutlich über statistische Schwankungen hinausgehen und möglicherweise
auf Interferenzen mit der ADC-Auflösung zurückzuführen sind, also bei
der Umrechnung:
Integer (ADC) -> Float (Übertragung) -> Integer (Spektrum)
entstehen.

   Die einzelnen Kanäle zeigen unterschiedliche Breiten.  Der Kanal 0
hat für 100V und 1000V zusätzlich noch irgendwelche Störungen nach
beiden Seiten und sollte vielleicht besser gemieden werden.
                   100V             1000V            2900V
     Kanal    Sigma    FWHM    Sigma    FWHM    Sigma    FWHM
       0       5.1     11.9     3.2      7.5     4.3     10.0
       1       4.5     10.5     4.3     10.1     5.1     12.0
       2       3.0      7.1     3.6      8.9     3.1      7.2
       3       2.9      6.7     3.3      7.8     4.0      9.4
       4       2.9      6.9     2.8      6.6     3.2      7.4
       5       3.5      8.4     3.2      7.5     4.0      9.3
       6       2.7      6.2     3.4      8.0     4.3     10.2
       7       2.7      6.3     2.6      6.0     3.4      8.0

   *Verteilung der Spannungsmesswerte bei 100V*

   *Verteilung der Spannungsmesswerte bei 1000V*

   *Verteilung der Spannungsmesswerte bei 2900V*

3.3.5 Reaktion auf Spannungsstufe
---------------------------------

Diese Messungen wurden mit dem IsegHV-Programm (Timing tests)
durchgeführt.

   Der ADC liefert abhängig von der eingestelleten "ADC Sample Rate"
periodisch neue Messwerte.  Da der ADC maximal nur etwa alle 60ms (Rate
= 60HZ) ein neues Ergebnis liefert, wurden die Spannungssprünge und
Messungen mehrfach wiederholt.  Da Messungen und Spannungssprünge
asynchron zueinander sind, erhält man so mit der Zeit auch alle
Zwischenwerte.  Um den Zeitpunkt zu ermitteln, an dem die Spannung
gemessen wurde, wird der Spannungswert permanent in einer Schleife so
lange ausgelesen bis eine Änderung auftritt oder bis die 60ms
ADC-Sample-Time um ist.

   Man erkennt, dass für ein schnelles Entladen des EHS8 eine Last
notwendig ist. Nach Abschluss der Ramping-Phase benötigt das EHS8 noch
ca. 1s um den Endwert zu erreichen.

3.3.6 Stufe bei 100/170V
------------------------

Bei stufenweisem Hochfahren (z.B. 1V/Step) ändern die Kanäle
möglicherweise ihren Status mit einem Sprung in dem Spannungsverlauf
bei etwa 160 - 180V. Beim Herunterfahren liegt diese Grenze bei etwa
100V.

   * Kanal 0 ist etwas verrauscht.

   * Bei Kanal 1 ist allenfalls eine Andeutung einer Stufe zu erkennen,
     aber bei 85V findet sich eine reproduzierbare Störung.

   * Kanal 3 ist unterhalb der Stufe erheblich gestört und zeigt
     oberhalb 	einen normalen Verlauf. Beim Abwärtsfahren liegt die
     Stufe bei ca.  	100V und die Störung beginnt unterhalb.

   * Bei Kanal 6 ist die Stufe negativ.

   * Als systematischer Trend lässt sich erkennen, dass die Stufe um so
     kleiner wird je steiler die Ist-Sollwert-Differenz ansteigt um
     schließlich zu verschwinden und das Vorzeichen umzukehren.

   Folgendes ist beim Messen zu beachten: Wenn man sich beim Messen
immer nur z.B. zwischen 150V und 200V bewegt, so wird man die Stufe
nicht beobachten da das Ganze sich wie eine Zustandsänderung mit
Hysterese verhält. Um die obere Stufe zu messen muss man also unterhalb
der unteren Stufe mit der Spannung starten und umgekehrt.

   Iseg kann dieses Verhalten an einem 2kV-EHS nicht nachvollziehen.
Ein Firmware-Update von 632 auf 651 bringt keine Veränderung. Das
geliehene 2kV-EHS zeigt am Spektrometer keine Sprünge. Iseg untersucht
jetzt unser 3kV-EHS.

   *Antwort von Iseg:*
Iseg hat die Hochspannungsregelung geändert und damit das fehlerhafte
Verhalten beseitigt.

3.3.7 Weitere Störung beim Hochfahren
-------------------------------------

Nach den Änderungen an der Hochspannungsregelung des EHS-8230n-F ist
der Spannungsverlauf beim Hochfahren jetzt ohne Sprünge.

   Nach wie vor ist allerdings zu beobachten, dass beim Überfahren von
bestimmten, eng begrenzten Stellen die Ausgangsspannung reproduzierbar
nicht stabil steht. Zum Beispiel Kanal 3 in unterschiedlicher
Auflösung: (1V, 0.1V, 0.01V).  Der Firmware-Stand ist 6.5.1 und auf den
Grafiken falsch angegeben.  Der Effekt tritt mehr oder weniger auch bei
anderen Kanälen auf und ist auch vor der Nachbesserung schon
aufgetreten.

   Mit dem Oszilloscope kann man an der kritischen Stelle ein heftiges
Zappeln der Ausgangsspannung beobachtet aber kein gleichmäßiges
Schwingen, das auf eine Regelschwingung hindeuten würde.  (Vertikal
20mV/cm; Steps 10mV alle 10s)

   Das EHS-8220 zeigt für Kanal 3 dieses Verhalten nicht.

3.3.8 Spannungsverlauf ungeregelt und geregelt
----------------------------------------------

!!!Baustelle!!!