Messen in Word und Excel


SOFTWARE
Messen
in Word und Excel
Mit Visual Basic for Applications
Hans-Joachim Berndt
Microsofts Office ´97 enthält
eine vollständige Programmier-
sprache namens Visual Basic for
Applications (VBA). Mit diesem in
weiten Bereichen zu Visual Basic
kompatiblen Interpreter können
Messungen direkt in Word oder
Excel durchgeführt werden. Die
volle Power der Office-Anwen-
dungen steht dann der Mess-
wertanalyse zur Verfügung. Da in
VBA auch externe Routinen in
dynamischen Link-Bibliotheken
angesprochen werden können,
Dabei liefert Microsoft zusammen angezeigt. Ein Klick auf den Knopf
mit dem Office-Paket den Interpreter Messen zeigt die aktuelle Tempera-
ist eine direkte Messwertauf-
Visual Basic Applications, die eine tur an. Voraussetzung ist, dass sich
nahme möglich. direkte Kommunikation von Word die RSMINI.DLL im Windows-Ver-
oder Exel mit dem Messgerät ermög- zeichnis befindet. Die Dokumentvor-
licht. Wir wollen dies an einem Bei- lage (KTY.DOT) und die verwendete
spiel demonstrieren. RSMINI.DLL sind frei kopierbar und
Die Dokumentvorlage in Bild 1 ent- stehen als Download auf der Elektor-
Eine RS232-Schnittstelle gehört mittlerweile hält ein kleines Beispielprogramm, Home-Page www.elektor.de bereit.
zur Standardausstattung jedes etwas besse- um von Word aus ein an die serielle Außerdem ist die Software auf Dis-
ren Multimeters. Die mitgelieferte Software Schnittstelle COM1 angeschlossenes kette EPS 000053-11 erhältlich.
kann aber in der Regel Werte einer Messreihe Digitalmultimeter auszulesen. Am
nur auf dem PC-Monitor darstellen und als Digitalmultimeter ist ein temperatur-
Sensor und Messgerät
Textdatei speichern. Soll jedoch die Mess- abhängiger Widerstand (KTY10-6)
reihe weiter bearbeitet und ausgewertet wer- angeschlossen. Der Widerstands- Der Halbleiter-Temperatur-Sensor
den, muss diese tabellarische Textdatei wert wird mit Hilfe einer Formel, die KTY-6-10 ist ein temperaturabhängi-
umständlich in ein Statistikprogramm über- der Hersteller des Temperaturfühlers ger Widerstand. Leider ist seine
führt werden oder in einen Textverarbeiter angibt, in eine Temperatur umge- Charakteristik nicht linear, sondern
eingebunden werden. rechnet und in einem VBA-Formular weist einen leicht diabolischen Ver-
38 Elektor 5/2000
SOFTWARE
lauf auf (Bild 2). Der Kennlinienver- Die speziell für diesen Beitrag ent-
lauf wird durch Formeln beschrie- wickelte RSMINI.DLL erlaubt (im
ben: Gegensatz zu der in [1] verwendeten
RT = R25 Å" (1+Ä…Å""TA+²Å""TA2) = RSAPI.DLL mit zahlreichen allge-
f(TA) meinen und gerätespezifischen
Funktionen zur Verwendung der
mit seriellen Schnittstelle) einen grund-
Ä… = 7,88Å"10-3 K-1 legenden Zugriff und kann zusam-
² = 1,937Å"10-5 K-2 men mit den verwendeten Pro-
grammbeispielen direkt von der
oder umgekehrt nach der Tempera- Elektor-Home-Page heruntergeladen
tur aufgelöst: werden
Die kleine DLL stellt alle wesentli-
T = 25 + "(Ä…2 - 4Å"² + 4Å"²Å"kT) - Ä… / 2Å"² chen Funktionen zur Kommunikation
über die RS232-Schnittstelle unter
mit kT = RT/R25 Win95/98 bereit. Um die Anzeige des
Bild 1. Word-Dokumentvorlage KTY.DOT als
Multimeters auszulesen, werden fol-
Messprogramm.
Der Widerstandswert des KTY-6-10 gende DLL-Aufrufe benötigt:
soll mit dem weit verbreiteten Digi-
talmultimeter METEX M-3650CR mit OPENCOM Öffnen der seri-
RS232-Anschluss (oder einem kom- ellen Schnittstelle
patiblen DVM) ermittelt und als CLOSECOM Schließen der  rsmini (ByVal ms%)
Temperaturkurve direkt in Excel Schnittstelle
respektive Word aufgenommen wer- SENDBYTE Zeichen vom PC Alle Parameter müssen hier als Wertparame-
den. senden ter (ByVal), nicht als Referenzparameter (Vor-
Das DVM wird über ein Spezialkabel READBYTE Zeichen im PC einstellung) übergeben werden. Die DLL
an eine freie COM-Schnittstelle des empfangen selbst sollte sich im Windows- oder im
PC angeschlossen. Dabei kommen RTS Schalten der Systemverzeichnis befinden. Ein weiterer Ort
im Messgerät Optokoppler zum Ein- Leitung RTS für die DLL ist das Verzeichnis des Tabellen-
satz, um den PC galvanisch zu tren- DTR Schalten der blattes beziehungsweise der Dokumentvor-
nen. Die Optokoppler beziehen ihre Leitung DTR lage. Unterhalb der Deklarationen werden
Versorgungspannung von den DELAY Verzögerung in nun die einzelnen Routinen zum Auslesen
RS232-Leitungen. Darum müssen Millisekunden des Multimeters hinzugefügt.
nach dem Öffnen der Schnittstelle
die Leitungen RTS und DTR entspre- Function ComOpen() As Integer
chend eingestellt werden. ComOpen = OPENCOM( COM1:1200,
Ein neues Modul
Mit den Übertragungsparametern N,7,2 ): RTS 0: DTR 1
1200 Baud, keine Parität, 7 Datenbits Nach dem Start von Word97 oder
und 2 Stoppbits überträgt das Mul- Excel97 gelangt man mit ALT+F11
timeter die Anzeige als 14-Byte- in den VBA-Editor. Dort fügt man
ASCII-Zeichenkette. Als letztes Zei- über das Menü Einfügen/Modul ein
chen wird das Byte 13 (CR) übertra- neues Modul ein. Als Erstes werden
KTY 10-6
gen. Um die Übertragung zu nun die externen Funktionen der 6000
R (&!)
initiieren, muss ein  D vom PC in DLL deklariert. Dabei ist wichtig,
Richtung Multimeter geschickt wer- das alle DLL-Funktionen großge-
5000
den. In der Praxis funktionieren aber schrieben werden.
fast alle Zeichen.
4000
Declare Function OPENCOM Lib
 rsmini (ByVal A$) As
