MAL-Homepage Inhaltsverzeichnis



MAL Dokumentation: Analogmessungen




Inhalt:

1. VOM MESSDATEN-ARCHIV AUS
1.1. Konfiguration
1.1.1. Kalibrieren
2. ANALOGMESSUNG AUF MAL-EBENE
2.1. Inbetriebnahme der A/D-Boards
2.2. Balkendiagramm
2.3. Einzelne Analogwerte messen
2.4. Kontinuierliche A/D-Konvertierung
2.5. Klasse für Analogmessungen
2.6. Digital-Ein/Ausgabe


1. VOM MESSDATEN-ARCHIV AUS

In diesem Kapitel ist die Bedienung und Konfiguration von Analogmessungen unter Nutzung des
Messdaten-Archivs beschrieben. Das Arbeiten mit A/D-Wandlern ohne Messdaten-Archiv ist unter Analogmessung auf MAL-Ebene beschrieben.

Das Beenden einer laufenden Analog/Digitalwandlung erfolgt entweder automatisch (wenn die Messung entsprechend konfiguriert wurde) oder indem mit der rechten Maustaste auf das Scope-Window geklickt wird. Ist kein Scope-Window geöffnet (weil bei keinem Kanal die Scope-Funktion eingeschaltet wurde), so kann die Messung mit einer beliebigen Taste beendet werden.

Für die Erfassung und Archivierung von Analogdaten sind folgende Varianten realisiert:

Für die ersten beiden Varianten muss jeweils eine entsprechende Version des MAL-Interperters kompiliert und gelinkt werden (siehe Analogmessung auf MAL-Ebene).

MAL-Homepage Inhaltsverzeichnis


1.1. Konfiguration

Wählt man bei einem Eintrag für die Erfassung und Archivierung von Analogdaten den Menüpunkt Konfiguration / Analyse, so erscheint ein Untermenü mit folgenden Punkten:

Channels
Bei der Auswahl von Channels erscheint eine Tabelle mit den Analogkanälen:

Mit Insert können neue Kanäle am Ende der Liste eingefügt werden, mit Position können sie an eine bestimmte Stelle in der Liste positioniert werden. Mit + Scope on und Scope off kann die Online-Scope Funktion für einzelne Kanäle ein- bzw. ausgeschaltet werden. Wenn bei keinem Kanal die Scope-Funktion eingeschaltet ist, erscheint das Scope-Fenster bei der Messung überhaupt nicht. Die Messung kann dann durch Drücken einer beliebigen Taste beendet werden (soferne das DOS-Fenster aktiv ist).

Für jeden Analogkanal können folgende Parameter eingestellt werden:

Parameters
Mit dem Menüpunkt Parameter werden allgemeine Einstellungen des A/D-Boards vorgenommen:



Das Buffer_File ist ein temporäres File. Es wird bei jeder Messung neu angelegt und enthält den Ringpuffer für die Analogdaten. Der Parameter Buffer_Length gibt an, wie lange die maximale Aufzeichnungsdauer (in Samples) sein soll.

Im Parameter Sampling_Frequency ist die Abtastfrequenz einzustellen. Man muss beachten, welche Frequenzen von der verwendeten A/D-Karte unterstützt werden. Oversampling_Rate ist in der Regel mit 1 einzustellen. Nur bei EMG/EEG-Messungen wo gleichgerichtet werden soll (RMS-Berechnung) ist der Faktor, um den die tatsächliche Samplingfrequenz gegenüber der Samplingrate des gleichgerichteten Signals größer ist, anzugeben. Beispiel: Wenn mit 1000 Hz gemessen wird und eine Oversampling-Rate von 10 angebeben wird, so ist die Sampling-Rate des gleichgerichteten Signals 100 Hz (über jeweils 10 Samples wird der RMS-Wert berechnet).

A/D-Bordnummer dient zur Adressierung des A/D-Boards. Wird die Universal-Library zum Betrieb der Karte verwendet, so kann dieser Parameter mit dem Programm "Instacal" bestimmt werden.

Der Trigger_Code bestimmt die Endebedingung für die Analogmessung (siehe
Triggerung).

