8.5 Zeitliches Verhalten
8.5.1 Parallele und sequentielle Abarbeitung
Werden mehrere Werte abgefragt, erfolgt die Ausgabe immer
Abfrage:
§
UTMRS? ;ITRMS?
1
¦
gibt zuerst UTRMS und dann ITRMS aus.
Anders verhält sich das Gerät beim Setzen von Werten. Diese können parallel und in beliebiger
Reihenfolge ausgeführt werden:
§
USCA␣ 1 ;ISCA␣ 2 ;USCA␣2
1
¦
Hierdurch wird ISCA auf 2 gesetzt. USCA wird in der selben Zeile mal auf 1 und mal auf 2 gesetzt. Da
die Abarbeitungsreihenfolge nicht definiert ist, ist auch das Ergebnis undefiniert. USCA kann nachher
den Wert 1 oder 2 haben.
Die Reihenfolge kann durch das Einfügen von
abgearbeitet, wenn alle Befehle davor komplett abgearbeitet wurden.
§
USCA␣ 1 ;ISCA␣ 2 ; *OPC;USCA␣2
1
¦
Dies garantiert, dass USCA erst auf 2 gesetzt wird, nachdem die ersten beiden Befehle abgearbeitet
wurden.
Am Zeilenende wird immer ein implizites *OPC durchgeführt. Obiges Resultat erhält man daher auch,
indem man die Befehle in zwei Zeilen sendet:
§
USCA␣ 1 ;ISCA␣2
1
USCA␣2
2
¦
Werden Werte in der selben Zeile gesetzt und ausgelesen erhält man immer den alten Wert. Auch das
kann mit *OPC serialisiert werden.
§
USCA␣ 1 ; *OPC;USCA␣ 2 ;USCA?
1
¦
Diese Zeile setzt zwar USCA auf 2, gibt aber trotzdem eine 1 zurück! Wenn man den Wert 2 korrekt
auslesen möchte, muss man die Abfrage in eine zweite Zeile packen.
Der Vorteil der Parallel-Verarbeitung, liegt in der Geschwindigkeit. Beispielsweise das
Setzen von Ranges kann einige Zeit dauern. Werden die Ranges von mehreren Kanälen
hintereinander gesetzt summieren sich die Zeiten. Werden sie hingegen in einer Zeile
gesetzt, erfolgt das Setzen parallel, und damit deutlich schneller.
*OPC?
(operation complete) wartet darauf, dass alle bisher abgesetzten Befehle abgearbeitet
*OPC [8.9.7→171]
wurden, ehe mit weiteren Befehlen fortgefahren wird.
alle Befehle abgearbeitet wurden, eine 1 (ein einzelnes ASCII-Zeichen 0x31) ausgegeben wird. Auf diese
Weise erhält man ein Feedback, wenn die Abarbeitung beendet ist.
ESR Register
Ein
setzt nach Beendigung zusätzlich das Bit 0 des ESR Registers (
*OPC
sowie ein implizites OPC am Zeilenende setzen dieses Bit nicht.
*ACK?
gibt, ähnlich wie
*ACK?
www.zes.com
8 Fernsteuerung
, eine 1 aus, wartet jedoch nicht.
*OPC?
beeinflusst werden: *OPC wird erst
*OPC [8.9.7→171]
verhält sich identisch, nur dass, nachdem
*OPC?
in der Reihenfolge der
). Ein
*OPC?
*ESR [8.9.4→170]
163/288
¤
¥
¤
¥
¤
¥
¤
¥
¤
¥
*ACK [8.9.1→169]