EBRU
5.4 Programmierung der analogen Eingänge
In diesem Abschnitt werden exemplarisch die Schritte gezeigt, die durchgeführt werden müssen
um die analogen Eingänge zu bedienen. Es ist möglich, die analogen Eingänge in der Normal-
Beginn
Analoge Eingänge
kalibrieren
Ist ein Fehler
aufgetreten ?
Analoger Eingang
konfigurieren und
Konversion starten
(Normal-Mode)
Ist ein Fehler
aufgetreten ?
Konversion beendet
Analogwert
auslesen
Fehlerbehandlung
Restart Konversion
(Fast-Mode)
Ist ein Fehler
aufgetreten ?
Konversion beendet
Analogwert
auslesen
Fehlerbehandlung
Ende
PCIADIO – PCI Karte mit galv. getrennten analogen und digitalen IOs
pciadio-de-um-1v2.doc
Mode oder der Fast-Mode zu betreiben. Bei der Normalmode
wird jedes Mal bei einer Messung eine Kanalumschaltung
initiiert, was die Messgeschwindigkeit beim Messen des-
selben Kanals herabsetzt da das System vor der Messung
automatisch die Einschwingzeit abwartet bevor der ADC den
Kanal wandelt. Für schnelle Wiederholungsmessungen des-
selben Kanals wurde die Fast-Mode eingeführt. In der Fast-
Mode wird keine erneute Kanalumschaltung initiiert und somit
keine neue Einschwingzeit vom System eingefügt. Es wird in
der Fast-Mode immer der
gemessen. Im nachstehenden Programmcode wird die erste
Messung in der Normal-Mode und die nachfolgende
Messung in der Fast-Mode durchgeführt.
...
unsigned char l_ucActIndex;
unsigned char l_ucCountsOfCalibration=10;/* Anzahl der Messungen */
unsigned char l_ucChannelNumber;
unsigned char l_ucRange;
unsigned char l_ucConversionState;
unsigned char l_ucIFBusy;
float l_fResult;
...
/* Übernehmen der Adresse der zu bedienenden Karte aus den Kartendaten */
l_ucActIndex=l_SummeryBuffer[0].BoardNumber;
/* Kalibrieren der analogen Eingänge*/
l_bReturn=pciadioAICalibrate(l_ucActIndex, l_ucCountsOfCalibration);
/* Funktion erfolgreich abgeschlossen ? */
if(l_bReturn==TRUE)
{
/* Analog Eingang im Eingangsspannungsbereich messen */
l_bReturn= pciadioAIStartConversion(l_ucActIndex, ucChannelNumber ,
if(l_bReturn==TRUE)
{
/* Warten auf Messungsende */
do{
l_bReturn= pciadioAIReady(l_ucActIndex,
}while( l_ucConversionState!=1);
/* Ergebnis abholen */
l_bReturn=pciadioAIGetResult(l_ucActIndex,&l_fResult);
}
}
/* Sind Fehler aufgetreten */
if(l_bReturn == FALSE)
{
/* Fehlertext auslesen */
pciadioGetErrorMsg(l_strErrorTxt);
}
/* Nochmal den selben Kanal messen ohne Einschwingzeit */
l_bReturn=pciadioAIRestartConversionLib(BYTE a_bBoardNumber)
if(l_bReturn == FALSE)
{
/* Fehlertext auslesen */
pciadioGetErrorMsg(l_strErrorTxt);
}...
/* Warten auf Messungsende */
do{
l_bReturn= pciadioAIReady(l_ucActIndex,
}while( l_ucConversionState!=1);
/* Ergebnis abholen */
l_bReturn=pciadioAIGetResult(l_ucActIndex,&l_fResult);
/* Sind Fehler aufgetreten */
if(l_bReturn == FALSE)
{
/* Fehlertext auslesen */
pciadioGetErrorMsg(l_strErrorTxt);
}
Benutzerhandbuch
06.06.2011
Rev. 1.2
zuletzt
/*Aktuell zu bedienende Karte */
/* Ausgewählter Kanal */
/* Ausgewählter Messbereich */
/* Konversionsstatus */
/* Interface in Verwendung */
/* Messergebnis
l_ucRange);
&l_ ucConversionState,
&l_ ucIFBus);
&l_ ucConversionState,
&l_ ucIFBus);
Seite 30 von 75
eingestellte
Kanal
*/