MAL-Homepage Inhaltsverzeichnis


1.1.1. Kalibrieren

Für die lineare Kalibrierung eines Analogkanals besteht die Möglichkeit mit Hilfe des Menüpunktes Channels / Calibrate den MAL-Code für die Umrechnung von Rohwert auf Fertigwert automatisch zu berechnen, indem man zwei oder mehrere Einzelmessungen macht und diesen bekannte Werte zuordnet.

Beispiel Beschleunigungsaufnehmer: Einen Beschleunigungsaufnehmer eicht man am Besten mit der Erdbeschleunigung (9.81 m/s2).

  1. Den Beschleunigungsaufnehmer so aufstellen, dass die Erdbeschleunigung positiv wirkt. Calibration / Start Measurement aufrufen und nach einiger Zeit die Messung beenden (es wird der Mittelwert der gemessenen Analogwerte für die weiteren Berechnungen verwendet). In die erscheinende Maske für den Wert "Calibratedö 9.81 eintragen.
  2. Den Beschleunigungsaufnehmer auf den Kopf stellen. Wieder Start Measurement aufrufen und in die erscheinende Maske –9.81 eintragen.
  3. Mit Calibration wird dann ein Polynom für die Umrechnung der Beschleunigung auf m/s2 errechnet und beim aktuellen Analogkanal eingetragen.
In das Feld Calibration_Code können aber beliebige Formeln (also auch nichtlineare) für die Umrechnung von Rohwerten auf Fertigwerte eingetragen werden.

Beispiele für die Umrechnung von Analogwerten in Volt:

MAL-Homepage Inhaltsverzeichnis


2. ANALOGMESSUNG AUF MAL-EBENE

Folgende A/D-Wandlerkarten werden unterstützt:

DT2801-A
DT2801-A von Data Translation:

Diese Karte wird nur unter MS-DOS unterstütz. Sie hat 16 Analogeingänge und 16 Analogausgänge sowie 8 Digitalein-/ausgänge. Es können zwei Boards gleichzeitig betrieben werden, wobei die beiden Karten von der MAL-Oberfäche aus betrachtet (abgesehen von einigen Details) wie eine Karte mit 32 Analogkanälen erscheinen. Die Kanäle 0..15 sind dann der ersten Karte zugeordnet und die Kanäle 16..31 der zweiten.

AT-MIO-64E-3
AT-MIO-64E-3 von National-Instruments:

Diese Karte hat 64 Analogeingänge und 7 Digitalein-/ausgänge. Wahrscheinlich können auch andere National-Instruments Karten (auch unter anderen Windows-Versionen) betrieben werden. Getestet wurde jedoch nur diese Karte unter Windows-NT. Voraussetzung für die Inbetriebnahme ist ein installierter Treiber, die Libraries für Borland-C++ und der Borland-C++-Builder (siehe auch
Erweiterung des Befehlssatzes).

Universal-Library
Die Universal-Library wurde mit folgenden Boards getestet:

Zu Beachten ist, dass die Universal-Library keine unterschiedlichen Verstärkungen für einzelne Kanäle zulässt. Ausserdem gibt es bestimmte Einschränkungen bei den Digital-Ein/Ausgängen.

MAL-Homepage Inhaltsverzeichnis


2.1. Inbetriebnahme der A/D-Boards

MAL-Interpreter für die Benutzung des AT-MIO-64E-3 Boards vorbereiten:

  1. Installation der National Instruments NI-DAQ Data Aquisition Driver Software.
  2. MAL-Interpreter starten und source eingeben. Mit Submenue / unselect all alle Dateien deselektionieren. Die Dateien adc.cpu suchen und jene für das AT-MIO-64E-3 Board mit + select markieren und mit Submenue / write to files auf Datei schreiben.
  3. Das Programm malgen starten.
  4. Die Datei "nidaqex.h" in eine Directory, die im Include-Pfad steht (z.B.: "c:\Programme\Borland\Cbuilder5\include") kopieren.
  5. Borland Builder starten und das Projekt "mal" offnen. Dem Projekt die Library nidaq32b.lib hinzufügen und MAL erzeugen.
