CompuLAB-USB
und Visual Basic
Wenn man eigene
Programme für das CompuLAB-USB schreiben
will, ergeben sich gegenüber fertiger Software
erweiterte Möglichkeiten. Man kann die Auflösung der
analogen Eingänge von 10 Bit voll ausnutzen. Und man
kann bis zu 11 analoge Eingangskanäle nutzen.
- Alle digitalen Eingänge
Din0 bis Din7 sind zugleich Analogeingänge.
- Die analogen Eingänge
A und B stehen an Anschlussklemmen zur Verfügung
- Der extrem
hochohmige Eingang C liegt am Pin 14 des
Sammelsteckers
- Ein weiterer Kanal
wird intern zur Überprüfung des AD-Wandlers
verwendet
Das Programm
CLAD10.vbp ist ein Programmbeispiel für VB5 oder VB6.
Alle analogen Eingangskanäle werden mit der vollen Auflösung
von 10 Bit gemessen und angezeigt. Zusätzlich gibt es
eine Anzeige der Digitaleingänge und die Möglichkeit,
Digitalausgänge zu setzen.
![](clusb10.gif)
Programmbeispiel laden
(CLAD10.Zip)
Private Sub
Timer1_Timer()
Dout = 0
Dout = Check9.Value
Dout = Dout + Check10.Value * 2
Dout = Dout + Check11.Value * 4
Dout = Dout + Check12.Value * 8
Dout = Dout + Check13.Value * 16
Dout = Dout + Check14.Value * 32
Dout = Dout + Check15.Value * 64
Dout = Dout + Check16.Value * 128
StartChan 0
InOut
U1 = Int(Ch1 / 1024 *
5000) / 1000
U2 = Int(Ch2 / 1024 * 5000) / 1000
U3 = Int(Ch3 / 1024 * 5000) / 1000
U4 = Int(Ch4 / 1024 * 5000) / 1000
Text1.Text = "Din0:" + Str$(Ch1) + Str$(U1) +
" V"
Text2.Text = "Din1:" + Str$(Ch2) + Str$(U2) +
" V"
Text3.Text = "Din2:" + Str$(Ch3) + Str$(U3) +
" V"
Text4.Text = "Din3:" + Str$(Ch4) + Str$(U4) +
" V"
StartChan 4
InOut
U1 = Int(Ch1 / 1024 *
5000) / 1000
U2 = Int(Ch2 / 1024 * 5000) / 1000
U3 = Int(Ch3 / 1024 * 5000) / 1000
U4 = Int(Ch4 / 1024 * 5000) / 1000
Text5.Text = "Din4:" + Str$(Ch1) + Str$(U1) +
" V"
Text6.Text = "Din5:" + Str$(Ch2) + Str$(U2) +
" V"
Text7.Text = "Din6:" + Str$(Ch3) + Str$(U3) +
" V"
Text8.Text = "Din7:" + Str$(Ch4) + Str$(U4) +
" V"
StartChan 8
InOut
U1 = Int(Ch1 / 1024 *
5000) / 1000
U2 = Int(Ch2 / 1024 * 5000) / 1000
U3 = Int(Ch3 / 1024 * 5000) / 1000
U4 = Int(Ch4 / 1024 * 5000) / 1000
Text9.Text = "AinA:" + Str$(Ch1) + Str$(U1) +
" V"
Text10.Text = "AinB:" + Str$(Ch2) + Str$(U2) +
" V"
Text11.Text = "AinC:" + Str$(Ch3) + Str$(U3) +
" V"
Text12.Text = "Ref/2:" + Str$(Ch4) + Str$(U4)
+ " V"
Check1.Value = Din And 1
Check2.Value = (Din And 2) \ 2
Check3.Value = (Din And 4) \ 4
Check4.Value = (Din And 8) \ 8
Check5.Value = (Din And 16) \ 16
Check6.Value = (Din And 32) \ 32
Check7.Value = (Din And 64) \ 64
Check8.Value = (Din And 128) \ 128
End Sub
In CLAD10.FRM befindet
sich nur eine einzige Prozedur, die vom Timer regelmäßig
aufgerufen wird. Man sieht nur zwei Aufrufe, die direkt
das CompuLAB-USB betreffen: InOut und StartChan. Beide
Prozeduren sind in dem Modul CompuLABusb.bas enthalten.
Es stellt außerdem die folgenden globalen Variablen zur
Verfügung:
Dout: Daten zur Ausgabe
an die digitalen Eingänge
Din: Daten der digitalen Eingänge
Ch1: erster gemessener Analogeingang
Ch2: zweiter gemessener Analogeingang
Ch3: dritter gemessener Analogeingang
Ch4: vierter gemessener Analogeingang
Ein Aufruf der
Prozedur InOut führt jeweils eine komplette
Altualisierung für alle Ein und Ausgänge durch. Dabei
werden dabei jeweils vier analoge Kanäle mit einer Auflösung
von 10 Bit gemessen. Nach dem Neustart des CompuLAB-USB
liefern Ch1 bis Ch4 die Spannungen an den Eingängen A,
B, C und am internen Testeingang.
Die Prozedur StartChan
erlaubt eine beliebige Zuordnung der analogen Eingänge.
Der AD-Wandler besitzt 12 Analogkanäle, die wie folgt
angeschlossen sind:
Ch0 bis Ch7: Anschluss
Din bis D7
Ch8: Anschluss A
Ch9: Anschluss B
Ch10: Anschluss C
Ch11: Testeingang für U/2
Da mit einer
InOut-Aktion jeweils vier analoge Eingänge gemessen
werden, benötigt man drei Aufrufe mit jeweils neu
zugeordnetem Anfangskanal, um alle Eingänge zu
erfassen. Jeder InOut-Aufruf benötigt 3 Millisekunden.
Das Modul
CompuLABusb.bas ist ein Beispiel für USB-Treiberaufrufe.
Wer sich hier genauer informieren möchte, sollte auf
das folgende Buch zurückgreifen:
B. Kainka, Messen,
Steuern und Regeln mit USB, Franzis-Verlag 2000
|