Dynamische
Integer
3000
Link-Bibliothek
Declare Sub CLOSECOM Lib
Das an der COM-Schnittstelle des  rsmini ()
2000
PCs angeschlossene Multimeter Declare Sub SENDBYTE Lib
wird über eine kleine dynamische  rsmini (ByVal b%)
Link-Bibliothek (DLL) direkt aus Declare Sub RTS Lib  rsmini
1000
Excel angesprochen und gelesen. (ByVal b%)
Wenige Programmzeilen filtern den Declare Sub DTR Lib  rsmini
0
erfassten Widerstandswert. Über (ByVal onoff%)
-50 0 50 100 150
eine geeignete Gleichung wird die Declare Function READBYTE
T (°C)
000053 - 13
nicht-lineare Kennlinie über eine Lib  rsmini () As Inte-
Funktion in eine Temperatur umge- ger
Bild 2. Charakteristik des Ttemperatursensors
rechnet und dargestellt. Declare Sub DELAY Lib
KTY10-6.
5/2000 Elektor 39
SOFTWARE
End Function Exit Function Textprogramm lauffähig. Die Routine
b$ = Mid$(A$, 4, 5)  Get10 muss natürlich angepasst
Function GetString() As String StringToOhm = Val(b$) * werden, da es in Word keine Zellen
Dim A$ 1000 (cells) gibt. Um Buchstaben und Text
SENDBYTE 33 End Function in das aktuelle Dokument einzufü-
A$ =   gen, benutzt man in Word97 Selec-
Do Temperatur berechnen tion.TypeText Text:= Hallo .
e = READBYTE Die oben angegebene Formel zur Alle Deklarationen und Funktionen
If e > 13 Then A$ = A$ + Chr$(e) Berechnung der Temperatur aus dem werden wie oben übernommen. Die
Loop Until e < 0 Widerstandswert wird als VBA- neue  Get10 -Routine für Word fügt
GetString = A$ Funktion wie folgt formuliert: die Messdaten in das aktuelle Doku-
End Function ment ein:
Function Temp(ByVal r As
Sub Test Double) As Double Sub Get10()
If ComOpen>0 then MsgBox (GetString) Const Alpha = 0.00788, Beta If ComOpen > 0 Then
End Sub = 0.00001937, R25 = 2000 For i = 1 To 10
If r <= 0 Then r = R25 Selection.TypeText
Schnittstelle öffnen kt = r / R25 Text:=Str$(i)
OpenCom erwartet eine Zeichenkette, die die Temp = 25+(Sqr(Alpha ^ 2 - 4 Selection.TypeText
Schnittstellenparameter enthält. Hier wird * Beta + 4 * Beta * kt)- Text:=vbTab
Com1 mit 1200 Baud, 7 Datenbits, keine Alpha) / (2 * Beta) Selection.TypeText
Parität und 2 Stoppbits geöffnet. Kann die End Function Text:=Str$(Temp
Schnittstelle nicht geöffnet werden, so liefert (StringToOhm(Get-
OpenCom eine Null zurück. Die Funktion erhält den Widerstand String)))
RTS 0 und DTR 1 schaltet die RS232-Leitun- in Ohm und liefert als Ergebnis die Selection.TypeParagraph
gen für die Optokoppler. Da das Multimeter Temperatur in °C. Man kann die For- DELAY 1000
eher langsam ist, soll 300 ms auf ein Zeichen mel nun auch im Tabellenblatt einfü- Next i
gewartet werden. Dies wird von der DLL gen und so ein entsprechendes Dia- CLOSECOM
bereits voreingestellt. gramm erzeugen, wie das Titelbild End If
zeigt. End Sub
Zeichenkette einlesen
Die Messwertanforderung wird mit dem Zei- Aus der Steuerelement-Toolbox kann
chen  D eingeleitet. Nun werden solange eine Befehlsschaltfläche auf das
Messreihe
Zeichen empfangen und in eine Zeichenkette Dokument gezogen werden. Ein
in Excel und Word
A$ gepackt, bis READBYTE den Wert -1 lie- Doppelklick auf dem Schalter öffnet
fert, die Wartezeit also überschritten ist. Mit Hilfe einer kleinen Schleife kön- den VBA-Editor und zeigt die Sub-
Innerhalb dieser Zeitspanne sollten alle 14 nen nun Messreihen aufgenommen routine, die bei Betätigung dieser
Bytes eingetroffen sein. werden. Die Subroutine  Get10 Schaltfläche ausgeführt wird. Wird
Die beiden Funktionen können mit einer klei- nimmt zehn Messwerte auf. Zwi- hier  Get10 eingetragen, so erfolgt
nen Testroutine überprüft werden: schen den Messpunkten wird mit eine Messung, wenn der Button
DELAY 1000 ms Sekunden gewartet. angeklickt wird.
Sub Test Die Zeit wird in Spalte A, die Tem- Private Sub CommandBut-
If ComOpen>0 then MsgBox (GetString) peratur in Spalte B eingetragen. ton1_Click()
End Sub Get10
Sub Get10() End Sub
Zeichenkette zerlegen Const Interval = 1000 Vorher muss der Entwurfsmodus
Der Widerstand des Sensors liegt zunächst If ComOpen > 0 Then beendet sein.
als Zeichenkette For i = 1 To 10 (000053)rg
 01.98 kOhm Cells(i, 1) = i - 1