MAL-Interpreter für die Benutzung des CIO-DAS/16F oder PCIM-DAS1602 Boards vorbereiten:
  1. Universal Library installieren
  2. MAL-Interpreter starten und source eingeben. Mit Submenue / unselect all alle Dateien deselektionieren. Die Dateien adc.cpu suchen und jene für die Universal Library mit + select markieren und mit Submenue / write to files auf Datei schreiben.
  3. Das Programm malgen starten.
  4. Die Datei "cbw.h" in eine Directory, die im Include-Pfad steht (z.B.: "c:\Programme\Borland\Cbuilder5\include") kopieren.
  5. Borland Builder starten und das Projekt "mal" offnen. Dem Projekt die Library cbw32bc.lib (normalerweise in "C:\Mcc\Cwin\" zu finden) hinzufügen und MAL erzeugen.
Betrieb des DT2801-A-Boards unter MS-DOS

Für dem Betrieb der Boards im DMA-Modus (Worte
adc, listen und talk) ist die Installation eines DMA-Puffers erforderlich. Dies geschieht, indem man das Programm dmabuff.exe startet. Es reserviert einen Speicherbereich von 8-KByte im konventionellen Speicher und hinterlegt dessen Anfangsadresse im Interrupt-Pointer 0x60. Der Assembler-Sourcecode ´dmabuff.asm´ ist im Source-Folder zu finden.

MAL-Homepage Inhaltsverzeichnis


2.2. Balkendiagramm

Das Balkendiagramm (Wort
adc_view) ist für Testzwecke, vor allem bei der Inbetriebnahme, von Nutzen. Es arbeitet ohne DMA und zeigt online die gemessenen Analogwerte von mehreren Kanälen an. Arbeitet es nicht korrekt, so ist entweder die Jumpereinstellung am Board oder die Verkabelung der Eingänge falsch. Eine anspruchsvollere Online-Anzeige von Meßwerten kann mit dem Wort adc durchgeführt werden.

Syntax:

[ k1 k2 k3 ... kN ] verstärkung ->
Das Balkendiagramm kann durch Drücken einer beliebigen Taste beendet werden.

MAL-Homepage Inhaltsverzeichnis


2.3. Einzelne Analogwerte messen

Wenn keine exakte Samplingfrequenz oder hohe Samplingrate erforderlich ist, kann mit dem Wort
adc_single ein Analogwert eingelesen werden. Es arbeitet ohne DMA und ist mit der Kanalnummer und einem Verstärkungsfaktor zu versorgen.

MAL-Homepage Inhaltsverzeichnis


2.4. Kontinuierliche A/D-Konvertierung

Das Wort
adc ermöglicht eine kontinuierliche Analog-Digitalwandlung in einen Ringpuffer wobei bei Bedarf auch eine synchrone Online Darstellung der Werte am Bildschirm möglich ist.

Der Ringpuffer wird in einer Datei eingerichtet und kann nach Ende der A/D-Konvertierung mit dem Wort adc_read gelesen werden. Das logische Erscheinungsbild des Ringpuffers entspricht beim Lesen der Daten dem eines linearen Puffers.

Beim Start der Messung wird der Puffer mit Nullänge eingerichtet und wächst zunächst linear, bis er eine vorgegebene Maximallänge erreicht hat. Dann wird in den Ringpuffer-Modus umgeschaltet und die ältersten Meßwerte werden jeweils durch die neuesten überschrieben. Will man den Ringpuffer-Modus vermeiden, so muß man eine entsprechend große Maximallänge vorgeben, die praktisch nicht erreicht wird.

Um die Online-Anzeige zu aktivieren muß man eine Variable mit dem Namen adc_scope einrichten. Sie muß einen Verbund mit jenen Kanalnummern enthalten, die angezeigt werden sollen. Die Anzeige ist nicht skaliert und wird von Zeit zu Zeit kurz angehalten, wenn ein Teil des RAM-Puffers auf die Harddisk transferiert wird.

Triggerung:

Die Triggerung dient zum automatischen Beenden der Messung. Ein manuelles Beenden der Messung ist jederzeit durch Drücken einer beliebigen Taste möglich.

Die Triggerbedingung wird durch einen Codestring definiert, der folgender Syntax entsprechen muß:

[ k1 k2 ... kN ] -> nachlauf
´kI´ sind Realzahlen mit den gemessenen Analogwerten. Aus diesen Werten muß die Routine bestimmen, wie lange noch weiter gemessen werden soll. Das Ergebnis wird in dem Stackeintrag ´nachlauf´ übergeben:

Die mit dem Wort adc_read aus der Pufferdatei gelesenen Meßdaten werden in Form von Integerfeldern übergeben. Die Umwandlung eines Integerfeldes in einen Verbund von Realzahlen kann mit dem Wort expand durchgeführt werden (das Wort draw ruft intern expand auf, daher können die Analogwerte direkt mit draw angezeigt werden).

MAL-Homepage Inhaltsverzeichnis


2.5. Klasse für Analogmessungen

Mit der Klasse
analog_measurement_class können auf einfache Weise Standard-Analogmessungen konfiguriert und durchgeführt werden.

Beispiel:

Mit dem Code

public \ vetmed >voc
interface_of analog_measurement_class >voc


werden die notwendigen Worte ins Vokabular geladen. Mit

create_analog_measurement >> messung


wird eine Instanz eingerichtet (als Typ muss man A/D-Converter wählen). Sie kann mit

messung configure -> messung


konfiguriert werden. Es können allgemeine Messparameter wie z.B. die Messfrequenz sowie die Kanalliste (Liste der zu messenden Analogkanäle mit den Verstärkungen u.s.w.) eingestellt werden. Zumindest muss aber unter dem Menüpunkt Channels mit Insert ein Kanal eingerichtet werden. Beim Blättern in der Kanalliste existiert auch ein Menüpunkt (calibrate) für die lineare Kalibrierung der einzelnen Messkanäle. Kalibriert wird, indem mindestens zwei Probemessungen mit konstanten Messgrößen durchgeführt und jeweils die entsprechenden Kalibrierwerte angegeben werden. Im Anschluß kann mit dem Menüpunkt Calibration eine lineare Regression gestartet werden.

Ist die Instanz messung fertig konfiguriert, so kann mit

messung measure -> messung


die Messung gestartet werden. Die gemessenen Analogwerte können mit

messung analog> draw screen
angezeigt werden.

MAL-Homepage Inhaltsverzeichnis


2.6. Digital-Ein/Ausgabe

Für die Digital-Ein/Ausgabe existieren die Worte
>single_bit und single_bit>.

Für Boards, die mit der Universal-Library betrieben werden, müssen einige Besonderheiten beachtet werden:

Die Ansteuerungscodes für das Board PCIM-DAS1602 unterscheiden sich von jenen für das Board CIO-DAS/16F. Daher müssen in der Datei 'adc.cpu' die entsprechende Codeteile auskommentiert bzw. aktiviert werden. Außerdem haben manche Digitalports die Eigenschaft, dass nur ganze Gruppen von Bits zwischen Input und Output umgeschaltet werden und beim Umschalten meist der Zustand der Outputs rückgesetzt wird.

In manchen Fällen kann es einfacher sein, das Parallele-Port (Centronix-Port) für die Digital-Ein/Ausgabe zu nutzen. Mit den Worten >port und port> können beliebige Ports angesprochen werden.

So könen zum Beispiel mit dem Code

255 "378" hex> >port
alle Bits der Printer-Ports prn1 auf High gesetzt werden.

Das Wort centronix_log ermöglicht die Statusabfrage eines Input-Bits in einer Schleife. Für die Zeit der Abfrage wird der Interrupt gesperrt (d.h. der Computer ist für sonstige Arbeiten gesperrt, auch der Uhr-Interrupt ist blockiert).

Hinweis:
Nicht alle Centronix-Ports können auch über die Daten-Bits einlesen. Nur bei bidirektionalen Ports ist das möglich. Es gibt jedoch manche Bits (z.B. das Busy-Bit) die bei allen Ports als Input betrieben werden können.

MAL-Homepage Inhaltsverzeichnis