BG 800 300 BE / A (0105) TPG 300
61
100 LOCATE 1, 47
101 PRINT "BALZERS TPG300
"; TIME$; " soro"
102 LOCATE 10, 1
110 P$ = "PA1"
120 FOR I = 1 TO 4
121 IF I = 2 THEN P$ = "PA2"
122 IF I = 3 THEN P$ = "PB1"
123 IF I = 4 THEN P$ = "PB2"
130 PRINT #1, P$: REM Abfrage der Druck Messstelle.
140 GOSUB 1000: REM Kommunikationsprotokoll
150 PRINT #1, ENQ$; : REM Aufforderung zur Datenuebertragung.
160 INPUT #1, s, m: REM Lesen des Messwertes.
170 IF s THEN PRINT "
"; : GOTO 200: REM Status >0
180 PRINT USING "
\ \=##.#^^^^"; P$; m; : REM Messdaten o.k.
200 NEXT I
300 LOCATE 5, 22
310 PRINT #1, "SPS": REM Abfrage des Waechterstatus.
320 GOSUB 1000: REM Kommunikationsprotokoll
330 PRINT #1, ENQ$; : REM Aufforderung zur Datenuebertragung.
340 INPUT #1, r1, r2, r3, r4, ra, rb: REM Lesen des Status.
350 PRINT USING "R1>#
R2>#
R3>#
R4>#
RA>#
RB>#"; r1; r2; r3; r4; ra; rb;
999 GOTO 100
1000 REM *** Kommunikationsprotokoll ***
1010 LINE INPUT #1, a$: REM Wartet auf die Quittierung der Nachricht.
1020 IF INSTR(a$, ACK$) THEN FOR J = 1 TO 200: NEXT J: RETURN: REM Zeit > 2mS (LF)
1021 REM Bei negativer Quittung.
1030 PRINT #1, ENQ$: REM Aufforderung zur Uebertragung des Error-Wortes.
1040 INPUT #1, e: REM Lesen des Error-Wortes vom TPG300.
1050 IF e > 999 THEN PRINT "
FATAL ERROR"; : e = e - 1000
1060 IF e > 99 THEN PRINT " NO HARDWARE"; : e = e - 100
1070 IF e > 9 THEN PRINT "
PARAMETER ERROR"; : e = e - 10
1080 IF e THEN PRINT "
SYNTAX ERROR";
1090 PRINT
2000 END