Waage
Hallo Kollege, :
1) Aktl. Waagenwert auslesen:
in der o.g. Bed.Anleitung steht nichts von aktl. Waagenwert, es gibt ein Wert "schon dosierte Menge"; das kann man abfragen mit dem Telegramm:
"IN_PV_AM <SP><CR><SP><LF>" (das ist ein STRING, oder deutsch: Zeichenkette)
Die Zeichen "<SP><CR><SP><LF>" sind immer der Abschluss des Telegramms.
Der o.g. String muss an die Waage gesendet werden, die antwortet dann mit:
"001234<SP><CR><SP><LF>", wobei 001234 ist das Gewicht in mg.
Diese Antwort: "001234<SP><CR><SP><LF>" (STRING) kann mit der schon erw. Funktion
STR in eine Realzahl umgewandelt werden, da müsste rauskommen
1234.0.
Wie macht man ein STRING?:
Z.B. ab Adresse VB200:
MOVB 12, VB200 // Anzahl zu versend. Bytes
MOVD 'IN_P', VD201
MOVD 'V_AM', VD205
MOVB 32, VB209
MOVB 13, VB210
MOVB 32, VB211
MOVB 10, VB212
D.h., das kannst jetzt senden:
XMT VB200, 0 // String senden. Sendepuffer ist ab VB200
Empfangen geht mit(wird normal im Interrupt aufgerufen):
RCV VB300, 0 // String empfangen, Daten stehen ab VB300
Jetzt würde dein Gewicht ab VB301 drin stehen, dann:
STR VB301, 0, VD10 // in VD steht jetzt der Wert als REAL
Die Programmstruktur sieht so aus:
- einmalig beim Start die Schnittstelle parametrieren
- Empfangs-Interrupt freigeben und definieren
- Anfrage an Waage senden..
- Empfangsinterrupt kommt: Daten von der Waage auswerten
- wieder abfragen...
Ich habe keine Zeit, um das Ganze dir zu programmieren; die Beispiele von Siemens sind aber gut, da muss man durch
.
V.