Literatur:
vor, wird aber nun in eine Fließpunktvariable Cells(i, 2) =
(Double) gewandelt. Der String wird ab Posi- Temp(StringToOhm(Get-
 H.-J. Berndt / B. Kainka
tion 4 mit fünf Zeichen extrahiert ( 01.98 ). String))
Messen, Steuern und Regeln
Vorher wird noch die Gültigkeit geprüft, DELAY 1000
mit Word und Excel
indem der Dezimalpunkt an Stelle 6 abgefragt Next i
2..Auflage 1999
wird. Schließlich wird das Ergebnis in Ohm CLOSECOM
Franzis-Verlag, Poing
umgerechnet und dem Funktionsnamen als End If
ISBN 3-7723-4093-8
Ergebnis zugewiesen. End Sub
 B. Kainka / H.-J. Berndt
Function StringToOhm(ByVal A$) As Steht kein Excel zur Verfügung, kön- PC-Schnittstellen unter Windows
1. Auflage 1999
Double nen die Messungen auch unter Word
Elektor-Verlag Aachen
StringToOhm = 0 durchgeführt werden. Die VBA-
ISBN 3-89576-086-2
If Mid$(A$, 6, 1) <>  . Then Makros sind fast ohne Änderung im
40 Elektor 5/2000


Wyszukiwarka

Podobne podstrony:
2006 04 Images of the Empire Msn Messenger in Linux with Webcam Support
die?rzte gabi und uwe in liebe und frieden
Dienstgrade in der Wehrmacht und in der SS
Kultur in der Schweiz bildende Kunst, Literatur und Musik
informatyka word i excel dla seniorow magdalena gunia ebook
busch wilhelm 1832 1908 max und moritz eine bubengeschichte in sieben streichen
E in T?atures & nescessity
Functional Origins of Religious Concepts Ontological and Strategic Selection in Evolved Minds
You maybe in love Blue Cafe
In the?rn
Monika und die Liebe

więcej podobnych podstron