Messen in Word und Excel

background image

Eine RS232-Schnittstelle gehört mittlerweile
zur Standardausstattung jedes etwas besse-
ren Multimeters. Die mitgelieferte Software
kann aber in der Regel Werte einer Messreihe
nur auf dem PC-Monitor darstellen und als
Textdatei speichern. Soll jedoch die Mess-
reihe weiter bearbeitet und ausgewertet wer-
den, muss diese tabellarische Textdatei
umständlich in ein Statistikprogramm über-
führt werden oder in einen Textverarbeiter
eingebunden werden.

Dabei liefert Microsoft zusammen
mit dem Office-Paket den Interpreter
Visual Basic Applications, die eine
direkte Kommunikation von Word
oder Exel mit dem Messgerät ermög-
licht. Wir wollen dies an einem Bei-
spiel demonstrieren.
Die Dokumentvorlage in Bild 1 ent-
hält ein kleines Beispielprogramm,
um von Word aus ein an die serielle
Schnittstelle COM1 angeschlossenes
Digitalmultimeter auszulesen. Am
Digitalmultimeter ist ein temperatur-
abhängiger Widerstand (KTY10-6)
angeschlossen. Der Widerstands-
wert wird mit Hilfe einer Formel, die
der Hersteller des Temperaturfühlers
angibt, in eine Temperatur umge-
rechnet und in einem VBA-Formular

angezeigt. Ein Klick auf den Knopf
Messen zeigt die aktuelle Tempera-
tur an. Voraussetzung ist, dass sich
die RSMINI.DLL im Windows-Ver-
zeichnis befindet. Die Dokumentvor-
lage (KTY.DOT) und die verwendete
RSMINI.DLL sind frei kopierbar und
stehen als Download auf der Elektor-
Home-Page www.elektor.de bereit.
Außerdem ist die Software auf Dis-
kette EPS 000053-11 erhältlich.

Sensor und Messgerät

Der Halbleiter-Temperatur-Sensor
KTY-6-10 ist ein temperaturabhängi-
ger Widerstand. Leider ist seine
Charakteristik nicht linear, sondern
weist einen leicht diabolischen Ver-

SOFTWARE

38

Elektor

5/2000

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,

ist eine direkte Messwertauf-

nahme möglich.

background image

“rsmini” (ByVal ms%)

Alle Parameter müssen hier als Wertparame-
ter (ByVal), nicht als Referenzparameter (Vor-
einstellung) übergeben werden. Die DLL
selbst sollte sich im Windows- oder im
Systemverzeichnis befinden. Ein weiterer Ort
für die DLL ist das Verzeichnis des Tabellen-
blattes beziehungsweise der Dokumentvor-
lage. Unterhalb der Deklarationen werden
nun die einzelnen Routinen zum Auslesen
des Multimeters hinzugefügt.

Function ComOpen() As Integer

ComOpen = OPENCOM(“COM1:1200,

N,7,2”): RTS 0: DTR 1

lauf auf (Bild 2). Der Kennlinienver-
lauf wird durch Formeln beschrie-
ben:
R

T

= R

25

⋅ (1+α⋅∆T

A

+

β⋅∆T

A

2

) =

f(T

A

)

mit
α = 7,88⋅10

-3

K

-1

β = 1,937⋅10

-5

K

-2

oder umgekehrt nach der Tempera-
tur aufgelöst:

T = 25 +

√(α

2

- 4

⋅β + 4⋅β⋅k

T

) -

α / 2⋅β

mit k

T

= R

T

/R

25

Der Widerstandswert des KTY-6-10
soll mit dem weit verbreiteten Digi-
talmultimeter METEX M-3650CR mit
RS232-Anschluss (oder einem kom-
patiblen DVM) ermittelt und als
Temperaturkurve direkt in Excel
respektive Word aufgenommen wer-
den.
Das DVM wird über ein Spezialkabel
an eine freie COM-Schnittstelle des
PC angeschlossen. Dabei kommen
im Messgerät Optokoppler zum Ein-
satz, um den PC galvanisch zu tren-
nen. Die Optokoppler beziehen ihre
Versorgungspannung von den
RS232-Leitungen. Darum müssen
nach dem Öffnen der Schnittstelle
die Leitungen RTS und DTR entspre-
chend eingestellt werden.
Mit den Übertragungsparametern
1200 Baud, keine Parität, 7 Datenbits
und 2 Stoppbits überträgt das Mul-
timeter die Anzeige als 14-Byte-
ASCII-Zeichenkette. Als letztes Zei-
chen wird das Byte 13 (CR) übertra-
gen. Um die Übertragung zu
initiieren, muss ein “D” vom PC in
Richtung Multimeter geschickt wer-
den. In der Praxis funktionieren aber
fast alle Zeichen.

Dynamische
Link-Bibliothek

