Hi,
mein Programm tut immer noch nicht, aber ich möchte erst den Code vorbereiten.
Dazu noch ein paar Fragen:
Wieviele IF-Operanden sind zulässig?
In TP-Programmen sind nur 5 zulässig.
Darf man AND mit OR im IF-Satz mischen?
In TP-Programmen geht das nicht.
Zu diesen Fragen habe ich keine Antworten in der Karel-Doku gefunden (Kapitel: A.9.1 IF ... ENDIF Statement).
Das Beispielprogramm hab ich schon ein wenig modifiziert:
PROGRAM askres
%ALPHABETIZE
%NOLOCKGROUP
%NOPAUSE = COMMAND + TPENABLE + ERROR
%NOBUSYLAMP -- BUSY und RUNNING AUS
%COMMENT = 'reset2dout'
CONST
tpireset = 153
VAR
-- Eigene Variablen
status : INTEGER -- Statusvariable von Build In Routinen
real_flag : BOOLEAN -- Identifizierung Integer oder Realwert in Register
int_value : INTEGER -- Rueckgabe des Integerwert in Register
real_value : REAL -- Rueckgabe des Realwertes in Register
--*******************************************************************
-- Hauptprogramm
--*******************************************************************
BEGIN
repeat
GET_REG(401, real_flag, int_value, real_value, status)
-- Wert aus Register [401] lesen (Welcher Ausgang ist an solang Reset gedrückt ist)
DELAY 100 -- immer fuer eine unterbrechung in so kurzen hardloops sorgen sonst wird das tp-display extrem in die knie gezogen
IF TPIN[153]= TRUE OR TPIN[159]= TRUE OR OPIN[1]= TRUE OR OPIN[20]= TRUE THEN -- TPIN153-->RESET TPIN159-->SHIFT+RESET OPIN[1]-->RESET an Schaltschrank OPIN[20]-->RESET von Pheriferie
dout[int_value] = TRUE
ELSE
dout[int_value] = FALSE
ENDIF
until int_value=0 --programm lauuft endlos bis Register 401 eine 0 enthält
END askres
Ist es so OK?

MfG heini