|
<< Click to Display Table of Contents >> Navigation: Komponenten > Steuerung, Logik & Zeit > Script IDE (LUA / Python) > Codebeispiel (Minimal) - LUA & Python |
Diese Beispiele zeigen die korrekte Verwendung der Script IDE inklusive Debug-Ausgabe über #DEBUG# sowie die Verarbeitung von Kanal-Arrays.
Annahme im Kanaleditor:
- Eingänge: Input[0] … Input[7]
- Ausgänge: Output[0] … Output[3]
Beispiel-Logik
Die ersten vier Eingänge werden auf die vier Ausgänge abgebildet. Zusätzlich wird die Summe von Input[0]…Input[3] gebildet und in Output[0] geschrieben. Debug-Ausgaben werden über #DEBUG# ausgegeben.
LUA – ScriptFunc()
Hinweise:
- EisBaer-Kanalarrays sind 0-basiert.
- Input_count / Output_count stehen automatisch zur Verfügung.
- Debug-Ausgabe erfolgt über eisbaerComponent:SetOutputSpFromLua("#DEBUG#", text).
function ScriptFunc()
-- Debug: Start
eisbaerComponent:SetOutputSpFromLua("#DEBUG#", "LUA: Script start")
-- Plausibilisierung (mind. 4 Eingänge & 4 Ausgänge)
if Input_count < 4 or Output_count < 4 then
ScriptFehler = 1
Diagnose = "Fehler: Input_count/Output_count zu klein"
eisbaerComponent:SetOutputSpFromLua("#DEBUG#", "LUA: ERROR - count too small")
return
end
ScriptFehler = 0
Diagnose = ""
sum = 0
for i = 0, 3 do
-- aktueller Wert (optional explizit lesen)
currentValue = eisbaerComponent:ReadInputSpFromLua("Input", i)
if currentValue == nil then
ScriptFehler = 1
Diagnose = "Fehler: Input[" .. tostring(i) .. "] ist nil"
eisbaerComponent:SetOutputSpFromLua("#DEBUG#", "LUA: ERROR - Input[" .. tostring(i) .. "] nil")
return
end
sum = sum + currentValue
-- Standard-Ausgang setzen (über Kanalnamen)
Output[i] = currentValue
end
-- Beispiel: Output[0] enthält die Summe
Output[0] = sum
Diagnose = "OK: Summe(Input0..3)=" .. tostring(sum)
eisbaerComponent:SetOutputSpFromLua("#DEBUG#", "LUA: OK - sum=" .. tostring(sum))
end
Python – ScriptFunc()
Hinweise:
- EisBaer-Kanalarrays sind 0-basiert.
- Debug-Ausgabe erfolgt über Eisbaer_SetOutputSp("#DEBUG#", text, True).
def ScriptFunc():
global Input, Output, Input_count, Output_count, ScriptFehler, Diagnose
# Debug: Start
Eisbaer_SetOutputSp("#DEBUG#", "PY: Script start", True)
if Input_count < 4 or Output_count < 4:
ScriptFehler = 1
Diagnose = "Fehler: Input_count/Output_count zu klein"
Eisbaer_SetOutputSp("#DEBUG#", "PY: ERROR - count too small", True)
return
ScriptFehler = 0
Diagnose = ""
s = 0
for i in range(4):
# aktueller Wert (optional explizit lesen)
currentValue = Eisbaer_ReadInputSp("Input", i)
if currentValue is None:
ScriptFehler = 1
Diagnose = f"Fehler: Input[{i}] ist None"
Eisbaer_SetOutputSp("#DEBUG#", f"PY: ERROR - Input[{i}] None", True)
return
s += currentValue
Output[i] = currentValue
Output[0] = s
Diagnose = f"OK: Summe(Input0..3)={s}"
Eisbaer_SetOutputSp("#DEBUG#", f"PY: OK - sum={s}", True)
Kurz-Hinweise
- Für dauerhafte Debug-Ausgaben #DEBUG_VERBOSE# verwenden.
- Diagnose sparsam einsetzen (Performance).
- Bei vielen Triggern: Prozessierungsverzögerung + Trigger-Pufferung aktivieren.