Das an der COM-Schnittstelle des
PCs angeschlossene Multimeter
wird über eine kleine dynamische
Link-Bibliothek (DLL) direkt aus
Excel angesprochen und gelesen.
Wenige Programmzeilen filtern den
erfassten Widerstandswert. Über
eine geeignete Gleichung wird die
nicht-lineare Kennlinie über eine
Funktion in eine Temperatur umge-
rechnet und dargestellt.

Die speziell für diesen Beitrag ent-
wickelte RSMINI.DLL erlaubt (im
Gegensatz zu der in [1] verwendeten
RSAPI.DLL mit zahlreichen allge-
meinen und gerätespezifischen
Funktionen zur Verwendung der
seriellen Schnittstelle) einen grund-
legenden Zugriff und kann zusam-
men mit den verwendeten Pro-
grammbeispielen direkt von der
Elektor-Home-Page heruntergeladen
werden
Die kleine DLL stellt alle wesentli-
chen Funktionen zur Kommunikation
über die RS232-Schnittstelle unter
Win95/98 bereit. Um die Anzeige des
Multimeters auszulesen, werden fol-
gende DLL-Aufrufe benötigt:

OPENCOM

Öffnen der seri-

ellen Schnittstelle

CLOSECOM

Schließen der

Schnittstelle

SENDBYTE

Zeichen vom PC

senden

READBYTE

Zeichen im PC

empfangen

RTS

Schalten der

Leitung RTS

DTR

Schalten der

Leitung DTR

DELAY Verzögerung

in

Millisekunden

Ein neues Modul

Nach dem Start von Word97 oder
Excel97 gelangt man mit ALT+F11
in den VBA-Editor. Dort fügt man
über das Menü Einfügen/Modul ein
neues Modul ein. Als Erstes werden
nun die externen Funktionen der
DLL deklariert. Dabei ist wichtig,
das alle DLL-Funktionen großge-
schrieben werden.

Declare Function OPENCOM Lib

“rsmini” (ByVal A$) As
Integer

Declare Sub CLOSECOM Lib

“rsmini” ()

Declare Sub SENDBYTE Lib

“rsmini” (ByVal b%)

Declare Sub RTS Lib “rsmini”

(ByVal b%)

Declare Sub DTR Lib “rsmini”

(ByVal onoff%)

Declare Function READBYTE

Lib “rsmini” () As Inte-
ger

Declare Sub DELAY Lib

SOFTWARE

39

5/2000

Elektor

Bild 1. Word-Dokumentvorlage KTY.DOT als
Messprogramm.

R (

)

KTY 10-6

6000

5000

4000

-50

0

50

100

150

000053 - 13

3000

2000

1000

0

T (

°C)

Bild 2. Charakteristik des Ttemperatursensors
KTY10-6.

background image

End Function

Function GetString() As String

Dim A$
SENDBYTE 33
A$ = “”
Do

e = READBYTE
If e > 13 Then A$ = A$ + Chr$(e)

Loop Until e < 0
GetString = A$

End Function

Sub Test
If ComOpen>0 then MsgBox (GetString)
End Sub

Schnittstelle öffnen
OpenCom erwartet eine Zeichenkette, die die
Schnittstellenparameter enthält. Hier wird
Com1 mit 1200 Baud, 7 Datenbits, keine
Parität und 2 Stoppbits geöffnet. Kann die
Schnittstelle nicht geöffnet werden, so liefert
OpenCom eine Null zurück.
RTS 0 und DTR 1 schaltet die RS232-Leitun-
gen für die Optokoppler. Da das Multimeter
eher langsam ist, soll 300 ms auf ein Zeichen
gewartet werden. Dies wird von der DLL
bereits voreingestellt.

Zeichenkette einlesen
Die Messwertanforderung wird mit dem Zei-
chen “D” eingeleitet. Nun werden solange
Zeichen empfangen und in eine Zeichenkette
A$ gepackt, bis READBYTE den Wert -1 lie-
fert, die Wartezeit also überschritten ist.
Innerhalb dieser Zeitspanne sollten alle 14
Bytes eingetroffen sein.
Die beiden Funktionen können mit einer klei-
nen Testroutine überprüft werden:

Sub Test
If ComOpen>0 then MsgBox (GetString)
End Sub

Zeichenkette zerlegen
Der Widerstand des Sensors liegt zunächst
als Zeichenkette
“ 01.98 kOhm”
vor, wird aber nun in eine Fließpunktvariable
(Double) gewandelt. Der String wird ab Posi-
tion 4 mit fünf Zeichen extrahiert (“01.98”).
Vorher wird noch die Gültigkeit geprüft,
indem der Dezimalpunkt an Stelle 6 abgefragt
wird. Schließlich wird das Ergebnis in Ohm
umgerechnet und dem Funktionsnamen als
Ergebnis zugewiesen.

Function StringToOhm(ByVal A$) As
Double

StringToOhm = 0
If Mid$(A$, 6, 1) <> “.” Then

Exit Function

b$ = Mid$(A$, 4, 5)
StringToOhm = Val(b$) *

1000
End Function

Temperatur berechnen
Die oben angegebene Formel zur
Berechnung der Temperatur aus dem
Widerstandswert wird als VBA-
Funktion wie folgt formuliert:

Function Temp(ByVal r As

Double) As Double

Const Alpha = 0.00788, Beta

= 0.00001937, R25 = 2000

If r <= 0 Then r = R25
kt = r / R25
Temp = 25+(Sqr(Alpha ^ 2 - 4

* Beta + 4 * Beta * kt)-
Alpha) / (2 * Beta)

End Function

Die Funktion erhält den Widerstand
in Ohm und liefert als Ergebnis die
Temperatur in °C. Man kann die For-
mel nun auch im Tabellenblatt einfü-
gen und so ein entsprechendes Dia-
gramm erzeugen, wie das Titelbild
zeigt.

Messreihe
in Excel und Word

Mit Hilfe einer kleinen Schleife kön-
nen nun Messreihen aufgenommen
werden. Die Subroutine “Get10”
nimmt zehn Messwerte auf. Zwi-
schen den Messpunkten wird mit
DELAY 1000 ms Sekunden gewartet.
Die Zeit wird in Spalte A, die Tem-
peratur in Spalte B eingetragen.

Sub Get10()

Const Interval = 1000

If ComOpen > 0 Then

For i = 1 To 10

Cells(i, 1) = i - 1

Cells(i, 2) =

Temp(StringToOhm(Get-

String))

DELAY 1000

Next i

CLOSECOM

End If

End Sub

Steht kein Excel zur Verfügung, kön-
nen die Messungen auch unter Word
durchgeführt werden. Die VBA-
Makros sind fast ohne Änderung im

Textprogramm lauffähig. Die Routine
“Get10” muss natürlich angepasst
werden, da es in Word keine Zellen
(cells) gibt. Um Buchstaben und Text
in das aktuelle Dokument einzufü-
gen, benutzt man in Word97 Selec-
tion.TypeText Text:=”Hallo”.
Alle Deklarationen und Funktionen
werden wie oben übernommen. Die
neue “Get10”-Routine für Word fügt
die Messdaten in das aktuelle Doku-
ment ein:

Sub Get10()

If ComOpen > 0 Then

For i = 1 To 10

Selection.TypeText

Text:=Str$(i)

Selection.TypeText

Text:=vbTab

Selection.TypeText

Text:=Str$(Temp

(StringToOhm(Get-

String)))

Selection.TypeParagraph
DELAY 1000

Next i
CLOSECOM

End If

End Sub

Aus der Steuerelement-Toolbox kann
eine Befehlsschaltfläche auf das
Dokument gezogen werden. Ein
Doppelklick auf dem Schalter öffnet
den VBA-Editor und zeigt die Sub-
routine, die bei Betätigung dieser
Schaltfläche ausgeführt wird. Wird
hier “Get10” eingetragen, so erfolgt
eine Messung, wenn der Button
angeklickt wird.
Private Sub CommandBut-
ton1_Click()

Get10

End Sub
Vorher muss der Entwurfsmodus
beendet sein.

(000053)rg

Literatur:

– H.-J. Berndt / B. Kainka

Messen, Steuern und Regeln
mit Word und Excel
2..Auflage 1999
Franzis-Verlag, Poing
ISBN 3-7723-4093-8

– B. Kainka / H.-J. Berndt

PC-Schnittstellen unter Windows
1. Auflage 1999
Elektor-Verlag Aachen
ISBN 3-89576-086-2

SOFTWARE

40

Elektor

5/2000


Wyszukiwarka

Podobne podstrony:
Gefühlsarbeit in Pflege und Betreuung Sichtbarkeit und Bewertung gelungener Beziehungsarbeit
(5) C 470 93 Verein gegen Unwesen in Handel und Gewerbe Köln e V przeciwko Mars GmbH EN Streszczenie
Crowley, Aleister Magie in Theorie und Praxis
cv real Curriculum Vitae in word new
Gefühlsarbeit in Pflege und Betreuung Sichtbarkeit und Bewertung gelungener Beziehungsarbeit
(Ebuch Deutsch) Christian Kreuziger Überleben In Krisen Und Katastrophengebieten
DIE RITTERORDEN IN UMBRUCHS UND KRISENZEITEN,Czaja
Die Kämpfe in Ostgalizien und in der Bukowina
(5) C 470 93 Verein gegen Unwesen in Handel und Gewerbe Köln e V przeciwko Mars GmbH EN Streszczenie
Visual Basic Dla Aplikacji W Programach Word, Powerpoint I Excel Praktyczny Kurs Z Cwiczeniami
Word + Excel - Test B, Zarządzanie studia licencjackie, Informatyka ćwiczenia
reklamacja, word i excel
Kultur in der Schweiz bildende Kunst, Literatur und Musik
13 Starke und schwache Seiten der Lerner in der Primarstufeid 14500
ZADANIA Z INTERNETU, word excel
WORD korespondencja seryjna, word excel
WORD C, word excel

więcej podobnych podstron