From b41b7306ad8819aa6b4c730c0f13589319b32fbc Mon Sep 17 00:00:00 2001 From: Michael Stangl Date: Wed, 8 Jul 2026 09:28:30 +0200 Subject: [PATCH 1/3] bin Ordner mit setenv.bat angelegt. Skript zum Konvertieren der .xml Dateien in .awl in lib verschoben --- SCL-Export/README.md | 21 +- SCL-Export/tools/stlxml2awl.py | 249 ---------------- bin/activate_venv.bat | 20 ++ bin/get_cmd.bat | 7 + bin/install_py.bat | 21 ++ bin/setenv.bat | 56 ++++ bin/xmls2awl.bat | 19 ++ lib/stlxml2awl.py | 521 +++++++++++++++++++++++++++++++++ 8 files changed, 661 insertions(+), 253 deletions(-) delete mode 100644 SCL-Export/tools/stlxml2awl.py create mode 100644 bin/activate_venv.bat create mode 100644 bin/get_cmd.bat create mode 100644 bin/install_py.bat create mode 100644 bin/setenv.bat create mode 100644 bin/xmls2awl.bat create mode 100644 lib/stlxml2awl.py diff --git a/SCL-Export/README.md b/SCL-Export/README.md index 61044cb..3e3d81a 100644 --- a/SCL-Export/README.md +++ b/SCL-Export/README.md @@ -85,7 +85,20 @@ ersetzen (Aufrufer und Instanz-DBs bleiben gültig, neu übersetzen genügt). ## Werkzeug -`tools/stlxml2awl.py` wandelt die SimaticML-XML-Exporte (`StatementList`) in -lesbaren AWL-Text um (`python stlxml2awl.py `), inkl. Interface, -Netzwerktitel, Sprungmarken und Kommentaren — Grundlage für die -Massenkonvertierung der restlichen ~230 Bausteine. +`lib/stlxml2awl.py` (Projektwurzel) wandelt die SimaticML-XML-Exporte +(`StatementList`) in lesbaren AWL-Text um, inkl. Interface, Netzwerktitel, +Sprungmarken und Kommentaren — Grundlage für die Massenkonvertierung der +restlichen ~230 Bausteine. Aufruf über `bin/xmls2awl.bat`: + +``` +bin\xmls2awl.bat [ ...] REM einzelne Dateien +bin\xmls2awl.bat --dir REM rekursiv alle .xml -> .awl +``` + +Je `.xml` wird die `.awl` daneben abgelegt. Nicht-Baustein-Exporte (UDTs, +Tag-Tabellen) werden übersprungen. Zusätzlich schätzt das Skript pro Baustein +anhand von Sprung-/Label-Anzahl, registerindirekten Zugriffen und bekannten +Namensmustern eine der drei Aufwandskategorien (A/B/C, siehe oben) und +schreibt ein Log (`log/stlxml2awl_.log`, mit `--log ` +überschreibbar) mit allen Bausteinen der Kategorien B/C sowie Fehlern — das +ist die Priorisierungsliste für die manuelle Nacharbeit. diff --git a/SCL-Export/tools/stlxml2awl.py b/SCL-Export/tools/stlxml2awl.py deleted file mode 100644 index 66520b5..0000000 --- a/SCL-Export/tools/stlxml2awl.py +++ /dev/null @@ -1,249 +0,0 @@ -#!/usr/bin/env python3 -"""Wandelt TIA-Openness SimaticML XML (StatementList) in lesbaren AWL-Text um.""" -import re -import sys -import xml.etree.ElementTree as ET - -NS_IF = "{http://www.siemens.com/automation/Openness/SW/Interface/v5}" -NS_SL = "{http://www.siemens.com/automation/Openness/SW/NetworkSource/StatementList/v5}" - -TOKEN_MAP = { - "A_BRACK": "A(", "O_BRACK": "O(", "AN_BRACK": "AN(", "ON_BRACK": "ON(", - "X_BRACK": "X(", "XN_BRACK": "XN(", "BRACKET": ")", - "NE_I": "<>I", "EQ_I": "==I", "GT_I": ">I", "LT_I": "=I", "LE_I": "<=I", - "NE_D": "<>D", "EQ_D": "==D", "GT_D": ">D", "LT_D": "=D", "LE_D": "<=D", - "NE_R": "<>R", "EQ_R": "==R", "GT_R": ">R", "LT_R": "=R", "LE_R": "<=R", - "ADD_I": "+I", "SUB_I": "-I", "MUL_I": "*I", "DIV_I": "/I", - "ADD_D": "+D", "SUB_D": "-D", "MUL_D": "*D", "DIV_D": "/D", - "ADD_R": "+R", "SUB_R": "-R", "MUL_R": "*R", "DIV_R": "/R", - "ADD": "+", "NOP_0": "NOP 0", "NOP_1": "NOP 1", - "TAR2_ACCU1": "TAR2", "TAR1_ACCU1": "TAR1", - "LAR1_ACCU1": "LAR1", "LAR2_ACCU1": "LAR2", - "OPEN_DB": "OPN", "OPEN_DI": "OPN", - "EMPTY_LINE": "", "COMMENT": "//", "Assign": "=", -} - - -def fmt_symbol(access): - parts = [] - for comp in access.findall(f"./{NS_SL}Symbol/{NS_SL}Component"): - name = comp.get("Name") - token = name if re.fullmatch(r"[A-Za-z_][A-Za-z0-9_]*", name) else f'"{name}"' - idx = [fmt_access(a) for a in comp.findall(f"{NS_SL}Access")] - if idx: - token += "[" + ",".join(idx) + "]" - if comp.get("SliceAccessModifier"): - token += "." + comp.get("SliceAccessModifier") - parts.append(token) - sym = ".".join(parts) - if access.get("Scope") == "GlobalVariable" and parts and not parts[0].startswith('"'): - sym = f'"{parts[0][1:-1] if parts[0].startswith(chr(34)) else parts[0]}"' + ( - "." + ".".join(parts[1:]) if len(parts) > 1 else "") - return sym - - -def fmt_address(addr): - area = addr.get("Area") - typ = addr.get("Type") - bit = int(addr.get("BitOffset", 0)) - blk = addr.get("BlockNumber") - width = {"Bool": 1, "Byte": 8, "Word": 16, "DWord": 32, "Int": 16, "DInt": 32}.get(typ, 0) - sizech = {1: "", 8: "B", 16: "W", 32: "D"}.get(width, "?") - areach = {"Local": "L", "Memory": "M", "Input": "I", "Output": "Q", "DB": "DB", "DI": "DI", - "Timer": "T", "Counter": "C", "PeripheryInput": "PI", "PeripheryOutput": "PQ"}.get(area, area) - if area in ("DB", "DI"): - pre = f"DB{blk}." if blk else "" - core = f"{pre}{'DBX' if width == 1 else 'DB' + sizech}{bit // 8}" - elif area == "Timer": - return f"T {bit}" - elif area == "Counter": - return f"C {bit}" - else: - core = f"{areach}{sizech}{bit // 8}" - if width == 1: - core += f".{bit % 8}" - return core - - -def fmt_indirect(ind): - width = ind.get("Width") - area = ind.get("Area") - reg = ind.get("Register", "") - inner = [fmt_access(a) for a in ind.findall(f"{NS_SL}Access")] - const = ind.find(f"{NS_SL}Constant") - off = "" - if const is not None: - off = const.findtext(f"{NS_SL}ConstantValue", "") - if width == "Block": # OPN DB[var] - return f"DB[{inner[0]}]" if inner else f"DB[{off}]" - sizech = {"Bit": "X", "Byte": "B", "Word": "W", "Double": "D", "DWord": "D"}.get(width, "?") - areach = {"DB": "DB", "DI": "DI", "Local": "L", "Memory": "M", "Input": "I", "Output": "Q"}.get(area, area or "") - base = f"{areach}{sizech}" if areach not in ("DB", "DI") else f"{areach}{sizech}" - if reg: # registerindirekt - return f"{base} [{reg},{off}]" - if inner: # speicherindirekt - return f"{base} [{inner[0]}]" - return f"{base} [{off}]" - - -def fmt_access(access): - scope = access.get("Scope") - if scope in ("LocalVariable", "GlobalVariable", "LocalConstant", "GlobalConstant"): - return fmt_symbol(access) - if scope in ("LiteralConstant", "TypedConstant"): - c = access.find(f"{NS_SL}Constant") - val = c.findtext(f"{NS_SL}ConstantValue", "") if c is not None else "" - typ = c.findtext(f"{NS_SL}ConstantType", "") if c is not None else "" - pref = {"Word": "W#16#", "DWord": "DW#16#", "Time": "", "S5Time": "", "Byte": "B#16#"} - if typ in ("Word", "DWord", "Byte") and not val.startswith(("2#", "16#", "W#", "DW#", "B#")): - return pref[typ] + val - return val - if scope == "AddressConstant": - c = access.find(f"{NS_SL}Constant") - return "P#" + c.findtext(f"{NS_SL}ConstantValue", "") if c is not None else "P#?" - if scope == "Address": - addr = access.find(f"{NS_SL}Address") - if addr is not None: - return fmt_address(addr) - ind = access.find(f"{NS_SL}Indirect") - if ind is not None: - return fmt_indirect(ind) - return "?ADDR?" - if scope == "Label": - lab = access.find(f"{NS_SL}Label") - return lab.get("Name") if lab is not None else "?LBL?" - if scope == "LabelDefinition": - lab = access.find(f"{NS_SL}Label") - return (lab.get("Name") + ":") if lab is not None else "?LBL?:" - if scope == "Statusword": - return access.find(f"{NS_SL}Statusword").get("Name", "?SW?") - if scope == "Call": - ci = access.find(f"{NS_SL}CallInfo") - if ci is None: - ins = access.find(f"{NS_SL}Instruction") - name = ins.get("Name") - params = [] - for p in ins.findall(f"{NS_SL}Parameter"): - pa = p.find(f"{NS_SL}Access") - params.append(f"{p.get('Name')}:={fmt_access(pa) if pa is not None else '?'}") - return f"CALLINFO SYS \"{name}\" (" + ", ".join(params) + ")" - name, btype = ci.get("Name"), ci.get("BlockType") - inst = ci.find(f"{NS_SL}Instance") - s = f'"{name}"' - if inst is not None: - s += " , " + fmt_symbol(inst) - params = [] - for p in ci.findall(f"{NS_SL}Parameter"): - pa = p.find(f"{NS_SL}Access") - params.append(f"{p.get('Name')}:={fmt_access(pa) if pa is not None else '?'}") - if params: - s += " (" + ", ".join(params) + ")" - return f"CALLINFO {btype} {s}" - return f"?{scope}?" - - -def render_statement(st): - label = "" - ld = st.find(f"{NS_SL}LabelDeclaration/{NS_SL}Label") - if ld is not None: - label = ld.get("Name") + ": " - toks = st.findall(f"{NS_SL}StlToken") - accesses = st.findall(f"{NS_SL}Access") - comments = [] - for lc in st.iter(f"{NS_SL}LineComment"): - t = lc.findtext(f"{NS_SL}Text", "") - if t: - comments.append(t) - for cm in st.findall(f"{NS_SL}Comment"): - t = cm.findtext(f"{NS_SL}Text", "") - if t: - comments.append(t) - if not toks: - if label: - return label.rstrip() - return "// " + " | ".join(comments) if comments else "" - tok = toks[0].get("Text") - mn = TOKEN_MAP.get(tok, tok) - if tok == "EMPTY_LINE": - return label.rstrip() if label else "" - if tok == "COMMENT": - return "// " + " | ".join(comments) - ops = [] - for a in accesses: - f = fmt_access(a) - if f.startswith("CALLINFO"): - return f"{label}CALL {f[9:]}" + (" // " + " | ".join(comments) if comments else "") - ops.append(f) - line = f"{label:6s}{mn:6s} " + ", ".join(ops) - if comments: - line = f"{line:60s} // " + " | ".join(comments) - return line.rstrip() - - -def render_interface(root): - out = [] - for sec in root.iter(f"{NS_IF}Section"): - members = sec.findall(f"{NS_IF}Member") - out.append(f" {sec.get('Name')}:") - for m in members: - out.extend(render_member(m, 4)) - return out - - -def render_member(m, indent): - out = [] - cm = m.find(f"{NS_IF}Comment/{NS_IF}MultiLanguageText") - sv = m.findtext(f"{NS_IF}StartValue") - line = " " * indent + f"{m.get('Name')} : {m.get('Datatype')}" - if sv: - line += f" := {sv}" - if cm is not None and cm.text: - line = f"{line:55s} // {cm.text}" - out.append(line) - for sub in m.findall(f"{NS_IF}Member"): - out.extend(render_member(sub, indent + 2)) - return out - - -def main(path): - s = open(path, encoding="utf-8").read() - root = ET.fromstring(s) - blk = None - for tag in ("FB", "FC", "OB", "GlobalDB", "InstanceDB"): - blk = root.find(f".//SW.Blocks.{tag}") - if blk is not None: - btype = tag - break - attrs = blk.find("AttributeList") - name = attrs.findtext("Name") - num = attrs.findtext("Number") - lang = attrs.findtext("ProgrammingLanguage") - print(f"=== {btype} {num}: {name} [{lang}] ===") - iface = attrs.find("Interface") - if iface is not None: - secs = iface.find(f"{NS_IF}Sections") - if secs is not None: - print("INTERFACE:") - for line in render_interface(secs): - print(line) - nwno = 0 - for cu in blk.iter("SW.Blocks.CompileUnit"): - nwno += 1 - title = "" - for mt in cu.iter("MultilingualTextItem"): - al = mt.find("AttributeList") - if al is not None and al.findtext("Culture") == "de-DE" and al.findtext("Text"): - title = al.findtext("Text") - break - print(f"\n--- NW {nwno}: {title} ---") - src = cu.find(f".//{NS_SL}StatementList") - if src is None: - print(" (kein STL-Quelltext)") - continue - for st in src.findall(f"{NS_SL}StlStatement"): - print(render_statement(st)) - - -if __name__ == "__main__": - for p in sys.argv[1:]: - main(p) diff --git a/bin/activate_venv.bat b/bin/activate_venv.bat new file mode 100644 index 0000000..2119d3f --- /dev/null +++ b/bin/activate_venv.bat @@ -0,0 +1,20 @@ +@echo off +REM ================================================================ +REM HundM_Fortna - Python Virtual Environment aktivieren +REM ================================================================ + +call "%~dp0setenv.bat" + +if not exist "%PROJECT%\.venv" ( + echo FEHLER: Virtual environment nicht gefunden. + echo Bitte zuerst bin\install_py.bat ausfuehren. + exit /b 1 +) + +call "%PROJECT%\.venv\Scripts\activate.bat" +echo Virtuelle Umgebung aktiviert. +echo Python-Version: +python --version +echo. +echo Installierte Pakete: +pip list diff --git a/bin/get_cmd.bat b/bin/get_cmd.bat new file mode 100644 index 0000000..0699d98 --- /dev/null +++ b/bin/get_cmd.bat @@ -0,0 +1,7 @@ +@echo off +REM ================================================================ +REM HundM_Fortna - Shell mit gesetzten Umgebungsvariablen oeffnen +REM ================================================================ + +call "%~dp0setenv.bat" +start cmd /k "echo HundM_Fortna Umgebung aktiv. && echo PROJECT=%PROJECT%" diff --git a/bin/install_py.bat b/bin/install_py.bat new file mode 100644 index 0000000..54d7d5d --- /dev/null +++ b/bin/install_py.bat @@ -0,0 +1,21 @@ +@echo off +REM ================================================================ +REM HundM_Fortna - Python Virtual Environment einrichten +REM ================================================================ + +call "%~dp0setenv.bat" + +if not exist "%PROJECT%\.venv" ( + echo Initialisiere Python virtual environment... + py -m venv "%PROJECT%\.venv" --upgrade-deps + echo Erfolgreich. + + call "%PROJECT%\.venv\Scripts\activate.bat" + echo Installiere erforderliche Python Packages... + pip install -r "%PROJECT%\requirements.txt" -q + echo Erfolgreich. + deactivate +) else ( + echo .venv existiert bereits - Abbruch. + echo Zum Neuaufsetzen .venv loeschen und install_py.bat erneut ausfuehren. +) diff --git a/bin/setenv.bat b/bin/setenv.bat new file mode 100644 index 0000000..9f7a3d8 --- /dev/null +++ b/bin/setenv.bat @@ -0,0 +1,56 @@ +@echo off +REM ================================================================ +REM HundM_Fortna - Umgebungsvariablen Setup +REM ================================================================ + +echo Setting up environment variables for HundM_Fortna ... + +REM Basis-Projektpfad (Elternordner von bin\) +set "PROJECT=%~dp0.." +if "%PROJECT:~-6%"=="bin\.." set "PROJECT=%PROJECT:~0,-6%" +if "%PROJECT:~-1%"=="\" set "PROJECT=%PROJECT:~0,-1%" + +REM Pfade fuer die Komponenten +set "PV_BIN=%PROJECT%\bin" +set "PV_LIB=%PROJECT%\lib" +set "PV_CFG=%PROJECT%\cfg" +set "PV_DATA=%PROJECT%\data" +set "PV_DOC=%PROJECT%\doc" +set "PV_TESTS=%PROJECT%\tests" + +REM PYTHONPATH um PV_LIB erweitern (nur wenn noch nicht enthalten) +if not defined PYTHONPATH ( + set "PYTHONPATH=%PV_LIB%" +) else ( + echo.%PYTHONPATH% | find /i "%PV_LIB%" >nul || set "PYTHONPATH=%PYTHONPATH%;%PV_LIB%" +) + +REM Ueberladen von Umgebungsvariablen durch _setenv.bat +REM (z.B. PV_DATA auf einen Netzlaufwerk-Pfad umbiegen) +if exist "%~dp0_setenv.bat" ( + echo Lade lokale Umgebungseinstellungen aus _setenv.bat... + call "%~dp0_setenv.bat" +) + +REM Ordner erstellen falls sie nicht existieren +if not exist "%PV_BIN%" mkdir "%PV_BIN%" +if not exist "%PV_LIB%" mkdir "%PV_LIB%" +if not exist "%PV_CFG%" mkdir "%PV_CFG%" +if not exist "%PV_DATA%" mkdir "%PV_DATA%" +if not exist "%PV_TESTS%" mkdir "%PV_TESTS%" + +REM Umgebungsvariablen anzeigen +echo. +echo ================================================================ +echo PROJECT = %PROJECT% +echo PV_BIN = %PV_BIN% +echo PV_LIB = %PV_LIB% +echo PV_CFG = %PV_CFG% +echo PV_DATA = %PV_DATA% +echo PV_LOG = %PV_LOG% +echo PV_RESULTS = %PV_RESULTS% +echo PV_EXAMPLES = %PV_EXAMPLES% +echo PV_TESTS = %PV_TESTS% +echo PYTHONPATH = %PYTHONPATH% +echo ================================================================ +echo. diff --git a/bin/xmls2awl.bat b/bin/xmls2awl.bat new file mode 100644 index 0000000..9a472a8 --- /dev/null +++ b/bin/xmls2awl.bat @@ -0,0 +1,19 @@ +@echo off +REM ================================================================ +REM Konvertiert die xml Dateien in awl Dateien +REM +REM ================================================================ + +call "%~dp0setenv.bat" + +REM .venv bevorzugen, sonst System-Python +set "PYTHON=python" +if exist "%PROJECT%\.venv\Scripts\python.exe" ( + set "PYTHON=%PROJECT%\.venv\Scripts\python.exe" +) + +"%PYTHON%" "%PV_LIB%\stlxml2awl.py" %* +if errorlevel 1 ( + echo FEHLER: stlxml2awl.py wurde mit Fehler beendet. + exit /b 1 +) diff --git a/lib/stlxml2awl.py b/lib/stlxml2awl.py new file mode 100644 index 0000000..4b3334b --- /dev/null +++ b/lib/stlxml2awl.py @@ -0,0 +1,521 @@ +#!/usr/bin/env python3 +"""Wandelt TIA-Openness SimaticML XML (StatementList) in lesbaren AWL-Text um.""" +import argparse +import datetime +import re +import sys +from pathlib import Path +import xml.etree.ElementTree as ET + +NS_IF = "{http://www.siemens.com/automation/Openness/SW/Interface/v5}" +NS_SL = "{http://www.siemens.com/automation/Openness/SW/NetworkSource/StatementList/v5}" + +TOKEN_MAP = { + "A_BRACK": "A(", "O_BRACK": "O(", "AN_BRACK": "AN(", "ON_BRACK": "ON(", + "X_BRACK": "X(", "XN_BRACK": "XN(", "BRACKET": ")", + "NE_I": "<>I", "EQ_I": "==I", "GT_I": ">I", "LT_I": "=I", "LE_I": "<=I", + "NE_D": "<>D", "EQ_D": "==D", "GT_D": ">D", "LT_D": "=D", "LE_D": "<=D", + "NE_R": "<>R", "EQ_R": "==R", "GT_R": ">R", "LT_R": "=R", "LE_R": "<=R", + "ADD_I": "+I", "SUB_I": "-I", "MUL_I": "*I", "DIV_I": "/I", + "ADD_D": "+D", "SUB_D": "-D", "MUL_D": "*D", "DIV_D": "/D", + "ADD_R": "+R", "SUB_R": "-R", "MUL_R": "*R", "DIV_R": "/R", + "ADD": "+", "NOP_0": "NOP 0", "NOP_1": "NOP 1", + "TAR2_ACCU1": "TAR2", "TAR1_ACCU1": "TAR1", + "LAR1_ACCU1": "LAR1", "LAR2_ACCU1": "LAR2", + "OPEN_DB": "OPN", "OPEN_DI": "OPN", + "EMPTY_LINE": "", "COMMENT": "//", "Assign": "=", +} + + +def fmt_symbol(access): + parts = [] + for comp in access.findall(f"./{NS_SL}Symbol/{NS_SL}Component"): + name = comp.get("Name") + token = name if re.fullmatch(r"[A-Za-z_][A-Za-z0-9_]*", name) else f'"{name}"' + idx = [fmt_access(a) for a in comp.findall(f"{NS_SL}Access")] + if idx: + token += "[" + ",".join(idx) + "]" + if comp.get("SliceAccessModifier"): + token += "." + comp.get("SliceAccessModifier") + parts.append(token) + sym = ".".join(parts) + if access.get("Scope") == "GlobalVariable" and parts and not parts[0].startswith('"'): + sym = f'"{parts[0][1:-1] if parts[0].startswith(chr(34)) else parts[0]}"' + ( + "." + ".".join(parts[1:]) if len(parts) > 1 else "") + return sym + + +def fmt_address(addr): + area = addr.get("Area") + typ = addr.get("Type") + bit = int(addr.get("BitOffset", 0)) + blk = addr.get("BlockNumber") + width = {"Bool": 1, "Byte": 8, "Word": 16, "DWord": 32, "Int": 16, "DInt": 32}.get(typ, 0) + sizech = {1: "", 8: "B", 16: "W", 32: "D"}.get(width, "?") + areach = {"Local": "L", "Memory": "M", "Input": "I", "Output": "Q", "DB": "DB", "DI": "DI", + "Timer": "T", "Counter": "C", "PeripheryInput": "PI", "PeripheryOutput": "PQ"}.get(area, area) + if area in ("DB", "DI"): + pre = f"DB{blk}." if blk else "" + core = f"{pre}{'DBX' if width == 1 else 'DB' + sizech}{bit // 8}" + elif area == "Timer": + return f"T {bit}" + elif area == "Counter": + return f"C {bit}" + else: + core = f"{areach}{sizech}{bit // 8}" + if width == 1: + core += f".{bit % 8}" + return core + + +def fmt_indirect(ind): + width = ind.get("Width") + area = ind.get("Area") + reg = ind.get("Register", "") + inner = [fmt_access(a) for a in ind.findall(f"{NS_SL}Access")] + const = ind.find(f"{NS_SL}Constant") + off = "" + if const is not None: + off = const.findtext(f"{NS_SL}ConstantValue", "") + if width == "Block": # OPN DB[var] + return f"DB[{inner[0]}]" if inner else f"DB[{off}]" + sizech = {"Bit": "X", "Byte": "B", "Word": "W", "Double": "D", "DWord": "D"}.get(width, "?") + areach = {"DB": "DB", "DI": "DI", "Local": "L", "Memory": "M", "Input": "I", "Output": "Q"}.get(area, area or "") + base = f"{areach}{sizech}" if areach not in ("DB", "DI") else f"{areach}{sizech}" + if reg: # registerindirekt + return f"{base} [{reg},{off}]" + if inner: # speicherindirekt + return f"{base} [{inner[0]}]" + return f"{base} [{off}]" + + +def fmt_access(access): + scope = access.get("Scope") + if scope in ("LocalVariable", "GlobalVariable", "LocalConstant", "GlobalConstant"): + return fmt_symbol(access) + if scope in ("LiteralConstant", "TypedConstant"): + c = access.find(f"{NS_SL}Constant") + val = c.findtext(f"{NS_SL}ConstantValue", "") if c is not None else "" + typ = c.findtext(f"{NS_SL}ConstantType", "") if c is not None else "" + pref = {"Word": "W#16#", "DWord": "DW#16#", "Time": "", "S5Time": "", "Byte": "B#16#"} + if typ in ("Word", "DWord", "Byte") and not val.startswith(("2#", "16#", "W#", "DW#", "B#")): + return pref[typ] + val + return val + if scope == "AddressConstant": + c = access.find(f"{NS_SL}Constant") + return "P#" + c.findtext(f"{NS_SL}ConstantValue", "") if c is not None else "P#?" + if scope == "Address": + addr = access.find(f"{NS_SL}Address") + if addr is not None: + return fmt_address(addr) + ind = access.find(f"{NS_SL}Indirect") + if ind is not None: + return fmt_indirect(ind) + return "?ADDR?" + if scope == "Label": + lab = access.find(f"{NS_SL}Label") + return lab.get("Name") if lab is not None else "?LBL?" + if scope == "LabelDefinition": + lab = access.find(f"{NS_SL}Label") + return (lab.get("Name") + ":") if lab is not None else "?LBL?:" + if scope == "Statusword": + return access.find(f"{NS_SL}Statusword").get("Name", "?SW?") + if scope == "Call": + ci = access.find(f"{NS_SL}CallInfo") + if ci is None: + ins = access.find(f"{NS_SL}Instruction") + name = ins.get("Name") + params = [] + for p in ins.findall(f"{NS_SL}Parameter"): + pa = p.find(f"{NS_SL}Access") + params.append(f"{p.get('Name')}:={fmt_access(pa) if pa is not None else '?'}") + return f"CALLINFO SYS \"{name}\" (" + ", ".join(params) + ")" + name, btype = ci.get("Name"), ci.get("BlockType") + inst = ci.find(f"{NS_SL}Instance") + s = f'"{name}"' + if inst is not None: + s += " , " + fmt_symbol(inst) + params = [] + for p in ci.findall(f"{NS_SL}Parameter"): + pa = p.find(f"{NS_SL}Access") + params.append(f"{p.get('Name')}:={fmt_access(pa) if pa is not None else '?'}") + if params: + s += " (" + ", ".join(params) + ")" + return f"CALLINFO {btype} {s}" + return f"?{scope}?" + + +def render_statement(st): + label = "" + ld = st.find(f"{NS_SL}LabelDeclaration/{NS_SL}Label") + if ld is not None: + label = ld.get("Name") + ": " + toks = st.findall(f"{NS_SL}StlToken") + accesses = st.findall(f"{NS_SL}Access") + comments = [] + for lc in st.iter(f"{NS_SL}LineComment"): + t = lc.findtext(f"{NS_SL}Text", "") + if t: + comments.append(t) + for cm in st.findall(f"{NS_SL}Comment"): + t = cm.findtext(f"{NS_SL}Text", "") + if t: + comments.append(t) + if not toks: + if label: + return label.rstrip() + return "// " + " | ".join(comments) if comments else "" + tok = toks[0].get("Text") + mn = TOKEN_MAP.get(tok, tok) + if tok == "EMPTY_LINE": + return label.rstrip() if label else "" + if tok == "COMMENT": + return "// " + " | ".join(comments) + ops = [] + for a in accesses: + f = fmt_access(a) + if f.startswith("CALLINFO"): + return f"{label}CALL {f[9:]}" + (" // " + " | ".join(comments) if comments else "") + ops.append(f) + line = f"{label:6s}{mn:6s} " + ", ".join(ops) + if comments: + line = f"{line:60s} // " + " | ".join(comments) + return line.rstrip() + + +def render_interface(root): + out = [] + for sec in root.iter(f"{NS_IF}Section"): + members = sec.findall(f"{NS_IF}Member") + out.append(f" {sec.get('Name')}:") + for m in members: + out.extend(render_member(m, 4)) + return out + + +def render_member(m, indent): + out = [] + cm = m.find(f"{NS_IF}Comment/{NS_IF}MultiLanguageText") + sv = m.findtext(f"{NS_IF}StartValue") + line = " " * indent + f"{m.get('Name')} : {m.get('Datatype')}" + if sv: + line += f" := {sv}" + if cm is not None and cm.text: + line = f"{line:55s} // {cm.text}" + out.append(line) + for sub in m.findall(f"{NS_IF}Member"): + out.extend(render_member(sub, indent + 2)) + return out + + +def parse_block(path): + text = path.read_text(encoding="utf-8") + root = ET.fromstring(text) + for tag in ("FB", "FC", "OB", "GlobalDB", "InstanceDB"): + blk = root.find(f".//SW.Blocks.{tag}") + if blk is not None: + return blk, tag + return None, None + + +def render_block(blk, btype): + out = [] + attrs = blk.find("AttributeList") + name = attrs.findtext("Name") + num = attrs.findtext("Number") + lang = attrs.findtext("ProgrammingLanguage") + out.append(f"=== {btype} {num}: {name} [{lang}] ===") + iface = attrs.find("Interface") + if iface is not None: + secs = iface.find(f"{NS_IF}Sections") + if secs is not None: + out.append("INTERFACE:") + out.extend(render_interface(secs)) + nwno = 0 + for cu in blk.iter("SW.Blocks.CompileUnit"): + nwno += 1 + title = "" + for mt in cu.iter("MultilingualTextItem"): + al = mt.find("AttributeList") + if al is not None and al.findtext("Culture") == "de-DE" and al.findtext("Text"): + title = al.findtext("Text") + break + out.append(f"\n--- NW {nwno}: {title} ---") + src = cu.find(f".//{NS_SL}StatementList") + if src is None: + out.append(" (kein STL-Quelltext)") + continue + for st in src.findall(f"{NS_SL}StlStatement"): + out.append(render_statement(st)) + return out, name, num + + +# --------------------------------------------------------------------------- +# Komplexitaets-Analyse / Kategorisierung +# +# Kategorie A: einfache Verknuepfungslogik, nahezu mechanische 1:1-Uebersetzung +# Kategorie B: Ablaufsteuerung mit vielen Sprüngen, Kontrollfluss muss zu +# IF/CASE rekonstruiert werden +# Kategorie C: Pointer-/Indirektzugriffe (registerindirekte Adressierung), +# hoechster Aufwand, Registeremulation nicht sinnvoll +# --------------------------------------------------------------------------- + +JUMP_TOKENS = { + "JU", "JC", "JCN", "JL", "JP", "JBI", "JNBI", + "JZ", "JN", "JM", "JMZ", "JPZ", "JO", "JOS", "JUO", "LOOP", +} +INDIRECT_CALL_TOKENS = {"UC", "CC"} +POINTER_ARITH_TOKENS = { + "LAR1_ACCU1", "LAR2_ACCU1", "TAR1_ACCU1", "TAR2_ACCU1", "ADDAR1", "ADDAR2", +} + + +def _pat(p): + return re.compile(p, re.IGNORECASE) + + +# Namensmuster aus der Projekt-Klassifizierung (bekannte Bausteingruppen) +C_NAME_PATTERNS = [ + _pat(r"^Daten\w*$"), + _pat(r"^Fifo"), + _pat(r"^DBMOV$"), + _pat(r"(^|[\\/])Logistik([\\/]|$)"), + _pat(r"(^|[\\/])SS_Host([\\/]|$)"), + _pat(r"(^|[\\/])Visualisierung([\\/]|$)"), +] +B_NAME_PATTERNS = [ + _pat(r"^MHM"), + _pat(r"_Bereich$"), + _pat(r"_OmniFahren$"), + _pat(r"_Ziel_FC$"), +] +A_NAME_PATTERNS = [ + _pat(r"^MZylinder$"), + _pat(r"^MSensoren$"), + _pat(r"^MBlinken$"), + _pat(r"^MAntrieb_"), + _pat(r"(^|[\\/])Basics[_\\/]"), + _pat(r"^Set_(Input|Output)$"), +] + + +def classify_by_name(xml_path): + stem = xml_path.stem + full = str(xml_path) + for patterns, cat in ((C_NAME_PATTERNS, "C"), (B_NAME_PATTERNS, "B"), (A_NAME_PATTERNS, "A")): + for pat in patterns: + if pat.search(stem) or pat.search(full): + return cat + return None + + +class Complexity: + def __init__(self): + self.jumps = 0 + self.labels = 0 + self.indirect_calls = 0 + self.register_indirect = 0 + self.pointer_arith = 0 + self.networks = 0 + + @property + def has_pointer_signal(self): + return self.register_indirect > 0 or self.pointer_arith > 0 + + @property + def has_branch_signal(self): + return self.indirect_calls > 0 + + +def analyze_complexity(blk): + c = Complexity() + c.networks = sum(1 for _ in blk.iter("SW.Blocks.CompileUnit")) + for st in blk.iter(f"{NS_SL}StlStatement"): + toks = st.findall(f"{NS_SL}StlToken") + if toks: + text = toks[0].get("Text") + if text in JUMP_TOKENS: + c.jumps += 1 + if text in INDIRECT_CALL_TOKENS: + c.indirect_calls += 1 + if text in POINTER_ARITH_TOKENS: + c.pointer_arith += 1 + if st.find(f"{NS_SL}LabelDeclaration") is not None: + c.labels += 1 + for ind in blk.iter(f"{NS_SL}Indirect"): + if ind.get("Register"): + c.register_indirect += 1 + return c + + +def classify(xml_path, complexity): + if complexity.has_pointer_signal: + return "C", f"registerindirekte Adressierung ({complexity.register_indirect}x Indirect, {complexity.pointer_arith}x AR-Arithmetik)" + name_cat = classify_by_name(xml_path) + if name_cat == "C": + return "C", "Namensmuster (Daten*/Fifo*/DBMOV/Logistik/SS_Host/Visualisierung)" + if complexity.has_branch_signal: + return "B", f"{complexity.indirect_calls}x indirekter Aufruf (UC/CC) - CASE-Verteiler noetig" + if name_cat == "B": + return "B", "Namensmuster (HM-Module/_Bereich/_OmniFahren/_Ziel_FC)" + if name_cat == "A": + return "A", "Namensmuster (einfache Verknuepfungslogik)" + return "A", "kein Namensmuster erkannt, keine Pointer-/Sprungauffaelligkeiten" + + +class NotABlockError(Exception): + """XML enthaelt keinen SW.Blocks-Export (z.B. UDT, Tag-Tabelle).""" + + +class ConversionResult: + def __init__(self, xml_path, awl_path, btype, name, num, complexity, category, reason): + self.xml_path = xml_path + self.awl_path = awl_path + self.btype = btype + self.name = name + self.num = num + self.complexity = complexity + self.category = category + self.reason = reason + + +def convert_file(xml_path): + blk, btype = parse_block(xml_path) + if blk is None: + raise NotABlockError("kein SW.Blocks-Element gefunden (kein Baustein-Export)") + lines, name, num = render_block(blk, btype) + awl_path = xml_path.with_suffix(".awl") + awl_path.write_text("\n".join(lines) + "\n", encoding="utf-8") + complexity = analyze_complexity(blk) + category, reason = classify(xml_path, complexity) + return ConversionResult(xml_path, awl_path, btype, name, num, complexity, category, reason) + + +# --------------------------------------------------------------------------- +# CLI / Massenkonvertierung +# --------------------------------------------------------------------------- + +def find_xml_files(directory): + return sorted(Path(directory).rglob("*.xml")) + + +def default_log_path(): + project_root = Path(__file__).resolve().parent.parent + log_dir = project_root / "log" + log_dir.mkdir(parents=True, exist_ok=True) + ts = datetime.datetime.now().strftime("%Y%m%d_%H%M%S") + return log_dir / f"stlxml2awl_{ts}.log" + + +def _format_result_line(r): + c = r.complexity + stats = (f"Sprünge={c.jumps} Labels={c.labels} IndirekteAufrufe={c.indirect_calls} " + f"RegisterIndirekt={c.register_indirect} AR-Arithmetik={c.pointer_arith} NW={c.networks}") + return (f"{r.btype:10s} {str(r.num or ''):>5s} {r.name or '':30s} [{stats}]\n" + f" Grund: {r.reason}\n" + f" Pfad : {r.xml_path}") + + +def write_log(log_path, results, skipped, errors): + log_path.parent.mkdir(parents=True, exist_ok=True) + lines = [] + ts = datetime.datetime.now().strftime("%Y-%m-%d %H:%M:%S") + lines.append(f"STL -> AWL Konvertierung ({ts})") + lines.append("=" * 70) + lines.append("") + lines.append(f"Konvertiert : {len(results)}") + lines.append(f"Uebersprungen (kein Baustein) : {len(skipped)}") + lines.append(f"Fehler : {len(errors)}") + lines.append("") + + by_cat = {"A": [], "B": [], "C": []} + for r in results: + by_cat[r.category].append(r) + lines.append(f"Kategorie A (einfache Verknuepfungslogik) : {len(by_cat['A'])}") + lines.append(f"Kategorie B (Ablaufsteuerung/Sprungmarken) : {len(by_cat['B'])}") + lines.append(f"Kategorie C (Pointer-/Indirektzugriffe) : {len(by_cat['C'])}") + lines.append("") + lines.append("Hinweis: automatische Einschaetzung anhand Codeanalyse (registerindirekte") + lines.append("Zugriffe, indirekte Aufrufe) und bekannter Namensmuster. Ersetzt keine") + lines.append("fachliche Pruefung, dient als Priorisierungshilfe fuer die Massenkonvertierung.") + lines.append("") + + if by_cat["C"]: + lines.append("-" * 70) + lines.append(f"Kategorie C - Pointer-/Indirektzugriffe: MANUELLE UEBERARBEITUNG NOETIG ({len(by_cat['C'])})") + lines.append("-" * 70) + for r in sorted(by_cat["C"], key=lambda r: str(r.xml_path)): + lines.append(_format_result_line(r)) + lines.append("") + + if by_cat["B"]: + lines.append("-" * 70) + lines.append(f"Kategorie B - Ablaufsteuerung/viele Sprungmarken: REVIEW ERFORDERLICH ({len(by_cat['B'])})") + lines.append("-" * 70) + for r in sorted(by_cat["B"], key=lambda r: str(r.xml_path)): + lines.append(_format_result_line(r)) + lines.append("") + + if errors: + lines.append("-" * 70) + lines.append(f"Fehler bei der Konvertierung ({len(errors)})") + lines.append("-" * 70) + for path, exc in errors: + lines.append(f"{path}: {exc}") + lines.append("") + + if skipped: + lines.append("-" * 70) + lines.append(f"Uebersprungen ({len(skipped)}, kein Baustein-Export, z.B. UDT/Tag-Tabelle)") + lines.append("-" * 70) + for path in skipped: + lines.append(str(path)) + lines.append("") + + log_path.write_text("\n".join(lines) + "\n", encoding="utf-8") + + +def main(argv=None): + parser = argparse.ArgumentParser( + description="Wandelt TIA-Openness SimaticML XML (StatementList) in lesbaren AWL-Text um.") + parser.add_argument("files", nargs="*", type=Path, help="Einzelne XML-Dateien") + parser.add_argument("--dir", "--directory", dest="directory", type=Path, + help="Verzeichnis rekursiv nach .xml-Dateien durchsuchen und alle konvertieren") + parser.add_argument("--log", type=Path, + help="Pfad der Log-Datei (Default: /log/stlxml2awl_.log)") + args = parser.parse_args(argv) + + targets = list(args.files) + if args.directory: + targets.extend(find_xml_files(args.directory)) + if not targets: + parser.error("keine XML-Dateien angegeben (Pfade und/oder --dir)") + + results, skipped, errors = [], [], [] + for xml_path in targets: + try: + result = convert_file(xml_path) + results.append(result) + print(f"OK [{result.category}] {xml_path} -> {result.awl_path.name}") + except NotABlockError: + skipped.append(xml_path) + except Exception as exc: + errors.append((xml_path, exc)) + print(f"FEHLER {xml_path}: {exc}", file=sys.stderr) + + log_path = args.log or default_log_path() + write_log(log_path, results, skipped, errors) + + print() + print(f"{len(results)} konvertiert, {len(skipped)} uebersprungen, {len(errors)} Fehler.") + print(f"Kategorie A/B/C: " + f"{sum(1 for r in results if r.category == 'A')}/" + f"{sum(1 for r in results if r.category == 'B')}/" + f"{sum(1 for r in results if r.category == 'C')}") + print(f"Log: {log_path}") + + return 1 if errors else 0 + + +if __name__ == "__main__": + sys.exit(main()) From 1c935599e900ab4e8dbe21bf67b8d61fc106dbfb Mon Sep 17 00:00:00 2001 From: Michael Stangl Date: Wed, 8 Jul 2026 09:44:17 +0200 Subject: [PATCH 2/3] =?UTF-8?q?Complexity=20a,b,c=20eingef=C3=BCgt?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- lib/stlxml2awl.py | 2 ++ 1 file changed, 2 insertions(+) diff --git a/lib/stlxml2awl.py b/lib/stlxml2awl.py index 4b3334b..2c9799f 100644 --- a/lib/stlxml2awl.py +++ b/lib/stlxml2awl.py @@ -349,6 +349,8 @@ def analyze_complexity(blk): def classify(xml_path, complexity): + if complexity.networks == 0: + return "A", "reine Datenablage ohne Programmcode (0 Netzwerke, z.B. GlobalDB)" if complexity.has_pointer_signal: return "C", f"registerindirekte Adressierung ({complexity.register_indirect}x Indirect, {complexity.pointer_arith}x AR-Arithmetik)" name_cat = classify_by_name(xml_path) From 9910240835a451ab92dff239749f7917a167950a Mon Sep 17 00:00:00 2001 From: Michael Stangl Date: Wed, 8 Jul 2026 09:44:59 +0200 Subject: [PATCH 3/3] alle xml in .awl konvertiert und eingecheckt --- .../BasicsHWtoAMR/DHWtoAMR_Antriebe.awl | 12 + .../BasicsHWtoAMR/DHWtoAMR_Sensoren.awl | 18 + .../BasicsHWtoAMR/DHWtoAMR_Zylinder.awl | 12 + .../BasicsHWtoAMR/HWtoAMR_Antriebe.awl | 113 + .../BasicsHWtoAMR/HWtoAMR_Sensoren.awl | 82 + .../BasicsHWtoAMR/HWtoAMR_Zylinder.awl | 66 + .../Anlage/0HWtoAMR/HWTtoAMR_Bereich.awl | 23 + .../OmnifahrenHWtoAMR/DHWtoAMROmniFahren.awl | 16 + .../OmnifahrenHWtoAMR/HWtoAMROmniFahren.awl | 214 + .../OmnifahrenHWtoAMR/HWtoAMRZielFC.awl | 64 + .../Anforderungs_DL/DL10LeerTrolleys.awl | 17 + .../Anforderungs_DL/DL11LeerTrolleys.awl | 17 + .../Anforderungs_DL/DL12LeerTrolleys.awl | 17 + .../Anforderungs_DL/DL1LeerTrolleys.awl | 17 + .../Anforderungs_DL/DL2LeerTrolleys.awl | 17 + .../Anforderungs_DL/DL3LeerTrolleys.awl | 17 + .../Anforderungs_DL/DL4LeerTrolleys.awl | 17 + .../Anforderungs_DL/DL5LeerTrolleys.awl | 17 + .../Anforderungs_DL/DL6LeerTrolleys.awl | 17 + .../Anforderungs_DL/DL7LeerTrolleys.awl | 17 + .../Anforderungs_DL/DL8LeerTrolleys.awl | 17 + .../Anforderungs_DL/DL9LeerTrolleys.awl | 17 + .../Anlage/1_Arbeitsplätze/Arbeitsplätze.awl | 80 + .../Arbeitsplätze/DMPS1_OmniFahren.awl | 21 + .../Arbeitsplätze/DMPS2_OmniFahren.awl | 21 + .../Arbeitsplätze/DMPS3_OmniFahren.awl | 21 + .../Arbeitsplätze/DPS1_OmniFahren.awl | 21 + .../Arbeitsplätze/DPS2_OmniFahren.awl | 22 + .../Arbeitsplätze/DPS3_OmniFahren.awl | 21 + .../Arbeitsplätze/DPS4_OmniFahren.awl | 20 + .../Arbeitsplätze/DPS5_OmniFahren.awl | 22 + .../Arbeitsplätze/MPS1_OmniFahren.awl | 171 + .../Arbeitsplätze/MPS2_OmniFahren.awl | 172 + .../Arbeitsplätze/MPS3_OmniFahren.awl | 171 + .../Arbeitsplätze/PS1_OmniFahren.awl | 269 ++ .../Arbeitsplätze/PS2_OmniFahren.awl | 165 + .../Arbeitsplätze/PS3_OmniFahren.awl | 209 + .../Arbeitsplätze/PS4_OmniFahren.awl | 163 + .../Arbeitsplätze/PS5_OmniFahren.awl | 235 ++ .../Arbeitsplätze_Antriebe.awl | 480 +++ .../Arbeitsplätze_Sensoren.awl | 352 ++ .../Arbeitsplätze_Zylinder.awl | 568 +++ .../DArbeitsplätze_Antriebe.awl | 48 + .../DArbeitsplätze_Sensoren.awl | 72 + .../DArbeitsplätze_Zylinder.awl | 115 + .../Abführung_OmniFahren.awl | 66 + .../Arbeitsplatz_Draussen_FC.awl | 202 + .../Arbeitsplatz_Leser_FC.awl | 910 ++++ .../Arbeitsplatz_Ziel_FC.awl | 1114 +++++ .../DAbführung_OmniFahren.awl | 8 + .../DZuführung_OmniFahren.awl | 19 + .../Zuführung_OmniFahren.awl | 227 + .../Basics_HWtoOB/DHWtoOB_Antriebe.awl | 13 + .../Basics_HWtoOB/DHWtoOB_Sensoren.awl | 17 + .../Basics_HWtoOB/DHWtoOB_Zylinder.awl | 13 + .../Basics_HWtoOB/HWtoOB_Antriebe.awl | 119 + .../Basics_HWtoOB/HWtoOB_Sensoren.awl | 77 + .../Basics_HWtoOB/HWtoOB_Zylinder.awl | 74 + .../Anlage/2_HWtoOB/HWtoOB_Bereich.awl | 23 + .../Omnifahren_HWtoOB/DHWtoOB_OmniFahren.awl | 19 + .../Omnifahren_HWtoOB/HWtoOB_OmniFahren.awl | 199 + .../Omnifahren_HWtoOB/HWtoOB_Ziel_FC.awl | 50 + .../Programmbausteine/Anlage/AMR_Bereich.awl | 1572 +++++++ .../Programmbausteine/Anlage/DAMR_Bereich.awl | 134 + .../Anlage/DSchnittstelle_zu_Outbound.awl | 14 + .../Anlage/DSchnittstelle_zu_Safety.awl | 19 + .../Barcode-Reader/FB_BarcodeReader_DB.awl | 109 + .../Datenlisten/DLCognexLeser.awl | 180 + .../Programmbausteine/Datenlisten/DLHMABP.awl | 143 + .../Datenlisten/DLOmniSchleuse.awl | 1244 ++++++ .../Datenlisten/DLOmniWeichen.awl | 141 + .../Logistik/AMRZeiger_ermitteln.awl | 40 + .../Logistik/AMR_TrolleyVersorgung.awl | 154 + .../Programmbausteine/Logistik/DLTrolleys.awl | 16 + .../Logistik/IndexDB1000.awl | 4 + .../LeerTrolley to AMR-Platz ermitteln.awl | 76 + ...Reservierung_in_Arbeitsplatz_eintragen.awl | 106 + .../Simulation_AMR_Trolley_starten.awl | 144 + .../Logistik/TrolleyDL_INDaten.awl | 4 + .../Logistik/TrolleyDL_OutDaten.awl | 4 + .../Logistik/TrolleyDL_SearchDaten.awl | 4 + .../Logistik/Trolley_DL_Check_ID.awl | 52 + .../Logistik/Trolley_DL_Neue_Pos.awl | 86 + .../Trolley_in_Arbeitsplatz_eingefahren.awl | 108 + .../Logistik/Trolleydaten_löschen.awl | 34 + .../Logistik/Trolleydaten_neu_anlegen.awl | 53 + .../Logistik/Trolleydaten_ändern.awl | 59 + .../Logistik/Wandel_FC_für_DB1000.awl | 19 + .../Module/AMR_LeerTrolley_Anforderung.awl | 82 + .../AMR_LeerTrolley_Anforderung_Del.awl | 35 + .../Module/BCD (4stellig)_to_INT.awl | 87 + .../Programmbausteine/Module/DBMOV.awl | 50 + .../Programmbausteine/Module/DL_Einsprung.awl | 55 + .../Module/DatenFindOffsetSort.awl | 627 +++ .../Programmbausteine/Module/DatenIn.awl | 552 +++ .../Programmbausteine/Module/DatenInSort.awl | 488 +++ .../Programmbausteine/Module/DatenOut.awl | 894 ++++ .../Programmbausteine/Module/DatenOutSort.awl | 532 +++ .../Programmbausteine/Module/DatenReset.awl | 234 ++ .../Module/DatenResetSort.awl | 183 + .../Module/Err_vorhanden.awl | 65 + .../Programmbausteine/Module/FIFOChange.awl | 327 ++ .../Programmbausteine/Module/FIFOSearch.awl | 376 ++ .../Programmbausteine/Module/FifoIn.awl | 505 +++ .../Programmbausteine/Module/FifoOut.awl | 502 +++ .../Programmbausteine/Module/FifoReset.awl | 204 + .../Module/MAntrieb_PowerSave.awl | 496 +++ .../Programmbausteine/Module/MAntrieb_all.awl | 496 +++ .../Module/MAusfahrPrio_ABP.awl | 135 + .../Programmbausteine/Module/MBlinken.awl | 153 + .../Module/MHMOmniBereich_Plus.awl | 1317 ++++++ .../Module/MHMOmniSchleuse.awl | 2402 +++++++++++ .../Module/MHMOmniSchleuse_Neu.awl | 2414 +++++++++++ .../Module/MHMOmniSchleuse_Plus.awl | 2338 +++++++++++ .../Module/MHMOmniSchleuse_Plus_Neu.awl | 2347 +++++++++++ .../Module/MHMOmniWeiche.awl | 913 ++++ .../Module/MHM_Arbeitsplatz.awl | 2151 ++++++++++ .../Module/MHMÜbergang_ohne_Schleuse_AMR.awl | 100 + .../Programmbausteine/Module/MImpulsGeber.awl | 122 + .../Programmbausteine/Module/MSensoren.awl | 87 + .../Programmbausteine/Module/MZylinder.awl | 203 + .../Programmbausteine/Module/Set_Input.awl | 34 + .../Programmbausteine/Module/Set_Output.awl | 34 + .../PerformanceTest/FB_PerfTest_6_180Grad.awl | 26 + .../FB_PerfTest_6_Ausfahrt.awl | 26 + .../FB_PerfTest_6_Einfahrt.awl | 26 + .../FB_PerfTest_6_MPS1_Ausfahrt.awl | 26 + .../FB_PerfTest_6_MPS1_Einfahrt.awl | 26 + .../FB_PerfTest_6_MPS2_Ausfahrt.awl | 26 + .../FB_PerfTest_6_MPS2_Einfahrt.awl | 26 + .../FB_PerfTest_6_MPS3_Ausfahrt.awl | 26 + .../FB_PerfTest_6_MPS3_Einfahrt.awl | 26 + .../FB_PerfTest_6_PS1_Ausfahrt.awl | 26 + .../FB_PerfTest_6_PS1_Einfahrt.awl | 26 + .../FB_PerfTest_6_PS2_Ausfahrt.awl | 26 + .../FB_PerfTest_6_PS2_Einfahrt.awl | 26 + .../FB_PerfTest_6_PS3_Ausfahrt.awl | 26 + .../FB_PerfTest_6_PS3_Einfahrt.awl | 26 + .../FB_PerfTest_6_PS4_Ausfahrt.awl | 26 + .../FB_PerfTest_6_PS4_Einfahrt.awl | 26 + .../FB_PerfTest_6_PS5_Ausfahrt.awl | 26 + .../FB_PerfTest_6_PS5_Einfahrt.awl | 26 + .../Programmbausteine/SCADA/DB_Status.awl | 4 + .../SCADA/FB-OPC_UA_System-Stat_DB.awl | 12 + .../SS_Host/DDaten_Host_senden.awl | 7 + .../SS_Host/DDaten_von_Host_empfangen.awl | 7 + .../SS_Host/Daten_Host_senden.awl | 28 + .../SS_Host/Daten_für_SendFIFO.awl | 34 + .../SS_Host/Daten_in_SendFIFO_speichern.awl | 72 + .../SS_Host/Daten_von_Host_empfangen.awl | 27 + .../SS_Host/HMSchleuse_TrolleyID.awl | 62 + .../SS_Host/Host_ABPtoPLC_ABP.awl | 70 + .../Programmbausteine/SS_Host/LeerDaten.awl | 4 + .../SS_Host/Port1_Daten_empfangen.awl | 56 + .../SS_Host/Port1_Daten_senden.awl | 80 + .../SS_Host/Port1_EmpfangenFIFO.awl | 29 + .../SS_Host/Port1_GesendetFIFO.awl | 29 + .../SS_Host/Port1_SendFIFO.awl | 27 + .../SS_Host/Port1_Telegramme_auswerten.awl | 186 + .../SS_Host/SS_Port1_EmpfangsDaten.awl | 5 + .../SS_Host/SS_Port1_SendDaten.awl | 4 + .../SS_Host/Test_EmpfangsDaten.awl | 5 + .../Visualisierung/DVisu_CheckTrolley.awl | 28 + .../DVisu_HMOmniBereich_Plus.awl | 22 + .../DVisu_HMOmniSchleuse_Plus.awl | 22 + .../Visualisierung/DVisu_HMOmniWeiche.awl | 22 + .../Visualisierung/DVisu_HMOmnischleuse.awl | 22 + .../Visualisierung/DVisu_HM_ABP.awl | 22 + .../Visualisierung/Visu_CheckTrolley.awl | 201 + .../Visu_HMOmniBereich_Plus.awl | 336 ++ .../Visualisierung/Visu_HMOmniSchleuse.awl | 364 ++ .../Visu_HMOmniSchleuse_Plus.awl | 350 ++ .../Visualisierung/Visu_HMOmniWeiche.awl | 290 ++ .../Visualisierung/Visu_HM_ABP.awl | 566 +++ .../_All/6_HMI_Err_UH06_AMR.awl | 1969 +++++++++ .../_All/6_HMI_Err_UH06_AMR_Ori.awl | 1969 +++++++++ .../_All/CYC_INT8_(10ms).awl | 68 + .../_All/Cycle Execution.awl | 403 ++ .../Programmbausteine/_All/LTest.awl | 162 + .../Programmbausteine/_All/SGes.awl | 25 + .../Programmbausteine/_All/Startup.awl | 31 + .../GDBs/100_Common/DB_AlarmGlobal.awl | 8 + .../GDBs/100_Common/DB_MachineGlobal.awl | 23 + .../xBaseSystemLib/GDBs/dbDataLogBuffer.awl | 7 + .../DB_Buffer_CommunicationWCSBL.awl | 4 + .../DB_Buffer_CommunicationWES.awl | 4 + .../DB_CommunicationParameters.awl | 4 + .../xCommunication/DB_LGF_FIFO_CommWCSBL.awl | 31 + .../xCommunication/DB_LGF_FIFO_CommWES.awl | 31 + .../FB_CommunicationWCSBL_DB.awl | 22 + .../FB_CommunicationWES_DeviceHub_DB.awl | 21 + .../DB_Buffer_CommunicationLogger.awl | 4 + .../DB_CommunciationParametersLogger.awl | 5 + .../TCP-Logger/DB_LGF_FIFO_CommLogger.awl | 31 + .../TCP-Logger/FB_CommunicationLogger_DB.awl | 24 + .../0_HWtoVP/Basics/DHWtoVP_Antriebe.awl | 17 + .../0_HWtoVP/Basics/DHWtoVP_Sensoren.awl | 24 + .../0_HWtoVP/Basics/DHWtoVP_Zylinder.awl | 19 + .../0_HWtoVP/Basics/HWtoVP_Antriebe.awl | 169 + .../0_HWtoVP/Basics/HWtoVP_Sensoren.awl | 111 + .../0_HWtoVP/Basics/HWtoVP_Zylinder.awl | 117 + .../Anlage/0_HWtoVP/HWtoOB_Bereich.awl | 23 + .../Omnifahren_HWtoVP/DHWtoVP_OmniFahren.awl | 25 + .../Omnifahren_HWtoVP/HWtoVP_Draussen.awl | 84 + .../Omnifahren_HWtoVP/HWtoVP_Leser_FC.awl | 101 + .../Omnifahren_HWtoVP/HWtoVP_OmniFahren.awl | 385 ++ .../Omnifahren_HWtoVP/HWtoVP_Ziel_FC.awl | 284 ++ .../1_Vollpuffer/Basics/DVP_Antriebe.awl | 11 + .../1_Vollpuffer/Basics/DVP_Sensoren.awl | 76 + .../1_Vollpuffer/Basics/DVP_Zylinder.awl | 164 + .../1_Vollpuffer/Basics/VP_Antriebe.awl | 103 + .../1_Vollpuffer/Basics/VP_Sensoren.awl | 380 ++ .../1_Vollpuffer/Basics/VP_Zylinder.awl | 855 ++++ .../Omnifahren_Vollpuffer/DVP_OmniFahren.awl | 22 + .../Omnifahren_Vollpuffer/VP_Draussen_FC.awl | 84 + .../Omnifahren_Vollpuffer/VP_Leser_FC.awl | 101 + .../Omnifahren_Vollpuffer/VP_OmniFahren.awl | 191 + .../Omnifahren_Vollpuffer/VP_Ziel_FC.awl | 424 ++ .../PufferAuslagern/DVPAuslagern.awl | 17 + .../PufferAuslagern/DVollPufferStreckenA.awl | 85 + .../PufferAuslagern/DVollPufferStreckenB.awl | 61 + .../PufferAuslagern/VPAuslagern.awl | 103 + .../PufferAuslagern/VollPufferStreckenA.awl | 1061 +++++ .../PufferAuslagern/VollPufferStreckenB.awl | 581 +++ .../DLVollPuffer_ShopGroup_abrufen.awl | 19 + .../DLVollPuffer_ShopGroup_einfahren.awl | 19 + .../DLVollPuffer_leer.awl | 18 + .../Sorter_Vollpuffer/DVP_Sorter_A.awl | 44 + .../Sorter_Vollpuffer/DVP_Sorter_B.awl | 36 + .../Sorter_Vollpuffer/HS_INDaten.awl | 4 + .../Sorter_Vollpuffer/HS_OutDaten.awl | 4 + .../Sorter_Vollpuffer/VP_DLSeps_Sorter.awl | 107 + .../VP_DLWeichen_Sorter_A.awl | 978 +++++ .../VP_DLWeichen_Sorter_B.awl | 982 +++++ .../Sorter_Vollpuffer/VP_HS_A_mF.awl | 17 + .../Sorter_Vollpuffer/VP_HS_A_oF.awl | 17 + .../Sorter_Vollpuffer/VP_HS_B_mF.awl | 17 + .../Sorter_Vollpuffer/VP_HS_B_oF.awl | 17 + .../Sorter_Vollpuffer/VP_Sorter_A.awl | 645 +++ .../Sorter_Vollpuffer/VP_Sorter_B.awl | 377 ++ .../Sorter_Vollpuffer/VP_TravelFIFO_A.awl | 33 + .../Sorter_Vollpuffer/VP_TravelFIFO_B.awl | 33 + .../Sorter_Vollpuffer/VP_Zaehler_A.awl | 20 + .../Sorter_Vollpuffer/VP_Zaehler_B.awl | 20 + .../Anlage/1_Vollpuffer/VP_Bereich.awl | 33 + .../2_VPtoEP/Basics/DVPtoEP_Antriebe.awl | 15 + .../2_VPtoEP/Basics/DVPtoEP_Sensoren.awl | 21 + .../2_VPtoEP/Basics/DVPtoEP_Zylinder.awl | 13 + .../2_VPtoEP/Basics/VPtoEP_Antriebe.awl | 156 + .../2_VPtoEP/Basics/VPtoEP_Sensoren.awl | 104 + .../2_VPtoEP/Basics/VPtoEP_Zylinder.awl | 86 + .../Omnifahren_VPtoEP/DVPtoEP_OmniFahren.awl | 17 + .../Omnifahren_VPtoEP/VPtoEP_Draussen_FC.awl | 49 + .../Omnifahren_VPtoEP/VPtoEP_Leser_FC.awl | 47 + .../Omnifahren_VPtoEP/VPtoEP_OmniFahren.awl | 251 ++ .../Omnifahren_VPtoEP/VPtoEP_Ziel_FC.awl | 120 + .../Anlage/2_VPtoEP/VPtoEP_Bereich.awl | 23 + .../3_Entnahmepuffer/Basics/DEP_Sensoren.awl | 10 + .../3_Entnahmepuffer/Basics/DEP_Zylinder.awl | 11 + .../3_Entnahmepuffer/Basics/EP_Sensoren.awl | 42 + .../3_Entnahmepuffer/Basics/EP_Zylinder.awl | 50 + .../Anlage/3_Entnahmepuffer/EP_Bereich.awl | 25 + .../DEP_OmniFahren.awl | 11 + .../EP_Draussen_FC.awl | 38 + .../Omnifahren_Entnahmepuffer/EP_Leser_FC.awl | 42 + .../EP_OmniFahren.awl | 68 + .../Omnifahren_Entnahmepuffer/EP_Ziel_FC.awl | 165 + .../DEntnahmePufferStrecken.awl | 10 + .../EntnahmePufferStrecken.awl | 155 + .../Sorter_Entnahmepuffer/DEP_Sorter.awl | 15 + .../EP_DLSeps_Sorter.awl | 61 + .../EP_DLWeichen_Sorter.awl | 190 + .../Sorter_Entnahmepuffer/EP_HS_mF.awl | 17 + .../Sorter_Entnahmepuffer/EP_HS_oF.awl | 17 + .../Sorter_Entnahmepuffer/EP_Sorter.awl | 296 ++ .../Sorter_Entnahmepuffer/EP_TravelFIFO.awl | 33 + .../Sorter_Entnahmepuffer/EP_Zaehler.awl | 20 + .../4_EPtoLP/Basics/DEPtoLP_Antriebe.awl | 15 + .../4_EPtoLP/Basics/DEPtoLP_Sensoren.awl | 23 + .../4_EPtoLP/Basics/DEPtoLP_Zylinder.awl | 16 + .../4_EPtoLP/Basics/EPtoLP_Antriebe.awl | 125 + .../4_EPtoLP/Basics/EPtoLP_Sensoren.awl | 107 + .../4_EPtoLP/Basics/EPtoLP_Zylinder.awl | 85 + .../Anlage/4_EPtoLP/EPtoLP_Bereich.awl | 23 + .../Omnifahren_EPtoLP/DEPtoLP_OmniFahren.awl | 24 + .../Omnifahren_EPtoLP/EPtoLP_Draussen.awl | 38 + .../Omnifahren_EPtoLP/EPtoLP_OmniFahren.awl | 303 ++ .../Omnifahren_EPtoLP/EPtoLP_Ziel_FC.awl | 74 + .../5_Leerpuffer/Basics/DLP_Sensoren.awl | 18 + .../5_Leerpuffer/Basics/DLP_Zylinder.awl | 27 + .../5_Leerpuffer/Basics/LP_Sensoren.awl | 82 + .../5_Leerpuffer/Basics/LP_Zylinder.awl | 130 + .../Anlage/5_Leerpuffer/LP_Bereich.awl | 30 + .../Omnifahren_Leerpuffer/DLP_OmniFahren.awl | 7 + .../Omnifahren_Leerpuffer/LP_Draussen_FC.awl | 37 + .../Omnifahren_Leerpuffer/LP_OmniFahren.awl | 62 + .../Omnifahren_Leerpuffer/LP_Ziel_FC.awl | 119 + .../PufferAuslagern/DLP_Auslagern.awl | 11 + .../PufferAuslagern/DLeerPufferStrecken.awl | 40 + .../PufferAuslagern/LP_Auslagern.awl | 150 + .../PufferAuslagern/LeerPufferStrecken.awl | 404 ++ .../DLLeerPuffer_ausfahren.awl | 18 + .../DLLeerPuffer_einfahren.awl | 18 + .../DLLeerPuffer_leer.awl | 18 + .../Sorter_Leerpuffer/DLP_Sorter.awl | 21 + .../Sorter_Leerpuffer/LP_DLSeps_Sorter.awl | 61 + .../Sorter_Leerpuffer/LP_DLWeichen_Sorter.awl | 406 ++ .../Sorter_Leerpuffer/LP_HS_mF.awl | 17 + .../Sorter_Leerpuffer/LP_HS_oF.awl | 17 + .../Sorter_Leerpuffer/LP_Sorter.awl | 358 ++ .../Sorter_Leerpuffer/LP_TravelFIFO.awl | 33 + .../Sorter_Leerpuffer/LP_Zaehler.awl | 20 + .../6_LPtoHW/Basics/DLPtoHW_Antriebe.awl | 15 + .../6_LPtoHW/Basics/DLPtoHW_Sensoren.awl | 24 + .../6_LPtoHW/Basics/DLPtoHW_Zylinder.awl | 16 + .../6_LPtoHW/Basics/LPtoHW_Antriebe.awl | 146 + .../6_LPtoHW/Basics/LPtoHW_Sensoren.awl | 145 + .../6_LPtoHW/Basics/LPtoHW_Zylinder.awl | 102 + .../Anlage/6_LPtoHW/LPtoHW_Bereich.awl | 24 + .../Omnifahren_LPtoHW/DLPtoHW_OmniFahren.awl | 23 + .../Omnifahren_LPtoHW/LPtoHW_Draussen_FC.awl | 96 + .../Omnifahren_LPtoHW/LPtoHW_Leser_FC.awl | 74 + .../Omnifahren_LPtoHW/LPtoHW_OmniFahren.awl | 353 ++ .../Omnifahren_LPtoHW/LPtoHW_Ziel_FC.awl | 173 + .../Anlage/DOutbound_Bereich.awl | 184 + .../Anlage/DSchnittstelle_zu_AMR.awl | 14 + .../Anlage/DSchnittstelle_zu_Safety.awl | 34 + .../Anlage/OutBound_Bereich.awl | 2274 ++++++++++ .../Barcode-Reader/FB_BarcodeReader_DB.awl | 43 + .../Datenlisten/DLCognexLeser.awl | 69 + .../Datenlisten/DLOmniPuffer.awl | 568 +++ .../Datenlisten/DLOmniSchleuse.awl | 1090 +++++ .../Datenlisten/DLOmniWeichen.awl | 63 + .../Datenlisten/LagerDL_OutDaten.awl | 4 + =A01+UH07-KF00/Programmbausteine/IBN.awl | 4 + .../Programmbausteine/Logistik/DLTrolleys.awl | 16 + .../Logistik/IndexDB1000.awl | 4 + .../Leerpuffer to Raus-Lager ermitteln.awl | 36 + .../Leerpuffer to Rein-Lager ermitteln.awl | 46 + .../Logistik/PufferZeiger_ermitteln.awl | 44 + .../Reservierung_in_Puffer_eintragen.awl | 130 + .../Logistik/SchleusenZeiger_ermitteln.awl | 39 + .../ShopGroup to Raus-Lager ermitteln.awl | 43 + .../ShopGroup to Rein-Lager ermitteln.awl | 58 + .../Simulation_Aus_VP_Trolley_starten.awl | 212 + .../Logistik/TrolleyDL_INDaten.awl | 4 + .../Logistik/TrolleyDL_OutDaten.awl | 4 + .../Logistik/TrolleyDL_SearchDaten.awl | 4 + .../Logistik/Trolley_DL_Check_ID.awl | 56 + .../Logistik/Trolley_DL_Neue_Pos.awl | 86 + .../Logistik/Trolleydaten_löschen.awl | 34 + .../Logistik/Trolleydaten_neu_anlegen.awl | 53 + .../Logistik/Trolleydaten_ändern.awl | 59 + .../Logistik/Wandel_FC_für_DB1000.awl | 19 + .../Module/BCD (4stellig)_to_INT.awl | 87 + .../Programmbausteine/Module/DBMOV.awl | 50 + .../Programmbausteine/Module/DL_Einsprung.awl | 55 + .../Module/DatenFindOffsetSort.awl | 627 +++ .../Programmbausteine/Module/DatenIn.awl | 552 +++ .../Programmbausteine/Module/DatenInSort.awl | 488 +++ .../Programmbausteine/Module/DatenOut.awl | 894 ++++ .../Programmbausteine/Module/DatenOutSort.awl | 532 +++ .../Programmbausteine/Module/DatenReset.awl | 234 ++ .../Module/DatenResetSort.awl | 183 + .../Module/Err_vorhanden.awl | 65 + .../Programmbausteine/Module/FIFOChange.awl | 327 ++ .../Programmbausteine/Module/FIFOSearch.awl | 376 ++ .../Programmbausteine/Module/FifoIn.awl | 500 +++ .../Programmbausteine/Module/FifoOut.awl | 502 +++ .../Programmbausteine/Module/FifoReset.awl | 204 + .../Module/INT_to_BCD (4stellig).awl | 52 + .../Module/MAntrieb_PowerSave.awl | 496 +++ .../Programmbausteine/Module/MAntrieb_all.awl | 496 +++ .../Module/MAusfahrFreigabe.awl | 565 +++ .../Module/MAusfahrFreigabe_neu.awl | 82 + .../Programmbausteine/Module/MBlinken.awl | 153 + .../Module/MHMEntnahmepuffer.awl | 208 + .../Module/MHMLeerpuffer.awl | 1420 +++++++ .../Module/MHMOmniBereich_Plus.awl | 1317 ++++++ .../Module/MHMOmniSchleuse.awl | 2402 +++++++++++ .../Module/MHMOmniSchleuse_Plus.awl | 2338 +++++++++++ .../Module/MHMOmniWeiche_Plus.awl | 873 ++++ .../Module/MHMVollpuffer.awl | 2496 +++++++++++ .../Module/MHMÜbergang_ohne_Schleuse.awl | 91 + .../Module/MHMÜberlauf_VP.awl | 1178 ++++++ .../Programmbausteine/Module/MImpulsGeber.awl | 122 + .../Programmbausteine/Module/MSensoren.awl | 87 + .../Module/MSepSorterRein.awl | 2318 +++++++++++ .../Module/MSorter_Uebergabe.awl | 574 +++ .../Programmbausteine/Module/MStartSync.awl | 1322 ++++++ .../Module/MWeiche_Sorter.awl | 1136 +++++ .../Module/MWeiche_Sorter_EP.awl | 1136 +++++ .../Programmbausteine/Module/MZylinder.awl | 203 + .../Module/Save_CARR_Gesendet.awl | 62 + .../Programmbausteine/Module/Save_Ziel.awl | 32 + .../Programmbausteine/Module/Set_Input.awl | 34 + .../Programmbausteine/Module/Set_Output.awl | 34 + .../FB_PerfTest_7_EP_Ausfahrt.awl | 26 + .../FB_PerfTest_7_EP_Einfahrt.awl | 26 + .../FB_PerfTest_7_LP_Einfahrt.awl | 26 + .../FB_PerfTest_7_LT_Beladung.awl | 26 + .../FB_PerfTest_7_OB_Einfahrt.awl | 26 + .../FB_PerfTest_7_VP_Ausfahrt.awl | 26 + .../PerformanceTest/FB_PerfTest_7_VP_Rück.awl | 26 + .../FB_PerfTest_7_VP_Sorter_Sync.awl | 26 + .../Programmbausteine/SCADA/DB_Status.awl | 4 + .../SCADA/FB-OPC_UA_System-Stat_DB.awl | 12 + .../SS_Host/DDaten_Host_senden.awl | 8 + .../SS_Host/DDaten_von_Host_empfangen.awl | 8 + .../SS_Host/Daten_Host_senden.awl | 46 + .../SS_Host/Daten_für_SendFIFO.awl | 34 + .../SS_Host/Daten_in_SendFIFO_speichern.awl | 72 + .../SS_Host/Daten_von_Host_empfangen.awl | 32 + .../Programmbausteine/SS_Host/LeerDaten.awl | 4 + .../SS_Host/Port1_Daten_empfangen.awl | 56 + .../SS_Host/Port1_Daten_senden.awl | 80 + .../SS_Host/Port1_EmpfangenFIFO.awl | 29 + .../SS_Host/Port1_GesendetFIFO.awl | 29 + .../SS_Host/Port1_SendFIFO.awl | 27 + .../SS_Host/Port1_Telegramme_auswerten.awl | 76 + .../SS_Host/Port2_Daten_empfangen.awl | 56 + .../SS_Host/Port2_Daten_senden.awl | 80 + .../SS_Host/Port2_EmpfangenFIFO.awl | 29 + .../SS_Host/Port2_GesendetFIFO.awl | 29 + .../SS_Host/Port2_SendFIFO.awl | 27 + .../SS_Host/Port2_Telegramme_auswerten.awl | 84 + .../SS_Host/SS_Port1_EmpfangsDaten.awl | 5 + .../SS_Host/SS_Port1_SendDaten.awl | 4 + .../SS_Host/SS_Port2_EmpfangsDaten.awl | 5 + .../SS_Host/SS_Port2_SendDaten.awl | 4 + .../SS_Host/Test_EmpfangsDaten.awl | 5 + .../Visualisierung/DVisu_CheckTrolley.awl | 28 + .../Visualisierung/DVisu_HMLeerPuffer.awl | 22 + .../DVisu_HMOmniBereich_Plus.awl | 22 + .../DVisu_HMOmniSchleuse_Plus.awl | 22 + .../DVisu_HMOmniWeiche_Plus.awl | 22 + .../Visualisierung/DVisu_HMOmnischleuse.awl | 22 + .../Visualisierung/DVisu_HMVollpuffer.awl | 22 + .../Visualisierung/DVisu_Sorter_Rein.awl | 22 + .../Visualisierung/DVisu_StartSync.awl | 22 + .../Visualisierung/DVisu_Weiche_Sorter.awl | 22 + .../Visualisierung/Visu_CheckTrolley.awl | 201 + .../Visualisierung/Visu_HMLeerPuffer.awl | 426 ++ .../Visu_HMOmniBereich_Plus.awl | 336 ++ .../Visualisierung/Visu_HMOmniSchleuse.awl | 364 ++ .../Visu_HMOmniSchleuse_Plus.awl | 350 ++ .../Visualisierung/Visu_HMOmniWeiche_Plus.awl | 290 ++ .../Visualisierung/Visu_HMVollPuffer.awl | 476 +++ .../Visualisierung/Visu_Sorter_Rein.awl | 368 ++ .../Visualisierung/Visu_StartSync_Visu.awl | 290 ++ .../Visualisierung/Visu_Weiche_Sorter.awl | 308 ++ .../_All/7_HMI_Err_UH07_OB.awl | 3708 +++++++++++++++++ .../_All/7_HMI_Err_UH07_OB_Ori.awl | 3708 +++++++++++++++++ .../_All/CYC_INT8_(10ms).awl | 68 + .../_All/Cycle Execution.awl | 504 +++ .../Programmbausteine/_All/LTest.awl | 194 + .../Programmbausteine/_All/SGes.awl | 25 + .../Programmbausteine/_All/Startup.awl | 41 + .../xBaseSystemLib/DB_Test.awl | 9 + .../GDBs/100_Common/DB_AlarmGlobal.awl | 8 + .../GDBs/100_Common/DB_MachineGlobal.awl | 22 + .../xBaseSystemLib/GDBs/dbDataLogBuffer.awl | 7 + .../DB_Buffer_CommunicationWCSBL.awl | 4 + .../DB_Buffer_CommunicationWES_ASRS.awl | 4 + .../DB_CommunicationParameters.awl | 5 + .../xCommunication/DB_LGF_FIFO_CommWCSBL.awl | 31 + .../DB_LGF_FIFO_CommWES_ASRS.awl | 31 + .../FB_CommunicationWCSBL_DB.awl | 26 + .../FB_CommunicationWES_ASRS_DB.awl | 26 + .../DB_Buffer_CommunicationLogger.awl | 4 + .../DB_CommunciationParametersLogger.awl | 5 + .../TCP-Logger/DB_LGF_FIFO_CommLogger.awl | 31 + .../TCP-Logger/FB_CommunicationLogger_DB.awl | 24 + 473 files changed, 102599 insertions(+) create mode 100644 =A01+UH06-KF00/Programmbausteine/Anlage/0HWtoAMR/BasicsHWtoAMR/DHWtoAMR_Antriebe.awl create mode 100644 =A01+UH06-KF00/Programmbausteine/Anlage/0HWtoAMR/BasicsHWtoAMR/DHWtoAMR_Sensoren.awl create mode 100644 =A01+UH06-KF00/Programmbausteine/Anlage/0HWtoAMR/BasicsHWtoAMR/DHWtoAMR_Zylinder.awl create mode 100644 =A01+UH06-KF00/Programmbausteine/Anlage/0HWtoAMR/BasicsHWtoAMR/HWtoAMR_Antriebe.awl create mode 100644 =A01+UH06-KF00/Programmbausteine/Anlage/0HWtoAMR/BasicsHWtoAMR/HWtoAMR_Sensoren.awl create mode 100644 =A01+UH06-KF00/Programmbausteine/Anlage/0HWtoAMR/BasicsHWtoAMR/HWtoAMR_Zylinder.awl create mode 100644 =A01+UH06-KF00/Programmbausteine/Anlage/0HWtoAMR/HWTtoAMR_Bereich.awl create mode 100644 =A01+UH06-KF00/Programmbausteine/Anlage/0HWtoAMR/OmnifahrenHWtoAMR/DHWtoAMROmniFahren.awl create mode 100644 =A01+UH06-KF00/Programmbausteine/Anlage/0HWtoAMR/OmnifahrenHWtoAMR/HWtoAMROmniFahren.awl create mode 100644 =A01+UH06-KF00/Programmbausteine/Anlage/0HWtoAMR/OmnifahrenHWtoAMR/HWtoAMRZielFC.awl create mode 100644 =A01+UH06-KF00/Programmbausteine/Anlage/1_Arbeitsplätze/Anforderungs_DL/DL10LeerTrolleys.awl create mode 100644 =A01+UH06-KF00/Programmbausteine/Anlage/1_Arbeitsplätze/Anforderungs_DL/DL11LeerTrolleys.awl create mode 100644 =A01+UH06-KF00/Programmbausteine/Anlage/1_Arbeitsplätze/Anforderungs_DL/DL12LeerTrolleys.awl create mode 100644 =A01+UH06-KF00/Programmbausteine/Anlage/1_Arbeitsplätze/Anforderungs_DL/DL1LeerTrolleys.awl create mode 100644 =A01+UH06-KF00/Programmbausteine/Anlage/1_Arbeitsplätze/Anforderungs_DL/DL2LeerTrolleys.awl create mode 100644 =A01+UH06-KF00/Programmbausteine/Anlage/1_Arbeitsplätze/Anforderungs_DL/DL3LeerTrolleys.awl create mode 100644 =A01+UH06-KF00/Programmbausteine/Anlage/1_Arbeitsplätze/Anforderungs_DL/DL4LeerTrolleys.awl create mode 100644 =A01+UH06-KF00/Programmbausteine/Anlage/1_Arbeitsplätze/Anforderungs_DL/DL5LeerTrolleys.awl create mode 100644 =A01+UH06-KF00/Programmbausteine/Anlage/1_Arbeitsplätze/Anforderungs_DL/DL6LeerTrolleys.awl create mode 100644 =A01+UH06-KF00/Programmbausteine/Anlage/1_Arbeitsplätze/Anforderungs_DL/DL7LeerTrolleys.awl create mode 100644 =A01+UH06-KF00/Programmbausteine/Anlage/1_Arbeitsplätze/Anforderungs_DL/DL8LeerTrolleys.awl create mode 100644 =A01+UH06-KF00/Programmbausteine/Anlage/1_Arbeitsplätze/Anforderungs_DL/DL9LeerTrolleys.awl create mode 100644 =A01+UH06-KF00/Programmbausteine/Anlage/1_Arbeitsplätze/Arbeitsplätze.awl create mode 100644 =A01+UH06-KF00/Programmbausteine/Anlage/1_Arbeitsplätze/Arbeitsplätze/DMPS1_OmniFahren.awl create mode 100644 =A01+UH06-KF00/Programmbausteine/Anlage/1_Arbeitsplätze/Arbeitsplätze/DMPS2_OmniFahren.awl create mode 100644 =A01+UH06-KF00/Programmbausteine/Anlage/1_Arbeitsplätze/Arbeitsplätze/DMPS3_OmniFahren.awl create mode 100644 =A01+UH06-KF00/Programmbausteine/Anlage/1_Arbeitsplätze/Arbeitsplätze/DPS1_OmniFahren.awl create mode 100644 =A01+UH06-KF00/Programmbausteine/Anlage/1_Arbeitsplätze/Arbeitsplätze/DPS2_OmniFahren.awl create mode 100644 =A01+UH06-KF00/Programmbausteine/Anlage/1_Arbeitsplätze/Arbeitsplätze/DPS3_OmniFahren.awl create mode 100644 =A01+UH06-KF00/Programmbausteine/Anlage/1_Arbeitsplätze/Arbeitsplätze/DPS4_OmniFahren.awl create mode 100644 =A01+UH06-KF00/Programmbausteine/Anlage/1_Arbeitsplätze/Arbeitsplätze/DPS5_OmniFahren.awl create mode 100644 =A01+UH06-KF00/Programmbausteine/Anlage/1_Arbeitsplätze/Arbeitsplätze/MPS1_OmniFahren.awl create mode 100644 =A01+UH06-KF00/Programmbausteine/Anlage/1_Arbeitsplätze/Arbeitsplätze/MPS2_OmniFahren.awl create mode 100644 =A01+UH06-KF00/Programmbausteine/Anlage/1_Arbeitsplätze/Arbeitsplätze/MPS3_OmniFahren.awl create mode 100644 =A01+UH06-KF00/Programmbausteine/Anlage/1_Arbeitsplätze/Arbeitsplätze/PS1_OmniFahren.awl create mode 100644 =A01+UH06-KF00/Programmbausteine/Anlage/1_Arbeitsplätze/Arbeitsplätze/PS2_OmniFahren.awl create mode 100644 =A01+UH06-KF00/Programmbausteine/Anlage/1_Arbeitsplätze/Arbeitsplätze/PS3_OmniFahren.awl create mode 100644 =A01+UH06-KF00/Programmbausteine/Anlage/1_Arbeitsplätze/Arbeitsplätze/PS4_OmniFahren.awl create mode 100644 =A01+UH06-KF00/Programmbausteine/Anlage/1_Arbeitsplätze/Arbeitsplätze/PS5_OmniFahren.awl create mode 100644 =A01+UH06-KF00/Programmbausteine/Anlage/1_Arbeitsplätze/Basics_Arbeitsplätze/Arbeitsplätze_Antriebe.awl create mode 100644 =A01+UH06-KF00/Programmbausteine/Anlage/1_Arbeitsplätze/Basics_Arbeitsplätze/Arbeitsplätze_Sensoren.awl create mode 100644 =A01+UH06-KF00/Programmbausteine/Anlage/1_Arbeitsplätze/Basics_Arbeitsplätze/Arbeitsplätze_Zylinder.awl create mode 100644 =A01+UH06-KF00/Programmbausteine/Anlage/1_Arbeitsplätze/Basics_Arbeitsplätze/DArbeitsplätze_Antriebe.awl create mode 100644 =A01+UH06-KF00/Programmbausteine/Anlage/1_Arbeitsplätze/Basics_Arbeitsplätze/DArbeitsplätze_Sensoren.awl create mode 100644 =A01+UH06-KF00/Programmbausteine/Anlage/1_Arbeitsplätze/Basics_Arbeitsplätze/DArbeitsplätze_Zylinder.awl create mode 100644 =A01+UH06-KF00/Programmbausteine/Anlage/1_Arbeitsplätze/Omnifahren_Arbeitsplätze/Abführung_OmniFahren.awl create mode 100644 =A01+UH06-KF00/Programmbausteine/Anlage/1_Arbeitsplätze/Omnifahren_Arbeitsplätze/Arbeitsplatz_Draussen_FC.awl create mode 100644 =A01+UH06-KF00/Programmbausteine/Anlage/1_Arbeitsplätze/Omnifahren_Arbeitsplätze/Arbeitsplatz_Leser_FC.awl create mode 100644 =A01+UH06-KF00/Programmbausteine/Anlage/1_Arbeitsplätze/Omnifahren_Arbeitsplätze/Arbeitsplatz_Ziel_FC.awl create mode 100644 =A01+UH06-KF00/Programmbausteine/Anlage/1_Arbeitsplätze/Omnifahren_Arbeitsplätze/DAbführung_OmniFahren.awl create mode 100644 =A01+UH06-KF00/Programmbausteine/Anlage/1_Arbeitsplätze/Omnifahren_Arbeitsplätze/DZuführung_OmniFahren.awl create mode 100644 =A01+UH06-KF00/Programmbausteine/Anlage/1_Arbeitsplätze/Omnifahren_Arbeitsplätze/Zuführung_OmniFahren.awl create mode 100644 =A01+UH06-KF00/Programmbausteine/Anlage/2_HWtoOB/Basics_HWtoOB/DHWtoOB_Antriebe.awl create mode 100644 =A01+UH06-KF00/Programmbausteine/Anlage/2_HWtoOB/Basics_HWtoOB/DHWtoOB_Sensoren.awl create mode 100644 =A01+UH06-KF00/Programmbausteine/Anlage/2_HWtoOB/Basics_HWtoOB/DHWtoOB_Zylinder.awl create mode 100644 =A01+UH06-KF00/Programmbausteine/Anlage/2_HWtoOB/Basics_HWtoOB/HWtoOB_Antriebe.awl create mode 100644 =A01+UH06-KF00/Programmbausteine/Anlage/2_HWtoOB/Basics_HWtoOB/HWtoOB_Sensoren.awl create mode 100644 =A01+UH06-KF00/Programmbausteine/Anlage/2_HWtoOB/Basics_HWtoOB/HWtoOB_Zylinder.awl create mode 100644 =A01+UH06-KF00/Programmbausteine/Anlage/2_HWtoOB/HWtoOB_Bereich.awl create mode 100644 =A01+UH06-KF00/Programmbausteine/Anlage/2_HWtoOB/Omnifahren_HWtoOB/DHWtoOB_OmniFahren.awl create mode 100644 =A01+UH06-KF00/Programmbausteine/Anlage/2_HWtoOB/Omnifahren_HWtoOB/HWtoOB_OmniFahren.awl create mode 100644 =A01+UH06-KF00/Programmbausteine/Anlage/2_HWtoOB/Omnifahren_HWtoOB/HWtoOB_Ziel_FC.awl create mode 100644 =A01+UH06-KF00/Programmbausteine/Anlage/AMR_Bereich.awl create mode 100644 =A01+UH06-KF00/Programmbausteine/Anlage/DAMR_Bereich.awl create mode 100644 =A01+UH06-KF00/Programmbausteine/Anlage/DSchnittstelle_zu_Outbound.awl create mode 100644 =A01+UH06-KF00/Programmbausteine/Anlage/DSchnittstelle_zu_Safety.awl create mode 100644 =A01+UH06-KF00/Programmbausteine/Barcode-Reader/FB_BarcodeReader_DB.awl create mode 100644 =A01+UH06-KF00/Programmbausteine/Datenlisten/DLCognexLeser.awl create mode 100644 =A01+UH06-KF00/Programmbausteine/Datenlisten/DLHMABP.awl create mode 100644 =A01+UH06-KF00/Programmbausteine/Datenlisten/DLOmniSchleuse.awl create mode 100644 =A01+UH06-KF00/Programmbausteine/Datenlisten/DLOmniWeichen.awl create mode 100644 =A01+UH06-KF00/Programmbausteine/Logistik/AMRZeiger_ermitteln.awl create mode 100644 =A01+UH06-KF00/Programmbausteine/Logistik/AMR_TrolleyVersorgung.awl create mode 100644 =A01+UH06-KF00/Programmbausteine/Logistik/DLTrolleys.awl create mode 100644 =A01+UH06-KF00/Programmbausteine/Logistik/IndexDB1000.awl create mode 100644 =A01+UH06-KF00/Programmbausteine/Logistik/LeerTrolley to AMR-Platz ermitteln.awl create mode 100644 =A01+UH06-KF00/Programmbausteine/Logistik/Reservierung_in_Arbeitsplatz_eintragen.awl create mode 100644 =A01+UH06-KF00/Programmbausteine/Logistik/Simulation_AMR_Trolley_starten.awl create mode 100644 =A01+UH06-KF00/Programmbausteine/Logistik/TrolleyDL_INDaten.awl create mode 100644 =A01+UH06-KF00/Programmbausteine/Logistik/TrolleyDL_OutDaten.awl create mode 100644 =A01+UH06-KF00/Programmbausteine/Logistik/TrolleyDL_SearchDaten.awl create mode 100644 =A01+UH06-KF00/Programmbausteine/Logistik/Trolley_DL_Check_ID.awl create mode 100644 =A01+UH06-KF00/Programmbausteine/Logistik/Trolley_DL_Neue_Pos.awl create mode 100644 =A01+UH06-KF00/Programmbausteine/Logistik/Trolley_in_Arbeitsplatz_eingefahren.awl create mode 100644 =A01+UH06-KF00/Programmbausteine/Logistik/Trolleydaten_löschen.awl create mode 100644 =A01+UH06-KF00/Programmbausteine/Logistik/Trolleydaten_neu_anlegen.awl create mode 100644 =A01+UH06-KF00/Programmbausteine/Logistik/Trolleydaten_ändern.awl create mode 100644 =A01+UH06-KF00/Programmbausteine/Logistik/Wandel_FC_für_DB1000.awl create mode 100644 =A01+UH06-KF00/Programmbausteine/Module/AMR_LeerTrolley_Anforderung.awl create mode 100644 =A01+UH06-KF00/Programmbausteine/Module/AMR_LeerTrolley_Anforderung_Del.awl create mode 100644 =A01+UH06-KF00/Programmbausteine/Module/BCD (4stellig)_to_INT.awl create mode 100644 =A01+UH06-KF00/Programmbausteine/Module/DBMOV.awl create mode 100644 =A01+UH06-KF00/Programmbausteine/Module/DL_Einsprung.awl create mode 100644 =A01+UH06-KF00/Programmbausteine/Module/DatenFindOffsetSort.awl create mode 100644 =A01+UH06-KF00/Programmbausteine/Module/DatenIn.awl create mode 100644 =A01+UH06-KF00/Programmbausteine/Module/DatenInSort.awl create mode 100644 =A01+UH06-KF00/Programmbausteine/Module/DatenOut.awl create mode 100644 =A01+UH06-KF00/Programmbausteine/Module/DatenOutSort.awl create mode 100644 =A01+UH06-KF00/Programmbausteine/Module/DatenReset.awl create mode 100644 =A01+UH06-KF00/Programmbausteine/Module/DatenResetSort.awl create mode 100644 =A01+UH06-KF00/Programmbausteine/Module/Err_vorhanden.awl create mode 100644 =A01+UH06-KF00/Programmbausteine/Module/FIFOChange.awl create mode 100644 =A01+UH06-KF00/Programmbausteine/Module/FIFOSearch.awl create mode 100644 =A01+UH06-KF00/Programmbausteine/Module/FifoIn.awl create mode 100644 =A01+UH06-KF00/Programmbausteine/Module/FifoOut.awl create mode 100644 =A01+UH06-KF00/Programmbausteine/Module/FifoReset.awl create mode 100644 =A01+UH06-KF00/Programmbausteine/Module/MAntrieb_PowerSave.awl create mode 100644 =A01+UH06-KF00/Programmbausteine/Module/MAntrieb_all.awl create mode 100644 =A01+UH06-KF00/Programmbausteine/Module/MAusfahrPrio_ABP.awl create mode 100644 =A01+UH06-KF00/Programmbausteine/Module/MBlinken.awl create mode 100644 =A01+UH06-KF00/Programmbausteine/Module/MHMOmniBereich_Plus.awl create mode 100644 =A01+UH06-KF00/Programmbausteine/Module/MHMOmniSchleuse.awl create mode 100644 =A01+UH06-KF00/Programmbausteine/Module/MHMOmniSchleuse_Neu.awl create mode 100644 =A01+UH06-KF00/Programmbausteine/Module/MHMOmniSchleuse_Plus.awl create mode 100644 =A01+UH06-KF00/Programmbausteine/Module/MHMOmniSchleuse_Plus_Neu.awl create mode 100644 =A01+UH06-KF00/Programmbausteine/Module/MHMOmniWeiche.awl create mode 100644 =A01+UH06-KF00/Programmbausteine/Module/MHM_Arbeitsplatz.awl create mode 100644 =A01+UH06-KF00/Programmbausteine/Module/MHMÜbergang_ohne_Schleuse_AMR.awl create mode 100644 =A01+UH06-KF00/Programmbausteine/Module/MImpulsGeber.awl create mode 100644 =A01+UH06-KF00/Programmbausteine/Module/MSensoren.awl create mode 100644 =A01+UH06-KF00/Programmbausteine/Module/MZylinder.awl create mode 100644 =A01+UH06-KF00/Programmbausteine/Module/Set_Input.awl create mode 100644 =A01+UH06-KF00/Programmbausteine/Module/Set_Output.awl create mode 100644 =A01+UH06-KF00/Programmbausteine/PerformanceTest/FB_PerfTest_6_180Grad.awl create mode 100644 =A01+UH06-KF00/Programmbausteine/PerformanceTest/FB_PerfTest_6_Ausfahrt.awl create mode 100644 =A01+UH06-KF00/Programmbausteine/PerformanceTest/FB_PerfTest_6_Einfahrt.awl create mode 100644 =A01+UH06-KF00/Programmbausteine/PerformanceTest/FB_PerfTest_6_MPS1_Ausfahrt.awl create mode 100644 =A01+UH06-KF00/Programmbausteine/PerformanceTest/FB_PerfTest_6_MPS1_Einfahrt.awl create mode 100644 =A01+UH06-KF00/Programmbausteine/PerformanceTest/FB_PerfTest_6_MPS2_Ausfahrt.awl create mode 100644 =A01+UH06-KF00/Programmbausteine/PerformanceTest/FB_PerfTest_6_MPS2_Einfahrt.awl create mode 100644 =A01+UH06-KF00/Programmbausteine/PerformanceTest/FB_PerfTest_6_MPS3_Ausfahrt.awl create mode 100644 =A01+UH06-KF00/Programmbausteine/PerformanceTest/FB_PerfTest_6_MPS3_Einfahrt.awl create mode 100644 =A01+UH06-KF00/Programmbausteine/PerformanceTest/FB_PerfTest_6_PS1_Ausfahrt.awl create mode 100644 =A01+UH06-KF00/Programmbausteine/PerformanceTest/FB_PerfTest_6_PS1_Einfahrt.awl create mode 100644 =A01+UH06-KF00/Programmbausteine/PerformanceTest/FB_PerfTest_6_PS2_Ausfahrt.awl create mode 100644 =A01+UH06-KF00/Programmbausteine/PerformanceTest/FB_PerfTest_6_PS2_Einfahrt.awl create mode 100644 =A01+UH06-KF00/Programmbausteine/PerformanceTest/FB_PerfTest_6_PS3_Ausfahrt.awl create mode 100644 =A01+UH06-KF00/Programmbausteine/PerformanceTest/FB_PerfTest_6_PS3_Einfahrt.awl create mode 100644 =A01+UH06-KF00/Programmbausteine/PerformanceTest/FB_PerfTest_6_PS4_Ausfahrt.awl create mode 100644 =A01+UH06-KF00/Programmbausteine/PerformanceTest/FB_PerfTest_6_PS4_Einfahrt.awl create mode 100644 =A01+UH06-KF00/Programmbausteine/PerformanceTest/FB_PerfTest_6_PS5_Ausfahrt.awl create mode 100644 =A01+UH06-KF00/Programmbausteine/PerformanceTest/FB_PerfTest_6_PS5_Einfahrt.awl create mode 100644 =A01+UH06-KF00/Programmbausteine/SCADA/DB_Status.awl create mode 100644 =A01+UH06-KF00/Programmbausteine/SCADA/FB-OPC_UA_System-Stat_DB.awl create mode 100644 =A01+UH06-KF00/Programmbausteine/SS_Host/DDaten_Host_senden.awl create mode 100644 =A01+UH06-KF00/Programmbausteine/SS_Host/DDaten_von_Host_empfangen.awl create mode 100644 =A01+UH06-KF00/Programmbausteine/SS_Host/Daten_Host_senden.awl create mode 100644 =A01+UH06-KF00/Programmbausteine/SS_Host/Daten_für_SendFIFO.awl create mode 100644 =A01+UH06-KF00/Programmbausteine/SS_Host/Daten_in_SendFIFO_speichern.awl create mode 100644 =A01+UH06-KF00/Programmbausteine/SS_Host/Daten_von_Host_empfangen.awl create mode 100644 =A01+UH06-KF00/Programmbausteine/SS_Host/HMSchleuse_TrolleyID.awl create mode 100644 =A01+UH06-KF00/Programmbausteine/SS_Host/Host_ABPtoPLC_ABP.awl create mode 100644 =A01+UH06-KF00/Programmbausteine/SS_Host/LeerDaten.awl create mode 100644 =A01+UH06-KF00/Programmbausteine/SS_Host/Port1_Daten_empfangen.awl create mode 100644 =A01+UH06-KF00/Programmbausteine/SS_Host/Port1_Daten_senden.awl create mode 100644 =A01+UH06-KF00/Programmbausteine/SS_Host/Port1_EmpfangenFIFO.awl create mode 100644 =A01+UH06-KF00/Programmbausteine/SS_Host/Port1_GesendetFIFO.awl create mode 100644 =A01+UH06-KF00/Programmbausteine/SS_Host/Port1_SendFIFO.awl create mode 100644 =A01+UH06-KF00/Programmbausteine/SS_Host/Port1_Telegramme_auswerten.awl create mode 100644 =A01+UH06-KF00/Programmbausteine/SS_Host/SS_Port1_EmpfangsDaten.awl create mode 100644 =A01+UH06-KF00/Programmbausteine/SS_Host/SS_Port1_SendDaten.awl create mode 100644 =A01+UH06-KF00/Programmbausteine/SS_Host/Test_EmpfangsDaten.awl create mode 100644 =A01+UH06-KF00/Programmbausteine/Visualisierung/DVisu_CheckTrolley.awl create mode 100644 =A01+UH06-KF00/Programmbausteine/Visualisierung/DVisu_HMOmniBereich_Plus.awl create mode 100644 =A01+UH06-KF00/Programmbausteine/Visualisierung/DVisu_HMOmniSchleuse_Plus.awl create mode 100644 =A01+UH06-KF00/Programmbausteine/Visualisierung/DVisu_HMOmniWeiche.awl create mode 100644 =A01+UH06-KF00/Programmbausteine/Visualisierung/DVisu_HMOmnischleuse.awl create mode 100644 =A01+UH06-KF00/Programmbausteine/Visualisierung/DVisu_HM_ABP.awl create mode 100644 =A01+UH06-KF00/Programmbausteine/Visualisierung/Visu_CheckTrolley.awl create mode 100644 =A01+UH06-KF00/Programmbausteine/Visualisierung/Visu_HMOmniBereich_Plus.awl create mode 100644 =A01+UH06-KF00/Programmbausteine/Visualisierung/Visu_HMOmniSchleuse.awl create mode 100644 =A01+UH06-KF00/Programmbausteine/Visualisierung/Visu_HMOmniSchleuse_Plus.awl create mode 100644 =A01+UH06-KF00/Programmbausteine/Visualisierung/Visu_HMOmniWeiche.awl create mode 100644 =A01+UH06-KF00/Programmbausteine/Visualisierung/Visu_HM_ABP.awl create mode 100644 =A01+UH06-KF00/Programmbausteine/_All/6_HMI_Err_UH06_AMR.awl create mode 100644 =A01+UH06-KF00/Programmbausteine/_All/6_HMI_Err_UH06_AMR_Ori.awl create mode 100644 =A01+UH06-KF00/Programmbausteine/_All/CYC_INT8_(10ms).awl create mode 100644 =A01+UH06-KF00/Programmbausteine/_All/Cycle Execution.awl create mode 100644 =A01+UH06-KF00/Programmbausteine/_All/LTest.awl create mode 100644 =A01+UH06-KF00/Programmbausteine/_All/SGes.awl create mode 100644 =A01+UH06-KF00/Programmbausteine/_All/Startup.awl create mode 100644 =A01+UH06-KF00/Programmbausteine/xBaseSystemLib/GDBs/100_Common/DB_AlarmGlobal.awl create mode 100644 =A01+UH06-KF00/Programmbausteine/xBaseSystemLib/GDBs/100_Common/DB_MachineGlobal.awl create mode 100644 =A01+UH06-KF00/Programmbausteine/xBaseSystemLib/GDBs/dbDataLogBuffer.awl create mode 100644 =A01+UH06-KF00/Programmbausteine/xCommunication/DB_Buffer_CommunicationWCSBL.awl create mode 100644 =A01+UH06-KF00/Programmbausteine/xCommunication/DB_Buffer_CommunicationWES.awl create mode 100644 =A01+UH06-KF00/Programmbausteine/xCommunication/DB_CommunicationParameters.awl create mode 100644 =A01+UH06-KF00/Programmbausteine/xCommunication/DB_LGF_FIFO_CommWCSBL.awl create mode 100644 =A01+UH06-KF00/Programmbausteine/xCommunication/DB_LGF_FIFO_CommWES.awl create mode 100644 =A01+UH06-KF00/Programmbausteine/xCommunication/FB_CommunicationWCSBL_DB.awl create mode 100644 =A01+UH06-KF00/Programmbausteine/xCommunication/FB_CommunicationWES_DeviceHub_DB.awl create mode 100644 =A01+UH06-KF00/Programmbausteine/xCommunication/TCP-Logger/DB_Buffer_CommunicationLogger.awl create mode 100644 =A01+UH06-KF00/Programmbausteine/xCommunication/TCP-Logger/DB_CommunciationParametersLogger.awl create mode 100644 =A01+UH06-KF00/Programmbausteine/xCommunication/TCP-Logger/DB_LGF_FIFO_CommLogger.awl create mode 100644 =A01+UH06-KF00/Programmbausteine/xCommunication/TCP-Logger/FB_CommunicationLogger_DB.awl create mode 100644 =A01+UH07-KF00/Programmbausteine/Anlage/0_HWtoVP/Basics/DHWtoVP_Antriebe.awl create mode 100644 =A01+UH07-KF00/Programmbausteine/Anlage/0_HWtoVP/Basics/DHWtoVP_Sensoren.awl create mode 100644 =A01+UH07-KF00/Programmbausteine/Anlage/0_HWtoVP/Basics/DHWtoVP_Zylinder.awl create mode 100644 =A01+UH07-KF00/Programmbausteine/Anlage/0_HWtoVP/Basics/HWtoVP_Antriebe.awl create mode 100644 =A01+UH07-KF00/Programmbausteine/Anlage/0_HWtoVP/Basics/HWtoVP_Sensoren.awl create mode 100644 =A01+UH07-KF00/Programmbausteine/Anlage/0_HWtoVP/Basics/HWtoVP_Zylinder.awl create mode 100644 =A01+UH07-KF00/Programmbausteine/Anlage/0_HWtoVP/HWtoOB_Bereich.awl create mode 100644 =A01+UH07-KF00/Programmbausteine/Anlage/0_HWtoVP/Omnifahren_HWtoVP/DHWtoVP_OmniFahren.awl create mode 100644 =A01+UH07-KF00/Programmbausteine/Anlage/0_HWtoVP/Omnifahren_HWtoVP/HWtoVP_Draussen.awl create mode 100644 =A01+UH07-KF00/Programmbausteine/Anlage/0_HWtoVP/Omnifahren_HWtoVP/HWtoVP_Leser_FC.awl create mode 100644 =A01+UH07-KF00/Programmbausteine/Anlage/0_HWtoVP/Omnifahren_HWtoVP/HWtoVP_OmniFahren.awl create mode 100644 =A01+UH07-KF00/Programmbausteine/Anlage/0_HWtoVP/Omnifahren_HWtoVP/HWtoVP_Ziel_FC.awl create mode 100644 =A01+UH07-KF00/Programmbausteine/Anlage/1_Vollpuffer/Basics/DVP_Antriebe.awl create mode 100644 =A01+UH07-KF00/Programmbausteine/Anlage/1_Vollpuffer/Basics/DVP_Sensoren.awl create mode 100644 =A01+UH07-KF00/Programmbausteine/Anlage/1_Vollpuffer/Basics/DVP_Zylinder.awl create mode 100644 =A01+UH07-KF00/Programmbausteine/Anlage/1_Vollpuffer/Basics/VP_Antriebe.awl create mode 100644 =A01+UH07-KF00/Programmbausteine/Anlage/1_Vollpuffer/Basics/VP_Sensoren.awl create mode 100644 =A01+UH07-KF00/Programmbausteine/Anlage/1_Vollpuffer/Basics/VP_Zylinder.awl create mode 100644 =A01+UH07-KF00/Programmbausteine/Anlage/1_Vollpuffer/Omnifahren_Vollpuffer/DVP_OmniFahren.awl create mode 100644 =A01+UH07-KF00/Programmbausteine/Anlage/1_Vollpuffer/Omnifahren_Vollpuffer/VP_Draussen_FC.awl create mode 100644 =A01+UH07-KF00/Programmbausteine/Anlage/1_Vollpuffer/Omnifahren_Vollpuffer/VP_Leser_FC.awl create mode 100644 =A01+UH07-KF00/Programmbausteine/Anlage/1_Vollpuffer/Omnifahren_Vollpuffer/VP_OmniFahren.awl create mode 100644 =A01+UH07-KF00/Programmbausteine/Anlage/1_Vollpuffer/Omnifahren_Vollpuffer/VP_Ziel_FC.awl create mode 100644 =A01+UH07-KF00/Programmbausteine/Anlage/1_Vollpuffer/PufferAuslagern/DVPAuslagern.awl create mode 100644 =A01+UH07-KF00/Programmbausteine/Anlage/1_Vollpuffer/PufferAuslagern/DVollPufferStreckenA.awl create mode 100644 =A01+UH07-KF00/Programmbausteine/Anlage/1_Vollpuffer/PufferAuslagern/DVollPufferStreckenB.awl create mode 100644 =A01+UH07-KF00/Programmbausteine/Anlage/1_Vollpuffer/PufferAuslagern/VPAuslagern.awl create mode 100644 =A01+UH07-KF00/Programmbausteine/Anlage/1_Vollpuffer/PufferAuslagern/VollPufferStreckenA.awl create mode 100644 =A01+UH07-KF00/Programmbausteine/Anlage/1_Vollpuffer/PufferAuslagern/VollPufferStreckenB.awl create mode 100644 =A01+UH07-KF00/Programmbausteine/Anlage/1_Vollpuffer/Reihenfolge_Vollpuffer/DLVollPuffer_ShopGroup_abrufen.awl create mode 100644 =A01+UH07-KF00/Programmbausteine/Anlage/1_Vollpuffer/Reihenfolge_Vollpuffer/DLVollPuffer_ShopGroup_einfahren.awl create mode 100644 =A01+UH07-KF00/Programmbausteine/Anlage/1_Vollpuffer/Reihenfolge_Vollpuffer/DLVollPuffer_leer.awl create mode 100644 =A01+UH07-KF00/Programmbausteine/Anlage/1_Vollpuffer/Sorter_Vollpuffer/DVP_Sorter_A.awl create mode 100644 =A01+UH07-KF00/Programmbausteine/Anlage/1_Vollpuffer/Sorter_Vollpuffer/DVP_Sorter_B.awl create mode 100644 =A01+UH07-KF00/Programmbausteine/Anlage/1_Vollpuffer/Sorter_Vollpuffer/HS_INDaten.awl create mode 100644 =A01+UH07-KF00/Programmbausteine/Anlage/1_Vollpuffer/Sorter_Vollpuffer/HS_OutDaten.awl create mode 100644 =A01+UH07-KF00/Programmbausteine/Anlage/1_Vollpuffer/Sorter_Vollpuffer/VP_DLSeps_Sorter.awl create mode 100644 =A01+UH07-KF00/Programmbausteine/Anlage/1_Vollpuffer/Sorter_Vollpuffer/VP_DLWeichen_Sorter_A.awl create mode 100644 =A01+UH07-KF00/Programmbausteine/Anlage/1_Vollpuffer/Sorter_Vollpuffer/VP_DLWeichen_Sorter_B.awl create mode 100644 =A01+UH07-KF00/Programmbausteine/Anlage/1_Vollpuffer/Sorter_Vollpuffer/VP_HS_A_mF.awl create mode 100644 =A01+UH07-KF00/Programmbausteine/Anlage/1_Vollpuffer/Sorter_Vollpuffer/VP_HS_A_oF.awl create mode 100644 =A01+UH07-KF00/Programmbausteine/Anlage/1_Vollpuffer/Sorter_Vollpuffer/VP_HS_B_mF.awl create mode 100644 =A01+UH07-KF00/Programmbausteine/Anlage/1_Vollpuffer/Sorter_Vollpuffer/VP_HS_B_oF.awl create mode 100644 =A01+UH07-KF00/Programmbausteine/Anlage/1_Vollpuffer/Sorter_Vollpuffer/VP_Sorter_A.awl create mode 100644 =A01+UH07-KF00/Programmbausteine/Anlage/1_Vollpuffer/Sorter_Vollpuffer/VP_Sorter_B.awl create mode 100644 =A01+UH07-KF00/Programmbausteine/Anlage/1_Vollpuffer/Sorter_Vollpuffer/VP_TravelFIFO_A.awl create mode 100644 =A01+UH07-KF00/Programmbausteine/Anlage/1_Vollpuffer/Sorter_Vollpuffer/VP_TravelFIFO_B.awl create mode 100644 =A01+UH07-KF00/Programmbausteine/Anlage/1_Vollpuffer/Sorter_Vollpuffer/VP_Zaehler_A.awl create mode 100644 =A01+UH07-KF00/Programmbausteine/Anlage/1_Vollpuffer/Sorter_Vollpuffer/VP_Zaehler_B.awl create mode 100644 =A01+UH07-KF00/Programmbausteine/Anlage/1_Vollpuffer/VP_Bereich.awl create mode 100644 =A01+UH07-KF00/Programmbausteine/Anlage/2_VPtoEP/Basics/DVPtoEP_Antriebe.awl create mode 100644 =A01+UH07-KF00/Programmbausteine/Anlage/2_VPtoEP/Basics/DVPtoEP_Sensoren.awl create mode 100644 =A01+UH07-KF00/Programmbausteine/Anlage/2_VPtoEP/Basics/DVPtoEP_Zylinder.awl create mode 100644 =A01+UH07-KF00/Programmbausteine/Anlage/2_VPtoEP/Basics/VPtoEP_Antriebe.awl create mode 100644 =A01+UH07-KF00/Programmbausteine/Anlage/2_VPtoEP/Basics/VPtoEP_Sensoren.awl create mode 100644 =A01+UH07-KF00/Programmbausteine/Anlage/2_VPtoEP/Basics/VPtoEP_Zylinder.awl create mode 100644 =A01+UH07-KF00/Programmbausteine/Anlage/2_VPtoEP/Omnifahren_VPtoEP/DVPtoEP_OmniFahren.awl create mode 100644 =A01+UH07-KF00/Programmbausteine/Anlage/2_VPtoEP/Omnifahren_VPtoEP/VPtoEP_Draussen_FC.awl create mode 100644 =A01+UH07-KF00/Programmbausteine/Anlage/2_VPtoEP/Omnifahren_VPtoEP/VPtoEP_Leser_FC.awl create mode 100644 =A01+UH07-KF00/Programmbausteine/Anlage/2_VPtoEP/Omnifahren_VPtoEP/VPtoEP_OmniFahren.awl create mode 100644 =A01+UH07-KF00/Programmbausteine/Anlage/2_VPtoEP/Omnifahren_VPtoEP/VPtoEP_Ziel_FC.awl create mode 100644 =A01+UH07-KF00/Programmbausteine/Anlage/2_VPtoEP/VPtoEP_Bereich.awl create mode 100644 =A01+UH07-KF00/Programmbausteine/Anlage/3_Entnahmepuffer/Basics/DEP_Sensoren.awl create mode 100644 =A01+UH07-KF00/Programmbausteine/Anlage/3_Entnahmepuffer/Basics/DEP_Zylinder.awl create mode 100644 =A01+UH07-KF00/Programmbausteine/Anlage/3_Entnahmepuffer/Basics/EP_Sensoren.awl create mode 100644 =A01+UH07-KF00/Programmbausteine/Anlage/3_Entnahmepuffer/Basics/EP_Zylinder.awl create mode 100644 =A01+UH07-KF00/Programmbausteine/Anlage/3_Entnahmepuffer/EP_Bereich.awl create mode 100644 =A01+UH07-KF00/Programmbausteine/Anlage/3_Entnahmepuffer/Omnifahren_Entnahmepuffer/DEP_OmniFahren.awl create mode 100644 =A01+UH07-KF00/Programmbausteine/Anlage/3_Entnahmepuffer/Omnifahren_Entnahmepuffer/EP_Draussen_FC.awl create mode 100644 =A01+UH07-KF00/Programmbausteine/Anlage/3_Entnahmepuffer/Omnifahren_Entnahmepuffer/EP_Leser_FC.awl create mode 100644 =A01+UH07-KF00/Programmbausteine/Anlage/3_Entnahmepuffer/Omnifahren_Entnahmepuffer/EP_OmniFahren.awl create mode 100644 =A01+UH07-KF00/Programmbausteine/Anlage/3_Entnahmepuffer/Omnifahren_Entnahmepuffer/EP_Ziel_FC.awl create mode 100644 =A01+UH07-KF00/Programmbausteine/Anlage/3_Entnahmepuffer/PufferAuslagern/DEntnahmePufferStrecken.awl create mode 100644 =A01+UH07-KF00/Programmbausteine/Anlage/3_Entnahmepuffer/PufferAuslagern/EntnahmePufferStrecken.awl create mode 100644 =A01+UH07-KF00/Programmbausteine/Anlage/3_Entnahmepuffer/Sorter_Entnahmepuffer/DEP_Sorter.awl create mode 100644 =A01+UH07-KF00/Programmbausteine/Anlage/3_Entnahmepuffer/Sorter_Entnahmepuffer/EP_DLSeps_Sorter.awl create mode 100644 =A01+UH07-KF00/Programmbausteine/Anlage/3_Entnahmepuffer/Sorter_Entnahmepuffer/EP_DLWeichen_Sorter.awl create mode 100644 =A01+UH07-KF00/Programmbausteine/Anlage/3_Entnahmepuffer/Sorter_Entnahmepuffer/EP_HS_mF.awl create mode 100644 =A01+UH07-KF00/Programmbausteine/Anlage/3_Entnahmepuffer/Sorter_Entnahmepuffer/EP_HS_oF.awl create mode 100644 =A01+UH07-KF00/Programmbausteine/Anlage/3_Entnahmepuffer/Sorter_Entnahmepuffer/EP_Sorter.awl create mode 100644 =A01+UH07-KF00/Programmbausteine/Anlage/3_Entnahmepuffer/Sorter_Entnahmepuffer/EP_TravelFIFO.awl create mode 100644 =A01+UH07-KF00/Programmbausteine/Anlage/3_Entnahmepuffer/Sorter_Entnahmepuffer/EP_Zaehler.awl create mode 100644 =A01+UH07-KF00/Programmbausteine/Anlage/4_EPtoLP/Basics/DEPtoLP_Antriebe.awl create mode 100644 =A01+UH07-KF00/Programmbausteine/Anlage/4_EPtoLP/Basics/DEPtoLP_Sensoren.awl create mode 100644 =A01+UH07-KF00/Programmbausteine/Anlage/4_EPtoLP/Basics/DEPtoLP_Zylinder.awl create mode 100644 =A01+UH07-KF00/Programmbausteine/Anlage/4_EPtoLP/Basics/EPtoLP_Antriebe.awl create mode 100644 =A01+UH07-KF00/Programmbausteine/Anlage/4_EPtoLP/Basics/EPtoLP_Sensoren.awl create mode 100644 =A01+UH07-KF00/Programmbausteine/Anlage/4_EPtoLP/Basics/EPtoLP_Zylinder.awl create mode 100644 =A01+UH07-KF00/Programmbausteine/Anlage/4_EPtoLP/EPtoLP_Bereich.awl create mode 100644 =A01+UH07-KF00/Programmbausteine/Anlage/4_EPtoLP/Omnifahren_EPtoLP/DEPtoLP_OmniFahren.awl create mode 100644 =A01+UH07-KF00/Programmbausteine/Anlage/4_EPtoLP/Omnifahren_EPtoLP/EPtoLP_Draussen.awl create mode 100644 =A01+UH07-KF00/Programmbausteine/Anlage/4_EPtoLP/Omnifahren_EPtoLP/EPtoLP_OmniFahren.awl create mode 100644 =A01+UH07-KF00/Programmbausteine/Anlage/4_EPtoLP/Omnifahren_EPtoLP/EPtoLP_Ziel_FC.awl create mode 100644 =A01+UH07-KF00/Programmbausteine/Anlage/5_Leerpuffer/Basics/DLP_Sensoren.awl create mode 100644 =A01+UH07-KF00/Programmbausteine/Anlage/5_Leerpuffer/Basics/DLP_Zylinder.awl create mode 100644 =A01+UH07-KF00/Programmbausteine/Anlage/5_Leerpuffer/Basics/LP_Sensoren.awl create mode 100644 =A01+UH07-KF00/Programmbausteine/Anlage/5_Leerpuffer/Basics/LP_Zylinder.awl create mode 100644 =A01+UH07-KF00/Programmbausteine/Anlage/5_Leerpuffer/LP_Bereich.awl create mode 100644 =A01+UH07-KF00/Programmbausteine/Anlage/5_Leerpuffer/Omnifahren_Leerpuffer/DLP_OmniFahren.awl create mode 100644 =A01+UH07-KF00/Programmbausteine/Anlage/5_Leerpuffer/Omnifahren_Leerpuffer/LP_Draussen_FC.awl create mode 100644 =A01+UH07-KF00/Programmbausteine/Anlage/5_Leerpuffer/Omnifahren_Leerpuffer/LP_OmniFahren.awl create mode 100644 =A01+UH07-KF00/Programmbausteine/Anlage/5_Leerpuffer/Omnifahren_Leerpuffer/LP_Ziel_FC.awl create mode 100644 =A01+UH07-KF00/Programmbausteine/Anlage/5_Leerpuffer/PufferAuslagern/DLP_Auslagern.awl create mode 100644 =A01+UH07-KF00/Programmbausteine/Anlage/5_Leerpuffer/PufferAuslagern/DLeerPufferStrecken.awl create mode 100644 =A01+UH07-KF00/Programmbausteine/Anlage/5_Leerpuffer/PufferAuslagern/LP_Auslagern.awl create mode 100644 =A01+UH07-KF00/Programmbausteine/Anlage/5_Leerpuffer/PufferAuslagern/LeerPufferStrecken.awl create mode 100644 =A01+UH07-KF00/Programmbausteine/Anlage/5_Leerpuffer/Reihenfolge_Leerpuffer/DLLeerPuffer_ausfahren.awl create mode 100644 =A01+UH07-KF00/Programmbausteine/Anlage/5_Leerpuffer/Reihenfolge_Leerpuffer/DLLeerPuffer_einfahren.awl create mode 100644 =A01+UH07-KF00/Programmbausteine/Anlage/5_Leerpuffer/Reihenfolge_Leerpuffer/DLLeerPuffer_leer.awl create mode 100644 =A01+UH07-KF00/Programmbausteine/Anlage/5_Leerpuffer/Sorter_Leerpuffer/DLP_Sorter.awl create mode 100644 =A01+UH07-KF00/Programmbausteine/Anlage/5_Leerpuffer/Sorter_Leerpuffer/LP_DLSeps_Sorter.awl create mode 100644 =A01+UH07-KF00/Programmbausteine/Anlage/5_Leerpuffer/Sorter_Leerpuffer/LP_DLWeichen_Sorter.awl create mode 100644 =A01+UH07-KF00/Programmbausteine/Anlage/5_Leerpuffer/Sorter_Leerpuffer/LP_HS_mF.awl create mode 100644 =A01+UH07-KF00/Programmbausteine/Anlage/5_Leerpuffer/Sorter_Leerpuffer/LP_HS_oF.awl create mode 100644 =A01+UH07-KF00/Programmbausteine/Anlage/5_Leerpuffer/Sorter_Leerpuffer/LP_Sorter.awl create mode 100644 =A01+UH07-KF00/Programmbausteine/Anlage/5_Leerpuffer/Sorter_Leerpuffer/LP_TravelFIFO.awl create mode 100644 =A01+UH07-KF00/Programmbausteine/Anlage/5_Leerpuffer/Sorter_Leerpuffer/LP_Zaehler.awl create mode 100644 =A01+UH07-KF00/Programmbausteine/Anlage/6_LPtoHW/Basics/DLPtoHW_Antriebe.awl create mode 100644 =A01+UH07-KF00/Programmbausteine/Anlage/6_LPtoHW/Basics/DLPtoHW_Sensoren.awl create mode 100644 =A01+UH07-KF00/Programmbausteine/Anlage/6_LPtoHW/Basics/DLPtoHW_Zylinder.awl create mode 100644 =A01+UH07-KF00/Programmbausteine/Anlage/6_LPtoHW/Basics/LPtoHW_Antriebe.awl create mode 100644 =A01+UH07-KF00/Programmbausteine/Anlage/6_LPtoHW/Basics/LPtoHW_Sensoren.awl create mode 100644 =A01+UH07-KF00/Programmbausteine/Anlage/6_LPtoHW/Basics/LPtoHW_Zylinder.awl create mode 100644 =A01+UH07-KF00/Programmbausteine/Anlage/6_LPtoHW/LPtoHW_Bereich.awl create mode 100644 =A01+UH07-KF00/Programmbausteine/Anlage/6_LPtoHW/Omnifahren_LPtoHW/DLPtoHW_OmniFahren.awl create mode 100644 =A01+UH07-KF00/Programmbausteine/Anlage/6_LPtoHW/Omnifahren_LPtoHW/LPtoHW_Draussen_FC.awl create mode 100644 =A01+UH07-KF00/Programmbausteine/Anlage/6_LPtoHW/Omnifahren_LPtoHW/LPtoHW_Leser_FC.awl create mode 100644 =A01+UH07-KF00/Programmbausteine/Anlage/6_LPtoHW/Omnifahren_LPtoHW/LPtoHW_OmniFahren.awl create mode 100644 =A01+UH07-KF00/Programmbausteine/Anlage/6_LPtoHW/Omnifahren_LPtoHW/LPtoHW_Ziel_FC.awl create mode 100644 =A01+UH07-KF00/Programmbausteine/Anlage/DOutbound_Bereich.awl create mode 100644 =A01+UH07-KF00/Programmbausteine/Anlage/DSchnittstelle_zu_AMR.awl create mode 100644 =A01+UH07-KF00/Programmbausteine/Anlage/DSchnittstelle_zu_Safety.awl create mode 100644 =A01+UH07-KF00/Programmbausteine/Anlage/OutBound_Bereich.awl create mode 100644 =A01+UH07-KF00/Programmbausteine/Barcode-Reader/FB_BarcodeReader_DB.awl create mode 100644 =A01+UH07-KF00/Programmbausteine/Datenlisten/DLCognexLeser.awl create mode 100644 =A01+UH07-KF00/Programmbausteine/Datenlisten/DLOmniPuffer.awl create mode 100644 =A01+UH07-KF00/Programmbausteine/Datenlisten/DLOmniSchleuse.awl create mode 100644 =A01+UH07-KF00/Programmbausteine/Datenlisten/DLOmniWeichen.awl create mode 100644 =A01+UH07-KF00/Programmbausteine/Datenlisten/LagerDL_OutDaten.awl create mode 100644 =A01+UH07-KF00/Programmbausteine/IBN.awl create mode 100644 =A01+UH07-KF00/Programmbausteine/Logistik/DLTrolleys.awl create mode 100644 =A01+UH07-KF00/Programmbausteine/Logistik/IndexDB1000.awl create mode 100644 =A01+UH07-KF00/Programmbausteine/Logistik/Leerpuffer to Raus-Lager ermitteln.awl create mode 100644 =A01+UH07-KF00/Programmbausteine/Logistik/Leerpuffer to Rein-Lager ermitteln.awl create mode 100644 =A01+UH07-KF00/Programmbausteine/Logistik/PufferZeiger_ermitteln.awl create mode 100644 =A01+UH07-KF00/Programmbausteine/Logistik/Reservierung_in_Puffer_eintragen.awl create mode 100644 =A01+UH07-KF00/Programmbausteine/Logistik/SchleusenZeiger_ermitteln.awl create mode 100644 =A01+UH07-KF00/Programmbausteine/Logistik/ShopGroup to Raus-Lager ermitteln.awl create mode 100644 =A01+UH07-KF00/Programmbausteine/Logistik/ShopGroup to Rein-Lager ermitteln.awl create mode 100644 =A01+UH07-KF00/Programmbausteine/Logistik/Simulation_Aus_VP_Trolley_starten.awl create mode 100644 =A01+UH07-KF00/Programmbausteine/Logistik/TrolleyDL_INDaten.awl create mode 100644 =A01+UH07-KF00/Programmbausteine/Logistik/TrolleyDL_OutDaten.awl create mode 100644 =A01+UH07-KF00/Programmbausteine/Logistik/TrolleyDL_SearchDaten.awl create mode 100644 =A01+UH07-KF00/Programmbausteine/Logistik/Trolley_DL_Check_ID.awl create mode 100644 =A01+UH07-KF00/Programmbausteine/Logistik/Trolley_DL_Neue_Pos.awl create mode 100644 =A01+UH07-KF00/Programmbausteine/Logistik/Trolleydaten_löschen.awl create mode 100644 =A01+UH07-KF00/Programmbausteine/Logistik/Trolleydaten_neu_anlegen.awl create mode 100644 =A01+UH07-KF00/Programmbausteine/Logistik/Trolleydaten_ändern.awl create mode 100644 =A01+UH07-KF00/Programmbausteine/Logistik/Wandel_FC_für_DB1000.awl create mode 100644 =A01+UH07-KF00/Programmbausteine/Module/BCD (4stellig)_to_INT.awl create mode 100644 =A01+UH07-KF00/Programmbausteine/Module/DBMOV.awl create mode 100644 =A01+UH07-KF00/Programmbausteine/Module/DL_Einsprung.awl create mode 100644 =A01+UH07-KF00/Programmbausteine/Module/DatenFindOffsetSort.awl create mode 100644 =A01+UH07-KF00/Programmbausteine/Module/DatenIn.awl create mode 100644 =A01+UH07-KF00/Programmbausteine/Module/DatenInSort.awl create mode 100644 =A01+UH07-KF00/Programmbausteine/Module/DatenOut.awl create mode 100644 =A01+UH07-KF00/Programmbausteine/Module/DatenOutSort.awl create mode 100644 =A01+UH07-KF00/Programmbausteine/Module/DatenReset.awl create mode 100644 =A01+UH07-KF00/Programmbausteine/Module/DatenResetSort.awl create mode 100644 =A01+UH07-KF00/Programmbausteine/Module/Err_vorhanden.awl create mode 100644 =A01+UH07-KF00/Programmbausteine/Module/FIFOChange.awl create mode 100644 =A01+UH07-KF00/Programmbausteine/Module/FIFOSearch.awl create mode 100644 =A01+UH07-KF00/Programmbausteine/Module/FifoIn.awl create mode 100644 =A01+UH07-KF00/Programmbausteine/Module/FifoOut.awl create mode 100644 =A01+UH07-KF00/Programmbausteine/Module/FifoReset.awl create mode 100644 =A01+UH07-KF00/Programmbausteine/Module/INT_to_BCD (4stellig).awl create mode 100644 =A01+UH07-KF00/Programmbausteine/Module/MAntrieb_PowerSave.awl create mode 100644 =A01+UH07-KF00/Programmbausteine/Module/MAntrieb_all.awl create mode 100644 =A01+UH07-KF00/Programmbausteine/Module/MAusfahrFreigabe.awl create mode 100644 =A01+UH07-KF00/Programmbausteine/Module/MAusfahrFreigabe_neu.awl create mode 100644 =A01+UH07-KF00/Programmbausteine/Module/MBlinken.awl create mode 100644 =A01+UH07-KF00/Programmbausteine/Module/MHMEntnahmepuffer.awl create mode 100644 =A01+UH07-KF00/Programmbausteine/Module/MHMLeerpuffer.awl create mode 100644 =A01+UH07-KF00/Programmbausteine/Module/MHMOmniBereich_Plus.awl create mode 100644 =A01+UH07-KF00/Programmbausteine/Module/MHMOmniSchleuse.awl create mode 100644 =A01+UH07-KF00/Programmbausteine/Module/MHMOmniSchleuse_Plus.awl create mode 100644 =A01+UH07-KF00/Programmbausteine/Module/MHMOmniWeiche_Plus.awl create mode 100644 =A01+UH07-KF00/Programmbausteine/Module/MHMVollpuffer.awl create mode 100644 =A01+UH07-KF00/Programmbausteine/Module/MHMÜbergang_ohne_Schleuse.awl create mode 100644 =A01+UH07-KF00/Programmbausteine/Module/MHMÜberlauf_VP.awl create mode 100644 =A01+UH07-KF00/Programmbausteine/Module/MImpulsGeber.awl create mode 100644 =A01+UH07-KF00/Programmbausteine/Module/MSensoren.awl create mode 100644 =A01+UH07-KF00/Programmbausteine/Module/MSepSorterRein.awl create mode 100644 =A01+UH07-KF00/Programmbausteine/Module/MSorter_Uebergabe.awl create mode 100644 =A01+UH07-KF00/Programmbausteine/Module/MStartSync.awl create mode 100644 =A01+UH07-KF00/Programmbausteine/Module/MWeiche_Sorter.awl create mode 100644 =A01+UH07-KF00/Programmbausteine/Module/MWeiche_Sorter_EP.awl create mode 100644 =A01+UH07-KF00/Programmbausteine/Module/MZylinder.awl create mode 100644 =A01+UH07-KF00/Programmbausteine/Module/Save_CARR_Gesendet.awl create mode 100644 =A01+UH07-KF00/Programmbausteine/Module/Save_Ziel.awl create mode 100644 =A01+UH07-KF00/Programmbausteine/Module/Set_Input.awl create mode 100644 =A01+UH07-KF00/Programmbausteine/Module/Set_Output.awl create mode 100644 =A01+UH07-KF00/Programmbausteine/PerformanceTest/FB_PerfTest_7_EP_Ausfahrt.awl create mode 100644 =A01+UH07-KF00/Programmbausteine/PerformanceTest/FB_PerfTest_7_EP_Einfahrt.awl create mode 100644 =A01+UH07-KF00/Programmbausteine/PerformanceTest/FB_PerfTest_7_LP_Einfahrt.awl create mode 100644 =A01+UH07-KF00/Programmbausteine/PerformanceTest/FB_PerfTest_7_LT_Beladung.awl create mode 100644 =A01+UH07-KF00/Programmbausteine/PerformanceTest/FB_PerfTest_7_OB_Einfahrt.awl create mode 100644 =A01+UH07-KF00/Programmbausteine/PerformanceTest/FB_PerfTest_7_VP_Ausfahrt.awl create mode 100644 =A01+UH07-KF00/Programmbausteine/PerformanceTest/FB_PerfTest_7_VP_Rück.awl create mode 100644 =A01+UH07-KF00/Programmbausteine/PerformanceTest/FB_PerfTest_7_VP_Sorter_Sync.awl create mode 100644 =A01+UH07-KF00/Programmbausteine/SCADA/DB_Status.awl create mode 100644 =A01+UH07-KF00/Programmbausteine/SCADA/FB-OPC_UA_System-Stat_DB.awl create mode 100644 =A01+UH07-KF00/Programmbausteine/SS_Host/DDaten_Host_senden.awl create mode 100644 =A01+UH07-KF00/Programmbausteine/SS_Host/DDaten_von_Host_empfangen.awl create mode 100644 =A01+UH07-KF00/Programmbausteine/SS_Host/Daten_Host_senden.awl create mode 100644 =A01+UH07-KF00/Programmbausteine/SS_Host/Daten_für_SendFIFO.awl create mode 100644 =A01+UH07-KF00/Programmbausteine/SS_Host/Daten_in_SendFIFO_speichern.awl create mode 100644 =A01+UH07-KF00/Programmbausteine/SS_Host/Daten_von_Host_empfangen.awl create mode 100644 =A01+UH07-KF00/Programmbausteine/SS_Host/LeerDaten.awl create mode 100644 =A01+UH07-KF00/Programmbausteine/SS_Host/Port1_Daten_empfangen.awl create mode 100644 =A01+UH07-KF00/Programmbausteine/SS_Host/Port1_Daten_senden.awl create mode 100644 =A01+UH07-KF00/Programmbausteine/SS_Host/Port1_EmpfangenFIFO.awl create mode 100644 =A01+UH07-KF00/Programmbausteine/SS_Host/Port1_GesendetFIFO.awl create mode 100644 =A01+UH07-KF00/Programmbausteine/SS_Host/Port1_SendFIFO.awl create mode 100644 =A01+UH07-KF00/Programmbausteine/SS_Host/Port1_Telegramme_auswerten.awl create mode 100644 =A01+UH07-KF00/Programmbausteine/SS_Host/Port2_Daten_empfangen.awl create mode 100644 =A01+UH07-KF00/Programmbausteine/SS_Host/Port2_Daten_senden.awl create mode 100644 =A01+UH07-KF00/Programmbausteine/SS_Host/Port2_EmpfangenFIFO.awl create mode 100644 =A01+UH07-KF00/Programmbausteine/SS_Host/Port2_GesendetFIFO.awl create mode 100644 =A01+UH07-KF00/Programmbausteine/SS_Host/Port2_SendFIFO.awl create mode 100644 =A01+UH07-KF00/Programmbausteine/SS_Host/Port2_Telegramme_auswerten.awl create mode 100644 =A01+UH07-KF00/Programmbausteine/SS_Host/SS_Port1_EmpfangsDaten.awl create mode 100644 =A01+UH07-KF00/Programmbausteine/SS_Host/SS_Port1_SendDaten.awl create mode 100644 =A01+UH07-KF00/Programmbausteine/SS_Host/SS_Port2_EmpfangsDaten.awl create mode 100644 =A01+UH07-KF00/Programmbausteine/SS_Host/SS_Port2_SendDaten.awl create mode 100644 =A01+UH07-KF00/Programmbausteine/SS_Host/Test_EmpfangsDaten.awl create mode 100644 =A01+UH07-KF00/Programmbausteine/Visualisierung/DVisu_CheckTrolley.awl create mode 100644 =A01+UH07-KF00/Programmbausteine/Visualisierung/DVisu_HMLeerPuffer.awl create mode 100644 =A01+UH07-KF00/Programmbausteine/Visualisierung/DVisu_HMOmniBereich_Plus.awl create mode 100644 =A01+UH07-KF00/Programmbausteine/Visualisierung/DVisu_HMOmniSchleuse_Plus.awl create mode 100644 =A01+UH07-KF00/Programmbausteine/Visualisierung/DVisu_HMOmniWeiche_Plus.awl create mode 100644 =A01+UH07-KF00/Programmbausteine/Visualisierung/DVisu_HMOmnischleuse.awl create mode 100644 =A01+UH07-KF00/Programmbausteine/Visualisierung/DVisu_HMVollpuffer.awl create mode 100644 =A01+UH07-KF00/Programmbausteine/Visualisierung/DVisu_Sorter_Rein.awl create mode 100644 =A01+UH07-KF00/Programmbausteine/Visualisierung/DVisu_StartSync.awl create mode 100644 =A01+UH07-KF00/Programmbausteine/Visualisierung/DVisu_Weiche_Sorter.awl create mode 100644 =A01+UH07-KF00/Programmbausteine/Visualisierung/Visu_CheckTrolley.awl create mode 100644 =A01+UH07-KF00/Programmbausteine/Visualisierung/Visu_HMLeerPuffer.awl create mode 100644 =A01+UH07-KF00/Programmbausteine/Visualisierung/Visu_HMOmniBereich_Plus.awl create mode 100644 =A01+UH07-KF00/Programmbausteine/Visualisierung/Visu_HMOmniSchleuse.awl create mode 100644 =A01+UH07-KF00/Programmbausteine/Visualisierung/Visu_HMOmniSchleuse_Plus.awl create mode 100644 =A01+UH07-KF00/Programmbausteine/Visualisierung/Visu_HMOmniWeiche_Plus.awl create mode 100644 =A01+UH07-KF00/Programmbausteine/Visualisierung/Visu_HMVollPuffer.awl create mode 100644 =A01+UH07-KF00/Programmbausteine/Visualisierung/Visu_Sorter_Rein.awl create mode 100644 =A01+UH07-KF00/Programmbausteine/Visualisierung/Visu_StartSync_Visu.awl create mode 100644 =A01+UH07-KF00/Programmbausteine/Visualisierung/Visu_Weiche_Sorter.awl create mode 100644 =A01+UH07-KF00/Programmbausteine/_All/7_HMI_Err_UH07_OB.awl create mode 100644 =A01+UH07-KF00/Programmbausteine/_All/7_HMI_Err_UH07_OB_Ori.awl create mode 100644 =A01+UH07-KF00/Programmbausteine/_All/CYC_INT8_(10ms).awl create mode 100644 =A01+UH07-KF00/Programmbausteine/_All/Cycle Execution.awl create mode 100644 =A01+UH07-KF00/Programmbausteine/_All/LTest.awl create mode 100644 =A01+UH07-KF00/Programmbausteine/_All/SGes.awl create mode 100644 =A01+UH07-KF00/Programmbausteine/_All/Startup.awl create mode 100644 =A01+UH07-KF00/Programmbausteine/xBaseSystemLib/DB_Test.awl create mode 100644 =A01+UH07-KF00/Programmbausteine/xBaseSystemLib/GDBs/100_Common/DB_AlarmGlobal.awl create mode 100644 =A01+UH07-KF00/Programmbausteine/xBaseSystemLib/GDBs/100_Common/DB_MachineGlobal.awl create mode 100644 =A01+UH07-KF00/Programmbausteine/xBaseSystemLib/GDBs/dbDataLogBuffer.awl create mode 100644 =A01+UH07-KF00/Programmbausteine/xCommunication/DB_Buffer_CommunicationWCSBL.awl create mode 100644 =A01+UH07-KF00/Programmbausteine/xCommunication/DB_Buffer_CommunicationWES_ASRS.awl create mode 100644 =A01+UH07-KF00/Programmbausteine/xCommunication/DB_CommunicationParameters.awl create mode 100644 =A01+UH07-KF00/Programmbausteine/xCommunication/DB_LGF_FIFO_CommWCSBL.awl create mode 100644 =A01+UH07-KF00/Programmbausteine/xCommunication/DB_LGF_FIFO_CommWES_ASRS.awl create mode 100644 =A01+UH07-KF00/Programmbausteine/xCommunication/FB_CommunicationWCSBL_DB.awl create mode 100644 =A01+UH07-KF00/Programmbausteine/xCommunication/FB_CommunicationWES_ASRS_DB.awl create mode 100644 =A01+UH07-KF00/Programmbausteine/xCommunication/TCP-Logger/DB_Buffer_CommunicationLogger.awl create mode 100644 =A01+UH07-KF00/Programmbausteine/xCommunication/TCP-Logger/DB_CommunciationParametersLogger.awl create mode 100644 =A01+UH07-KF00/Programmbausteine/xCommunication/TCP-Logger/DB_LGF_FIFO_CommLogger.awl create mode 100644 =A01+UH07-KF00/Programmbausteine/xCommunication/TCP-Logger/FB_CommunicationLogger_DB.awl diff --git a/=A01+UH06-KF00/Programmbausteine/Anlage/0HWtoAMR/BasicsHWtoAMR/DHWtoAMR_Antriebe.awl b/=A01+UH06-KF00/Programmbausteine/Anlage/0HWtoAMR/BasicsHWtoAMR/DHWtoAMR_Antriebe.awl new file mode 100644 index 0000000..a355c31 --- /dev/null +++ b/=A01+UH06-KF00/Programmbausteine/Anlage/0HWtoAMR/BasicsHWtoAMR/DHWtoAMR_Antriebe.awl @@ -0,0 +1,12 @@ +=== InstanceDB 199: DHWtoAMR_Antriebe [DB] === +INTERFACE: + Input: + Output: + InOut: + Static: + MA0203 : "MAntrieb_PowerSave" + MA0204 : "MAntrieb_PowerSave" + MA0205 : "MAntrieb_PowerSave" + MA0130 : "MAntrieb_PowerSave" + MA0131 : "MAntrieb_PowerSave" + MA0116 : "MAntrieb_PowerSave" diff --git a/=A01+UH06-KF00/Programmbausteine/Anlage/0HWtoAMR/BasicsHWtoAMR/DHWtoAMR_Sensoren.awl b/=A01+UH06-KF00/Programmbausteine/Anlage/0HWtoAMR/BasicsHWtoAMR/DHWtoAMR_Sensoren.awl new file mode 100644 index 0000000..dbe47fa --- /dev/null +++ b/=A01+UH06-KF00/Programmbausteine/Anlage/0HWtoAMR/BasicsHWtoAMR/DHWtoAMR_Sensoren.awl @@ -0,0 +1,18 @@ +=== InstanceDB 190: DHWtoAMR_Sensoren [DB] === +INTERFACE: + Input: + Output: + InOut: + Static: + An_BG3065 : "MSensoren" + Stau_BG3062 : "MSensoren" + Stau_BG3006 : "MSensoren" + Stau_BG3017 : "MSensoren" + Stau_BG3002 : "MSensoren" + Stau_BG3001 : "MSensoren" + Stau_BG3561 : "MSensoren" + Stau_BG3557 : "MSensoren" + Stau_BG3563 : "MSensoren" + Stau_BG3564 : "MSensoren" + Stau_BG3566 : "MSensoren" + Stau_BG3567 : "MSensoren" diff --git a/=A01+UH06-KF00/Programmbausteine/Anlage/0HWtoAMR/BasicsHWtoAMR/DHWtoAMR_Zylinder.awl b/=A01+UH06-KF00/Programmbausteine/Anlage/0HWtoAMR/BasicsHWtoAMR/DHWtoAMR_Zylinder.awl new file mode 100644 index 0000000..d799b81 --- /dev/null +++ b/=A01+UH06-KF00/Programmbausteine/Anlage/0HWtoAMR/BasicsHWtoAMR/DHWtoAMR_Zylinder.awl @@ -0,0 +1,12 @@ +=== InstanceDB 192: DHWtoAMR_Zylinder [DB] === +INTERFACE: + Input: + Output: + InOut: + Static: + Schleuse_3061 : "MZylinder" + Schleuse_3005 : "MZylinder" + Schleuse_3004 : "MZylinder" + Schleuse_3000 : "MZylinder" + Schleuse_3562 : "MZylinder" + Schleuse_3565 : "MZylinder" diff --git a/=A01+UH06-KF00/Programmbausteine/Anlage/0HWtoAMR/BasicsHWtoAMR/HWtoAMR_Antriebe.awl b/=A01+UH06-KF00/Programmbausteine/Anlage/0HWtoAMR/BasicsHWtoAMR/HWtoAMR_Antriebe.awl new file mode 100644 index 0000000..169b0e0 --- /dev/null +++ b/=A01+UH06-KF00/Programmbausteine/Anlage/0HWtoAMR/BasicsHWtoAMR/HWtoAMR_Antriebe.awl @@ -0,0 +1,113 @@ +=== FB 199: HWtoAMR_Antriebe [STL] === +INTERFACE: + Input: + Output: + InOut: + Static: + MA0203 : "MAntrieb_PowerSave" + MA0204 : "MAntrieb_PowerSave" + MA0205 : "MAntrieb_PowerSave" + MA0130 : "MAntrieb_PowerSave" + MA0131 : "MAntrieb_PowerSave" + MA0116 : "MAntrieb_PowerSave" + Temp: + Auto : Bool // Automatik Linie ist aktiv + Hand : Bool // Hand Linie ist aktiv + BereichErr : Bool // Bereichsstörung -> Antrieb stoppen + QKontroll : Bool // Frequenzumrichter schon 3s Netz EIN + FuKontroll : Bool // Frequenzumrichter schon 3s Netz EIN + Quit : Bool // Motorschutz-Störung quittieren + Qok : Bool // Motorschutz ok + Jog1 : Bool // Geschwindigkeit 1 + Jog2 : Bool // Geschwindigkeit 2 + Betrieb : Bool // Betriebsart aktiv + FC105_RET : Word // Returnwert von FC105 + Antrieb1 : Bool // Antrieb dazuschalten + Antrieb2 : Bool // Antrieb dazuschalten + F1 : Bool // Geschwindigkeit 1 aktiviert + F2 : Bool // Geschwindigkeit 2 aktiviert + F3 : Bool // Geschwindigkeit 3 aktiviert + Constant: + +--- NW 1: Übergabe des Bereichstatus System UC061/A01 --- + A "DAMR_Bereich".A01_UH06.Automatik + AN "DAMR_Bereich".A01_UH06.Handbetrieb + = Auto + + CLR + = Hand + + A "DAMR_Bereich".A01_UC061.BereichErr + O "DAMR_Bereich".A01_UZ6102.Area_Stop + O "DAMR_Bereich".A01_UZ6103.Area_Stop + O "DAMR_Bereich".A01_UZ6104.Area_Stop + = BereichErr + + AN BereichErr + L S5T#1S + OnDelay "T192" + + A "T192" + = QKontroll + = FuKontroll + + A "DAMR_Bereich".A01_UC061.StOk_aktiv + = Quit + + +--- NW 2: MA0203 --- +CALL FB "None" , (Automatik:=Auto, Handbetrieb:=Hand, BereichErr:=BereichErr, Q:="FC0203", Ptc:=TRUE, Fu:=?, QKontroll:=QKontroll, FuKontroll:=?, ErrQuit:=Quit, Kontroll_B:=?, T_Nachlauf:=120, Antriebrueck:=?, Antriebvor:="MA0203", Jog1:=?, Jog2:=?, Analog:=?, QErr:="6_HMI_Err_UH06_AMR".QErr.MA0203, PtcErr:=?, FuErr:=?, Err_Antrieb_verklemmt:=?) + + + +--- NW 3: MA0204 --- +CALL FB "None" , (Automatik:=Auto, Handbetrieb:=Hand, BereichErr:=BereichErr, Q:="FC0204", Ptc:=TRUE, Fu:=?, QKontroll:=QKontroll, FuKontroll:=?, ErrQuit:=Quit, Kontroll_B:=?, T_Nachlauf:=180, Antriebrueck:=?, Antriebvor:="MA0204", Jog1:=?, Jog2:=?, Analog:=?, QErr:="6_HMI_Err_UH06_AMR".QErr.MA0204, PtcErr:=?, FuErr:=?, Err_Antrieb_verklemmt:=?) + + + +--- NW 4: MA0205 --- +CALL FB "None" , (Automatik:=Auto, Handbetrieb:=Hand, BereichErr:=BereichErr, Q:="FC0205", Ptc:=TRUE, Fu:=?, QKontroll:=QKontroll, FuKontroll:=?, ErrQuit:=Quit, Kontroll_B:=?, T_Nachlauf:=?, Antriebrueck:=?, Antriebvor:="MA0205", Jog1:=?, Jog2:=?, Analog:=?, QErr:="6_HMI_Err_UH06_AMR".QErr.MA0205, PtcErr:=?, FuErr:=?, Err_Antrieb_verklemmt:=?) + + + +--- NW 5: Übergabe des Bereichstatus System UH06_Halle 4/A01 --- + A "DAMR_Bereich".A01_UH06.Automatik + AN "DAMR_Bereich".A01_UH06.Handbetrieb + = Auto + + CLR + = Hand + + A "DAMR_Bereich".A01_UH06_Halle4.BereichErr + = BereichErr + + AN BereichErr + L S5T#1S + OnDelay "T191" + + A "T191" + = QKontroll + = FuKontroll + + A "DAMR_Bereich".A01_UH06.StOk_aktiv + = Quit + + +--- NW 6: MA0130 --- +CALL FB "None" , (Automatik:=Auto, Handbetrieb:=Hand, BereichErr:=BereichErr, Q:="FC0130", Ptc:=TRUE, Fu:=?, QKontroll:=QKontroll, FuKontroll:=?, ErrQuit:=Quit, Kontroll_B:=?, T_Nachlauf:=?, Antriebrueck:=?, Antriebvor:="MA0130", Jog1:=?, Jog2:=?, Analog:=?, QErr:="6_HMI_Err_UH06_AMR".QErr.MA0130, PtcErr:=?, FuErr:=?, Err_Antrieb_verklemmt:=?) + + + +--- NW 7: MA0131 --- +CALL FB "None" , (Automatik:=Auto, Handbetrieb:=Hand, BereichErr:=BereichErr, Q:="FC0131", Ptc:=TRUE, Fu:=?, QKontroll:=QKontroll, FuKontroll:=?, ErrQuit:=Quit, Kontroll_B:=?, T_Nachlauf:=?, Antriebrueck:=?, Antriebvor:="MA0131", Jog1:=?, Jog2:=?, Analog:=?, QErr:="6_HMI_Err_UH06_AMR".QErr.MA0131, PtcErr:=?, FuErr:=?, Err_Antrieb_verklemmt:=?) + + + +--- NW 8: MA0116 --- +CALL FB "None" , (Automatik:=Auto, Handbetrieb:=Hand, BereichErr:=BereichErr, Q:="FC0116", Ptc:=TRUE, Fu:=?, QKontroll:=QKontroll, FuKontroll:=?, ErrQuit:=Quit, Kontroll_B:=?, T_Nachlauf:=?, Antriebrueck:=?, Antriebvor:="MA0116", Jog1:=?, Jog2:=?, Analog:=?, QErr:="6_HMI_Err_UH06_AMR".QErr.MA0116, PtcErr:=?, FuErr:=?, Err_Antrieb_verklemmt:=?) + + + +--- NW 9: Ende --- + BE + diff --git a/=A01+UH06-KF00/Programmbausteine/Anlage/0HWtoAMR/BasicsHWtoAMR/HWtoAMR_Sensoren.awl b/=A01+UH06-KF00/Programmbausteine/Anlage/0HWtoAMR/BasicsHWtoAMR/HWtoAMR_Sensoren.awl new file mode 100644 index 0000000..285ae59 --- /dev/null +++ b/=A01+UH06-KF00/Programmbausteine/Anlage/0HWtoAMR/BasicsHWtoAMR/HWtoAMR_Sensoren.awl @@ -0,0 +1,82 @@ +=== FB 190: HWtoAMR_Sensoren [STL] === +INTERFACE: + Input: + Output: + InOut: + Static: + An_BG3065 : "MSensoren" // Stau am Sensor Einfahrt MA0203 + Stau_BG3062 : "MSensoren" // Stau am Sensor Einfahrt MA0204 + Stau_BG3006 : "MSensoren" // Stau am Sensor Einfahrt MA0205 + Stau_BG3017 : "MSensoren" // Stau am Sensor Mitte MA0205 + Stau_BG3002 : "MSensoren" // Stau hinter BST 3 + Stau_BG3001 : "MSensoren" // Stau hinter BST 3 + Stau_BG3561 : "MSensoren" // Stau am Sensor Einfahrt MA0060 + Stau_BG3557 : "MSensoren" // Stau am Sensor Einfahrt MA0060 + Stau_BG3563 : "MSensoren" // Stau am Sensor Einfahrt MA0116 + Stau_BG3564 : "MSensoren" // Stau am Sensor Gefälle vor BST 4 + Stau_BG3566 : "MSensoren" // Stau am Sensor Gefälle nach BST 4 + Stau_BG3567 : "MSensoren" // Stau am Sensor Einfahrt MA0061 + Temp: + T_Ein : Int // Vorgabe Einschaltverzögerung + T_Aus : Int // Zwischenspeicher Ausschaltverzögerung + F1 : Bool // Geschwindigkeit 1 aktiviert + F2 : Bool // Geschwindigkeit 2 aktiviert + F3 : Bool // Geschwindigkeit 3 aktiviert + ESensor : Bool // Sensoren + Antrieb : Bool + VReal : Real // GeschwindigkeitinReal + Zeit : Int // Zeit für Ausschaltverzögerung LT1100 + Aktiv : Bool // Zeit aktivieren + Constant: + +--- NW 1: Sensoren entprellen --- +CALL FB "None" , (ESensor:="BG3065", T_Ein:=1, T_Aus:=11, tein_aktiv:=TRUE, taus_aktiv:=TRUE) + + +--- NW 2: Sensoren entprellen --- +CALL FB "None" , (ESensor:="BG3062", T_Ein:=1, T_Aus:=11, tein_aktiv:=TRUE, taus_aktiv:=TRUE) + + +--- NW 3: Sensoren entprellen --- +CALL FB "None" , (ESensor:="BG3006", T_Ein:=1, T_Aus:=11, tein_aktiv:=TRUE, taus_aktiv:=TRUE) + + +--- NW 4: Sensoren entprellen --- +CALL FB "None" , (ESensor:="BG3017", T_Ein:=1, T_Aus:=11, tein_aktiv:=TRUE, taus_aktiv:=TRUE) + + +--- NW 5: Sensoren entprellen --- +CALL FB "None" , (ESensor:="BG3002", T_Ein:=1, T_Aus:=11, tein_aktiv:=TRUE, taus_aktiv:=TRUE) + + +--- NW 6: Sensoren entprellen --- +CALL FB "None" , (ESensor:="BG3001", T_Ein:=1, T_Aus:=11, tein_aktiv:=TRUE, taus_aktiv:=TRUE) + + +--- NW 7: Sensoren entprellen --- +CALL FB "None" , (ESensor:="BG3561", T_Ein:=1, T_Aus:=11, tein_aktiv:=TRUE, taus_aktiv:=TRUE) + + +--- NW 8: Sensoren entprellen --- +CALL FB "None" , (ESensor:="BG3561", T_Ein:=80, T_Aus:=11, tein_aktiv:=TRUE, taus_aktiv:=TRUE) + + +--- NW 9: Sensoren entprellen --- +CALL FB "None" , (ESensor:="BG3563", T_Ein:=1, T_Aus:=11, tein_aktiv:=TRUE, taus_aktiv:=TRUE) + + +--- NW 10: Sensoren entprellen --- +CALL FB "None" , (ESensor:="BG3564", T_Ein:=1, T_Aus:=11, tein_aktiv:=TRUE, taus_aktiv:=TRUE) + + +--- NW 11: Sensoren entprellen --- +CALL FB "None" , (ESensor:="BG3566", T_Ein:=1, T_Aus:=11, tein_aktiv:=TRUE, taus_aktiv:=TRUE) + + +--- NW 12: Sensoren entprellen --- +CALL FB "None" , (ESensor:="BG3567", T_Ein:=1, T_Aus:=11, tein_aktiv:=TRUE, taus_aktiv:=TRUE) + + +--- NW 13: Ende --- + BE + diff --git a/=A01+UH06-KF00/Programmbausteine/Anlage/0HWtoAMR/BasicsHWtoAMR/HWtoAMR_Zylinder.awl b/=A01+UH06-KF00/Programmbausteine/Anlage/0HWtoAMR/BasicsHWtoAMR/HWtoAMR_Zylinder.awl new file mode 100644 index 0000000..fb5386e --- /dev/null +++ b/=A01+UH06-KF00/Programmbausteine/Anlage/0HWtoAMR/BasicsHWtoAMR/HWtoAMR_Zylinder.awl @@ -0,0 +1,66 @@ +=== FB 192: HWtoAMR_Zylinder [STL] === +INTERFACE: + Input: + Output: + InOut: + Static: + Schleuse_3061 : "MZylinder" // + Schleuse_3005 : "MZylinder" + Schleuse_3004 : "MZylinder" + Schleuse_3000 : "MZylinder" + Schleuse_3562 : "MZylinder" + Schleuse_3565 : "MZylinder" // + Temp: + Auto : Bool // Automatik ist aktiv + Hand : Bool // Hand ist aktiv + ZylAst : Bool // Zylinder ansteuern + Constant: + +--- NW 1: Übergabe des Bereichstatus System UC061/A01 --- + A "DAMR_Bereich".A01_UH06.Automatik + AN "DAMR_Bereich".A01_UH06.Handbetrieb + = Auto + + A "DAMR_Bereich".A01_UC061.BereichErr + O "DAMR_Bereich".A01_UZ6102.Area_Stop + O "DAMR_Bereich".A01_UZ6103.Area_Stop + O "DAMR_Bereich".A01_UZ6104.Area_Stop + JC Next // Zylinder-Stellung nicht mehr ändern + + +--- NW 2: Schleuse_3061 --- +CALL FB "None" , (Automatik:=Auto, Handbetrieb:=FALSE, T_Ast:=0, T_Gst:=5, ZylAst:="MB3061", ZylGst:=?) + + +--- NW 3: Schleuse_3005 --- +CALL FB "None" , (Automatik:=Auto, Handbetrieb:=FALSE, T_Ast:=0, T_Gst:=5, ZylAst:="MB3005", ZylGst:=?) + + +--- NW 4: Schleuse_3004 --- +CALL FB "None" , (Automatik:=Auto, Handbetrieb:=FALSE, T_Ast:=0, T_Gst:=5, ZylAst:="MB3004", ZylGst:=?) + + +--- NW 5: Übergabe des Bereichstatus System UH06 / A01 --- +Next: A "DAMR_Bereich".A01_UH06.Automatik + AN "DAMR_Bereich".A01_UH06.Handbetrieb + = Auto + + A "DAMR_Bereich".A01_UH06_Halle4.BereichErr + JC Next2 // Zylinder-Stellung nicht mehr ändern + + +--- NW 6: Schleuse_3000 --- +CALL FB "None" , (Automatik:=Auto, Handbetrieb:=FALSE, T_Ast:=0, T_Gst:=5, ZylAst:="MB3000", ZylGst:=?) + + +--- NW 7: Schleuse_3562 --- +CALL FB "None" , (Automatik:=Auto, Handbetrieb:=FALSE, T_Ast:=0, T_Gst:=5, ZylAst:="MB3562", ZylGst:=?) + + +--- NW 8: Schleuse_3565 --- +CALL FB "None" , (Automatik:=Auto, Handbetrieb:=FALSE, T_Ast:=0, T_Gst:=5, ZylAst:="MB3565", ZylGst:=?) + + +--- NW 9: Ende --- +Next2: BE + diff --git a/=A01+UH06-KF00/Programmbausteine/Anlage/0HWtoAMR/HWTtoAMR_Bereich.awl b/=A01+UH06-KF00/Programmbausteine/Anlage/0HWtoAMR/HWTtoAMR_Bereich.awl new file mode 100644 index 0000000..0230bf0 --- /dev/null +++ b/=A01+UH06-KF00/Programmbausteine/Anlage/0HWtoAMR/HWTtoAMR_Bereich.awl @@ -0,0 +1,23 @@ +=== FC 100: HWTtoAMR_Bereich [STL] === +INTERFACE: + Input: + Output: + InOut: + Temp: + Constant: + Return: + Ret_Val : Void + +--- NW 1: Baustein-Aufrufe --- +CALL FB "HWtoAMR_Sensoren" , + +CALL FB "HWtoAMROmniFahren" , + +CALL FB "HWtoAMR_Zylinder" , + +CALL FB "HWtoAMR_Antriebe" , + + +--- NW 2: Ende --- + BE + diff --git a/=A01+UH06-KF00/Programmbausteine/Anlage/0HWtoAMR/OmnifahrenHWtoAMR/DHWtoAMROmniFahren.awl b/=A01+UH06-KF00/Programmbausteine/Anlage/0HWtoAMR/OmnifahrenHWtoAMR/DHWtoAMROmniFahren.awl new file mode 100644 index 0000000..9da6acd --- /dev/null +++ b/=A01+UH06-KF00/Programmbausteine/Anlage/0HWtoAMR/OmnifahrenHWtoAMR/DHWtoAMROmniFahren.awl @@ -0,0 +1,16 @@ +=== InstanceDB 128: DHWtoAMROmniFahren [DB] === +INTERFACE: + Input: + Output: + InOut: + Static: + Frei200 : Array[1..100] of Int + Schleuse_3061 : "MHMOmniSchleuse_Plus" + Schleuse_3005 : "MHMOmniSchleuse" + Schleuse_3004 : "MHMOmniSchleuse" + Schleuse_3000 : "MHMOmniSchleuse" + Bereich_3555 : "MHMOmniBereich_Plus" + Schleuse_3562 : "MHMOmniSchleuse" + Bereich_3556 : "MHMOmniBereich_Plus" + Schleuse_3565 : "MHMOmniSchleuse" + Übergang_3063 : "MHMÜbergang_ohne_Schleuse_AMR" diff --git a/=A01+UH06-KF00/Programmbausteine/Anlage/0HWtoAMR/OmnifahrenHWtoAMR/HWtoAMROmniFahren.awl b/=A01+UH06-KF00/Programmbausteine/Anlage/0HWtoAMR/OmnifahrenHWtoAMR/HWtoAMROmniFahren.awl new file mode 100644 index 0000000..415eeef --- /dev/null +++ b/=A01+UH06-KF00/Programmbausteine/Anlage/0HWtoAMR/OmnifahrenHWtoAMR/HWtoAMROmniFahren.awl @@ -0,0 +1,214 @@ +=== FB 128: HWtoAMROmniFahren [STL] === +INTERFACE: + Input: + Output: + InOut: + Static: + Frei200 : Array[1..100] of Int + Schleuse_3061 : "MHMOmniSchleuse_Plus" + Schleuse_3005 : "MHMOmniSchleuse" + Schleuse_3004 : "MHMOmniSchleuse" + Schleuse_3000 : "MHMOmniSchleuse" + Bereich_3555 : "MHMOmniBereich_Plus" + Schleuse_3562 : "MHMOmniSchleuse" + Bereich_3556 : "MHMOmniBereich_Plus" + Schleuse_3565 : "MHMOmniSchleuse" + Übergang_3063 : "MHMÜbergang_ohne_Schleuse_AMR" + Temp: + ErrQuit : Bool + ErrAnz : Bool + Stau_raus : Bool + Start_ok : Bool + B_aktiv : Bool + B_vor_Schleuse : Bool + B_nach_Schleuse : Bool + Antrieb_aktiv : Bool + Antrieb_start : Bool + Antrieb_stop : Bool + Fahren_Ok : Bool + Antrieb_nicht_stoppen : Bool + Constant: + +--- NW 1: Systemzeug --- +// HW>AMR-Bereich: + A "DAMR_Bereich".A01_UH06.AnlageEin + = Schleuse_3061.Dyn.Sk.Auto_akt + = Schleuse_3005.Dyn.Sk.Auto_akt + = Schleuse_3004.Dyn.Sk.Auto_akt + = Schleuse_3000.Dyn.Sk.Auto_akt + = Bereich_3555.Dyn.Sk.Auto_akt + = Schleuse_3562.Dyn.Sk.Auto_akt + = Bereich_3556.Dyn.Sk.Auto_akt + = Schleuse_3565.Dyn.Sk.Auto_akt + + AN "DAMR_Bereich".A01_UC061.BereichErr + = Schleuse_3061.Dyn.Sk.Bereich_ok + = Schleuse_3005.Dyn.Sk.Bereich_ok + = Schleuse_3004.Dyn.Sk.Bereich_ok + AN "DAMR_Bereich".A01_UH06_Halle4.BereichErr + = Schleuse_3000.Dyn.Sk.Bereich_ok + = Bereich_3555.Dyn.Sk.Bereich_ok + = Schleuse_3562.Dyn.Sk.Bereich_ok + = Bereich_3556.Dyn.Sk.Bereich_ok + = Schleuse_3565.Dyn.Sk.Bereich_ok + + +--- NW 2: Störungen quittieren UZ6104 --- + A "DAMR_Bereich".A01_UZ6104.StOk_aktiv + O "DAMR_Bereich".A01_UC061.StOk_aktiv + O "DAMR_Bereich".A01_UH06.StOk_aktiv + = ErrQuit + + +--- NW 3: Übergang 3063 (Übernahme von Outbound / UH07) --- +// Schnittstelle von Outbund: + A "DSchnittstelle_zu_Outbound".From_UH07.MA0203_A_start + S "DHWtoAMR_Antriebe".MA0203.Stat.A_start + + A "DSchnittstelle_zu_Outbound".From_UH07.MA0203_A_vor + S "DHWtoAMR_Antriebe".MA0203.Stat.A_vor + + A "DSchnittstelle_zu_Outbound".From_UH07.MA0203_A_start + O "DSchnittstelle_zu_Outbound".From_UH07.MA0203_A_vor + = B_vor_Schleuse + +// Schnittstelle zu Outbound: + A "MA0203" + = "DSchnittstelle_zu_Outbound".To_UH07.MA0203_aktiv + + A Schleuse_3061.Dyn.Sk.Bereich_ok // Kein Sensor in UH06 verbaut! + A Schleuse_3061.Dyn.Sk.Auto_akt + AN "Übergang_3063"."Am_Übergang".Stat.B_Akt + = "DSchnittstelle_zu_Outbound".To_UH07.MA0203_kein_Stau + +CALL FB "None" , (ErrQuit:=ErrQuit, B_Anfang:=?, B_Am_Übergang:="BG3063", B_Stau_Antrieb_plus:="DHWtoAMR_Sensoren".Stau_BG3062.Stat.B_Akt, Antrieb_aktiv:="MA0203", Antrieb_plus_aktiv:="MA0204", Antrieb_vor:="DHWtoAMR_Antriebe".MA0203.Stat.A_vor, Antrieb_start:="DHWtoAMR_Antriebe".MA0203.Stat.A_start, Antrieb_stop:="DHWtoAMR_Antriebe".MA0203.Stat.Stop_vor, Antrieb_plus_vor:="DHWtoAMR_Antriebe".MA0204.Stat.A_vor, Antrieb_plus_start:="DHWtoAMR_Antriebe".MA0204.Stat.A_start) + + +--- NW 4: Störungen anzeigen UZ6104 --- + A ErrAnz + R ErrAnz + S "DAMR_Bereich".A01_UZ6104.StOk_blinken + S "DAMR_Bereich".A01_UC061.StOk_blinken + S "DAMR_Bereich".A01_UH06.StOk_blinken + + +--- NW 5: Störungen quittieren UZ6102 --- + A "DAMR_Bereich".A01_UZ6102.StOk_aktiv + O "DAMR_Bereich".A01_UC061.StOk_aktiv + O "DAMR_Bereich".A01_UH06.StOk_aktiv + = ErrQuit + + +--- NW 6: Schleuse 3061 --- +CALL FB "None" , (Schleusen_Nr:=3061, ErrQuit:=ErrQuit, B_VorSchleuse:="BG3062", B_InSchleuse:="BG3061", B_Zähl:="BG3006", B_Stau_raus:="DHWtoAMR_Sensoren".Stau_BG3006.Stat.B_Akt, Start_Ok:=1, Antrieb_Schleuse_aktiv:="MA0204", Antrieb_plus_aktiv:="MA0205", Schleuse_geöffnet:="MB3061", RestZeit_Bereich_plus:=?, Y_Schleuse_Auf:="DHWtoAMR_Zylinder".Schleuse_3061.Stat.Ast, Error:=DB608.DBW212, Antrieb_Schleuse_vor:="DHWtoAMR_Antriebe".MA0204.Stat.A_vor, Antrieb_Schleuse_start:="DHWtoAMR_Antriebe".MA0204.Stat.A_start, Antrieb_Schleuse_stop:="DHWtoAMR_Antriebe".MA0204.Stat.Stop_vor, Antrieb_Schleuse_PS:="DHWtoAMR_Antriebe".MA0204.Stat.A_PS, Antrieb_plus_vor:="DHWtoAMR_Antriebe".MA0205.Stat.A_vor, Antrieb_plus_start:="DHWtoAMR_Antriebe".MA0205.Stat.A_start, hStOk:=ErrAnz) + + +--- NW 7: Störungen anzeigen UZ6102 --- + A ErrAnz + R ErrAnz + S "DAMR_Bereich".A01_UZ6102.StOk_blinken + S "DAMR_Bereich".A01_UC061.StOk_blinken + S "DAMR_Bereich".A01_UH06.StOk_blinken + + +--- NW 8: Störungen quittieren UZ6102/6101 --- + A "DAMR_Bereich".A01_UZ6102.StOk_aktiv + O "DAMR_Bereich".A01_UC061.StOk_aktiv + O "DAMR_Bereich".A01_UH06.StOk_aktiv + = ErrQuit + + +--- NW 9: Schleuse 3005 --- +CALL FB "None" , (Schleusen_Nr:=3005, ErrQuit:=ErrQuit, B_VorSchleuse:="BG3006", B_InSchleuse:="BG3005", B_AusSchleuse:="BG3017", B_Stau_raus:="DHWtoAMR_Sensoren".Stau_BG3017.Stat.B_Akt, Start_Ok:=1, Antrieb_Schleuse_aktiv:="MA0205", Antrieb_plus_aktiv:=?, Schleuse_geöffnet:="MB3005", RestZeit_Bereich_plus:=?, Y_Schleuse_Auf:="DHWtoAMR_Zylinder".Schleuse_3005.Stat.Ast, Error:=DB608.DBW204, Antrieb_Schleuse_vor:="DHWtoAMR_Antriebe".MA0205.Stat.A_vor, Antrieb_Schleuse_start:="DHWtoAMR_Antriebe".MA0205.Stat.A_start, Antrieb_Schleuse_stop:="DHWtoAMR_Antriebe".MA0205.Stat.Stop_vor, Antrieb_Schleuse_PS:="DHWtoAMR_Antriebe".MA0205.Stat.A_PS, Antrieb_plus_vor:=?, Antrieb_plus_start:=?, hStOk:=ErrAnz) // da schon oben verwendet | da schon oben verwendet + + +--- NW 10: Störungen anzeigen UZ6102/6101 --- + A ErrAnz + R ErrAnz + S "DAMR_Bereich".A01_UZ6102.StOk_blinken + S "DAMR_Bereich".A01_UC061.StOk_blinken + S "DAMR_Bereich".A01_UH06.StOk_blinken + + +--- NW 11: Störungen quittieren UZ6101 --- + A "DAMR_Bereich".A01_UC061.StOk_aktiv + O "DAMR_Bereich".A01_UH06.StOk_aktiv + = ErrQuit + + +--- NW 12: Schleuse 3004 (vor BST 3) --- + AN "6_HMI_Err_UH06_AMR".System.Gesamt_Feueralarm + AN "6_HMI_Err_UH06_AMR".System.BST3_Feueralarm + AN "6_HMI_Err_UH06_AMR".System.BST3_Geschlossen + AN "6_HMI_Err_UH06_AMR".System."BST3_Störung" + A Schleuse_3000.Dyn.Sk.Bereich_ok + = Fahren_Ok + +CALL FB "None" , (Schleusen_Nr:=3004, ErrQuit:=ErrQuit, B_VorSchleuse:="BG3017", B_InSchleuse:="BG3004", B_AusSchleuse:="BG3002", B_Stau_raus:="DHWtoAMR_Sensoren".Stau_BG3002.Stat.B_Akt, Start_Ok:=Fahren_Ok, Antrieb_Schleuse_aktiv:="MA0205", Antrieb_plus_aktiv:=?, Schleuse_geöffnet:="MB3004", RestZeit_Bereich_plus:=?, Y_Schleuse_Auf:="DHWtoAMR_Zylinder".Schleuse_3004.Stat.Ast, Error:=DB608.DBW202, Antrieb_Schleuse_vor:="DHWtoAMR_Antriebe".MA0205.Stat.A_vor, Antrieb_Schleuse_start:="DHWtoAMR_Antriebe".MA0205.Stat.A_start, Antrieb_Schleuse_stop:="DHWtoAMR_Antriebe".MA0205.Stat.Stop_vor, Antrieb_Schleuse_PS:="DHWtoAMR_Antriebe".MA0205.Stat.A_PS, Antrieb_plus_vor:=?, Antrieb_plus_start:=?, hStOk:=ErrAnz) // Kein Antrieb + + +--- NW 13: Störungen anzeigen UZ6101 --- + A ErrAnz + R ErrAnz + S "DAMR_Bereich".A01_UC061.StOk_blinken + S "DAMR_Bereich".A01_UH06.StOk_blinken + + +--- NW 14: Störungen quittieren UZ0620 --- + A "DAMR_Bereich".A01_UZ0620.StOk_aktiv + O "DAMR_Bereich".A01_UH06.StOk_aktiv + = ErrQuit + + +--- NW 15: Schleuse 3000 --- +CALL FB "None" , (Schleusen_Nr:=3000, ErrQuit:=ErrQuit, B_VorSchleuse:="BG3002", B_InSchleuse:="BG3000", B_AusSchleuse:="BG3001", B_Stau_raus:="DHWtoAMR_Sensoren".Stau_BG3001.Stat.B_Akt, Start_Ok:=1, Antrieb_Schleuse_aktiv:=1, Antrieb_plus_aktiv:="MA0130", Schleuse_geöffnet:="MB3000", RestZeit_Bereich_plus:=Bereich_3555.Dyn.Restzeit, Y_Schleuse_Auf:="DHWtoAMR_Zylinder".Schleuse_3000.Stat.Ast, Error:=DB608.DBW200, Antrieb_Schleuse_vor:=?, Antrieb_Schleuse_start:=?, Antrieb_Schleuse_stop:=?, Antrieb_Schleuse_PS:=?, Antrieb_plus_vor:=Bereich_3555.Dyn.Status.Trolley_kommt_in_Bereich, Antrieb_plus_start:=?, hStOk:=ErrAnz) // Kein Antrieb + + +--- NW 16: Bereich 3555 --- + A "BG3001" + A "MB3000" + = B_vor_Schleuse + + A "DHWtoAMR_Sensoren".Stau_BG3561.Stat.B_Akt + O "DHWtoAMR_Sensoren".Stau_BG3557.Stat.B_Akt + = Stau_raus + +CALL FB "None" , (Bereichs_Nr:=3555, ErrQuit:=ErrQuit, B_BereichsAnfang:=B_vor_Schleuse, B_BereichsEnde:="BG3555", B_Zähl:="BG3557", B_Stau_raus:=Stau_raus, Start_Ok:=1, Antrieb_Bereich_aktiv:="MA0130", Antrieb_plus_aktiv:="MA0131", RestZeit_Bereich_plus:=?, Antrieb_Bereich_vor:="DHWtoAMR_Antriebe".MA0130.Stat.A_vor, Antrieb_Bereich_stop:="DHWtoAMR_Antriebe".MA0130.Stat.Stop_vor, Error:=DB608.DBW172, Antrieb_Bereich_start:="DHWtoAMR_Antriebe".MA0130.Stat.A_start, Antrieb_plus_vor:="DHWtoAMR_Antriebe".MA0131.Stat.A_vor, Antrieb_plus_start:="DHWtoAMR_Antriebe".MA0131.Stat.A_start, Antrieb_minus_vor:=?, hStOk:=ErrAnz) + + +--- NW 17: Schleuse 3562 --- +CALL FB "None" , (Schleusen_Nr:=3562, ErrQuit:=ErrQuit, B_VorSchleuse:="BG3561", B_InSchleuse:="BG3562", B_AusSchleuse:="BG3563", B_Stau_raus:="DHWtoAMR_Sensoren".Stau_BG3563.Stat.B_Akt, Start_Ok:=1, Antrieb_Schleuse_aktiv:="MA0131", Antrieb_plus_aktiv:="MA0116", Schleuse_geöffnet:="MB3562", RestZeit_Bereich_plus:=Bereich_3556.Dyn.Restzeit, Y_Schleuse_Auf:="DHWtoAMR_Zylinder".Schleuse_3562.Stat.Ast, Error:=DB608.DBW358, Antrieb_Schleuse_vor:="DHWtoAMR_Antriebe".MA0131.Stat.A_vor, Antrieb_Schleuse_start:="DHWtoAMR_Antriebe".MA0131.Stat.A_start, Antrieb_Schleuse_stop:="DHWtoAMR_Antriebe".MA0131.Stat.Stop_vor, Antrieb_Schleuse_PS:="DHWtoAMR_Antriebe".MA0131.Stat.A_PS, Antrieb_plus_vor:=Bereich_3556.Dyn.Status.Trolley_kommt_in_Bereich, Antrieb_plus_start:=?, hStOk:=ErrAnz) + + +--- NW 18: Bereich 3556 --- + A "BG3563" + A "MB3562" + = B_vor_Schleuse + +CALL FB "None" , (Bereichs_Nr:=3556, ErrQuit:=ErrQuit, B_BereichsAnfang:=B_vor_Schleuse, B_BereichsEnde:="BG3556", B_Zähl:="BG3564", B_Stau_raus:="DHWtoAMR_Sensoren".Stau_BG3564.Stat.B_Akt, Start_Ok:=1, Antrieb_Bereich_aktiv:="MA0116", Antrieb_plus_aktiv:=1, RestZeit_Bereich_plus:=?, Antrieb_Bereich_vor:="DHWtoAMR_Antriebe".MA0116.Stat.A_vor, Antrieb_Bereich_stop:="DHWtoAMR_Antriebe".MA0116.Stat.Stop_vor, Error:=DB608.DBW174, Antrieb_Bereich_start:="DHWtoAMR_Antriebe".MA0116.Stat.A_start, Antrieb_plus_vor:=?, Antrieb_plus_start:=?, Antrieb_minus_vor:="DHWtoAMR_Antriebe".MA0131.Stat.A_vor, hStOk:=ErrAnz) // Ohne Antrieb + + +--- NW 19: Schleuse 3565 (vor BST 4) --- + AN "6_HMI_Err_UH06_AMR".System.Gesamt_Feueralarm + AN "6_HMI_Err_UH06_AMR".System.BST4_Feueralarm + AN "6_HMI_Err_UH06_AMR".System.BST4_Geschlossen + AN "6_HMI_Err_UH06_AMR".System."BST4_Störung" + = Fahren_Ok + + A "DHWtoAMR_Sensoren".Stau_BG3566.Stat.B_Akt + O "DHWtoAMR_Sensoren".Stau_BG3567.Stat.B_Akt + = Stau_raus + +CALL FB "None" , (Schleusen_Nr:=3565, ErrQuit:=ErrQuit, B_VorSchleuse:="BG3564", B_InSchleuse:="BG3565", B_AusSchleuse:="BG3566", B_Stau_raus:=Stau_raus, Start_Ok:=Fahren_Ok, Antrieb_Schleuse_aktiv:=1, Antrieb_plus_aktiv:="MA0061", Schleuse_geöffnet:="MB3565", RestZeit_Bereich_plus:=?, Y_Schleuse_Auf:="DHWtoAMR_Zylinder".Schleuse_3565.Stat.Ast, Error:=DB608.DBW360, Antrieb_Schleuse_vor:=?, Antrieb_Schleuse_start:=?, Antrieb_Schleuse_stop:=?, Antrieb_Schleuse_PS:=?, Antrieb_plus_vor:="DArbeitsplätze_Antriebe".MA0061.Stat.A_vor, Antrieb_plus_start:="DArbeitsplätze_Antriebe".MA0061.Stat.A_start, hStOk:=ErrAnz) // ohne Antrieb | Ohne Antrieb + + +--- NW 20: Störungen anzeigen UZ0620 --- + A ErrAnz + R ErrAnz + S "DAMR_Bereich".A01_UZ0620.StOk_blinken + S "DAMR_Bereich".A01_UH06.StOk_blinken + + +--- NW 21: Ende --- + BE + diff --git a/=A01+UH06-KF00/Programmbausteine/Anlage/0HWtoAMR/OmnifahrenHWtoAMR/HWtoAMRZielFC.awl b/=A01+UH06-KF00/Programmbausteine/Anlage/0HWtoAMR/OmnifahrenHWtoAMR/HWtoAMRZielFC.awl new file mode 100644 index 0000000..d9d5062 --- /dev/null +++ b/=A01+UH06-KF00/Programmbausteine/Anlage/0HWtoAMR/OmnifahrenHWtoAMR/HWtoAMRZielFC.awl @@ -0,0 +1,64 @@ +=== FC 181: HWtoAMRZielFC [STL] === +INTERFACE: + Input: + Output: + InOut: + Temp: + Ziel_hex : Word + Ziel_int : Int + Zielebene : Word + Error : Byte + Position : Int + Lager_DB : Int + Lager_DW : Int + AR1Zeiger : DWord // Statt AR1 (ging nur bis DB-Länge <= 8191 Bytes) + AR1Start : DInt // Startwert mit Offset 0 + SSDW : Int + EndZiel : Word + Variante : Int + AbrufID : DInt + Fahrlisten_TrolleyID : DInt + Fahrlisten_AbrufID : DInt + Fahrlisten_Lager : Int + Trolley_unbekannt : Bool // Trolley ist nicht in DL + Express_Abruf : Bool + Constant: + Return: + Ret_Val : Void + +--- NW 1: Rückmeldung --- + SET // Rückmeldungen erst mal resetten + R "M180.6" // Weiterfahrt von Ziel-FC erlaubt + + +--- NW 2: Schleuse 3004: (BST 3) --- + L "MW190" + L 3004 // Aufruf von Schleuse XXXX? + <>I // Nein! + JC X3004E + + SET + S "M180.6" // Weiterfahrt ist erlaubt + + BEU + +X3004E: NOP 0 + + +--- NW 3: Schleuse 3565: (BST 4) --- + L "MW190" + L 3565 // Aufruf von Schleuse XXXX? + <>I // Nein! + JC X3565E + + SET + S "M180.6" // Weiterfahrt ist erlaubt + + BEU + +X3565E: NOP 0 + + +--- NW 4: Ende --- + BE + diff --git a/=A01+UH06-KF00/Programmbausteine/Anlage/1_Arbeitsplätze/Anforderungs_DL/DL10LeerTrolleys.awl b/=A01+UH06-KF00/Programmbausteine/Anlage/1_Arbeitsplätze/Anforderungs_DL/DL10LeerTrolleys.awl new file mode 100644 index 0000000..ed9ba15 --- /dev/null +++ b/=A01+UH06-KF00/Programmbausteine/Anlage/1_Arbeitsplätze/Anforderungs_DL/DL10LeerTrolleys.awl @@ -0,0 +1,17 @@ +=== GlobalDB 1110: DL10LeerTrolleys [DB] === +INTERFACE: + Static: + Datenlistenkopf : Struct + KOPF : Word := WORD#16#DA01 // Datenliste-Kennnung (DA) / Datensatzlänge in Word (1 - 128) + LAENGE : Int := 8 // Länge der Datenliste (maximale Anzahl der Datensätze) + STAMMDATEN : Int := 1 // Stammdatenlänge in Word (1 - 9) + INDDB : Int // Indizierter DB (nur bei Stammdaten = 1 erlaubt !!!) + LAENGEINDDB : Int // Länge des indizierten DB in Word (nur bei Stammdaten = 1 erlaubt !!!) + OFFSETINDDATEN : Int // Offset für indizierte Daten (nur bei Stammdaten = 1 erlaubt !!!) + LETZTERZUGRIFF : Int // Speicherung des letzten Zugriffs + Belegt14 : Int // reserviert von Sort-Datenliste + Reserve16 : Int // Reserve + Reserve18 : Int // Reserve + Arbeitsplatz : Array[1..8] of Struct // Weiche vor AMR (PS5) + Position : Word + Endekennung : Word := WORD#16#DAEE // Datensort-Ende-Kennung (DBEE) diff --git a/=A01+UH06-KF00/Programmbausteine/Anlage/1_Arbeitsplätze/Anforderungs_DL/DL11LeerTrolleys.awl b/=A01+UH06-KF00/Programmbausteine/Anlage/1_Arbeitsplätze/Anforderungs_DL/DL11LeerTrolleys.awl new file mode 100644 index 0000000..0f406fb --- /dev/null +++ b/=A01+UH06-KF00/Programmbausteine/Anlage/1_Arbeitsplätze/Anforderungs_DL/DL11LeerTrolleys.awl @@ -0,0 +1,17 @@ +=== GlobalDB 1111: DL11LeerTrolleys [DB] === +INTERFACE: + Static: + Datenlistenkopf : Struct + KOPF : Word := WORD#16#DA01 // Datenliste-Kennnung (DA) / Datensatzlänge in Word (1 - 128) + LAENGE : Int := 8 // Länge der Datenliste (maximale Anzahl der Datensätze) + STAMMDATEN : Int := 1 // Stammdatenlänge in Word (1 - 9) + INDDB : Int // Indizierter DB (nur bei Stammdaten = 1 erlaubt !!!) + LAENGEINDDB : Int // Länge des indizierten DB in Word (nur bei Stammdaten = 1 erlaubt !!!) + OFFSETINDDATEN : Int // Offset für indizierte Daten (nur bei Stammdaten = 1 erlaubt !!!) + LETZTERZUGRIFF : Int // Speicherung des letzten Zugriffs + Belegt14 : Int // reserviert von Sort-Datenliste + Reserve16 : Int // Reserve + Reserve18 : Int // Reserve + Arbeitsplatz : Array[1..8] of Struct // Weiche vor AMR (PS5) + Position : Word + Endekennung : Word := WORD#16#DAEE // Datensort-Ende-Kennung (DBEE) diff --git a/=A01+UH06-KF00/Programmbausteine/Anlage/1_Arbeitsplätze/Anforderungs_DL/DL12LeerTrolleys.awl b/=A01+UH06-KF00/Programmbausteine/Anlage/1_Arbeitsplätze/Anforderungs_DL/DL12LeerTrolleys.awl new file mode 100644 index 0000000..2a77731 --- /dev/null +++ b/=A01+UH06-KF00/Programmbausteine/Anlage/1_Arbeitsplätze/Anforderungs_DL/DL12LeerTrolleys.awl @@ -0,0 +1,17 @@ +=== GlobalDB 1112: DL12LeerTrolleys [DB] === +INTERFACE: + Static: + Datenlistenkopf : Struct + KOPF : Word := WORD#16#DA01 // Datenliste-Kennnung (DA) / Datensatzlänge in Word (1 - 128) + LAENGE : Int := 8 // Länge der Datenliste (maximale Anzahl der Datensätze) + STAMMDATEN : Int := 1 // Stammdatenlänge in Word (1 - 9) + INDDB : Int // Indizierter DB (nur bei Stammdaten = 1 erlaubt !!!) + LAENGEINDDB : Int // Länge des indizierten DB in Word (nur bei Stammdaten = 1 erlaubt !!!) + OFFSETINDDATEN : Int // Offset für indizierte Daten (nur bei Stammdaten = 1 erlaubt !!!) + LETZTERZUGRIFF : Int // Speicherung des letzten Zugriffs + Belegt14 : Int // reserviert von Sort-Datenliste + Reserve16 : Int // Reserve + Reserve18 : Int // Reserve + Arbeitsplatz : Array[1..8] of Struct // Weiche vor AMR (PS5) + Position : Word + Endekennung : Word := WORD#16#DAEE // Datensort-Ende-Kennung (DBEE) diff --git a/=A01+UH06-KF00/Programmbausteine/Anlage/1_Arbeitsplätze/Anforderungs_DL/DL1LeerTrolleys.awl b/=A01+UH06-KF00/Programmbausteine/Anlage/1_Arbeitsplätze/Anforderungs_DL/DL1LeerTrolleys.awl new file mode 100644 index 0000000..97ba885 --- /dev/null +++ b/=A01+UH06-KF00/Programmbausteine/Anlage/1_Arbeitsplätze/Anforderungs_DL/DL1LeerTrolleys.awl @@ -0,0 +1,17 @@ +=== GlobalDB 1101: DL1LeerTrolleys [DB] === +INTERFACE: + Static: + Datenlistenkopf : Struct + KOPF : Word := WORD#16#DA01 // Datenliste-Kennnung (DA) / Datensatzlänge in Word (1 - 128) + LAENGE : Int := 8 // Länge der Datenliste (maximale Anzahl der Datensätze) + STAMMDATEN : Int := 1 // Stammdatenlänge in Word (1 - 9) + INDDB : Int // Indizierter DB (nur bei Stammdaten = 1 erlaubt !!!) + LAENGEINDDB : Int // Länge des indizierten DB in Word (nur bei Stammdaten = 1 erlaubt !!!) + OFFSETINDDATEN : Int // Offset für indizierte Daten (nur bei Stammdaten = 1 erlaubt !!!) + LETZTERZUGRIFF : Int // Speicherung des letzten Zugriffs + Belegt14 : Int // reserviert von Sort-Datenliste + Reserve16 : Int // Reserve + Reserve18 : Int // Reserve + Arbeitsplatz : Array[1..8] of Struct // Weiche vor AMR (PS5) + Position : Word + Endekennung : Word := WORD#16#DAEE // Datensort-Ende-Kennung (DBEE) diff --git a/=A01+UH06-KF00/Programmbausteine/Anlage/1_Arbeitsplätze/Anforderungs_DL/DL2LeerTrolleys.awl b/=A01+UH06-KF00/Programmbausteine/Anlage/1_Arbeitsplätze/Anforderungs_DL/DL2LeerTrolleys.awl new file mode 100644 index 0000000..04a0f56 --- /dev/null +++ b/=A01+UH06-KF00/Programmbausteine/Anlage/1_Arbeitsplätze/Anforderungs_DL/DL2LeerTrolleys.awl @@ -0,0 +1,17 @@ +=== GlobalDB 1102: DL2LeerTrolleys [DB] === +INTERFACE: + Static: + Datenlistenkopf : Struct + KOPF : Word := WORD#16#DA01 // Datenliste-Kennnung (DA) / Datensatzlänge in Word (1 - 128) + LAENGE : Int := 8 // Länge der Datenliste (maximale Anzahl der Datensätze) + STAMMDATEN : Int := 1 // Stammdatenlänge in Word (1 - 9) + INDDB : Int // Indizierter DB (nur bei Stammdaten = 1 erlaubt !!!) + LAENGEINDDB : Int // Länge des indizierten DB in Word (nur bei Stammdaten = 1 erlaubt !!!) + OFFSETINDDATEN : Int // Offset für indizierte Daten (nur bei Stammdaten = 1 erlaubt !!!) + LETZTERZUGRIFF : Int // Speicherung des letzten Zugriffs + Belegt14 : Int // reserviert von Sort-Datenliste + Reserve16 : Int // Reserve + Reserve18 : Int // Reserve + Arbeitsplatz : Array[1..8] of Struct // Weiche vor AMR (PS5) + Position : Word + Endekennung : Word := WORD#16#DAEE // Datensort-Ende-Kennung (DBEE) diff --git a/=A01+UH06-KF00/Programmbausteine/Anlage/1_Arbeitsplätze/Anforderungs_DL/DL3LeerTrolleys.awl b/=A01+UH06-KF00/Programmbausteine/Anlage/1_Arbeitsplätze/Anforderungs_DL/DL3LeerTrolleys.awl new file mode 100644 index 0000000..d00a5dd --- /dev/null +++ b/=A01+UH06-KF00/Programmbausteine/Anlage/1_Arbeitsplätze/Anforderungs_DL/DL3LeerTrolleys.awl @@ -0,0 +1,17 @@ +=== GlobalDB 1103: DL3LeerTrolleys [DB] === +INTERFACE: + Static: + Datenlistenkopf : Struct + KOPF : Word := WORD#16#DA01 // Datenliste-Kennnung (DA) / Datensatzlänge in Word (1 - 128) + LAENGE : Int := 8 // Länge der Datenliste (maximale Anzahl der Datensätze) + STAMMDATEN : Int := 1 // Stammdatenlänge in Word (1 - 9) + INDDB : Int // Indizierter DB (nur bei Stammdaten = 1 erlaubt !!!) + LAENGEINDDB : Int // Länge des indizierten DB in Word (nur bei Stammdaten = 1 erlaubt !!!) + OFFSETINDDATEN : Int // Offset für indizierte Daten (nur bei Stammdaten = 1 erlaubt !!!) + LETZTERZUGRIFF : Int // Speicherung des letzten Zugriffs + Belegt14 : Int // reserviert von Sort-Datenliste + Reserve16 : Int // Reserve + Reserve18 : Int // Reserve + Arbeitsplatz : Array[1..8] of Struct // Weiche vor AMR (PS5) + Position : Word + Endekennung : Word := WORD#16#DAEE // Datensort-Ende-Kennung (DBEE) diff --git a/=A01+UH06-KF00/Programmbausteine/Anlage/1_Arbeitsplätze/Anforderungs_DL/DL4LeerTrolleys.awl b/=A01+UH06-KF00/Programmbausteine/Anlage/1_Arbeitsplätze/Anforderungs_DL/DL4LeerTrolleys.awl new file mode 100644 index 0000000..38927bc --- /dev/null +++ b/=A01+UH06-KF00/Programmbausteine/Anlage/1_Arbeitsplätze/Anforderungs_DL/DL4LeerTrolleys.awl @@ -0,0 +1,17 @@ +=== GlobalDB 1104: DL4LeerTrolleys [DB] === +INTERFACE: + Static: + Datenlistenkopf : Struct + KOPF : Word := WORD#16#DA01 // Datenliste-Kennnung (DA) / Datensatzlänge in Word (1 - 128) + LAENGE : Int := 8 // Länge der Datenliste (maximale Anzahl der Datensätze) + STAMMDATEN : Int := 1 // Stammdatenlänge in Word (1 - 9) + INDDB : Int // Indizierter DB (nur bei Stammdaten = 1 erlaubt !!!) + LAENGEINDDB : Int // Länge des indizierten DB in Word (nur bei Stammdaten = 1 erlaubt !!!) + OFFSETINDDATEN : Int // Offset für indizierte Daten (nur bei Stammdaten = 1 erlaubt !!!) + LETZTERZUGRIFF : Int // Speicherung des letzten Zugriffs + Belegt14 : Int // reserviert von Sort-Datenliste + Reserve16 : Int // Reserve + Reserve18 : Int // Reserve + Arbeitsplatz : Array[1..8] of Struct // Weiche vor AMR (PS5) + Position : Word + Endekennung : Word := WORD#16#DAEE // Datensort-Ende-Kennung (DBEE) diff --git a/=A01+UH06-KF00/Programmbausteine/Anlage/1_Arbeitsplätze/Anforderungs_DL/DL5LeerTrolleys.awl b/=A01+UH06-KF00/Programmbausteine/Anlage/1_Arbeitsplätze/Anforderungs_DL/DL5LeerTrolleys.awl new file mode 100644 index 0000000..5417614 --- /dev/null +++ b/=A01+UH06-KF00/Programmbausteine/Anlage/1_Arbeitsplätze/Anforderungs_DL/DL5LeerTrolleys.awl @@ -0,0 +1,17 @@ +=== GlobalDB 1105: DL5LeerTrolleys [DB] === +INTERFACE: + Static: + Datenlistenkopf : Struct + KOPF : Word := WORD#16#DA01 // Datenliste-Kennnung (DA) / Datensatzlänge in Word (1 - 128) + LAENGE : Int := 8 // Länge der Datenliste (maximale Anzahl der Datensätze) + STAMMDATEN : Int := 1 // Stammdatenlänge in Word (1 - 9) + INDDB : Int // Indizierter DB (nur bei Stammdaten = 1 erlaubt !!!) + LAENGEINDDB : Int // Länge des indizierten DB in Word (nur bei Stammdaten = 1 erlaubt !!!) + OFFSETINDDATEN : Int // Offset für indizierte Daten (nur bei Stammdaten = 1 erlaubt !!!) + LETZTERZUGRIFF : Int // Speicherung des letzten Zugriffs + Belegt14 : Int // reserviert von Sort-Datenliste + Reserve16 : Int // Reserve + Reserve18 : Int // Reserve + Arbeitsplatz : Array[1..8] of Struct // Weiche vor AMR (PS5) + Position : Word + Endekennung : Word := WORD#16#DAEE // Datensort-Ende-Kennung (DBEE) diff --git a/=A01+UH06-KF00/Programmbausteine/Anlage/1_Arbeitsplätze/Anforderungs_DL/DL6LeerTrolleys.awl b/=A01+UH06-KF00/Programmbausteine/Anlage/1_Arbeitsplätze/Anforderungs_DL/DL6LeerTrolleys.awl new file mode 100644 index 0000000..084d066 --- /dev/null +++ b/=A01+UH06-KF00/Programmbausteine/Anlage/1_Arbeitsplätze/Anforderungs_DL/DL6LeerTrolleys.awl @@ -0,0 +1,17 @@ +=== GlobalDB 1106: DL6LeerTrolleys [DB] === +INTERFACE: + Static: + Datenlistenkopf : Struct + KOPF : Word := WORD#16#DA01 // Datenliste-Kennnung (DA) / Datensatzlänge in Word (1 - 128) + LAENGE : Int := 8 // Länge der Datenliste (maximale Anzahl der Datensätze) + STAMMDATEN : Int := 1 // Stammdatenlänge in Word (1 - 9) + INDDB : Int // Indizierter DB (nur bei Stammdaten = 1 erlaubt !!!) + LAENGEINDDB : Int // Länge des indizierten DB in Word (nur bei Stammdaten = 1 erlaubt !!!) + OFFSETINDDATEN : Int // Offset für indizierte Daten (nur bei Stammdaten = 1 erlaubt !!!) + LETZTERZUGRIFF : Int // Speicherung des letzten Zugriffs + Belegt14 : Int // reserviert von Sort-Datenliste + Reserve16 : Int // Reserve + Reserve18 : Int // Reserve + Arbeitsplatz : Array[1..8] of Struct // Weiche vor AMR (PS5) + Position : Word + Endekennung : Word := WORD#16#DAEE // Datensort-Ende-Kennung (DBEE) diff --git a/=A01+UH06-KF00/Programmbausteine/Anlage/1_Arbeitsplätze/Anforderungs_DL/DL7LeerTrolleys.awl b/=A01+UH06-KF00/Programmbausteine/Anlage/1_Arbeitsplätze/Anforderungs_DL/DL7LeerTrolleys.awl new file mode 100644 index 0000000..db5c1c6 --- /dev/null +++ b/=A01+UH06-KF00/Programmbausteine/Anlage/1_Arbeitsplätze/Anforderungs_DL/DL7LeerTrolleys.awl @@ -0,0 +1,17 @@ +=== GlobalDB 1107: DL7LeerTrolleys [DB] === +INTERFACE: + Static: + Datenlistenkopf : Struct + KOPF : Word := WORD#16#DA01 // Datenliste-Kennnung (DA) / Datensatzlänge in Word (1 - 128) + LAENGE : Int := 8 // Länge der Datenliste (maximale Anzahl der Datensätze) + STAMMDATEN : Int := 1 // Stammdatenlänge in Word (1 - 9) + INDDB : Int // Indizierter DB (nur bei Stammdaten = 1 erlaubt !!!) + LAENGEINDDB : Int // Länge des indizierten DB in Word (nur bei Stammdaten = 1 erlaubt !!!) + OFFSETINDDATEN : Int // Offset für indizierte Daten (nur bei Stammdaten = 1 erlaubt !!!) + LETZTERZUGRIFF : Int // Speicherung des letzten Zugriffs + Belegt14 : Int // reserviert von Sort-Datenliste + Reserve16 : Int // Reserve + Reserve18 : Int // Reserve + Arbeitsplatz : Array[1..8] of Struct // Weiche vor AMR (PS5) + Position : Word + Endekennung : Word := WORD#16#DAEE // Datensort-Ende-Kennung (DBEE) diff --git a/=A01+UH06-KF00/Programmbausteine/Anlage/1_Arbeitsplätze/Anforderungs_DL/DL8LeerTrolleys.awl b/=A01+UH06-KF00/Programmbausteine/Anlage/1_Arbeitsplätze/Anforderungs_DL/DL8LeerTrolleys.awl new file mode 100644 index 0000000..a5f0bf0 --- /dev/null +++ b/=A01+UH06-KF00/Programmbausteine/Anlage/1_Arbeitsplätze/Anforderungs_DL/DL8LeerTrolleys.awl @@ -0,0 +1,17 @@ +=== GlobalDB 1108: DL8LeerTrolleys [DB] === +INTERFACE: + Static: + Datenlistenkopf : Struct + KOPF : Word := WORD#16#DA01 // Datenliste-Kennnung (DA) / Datensatzlänge in Word (1 - 128) + LAENGE : Int := 8 // Länge der Datenliste (maximale Anzahl der Datensätze) + STAMMDATEN : Int := 1 // Stammdatenlänge in Word (1 - 9) + INDDB : Int // Indizierter DB (nur bei Stammdaten = 1 erlaubt !!!) + LAENGEINDDB : Int // Länge des indizierten DB in Word (nur bei Stammdaten = 1 erlaubt !!!) + OFFSETINDDATEN : Int // Offset für indizierte Daten (nur bei Stammdaten = 1 erlaubt !!!) + LETZTERZUGRIFF : Int // Speicherung des letzten Zugriffs + Belegt14 : Int // reserviert von Sort-Datenliste + Reserve16 : Int // Reserve + Reserve18 : Int // Reserve + Arbeitsplatz : Array[1..8] of Struct // Weiche vor AMR (PS5) + Position : Word + Endekennung : Word := WORD#16#DAEE // Datensort-Ende-Kennung (DBEE) diff --git a/=A01+UH06-KF00/Programmbausteine/Anlage/1_Arbeitsplätze/Anforderungs_DL/DL9LeerTrolleys.awl b/=A01+UH06-KF00/Programmbausteine/Anlage/1_Arbeitsplätze/Anforderungs_DL/DL9LeerTrolleys.awl new file mode 100644 index 0000000..00ee114 --- /dev/null +++ b/=A01+UH06-KF00/Programmbausteine/Anlage/1_Arbeitsplätze/Anforderungs_DL/DL9LeerTrolleys.awl @@ -0,0 +1,17 @@ +=== GlobalDB 1109: DL9LeerTrolleys [DB] === +INTERFACE: + Static: + Datenlistenkopf : Struct + KOPF : Word := WORD#16#DA01 // Datenliste-Kennnung (DA) / Datensatzlänge in Word (1 - 128) + LAENGE : Int := 8 // Länge der Datenliste (maximale Anzahl der Datensätze) + STAMMDATEN : Int := 1 // Stammdatenlänge in Word (1 - 9) + INDDB : Int // Indizierter DB (nur bei Stammdaten = 1 erlaubt !!!) + LAENGEINDDB : Int // Länge des indizierten DB in Word (nur bei Stammdaten = 1 erlaubt !!!) + OFFSETINDDATEN : Int // Offset für indizierte Daten (nur bei Stammdaten = 1 erlaubt !!!) + LETZTERZUGRIFF : Int // Speicherung des letzten Zugriffs + Belegt14 : Int // reserviert von Sort-Datenliste + Reserve16 : Int // Reserve + Reserve18 : Int // Reserve + Arbeitsplatz : Array[1..8] of Struct // Weiche vor AMR (PS5) + Position : Word + Endekennung : Word := WORD#16#DAEE // Datensort-Ende-Kennung (DBEE) diff --git a/=A01+UH06-KF00/Programmbausteine/Anlage/1_Arbeitsplätze/Arbeitsplätze.awl b/=A01+UH06-KF00/Programmbausteine/Anlage/1_Arbeitsplätze/Arbeitsplätze.awl new file mode 100644 index 0000000..0861abf --- /dev/null +++ b/=A01+UH06-KF00/Programmbausteine/Anlage/1_Arbeitsplätze/Arbeitsplätze.awl @@ -0,0 +1,80 @@ +=== FC 1100: Arbeitsplätze [STL] === +INTERFACE: + Input: + Output: + InOut: + Temp: + Constant: + Return: + Ret_Val : Void + +--- NW 1: Ohne PC sind alle ABPs aktiviert --- + A "SGes".Ohne_PC_Fahren + S "DPS5_OmniFahren".Sks_Arbeitsplatz.Dyn.Status.Arbeitsplatz_aktiviert + S "DPS4_OmniFahren".Sks_Arbeitsplatz.Dyn.Status.Arbeitsplatz_aktiviert + S "DPS3_OmniFahren".Sks_Arbeitsplatz.Dyn.Status.Arbeitsplatz_aktiviert + S "DPS2_OmniFahren".Sks_Arbeitsplatz.Dyn.Status.Arbeitsplatz_aktiviert + S "DPS1_OmniFahren".Sks_Arbeitsplatz.Dyn.Status.Arbeitsplatz_aktiviert + S "DMPS3_OmniFahren".Sks_Arbeitsplatz.Dyn.Status.Arbeitsplatz_aktiviert + S "DMPS2_OmniFahren".Sks_Arbeitsplatz.Dyn.Status.Arbeitsplatz_aktiviert + S "DMPS1_OmniFahren".Sks_Arbeitsplatz.Dyn.Status.Arbeitsplatz_aktiviert + + +--- NW 2: Sensoren --- +CALL FB "Arbeitsplätze_Sensoren" , + + +--- NW 3: Simulation zum Ausfahren aus AMRs --- +CALL FC "Simulation_AMR_Trolley_starten" + + +--- NW 4: Zuführung --- +CALL FB "Zuführung_OmniFahren" , + + +--- NW 5: Pickstation 5 --- +CALL FB "PS5_OmniFahren" , + + +--- NW 6: Pickstation 4 --- +CALL FB "PS4_OmniFahren" , + + +--- NW 7: Pickstation 3 --- +CALL FB "PS3_OmniFahren" , + + +--- NW 8: Pickstation 2 --- +CALL FB "PS2_OmniFahren" , + + +--- NW 9: Pickstation 1 --- +CALL FB "PS1_OmniFahren" , + + +--- NW 10: MultiPurposestation 3 --- +CALL FB "MPS3_OmniFahren" , + + +--- NW 11: MultiPurposestation 2 --- +CALL FB "MPS2_OmniFahren" , + + +--- NW 12: MultiPurposestation 1 --- +CALL FB "MPS1_OmniFahren" , + + +--- NW 13: Abführung --- +CALL FB "Abführung_OmniFahren" , + + +--- NW 14: Last --- +CALL FB "Arbeitsplätze_Zylinder" , + +CALL FB "Arbeitsplätze_Antriebe" , + + + +--- NW 15: Ende --- + BE + diff --git a/=A01+UH06-KF00/Programmbausteine/Anlage/1_Arbeitsplätze/Arbeitsplätze/DMPS1_OmniFahren.awl b/=A01+UH06-KF00/Programmbausteine/Anlage/1_Arbeitsplätze/Arbeitsplätze/DMPS1_OmniFahren.awl new file mode 100644 index 0000000..9b1231e --- /dev/null +++ b/=A01+UH06-KF00/Programmbausteine/Anlage/1_Arbeitsplätze/Arbeitsplätze/DMPS1_OmniFahren.awl @@ -0,0 +1,21 @@ +=== InstanceDB 1128: DMPS1_OmniFahren [DB] === +INTERFACE: + Input: + Output: + InOut: + Static: + Schleuse_vor_Einfahrt : "MHMOmniSchleuse" + Weiche_Einfahrt : "MHMOmniWeiche" + Schleuse_Vorstau : "MHMOmniSchleuse" + Sks_Arbeitsplatz : "MHM_Arbeitsplatz" + Schleuse_Platz_1 : "MHMOmniSchleuse" + Schleuse_Platz_2 : "MHMOmniSchleuse" + Schleuse_Platz_3 : "MHMOmniSchleuse" + Schleuse_Ausfahrt : "MHMOmniSchleuse" + Schleuse_vor_Ausfahrt : "MHMOmniSchleuse" + Prio_Ausfahrt : "MAusfahrPrio_ABP" + Vorfahrt_Ausfahrweiche : Struct + Weiche_von_Haupt-Sep_belegt : Bool + Weiche_von_Ausfahr-Sep_belegt : Bool + Haupstrecke_gefahren : Int + AMR_gefahren : Int diff --git a/=A01+UH06-KF00/Programmbausteine/Anlage/1_Arbeitsplätze/Arbeitsplätze/DMPS2_OmniFahren.awl b/=A01+UH06-KF00/Programmbausteine/Anlage/1_Arbeitsplätze/Arbeitsplätze/DMPS2_OmniFahren.awl new file mode 100644 index 0000000..211e935 --- /dev/null +++ b/=A01+UH06-KF00/Programmbausteine/Anlage/1_Arbeitsplätze/Arbeitsplätze/DMPS2_OmniFahren.awl @@ -0,0 +1,21 @@ +=== InstanceDB 1127: DMPS2_OmniFahren [DB] === +INTERFACE: + Input: + Output: + InOut: + Static: + Schleuse_vor_Einfahrt : "MHMOmniSchleuse" + Weiche_Einfahrt : "MHMOmniWeiche" + Schleuse_Vorstau : "MHMOmniSchleuse" + Sks_Arbeitsplatz : "MHM_Arbeitsplatz" + Schleuse_Platz_1 : "MHMOmniSchleuse" + Schleuse_Platz_2 : "MHMOmniSchleuse" + Schleuse_Platz_3 : "MHMOmniSchleuse" + Schleuse_Ausfahrt : "MHMOmniSchleuse" + Schleuse_vor_Ausfahrt : "MHMOmniSchleuse" + Prio_Ausfahrt : "MAusfahrPrio_ABP" + Vorfahrt_Ausfahrweiche : Struct + Weiche_von_Haupt-Sep_belegt : Bool + Weiche_von_Ausfahr-Sep_belegt : Bool + Haupstrecke_gefahren : Int + AMR_gefahren : Int diff --git a/=A01+UH06-KF00/Programmbausteine/Anlage/1_Arbeitsplätze/Arbeitsplätze/DMPS3_OmniFahren.awl b/=A01+UH06-KF00/Programmbausteine/Anlage/1_Arbeitsplätze/Arbeitsplätze/DMPS3_OmniFahren.awl new file mode 100644 index 0000000..6fde829 --- /dev/null +++ b/=A01+UH06-KF00/Programmbausteine/Anlage/1_Arbeitsplätze/Arbeitsplätze/DMPS3_OmniFahren.awl @@ -0,0 +1,21 @@ +=== InstanceDB 1126: DMPS3_OmniFahren [DB] === +INTERFACE: + Input: + Output: + InOut: + Static: + Schleuse_vor_Einfahrt : "MHMOmniSchleuse" + Weiche_Einfahrt : "MHMOmniWeiche" + Schleuse_Vorstau : "MHMOmniSchleuse" + Sks_Arbeitsplatz : "MHM_Arbeitsplatz" + Schleuse_Platz_1 : "MHMOmniSchleuse" + Schleuse_Platz_2 : "MHMOmniSchleuse" + Schleuse_Platz_3 : "MHMOmniSchleuse" + Schleuse_Ausfahrt : "MHMOmniSchleuse" + Schleuse_vor_Ausfahrt : "MHMOmniSchleuse" + Prio_Ausfahrt : "MAusfahrPrio_ABP" + Vorfahrt_Ausfahrweiche : Struct + Weiche_von_Haupt-Sep_belegt : Bool + Weiche_von_Ausfahr-Sep_belegt : Bool + Haupstrecke_gefahren : Int + AMR_gefahren : Int diff --git a/=A01+UH06-KF00/Programmbausteine/Anlage/1_Arbeitsplätze/Arbeitsplätze/DPS1_OmniFahren.awl b/=A01+UH06-KF00/Programmbausteine/Anlage/1_Arbeitsplätze/Arbeitsplätze/DPS1_OmniFahren.awl new file mode 100644 index 0000000..9c8f6d3 --- /dev/null +++ b/=A01+UH06-KF00/Programmbausteine/Anlage/1_Arbeitsplätze/Arbeitsplätze/DPS1_OmniFahren.awl @@ -0,0 +1,21 @@ +=== InstanceDB 1125: DPS1_OmniFahren [DB] === +INTERFACE: + Input: + Output: + InOut: + Static: + Schleuse_vor_Einfahrt : "MHMOmniSchleuse" + Weiche_Einfahrt : "MHMOmniWeiche" + Schleuse_Vorstau : "MHMOmniSchleuse" + Sks_Arbeitsplatz : "MHM_Arbeitsplatz" + Schleuse_Platz_1 : "MHMOmniSchleuse" + Schleuse_Platz_2 : "MHMOmniSchleuse" + Schleuse_Platz_3 : "MHMOmniSchleuse" + Schleuse_Ausfahrt : "MHMOmniSchleuse" + Schleuse_vor_Ausfahrt : "MHMOmniSchleuse" + Prio_Ausfahrt : "MAusfahrPrio_ABP" + Vorfahrt_Ausfahrweiche : Struct + Weiche_von_Haupt-Sep_belegt : Bool + Weiche_von_Ausfahr-Sep_belegt : Bool + Haupstrecke_gefahren : Int + AMR_gefahren : Int diff --git a/=A01+UH06-KF00/Programmbausteine/Anlage/1_Arbeitsplätze/Arbeitsplätze/DPS2_OmniFahren.awl b/=A01+UH06-KF00/Programmbausteine/Anlage/1_Arbeitsplätze/Arbeitsplätze/DPS2_OmniFahren.awl new file mode 100644 index 0000000..96eac72 --- /dev/null +++ b/=A01+UH06-KF00/Programmbausteine/Anlage/1_Arbeitsplätze/Arbeitsplätze/DPS2_OmniFahren.awl @@ -0,0 +1,22 @@ +=== InstanceDB 1124: DPS2_OmniFahren [DB] === +INTERFACE: + Input: + Output: + InOut: + Static: + Schleuse_vor_Einfahrt : "MHMOmniSchleuse" + Weiche_Einfahrt : "MHMOmniWeiche" + Schleuse_Vorstau : "MHMOmniSchleuse" + Sks_Arbeitsplatz : "MHM_Arbeitsplatz" + Schleuse_Platz_1 : "MHMOmniSchleuse" + Schleuse_Platz_2 : "MHMOmniSchleuse" + Schleuse_Platz_3 : "MHMOmniSchleuse" + Schleuse_Ausfahrt : "MHMOmniSchleuse" + Prio_Ausfahrt : "MAusfahrPrio_ABP" + Vorfahrt_Ausfahrweiche : Struct + Weiche_von_Haupt-Sep_belegt : Bool + WeicheByPass_von_Haupt-Sep_belegt : Bool + Weiche_von_Ausfahr-Sep_belegt : Bool + Weiche_von_ByPass-Sep_belegt : Bool + Haupstrecke_gefahren : Int + AMR_gefahren : Int diff --git a/=A01+UH06-KF00/Programmbausteine/Anlage/1_Arbeitsplätze/Arbeitsplätze/DPS3_OmniFahren.awl b/=A01+UH06-KF00/Programmbausteine/Anlage/1_Arbeitsplätze/Arbeitsplätze/DPS3_OmniFahren.awl new file mode 100644 index 0000000..57c1644 --- /dev/null +++ b/=A01+UH06-KF00/Programmbausteine/Anlage/1_Arbeitsplätze/Arbeitsplätze/DPS3_OmniFahren.awl @@ -0,0 +1,21 @@ +=== InstanceDB 1123: DPS3_OmniFahren [DB] === +INTERFACE: + Input: + Output: + InOut: + Static: + Schleuse_vor_Einfahrt : "MHMOmniSchleuse" + Weiche_Einfahrt : "MHMOmniWeiche" + Schleuse_Vorstau : "MHMOmniSchleuse" + Sks_Arbeitsplatz : "MHM_Arbeitsplatz" + Schleuse_Platz_1 : "MHMOmniSchleuse" + Schleuse_Platz_2 : "MHMOmniSchleuse" + Schleuse_Platz_3 : "MHMOmniSchleuse" + Schleuse_Ausfahrt : "MHMOmniSchleuse" + Schleuse_vor_Ausfahrt : "MHMOmniSchleuse" + Prio_Ausfahrt : "MAusfahrPrio_ABP" + Vorfahrt_Ausfahrweiche : Struct + Weiche_von_Haupt-Sep_belegt : Bool + Weiche_von_Ausfahr-Sep_belegt : Bool + Haupstrecke_gefahren : Int + AMR_gefahren : Int diff --git a/=A01+UH06-KF00/Programmbausteine/Anlage/1_Arbeitsplätze/Arbeitsplätze/DPS4_OmniFahren.awl b/=A01+UH06-KF00/Programmbausteine/Anlage/1_Arbeitsplätze/Arbeitsplätze/DPS4_OmniFahren.awl new file mode 100644 index 0000000..f5cd5f9 --- /dev/null +++ b/=A01+UH06-KF00/Programmbausteine/Anlage/1_Arbeitsplätze/Arbeitsplätze/DPS4_OmniFahren.awl @@ -0,0 +1,20 @@ +=== InstanceDB 1122: DPS4_OmniFahren [DB] === +INTERFACE: + Input: + Output: + InOut: + Static: + Schleuse_vor_Einfahrt : "MHMOmniSchleuse" + Weiche_Einfahrt : "MHMOmniWeiche" + Schleuse_Vorstau : "MHMOmniSchleuse" + Sks_Arbeitsplatz : "MHM_Arbeitsplatz" + Schleuse_Platz_1 : "MHMOmniSchleuse" + Schleuse_Platz_2 : "MHMOmniSchleuse" + Schleuse_Platz_3 : "MHMOmniSchleuse" + Schleuse_Ausfahrt : "MHMOmniSchleuse" + Prio_Ausfahrt : "MAusfahrPrio_ABP" + Vorfahrt_Ausfahrweiche : Struct + Weiche_von_Haupt-Sep_belegt : Bool + Weiche_von_Ausfahr-Sep_belegt : Bool + Haupstrecke_gefahren : Int + AMR_gefahren : Int diff --git a/=A01+UH06-KF00/Programmbausteine/Anlage/1_Arbeitsplätze/Arbeitsplätze/DPS5_OmniFahren.awl b/=A01+UH06-KF00/Programmbausteine/Anlage/1_Arbeitsplätze/Arbeitsplätze/DPS5_OmniFahren.awl new file mode 100644 index 0000000..da7a510 --- /dev/null +++ b/=A01+UH06-KF00/Programmbausteine/Anlage/1_Arbeitsplätze/Arbeitsplätze/DPS5_OmniFahren.awl @@ -0,0 +1,22 @@ +=== InstanceDB 1121: DPS5_OmniFahren [DB] === +INTERFACE: + Input: + Output: + InOut: + Static: + Schleuse_vor_Einfahrt : "MHMOmniSchleuse" + Weiche_Einfahrt : "MHMOmniWeiche" + Schleuse_Vorstau : "MHMOmniSchleuse" + Sks_Arbeitsplatz : "MHM_Arbeitsplatz" + Schleuse_Platz_1 : "MHMOmniSchleuse" + Schleuse_Platz_2 : "MHMOmniSchleuse" + Schleuse_Platz_3 : "MHMOmniSchleuse" + Schleuse_Ausfahrt : "MHMOmniSchleuse" + Schleuse_vor_Ausfahrt : "MHMOmniSchleuse" + Prio_Ausfahrt : "MAusfahrPrio_ABP" + Vorfahrt_Ausfahrweiche : Struct + Weiche_von_Haupt-Sep_belegt : Bool + Weiche_von_Ausfahr-Sep_belegt : Bool + Haupstrecke_gefahren : Int + AMR_gefahren : Int + Aktivierte_ABPs : Int diff --git a/=A01+UH06-KF00/Programmbausteine/Anlage/1_Arbeitsplätze/Arbeitsplätze/MPS1_OmniFahren.awl b/=A01+UH06-KF00/Programmbausteine/Anlage/1_Arbeitsplätze/Arbeitsplätze/MPS1_OmniFahren.awl new file mode 100644 index 0000000..2be8b6a --- /dev/null +++ b/=A01+UH06-KF00/Programmbausteine/Anlage/1_Arbeitsplätze/Arbeitsplätze/MPS1_OmniFahren.awl @@ -0,0 +1,171 @@ +=== FB 1128: MPS1_OmniFahren [STL] === +INTERFACE: + Input: + Output: + InOut: + Static: + Schleuse_vor_Einfahrt : "MHMOmniSchleuse" + Weiche_Einfahrt : "MHMOmniWeiche" + Schleuse_Vorstau : "MHMOmniSchleuse" + Sks_Arbeitsplatz : "MHM_Arbeitsplatz" + Schleuse_Platz_1 : "MHMOmniSchleuse" + Schleuse_Platz_2 : "MHMOmniSchleuse" + Schleuse_Platz_3 : "MHMOmniSchleuse" + Schleuse_Ausfahrt : "MHMOmniSchleuse" + Schleuse_vor_Ausfahrt : "MHMOmniSchleuse" + Prio_Ausfahrt : "MAusfahrPrio_ABP" + Vorfahrt_Ausfahrweiche : Struct + Weiche_von_Haupt-Sep_belegt : Bool + Weiche_von_Ausfahr-Sep_belegt : Bool + Haupstrecke_gefahren : Int + AMR_gefahren : Int + Temp: + ErrQuit : Bool + ErrAnz : Bool + Stau_raus : Bool + Start_ok : Bool + B_aktiv : Bool + B_AusSchleuse : Bool + Antrieb_aktiv : Bool + Antrieb_start : Bool + Antrieb_stop : Bool + Fahren_Ok : Bool + Constant: + +--- NW 1: Systemzeug --- +// MPS1-Bereich: + A "DAMR_Bereich".A01_UH06.AnlageEin + = Schleuse_vor_Einfahrt.Dyn.Sk.Auto_akt + = Weiche_Einfahrt.Dyn.Status.Auto_akt + = Sks_Arbeitsplatz.Dyn.Sk_zum_Beladeplatz.Auto_akt + = Schleuse_Vorstau.Dyn.Sk.Auto_akt + = Schleuse_Platz_1.Dyn.Sk.Auto_akt + = Schleuse_Platz_2.Dyn.Sk.Auto_akt + = Schleuse_Platz_3.Dyn.Sk.Auto_akt + = Sks_Arbeitsplatz.Dyn.Sk_aus_Beladeplatz.Auto_akt + = Schleuse_Ausfahrt.Dyn.Sk.Auto_akt + = Schleuse_vor_Ausfahrt.Dyn.Sk.Auto_akt + + AN "DAMR_Bereich".A01_UH06.BereichErr + = Schleuse_vor_Einfahrt.Dyn.Sk.Bereich_ok + = Weiche_Einfahrt.Dyn.Status.Bereich_ok + = Sks_Arbeitsplatz.Dyn.Sk_zum_Beladeplatz.Bereich_ok + = Schleuse_Vorstau.Dyn.Sk.Bereich_ok + = Schleuse_Platz_1.Dyn.Sk.Bereich_ok + = Schleuse_Platz_2.Dyn.Sk.Bereich_ok + = Schleuse_Platz_3.Dyn.Sk.Bereich_ok + = Sks_Arbeitsplatz.Dyn.Sk_aus_Beladeplatz.Bereich_ok + = Schleuse_Ausfahrt.Dyn.Sk.Bereich_ok + = Schleuse_vor_Ausfahrt.Dyn.Sk.Bereich_ok + + +--- NW 2: Störungen quittieren --- + A "DAMR_Bereich".A01_UZ0601.StOk_aktiv + = ErrQuit + S "DArbeitsplätze_Antriebe"."MA _Einfahrt_MPS1".Stat.A_start + S "DArbeitsplätze_Antriebe"."MA _Nachstau1_MPS1".Stat.A_start + S "DArbeitsplätze_Antriebe"."MA _Nachstau2_MPS1".Stat.A_start + S "DArbeitsplätze_Antriebe"."MA _Ausfahrt_MPS1".Stat.A_start + S "DArbeitsplätze_Antriebe".MA0112.Stat.A_start + + +--- NW 3: Schleuse vor Einfahrt --- +CALL FB "None" , (Schleusen_Nr:=3450, ErrQuit:=ErrQuit, B_VorSchleuse:="BG3444", B_InSchleuse:="BG3450", B_AusSchleuse:=?, B_Stau_raus:=?, Start_Ok:=1, Antrieb_Schleuse_aktiv:="MA0112", Antrieb_plus_aktiv:=1, Schleuse_geöffnet:="MB3450", RestZeit_Bereich_plus:=?, Y_Schleuse_Auf:="DArbeitsplätze_Zylinder".Schleuse_Vor_Einfahrt_MPS1.Stat.Ast, Error:=DB608.DBW326, Antrieb_Schleuse_vor:="DArbeitsplätze_Antriebe".MA0112.Stat.A_vor, Antrieb_Schleuse_start:="DArbeitsplätze_Antriebe".MA0112.Stat.A_start, Antrieb_Schleuse_stop:="DArbeitsplätze_Antriebe".MA0112.Stat.Stop_vor, Antrieb_Schleuse_PS:="DArbeitsplätze_Antriebe".MA0112.Stat.A_PS, Antrieb_plus_vor:=?, Antrieb_plus_start:=?, hStOk:=ErrAnz) // Über Weiche_Einfahrt | Über Weiche_Einfahrt | Über Weiche_Einfahrt + + +--- NW 4: Weiche Einfahrt --- +CALL FB "None" , (Weichen_Nr:=3452, ErrQuit:=ErrQuit, Fahren_Ok:=1, B_Ziel_gerade:="DArbeitsplätze_Sensoren".Stau_nach_Einfahrt_MPS1.Stat.B_Akt, B_Ziel_abzweig:="DArbeitsplätze_Sensoren".Stau_Einfahrt_MPS1.Stat.B_Akt, Antrieb_Weiche_aktiv:="MA0112", Antrieb_Gerade_aktiv:="MA0112", Antrieb_Abzweig_aktiv:="MA0106", Weiche_ist_AST:="MB3452", Y_Weiche_gerade:=?, Y_Weiche_abzweig:="DArbeitsplätze_Zylinder".Weiche_Einfahrt_MPS1.Stat.Ast, Error:=DB608.DBW328, Antrieb_Weiche_vor:="DArbeitsplätze_Antriebe".MA0112.Stat.A_vor, Antrieb_Weiche_stop:="DArbeitsplätze_Antriebe".MA0112.Stat.Stop_vor, Antrieb_Weiche_gerade_vor:=?, Antrieb_Weiche_gerade_stop:=?, Antrieb_Weiche_abzweig_vor:="DArbeitsplätze_Antriebe"."MA _Einfahrt_MPS1".Stat.A_vor, Antrieb_Weiche_abzweig_stop:="DArbeitsplätze_Antriebe"."MA _Einfahrt_MPS1".Stat.Stop_vor, hStOk:=ErrAnz) // s.o. | s.o. + + +--- NW 5: Schrittketten Arbeitsplätze ver-/entsorgen --- +CALL FB "None" , (Arbeitsplatz_Nr:=16#B100, ErrQuit:=ErrQuit, B_In_Schleuse_Vorstau:="BG3453", B_an_Platz_1:="BG3455", B_an_Platz_2:="BG3461", B_an_Platz_3:="BG3465", B_Nachstau_Einfahrt:="DArbeitsplätze_Sensoren".Stau_Ausfahrt_MPS1.Stat.B_Akt, B_Nachstau_Ausfahrt:="BG3471", Y_Vorstau:="MB3453", Y_Platz_1:="MB3455", Y_Platz_2:="MB3461", Y_Platz_3:="MB3465", Antrieb_Vorstau_aktiv:="MA0106", Antrieb_Nachstau_1_aktiv:="MA0107", Antrieb_Nachstau_2_aktiv:="MA0111", Antrieb_Nachstau_3_aktiv:="MA0110", Y_Weiche_zu_Platz_1:="DArbeitsplätze_Zylinder".Weiche_zu_Platz1_MPS1.Stat.Ast, Y_Weiche_zu_Platz_2:="DArbeitsplätze_Zylinder".Weiche_zu_Platz2_MPS1.Stat.Ast, Y_Weiche_von_Platz_1:="DArbeitsplätze_Zylinder".Weiche_von_Platz1_MPS1.Stat.Ast, Y_Weiche_von_Platz_2:="DArbeitsplätze_Zylinder".Weiche_von_Platz2_MPS1.Stat.Ast, Antrieb_Nachstau_1_vor:="DArbeitsplätze_Antriebe"."MA _Nachstau1_MPS1".Stat.A_vor, Antrieb_Nachstau_2_vor:="DArbeitsplätze_Antriebe"."MA _Nachstau2_MPS1".Stat.A_vor, Trolley_hat_ABS_erreicht:=Schleuse_Vorstau.B_AusSchleuse, Reset_Vorstau_Schleuse:=Schleuse_Vorstau.Dyn.Sk.Reset, Reset_Platz_1_Stopper:=Schleuse_Platz_1.Dyn.Sk.Reset, Reset_Platz_2_Stopper:=Schleuse_Platz_2.Dyn.Sk.Reset, Reset_Platz_3_Stopper:=Schleuse_Platz_3.Dyn.Sk.Reset, Error:=DB608.DBW110, Antrieb_Vorstau_vor:="DArbeitsplätze_Antriebe"."MA _Einfahrt_MPS1".Stat.A_vor, Antrieb_Nachstau_3_vor:="DArbeitsplätze_Antriebe"."MA _Ausfahrt_MPS1".Stat.A_vor, hStOk:=ErrAnz) // XY00: X=A(PS), X=B(MPS), Y= Nummer des Platzes + +// Anzeigen: + A "DAMR_Bereich".A01_UH06.AnlageEin + A Sks_Arbeitsplatz.Dyn.Status.Arbeitsplatz_aktiviert + = "PF0056" + + A Sks_Arbeitsplatz.Dyn.SS.Externe_Anzeige + = "PF3444" + + +--- NW 6: Schleuse Vorstau --- +CALL FB "None" , (Schleusen_Nr:=3453, ErrQuit:=ErrQuit, B_VorSchleuse:="BG3452", B_InSchleuse:="BG3453", B_AusSchleuse:=?, B_Stau_raus:=?, Start_Ok:=1, Antrieb_Schleuse_aktiv:="MA0106", Antrieb_plus_aktiv:=1, Schleuse_geöffnet:="MB3453", RestZeit_Bereich_plus:=?, Y_Schleuse_Auf:="DArbeitsplätze_Zylinder".Schleuse_Vorstau_MPS1.Stat.Ast, Error:=DB608.DBW330, Antrieb_Schleuse_vor:="DArbeitsplätze_Antriebe"."MA _Einfahrt_MPS1".Stat.A_vor, Antrieb_Schleuse_start:="DArbeitsplätze_Antriebe"."MA _Einfahrt_MPS1".Stat.A_start, Antrieb_Schleuse_stop:="DArbeitsplätze_Antriebe"."MA _Einfahrt_MPS1".Stat.Stop_vor, Antrieb_Schleuse_PS:="DArbeitsplätze_Antriebe"."MA _Einfahrt_MPS1".Stat.A_PS, Antrieb_plus_vor:=?, Antrieb_plus_start:=?, hStOk:=ErrAnz) + + +--- NW 7: Schleuse Platz 1 --- +CALL FB "None" , (Schleusen_Nr:=3455, ErrQuit:=ErrQuit, B_VorSchleuse:=?, B_InSchleuse:="BG3455", B_AusSchleuse:=?, B_Stau_raus:=?, Start_Ok:=1, Antrieb_Schleuse_aktiv:=1, Antrieb_plus_aktiv:="MA0107", Schleuse_geöffnet:="MB3455", RestZeit_Bereich_plus:=?, Y_Schleuse_Auf:="DArbeitsplätze_Zylinder".Schleuse_Platz1_MPS1.Stat.Ast, Error:=DB608.DBW332, Antrieb_Schleuse_vor:=?, Antrieb_Schleuse_start:=?, Antrieb_Schleuse_stop:=?, Antrieb_Schleuse_PS:=?, Antrieb_plus_vor:="DArbeitsplätze_Antriebe"."MA _Nachstau1_MPS1".Stat.A_vor, Antrieb_plus_start:=?, hStOk:=ErrAnz) + + A Schleuse_Platz_1.Dyn.Status.Trolley_draussen + S Sks_Arbeitsplatz.Dyn.Platz_1.Trolley_hat_Arbeitsplatz_verlassen + JCN P1D + + L Schleuse_Platz_1.Dyn.TrolleyID_ausgefahren + T Sks_Arbeitsplatz.Dyn.Platz_1.TrolleyID_ausgefahren + +P1D: NOP 0 + + +--- NW 8: Schleuse Platz 2 --- +CALL FB "None" , (Schleusen_Nr:=3461, ErrQuit:=ErrQuit, B_VorSchleuse:=?, B_InSchleuse:="BG3461", B_AusSchleuse:=?, B_Stau_raus:=?, Start_Ok:=1, Antrieb_Schleuse_aktiv:=1, Antrieb_plus_aktiv:="MA0111", Schleuse_geöffnet:="MB3461", RestZeit_Bereich_plus:=?, Y_Schleuse_Auf:="DArbeitsplätze_Zylinder".Schleuse_Platz2_MPS1.Stat.Ast, Error:=DB608.DBW334, Antrieb_Schleuse_vor:=?, Antrieb_Schleuse_start:=?, Antrieb_Schleuse_stop:=?, Antrieb_Schleuse_PS:=?, Antrieb_plus_vor:="DArbeitsplätze_Antriebe"."MA _Nachstau2_MPS1".Stat.A_vor, Antrieb_plus_start:=?, hStOk:=ErrAnz) + + A Schleuse_Platz_2.Dyn.Status.Trolley_draussen + S Sks_Arbeitsplatz.Dyn.Platz_2.Trolley_hat_Arbeitsplatz_verlassen + JCN P2D + + L Schleuse_Platz_2.Dyn.TrolleyID_ausgefahren + T Sks_Arbeitsplatz.Dyn.Platz_2.TrolleyID_ausgefahren + +P2D: NOP 0 + + +--- NW 9: Schleuse Platz 3 --- +CALL FB "None" , (Schleusen_Nr:=3465, ErrQuit:=ErrQuit, B_VorSchleuse:=?, B_InSchleuse:="BG3465", B_AusSchleuse:=?, B_Stau_raus:=?, Start_Ok:=1, Antrieb_Schleuse_aktiv:=1, Antrieb_plus_aktiv:="MA0110", Schleuse_geöffnet:="MB3465", RestZeit_Bereich_plus:=?, Y_Schleuse_Auf:="DArbeitsplätze_Zylinder".Schleuse_Platz3_MPS1.Stat.Ast, Error:=DB608.DBW336, Antrieb_Schleuse_vor:=?, Antrieb_Schleuse_start:=?, Antrieb_Schleuse_stop:=?, Antrieb_Schleuse_PS:=?, Antrieb_plus_vor:="DArbeitsplätze_Antriebe"."MA _Ausfahrt_MPS1".Stat.A_vor, Antrieb_plus_start:=?, hStOk:=ErrAnz) + + A Schleuse_Platz_3.Dyn.Status.Trolley_draussen + S Sks_Arbeitsplatz.Dyn.Platz_3.Trolley_hat_Arbeitsplatz_verlassen + JCN P3D + + L Schleuse_Platz_3.Dyn.TrolleyID_ausgefahren + T Sks_Arbeitsplatz.Dyn.Platz_3.TrolleyID_ausgefahren + +P3D: NOP 0 + + +--- NW 10: Schleuse Ausfahrt --- +CALL FB "None" , (Schleusen_Nr:=3471, ErrQuit:=ErrQuit, B_VorSchleuse:="BG3470", B_InSchleuse:="BG3471", B_AusSchleuse:="BG3541", B_Stau_raus:="DArbeitsplätze_Sensoren".Stau_nach_Ausfahrt_MPS1.Stat.B_Akt, Start_Ok:=1, Antrieb_Schleuse_aktiv:="MA0110", Antrieb_plus_aktiv:="MA0112", Schleuse_geöffnet:="MB3471", RestZeit_Bereich_plus:=?, Y_Schleuse_Auf:="DArbeitsplätze_Zylinder".Schleuse_Ausfahrt_MPS1.Stat.Ast, Error:=DB608.DBW338, Antrieb_Schleuse_vor:="DArbeitsplätze_Antriebe"."MA _Ausfahrt_MPS1".Stat.A_vor, Antrieb_Schleuse_start:="DArbeitsplätze_Antriebe"."MA _Ausfahrt_MPS1".Stat.A_start, Antrieb_Schleuse_stop:="DArbeitsplätze_Antriebe"."MA _Ausfahrt_MPS1".Stat.Stop_vor, Antrieb_Schleuse_PS:="DArbeitsplätze_Antriebe"."MA _Ausfahrt_MPS1".Stat.A_PS, Antrieb_plus_vor:="DArbeitsplätze_Antriebe".MA0112.Stat.A_vor, Antrieb_plus_start:="DArbeitsplätze_Antriebe".MA0112.Stat.A_start, hStOk:=ErrAnz) + +// Ausfahr-Weiche schalten: + A "MB3471" + S "DArbeitsplätze_Zylinder".Weiche_Ausfahrt_MPS1.Stat.Ast + +// Ausfahr-Weiche wieder freigeben: + A Schleuse_Ausfahrt.Dyn.Status.Trolley_draussen + R Vorfahrt_Ausfahrweiche."Weiche_von_Ausfahr-Sep_belegt" + + +--- NW 11: Schleuse Hauptstrecke vor Ausfahrt --- +CALL FB "None" , (Schleusen_Nr:=3473, ErrQuit:=ErrQuit, B_VorSchleuse:="BG3451", B_InSchleuse:="BG3473", B_AusSchleuse:="BG3541", B_Stau_raus:="DArbeitsplätze_Sensoren".Stau_nach_Ausfahrt_MPS1.Stat.B_Akt, Start_Ok:=1, Antrieb_Schleuse_aktiv:="MA0112", Antrieb_plus_aktiv:="MA0112", Schleuse_geöffnet:="MB3473", RestZeit_Bereich_plus:=?, Y_Schleuse_Auf:="DArbeitsplätze_Zylinder".Schleuse_Vor_Ausfahrt_MPS1.Stat.Ast, Error:=DB608.DBW340, Antrieb_Schleuse_vor:="DArbeitsplätze_Antriebe".MA0112.Stat.A_vor, Antrieb_Schleuse_start:="DArbeitsplätze_Antriebe".MA0112.Stat.A_start, Antrieb_Schleuse_stop:="DArbeitsplätze_Antriebe".MA0112.Stat.Stop_vor, Antrieb_Schleuse_PS:="DArbeitsplätze_Antriebe".MA0112.Stat.A_PS, Antrieb_plus_vor:=?, Antrieb_plus_start:=?, hStOk:=ErrAnz) + +// Ausfahr-Weiche zurückschalten: + A "MB3473" + R "DArbeitsplätze_Zylinder".Weiche_Ausfahrt_MPS1.Stat.Ast + +// Ausfahr-Weiche wieder freigeben: + A Schleuse_vor_Ausfahrt.Dyn.Status.Trolley_draussen + R Vorfahrt_Ausfahrweiche."Weiche_von_Haupt-Sep_belegt" + + +--- NW 12: Ausfahr-Priorität --- +CALL FB "None" , (BG_Haupt_Schleuse:="BG3473", Haupt_Schleuse_geöffnet:="MB3473", BG_ABP_Schleuse:="BG3471", ABP_Schleuse_geöffnet:="MB3471", Aktive_ABP:="DPS5_OmniFahren".Aktivierte_ABPs) + + +--- NW 13: Störungen anzeigen --- + A ErrAnz + R ErrAnz + S "DAMR_Bereich".A01_UZ0601.StOk_blinken + + +--- NW 14: Ende --- + BE + diff --git a/=A01+UH06-KF00/Programmbausteine/Anlage/1_Arbeitsplätze/Arbeitsplätze/MPS2_OmniFahren.awl b/=A01+UH06-KF00/Programmbausteine/Anlage/1_Arbeitsplätze/Arbeitsplätze/MPS2_OmniFahren.awl new file mode 100644 index 0000000..aa430fb --- /dev/null +++ b/=A01+UH06-KF00/Programmbausteine/Anlage/1_Arbeitsplätze/Arbeitsplätze/MPS2_OmniFahren.awl @@ -0,0 +1,172 @@ +=== FB 1127: MPS2_OmniFahren [STL] === +INTERFACE: + Input: + Output: + InOut: + Static: + Schleuse_vor_Einfahrt : "MHMOmniSchleuse" + Weiche_Einfahrt : "MHMOmniWeiche" + Schleuse_Vorstau : "MHMOmniSchleuse" + Sks_Arbeitsplatz : "MHM_Arbeitsplatz" + Schleuse_Platz_1 : "MHMOmniSchleuse" + Schleuse_Platz_2 : "MHMOmniSchleuse" + Schleuse_Platz_3 : "MHMOmniSchleuse" + Schleuse_Ausfahrt : "MHMOmniSchleuse" + Schleuse_vor_Ausfahrt : "MHMOmniSchleuse" + Prio_Ausfahrt : "MAusfahrPrio_ABP" + Vorfahrt_Ausfahrweiche : Struct + Weiche_von_Haupt-Sep_belegt : Bool + Weiche_von_Ausfahr-Sep_belegt : Bool + Haupstrecke_gefahren : Int + AMR_gefahren : Int + Temp: + ErrQuit : Bool + ErrAnz : Bool + Stau_raus : Bool + Start_ok : Bool + B_aktiv : Bool + B_AusSchleuse : Bool + Antrieb_aktiv : Bool + Antrieb_start : Bool + Antrieb_stop : Bool + Fahren_Ok : Bool + Constant: + +--- NW 1: Systemzeug --- +// MPS2-Bereich: + A "DAMR_Bereich".A01_UH06.AnlageEin + = Schleuse_vor_Einfahrt.Dyn.Sk.Auto_akt + = Weiche_Einfahrt.Dyn.Status.Auto_akt + = Sks_Arbeitsplatz.Dyn.Sk_zum_Beladeplatz.Auto_akt + = Schleuse_Vorstau.Dyn.Sk.Auto_akt + = Schleuse_Platz_1.Dyn.Sk.Auto_akt + = Schleuse_Platz_2.Dyn.Sk.Auto_akt + = Schleuse_Platz_3.Dyn.Sk.Auto_akt + = Sks_Arbeitsplatz.Dyn.Sk_aus_Beladeplatz.Auto_akt + = Schleuse_Ausfahrt.Dyn.Sk.Auto_akt + = Schleuse_vor_Ausfahrt.Dyn.Sk.Auto_akt + + AN "DAMR_Bereich".A01_UH06.BereichErr + = Schleuse_vor_Einfahrt.Dyn.Sk.Bereich_ok + = Weiche_Einfahrt.Dyn.Status.Bereich_ok + = Sks_Arbeitsplatz.Dyn.Sk_zum_Beladeplatz.Bereich_ok + = Schleuse_Vorstau.Dyn.Sk.Bereich_ok + = Schleuse_Platz_1.Dyn.Sk.Bereich_ok + = Schleuse_Platz_2.Dyn.Sk.Bereich_ok + = Schleuse_Platz_3.Dyn.Sk.Bereich_ok + = Sks_Arbeitsplatz.Dyn.Sk_aus_Beladeplatz.Bereich_ok + = Schleuse_Ausfahrt.Dyn.Sk.Bereich_ok + = Schleuse_vor_Ausfahrt.Dyn.Sk.Bereich_ok + + +--- NW 2: Störungen quittieren --- + A "DAMR_Bereich".A01_UZ0602.StOk_aktiv + = ErrQuit + S "DArbeitsplätze_Antriebe"."MA _Einfahrt_MPS2".Stat.A_start + S "DArbeitsplätze_Antriebe"."MA _Nachstau1_MPS2".Stat.A_start + S "DArbeitsplätze_Antriebe"."MA _Nachstau2_MPS2".Stat.A_start + S "DArbeitsplätze_Antriebe"."MA _Ausfahrt_MPS2".Stat.A_start + S "DArbeitsplätze_Antriebe".MA0105.Stat.A_start + S "DArbeitsplätze_Antriebe".MA0112.Stat.A_start + + +--- NW 3: Schleuse vor Einfahrt --- +CALL FB "None" , (Schleusen_Nr:=3421, ErrQuit:=ErrQuit, B_VorSchleuse:="BG3414", B_InSchleuse:="BG3421", B_AusSchleuse:=?, B_Stau_raus:=?, Start_Ok:=1, Antrieb_Schleuse_aktiv:="MA0105", Antrieb_plus_aktiv:=1, Schleuse_geöffnet:="MB3421", RestZeit_Bereich_plus:=?, Y_Schleuse_Auf:="DArbeitsplätze_Zylinder".Schleuse_Vor_Einfahrt_MPS2.Stat.Ast, Error:=DB608.DBW310, Antrieb_Schleuse_vor:="DArbeitsplätze_Antriebe".MA0105.Stat.A_vor, Antrieb_Schleuse_start:="DArbeitsplätze_Antriebe".MA0105.Stat.A_start, Antrieb_Schleuse_stop:="DArbeitsplätze_Antriebe".MA0105.Stat.Stop_vor, Antrieb_Schleuse_PS:="DArbeitsplätze_Antriebe".MA0105.Stat.A_PS, Antrieb_plus_vor:=?, Antrieb_plus_start:=?, hStOk:=ErrAnz) // Über Weiche_Einfahrt | Über Weiche_Einfahrt | Über Weiche_Einfahrt + + +--- NW 4: Weiche Einfahrt --- +CALL FB "None" , (Weichen_Nr:=3422, ErrQuit:=ErrQuit, Fahren_Ok:=1, B_Ziel_gerade:="DArbeitsplätze_Sensoren".Stau_nach_Einfahrt_MPS2.Stat.B_Akt, B_Ziel_abzweig:="DArbeitsplätze_Sensoren".Stau_Einfahrt_MPS2.Stat.B_Akt, Antrieb_Weiche_aktiv:="MA0105", Antrieb_Gerade_aktiv:="MA0105", Antrieb_Abzweig_aktiv:="MA0101", Weiche_ist_AST:="MB3422", Y_Weiche_gerade:=?, Y_Weiche_abzweig:="DArbeitsplätze_Zylinder".Weiche_Einfahrt_MPS2.Stat.Ast, Error:=DB608.DBW312, Antrieb_Weiche_vor:="DArbeitsplätze_Antriebe".MA0105.Stat.A_vor, Antrieb_Weiche_stop:="DArbeitsplätze_Antriebe".MA0105.Stat.Stop_vor, Antrieb_Weiche_gerade_vor:=?, Antrieb_Weiche_gerade_stop:=?, Antrieb_Weiche_abzweig_vor:="DArbeitsplätze_Antriebe"."MA _Einfahrt_MPS2".Stat.A_vor, Antrieb_Weiche_abzweig_stop:="DArbeitsplätze_Antriebe"."MA _Einfahrt_MPS2".Stat.Stop_vor, hStOk:=ErrAnz) // s.o. | s.o. + + +--- NW 5: Schrittketten Arbeitsplätze ver-/entsorgen --- +CALL FB "None" , (Arbeitsplatz_Nr:=16#B200, ErrQuit:=ErrQuit, B_In_Schleuse_Vorstau:="BG3423", B_an_Platz_1:="BG3425", B_an_Platz_2:="BG3431", B_an_Platz_3:="BG3435", B_Nachstau_Einfahrt:="DArbeitsplätze_Sensoren".Stau_Ausfahrt_MPS2.Stat.B_Akt, B_Nachstau_Ausfahrt:="BG3441", Y_Vorstau:="MB3423", Y_Platz_1:="MB3425", Y_Platz_2:="MB3431", Y_Platz_3:="MB3435", Antrieb_Vorstau_aktiv:="MA0101", Antrieb_Nachstau_1_aktiv:="MA0102", Antrieb_Nachstau_2_aktiv:="MA0103", Antrieb_Nachstau_3_aktiv:="MA0104", Y_Weiche_zu_Platz_1:="DArbeitsplätze_Zylinder".Weiche_zu_Platz1_MPS2.Stat.Ast, Y_Weiche_zu_Platz_2:="DArbeitsplätze_Zylinder".Weiche_zu_Platz2_MPS2.Stat.Ast, Y_Weiche_von_Platz_1:="DArbeitsplätze_Zylinder".Weiche_von_Platz1_MPS2.Stat.Ast, Y_Weiche_von_Platz_2:="DArbeitsplätze_Zylinder".Weiche_von_Platz2_MPS2.Stat.Ast, Antrieb_Nachstau_1_vor:="DArbeitsplätze_Antriebe"."MA _Nachstau1_MPS2".Stat.A_vor, Antrieb_Nachstau_2_vor:="DArbeitsplätze_Antriebe"."MA _Nachstau2_MPS2".Stat.A_vor, Trolley_hat_ABS_erreicht:=Schleuse_Vorstau.B_AusSchleuse, Reset_Vorstau_Schleuse:=Schleuse_Vorstau.Dyn.Sk.Reset, Reset_Platz_1_Stopper:=Schleuse_Platz_1.Dyn.Sk.Reset, Reset_Platz_2_Stopper:=Schleuse_Platz_2.Dyn.Sk.Reset, Reset_Platz_3_Stopper:=Schleuse_Platz_3.Dyn.Sk.Reset, Error:=DB608.DBW112, Antrieb_Vorstau_vor:="DArbeitsplätze_Antriebe"."MA _Einfahrt_MPS2".Stat.A_vor, Antrieb_Nachstau_3_vor:="DArbeitsplätze_Antriebe"."MA _Ausfahrt_MPS2".Stat.A_vor, hStOk:=ErrAnz) // XY00: X=A(PS), X=B(MPS), Y= Nummer des Platzes + +// Anzeigen: + A "DAMR_Bereich".A01_UH06.AnlageEin + A Sks_Arbeitsplatz.Dyn.Status.Arbeitsplatz_aktiviert + = "PF0054" + + A Sks_Arbeitsplatz.Dyn.SS.Externe_Anzeige + = "PF3420" + + +--- NW 6: Schleuse Vorstau --- +CALL FB "None" , (Schleusen_Nr:=3423, ErrQuit:=ErrQuit, B_VorSchleuse:="BG3422", B_InSchleuse:="BG3423", B_AusSchleuse:=?, B_Stau_raus:=?, Start_Ok:=1, Antrieb_Schleuse_aktiv:="MA0101", Antrieb_plus_aktiv:=1, Schleuse_geöffnet:="MB3423", RestZeit_Bereich_plus:=?, Y_Schleuse_Auf:="DArbeitsplätze_Zylinder".Schleuse_Vorstau_MPS2.Stat.Ast, Error:=DB608.DBW314, Antrieb_Schleuse_vor:="DArbeitsplätze_Antriebe"."MA _Einfahrt_MPS2".Stat.A_vor, Antrieb_Schleuse_start:="DArbeitsplätze_Antriebe"."MA _Einfahrt_MPS2".Stat.A_start, Antrieb_Schleuse_stop:="DArbeitsplätze_Antriebe"."MA _Einfahrt_MPS2".Stat.Stop_vor, Antrieb_Schleuse_PS:="DArbeitsplätze_Antriebe"."MA _Einfahrt_MPS2".Stat.A_PS, Antrieb_plus_vor:=?, Antrieb_plus_start:=?, hStOk:=ErrAnz) + + +--- NW 7: Schleuse Platz 1 --- +CALL FB "None" , (Schleusen_Nr:=3425, ErrQuit:=ErrQuit, B_VorSchleuse:=?, B_InSchleuse:="BG3425", B_AusSchleuse:=?, B_Stau_raus:=?, Start_Ok:=1, Antrieb_Schleuse_aktiv:=1, Antrieb_plus_aktiv:="MA0102", Schleuse_geöffnet:="MB3425", RestZeit_Bereich_plus:=?, Y_Schleuse_Auf:="DArbeitsplätze_Zylinder".Schleuse_Platz1_MPS2.Stat.Ast, Error:=DB608.DBW316, Antrieb_Schleuse_vor:=?, Antrieb_Schleuse_start:=?, Antrieb_Schleuse_stop:=?, Antrieb_Schleuse_PS:=?, Antrieb_plus_vor:="DArbeitsplätze_Antriebe"."MA _Nachstau1_MPS2".Stat.A_vor, Antrieb_plus_start:=?, hStOk:=ErrAnz) + + A Schleuse_Platz_1.Dyn.Status.Trolley_draussen + S Sks_Arbeitsplatz.Dyn.Platz_1.Trolley_hat_Arbeitsplatz_verlassen + JCN P1D + + L Schleuse_Platz_1.Dyn.TrolleyID_ausgefahren + T Sks_Arbeitsplatz.Dyn.Platz_1.TrolleyID_ausgefahren + +P1D: NOP 0 + + +--- NW 8: Schleuse Platz 2 --- +CALL FB "None" , (Schleusen_Nr:=3431, ErrQuit:=ErrQuit, B_VorSchleuse:=?, B_InSchleuse:="BG3431", B_AusSchleuse:=?, B_Stau_raus:=?, Start_Ok:=1, Antrieb_Schleuse_aktiv:=1, Antrieb_plus_aktiv:="MA0103", Schleuse_geöffnet:="MB3431", RestZeit_Bereich_plus:=?, Y_Schleuse_Auf:="DArbeitsplätze_Zylinder".Schleuse_Platz2_MPS2.Stat.Ast, Error:=DB608.DBW318, Antrieb_Schleuse_vor:=?, Antrieb_Schleuse_start:=?, Antrieb_Schleuse_stop:=?, Antrieb_Schleuse_PS:=?, Antrieb_plus_vor:="DArbeitsplätze_Antriebe"."MA _Nachstau2_MPS2".Stat.A_vor, Antrieb_plus_start:=?, hStOk:=ErrAnz) + + A Schleuse_Platz_2.Dyn.Status.Trolley_draussen + S Sks_Arbeitsplatz.Dyn.Platz_2.Trolley_hat_Arbeitsplatz_verlassen + JCN P2D + + L Schleuse_Platz_2.Dyn.TrolleyID_ausgefahren + T Sks_Arbeitsplatz.Dyn.Platz_2.TrolleyID_ausgefahren + +P2D: NOP 0 + + +--- NW 9: Schleuse Platz 3 --- +CALL FB "None" , (Schleusen_Nr:=3435, ErrQuit:=ErrQuit, B_VorSchleuse:=?, B_InSchleuse:="BG3435", B_AusSchleuse:=?, B_Stau_raus:=?, Start_Ok:=1, Antrieb_Schleuse_aktiv:=1, Antrieb_plus_aktiv:="MA0104", Schleuse_geöffnet:="MB3435", RestZeit_Bereich_plus:=?, Y_Schleuse_Auf:="DArbeitsplätze_Zylinder".Schleuse_Platz3_MPS2.Stat.Ast, Error:=DB608.DBW320, Antrieb_Schleuse_vor:=?, Antrieb_Schleuse_start:=?, Antrieb_Schleuse_stop:=?, Antrieb_Schleuse_PS:=?, Antrieb_plus_vor:="DArbeitsplätze_Antriebe"."MA _Ausfahrt_MPS2".Stat.A_vor, Antrieb_plus_start:=?, hStOk:=ErrAnz) + + A Schleuse_Platz_3.Dyn.Status.Trolley_draussen + S Sks_Arbeitsplatz.Dyn.Platz_3.Trolley_hat_Arbeitsplatz_verlassen + JCN P3D + + L Schleuse_Platz_3.Dyn.TrolleyID_ausgefahren + T Sks_Arbeitsplatz.Dyn.Platz_3.TrolleyID_ausgefahren + +P3D: NOP 0 + + +--- NW 10: Schleuse Ausfahrt --- +CALL FB "None" , (Schleusen_Nr:=3441, ErrQuit:=ErrQuit, B_VorSchleuse:="BG3440", B_InSchleuse:="BG3441", B_AusSchleuse:="BG3444", B_Stau_raus:="DArbeitsplätze_Sensoren".Stau_nach_Ausfahrt_MPS2.Stat.B_Akt, Start_Ok:=1, Antrieb_Schleuse_aktiv:="MA0104", Antrieb_plus_aktiv:="MA0112", Schleuse_geöffnet:="MB3441", RestZeit_Bereich_plus:=?, Y_Schleuse_Auf:="DArbeitsplätze_Zylinder".Schleuse_Ausfahrt_MPS2.Stat.Ast, Error:=DB608.DBW322, Antrieb_Schleuse_vor:="DArbeitsplätze_Antriebe"."MA _Ausfahrt_MPS2".Stat.A_vor, Antrieb_Schleuse_start:="DArbeitsplätze_Antriebe"."MA _Ausfahrt_MPS2".Stat.A_start, Antrieb_Schleuse_stop:="DArbeitsplätze_Antriebe"."MA _Ausfahrt_MPS2".Stat.Stop_vor, Antrieb_Schleuse_PS:="DArbeitsplätze_Antriebe"."MA _Ausfahrt_MPS2".Stat.A_PS, Antrieb_plus_vor:="DArbeitsplätze_Antriebe".MA0112.Stat.A_vor, Antrieb_plus_start:="DArbeitsplätze_Antriebe".MA0112.Stat.A_start, hStOk:=ErrAnz) + +// Ausfahr-Weiche schalten: + A "MB3441" + S "DArbeitsplätze_Zylinder".Weiche_Ausfahrt_MPS2.Stat.Ast + +// Ausfahr-Weiche wieder freigeben: + A Schleuse_Ausfahrt.Dyn.Status.Trolley_draussen + R Vorfahrt_Ausfahrweiche."Weiche_von_Ausfahr-Sep_belegt" + + +--- NW 11: Schleuse Hauptstrecke vor Ausfahrt --- +CALL FB "None" , (Schleusen_Nr:=3443, ErrQuit:=ErrQuit, B_VorSchleuse:="BG3445", B_InSchleuse:="BG3443", B_AusSchleuse:="BG3444", B_Stau_raus:="DArbeitsplätze_Sensoren".Stau_nach_Ausfahrt_MPS2.Stat.B_Akt, Start_Ok:=1, Antrieb_Schleuse_aktiv:="MA0105", Antrieb_plus_aktiv:="MA0112", Schleuse_geöffnet:="MB3443", RestZeit_Bereich_plus:=?, Y_Schleuse_Auf:="DArbeitsplätze_Zylinder".Schleuse_Vor_Ausfahrt_MPS2.Stat.Ast, Error:=DB608.DBW324, Antrieb_Schleuse_vor:="DArbeitsplätze_Antriebe".MA0105.Stat.A_vor, Antrieb_Schleuse_start:="DArbeitsplätze_Antriebe".MA0105.Stat.A_start, Antrieb_Schleuse_stop:="DArbeitsplätze_Antriebe".MA0105.Stat.Stop_vor, Antrieb_Schleuse_PS:="DArbeitsplätze_Antriebe".MA0105.Stat.A_PS, Antrieb_plus_vor:="DArbeitsplätze_Antriebe".MA0112.Stat.A_vor, Antrieb_plus_start:="DArbeitsplätze_Antriebe".MA0112.Stat.A_start, hStOk:=ErrAnz) + +// Ausfahr-Weiche zurückschalten: + A "MB3443" + R "DArbeitsplätze_Zylinder".Weiche_Ausfahrt_MPS2.Stat.Ast + +// Ausfahr-Weiche wieder freigeben: + A Schleuse_vor_Ausfahrt.Dyn.Status.Trolley_draussen + R Vorfahrt_Ausfahrweiche."Weiche_von_Haupt-Sep_belegt" + + +--- NW 12: Ausfahr-Priorität --- +CALL FB "None" , (BG_Haupt_Schleuse:="BG3443", Haupt_Schleuse_geöffnet:="MB3443", BG_ABP_Schleuse:="BG3441", ABP_Schleuse_geöffnet:="MB3441", Aktive_ABP:="DPS5_OmniFahren".Aktivierte_ABPs) + + +--- NW 13: Störungen anzeigen --- + A ErrAnz + R ErrAnz + S "DAMR_Bereich".A01_UZ0602.StOk_blinken + + +--- NW 14: Ende --- + BE + diff --git a/=A01+UH06-KF00/Programmbausteine/Anlage/1_Arbeitsplätze/Arbeitsplätze/MPS3_OmniFahren.awl b/=A01+UH06-KF00/Programmbausteine/Anlage/1_Arbeitsplätze/Arbeitsplätze/MPS3_OmniFahren.awl new file mode 100644 index 0000000..c925897 --- /dev/null +++ b/=A01+UH06-KF00/Programmbausteine/Anlage/1_Arbeitsplätze/Arbeitsplätze/MPS3_OmniFahren.awl @@ -0,0 +1,171 @@ +=== FB 1126: MPS3_OmniFahren [STL] === +INTERFACE: + Input: + Output: + InOut: + Static: + Schleuse_vor_Einfahrt : "MHMOmniSchleuse" + Weiche_Einfahrt : "MHMOmniWeiche" + Schleuse_Vorstau : "MHMOmniSchleuse" + Sks_Arbeitsplatz : "MHM_Arbeitsplatz" + Schleuse_Platz_1 : "MHMOmniSchleuse" + Schleuse_Platz_2 : "MHMOmniSchleuse" + Schleuse_Platz_3 : "MHMOmniSchleuse" + Schleuse_Ausfahrt : "MHMOmniSchleuse" + Schleuse_vor_Ausfahrt : "MHMOmniSchleuse" + Prio_Ausfahrt : "MAusfahrPrio_ABP" + Vorfahrt_Ausfahrweiche : Struct + Weiche_von_Haupt-Sep_belegt : Bool + Weiche_von_Ausfahr-Sep_belegt : Bool + Haupstrecke_gefahren : Int + AMR_gefahren : Int + Temp: + ErrQuit : Bool + ErrAnz : Bool + Stau_raus : Bool + Start_ok : Bool + B_aktiv : Bool + B_AusSchleuse : Bool + Antrieb_aktiv : Bool + Antrieb_start : Bool + Antrieb_stop : Bool + Fahren_Ok : Bool + Constant: + +--- NW 1: Systemzeug --- +// MPS3-Bereich: + A "DAMR_Bereich".A01_UH06.AnlageEin + = Schleuse_vor_Einfahrt.Dyn.Sk.Auto_akt + = Weiche_Einfahrt.Dyn.Status.Auto_akt + = Sks_Arbeitsplatz.Dyn.Sk_zum_Beladeplatz.Auto_akt + = Schleuse_Vorstau.Dyn.Sk.Auto_akt + = Schleuse_Platz_1.Dyn.Sk.Auto_akt + = Schleuse_Platz_2.Dyn.Sk.Auto_akt + = Schleuse_Platz_3.Dyn.Sk.Auto_akt + = Sks_Arbeitsplatz.Dyn.Sk_aus_Beladeplatz.Auto_akt + = Schleuse_Ausfahrt.Dyn.Sk.Auto_akt + = Schleuse_vor_Ausfahrt.Dyn.Sk.Auto_akt + + AN "DAMR_Bereich".A01_UH06.BereichErr + = Schleuse_vor_Einfahrt.Dyn.Sk.Bereich_ok + = Weiche_Einfahrt.Dyn.Status.Bereich_ok + = Sks_Arbeitsplatz.Dyn.Sk_zum_Beladeplatz.Bereich_ok + = Schleuse_Vorstau.Dyn.Sk.Bereich_ok + = Schleuse_Platz_1.Dyn.Sk.Bereich_ok + = Schleuse_Platz_2.Dyn.Sk.Bereich_ok + = Schleuse_Platz_3.Dyn.Sk.Bereich_ok + = Sks_Arbeitsplatz.Dyn.Sk_aus_Beladeplatz.Bereich_ok + = Schleuse_Ausfahrt.Dyn.Sk.Bereich_ok + = Schleuse_vor_Ausfahrt.Dyn.Sk.Bereich_ok + + +--- NW 2: Störungen quittieren --- + A "DAMR_Bereich".A01_UZ0603.StOk_aktiv + = ErrQuit + S "DArbeitsplätze_Antriebe"."MA _Einfahrt_MPS3".Stat.A_start + S "DArbeitsplätze_Antriebe"."MA _Nachstau1_MPS3".Stat.A_start + S "DArbeitsplätze_Antriebe"."MA _Nachstau2_MPS3".Stat.A_start + S "DArbeitsplätze_Antriebe"."MA _Ausfahrt_MPS3".Stat.A_start + S "DArbeitsplätze_Antriebe".MA0105.Stat.A_start + + +--- NW 3: Schleuse vor Einfahrt --- +CALL FB "None" , (Schleusen_Nr:=3390, ErrQuit:=ErrQuit, B_VorSchleuse:="BG3384", B_InSchleuse:="BG3390", B_AusSchleuse:=?, B_Stau_raus:=?, Start_Ok:=1, Antrieb_Schleuse_aktiv:="MA0105", Antrieb_plus_aktiv:=1, Schleuse_geöffnet:="MB3390", RestZeit_Bereich_plus:=?, Y_Schleuse_Auf:="DArbeitsplätze_Zylinder".Schleuse_Vor_Einfahrt_MPS3.Stat.Ast, Error:=DB608.DBW294, Antrieb_Schleuse_vor:="DArbeitsplätze_Antriebe".MA0105.Stat.A_vor, Antrieb_Schleuse_start:="DArbeitsplätze_Antriebe".MA0105.Stat.A_start, Antrieb_Schleuse_stop:="DArbeitsplätze_Antriebe".MA0105.Stat.Stop_vor, Antrieb_Schleuse_PS:="DArbeitsplätze_Antriebe".MA0105.Stat.A_PS, Antrieb_plus_vor:=?, Antrieb_plus_start:=?, hStOk:=ErrAnz) // Über Weiche_Einfahrt | Über Weiche_Einfahrt | Über Weiche_Einfahrt + + +--- NW 4: Weiche Einfahrt --- +CALL FB "None" , (Weichen_Nr:=3392, ErrQuit:=ErrQuit, Fahren_Ok:=1, B_Ziel_gerade:="DArbeitsplätze_Sensoren".Stau_nach_Einfahrt_MPS3.Stat.B_Akt, B_Ziel_abzweig:="DArbeitsplätze_Sensoren".Stau_Einfahrt_MPS3.Stat.B_Akt, Antrieb_Weiche_aktiv:="MA0105", Antrieb_Gerade_aktiv:="MA0105", Antrieb_Abzweig_aktiv:="MA0095", Weiche_ist_AST:="MB3392", Y_Weiche_gerade:=?, Y_Weiche_abzweig:="DArbeitsplätze_Zylinder".Weiche_Einfahrt_MPS3.Stat.Ast, Error:=DB608.DBW296, Antrieb_Weiche_vor:="DArbeitsplätze_Antriebe".MA0105.Stat.A_vor, Antrieb_Weiche_stop:="DArbeitsplätze_Antriebe".MA0105.Stat.Stop_vor, Antrieb_Weiche_gerade_vor:=?, Antrieb_Weiche_gerade_stop:=?, Antrieb_Weiche_abzweig_vor:="DArbeitsplätze_Antriebe"."MA _Einfahrt_MPS3".Stat.A_vor, Antrieb_Weiche_abzweig_stop:="DArbeitsplätze_Antriebe"."MA _Einfahrt_MPS3".Stat.Stop_vor, hStOk:=ErrAnz) // s.o. | s.o. + + +--- NW 5: Schrittketten Arbeitsplätze ver-/entsorgen --- +CALL FB "None" , (Arbeitsplatz_Nr:=16#B300, ErrQuit:=ErrQuit, B_In_Schleuse_Vorstau:="BG3393", B_an_Platz_1:="BG3395", B_an_Platz_2:="BG3401", B_an_Platz_3:="BG3405", B_Nachstau_Einfahrt:="DArbeitsplätze_Sensoren".Stau_Ausfahrt_MPS3.Stat.B_Akt, B_Nachstau_Ausfahrt:="BG3411", Y_Vorstau:="MB3393", Y_Platz_1:="MB3395", Y_Platz_2:="MB3401", Y_Platz_3:="MB3405", Antrieb_Vorstau_aktiv:="MA0095", Antrieb_Nachstau_1_aktiv:="MA0096", Antrieb_Nachstau_2_aktiv:="MA0097", Antrieb_Nachstau_3_aktiv:="MA0100", Y_Weiche_zu_Platz_1:="DArbeitsplätze_Zylinder".Weiche_zu_Platz1_MPS3.Stat.Ast, Y_Weiche_zu_Platz_2:="DArbeitsplätze_Zylinder".Weiche_zu_Platz2_MPS3.Stat.Ast, Y_Weiche_von_Platz_1:="DArbeitsplätze_Zylinder".Weiche_von_Platz1_MPS3.Stat.Ast, Y_Weiche_von_Platz_2:="DArbeitsplätze_Zylinder".Weiche_von_Platz2_MPS3.Stat.Ast, Antrieb_Nachstau_1_vor:="DArbeitsplätze_Antriebe"."MA _Nachstau1_MPS3".Stat.A_vor, Antrieb_Nachstau_2_vor:="DArbeitsplätze_Antriebe"."MA _Nachstau2_MPS3".Stat.A_vor, Trolley_hat_ABS_erreicht:=Schleuse_Vorstau.B_AusSchleuse, Reset_Vorstau_Schleuse:=Schleuse_Vorstau.Dyn.Sk.Reset, Reset_Platz_1_Stopper:=Schleuse_Platz_1.Dyn.Sk.Reset, Reset_Platz_2_Stopper:=Schleuse_Platz_2.Dyn.Sk.Reset, Reset_Platz_3_Stopper:=Schleuse_Platz_3.Dyn.Sk.Reset, Error:=DB608.DBW114, Antrieb_Vorstau_vor:="DArbeitsplätze_Antriebe"."MA _Einfahrt_MPS3".Stat.A_vor, Antrieb_Nachstau_3_vor:="DArbeitsplätze_Antriebe"."MA _Ausfahrt_MPS3".Stat.A_vor, hStOk:=ErrAnz) // XY00: X=A(PS), X=B(MPS), Y= Nummer des Platzes + +// Anzeigen: + A "DAMR_Bereich".A01_UH06.AnlageEin + A Sks_Arbeitsplatz.Dyn.Status.Arbeitsplatz_aktiviert + = "PF0052" + + A Sks_Arbeitsplatz.Dyn.SS.Externe_Anzeige + = "PF3384" + + +--- NW 6: Schleuse Vorstau --- +CALL FB "None" , (Schleusen_Nr:=3393, ErrQuit:=ErrQuit, B_VorSchleuse:="BG3392", B_InSchleuse:="BG3393", B_AusSchleuse:=?, B_Stau_raus:=?, Start_Ok:=1, Antrieb_Schleuse_aktiv:="MA0095", Antrieb_plus_aktiv:=1, Schleuse_geöffnet:="MB3393", RestZeit_Bereich_plus:=?, Y_Schleuse_Auf:="DArbeitsplätze_Zylinder".Schleuse_Vorstau_MPS3.Stat.Ast, Error:=DB608.DBW298, Antrieb_Schleuse_vor:="DArbeitsplätze_Antriebe"."MA _Einfahrt_MPS3".Stat.A_vor, Antrieb_Schleuse_start:="DArbeitsplätze_Antriebe"."MA _Einfahrt_MPS3".Stat.A_start, Antrieb_Schleuse_stop:="DArbeitsplätze_Antriebe"."MA _Einfahrt_MPS3".Stat.Stop_vor, Antrieb_Schleuse_PS:="DArbeitsplätze_Antriebe"."MA _Einfahrt_MPS3".Stat.A_PS, Antrieb_plus_vor:=?, Antrieb_plus_start:=?, hStOk:=ErrAnz) + + +--- NW 7: Schleuse Platz 1 --- +CALL FB "None" , (Schleusen_Nr:=3395, ErrQuit:=ErrQuit, B_VorSchleuse:=?, B_InSchleuse:="BG3395", B_AusSchleuse:=?, B_Stau_raus:=?, Start_Ok:=1, Antrieb_Schleuse_aktiv:=1, Antrieb_plus_aktiv:="MA0096", Schleuse_geöffnet:="MB3395", RestZeit_Bereich_plus:=?, Y_Schleuse_Auf:="DArbeitsplätze_Zylinder".Schleuse_Platz1_MPS3.Stat.Ast, Error:=DB608.DBW300, Antrieb_Schleuse_vor:=?, Antrieb_Schleuse_start:=?, Antrieb_Schleuse_stop:=?, Antrieb_Schleuse_PS:=?, Antrieb_plus_vor:="DArbeitsplätze_Antriebe"."MA _Nachstau1_MPS3".Stat.A_vor, Antrieb_plus_start:=?, hStOk:=ErrAnz) + + A Schleuse_Platz_1.Dyn.Status.Trolley_draussen + S Sks_Arbeitsplatz.Dyn.Platz_1.Trolley_hat_Arbeitsplatz_verlassen + JCN P1D + + L Schleuse_Platz_1.Dyn.TrolleyID_ausgefahren + T Sks_Arbeitsplatz.Dyn.Platz_1.TrolleyID_ausgefahren + +P1D: NOP 0 + + +--- NW 8: Schleuse Platz 2 --- +CALL FB "None" , (Schleusen_Nr:=3401, ErrQuit:=ErrQuit, B_VorSchleuse:=?, B_InSchleuse:="BG3401", B_AusSchleuse:=?, B_Stau_raus:=?, Start_Ok:=1, Antrieb_Schleuse_aktiv:=1, Antrieb_plus_aktiv:="MA0097", Schleuse_geöffnet:="MB3401", RestZeit_Bereich_plus:=?, Y_Schleuse_Auf:="DArbeitsplätze_Zylinder".Schleuse_Platz2_MPS3.Stat.Ast, Error:=DB608.DBW302, Antrieb_Schleuse_vor:=?, Antrieb_Schleuse_start:=?, Antrieb_Schleuse_stop:=?, Antrieb_Schleuse_PS:=?, Antrieb_plus_vor:="DArbeitsplätze_Antriebe"."MA _Nachstau2_MPS3".Stat.A_vor, Antrieb_plus_start:=?, hStOk:=ErrAnz) + + A Schleuse_Platz_2.Dyn.Status.Trolley_draussen + S Sks_Arbeitsplatz.Dyn.Platz_2.Trolley_hat_Arbeitsplatz_verlassen + JCN P2D + + L Schleuse_Platz_2.Dyn.TrolleyID_ausgefahren + T Sks_Arbeitsplatz.Dyn.Platz_2.TrolleyID_ausgefahren + +P2D: NOP 0 + + +--- NW 9: Schleuse Platz 3 --- +CALL FB "None" , (Schleusen_Nr:=3405, ErrQuit:=ErrQuit, B_VorSchleuse:=?, B_InSchleuse:="BG3405", B_AusSchleuse:=?, B_Stau_raus:=?, Start_Ok:=1, Antrieb_Schleuse_aktiv:=1, Antrieb_plus_aktiv:="MA0100", Schleuse_geöffnet:="MB3405", RestZeit_Bereich_plus:=?, Y_Schleuse_Auf:="DArbeitsplätze_Zylinder".Schleuse_Platz3_MPS3.Stat.Ast, Error:=DB608.DBW304, Antrieb_Schleuse_vor:=?, Antrieb_Schleuse_start:=?, Antrieb_Schleuse_stop:=?, Antrieb_Schleuse_PS:=?, Antrieb_plus_vor:="DArbeitsplätze_Antriebe"."MA _Ausfahrt_MPS3".Stat.A_vor, Antrieb_plus_start:=?, hStOk:=ErrAnz) + + A Schleuse_Platz_3.Dyn.Status.Trolley_draussen + S Sks_Arbeitsplatz.Dyn.Platz_3.Trolley_hat_Arbeitsplatz_verlassen + JCN P3D + + L Schleuse_Platz_3.Dyn.TrolleyID_ausgefahren + T Sks_Arbeitsplatz.Dyn.Platz_3.TrolleyID_ausgefahren + +P3D: NOP 0 + + +--- NW 10: Schleuse Ausfahrt --- +CALL FB "None" , (Schleusen_Nr:=3411, ErrQuit:=ErrQuit, B_VorSchleuse:="BG3410", B_InSchleuse:="BG3411", B_AusSchleuse:="BG3414", B_Stau_raus:="DArbeitsplätze_Sensoren".Stau_nach_Ausfahrt_MPS3.Stat.B_Akt, Start_Ok:=1, Antrieb_Schleuse_aktiv:="MA0100", Antrieb_plus_aktiv:="MA0105", Schleuse_geöffnet:="MB3411", RestZeit_Bereich_plus:=?, Y_Schleuse_Auf:="DArbeitsplätze_Zylinder".Schleuse_Ausfahrt_MPS3.Stat.Ast, Error:=DB608.DBW306, Antrieb_Schleuse_vor:="DArbeitsplätze_Antriebe"."MA _Ausfahrt_MPS3".Stat.A_vor, Antrieb_Schleuse_start:="DArbeitsplätze_Antriebe"."MA _Ausfahrt_MPS3".Stat.A_start, Antrieb_Schleuse_stop:="DArbeitsplätze_Antriebe"."MA _Ausfahrt_MPS3".Stat.Stop_vor, Antrieb_Schleuse_PS:="DArbeitsplätze_Antriebe"."MA _Ausfahrt_MPS3".Stat.A_PS, Antrieb_plus_vor:="DArbeitsplätze_Antriebe".MA0105.Stat.A_vor, Antrieb_plus_start:="DArbeitsplätze_Antriebe".MA0105.Stat.A_start, hStOk:=ErrAnz) + +// Ausfahr-Weiche schalten: + A "MB3411" + S "DArbeitsplätze_Zylinder".Weiche_Ausfahrt_MPS3.Stat.Ast + +// Ausfahr-Weiche wieder freigeben: + A Schleuse_Ausfahrt.Dyn.Status.Trolley_draussen + R Vorfahrt_Ausfahrweiche."Weiche_von_Ausfahr-Sep_belegt" + + +--- NW 11: Schleuse Hauptstrecke vor Ausfahrt --- +CALL FB "None" , (Schleusen_Nr:=3413, ErrQuit:=ErrQuit, B_VorSchleuse:="BG3391", B_InSchleuse:="BG3413", B_AusSchleuse:="BG3414", B_Stau_raus:="DArbeitsplätze_Sensoren".Stau_nach_Ausfahrt_MPS3.Stat.B_Akt, Start_Ok:=1, Antrieb_Schleuse_aktiv:="MA0105", Antrieb_plus_aktiv:="MA0105", Schleuse_geöffnet:="MB3413", RestZeit_Bereich_plus:=?, Y_Schleuse_Auf:="DArbeitsplätze_Zylinder".Schleuse_Vor_Ausfahrt_MPS3.Stat.Ast, Error:=DB608.DBW308, Antrieb_Schleuse_vor:="DArbeitsplätze_Antriebe".MA0105.Stat.A_vor, Antrieb_Schleuse_start:="DArbeitsplätze_Antriebe".MA0105.Stat.A_start, Antrieb_Schleuse_stop:="DArbeitsplätze_Antriebe".MA0105.Stat.Stop_vor, Antrieb_Schleuse_PS:="DArbeitsplätze_Antriebe".MA0105.Stat.A_PS, Antrieb_plus_vor:=?, Antrieb_plus_start:=?, hStOk:=ErrAnz) // s.o. | s.o. + +// Ausfahr-Weiche zurückschalten: + A "MB3413" + R "DArbeitsplätze_Zylinder".Weiche_Ausfahrt_MPS3.Stat.Ast + +// Ausfahr-Weiche wieder freigeben: + A Schleuse_vor_Ausfahrt.Dyn.Status.Trolley_draussen + R Vorfahrt_Ausfahrweiche."Weiche_von_Haupt-Sep_belegt" + + +--- NW 12: Ausfahr-Priorität --- +CALL FB "None" , (BG_Haupt_Schleuse:="BG3413", Haupt_Schleuse_geöffnet:="MB3413", BG_ABP_Schleuse:="BG3411", ABP_Schleuse_geöffnet:="MB3411", Aktive_ABP:="DPS5_OmniFahren".Aktivierte_ABPs) + + +--- NW 13: Störungen anzeigen --- + A ErrAnz + R ErrAnz + S "DAMR_Bereich".A01_UZ0603.StOk_blinken + + +--- NW 14: Ende --- + BE + diff --git a/=A01+UH06-KF00/Programmbausteine/Anlage/1_Arbeitsplätze/Arbeitsplätze/PS1_OmniFahren.awl b/=A01+UH06-KF00/Programmbausteine/Anlage/1_Arbeitsplätze/Arbeitsplätze/PS1_OmniFahren.awl new file mode 100644 index 0000000..7af870b --- /dev/null +++ b/=A01+UH06-KF00/Programmbausteine/Anlage/1_Arbeitsplätze/Arbeitsplätze/PS1_OmniFahren.awl @@ -0,0 +1,269 @@ +=== FB 1125: PS1_OmniFahren [STL] === +INTERFACE: + Input: + Output: + InOut: + Static: + Schleuse_vor_Einfahrt : "MHMOmniSchleuse" + Weiche_Einfahrt : "MHMOmniWeiche" + Schleuse_Vorstau : "MHMOmniSchleuse" + Sks_Arbeitsplatz : "MHM_Arbeitsplatz" + Schleuse_Platz_1 : "MHMOmniSchleuse" + Schleuse_Platz_2 : "MHMOmniSchleuse" + Schleuse_Platz_3 : "MHMOmniSchleuse" + Schleuse_Ausfahrt : "MHMOmniSchleuse" + Schleuse_vor_Ausfahrt : "MHMOmniSchleuse" + Prio_Ausfahrt : "MAusfahrPrio_ABP" + Vorfahrt_Ausfahrweiche : Struct + Weiche_von_Haupt-Sep_belegt : Bool + Weiche_von_Ausfahr-Sep_belegt : Bool + Haupstrecke_gefahren : Int + AMR_gefahren : Int + Temp: + ErrQuit : Bool + ErrAnz : Bool + Stau_raus : Bool + Start_ok : Bool + B_aktiv : Bool + B_AusSchleuse : Bool + Antrieb_aktiv : Bool + Antrieb_start : Bool + Antrieb_vor : Bool + Antrieb_stop : Bool + Fahren_Ok : Bool + Constant: + +--- NW 1: Systemzeug --- +// PS1-Bereich: + A "DAMR_Bereich".A01_UH06.AnlageEin + = Schleuse_vor_Einfahrt.Dyn.Sk.Auto_akt + = Weiche_Einfahrt.Dyn.Status.Auto_akt + = Sks_Arbeitsplatz.Dyn.Sk_zum_Beladeplatz.Auto_akt + = Schleuse_Vorstau.Dyn.Sk.Auto_akt + = Schleuse_Platz_1.Dyn.Sk.Auto_akt + = Schleuse_Platz_2.Dyn.Sk.Auto_akt + = Schleuse_Platz_3.Dyn.Sk.Auto_akt + = Sks_Arbeitsplatz.Dyn.Sk_aus_Beladeplatz.Auto_akt + = Schleuse_Ausfahrt.Dyn.Sk.Auto_akt + = Schleuse_vor_Ausfahrt.Dyn.Sk.Auto_akt + + AN "DAMR_Bereich".A01_UH06.BereichErr + = Schleuse_vor_Einfahrt.Dyn.Sk.Bereich_ok + = Weiche_Einfahrt.Dyn.Status.Bereich_ok + = Sks_Arbeitsplatz.Dyn.Sk_zum_Beladeplatz.Bereich_ok + = Schleuse_Vorstau.Dyn.Sk.Bereich_ok + = Schleuse_Platz_1.Dyn.Sk.Bereich_ok + = Schleuse_Platz_2.Dyn.Sk.Bereich_ok + = Schleuse_Platz_3.Dyn.Sk.Bereich_ok + = Sks_Arbeitsplatz.Dyn.Sk_aus_Beladeplatz.Bereich_ok + = Schleuse_Ausfahrt.Dyn.Sk.Bereich_ok + = Schleuse_vor_Ausfahrt.Dyn.Sk.Bereich_ok + + +--- NW 2: Störungen quittieren --- + A "DAMR_Bereich".A01_UZ0611.StOk_aktiv + = ErrQuit + S "DArbeitsplätze_Antriebe"."MA _Einfahrt_PS1".Stat.A_start + S "DArbeitsplätze_Antriebe"."MA _Nachstau1_PS1".Stat.A_start + S "DArbeitsplätze_Antriebe"."MA _Nachstau2_PS1".Stat.A_start + S "DArbeitsplätze_Antriebe"."MA _Ausfahrt_PS1".Stat.A_start + S "DArbeitsplätze_Antriebe".MA0087.Stat.A_start + S "DArbeitsplätze_Antriebe".MA0094.Stat.A_start + S "DArbeitsplätze_Antriebe".MA0062.Stat.A_start + S "DArbeitsplätze_Antriebe".MA0105.Stat.A_start + + +--- NW 3: Schleuse vor Einfahrt --- +CALL FB "None" , (Schleusen_Nr:=3353, ErrQuit:=ErrQuit, B_VorSchleuse:="BG3330", B_InSchleuse:="BG3353", B_AusSchleuse:=?, B_Stau_raus:=?, Start_Ok:=1, Antrieb_Schleuse_aktiv:="MA0087", Antrieb_plus_aktiv:=1, Schleuse_geöffnet:="MB3353", RestZeit_Bereich_plus:=?, Y_Schleuse_Auf:="DArbeitsplätze_Zylinder".Schleuse_Vor_Einfahrt_PS1.Stat.Ast, Error:=DB608.DBW276, Antrieb_Schleuse_vor:="DArbeitsplätze_Antriebe".MA0087.Stat.A_vor, Antrieb_Schleuse_start:="DArbeitsplätze_Antriebe".MA0087.Stat.A_start, Antrieb_Schleuse_stop:="DArbeitsplätze_Antriebe".MA0087.Stat.Stop_vor, Antrieb_Schleuse_PS:="DArbeitsplätze_Antriebe".MA0087.Stat.A_PS, Antrieb_plus_vor:=?, Antrieb_plus_start:=?, hStOk:=ErrAnz) // Über Weiche_Einfahrt | Über Weiche_Einfahrt | Über Weiche_Einfahrt + +// Ausfahr-Weiche zurückschalten: + A "MB3353" + R "DArbeitsplätze_Zylinder".Weiche_Ausfahrt_PS2.Stat.Ast + +// Ausfahr-Weiche wieder freigeben: + A Schleuse_vor_Einfahrt.Dyn.Status.Trolley_draussen + R "DPS2_OmniFahren".Vorfahrt_Ausfahrweiche."Weiche_von_Haupt-Sep_belegt" + R "DPS2_OmniFahren".Vorfahrt_Ausfahrweiche."WeicheByPass_von_Haupt-Sep_belegt" + + +--- NW 4: Weiche Einfahrt --- + SET + R Antrieb_vor // Da unten IN/OUT-Zugriff + R Antrieb_start + R Antrieb_stop + + A "MA0094" + A "MA0087" + A "MA0062" + = Antrieb_aktiv + +CALL FB "None" , (Weichen_Nr:=3362, ErrQuit:=ErrQuit, Fahren_Ok:=1, B_Ziel_gerade:="DArbeitsplätze_Sensoren".Stau_nach_Ausfahrt_PS2.Stat.B_Akt, B_Ziel_abzweig:="DArbeitsplätze_Sensoren".Stau_Einfahrt_PS1.Stat.B_Akt, Antrieb_Weiche_aktiv:=Antrieb_aktiv, Antrieb_Gerade_aktiv:="MA0087", Antrieb_Abzweig_aktiv:="MA0090", Weiche_ist_AST:="MB3362", Y_Weiche_gerade:=?, Y_Weiche_abzweig:="DArbeitsplätze_Zylinder".Weiche_Einfahrt_PS1.Stat.Ast, Error:=DB608.DBW280, Antrieb_Weiche_vor:=Antrieb_vor, Antrieb_Weiche_stop:=Antrieb_stop, Antrieb_Weiche_gerade_vor:=?, Antrieb_Weiche_gerade_stop:=?, Antrieb_Weiche_abzweig_vor:="DArbeitsplätze_Antriebe"."MA _Einfahrt_PS1".Stat.A_vor, Antrieb_Weiche_abzweig_stop:="DArbeitsplätze_Antriebe"."MA _Einfahrt_PS1".Stat.Stop_vor, hStOk:=ErrAnz) // s.o. | s.o. + +// M0087 + M0094 + M0062 einschalten: + A Antrieb_vor + S "DArbeitsplätze_Antriebe".MA0094.Stat.A_vor + S "DArbeitsplätze_Antriebe".MA0087.Stat.A_vor + S "DArbeitsplätze_Antriebe".MA0062.Stat.A_vor + S "DArbeitsplätze_Antriebe".MA0094.Stat.A_start + S "DArbeitsplätze_Antriebe".MA0087.Stat.A_start + S "DArbeitsplätze_Antriebe".MA0062.Stat.A_start + A Antrieb_start + S "DArbeitsplätze_Antriebe".MA0094.Stat.Stop_vor + S "DArbeitsplätze_Antriebe".MA0087.Stat.Stop_vor + S "DArbeitsplätze_Antriebe".MA0062.Stat.Stop_vor + + +--- NW 5: Schrittketten Arbeitsplätze ver-/entsorgen --- +CALL FB "None" , (Arbeitsplatz_Nr:=16#A100, ErrQuit:=ErrQuit, B_In_Schleuse_Vorstau:="BG3363", B_an_Platz_1:="BG3365", B_an_Platz_2:="BG3371", B_an_Platz_3:="BG3375", B_Nachstau_Einfahrt:="DArbeitsplätze_Sensoren".Stau_Ausfahrt_PS1.Stat.B_Akt, B_Nachstau_Ausfahrt:="BG3381", Y_Vorstau:="MB3363", Y_Platz_1:="MB3365", Y_Platz_2:="MB3371", Y_Platz_3:="MB3375", Antrieb_Vorstau_aktiv:="MA0090", Antrieb_Nachstau_1_aktiv:="MA0091", Antrieb_Nachstau_2_aktiv:="MA0092", Antrieb_Nachstau_3_aktiv:="MA0093", Y_Weiche_zu_Platz_1:="DArbeitsplätze_Zylinder".Weiche_zu_Platz1_PS1.Stat.Ast, Y_Weiche_zu_Platz_2:="DArbeitsplätze_Zylinder".Weiche_zu_Platz2_PS1.Stat.Ast, Y_Weiche_von_Platz_1:="DArbeitsplätze_Zylinder".Weiche_von_Platz1_PS1.Stat.Ast, Y_Weiche_von_Platz_2:="DArbeitsplätze_Zylinder".Weiche_von_Platz2_PS1.Stat.Ast, Antrieb_Nachstau_1_vor:="DArbeitsplätze_Antriebe"."MA _Nachstau1_PS1".Stat.A_vor, Antrieb_Nachstau_2_vor:="DArbeitsplätze_Antriebe"."MA _Nachstau2_PS1".Stat.A_vor, Trolley_hat_ABS_erreicht:=Schleuse_Vorstau.B_AusSchleuse, Reset_Vorstau_Schleuse:=Schleuse_Vorstau.Dyn.Sk.Reset, Reset_Platz_1_Stopper:=Schleuse_Platz_1.Dyn.Sk.Reset, Reset_Platz_2_Stopper:=Schleuse_Platz_2.Dyn.Sk.Reset, Reset_Platz_3_Stopper:=Schleuse_Platz_3.Dyn.Sk.Reset, Error:=DB608.DBW100, Antrieb_Vorstau_vor:="DArbeitsplätze_Antriebe"."MA _Einfahrt_PS1".Stat.A_vor, Antrieb_Nachstau_3_vor:="DArbeitsplätze_Antriebe"."MA _Ausfahrt_PS1".Stat.A_vor, hStOk:=ErrAnz) // XY00: X=A(PS), X=B(MPS), Y= Nummer des Platzes + +// Anzeigen: + A "DAMR_Bereich".A01_UH06.AnlageEin + A Sks_Arbeitsplatz.Dyn.Status.Arbeitsplatz_aktiviert + = "PF0050" + + A Sks_Arbeitsplatz.Dyn.SS.Externe_Anzeige + = "PF3360" + + +--- NW 6: Schleuse Vorstau --- +CALL FB "None" , (Schleusen_Nr:=3363, ErrQuit:=ErrQuit, B_VorSchleuse:="BG3362", B_InSchleuse:="BG3363", B_AusSchleuse:=?, B_Stau_raus:=?, Start_Ok:=1, Antrieb_Schleuse_aktiv:="MA0090", Antrieb_plus_aktiv:=1, Schleuse_geöffnet:="MB3363", RestZeit_Bereich_plus:=?, Y_Schleuse_Auf:="DArbeitsplätze_Zylinder".Schleuse_Vorstau_PS1.Stat.Ast, Error:=DB608.DBW282, Antrieb_Schleuse_vor:="DArbeitsplätze_Antriebe"."MA _Einfahrt_PS1".Stat.A_vor, Antrieb_Schleuse_start:="DArbeitsplätze_Antriebe"."MA _Einfahrt_PS1".Stat.A_start, Antrieb_Schleuse_stop:="DArbeitsplätze_Antriebe"."MA _Einfahrt_PS1".Stat.Stop_vor, Antrieb_Schleuse_PS:="DArbeitsplätze_Antriebe"."MA _Einfahrt_PS1".Stat.A_PS, Antrieb_plus_vor:=?, Antrieb_plus_start:=?, hStOk:=ErrAnz) + + +--- NW 7: Schleuse Platz 1 --- +CALL FB "None" , (Schleusen_Nr:=3365, ErrQuit:=ErrQuit, B_VorSchleuse:=?, B_InSchleuse:="BG3365", B_AusSchleuse:=?, B_Stau_raus:=?, Start_Ok:=1, Antrieb_Schleuse_aktiv:=1, Antrieb_plus_aktiv:="MA0091", Schleuse_geöffnet:="MB3365", RestZeit_Bereich_plus:=?, Y_Schleuse_Auf:="DArbeitsplätze_Zylinder".Schleuse_Platz1_PS1.Stat.Ast, Error:=DB608.DBW284, Antrieb_Schleuse_vor:=?, Antrieb_Schleuse_start:=?, Antrieb_Schleuse_stop:=?, Antrieb_Schleuse_PS:=?, Antrieb_plus_vor:="DArbeitsplätze_Antriebe"."MA _Nachstau1_PS1".Stat.A_vor, Antrieb_plus_start:=?, hStOk:=ErrAnz) + + A Schleuse_Platz_1.Dyn.Status.Trolley_draussen + S Sks_Arbeitsplatz.Dyn.Platz_1.Trolley_hat_Arbeitsplatz_verlassen + JCN P1D + + L Schleuse_Platz_1.Dyn.TrolleyID_ausgefahren + T Sks_Arbeitsplatz.Dyn.Platz_1.TrolleyID_ausgefahren + +P1D: NOP 0 + + +--- NW 8: Schleuse Platz 2 --- +CALL FB "None" , (Schleusen_Nr:=3371, ErrQuit:=ErrQuit, B_VorSchleuse:=?, B_InSchleuse:="BG3371", B_AusSchleuse:=?, B_Stau_raus:=?, Start_Ok:=1, Antrieb_Schleuse_aktiv:=1, Antrieb_plus_aktiv:="MA0092", Schleuse_geöffnet:="MB3371", RestZeit_Bereich_plus:=?, Y_Schleuse_Auf:="DArbeitsplätze_Zylinder".Schleuse_Platz2_PS1.Stat.Ast, Error:=DB608.DBW286, Antrieb_Schleuse_vor:=?, Antrieb_Schleuse_start:=?, Antrieb_Schleuse_stop:=?, Antrieb_Schleuse_PS:=?, Antrieb_plus_vor:="DArbeitsplätze_Antriebe"."MA _Nachstau2_PS1".Stat.A_vor, Antrieb_plus_start:=?, hStOk:=ErrAnz) + + A Schleuse_Platz_2.Dyn.Status.Trolley_draussen + S Sks_Arbeitsplatz.Dyn.Platz_2.Trolley_hat_Arbeitsplatz_verlassen + JCN P2D + + L Schleuse_Platz_2.Dyn.TrolleyID_ausgefahren + T Sks_Arbeitsplatz.Dyn.Platz_2.TrolleyID_ausgefahren + +P2D: NOP 0 + + +--- NW 9: Schleuse Platz 3 --- +CALL FB "None" , (Schleusen_Nr:=3375, ErrQuit:=ErrQuit, B_VorSchleuse:=?, B_InSchleuse:="BG3375", B_AusSchleuse:=?, B_Stau_raus:=?, Start_Ok:=1, Antrieb_Schleuse_aktiv:=1, Antrieb_plus_aktiv:="MA0093", Schleuse_geöffnet:="MB3375", RestZeit_Bereich_plus:=?, Y_Schleuse_Auf:="DArbeitsplätze_Zylinder".Schleuse_Platz3_PS1.Stat.Ast, Error:=DB608.DBW288, Antrieb_Schleuse_vor:=?, Antrieb_Schleuse_start:=?, Antrieb_Schleuse_stop:=?, Antrieb_Schleuse_PS:=?, Antrieb_plus_vor:="DArbeitsplätze_Antriebe"."MA _Ausfahrt_PS1".Stat.A_vor, Antrieb_plus_start:=?, hStOk:=ErrAnz) + + A Schleuse_Platz_3.Dyn.Status.Trolley_draussen + S Sks_Arbeitsplatz.Dyn.Platz_3.Trolley_hat_Arbeitsplatz_verlassen + JCN P3D + + L Schleuse_Platz_3.Dyn.TrolleyID_ausgefahren + T Sks_Arbeitsplatz.Dyn.Platz_3.TrolleyID_ausgefahren + +P3D: NOP 0 + + +--- NW 10: Schleuse Ausfahrt --- +CALL FB "None" , (Schleusen_Nr:=3381, ErrQuit:=ErrQuit, B_VorSchleuse:="BG3380", B_InSchleuse:="BG3381", B_AusSchleuse:="BG3384", B_Stau_raus:="DArbeitsplätze_Sensoren".Stau_nach_Ausfahrt_PS1.Stat.B_Akt, Start_Ok:=1, Antrieb_Schleuse_aktiv:="MA0093", Antrieb_plus_aktiv:="MA0105", Schleuse_geöffnet:="MB3381", RestZeit_Bereich_plus:=?, Y_Schleuse_Auf:="DArbeitsplätze_Zylinder".Schleuse_Ausfahrt_PS1.Stat.Ast, Error:=DB608.DBW290, Antrieb_Schleuse_vor:="DArbeitsplätze_Antriebe"."MA _Ausfahrt_PS1".Stat.A_vor, Antrieb_Schleuse_start:="DArbeitsplätze_Antriebe"."MA _Ausfahrt_PS1".Stat.A_start, Antrieb_Schleuse_stop:="DArbeitsplätze_Antriebe"."MA _Ausfahrt_PS1".Stat.Stop_vor, Antrieb_Schleuse_PS:="DArbeitsplätze_Antriebe"."MA _Ausfahrt_PS1".Stat.A_PS, Antrieb_plus_vor:="DArbeitsplätze_Antriebe".MA0105.Stat.A_vor, Antrieb_plus_start:="DArbeitsplätze_Antriebe".MA0105.Stat.A_start, hStOk:=ErrAnz) + +// Ausfahr-Weiche schalten: + A "MB3381" + S "DArbeitsplätze_Zylinder".Weiche_Ausfahrt_PS1.Stat.Ast + +// Ausfahr-Weiche wieder freigeben: + A Schleuse_Ausfahrt.Dyn.Status.Trolley_draussen + R Vorfahrt_Ausfahrweiche."Weiche_von_Ausfahr-Sep_belegt" + + +--- NW 11: Schleuse Hauptstrecke vor Ausfahrt --- +// Bypass-Weiche schalten: + A "MB3351" // Schleuse PS2-Ausfahrt geöffnet + O "MB3353" // Schleuse PS2-Vor Ausfahrt geöffnet + R "DArbeitsplätze_Zylinder".Weiche_3361.Stat.Ast // Einfahr-Weiche auf Gerade schalten + + A "MB3481" // Schleuse Zuführung geöffnet + A "MB3482" // Weiche zur Hauptstrecke + S "DArbeitsplätze_Zylinder".Weiche_3361.Stat.Ast // Einfahr-Weiche auf Abzweig schalten + +// Antriebe -1 mit einschalten: + A Schleuse_vor_Ausfahrt.Dyn.Status."Trolley_fährt_in_Schleuse" + AN "BG3323" // Ist in Schleuse + AN "MB3361" // Weiche gerade + S "DArbeitsplätze_Antriebe".MA0087.Stat.A_vor + + A Schleuse_vor_Ausfahrt.Dyn.Status."Trolley_fährt_in_Schleuse" + AN "BG3323" // Ist in Schleuse + S "DArbeitsplätze_Antriebe".MA0062.Stat.A_vor + +// Antrieb +1 einschalten: + A Schleuse_vor_Ausfahrt.Dyn.Status."Trolley_fährt_in_Schleuse" + AN "BG3323" // Ist in Schleuse + S "DArbeitsplätze_Antriebe".MA0105.Stat.A_vor + +// Eigner Antrieb einschalten: (da als Stau-Sensor von Vor-Bypass verwendet) + A "DArbeitsplätze_Sensoren".An_BG3383.Stat.B_Akt + AN "BG3383" + S "DArbeitsplätze_Antriebe".MA0094.Stat.A_vor + +// Trolley kommt in Bereich: + A "MB3481" // Schleuse ByPass geöffnet + A "MB3482" // Weiche-ByPass auf Abzweig + O "MB3351" // Schleuse PS2-Ausfahrt geöffnet + O "MB3353" // Schleuse PS2-Vor Ausfahrt geöffnet + O "BG3361" // Stauklappe Hauptstrecke + = B_aktiv + + SET + R Antrieb_vor // Da unten IN/OUT-Zugriff + R Antrieb_start + R Antrieb_stop + + A "MA0094" + A "MA0087" + A "MA0062" + = Antrieb_aktiv + + +CALL FB "None" , (Schleusen_Nr:=3383, ErrQuit:=ErrQuit, B_VorSchleuse:=B_aktiv, B_InSchleuse:="BG3383", B_AusSchleuse:="BG3384", B_Stau_raus:="DArbeitsplätze_Sensoren".Stau_nach_Ausfahrt_PS1.Stat.B_Akt, Start_Ok:=1, Antrieb_Schleuse_aktiv:=Antrieb_aktiv, Antrieb_plus_aktiv:="MA0105", Schleuse_geöffnet:="MB3383", RestZeit_Bereich_plus:=?, Y_Schleuse_Auf:="DArbeitsplätze_Zylinder".Schleuse_Vor_Ausfahrt_PS1.Stat.Ast, Error:=DB608.DBW292, Antrieb_Schleuse_vor:=Antrieb_vor, Antrieb_Schleuse_start:=Antrieb_start, Antrieb_Schleuse_stop:=Antrieb_stop, Antrieb_Schleuse_PS:="DArbeitsplätze_Antriebe".MA0094.Stat.A_PS, Antrieb_plus_vor:="DArbeitsplätze_Antriebe".MA0105.Stat.A_vor, Antrieb_plus_start:="DArbeitsplätze_Antriebe".MA0105.Stat.A_start, hStOk:=ErrAnz) + +// M0087 + M0094 + M0062 einschalten: + A Antrieb_vor + S "DArbeitsplätze_Antriebe".MA0094.Stat.A_vor + S "DArbeitsplätze_Antriebe".MA0087.Stat.A_vor + S "DArbeitsplätze_Antriebe".MA0062.Stat.A_vor + A Antrieb_start + S "DArbeitsplätze_Antriebe".MA0094.Stat.A_start + S "DArbeitsplätze_Antriebe".MA0087.Stat.A_start + S "DArbeitsplätze_Antriebe".MA0062.Stat.A_start + A Antrieb_stop + S "DArbeitsplätze_Antriebe".MA0094.Stat.Stop_vor + S "DArbeitsplätze_Antriebe".MA0087.Stat.Stop_vor + S "DArbeitsplätze_Antriebe".MA0062.Stat.Stop_vor + +// Ausfahr-Weiche zurückschalten: + A "MB3383" + R "DArbeitsplätze_Zylinder".Weiche_Ausfahrt_PS1.Stat.Ast + +// Ausfahr-Weiche wieder freigeben: + A Schleuse_vor_Ausfahrt.Dyn.Status.Trolley_draussen + R Vorfahrt_Ausfahrweiche."Weiche_von_Haupt-Sep_belegt" + + +--- NW 12: Ausfahr-Priorität --- +CALL FB "None" , (BG_Haupt_Schleuse:="BG3383", Haupt_Schleuse_geöffnet:="MB3383", BG_ABP_Schleuse:="BG3381", ABP_Schleuse_geöffnet:="MB3381", Aktive_ABP:="DPS5_OmniFahren".Aktivierte_ABPs) + + +--- NW 13: Störungen anzeigen --- + A ErrAnz + R ErrAnz + S "DAMR_Bereich".A01_UZ0611.StOk_blinken + + +--- NW 14: Ende --- + BE + diff --git a/=A01+UH06-KF00/Programmbausteine/Anlage/1_Arbeitsplätze/Arbeitsplätze/PS2_OmniFahren.awl b/=A01+UH06-KF00/Programmbausteine/Anlage/1_Arbeitsplätze/Arbeitsplätze/PS2_OmniFahren.awl new file mode 100644 index 0000000..ab249c2 --- /dev/null +++ b/=A01+UH06-KF00/Programmbausteine/Anlage/1_Arbeitsplätze/Arbeitsplätze/PS2_OmniFahren.awl @@ -0,0 +1,165 @@ +=== FB 1124: PS2_OmniFahren [STL] === +INTERFACE: + Input: + Output: + InOut: + Static: + Schleuse_vor_Einfahrt : "MHMOmniSchleuse" + Weiche_Einfahrt : "MHMOmniWeiche" + Schleuse_Vorstau : "MHMOmniSchleuse" + Sks_Arbeitsplatz : "MHM_Arbeitsplatz" + Schleuse_Platz_1 : "MHMOmniSchleuse" + Schleuse_Platz_2 : "MHMOmniSchleuse" + Schleuse_Platz_3 : "MHMOmniSchleuse" + Schleuse_Ausfahrt : "MHMOmniSchleuse" + Prio_Ausfahrt : "MAusfahrPrio_ABP" + Vorfahrt_Ausfahrweiche : Struct + Weiche_von_Haupt-Sep_belegt : Bool + WeicheByPass_von_Haupt-Sep_belegt : Bool + Weiche_von_Ausfahr-Sep_belegt : Bool + Weiche_von_ByPass-Sep_belegt : Bool + Haupstrecke_gefahren : Int + AMR_gefahren : Int + Temp: + ErrQuit : Bool + ErrAnz : Bool + Stau_raus : Bool + Start_ok : Bool + B_aktiv : Bool + B_AusSchleuse : Bool + Antrieb_aktiv : Bool + Antrieb_start : Bool + Antrieb_stop : Bool + Fahren_Ok : Bool + Constant: + +--- NW 1: Systemzeug --- +// PS2-Bereich: + A "DAMR_Bereich".A01_UH06.AnlageEin + = Schleuse_vor_Einfahrt.Dyn.Sk.Auto_akt + = Weiche_Einfahrt.Dyn.Status.Auto_akt + = Sks_Arbeitsplatz.Dyn.Sk_zum_Beladeplatz.Auto_akt + = Schleuse_Vorstau.Dyn.Sk.Auto_akt + = Schleuse_Platz_1.Dyn.Sk.Auto_akt + = Schleuse_Platz_2.Dyn.Sk.Auto_akt + = Schleuse_Platz_3.Dyn.Sk.Auto_akt + = Sks_Arbeitsplatz.Dyn.Sk_aus_Beladeplatz.Auto_akt + = Schleuse_Ausfahrt.Dyn.Sk.Auto_akt + + AN "DAMR_Bereich".A01_UH06.BereichErr + = Schleuse_vor_Einfahrt.Dyn.Sk.Bereich_ok + = Weiche_Einfahrt.Dyn.Status.Bereich_ok + = Sks_Arbeitsplatz.Dyn.Sk_zum_Beladeplatz.Bereich_ok + = Schleuse_Vorstau.Dyn.Sk.Bereich_ok + = Schleuse_Platz_1.Dyn.Sk.Bereich_ok + = Schleuse_Platz_2.Dyn.Sk.Bereich_ok + = Schleuse_Platz_3.Dyn.Sk.Bereich_ok + = Sks_Arbeitsplatz.Dyn.Sk_aus_Beladeplatz.Bereich_ok + = Schleuse_Ausfahrt.Dyn.Sk.Bereich_ok + + +--- NW 2: Störungen quittieren --- + A "DAMR_Bereich".A01_UZ0612.StOk_aktiv + = ErrQuit + S "DArbeitsplätze_Antriebe"."MA _Einfahrt_PS2".Stat.A_start + S "DArbeitsplätze_Antriebe"."MA _Nachstau1_PS2".Stat.A_start + S "DArbeitsplätze_Antriebe"."MA _Nachstau2_PS2".Stat.A_start + S "DArbeitsplätze_Antriebe"."MA _Ausfahrt_PS2".Stat.A_start + S "DArbeitsplätze_Antriebe".MA0087.Stat.A_start + + +--- NW 3: Schleuse vor Einfahrt --- +CALL FB "None" , (Schleusen_Nr:=3331, ErrQuit:=ErrQuit, B_VorSchleuse:="BG3322", B_InSchleuse:="BG3331", B_AusSchleuse:=?, B_Stau_raus:=?, Start_Ok:=1, Antrieb_Schleuse_aktiv:="MA0087", Antrieb_plus_aktiv:=1, Schleuse_geöffnet:="MB3331", RestZeit_Bereich_plus:=?, Y_Schleuse_Auf:="DArbeitsplätze_Zylinder".Schleuse_Vor_Einfahrt_PS2.Stat.Ast, Error:=DB608.DBW262, Antrieb_Schleuse_vor:="DArbeitsplätze_Antriebe".MA0087.Stat.A_vor, Antrieb_Schleuse_start:="DArbeitsplätze_Antriebe".MA0087.Stat.A_start, Antrieb_Schleuse_stop:="DArbeitsplätze_Antriebe".MA0087.Stat.Stop_vor, Antrieb_Schleuse_PS:="DArbeitsplätze_Antriebe".MA0087.Stat.A_PS, Antrieb_plus_vor:=?, Antrieb_plus_start:=?, hStOk:=ErrAnz) // Über Weiche_Einfahrt | Über Weiche_Einfahrt | Über Weiche_Einfahrt + + +--- NW 4: Weiche Einfahrt --- +CALL FB "None" , (Weichen_Nr:=3332, ErrQuit:=ErrQuit, Fahren_Ok:=1, B_Ziel_gerade:="DArbeitsplätze_Sensoren".Stau_nach_Einfahrt_PS2.Stat.B_Akt, B_Ziel_abzweig:="DArbeitsplätze_Sensoren".Stau_Einfahrt_PS2.Stat.B_Akt, Antrieb_Weiche_aktiv:="MA0087", Antrieb_Gerade_aktiv:="MA0087", Antrieb_Abzweig_aktiv:="MA0083", Weiche_ist_AST:="MB3332", Y_Weiche_gerade:=?, Y_Weiche_abzweig:="DArbeitsplätze_Zylinder".Weiche_Einfahrt_PS2.Stat.Ast, Error:=DB608.DBW264, Antrieb_Weiche_vor:="DArbeitsplätze_Antriebe".MA0087.Stat.A_vor, Antrieb_Weiche_stop:="DArbeitsplätze_Antriebe".MA0087.Stat.Stop_vor, Antrieb_Weiche_gerade_vor:=?, Antrieb_Weiche_gerade_stop:=?, Antrieb_Weiche_abzweig_vor:="DArbeitsplätze_Antriebe"."MA _Einfahrt_PS2".Stat.A_vor, Antrieb_Weiche_abzweig_stop:="DArbeitsplätze_Antriebe"."MA _Einfahrt_PS2".Stat.Stop_vor, hStOk:=ErrAnz) // s.o. | s.o. + + +--- NW 5: Schrittketten Arbeitsplätze ver-/entsorgen --- +CALL FB "None" , (Arbeitsplatz_Nr:=16#A200, ErrQuit:=ErrQuit, B_In_Schleuse_Vorstau:="BG3333", B_an_Platz_1:="BG3335", B_an_Platz_2:="BG3341", B_an_Platz_3:="BG3345", B_Nachstau_Einfahrt:="DArbeitsplätze_Sensoren".Stau_Ausfahrt_PS2.Stat.B_Akt, B_Nachstau_Ausfahrt:="BG3351", Y_Vorstau:="MB3333", Y_Platz_1:="MB3335", Y_Platz_2:="MB3341", Y_Platz_3:="MB3345", Antrieb_Vorstau_aktiv:="MA0083", Antrieb_Nachstau_1_aktiv:="MA0084", Antrieb_Nachstau_2_aktiv:="MA0085", Antrieb_Nachstau_3_aktiv:="MA0086", Y_Weiche_zu_Platz_1:="DArbeitsplätze_Zylinder".Weiche_zu_Platz1_PS2.Stat.Ast, Y_Weiche_zu_Platz_2:="DArbeitsplätze_Zylinder".Weiche_zu_Platz2_PS2.Stat.Ast, Y_Weiche_von_Platz_1:="DArbeitsplätze_Zylinder".Weiche_von_Platz1_PS2.Stat.Ast, Y_Weiche_von_Platz_2:="DArbeitsplätze_Zylinder".Weiche_von_Platz2_PS2.Stat.Ast, Antrieb_Nachstau_1_vor:="DArbeitsplätze_Antriebe"."MA _Nachstau1_PS2".Stat.A_vor, Antrieb_Nachstau_2_vor:="DArbeitsplätze_Antriebe"."MA _Nachstau2_PS2".Stat.A_vor, Trolley_hat_ABS_erreicht:=Schleuse_Vorstau.B_AusSchleuse, Reset_Vorstau_Schleuse:=Schleuse_Vorstau.Dyn.Sk.Reset, Reset_Platz_1_Stopper:=Schleuse_Platz_1.Dyn.Sk.Reset, Reset_Platz_2_Stopper:=Schleuse_Platz_2.Dyn.Sk.Reset, Reset_Platz_3_Stopper:=Schleuse_Platz_3.Dyn.Sk.Reset, Error:=DB608.DBW102, Antrieb_Vorstau_vor:="DArbeitsplätze_Antriebe"."MA _Einfahrt_PS2".Stat.A_vor, Antrieb_Nachstau_3_vor:="DArbeitsplätze_Antriebe"."MA _Ausfahrt_PS2".Stat.A_vor, hStOk:=ErrAnz) // XY00: X=A(PS), X=B(MPS), Y= Nummer des Platzes + +// Anzeigen: + A "DAMR_Bereich".A01_UH06.AnlageEin + A Sks_Arbeitsplatz.Dyn.Status.Arbeitsplatz_aktiviert + = "PF0046" + + A Sks_Arbeitsplatz.Dyn.SS.Externe_Anzeige + = "PF3324" + + +--- NW 6: Schleuse Vorstau --- +CALL FB "None" , (Schleusen_Nr:=3333, ErrQuit:=ErrQuit, B_VorSchleuse:="BG3332", B_InSchleuse:="BG3333", B_AusSchleuse:=?, B_Stau_raus:=?, Start_Ok:=1, Antrieb_Schleuse_aktiv:="MA0083", Antrieb_plus_aktiv:=1, Schleuse_geöffnet:="MB3333", RestZeit_Bereich_plus:=?, Y_Schleuse_Auf:="DArbeitsplätze_Zylinder".Schleuse_Vorstau_PS2.Stat.Ast, Error:=DB608.DBW266, Antrieb_Schleuse_vor:="DArbeitsplätze_Antriebe"."MA _Einfahrt_PS2".Stat.A_vor, Antrieb_Schleuse_start:="DArbeitsplätze_Antriebe"."MA _Einfahrt_PS2".Stat.A_start, Antrieb_Schleuse_stop:="DArbeitsplätze_Antriebe"."MA _Einfahrt_PS2".Stat.Stop_vor, Antrieb_Schleuse_PS:="DArbeitsplätze_Antriebe"."MA _Einfahrt_PS2".Stat.A_PS, Antrieb_plus_vor:=?, Antrieb_plus_start:=?, hStOk:=ErrAnz) + + +--- NW 7: Schleuse Platz 1 --- +CALL FB "None" , (Schleusen_Nr:=3335, ErrQuit:=ErrQuit, B_VorSchleuse:=?, B_InSchleuse:="BG3335", B_AusSchleuse:=?, B_Stau_raus:=?, Start_Ok:=1, Antrieb_Schleuse_aktiv:=1, Antrieb_plus_aktiv:="MA0084", Schleuse_geöffnet:="MB3335", RestZeit_Bereich_plus:=?, Y_Schleuse_Auf:="DArbeitsplätze_Zylinder".Schleuse_Platz1_PS2.Stat.Ast, Error:=DB608.DBW268, Antrieb_Schleuse_vor:=?, Antrieb_Schleuse_start:=?, Antrieb_Schleuse_stop:=?, Antrieb_Schleuse_PS:=?, Antrieb_plus_vor:="DArbeitsplätze_Antriebe"."MA _Nachstau1_PS2".Stat.A_vor, Antrieb_plus_start:=?, hStOk:=ErrAnz) + + A Schleuse_Platz_1.Dyn.Status.Trolley_draussen + S Sks_Arbeitsplatz.Dyn.Platz_1.Trolley_hat_Arbeitsplatz_verlassen + JCN P1D + + L Schleuse_Platz_1.Dyn.TrolleyID_ausgefahren + T Sks_Arbeitsplatz.Dyn.Platz_1.TrolleyID_ausgefahren + +P1D: NOP 0 + + +--- NW 8: Schleuse Platz 2 --- +CALL FB "None" , (Schleusen_Nr:=3341, ErrQuit:=ErrQuit, B_VorSchleuse:=?, B_InSchleuse:="BG3341", B_AusSchleuse:=?, B_Stau_raus:=?, Start_Ok:=1, Antrieb_Schleuse_aktiv:=1, Antrieb_plus_aktiv:="MA0085", Schleuse_geöffnet:="MB3341", RestZeit_Bereich_plus:=?, Y_Schleuse_Auf:="DArbeitsplätze_Zylinder".Schleuse_Platz2_PS2.Stat.Ast, Error:=DB608.DBW270, Antrieb_Schleuse_vor:=?, Antrieb_Schleuse_start:=?, Antrieb_Schleuse_stop:=?, Antrieb_Schleuse_PS:=?, Antrieb_plus_vor:="DArbeitsplätze_Antriebe"."MA _Nachstau2_PS2".Stat.A_vor, Antrieb_plus_start:=?, hStOk:=ErrAnz) + + A Schleuse_Platz_2.Dyn.Status.Trolley_draussen + S Sks_Arbeitsplatz.Dyn.Platz_2.Trolley_hat_Arbeitsplatz_verlassen + JCN P2D + + L Schleuse_Platz_2.Dyn.TrolleyID_ausgefahren + T Sks_Arbeitsplatz.Dyn.Platz_2.TrolleyID_ausgefahren + +P2D: NOP 0 + + +--- NW 9: Schleuse Platz 3 --- +CALL FB "None" , (Schleusen_Nr:=3345, ErrQuit:=ErrQuit, B_VorSchleuse:=?, B_InSchleuse:="BG3345", B_AusSchleuse:=?, B_Stau_raus:=?, Start_Ok:=1, Antrieb_Schleuse_aktiv:=1, Antrieb_plus_aktiv:="MA0086", Schleuse_geöffnet:="MB3345", RestZeit_Bereich_plus:=?, Y_Schleuse_Auf:="DArbeitsplätze_Zylinder".Schleuse_Platz3_PS2.Stat.Ast, Error:=DB608.DBW272, Antrieb_Schleuse_vor:=?, Antrieb_Schleuse_start:=?, Antrieb_Schleuse_stop:=?, Antrieb_Schleuse_PS:=?, Antrieb_plus_vor:="DArbeitsplätze_Antriebe"."MA _Ausfahrt_PS2".Stat.A_vor, Antrieb_plus_start:=?, hStOk:=ErrAnz) + + A Schleuse_Platz_3.Dyn.Status.Trolley_draussen + S Sks_Arbeitsplatz.Dyn.Platz_3.Trolley_hat_Arbeitsplatz_verlassen + JCN P3D + + L Schleuse_Platz_3.Dyn.TrolleyID_ausgefahren + T Sks_Arbeitsplatz.Dyn.Platz_3.TrolleyID_ausgefahren + +P3D: NOP 0 + + +--- NW 10: Schleuse Ausfahrt --- + A "BG3362" + A "DZuführung_OmniFahren".Alle_ABPs_anfahren + O + A "BG3361" + AN "DZuführung_OmniFahren".Alle_ABPs_anfahren + = B_AusSchleuse + +CALL FB "None" , (Schleusen_Nr:=3351, ErrQuit:=ErrQuit, B_VorSchleuse:="BG3350", B_InSchleuse:="BG3351", B_AusSchleuse:=B_AusSchleuse, B_Stau_raus:="DArbeitsplätze_Sensoren".Stau_nach_Ausfahrt_PS2.Stat.B_Akt, Start_Ok:=1, Antrieb_Schleuse_aktiv:="MA0086", Antrieb_plus_aktiv:="MA0087", Schleuse_geöffnet:="MB3351", RestZeit_Bereich_plus:=?, Y_Schleuse_Auf:="DArbeitsplätze_Zylinder".Schleuse_Ausfahrt_PS2.Stat.Ast, Error:=DB608.DBW274, Antrieb_Schleuse_vor:="DArbeitsplätze_Antriebe"."MA _Ausfahrt_PS2".Stat.A_vor, Antrieb_Schleuse_start:="DArbeitsplätze_Antriebe"."MA _Ausfahrt_PS2".Stat.A_start, Antrieb_Schleuse_stop:="DArbeitsplätze_Antriebe"."MA _Ausfahrt_PS2".Stat.Stop_vor, Antrieb_Schleuse_PS:="DArbeitsplätze_Antriebe"."MA _Ausfahrt_PS2".Stat.A_PS, Antrieb_plus_vor:="DArbeitsplätze_Antriebe".MA0087.Stat.A_vor, Antrieb_plus_start:="DArbeitsplätze_Antriebe".MA0087.Stat.A_start, hStOk:=ErrAnz) + +// Ausfahr-Weiche schalten: + A "MB3351" + S "DArbeitsplätze_Zylinder".Weiche_Ausfahrt_PS2.Stat.Ast + +// Ausfahr-Weiche wieder freigeben: + A Schleuse_Ausfahrt.Dyn.Status.Trolley_draussen + R Vorfahrt_Ausfahrweiche."Weiche_von_Ausfahr-Sep_belegt" + + +--- NW 11: Ausfahr-Priorität --- +CALL FB "None" , (BG_Haupt_Schleuse:="BG3353", Haupt_Schleuse_geöffnet:="MB3353", BG_ABP_Schleuse:="BG3351", ABP_Schleuse_geöffnet:="MB3351", Aktive_ABP:="DPS5_OmniFahren".Aktivierte_ABPs) + + +--- NW 12: Störungen anzeigen --- + A ErrAnz + R ErrAnz + S "DAMR_Bereich".A01_UZ0612.StOk_blinken + + +--- NW 13: Ende --- + BE + diff --git a/=A01+UH06-KF00/Programmbausteine/Anlage/1_Arbeitsplätze/Arbeitsplätze/PS3_OmniFahren.awl b/=A01+UH06-KF00/Programmbausteine/Anlage/1_Arbeitsplätze/Arbeitsplätze/PS3_OmniFahren.awl new file mode 100644 index 0000000..4d42b84 --- /dev/null +++ b/=A01+UH06-KF00/Programmbausteine/Anlage/1_Arbeitsplätze/Arbeitsplätze/PS3_OmniFahren.awl @@ -0,0 +1,209 @@ +=== FB 1123: PS3_OmniFahren [STL] === +INTERFACE: + Input: + Output: + InOut: + Static: + Schleuse_vor_Einfahrt : "MHMOmniSchleuse" + Weiche_Einfahrt : "MHMOmniWeiche" + Schleuse_Vorstau : "MHMOmniSchleuse" + Sks_Arbeitsplatz : "MHM_Arbeitsplatz" + Schleuse_Platz_1 : "MHMOmniSchleuse" + Schleuse_Platz_2 : "MHMOmniSchleuse" + Schleuse_Platz_3 : "MHMOmniSchleuse" + Schleuse_Ausfahrt : "MHMOmniSchleuse" + Schleuse_vor_Ausfahrt : "MHMOmniSchleuse" + Prio_Ausfahrt : "MAusfahrPrio_ABP" + Vorfahrt_Ausfahrweiche : Struct + Weiche_von_Haupt-Sep_belegt : Bool + Weiche_von_Ausfahr-Sep_belegt : Bool + Haupstrecke_gefahren : Int + AMR_gefahren : Int + Temp: + ErrQuit : Bool + ErrAnz : Bool + Stau_raus : Bool + Start_ok : Bool + B_aktiv : Bool + B_AusSchleuse : Bool + Antrieb_aktiv : Bool + Antrieb_vor : Bool + Antrieb_start : Bool + Antrieb_PS : Bool + Antrieb_stop : Bool + Fahren_Ok : Bool + Constant: + +--- NW 1: Systemzeug --- +// PS3-Bereich: + A "DAMR_Bereich".A01_UH06.AnlageEin + = Schleuse_vor_Einfahrt.Dyn.Sk.Auto_akt + = Weiche_Einfahrt.Dyn.Status.Auto_akt + = Sks_Arbeitsplatz.Dyn.Sk_zum_Beladeplatz.Auto_akt + = Schleuse_Vorstau.Dyn.Sk.Auto_akt + = Schleuse_Platz_1.Dyn.Sk.Auto_akt + = Schleuse_Platz_2.Dyn.Sk.Auto_akt + = Schleuse_Platz_3.Dyn.Sk.Auto_akt + = Sks_Arbeitsplatz.Dyn.Sk_aus_Beladeplatz.Auto_akt + = Schleuse_Ausfahrt.Dyn.Sk.Auto_akt + = Schleuse_vor_Ausfahrt.Dyn.Sk.Auto_akt + + AN "DAMR_Bereich".A01_UH06.BereichErr + = Schleuse_vor_Einfahrt.Dyn.Sk.Bereich_ok + = Weiche_Einfahrt.Dyn.Status.Bereich_ok + = Sks_Arbeitsplatz.Dyn.Sk_zum_Beladeplatz.Bereich_ok + = Schleuse_Vorstau.Dyn.Sk.Bereich_ok + = Schleuse_Platz_1.Dyn.Sk.Bereich_ok + = Schleuse_Platz_2.Dyn.Sk.Bereich_ok + = Schleuse_Platz_3.Dyn.Sk.Bereich_ok + = Sks_Arbeitsplatz.Dyn.Sk_aus_Beladeplatz.Bereich_ok + = Schleuse_Ausfahrt.Dyn.Sk.Bereich_ok + = Schleuse_vor_Ausfahrt.Dyn.Sk.Bereich_ok + + +--- NW 2: Störungen quittieren --- + A "DAMR_Bereich".A01_UZ0613.StOk_aktiv + = ErrQuit + S "DArbeitsplätze_Antriebe"."MA _Einfahrt_PS3".Stat.A_start + S "DArbeitsplätze_Antriebe"."MA _Nachstau1_PS3".Stat.A_start + S "DArbeitsplätze_Antriebe"."MA _Nachstau2_PS3".Stat.A_start + S "DArbeitsplätze_Antriebe"."MA _Ausfahrt_PS3".Stat.A_start + S "DArbeitsplätze_Antriebe".MA0082.Stat.A_start + S "DArbeitsplätze_Antriebe".MA0087.Stat.A_start + + + +--- NW 3: Schleuse vor Einfahrt --- +CALL FB "None" , (Schleusen_Nr:=3293, ErrQuit:=ErrQuit, B_VorSchleuse:="BG3270", B_InSchleuse:="BG3293", B_AusSchleuse:=?, B_Stau_raus:=?, Start_Ok:=1, Antrieb_Schleuse_aktiv:="MA0082", Antrieb_plus_aktiv:=1, Schleuse_geöffnet:="MB3293", RestZeit_Bereich_plus:=?, Y_Schleuse_Auf:="DArbeitsplätze_Zylinder".Schleuse_Vor_Einfahrt_PS3.Stat.Ast, Error:=DB608.DBW246, Antrieb_Schleuse_vor:="DArbeitsplätze_Antriebe".MA0082.Stat.A_vor, Antrieb_Schleuse_start:="DArbeitsplätze_Antriebe".MA0082.Stat.A_start, Antrieb_Schleuse_stop:="DArbeitsplätze_Antriebe".MA0082.Stat.Stop_vor, Antrieb_Schleuse_PS:="DArbeitsplätze_Antriebe".MA0082.Stat.A_PS, Antrieb_plus_vor:=?, Antrieb_plus_start:=?, hStOk:=ErrAnz) // Über Weiche_Einfahrt | Über Weiche_Einfahrt | Über Weiche_Einfahrt + +// Ausfahr-Weiche zurückschalten: + A "MB3293" + R "DArbeitsplätze_Zylinder".Weiche_Ausfahrt_PS4.Stat.Ast + +// Ausfahr-Weiche wieder freigeben: + A Schleuse_vor_Einfahrt.Dyn.Status.Trolley_draussen + R "DPS4_OmniFahren".Vorfahrt_Ausfahrweiche."Weiche_von_Haupt-Sep_belegt" + + +--- NW 4: Weiche Einfahrt --- +CALL FB "None" , (Weichen_Nr:=3302, ErrQuit:=ErrQuit, Fahren_Ok:=1, B_Ziel_gerade:="DArbeitsplätze_Sensoren".Stau_nach_Ausfahrt_PS4.Stat.B_Akt, B_Ziel_abzweig:="DArbeitsplätze_Sensoren".Stau_Einfahrt_PS3.Stat.B_Akt, Antrieb_Weiche_aktiv:="MA0082", Antrieb_Gerade_aktiv:="MA0082", Antrieb_Abzweig_aktiv:="MA0076", Weiche_ist_AST:="MB3302", Y_Weiche_gerade:=?, Y_Weiche_abzweig:="DArbeitsplätze_Zylinder".Weiche_Einfahrt_PS3.Stat.Ast, Error:=DB608.DBW248, Antrieb_Weiche_vor:="DArbeitsplätze_Antriebe".MA0082.Stat.A_vor, Antrieb_Weiche_stop:="DArbeitsplätze_Antriebe".MA0082.Stat.Stop_vor, Antrieb_Weiche_gerade_vor:=?, Antrieb_Weiche_gerade_stop:=?, Antrieb_Weiche_abzweig_vor:="DArbeitsplätze_Antriebe"."MA _Einfahrt_PS3".Stat.A_vor, Antrieb_Weiche_abzweig_stop:="DArbeitsplätze_Antriebe"."MA _Einfahrt_PS3".Stat.Stop_vor, hStOk:=ErrAnz) // s.o. | s.o. + + +--- NW 5: Schrittketten Arbeitsplätze ver-/entsorgen --- +CALL FB "None" , (Arbeitsplatz_Nr:=16#A300, ErrQuit:=ErrQuit, B_In_Schleuse_Vorstau:="BG3303", B_an_Platz_1:="BG3305", B_an_Platz_2:="BG3311", B_an_Platz_3:="BG3315", B_Nachstau_Einfahrt:="DArbeitsplätze_Sensoren".Stau_Ausfahrt_PS3.Stat.B_Akt, B_Nachstau_Ausfahrt:="BG3321", Y_Vorstau:="MB3303", Y_Platz_1:="MB3305", Y_Platz_2:="MB3311", Y_Platz_3:="MB3315", Antrieb_Vorstau_aktiv:="MA0076", Antrieb_Nachstau_1_aktiv:="MA0077", Antrieb_Nachstau_2_aktiv:="MA0080", Antrieb_Nachstau_3_aktiv:="MA0081", Y_Weiche_zu_Platz_1:="DArbeitsplätze_Zylinder".Weiche_zu_Platz1_PS3.Stat.Ast, Y_Weiche_zu_Platz_2:="DArbeitsplätze_Zylinder".Weiche_zu_Platz2_PS3.Stat.Ast, Y_Weiche_von_Platz_1:="DArbeitsplätze_Zylinder".Weiche_von_Platz1_PS3.Stat.Ast, Y_Weiche_von_Platz_2:="DArbeitsplätze_Zylinder".Weiche_von_Platz2_PS3.Stat.Ast, Antrieb_Nachstau_1_vor:="DArbeitsplätze_Antriebe"."MA _Nachstau1_PS3".Stat.A_vor, Antrieb_Nachstau_2_vor:="DArbeitsplätze_Antriebe"."MA _Nachstau2_PS3".Stat.A_vor, Trolley_hat_ABS_erreicht:=Schleuse_Vorstau.B_AusSchleuse, Reset_Vorstau_Schleuse:=Schleuse_Vorstau.Dyn.Sk.Reset, Reset_Platz_1_Stopper:=Schleuse_Platz_1.Dyn.Sk.Reset, Reset_Platz_2_Stopper:=Schleuse_Platz_2.Dyn.Sk.Reset, Reset_Platz_3_Stopper:=Schleuse_Platz_3.Dyn.Sk.Reset, Error:=DB608.DBW104, Antrieb_Vorstau_vor:="DArbeitsplätze_Antriebe"."MA _Einfahrt_PS3".Stat.A_vor, Antrieb_Nachstau_3_vor:="DArbeitsplätze_Antriebe"."MA _Ausfahrt_PS3".Stat.A_vor, hStOk:=ErrAnz) // XY00: X=A(PS), X=B(MPS), Y= Nummer des Platzes + +// Anzeigen: + A "DAMR_Bereich".A01_UH06.AnlageEin + A Sks_Arbeitsplatz.Dyn.Status.Arbeitsplatz_aktiviert + = "PF0044" + + A Sks_Arbeitsplatz.Dyn.SS.Externe_Anzeige + = "PF3300" + + +--- NW 6: Schleuse Vorstau --- +CALL FB "None" , (Schleusen_Nr:=3303, ErrQuit:=ErrQuit, B_VorSchleuse:="BG3302", B_InSchleuse:="BG3303", B_AusSchleuse:=?, B_Stau_raus:=?, Start_Ok:=1, Antrieb_Schleuse_aktiv:="MA0076", Antrieb_plus_aktiv:=1, Schleuse_geöffnet:="MB3303", RestZeit_Bereich_plus:=?, Y_Schleuse_Auf:="DArbeitsplätze_Zylinder".Schleuse_Vorstau_PS3.Stat.Ast, Error:=DB608.DBW250, Antrieb_Schleuse_vor:="DArbeitsplätze_Antriebe"."MA _Einfahrt_PS3".Stat.A_vor, Antrieb_Schleuse_start:="DArbeitsplätze_Antriebe"."MA _Einfahrt_PS3".Stat.A_start, Antrieb_Schleuse_stop:="DArbeitsplätze_Antriebe"."MA _Einfahrt_PS3".Stat.Stop_vor, Antrieb_Schleuse_PS:="DArbeitsplätze_Antriebe"."MA _Einfahrt_PS3".Stat.A_PS, Antrieb_plus_vor:=?, Antrieb_plus_start:=?, hStOk:=ErrAnz) + + +--- NW 7: Schleuse Platz 1 --- +CALL FB "None" , (Schleusen_Nr:=3305, ErrQuit:=ErrQuit, B_VorSchleuse:=?, B_InSchleuse:="BG3305", B_AusSchleuse:=?, B_Stau_raus:=?, Start_Ok:=1, Antrieb_Schleuse_aktiv:=1, Antrieb_plus_aktiv:="MA0077", Schleuse_geöffnet:="MB3305", RestZeit_Bereich_plus:=?, Y_Schleuse_Auf:="DArbeitsplätze_Zylinder".Schleuse_Platz1_PS3.Stat.Ast, Error:=DB608.DBW252, Antrieb_Schleuse_vor:=?, Antrieb_Schleuse_start:=?, Antrieb_Schleuse_stop:=?, Antrieb_Schleuse_PS:=?, Antrieb_plus_vor:="DArbeitsplätze_Antriebe"."MA _Nachstau1_PS3".Stat.A_vor, Antrieb_plus_start:=?, hStOk:=ErrAnz) + + A Schleuse_Platz_1.Dyn.Status.Trolley_draussen + S Sks_Arbeitsplatz.Dyn.Platz_1.Trolley_hat_Arbeitsplatz_verlassen + JCN P1D + + L Schleuse_Platz_1.Dyn.TrolleyID_ausgefahren + T Sks_Arbeitsplatz.Dyn.Platz_1.TrolleyID_ausgefahren + +P1D: NOP 0 + + +--- NW 8: Schleuse Platz 2 --- +CALL FB "None" , (Schleusen_Nr:=3311, ErrQuit:=ErrQuit, B_VorSchleuse:=?, B_InSchleuse:="BG3311", B_AusSchleuse:=?, B_Stau_raus:=?, Start_Ok:=1, Antrieb_Schleuse_aktiv:=1, Antrieb_plus_aktiv:="MA0080", Schleuse_geöffnet:="MB3311", RestZeit_Bereich_plus:=?, Y_Schleuse_Auf:="DArbeitsplätze_Zylinder".Schleuse_Platz2_PS3.Stat.Ast, Error:=DB608.DBW254, Antrieb_Schleuse_vor:=?, Antrieb_Schleuse_start:=?, Antrieb_Schleuse_stop:=?, Antrieb_Schleuse_PS:=?, Antrieb_plus_vor:="DArbeitsplätze_Antriebe"."MA _Nachstau2_PS3".Stat.A_vor, Antrieb_plus_start:=?, hStOk:=ErrAnz) + + A Schleuse_Platz_2.Dyn.Status.Trolley_draussen + S Sks_Arbeitsplatz.Dyn.Platz_2.Trolley_hat_Arbeitsplatz_verlassen + JCN P2D + + L Schleuse_Platz_2.Dyn.TrolleyID_ausgefahren + T Sks_Arbeitsplatz.Dyn.Platz_2.TrolleyID_ausgefahren + +P2D: NOP 0 + + +--- NW 9: Schleuse Platz 3 --- +CALL FB "None" , (Schleusen_Nr:=3315, ErrQuit:=ErrQuit, B_VorSchleuse:=?, B_InSchleuse:="BG3315", B_AusSchleuse:=?, B_Stau_raus:=?, Start_Ok:=1, Antrieb_Schleuse_aktiv:=1, Antrieb_plus_aktiv:="MA0081", Schleuse_geöffnet:="MB3315", RestZeit_Bereich_plus:=?, Y_Schleuse_Auf:="DArbeitsplätze_Zylinder".Schleuse_Platz3_PS3.Stat.Ast, Error:=DB608.DBW256, Antrieb_Schleuse_vor:=?, Antrieb_Schleuse_start:=?, Antrieb_Schleuse_stop:=?, Antrieb_Schleuse_PS:=?, Antrieb_plus_vor:="DArbeitsplätze_Antriebe"."MA _Ausfahrt_PS3".Stat.A_vor, Antrieb_plus_start:=?, hStOk:=ErrAnz) + + A Schleuse_Platz_3.Dyn.Status.Trolley_draussen + S Sks_Arbeitsplatz.Dyn.Platz_3.Trolley_hat_Arbeitsplatz_verlassen + JCN P3D + + L Schleuse_Platz_3.Dyn.TrolleyID_ausgefahren + T Sks_Arbeitsplatz.Dyn.Platz_3.TrolleyID_ausgefahren + +P3D: NOP 0 + + +--- NW 10: Schleuse Ausfahrt --- +CALL FB "None" , (Schleusen_Nr:=3321, ErrQuit:=ErrQuit, B_VorSchleuse:="BG3320", B_InSchleuse:="BG3321", B_AusSchleuse:="BG3322", B_Stau_raus:="DArbeitsplätze_Sensoren".Stau_nach_Ausfahrt_PS3.Stat.B_Akt, Start_Ok:=1, Antrieb_Schleuse_aktiv:="MA0081", Antrieb_plus_aktiv:="MA0087", Schleuse_geöffnet:="MB3321", RestZeit_Bereich_plus:=?, Y_Schleuse_Auf:="DArbeitsplätze_Zylinder".Schleuse_Ausfahrt_PS3.Stat.Ast, Error:=DB608.DBW258, Antrieb_Schleuse_vor:="DArbeitsplätze_Antriebe"."MA _Ausfahrt_PS3".Stat.A_vor, Antrieb_Schleuse_start:="DArbeitsplätze_Antriebe"."MA _Ausfahrt_PS3".Stat.A_start, Antrieb_Schleuse_stop:="DArbeitsplätze_Antriebe"."MA _Ausfahrt_PS3".Stat.Stop_vor, Antrieb_Schleuse_PS:="DArbeitsplätze_Antriebe"."MA _Ausfahrt_PS3".Stat.A_PS, Antrieb_plus_vor:="DArbeitsplätze_Antriebe".MA0087.Stat.A_vor, Antrieb_plus_start:="DArbeitsplätze_Antriebe".MA0087.Stat.A_start, hStOk:=ErrAnz) + +// Ausfahr-Weiche schalten: + A "MB3321" + S "DArbeitsplätze_Zylinder".Weiche_Ausfahrt_PS3.Stat.Ast + +// Ausfahr-Weiche wieder freigeben: + A Schleuse_Ausfahrt.Dyn.Status.Trolley_draussen + R Vorfahrt_Ausfahrweiche."Weiche_von_Ausfahr-Sep_belegt" + +// Ausfahr-Förderer mit einschalten: + A "MB3322" // Weiche ist auf Abzweig + A "BG3322" // Trolley auf Stauklappe + AN "BG3331" // aber nicht in Schleuse + S "DArbeitsplätze_Antriebe"."MA _Ausfahrt_PS3".Stat.A_vor // ABP-Ausfahr-Förderer mit einschalten + + +--- NW 11: Schleuse Hauptstrecke vor Ausfahrt --- +// Antrieb -1 mit einschalten: + A Schleuse_vor_Ausfahrt.Dyn.Status."Trolley_fährt_in_Schleuse" + AN "BG3323" // Ist in Schleuse + S "DArbeitsplätze_Antriebe".MA0082.Stat.A_vor + + SET + R Antrieb_vor // wegen unten IN/OUT und temp + R Antrieb_start + R Antrieb_PS + +CALL FB "None" , (Schleusen_Nr:=3323, ErrQuit:=ErrQuit, B_VorSchleuse:="BG3294", B_InSchleuse:="BG3323", B_AusSchleuse:="BG3322", B_Stau_raus:="DArbeitsplätze_Sensoren".Stau_nach_Ausfahrt_PS3.Stat.B_Akt, Start_Ok:=1, Antrieb_Schleuse_aktiv:="MA0087", Antrieb_plus_aktiv:="MA0087", Schleuse_geöffnet:="MB3323", RestZeit_Bereich_plus:=?, Y_Schleuse_Auf:="DArbeitsplätze_Zylinder".Schleuse_Vor_Ausfahrt_PS3.Stat.Ast, Error:=DB608.DBW260, Antrieb_Schleuse_vor:=Antrieb_vor, Antrieb_Schleuse_start:=Antrieb_start, Antrieb_Schleuse_stop:="DArbeitsplätze_Antriebe".MA0087.Stat.Stop_vor, Antrieb_Schleuse_PS:=Antrieb_PS, Antrieb_plus_vor:=?, Antrieb_plus_start:=?, hStOk:=ErrAnz) // s.o. | s.o. + + A Antrieb_vor + S "DArbeitsplätze_Antriebe".MA0087.Stat.A_vor + S "DArbeitsplätze_Antriebe".MA0082.Stat.A_vor + A Antrieb_start + S "DArbeitsplätze_Antriebe".MA0087.Stat.A_start + S "DArbeitsplätze_Antriebe".MA0082.Stat.A_start + A Antrieb_PS + S "DArbeitsplätze_Antriebe".MA0087.Stat.A_PS + S "DArbeitsplätze_Antriebe".MA0082.Stat.A_PS + +// Ausfahr-Weiche zurückschalten: + A "MB3323" + R "DArbeitsplätze_Zylinder".Weiche_Ausfahrt_PS3.Stat.Ast + +// Ausfahr-Weiche wieder freigeben: + A Schleuse_vor_Ausfahrt.Dyn.Status.Trolley_draussen + R Vorfahrt_Ausfahrweiche."Weiche_von_Haupt-Sep_belegt" + + +--- NW 12: Ausfahr-Priorität --- +CALL FB "None" , (BG_Haupt_Schleuse:="BG3323", Haupt_Schleuse_geöffnet:="MB3323", BG_ABP_Schleuse:="BG3321", ABP_Schleuse_geöffnet:="MB3321", Aktive_ABP:="DPS5_OmniFahren".Aktivierte_ABPs) + + +--- NW 13: Störungen anzeigen --- + A ErrAnz + R ErrAnz + S "DAMR_Bereich".A01_UZ0613.StOk_blinken + + +--- NW 14: Ende --- + BE + diff --git a/=A01+UH06-KF00/Programmbausteine/Anlage/1_Arbeitsplätze/Arbeitsplätze/PS4_OmniFahren.awl b/=A01+UH06-KF00/Programmbausteine/Anlage/1_Arbeitsplätze/Arbeitsplätze/PS4_OmniFahren.awl new file mode 100644 index 0000000..c6a8a1b --- /dev/null +++ b/=A01+UH06-KF00/Programmbausteine/Anlage/1_Arbeitsplätze/Arbeitsplätze/PS4_OmniFahren.awl @@ -0,0 +1,163 @@ +=== FB 1122: PS4_OmniFahren [STL] === +INTERFACE: + Input: + Output: + InOut: + Static: + Schleuse_vor_Einfahrt : "MHMOmniSchleuse" + Weiche_Einfahrt : "MHMOmniWeiche" + Schleuse_Vorstau : "MHMOmniSchleuse" + Sks_Arbeitsplatz : "MHM_Arbeitsplatz" + Schleuse_Platz_1 : "MHMOmniSchleuse" + Schleuse_Platz_2 : "MHMOmniSchleuse" + Schleuse_Platz_3 : "MHMOmniSchleuse" + Schleuse_Ausfahrt : "MHMOmniSchleuse" + Prio_Ausfahrt : "MAusfahrPrio_ABP" + Vorfahrt_Ausfahrweiche : Struct + Weiche_von_Haupt-Sep_belegt : Bool + Weiche_von_Ausfahr-Sep_belegt : Bool + Haupstrecke_gefahren : Int + AMR_gefahren : Int + Temp: + ErrQuit : Bool + ErrAnz : Bool + Stau_raus : Bool + Start_ok : Bool + B_aktiv : Bool + B_AusSchleuse : Bool + Antrieb_aktiv : Bool + Antrieb_start : Bool + Antrieb_stop : Bool + Fahren_Ok : Bool + Constant: + +--- NW 1: Systemzeug --- +// PS4-Bereich: + A "DAMR_Bereich".A01_UH06.AnlageEin + = Schleuse_vor_Einfahrt.Dyn.Sk.Auto_akt + = Weiche_Einfahrt.Dyn.Status.Auto_akt + = Sks_Arbeitsplatz.Dyn.Sk_zum_Beladeplatz.Auto_akt + = Schleuse_Vorstau.Dyn.Sk.Auto_akt + = Schleuse_Platz_1.Dyn.Sk.Auto_akt + = Schleuse_Platz_2.Dyn.Sk.Auto_akt + = Schleuse_Platz_3.Dyn.Sk.Auto_akt + = Sks_Arbeitsplatz.Dyn.Sk_aus_Beladeplatz.Auto_akt + = Schleuse_Ausfahrt.Dyn.Sk.Auto_akt + + AN "DAMR_Bereich".A01_UH06.BereichErr + = Schleuse_vor_Einfahrt.Dyn.Sk.Bereich_ok + = Weiche_Einfahrt.Dyn.Status.Bereich_ok + = Sks_Arbeitsplatz.Dyn.Sk_zum_Beladeplatz.Bereich_ok + = Schleuse_Vorstau.Dyn.Sk.Bereich_ok + = Schleuse_Platz_1.Dyn.Sk.Bereich_ok + = Schleuse_Platz_2.Dyn.Sk.Bereich_ok + = Schleuse_Platz_3.Dyn.Sk.Bereich_ok + = Sks_Arbeitsplatz.Dyn.Sk_aus_Beladeplatz.Bereich_ok + = Schleuse_Ausfahrt.Dyn.Sk.Bereich_ok + + +--- NW 2: Störungen quittieren --- + A "DAMR_Bereich".A01_UZ0614.StOk_aktiv + = ErrQuit + S "DArbeitsplätze_Antriebe"."MA _Einfahrt_PS4".Stat.A_start + S "DArbeitsplätze_Antriebe"."MA _Nachstau1_PS4".Stat.A_start + S "DArbeitsplätze_Antriebe"."MA _Nachstau2_PS4".Stat.A_start + S "DArbeitsplätze_Antriebe"."MA _Ausfahrt_PS4".Stat.A_start + S "DArbeitsplätze_Antriebe".MA0082.Stat.A_start + + +--- NW 3: Schleuse vor Einfahrt --- +CALL FB "None" , (Schleusen_Nr:=3271, ErrQuit:=ErrQuit, B_VorSchleuse:="BG3263", B_InSchleuse:="BG3271", B_AusSchleuse:=?, B_Stau_raus:=?, Start_Ok:=1, Antrieb_Schleuse_aktiv:="MA0082", Antrieb_plus_aktiv:=1, Schleuse_geöffnet:="MB3271", RestZeit_Bereich_plus:=?, Y_Schleuse_Auf:="DArbeitsplätze_Zylinder".Schleuse_Vor_Einfahrt_PS4.Stat.Ast, Error:=DB608.DBW232, Antrieb_Schleuse_vor:="DArbeitsplätze_Antriebe".MA0082.Stat.A_vor, Antrieb_Schleuse_start:="DArbeitsplätze_Antriebe".MA0082.Stat.A_start, Antrieb_Schleuse_stop:="DArbeitsplätze_Antriebe".MA0082.Stat.Stop_vor, Antrieb_Schleuse_PS:="DArbeitsplätze_Antriebe".MA0082.Stat.A_PS, Antrieb_plus_vor:=?, Antrieb_plus_start:=?, hStOk:=ErrAnz) // Über Weiche_Einfahrt | Über Weiche_Einfahrt | Über Weiche_Einfahrt + + +--- NW 4: Weiche Einfahrt --- +CALL FB "None" , (Weichen_Nr:=3272, ErrQuit:=ErrQuit, Fahren_Ok:=1, B_Ziel_gerade:="DArbeitsplätze_Sensoren".Stau_nach_Einfahrt_PS4.Stat.B_Akt, B_Ziel_abzweig:="DArbeitsplätze_Sensoren".Stau_Einfahrt_PS4.Stat.B_Akt, Antrieb_Weiche_aktiv:="MA0082", Antrieb_Gerade_aktiv:="MA0082", Antrieb_Abzweig_aktiv:="MA0072", Weiche_ist_AST:="MB3272", Y_Weiche_gerade:=?, Y_Weiche_abzweig:="DArbeitsplätze_Zylinder".Weiche_Einfahrt_PS4.Stat.Ast, Error:=DB608.DBW234, Antrieb_Weiche_vor:="DArbeitsplätze_Antriebe".MA0082.Stat.A_vor, Antrieb_Weiche_stop:="DArbeitsplätze_Antriebe".MA0082.Stat.Stop_vor, Antrieb_Weiche_gerade_vor:=?, Antrieb_Weiche_gerade_stop:=?, Antrieb_Weiche_abzweig_vor:="DArbeitsplätze_Antriebe"."MA _Einfahrt_PS4".Stat.A_vor, Antrieb_Weiche_abzweig_stop:="DArbeitsplätze_Antriebe"."MA _Einfahrt_PS4".Stat.Stop_vor, hStOk:=ErrAnz) // s.o. | s.o. + + +--- NW 5: Schrittketten Arbeitsplätze ver-/entsorgen --- +CALL FB "None" , (Arbeitsplatz_Nr:=16#A400, ErrQuit:=ErrQuit, B_In_Schleuse_Vorstau:="BG3273", B_an_Platz_1:="BG3275", B_an_Platz_2:="BG3281", B_an_Platz_3:="BG3285", B_Nachstau_Einfahrt:="DArbeitsplätze_Sensoren".Stau_Ausfahrt_PS4.Stat.B_Akt, B_Nachstau_Ausfahrt:="BG3291", Y_Vorstau:="MB3273", Y_Platz_1:="MB3275", Y_Platz_2:="MB3281", Y_Platz_3:="MB3285", Antrieb_Vorstau_aktiv:="MA0072", Antrieb_Nachstau_1_aktiv:="MA0073", Antrieb_Nachstau_2_aktiv:="MA0074", Antrieb_Nachstau_3_aktiv:="MA0075", Y_Weiche_zu_Platz_1:="DArbeitsplätze_Zylinder".Weiche_zu_Platz1_PS4.Stat.Ast, Y_Weiche_zu_Platz_2:="DArbeitsplätze_Zylinder".Weiche_zu_Platz2_PS4.Stat.Ast, Y_Weiche_von_Platz_1:="DArbeitsplätze_Zylinder".Weiche_von_Platz1_PS4.Stat.Ast, Y_Weiche_von_Platz_2:="DArbeitsplätze_Zylinder".Weiche_von_Platz2_PS4.Stat.Ast, Antrieb_Nachstau_1_vor:="DArbeitsplätze_Antriebe"."MA _Nachstau1_PS4".Stat.A_vor, Antrieb_Nachstau_2_vor:="DArbeitsplätze_Antriebe"."MA _Nachstau2_PS4".Stat.A_vor, Trolley_hat_ABS_erreicht:=Schleuse_Vorstau.B_AusSchleuse, Reset_Vorstau_Schleuse:=Schleuse_Vorstau.Dyn.Sk.Reset, Reset_Platz_1_Stopper:=Schleuse_Platz_1.Dyn.Sk.Reset, Reset_Platz_2_Stopper:=Schleuse_Platz_2.Dyn.Sk.Reset, Reset_Platz_3_Stopper:=Schleuse_Platz_3.Dyn.Sk.Reset, Error:=DB608.DBW106, Antrieb_Vorstau_vor:="DArbeitsplätze_Antriebe"."MA _Einfahrt_PS4".Stat.A_vor, Antrieb_Nachstau_3_vor:="DArbeitsplätze_Antriebe"."MA _Ausfahrt_PS4".Stat.A_vor, hStOk:=ErrAnz) // XY00: X=A(PS), X=B(MPS), Y= Nummer des Platzes + +// Anzeigen: + A "DAMR_Bereich".A01_UH06.AnlageEin + A Sks_Arbeitsplatz.Dyn.Status.Arbeitsplatz_aktiviert + = "PF0042" + + A Sks_Arbeitsplatz.Dyn.SS.Externe_Anzeige + = "PF3270" + + +--- NW 6: Schleuse Vorstau --- +CALL FB "None" , (Schleusen_Nr:=3273, ErrQuit:=ErrQuit, B_VorSchleuse:="BG3272", B_InSchleuse:="BG3273", B_AusSchleuse:=?, B_Stau_raus:=?, Start_Ok:=1, Antrieb_Schleuse_aktiv:="MA0072", Antrieb_plus_aktiv:=1, Schleuse_geöffnet:="MB3273", RestZeit_Bereich_plus:=?, Y_Schleuse_Auf:="DArbeitsplätze_Zylinder".Schleuse_Vorstau_PS4.Stat.Ast, Error:=DB608.DBW236, Antrieb_Schleuse_vor:="DArbeitsplätze_Antriebe"."MA _Einfahrt_PS4".Stat.A_vor, Antrieb_Schleuse_start:="DArbeitsplätze_Antriebe"."MA _Einfahrt_PS4".Stat.A_start, Antrieb_Schleuse_stop:="DArbeitsplätze_Antriebe"."MA _Einfahrt_PS4".Stat.Stop_vor, Antrieb_Schleuse_PS:="DArbeitsplätze_Antriebe"."MA _Einfahrt_PS4".Stat.A_PS, Antrieb_plus_vor:=?, Antrieb_plus_start:=?, hStOk:=ErrAnz) + + +--- NW 7: Schleuse Platz 1 --- +CALL FB "None" , (Schleusen_Nr:=3275, ErrQuit:=ErrQuit, B_VorSchleuse:=?, B_InSchleuse:="BG3275", B_AusSchleuse:=?, B_Stau_raus:=?, Start_Ok:=1, Antrieb_Schleuse_aktiv:=1, Antrieb_plus_aktiv:="MA0073", Schleuse_geöffnet:="MB3275", RestZeit_Bereich_plus:=?, Y_Schleuse_Auf:="DArbeitsplätze_Zylinder".Schleuse_Platz1_PS4.Stat.Ast, Error:=DB608.DBW238, Antrieb_Schleuse_vor:=?, Antrieb_Schleuse_start:=?, Antrieb_Schleuse_stop:=?, Antrieb_Schleuse_PS:=?, Antrieb_plus_vor:="DArbeitsplätze_Antriebe"."MA _Nachstau1_PS4".Stat.A_vor, Antrieb_plus_start:=?, hStOk:=ErrAnz) + + A Schleuse_Platz_1.Dyn.Status.Trolley_draussen + S Sks_Arbeitsplatz.Dyn.Platz_1.Trolley_hat_Arbeitsplatz_verlassen + JCN P1D + + L Schleuse_Platz_1.Dyn.TrolleyID_ausgefahren + T Sks_Arbeitsplatz.Dyn.Platz_1.TrolleyID_ausgefahren + +P1D: NOP 0 + + +--- NW 8: Schleuse Platz 2 --- +CALL FB "None" , (Schleusen_Nr:=3281, ErrQuit:=ErrQuit, B_VorSchleuse:=?, B_InSchleuse:="BG3281", B_AusSchleuse:=?, B_Stau_raus:=?, Start_Ok:=1, Antrieb_Schleuse_aktiv:=1, Antrieb_plus_aktiv:="MA0074", Schleuse_geöffnet:="MB3281", RestZeit_Bereich_plus:=?, Y_Schleuse_Auf:="DArbeitsplätze_Zylinder".Schleuse_Platz2_PS4.Stat.Ast, Error:=DB608.DBW240, Antrieb_Schleuse_vor:=?, Antrieb_Schleuse_start:=?, Antrieb_Schleuse_stop:=?, Antrieb_Schleuse_PS:=?, Antrieb_plus_vor:="DArbeitsplätze_Antriebe"."MA _Nachstau2_PS4".Stat.A_vor, Antrieb_plus_start:=?, hStOk:=ErrAnz) + + A Schleuse_Platz_2.Dyn.Status.Trolley_draussen + S Sks_Arbeitsplatz.Dyn.Platz_2.Trolley_hat_Arbeitsplatz_verlassen + JCN P2D + + L Schleuse_Platz_2.Dyn.TrolleyID_ausgefahren + T Sks_Arbeitsplatz.Dyn.Platz_2.TrolleyID_ausgefahren + +P2D: NOP 0 + + +--- NW 9: Schleuse Platz 3 --- +CALL FB "None" , (Schleusen_Nr:=3285, ErrQuit:=ErrQuit, B_VorSchleuse:=?, B_InSchleuse:="BG3285", B_AusSchleuse:=?, B_Stau_raus:=?, Start_Ok:=1, Antrieb_Schleuse_aktiv:=1, Antrieb_plus_aktiv:="MA0075", Schleuse_geöffnet:="MB3285", RestZeit_Bereich_plus:=?, Y_Schleuse_Auf:="DArbeitsplätze_Zylinder".Schleuse_Platz3_PS4.Stat.Ast, Error:=DB608.DBW242, Antrieb_Schleuse_vor:=?, Antrieb_Schleuse_start:=?, Antrieb_Schleuse_stop:=?, Antrieb_Schleuse_PS:=?, Antrieb_plus_vor:="DArbeitsplätze_Antriebe"."MA _Ausfahrt_PS4".Stat.A_vor, Antrieb_plus_start:=?, hStOk:=ErrAnz) + + A Schleuse_Platz_3.Dyn.Status.Trolley_draussen + S Sks_Arbeitsplatz.Dyn.Platz_3.Trolley_hat_Arbeitsplatz_verlassen + JCN P3D + + L Schleuse_Platz_3.Dyn.TrolleyID_ausgefahren + T Sks_Arbeitsplatz.Dyn.Platz_3.TrolleyID_ausgefahren + +P3D: NOP 0 + + +--- NW 10: Schleuse Ausfahrt --- + A "BG3302" + A "DZuführung_OmniFahren".Alle_ABPs_anfahren + O + A "BG3294" + AN "DZuführung_OmniFahren".Alle_ABPs_anfahren + = B_AusSchleuse + +CALL FB "None" , (Schleusen_Nr:=3291, ErrQuit:=ErrQuit, B_VorSchleuse:="BG3290", B_InSchleuse:="BG3291", B_AusSchleuse:=B_AusSchleuse, B_Stau_raus:="DArbeitsplätze_Sensoren".Stau_nach_Ausfahrt_PS4.Stat.B_Akt, Start_Ok:=1, Antrieb_Schleuse_aktiv:="MA0075", Antrieb_plus_aktiv:="MA0082", Schleuse_geöffnet:="MB3291", RestZeit_Bereich_plus:=?, Y_Schleuse_Auf:="DArbeitsplätze_Zylinder".Schleuse_Ausfahrt_PS4.Stat.Ast, Error:=DB608.DBW244, Antrieb_Schleuse_vor:="DArbeitsplätze_Antriebe"."MA _Ausfahrt_PS4".Stat.A_vor, Antrieb_Schleuse_start:="DArbeitsplätze_Antriebe"."MA _Ausfahrt_PS4".Stat.A_start, Antrieb_Schleuse_stop:="DArbeitsplätze_Antriebe"."MA _Ausfahrt_PS4".Stat.Stop_vor, Antrieb_Schleuse_PS:="DArbeitsplätze_Antriebe"."MA _Ausfahrt_PS4".Stat.A_PS, Antrieb_plus_vor:="DArbeitsplätze_Antriebe".MA0082.Stat.A_vor, Antrieb_plus_start:="DArbeitsplätze_Antriebe".MA0082.Stat.A_start, hStOk:=ErrAnz) + +// Ausfahr-Weiche schalten: + A "MB3291" + S "DArbeitsplätze_Zylinder".Weiche_Ausfahrt_PS4.Stat.Ast + +// Ausfahr-Weiche wieder freigeben: + A Schleuse_Ausfahrt.Dyn.Status.Trolley_draussen + R Vorfahrt_Ausfahrweiche."Weiche_von_Ausfahr-Sep_belegt" + + +--- NW 11: Ausfahr-Priorität --- +CALL FB "None" , (BG_Haupt_Schleuse:="BG3293", Haupt_Schleuse_geöffnet:="MB3293", BG_ABP_Schleuse:="BG3291", ABP_Schleuse_geöffnet:="MB3291", Aktive_ABP:="DPS5_OmniFahren".Aktivierte_ABPs) + + +--- NW 12: Störungen anzeigen --- + A ErrAnz + R ErrAnz + S "DAMR_Bereich".A01_UZ0614.StOk_blinken + + +--- NW 13: Ende --- + BE + diff --git a/=A01+UH06-KF00/Programmbausteine/Anlage/1_Arbeitsplätze/Arbeitsplätze/PS5_OmniFahren.awl b/=A01+UH06-KF00/Programmbausteine/Anlage/1_Arbeitsplätze/Arbeitsplätze/PS5_OmniFahren.awl new file mode 100644 index 0000000..d05b88a --- /dev/null +++ b/=A01+UH06-KF00/Programmbausteine/Anlage/1_Arbeitsplätze/Arbeitsplätze/PS5_OmniFahren.awl @@ -0,0 +1,235 @@ +=== FB 1121: PS5_OmniFahren [STL] === +INTERFACE: + Input: + Output: + InOut: + Static: + Schleuse_vor_Einfahrt : "MHMOmniSchleuse" + Weiche_Einfahrt : "MHMOmniWeiche" + Schleuse_Vorstau : "MHMOmniSchleuse" + Sks_Arbeitsplatz : "MHM_Arbeitsplatz" + Schleuse_Platz_1 : "MHMOmniSchleuse" + Schleuse_Platz_2 : "MHMOmniSchleuse" + Schleuse_Platz_3 : "MHMOmniSchleuse" + Schleuse_Ausfahrt : "MHMOmniSchleuse" + Schleuse_vor_Ausfahrt : "MHMOmniSchleuse" + Prio_Ausfahrt : "MAusfahrPrio_ABP" + Vorfahrt_Ausfahrweiche : Struct + Weiche_von_Haupt-Sep_belegt : Bool + Weiche_von_Ausfahr-Sep_belegt : Bool + Haupstrecke_gefahren : Int + AMR_gefahren : Int + Aktivierte_ABPs : Int + Temp: + ErrQuit : Bool + ErrAnz : Bool + Stau_raus : Bool + Start_ok : Bool + B_aktiv : Bool + B_AusSchleuse : Bool + Antrieb_aktiv : Bool + Antrieb_start : Bool + Antrieb_stop : Bool + Fahren_Ok : Bool + Constant: + +--- NW 1: Systemzeug --- +// PS5-Bereich: + A "DAMR_Bereich".A01_UH06.AnlageEin + = Schleuse_vor_Einfahrt.Dyn.Sk.Auto_akt + = Weiche_Einfahrt.Dyn.Status.Auto_akt + = Sks_Arbeitsplatz.Dyn.Sk_zum_Beladeplatz.Auto_akt + = Schleuse_Vorstau.Dyn.Sk.Auto_akt + = Schleuse_Platz_1.Dyn.Sk.Auto_akt + = Schleuse_Platz_2.Dyn.Sk.Auto_akt + = Schleuse_Platz_3.Dyn.Sk.Auto_akt + = Sks_Arbeitsplatz.Dyn.Sk_aus_Beladeplatz.Auto_akt + = Schleuse_Ausfahrt.Dyn.Sk.Auto_akt + = Schleuse_vor_Ausfahrt.Dyn.Sk.Auto_akt + + AN "DAMR_Bereich".A01_UH06.BereichErr + = Schleuse_vor_Einfahrt.Dyn.Sk.Bereich_ok + = Weiche_Einfahrt.Dyn.Status.Bereich_ok + = Sks_Arbeitsplatz.Dyn.Sk_zum_Beladeplatz.Bereich_ok + = Schleuse_Vorstau.Dyn.Sk.Bereich_ok + = Schleuse_Platz_1.Dyn.Sk.Bereich_ok + = Schleuse_Platz_2.Dyn.Sk.Bereich_ok + = Schleuse_Platz_3.Dyn.Sk.Bereich_ok + = Sks_Arbeitsplatz.Dyn.Sk_aus_Beladeplatz.Bereich_ok + = Schleuse_Ausfahrt.Dyn.Sk.Bereich_ok + = Schleuse_vor_Ausfahrt.Dyn.Sk.Bereich_ok + + +--- NW 2: Störungen quittieren --- + A "DAMR_Bereich".A01_UZ0615.StOk_aktiv + = ErrQuit + S "DArbeitsplätze_Antriebe"."MA _Einfahrt_PS5".Stat.A_start + S "DArbeitsplätze_Antriebe"."MA _Nachstau1_PS5".Stat.A_start + S "DArbeitsplätze_Antriebe"."MA _Nachstau2_PS5".Stat.A_start + S "DArbeitsplätze_Antriebe"."MA _Ausfahrt_PS5".Stat.A_start + S "DArbeitsplätze_Antriebe".MA0082.Stat.A_start + + +--- NW 3: Schleuse vor Einfahrt --- +CALL FB "None" , (Schleusen_Nr:=3241, ErrQuit:=ErrQuit, B_VorSchleuse:="BG3244", B_InSchleuse:="BG3241", B_AusSchleuse:=?, B_Stau_raus:=?, Start_Ok:=1, Antrieb_Schleuse_aktiv:="MA0082", Antrieb_plus_aktiv:=1, Schleuse_geöffnet:="MB3241", RestZeit_Bereich_plus:=?, Y_Schleuse_Auf:="DArbeitsplätze_Zylinder".Schleuse_Vor_Einfahrt_PS5.Stat.Ast, Error:=DB608.DBW216, Antrieb_Schleuse_vor:="DArbeitsplätze_Antriebe".MA0082.Stat.A_vor, Antrieb_Schleuse_start:="DArbeitsplätze_Antriebe".MA0082.Stat.A_start, Antrieb_Schleuse_stop:="DArbeitsplätze_Antriebe".MA0082.Stat.Stop_vor, Antrieb_Schleuse_PS:="DArbeitsplätze_Antriebe".MA0082.Stat.A_PS, Antrieb_plus_vor:=?, Antrieb_plus_start:=?, hStOk:=ErrAnz) // Über Weiche_Einfahrt | Über Weiche_Einfahrt | Über Weiche_Einfahrt + + +--- NW 4: Weiche Einfahrt --- +CALL FB "None" , (Weichen_Nr:=3242, ErrQuit:=ErrQuit, Fahren_Ok:=1, B_Ziel_gerade:="DArbeitsplätze_Sensoren".Stau_nach_Einfahrt_PS5.Stat.B_Akt, B_Ziel_abzweig:="DArbeitsplätze_Sensoren".Stau_Einfahrt_PS5.Stat.B_Akt, Antrieb_Weiche_aktiv:="MA0082", Antrieb_Gerade_aktiv:="MA0082", Antrieb_Abzweig_aktiv:="MA0066", Weiche_ist_AST:="MB3242", Y_Weiche_gerade:=?, Y_Weiche_abzweig:="DArbeitsplätze_Zylinder".Weiche_Einfahrt_PS5.Stat.Ast, Error:=DB608.DBW218, Antrieb_Weiche_vor:="DArbeitsplätze_Antriebe".MA0082.Stat.A_vor, Antrieb_Weiche_stop:="DArbeitsplätze_Antriebe".MA0082.Stat.Stop_vor, Antrieb_Weiche_gerade_vor:=?, Antrieb_Weiche_gerade_stop:=?, Antrieb_Weiche_abzweig_vor:="DArbeitsplätze_Antriebe"."MA _Einfahrt_PS5".Stat.A_vor, Antrieb_Weiche_abzweig_stop:="DArbeitsplätze_Antriebe"."MA _Einfahrt_PS5".Stat.Stop_vor, hStOk:=ErrAnz) // s.o. | s.o. + + +--- NW 5: Schrittketten Arbeitsplätze ver-/entsorgen --- +CALL FB "None" , (Arbeitsplatz_Nr:=16#A500, ErrQuit:=ErrQuit, B_In_Schleuse_Vorstau:="BG3243", B_an_Platz_1:="BG3245", B_an_Platz_2:="BG3251", B_an_Platz_3:="BG3255", B_Nachstau_Einfahrt:="DArbeitsplätze_Sensoren".Stau_Ausfahrt_PS5.Stat.B_Akt, B_Nachstau_Ausfahrt:="BG3262", Y_Vorstau:="MB3243", Y_Platz_1:="MB3245", Y_Platz_2:="MB3251", Y_Platz_3:="MB3255", Antrieb_Vorstau_aktiv:="MA0066", Antrieb_Nachstau_1_aktiv:="MA0067", Antrieb_Nachstau_2_aktiv:="MA0070", Antrieb_Nachstau_3_aktiv:="MA0071", Y_Weiche_zu_Platz_1:="DArbeitsplätze_Zylinder".Weiche_zu_Platz1_PS5.Stat.Ast, Y_Weiche_zu_Platz_2:="DArbeitsplätze_Zylinder".Weiche_zu_Platz2_PS5.Stat.Ast, Y_Weiche_von_Platz_1:="DArbeitsplätze_Zylinder".Weiche_von_Platz1_PS5.Stat.Ast, Y_Weiche_von_Platz_2:="DArbeitsplätze_Zylinder".Weiche_von_Platz2_PS5.Stat.Ast, Antrieb_Nachstau_1_vor:="DArbeitsplätze_Antriebe"."MA _Nachstau1_PS5".Stat.A_vor, Antrieb_Nachstau_2_vor:="DArbeitsplätze_Antriebe"."MA _Nachstau2_PS5".Stat.A_vor, Trolley_hat_ABS_erreicht:=Schleuse_Vorstau.B_AusSchleuse, Reset_Vorstau_Schleuse:=Schleuse_Vorstau.Dyn.Sk.Reset, Reset_Platz_1_Stopper:=Schleuse_Platz_1.Dyn.Sk.Reset, Reset_Platz_2_Stopper:=Schleuse_Platz_2.Dyn.Sk.Reset, Reset_Platz_3_Stopper:=Schleuse_Platz_3.Dyn.Sk.Reset, Error:=DB608.DBW108, Antrieb_Vorstau_vor:="DArbeitsplätze_Antriebe"."MA _Einfahrt_PS5".Stat.A_vor, Antrieb_Nachstau_3_vor:="DArbeitsplätze_Antriebe"."MA _Ausfahrt_PS5".Stat.A_vor, hStOk:=ErrAnz) // XY00: X=A(PS), X=B(MPS), Y= Nummer des Platzes + +// Anzeigen: + A "DAMR_Bereich".A01_UH06.AnlageEin + A Sks_Arbeitsplatz.Dyn.Status.Arbeitsplatz_aktiviert + = "PF0040" + + A Sks_Arbeitsplatz.Dyn.SS.Externe_Anzeige + = "PF3240" + + +--- NW 6: Schleuse Vorstau --- +CALL FB "None" , (Schleusen_Nr:=3243, ErrQuit:=ErrQuit, B_VorSchleuse:="BG3242", B_InSchleuse:="BG3243", B_AusSchleuse:=?, B_Stau_raus:=?, Start_Ok:=1, Antrieb_Schleuse_aktiv:="MA0066", Antrieb_plus_aktiv:=1, Schleuse_geöffnet:="MB3243", RestZeit_Bereich_plus:=?, Y_Schleuse_Auf:="DArbeitsplätze_Zylinder".Schleuse_Vorstau_PS5.Stat.Ast, Error:=DB608.DBW220, Antrieb_Schleuse_vor:="DArbeitsplätze_Antriebe"."MA _Einfahrt_PS5".Stat.A_vor, Antrieb_Schleuse_start:="DArbeitsplätze_Antriebe"."MA _Einfahrt_PS5".Stat.A_start, Antrieb_Schleuse_stop:="DArbeitsplätze_Antriebe"."MA _Einfahrt_PS5".Stat.Stop_vor, Antrieb_Schleuse_PS:="DArbeitsplätze_Antriebe"."MA _Einfahrt_PS5".Stat.A_PS, Antrieb_plus_vor:=?, Antrieb_plus_start:=?, hStOk:=ErrAnz) + + +--- NW 7: Schleuse Platz 1 --- +CALL FB "None" , (Schleusen_Nr:=3245, ErrQuit:=ErrQuit, B_VorSchleuse:=?, B_InSchleuse:="BG3245", B_AusSchleuse:=?, B_Stau_raus:=?, Start_Ok:=1, Antrieb_Schleuse_aktiv:=1, Antrieb_plus_aktiv:="MA0067", Schleuse_geöffnet:="MB3245", RestZeit_Bereich_plus:=?, Y_Schleuse_Auf:="DArbeitsplätze_Zylinder".Schleuse_Platz1_PS5.Stat.Ast, Error:=DB608.DBW222, Antrieb_Schleuse_vor:=?, Antrieb_Schleuse_start:=?, Antrieb_Schleuse_stop:=?, Antrieb_Schleuse_PS:=?, Antrieb_plus_vor:="DArbeitsplätze_Antriebe"."MA _Nachstau1_PS5".Stat.A_vor, Antrieb_plus_start:=?, hStOk:=ErrAnz) + + A Schleuse_Platz_1.Dyn.Status.Trolley_draussen + S Sks_Arbeitsplatz.Dyn.Platz_1.Trolley_hat_Arbeitsplatz_verlassen + JCN P1D + + L Schleuse_Platz_1.Dyn.TrolleyID_ausgefahren + T Sks_Arbeitsplatz.Dyn.Platz_1.TrolleyID_ausgefahren + +P1D: NOP 0 + + +--- NW 8: Schleuse Platz 2 --- +CALL FB "None" , (Schleusen_Nr:=3251, ErrQuit:=ErrQuit, B_VorSchleuse:=?, B_InSchleuse:="BG3251", B_AusSchleuse:=?, B_Stau_raus:=?, Start_Ok:=1, Antrieb_Schleuse_aktiv:=1, Antrieb_plus_aktiv:="MA0070", Schleuse_geöffnet:="MB3251", RestZeit_Bereich_plus:=?, Y_Schleuse_Auf:="DArbeitsplätze_Zylinder".Schleuse_Platz2_PS5.Stat.Ast, Error:=DB608.DBW224, Antrieb_Schleuse_vor:=?, Antrieb_Schleuse_start:=?, Antrieb_Schleuse_stop:=?, Antrieb_Schleuse_PS:=?, Antrieb_plus_vor:="DArbeitsplätze_Antriebe"."MA _Nachstau2_PS5".Stat.A_vor, Antrieb_plus_start:=?, hStOk:=ErrAnz) + + A Schleuse_Platz_2.Dyn.Status.Trolley_draussen + S Sks_Arbeitsplatz.Dyn.Platz_2.Trolley_hat_Arbeitsplatz_verlassen + JCN P2D + + L Schleuse_Platz_2.Dyn.TrolleyID_ausgefahren + T Sks_Arbeitsplatz.Dyn.Platz_2.TrolleyID_ausgefahren + +P2D: NOP 0 + + +--- NW 9: Schleuse Platz 3 --- +CALL FB "None" , (Schleusen_Nr:=3255, ErrQuit:=ErrQuit, B_VorSchleuse:=?, B_InSchleuse:="BG3255", B_AusSchleuse:=?, B_Stau_raus:=?, Start_Ok:=1, Antrieb_Schleuse_aktiv:=1, Antrieb_plus_aktiv:="MA0071", Schleuse_geöffnet:="MB3255", RestZeit_Bereich_plus:=?, Y_Schleuse_Auf:="DArbeitsplätze_Zylinder".Schleuse_Platz3_PS5.Stat.Ast, Error:=DB608.DBW226, Antrieb_Schleuse_vor:=?, Antrieb_Schleuse_start:=?, Antrieb_Schleuse_stop:=?, Antrieb_Schleuse_PS:=?, Antrieb_plus_vor:="DArbeitsplätze_Antriebe"."MA _Ausfahrt_PS5".Stat.A_vor, Antrieb_plus_start:=?, hStOk:=ErrAnz) + + A Schleuse_Platz_3.Dyn.Status.Trolley_draussen + S Sks_Arbeitsplatz.Dyn.Platz_3.Trolley_hat_Arbeitsplatz_verlassen + JCN P3D + + L Schleuse_Platz_3.Dyn.TrolleyID_ausgefahren + T Sks_Arbeitsplatz.Dyn.Platz_3.TrolleyID_ausgefahren + +P3D: NOP 0 + + +--- NW 10: Schleuse Ausfahrt --- +CALL FB "None" , (Schleusen_Nr:=3262, ErrQuit:=ErrQuit, B_VorSchleuse:="BG3260", B_InSchleuse:="BG3262", B_AusSchleuse:="BG3263", B_Stau_raus:="DArbeitsplätze_Sensoren".Stau_nach_Ausfahrt_PS5.Stat.B_Akt, Start_Ok:=1, Antrieb_Schleuse_aktiv:="MA0071", Antrieb_plus_aktiv:="MA0082", Schleuse_geöffnet:="MB3262", RestZeit_Bereich_plus:=?, Y_Schleuse_Auf:="DArbeitsplätze_Zylinder".Schleuse_Ausfahrt_PS5.Stat.Ast, Error:=DB608.DBW228, Antrieb_Schleuse_vor:="DArbeitsplätze_Antriebe"."MA _Ausfahrt_PS5".Stat.A_vor, Antrieb_Schleuse_start:="DArbeitsplätze_Antriebe"."MA _Ausfahrt_PS5".Stat.A_start, Antrieb_Schleuse_stop:="DArbeitsplätze_Antriebe"."MA _Ausfahrt_PS5".Stat.Stop_vor, Antrieb_Schleuse_PS:="DArbeitsplätze_Antriebe"."MA _Ausfahrt_PS5".Stat.A_PS, Antrieb_plus_vor:="DArbeitsplätze_Antriebe".MA0082.Stat.A_vor, Antrieb_plus_start:="DArbeitsplätze_Antriebe".MA0082.Stat.A_start, hStOk:=ErrAnz) + +// Ausfahr-Weiche schalten: + A "MB3262" + S "DArbeitsplätze_Zylinder".Weiche_Ausfahrt_PS5.Stat.Ast + +// Ausfahr-Weiche wieder freigeben: + A Schleuse_Ausfahrt.Dyn.Status.Trolley_draussen + R Vorfahrt_Ausfahrweiche."Weiche_von_Ausfahr-Sep_belegt" + + +--- NW 11: Schleuse Hauptstrecke vor Ausfahrt --- +CALL FB "None" , (Schleusen_Nr:=3265, ErrQuit:=ErrQuit, B_VorSchleuse:="BG3264", B_InSchleuse:="BG3265", B_AusSchleuse:="BG3263", B_Stau_raus:="DArbeitsplätze_Sensoren".Stau_nach_Ausfahrt_PS5.Stat.B_Akt, Start_Ok:=1, Antrieb_Schleuse_aktiv:="MA0082", Antrieb_plus_aktiv:="MA0082", Schleuse_geöffnet:="MB3265", RestZeit_Bereich_plus:=?, Y_Schleuse_Auf:="DArbeitsplätze_Zylinder".Schleuse_Vor_Ausfahrt_PS5.Stat.Ast, Error:=DB608.DBW230, Antrieb_Schleuse_vor:="DArbeitsplätze_Antriebe".MA0082.Stat.A_vor, Antrieb_Schleuse_start:="DArbeitsplätze_Antriebe".MA0082.Stat.A_start, Antrieb_Schleuse_stop:="DArbeitsplätze_Antriebe".MA0082.Stat.Stop_vor, Antrieb_Schleuse_PS:="DArbeitsplätze_Antriebe".MA0082.Stat.A_PS, Antrieb_plus_vor:=?, Antrieb_plus_start:=?, hStOk:=ErrAnz) // s.o. | s.o. + +// Ausfahr-Weiche zurückschalten: + A "MB3265" + R "DArbeitsplätze_Zylinder".Weiche_Ausfahrt_PS5.Stat.Ast + +// Ausfahr-Weiche wieder freigeben: + A Schleuse_vor_Ausfahrt.Dyn.Status.Trolley_draussen + R Vorfahrt_Ausfahrweiche."Weiche_von_Haupt-Sep_belegt" + + +--- NW 12: Aktive Arbeitsplätze ermitteln (gilt für alle Prios) --- + L 0 + T Aktivierte_ABPs + + AN Sks_Arbeitsplatz.Dyn.Status.Beladung_erfolgt + JC PS4 + + L Aktivierte_ABPs + + 1 + T Aktivierte_ABPs + +PS4: AN "DPS4_OmniFahren".Sks_Arbeitsplatz.Dyn.Status.Beladung_erfolgt + JC PS3 + + L Aktivierte_ABPs + + 1 + T Aktivierte_ABPs + +PS3: AN "DPS3_OmniFahren".Sks_Arbeitsplatz.Dyn.Status.Beladung_erfolgt + JC PS2 + + L Aktivierte_ABPs + + 1 + T Aktivierte_ABPs + +PS2: AN "DPS2_OmniFahren".Sks_Arbeitsplatz.Dyn.Status.Beladung_erfolgt + JC PS1 + + L Aktivierte_ABPs + + 1 + T Aktivierte_ABPs + +PS1: AN "DPS1_OmniFahren".Sks_Arbeitsplatz.Dyn.Status.Beladung_erfolgt + JC MPS3 + + L Aktivierte_ABPs + + 1 + T Aktivierte_ABPs + +MPS3: AN "DMPS3_OmniFahren".Sks_Arbeitsplatz.Dyn.Status.Beladung_erfolgt + JC MPS2 + + L Aktivierte_ABPs + + 1 + T Aktivierte_ABPs + +MPS2: AN "DMPS2_OmniFahren".Sks_Arbeitsplatz.Dyn.Status.Beladung_erfolgt + JC MPS1 + + L Aktivierte_ABPs + + 1 + T Aktivierte_ABPs + +MPS1: AN "DMPS1_OmniFahren".Sks_Arbeitsplatz.Dyn.Status.Beladung_erfolgt + JC AABPE + + L Aktivierte_ABPs + + 1 + T Aktivierte_ABPs + +AABPE: NOP 0 + + +--- NW 13: Ausfahr-Priorität --- +CALL FB "None" , (BG_Haupt_Schleuse:="BG3265", Haupt_Schleuse_geöffnet:="MB3265", BG_ABP_Schleuse:="BG3262", ABP_Schleuse_geöffnet:="MB3262", Aktive_ABP:=Aktivierte_ABPs) + + +--- NW 14: Störungen anzeigen --- + A ErrAnz + R ErrAnz + S "DAMR_Bereich".A01_UZ0615.StOk_blinken + + +--- NW 15: Ende --- + BE + diff --git a/=A01+UH06-KF00/Programmbausteine/Anlage/1_Arbeitsplätze/Basics_Arbeitsplätze/Arbeitsplätze_Antriebe.awl b/=A01+UH06-KF00/Programmbausteine/Anlage/1_Arbeitsplätze/Basics_Arbeitsplätze/Arbeitsplätze_Antriebe.awl new file mode 100644 index 0000000..3d754ba --- /dev/null +++ b/=A01+UH06-KF00/Programmbausteine/Anlage/1_Arbeitsplätze/Basics_Arbeitsplätze/Arbeitsplätze_Antriebe.awl @@ -0,0 +1,480 @@ +=== FB 1199: Arbeitsplätze_Antriebe [STL] === +INTERFACE: + Input: + Output: + InOut: + Static: + MA0061 : "MAntrieb_PowerSave" + MA0062 : "MAntrieb_PowerSave" + MA0063 : "MAntrieb_PowerSave" + MA0064 : "MAntrieb_PowerSave" + MA0065 : "MAntrieb_PowerSave" + MA0082 : "MAntrieb_PowerSave" + MA0087 : "MAntrieb_PowerSave" + MA0094 : "MAntrieb_PowerSave" + MA0105 : "MAntrieb_PowerSave" + MA0112 : "MAntrieb_PowerSave" + MA _Einfahrt_PS5 : "MAntrieb_PowerSave" + MA _Nachstau1_PS5 : "MAntrieb_PowerSave" + MA _Nachstau2_PS5 : "MAntrieb_PowerSave" + MA _Ausfahrt_PS5 : "MAntrieb_PowerSave" + MA _Einfahrt_PS4 : "MAntrieb_PowerSave" + MA _Nachstau1_PS4 : "MAntrieb_PowerSave" + MA _Nachstau2_PS4 : "MAntrieb_PowerSave" + MA _Ausfahrt_PS4 : "MAntrieb_PowerSave" + MA _Einfahrt_PS3 : "MAntrieb_PowerSave" + MA _Nachstau1_PS3 : "MAntrieb_PowerSave" + MA _Nachstau2_PS3 : "MAntrieb_PowerSave" + MA _Ausfahrt_PS3 : "MAntrieb_PowerSave" + MA _Einfahrt_PS2 : "MAntrieb_PowerSave" + MA _Nachstau1_PS2 : "MAntrieb_PowerSave" + MA _Nachstau2_PS2 : "MAntrieb_PowerSave" + MA _Ausfahrt_PS2 : "MAntrieb_PowerSave" + MA _Einfahrt_PS1 : "MAntrieb_PowerSave" + MA _Nachstau1_PS1 : "MAntrieb_PowerSave" + MA _Nachstau2_PS1 : "MAntrieb_PowerSave" + MA _Ausfahrt_PS1 : "MAntrieb_PowerSave" + MA _Einfahrt_MPS3 : "MAntrieb_PowerSave" + MA _Nachstau1_MPS3 : "MAntrieb_PowerSave" + MA _Nachstau2_MPS3 : "MAntrieb_PowerSave" + MA _Ausfahrt_MPS3 : "MAntrieb_PowerSave" + MA _Einfahrt_MPS2 : "MAntrieb_PowerSave" + MA _Nachstau1_MPS2 : "MAntrieb_PowerSave" + MA _Nachstau2_MPS2 : "MAntrieb_PowerSave" + MA _Ausfahrt_MPS2 : "MAntrieb_PowerSave" + MA _Einfahrt_MPS1 : "MAntrieb_PowerSave" + MA _Nachstau1_MPS1 : "MAntrieb_PowerSave" + MA _Nachstau2_MPS1 : "MAntrieb_PowerSave" + MA _Ausfahrt_MPS1 : "MAntrieb_PowerSave" + Temp: + Auto : Bool // Automatik Linie ist aktiv + Hand : Bool // Hand Linie ist aktiv + BereichErr : Bool // Bereichsstörung -> Antrieb stoppen + QKontroll : Bool // Frequenzumrichter schon 3s Netz EIN + FuKontroll : Bool // Frequenzumrichter schon 3s Netz EIN + Quit : Bool // Motorschutz-Störung quittieren + Qok : Bool // Motorschutz ok + Jog1 : Bool // Geschwindigkeit 1 + Jog2 : Bool // Geschwindigkeit 2 + Betrieb : Bool // Betriebsart aktiv + FC105_RET : Word // Returnwert von FC105 + Antrieb1 : Bool // Antrieb dazuschalten + Antrieb2 : Bool // Antrieb dazuschalten + F1 : Bool // Geschwindigkeit 1 aktiviert + F2 : Bool // Geschwindigkeit 2 aktiviert + F3 : Bool // Geschwindigkeit 3 aktiviert + Constant: + +--- NW 1: Übergabe des Bereichstatus System UH06/A01 --- + A "DAMR_Bereich".A01_UH06.Automatik + = Auto + + CLR + = Hand + + A "DAMR_Bereich".A01_UH06.BereichErr + = BereichErr + + AN BereichErr + L S5T#1S + OnDelay "T190" + + A "T190" + = QKontroll + = FuKontroll + + A "DAMR_Bereich".A01_UH06.StOk_aktiv + = Quit + + +--- NW 2: MA0061 --- +CALL FB "None" , (Automatik:=Auto, Handbetrieb:=Hand, BereichErr:=BereichErr, Q:="FC0061", Ptc:=TRUE, Fu:=?, QKontroll:=QKontroll, FuKontroll:=?, ErrQuit:=Quit, Kontroll_B:=?, T_Nachlauf:=120, Antriebrueck:=?, Antriebvor:="MA0061", Jog1:=?, Jog2:=?, Analog:=?, QErr:="6_HMI_Err_UH06_AMR".QErr.MA0061, PtcErr:=?, FuErr:=?, Err_Antrieb_verklemmt:=?) + + + +--- NW 3: MA0062 --- +CALL FB "None" , (Automatik:=Auto, Handbetrieb:=Hand, BereichErr:=BereichErr, Q:="FC0062", Ptc:=TRUE, Fu:=?, QKontroll:=QKontroll, FuKontroll:=?, ErrQuit:=Quit, Kontroll_B:=?, T_Nachlauf:=120, Antriebrueck:=?, Antriebvor:="MA0062", Jog1:=?, Jog2:=?, Analog:=?, QErr:="6_HMI_Err_UH06_AMR".QErr.MA0062, PtcErr:=?, FuErr:=?, Err_Antrieb_verklemmt:=?) + + + +--- NW 4: MA0063 --- +CALL FB "None" , (Automatik:=Auto, Handbetrieb:=Hand, BereichErr:=BereichErr, Q:="FC0063", Ptc:=TRUE, Fu:=?, QKontroll:=QKontroll, FuKontroll:=?, ErrQuit:=Quit, Kontroll_B:=?, T_Nachlauf:=180, Antriebrueck:=?, Antriebvor:="MA0063", Jog1:=?, Jog2:=?, Analog:=?, QErr:="6_HMI_Err_UH06_AMR".QErr.MA0063, PtcErr:=?, FuErr:=?, Err_Antrieb_verklemmt:=?) + + + +--- NW 5: MA0064 --- +CALL FB "None" , (Automatik:=Auto, Handbetrieb:=Hand, BereichErr:=BereichErr, Q:="FC0064", Ptc:=TRUE, Fu:=?, QKontroll:=QKontroll, FuKontroll:=?, ErrQuit:=Quit, Kontroll_B:=?, T_Nachlauf:=120, Antriebrueck:=?, Antriebvor:="MA0064", Jog1:=?, Jog2:=?, Analog:=?, QErr:="6_HMI_Err_UH06_AMR".QErr.MA0064, PtcErr:=?, FuErr:=?, Err_Antrieb_verklemmt:=?) + + + +--- NW 6: MA0065 --- +CALL FB "None" , (Automatik:=Auto, Handbetrieb:=Hand, BereichErr:=BereichErr, Q:="FC0065", Ptc:=TRUE, Fu:=?, QKontroll:=QKontroll, FuKontroll:=?, ErrQuit:=Quit, Kontroll_B:=?, T_Nachlauf:=?, Antriebrueck:=?, Antriebvor:="MA0065", Jog1:=?, Jog2:=?, Analog:=?, QErr:="6_HMI_Err_UH06_AMR".QErr.MA0065, PtcErr:=?, FuErr:=?, Err_Antrieb_verklemmt:=?) + + + +--- NW 7: MA0082 --- + A MA0082.Stat.A_vor + A MA0082.Stat.Stop_vor + CLR + +CALL FB "None" , (Automatik:=Auto, Handbetrieb:=Hand, BereichErr:=BereichErr, Q:="FC0082", Ptc:=TRUE, Fu:=?, QKontroll:=QKontroll, FuKontroll:=?, ErrQuit:=Quit, Kontroll_B:=?, T_Nachlauf:=120, Antriebrueck:=?, Antriebvor:="MA0082", Jog1:=?, Jog2:=?, Analog:=?, QErr:="6_HMI_Err_UH06_AMR".QErr.MA0082, PtcErr:=?, FuErr:=?, Err_Antrieb_verklemmt:=?) + + + +--- NW 8: MA0087 --- +CALL FB "None" , (Automatik:=Auto, Handbetrieb:=Hand, BereichErr:=BereichErr, Q:="FC0087", Ptc:=TRUE, Fu:=?, QKontroll:=QKontroll, FuKontroll:=?, ErrQuit:=Quit, Kontroll_B:=?, T_Nachlauf:=?, Antriebrueck:=?, Antriebvor:="MA0087", Jog1:=?, Jog2:=?, Analog:=?, QErr:="6_HMI_Err_UH06_AMR".QErr.MA0087, PtcErr:=?, FuErr:=?, Err_Antrieb_verklemmt:=?) + + + +--- NW 9: MA0094 --- +CALL FB "None" , (Automatik:=Auto, Handbetrieb:=Hand, BereichErr:=BereichErr, Q:="FC0094", Ptc:=TRUE, Fu:=?, QKontroll:=QKontroll, FuKontroll:=?, ErrQuit:=Quit, Kontroll_B:=?, T_Nachlauf:=?, Antriebrueck:=?, Antriebvor:="MA0094", Jog1:=?, Jog2:=?, Analog:=?, QErr:="6_HMI_Err_UH06_AMR".QErr.MA0094, PtcErr:=?, FuErr:=?, Err_Antrieb_verklemmt:=?) + + + +--- NW 10: MA0105 --- +CALL FB "None" , (Automatik:=Auto, Handbetrieb:=Hand, BereichErr:=BereichErr, Q:="FC0105", Ptc:=TRUE, Fu:=?, QKontroll:=QKontroll, FuKontroll:=?, ErrQuit:=Quit, Kontroll_B:=?, T_Nachlauf:=?, Antriebrueck:=?, Antriebvor:="MA0105", Jog1:=?, Jog2:=?, Analog:=?, QErr:="6_HMI_Err_UH06_AMR".QErr.MA0105, PtcErr:=?, FuErr:=?, Err_Antrieb_verklemmt:=?) + + + +--- NW 11: MA0112 --- + CLR + S MA0112.Stat.Stop_vor + S MA0112.Stat.Stop_rueck + S MA0112.Stat.A_start + +CALL FB "None" , (Automatik:=Auto, Handbetrieb:=Hand, BereichErr:=BereichErr, Q:="FC0112", Ptc:=TRUE, Fu:=?, QKontroll:=QKontroll, FuKontroll:=?, ErrQuit:=Quit, Kontroll_B:=?, T_Nachlauf:=?, Antriebrueck:=?, Antriebvor:="MA0112", Jog1:=?, Jog2:=?, Analog:=?, QErr:="6_HMI_Err_UH06_AMR".QErr.MA0112, PtcErr:=?, FuErr:=?, Err_Antrieb_verklemmt:=?) + + + +--- NW 12: MA_Einfahrt PS5 --- + CLR + S "MA _Einfahrt_PS5".Stat.Stop_vor + S "MA _Einfahrt_PS5".Stat.Stop_rueck + S "MA _Einfahrt_PS5".Stat.A_start + +CALL FB "None" , (Automatik:=Auto, Handbetrieb:=Hand, BereichErr:=BereichErr, Q:="FC0066", Ptc:=TRUE, Fu:=?, QKontroll:=QKontroll, FuKontroll:=?, ErrQuit:=Quit, Kontroll_B:=?, T_Nachlauf:=30, Antriebrueck:=?, Antriebvor:="MA0066", Jog1:=?, Jog2:=?, Analog:=?, QErr:="6_HMI_Err_UH06_AMR".QErr.MA0066, PtcErr:=?, FuErr:=?, Err_Antrieb_verklemmt:=?) + + + +--- NW 13: MA _Nachstau1 PS5 --- + CLR + S "MA _Nachstau1_PS5".Stat.Stop_vor + S "MA _Nachstau1_PS5".Stat.Stop_rueck + S "MA _Nachstau1_PS5".Stat.A_start + S "MA _Nachstau1_PS5".Stat.A_vor + +CALL FB "None" , (Automatik:=Auto, Handbetrieb:=Hand, BereichErr:=BereichErr, Q:="FC0067", Ptc:=TRUE, Fu:=?, QKontroll:=QKontroll, FuKontroll:=?, ErrQuit:=Quit, Kontroll_B:=?, T_Nachlauf:=0, Antriebrueck:=?, Antriebvor:="MA0067", Jog1:=?, Jog2:=?, Analog:=?, QErr:="6_HMI_Err_UH06_AMR".QErr.MA0067, PtcErr:=?, FuErr:=?, Err_Antrieb_verklemmt:=?) + + + +--- NW 14: MA _Nachstau2 PS5 --- + CLR + S "MA _Nachstau2_PS5".Stat.Stop_vor + S "MA _Nachstau2_PS5".Stat.Stop_rueck + S "MA _Nachstau2_PS5".Stat.A_start + +CALL FB "None" , (Automatik:=Auto, Handbetrieb:=Hand, BereichErr:=BereichErr, Q:="FC0070", Ptc:=TRUE, Fu:=?, QKontroll:=QKontroll, FuKontroll:=?, ErrQuit:=Quit, Kontroll_B:=?, T_Nachlauf:=0, Antriebrueck:=?, Antriebvor:="MA0070", Jog1:=?, Jog2:=?, Analog:=?, QErr:="6_HMI_Err_UH06_AMR".QErr.MA0070, PtcErr:=?, FuErr:=?, Err_Antrieb_verklemmt:=?) + + + +--- NW 15: MA _Ausfahrt PS5 --- + CLR + S "MA _Ausfahrt_PS5".Stat.Stop_vor + S "MA _Ausfahrt_PS5".Stat.Stop_rueck + S "MA _Ausfahrt_PS5".Stat.A_start + +CALL FB "None" , (Automatik:=Auto, Handbetrieb:=Hand, BereichErr:=BereichErr, Q:="FC0071", Ptc:=TRUE, Fu:=?, QKontroll:=QKontroll, FuKontroll:=?, ErrQuit:=Quit, Kontroll_B:=?, T_Nachlauf:=15, Antriebrueck:=?, Antriebvor:="MA0071", Jog1:=?, Jog2:=?, Analog:=?, QErr:="6_HMI_Err_UH06_AMR".QErr.MA0071, PtcErr:=?, FuErr:=?, Err_Antrieb_verklemmt:=?) + + + +--- NW 16: MA_Einfahrt PS4 --- + CLR + S "MA _Einfahrt_PS4".Stat.Stop_vor + S "MA _Einfahrt_PS4".Stat.Stop_rueck + S "MA _Einfahrt_PS4".Stat.A_start + +CALL FB "None" , (Automatik:=Auto, Handbetrieb:=Hand, BereichErr:=BereichErr, Q:="FC0072", Ptc:=TRUE, Fu:=?, QKontroll:=QKontroll, FuKontroll:=?, ErrQuit:=Quit, Kontroll_B:=?, T_Nachlauf:=?, Antriebrueck:=?, Antriebvor:="MA0072", Jog1:=?, Jog2:=?, Analog:=?, QErr:="6_HMI_Err_UH06_AMR".QErr.MA0072, PtcErr:=?, FuErr:=?, Err_Antrieb_verklemmt:=?) + + + +--- NW 17: MA _Nachstau1 PS4 --- + CLR + S "MA _Nachstau1_PS4".Stat.Stop_vor + S "MA _Nachstau1_PS4".Stat.Stop_rueck + S "MA _Nachstau1_PS4".Stat.A_start + S "MA _Nachstau1_PS4".Stat.A_vor + +CALL FB "None" , (Automatik:=Auto, Handbetrieb:=Hand, BereichErr:=BereichErr, Q:="FC0073", Ptc:=TRUE, Fu:=?, QKontroll:=QKontroll, FuKontroll:=?, ErrQuit:=Quit, Kontroll_B:=?, T_Nachlauf:=?, Antriebrueck:=?, Antriebvor:="MA0073", Jog1:=?, Jog2:=?, Analog:=?, QErr:="6_HMI_Err_UH06_AMR".QErr.MA0073, PtcErr:=?, FuErr:=?, Err_Antrieb_verklemmt:=?) + + + +--- NW 18: MA _Nachstau2 PS4 --- + CLR + S "MA _Nachstau2_PS4".Stat.Stop_vor + S "MA _Nachstau2_PS4".Stat.Stop_rueck + S "MA _Nachstau2_PS4".Stat.A_start + +CALL FB "None" , (Automatik:=Auto, Handbetrieb:=Hand, BereichErr:=BereichErr, Q:="FC0074", Ptc:=TRUE, Fu:=?, QKontroll:=QKontroll, FuKontroll:=?, ErrQuit:=Quit, Kontroll_B:=?, T_Nachlauf:=?, Antriebrueck:=?, Antriebvor:="MA0074", Jog1:=?, Jog2:=?, Analog:=?, QErr:="6_HMI_Err_UH06_AMR".QErr.MA0074, PtcErr:=?, FuErr:=?, Err_Antrieb_verklemmt:=?) + + + +--- NW 19: MA _Ausfahrt PS4 --- + CLR + S "MA _Ausfahrt_PS4".Stat.Stop_vor + S "MA _Ausfahrt_PS4".Stat.Stop_rueck + S "MA _Ausfahrt_PS4".Stat.A_start + +CALL FB "None" , (Automatik:=Auto, Handbetrieb:=Hand, BereichErr:=BereichErr, Q:="FC0075", Ptc:=TRUE, Fu:=?, QKontroll:=QKontroll, FuKontroll:=?, ErrQuit:=Quit, Kontroll_B:=?, T_Nachlauf:=?, Antriebrueck:=?, Antriebvor:="MA0075", Jog1:=?, Jog2:=?, Analog:=?, QErr:="6_HMI_Err_UH06_AMR".QErr.MA0075, PtcErr:=?, FuErr:=?, Err_Antrieb_verklemmt:=?) + + + +--- NW 20: MA_Einfahrt PS3 --- + CLR + S "MA _Einfahrt_PS3".Stat.Stop_vor + S "MA _Einfahrt_PS3".Stat.Stop_rueck + S "MA _Einfahrt_PS3".Stat.A_start + +CALL FB "None" , (Automatik:=Auto, Handbetrieb:=Hand, BereichErr:=BereichErr, Q:="FC0076", Ptc:=TRUE, Fu:=?, QKontroll:=QKontroll, FuKontroll:=?, ErrQuit:=Quit, Kontroll_B:=?, T_Nachlauf:=?, Antriebrueck:=?, Antriebvor:="MA0076", Jog1:=?, Jog2:=?, Analog:=?, QErr:="6_HMI_Err_UH06_AMR".QErr.MA0076, PtcErr:=?, FuErr:=?, Err_Antrieb_verklemmt:=?) + + + +--- NW 21: MA _Nachstau1 PS3 --- + CLR + S "MA _Nachstau1_PS3".Stat.Stop_vor + S "MA _Nachstau1_PS3".Stat.Stop_rueck + S "MA _Nachstau1_PS3".Stat.A_start + S "MA _Nachstau1_PS3".Stat.A_vor + +CALL FB "None" , (Automatik:=Auto, Handbetrieb:=Hand, BereichErr:=BereichErr, Q:="FC0077", Ptc:=TRUE, Fu:=?, QKontroll:=QKontroll, FuKontroll:=?, ErrQuit:=Quit, Kontroll_B:=?, T_Nachlauf:=?, Antriebrueck:=?, Antriebvor:="MA0077", Jog1:=?, Jog2:=?, Analog:=?, QErr:="6_HMI_Err_UH06_AMR".QErr.MA0077, PtcErr:=?, FuErr:=?, Err_Antrieb_verklemmt:=?) + + + +--- NW 22: MA _Nachstau2 PS3 --- + A "MA _Nachstau2_PS3".Stat.A_vor + CLR + S "MA _Nachstau2_PS3".Stat.Stop_vor + S "MA _Nachstau2_PS3".Stat.Stop_rueck + S "MA _Nachstau2_PS3".Stat.A_start + +CALL FB "None" , (Automatik:=Auto, Handbetrieb:=Hand, BereichErr:=BereichErr, Q:="FC0080", Ptc:=TRUE, Fu:=?, QKontroll:=QKontroll, FuKontroll:=?, ErrQuit:=Quit, Kontroll_B:=?, T_Nachlauf:=?, Antriebrueck:=?, Antriebvor:="MA0080", Jog1:=?, Jog2:=?, Analog:=?, QErr:="6_HMI_Err_UH06_AMR".QErr.MA0080, PtcErr:=?, FuErr:=?, Err_Antrieb_verklemmt:=?) + + + +--- NW 23: MA _Ausfahrt PS3 --- + CLR + S "MA _Ausfahrt_PS3".Stat.Stop_vor + S "MA _Ausfahrt_PS3".Stat.Stop_rueck + S "MA _Ausfahrt_PS3".Stat.A_start + +CALL FB "None" , (Automatik:=Auto, Handbetrieb:=Hand, BereichErr:=BereichErr, Q:="FC0081", Ptc:=TRUE, Fu:=?, QKontroll:=QKontroll, FuKontroll:=?, ErrQuit:=Quit, Kontroll_B:=?, T_Nachlauf:=?, Antriebrueck:=?, Antriebvor:="MA0081", Jog1:=?, Jog2:=?, Analog:=?, QErr:="6_HMI_Err_UH06_AMR".QErr.MA0081, PtcErr:=?, FuErr:=?, Err_Antrieb_verklemmt:=?) + + + +--- NW 24: MA_Einfahrt PS2 --- + CLR + S "MA _Einfahrt_PS2".Stat.Stop_vor + S "MA _Einfahrt_PS2".Stat.Stop_rueck + S "MA _Einfahrt_PS2".Stat.A_start + +CALL FB "None" , (Automatik:=Auto, Handbetrieb:=Hand, BereichErr:=BereichErr, Q:="FC0083", Ptc:=TRUE, Fu:=?, QKontroll:=QKontroll, FuKontroll:=?, ErrQuit:=Quit, Kontroll_B:=?, T_Nachlauf:=?, Antriebrueck:=?, Antriebvor:="MA0083", Jog1:=?, Jog2:=?, Analog:=?, QErr:="6_HMI_Err_UH06_AMR".QErr.MA0083, PtcErr:=?, FuErr:=?, Err_Antrieb_verklemmt:=?) + + + +--- NW 25: MA _Nachstau1 PS2 --- + CLR + S "MA _Nachstau1_PS2".Stat.Stop_vor + S "MA _Nachstau1_PS2".Stat.Stop_rueck + S "MA _Nachstau1_PS2".Stat.A_start + S "MA _Nachstau1_PS2".Stat.A_vor + +CALL FB "None" , (Automatik:=Auto, Handbetrieb:=Hand, BereichErr:=BereichErr, Q:="FC0084", Ptc:=TRUE, Fu:=?, QKontroll:=QKontroll, FuKontroll:=?, ErrQuit:=Quit, Kontroll_B:=?, T_Nachlauf:=?, Antriebrueck:=?, Antriebvor:="MA0084", Jog1:=?, Jog2:=?, Analog:=?, QErr:="6_HMI_Err_UH06_AMR".QErr.MA0084, PtcErr:=?, FuErr:=?, Err_Antrieb_verklemmt:=?) + + + +--- NW 26: MA _Nachstau2 PS2 --- + CLR + S "MA _Nachstau2_PS2".Stat.Stop_vor + S "MA _Nachstau2_PS2".Stat.Stop_rueck + S "MA _Nachstau2_PS2".Stat.A_start + +CALL FB "None" , (Automatik:=Auto, Handbetrieb:=Hand, BereichErr:=BereichErr, Q:="FC0085", Ptc:=TRUE, Fu:=?, QKontroll:=QKontroll, FuKontroll:=?, ErrQuit:=Quit, Kontroll_B:=?, T_Nachlauf:=?, Antriebrueck:=?, Antriebvor:="MA0085", Jog1:=?, Jog2:=?, Analog:=?, QErr:="6_HMI_Err_UH06_AMR".QErr.MA0085, PtcErr:=?, FuErr:=?, Err_Antrieb_verklemmt:=?) + + + +--- NW 27: MA _Ausfahrt PS2 --- + CLR + S "MA _Ausfahrt_PS2".Stat.Stop_vor + S "MA _Ausfahrt_PS2".Stat.Stop_rueck + S "MA _Ausfahrt_PS2".Stat.A_start + +CALL FB "None" , (Automatik:=Auto, Handbetrieb:=Hand, BereichErr:=BereichErr, Q:="FC0086", Ptc:=TRUE, Fu:=?, QKontroll:=QKontroll, FuKontroll:=?, ErrQuit:=Quit, Kontroll_B:=?, T_Nachlauf:=?, Antriebrueck:=?, Antriebvor:="MA0086", Jog1:=?, Jog2:=?, Analog:=?, QErr:="6_HMI_Err_UH06_AMR".QErr.MA0086, PtcErr:=?, FuErr:=?, Err_Antrieb_verklemmt:=?) + + + +--- NW 28: MA_Einfahrt PS1 --- + CLR + S "MA _Einfahrt_PS1".Stat.Stop_vor + S "MA _Einfahrt_PS1".Stat.Stop_rueck + S "MA _Einfahrt_PS1".Stat.A_start + +CALL FB "None" , (Automatik:=Auto, Handbetrieb:=Hand, BereichErr:=BereichErr, Q:="FC0090", Ptc:=TRUE, Fu:=?, QKontroll:=QKontroll, FuKontroll:=?, ErrQuit:=Quit, Kontroll_B:=?, T_Nachlauf:=?, Antriebrueck:=?, Antriebvor:="MA0090", Jog1:=?, Jog2:=?, Analog:=?, QErr:="6_HMI_Err_UH06_AMR".QErr.MA0090, PtcErr:=?, FuErr:=?, Err_Antrieb_verklemmt:=?) + + + +--- NW 29: MA _Nachstau1 PS1 --- + CLR + S "MA _Nachstau1_PS1".Stat.Stop_vor + S "MA _Nachstau1_PS1".Stat.Stop_rueck + S "MA _Nachstau1_PS1".Stat.A_start + S "MA _Nachstau1_PS1".Stat.A_vor + +CALL FB "None" , (Automatik:=Auto, Handbetrieb:=Hand, BereichErr:=BereichErr, Q:="FC0091", Ptc:=TRUE, Fu:=?, QKontroll:=QKontroll, FuKontroll:=?, ErrQuit:=Quit, Kontroll_B:=?, T_Nachlauf:=?, Antriebrueck:=?, Antriebvor:="MA0091", Jog1:=?, Jog2:=?, Analog:=?, QErr:="6_HMI_Err_UH06_AMR".QErr.MA0091, PtcErr:=?, FuErr:=?, Err_Antrieb_verklemmt:=?) + + + +--- NW 30: MA _Nachstau2 PS1 --- + CLR + S "MA _Nachstau2_PS1".Stat.Stop_vor + S "MA _Nachstau2_PS1".Stat.Stop_rueck + S "MA _Nachstau2_PS1".Stat.A_start + +CALL FB "None" , (Automatik:=Auto, Handbetrieb:=Hand, BereichErr:=BereichErr, Q:="FC0092", Ptc:=TRUE, Fu:=?, QKontroll:=QKontroll, FuKontroll:=?, ErrQuit:=Quit, Kontroll_B:=?, T_Nachlauf:=?, Antriebrueck:=?, Antriebvor:="MA0092", Jog1:=?, Jog2:=?, Analog:=?, QErr:="6_HMI_Err_UH06_AMR".QErr.MA0092, PtcErr:=?, FuErr:=?, Err_Antrieb_verklemmt:=?) + + + +--- NW 31: MA _Ausfahrt PS1 --- + CLR + S "MA _Ausfahrt_PS1".Stat.Stop_vor + S "MA _Ausfahrt_PS1".Stat.Stop_rueck + S "MA _Ausfahrt_PS1".Stat.A_start + +CALL FB "None" , (Automatik:=Auto, Handbetrieb:=Hand, BereichErr:=BereichErr, Q:="FC0093", Ptc:=TRUE, Fu:=?, QKontroll:=QKontroll, FuKontroll:=?, ErrQuit:=Quit, Kontroll_B:=?, T_Nachlauf:=?, Antriebrueck:=?, Antriebvor:="MA0093", Jog1:=?, Jog2:=?, Analog:=?, QErr:="6_HMI_Err_UH06_AMR".QErr.MA0093, PtcErr:=?, FuErr:=?, Err_Antrieb_verklemmt:=?) + + + +--- NW 32: MA_Einfahrt MPS3 --- + CLR + S "MA _Einfahrt_MPS3".Stat.Stop_vor + S "MA _Einfahrt_MPS3".Stat.Stop_rueck + S "MA _Einfahrt_MPS3".Stat.A_start + +CALL FB "None" , (Automatik:=Auto, Handbetrieb:=Hand, BereichErr:=BereichErr, Q:="FC0095", Ptc:=TRUE, Fu:=?, QKontroll:=QKontroll, FuKontroll:=?, ErrQuit:=Quit, Kontroll_B:=?, T_Nachlauf:=?, Antriebrueck:=?, Antriebvor:="MA0095", Jog1:=?, Jog2:=?, Analog:=?, QErr:="6_HMI_Err_UH06_AMR".QErr.MA0095, PtcErr:=?, FuErr:=?, Err_Antrieb_verklemmt:=?) + + + +--- NW 33: MA _Nachstau1 MPS3 --- + CLR + S "MA _Nachstau1_MPS3".Stat.Stop_vor + S "MA _Nachstau1_MPS3".Stat.Stop_rueck + S "MA _Nachstau1_MPS3".Stat.A_start + S "MA _Nachstau1_MPS3".Stat.A_vor + +CALL FB "None" , (Automatik:=Auto, Handbetrieb:=Hand, BereichErr:=BereichErr, Q:="FC0096", Ptc:=TRUE, Fu:=?, QKontroll:=QKontroll, FuKontroll:=?, ErrQuit:=Quit, Kontroll_B:=?, T_Nachlauf:=?, Antriebrueck:=?, Antriebvor:="MA0096", Jog1:=?, Jog2:=?, Analog:=?, QErr:="6_HMI_Err_UH06_AMR".QErr.MA0096, PtcErr:=?, FuErr:=?, Err_Antrieb_verklemmt:=?) + + + +--- NW 34: MA _Nachstau2 MPS3 --- + CLR + S "MA _Nachstau2_MPS3".Stat.Stop_vor + S "MA _Nachstau2_MPS3".Stat.Stop_rueck + S "MA _Nachstau2_MPS3".Stat.A_start + +CALL FB "None" , (Automatik:=Auto, Handbetrieb:=Hand, BereichErr:=BereichErr, Q:="FC0097", Ptc:=TRUE, Fu:=?, QKontroll:=QKontroll, FuKontroll:=?, ErrQuit:=Quit, Kontroll_B:=?, T_Nachlauf:=?, Antriebrueck:=?, Antriebvor:="MA0097", Jog1:=?, Jog2:=?, Analog:=?, QErr:="6_HMI_Err_UH06_AMR".QErr.MA0097, PtcErr:=?, FuErr:=?, Err_Antrieb_verklemmt:=?) + + + +--- NW 35: MA _Ausfahrt MPS3 --- + CLR + S "MA _Ausfahrt_MPS3".Stat.Stop_vor + S "MA _Ausfahrt_MPS3".Stat.Stop_rueck + S "MA _Ausfahrt_MPS3".Stat.A_start + +CALL FB "None" , (Automatik:=Auto, Handbetrieb:=Hand, BereichErr:=BereichErr, Q:="FC0100", Ptc:=TRUE, Fu:=?, QKontroll:=QKontroll, FuKontroll:=?, ErrQuit:=Quit, Kontroll_B:=?, T_Nachlauf:=?, Antriebrueck:=?, Antriebvor:="MA0100", Jog1:=?, Jog2:=?, Analog:=?, QErr:="6_HMI_Err_UH06_AMR".QErr.MA0100, PtcErr:=?, FuErr:=?, Err_Antrieb_verklemmt:=?) + + + +--- NW 36: MA_Einfahrt MPS2 --- + CLR + S "MA _Einfahrt_MPS2".Stat.Stop_vor + S "MA _Einfahrt_MPS2".Stat.Stop_rueck + S "MA _Einfahrt_MPS2".Stat.A_start + +CALL FB "None" , (Automatik:=Auto, Handbetrieb:=Hand, BereichErr:=BereichErr, Q:="FC0101", Ptc:=TRUE, Fu:=?, QKontroll:=QKontroll, FuKontroll:=?, ErrQuit:=Quit, Kontroll_B:=?, T_Nachlauf:=?, Antriebrueck:=?, Antriebvor:="MA0101", Jog1:=?, Jog2:=?, Analog:=?, QErr:="6_HMI_Err_UH06_AMR".QErr.MA0101, PtcErr:=?, FuErr:=?, Err_Antrieb_verklemmt:=?) + + + +--- NW 37: MA _Nachstau1 MPS2 --- + CLR + S "MA _Nachstau1_MPS2".Stat.Stop_vor + S "MA _Nachstau1_MPS2".Stat.Stop_rueck + S "MA _Nachstau1_MPS2".Stat.A_start + S "MA _Nachstau1_MPS2".Stat.A_vor + +CALL FB "None" , (Automatik:=Auto, Handbetrieb:=Hand, BereichErr:=BereichErr, Q:="FC0102", Ptc:=TRUE, Fu:=?, QKontroll:=QKontroll, FuKontroll:=?, ErrQuit:=Quit, Kontroll_B:=?, T_Nachlauf:=?, Antriebrueck:=?, Antriebvor:="MA0102", Jog1:=?, Jog2:=?, Analog:=?, QErr:="6_HMI_Err_UH06_AMR".QErr.MA0102, PtcErr:=?, FuErr:=?, Err_Antrieb_verklemmt:=?) + + + +--- NW 38: MA _Nachstau2 MPS2 --- + CLR + S "MA _Nachstau2_MPS2".Stat.Stop_vor + S "MA _Nachstau2_MPS2".Stat.Stop_rueck + S "MA _Nachstau2_MPS2".Stat.A_start + +CALL FB "None" , (Automatik:=Auto, Handbetrieb:=Hand, BereichErr:=BereichErr, Q:="FC0103", Ptc:=TRUE, Fu:=?, QKontroll:=QKontroll, FuKontroll:=?, ErrQuit:=Quit, Kontroll_B:=?, T_Nachlauf:=?, Antriebrueck:=?, Antriebvor:="MA0103", Jog1:=?, Jog2:=?, Analog:=?, QErr:="6_HMI_Err_UH06_AMR".QErr.MA0103, PtcErr:=?, FuErr:=?, Err_Antrieb_verklemmt:=?) + + + +--- NW 39: MA _Ausfahrt MPS2 --- + CLR + S "MA _Ausfahrt_MPS2".Stat.Stop_vor + S "MA _Ausfahrt_MPS2".Stat.Stop_rueck + S "MA _Ausfahrt_MPS2".Stat.A_start + +CALL FB "None" , (Automatik:=Auto, Handbetrieb:=Hand, BereichErr:=BereichErr, Q:="FC0104", Ptc:=TRUE, Fu:=?, QKontroll:=QKontroll, FuKontroll:=?, ErrQuit:=Quit, Kontroll_B:=?, T_Nachlauf:=?, Antriebrueck:=?, Antriebvor:="MA0104", Jog1:=?, Jog2:=?, Analog:=?, QErr:="6_HMI_Err_UH06_AMR".QErr.MA0104, PtcErr:=?, FuErr:=?, Err_Antrieb_verklemmt:=?) + + + +--- NW 40: MA_Einfahrt MPS1 --- + CLR + S "MA _Einfahrt_MPS1".Stat.Stop_vor + S "MA _Einfahrt_MPS1".Stat.Stop_rueck + S "MA _Einfahrt_MPS1".Stat.A_start + +CALL FB "None" , (Automatik:=Auto, Handbetrieb:=Hand, BereichErr:=BereichErr, Q:="FC0106", Ptc:=TRUE, Fu:=?, QKontroll:=QKontroll, FuKontroll:=?, ErrQuit:=Quit, Kontroll_B:=?, T_Nachlauf:=?, Antriebrueck:=?, Antriebvor:="MA0106", Jog1:=?, Jog2:=?, Analog:=?, QErr:="6_HMI_Err_UH06_AMR".QErr.MA0106, PtcErr:=?, FuErr:=?, Err_Antrieb_verklemmt:=?) + + + +--- NW 41: MA _Nachstau1 MPS1 --- + CLR + S "MA _Nachstau1_MPS1".Stat.Stop_vor + S "MA _Nachstau1_MPS1".Stat.Stop_rueck + S "MA _Nachstau1_MPS1".Stat.A_start + S "MA _Nachstau1_MPS1".Stat.A_vor + +CALL FB "None" , (Automatik:=Auto, Handbetrieb:=Hand, BereichErr:=BereichErr, Q:="FC0107", Ptc:=TRUE, Fu:=?, QKontroll:=QKontroll, FuKontroll:=?, ErrQuit:=Quit, Kontroll_B:=?, T_Nachlauf:=?, Antriebrueck:=?, Antriebvor:="MA0107", Jog1:=?, Jog2:=?, Analog:=?, QErr:="6_HMI_Err_UH06_AMR".QErr.MA0107, PtcErr:=?, FuErr:=?, Err_Antrieb_verklemmt:=?) + + + +--- NW 42: MA _Nachstau2 MPS1 --- + CLR + S "MA _Nachstau2_MPS1".Stat.Stop_vor + S "MA _Nachstau2_MPS1".Stat.Stop_rueck + S "MA _Nachstau2_MPS1".Stat.A_start + +CALL FB "None" , (Automatik:=Auto, Handbetrieb:=Hand, BereichErr:=BereichErr, Q:="FC0111", Ptc:=TRUE, Fu:=?, QKontroll:=QKontroll, FuKontroll:=?, ErrQuit:=Quit, Kontroll_B:=?, T_Nachlauf:=?, Antriebrueck:=?, Antriebvor:="MA0111", Jog1:=?, Jog2:=?, Analog:=?, QErr:="6_HMI_Err_UH06_AMR".QErr.MA0111, PtcErr:=?, FuErr:=?, Err_Antrieb_verklemmt:=?) + + + +--- NW 43: MA _Ausfahrt MPS1 --- + CLR + S "MA _Ausfahrt_MPS1".Stat.Stop_vor + S "MA _Ausfahrt_MPS1".Stat.Stop_rueck + S "MA _Ausfahrt_MPS1".Stat.A_start + +CALL FB "None" , (Automatik:=Auto, Handbetrieb:=Hand, BereichErr:=BereichErr, Q:="FC0110", Ptc:=TRUE, Fu:=?, QKontroll:=QKontroll, FuKontroll:=?, ErrQuit:=Quit, Kontroll_B:=?, T_Nachlauf:=?, Antriebrueck:=?, Antriebvor:="MA0110", Jog1:=?, Jog2:=?, Analog:=?, QErr:="6_HMI_Err_UH06_AMR".QErr.MA0110, PtcErr:=?, FuErr:=?, Err_Antrieb_verklemmt:=?) + + + +--- NW 44: Ende --- + BE + diff --git a/=A01+UH06-KF00/Programmbausteine/Anlage/1_Arbeitsplätze/Basics_Arbeitsplätze/Arbeitsplätze_Sensoren.awl b/=A01+UH06-KF00/Programmbausteine/Anlage/1_Arbeitsplätze/Basics_Arbeitsplätze/Arbeitsplätze_Sensoren.awl new file mode 100644 index 0000000..830257d --- /dev/null +++ b/=A01+UH06-KF00/Programmbausteine/Anlage/1_Arbeitsplätze/Basics_Arbeitsplätze/Arbeitsplätze_Sensoren.awl @@ -0,0 +1,352 @@ +=== FB 1190: Arbeitsplätze_Sensoren [STL] === +INTERFACE: + Input: + Output: + InOut: + Static: + Stau_BG3566 : "MSensoren" // Stau am Sensor Einfahrt MA0204 + Stau_BG3567 : "MSensoren" // Stau am Sensor Einfahrt MA0204 + Stau_BG3457 : "MSensoren" // Stau am Sensor Einfahrt MA0204 + Stau_BG3447 : "MSensoren" // Stau am Sensor Einfahrt MA0204 + Stau_BG3483 : "MSensoren" // Stau am Sensor Einfahrt MA0204 + Stau_BG3484 : "MSensoren" // Stau am Sensor Einfahrt MA0204 + Stau_BG3486 : "MSensoren" // Stau am Sensor Einfahrt MA0204 + Stau_BG3244 : "MSensoren" // Stau am Sensor Einfahrt MA0204 + Stau_BG3542 : "MSensoren" // Stau am Sensor Einfahrt MA0204 + Stau_Einfahrt_PS5 : "MSensoren" + Stau_nach_Einfahrt_PS5 : "MSensoren" + Stau_Platz1_PS5 : "MSensoren" + Stau_Platz2_PS5 : "MSensoren" + Stau_Platz3_PS5 : "MSensoren" + Stau_Ausfahrt_PS5 : "MSensoren" + Stau_nach_Ausfahrt_PS5 : "MSensoren" + Stau_Einfahrt_PS4 : "MSensoren" + Stau_nach_Einfahrt_PS4 : "MSensoren" + Stau_Platz1_PS4 : "MSensoren" + Stau_Platz2_PS4 : "MSensoren" + Stau_Platz3_PS4 : "MSensoren" + Stau_Ausfahrt_PS4 : "MSensoren" + Stau_nach_Ausfahrt_PS4 : "MSensoren" + Stau_Einfahrt_PS3 : "MSensoren" + Stau_nach_Einfahrt_PS3 : "MSensoren" + Stau_Platz1_PS3 : "MSensoren" + Stau_Platz2_PS3 : "MSensoren" + Stau_Platz3_PS3 : "MSensoren" + Stau_Ausfahrt_PS3 : "MSensoren" + Stau_nach_Ausfahrt_PS3 : "MSensoren" + Stau_Einfahrt_PS2 : "MSensoren" + Stau_nach_Einfahrt_PS2 : "MSensoren" + Stau_Platz1_PS2 : "MSensoren" + Stau_Platz2_PS2 : "MSensoren" + Stau_Platz3_PS2 : "MSensoren" + Stau_Ausfahrt_PS2 : "MSensoren" + Stau_nach_Ausfahrt_PS2 : "MSensoren" + Stau_Einfahrt_PS1 : "MSensoren" + Stau_nach_Einfahrt_PS1 : "MSensoren" + An_BG3383 : "MSensoren" // Am Sensor Ende MA0203 + Stau_Platz1_PS1 : "MSensoren" + Stau_Platz2_PS1 : "MSensoren" + Stau_Platz3_PS1 : "MSensoren" + Stau_Ausfahrt_PS1 : "MSensoren" + Stau_nach_Ausfahrt_PS1 : "MSensoren" + Stau_Einfahrt_MPS3 : "MSensoren" + Stau_nach_Einfahrt_MPS3 : "MSensoren" + Stau_Platz1_MPS3 : "MSensoren" + Stau_Platz2_MPS3 : "MSensoren" + Stau_Platz3_MPS3 : "MSensoren" + Stau_Ausfahrt_MPS3 : "MSensoren" + Stau_nach_Ausfahrt_MPS3 : "MSensoren" + Stau_Einfahrt_MPS2 : "MSensoren" + Stau_nach_Einfahrt_MPS2 : "MSensoren" + Stau_Platz1_MPS2 : "MSensoren" + Stau_Platz2_MPS2 : "MSensoren" + Stau_Platz3_MPS2 : "MSensoren" + Stau_Ausfahrt_MPS2 : "MSensoren" + Stau_nach_Ausfahrt_MPS2 : "MSensoren" + Stau_Einfahrt_MPS1 : "MSensoren" + Stau_nach_Einfahrt_MPS1 : "MSensoren" + Stau_Platz1_MPS1 : "MSensoren" + Stau_Platz2_MPS1 : "MSensoren" + Stau_Platz3_MPS1 : "MSensoren" + Stau_Ausfahrt_MPS1 : "MSensoren" + Stau_nach_Ausfahrt_MPS1 : "MSensoren" + Temp: + T_Ein : Int // Vorgabe Einschaltverzögerung + T_Aus : Int // Zwischenspeicher Ausschaltverzögerung + F1 : Bool // Geschwindigkeit 1 aktiviert + F2 : Bool // Geschwindigkeit 2 aktiviert + F3 : Bool // Geschwindigkeit 3 aktiviert + ESensor : Bool // Sensoren + Antrieb : Bool + VReal : Real // GeschwindigkeitinReal + Zeit : Int // Zeit für Ausschaltverzögerung LT1100 + Aktiv : Bool // Zeit aktivieren + Constant: + +--- NW 1: Sensoren entprellen --- +CALL FB "None" , (ESensor:="BG3566", T_Ein:=1, T_Aus:=11, tein_aktiv:=TRUE, taus_aktiv:=TRUE) + + +--- NW 2: Sensoren entprellen --- +CALL FB "None" , (ESensor:="BG3567", T_Ein:=80, T_Aus:=11, tein_aktiv:=TRUE, taus_aktiv:=TRUE) + + +--- NW 3: Sensoren entprellen --- +CALL FB "None" , (ESensor:="BG3457", T_Ein:=80, T_Aus:=11, tein_aktiv:=TRUE, taus_aktiv:=TRUE) + + +--- NW 4: Sensoren entprellen --- +CALL FB "None" , (ESensor:="BG3447", T_Ein:=80, T_Aus:=11, tein_aktiv:=TRUE, taus_aktiv:=TRUE) + + +--- NW 5: Sensoren entprellen --- +CALL FB "None" , (ESensor:="BG3483", T_Ein:=1, T_Aus:=11, tein_aktiv:=TRUE, taus_aktiv:=TRUE) + + +--- NW 6: Sensoren entprellen --- +CALL FB "None" , (ESensor:="BG3484", T_Ein:=80, T_Aus:=11, tein_aktiv:=TRUE, taus_aktiv:=TRUE) + + +--- NW 7: Sensoren entprellen --- +CALL FB "None" , (ESensor:="BG3486", T_Ein:=80, T_Aus:=11, tein_aktiv:=TRUE, taus_aktiv:=TRUE) + + +--- NW 8: Sensoren entprellen --- +CALL FB "None" , (ESensor:="BG3244", T_Ein:=80, T_Aus:=11, tein_aktiv:=TRUE, taus_aktiv:=TRUE) + + +--- NW 9: Sensoren entprellen --- +CALL FB "None" , (ESensor:="BG3542", T_Ein:=1, T_Aus:=11, tein_aktiv:=TRUE, taus_aktiv:=TRUE) + + +--- NW 10: Sensoren entprellen --- +CALL FB "None" , (ESensor:="BG3242", T_Ein:=1, T_Aus:=11, tein_aktiv:=TRUE, taus_aktiv:=TRUE) + + +--- NW 11: Sensoren entprellen --- +CALL FB "None" , (ESensor:="BG3264", T_Ein:=1, T_Aus:=11, tein_aktiv:=TRUE, taus_aktiv:=TRUE) + + +--- NW 12: Sensoren entprellen --- +CALL FB "None" , (ESensor:="BG3245", T_Ein:=1, T_Aus:=30, tein_aktiv:=TRUE, taus_aktiv:=TRUE) + + +--- NW 13: Sensoren entprellen --- +CALL FB "None" , (ESensor:="BG3251", T_Ein:=1, T_Aus:=30, tein_aktiv:=TRUE, taus_aktiv:=TRUE) + + +--- NW 14: Sensoren entprellen --- +CALL FB "None" , (ESensor:="BG3255", T_Ein:=1, T_Aus:=30, tein_aktiv:=TRUE, taus_aktiv:=TRUE) + + +--- NW 15: Sensoren entprellen --- +CALL FB "None" , (ESensor:="BG3260", T_Ein:=1, T_Aus:=11, tein_aktiv:=TRUE, taus_aktiv:=TRUE) + + +--- NW 16: Sensoren entprellen --- +CALL FB "None" , (ESensor:="BG3263", T_Ein:=1, T_Aus:=10, tein_aktiv:=TRUE, taus_aktiv:=TRUE) + + +--- NW 17: Sensoren entprellen --- +CALL FB "None" , (ESensor:="BG3272", T_Ein:=1, T_Aus:=11, tein_aktiv:=TRUE, taus_aktiv:=TRUE) + + +--- NW 18: Sensoren entprellen --- +CALL FB "None" , (ESensor:="BG3270", T_Ein:=1, T_Aus:=11, tein_aktiv:=TRUE, taus_aktiv:=TRUE) + + +--- NW 19: Sensoren entprellen --- +CALL FB "None" , (ESensor:="BG3275", T_Ein:=1, T_Aus:=30, tein_aktiv:=TRUE, taus_aktiv:=TRUE) + + +--- NW 20: Sensoren entprellen --- +CALL FB "None" , (ESensor:="BG3281", T_Ein:=1, T_Aus:=30, tein_aktiv:=TRUE, taus_aktiv:=TRUE) + + +--- NW 21: Sensoren entprellen --- +CALL FB "None" , (ESensor:="BG3285", T_Ein:=1, T_Aus:=30, tein_aktiv:=TRUE, taus_aktiv:=TRUE) + + +--- NW 22: Sensoren entprellen --- +CALL FB "None" , (ESensor:="BG3290", T_Ein:=1, T_Aus:=11, tein_aktiv:=TRUE, taus_aktiv:=TRUE) + + +--- NW 23: Sensoren entprellen --- +CALL FB "None" , (ESensor:="BG3294", T_Ein:=1, T_Aus:=10, tein_aktiv:=TRUE, taus_aktiv:=TRUE) + + +--- NW 24: Sensoren entprellen --- +CALL FB "None" , (ESensor:="BG3302", T_Ein:=1, T_Aus:=11, tein_aktiv:=TRUE, taus_aktiv:=TRUE) + + +--- NW 25: Sensoren entprellen --- +CALL FB "None" , (ESensor:="BG3294", T_Ein:=1, T_Aus:=11, tein_aktiv:=TRUE, taus_aktiv:=TRUE) + + +--- NW 26: Sensoren entprellen --- +CALL FB "None" , (ESensor:="BG3305", T_Ein:=1, T_Aus:=30, tein_aktiv:=TRUE, taus_aktiv:=TRUE) + + +--- NW 27: Sensoren entprellen --- +CALL FB "None" , (ESensor:="BG3311", T_Ein:=1, T_Aus:=30, tein_aktiv:=TRUE, taus_aktiv:=TRUE) + + +--- NW 28: Sensoren entprellen --- +CALL FB "None" , (ESensor:="BG3315", T_Ein:=1, T_Aus:=30, tein_aktiv:=TRUE, taus_aktiv:=TRUE) + + +--- NW 29: Sensoren entprellen --- +CALL FB "None" , (ESensor:="BG3320", T_Ein:=1, T_Aus:=11, tein_aktiv:=TRUE, taus_aktiv:=TRUE) + + +--- NW 30: Sensoren entprellen --- +CALL FB "None" , (ESensor:="BG3322", T_Ein:=1, T_Aus:=10, tein_aktiv:=TRUE, taus_aktiv:=TRUE) + + +--- NW 31: Sensoren entprellen --- +CALL FB "None" , (ESensor:="BG3332", T_Ein:=1, T_Aus:=11, tein_aktiv:=TRUE, taus_aktiv:=TRUE) + + +--- NW 32: Sensoren entprellen --- +CALL FB "None" , (ESensor:="BG3330", T_Ein:=1, T_Aus:=11, tein_aktiv:=TRUE, taus_aktiv:=TRUE) + + +--- NW 33: Sensoren entprellen --- +CALL FB "None" , (ESensor:="BG3335", T_Ein:=1, T_Aus:=30, tein_aktiv:=TRUE, taus_aktiv:=TRUE) + + +--- NW 34: Sensoren entprellen --- +CALL FB "None" , (ESensor:="BG3341", T_Ein:=1, T_Aus:=30, tein_aktiv:=TRUE, taus_aktiv:=TRUE) + + +--- NW 35: Sensoren entprellen --- +CALL FB "None" , (ESensor:="BG3345", T_Ein:=1, T_Aus:=30, tein_aktiv:=TRUE, taus_aktiv:=TRUE) + + +--- NW 36: Sensoren entprellen --- +CALL FB "None" , (ESensor:="BG3350", T_Ein:=1, T_Aus:=11, tein_aktiv:=TRUE, taus_aktiv:=TRUE) + + +--- NW 37: Sensoren entprellen --- +CALL FB "None" , (ESensor:="BG3361", T_Ein:=1, T_Aus:=10, tein_aktiv:=TRUE, taus_aktiv:=TRUE) + + +--- NW 38: Sensoren entprellen --- +CALL FB "None" , (ESensor:="BG3362", T_Ein:=1, T_Aus:=11, tein_aktiv:=TRUE, taus_aktiv:=TRUE) + + +--- NW 39: Sensoren entprellen --- +CALL FB "None" , (ESensor:="BG3361", T_Ein:=1, T_Aus:=11, tein_aktiv:=TRUE, taus_aktiv:=TRUE) + + +--- NW 40: Sensoren entprellen --- +CALL FB "None" , (ESensor:="BG3381", T_Ein:=1, T_Aus:=50, tein_aktiv:=TRUE, taus_aktiv:="MA0094") + + +--- NW 41: Sensoren entprellen --- +CALL FB "None" , (ESensor:="BG3365", T_Ein:=1, T_Aus:=30, tein_aktiv:=TRUE, taus_aktiv:=TRUE) + + +--- NW 42: Sensoren entprellen --- +CALL FB "None" , (ESensor:="BG3371", T_Ein:=1, T_Aus:=30, tein_aktiv:=TRUE, taus_aktiv:=TRUE) + + +--- NW 43: Sensoren entprellen --- +CALL FB "None" , (ESensor:="BG3375", T_Ein:=1, T_Aus:=30, tein_aktiv:=TRUE, taus_aktiv:=TRUE) + + +--- NW 44: Sensoren entprellen --- +CALL FB "None" , (ESensor:="BG3380", T_Ein:=1, T_Aus:=11, tein_aktiv:=TRUE, taus_aktiv:=TRUE) + + +--- NW 45: Sensoren entprellen --- +CALL FB "None" , (ESensor:="BG3384", T_Ein:=1, T_Aus:=10, tein_aktiv:=TRUE, taus_aktiv:=TRUE) + + +--- NW 46: Sensoren entprellen --- +CALL FB "None" , (ESensor:="BG3392", T_Ein:=1, T_Aus:=11, tein_aktiv:=TRUE, taus_aktiv:=TRUE) + + +--- NW 47: Sensoren entprellen --- +CALL FB "None" , (ESensor:="BG3391", T_Ein:=1, T_Aus:=11, tein_aktiv:=TRUE, taus_aktiv:=TRUE) + + +--- NW 48: Sensoren entprellen --- +CALL FB "None" , (ESensor:="BG3395", T_Ein:=1, T_Aus:=30, tein_aktiv:=TRUE, taus_aktiv:=TRUE) + + +--- NW 49: Sensoren entprellen --- +CALL FB "None" , (ESensor:="BG3401", T_Ein:=1, T_Aus:=30, tein_aktiv:=TRUE, taus_aktiv:=TRUE) + + +--- NW 50: Sensoren entprellen --- +CALL FB "None" , (ESensor:="BG3405", T_Ein:=1, T_Aus:=30, tein_aktiv:=TRUE, taus_aktiv:=TRUE) + + +--- NW 51: Sensoren entprellen --- +CALL FB "None" , (ESensor:="BG3410", T_Ein:=1, T_Aus:=11, tein_aktiv:=TRUE, taus_aktiv:=TRUE) + + +--- NW 52: Sensoren entprellen --- +CALL FB "None" , (ESensor:="BG3414", T_Ein:=1, T_Aus:=10, tein_aktiv:=TRUE, taus_aktiv:=TRUE) + + +--- NW 53: Sensoren entprellen --- +CALL FB "None" , (ESensor:="BG3422", T_Ein:=1, T_Aus:=11, tein_aktiv:=TRUE, taus_aktiv:=TRUE) + + +--- NW 54: Sensoren entprellen --- +CALL FB "None" , (ESensor:="BG3445", T_Ein:=1, T_Aus:=11, tein_aktiv:=TRUE, taus_aktiv:=TRUE) + + +--- NW 55: Sensoren entprellen --- +CALL FB "None" , (ESensor:="BG3425", T_Ein:=1, T_Aus:=30, tein_aktiv:=TRUE, taus_aktiv:=TRUE) + + +--- NW 56: Sensoren entprellen --- +CALL FB "None" , (ESensor:="BG3431", T_Ein:=1, T_Aus:=30, tein_aktiv:=TRUE, taus_aktiv:=TRUE) + + +--- NW 57: Sensoren entprellen --- +CALL FB "None" , (ESensor:="BG3435", T_Ein:=1, T_Aus:=30, tein_aktiv:=TRUE, taus_aktiv:=TRUE) + + +--- NW 58: Sensoren entprellen --- +CALL FB "None" , (ESensor:="BG3440", T_Ein:=1, T_Aus:=11, tein_aktiv:=TRUE, taus_aktiv:=TRUE) + + +--- NW 59: Sensoren entprellen --- +CALL FB "None" , (ESensor:="BG3444", T_Ein:=1, T_Aus:=10, tein_aktiv:=TRUE, taus_aktiv:=TRUE) + + +--- NW 60: Sensoren entprellen --- +CALL FB "None" , (ESensor:="BG3452", T_Ein:=1, T_Aus:=11, tein_aktiv:=TRUE, taus_aktiv:=TRUE) + + +--- NW 61: Sensoren entprellen --- +CALL FB "None" , (ESensor:="BG3451", T_Ein:=1, T_Aus:=11, tein_aktiv:=TRUE, taus_aktiv:=TRUE) + + +--- NW 62: Sensoren entprellen --- +CALL FB "None" , (ESensor:="BG3455", T_Ein:=1, T_Aus:=30, tein_aktiv:=TRUE, taus_aktiv:=TRUE) + + +--- NW 63: Sensoren entprellen --- +CALL FB "None" , (ESensor:="BG3461", T_Ein:=1, T_Aus:=30, tein_aktiv:=TRUE, taus_aktiv:=TRUE) + + +--- NW 64: Sensoren entprellen --- +CALL FB "None" , (ESensor:="BG3465", T_Ein:=1, T_Aus:=30, tein_aktiv:=TRUE, taus_aktiv:=TRUE) + + +--- NW 65: Sensoren entprellen --- +CALL FB "None" , (ESensor:="BG3470", T_Ein:=1, T_Aus:=11, tein_aktiv:=TRUE, taus_aktiv:=TRUE) + + +--- NW 66: Sensoren entprellen --- +CALL FB "None" , (ESensor:="BG3541", T_Ein:=1, T_Aus:=11, tein_aktiv:=TRUE, taus_aktiv:=TRUE) + + +--- NW 67: Ende --- + BE + diff --git a/=A01+UH06-KF00/Programmbausteine/Anlage/1_Arbeitsplätze/Basics_Arbeitsplätze/Arbeitsplätze_Zylinder.awl b/=A01+UH06-KF00/Programmbausteine/Anlage/1_Arbeitsplätze/Basics_Arbeitsplätze/Arbeitsplätze_Zylinder.awl new file mode 100644 index 0000000..3ad2de9 --- /dev/null +++ b/=A01+UH06-KF00/Programmbausteine/Anlage/1_Arbeitsplätze/Basics_Arbeitsplätze/Arbeitsplätze_Zylinder.awl @@ -0,0 +1,568 @@ +=== FB 1192: Arbeitsplätze_Zylinder [STL] === +INTERFACE: + Input: + Output: + InOut: + Static: + Schleuse_3456 : "MZylinder" // + Schleuse_3481 : "MZylinder" // + Weiche_3482 : "MZylinder" // + Weiche_3361 : "MZylinder" // + Schleuse_3487 : "MZylinder" // + Schleuse_Vor_Einfahrt_PS5 : "MZylinder" // + Weiche_Einfahrt_PS5 : "MZylinder" // + Schleuse_Vorstau_PS5 : "MZylinder" + Weiche_zu_Platz1_PS5 : "MZylinder" // + Weiche_zu_Platz2_PS5 : "MZylinder" + Schleuse_Platz1_PS5 : "MZylinder" + Schleuse_Platz2_PS5 : "MZylinder" + Schleuse_Platz3_PS5 : "MZylinder" + Weiche_von_Platz1_PS5 : "MZylinder" // + Weiche_von_Platz2_PS5 : "MZylinder" + Schleuse_Ausfahrt_PS5 : "MZylinder" // + Schleuse_Vor_Ausfahrt_PS5 : "MZylinder" // + Weiche_Ausfahrt_PS5 : "MZylinder" // + Schleuse_Vor_Einfahrt_PS4 : "MZylinder" // + Weiche_Einfahrt_PS4 : "MZylinder" // + Schleuse_Vorstau_PS4 : "MZylinder" + Weiche_zu_Platz1_PS4 : "MZylinder" // + Weiche_zu_Platz2_PS4 : "MZylinder" + Schleuse_Platz1_PS4 : "MZylinder" + Schleuse_Platz2_PS4 : "MZylinder" + Schleuse_Platz3_PS4 : "MZylinder" + Weiche_von_Platz1_PS4 : "MZylinder" // + Weiche_von_Platz2_PS4 : "MZylinder" + Schleuse_Ausfahrt_PS4 : "MZylinder" // + Weiche_Ausfahrt_PS4 : "MZylinder" // + Schleuse_Vor_Einfahrt_PS3 : "MZylinder" // + Weiche_Einfahrt_PS3 : "MZylinder" // + Schleuse_Vorstau_PS3 : "MZylinder" + Weiche_zu_Platz1_PS3 : "MZylinder" // + Weiche_zu_Platz2_PS3 : "MZylinder" + Schleuse_Platz1_PS3 : "MZylinder" + Schleuse_Platz2_PS3 : "MZylinder" + Schleuse_Platz3_PS3 : "MZylinder" + Weiche_von_Platz1_PS3 : "MZylinder" // + Weiche_von_Platz2_PS3 : "MZylinder" + Schleuse_Ausfahrt_PS3 : "MZylinder" // + Schleuse_Vor_Ausfahrt_PS3 : "MZylinder" // + Weiche_Ausfahrt_PS3 : "MZylinder" // + Schleuse_Vor_Einfahrt_PS2 : "MZylinder" // + Weiche_Einfahrt_PS2 : "MZylinder" // + Schleuse_Vorstau_PS2 : "MZylinder" + Weiche_zu_Platz1_PS2 : "MZylinder" // + Weiche_zu_Platz2_PS2 : "MZylinder" + Schleuse_Platz1_PS2 : "MZylinder" + Schleuse_Platz2_PS2 : "MZylinder" + Schleuse_Platz3_PS2 : "MZylinder" + Weiche_von_Platz1_PS2 : "MZylinder" // + Weiche_von_Platz2_PS2 : "MZylinder" + Schleuse_Ausfahrt_PS2 : "MZylinder" // + Weiche_Ausfahrt_PS2 : "MZylinder" // + Schleuse_Vor_Einfahrt_PS1 : "MZylinder" // + Weiche_Einfahrt_PS1 : "MZylinder" // + Schleuse_Vorstau_PS1 : "MZylinder" + Weiche_zu_Platz1_PS1 : "MZylinder" // + Weiche_zu_Platz2_PS1 : "MZylinder" + Schleuse_Platz1_PS1 : "MZylinder" + Schleuse_Platz2_PS1 : "MZylinder" + Schleuse_Platz3_PS1 : "MZylinder" + Weiche_von_Platz1_PS1 : "MZylinder" // + Weiche_von_Platz2_PS1 : "MZylinder" + Schleuse_Ausfahrt_PS1 : "MZylinder" // + Schleuse_Vor_Ausfahrt_PS1 : "MZylinder" // + Weiche_Ausfahrt_PS1 : "MZylinder" // + Schleuse_Vor_Einfahrt_MPS3 : "MZylinder" // + Weiche_Einfahrt_MPS3 : "MZylinder" // + Schleuse_Vorstau_MPS3 : "MZylinder" + Weiche_zu_Platz1_MPS3 : "MZylinder" // + Weiche_zu_Platz2_MPS3 : "MZylinder" + Schleuse_Platz1_MPS3 : "MZylinder" + Schleuse_Platz2_MPS3 : "MZylinder" + Schleuse_Platz3_MPS3 : "MZylinder" + Weiche_von_Platz1_MPS3 : "MZylinder" // + Weiche_von_Platz2_MPS3 : "MZylinder" + Schleuse_Ausfahrt_MPS3 : "MZylinder" // + Schleuse_Vor_Ausfahrt_MPS3 : "MZylinder" // + Weiche_Ausfahrt_MPS3 : "MZylinder" // + Schleuse_Vor_Einfahrt_MPS2 : "MZylinder" // + Weiche_Einfahrt_MPS2 : "MZylinder" // + Schleuse_Vorstau_MPS2 : "MZylinder" + Weiche_zu_Platz1_MPS2 : "MZylinder" // + Weiche_zu_Platz2_MPS2 : "MZylinder" + Schleuse_Platz1_MPS2 : "MZylinder" + Schleuse_Platz2_MPS2 : "MZylinder" + Schleuse_Platz3_MPS2 : "MZylinder" + Weiche_von_Platz1_MPS2 : "MZylinder" // + Weiche_von_Platz2_MPS2 : "MZylinder" + Schleuse_Ausfahrt_MPS2 : "MZylinder" // + Schleuse_Vor_Ausfahrt_MPS2 : "MZylinder" // + Weiche_Ausfahrt_MPS2 : "MZylinder" // + Schleuse_Vor_Einfahrt_MPS1 : "MZylinder" // + Weiche_Einfahrt_MPS1 : "MZylinder" // + Schleuse_Vorstau_MPS1 : "MZylinder" + Weiche_zu_Platz1_MPS1 : "MZylinder" // + Weiche_zu_Platz2_MPS1 : "MZylinder" + Schleuse_Platz1_MPS1 : "MZylinder" + Schleuse_Platz2_MPS1 : "MZylinder" + Schleuse_Platz3_MPS1 : "MZylinder" + Weiche_von_Platz1_MPS1 : "MZylinder" // + Weiche_von_Platz2_MPS1 : "MZylinder" + Schleuse_Ausfahrt_MPS1 : "MZylinder" // + Schleuse_Vor_Ausfahrt_MPS1 : "MZylinder" // + Weiche_Ausfahrt_MPS1 : "MZylinder" // + Schleuse_3540 : "MZylinder" // + Schleuse_3543 : "MZylinder" // + Temp: + Auto : Bool // Automatik ist aktiv + Hand : Bool // Hand ist aktiv + ZylAst : Bool // Zylinder ansteuern + Constant: + +--- NW 1: Übergabe des Bereichstatus System UH06 / A01 --- + A "DAMR_Bereich".A01_UH06.Automatik + = Auto + + A "DAMR_Bereich".A01_UH06.BereichErr + JC Next // Zylinder-Stellung nicht mehr ändern + + +--- NW 2: Schleuse_3456 --- +CALL FB "None" , (Automatik:=Auto, Handbetrieb:=FALSE, T_Ast:=0, T_Gst:=5, ZylAst:="MB3456", ZylGst:=?) + + +--- NW 3: Schleuse_3481 --- +CALL FB "None" , (Automatik:=Auto, Handbetrieb:=FALSE, T_Ast:=0, T_Gst:=5, ZylAst:="MB3481", ZylGst:=?) + + +--- NW 4: Weiche_3482 --- +CALL FB "None" , (Automatik:=Auto, Handbetrieb:=FALSE, T_Ast:=0, T_Gst:=5, ZylAst:="MB3482", ZylGst:=?) + + +--- NW 5: Weiche_3361 --- +CALL FB "None" , (Automatik:=Auto, Handbetrieb:=FALSE, T_Ast:=0, T_Gst:=5, ZylAst:="MB3361", ZylGst:=?) + + +--- NW 6: Schleuse_3487 --- +CALL FB "None" , (Automatik:=Auto, Handbetrieb:=FALSE, T_Ast:=0, T_Gst:=5, ZylAst:="MB3487", ZylGst:=?) + + +--- NW 7: Schleuse_vor_Einfahrt_PS5 --- +CALL FB "None" , (Automatik:=Auto, Handbetrieb:=FALSE, T_Ast:=0, T_Gst:=5, ZylAst:="MB3241", ZylGst:=?) + + +--- NW 8: Weiche_zu_PS5 --- +CALL FB "None" , (Automatik:=Auto, Handbetrieb:=FALSE, T_Ast:=0, T_Gst:=5, ZylAst:="MB3242", ZylGst:=?) + + +--- NW 9: Schleuse_Vorstau_PS5 --- +CALL FB "None" , (Automatik:=Auto, Handbetrieb:=FALSE, T_Ast:=0, T_Gst:=5, ZylAst:="MB3243", ZylGst:=?) + + +--- NW 10: Weiche_PS5_zu_Platz1 --- +CALL FB "None" , (Automatik:=Auto, Handbetrieb:=FALSE, T_Ast:=0, T_Gst:=5, ZylAst:="MB3244", ZylGst:=?) + + +--- NW 11: Weiche_PS5_zu_Platz2 --- +CALL FB "None" , (Automatik:=Auto, Handbetrieb:=FALSE, T_Ast:=0, T_Gst:=5, ZylAst:="MB3250", ZylGst:=?) + + +--- NW 12: Schleuse_PS5_Platz1 --- +CALL FB "None" , (Automatik:=Auto, Handbetrieb:=FALSE, T_Ast:=0, T_Gst:=5, ZylAst:="MB3245", ZylGst:=?) + + +--- NW 13: Schleuse_PS5_Platz2 --- +CALL FB "None" , (Automatik:=Auto, Handbetrieb:=FALSE, T_Ast:=0, T_Gst:=5, ZylAst:="MB3251", ZylGst:=?) + + +--- NW 14: Schleuse_PS5_Platz3 --- +CALL FB "None" , (Automatik:=Auto, Handbetrieb:=FALSE, T_Ast:=0, T_Gst:=5, ZylAst:="MB3255", ZylGst:=?) + + +--- NW 15: Weiche_PS5_von_Platz1 --- +CALL FB "None" , (Automatik:=Auto, Handbetrieb:=FALSE, T_Ast:=0, T_Gst:=5, ZylAst:="MB3260", ZylGst:=?) + + +--- NW 16: Weiche_PS5_von_Platz2 --- +CALL FB "None" , (Automatik:=Auto, Handbetrieb:=FALSE, T_Ast:=0, T_Gst:=5, ZylAst:="MB3256", ZylGst:=?) + + +--- NW 17: Schleuse_PS5_raus --- +CALL FB "None" , (Automatik:=Auto, Handbetrieb:=FALSE, T_Ast:=0, T_Gst:=5, ZylAst:="MB3262", ZylGst:=?) + + +--- NW 18: Schleuse_vor_Ausfahrt_PS5 --- +CALL FB "None" , (Automatik:=Auto, Handbetrieb:=FALSE, T_Ast:=0, T_Gst:=5, ZylAst:="MB3265", ZylGst:=?) + + +--- NW 19: Weiche_von_PS5 --- +CALL FB "None" , (Automatik:=Auto, Handbetrieb:=FALSE, T_Ast:=0, T_Gst:=5, ZylAst:="MB3263", ZylGst:=?) + + +--- NW 20: Schleuse_vor_Einfahrt_PS4 --- +CALL FB "None" , (Automatik:=Auto, Handbetrieb:=FALSE, T_Ast:=0, T_Gst:=5, ZylAst:="MB3271", ZylGst:=?) + + +--- NW 21: Weiche_zu_PS4 --- +CALL FB "None" , (Automatik:=Auto, Handbetrieb:=FALSE, T_Ast:=0, T_Gst:=5, ZylAst:="MB3272", ZylGst:=?) + + +--- NW 22: Schleuse_Vorstau_PS4 --- +CALL FB "None" , (Automatik:=Auto, Handbetrieb:=FALSE, T_Ast:=0, T_Gst:=5, ZylAst:="MB3273", ZylGst:=?) + + +--- NW 23: Weiche_PS4_zu_Platz1 --- +CALL FB "None" , (Automatik:=Auto, Handbetrieb:=FALSE, T_Ast:=0, T_Gst:=5, ZylAst:="MB3274", ZylGst:=?) + + +--- NW 24: Weiche_PS4_zu_Platz2 --- +CALL FB "None" , (Automatik:=Auto, Handbetrieb:=FALSE, T_Ast:=0, T_Gst:=5, ZylAst:="MB3280", ZylGst:=?) + + +--- NW 25: Schleuse_PS4_Platz1 --- +CALL FB "None" , (Automatik:=Auto, Handbetrieb:=FALSE, T_Ast:=0, T_Gst:=5, ZylAst:="MB3275", ZylGst:=?) + + +--- NW 26: Schleuse_PS4_Platz2 --- +CALL FB "None" , (Automatik:=Auto, Handbetrieb:=FALSE, T_Ast:=0, T_Gst:=5, ZylAst:="MB3281", ZylGst:=?) + + +--- NW 27: Schleuse_PS4_Platz3 --- +CALL FB "None" , (Automatik:=Auto, Handbetrieb:=FALSE, T_Ast:=0, T_Gst:=5, ZylAst:="MB3285", ZylGst:=?) + + +--- NW 28: Weiche_PS4_von_Platz1 --- +CALL FB "None" , (Automatik:=Auto, Handbetrieb:=FALSE, T_Ast:=0, T_Gst:=5, ZylAst:="MB3290", ZylGst:=?) + + +--- NW 29: Weiche_PS4_von_Platz2 --- +CALL FB "None" , (Automatik:=Auto, Handbetrieb:=FALSE, T_Ast:=0, T_Gst:=5, ZylAst:="MB3286", ZylGst:=?) + + +--- NW 30: Schleuse_PS4_raus --- +CALL FB "None" , (Automatik:=Auto, Handbetrieb:=FALSE, T_Ast:=0, T_Gst:=5, ZylAst:="MB3291", ZylGst:=?) + + +--- NW 31: Weiche_von_PS4 --- +CALL FB "None" , (Automatik:=Auto, Handbetrieb:=FALSE, T_Ast:=0, T_Gst:=5, ZylAst:="MB3292", ZylGst:=?) + + +--- NW 32: Schleuse_vor_Einfahrt_PS3 --- +CALL FB "None" , (Automatik:=Auto, Handbetrieb:=FALSE, T_Ast:=0, T_Gst:=5, ZylAst:="MB3293", ZylGst:=?) + + +--- NW 33: Weiche_zu_PS3 --- +CALL FB "None" , (Automatik:=Auto, Handbetrieb:=FALSE, T_Ast:=0, T_Gst:=5, ZylAst:="MB3302", ZylGst:=?) + + +--- NW 34: Schleuse_Vorstau_PS3 --- +CALL FB "None" , (Automatik:=Auto, Handbetrieb:=FALSE, T_Ast:=0, T_Gst:=5, ZylAst:="MB3303", ZylGst:=?) + + +--- NW 35: Weiche_PS3_zu_Platz1 --- +CALL FB "None" , (Automatik:=Auto, Handbetrieb:=FALSE, T_Ast:=0, T_Gst:=5, ZylAst:="MB3304", ZylGst:=?) + + +--- NW 36: Weiche_PS3_zu_Platz2 --- +CALL FB "None" , (Automatik:=Auto, Handbetrieb:=FALSE, T_Ast:=0, T_Gst:=5, ZylAst:="MB3310", ZylGst:=?) + + +--- NW 37: Schleuse_PS3_Platz1 --- +CALL FB "None" , (Automatik:=Auto, Handbetrieb:=FALSE, T_Ast:=0, T_Gst:=5, ZylAst:="MB3305", ZylGst:=?) + + +--- NW 38: Schleuse_PS3_Platz2 --- +CALL FB "None" , (Automatik:=Auto, Handbetrieb:=FALSE, T_Ast:=0, T_Gst:=5, ZylAst:="MB3311", ZylGst:=?) + + +--- NW 39: Schleuse_PS3_Platz3 --- +CALL FB "None" , (Automatik:=Auto, Handbetrieb:=FALSE, T_Ast:=0, T_Gst:=5, ZylAst:="MB3315", ZylGst:=?) + + +--- NW 40: Weiche_PS3_von_Platz1 --- +CALL FB "None" , (Automatik:=Auto, Handbetrieb:=FALSE, T_Ast:=0, T_Gst:=5, ZylAst:="MB3320", ZylGst:=?) + + +--- NW 41: Weiche_PS3_von_Platz2 --- +CALL FB "None" , (Automatik:=Auto, Handbetrieb:=FALSE, T_Ast:=0, T_Gst:=5, ZylAst:="MB3316", ZylGst:=?) + + +--- NW 42: Schleuse_PS3_raus --- +CALL FB "None" , (Automatik:=Auto, Handbetrieb:=FALSE, T_Ast:=0, T_Gst:=5, ZylAst:="MB3321", ZylGst:=?) + + +--- NW 43: Schleuse_vor_Ausfahrt_PS3 --- +CALL FB "None" , (Automatik:=Auto, Handbetrieb:=FALSE, T_Ast:=0, T_Gst:=5, ZylAst:="MB3323", ZylGst:=?) + + +--- NW 44: Weiche_von_PS3 --- +CALL FB "None" , (Automatik:=Auto, Handbetrieb:=FALSE, T_Ast:=0, T_Gst:=5, ZylAst:="MB3322", ZylGst:=?) + + +--- NW 45: Schleuse_vor_Einfahrt_PS2 --- +CALL FB "None" , (Automatik:=Auto, Handbetrieb:=FALSE, T_Ast:=0, T_Gst:=5, ZylAst:="MB3331", ZylGst:=?) + + +--- NW 46: Weiche_zu_PS2 --- +CALL FB "None" , (Automatik:=Auto, Handbetrieb:=FALSE, T_Ast:=0, T_Gst:=5, ZylAst:="MB3332", ZylGst:=?) + + +--- NW 47: Schleuse_Vorstau_PS2 --- +CALL FB "None" , (Automatik:=Auto, Handbetrieb:=FALSE, T_Ast:=0, T_Gst:=5, ZylAst:="MB3333", ZylGst:=?) + + +--- NW 48: Weiche_PS2_zu_Platz1 --- +CALL FB "None" , (Automatik:=Auto, Handbetrieb:=FALSE, T_Ast:=0, T_Gst:=5, ZylAst:="MB3334", ZylGst:=?) + + +--- NW 49: Weiche_PS2_zu_Platz2 --- +CALL FB "None" , (Automatik:=Auto, Handbetrieb:=FALSE, T_Ast:=0, T_Gst:=5, ZylAst:="MB3340", ZylGst:=?) + + +--- NW 50: Schleuse_PS2_Platz1 --- +CALL FB "None" , (Automatik:=Auto, Handbetrieb:=FALSE, T_Ast:=0, T_Gst:=5, ZylAst:="MB3335", ZylGst:=?) + + +--- NW 51: Schleuse_PS2_Platz2 --- +CALL FB "None" , (Automatik:=Auto, Handbetrieb:=FALSE, T_Ast:=0, T_Gst:=5, ZylAst:="MB3341", ZylGst:=?) + + +--- NW 52: Schleuse_PS2_Platz3 --- +CALL FB "None" , (Automatik:=Auto, Handbetrieb:=FALSE, T_Ast:=0, T_Gst:=5, ZylAst:="MB3345", ZylGst:=?) + + +--- NW 53: Weiche_PS2_von_Platz1 --- +CALL FB "None" , (Automatik:=Auto, Handbetrieb:=FALSE, T_Ast:=0, T_Gst:=5, ZylAst:="MB3350", ZylGst:=?) + + +--- NW 54: Weiche_PS2_von_Platz2 --- +CALL FB "None" , (Automatik:=Auto, Handbetrieb:=FALSE, T_Ast:=0, T_Gst:=5, ZylAst:="MB3346", ZylGst:=?) + + +--- NW 55: Schleuse_PS2_raus --- +CALL FB "None" , (Automatik:=Auto, Handbetrieb:=FALSE, T_Ast:=0, T_Gst:=5, ZylAst:="MB3351", ZylGst:=?) + + +--- NW 56: Weiche_von_PS2 --- +CALL FB "None" , (Automatik:=Auto, Handbetrieb:=FALSE, T_Ast:=0, T_Gst:=5, ZylAst:="MB3352", ZylGst:=?) + + +--- NW 57: Schleuse_vor_Einfahrt_PS1 --- +CALL FB "None" , (Automatik:=Auto, Handbetrieb:=FALSE, T_Ast:=0, T_Gst:=5, ZylAst:="MB3353", ZylGst:=?) + + +--- NW 58: Weiche_zu_PS1 --- +CALL FB "None" , (Automatik:=Auto, Handbetrieb:=FALSE, T_Ast:=0, T_Gst:=5, ZylAst:="MB3362", ZylGst:=?) + + +--- NW 59: Schleuse_Vorstau_PS1 --- +CALL FB "None" , (Automatik:=Auto, Handbetrieb:=FALSE, T_Ast:=0, T_Gst:=5, ZylAst:="MB3363", ZylGst:=?) + + +--- NW 60: Weiche_PS1_zu_Platz1 --- +CALL FB "None" , (Automatik:=Auto, Handbetrieb:=FALSE, T_Ast:=0, T_Gst:=5, ZylAst:="MB3364", ZylGst:=?) + + +--- NW 61: Weiche_PS1_zu_Platz2 --- +CALL FB "None" , (Automatik:=Auto, Handbetrieb:=FALSE, T_Ast:=0, T_Gst:=5, ZylAst:="MB3370", ZylGst:=?) + + +--- NW 62: Schleuse_PS1_Platz1 --- +CALL FB "None" , (Automatik:=Auto, Handbetrieb:=FALSE, T_Ast:=0, T_Gst:=5, ZylAst:="MB3365", ZylGst:=?) + + +--- NW 63: Schleuse_PS1_Platz2 --- +CALL FB "None" , (Automatik:=Auto, Handbetrieb:=FALSE, T_Ast:=0, T_Gst:=5, ZylAst:="MB3371", ZylGst:=?) + + +--- NW 64: Schleuse_PS1_Platz3 --- +CALL FB "None" , (Automatik:=Auto, Handbetrieb:=FALSE, T_Ast:=0, T_Gst:=5, ZylAst:="MB3375", ZylGst:=?) + + +--- NW 65: Weiche_PS1_von_Platz1 --- +CALL FB "None" , (Automatik:=Auto, Handbetrieb:=FALSE, T_Ast:=0, T_Gst:=5, ZylAst:="MB3380", ZylGst:=?) + + +--- NW 66: Weiche_PS1_von_Platz2 --- +CALL FB "None" , (Automatik:=Auto, Handbetrieb:=FALSE, T_Ast:=0, T_Gst:=5, ZylAst:="MB3376", ZylGst:=?) + + +--- NW 67: Schleuse_PS1_raus --- +CALL FB "None" , (Automatik:=Auto, Handbetrieb:=FALSE, T_Ast:=0, T_Gst:=5, ZylAst:="MB3381", ZylGst:=?) + + +--- NW 68: Schleuse_vor_Ausfahrt_PS1 --- +CALL FB "None" , (Automatik:=Auto, Handbetrieb:=FALSE, T_Ast:=0, T_Gst:=5, ZylAst:="MB3383", ZylGst:=?) + + +--- NW 69: Weiche_von_PS1 --- +CALL FB "None" , (Automatik:=Auto, Handbetrieb:=FALSE, T_Ast:=0, T_Gst:=5, ZylAst:="MB3382", ZylGst:=?) + + +--- NW 70: Schleuse_vor_Einfahrt_MPS3 --- +CALL FB "None" , (Automatik:=Auto, Handbetrieb:=FALSE, T_Ast:=0, T_Gst:=5, ZylAst:="MB3390", ZylGst:=?) + + +--- NW 71: Weiche_zu_MPS3 --- +CALL FB "None" , (Automatik:=Auto, Handbetrieb:=FALSE, T_Ast:=0, T_Gst:=5, ZylAst:="MB3392", ZylGst:=?) + + +--- NW 72: Schleuse_Vorstau_MPS3 --- +CALL FB "None" , (Automatik:=Auto, Handbetrieb:=FALSE, T_Ast:=0, T_Gst:=5, ZylAst:="MB3393", ZylGst:=?) + + +--- NW 73: Weiche_MPS3_zu_Platz1 --- +CALL FB "None" , (Automatik:=Auto, Handbetrieb:=FALSE, T_Ast:=0, T_Gst:=5, ZylAst:="MB3394", ZylGst:=?) + + +--- NW 74: Weiche_MPS3_zu_Platz2 --- +CALL FB "None" , (Automatik:=Auto, Handbetrieb:=FALSE, T_Ast:=0, T_Gst:=5, ZylAst:="MB3400", ZylGst:=?) + + +--- NW 75: Schleuse_MPS3_Platz1 --- +CALL FB "None" , (Automatik:=Auto, Handbetrieb:=FALSE, T_Ast:=0, T_Gst:=5, ZylAst:="MB3395", ZylGst:=?) + + +--- NW 76: Schleuse_MPS3_Platz2 --- +CALL FB "None" , (Automatik:=Auto, Handbetrieb:=FALSE, T_Ast:=0, T_Gst:=5, ZylAst:="MB3401", ZylGst:=?) + + +--- NW 77: Schleuse_MPS3_Platz3 --- +CALL FB "None" , (Automatik:=Auto, Handbetrieb:=FALSE, T_Ast:=0, T_Gst:=5, ZylAst:="MB3405", ZylGst:=?) + + +--- NW 78: Weiche_MPS3_von_Platz1 --- +CALL FB "None" , (Automatik:=Auto, Handbetrieb:=FALSE, T_Ast:=0, T_Gst:=5, ZylAst:="MB3410", ZylGst:=?) + + +--- NW 79: Weiche_MPS3_von_Platz2 --- +CALL FB "None" , (Automatik:=Auto, Handbetrieb:=FALSE, T_Ast:=0, T_Gst:=5, ZylAst:="MB3406", ZylGst:=?) + + +--- NW 80: Schleuse_MPS3_raus --- +CALL FB "None" , (Automatik:=Auto, Handbetrieb:=FALSE, T_Ast:=0, T_Gst:=5, ZylAst:="MB3411", ZylGst:=?) + + +--- NW 81: Schleuse_vor_Ausfahrt_MPS3 --- +CALL FB "None" , (Automatik:=Auto, Handbetrieb:=FALSE, T_Ast:=0, T_Gst:=5, ZylAst:="MB3413", ZylGst:=?) + + +--- NW 82: Weiche_von_MPS3 --- +CALL FB "None" , (Automatik:=Auto, Handbetrieb:=FALSE, T_Ast:=0, T_Gst:=5, ZylAst:="MB3412", ZylGst:=?) + + +--- NW 83: Schleuse_vor_Einfahrt_MPS2 --- +CALL FB "None" , (Automatik:=Auto, Handbetrieb:=FALSE, T_Ast:=0, T_Gst:=5, ZylAst:="MB3421", ZylGst:=?) + + +--- NW 84: Weiche_zu_MPS2 --- +CALL FB "None" , (Automatik:=Auto, Handbetrieb:=FALSE, T_Ast:=0, T_Gst:=5, ZylAst:="MB3422", ZylGst:=?) + + +--- NW 85: Schleuse_Vorstau_MPS2 --- +CALL FB "None" , (Automatik:=Auto, Handbetrieb:=FALSE, T_Ast:=0, T_Gst:=5, ZylAst:="MB3423", ZylGst:=?) + + +--- NW 86: Weiche_MPS2_zu_Platz1 --- +CALL FB "None" , (Automatik:=Auto, Handbetrieb:=FALSE, T_Ast:=0, T_Gst:=5, ZylAst:="MB3424", ZylGst:=?) + + +--- NW 87: Weiche_MPS2_zu_Platz2 --- +CALL FB "None" , (Automatik:=Auto, Handbetrieb:=FALSE, T_Ast:=0, T_Gst:=5, ZylAst:="MB3430", ZylGst:=?) + + +--- NW 88: Schleuse_MPS2_Platz1 --- +CALL FB "None" , (Automatik:=Auto, Handbetrieb:=FALSE, T_Ast:=0, T_Gst:=5, ZylAst:="MB3425", ZylGst:=?) + + +--- NW 89: Schleuse_MPS2_Platz2 --- +CALL FB "None" , (Automatik:=Auto, Handbetrieb:=FALSE, T_Ast:=0, T_Gst:=5, ZylAst:="MB3431", ZylGst:=?) + + +--- NW 90: Schleuse_MPS2_Platz3 --- +CALL FB "None" , (Automatik:=Auto, Handbetrieb:=FALSE, T_Ast:=0, T_Gst:=5, ZylAst:="MB3435", ZylGst:=?) + + +--- NW 91: Weiche_MPS2_von_Platz1 --- +CALL FB "None" , (Automatik:=Auto, Handbetrieb:=FALSE, T_Ast:=0, T_Gst:=5, ZylAst:="MB3440", ZylGst:=?) + + +--- NW 92: Weiche_MPS2_von_Platz2 --- +CALL FB "None" , (Automatik:=Auto, Handbetrieb:=FALSE, T_Ast:=0, T_Gst:=5, ZylAst:="MB3436", ZylGst:=?) + + +--- NW 93: Schleuse_MPS2_raus --- +CALL FB "None" , (Automatik:=Auto, Handbetrieb:=FALSE, T_Ast:=0, T_Gst:=5, ZylAst:="MB3441", ZylGst:=?) + + +--- NW 94: Schleuse_vor_Ausfahrt_MPS2 --- +CALL FB "None" , (Automatik:=Auto, Handbetrieb:=FALSE, T_Ast:=0, T_Gst:=5, ZylAst:="MB3443", ZylGst:=?) + + +--- NW 95: Weiche_von_MPS2 --- +CALL FB "None" , (Automatik:=Auto, Handbetrieb:=FALSE, T_Ast:=0, T_Gst:=5, ZylAst:="MB3442", ZylGst:=?) + + +--- NW 96: Schleuse_vor_Einfahrt_MPS1 --- +CALL FB "None" , (Automatik:=Auto, Handbetrieb:=FALSE, T_Ast:=0, T_Gst:=5, ZylAst:="MB3450", ZylGst:=?) + + +--- NW 97: Weiche_zu_MPS1 --- +CALL FB "None" , (Automatik:=Auto, Handbetrieb:=FALSE, T_Ast:=0, T_Gst:=5, ZylAst:="MB3452", ZylGst:=?) + + +--- NW 98: Schleuse_Vorstau_MPS1 --- +CALL FB "None" , (Automatik:=Auto, Handbetrieb:=FALSE, T_Ast:=0, T_Gst:=5, ZylAst:="MB3453", ZylGst:=?) + + +--- NW 99: Weiche_MPS1_zu_Platz1 --- +CALL FB "None" , (Automatik:=Auto, Handbetrieb:=FALSE, T_Ast:=0, T_Gst:=5, ZylAst:="MB3454", ZylGst:=?) + + +--- NW 100: Weiche_MPS1_zu_Platz2 --- +CALL FB "None" , (Automatik:=Auto, Handbetrieb:=FALSE, T_Ast:=0, T_Gst:=5, ZylAst:="MB3460", ZylGst:=?) + + +--- NW 101: Schleuse_MPS1_Platz1 --- +CALL FB "None" , (Automatik:=Auto, Handbetrieb:=FALSE, T_Ast:=0, T_Gst:=5, ZylAst:="MB3455", ZylGst:=?) + + +--- NW 102: Schleuse_MPS1_Platz2 --- +CALL FB "None" , (Automatik:=Auto, Handbetrieb:=FALSE, T_Ast:=0, T_Gst:=5, ZylAst:="MB3461", ZylGst:=?) + + +--- NW 103: Schleuse_MPS1_Platz3 --- +CALL FB "None" , (Automatik:=Auto, Handbetrieb:=FALSE, T_Ast:=0, T_Gst:=5, ZylAst:="MB3465", ZylGst:=?) + + +--- NW 104: Weiche_MPS1_von_Platz1 --- +CALL FB "None" , (Automatik:=Auto, Handbetrieb:=FALSE, T_Ast:=0, T_Gst:=5, ZylAst:="MB3470", ZylGst:=?) + + +--- NW 105: Weiche_MPS1_von_Platz2 --- +CALL FB "None" , (Automatik:=Auto, Handbetrieb:=FALSE, T_Ast:=0, T_Gst:=5, ZylAst:="MB3466", ZylGst:=?) + + +--- NW 106: Schleuse_MPS1_raus --- +CALL FB "None" , (Automatik:=Auto, Handbetrieb:=FALSE, T_Ast:=0, T_Gst:=5, ZylAst:="MB3471", ZylGst:=?) + + +--- NW 107: Schleuse_vor_Ausfahrt_MPS1 --- +CALL FB "None" , (Automatik:=Auto, Handbetrieb:=FALSE, T_Ast:=0, T_Gst:=5, ZylAst:="MB3473", ZylGst:=?) + + +--- NW 108: Weiche_von_MPS1 --- +CALL FB "None" , (Automatik:=Auto, Handbetrieb:=FALSE, T_Ast:=0, T_Gst:=5, ZylAst:="MB3472", ZylGst:=?) + + +--- NW 109: Schleuse_3456 --- +CALL FB "None" , (Automatik:=Auto, Handbetrieb:=FALSE, T_Ast:=0, T_Gst:=5, ZylAst:="MB3540", ZylGst:=?) + + +--- NW 110: Schleuse_3543 --- +CALL FB "None" , (Automatik:=Auto, Handbetrieb:=FALSE, T_Ast:=0, T_Gst:=5, ZylAst:="MB3543", ZylGst:=?) + + +--- NW 111: Ende --- +Next: BE + diff --git a/=A01+UH06-KF00/Programmbausteine/Anlage/1_Arbeitsplätze/Basics_Arbeitsplätze/DArbeitsplätze_Antriebe.awl b/=A01+UH06-KF00/Programmbausteine/Anlage/1_Arbeitsplätze/Basics_Arbeitsplätze/DArbeitsplätze_Antriebe.awl new file mode 100644 index 0000000..797fa9a --- /dev/null +++ b/=A01+UH06-KF00/Programmbausteine/Anlage/1_Arbeitsplätze/Basics_Arbeitsplätze/DArbeitsplätze_Antriebe.awl @@ -0,0 +1,48 @@ +=== InstanceDB 1199: DArbeitsplätze_Antriebe [DB] === +INTERFACE: + Input: + Output: + InOut: + Static: + MA0061 : "MAntrieb_PowerSave" + MA0062 : "MAntrieb_PowerSave" + MA0063 : "MAntrieb_PowerSave" + MA0064 : "MAntrieb_PowerSave" + MA0065 : "MAntrieb_PowerSave" + MA0082 : "MAntrieb_PowerSave" + MA0087 : "MAntrieb_PowerSave" + MA0094 : "MAntrieb_PowerSave" + MA0105 : "MAntrieb_PowerSave" + MA0112 : "MAntrieb_PowerSave" + MA _Einfahrt_PS5 : "MAntrieb_PowerSave" + MA _Nachstau1_PS5 : "MAntrieb_PowerSave" + MA _Nachstau2_PS5 : "MAntrieb_PowerSave" + MA _Ausfahrt_PS5 : "MAntrieb_PowerSave" + MA _Einfahrt_PS4 : "MAntrieb_PowerSave" + MA _Nachstau1_PS4 : "MAntrieb_PowerSave" + MA _Nachstau2_PS4 : "MAntrieb_PowerSave" + MA _Ausfahrt_PS4 : "MAntrieb_PowerSave" + MA _Einfahrt_PS3 : "MAntrieb_PowerSave" + MA _Nachstau1_PS3 : "MAntrieb_PowerSave" + MA _Nachstau2_PS3 : "MAntrieb_PowerSave" + MA _Ausfahrt_PS3 : "MAntrieb_PowerSave" + MA _Einfahrt_PS2 : "MAntrieb_PowerSave" + MA _Nachstau1_PS2 : "MAntrieb_PowerSave" + MA _Nachstau2_PS2 : "MAntrieb_PowerSave" + MA _Ausfahrt_PS2 : "MAntrieb_PowerSave" + MA _Einfahrt_PS1 : "MAntrieb_PowerSave" + MA _Nachstau1_PS1 : "MAntrieb_PowerSave" + MA _Nachstau2_PS1 : "MAntrieb_PowerSave" + MA _Ausfahrt_PS1 : "MAntrieb_PowerSave" + MA _Einfahrt_MPS3 : "MAntrieb_PowerSave" + MA _Nachstau1_MPS3 : "MAntrieb_PowerSave" + MA _Nachstau2_MPS3 : "MAntrieb_PowerSave" + MA _Ausfahrt_MPS3 : "MAntrieb_PowerSave" + MA _Einfahrt_MPS2 : "MAntrieb_PowerSave" + MA _Nachstau1_MPS2 : "MAntrieb_PowerSave" + MA _Nachstau2_MPS2 : "MAntrieb_PowerSave" + MA _Ausfahrt_MPS2 : "MAntrieb_PowerSave" + MA _Einfahrt_MPS1 : "MAntrieb_PowerSave" + MA _Nachstau1_MPS1 : "MAntrieb_PowerSave" + MA _Nachstau2_MPS1 : "MAntrieb_PowerSave" + MA _Ausfahrt_MPS1 : "MAntrieb_PowerSave" diff --git a/=A01+UH06-KF00/Programmbausteine/Anlage/1_Arbeitsplätze/Basics_Arbeitsplätze/DArbeitsplätze_Sensoren.awl b/=A01+UH06-KF00/Programmbausteine/Anlage/1_Arbeitsplätze/Basics_Arbeitsplätze/DArbeitsplätze_Sensoren.awl new file mode 100644 index 0000000..5f5f80c --- /dev/null +++ b/=A01+UH06-KF00/Programmbausteine/Anlage/1_Arbeitsplätze/Basics_Arbeitsplätze/DArbeitsplätze_Sensoren.awl @@ -0,0 +1,72 @@ +=== InstanceDB 1190: DArbeitsplätze_Sensoren [DB] === +INTERFACE: + Input: + Output: + InOut: + Static: + Stau_BG3566 : "MSensoren" + Stau_BG3567 : "MSensoren" + Stau_BG3457 : "MSensoren" + Stau_BG3447 : "MSensoren" + Stau_BG3483 : "MSensoren" + Stau_BG3484 : "MSensoren" + Stau_BG3486 : "MSensoren" + Stau_BG3244 : "MSensoren" + Stau_BG3542 : "MSensoren" + Stau_Einfahrt_PS5 : "MSensoren" + Stau_nach_Einfahrt_PS5 : "MSensoren" + Stau_Platz1_PS5 : "MSensoren" + Stau_Platz2_PS5 : "MSensoren" + Stau_Platz3_PS5 : "MSensoren" + Stau_Ausfahrt_PS5 : "MSensoren" + Stau_nach_Ausfahrt_PS5 : "MSensoren" + Stau_Einfahrt_PS4 : "MSensoren" + Stau_nach_Einfahrt_PS4 : "MSensoren" + Stau_Platz1_PS4 : "MSensoren" + Stau_Platz2_PS4 : "MSensoren" + Stau_Platz3_PS4 : "MSensoren" + Stau_Ausfahrt_PS4 : "MSensoren" + Stau_nach_Ausfahrt_PS4 : "MSensoren" + Stau_Einfahrt_PS3 : "MSensoren" + Stau_nach_Einfahrt_PS3 : "MSensoren" + Stau_Platz1_PS3 : "MSensoren" + Stau_Platz2_PS3 : "MSensoren" + Stau_Platz3_PS3 : "MSensoren" + Stau_Ausfahrt_PS3 : "MSensoren" + Stau_nach_Ausfahrt_PS3 : "MSensoren" + Stau_Einfahrt_PS2 : "MSensoren" + Stau_nach_Einfahrt_PS2 : "MSensoren" + Stau_Platz1_PS2 : "MSensoren" + Stau_Platz2_PS2 : "MSensoren" + Stau_Platz3_PS2 : "MSensoren" + Stau_Ausfahrt_PS2 : "MSensoren" + Stau_nach_Ausfahrt_PS2 : "MSensoren" + Stau_Einfahrt_PS1 : "MSensoren" + Stau_nach_Einfahrt_PS1 : "MSensoren" + An_BG3383 : "MSensoren" + Stau_Platz1_PS1 : "MSensoren" + Stau_Platz2_PS1 : "MSensoren" + Stau_Platz3_PS1 : "MSensoren" + Stau_Ausfahrt_PS1 : "MSensoren" + Stau_nach_Ausfahrt_PS1 : "MSensoren" + Stau_Einfahrt_MPS3 : "MSensoren" + Stau_nach_Einfahrt_MPS3 : "MSensoren" + Stau_Platz1_MPS3 : "MSensoren" + Stau_Platz2_MPS3 : "MSensoren" + Stau_Platz3_MPS3 : "MSensoren" + Stau_Ausfahrt_MPS3 : "MSensoren" + Stau_nach_Ausfahrt_MPS3 : "MSensoren" + Stau_Einfahrt_MPS2 : "MSensoren" + Stau_nach_Einfahrt_MPS2 : "MSensoren" + Stau_Platz1_MPS2 : "MSensoren" + Stau_Platz2_MPS2 : "MSensoren" + Stau_Platz3_MPS2 : "MSensoren" + Stau_Ausfahrt_MPS2 : "MSensoren" + Stau_nach_Ausfahrt_MPS2 : "MSensoren" + Stau_Einfahrt_MPS1 : "MSensoren" + Stau_nach_Einfahrt_MPS1 : "MSensoren" + Stau_Platz1_MPS1 : "MSensoren" + Stau_Platz2_MPS1 : "MSensoren" + Stau_Platz3_MPS1 : "MSensoren" + Stau_Ausfahrt_MPS1 : "MSensoren" + Stau_nach_Ausfahrt_MPS1 : "MSensoren" diff --git a/=A01+UH06-KF00/Programmbausteine/Anlage/1_Arbeitsplätze/Basics_Arbeitsplätze/DArbeitsplätze_Zylinder.awl b/=A01+UH06-KF00/Programmbausteine/Anlage/1_Arbeitsplätze/Basics_Arbeitsplätze/DArbeitsplätze_Zylinder.awl new file mode 100644 index 0000000..a19e3e9 --- /dev/null +++ b/=A01+UH06-KF00/Programmbausteine/Anlage/1_Arbeitsplätze/Basics_Arbeitsplätze/DArbeitsplätze_Zylinder.awl @@ -0,0 +1,115 @@ +=== InstanceDB 1192: DArbeitsplätze_Zylinder [DB] === +INTERFACE: + Input: + Output: + InOut: + Static: + Schleuse_3456 : "MZylinder" + Schleuse_3481 : "MZylinder" + Weiche_3482 : "MZylinder" + Weiche_3361 : "MZylinder" + Schleuse_3487 : "MZylinder" + Schleuse_Vor_Einfahrt_PS5 : "MZylinder" + Weiche_Einfahrt_PS5 : "MZylinder" + Schleuse_Vorstau_PS5 : "MZylinder" + Weiche_zu_Platz1_PS5 : "MZylinder" + Weiche_zu_Platz2_PS5 : "MZylinder" + Schleuse_Platz1_PS5 : "MZylinder" + Schleuse_Platz2_PS5 : "MZylinder" + Schleuse_Platz3_PS5 : "MZylinder" + Weiche_von_Platz1_PS5 : "MZylinder" + Weiche_von_Platz2_PS5 : "MZylinder" + Schleuse_Ausfahrt_PS5 : "MZylinder" + Schleuse_Vor_Ausfahrt_PS5 : "MZylinder" + Weiche_Ausfahrt_PS5 : "MZylinder" + Schleuse_Vor_Einfahrt_PS4 : "MZylinder" + Weiche_Einfahrt_PS4 : "MZylinder" + Schleuse_Vorstau_PS4 : "MZylinder" + Weiche_zu_Platz1_PS4 : "MZylinder" + Weiche_zu_Platz2_PS4 : "MZylinder" + Schleuse_Platz1_PS4 : "MZylinder" + Schleuse_Platz2_PS4 : "MZylinder" + Schleuse_Platz3_PS4 : "MZylinder" + Weiche_von_Platz1_PS4 : "MZylinder" + Weiche_von_Platz2_PS4 : "MZylinder" + Schleuse_Ausfahrt_PS4 : "MZylinder" + Weiche_Ausfahrt_PS4 : "MZylinder" + Schleuse_Vor_Einfahrt_PS3 : "MZylinder" + Weiche_Einfahrt_PS3 : "MZylinder" + Schleuse_Vorstau_PS3 : "MZylinder" + Weiche_zu_Platz1_PS3 : "MZylinder" + Weiche_zu_Platz2_PS3 : "MZylinder" + Schleuse_Platz1_PS3 : "MZylinder" + Schleuse_Platz2_PS3 : "MZylinder" + Schleuse_Platz3_PS3 : "MZylinder" + Weiche_von_Platz1_PS3 : "MZylinder" + Weiche_von_Platz2_PS3 : "MZylinder" + Schleuse_Ausfahrt_PS3 : "MZylinder" + Schleuse_Vor_Ausfahrt_PS3 : "MZylinder" + Weiche_Ausfahrt_PS3 : "MZylinder" + Schleuse_Vor_Einfahrt_PS2 : "MZylinder" + Weiche_Einfahrt_PS2 : "MZylinder" + Schleuse_Vorstau_PS2 : "MZylinder" + Weiche_zu_Platz1_PS2 : "MZylinder" + Weiche_zu_Platz2_PS2 : "MZylinder" + Schleuse_Platz1_PS2 : "MZylinder" + Schleuse_Platz2_PS2 : "MZylinder" + Schleuse_Platz3_PS2 : "MZylinder" + Weiche_von_Platz1_PS2 : "MZylinder" + Weiche_von_Platz2_PS2 : "MZylinder" + Schleuse_Ausfahrt_PS2 : "MZylinder" + Weiche_Ausfahrt_PS2 : "MZylinder" + Schleuse_Vor_Einfahrt_PS1 : "MZylinder" + Weiche_Einfahrt_PS1 : "MZylinder" + Schleuse_Vorstau_PS1 : "MZylinder" + Weiche_zu_Platz1_PS1 : "MZylinder" + Weiche_zu_Platz2_PS1 : "MZylinder" + Schleuse_Platz1_PS1 : "MZylinder" + Schleuse_Platz2_PS1 : "MZylinder" + Schleuse_Platz3_PS1 : "MZylinder" + Weiche_von_Platz1_PS1 : "MZylinder" + Weiche_von_Platz2_PS1 : "MZylinder" + Schleuse_Ausfahrt_PS1 : "MZylinder" + Schleuse_Vor_Ausfahrt_PS1 : "MZylinder" + Weiche_Ausfahrt_PS1 : "MZylinder" + Schleuse_Vor_Einfahrt_MPS3 : "MZylinder" + Weiche_Einfahrt_MPS3 : "MZylinder" + Schleuse_Vorstau_MPS3 : "MZylinder" + Weiche_zu_Platz1_MPS3 : "MZylinder" + Weiche_zu_Platz2_MPS3 : "MZylinder" + Schleuse_Platz1_MPS3 : "MZylinder" + Schleuse_Platz2_MPS3 : "MZylinder" + Schleuse_Platz3_MPS3 : "MZylinder" + Weiche_von_Platz1_MPS3 : "MZylinder" + Weiche_von_Platz2_MPS3 : "MZylinder" + Schleuse_Ausfahrt_MPS3 : "MZylinder" + Schleuse_Vor_Ausfahrt_MPS3 : "MZylinder" + Weiche_Ausfahrt_MPS3 : "MZylinder" + Schleuse_Vor_Einfahrt_MPS2 : "MZylinder" + Weiche_Einfahrt_MPS2 : "MZylinder" + Schleuse_Vorstau_MPS2 : "MZylinder" + Weiche_zu_Platz1_MPS2 : "MZylinder" + Weiche_zu_Platz2_MPS2 : "MZylinder" + Schleuse_Platz1_MPS2 : "MZylinder" + Schleuse_Platz2_MPS2 : "MZylinder" + Schleuse_Platz3_MPS2 : "MZylinder" + Weiche_von_Platz1_MPS2 : "MZylinder" + Weiche_von_Platz2_MPS2 : "MZylinder" + Schleuse_Ausfahrt_MPS2 : "MZylinder" + Schleuse_Vor_Ausfahrt_MPS2 : "MZylinder" + Weiche_Ausfahrt_MPS2 : "MZylinder" + Schleuse_Vor_Einfahrt_MPS1 : "MZylinder" + Weiche_Einfahrt_MPS1 : "MZylinder" + Schleuse_Vorstau_MPS1 : "MZylinder" + Weiche_zu_Platz1_MPS1 : "MZylinder" + Weiche_zu_Platz2_MPS1 : "MZylinder" + Schleuse_Platz1_MPS1 : "MZylinder" + Schleuse_Platz2_MPS1 : "MZylinder" + Schleuse_Platz3_MPS1 : "MZylinder" + Weiche_von_Platz1_MPS1 : "MZylinder" + Weiche_von_Platz2_MPS1 : "MZylinder" + Schleuse_Ausfahrt_MPS1 : "MZylinder" + Schleuse_Vor_Ausfahrt_MPS1 : "MZylinder" + Weiche_Ausfahrt_MPS1 : "MZylinder" + Schleuse_3540 : "MZylinder" + Schleuse_3543 : "MZylinder" diff --git a/=A01+UH06-KF00/Programmbausteine/Anlage/1_Arbeitsplätze/Omnifahren_Arbeitsplätze/Abführung_OmniFahren.awl b/=A01+UH06-KF00/Programmbausteine/Anlage/1_Arbeitsplätze/Omnifahren_Arbeitsplätze/Abführung_OmniFahren.awl new file mode 100644 index 0000000..19bf6f1 --- /dev/null +++ b/=A01+UH06-KF00/Programmbausteine/Anlage/1_Arbeitsplätze/Omnifahren_Arbeitsplätze/Abführung_OmniFahren.awl @@ -0,0 +1,66 @@ +=== FB 1129: Abführung_OmniFahren [STL] === +INTERFACE: + Input: + Output: + InOut: + Static: + Schleuse_3540 : "MHMOmniSchleuse" + Schleuse_3543 : "MHMOmniSchleuse" + Temp: + ErrQuit : Bool + ErrAnz : Bool + Stau_raus : Bool + Start_ok : Bool + B_aktiv : Bool + B_AusSchleuse : Bool + Antrieb_aktiv : Bool + Antrieb_start : Bool + Antrieb_stop : Bool + Fahren_Ok : Bool + Constant: + +--- NW 1: Systemzeug --- +// Abführ-Bereich: + A "DAMR_Bereich".A01_UH06.AnlageEin + = Schleuse_3540.Dyn.Sk.Auto_akt + = Schleuse_3543.Dyn.Sk.Auto_akt + + AN "DAMR_Bereich".A01_UH06.BereichErr + = Schleuse_3540.Dyn.Sk.Bereich_ok + = Schleuse_3543.Dyn.Sk.Bereich_ok + + +--- NW 2: Störungen quittieren --- + A "DAMR_Bereich".A01_UH06.StOk_aktiv + = ErrQuit + + +--- NW 3: Schleuse hinter MPS1 --- +CALL FB "None" , (Schleusen_Nr:=3540, ErrQuit:=ErrQuit, B_VorSchleuse:="BG3541", B_InSchleuse:="BG3540", B_AusSchleuse:="BG3542", B_Stau_raus:="DArbeitsplätze_Sensoren".Stau_BG3542.Stat.B_Akt, Start_Ok:=1, Antrieb_Schleuse_aktiv:="MA0112", Antrieb_plus_aktiv:="MA0112", Schleuse_geöffnet:="MB3540", RestZeit_Bereich_plus:=?, Y_Schleuse_Auf:="DArbeitsplätze_Zylinder".Schleuse_3540.Stat.Ast, Error:=DB608.DBW350, Antrieb_Schleuse_vor:="DArbeitsplätze_Antriebe".MA0112.Stat.A_vor, Antrieb_Schleuse_start:="DArbeitsplätze_Antriebe".MA0112.Stat.A_start, Antrieb_Schleuse_stop:="DArbeitsplätze_Antriebe".MA0112.Stat.Stop_vor, Antrieb_Schleuse_PS:="DArbeitsplätze_Antriebe".MA0112.Stat.A_PS, Antrieb_plus_vor:=?, Antrieb_plus_start:=?, hStOk:=ErrAnz) + + +--- NW 4: Schleuse vor BST 4 --- + AN "6_HMI_Err_UH06_AMR".System.Gesamt_Feueralarm + AN "6_HMI_Err_UH06_AMR".System.BST4_Feueralarm + AN "6_HMI_Err_UH06_AMR".System.BST4_Geschlossen + AN "6_HMI_Err_UH06_AMR".System."BST4_Störung" + A "DHWtoOB_OmniFahren".Schleuse_3546.Dyn.Sk.Bereich_ok +// / UN #Trolleys_starten.Wartezeit_aktiv //Neu: Vor AFS runter + = Fahren_Ok + + A "DHWtoOB_Sensoren".Stau_BG3570.Stat.B_Akt + O "DHWtoOB_Sensoren".Stau_BG3544.Stat.B_Akt + = Stau_raus + +CALL FB "None" , (Schleusen_Nr:=3543, ErrQuit:=ErrQuit, B_VorSchleuse:="BG3542", B_InSchleuse:="BG3543", B_AusSchleuse:="BG3570", B_Stau_raus:=Stau_raus, Start_Ok:=Fahren_Ok, Antrieb_Schleuse_aktiv:="MA0112", Antrieb_plus_aktiv:="MA0113", Schleuse_geöffnet:="MB3543", RestZeit_Bereich_plus:=?, Y_Schleuse_Auf:="DArbeitsplätze_Zylinder".Schleuse_3543.Stat.Ast, Error:=DB608.DBW352, Antrieb_Schleuse_vor:="DArbeitsplätze_Antriebe".MA0112.Stat.A_vor, Antrieb_Schleuse_start:="DArbeitsplätze_Antriebe".MA0112.Stat.A_start, Antrieb_Schleuse_stop:="DArbeitsplätze_Antriebe".MA0112.Stat.Stop_vor, Antrieb_Schleuse_PS:="DArbeitsplätze_Antriebe".MA0112.Stat.A_PS, Antrieb_plus_vor:="DHWtoOB_Antriebe".MA0113.Stat.A_vor, Antrieb_plus_start:="DHWtoOB_Antriebe".MA0113.Stat.A_start, hStOk:=ErrAnz) + + +--- NW 5: Störungen anzeigen --- + A ErrAnz + R ErrAnz + S "DAMR_Bereich".A01_UH06.StOk_blinken + + +--- NW 6: Ende --- + BE + diff --git a/=A01+UH06-KF00/Programmbausteine/Anlage/1_Arbeitsplätze/Omnifahren_Arbeitsplätze/Arbeitsplatz_Draussen_FC.awl b/=A01+UH06-KF00/Programmbausteine/Anlage/1_Arbeitsplätze/Omnifahren_Arbeitsplätze/Arbeitsplatz_Draussen_FC.awl new file mode 100644 index 0000000..e4be52a --- /dev/null +++ b/=A01+UH06-KF00/Programmbausteine/Anlage/1_Arbeitsplätze/Omnifahren_Arbeitsplätze/Arbeitsplatz_Draussen_FC.awl @@ -0,0 +1,202 @@ +=== FC 1182: Arbeitsplatz_Draussen_FC [STL] === +INTERFACE: + Input: + Output: + InOut: + Temp: + Position : Int + WeichenZiel : Int + Constant: + Return: + Ret_Val : Void + +--- NW 1: Rückmeldung --- + SET // Rückmeldungen erst mal resetten + R "M180.6" // Weiterfahrt von Ziel-FC erlaubt + + +--- NW 2: Schleuse 3481: Ausgefahren ? (Einfahrt 180 Grad-ByPass) --- + L "MW190" + L 3481 // Aufruf von Schleuse XXXX? + <>I // Nein! + JC Vor_ByPassE + +// Trolley am Arbeitsplatz reservieren: +CALL FC "Reservierung_in_Arbeitsplatz_eintragen" (TrolleyID:="DZuführung_OmniFahren".Schleuse_3481.Dyn.TrolleyID_Schleuse, Ziel:="DZuführung_OmniFahren".Schleuse_3481.Dyn.Trolley_EndZiel, Standort:=w#3481, Gesamt_Trolley_DL:=1000) + +// Trolley an Arbeitsplatz übergeben: +CALL FC "Trolley_in_Arbeitsplatz_eingefahren" (TrolleyID:="DZuführung_OmniFahren".Schleuse_3481.Dyn.TrolleyID_Schleuse, Ziel:="DZuführung_OmniFahren".Schleuse_3481.Dyn.Trolley_EndZiel, AusfahrZiel:=16#B300, Gesamt_Trolley_DL:=1000) + + BEU + +Vor_ByPassE: NOP 0 + + +--- NW 3: Schleuse 3241: Ausgefahren ? (Einfahrt PS5) --- + L "MW190" + L 3241 // Aufruf von Schleuse XXXX? + <>I // Nein! + JC PS5E + +// Trolley am Arbeitsplatz reservieren: +CALL FC "Reservierung_in_Arbeitsplatz_eintragen" (TrolleyID:="DPS5_OmniFahren".Schleuse_vor_Einfahrt.Dyn.TrolleyID_Schleuse, Ziel:="DPS5_OmniFahren".Schleuse_vor_Einfahrt.Dyn.Trolley_EndZiel, Standort:=16#3250, Gesamt_Trolley_DL:=1000) + +// Trolley an Arbeitsplatz übergeben: +CALL FC "Trolley_in_Arbeitsplatz_eingefahren" (TrolleyID:="DPS5_OmniFahren".Schleuse_vor_Einfahrt.Dyn.TrolleyID_Schleuse, Ziel:="DPS5_OmniFahren".Schleuse_vor_Einfahrt.Dyn.Trolley_EndZiel, AusfahrZiel:=16#A500, Gesamt_Trolley_DL:=1000) + + BEU + +PS5E: NOP 0 + + +--- NW 4: Schleuse 3271: Ausgefahren ? (Einfahrt PS4) --- + L "MW190" + L 3271 // Aufruf von Schleuse XXXX? + <>I // Nein! + JC PS4E + +// /Trolley an Arbeitsplatz übergeben: +CALL FC "Trolley_in_Arbeitsplatz_eingefahren" (TrolleyID:="DPS4_OmniFahren".Schleuse_vor_Einfahrt.Dyn.TrolleyID_Schleuse, Ziel:="DPS4_OmniFahren".Schleuse_vor_Einfahrt.Dyn.Trolley_EndZiel, AusfahrZiel:=16#A400, Gesamt_Trolley_DL:=1000) + + BEU + +PS4E: NOP 0 + + +--- NW 5: Schleuse 3293: Ausgefahren ? (Einfahrt PS3) --- + L "MW190" + L 3293 // Aufruf von Schleuse XXXX? + <>I // Nein! + JC PS3E + +// /Trolley an Arbeitsplatz übergeben: +CALL FC "Trolley_in_Arbeitsplatz_eingefahren" (TrolleyID:="DPS3_OmniFahren".Schleuse_vor_Einfahrt.Dyn.TrolleyID_Schleuse, Ziel:="DPS3_OmniFahren".Schleuse_vor_Einfahrt.Dyn.Trolley_EndZiel, AusfahrZiel:=16#A300, Gesamt_Trolley_DL:=1000) + + BEU + +PS3E: NOP 0 + + +--- NW 6: Schleuse 3331: Ausgefahren ? (Einfahrt PS2) --- + L "MW190" + L 3331 // Aufruf von Schleuse XXXX? + <>I // Nein! + JC PS2E + +// /Trolley an Arbeitsplatz übergeben: +CALL FC "Trolley_in_Arbeitsplatz_eingefahren" (TrolleyID:="DPS2_OmniFahren".Schleuse_vor_Einfahrt.Dyn.TrolleyID_Schleuse, Ziel:="DPS2_OmniFahren".Schleuse_vor_Einfahrt.Dyn.Trolley_EndZiel, AusfahrZiel:=16#A200, Gesamt_Trolley_DL:=1000) + + BEU + +PS2E: NOP 0 + + +--- NW 7: Schleuse 3353: Ausgefahren ? (Einfahrt PS1) --- + L "MW190" + L 3353 // Aufruf von Schleuse XXXX? + <>I // Nein! + JC PS1E + +// /Trolley an Arbeitsplatz übergeben: +CALL FC "Trolley_in_Arbeitsplatz_eingefahren" (TrolleyID:="DPS1_OmniFahren".Schleuse_vor_Einfahrt.Dyn.TrolleyID_Schleuse, Ziel:="DPS1_OmniFahren".Schleuse_vor_Einfahrt.Dyn.Trolley_EndZiel, AusfahrZiel:=16#A100, Gesamt_Trolley_DL:=1000) + + BEU + +PS1E: NOP 0 + + +--- NW 8: Schleuse 3390: Ausgefahren ? (Einfahrt MPS3) --- + L "MW190" + L 3390 // Aufruf von Schleuse XXXX? + <>I // Nein! + JC MPS3E + +// /Trolley an Arbeitsplatz übergeben: +CALL FC "Trolley_in_Arbeitsplatz_eingefahren" (TrolleyID:="DMPS3_OmniFahren".Schleuse_vor_Einfahrt.Dyn.TrolleyID_Schleuse, Ziel:="DMPS3_OmniFahren".Schleuse_vor_Einfahrt.Dyn.Trolley_EndZiel, AusfahrZiel:=16#B300, Gesamt_Trolley_DL:=1000) + + BEU + +MPS3E: NOP 0 + + +--- NW 9: Schleuse 3421: Ausgefahren ? (Einfahrt MPS2) --- + L "MW190" + L 3421 // Aufruf von Schleuse XXXX? + <>I // Nein! + JC MPS2E + +// /Trolley an Arbeitsplatz übergeben: +CALL FC "Trolley_in_Arbeitsplatz_eingefahren" (TrolleyID:="DMPS2_OmniFahren".Schleuse_vor_Einfahrt.Dyn.TrolleyID_Schleuse, Ziel:="DMPS2_OmniFahren".Schleuse_vor_Einfahrt.Dyn.Trolley_EndZiel, AusfahrZiel:=16#B200, Gesamt_Trolley_DL:=1000) + + BEU + +MPS2E: NOP 0 + + +--- NW 10: Schleuse 3450: Ausgefahren ? (Einfahrt MPS1) --- + L "MW190" + L 3450 // Aufruf von Schleuse XXXX? + <>I // Nein! + JC MPS1E + +// /Trolley an Arbeitsplatz übergeben: +CALL FC "Trolley_in_Arbeitsplatz_eingefahren" (TrolleyID:="DMPS1_OmniFahren".Schleuse_vor_Einfahrt.Dyn.TrolleyID_Schleuse, Ziel:="DMPS1_OmniFahren".Schleuse_vor_Einfahrt.Dyn.Trolley_EndZiel, AusfahrZiel:=16#B100, Gesamt_Trolley_DL:=1000) + + L "DMPS1_OmniFahren".Schleuse_vor_Einfahrt.Dyn.Weichen_Ziel + L 16#3451 // Gerade ? Also zum OB-Bereich? + <>I // Nein ! + BEC + +// Trolleydaten in DB1000 löschen, da in AMR fährt und danach kein Leser mehr! +CALL FC "Trolleydaten_löschen" (Gesamt_Trolley_DL:=1000, TrolleyID:="DMPS1_OmniFahren".Schleuse_vor_Einfahrt.Dyn.TrolleyID_Schleuse) + + BEU + +MPS1E: NOP 0 + + +--- NW 11: Schleuse 3455: Ausgefahren ? (Platz1 MPS1) --- + L "MW190" + L 3455 // Aufruf von Schleuse XXXX? + <>I // Nein! + JC MPS1P1E + +// Trolleydaten in DB1000 löschen, da in AMR fährt und danach kein Leser mehr! +CALL FC "Trolleydaten_löschen" (Gesamt_Trolley_DL:=1000, TrolleyID:="DMPS1_OmniFahren".Schleuse_Platz_1.Dyn.TrolleyID_Schleuse) + + BEU + +MPS1P1E: NOP 0 + + +--- NW 12: Schleuse 3461: Ausgefahren ? (Platz2 MPS1) --- + L "MW190" + L 3461 // Aufruf von Schleuse XXXX? + <>I // Nein! + JC MPS1P2E + +// Trolleydaten in DB1000 löschen, da in AMR fährt und danach kein Leser mehr! +CALL FC "Trolleydaten_löschen" (Gesamt_Trolley_DL:=1000, TrolleyID:="DMPS1_OmniFahren".Schleuse_Platz_2.Dyn.TrolleyID_Schleuse) + + BEU + +MPS1P2E: NOP 0 + + +--- NW 13: Schleuse 3465: Ausgefahren ? (Platz3 MPS1) --- + L "MW190" + L 3465 // Aufruf von Schleuse XXXX? + <>I // Nein! + JC MPS1P3E + +// Trolleydaten in DB1000 löschen, da in AMR fährt und danach kein Leser mehr! +CALL FC "Trolleydaten_löschen" (Gesamt_Trolley_DL:=1000, TrolleyID:="DMPS1_OmniFahren".Schleuse_Platz_3.Dyn.TrolleyID_Schleuse) + + BEU + +MPS1P3E: NOP 0 + + +--- NW 14: Ende --- + BE + diff --git a/=A01+UH06-KF00/Programmbausteine/Anlage/1_Arbeitsplätze/Omnifahren_Arbeitsplätze/Arbeitsplatz_Leser_FC.awl b/=A01+UH06-KF00/Programmbausteine/Anlage/1_Arbeitsplätze/Omnifahren_Arbeitsplätze/Arbeitsplatz_Leser_FC.awl new file mode 100644 index 0000000..0e172a9 --- /dev/null +++ b/=A01+UH06-KF00/Programmbausteine/Anlage/1_Arbeitsplätze/Omnifahren_Arbeitsplätze/Arbeitsplatz_Leser_FC.awl @@ -0,0 +1,910 @@ +=== FC 1180: Arbeitsplatz_Leser_FC [STL] === +INTERFACE: + Input: + Output: + InOut: + Temp: + Zielebene : Word + Constant: + Return: + Ret_Val : Void + +--- NW 1: Rückmeldung --- +// Keine + L 0 // Evtl. Zwischenziel (MW196) + T "MW196" + + +--- NW 2: Schleuse 3481: (Vor 180 Grad-ByPass) --- + L "MW190" + L 3481 // Aufruf von Schleuse XXXX? + <>I // Nein! + JC E3481 + + AN "M180.0" // Lesefehler + JC Y3481 + BEU + +Y3481: AN "M180.1" // unbekannt in TrolleysDL + BEC + +// Daten in Datenbank neu anlegen: + L "DZuführung_OmniFahren".Schleuse_3481.Dyn.TrolleyID_Schleuse + L DINT#0 // ID bekannt? + ==D // Nein + BEC + +CALL FC "Trolleydaten_neu_anlegen" (Gesamt_Trolley_DL:="DZuführung_OmniFahren".Schleuse_3481.Schleuse.Gesamt_Trolley_DL, TrolleyID:="DZuführung_OmniFahren".Schleuse_3481.Dyn.TrolleyID_Schleuse, Endziel:=16#0000, ShopGroup:=DINT#0) + + BEU + +E3481: NOP 0 + + +--- NW 3: Schleuse 3241: (Vor Einfahrt PS5) --- + L "MW190" + L 3241 // Aufruf von Schleuse XXXX? + <>I // Nein! + JC PS5E + + AN "M180.0" // Lesefehler + JC YPS5 + + BEU + +YPS5: AN "M180.1" // unbekannt in TrolleysDL + BEC + +// Daten in Datenbank neu anlegen: + L "DPS5_OmniFahren".Schleuse_vor_Einfahrt.Dyn.TrolleyID_Schleuse + L DINT#0 // ID bekannt? + ==D // Nein + BEC + +CALL FC "Trolleydaten_neu_anlegen" (Gesamt_Trolley_DL:="DPS5_OmniFahren".Schleuse_vor_Einfahrt.Schleuse.Gesamt_Trolley_DL, TrolleyID:="DPS5_OmniFahren".Schleuse_vor_Einfahrt.Dyn.TrolleyID_Schleuse, Endziel:=16#0000, ShopGroup:=DINT#0) + + BEU + +PS5E: NOP 0 + + +--- NW 4: Schleuse 3245: (ABP1/PS5) --- + L "MW190" + L 3245 // Aufruf von Schleuse XXXX? + <>I // Nein! + JC PS5A1 + + AN "M180.0" // Lesefehler + JC YPS5A1 + + BEU + +YPS5A1: AN "M180.1" // unbekannt in TrolleysDL + BEC + +// Daten in Datenbank neu anlegen: + L "DPS5_OmniFahren".Schleuse_Platz_1.Dyn.TrolleyID_Schleuse + L DINT#0 // ID bekannt? + ==D // Nein + BEC + +CALL FC "Trolleydaten_neu_anlegen" (Gesamt_Trolley_DL:="DPS5_OmniFahren".Schleuse_Platz_1.Schleuse.Gesamt_Trolley_DL, TrolleyID:="DPS5_OmniFahren".Schleuse_Platz_1.Dyn.TrolleyID_Schleuse, Endziel:=16#0000, ShopGroup:=DINT#0) + + BEU + +PS5A1: NOP 0 + + +--- NW 5: Schleuse 3251: (ABP2/PS5) --- + L "MW190" + L 3251 // Aufruf von Schleuse XXXX? + <>I // Nein! + JC PS5A2 + + AN "M180.0" // Lesefehler + JC YPS5A2 + + BEU + +YPS5A2: AN "M180.1" // unbekannt in TrolleysDL + BEC + +// Daten in Datenbank neu anlegen: + L "DPS5_OmniFahren".Schleuse_Platz_2.Dyn.TrolleyID_Schleuse + L DINT#0 // ID bekannt? + ==D // Nein + BEC + +CALL FC "Trolleydaten_neu_anlegen" (Gesamt_Trolley_DL:="DPS5_OmniFahren".Schleuse_Platz_2.Schleuse.Gesamt_Trolley_DL, TrolleyID:="DPS5_OmniFahren".Schleuse_Platz_2.Dyn.TrolleyID_Schleuse, Endziel:=16#0000, ShopGroup:=DINT#0) + + BEU + +PS5A2: NOP 0 + + +--- NW 6: Schleuse 3255: (ABP3/PS5) --- + L "MW190" + L 3255 // Aufruf von Schleuse XXXX? + <>I // Nein! + JC PS5A3 + + AN "M180.0" // Lesefehler + JC YPS5A3 + + BEU + +YPS5A3: AN "M180.1" // unbekannt in TrolleysDL + BEC + +// Daten in Datenbank neu anlegen: + L "DPS5_OmniFahren".Schleuse_Platz_3.Dyn.TrolleyID_Schleuse + L DINT#0 // ID bekannt? + ==D // Nein + BEC + +CALL FC "Trolleydaten_neu_anlegen" (Gesamt_Trolley_DL:="DPS5_OmniFahren".Schleuse_Platz_3.Schleuse.Gesamt_Trolley_DL, TrolleyID:="DPS5_OmniFahren".Schleuse_Platz_3.Dyn.TrolleyID_Schleuse, Endziel:=16#0000, ShopGroup:=DINT#0) + + BEU + +PS5A3: NOP 0 + + +--- NW 7: Schleuse 3271: (Vor Einfahrt PS4) --- + L "MW190" + L 3271 // Aufruf von Schleuse XXXX? + <>I // Nein! + JC PS4E + + AN "M180.0" // Lesefehler + JC YPS4 + + BEU + +YPS4: AN "M180.1" // unbekannt in TrolleysDL + BEC + +// Daten in Datenbank neu anlegen: + L "DPS4_OmniFahren".Schleuse_vor_Einfahrt.Dyn.TrolleyID_Schleuse + L DINT#0 // ID bekannt? + ==D // Nein + BEC + +CALL FC "Trolleydaten_neu_anlegen" (Gesamt_Trolley_DL:="DPS4_OmniFahren".Schleuse_vor_Einfahrt.Schleuse.Gesamt_Trolley_DL, TrolleyID:="DPS4_OmniFahren".Schleuse_vor_Einfahrt.Dyn.TrolleyID_Schleuse, Endziel:=16#0000, ShopGroup:=DINT#0) + + BEU + +PS4E: NOP 0 + + +--- NW 8: Schleuse 3275: (ABP1/PS4) --- + L "MW190" + L 3275 // Aufruf von Schleuse XXXX? + <>I // Nein! + JC PS4A1 + + AN "M180.0" // Lesefehler + JC YPS4A1 + + BEU + +YPS4A1: AN "M180.1" // unbekannt in TrolleysDL + BEC + +// Daten in Datenbank neu anlegen: + L "DPS4_OmniFahren".Schleuse_Platz_1.Dyn.TrolleyID_Schleuse + L DINT#0 // ID bekannt? + ==D // Nein + BEC + +CALL FC "Trolleydaten_neu_anlegen" (Gesamt_Trolley_DL:="DPS4_OmniFahren".Schleuse_Platz_1.Schleuse.Gesamt_Trolley_DL, TrolleyID:="DPS4_OmniFahren".Schleuse_Platz_1.Dyn.TrolleyID_Schleuse, Endziel:=16#0000, ShopGroup:=DINT#0) + + BEU + +PS4A1: NOP 0 + + +--- NW 9: Schleuse 3281: (ABP2/PS4) --- + L "MW190" + L 3281 // Aufruf von Schleuse XXXX? + <>I // Nein! + JC PS4A2 + + AN "M180.0" // Lesefehler + JC YPS4A2 + + BEU + +YPS4A2: AN "M180.1" // unbekannt in TrolleysDL + BEC + +// Daten in Datenbank neu anlegen: + L "DPS4_OmniFahren".Schleuse_Platz_2.Dyn.TrolleyID_Schleuse + L DINT#0 // ID bekannt? + ==D // Nein + BEC + +CALL FC "Trolleydaten_neu_anlegen" (Gesamt_Trolley_DL:="DPS4_OmniFahren".Schleuse_Platz_2.Schleuse.Gesamt_Trolley_DL, TrolleyID:="DPS4_OmniFahren".Schleuse_Platz_2.Dyn.TrolleyID_Schleuse, Endziel:=16#0000, ShopGroup:=DINT#0) + + BEU + +PS4A2: NOP 0 + + +--- NW 10: Schleuse 3285: (ABP3/PS4) --- + L "MW190" + L 3285 // Aufruf von Schleuse XXXX? + <>I // Nein! + JC PS4A3 + + AN "M180.0" // Lesefehler + JC YPS4A3 + + BEU + +YPS4A3: AN "M180.1" // unbekannt in TrolleysDL + BEC + +// Daten in Datenbank neu anlegen: + L "DPS4_OmniFahren".Schleuse_Platz_3.Dyn.TrolleyID_Schleuse + L DINT#0 // ID bekannt? + ==D // Nein + BEC + +CALL FC "Trolleydaten_neu_anlegen" (Gesamt_Trolley_DL:="DPS4_OmniFahren".Schleuse_Platz_3.Schleuse.Gesamt_Trolley_DL, TrolleyID:="DPS4_OmniFahren".Schleuse_Platz_3.Dyn.TrolleyID_Schleuse, Endziel:=16#0000, ShopGroup:=DINT#0) + + BEU + +PS4A3: NOP 0 + + +--- NW 11: Schleuse 3293: (Vor Einfahrt PS3) --- + L "MW190" + L 3293 // Aufruf von Schleuse XXXX? + <>I // Nein! + JC PS3E + + AN "M180.0" // Lesefehler + JC YPS3 + + BEU + +YPS3: AN "M180.1" // unbekannt in TrolleysDL + BEC + +// Daten in Datenbank neu anlegen: + L "DPS3_OmniFahren".Schleuse_vor_Einfahrt.Dyn.TrolleyID_Schleuse + L DINT#0 // ID bekannt? + ==D // Nein + BEC + +CALL FC "Trolleydaten_neu_anlegen" (Gesamt_Trolley_DL:="DPS3_OmniFahren".Schleuse_vor_Einfahrt.Schleuse.Gesamt_Trolley_DL, TrolleyID:="DPS3_OmniFahren".Schleuse_vor_Einfahrt.Dyn.TrolleyID_Schleuse, Endziel:=16#0000, ShopGroup:=DINT#0) + + BEU + +PS3E: NOP 0 + + +--- NW 12: Schleuse 3305: (ABP1/PS3) --- + L "MW190" + L 3305 // Aufruf von Schleuse XXXX? + <>I // Nein! + JC PS3A1 + + AN "M180.0" // Lesefehler + JC YPS3A1 + + BEU + +YPS3A1: AN "M180.1" // unbekannt in TrolleysDL + BEC + +// Daten in Datenbank neu anlegen: + L "DPS3_OmniFahren".Schleuse_Platz_1.Dyn.TrolleyID_Schleuse + L DINT#0 // ID bekannt? + ==D // Nein + BEC + +CALL FC "Trolleydaten_neu_anlegen" (Gesamt_Trolley_DL:="DPS3_OmniFahren".Schleuse_Platz_1.Schleuse.Gesamt_Trolley_DL, TrolleyID:="DPS3_OmniFahren".Schleuse_Platz_1.Dyn.TrolleyID_Schleuse, Endziel:=16#0000, ShopGroup:=DINT#0) + + BEU + +PS3A1: NOP 0 + + +--- NW 13: Schleuse 3311: (ABP2/PS3) --- + L "MW190" + L 3311 // Aufruf von Schleuse XXXX? + <>I // Nein! + JC PS3A2 + + AN "M180.0" // Lesefehler + JC YPS3A2 + + BEU + +YPS3A2: AN "M180.1" // unbekannt in TrolleysDL + BEC + +// Daten in Datenbank neu anlegen: + L "DPS3_OmniFahren".Schleuse_Platz_2.Dyn.TrolleyID_Schleuse + L DINT#0 // ID bekannt? + ==D // Nein + BEC + +CALL FC "Trolleydaten_neu_anlegen" (Gesamt_Trolley_DL:="DPS3_OmniFahren".Schleuse_Platz_2.Schleuse.Gesamt_Trolley_DL, TrolleyID:="DPS3_OmniFahren".Schleuse_Platz_2.Dyn.TrolleyID_Schleuse, Endziel:=16#0000, ShopGroup:=DINT#0) + + BEU + +PS3A2: NOP 0 + + +--- NW 14: Schleuse 3315: (ABP3/PS3) --- + L "MW190" + L 3315 // Aufruf von Schleuse XXXX? + <>I // Nein! + JC PS3A3 + + AN "M180.0" // Lesefehler + JC YPS3A3 + + BEU + +YPS3A3: AN "M180.1" // unbekannt in TrolleysDL + BEC + +// Daten in Datenbank neu anlegen: + L "DPS3_OmniFahren".Schleuse_Platz_3.Dyn.TrolleyID_Schleuse + L DINT#0 // ID bekannt? + ==D // Nein + BEC + +CALL FC "Trolleydaten_neu_anlegen" (Gesamt_Trolley_DL:="DPS3_OmniFahren".Schleuse_Platz_3.Schleuse.Gesamt_Trolley_DL, TrolleyID:="DPS3_OmniFahren".Schleuse_Platz_3.Dyn.TrolleyID_Schleuse, Endziel:=16#0000, ShopGroup:=DINT#0) + + BEU + +PS3A3: NOP 0 + + +--- NW 15: Schleuse 3331: (Vor Einfahrt PS2) --- + L "MW190" + L 3331 // Aufruf von Schleuse XXXX? + <>I // Nein! + JC PS2E + + AN "M180.0" // Lesefehler + JC YPS2 + + BEU + +YPS2: AN "M180.1" // unbekannt in TrolleysDL + BEC + +// Daten in Datenbank neu anlegen: + L "DPS2_OmniFahren".Schleuse_vor_Einfahrt.Dyn.TrolleyID_Schleuse + L DINT#0 // ID bekannt? + ==D // Nein + BEC + +CALL FC "Trolleydaten_neu_anlegen" (Gesamt_Trolley_DL:="DPS2_OmniFahren".Schleuse_vor_Einfahrt.Schleuse.Gesamt_Trolley_DL, TrolleyID:="DPS2_OmniFahren".Schleuse_vor_Einfahrt.Dyn.TrolleyID_Schleuse, Endziel:=16#0000, ShopGroup:=DINT#0) + + BEU + +PS2E: NOP 0 + + +--- NW 16: Schleuse 3335: (ABP1/PS2) --- + L "MW190" + L 3335 // Aufruf von Schleuse XXXX? + <>I // Nein! + JC PS2A1 + + AN "M180.0" // Lesefehler + JC YPS2A1 + + BEU + +YPS2A1: AN "M180.1" // unbekannt in TrolleysDL + BEC + +// Daten in Datenbank neu anlegen: + L "DPS2_OmniFahren".Schleuse_Platz_1.Dyn.TrolleyID_Schleuse + L DINT#0 // ID bekannt? + ==D // Nein + BEC + +CALL FC "Trolleydaten_neu_anlegen" (Gesamt_Trolley_DL:="DPS2_OmniFahren".Schleuse_Platz_1.Schleuse.Gesamt_Trolley_DL, TrolleyID:="DPS2_OmniFahren".Schleuse_Platz_1.Dyn.TrolleyID_Schleuse, Endziel:=16#0000, ShopGroup:=DINT#0) + + BEU + +PS2A1: NOP 0 + + +--- NW 17: Schleuse 3341: (ABP2/PS2) --- + L "MW190" + L 3341 // Aufruf von Schleuse XXXX? + <>I // Nein! + JC PS2A2 + + AN "M180.0" // Lesefehler + JC YPS2A2 + + BEU + +YPS2A2: AN "M180.1" // unbekannt in TrolleysDL + BEC + +// Daten in Datenbank neu anlegen: + L "DPS2_OmniFahren".Schleuse_Platz_2.Dyn.TrolleyID_Schleuse + L DINT#0 // ID bekannt? + ==D // Nein + BEC + +CALL FC "Trolleydaten_neu_anlegen" (Gesamt_Trolley_DL:="DPS2_OmniFahren".Schleuse_Platz_2.Schleuse.Gesamt_Trolley_DL, TrolleyID:="DPS2_OmniFahren".Schleuse_Platz_2.Dyn.TrolleyID_Schleuse, Endziel:=16#0000, ShopGroup:=DINT#0) + + BEU + +PS2A2: NOP 0 + + +--- NW 18: Schleuse 3345: (ABP3/PS2) --- + L "MW190" + L 3345 // Aufruf von Schleuse XXXX? + <>I // Nein! + JC PS2A3 + + AN "M180.0" // Lesefehler + JC YPS2A3 + + BEU + +YPS2A3: AN "M180.1" // unbekannt in TrolleysDL + BEC + +// Daten in Datenbank neu anlegen: + L "DPS2_OmniFahren".Schleuse_Platz_3.Dyn.TrolleyID_Schleuse + L DINT#0 // ID bekannt? + ==D // Nein + BEC + +CALL FC "Trolleydaten_neu_anlegen" (Gesamt_Trolley_DL:="DPS2_OmniFahren".Schleuse_Platz_3.Schleuse.Gesamt_Trolley_DL, TrolleyID:="DPS2_OmniFahren".Schleuse_Platz_3.Dyn.TrolleyID_Schleuse, Endziel:=16#0000, ShopGroup:=DINT#0) + + BEU + +PS2A3: NOP 0 + + +--- NW 19: Schleuse 3353: (Vor Einfahrt PS1) --- + L "MW190" + L 3353 // Aufruf von Schleuse XXXX? + <>I // Nein! + JC PS1E + + AN "M180.0" // Lesefehler + JC YPS1 + + BEU + +YPS1: AN "M180.1" // unbekannt in TrolleysDL + BEC + +// Daten in Datenbank neu anlegen: + L "DPS1_OmniFahren".Schleuse_vor_Einfahrt.Dyn.TrolleyID_Schleuse + L DINT#0 // ID bekannt? + ==D // Nein + BEC + +CALL FC "Trolleydaten_neu_anlegen" (Gesamt_Trolley_DL:="DPS1_OmniFahren".Schleuse_vor_Einfahrt.Schleuse.Gesamt_Trolley_DL, TrolleyID:="DPS1_OmniFahren".Schleuse_vor_Einfahrt.Dyn.TrolleyID_Schleuse, Endziel:=16#0000, ShopGroup:=DINT#0) + + BEU + +PS1E: NOP 0 + + +--- NW 20: Schleuse 3365: (ABP1/PS1) --- + L "MW190" + L 3365 // Aufruf von Schleuse XXXX? + <>I // Nein! + JC PS1A1 + + AN "M180.0" // Lesefehler + JC YPS1A1 + + BEU + +YPS1A1: AN "M180.1" // unbekannt in TrolleysDL + BEC + +// Daten in Datenbank neu anlegen: + L "DPS1_OmniFahren".Schleuse_Platz_1.Dyn.TrolleyID_Schleuse + L DINT#0 // ID bekannt? + ==D // Nein + BEC + +CALL FC "Trolleydaten_neu_anlegen" (Gesamt_Trolley_DL:="DPS1_OmniFahren".Schleuse_Platz_1.Schleuse.Gesamt_Trolley_DL, TrolleyID:="DPS1_OmniFahren".Schleuse_Platz_1.Dyn.TrolleyID_Schleuse, Endziel:=16#0000, ShopGroup:=DINT#0) + + BEU + +PS1A1: NOP 0 + + +--- NW 21: Schleuse 3371: (ABP2/PS1) --- + L "MW190" + L 3371 // Aufruf von Schleuse XXXX? + <>I // Nein! + JC PS1A2 + + AN "M180.0" // Lesefehler + JC YPS1A2 + + BEU + +YPS1A2: AN "M180.1" // unbekannt in TrolleysDL + BEC + +// Daten in Datenbank neu anlegen: + L "DPS1_OmniFahren".Schleuse_Platz_2.Dyn.TrolleyID_Schleuse + L DINT#0 // ID bekannt? + ==D // Nein + BEC + +CALL FC "Trolleydaten_neu_anlegen" (Gesamt_Trolley_DL:="DPS1_OmniFahren".Schleuse_Platz_2.Schleuse.Gesamt_Trolley_DL, TrolleyID:="DPS1_OmniFahren".Schleuse_Platz_2.Dyn.TrolleyID_Schleuse, Endziel:=16#0000, ShopGroup:=DINT#0) + + BEU + +PS1A2: NOP 0 + + +--- NW 22: Schleuse 3375: (ABP3/PS1) --- + L "MW190" + L 3375 // Aufruf von Schleuse XXXX? + <>I // Nein! + JC PS1A3 + + AN "M180.0" // Lesefehler + JC YPS1A3 + + BEU + +YPS1A3: AN "M180.1" // unbekannt in TrolleysDL + BEC + +// Daten in Datenbank neu anlegen: + L "DPS1_OmniFahren".Schleuse_Platz_3.Dyn.TrolleyID_Schleuse + L DINT#0 // ID bekannt? + ==D // Nein + BEC + +CALL FC "Trolleydaten_neu_anlegen" (Gesamt_Trolley_DL:="DPS1_OmniFahren".Schleuse_Platz_3.Schleuse.Gesamt_Trolley_DL, TrolleyID:="DPS1_OmniFahren".Schleuse_Platz_3.Dyn.TrolleyID_Schleuse, Endziel:=16#0000, ShopGroup:=DINT#0) + + BEU + +PS1A3: NOP 0 + + +--- NW 23: Schleuse 3390: (Vor Einfahrt MPS3) --- + L "MW190" + L 3390 // Aufruf von Schleuse XXXX? + <>I // Nein! + JC MPS3E + + AN "M180.0" // Lesefehler + JC YMPS3 + + BEU + +YMPS3: AN "M180.1" // unbekannt in TrolleysDL + BEC + +// Daten in Datenbank neu anlegen: + L "DMPS3_OmniFahren".Schleuse_vor_Einfahrt.Dyn.TrolleyID_Schleuse + L DINT#0 // ID bekannt? + ==D // Nein + BEC + +CALL FC "Trolleydaten_neu_anlegen" (Gesamt_Trolley_DL:="DMPS3_OmniFahren".Schleuse_vor_Einfahrt.Schleuse.Gesamt_Trolley_DL, TrolleyID:="DMPS3_OmniFahren".Schleuse_vor_Einfahrt.Dyn.TrolleyID_Schleuse, Endziel:=16#0000, ShopGroup:=DINT#0) + + BEU + +MPS3E: NOP 0 + + +--- NW 24: Schleuse 3395: (ABP1/MPS3) --- + L "MW190" + L 3395 // Aufruf von Schleuse XXXX? + <>I // Nein! + JC MPS3A1 + + AN "M180.0" // Lesefehler + JC YMPS3A1 + + BEU + +YMPS3A1: AN "M180.1" // unbekannt in TrolleysDL + BEC + +// Daten in Datenbank neu anlegen: + L "DMPS3_OmniFahren".Schleuse_Platz_1.Dyn.TrolleyID_Schleuse + L DINT#0 // ID bekannt? + ==D // Nein + BEC + +CALL FC "Trolleydaten_neu_anlegen" (Gesamt_Trolley_DL:="DMPS3_OmniFahren".Schleuse_Platz_1.Schleuse.Gesamt_Trolley_DL, TrolleyID:="DMPS3_OmniFahren".Schleuse_Platz_1.Dyn.TrolleyID_Schleuse, Endziel:=16#0000, ShopGroup:=DINT#0) + + BEU + +MPS3A1: NOP 0 + + +--- NW 25: Schleuse 3401: (ABP2/MPS3) --- + L "MW190" + L 3401 // Aufruf von Schleuse XXXX? + <>I // Nein! + JC MPS3A2 + + AN "M180.0" // Lesefehler + JC YMPS3A2 + + BEU + +YMPS3A2: AN "M180.1" // unbekannt in TrolleysDL + BEC + +// Daten in Datenbank neu anlegen: + L "DMPS3_OmniFahren".Schleuse_Platz_2.Dyn.TrolleyID_Schleuse + L DINT#0 // ID bekannt? + ==D // Nein + BEC + +CALL FC "Trolleydaten_neu_anlegen" (Gesamt_Trolley_DL:="DMPS3_OmniFahren".Schleuse_Platz_2.Schleuse.Gesamt_Trolley_DL, TrolleyID:="DMPS3_OmniFahren".Schleuse_Platz_2.Dyn.TrolleyID_Schleuse, Endziel:=16#0000, ShopGroup:=DINT#0) + + BEU + +MPS3A2: NOP 0 + + +--- NW 26: Schleuse 3405: (ABP3/MPS3) --- + L "MW190" + L 3405 // Aufruf von Schleuse XXXX? + <>I // Nein! + JC MPS3A3 + + AN "M180.0" // Lesefehler + JC YMPS3A3 + + BEU + +YMPS3A3: AN "M180.1" // unbekannt in TrolleysDL + BEC + +// Daten in Datenbank neu anlegen: + L "DMPS3_OmniFahren".Schleuse_Platz_3.Dyn.TrolleyID_Schleuse + L DINT#0 // ID bekannt? + ==D // Nein + BEC + +CALL FC "Trolleydaten_neu_anlegen" (Gesamt_Trolley_DL:="DMPS3_OmniFahren".Schleuse_Platz_3.Schleuse.Gesamt_Trolley_DL, TrolleyID:="DMPS3_OmniFahren".Schleuse_Platz_3.Dyn.TrolleyID_Schleuse, Endziel:=16#0000, ShopGroup:=DINT#0) + + BEU + +MPS3A3: NOP 0 + + +--- NW 27: Schleuse 3421: (Vor Einfahrt MPS2) --- + L "MW190" + L 3421 // Aufruf von Schleuse XXXX? + <>I // Nein! + JC MPS2E + + AN "M180.0" // Lesefehler + JC YMPS2 + + BEU + +YMPS2: AN "M180.1" // unbekannt in TrolleysDL + BEC + +// Daten in Datenbank neu anlegen: + L "DMPS2_OmniFahren".Schleuse_vor_Einfahrt.Dyn.TrolleyID_Schleuse + L DINT#0 // ID bekannt? + ==D // Nein + BEC + +CALL FC "Trolleydaten_neu_anlegen" (Gesamt_Trolley_DL:="DMPS2_OmniFahren".Schleuse_vor_Einfahrt.Schleuse.Gesamt_Trolley_DL, TrolleyID:="DMPS2_OmniFahren".Schleuse_vor_Einfahrt.Dyn.TrolleyID_Schleuse, Endziel:=16#0000, ShopGroup:=DINT#0) + + BEU + +MPS2E: NOP 0 + + +--- NW 28: Schleuse 3425: (ABP1/MPS2) --- + L "MW190" + L 3425 // Aufruf von Schleuse XXXX? + <>I // Nein! + JC MPS2A1 + + AN "M180.0" // Lesefehler + JC YMPS2A1 + + BEU + +YMPS2A1: AN "M180.1" // unbekannt in TrolleysDL + BEC + +// Daten in Datenbank neu anlegen: + L "DMPS2_OmniFahren".Schleuse_Platz_1.Dyn.TrolleyID_Schleuse + L DINT#0 // ID bekannt? + ==D // Nein + BEC + +CALL FC "Trolleydaten_neu_anlegen" (Gesamt_Trolley_DL:="DMPS2_OmniFahren".Schleuse_Platz_1.Schleuse.Gesamt_Trolley_DL, TrolleyID:="DMPS2_OmniFahren".Schleuse_Platz_1.Dyn.TrolleyID_Schleuse, Endziel:=16#0000, ShopGroup:=DINT#0) + + BEU + +MPS2A1: NOP 0 + + +--- NW 29: Schleuse 3431: (ABP2/MPS2) --- + L "MW190" + L 3431 // Aufruf von Schleuse XXXX? + <>I // Nein! + JC MPS2A2 + + AN "M180.0" // Lesefehler + JC YMPS2A2 + + BEU + +YMPS2A2: AN "M180.1" // unbekannt in TrolleysDL + BEC + +// Daten in Datenbank neu anlegen: + L "DMPS2_OmniFahren".Schleuse_Platz_2.Dyn.TrolleyID_Schleuse + L DINT#0 // ID bekannt? + ==D // Nein + BEC + +CALL FC "Trolleydaten_neu_anlegen" (Gesamt_Trolley_DL:="DMPS2_OmniFahren".Schleuse_Platz_2.Schleuse.Gesamt_Trolley_DL, TrolleyID:="DMPS2_OmniFahren".Schleuse_Platz_2.Dyn.TrolleyID_Schleuse, Endziel:=16#0000, ShopGroup:=DINT#0) + + BEU + +MPS2A2: NOP 0 + + +--- NW 30: Schleuse 3435: (ABP3/MPS2) --- + L "MW190" + L 3435 // Aufruf von Schleuse XXXX? + <>I // Nein! + JC MPS2A3 + + AN "M180.0" // Lesefehler + JC YMPS2A3 + + BEU + +YMPS2A3: AN "M180.1" // unbekannt in TrolleysDL + BEC + +// Daten in Datenbank neu anlegen: + L "DMPS2_OmniFahren".Schleuse_Platz_3.Dyn.TrolleyID_Schleuse + L DINT#0 // ID bekannt? + ==D // Nein + BEC + +CALL FC "Trolleydaten_neu_anlegen" (Gesamt_Trolley_DL:="DMPS2_OmniFahren".Schleuse_Platz_3.Schleuse.Gesamt_Trolley_DL, TrolleyID:="DMPS2_OmniFahren".Schleuse_Platz_3.Dyn.TrolleyID_Schleuse, Endziel:=16#0000, ShopGroup:=DINT#0) + + BEU + +MPS2A3: NOP 0 + + +--- NW 31: Schleuse 3450: (Vor Einfahrt MPS1) --- + L "MW190" + L 3450 // Aufruf von Schleuse XXXX? + <>I // Nein! + JC MPS1E + + AN "M180.0" // Lesefehler + JC YMPS1 + + BEU + +YMPS1: AN "M180.1" // unbekannt in TrolleysDL + BEC + +// Daten in Datenbank neu anlegen: + L "DMPS1_OmniFahren".Schleuse_vor_Einfahrt.Dyn.TrolleyID_Schleuse + L DINT#0 // ID bekannt? + ==D // Nein + BEC + +CALL FC "Trolleydaten_neu_anlegen" (Gesamt_Trolley_DL:="DMPS1_OmniFahren".Schleuse_vor_Einfahrt.Schleuse.Gesamt_Trolley_DL, TrolleyID:="DMPS1_OmniFahren".Schleuse_vor_Einfahrt.Dyn.TrolleyID_Schleuse, Endziel:=16#0000, ShopGroup:=DINT#0) + + BEU + +MPS1E: NOP 0 + + +--- NW 32: Schleuse 3455: (ABP1/MPS1) --- + L "MW190" + L 3455 // Aufruf von Schleuse XXXX? + <>I // Nein! + JC MPS1A1 + + AN "M180.0" // Lesefehler + JC YMPS1A1 + + BEU + +YMPS1A1: AN "M180.1" // unbekannt in TrolleysDL + BEC + +// Daten in Datenbank neu anlegen: + L "DMPS1_OmniFahren".Schleuse_Platz_1.Dyn.TrolleyID_Schleuse + L DINT#0 // ID bekannt? + ==D // Nein + BEC + +CALL FC "Trolleydaten_neu_anlegen" (Gesamt_Trolley_DL:="DMPS1_OmniFahren".Schleuse_Platz_1.Schleuse.Gesamt_Trolley_DL, TrolleyID:="DMPS1_OmniFahren".Schleuse_Platz_1.Dyn.TrolleyID_Schleuse, Endziel:=16#0000, ShopGroup:=DINT#0) + + BEU + +MPS1A1: NOP 0 + + +--- NW 33: Schleuse 3461: (ABP2/MPS1) --- + L "MW190" + L 3461 // Aufruf von Schleuse XXXX? + <>I // Nein! + JC MPS1A2 + + AN "M180.0" // Lesefehler + JC YMPS1A2 + + BEU + +YMPS1A2: AN "M180.1" // unbekannt in TrolleysDL + BEC + +// Daten in Datenbank neu anlegen: + L "DMPS1_OmniFahren".Schleuse_Platz_2.Dyn.TrolleyID_Schleuse + L DINT#0 // ID bekannt? + ==D // Nein + BEC + +CALL FC "Trolleydaten_neu_anlegen" (Gesamt_Trolley_DL:="DMPS1_OmniFahren".Schleuse_Platz_2.Schleuse.Gesamt_Trolley_DL, TrolleyID:="DMPS1_OmniFahren".Schleuse_Platz_2.Dyn.TrolleyID_Schleuse, Endziel:=16#0000, ShopGroup:=DINT#0) + + BEU + +MPS1A2: NOP 0 + + +--- NW 34: Schleuse 3465: (ABP3/MPS1) --- + L "MW190" + L 3465 // Aufruf von Schleuse XXXX? + <>I // Nein! + JC MPS1A3 + + AN "M180.0" // Lesefehler + JC YMPS1A3 + + BEU + +YMPS1A3: AN "M180.1" // unbekannt in TrolleysDL + BEC + +// Daten in Datenbank neu anlegen: + L "DMPS1_OmniFahren".Schleuse_Platz_3.Dyn.TrolleyID_Schleuse + L DINT#0 // ID bekannt? + ==D // Nein + BEC + +CALL FC "Trolleydaten_neu_anlegen" (Gesamt_Trolley_DL:="DMPS1_OmniFahren".Schleuse_Platz_3.Schleuse.Gesamt_Trolley_DL, TrolleyID:="DMPS1_OmniFahren".Schleuse_Platz_3.Dyn.TrolleyID_Schleuse, Endziel:=16#0000, ShopGroup:=DINT#0) + + BEU + +MPS1A3: NOP 0 + + +--- NW 35: Ende --- + BE + diff --git a/=A01+UH06-KF00/Programmbausteine/Anlage/1_Arbeitsplätze/Omnifahren_Arbeitsplätze/Arbeitsplatz_Ziel_FC.awl b/=A01+UH06-KF00/Programmbausteine/Anlage/1_Arbeitsplätze/Omnifahren_Arbeitsplätze/Arbeitsplatz_Ziel_FC.awl new file mode 100644 index 0000000..3198cbf --- /dev/null +++ b/=A01+UH06-KF00/Programmbausteine/Anlage/1_Arbeitsplätze/Omnifahren_Arbeitsplätze/Arbeitsplatz_Ziel_FC.awl @@ -0,0 +1,1114 @@ +=== FC 1181: Arbeitsplatz_Ziel_FC [STL] === +INTERFACE: + Input: + Output: + InOut: + Temp: + Ziel_hex : Word + Ziel_int : Int + Zielebene : Word + Error : Byte + Position : Int + Lager_DB : Int + Lager_DW : Int + AR1Zeiger : DWord // Statt AR1 (ging nur bis DB-Länge <= 8191 Bytes) + AR1Start : DInt // Startwert mit Offset 0 + SSDW : Int + EndZiel : Word + Variante : Int + AbrufID : DInt + Fahrlisten_TrolleyID : DInt + Fahrlisten_AbrufID : DInt + Fahrlisten_Lager : Int + Trolley_unbekannt : Bool // Trolley ist nicht in DL + Error_SendFIFO : Bool + Constant: + Return: + Ret_Val : Void + +--- NW 1: Rückmeldung --- + SET // Rückmeldungen erst mal resetten + R "M180.6" // Weiterfahrt von Ziel-FC erlaubt + + +--- NW 2: Schleuse 3456: (Vor Aufzug) --- + L "MW190" + L 3456 // Aufruf von Schleuse XXXX? + <>I // Nein! + JC Vor_AufzugE + + AN "DZuführung_OmniFahren"."Aufzug_freiräumen" + S "M180.6" // Weiterfahrt ist erlaubt + + BEU + +Vor_AufzugE: NOP 0 + + +--- NW 3: Schleuse 3481: (Vor 180-Grad ByPass) --- + L "MW190" + L 3481 // Aufruf von Schleuse XXXX? + <>I // Nein! + JC Vor_ByPassE + + L EndZiel + L 16#F000 + AW + L 16#B000 // MPS? + ==I // Ja ! + JC Vor_ByPassA + + JU Vor_ByPassG // Rest gerade fahren + +Vor_ByPassA: L 16#3383 + T "MW198" // Weichenziel + +// Quell-Steuerung: + AN "DZuführung_OmniFahren".Weiche_3482_frei // Weiche von 2.Quelle schon belegt + O + A "MB3353" // Andere Qulle akitv + AN "MB3362" // Weiche auf gerade + BEC + + AN "DPS2_OmniFahren".Vorfahrt_Ausfahrweiche."WeicheByPass_von_Haupt-Sep_belegt" + AN "DPS2_OmniFahren".Vorfahrt_Ausfahrweiche."Weiche_von_Ausfahr-Sep_belegt" + AN "DArbeitsplätze_Sensoren".Stau_nach_Einfahrt_PS1.Stat.B_Akt + AN "BG3361" + AN "DArbeitsplätze_Sensoren".An_BG3383.Stat.B_Akt + AN "BG3383" + AN "MB3383" + S "M180.6" // Weiterfahrt ist erlaubt + S "DPS2_OmniFahren".Vorfahrt_Ausfahrweiche."Weiche_von_ByPass-Sep_belegt" + R "DZuführung_OmniFahren".Weiche_3482_frei // Weiche jetzt von dieser Quelle belegt + + BEU + +Vor_ByPassG: L 16#3483 + T "MW198" // Weichenziel + + AN "DZuführung_OmniFahren"."Übergang_3485"."Am_Übergang".Stat.B_Akt // Trolley gerade am Übergang -> Warten + S "M180.6" // Weiterfahrt ist erlaubt + + BEU + +Vor_ByPassE: NOP 0 + + +--- NW 4: Schleuse 3241: (Vor Einfahrt PS5) --- + L "MW190" + L 3241 // Nein! + <>I // Nein! + JC PS5E + + A "MB3241" + BEC + + L 16#0 + T EndZiel + T "DPS5_OmniFahren".Schleuse_vor_Einfahrt.Dyn.Trolley_EndZiel // Damit Schleuse Info hat + T "MW832" // /damit in Beobachtungsbild sichtbar + +// AMR-Platz, der LeerTrolleys beötigt ermitteln: +CALL FC "LeerTrolley to AMR-Platz ermitteln" (Erlaubter_Bereich:=16#0000, AMR_Platz:=EndZiel) // Beide Bereiche erlaubt + + L EndZiel + L 16#0 + ==I + BEC // Kein Leertrolley benötigt + +// Trolleydaten in DL ändern: (Endziel übergeben) +CALL FC "Trolleydaten_neu_anlegen" (Gesamt_Trolley_DL:="DPS5_OmniFahren".Schleuse_vor_Einfahrt.Schleuse.Gesamt_Trolley_DL, TrolleyID:="DPS5_OmniFahren".Schleuse_vor_Einfahrt.Dyn.TrolleyID_Schleuse, Endziel:=EndZiel, ShopGroup:=DINT#-1) + + L EndZiel + T "DPS5_OmniFahren".Schleuse_vor_Einfahrt.Dyn.Trolley_EndZiel // Damit Schleuse Info hat + T "MW832" // /damit in Beobachtungsbild sichtbar + +// Auswertung: + L EndZiel + L 16#A500 // PS5 + ==I // Ja ! + O "DZuführung_OmniFahren".Alle_ABPs_anfahren + JC PS5A + + JU PS5G // Rest gerade fahren + +PS5A: L 16#3242 + T "MW198" // Weichenziel + + AN "DArbeitsplätze_Sensoren".Stau_Einfahrt_PS5.Stat.B_Akt + S "M180.6" // Weiterfahrt ist erlaubt + + BEU + +PS5G: L 16#3264 + T "MW198" // Weichenziel + + AN "DArbeitsplätze_Sensoren".Stau_nach_Einfahrt_PS5.Stat.B_Akt + S "M180.6" // Weiterfahrt ist erlaubt + + BEU + +PS5E: NOP 0 + + +--- NW 5: Schleuse 3243: (Vorstau PS5) --- + L "MW190" + L 3243 // Aufruf von Schleuse XXXX? + <>I // Nein! + JC PS5VorstauE + + A "DPS5_OmniFahren".Sks_Arbeitsplatz.Dyn.Vorstau.Freigabe_an_Stopper + S "M180.6" // Weiterfahrt ist erlaubt + + BEU + +PS5VorstauE: NOP 0 + + +--- NW 6: Schleuse 3245: (ABP1/PS5) --- + L "MW190" + L 3245 // Aufruf von Schleuse XXXX? + <>I // Nein! + JC PS5A1E + + A "DPS5_OmniFahren".Sks_Arbeitsplatz.Dyn.Platz_1.Freigabe_an_Stopper + S "M180.6" // Weiterfahrt ist erlaubt + + BEU + +PS5A1E: NOP 0 + + +--- NW 7: Schleuse 3251: (ABP2/PS5) --- + L "MW190" + L 3251 // Aufruf von Schleuse XXXX? + <>I // Nein! + JC PS5A2E + + A "DPS5_OmniFahren".Sks_Arbeitsplatz.Dyn.Platz_2.Freigabe_an_Stopper + S "M180.6" // Weiterfahrt ist erlaubt + + BEU + +PS5A2E: NOP 0 + + +--- NW 8: Schleuse 3255: (ABP3/PS5) --- + L "MW190" + L 3255 // Aufruf von Schleuse XXXX? + <>I // Nein! + JC PS5A3E + + A "DPS5_OmniFahren".Sks_Arbeitsplatz.Dyn.Platz_3.Freigabe_an_Stopper + S "M180.6" // Weiterfahrt ist erlaubt + + BEU + +PS5A3E: NOP 0 + + +--- NW 9: Schleuse 3262: (Ausfahrt PS5) --- + L "MW190" + L 3262 // Aufruf von Schleuse XXXX? + <>I // Nein! + JC PS5RausE + + A "DPS5_OmniFahren".Prio_Ausfahrt."Out.ABP_Schleuse_starten" + AN "DPS5_OmniFahren".Vorfahrt_Ausfahrweiche."Weiche_von_Haupt-Sep_belegt" + S "M180.6" // Weiterfahrt ist erlaubt + S "DPS5_OmniFahren".Vorfahrt_Ausfahrweiche."Weiche_von_Ausfahr-Sep_belegt" + + BEU + +PS5RausE: NOP 0 + + +--- NW 10: Schleuse 3265: (Vor Ausfahrt PS5) --- + L "MW190" + L 3265 // Aufruf von Schleuse XXXX? + <>I // Nein! + JC PS5VorAusfahrtE + + A "DPS5_OmniFahren".Prio_Ausfahrt."OUT.Haupt_Schleuse_starten" + AN "DPS5_OmniFahren".Vorfahrt_Ausfahrweiche."Weiche_von_Ausfahr-Sep_belegt" + S "M180.6" // Weiterfahrt ist erlaubt + S "DPS5_OmniFahren".Vorfahrt_Ausfahrweiche."Weiche_von_Haupt-Sep_belegt" + + BEU + +PS5VorAusfahrtE: NOP 0 + + +--- NW 11: Schleuse 3271: (Vor Einfahrt PS4) --- + L "MW190" + L 3271 // Aufruf von Schleuse XXXX? + <>I // Nein! + JC PS4E + + L "MW194" + L 16#A400 // PS4 + ==I // Ja ! + O "DZuführung_OmniFahren".Alle_ABPs_anfahren + JC PS4A + + JU PS4G // Rest gerade fahren + +PS4A: L 16#3272 + T "MW198" // Weichenziel + + AN "DArbeitsplätze_Sensoren".Stau_Einfahrt_PS4.Stat.B_Akt + S "M180.6" // Weiterfahrt ist erlaubt + + BEU + +PS4G: L 16#3270 + T "MW198" // Weichenziel + + AN "DArbeitsplätze_Sensoren".Stau_nach_Einfahrt_PS4.Stat.B_Akt + S "M180.6" // Weiterfahrt ist erlaubt + + BEU + +PS4E: NOP 0 + + +--- NW 12: Schleuse 3273: (Vorstau PS4) --- + L "MW190" + L 3273 // Aufruf von Schleuse XXXX? + <>I // Nein! + JC PS4VorstauE + + A "DPS4_OmniFahren".Sks_Arbeitsplatz.Dyn.Vorstau.Freigabe_an_Stopper + S "M180.6" // Weiterfahrt ist erlaubt + + BEU + +PS4VorstauE: NOP 0 + + +--- NW 13: Schleuse 3275: (ABP1/PS4) --- + L "MW190" + L 3275 // Aufruf von Schleuse XXXX? + <>I // Nein! + JC PS4A1E + + A "DPS4_OmniFahren".Sks_Arbeitsplatz.Dyn.Platz_1.Freigabe_an_Stopper + S "M180.6" // Weiterfahrt ist erlaubt + + BEU + +PS4A1E: NOP 0 + + +--- NW 14: Schleuse 3281: (ABP2/PS4) --- + L "MW190" + L 3281 // Aufruf von Schleuse XXXX? + <>I // Nein! + JC PS4A2E + + A "DPS4_OmniFahren".Sks_Arbeitsplatz.Dyn.Platz_2.Freigabe_an_Stopper + S "M180.6" // Weiterfahrt ist erlaubt + + BEU + +PS4A2E: NOP 0 + + +--- NW 15: Schleuse 3285: (ABP3/PS4) --- + L "MW190" + L 3285 // Aufruf von Schleuse XXXX? + <>I // Nein! + JC PS4A3E + + A "DPS4_OmniFahren".Sks_Arbeitsplatz.Dyn.Platz_3.Freigabe_an_Stopper + S "M180.6" // Weiterfahrt ist erlaubt + + AN Error_SendFIFO + R "DPS4_OmniFahren".Sks_Arbeitsplatz.Dyn.SS."Trolley_ist_in_Platz_3_eingefahren>PC" + + BEU + +PS4A3E: NOP 0 + + +--- NW 16: Schleuse 3291: (Ausfahrt PS4) --- + L "MW190" + L 3291 // Aufruf von Schleuse XXXX? + <>I // Nein! + JC PS4RausE + + L 16#3294 + AN "DZuführung_OmniFahren".Alle_ABPs_anfahren + JC RausPS4 + + L 16#3302 // /PS 3 erst mal anfahren! +RausPS4: T "MW198" // Weichenziel + + A "DPS4_OmniFahren".Prio_Ausfahrt."Out.ABP_Schleuse_starten" + AN "DPS4_OmniFahren".Vorfahrt_Ausfahrweiche."Weiche_von_Haupt-Sep_belegt" + S "M180.6" // Weiterfahrt ist erlaubt + S "DPS4_OmniFahren".Vorfahrt_Ausfahrweiche."Weiche_von_Ausfahr-Sep_belegt" + + BEU + +PS4RausE: NOP 0 + + +--- NW 17: Schleuse 3293: (Vor Einfahrt PS3) --- + L "MW190" + L 3293 // Aufruf von Schleuse XXXX? + <>I // Nein! + JC PS3E + + A "DPS4_OmniFahren".Vorfahrt_Ausfahrweiche."Weiche_von_Ausfahr-Sep_belegt" + BEC + + L "MW194" + L 16#A300 // PS3 + ==I // Ja ! + O "DZuführung_OmniFahren".Alle_ABPs_anfahren + JC PS3A + + JU PS3G // Rest gerade fahren + +PS3A: L 16#3302 + T "MW198" // Weichenziel + + AN "DArbeitsplätze_Sensoren".Stau_Einfahrt_PS3.Stat.B_Akt + S "M180.6" // Weiterfahrt ist erlaubt + S "DPS4_OmniFahren".Vorfahrt_Ausfahrweiche."Weiche_von_Haupt-Sep_belegt" + + BEU + +PS3G: L 16#3294 + T "MW198" // Weichenziel + + A "DPS4_OmniFahren".Prio_Ausfahrt."OUT.Haupt_Schleuse_starten" + AN "DArbeitsplätze_Sensoren".Stau_nach_Einfahrt_PS3.Stat.B_Akt + S "M180.6" // Weiterfahrt ist erlaubt + S "DPS4_OmniFahren".Vorfahrt_Ausfahrweiche."Weiche_von_Haupt-Sep_belegt" + + BEU + +PS3E: NOP 0 + + +--- NW 18: Schleuse 3303: (Vorstau PS3) --- + L "MW190" + L 3303 // Aufruf von Schleuse XXXX? + <>I // Nein! + JC PS3VorstauE + + A "DPS3_OmniFahren".Sks_Arbeitsplatz.Dyn.Vorstau.Freigabe_an_Stopper + S "M180.6" // Weiterfahrt ist erlaubt + + BEU + +PS3VorstauE: NOP 0 + + +--- NW 19: Schleuse 3305: (ABP1/PS3) --- + L "MW190" + L 3305 // Aufruf von Schleuse XXXX? + <>I // Nein! + JC PS3A1E + + A "DPS3_OmniFahren".Sks_Arbeitsplatz.Dyn.Platz_1.Freigabe_an_Stopper + S "M180.6" // Weiterfahrt ist erlaubt + + BEU + +PS3A1E: NOP 0 + + +--- NW 20: Schleuse 3311: (ABP2/PS3) --- + L "MW190" + L 3311 // Aufruf von Schleuse XXXX? + <>I // Nein! + JC PS3A2E + + A "DPS3_OmniFahren".Sks_Arbeitsplatz.Dyn.Platz_2.Freigabe_an_Stopper + S "M180.6" // Weiterfahrt ist erlaubt + + BEU + +PS3A2E: NOP 0 + + +--- NW 21: Schleuse 3315: (ABP3/PS3) --- + L "MW190" + L 3315 // Aufruf von Schleuse XXXX? + <>I // Nein! + JC PS3A3E + + A "DPS3_OmniFahren".Sks_Arbeitsplatz.Dyn.Platz_3.Freigabe_an_Stopper + S "M180.6" // Weiterfahrt ist erlaubt + + BEU + +PS3A3E: NOP 0 + + +--- NW 22: Schleuse 3321: (Ausfahrt PS3) --- + L "MW190" + L 3321 // Aufruf von Schleuse XXXX? + <>I // Nein! + JC PS3RausE + + A "DPS3_OmniFahren".Prio_Ausfahrt."Out.ABP_Schleuse_starten" + AN "DPS3_OmniFahren".Vorfahrt_Ausfahrweiche."Weiche_von_Haupt-Sep_belegt" + S "M180.6" // Weiterfahrt ist erlaubt + S "DPS3_OmniFahren".Vorfahrt_Ausfahrweiche."Weiche_von_Ausfahr-Sep_belegt" + + BEU + +PS3RausE: NOP 0 + + +--- NW 23: Schleuse 3323: (Vor Ausfahrt PS3) --- + L "MW190" + L 3323 // Aufruf von Schleuse XXXX? + <>I // Nein! + JC PS3VorAusfahrtE + + A "DPS3_OmniFahren".Prio_Ausfahrt."OUT.Haupt_Schleuse_starten" + AN "DPS3_OmniFahren".Vorfahrt_Ausfahrweiche."Weiche_von_Ausfahr-Sep_belegt" + S "M180.6" // Weiterfahrt ist erlaubt + S "DPS3_OmniFahren".Vorfahrt_Ausfahrweiche."Weiche_von_Haupt-Sep_belegt" + + BEU + +PS3VorAusfahrtE: NOP 0 + + +--- NW 24: Schleuse 3331: (Vor Einfahrt PS2) --- + L "MW190" + L 3331 // Aufruf von Schleuse XXXX? + <>I // Nein! + JC PS2E + + L "MW194" + L 16#A200 // PS2 + ==I // Ja ! + O "DZuführung_OmniFahren".Alle_ABPs_anfahren + JC PS2A + + JU PS2G // Rest gerade fahren + +PS2A: L 16#3332 + T "MW198" // Weichenziel + + AN "DArbeitsplätze_Sensoren".Stau_Einfahrt_PS2.Stat.B_Akt + S "M180.6" // Weiterfahrt ist erlaubt + + BEU + +PS2G: L 16#3330 + T "MW198" // Weichenziel + + AN "DArbeitsplätze_Sensoren".Stau_nach_Einfahrt_PS2.Stat.B_Akt + S "M180.6" // Weiterfahrt ist erlaubt + + BEU + +PS2E: NOP 0 + + +--- NW 25: Schleuse 3333: (Vorstau PS2) --- + L "MW190" + L 3333 // Aufruf von Schleuse XXXX? + <>I // Nein! + JC PS2VorstauE + + A "DPS2_OmniFahren".Sks_Arbeitsplatz.Dyn.Vorstau.Freigabe_an_Stopper + S "M180.6" // Weiterfahrt ist erlaubt + + BEU + +PS2VorstauE: NOP 0 + + +--- NW 26: Schleuse 3335: (ABP1/PS2) --- + L "MW190" + L 3335 // Aufruf von Schleuse XXXX? + <>I // Nein! + JC PS2A1E + + A "DPS2_OmniFahren".Sks_Arbeitsplatz.Dyn.Platz_1.Freigabe_an_Stopper + S "M180.6" // Weiterfahrt ist erlaubt + + BEU + +PS2A1E: NOP 0 + + +--- NW 27: Schleuse 3341: (ABP2/PS2) --- + L "MW190" + L 3341 // Aufruf von Schleuse XXXX? + <>I // Nein! + JC PS2A2E + + A "DPS2_OmniFahren".Sks_Arbeitsplatz.Dyn.Platz_2.Freigabe_an_Stopper + S "M180.6" // Weiterfahrt ist erlaubt + + BEU + +PS2A2E: NOP 0 + + +--- NW 28: Schleuse 3345: (ABP3/PS2) --- + L "MW190" + L 3345 // Aufruf von Schleuse XXXX? + <>I // Nein! + JC PS2A3E + + A "DPS2_OmniFahren".Sks_Arbeitsplatz.Dyn.Platz_3.Freigabe_an_Stopper + S "M180.6" // Weiterfahrt ist erlaubt + + BEU + +PS2A3E: NOP 0 + + +--- NW 29: Schleuse 3351: (Ausfahrt PS2) --- + L "MW190" + L 3351 // Aufruf von Schleuse XXXX? + <>I // Nein! + JC PS2RausE + + L 16#3361 + AN "DZuführung_OmniFahren".Alle_ABPs_anfahren + JC RausPS2 + L 16#3362 // /PS 1 erst mal anfahren! +RausPS2: T "MW198" // Weichenziel + + A "DPS2_OmniFahren".Prio_Ausfahrt."Out.ABP_Schleuse_starten" + AN "DPS2_OmniFahren".Vorfahrt_Ausfahrweiche."Weiche_von_Haupt-Sep_belegt" + AN "DPS2_OmniFahren".Vorfahrt_Ausfahrweiche."Weiche_von_ByPass-Sep_belegt" + S "M180.6" // Weiterfahrt ist erlaubt + S "DPS2_OmniFahren".Vorfahrt_Ausfahrweiche."Weiche_von_Ausfahr-Sep_belegt" + + BEU + +PS2RausE: NOP 0 + + +--- NW 30: Schleuse 3353: (Vor Einfahrt PS1) --- + L "MW190" + L 3353 // Aufruf von Schleuse XXXX? + <>I // Nein! + JC PS1E + + A "DPS2_OmniFahren".Vorfahrt_Ausfahrweiche."Weiche_von_Ausfahr-Sep_belegt" + BEC + + L "MW194" + L 16#A100 // PS1 + ==I // Ja ! + O "DZuführung_OmniFahren".Alle_ABPs_anfahren + JC PS1A + + JU PS1G // Rest gerade fahren + +PS1A: L 16#3362 + T "MW198" // Weichenziel + + A "DPS2_OmniFahren".Prio_Ausfahrt."OUT.Haupt_Schleuse_starten" + AN "DArbeitsplätze_Sensoren".Stau_Einfahrt_PS1.Stat.B_Akt + S "M180.6" // Weiterfahrt ist erlaubt + S "DPS2_OmniFahren".Vorfahrt_Ausfahrweiche."Weiche_von_Haupt-Sep_belegt" + + BEU + +PS1G: L 16#3361 + T "MW198" // Weichenziel + +// Quell-Steuerung: + AN "DZuführung_OmniFahren".Weiche_3482_frei // Weiche von 2.Quelle schon belegt + O "MB3482" // Reinweiche aktiv + O "MB3361" + BEC + + AN "DPS2_OmniFahren".Vorfahrt_Ausfahrweiche."Weiche_von_ByPass-Sep_belegt" + AN "DArbeitsplätze_Sensoren".Stau_nach_Einfahrt_PS1.Stat.B_Akt + AN "BG3361" + S "M180.6" // Weiterfahrt ist erlaubt + S "DPS2_OmniFahren".Vorfahrt_Ausfahrweiche."Weiche_von_Haupt-Sep_belegt" + S "DPS2_OmniFahren".Vorfahrt_Ausfahrweiche."WeicheByPass_von_Haupt-Sep_belegt" + R "DZuführung_OmniFahren".Weiche_3482_frei // Weiche jetzt von dieser Quelle belegt + + BEU + +PS1E: NOP 0 + + +--- NW 31: Schleuse 3363: (Vorstau PS1) --- + L "MW190" + L 3363 // Aufruf von Schleuse XXXX? + <>I // Nein! + JC PS1VorstauE + + A "DPS1_OmniFahren".Sks_Arbeitsplatz.Dyn.Vorstau.Freigabe_an_Stopper + S "M180.6" // Weiterfahrt ist erlaubt + + BEU + +PS1VorstauE: NOP 0 + + +--- NW 32: Schleuse 3365: (ABP1/PS1) --- + L "MW190" + L 3365 // Aufruf von Schleuse XXXX? + <>I // Nein! + JC PS1A1E + + A "DPS1_OmniFahren".Sks_Arbeitsplatz.Dyn.Platz_1.Freigabe_an_Stopper + S "M180.6" // Weiterfahrt ist erlaubt + + BEU + +PS1A1E: NOP 0 + + +--- NW 33: Schleuse 3371: (ABP2/PS1) --- + L "MW190" + L 3371 // Aufruf von Schleuse XXXX? + <>I // Nein! + JC PS1A2E + + A "DPS1_OmniFahren".Sks_Arbeitsplatz.Dyn.Platz_2.Freigabe_an_Stopper + S "M180.6" // Weiterfahrt ist erlaubt + + BEU + +PS1A2E: NOP 0 + + +--- NW 34: Schleuse 3375: (ABP3/PS1) --- + L "MW190" + L 3375 // Aufruf von Schleuse XXXX? + <>I // Nein! + JC PS1A3E + + A "DPS1_OmniFahren".Sks_Arbeitsplatz.Dyn.Platz_3.Freigabe_an_Stopper + S "M180.6" // Weiterfahrt ist erlaubt + + BEU + +PS1A3E: NOP 0 + + +--- NW 35: Schleuse 3381: (Ausfahrt PS1) --- + L "MW190" + L 3381 // Aufruf von Schleuse XXXX? + <>I // Nein! + JC PS1RausE + + A "DPS1_OmniFahren".Prio_Ausfahrt."Out.ABP_Schleuse_starten" + AN "DPS1_OmniFahren".Vorfahrt_Ausfahrweiche."Weiche_von_Haupt-Sep_belegt" + S "M180.6" // Weiterfahrt ist erlaubt + S "DPS1_OmniFahren".Vorfahrt_Ausfahrweiche."Weiche_von_Ausfahr-Sep_belegt" + + BEU + +PS1RausE: NOP 0 + + +--- NW 36: Schleuse 3383: (Vor Ausfahrt PS1) --- + L "MW190" + L 3383 // Aufruf von Schleuse XXXX? + <>I // Nein! + JC PS1VorAusfahrtE + + A "DPS1_OmniFahren".Prio_Ausfahrt."OUT.Haupt_Schleuse_starten" + AN "DPS1_OmniFahren".Vorfahrt_Ausfahrweiche."Weiche_von_Ausfahr-Sep_belegt" + S "M180.6" // Weiterfahrt ist erlaubt + S "DPS1_OmniFahren".Vorfahrt_Ausfahrweiche."Weiche_von_Haupt-Sep_belegt" + + BEU + +PS1VorAusfahrtE: NOP 0 + + +--- NW 37: Schleuse 3390: (Vor Einfahrt MPS3) --- + L "MW190" + L 3390 // Aufruf von Schleuse XXXX? + <>I // Nein! + JC MPS3E + + L "MW194" + L 16#B300 // MPS3 + ==I // Ja ! + O "DZuführung_OmniFahren".Alle_ABPs_anfahren + JC MPS3A + + JU MPS3G // Rest gerade fahren + +MPS3A: L 16#3392 + T "MW198" // Weichenziel + + AN "DArbeitsplätze_Sensoren".Stau_Einfahrt_MPS3.Stat.B_Akt + S "M180.6" // Weiterfahrt ist erlaubt + + BEU + +MPS3G: L 16#3391 + T "MW198" // Weichenziel + + AN "DArbeitsplätze_Sensoren".Stau_nach_Einfahrt_MPS3.Stat.B_Akt + S "M180.6" // Weiterfahrt ist erlaubt + + BEU + +MPS3E: NOP 0 + + +--- NW 38: Schleuse 3393: (Vorstau MPS3) --- + L "MW190" + L 3393 // Aufruf von Schleuse XXXX? + <>I // Nein! + JC MPS3VorstauE + + A "DMPS3_OmniFahren".Sks_Arbeitsplatz.Dyn.Vorstau.Freigabe_an_Stopper + S "M180.6" // Weiterfahrt ist erlaubt + + BEU + +MPS3VorstauE: NOP 0 + + +--- NW 39: Schleuse 3395: (ABP1/MPS3) --- + L "MW190" + L 3395 // Aufruf von Schleuse XXXX? + <>I // Nein! + JC MPS3A1E + + A "DMPS3_OmniFahren".Sks_Arbeitsplatz.Dyn.Platz_1.Freigabe_an_Stopper + S "M180.6" // Weiterfahrt ist erlaubt + + BEU + +MPS3A1E: NOP 0 + + +--- NW 40: Schleuse 3401: (ABP2/MPS3) --- + L "MW190" + L 3401 // Aufruf von Schleuse XXXX? + <>I // Nein! + JC MPS3A2E + + A "DMPS3_OmniFahren".Sks_Arbeitsplatz.Dyn.Platz_2.Freigabe_an_Stopper + S "M180.6" // Weiterfahrt ist erlaubt + + BEU + +MPS3A2E: NOP 0 + + +--- NW 41: Schleuse 3405: (ABP3/MPS3) --- + L "MW190" + L 3405 // Aufruf von Schleuse XXXX? + <>I // Nein! + JC MPS3A3E + + A "DMPS3_OmniFahren".Sks_Arbeitsplatz.Dyn.Platz_3.Freigabe_an_Stopper + S "M180.6" // Weiterfahrt ist erlaubt + + BEU + +MPS3A3E: NOP 0 + + +--- NW 42: Schleuse 3411: (Ausfahrt MPS3) --- + L "MW190" + L 3411 // Aufruf von Schleuse XXXX? + <>I // Nein! + JC MPS3RausE + + A "DMPS3_OmniFahren".Prio_Ausfahrt."Out.ABP_Schleuse_starten" + AN "DMPS3_OmniFahren".Vorfahrt_Ausfahrweiche."Weiche_von_Haupt-Sep_belegt" + S "M180.6" // Weiterfahrt ist erlaubt + S "DMPS3_OmniFahren".Vorfahrt_Ausfahrweiche."Weiche_von_Ausfahr-Sep_belegt" + + BEU + +MPS3RausE: NOP 0 + + +--- NW 43: Schleuse 3413: (Vor Ausfahrt MPS3) --- + L "MW190" + L 3413 // Aufruf von Schleuse XXXX? + <>I // Nein! + JC MPS3VorAusfahrtE + + A "DMPS3_OmniFahren".Prio_Ausfahrt."OUT.Haupt_Schleuse_starten" + AN "DMPS3_OmniFahren".Vorfahrt_Ausfahrweiche."Weiche_von_Ausfahr-Sep_belegt" + S "M180.6" // Weiterfahrt ist erlaubt + S "DMPS3_OmniFahren".Vorfahrt_Ausfahrweiche."Weiche_von_Haupt-Sep_belegt" + + BEU + +MPS3VorAusfahrtE: NOP 0 + + +--- NW 44: Schleuse 3421: (Vor Einfahrt MPS2) --- + L "MW190" + L 3421 // Aufruf von Schleuse XXXX? + <>I // Nein! + JC MPS2E + + L "MW194" + L 16#B200 // MPS2 + ==I // Ja ! + O "DZuführung_OmniFahren".Alle_ABPs_anfahren + JC MPS2A + + JU MPS2G // Rest gerade fahren + +MPS2A: L 16#3422 + T "MW198" // Weichenziel + + AN "DArbeitsplätze_Sensoren".Stau_Einfahrt_MPS2.Stat.B_Akt + S "M180.6" // Weiterfahrt ist erlaubt + + BEU + +MPS2G: L 16#3445 + T "MW198" // Weichenziel + + AN "DArbeitsplätze_Sensoren".Stau_nach_Einfahrt_MPS2.Stat.B_Akt + S "M180.6" // Weiterfahrt ist erlaubt + + BEU + +MPS2E: NOP 0 + + +--- NW 45: Schleuse 3423: (Vorstau MPS2) --- + L "MW190" + L 3423 // Aufruf von Schleuse XXXX? + <>I // Nein! + JC MPS2VorstauE + + A "DMPS2_OmniFahren".Sks_Arbeitsplatz.Dyn.Vorstau.Freigabe_an_Stopper + S "M180.6" // Weiterfahrt ist erlaubt + + BEU + +MPS2VorstauE: NOP 0 + + +--- NW 46: Schleuse 3425: (ABP1/MPS2) --- + L "MW190" + L 3425 // Aufruf von Schleuse XXXX? + <>I // Nein! + JC MPS2A1E + + A "DMPS2_OmniFahren".Sks_Arbeitsplatz.Dyn.Platz_1.Freigabe_an_Stopper + S "M180.6" // Weiterfahrt ist erlaubt + + BEU + +MPS2A1E: NOP 0 + + +--- NW 47: Schleuse 3431: (ABP2/MPS2) --- + L "MW190" + L 3431 // Aufruf von Schleuse XXXX? + <>I // Nein! + JC MPS2A2E + + A "DMPS2_OmniFahren".Sks_Arbeitsplatz.Dyn.Platz_2.Freigabe_an_Stopper + S "M180.6" // Weiterfahrt ist erlaubt + + BEU + +MPS2A2E: NOP 0 + + +--- NW 48: Schleuse 3435: (ABP3/MPS2) --- + L "MW190" + L 3435 // Aufruf von Schleuse XXXX? + <>I // Nein! + JC MPS2A3E + + A "DMPS2_OmniFahren".Sks_Arbeitsplatz.Dyn.Platz_3.Freigabe_an_Stopper + S "M180.6" // Weiterfahrt ist erlaubt + + BEU + +MPS2A3E: NOP 0 + + +--- NW 49: Schleuse 3441: (Ausfahrt MPS2) --- + L "MW190" + L 3441 // Aufruf von Schleuse XXXX? + <>I // Nein! + JC MPS2RausE + + AN "DZuführung_OmniFahren"."Aufzug_freiräumen" + A "DMPS2_OmniFahren".Prio_Ausfahrt."Out.ABP_Schleuse_starten" + AN "DMPS2_OmniFahren".Vorfahrt_Ausfahrweiche."Weiche_von_Haupt-Sep_belegt" + S "M180.6" // Weiterfahrt ist erlaubt + S "DMPS2_OmniFahren".Vorfahrt_Ausfahrweiche."Weiche_von_Ausfahr-Sep_belegt" + + BEU + +MPS2RausE: NOP 0 + + +--- NW 50: Schleuse 3443: (Vor Ausfahrt MPS2) --- + L "MW190" + L 3443 // Aufruf von Schleuse XXXX? + <>I // Nein! + JC MPS2VorAusfahrtE + + AN "DZuführung_OmniFahren"."Aufzug_freiräumen" + A "DMPS2_OmniFahren".Prio_Ausfahrt."OUT.Haupt_Schleuse_starten" + AN "DMPS2_OmniFahren".Vorfahrt_Ausfahrweiche."Weiche_von_Ausfahr-Sep_belegt" + S "M180.6" // Weiterfahrt ist erlaubt + S "DMPS2_OmniFahren".Vorfahrt_Ausfahrweiche."Weiche_von_Haupt-Sep_belegt" + + BEU + +MPS2VorAusfahrtE: NOP 0 + + +--- NW 51: Schleuse 3450: (Vor Einfahrt MPS1) --- + L "MW190" + L 3450 // Aufruf von Schleuse XXXX? + <>I // Nein! + JC MPS1E + + L "MW194" + L 16#B100 // MPS1 + ==I // Ja ! + O "DZuführung_OmniFahren".Alle_ABPs_anfahren + JC MPS1A + + JU MPS1G // Rest gerade fahren + +MPS1A: L 16#3452 + T "MW198" // Weichenziel + + AN "DArbeitsplätze_Sensoren".Stau_Einfahrt_MPS1.Stat.B_Akt + S "M180.6" // Weiterfahrt ist erlaubt + + BEU + +MPS1G: L 16#3451 + T "MW198" // Weichenziel + + AN "DArbeitsplätze_Sensoren".Stau_nach_Einfahrt_MPS1.Stat.B_Akt + S "M180.6" // Weiterfahrt ist erlaubt + + BEU + +MPS1E: NOP 0 + + +--- NW 52: Schleuse 3453: (Vorstau MPS1) --- + L "MW190" + L 3453 // Aufruf von Schleuse XXXX? + <>I // Nein! + JC MPS1VorstauE + + A "DMPS1_OmniFahren".Sks_Arbeitsplatz.Dyn.Vorstau.Freigabe_an_Stopper + S "M180.6" // Weiterfahrt ist erlaubt + + BEU + +MPS1VorstauE: NOP 0 + + +--- NW 53: Schleuse 3455: (ABP1/MPS1) --- + L "MW190" + L 3455 // Aufruf von Schleuse XXXX? + <>I // Nein! + JC MPS1A1E + + A "DMPS1_OmniFahren".Sks_Arbeitsplatz.Dyn.Platz_1.Freigabe_an_Stopper + S "M180.6" // Weiterfahrt ist erlaubt + + BEU + +MPS1A1E: NOP 0 + + +--- NW 54: Schleuse 3461: (ABP2/MPS1) --- + L "MW190" + L 3461 // Aufruf von Schleuse XXXX? + <>I // Nein! + JC MPS1A2E + + A "DMPS1_OmniFahren".Sks_Arbeitsplatz.Dyn.Platz_2.Freigabe_an_Stopper + S "M180.6" // Weiterfahrt ist erlaubt + + BEU + +MPS1A2E: NOP 0 + + +--- NW 55: Schleuse 3465: (ABP3/MPS1) --- + L "MW190" + L 3465 // Aufruf von Schleuse XXXX? + <>I // Nein! + JC MPS1A3E + + A "DMPS1_OmniFahren".Sks_Arbeitsplatz.Dyn.Platz_3.Freigabe_an_Stopper + S "M180.6" // Weiterfahrt ist erlaubt + + BEU + +MPS1A3E: NOP 0 + + +--- NW 56: Schleuse 3471: (Ausfahrt MPS1) --- + L "MW190" + L 3471 // Aufruf von Schleuse XXXX? + <>I // Nein! + JC MPS1RausE + + A "DMPS1_OmniFahren".Prio_Ausfahrt."Out.ABP_Schleuse_starten" + AN "DMPS1_OmniFahren".Vorfahrt_Ausfahrweiche."Weiche_von_Haupt-Sep_belegt" + S "M180.6" // Weiterfahrt ist erlaubt + S "DMPS1_OmniFahren".Vorfahrt_Ausfahrweiche."Weiche_von_Ausfahr-Sep_belegt" + + BEU + +MPS1RausE: NOP 0 + + +--- NW 57: Schleuse 3473: (Vor Ausfahrt MPS1) --- + L "MW190" + L 3473 // Aufruf von Schleuse XXXX? + <>I // Nein! + JC MPS1VorAusfahrtE + + A "DMPS1_OmniFahren".Prio_Ausfahrt."OUT.Haupt_Schleuse_starten" + AN "DMPS1_OmniFahren".Vorfahrt_Ausfahrweiche."Weiche_von_Ausfahr-Sep_belegt" + S "M180.6" // Weiterfahrt ist erlaubt + S "DMPS1_OmniFahren".Vorfahrt_Ausfahrweiche."Weiche_von_Haupt-Sep_belegt" + + BEU + +MPS1VorAusfahrtE: NOP 0 + + +--- NW 58: Schleuse 3543: (BST 4) --- + L "MW190" + L 3543 // Aufruf von Schleuse XXXX? + <>I // Nein! + JC X3543E + + SET + S "M180.6" // Weiterfahrt ist erlaubt + + BEU + +X3543E: NOP 0 + + +--- NW 59: Ende --- + BE + diff --git a/=A01+UH06-KF00/Programmbausteine/Anlage/1_Arbeitsplätze/Omnifahren_Arbeitsplätze/DAbführung_OmniFahren.awl b/=A01+UH06-KF00/Programmbausteine/Anlage/1_Arbeitsplätze/Omnifahren_Arbeitsplätze/DAbführung_OmniFahren.awl new file mode 100644 index 0000000..efa91dc --- /dev/null +++ b/=A01+UH06-KF00/Programmbausteine/Anlage/1_Arbeitsplätze/Omnifahren_Arbeitsplätze/DAbführung_OmniFahren.awl @@ -0,0 +1,8 @@ +=== InstanceDB 1129: DAbführung_OmniFahren [DB] === +INTERFACE: + Input: + Output: + InOut: + Static: + Schleuse_3540 : "MHMOmniSchleuse" + Schleuse_3543 : "MHMOmniSchleuse" diff --git a/=A01+UH06-KF00/Programmbausteine/Anlage/1_Arbeitsplätze/Omnifahren_Arbeitsplätze/DZuführung_OmniFahren.awl b/=A01+UH06-KF00/Programmbausteine/Anlage/1_Arbeitsplätze/Omnifahren_Arbeitsplätze/DZuführung_OmniFahren.awl new file mode 100644 index 0000000..6cedbc5 --- /dev/null +++ b/=A01+UH06-KF00/Programmbausteine/Anlage/1_Arbeitsplätze/Omnifahren_Arbeitsplätze/DZuführung_OmniFahren.awl @@ -0,0 +1,19 @@ +=== InstanceDB 1120: DZuführung_OmniFahren [DB] === +INTERFACE: + Input: + Output: + InOut: + Static: + Schleuse_3456 : "MHMOmniSchleuse_Plus" + Schleuse_3481 : "MHMOmniSchleuse" + Weiche_3482 : "MHMOmniWeiche" + Schleuse_3487 : "MHMOmniSchleuse_Plus" + Übergang_3446 : "MHMÜbergang_ohne_Schleuse_AMR" + Übergang_3485 : "MHMÜbergang_ohne_Schleuse_AMR" + Übergang_3490 : "MHMÜbergang_ohne_Schleuse_AMR" + Übergang_3240 : "MHMÜbergang_ohne_Schleuse_AMR" + Übergang_3480 : "MHMÜbergang_ohne_Schleuse_AMR" + Aufzug_freiräumen : Bool + Tastensperre : Bool + Alle_ABPs_anfahren : Bool + Weiche_3482_frei : Bool diff --git a/=A01+UH06-KF00/Programmbausteine/Anlage/1_Arbeitsplätze/Omnifahren_Arbeitsplätze/Zuführung_OmniFahren.awl b/=A01+UH06-KF00/Programmbausteine/Anlage/1_Arbeitsplätze/Omnifahren_Arbeitsplätze/Zuführung_OmniFahren.awl new file mode 100644 index 0000000..31cbff3 --- /dev/null +++ b/=A01+UH06-KF00/Programmbausteine/Anlage/1_Arbeitsplätze/Omnifahren_Arbeitsplätze/Zuführung_OmniFahren.awl @@ -0,0 +1,227 @@ +=== FB 1120: Zuführung_OmniFahren [STL] === +INTERFACE: + Input: + Output: + InOut: + Static: + Schleuse_3456 : "MHMOmniSchleuse_Plus" + Schleuse_3481 : "MHMOmniSchleuse" + Weiche_3482 : "MHMOmniWeiche" + Schleuse_3487 : "MHMOmniSchleuse_Plus" + Übergang_3446 : "MHMÜbergang_ohne_Schleuse_AMR" + Übergang_3485 : "MHMÜbergang_ohne_Schleuse_AMR" + Übergang_3490 : "MHMÜbergang_ohne_Schleuse_AMR" + Übergang_3240 : "MHMÜbergang_ohne_Schleuse_AMR" + Übergang_3480 : "MHMÜbergang_ohne_Schleuse_AMR" + Aufzug_freiräumen : Bool + Tastensperre : Bool + Alle_ABPs_anfahren : Bool + Weiche_3482_frei : Bool // Weiche noch nicht benutzt + Temp: + ErrQuit : Bool + ErrAnz : Bool + Stau_raus : Bool + Start_ok : Bool + B_aktiv : Bool + B_AusSchleuse : Bool + Antrieb_aktiv : Bool + Antrieb_start : Bool + Antrieb_stop : Bool + Fahren_Ok : Bool + Constant: + +--- NW 1: Systemzeug --- +// Zuführ-Bereich: + A "DAMR_Bereich".A01_UH06.AnlageEin + = Schleuse_3456.Dyn.Sk.Auto_akt + = Schleuse_3481.Dyn.Sk.Auto_akt + = Weiche_3482.Dyn.Status.Auto_akt + = Schleuse_3487.Dyn.Sk.Auto_akt + + AN "DAMR_Bereich".A01_UH06.BereichErr + = Schleuse_3456.Dyn.Sk.Bereich_ok + = Schleuse_3481.Dyn.Sk.Bereich_ok + = Weiche_3482.Dyn.Status.Bereich_ok + = Schleuse_3487.Dyn.Sk.Bereich_ok + + +--- NW 2: Weiche 3482 noch nicht benutzt --- + AN Schleuse_3481.Status2."Weichen-Schritt" // Beide Quellen + AN "DPS1_OmniFahren".Schleuse_vor_Einfahrt.Status2."Weichen-Schritt" + = Weiche_3482_frei + + +--- NW 3: Störungen quittieren --- + A "DAMR_Bereich".A01_UH06.StOk_aktiv + = ErrQuit + + +--- NW 4: Aufzugs-Bereich freiräumen --- + A "SF3462" + O "SF3463" + Rise Tastensperre + JCN NixAufzug + + AN "Aufzug_freiräumen" + = "Aufzug_freiräumen" + +NixAufzug: NOP 0 + + A "Aufzug_freiräumen" + = "PF3462" + = "PF3463" + = "6_HMI_Err_UH06_AMR".System.Aufzug_Vorrang + + +--- NW 5: Schleuse vor Aufzug --- + A "BG3566" + O "BG3567" + = B_aktiv + + A "DArbeitsplätze_Sensoren".Stau_BG3457.Stat.B_Akt + O "DArbeitsplätze_Sensoren".Stau_BG3447.Stat.B_Akt + O "Übergang_3446"."Am_Übergang".Stat.B_Akt + = Stau_raus + + AN "Aufzug_freiräumen" + = Fahren_Ok + +CALL FB "None" , (Schleusen_Nr:=3456, ErrQuit:=ErrQuit, B_VorSchleuse:=B_aktiv, B_InSchleuse:="BG3456", B_Zähl:="BG3457", B_Stau_raus:=Stau_raus, Start_Ok:=Fahren_Ok, Antrieb_Schleuse_aktiv:="MA0061", Antrieb_plus_aktiv:="MA0061", Schleuse_geöffnet:="MB3456", RestZeit_Bereich_plus:=?, Y_Schleuse_Auf:="DArbeitsplätze_Zylinder".Schleuse_3456.Stat.Ast, Error:=DB608.DBW342, Antrieb_Schleuse_vor:="DArbeitsplätze_Antriebe".MA0061.Stat.A_vor, Antrieb_Schleuse_start:="DArbeitsplätze_Antriebe".MA0061.Stat.A_start, Antrieb_Schleuse_stop:="DArbeitsplätze_Antriebe".MA0061.Stat.Stop_vor, Antrieb_Schleuse_PS:="DArbeitsplätze_Antriebe".MA0061.Stat.A_PS, Antrieb_plus_vor:=?, Antrieb_plus_start:=?, hStOk:=ErrAnz) + + A "DArbeitsplätze_Sensoren".Stau_BG3457.Stat.B_Akt + AN "DArbeitsplätze_Sensoren".Stau_BG3447.Stat.B_Akt + S "DArbeitsplätze_Antriebe".MA0061.Stat.A_vor + S "DArbeitsplätze_Antriebe".MA0062.Stat.A_vor + + A "DArbeitsplätze_Sensoren".Stau_BG3457.Stat.B_Akt + O "DArbeitsplätze_Sensoren".Stau_BG3457.Stat.B_Akt + S "DArbeitsplätze_Antriebe".MA0061.Stat.A_start + S "DArbeitsplätze_Antriebe".MA0062.Stat.A_start + + +--- NW 6: MA0061/0062 / Übergang 3446 --- +CALL FB "None" , (ErrQuit:=ErrQuit, B_Anfang:="BG3457", B_Am_Übergang:="BG3446", B_Stau_Antrieb_plus:="BG3447", Antrieb_aktiv:="MA0061", Antrieb_plus_aktiv:="MA0062", Antrieb_vor:="DArbeitsplätze_Antriebe".MA0061.Stat.A_vor, Antrieb_start:="DArbeitsplätze_Antriebe".MA0061.Stat.A_start, Antrieb_stop:=?, Antrieb_plus_vor:="DArbeitsplätze_Antriebe".MA0062.Stat.A_vor, Antrieb_plus_start:="DArbeitsplätze_Antriebe".MA0062.Stat.A_start) + + +--- NW 7: MA0062/0063 / Übergang 3480 --- + A "BG3481" + AN "MB3481" + = B_aktiv + +CALL FB "None" , (ErrQuit:=ErrQuit, B_Anfang:="BG3447", B_Am_Übergang:="BG3480", B_Stau_Antrieb_plus:=B_aktiv, Antrieb_aktiv:="MA0062", Antrieb_plus_aktiv:="MA0063", Antrieb_vor:="DArbeitsplätze_Antriebe".MA0062.Stat.A_vor, Antrieb_start:="DArbeitsplätze_Antriebe".MA0062.Stat.A_start, Antrieb_stop:="DArbeitsplätze_Antriebe".MA0062.Stat.A_PS, Antrieb_plus_vor:="DArbeitsplätze_Antriebe".MA0063.Stat.A_vor, Antrieb_plus_start:="DArbeitsplätze_Antriebe".MA0063.Stat.A_start) + + +--- NW 8: Schleuse vor 180 Grad-Bypass --- +CALL FB "None" , (Schleusen_Nr:=3481, ErrQuit:=ErrQuit, B_VorSchleuse:="BG3447", B_InSchleuse:="BG3481", B_AusSchleuse:=?, B_Stau_raus:=?, Start_Ok:=1, Antrieb_Schleuse_aktiv:="MA0062", Antrieb_plus_aktiv:="MA0063", Schleuse_geöffnet:="MB3481", RestZeit_Bereich_plus:=?, Y_Schleuse_Auf:="DArbeitsplätze_Zylinder".Schleuse_3481.Stat.Ast, Error:=DB608.DBW344, Antrieb_Schleuse_vor:="DArbeitsplätze_Antriebe".MA0062.Stat.A_vor, Antrieb_Schleuse_start:="DArbeitsplätze_Antriebe".MA0062.Stat.A_start, Antrieb_Schleuse_stop:="DArbeitsplätze_Antriebe".MA0062.Stat.Stop_vor, Antrieb_Schleuse_PS:="DArbeitsplätze_Antriebe".MA0062.Stat.A_PS, Antrieb_plus_vor:="DArbeitsplätze_Antriebe".MA0063.Stat.A_vor, Antrieb_plus_start:="DArbeitsplätze_Antriebe".MA0063.Stat.A_start, hStOk:=ErrAnz) // von Weiche | von Weiche + +// ByPass-Weiche wieder freigeben: + A Schleuse_3481.Dyn.Status.Trolley_draussen + R "DPS2_OmniFahren".Vorfahrt_Ausfahrweiche."Weiche_von_ByPass-Sep_belegt" + + +--- NW 9: Weiche 180 Grad-Bypass --- +CALL FB "None" , (Weichen_Nr:=3482, ErrQuit:=ErrQuit, Fahren_Ok:=1, B_Ziel_gerade:="BG3483", B_Ziel_abzweig:="BG3383", Antrieb_Weiche_aktiv:="MA0063", Antrieb_Gerade_aktiv:="MA0063", Antrieb_Abzweig_aktiv:="MA0062", Weiche_ist_AST:="MB3482", Y_Weiche_gerade:=?, Y_Weiche_abzweig:="DArbeitsplätze_Zylinder".Weiche_3482.Stat.Ast, Error:=DB608.DBW346, Antrieb_Weiche_vor:="DArbeitsplätze_Antriebe".MA0063.Stat.A_vor, Antrieb_Weiche_stop:="DArbeitsplätze_Antriebe".MA0063.Stat.Stop_vor, Antrieb_Weiche_gerade_vor:=?, Antrieb_Weiche_gerade_stop:=?, Antrieb_Weiche_abzweig_vor:="DArbeitsplätze_Antriebe".MA0062.Stat.A_vor, Antrieb_Weiche_abzweig_stop:="DArbeitsplätze_Antriebe".MA0062.Stat.Stop_vor, hStOk:=ErrAnz) // s.o. | s.o. + + +--- NW 10: MA0063 / Übergang 3485 --- +CALL FB "None" , (ErrQuit:=ErrQuit, B_Anfang:="BG3483", B_Am_Übergang:="BG3485", B_Stau_Antrieb_plus:="BG3484", Antrieb_aktiv:="MA0063", Antrieb_plus_aktiv:="MA0064", Antrieb_vor:="DArbeitsplätze_Antriebe".MA0063.Stat.A_vor, Antrieb_start:="DArbeitsplätze_Antriebe".MA0063.Stat.A_start, Antrieb_stop:="DArbeitsplätze_Antriebe".MA0063.Stat.A_PS, Antrieb_plus_vor:="DArbeitsplätze_Antriebe".MA0064.Stat.A_vor, Antrieb_plus_start:="DArbeitsplätze_Antriebe".MA0064.Stat.A_start) + + +--- NW 11: Schleuse vor 180 Grad-Turn --- +CALL FB "None" , (Schleusen_Nr:=3487, ErrQuit:=ErrQuit, B_VorSchleuse:="BG3484", B_InSchleuse:="BG3487", B_Zähl:="BG3490", B_Stau_raus:="DArbeitsplätze_Sensoren".Stau_BG3486.Stat.B_Akt, Start_Ok:=1, Antrieb_Schleuse_aktiv:="MA0064", Antrieb_plus_aktiv:="MA0064", Schleuse_geöffnet:="MB3487", RestZeit_Bereich_plus:=?, Y_Schleuse_Auf:="DArbeitsplätze_Zylinder".Schleuse_3487.Stat.Ast, Error:=DB608.DBW348, Antrieb_Schleuse_vor:="DArbeitsplätze_Antriebe".MA0064.Stat.A_vor, Antrieb_Schleuse_start:="DArbeitsplätze_Antriebe".MA0064.Stat.A_start, Antrieb_Schleuse_stop:="DArbeitsplätze_Antriebe".MA0064.Stat.Stop_vor, Antrieb_Schleuse_PS:="DArbeitsplätze_Antriebe".MA0064.Stat.A_PS, Antrieb_plus_vor:=?, Antrieb_plus_start:=?, hStOk:=ErrAnz) + + +--- NW 12: MA0064 / Übergang 3490 --- +CALL FB "None" , (ErrQuit:=ErrQuit, B_Anfang:="MB3487", B_Am_Übergang:="BG3490", B_Stau_Antrieb_plus:="BG3486", Antrieb_aktiv:="MA0064", Antrieb_plus_aktiv:="MA0065", Antrieb_vor:="DArbeitsplätze_Antriebe".MA0064.Stat.A_vor, Antrieb_start:="DArbeitsplätze_Antriebe".MA0064.Stat.A_start, Antrieb_stop:="DArbeitsplätze_Antriebe".MA0064.Stat.A_PS, Antrieb_plus_vor:="DArbeitsplätze_Antriebe".MA0065.Stat.A_vor, Antrieb_plus_start:="DArbeitsplätze_Antriebe".MA0065.Stat.A_start) + + +--- NW 13: MA0065 / Übergang 3240 --- +CALL FB "None" , (ErrQuit:=ErrQuit, B_Anfang:="BG3486", B_Am_Übergang:="BG3240", B_Stau_Antrieb_plus:="BG3244", Antrieb_aktiv:="MA0065", Antrieb_plus_aktiv:="MA0082", Antrieb_vor:="DArbeitsplätze_Antriebe".MA0065.Stat.A_vor, Antrieb_start:="DArbeitsplätze_Antriebe".MA0065.Stat.A_start, Antrieb_stop:="DArbeitsplätze_Antriebe".MA0065.Stat.A_PS, Antrieb_plus_vor:="DArbeitsplätze_Antriebe".MA0082.Stat.A_vor, Antrieb_plus_start:="DArbeitsplätze_Antriebe".MA0082.Stat.A_start) + + +--- NW 14: Störungen anzeigen --- + A ErrAnz + R ErrAnz + S "DAMR_Bereich".A01_UH06.StOk_blinken + + +--- NW 15: Alle Arbeitsplätze anfahren --- + CLR // Für inbetriebnahme + S Alle_ABPs_anfahren + + +--- NW 16: Simulation an ABP zum Weiterfahren --- + AN "SGes".Ohne_PC_Fahren + JC No + +// T21-28 + A "SF0057" + L s5t#3s + OnDelay "T28" + A "T28" + S "DMPS1_OmniFahren".Sks_Arbeitsplatz.Dyn.SS."PC>Trolley_an_Platz_1_freigegeben" + S "DMPS1_OmniFahren".Sks_Arbeitsplatz.Dyn.SS."PC>Trolley_an_Platz_2_freigegeben" + S "DMPS1_OmniFahren".Sks_Arbeitsplatz.Dyn.SS."PC>Trolley_an_Platz_3_freigegeben" + + A "SF0055" + L s5t#3s + OnDelay "T27" + A "T27" + S "DMPS2_OmniFahren".Sks_Arbeitsplatz.Dyn.SS."PC>Trolley_an_Platz_1_freigegeben" + S "DMPS2_OmniFahren".Sks_Arbeitsplatz.Dyn.SS."PC>Trolley_an_Platz_2_freigegeben" + S "DMPS2_OmniFahren".Sks_Arbeitsplatz.Dyn.SS."PC>Trolley_an_Platz_3_freigegeben" + + A "SF0053" + L s5t#3s + OnDelay "T26" + A "T26" + S "DMPS3_OmniFahren".Sks_Arbeitsplatz.Dyn.SS."PC>Trolley_an_Platz_1_freigegeben" + S "DMPS3_OmniFahren".Sks_Arbeitsplatz.Dyn.SS."PC>Trolley_an_Platz_2_freigegeben" + S "DMPS3_OmniFahren".Sks_Arbeitsplatz.Dyn.SS."PC>Trolley_an_Platz_3_freigegeben" + + A "SF0051" + L s5t#3s + OnDelay "T25" + A "T25" + S "DPS1_OmniFahren".Sks_Arbeitsplatz.Dyn.SS."PC>Trolley_an_Platz_1_freigegeben" + S "DPS1_OmniFahren".Sks_Arbeitsplatz.Dyn.SS."PC>Trolley_an_Platz_2_freigegeben" + S "DPS1_OmniFahren".Sks_Arbeitsplatz.Dyn.SS."PC>Trolley_an_Platz_3_freigegeben" + + A "SF0047" + L s5t#3s + OnDelay "T24" + A "T24" + S "DPS2_OmniFahren".Sks_Arbeitsplatz.Dyn.SS."PC>Trolley_an_Platz_1_freigegeben" + S "DPS2_OmniFahren".Sks_Arbeitsplatz.Dyn.SS."PC>Trolley_an_Platz_2_freigegeben" + S "DPS2_OmniFahren".Sks_Arbeitsplatz.Dyn.SS."PC>Trolley_an_Platz_3_freigegeben" + + A "SF0045" + L s5t#3s + OnDelay "T23" + A "T23" + S "DPS3_OmniFahren".Sks_Arbeitsplatz.Dyn.SS."PC>Trolley_an_Platz_1_freigegeben" + S "DPS3_OmniFahren".Sks_Arbeitsplatz.Dyn.SS."PC>Trolley_an_Platz_2_freigegeben" + S "DPS3_OmniFahren".Sks_Arbeitsplatz.Dyn.SS."PC>Trolley_an_Platz_3_freigegeben" + + A "SF0043" + L s5t#3s + OnDelay "T22" + A "T22" + S "DPS4_OmniFahren".Sks_Arbeitsplatz.Dyn.SS."PC>Trolley_an_Platz_1_freigegeben" + S "DPS4_OmniFahren".Sks_Arbeitsplatz.Dyn.SS."PC>Trolley_an_Platz_2_freigegeben" + S "DPS4_OmniFahren".Sks_Arbeitsplatz.Dyn.SS."PC>Trolley_an_Platz_3_freigegeben" + + A "SF0041" + L s5t#3s + OnDelay "T21" + A "T21" + S "DPS5_OmniFahren".Sks_Arbeitsplatz.Dyn.SS."PC>Trolley_an_Platz_1_freigegeben" + S "DPS5_OmniFahren".Sks_Arbeitsplatz.Dyn.SS."PC>Trolley_an_Platz_2_freigegeben" + S "DPS5_OmniFahren".Sks_Arbeitsplatz.Dyn.SS."PC>Trolley_an_Platz_3_freigegeben" + +No: NOP 0 + + +--- NW 17: Ende --- + BE + diff --git a/=A01+UH06-KF00/Programmbausteine/Anlage/2_HWtoOB/Basics_HWtoOB/DHWtoOB_Antriebe.awl b/=A01+UH06-KF00/Programmbausteine/Anlage/2_HWtoOB/Basics_HWtoOB/DHWtoOB_Antriebe.awl new file mode 100644 index 0000000..7d9f359 --- /dev/null +++ b/=A01+UH06-KF00/Programmbausteine/Anlage/2_HWtoOB/Basics_HWtoOB/DHWtoOB_Antriebe.awl @@ -0,0 +1,13 @@ +=== InstanceDB 2199: DHWtoOB_Antriebe [DB] === +INTERFACE: + Input: + Output: + InOut: + Static: + MA0113 : "MAntrieb_PowerSave" + MA0114 : "MAntrieb_PowerSave" + MA0115 : "MAntrieb_PowerSave" + MA0117 : "MAntrieb_PowerSave" + MA0200 : "MAntrieb_PowerSave" + MA0201 : "MAntrieb_PowerSave" + MA0202 : "MAntrieb_PowerSave" diff --git a/=A01+UH06-KF00/Programmbausteine/Anlage/2_HWtoOB/Basics_HWtoOB/DHWtoOB_Sensoren.awl b/=A01+UH06-KF00/Programmbausteine/Anlage/2_HWtoOB/Basics_HWtoOB/DHWtoOB_Sensoren.awl new file mode 100644 index 0000000..65bbe17 --- /dev/null +++ b/=A01+UH06-KF00/Programmbausteine/Anlage/2_HWtoOB/Basics_HWtoOB/DHWtoOB_Sensoren.awl @@ -0,0 +1,17 @@ +=== InstanceDB 2190: DHWtoOB_Sensoren [DB] === +INTERFACE: + Input: + Output: + InOut: + Static: + Stau_BG3570 : "MSensoren" + Stau_BG3544 : "MSensoren" + Stau_BG3545 : "MSensoren" + Stau_BG3551 : "MSensoren" + Stau_BG3552 : "MSensoren" + Stau_BG3554 : "MSensoren" + Stau_BG3015 : "MSensoren" + Stau_BG3013 : "MSensoren" + Stau_BG3011 : "MSensoren" + Stau_BG3071 : "MSensoren" + Stau_BG3066 : "MSensoren" diff --git a/=A01+UH06-KF00/Programmbausteine/Anlage/2_HWtoOB/Basics_HWtoOB/DHWtoOB_Zylinder.awl b/=A01+UH06-KF00/Programmbausteine/Anlage/2_HWtoOB/Basics_HWtoOB/DHWtoOB_Zylinder.awl new file mode 100644 index 0000000..b1d35d7 --- /dev/null +++ b/=A01+UH06-KF00/Programmbausteine/Anlage/2_HWtoOB/Basics_HWtoOB/DHWtoOB_Zylinder.awl @@ -0,0 +1,13 @@ +=== InstanceDB 2192: DHWtoOB_Zylinder [DB] === +INTERFACE: + Input: + Output: + InOut: + Static: + Schleuse_3546 : "MZylinder" + Schleuse_3552 : "MZylinder" + Schleuse_3014 : "MZylinder" + Schleuse_3012 : "MZylinder" + Schleuse_3010 : "MZylinder" + Schleuse_3070 : "MZylinder" + Schleuse_3073 : "MZylinder" diff --git a/=A01+UH06-KF00/Programmbausteine/Anlage/2_HWtoOB/Basics_HWtoOB/HWtoOB_Antriebe.awl b/=A01+UH06-KF00/Programmbausteine/Anlage/2_HWtoOB/Basics_HWtoOB/HWtoOB_Antriebe.awl new file mode 100644 index 0000000..ba6115a --- /dev/null +++ b/=A01+UH06-KF00/Programmbausteine/Anlage/2_HWtoOB/Basics_HWtoOB/HWtoOB_Antriebe.awl @@ -0,0 +1,119 @@ +=== FB 2199: HWtoOB_Antriebe [STL] === +INTERFACE: + Input: + Output: + InOut: + Static: + MA0113 : "MAntrieb_PowerSave" + MA0114 : "MAntrieb_PowerSave" + MA0115 : "MAntrieb_PowerSave" + MA0117 : "MAntrieb_PowerSave" + MA0200 : "MAntrieb_PowerSave" + MA0201 : "MAntrieb_PowerSave" + MA0202 : "MAntrieb_PowerSave" + Temp: + Auto : Bool // Automatik Linie ist aktiv + Hand : Bool // Hand Linie ist aktiv + BereichErr : Bool // Bereichsstörung -> Antrieb stoppen + QKontroll : Bool // Frequenzumrichter schon 3s Netz EIN + FuKontroll : Bool // Frequenzumrichter schon 3s Netz EIN + Quit : Bool // Motorschutz-Störung quittieren + Qok : Bool // Motorschutz ok + Jog1 : Bool // Geschwindigkeit 1 + Jog2 : Bool // Geschwindigkeit 2 + Betrieb : Bool // Betriebsart aktiv + FC105_RET : Word // Returnwert von FC105 + Antrieb1 : Bool // Antrieb dazuschalten + Antrieb2 : Bool // Antrieb dazuschalten + F1 : Bool // Geschwindigkeit 1 aktiviert + F2 : Bool // Geschwindigkeit 2 aktiviert + F3 : Bool // Geschwindigkeit 3 aktiviert + Constant: + +--- NW 1: Übergabe des Bereichstatus System UH06_Halle4/A01 --- + A "DAMR_Bereich".A01_UH06.Automatik + AN "DAMR_Bereich".A01_UH06.Handbetrieb + = Auto + + CLR + = Hand + + A "DAMR_Bereich".A01_UH06_Halle4.BereichErr + = BereichErr + + AN BereichErr + L S5T#1S + OnDelay "T191" + + A "T191" + = QKontroll + = FuKontroll + + A "DAMR_Bereich".A01_UH06.StOk_aktiv + = Quit + + +--- NW 2: MA0113 --- +CALL FB "None" , (Automatik:=Auto, Handbetrieb:=Hand, BereichErr:=BereichErr, Q:="FC0113", Ptc:=TRUE, Fu:=?, QKontroll:=QKontroll, FuKontroll:=?, ErrQuit:=Quit, Kontroll_B:=?, T_Nachlauf:=?, Antriebrueck:=?, Antriebvor:="MA0113", Jog1:=?, Jog2:=?, Analog:=?, QErr:="6_HMI_Err_UH06_AMR".QErr.MA0113, PtcErr:=?, FuErr:=?, Err_Antrieb_verklemmt:=?) + + + +--- NW 3: MA0114 --- +CALL FB "None" , (Automatik:=Auto, Handbetrieb:=Hand, BereichErr:=BereichErr, Q:="FC0114", Ptc:=TRUE, Fu:=?, QKontroll:=QKontroll, FuKontroll:=?, ErrQuit:=Quit, Kontroll_B:=?, T_Nachlauf:=?, Antriebrueck:=?, Antriebvor:="MA0114", Jog1:=?, Jog2:=?, Analog:=?, QErr:="6_HMI_Err_UH06_AMR".QErr.MA0114, PtcErr:=?, FuErr:=?, Err_Antrieb_verklemmt:=?) + + + +--- NW 4: MA0115 --- +CALL FB "None" , (Automatik:=Auto, Handbetrieb:=Hand, BereichErr:=BereichErr, Q:="FC0115", Ptc:=TRUE, Fu:=?, QKontroll:=QKontroll, FuKontroll:=?, ErrQuit:=Quit, Kontroll_B:=?, T_Nachlauf:=?, Antriebrueck:=?, Antriebvor:="MA0115", Jog1:=?, Jog2:=?, Analog:=?, QErr:="6_HMI_Err_UH06_AMR".QErr.MA0115, PtcErr:=?, FuErr:=?, Err_Antrieb_verklemmt:=?) + + + +--- NW 5: MA0117 --- +CALL FB "None" , (Automatik:=Auto, Handbetrieb:=Hand, BereichErr:=BereichErr, Q:="FC0117", Ptc:=TRUE, Fu:=?, QKontroll:=QKontroll, FuKontroll:=?, ErrQuit:=Quit, Kontroll_B:=?, T_Nachlauf:=?, Antriebrueck:=?, Antriebvor:="MA0117", Jog1:=?, Jog2:=?, Analog:=?, QErr:="6_HMI_Err_UH06_AMR".QErr.MA0117, PtcErr:=?, FuErr:=?, Err_Antrieb_verklemmt:=?) + + + +--- NW 6: Übergabe des Bereichstatus System UC061/A01 --- + A "DAMR_Bereich".A01_UH06.Automatik + AN "DAMR_Bereich".A01_UH06.Handbetrieb + = Auto + + CLR + = Hand + + A "DAMR_Bereich".A01_UC061.BereichErr + O "DAMR_Bereich".A01_UZ6102.Area_Stop + O "DAMR_Bereich".A01_UZ6103.Area_Stop + O "DAMR_Bereich".A01_UZ6104.Area_Stop + = BereichErr + + AN BereichErr + L S5T#1S + OnDelay "T192" + + A "T192" + = QKontroll + = FuKontroll + + A "DAMR_Bereich".A01_UC061.StOk_aktiv + = Quit + + +--- NW 7: MA00200 --- +CALL FB "None" , (Automatik:=Auto, Handbetrieb:=Hand, BereichErr:=BereichErr, Q:="FC0200", Ptc:=TRUE, Fu:=?, QKontroll:=QKontroll, FuKontroll:=?, ErrQuit:=Quit, Kontroll_B:=?, T_Nachlauf:=?, Antriebrueck:=?, Antriebvor:="MA0200", Jog1:=?, Jog2:=?, Analog:=?, QErr:="6_HMI_Err_UH06_AMR".QErr.MA0200, PtcErr:=?, FuErr:=?, Err_Antrieb_verklemmt:=?) + + + +--- NW 8: MA0201 --- +CALL FB "None" , (Automatik:=Auto, Handbetrieb:=Hand, BereichErr:=BereichErr, Q:="FC0201", Ptc:=TRUE, Fu:=?, QKontroll:=QKontroll, FuKontroll:=?, ErrQuit:=Quit, Kontroll_B:=?, T_Nachlauf:=180, Antriebrueck:=?, Antriebvor:="MA0201", Jog1:=?, Jog2:=?, Analog:=?, QErr:="6_HMI_Err_UH06_AMR".QErr.MA0201, PtcErr:=?, FuErr:=?, Err_Antrieb_verklemmt:=?) + + + +--- NW 9: MA0202 --- +CALL FB "None" , (Automatik:=Auto, Handbetrieb:=Hand, BereichErr:=BereichErr, Q:="FC0202", Ptc:=TRUE, Fu:=?, QKontroll:=QKontroll, FuKontroll:=?, ErrQuit:=Quit, Kontroll_B:=?, T_Nachlauf:=120, Antriebrueck:=?, Antriebvor:="MA0202", Jog1:=?, Jog2:=?, Analog:=?, QErr:="6_HMI_Err_UH06_AMR".QErr.MA0202, PtcErr:=?, FuErr:=?, Err_Antrieb_verklemmt:=?) + + + +--- NW 10: Ende --- + BE + diff --git a/=A01+UH06-KF00/Programmbausteine/Anlage/2_HWtoOB/Basics_HWtoOB/HWtoOB_Sensoren.awl b/=A01+UH06-KF00/Programmbausteine/Anlage/2_HWtoOB/Basics_HWtoOB/HWtoOB_Sensoren.awl new file mode 100644 index 0000000..05a01de --- /dev/null +++ b/=A01+UH06-KF00/Programmbausteine/Anlage/2_HWtoOB/Basics_HWtoOB/HWtoOB_Sensoren.awl @@ -0,0 +1,77 @@ +=== FB 2190: HWtoOB_Sensoren [STL] === +INTERFACE: + Input: + Output: + InOut: + Static: + Stau_BG3570 : "MSensoren" // Stau vor Schleuse 3540 + Stau_BG3544 : "MSensoren" // Stau am Sensor Gefälle nach BST 4 + Stau_BG3545 : "MSensoren" // Stau am Sensor Einfahrt MA0114 + Stau_BG3551 : "MSensoren" // Stau am Sensor Einfahrt MA0115 + Stau_BG3552 : "MSensoren" // Stau am Sensor Einfahrt MA0115 + Stau_BG3554 : "MSensoren" // Stau am Sensor Einfahrt MA0117 + Stau_BG3015 : "MSensoren" // Stau am Sensor Gefälle vor BST 3 + Stau_BG3013 : "MSensoren" // Stau am Sensor Gefälle nach BST 3 + Stau_BG3011 : "MSensoren" // Stau vor Schleuse 3010 + Stau_BG3071 : "MSensoren" // Stau vor Schleuse 3070 + Stau_BG3066 : "MSensoren" // Stau am Sensor Einfahrt MA0202 + Temp: + T_Ein : Int // Vorgabe Einschaltverzögerung + T_Aus : Int // Zwischenspeicher Ausschaltverzögerung + F1 : Bool // Geschwindigkeit 1 aktiviert + F2 : Bool // Geschwindigkeit 2 aktiviert + F3 : Bool // Geschwindigkeit 3 aktiviert + ESensor : Bool // Sensoren + Antrieb : Bool + VReal : Real // GeschwindigkeitinReal + Zeit : Int // Zeit für Ausschaltverzögerung LT1100 + Aktiv : Bool // Zeit aktivieren + Constant: + +--- NW 1: Sensoren entprellen --- +CALL FB "None" , (ESensor:="BG3570", T_Ein:=1, T_Aus:=30, tein_aktiv:=TRUE, taus_aktiv:=TRUE) + + +--- NW 2: Sensoren entprellen --- +CALL FB "None" , (ESensor:="BG3544", T_Ein:=80, T_Aus:=11, tein_aktiv:=TRUE, taus_aktiv:=1) + + +--- NW 3: Sensoren entprellen --- +CALL FB "None" , (ESensor:="BG3545", T_Ein:=1, T_Aus:=11, tein_aktiv:=TRUE, taus_aktiv:="MA0114") + + +--- NW 4: Sensoren entprellen --- +CALL FB "None" , (ESensor:="BG3551", T_Ein:=80, T_Aus:=11, tein_aktiv:=TRUE, taus_aktiv:="MA0115") + + +--- NW 5: Sensoren entprellen --- +CALL FB "None" , (ESensor:="BG3552", T_Ein:=1, T_Aus:=11, tein_aktiv:=TRUE, taus_aktiv:="MA0115") + + +--- NW 6: Sensoren entprellen --- +CALL FB "None" , (ESensor:="BG3554", T_Ein:=1, T_Aus:=11, tein_aktiv:=TRUE, taus_aktiv:="MA0117") + + +--- NW 7: Sensoren entprellen --- +CALL FB "None" , (ESensor:="BG3015", T_Ein:=1, T_Aus:=30, tein_aktiv:=TRUE, taus_aktiv:=1) + + +--- NW 8: Sensoren entprellen --- +CALL FB "None" , (ESensor:="BG3013", T_Ein:=1, T_Aus:=11, tein_aktiv:=TRUE, taus_aktiv:=1) + + +--- NW 9: Sensoren entprellen --- +CALL FB "None" , (ESensor:="BG3011", T_Ein:=1, T_Aus:=11, tein_aktiv:=TRUE, taus_aktiv:="MA0200") + + +--- NW 10: Sensoren entprellen --- +CALL FB "None" , (ESensor:="BG3071", T_Ein:=1, T_Aus:=11, tein_aktiv:=TRUE, taus_aktiv:="MA0201") + + +--- NW 11: Sensoren entprellen --- +CALL FB "None" , (ESensor:="BG3066", T_Ein:=1, T_Aus:=11, tein_aktiv:=TRUE, taus_aktiv:="MA0202") + + +--- NW 12: Ende --- + BE + diff --git a/=A01+UH06-KF00/Programmbausteine/Anlage/2_HWtoOB/Basics_HWtoOB/HWtoOB_Zylinder.awl b/=A01+UH06-KF00/Programmbausteine/Anlage/2_HWtoOB/Basics_HWtoOB/HWtoOB_Zylinder.awl new file mode 100644 index 0000000..42250be --- /dev/null +++ b/=A01+UH06-KF00/Programmbausteine/Anlage/2_HWtoOB/Basics_HWtoOB/HWtoOB_Zylinder.awl @@ -0,0 +1,74 @@ +=== FB 2192: HWtoOB_Zylinder [STL] === +INTERFACE: + Input: + Output: + InOut: + Static: + Schleuse_3546 : "MZylinder" // + Schleuse_3552 : "MZylinder" + Schleuse_3014 : "MZylinder" + Schleuse_3012 : "MZylinder" + Schleuse_3010 : "MZylinder" + Schleuse_3070 : "MZylinder" // + Schleuse_3073 : "MZylinder" // + Temp: + Auto : Bool // Automatik ist aktiv + Hand : Bool // Hand ist aktiv + ZylAst : Bool // Zylinder ansteuern + Constant: + +--- NW 1: Übergabe des Bereichstatus System UH06 / A01 --- + A "DAMR_Bereich".A01_UH06.Automatik + AN "DAMR_Bereich".A01_UH06.Handbetrieb + = Auto + + A "DAMR_Bereich".A01_UH06_Halle4.BereichErr + JC Next // Zylinder-Stellung nicht mehr ändern + + +--- NW 2: Schleuse_3546 --- +CALL FB "None" , (Automatik:=Auto, Handbetrieb:=FALSE, T_Ast:=0, T_Gst:=5, ZylAst:="MB3546", ZylGst:=?) + + +--- NW 3: Schleuse_3552 --- +CALL FB "None" , (Automatik:=Auto, Handbetrieb:=FALSE, T_Ast:=0, T_Gst:=5, ZylAst:="MB3552", ZylGst:=?) + + +--- NW 4: Schleuse_3014 --- +CALL FB "None" , (Automatik:=Auto, Handbetrieb:=FALSE, T_Ast:=0, T_Gst:=5, ZylAst:="MB3014", ZylGst:=?) + + +--- NW 5: Übergabe des Bereichstatus System UC061/A01 --- +Next: A "DAMR_Bereich".A01_UH06.Automatik + AN "DAMR_Bereich".A01_UH06.Handbetrieb + = Auto + + CLR + = Hand + + A "DAMR_Bereich".A01_UC061.BereichErr + O "DAMR_Bereich".A01_UZ6102.Area_Stop + O "DAMR_Bereich".A01_UZ6103.Area_Stop + O "DAMR_Bereich".A01_UZ6104.Area_Stop + JC Next2 // Zylinder-Stellung nicht mehr ändern + + +--- NW 6: Schleuse_3012 --- +CALL FB "None" , (Automatik:=Auto, Handbetrieb:=FALSE, T_Ast:=0, T_Gst:=5, ZylAst:="MB3012", ZylGst:=?) + + +--- NW 7: Schleuse_3010 --- +CALL FB "None" , (Automatik:=Auto, Handbetrieb:=FALSE, T_Ast:=0, T_Gst:=5, ZylAst:="MB3010", ZylGst:=?) + + +--- NW 8: Schleuse_3070 --- +CALL FB "None" , (Automatik:=Auto, Handbetrieb:=FALSE, T_Ast:=0, T_Gst:=5, ZylAst:="MB3070", ZylGst:=?) + + +--- NW 9: Schleuse_3073 --- +CALL FB "None" , (Automatik:=Auto, Handbetrieb:=FALSE, T_Ast:=0, T_Gst:=5, ZylAst:="MB3073", ZylGst:=?) + + +--- NW 10: Ende --- +Next2: BE + diff --git a/=A01+UH06-KF00/Programmbausteine/Anlage/2_HWtoOB/HWtoOB_Bereich.awl b/=A01+UH06-KF00/Programmbausteine/Anlage/2_HWtoOB/HWtoOB_Bereich.awl new file mode 100644 index 0000000..96b23f0 --- /dev/null +++ b/=A01+UH06-KF00/Programmbausteine/Anlage/2_HWtoOB/HWtoOB_Bereich.awl @@ -0,0 +1,23 @@ +=== FC 2100: HWtoOB_Bereich [STL] === +INTERFACE: + Input: + Output: + InOut: + Temp: + Constant: + Return: + Ret_Val : Void + +--- NW 1: Baustein-Aufrufe --- +CALL FB "HWtoOB_Sensoren" , + +CALL FB "HWtoOB_OmniFahren" , + +CALL FB "HWtoOB_Zylinder" , + +CALL FB "HWtoOB_Antriebe" , + + +--- NW 2: Ende --- + BE + diff --git a/=A01+UH06-KF00/Programmbausteine/Anlage/2_HWtoOB/Omnifahren_HWtoOB/DHWtoOB_OmniFahren.awl b/=A01+UH06-KF00/Programmbausteine/Anlage/2_HWtoOB/Omnifahren_HWtoOB/DHWtoOB_OmniFahren.awl new file mode 100644 index 0000000..cbcd810 --- /dev/null +++ b/=A01+UH06-KF00/Programmbausteine/Anlage/2_HWtoOB/Omnifahren_HWtoOB/DHWtoOB_OmniFahren.awl @@ -0,0 +1,19 @@ +=== InstanceDB 2128: DHWtoOB_OmniFahren [DB] === +INTERFACE: + Input: + Output: + InOut: + Static: + Schleuse_3546 : "MHMOmniSchleuse" + Bereich_3550 : "MHMOmniBereich_Plus" + Schleuse_3552 : "MHMOmniSchleuse" + Bereich_3016 : "MHMOmniBereich_Plus" + Schleuse_3014 : "MHMOmniSchleuse" + Schleuse_3012 : "MHMOmniSchleuse" + Schleuse_3010 : "MHMOmniSchleuse_Plus" + Schleuse_3070 : "MHMOmniSchleuse" + Schleuse_3073 : "MHMOmniSchleuse_Plus" + Trolleys_starten : Struct + Flanke : Bool + Wartezeit_aktiv : Bool + Timer_Wartenzeit : Int diff --git a/=A01+UH06-KF00/Programmbausteine/Anlage/2_HWtoOB/Omnifahren_HWtoOB/HWtoOB_OmniFahren.awl b/=A01+UH06-KF00/Programmbausteine/Anlage/2_HWtoOB/Omnifahren_HWtoOB/HWtoOB_OmniFahren.awl new file mode 100644 index 0000000..35f6d50 --- /dev/null +++ b/=A01+UH06-KF00/Programmbausteine/Anlage/2_HWtoOB/Omnifahren_HWtoOB/HWtoOB_OmniFahren.awl @@ -0,0 +1,199 @@ +=== FB 2128: HWtoOB_OmniFahren [STL] === +INTERFACE: + Input: + Output: + InOut: + Static: + Schleuse_3546 : "MHMOmniSchleuse" + Bereich_3550 : "MHMOmniBereich_Plus" + Schleuse_3552 : "MHMOmniSchleuse" + Bereich_3016 : "MHMOmniBereich_Plus" + Schleuse_3014 : "MHMOmniSchleuse" + Schleuse_3012 : "MHMOmniSchleuse" + Schleuse_3010 : "MHMOmniSchleuse_Plus" + Schleuse_3070 : "MHMOmniSchleuse" + Schleuse_3073 : "MHMOmniSchleuse_Plus" + Trolleys_starten : Struct + Flanke : Bool + Wartezeit_aktiv : Bool + Timer_Wartenzeit : Int + Temp: + ErrQuit : Bool + ErrAnz : Bool + Stau_raus : Bool + Start_ok : Bool + B_aktiv : Bool + B_vor_Schleuse : Bool + B_nach_Schleuse : Bool + Antrieb_aktiv : Bool + Antrieb_start : Bool + Antrieb_stop : Bool + Fahren_Ok : Bool + Antrieb_nicht_stoppen : Bool + Constant: + +--- NW 1: Systemzeug --- +// HW>OB-Bereich: + A "DAMR_Bereich".A01_UH06.AnlageEin + = Schleuse_3546.Dyn.Sk.Auto_akt + = Bereich_3550.Dyn.Sk.Auto_akt + = Schleuse_3552.Dyn.Sk.Auto_akt + = Bereich_3016.Dyn.Sk.Auto_akt + = Schleuse_3014.Dyn.Sk.Auto_akt + = Schleuse_3012.Dyn.Sk.Auto_akt + = Schleuse_3010.Dyn.Sk.Auto_akt + = Schleuse_3070.Dyn.Sk.Auto_akt + = Schleuse_3073.Dyn.Sk.Auto_akt + + AN "DAMR_Bereich".A01_UH06_Halle4.BereichErr + = Schleuse_3546.Dyn.Sk.Bereich_ok + = Bereich_3550.Dyn.Sk.Bereich_ok + = Schleuse_3552.Dyn.Sk.Bereich_ok + = Bereich_3016.Dyn.Sk.Bereich_ok + = Schleuse_3014.Dyn.Sk.Bereich_ok + AN "DAMR_Bereich".A01_UC061.BereichErr + = Schleuse_3012.Dyn.Sk.Bereich_ok + = Schleuse_3010.Dyn.Sk.Bereich_ok + = Schleuse_3070.Dyn.Sk.Bereich_ok + = Schleuse_3073.Dyn.Sk.Bereich_ok + + +--- NW 2: Störungen quittieren UZ0620 --- + A "DAMR_Bereich".A01_UZ0620.StOk_aktiv + O "DAMR_Bereich".A01_UH06.StOk_aktiv + = ErrQuit + + +--- NW 3: Wartezeit bis erneuter Trolleystart sinnvoll (wegen Staubildung) --- + A "MB3546" + Rise Trolleys_starten.Flanke + S Trolleys_starten.Wartezeit_aktiv + JCN Warten // Negierter Sprung + + L 15 // Wartezeit in Sekunden + T Trolleys_starten.Timer_Wartenzeit + +Warten: AN Trolleys_starten.Wartezeit_aktiv + O + A "MB3546" // Schleuse offen + AN "MA0113" // Aber Trolley fährt nicht + ON "1s-Impuls" + JC Wait + + L Trolleys_starten.Timer_Wartenzeit + + -1 + T Trolleys_starten.Timer_Wartenzeit + L 0 + >I + JC Wait + + SET + R Trolleys_starten.Wartezeit_aktiv + +Wait: NOP 0 + + +--- NW 4: Schleuse 3546 (hinter BST 4) --- + A "BG3570" + O "BG3544" + = B_vor_Schleuse + + AN Trolleys_starten.Wartezeit_aktiv + = Start_ok + +CALL FB "None" , (Schleusen_Nr:=3546, ErrQuit:=ErrQuit, B_VorSchleuse:=B_vor_Schleuse, B_InSchleuse:="BG3546", B_AusSchleuse:="BG3545", B_Stau_raus:="DHWtoOB_Sensoren".Stau_BG3545.Stat.B_Akt, Start_Ok:=Start_ok, Antrieb_Schleuse_aktiv:="MA0113", Antrieb_plus_aktiv:="MA0114", Schleuse_geöffnet:="MB3546", RestZeit_Bereich_plus:=Bereich_3550.Dyn.Restzeit, Y_Schleuse_Auf:="DHWtoOB_Zylinder".Schleuse_3546.Stat.Ast, Error:=DB608.DBW354, Antrieb_Schleuse_vor:="DHWtoOB_Antriebe".MA0113.Stat.A_vor, Antrieb_Schleuse_start:="DHWtoOB_Antriebe".MA0113.Stat.A_start, Antrieb_Schleuse_stop:="DHWtoOB_Antriebe".MA0113.Stat.Stop_vor, Antrieb_Schleuse_PS:="DHWtoOB_Antriebe".MA0113.Stat.A_PS, Antrieb_plus_vor:=Bereich_3550.Dyn.Status.Trolley_kommt_in_Bereich, Antrieb_plus_start:=?, hStOk:=ErrAnz) + + + +--- NW 5: Bereich 3550 --- + A "BG3545" + A "MB3546" + = B_vor_Schleuse + +CALL FB "None" , (Bereichs_Nr:=3550, ErrQuit:=ErrQuit, B_BereichsAnfang:=B_vor_Schleuse, B_BereichsEnde:="BG3550", B_Zähl:="BG3551", B_Stau_raus:="DHWtoOB_Sensoren".Stau_BG3551.Stat.B_Akt, Start_Ok:=1, Antrieb_Bereich_aktiv:="MA0114", Antrieb_plus_aktiv:="MA0115", RestZeit_Bereich_plus:=?, Antrieb_Bereich_vor:="DHWtoOB_Antriebe".MA0114.Stat.A_vor, Antrieb_Bereich_stop:="DHWtoOB_Antriebe".MA0114.Stat.Stop_vor, Error:=DB608.DBW170, Antrieb_Bereich_start:="DHWtoOB_Antriebe".MA0114.Stat.A_start, Antrieb_plus_vor:="DHWtoOB_Antriebe".MA0115.Stat.A_vor, Antrieb_plus_start:="DHWtoOB_Antriebe".MA0115.Stat.A_start, Antrieb_minus_vor:="DHWtoOB_Antriebe".MA0113.Stat.A_vor, hStOk:=ErrAnz) + + +--- NW 6: Schleuse 3552 --- +CALL FB "None" , (Schleusen_Nr:=3552, ErrQuit:=ErrQuit, B_VorSchleuse:="BG3551", B_InSchleuse:="BG3552", B_AusSchleuse:="BG3554", B_Stau_raus:="DHWtoOB_Sensoren".Stau_BG3554.Stat.B_Akt, Start_Ok:=1, Antrieb_Schleuse_aktiv:="MA0115", Antrieb_plus_aktiv:="MA0117", Schleuse_geöffnet:="MB3552", RestZeit_Bereich_plus:=Bereich_3016.Dyn.Restzeit, Y_Schleuse_Auf:="DHWtoOB_Zylinder".Schleuse_3552.Stat.Ast, Error:=DB608.DBW356, Antrieb_Schleuse_vor:="DHWtoOB_Antriebe".MA0115.Stat.A_vor, Antrieb_Schleuse_start:="DHWtoOB_Antriebe".MA0115.Stat.A_start, Antrieb_Schleuse_stop:="DHWtoOB_Antriebe".MA0115.Stat.Stop_vor, Antrieb_Schleuse_PS:="DHWtoOB_Antriebe".MA0115.Stat.A_PS, Antrieb_plus_vor:=Bereich_3016.Dyn.Status.Trolley_kommt_in_Bereich, Antrieb_plus_start:=?, hStOk:=ErrAnz) + + +--- NW 7: Bereich 3016 --- + A "BG3554" + A "MB3552" + = B_vor_Schleuse + +CALL FB "None" , (Bereichs_Nr:=3016, ErrQuit:=ErrQuit, B_BereichsAnfang:=B_vor_Schleuse, B_BereichsEnde:="BG3016", B_Zähl:="BG3015", B_Stau_raus:="DHWtoOB_Sensoren".Stau_BG3015.Stat.B_Akt, Start_Ok:=1, Antrieb_Bereich_aktiv:="MA0117", Antrieb_plus_aktiv:=1, RestZeit_Bereich_plus:=?, Antrieb_Bereich_vor:="DHWtoOB_Antriebe".MA0117.Stat.A_vor, Antrieb_Bereich_stop:="DHWtoOB_Antriebe".MA0117.Stat.Stop_vor, Error:=DB608.DBW154, Antrieb_Bereich_start:="DHWtoOB_Antriebe".MA0117.Stat.A_start, Antrieb_plus_vor:=?, Antrieb_plus_start:=?, Antrieb_minus_vor:="DHWtoOB_Antriebe".MA0115.Stat.A_vor, hStOk:=ErrAnz) // Ohne Antrieb + + +--- NW 8: Schleuse 3014 (vor BST 3) --- + AN "6_HMI_Err_UH06_AMR".System.Gesamt_Feueralarm + AN "6_HMI_Err_UH06_AMR".System.BST3_Feueralarm + AN "6_HMI_Err_UH06_AMR".System.BST3_Geschlossen + AN "6_HMI_Err_UH06_AMR".System."BST3_Störung" + A Schleuse_3012.Dyn.Sk.Bereich_ok + = Fahren_Ok + + A "DHWtoOB_Sensoren".Stau_BG3013.Stat.B_Akt + = Stau_raus + +CALL FB "None" , (Schleusen_Nr:=3014, ErrQuit:=ErrQuit, B_VorSchleuse:="BG3015", B_InSchleuse:="BG3014", B_AusSchleuse:="BG3013", B_Stau_raus:=Stau_raus, Start_Ok:=Fahren_Ok, Antrieb_Schleuse_aktiv:=1, Antrieb_plus_aktiv:="MA0200", Schleuse_geöffnet:="MB3014", RestZeit_Bereich_plus:=?, Y_Schleuse_Auf:="DHWtoOB_Zylinder".Schleuse_3014.Stat.Ast, Error:=DB608.DBW210, Antrieb_Schleuse_vor:=?, Antrieb_Schleuse_start:=?, Antrieb_Schleuse_stop:=?, Antrieb_Schleuse_PS:=?, Antrieb_plus_vor:="DHWtoOB_Antriebe".MA0200.Stat.A_vor, Antrieb_plus_start:="DHWtoOB_Antriebe".MA0200.Stat.A_start, hStOk:=ErrAnz) // ohne Antrieb | Ohne Antrieb + + +--- NW 9: Störungen anzeigen UZ0620 --- + A ErrAnz + R ErrAnz + S "DAMR_Bereich".A01_UZ0620.StOk_blinken + S "DAMR_Bereich".A01_UH06.StOk_blinken + + +--- NW 10: Störungen quittieren UZ6101 --- + A "DAMR_Bereich".A01_UC061.StOk_aktiv + O "DAMR_Bereich".A01_UH06.StOk_aktiv + = ErrQuit + + +--- NW 11: Schleuse 3012 (hinter BST 3) --- +CALL FB "None" , (Schleusen_Nr:=3012, ErrQuit:=ErrQuit, B_VorSchleuse:="BG3013", B_InSchleuse:="BG3012", B_AusSchleuse:="BG3011", B_Stau_raus:="DHWtoOB_Sensoren".Stau_BG3011.Stat.B_Akt, Start_Ok:=1, Antrieb_Schleuse_aktiv:="MA0200", Antrieb_plus_aktiv:="MA0200", Schleuse_geöffnet:="MB3012", RestZeit_Bereich_plus:=?, Y_Schleuse_Auf:="DHWtoOB_Zylinder".Schleuse_3012.Stat.Ast, Error:=DB608.DBW208, Antrieb_Schleuse_vor:="DHWtoOB_Antriebe".MA0200.Stat.A_vor, Antrieb_Schleuse_start:="DHWtoOB_Antriebe".MA0200.Stat.A_start, Antrieb_Schleuse_stop:="DHWtoOB_Antriebe".MA0200.Stat.Stop_vor, Antrieb_Schleuse_PS:="DHWtoOB_Antriebe".MA0200.Stat.A_PS, Antrieb_plus_vor:=?, Antrieb_plus_start:=?, hStOk:=ErrAnz) // wie oben + + + +--- NW 12: Schleuse 3010 --- +CALL FB "None" , (Schleusen_Nr:=3010, ErrQuit:=ErrQuit, B_VorSchleuse:="BG3011", B_InSchleuse:="BG3010", B_Zähl:="BG3071", B_Stau_raus:="DHWtoOB_Sensoren".Stau_BG3071.Stat.B_Akt, Start_Ok:=1, Antrieb_Schleuse_aktiv:="MA0200", Antrieb_plus_aktiv:="MA0201", Schleuse_geöffnet:="MB3010", RestZeit_Bereich_plus:=?, Y_Schleuse_Auf:="DHWtoOB_Zylinder".Schleuse_3010.Stat.Ast, Error:=DB608.DBW206, Antrieb_Schleuse_vor:="DHWtoOB_Antriebe".MA0200.Stat.A_vor, Antrieb_Schleuse_start:="DHWtoOB_Antriebe".MA0200.Stat.A_start, Antrieb_Schleuse_stop:="DHWtoOB_Antriebe".MA0200.Stat.Stop_vor, Antrieb_Schleuse_PS:="DHWtoOB_Antriebe".MA0200.Stat.A_PS, Antrieb_plus_vor:="DHWtoOB_Antriebe".MA0201.Stat.A_vor, Antrieb_plus_start:="DHWtoOB_Antriebe".MA0201.Stat.A_start, hStOk:=ErrAnz) + + + +--- NW 13: Schleuse 3070 --- +CALL FB "None" , (Schleusen_Nr:=3070, ErrQuit:=ErrQuit, B_VorSchleuse:="BG3071", B_InSchleuse:="BG3070", B_AusSchleuse:="BG3066", B_Stau_raus:="DHWtoOB_Sensoren".Stau_BG3066.Stat.B_Akt, Start_Ok:=1, Antrieb_Schleuse_aktiv:="MA0201", Antrieb_plus_aktiv:="MA0202", Schleuse_geöffnet:="MB3070", RestZeit_Bereich_plus:=?, Y_Schleuse_Auf:="DHWtoOB_Zylinder".Schleuse_3070.Stat.Ast, Error:=DB608.DBW214, Antrieb_Schleuse_vor:="DHWtoOB_Antriebe".MA0201.Stat.A_vor, Antrieb_Schleuse_start:="DHWtoOB_Antriebe".MA0201.Stat.A_start, Antrieb_Schleuse_stop:="DHWtoOB_Antriebe".MA0201.Stat.Stop_vor, Antrieb_Schleuse_PS:="DHWtoOB_Antriebe".MA0201.Stat.A_PS, Antrieb_plus_vor:="DHWtoOB_Antriebe".MA0202.Stat.A_vor, Antrieb_plus_start:="DHWtoOB_Antriebe".MA0202.Stat.A_start, hStOk:=ErrAnz) + + + +--- NW 14: Schleuse 3073 (Übergabe an Outbound / UH07) --- +// Schnittstelle von Outbound: (Verarbeitung s.u.) + A "DSchnittstelle_zu_Outbound".From_UH07.MA0200_aktiv + + A "DSchnittstelle_zu_Outbound".From_UH07.MA0200_kein_Stau + +// Pro Zyklus neu erzeugen: + SET + R "DSchnittstelle_zu_Outbound".To_UH07.MA0200_A_vor + R "DSchnittstelle_zu_Outbound".To_UH07.MA0200_A_start + +CALL FB "None" , (Schleusen_Nr:=3073, ErrQuit:=ErrQuit, B_VorSchleuse:="BG3066", B_InSchleuse:="BG3073", B_Zähl:="DSchnittstelle_zu_Outbound".From_UH07.BG3724_aktiv, B_Stau_raus:=0, Start_Ok:="DSchnittstelle_zu_Outbound".From_UH07.MA0200_kein_Stau, Antrieb_Schleuse_aktiv:="MA0202", Antrieb_plus_aktiv:="DSchnittstelle_zu_Outbound".From_UH07.MA0200_aktiv, Schleuse_geöffnet:="MB3073", RestZeit_Bereich_plus:=?, Y_Schleuse_Auf:="DHWtoOB_Zylinder".Schleuse_3073.Stat.Ast, Error:=DB608.DBW362, Antrieb_Schleuse_vor:="DHWtoOB_Antriebe".MA0202.Stat.A_vor, Antrieb_Schleuse_start:="DHWtoOB_Antriebe".MA0202.Stat.A_start, Antrieb_Schleuse_stop:="DHWtoOB_Antriebe".MA0202.Stat.Stop_vor, Antrieb_Schleuse_PS:="DHWtoOB_Antriebe".MA0202.Stat.A_PS, Antrieb_plus_vor:="DSchnittstelle_zu_Outbound".To_UH07.MA0200_A_vor, Antrieb_plus_start:="DSchnittstelle_zu_Outbound".To_UH07.MA0200_A_start, hStOk:=ErrAnz) + +// Schnittstelle zu Outbound: (Verarbeitung s.o.) + A "DSchnittstelle_zu_Outbound".To_UH07.MA0200_A_vor + + A "DSchnittstelle_zu_Outbound".To_UH07.MA0200_A_start + CLR + + +--- NW 15: Störungen anzeigen UZ6101 --- + A ErrAnz + R ErrAnz + S "DAMR_Bereich".A01_UC061.StOk_blinken + S "DAMR_Bereich".A01_UH06.StOk_blinken + + +--- NW 16: Ende --- + BE + diff --git a/=A01+UH06-KF00/Programmbausteine/Anlage/2_HWtoOB/Omnifahren_HWtoOB/HWtoOB_Ziel_FC.awl b/=A01+UH06-KF00/Programmbausteine/Anlage/2_HWtoOB/Omnifahren_HWtoOB/HWtoOB_Ziel_FC.awl new file mode 100644 index 0000000..139a3d9 --- /dev/null +++ b/=A01+UH06-KF00/Programmbausteine/Anlage/2_HWtoOB/Omnifahren_HWtoOB/HWtoOB_Ziel_FC.awl @@ -0,0 +1,50 @@ +=== FC 2181: HWtoOB_Ziel_FC [STL] === +INTERFACE: + Input: + Output: + InOut: + Temp: + Ziel_hex : Word + Ziel_int : Int + Zielebene : Word + Error : Byte + Position : Int + Lager_DB : Int + Lager_DW : Int + AR1Zeiger : DWord // Statt AR1 (ging nur bis DB-Länge <= 8191 Bytes) + AR1Start : DInt // Startwert mit Offset 0 + SSDW : Int + EndZiel : Word + Variante : Int + AbrufID : DInt + Fahrlisten_TrolleyID : DInt + Fahrlisten_AbrufID : DInt + Fahrlisten_Lager : Int + Trolley_unbekannt : Bool // Trolley ist nicht in DL + Express_Abruf : Bool + Constant: + Return: + Ret_Val : Void + +--- NW 1: Rückmeldung --- + SET // Rückmeldungen erst mal resetten + R "M180.6" // Weiterfahrt von Ziel-FC erlaubt + + +--- NW 2: Schleuse 3014: (BST 3) --- + L "MW190" + L 3014 // Aufruf von Schleuse XXXX? + <>I // Nein! + JC X3014E + + SET + S "M180.6" // Weiterfahrt ist erlaubt + + BEU + +X3014E: NOP 0 + + +--- NW 3: Ende --- + BE + diff --git a/=A01+UH06-KF00/Programmbausteine/Anlage/AMR_Bereich.awl b/=A01+UH06-KF00/Programmbausteine/Anlage/AMR_Bereich.awl new file mode 100644 index 0000000..0e375f7 --- /dev/null +++ b/=A01+UH06-KF00/Programmbausteine/Anlage/AMR_Bereich.awl @@ -0,0 +1,1572 @@ +=== FB 1001: AMR_Bereich [STL] === +INTERFACE: + Input: + Output: + InOut: + Static: + A01_UH06 : Struct // AMR: Hauptschrank + Anlauf : Bool // Anlauf, Wartezeit wegen Bussystem + AnlageEin : Bool // Anlage ist Ein***************************************************************** + Not_Aus : Struct // Not-Aus-Störungen + ausgeloest : Bool // Not-Aus hat ausgelöst + Von_OB1 : Bool // Outbound1-Kreis hat ausgelöst + Von_OB2 : Bool // Outbound2-Kreis hat ausgelöst + Von_ILS1 : Bool // ILS1-Kreis hat ausgelöst + Von_ILS2 : Bool // ILS2-Kreis hat ausgelöst + UH06 : Bool // AMR: Not-Aus am Schaltschrank UH06 betätigt + UZ0601 : Bool // AMR: Not-Aus am MPS1 betätigt + UZ0602 : Bool // AMR: Not-Aus am MPS2 betätigt + UZ0603 : Bool // AMR: Not-Aus am MPS3 betätigt + UZ0611 : Bool // AMR: Not-Aus am PS1 betätigt + UZ0612 : Bool // AMR: Not-Aus am PS2 betätigt + UZ0613 : Bool // AMR: Not-Aus am PS3 betätigt + UZ0614 : Bool // AMR: Not-Aus am PS4 betätigt + UZ0615 : Bool // AMR: Not-Aus am PS5 betätigt + UZ0621 : Bool // AMR: Zuführung AMRs (MPS2) + UZ0622 : Bool // AMR: Zuführung AMRs (PS4/5) + NotErr : Bool // Not-Aus ist betätigt (Kreis) + PnErr : Bool // Pneumatik-Versorgung fehlt + SiErr : Bool // Sicherungsfall + MotErr : Bool // Motorschutz hat ausgelöst + Phasen : Bool // Phasenwächter + K10Err : Bool // Hauptschütz unklar + Brandfall : Bool // Brandmeldung + Automatik : Bool // Automatik + Handbetrieb : Bool // Handbetrieb aktiv + BereichErr : Bool // Bereich hat eine Systemstörung -> Antriebe stoppen + StOk_blinken : Bool // Start n. Störung-Anzeige blinken lassen + StOk_Flanke : Bool // Flankenmerker + StOk_aktiv : Bool // Impuls + BereichErr_old : Bool // Bereich hatte eine Systemstörung -> Anfahrwarnung + Anfahrwarnung : Bool // Anfahrwarnung in Signal-Tower + A01_UH06_Halle4 : Struct // AMR: Hauptschrank / Halle 4 + Not_Aus : Struct // Not-Aus-Störungen + ausgeloest : Bool // Not-Aus hat ausgelöst + UZ0620 : Bool // AMR: Highway (vor AMR-Bereich/BST4) + NotErr : Bool // Not-Aus ist betätigt (Kreis) + K10Err : Bool // Hauptschütz unklar + BereichErr : Bool // Bereich hat eine Systemstörung -> Antriebe stoppen + BereichErr_old : Bool // Bereich hatte eine Systemstörung -> Anfahrwarnung + Anfahrwarnung : Bool // Anfahrwarnung in Signal-Tower + A01_UC061 : Struct // AMR: Unterverteiler UC061 + Not_Aus : Struct // Not-Aus-Störungen + ausgeloest : Bool // Not-Aus hat ausgelöst + UC061 : Bool // AMR: Not-Aus am Schaltschrank UC061 betätigt + UZ6102 : Bool // AMR: Not-Aus an Zuführung (MPS2) betätigt + UZ6103 : Bool // AMR: Not-Aus an Zuführung (PS4/5) betätigt + UZ6104 : Bool // AMR: Not-Aus an Zuführung (PS5) betätigt + NotErr : Bool // Not-Aus ist betätigt (Kreis) + PnErr : Bool // Pneumatik-Versorgung fehlt + SiErr : Bool // Sicherungsfall + MotErr : Bool // Motorschutz hat ausgelöst + K10Err : Bool // Hauptschütz unklar + BereichErr : Bool // Bereich hat eine Systemstörung -> Antriebe stoppen + StOk_blinken : Bool // Start n. Störung-Anzeige blinken lassen + StOk_Flanke : Bool // Flankenmerker + StOk_aktiv : Bool // Impuls + BereichErr_old : Bool // Bereich hatte eine Systemstörung -> Anfahrwarnung + Anfahrwarnung : Bool // Anfahrwarnung in Signal-Tower + A01_UZ0601 : Struct // AMR: MPS 1 + StOk_blinken : Bool // Start n. Störung-Anzeige blinken lassen + StOk_Flanke : Bool // Flankenmerker + StOk_aktiv : Bool // Impuls + A01_UZ0602 : Struct // AMR: MPS 2 + StOk_blinken : Bool // Start n. Störung-Anzeige blinken lassen + StOk_Flanke : Bool // Flankenmerker + StOk_aktiv : Bool // Impuls + A01_UZ0603 : Struct // AMR: MPS 3 + StOk_blinken : Bool // Start n. Störung-Anzeige blinken lassen + StOk_Flanke : Bool // Flankenmerker + StOk_aktiv : Bool // Impuls + A01_UZ0611 : Struct // AMR: PS 1 + StOk_blinken : Bool // Start n. Störung-Anzeige blinken lassen + StOk_Flanke : Bool // Flankenmerker + StOk_aktiv : Bool // Impuls + A01_UZ0612 : Struct // AMR: PS 2 + StOk_blinken : Bool // Start n. Störung-Anzeige blinken lassen + StOk_Flanke : Bool // Flankenmerker + StOk_aktiv : Bool // Impuls + A01_UZ0613 : Struct // AMR: PS 3 + StOk_blinken : Bool // Start n. Störung-Anzeige blinken lassen + StOk_Flanke : Bool // Flankenmerker + StOk_aktiv : Bool // Impuls + A01_UZ0614 : Struct // AMR: PS 4 + StOk_blinken : Bool // Start n. Störung-Anzeige blinken lassen + StOk_Flanke : Bool // Flankenmerker + StOk_aktiv : Bool // Impuls + A01_UZ0615 : Struct // AMR: PS 5 + StOk_blinken : Bool // Start n. Störung-Anzeige blinken lassen + StOk_Flanke : Bool // Flankenmerker + StOk_aktiv : Bool // Impuls + A01_UZ0620 : Struct // AMR: Highway (vor AMR-Bereich/BST4) + StOk_blinken : Bool // Start n. Störung-Anzeige blinken lassen + StOk_Flanke : Bool // Flankenmerker + StOk_aktiv : Bool // Impuls + A01_UZ0621 : Struct // AMR: Zuführung AMRs (MPS2) + StOk_blinken : Bool // Start n. Störung-Anzeige blinken lassen + StOk_Flanke : Bool // Flankenmerker + StOk_aktiv : Bool // Impuls + A01_UZ0622 : Struct // AMR: Zuführung AMRs (PS4/5) + StOk_blinken : Bool // Start n. Störung-Anzeige blinken lassen + StOk_Flanke : Bool // Flankenmerker + StOk_aktiv : Bool // Impuls + A01_UZ6102 : Struct // AMR: Zuführung MPS2 + StOk_blinken : Bool // Start n. Störung-Anzeige blinken lassen + StOk_Flanke : Bool // Flankenmerker + StOk_aktiv : Bool // Impuls + Area_Stop : Bool + A01_UZ6103 : Struct // AMR: Zuführung PS4/5 + StOk_blinken : Bool // Start n. Störung-Anzeige blinken lassen + StOk_Flanke : Bool // Flankenmerker + StOk_aktiv : Bool // Impuls + Area_Stop : Bool + A01_UZ6104 : Struct // AMR: Zuführung PS5 + StOk_blinken : Bool // Start n. Störung-Anzeige blinken lassen + StOk_Flanke : Bool // Flankenmerker + StOk_aktiv : Bool // Impuls + Area_Stop : Bool + ErrDD : DInt + ErrBits : Int + Simulation : Struct + aktiv : Bool + Wartezeit_ok : Bool + AMR : Word + MSekunden : Byte + Temp: + Quit_aktiv : Bool + Not_Err : Bool // Ein Not-Aus-Taster noch betätigt + Not_Akt : Bool // Ein Not-Aus-Störung noch nicht quittiert + Stoerung : Bool + Meldung : Bool + ProfibusError : Bool + Störung_vorhanden : Bool + Constant: + +--- NW 1: Anlage ein/aus, Anzeigen --- + A "SF0001" + A "SF0000" + AN A01_UH06.AnlageEin + AN "6_HMI_Err_UH06_AMR".System.Gesamt_Feueralarm + S A01_UH06.AnlageEin + + AN "SF0000" + O "6_HMI_Err_UH06_AMR".System.Gesamt_Feueralarm + O "6_HMI_Err_UH06_AMR".Kommunikation.SendFIFO_Port1 + O "6_HMI_Err_UH06_AMR".Kommunikation.SendFIFO_Port2 + R A01_UH06.AnlageEin + + A A01_UH06.AnlageEin + = "PF0001" + = A01_UH06.Automatik + + AN A01_UH06.Automatik + = "6_HMI_Err_UH06_AMR".System.Anlage_aus + + +--- NW 2: Störungen quittieren --- + A "SF0002" + Rise A01_UH06.StOk_Flanke + = A01_UH06.StOk_aktiv // Impuls Störungen quittieren + + A "SF0177" + Rise A01_UC061.StOk_Flanke + = A01_UC061.StOk_aktiv // Impuls Störungen quittieren + + A "SF0057" + Rise A01_UZ0601.StOk_Flanke + = A01_UZ0601.StOk_aktiv // Impuls Störungen quittieren + + A "SF0055" + Rise A01_UZ0602.StOk_Flanke + = A01_UZ0602.StOk_aktiv // Impuls Störungen quittieren + + A "SF0053" + Rise A01_UZ0603.StOk_Flanke + = A01_UZ0603.StOk_aktiv // Impuls Störungen quittieren + + A "SF0051" + Rise A01_UZ0611.StOk_Flanke + = A01_UZ0611.StOk_aktiv // Impuls Störungen quittieren + + A "SF0047" + Rise A01_UZ0612.StOk_Flanke + = A01_UZ0612.StOk_aktiv // Impuls Störungen quittieren + + A "SF0045" + Rise A01_UZ0613.StOk_Flanke + = A01_UZ0613.StOk_aktiv // Impuls Störungen quittieren + + A "SF0043" + Rise A01_UZ0614.StOk_Flanke + = A01_UZ0614.StOk_aktiv // Impuls Störungen quittieren + + A "SF0041" + Rise A01_UZ0615.StOk_Flanke + = A01_UZ0615.StOk_aktiv // Impuls Störungen quittieren + + A "SF0121" + Rise A01_UZ0620.StOk_Flanke + = A01_UZ0620.StOk_aktiv // Impuls Störungen quittieren + + A "SF0123" + Rise A01_UZ0621.StOk_Flanke + = A01_UZ0621.StOk_aktiv // Impuls Störungen quittieren + + A "SF0125" + Rise A01_UZ0622.StOk_Flanke + = A01_UZ0622.StOk_aktiv // Impuls Störungen quittieren + + A "SF0183" + Rise A01_UZ6102.StOk_Flanke + = A01_UZ6102.StOk_aktiv // Impuls Störungen quittieren + + A "SF0185" + Rise A01_UZ6103.StOk_Flanke + = A01_UZ6103.StOk_aktiv // Impuls Störungen quittieren + + A "SF0187" + Rise A01_UZ6104.StOk_Flanke + = A01_UZ6104.StOk_aktiv // Impuls Störungen quittieren + + +--- NW 3: UH06: Pneumatik-Störung --- + A "BP0004" + L S5T#10S // Damit Druck aufgebaut werden kann ! + OnDelay "T201" + +// Störung kann quittiert werden: + A "T201" + A "6_HMI_Err_UH06_AMR".VErr.Pn_UH06 + S A01_UH06.StOk_blinken + +// Störung quittieren: + A A01_UH06.StOk_aktiv // Impuls Störungen quittieren //Störungen quittieren + A "T201" + R "6_HMI_Err_UH06_AMR".VErr.Pn_UH06 + +// Störung aktiv: + AN "T201" + S "6_HMI_Err_UH06_AMR".VErr.Pn_UH06 + + A "6_HMI_Err_UH06_AMR".VErr.Pn_UH06 + = A01_UH06.PnErr + +// Anzeige: + A "6_HMI_Err_UH06_AMR".VErr.Pn_UH06 + = "PF0003" + + +--- NW 4: UH06: Phasenausfall --- +// Störung kann quittiert werden: + A "6_HMI_Err_UH06_AMR".VErr.Phasen + A "DI0005" + S A01_UH06.StOk_blinken + +// Impuls Störungen quittieren + A A01_UH06.StOk_aktiv + A "DI0005" + R "6_HMI_Err_UH06_AMR".VErr.Phasen + +// Störung aktiv: + AN "DI0005" + S "6_HMI_Err_UH06_AMR".VErr.Phasen + + +--- NW 5: UH06: Sicherungsfall --- +// Störung kann quittiert werden: + A "DI0006" + A "6_HMI_Err_UH06_AMR".VErr.FC0006 + O + A "DI0021" + A "6_HMI_Err_UH06_AMR".VErr.FC0021 + O + A "DI0022" + A "6_HMI_Err_UH06_AMR".VErr.FC0022 + O + A "DI0023" + A "6_HMI_Err_UH06_AMR".VErr.FC0023 + O + A "DI0024" + A "6_HMI_Err_UH06_AMR".VErr.FC0024 + O + A "DI0025" + A "6_HMI_Err_UH06_AMR".VErr.FC0025 + S A01_UH06.StOk_blinken + +// Störung quittieren: + A A01_UH06.StOk_aktiv // Impuls Störungen quittieren + R "6_HMI_Err_UH06_AMR".VErr.FC0006 + R "6_HMI_Err_UH06_AMR".VErr.Frei122 + R "6_HMI_Err_UH06_AMR".VErr.FC0021 + R "6_HMI_Err_UH06_AMR".VErr.FC0022 + R "6_HMI_Err_UH06_AMR".VErr.FC0023 + R "6_HMI_Err_UH06_AMR".VErr.FC0024 + R "6_HMI_Err_UH06_AMR".VErr.FC0025 + R "6_HMI_Err_UH06_AMR".VErr.Frei130 + +// Störung aktiv: + AN "DI0006" + S "6_HMI_Err_UH06_AMR".VErr.FC0006 + + AN "DI0021" + S "6_HMI_Err_UH06_AMR".VErr.FC0021 + + AN "DI0022" + S "6_HMI_Err_UH06_AMR".VErr.FC0022 + + AN "DI0023" + S "6_HMI_Err_UH06_AMR".VErr.FC0023 + + AN "DI0024" + S "6_HMI_Err_UH06_AMR".VErr.FC0024 + + AN "DI0025" + S "6_HMI_Err_UH06_AMR".VErr.FC0025 + +// Sicherungs-Störung gesamt: + A "6_HMI_Err_UH06_AMR".VErr.FC0006 + O "6_HMI_Err_UH06_AMR".VErr.FC0021 + O "6_HMI_Err_UH06_AMR".VErr.FC0022 + O "6_HMI_Err_UH06_AMR".VErr.FC0023 + O "6_HMI_Err_UH06_AMR".VErr.FC0024 + O "6_HMI_Err_UH06_AMR".VErr.FC0025 + O "6_HMI_Err_UH06_AMR".VErr.Phasen + = A01_UH06.SiErr + +// Anzeige: + A "6_HMI_Err_UH06_AMR".VErr.Phasen + A "Clock_1Hz" + O A01_UH06.SiErr + = "PF0005" + + +--- NW 6: UH06: Motorschutz-Störung ist aktiv --- +// Störung kann quittiert werden: + A "6_HMI_Err_UH06_AMR".QErr.MA0060 + A "FC0060" + O + A "6_HMI_Err_UH06_AMR".QErr.MA0061 + A "FC0061" + O + A "6_HMI_Err_UH06_AMR".QErr.MA0062 + A "FC0062" + O + A "6_HMI_Err_UH06_AMR".QErr.MA0063 + A "FC0063" + O + A "6_HMI_Err_UH06_AMR".QErr.MA0064 + A "FC0064" + O + A "6_HMI_Err_UH06_AMR".QErr.MA0065 + A "FC0065" + O + A "6_HMI_Err_UH06_AMR".QErr.MA0066 + A "FC0066" + O + A "6_HMI_Err_UH06_AMR".QErr.MA0067 + A "FC0067" + O + A "6_HMI_Err_UH06_AMR".QErr.MA0070 + A "FC0070" + O + A "6_HMI_Err_UH06_AMR".QErr.MA0071 + A "FC0071" + O + A "6_HMI_Err_UH06_AMR".QErr.MA0072 + A "FC0072" + O + A "6_HMI_Err_UH06_AMR".QErr.MA0073 + A "FC0073" + O + A "6_HMI_Err_UH06_AMR".QErr.MA0074 + A "FC0074" + O + A "6_HMI_Err_UH06_AMR".QErr.MA0075 + A "FC0075" + O + A "6_HMI_Err_UH06_AMR".QErr.MA0076 + A "FC0076" + O + A "6_HMI_Err_UH06_AMR".QErr.MA0077 + A "FC0077" + O + A "6_HMI_Err_UH06_AMR".QErr.MA0080 + A "FC0080" + O + A "6_HMI_Err_UH06_AMR".QErr.MA0081 + A "FC0081" + O + A "6_HMI_Err_UH06_AMR".QErr.MA0082 + A "FC0082" + O + A "6_HMI_Err_UH06_AMR".QErr.MA0083 + A "FC0083" + O + A "6_HMI_Err_UH06_AMR".QErr.MA0084 + A "FC0084" + O + A "6_HMI_Err_UH06_AMR".QErr.MA0085 + A "FC0085" + O + A "6_HMI_Err_UH06_AMR".QErr.MA0086 + A "FC0086" + O + A "6_HMI_Err_UH06_AMR".QErr.MA0087 + A "FC0087" + O + A "6_HMI_Err_UH06_AMR".QErr.MA0090 + A "FC0090" + O + A "6_HMI_Err_UH06_AMR".QErr.MA0091 + A "FC0091" + O + A "6_HMI_Err_UH06_AMR".QErr.MA0092 + A "FC0092" + O + A "6_HMI_Err_UH06_AMR".QErr.MA0093 + A "FC0093" + O + A "6_HMI_Err_UH06_AMR".QErr.MA0094 + A "FC0094" + O + A "6_HMI_Err_UH06_AMR".QErr.MA0095 + A "FC0095" + O + A "6_HMI_Err_UH06_AMR".QErr.MA0096 + A "FC0096" + O + A "6_HMI_Err_UH06_AMR".QErr.MA0097 + A "FC0097" + O + A "6_HMI_Err_UH06_AMR".QErr.MA0100 + A "FC0100" + O + A "6_HMI_Err_UH06_AMR".QErr.MA0101 + A "FC0101" + O + A "6_HMI_Err_UH06_AMR".QErr.MA0102 + A "FC0102" + O + A "6_HMI_Err_UH06_AMR".QErr.MA0103 + A "FC0103" + O + A "6_HMI_Err_UH06_AMR".QErr.MA0104 + A "FC0104" + O + A "6_HMI_Err_UH06_AMR".QErr.MA0105 + A "FC0105" + O + A "6_HMI_Err_UH06_AMR".QErr.MA0106 + A "FC0106" + O + A "6_HMI_Err_UH06_AMR".QErr.MA0107 + A "FC0107" + O + A "6_HMI_Err_UH06_AMR".QErr.MA0110 + A "FC0110" + O + A "6_HMI_Err_UH06_AMR".QErr.MA0111 + A "FC0111" + O + A "6_HMI_Err_UH06_AMR".QErr.MA0112 + A "FC0112" + O + A "6_HMI_Err_UH06_AMR".QErr.MA0113 + A "FC0113" + O + A "6_HMI_Err_UH06_AMR".QErr.MA0114 + A "FC0114" + O + A "6_HMI_Err_UH06_AMR".QErr.MA0115 + A "FC0115" + O + A "6_HMI_Err_UH06_AMR".QErr.MA0116 + A "FC0116" + O + A "6_HMI_Err_UH06_AMR".QErr.MA0117 + A "FC0117" + O + A "6_HMI_Err_UH06_AMR".QErr.MA0130 + A "FC0130" + O + A "6_HMI_Err_UH06_AMR".QErr.MA0131 + A "FC0131" + S A01_UH06.StOk_blinken + +// Störung quittieren: +// wird im Lastbaustein gemacht + +// Störung aktiv: +// wird im Lastbaustein gemacht + +// Motorschutz-Störung gesamt: + A "6_HMI_Err_UH06_AMR".QErr.MA0060 + O "6_HMI_Err_UH06_AMR".QErr.MA0061 + O "6_HMI_Err_UH06_AMR".QErr.MA0062 + O "6_HMI_Err_UH06_AMR".QErr.MA0063 + O "6_HMI_Err_UH06_AMR".QErr.MA0064 + O "6_HMI_Err_UH06_AMR".QErr.MA0065 + O "6_HMI_Err_UH06_AMR".QErr.MA0066 + O "6_HMI_Err_UH06_AMR".QErr.MA0067 + O "6_HMI_Err_UH06_AMR".QErr.MA0070 + O "6_HMI_Err_UH06_AMR".QErr.MA0071 + O "6_HMI_Err_UH06_AMR".QErr.MA0072 + O "6_HMI_Err_UH06_AMR".QErr.MA0073 + O "6_HMI_Err_UH06_AMR".QErr.MA0074 + O "6_HMI_Err_UH06_AMR".QErr.MA0075 + O "6_HMI_Err_UH06_AMR".QErr.MA0076 + O "6_HMI_Err_UH06_AMR".QErr.MA0077 + O "6_HMI_Err_UH06_AMR".QErr.MA0080 + O "6_HMI_Err_UH06_AMR".QErr.MA0081 + O "6_HMI_Err_UH06_AMR".QErr.MA0082 + O "6_HMI_Err_UH06_AMR".QErr.MA0083 + O "6_HMI_Err_UH06_AMR".QErr.MA0084 + O "6_HMI_Err_UH06_AMR".QErr.MA0085 + O "6_HMI_Err_UH06_AMR".QErr.MA0086 + O "6_HMI_Err_UH06_AMR".QErr.MA0087 + O "6_HMI_Err_UH06_AMR".QErr.MA0090 + O "6_HMI_Err_UH06_AMR".QErr.MA0091 + O "6_HMI_Err_UH06_AMR".QErr.MA0092 + O "6_HMI_Err_UH06_AMR".QErr.MA0093 + O "6_HMI_Err_UH06_AMR".QErr.MA0094 + O "6_HMI_Err_UH06_AMR".QErr.MA0095 + O "6_HMI_Err_UH06_AMR".QErr.MA0096 + O "6_HMI_Err_UH06_AMR".QErr.MA0097 + O "6_HMI_Err_UH06_AMR".QErr.MA0100 + O "6_HMI_Err_UH06_AMR".QErr.MA0101 + O "6_HMI_Err_UH06_AMR".QErr.MA0102 + O "6_HMI_Err_UH06_AMR".QErr.MA0103 + O "6_HMI_Err_UH06_AMR".QErr.MA0104 + O "6_HMI_Err_UH06_AMR".QErr.MA0105 + O "6_HMI_Err_UH06_AMR".QErr.MA0106 + O "6_HMI_Err_UH06_AMR".QErr.MA0107 + O "6_HMI_Err_UH06_AMR".QErr.MA0110 + O "6_HMI_Err_UH06_AMR".QErr.MA0111 + O "6_HMI_Err_UH06_AMR".QErr.MA0112 + O "6_HMI_Err_UH06_AMR".QErr.MA0113 + O "6_HMI_Err_UH06_AMR".QErr.MA0114 + O "6_HMI_Err_UH06_AMR".QErr.MA0115 + O "6_HMI_Err_UH06_AMR".QErr.MA0116 + O "6_HMI_Err_UH06_AMR".QErr.MA0117 + O "6_HMI_Err_UH06_AMR".QErr.MA0130 + O "6_HMI_Err_UH06_AMR".QErr.MA0131 + = A01_UH06.MotErr + +// Anzeige: + A A01_UH06.MotErr + = "PF0004" + + +--- NW 7: UH06: Feueralarm --- +// Störung kann quittiert werden: + A "6_HMI_Err_UH06_AMR".System.Gesamt_Feueralarm + A "DI0033" + A "DI0034" + O + A "6_HMI_Err_UH06_AMR".System.BST3_Feueralarm + A "DI0170" + O + A "6_HMI_Err_UH06_AMR".System."BST3_Störung" + A "DI0171" + O + A "6_HMI_Err_UH06_AMR".System.BST3_Geschlossen + A "DI0172" + O + A "6_HMI_Err_UH06_AMR".System.BST4_Feueralarm + A "DI0035" + O + A "6_HMI_Err_UH06_AMR".System."BST4_Störung" + A "DI0036" + O + A "6_HMI_Err_UH06_AMR".System.BST4_Geschlossen + A "DI0037" + S A01_UH06.StOk_blinken + +// Impuls Störungen quittieren + A A01_UH06.StOk_aktiv + R "6_HMI_Err_UH06_AMR".System.Gesamt_Feueralarm + R "6_HMI_Err_UH06_AMR".System.BST3_Feueralarm + R "6_HMI_Err_UH06_AMR".System."BST3_Störung" + R "6_HMI_Err_UH06_AMR".System.BST3_Geschlossen + R "6_HMI_Err_UH06_AMR".System.BST4_Feueralarm + R "6_HMI_Err_UH06_AMR".System."BST4_Störung" + R "6_HMI_Err_UH06_AMR".System.BST4_Geschlossen + +// Störung aktiv: + AN "DI0033" + ON "DI0034" + S "6_HMI_Err_UH06_AMR".System.Gesamt_Feueralarm + + AN "DI0170" + S "6_HMI_Err_UH06_AMR".System.BST3_Feueralarm + + AN "DI0171" + S "6_HMI_Err_UH06_AMR".System."BST3_Störung" + + AN "DI0172" + S "6_HMI_Err_UH06_AMR".System.BST3_Geschlossen + + AN "DI0035" + S "6_HMI_Err_UH06_AMR".System.BST4_Feueralarm + + AN "DI0036" + S "6_HMI_Err_UH06_AMR".System."BST4_Störung" + + AN "DI0037" + S "6_HMI_Err_UH06_AMR".System.BST4_Geschlossen + +// Brandschutztür gesamt: + A "6_HMI_Err_UH06_AMR".System.Gesamt_Feueralarm + O "6_HMI_Err_UH06_AMR".System.BST3_Feueralarm + O "6_HMI_Err_UH06_AMR".System."BST3_Störung" + O "6_HMI_Err_UH06_AMR".System.BST3_Geschlossen + O "6_HMI_Err_UH06_AMR".System.BST4_Feueralarm + O "6_HMI_Err_UH06_AMR".System."BST4_Störung" + O "6_HMI_Err_UH06_AMR".System.BST4_Geschlossen + = A01_UH06.Brandfall + +// Anzeige: + A A01_UH06.Brandfall + = "PF0006" + + +--- NW 8: UH06: Not-Aus-Störung erzeugen / quittierbar / quittieren --- +// Quittierung wurd abgearbeitet: + A "DSchnittstelle_zu_Safety".FromSafety.ACK_A01_UH06_fertig + R "DSchnittstelle_zu_Safety".FromSafety.ACK_A01_UH06_fertig + R "DSchnittstelle_zu_Safety".ToSafety.ACK_A01_UH06 + +// Not-Aus nach Haupschalter ein quittieren: + A A01_UH06.StOk_aktiv // Impuls Störungen quittieren + A A01_UH06.Not_Aus.ausgeloest + S "DSchnittstelle_zu_Safety".ToSafety.ACK_A01_UH06 // Not-Aus quittieren + +// Not-Aus an UH06: + A "SF0400" + A A01_UH06.Not_Aus.UH06 + S A01_UH06.StOk_blinken // Störung quittierbar + + A A01_UH06.StOk_aktiv // Impuls Störungen quittieren //Störungen quittieren + A "SF0400" + A A01_UH06.Not_Aus.UH06 + R A01_UH06.Not_Aus.UH06 + S "DSchnittstelle_zu_Safety".ToSafety.ACK_A01_UH06 // Not-Aus quittieren + + AN "SF0400" + S A01_UH06.Not_Aus.UH06 // Störung vorhanden + + A A01_UH06.Not_Aus.UH06 // Störung vorhanden + = "6_HMI_Err_UH06_AMR".Not.UH06 // Störung an OP übergeben + +// Not-Aus an UZ0601: + A "SF0540" + A A01_UH06.Not_Aus.UZ0601 + S A01_UZ0601.StOk_blinken // Störung quittierbar + + A A01_UZ0601.StOk_aktiv // Impuls Störungen quittieren //Störungen quittieren + A "SF0540" + A A01_UH06.Not_Aus.UZ0601 + R A01_UH06.Not_Aus.UZ0601 + S "DSchnittstelle_zu_Safety".ToSafety.ACK_A01_UH06 // Not-Aus quittieren + + AN "SF0540" + S A01_UH06.Not_Aus.UZ0601 // Störung vorhanden + + A A01_UH06.Not_Aus.UZ0601 // Störung vorhanden + = "6_HMI_Err_UH06_AMR".Not.UZ0601 // Störung an OP übergeben + +// Not-Aus an UZ0602: + A "SF0473" + A A01_UH06.Not_Aus.UZ0602 + S A01_UZ0602.StOk_blinken // Störung quittierbar + + A A01_UZ0602.StOk_aktiv // Impuls Störungen quittieren //Störungen quittieren + A "SF0473" + A A01_UH06.Not_Aus.UZ0602 + R A01_UH06.Not_Aus.UZ0602 + S "DSchnittstelle_zu_Safety".ToSafety.ACK_A01_UH06 // Not-Aus quittieren + + AN "SF0473" + S A01_UH06.Not_Aus.UZ0602 // Störung vorhanden + + A A01_UH06.Not_Aus.UZ0602 // Störung vorhanden + = "6_HMI_Err_UH06_AMR".Not.UZ0602 // Störung an OP übergeben + +// Not-Aus an UZ0603: + A "SF0472" + A A01_UH06.Not_Aus.UZ0603 + S A01_UZ0603.StOk_blinken // Störung quittierbar + + A A01_UZ0603.StOk_aktiv // Impuls Störungen quittieren //Störungen quittieren + A "SF0472" + A A01_UH06.Not_Aus.UZ0603 + R A01_UH06.Not_Aus.UZ0603 + S "DSchnittstelle_zu_Safety".ToSafety.ACK_A01_UH06 // Not-Aus quittieren + + AN "SF0472" + S A01_UH06.Not_Aus.UZ0603 // Störung vorhanden + + A A01_UH06.Not_Aus.UZ0603 // Störung vorhanden + = "6_HMI_Err_UH06_AMR".Not.UZ0603 // Störung an OP übergeben + +// Not-Aus an UZ0611: + A "SF0471" + A A01_UH06.Not_Aus.UZ0611 + S A01_UZ0611.StOk_blinken // Störung quittierbar + + A A01_UZ0611.StOk_aktiv // Impuls Störungen quittieren //Störungen quittieren + A "SF0471" + A A01_UH06.Not_Aus.UZ0611 + R A01_UH06.Not_Aus.UZ0611 + S "DSchnittstelle_zu_Safety".ToSafety.ACK_A01_UH06 // Not-Aus quittieren + + AN "SF0471" + S A01_UH06.Not_Aus.UZ0611 // Störung vorhanden + + A A01_UH06.Not_Aus.UZ0611 // Störung vorhanden + = "6_HMI_Err_UH06_AMR".Not.UZ0611 // Störung an OP übergeben + +// Not-Aus an UZ0612: + A "SF0470" + A A01_UH06.Not_Aus.UZ0612 + S A01_UZ0612.StOk_blinken // Störung quittierbar + + A A01_UZ0612.StOk_aktiv // Impuls Störungen quittieren //Störungen quittieren + A "SF0470" + A A01_UH06.Not_Aus.UZ0612 + R A01_UH06.Not_Aus.UZ0612 + S "DSchnittstelle_zu_Safety".ToSafety.ACK_A01_UH06 // Not-Aus quittieren + + AN "SF0470" + S A01_UH06.Not_Aus.UZ0612 // Störung vorhanden + + A A01_UH06.Not_Aus.UZ0612 // Störung vorhanden + = "6_HMI_Err_UH06_AMR".Not.UZ0612 // Störung an OP übergeben + +// Not-Aus an UZ0613: + A "SF0403" + A A01_UH06.Not_Aus.UZ0613 + S A01_UZ0613.StOk_blinken // Störung quittierbar + + A A01_UZ0613.StOk_aktiv // Impuls Störungen quittieren //Störungen quittieren + A "SF0403" + A A01_UH06.Not_Aus.UZ0613 + R A01_UH06.Not_Aus.UZ0613 + S "DSchnittstelle_zu_Safety".ToSafety.ACK_A01_UH06 // Not-Aus quittieren + + AN "SF0403" + S A01_UH06.Not_Aus.UZ0613 // Störung vorhanden + + A A01_UH06.Not_Aus.UZ0613 // Störung vorhanden + = "6_HMI_Err_UH06_AMR".Not.UZ0613 // Störung an OP übergeben + +// Not-Aus an UZ0614: + A "SF0402" + A A01_UH06.Not_Aus.UZ0614 + S A01_UZ0614.StOk_blinken // Störung quittierbar + + A A01_UZ0614.StOk_aktiv // Impuls Störungen quittieren //Störungen quittieren + A "SF0402" + A A01_UH06.Not_Aus.UZ0614 + R A01_UH06.Not_Aus.UZ0614 + S "DSchnittstelle_zu_Safety".ToSafety.ACK_A01_UH06 // Not-Aus quittieren + + AN "SF0402" + S A01_UH06.Not_Aus.UZ0614 // Störung vorhanden + + A A01_UH06.Not_Aus.UZ0614 // Störung vorhanden + = "6_HMI_Err_UH06_AMR".Not.UZ0614 // Störung an OP übergeben + +// Not-Aus an UZ0615: + A "SF0401" + A A01_UH06.Not_Aus.UZ0615 + S A01_UZ0615.StOk_blinken // Störung quittierbar + + A A01_UZ0615.StOk_aktiv // Impuls Störungen quittieren //Störungen quittieren + A "SF0401" + A A01_UH06.Not_Aus.UZ0615 + R A01_UH06.Not_Aus.UZ0615 + S "DSchnittstelle_zu_Safety".ToSafety.ACK_A01_UH06 // Not-Aus quittieren + + AN "SF0401" + S A01_UH06.Not_Aus.UZ0615 // Störung vorhanden + + A A01_UH06.Not_Aus.UZ0615 // Störung vorhanden + = "6_HMI_Err_UH06_AMR".Not.UZ0615 // Störung an OP übergeben + +// Not-Aus an UZ0621: + A "SF0542" + A A01_UH06.Not_Aus.UZ0621 + S A01_UZ0621.StOk_blinken // Störung quittierbar + + A A01_UZ0621.StOk_aktiv // Impuls Störungen quittieren //Störungen quittieren + A "SF0542" + A A01_UH06.Not_Aus.UZ0621 + R A01_UH06.Not_Aus.UZ0621 + S "DSchnittstelle_zu_Safety".ToSafety.ACK_A01_UH06 // Not-Aus quittieren + + AN "SF0542" + S A01_UH06.Not_Aus.UZ0621 // Störung vorhanden + + A A01_UH06.Not_Aus.UZ0621 // Störung vorhanden + = "6_HMI_Err_UH06_AMR".Not.UZ0621 // Störung an OP übergeben + +// Not-Aus an UZ0622: + A "SF0543" + A A01_UH06.Not_Aus.UZ0622 + S A01_UZ0622.StOk_blinken // Störung quittierbar + + A A01_UZ0622.StOk_aktiv // Impuls Störungen quittieren //Störungen quittieren + A "SF0543" + A A01_UH06.Not_Aus.UZ0622 + R A01_UH06.Not_Aus.UZ0622 + S "DSchnittstelle_zu_Safety".ToSafety.ACK_A01_UH06 // Not-Aus quittieren + + AN "SF0543" + S A01_UH06.Not_Aus.UZ0622 // Störung vorhanden + + A A01_UH06.Not_Aus.UZ0622 // Störung vorhanden + = "6_HMI_Err_UH06_AMR".Not.UZ0622 // Störung an OP übergeben + +// Not-Aus ILS (UH05): + AN "DI0711" // von UH05 ILS + AN "DSchnittstelle_zu_Safety".ToSafety.Ohne_Partner + = "6_HMI_Err_UH06_AMR".Not.von_UH04 + + +--- NW 9: UH06: Not-Aus-Störungen / Anzeigen --- + AN "SF0400" // Taster noch betätigt + ON "SF0401" + ON "SF0402" + ON "SF0403" + ON "SF0470" + ON "SF0471" + ON "SF0472" + ON "SF0473" + ON "SF0540" + ON "SF0542" + ON "SF0543" + = Not_Err // Ein Not-Aus-Taster noch betätigt + + A A01_UH06.Not_Aus.UH06 // Störung noch aktiv + O A01_UH06.Not_Aus.UZ0601 + O A01_UH06.Not_Aus.UZ0602 + O A01_UH06.Not_Aus.UZ0603 + O A01_UH06.Not_Aus.UZ0611 + O A01_UH06.Not_Aus.UZ0612 + O A01_UH06.Not_Aus.UZ0613 + O A01_UH06.Not_Aus.UZ0614 + O A01_UH06.Not_Aus.UZ0615 + O A01_UH06.Not_Aus.UZ0621 + O A01_UH06.Not_Aus.UZ0622 + = Not_Akt // Ein Not-Aus-Störung noch nicht quittiert + + A "Main_Safety_RTG1_DB".FDBACK_UH06_1.Q // Not-Aus-Kreis geschlossen + A "Main_Safety_RTG1_DB".FDBACK_UH06_2.Q // Not-Aus-Kreis geschlossen + AN Not_Err + AN Not_Akt + R A01_UH06.NotErr + +// Not-Aus hat ausgelöst: + AN Not_Akt // Ein Not-Aus-Störung noch nicht quittiert + AN Not_Err // Ein Not-Aus-Taster noch betätigt + A( + ON "Main_Safety_RTG1_DB".FDBACK_UH06_1.Q // Not-Aus-Kreis geschlossen + ON "Main_Safety_RTG1_DB".FDBACK_UH06_2.Q // Not-Aus-Kreis geschlossen + ) + = A01_UH06.Not_Aus.ausgeloest + + A A01_UH06.Not_Aus.ausgeloest + = "6_HMI_Err_UH06_AMR".Not.ausgeloest_UH06 // Störung an OP übergeben + S A01_UH06.StOk_blinken // Störung quittierbar + + A "SF0002" + A "6_HMI_Err_UH06_AMR".Not.ausgeloest_UH06 // Störung an OP übergeben + S "DSchnittstelle_zu_Safety".ToSafety.ACK_A01_UH06 // Not-Aus quittieren + +// Störung aktiv: + A( + ON "Main_Safety_RTG1_DB".FDBACK_UH06_1.Q // Not-Aus-Kreis geschlossen + ON "Main_Safety_RTG1_DB".FDBACK_UH06_2.Q // Not-Aus-Kreis geschlossen + ) + O Not_Err // Ein Not-Aus-Taster noch betätigt + O Not_Akt // Ein Not-Aus-Störung noch nicht quittiert + O + AN "DI0711" // von UH04 ILS + AN "DSchnittstelle_zu_Safety".ToSafety.Ohne_Partner + S A01_UH06.NotErr + +// Not-Aus quittieren nicht erlaubt: + A Not_Err // Ein Not-Aus-Taster noch betätigt + O Not_Akt // Ein Not-Aus-Störung noch nicht quittiert + R "DSchnittstelle_zu_Safety".ToSafety.ACK_A01_UH06 // Not-Aus quittieren + +// Anzeige: + A A01_UH06.NotErr +// / = "PF1004" //Keine Anzeige verbaut! + CLR + + +--- NW 10: UH06: Haupschütz nicht aktiv --- + A "Main_Safety_RTG1_DB".FDBACK_UH06_1.Q // Not-Aus-Kreis geschlossen + A "Main_Safety_RTG1_DB".FDBACK_UH06_2.Q // Not-Aus-Kreis geschlossen + AN Not_Akt // Ein Not-Aus-Störung noch nicht quittiert + AN Not_Err // Ein Not-Aus-Taster noch betätigt + L s5t#3s + OnDelay "T110" + + A "T110" + A "DI0013" + = A01_UH06.K10Err + + A A01_UH06.K10Err + O "DSchnittstelle_zu_Safety".FromSafety.ACK_REQ_A01_UH06_1 + O "DSchnittstelle_zu_Safety".FromSafety.ACK_REQ_A01_UH06_2 + S A01_UH06.StOk_blinken // Störung quittierbar + + A A01_UH06.StOk_aktiv // Impuls Störungen quittieren //Störungen quittieren + A( + O A01_UH06.K10Err + O "DSchnittstelle_zu_Safety".FromSafety.ACK_REQ_A01_UH06_1 + O "DSchnittstelle_zu_Safety".FromSafety.ACK_REQ_A01_UH06_2 + ) + S "DSchnittstelle_zu_Safety".ToSafety.StOk_HSS + S "DSchnittstelle_zu_Safety".ToSafety.ACK_A01_UH06 // Not-Aus quittieren + + +--- NW 11: UH06: Bereichs-Störung --- + AN A01_UH06.AnlageEin + O A01_UH06.NotErr +// / O #A01_UH06.MotErr + O A01_UH06.PnErr + O A01_UH06.SiErr + O "6_HMI_Err_UH06_AMR".System.Gesamt_Feueralarm + = A01_UH06.BereichErr + + A A01_UH06.BereichErr + A A01_UH06.AnlageEin + A "Clock_1Hz" + = "PF0000" + + +--- NW 12: UH06: Anfahrwarnung --- +// Anfahrwarnung erzeugen: + AN A01_UH06.BereichErr + A A01_UH06.BereichErr_old // Letzter Zyklus war noch System-Err + S A01_UH06.Anfahrwarnung + + A A01_UH06.BereichErr + = A01_UH06.BereichErr_old // Aktuellen Status sepichern + R A01_UH06.Anfahrwarnung + +// Anfahrwarnung: + A "T1" + R A01_UH06.Anfahrwarnung + A( + O A01_UH06.Anfahrwarnung + O A01_UH06_Halle4.Anfahrwarnung + O A01_UC061.Anfahrwarnung + ) + A "Clock_1Hz" + = "PF0033" // Anfahr-Warnung + A A01_UH06.Anfahrwarnung + L s5t#5s + OnDelay "T1" + + A A01_UH06.Anfahrwarnung + S A01_UH06.BereichErr + + +--- NW 13: UH06/Halle 4: Not-Aus-Störung erzeugen / quittierbar / quittieren --- +// Not-Aus an UZ0620: + A "SF0541" + A A01_UH06_Halle4.Not_Aus.UZ0620 + S A01_UZ0620.StOk_blinken // Störung quittierbar + + A A01_UZ0620.StOk_aktiv // Impuls Störungen quittieren //Störungen quittieren + A "SF0541" + A A01_UH06_Halle4.Not_Aus.UZ0620 + R A01_UH06_Halle4.Not_Aus.UZ0620 + S "DSchnittstelle_zu_Safety".ToSafety.ACK_A01_UH06_Halle4 // Not-Aus quittieren + + AN "SF0541" + S A01_UH06_Halle4.Not_Aus.UZ0620 // Störung vorhanden + + A A01_UH06_Halle4.Not_Aus.UZ0620 // Störung vorhanden + = "6_HMI_Err_UH06_AMR".Not.UZ0620 // Störung an OP übergeben + + +--- NW 14: UH06/Halle 4: Not-Aus-Störungen / Anzeigen --- + AN "SF0541" // Taster noch betätigt + = Not_Err // Ein Not-Aus-Taster noch betätigt + + A A01_UH06_Halle4.Not_Aus.UZ0620 // Störung noch aktiv + = Not_Akt // Ein Not-Aus-Störung noch nicht quittiert + + A "Main_Safety_RTG1_DB".FDBACK_Halle4AMR.Q // Not-Aus-Kreis geschlossen + AN Not_Err + AN Not_Akt + R A01_UH06_Halle4.NotErr + +// Not-Aus hat ausgelöst: + AN Not_Akt // Ein Not-Aus-Störung noch nicht quittiert + AN Not_Err // Ein Not-Aus-Taster noch betätigt + AN "Main_Safety_RTG1_DB".FDBACK_Halle4AMR.Q // Not-Aus-Kreis geschlossen + = A01_UH06_Halle4.Not_Aus.ausgeloest + + A A01_UH06_Halle4.Not_Aus.ausgeloest + = "6_HMI_Err_UH06_AMR".Not.ausgeloest_UH06_Halle4 // Störung an OP übergeben + S A01_UH06.StOk_blinken // Störung quittierbar + + A "SF0002" + A "6_HMI_Err_UH06_AMR".Not.ausgeloest_UH06_Halle4 // Störung an OP übergeben + S "DSchnittstelle_zu_Safety".ToSafety.ACK_A01_UH06_Halle4 // Not-Aus quittieren + +// Störung aktiv: + AN "Main_Safety_RTG1_DB".FDBACK_Halle4AMR.Q // Not-Aus-Kreis geschlossen + O Not_Err // Ein Not-Aus-Taster noch betätigt + O Not_Akt // Ein Not-Aus-Störung noch nicht quittiert + S A01_UH06_Halle4.NotErr + +// Not-Aus quittieren nicht erlaubt: + A Not_Err // Ein Not-Aus-Taster noch betätigt + O Not_Akt // Ein Not-Aus-Störung noch nicht quittiert + R "DSchnittstelle_zu_Safety".ToSafety.ACK_A01_UH06_Halle4 // Not-Aus quittieren + +// Anzeige: + A A01_UH06_Halle4.NotErr +// / = "PF1004" //Keine Anzeige verbaut! + CLR + + +--- NW 15: UH06/Halle 4: Haupschütz nicht aktiv --- + A "Main_Safety_RTG1_DB".FDBACK_Halle4AMR.Q // Not-Aus-Kreis geschlossen + AN Not_Akt // Ein Not-Aus-Störung noch nicht quittiert + AN Not_Err // Ein Not-Aus-Taster noch betätigt + L s5t#3s + OnDelay "T111" + + A "T111" + A "DI0012" + = A01_UH06_Halle4.K10Err + + A A01_UH06_Halle4.K10Err + O "DSchnittstelle_zu_Safety".FromSafety.ACK_REQ_A01_UH06_1 + O "DSchnittstelle_zu_Safety".FromSafety.ACK_REQ_A01_UH06_2 + S A01_UH06.StOk_blinken // Störung quittierbar + + A A01_UH06.StOk_aktiv // Impuls Störungen quittieren //Störungen quittieren + A( + O A01_UH06_Halle4.K10Err + O "DSchnittstelle_zu_Safety".FromSafety.ACK_REQ_A01_UH06_1 + O "DSchnittstelle_zu_Safety".FromSafety.ACK_REQ_A01_UH06_2 + ) + S "DSchnittstelle_zu_Safety".ToSafety.StOk_HSS + S "DSchnittstelle_zu_Safety".ToSafety.ACK_A01_UH06_Halle4 // Not-Aus quittieren + + +--- NW 16: UH06/Halle 4: Bereichs-Störung --- + AN A01_UH06.AnlageEin + O A01_UH06_Halle4.NotErr +// / O #A01_UH06.MotErr + O A01_UH06.PnErr + O A01_UH06.SiErr + O "6_HMI_Err_UH06_AMR".System.Gesamt_Feueralarm + = A01_UH06_Halle4.BereichErr + + A A01_UH06_Halle4.BereichErr + A A01_UH06.AnlageEin + A "Clock_1Hz" + S "PF0000" // Oben schon mit = + + +--- NW 17: UH06/Halle 4: Anfahrwarnung --- +// Anfahrwarnung erzeugen: + AN A01_UH06_Halle4.BereichErr + A A01_UH06_Halle4.BereichErr_old // Letzter Zyklus war noch System-Err + S A01_UH06_Halle4.Anfahrwarnung + + A A01_UH06_Halle4.BereichErr + = A01_UH06_Halle4.BereichErr_old // Aktuellen Status sepichern + R A01_UH06_Halle4.Anfahrwarnung + +// Anfahrwarnung: + A "T11" + R A01_UH06_Halle4.Anfahrwarnung + A A01_UH06_Halle4.Anfahrwarnung + A "Clock_1Hz" +// = "PF0033" //Anfahr-Warnung (nur an UH06/Nw12) + CLR + A A01_UH06_Halle4.Anfahrwarnung + L s5t#5s + OnDelay "T11" + + A A01_UH06_Halle4.Anfahrwarnung + S A01_UH06_Halle4.BereichErr + + +--- NW 18: UC061: Pneumatik-Störung --- + A "BP0167" + L S5T#10S // Damit Druck aufgebaut werden kann ! + OnDelay "T202" + +// Störung kann quittiert werden: + A "T202" + A "6_HMI_Err_UH06_AMR".VErr.Pn_UC061 + S A01_UC061.StOk_blinken + +// Störung quittieren: + A A01_UC061.StOk_aktiv // Impuls Störungen quittieren //Störungen quittieren + A "T202" + R "6_HMI_Err_UH06_AMR".VErr.Pn_UC061 + +// Störung aktiv: + AN "T202" + S "6_HMI_Err_UH06_AMR".VErr.Pn_UC061 + + A "6_HMI_Err_UH06_AMR".VErr.Pn_UC061 + = A01_UC061.PnErr + +// Anzeige: + A "6_HMI_Err_UH06_AMR".VErr.Pn_UC061 + = "PF0160" + + +--- NW 19: UC061: Sicherungsfall --- +// Störung kann quittiert werden: + A "DI0160" + A "6_HMI_Err_UH06_AMR".VErr.FC0160 + O + A "DI0161" + A "6_HMI_Err_UH06_AMR".VErr.FC0161 + O + A "DI0162" + A "6_HMI_Err_UH06_AMR".VErr.FC0162 + S A01_UC061.StOk_blinken + +// Störung quittieren: + A A01_UC061.StOk_aktiv // Impuls Störungen quittieren + R "6_HMI_Err_UH06_AMR".VErr.FC0160 + R "6_HMI_Err_UH06_AMR".VErr.FC0161 + R "6_HMI_Err_UH06_AMR".VErr.FC0162 + +// Störung aktiv: + AN "DI0160" + S "6_HMI_Err_UH06_AMR".VErr.FC0160 + + AN "DI0161" + S "6_HMI_Err_UH06_AMR".VErr.FC0161 + + AN "DI0162" + S "6_HMI_Err_UH06_AMR".VErr.FC0162 + +// Sicherungs-Störung gesamt: + A "6_HMI_Err_UH06_AMR".VErr.FC0160 + O "6_HMI_Err_UH06_AMR".VErr.FC0161 + O "6_HMI_Err_UH06_AMR".VErr.FC0162 + = A01_UC061.SiErr + +// Anzeige: + A A01_UC061.SiErr + = "PF0162" + + +--- NW 20: UC061: Motorschutz-Störung ist aktiv --- +// Störung kann quittiert werden: +// wird im Lastbaustein gemacht + +// Störung quittieren: +// wird im Lastbaustein gemacht + +// Störung aktiv: +// wird im Lastbaustein gemacht + +// Motorschutz-Störung gesamt: + A "6_HMI_Err_UH06_AMR".QErr.MA0200 + O "6_HMI_Err_UH06_AMR".QErr.MA0201 + O "6_HMI_Err_UH06_AMR".QErr.MA0202 + O "6_HMI_Err_UH06_AMR".QErr.MA0203 + O "6_HMI_Err_UH06_AMR".QErr.MA0204 + O "6_HMI_Err_UH06_AMR".QErr.MA0205 + = A01_UC061.MotErr + +// Anzeige: + A A01_UC061.MotErr + = "PF0161" + + +--- NW 21: UC061: Not-Aus-Störungen / Anzeigen --- + AN "SF1020" // Taster noch betätigt + ON "SF1022" + ON "SF1023" + ON "SF1090" + = Not_Err // Ein Not-Aus-Taster noch betätigt + + A A01_UC061.Not_Aus.UC061 // Störung noch aktiv + O A01_UC061.Not_Aus.UZ6102 + O A01_UC061.Not_Aus.UZ6103 + O A01_UC061.Not_Aus.UZ6104 + = Not_Akt // Ein Not-Aus-Störung noch nicht quittiert + + A "Main_Safety_RTG1_DB".ESTOP1_MainUC061.Q // Not-Aus-Kreis geschlossen + AN Not_Err + AN Not_Akt + R A01_UC061.NotErr + +// Not-Aus hat ausgelöst: + AN Not_Akt // Ein Not-Aus-Störung noch nicht quittiert + AN Not_Err // Ein Not-Aus-Taster noch betätigt + AN "Main_Safety_RTG1_DB".ESTOP1_MainUC061.Q // Not-Aus-Kreis geschlossen + = A01_UC061.Not_Aus.ausgeloest + + A A01_UC061.Not_Aus.ausgeloest + = "6_HMI_Err_UH06_AMR".Not.ausgeloest_UC061 // Störung an OP übergeben + S A01_UC061.StOk_blinken // Störung quittierbar + + A "SF0177" + A "6_HMI_Err_UH06_AMR".Not.ausgeloest_UC061 // Störung an OP übergeben + S "DSchnittstelle_zu_Safety".ToSafety.ACK_A01_UC061 // Not-Aus quittieren + +// Störung aktiv: + AN "Main_Safety_RTG1_DB".ESTOP1_MainUC061.Q // Not-Aus-Kreis geschlossen + O Not_Err // Ein Not-Aus-Taster noch betätigt + O Not_Akt // Ein Not-Aus-Störung noch nicht quittiert + O + AN "DI1091" // von UC011 ILS + AN "DSchnittstelle_zu_Safety".ToSafety.Ohne_Partner + O + AN "DI1092" // von UC072 Outbound + AN "DSchnittstelle_zu_Safety".ToSafety.Ohne_Partner + S A01_UC061.NotErr + +// Not-Aus quittieren nicht erlaubt: + A Not_Err // Ein Not-Aus-Taster noch betätigt + O Not_Akt // Ein Not-Aus-Störung noch nicht quittiert + R "DSchnittstelle_zu_Safety".ToSafety.ACK_A01_UC061 // Not-Aus quittieren + +// Anzeige: + A A01_UC061.NotErr +// / = "PF1004" //Keine Anzeige verbaut! + CLR + + +--- NW 22: UC061: Not-Aus-Störung erzeugen / quittierbar / quittieren --- +// Quittierung wurd abgearbeitet: + A "DSchnittstelle_zu_Safety".FromSafety.ACK_A01_UC061_fertig + R "DSchnittstelle_zu_Safety".FromSafety.ACK_A01_UC061_fertig + R "DSchnittstelle_zu_Safety".ToSafety.ACK_A01_UC061 + +// Not-Aus nach Haupschalter ein quittieren: + A A01_UC061.StOk_aktiv // Impuls Störungen quittieren + A A01_UC061.Not_Aus.ausgeloest + S "DSchnittstelle_zu_Safety".ToSafety.ACK_A01_UC061 // Not-Aus quittieren + +// Not-Aus an UC061: + A "SF1020" + A A01_UC061.Not_Aus.UC061 + S A01_UC061.StOk_blinken // Störung quittierbar + + A A01_UC061.StOk_aktiv // Impuls Störungen quittieren //Störungen quittieren + A "SF1020" + A A01_UC061.Not_Aus.UC061 + R A01_UC061.Not_Aus.UC061 + S "DSchnittstelle_zu_Safety".ToSafety.ACK_A01_UC061 // Not-Aus quittieren + + AN "SF1020" + S A01_UC061.Not_Aus.UC061 // Störung vorhanden + + A A01_UC061.Not_Aus.UC061 // Störung vorhanden + = "6_HMI_Err_UH06_AMR".Not.UC061 // Störung an OP übergeben + +// Not-Aus an UZ6101: (wurde ausgebaut) + +// Not-Aus an UZ6102: + A "SF1022" + A A01_UC061.Not_Aus.UZ6102 + S A01_UZ6102.StOk_blinken // Störung quittierbar + + A A01_UZ6102.StOk_aktiv // Impuls Störungen quittieren //Störungen quittieren + A "SF1022" + A A01_UC061.Not_Aus.UZ6102 + R A01_UC061.Not_Aus.UZ6102 + S "DSchnittstelle_zu_Safety".ToSafety.ACK_A01_UC061 // Not-Aus quittieren + + AN "SF1022" + S A01_UC061.Not_Aus.UZ6102 // Störung vorhanden + + A A01_UC061.Not_Aus.UZ6102 // Störung vorhanden + = "6_HMI_Err_UH06_AMR".Not.UZ6102 // Störung an OP übergeben + +// Not-Aus an UZ6103: + A "SF1023" + A A01_UC061.Not_Aus.UZ6103 + S A01_UZ6103.StOk_blinken // Störung quittierbar + + A A01_UZ6103.StOk_aktiv // Impuls Störungen quittieren //Störungen quittieren + A "SF1023" + A A01_UC061.Not_Aus.UZ6103 + R A01_UC061.Not_Aus.UZ6103 + S "DSchnittstelle_zu_Safety".ToSafety.ACK_A01_UC061 // Not-Aus quittieren + + AN "SF1023" + S A01_UC061.Not_Aus.UZ6103 // Störung vorhanden + + A A01_UC061.Not_Aus.UZ6103 // Störung vorhanden + = "6_HMI_Err_UH06_AMR".Not.UZ6103 // Störung an OP übergeben + +// Not-Aus an UZ6104: + A "SF1090" + A A01_UC061.Not_Aus.UZ6104 + S A01_UZ6104.StOk_blinken // Störung quittierbar + + A A01_UZ6104.StOk_aktiv // Impuls Störungen quittieren //Störungen quittieren + A "SF1090" + A A01_UC061.Not_Aus.UZ6104 + R A01_UC061.Not_Aus.UZ6104 + S "DSchnittstelle_zu_Safety".ToSafety.ACK_A01_UC061 // Not-Aus quittieren + + AN "SF1090" + S A01_UC061.Not_Aus.UZ6104 // Störung vorhanden + + A A01_UC061.Not_Aus.UZ6104 // Störung vorhanden + = "6_HMI_Err_UH06_AMR".Not.UZ6104 // Störung an OP übergeben + +// Not-Aus ILS (UC011): + AN "DI1091" // von UC011 ILS + AN "DSchnittstelle_zu_Safety".ToSafety.Ohne_Partner + = "6_HMI_Err_UH06_AMR".Not.von_UC011 + +// Not-Aus UH07 (UC072): + AN "DI1092" // von UC072 Outbound + AN "DSchnittstelle_zu_Safety".ToSafety.Ohne_Partner + = "6_HMI_Err_UH06_AMR".Not.von_UC072 + + +--- NW 23: UC061: Haupschütz nicht aktiv --- + A "Main_Safety_RTG1_DB".ESTOP1_MainUC061.Q // Not-Aus-Kreis geschlossen + AN Not_Akt // Ein Not-Aus-Störung noch nicht quittiert + AN Not_Err // Ein Not-Aus-Taster noch betätigt + L s5t#3s + OnDelay "T210" + + A "T210" + A "DI0166" + = A01_UC061.K10Err + + A A01_UC061.K10Err + O "DSchnittstelle_zu_Safety".FromSafety.ACK_REQ_A01_UC061_1 + O "DSchnittstelle_zu_Safety".FromSafety.ACK_REQ_A01_UC061_2 + S A01_UC061.StOk_blinken // Störung quittierbar + + A A01_UC061.StOk_aktiv // Impuls Störungen quittieren //Störungen quittieren + A( + O A01_UC061.K10Err + O "DSchnittstelle_zu_Safety".FromSafety.ACK_REQ_A01_UC061_1 + O "DSchnittstelle_zu_Safety".FromSafety.ACK_REQ_A01_UC061_2 + ) + S "DSchnittstelle_zu_Safety".ToSafety.StOk_HSS + S "DSchnittstelle_zu_Safety".ToSafety.ACK_A01_UC061 // Not-Aus quittieren + + +--- NW 24: UC061: Bereichs-Störung --- + AN A01_UH06.AnlageEin // UH06 ist Master + O A01_UC061.NotErr + O A01_UC061.PnErr +// / O #A01_UC061.MotErr + O A01_UC061.SiErr + O "6_HMI_Err_UH06_AMR".System.Gesamt_Feueralarm + = A01_UC061.BereichErr + +// Keine Anzeige verbaut + + +--- NW 25: UC061: Anfahrwarnung --- +// Anfahrwarnung erzeugen: + AN A01_UC061.BereichErr + A A01_UC061.BereichErr_old // Letzter Zyklus war noch System-Err + S A01_UC061.Anfahrwarnung + + A A01_UC061.BereichErr + = A01_UC061.BereichErr_old // Aktuellen Status sepichern + R A01_UC061.Anfahrwarnung + +// Anfahrwarnung: + A "T12" + R A01_UC061.Anfahrwarnung + A A01_UC061.Anfahrwarnung + A "Clock_1Hz" +// = "PF0033" //Anfahr-Warnung (nur an UH06/Nw12) + CLR + A A01_UC061.Anfahrwarnung + L s5t#5s + OnDelay "T12" + + A A01_UC061.Anfahrwarnung + S A01_UC061.BereichErr + + +--- NW 26: Bereichshalte --- + AN "SF0182" + = A01_UZ6102.Area_Stop + = "6_HMI_Err_UH06_AMR".Halt.UZ6102 + + AN "SF0184" + = A01_UZ6103.Area_Stop + = "6_HMI_Err_UH06_AMR".Halt.UZ6103 + + AN "SF0186" + = A01_UZ6104.Area_Stop + = "6_HMI_Err_UH06_AMR".Halt.UZ6104 + + +--- NW 27: Anzeigen zum Quittieren --- +// Start nach Störung blinken lassen: + A A01_UH06.StOk_blinken + A "Clock_1Hz" + ON "SF0400" + = "PF0002" + + A A01_UC061.StOk_blinken + A "Clock_1Hz" + ON "SF1020" + = "PF0177" + + A A01_UZ0601.StOk_blinken + A "Clock_1Hz" + ON "SF0540" + = "PF0057" + + A A01_UZ0602.StOk_blinken + A "Clock_1Hz" + ON "SF0473" + = "PF0055" + + A A01_UZ0603.StOk_blinken + A "Clock_1Hz" + ON "SF0472" + = "PF0053" + + A A01_UZ0611.StOk_blinken + A "Clock_1Hz" + ON "SF0471" + = "PF0051" + + A A01_UZ0612.StOk_blinken + A "Clock_1Hz" + ON "SF0470" + = "PF0047" + + A A01_UZ0613.StOk_blinken + A "Clock_1Hz" + ON "SF0403" + = "PF0045" + + A A01_UZ0614.StOk_blinken + A "Clock_1Hz" + ON "SF0402" + = "PF0043" + + A A01_UZ0615.StOk_blinken + A "Clock_1Hz" + ON "SF0401" + = "PF0041" + + A A01_UZ0620.StOk_blinken + A "Clock_1Hz" + ON "SF0541" + = "PF0121" + + A A01_UZ0621.StOk_blinken + A "Clock_1Hz" + ON "SF0542" + = "PF0123" + + A A01_UZ0622.StOk_blinken + A "Clock_1Hz" + ON "SF0543" + = "PF0125" + + A A01_UZ6102.StOk_blinken + A "Clock_1Hz" + ON "SF1022" + = "PF0183" + + A A01_UZ6103.StOk_blinken + A "Clock_1Hz" + ON "SF1023" + = "PF0185" + + A A01_UZ6104.StOk_blinken + A "Clock_1Hz" + ON "SF1090" + = "PF0187" + + SET + R A01_UH06.StOk_blinken + R A01_UC061.StOk_blinken + R A01_UZ0601.StOk_blinken + R A01_UZ0602.StOk_blinken + R A01_UZ0603.StOk_blinken + R A01_UZ0611.StOk_blinken + R A01_UZ0612.StOk_blinken + R A01_UZ0613.StOk_blinken + R A01_UZ0614.StOk_blinken + R A01_UZ0615.StOk_blinken + R A01_UZ0620.StOk_blinken + R A01_UZ0621.StOk_blinken + R A01_UZ0622.StOk_blinken + R A01_UZ6102.StOk_blinken + R A01_UZ6103.StOk_blinken + R A01_UZ6104.StOk_blinken + + +--- NW 28: Betriebsbereit-Anzeigen --- + A A01_UH06.AnlageEin + = "PF0120" + = "PF0122" + = "PF0124" + = "PF0182" + = "PF0184" + = "PF0186" +// Anzeigen bei PS/MPS bei dortigem Baustein + + +--- NW 29: Störungen vorhanden? / Anzeige: --- +CALL FC "Err_vorhanden" (Check_DB:=608, Anfangs_DW:=DINT#0, Ende_DW:=DINT#498, Stoerung:=Stoerung, ErrDW:=ErrDD, ErrBits:=ErrBits) // Störungsanzeige + + A( + O Stoerung + O "PF0000" // Da schon oben gesetzt + ) + A "Clock_1Hz" + = "PF0000" + + L ErrDD + T "MD9100" + L ErrBits + T "MW9200" + + L "MD9100" + L DINT#0 // Störung vorhanden + >D // Ja! + = "Störung_vorhanden" + + +--- NW 30: Signal-Tower UH06 --- +// Anfahrwarnung siehe Nw12 + + A "DAMR_Bereich".A01_UH06.AnlageEin + = "PF0032" // System ready + + A "Störung_vorhanden" + = "PF0031" // Fault + + A A01_UH06.NotErr + O A01_UH06_Halle4.NotErr + O A01_UC061.NotErr + = "PF0030" // Not-Aus + + +--- NW 31: Ende --- + BE + diff --git a/=A01+UH06-KF00/Programmbausteine/Anlage/DAMR_Bereich.awl b/=A01+UH06-KF00/Programmbausteine/Anlage/DAMR_Bereich.awl new file mode 100644 index 0000000..ea231f3 --- /dev/null +++ b/=A01+UH06-KF00/Programmbausteine/Anlage/DAMR_Bereich.awl @@ -0,0 +1,134 @@ +=== InstanceDB 1001: DAMR_Bereich [DB] === +INTERFACE: + Input: + Output: + InOut: + Static: + A01_UH06 : Struct + Anlauf : Bool + AnlageEin : Bool + Not_Aus : Struct + ausgeloest : Bool + Von_OB1 : Bool + Von_OB2 : Bool + Von_ILS1 : Bool + Von_ILS2 : Bool + UH06 : Bool + UZ0601 : Bool + UZ0602 : Bool + UZ0603 : Bool + UZ0611 : Bool + UZ0612 : Bool + UZ0613 : Bool + UZ0614 : Bool + UZ0615 : Bool + UZ0621 : Bool + UZ0622 : Bool + NotErr : Bool + PnErr : Bool + SiErr : Bool + MotErr : Bool + Phasen : Bool + K10Err : Bool + Brandfall : Bool + Automatik : Bool + Handbetrieb : Bool + BereichErr : Bool + StOk_blinken : Bool + StOk_Flanke : Bool + StOk_aktiv : Bool + BereichErr_old : Bool + Anfahrwarnung : Bool + A01_UH06_Halle4 : Struct + Not_Aus : Struct + ausgeloest : Bool + UZ0620 : Bool + NotErr : Bool + K10Err : Bool + BereichErr : Bool + BereichErr_old : Bool + Anfahrwarnung : Bool + A01_UC061 : Struct + Not_Aus : Struct + ausgeloest : Bool + UC061 : Bool + UZ6102 : Bool + UZ6103 : Bool + UZ6104 : Bool + NotErr : Bool + PnErr : Bool + SiErr : Bool + MotErr : Bool + K10Err : Bool + BereichErr : Bool + StOk_blinken : Bool + StOk_Flanke : Bool + StOk_aktiv : Bool + BereichErr_old : Bool + Anfahrwarnung : Bool + A01_UZ0601 : Struct + StOk_blinken : Bool + StOk_Flanke : Bool + StOk_aktiv : Bool + A01_UZ0602 : Struct + StOk_blinken : Bool + StOk_Flanke : Bool + StOk_aktiv : Bool + A01_UZ0603 : Struct + StOk_blinken : Bool + StOk_Flanke : Bool + StOk_aktiv : Bool + A01_UZ0611 : Struct + StOk_blinken : Bool + StOk_Flanke : Bool + StOk_aktiv : Bool + A01_UZ0612 : Struct + StOk_blinken : Bool + StOk_Flanke : Bool + StOk_aktiv : Bool + A01_UZ0613 : Struct + StOk_blinken : Bool + StOk_Flanke : Bool + StOk_aktiv : Bool + A01_UZ0614 : Struct + StOk_blinken : Bool + StOk_Flanke : Bool + StOk_aktiv : Bool + A01_UZ0615 : Struct + StOk_blinken : Bool + StOk_Flanke : Bool + StOk_aktiv : Bool + A01_UZ0620 : Struct + StOk_blinken : Bool + StOk_Flanke : Bool + StOk_aktiv : Bool + A01_UZ0621 : Struct + StOk_blinken : Bool + StOk_Flanke : Bool + StOk_aktiv : Bool + A01_UZ0622 : Struct + StOk_blinken : Bool + StOk_Flanke : Bool + StOk_aktiv : Bool + A01_UZ6102 : Struct + StOk_blinken : Bool + StOk_Flanke : Bool + StOk_aktiv : Bool + Area_Stop : Bool + A01_UZ6103 : Struct + StOk_blinken : Bool + StOk_Flanke : Bool + StOk_aktiv : Bool + Area_Stop : Bool + A01_UZ6104 : Struct + StOk_blinken : Bool + StOk_Flanke : Bool + StOk_aktiv : Bool + Area_Stop : Bool + ErrDD : DInt + ErrBits : Int + Simulation : Struct + aktiv : Bool + Wartezeit_ok : Bool + AMR : Word + MSekunden : Byte diff --git a/=A01+UH06-KF00/Programmbausteine/Anlage/DSchnittstelle_zu_Outbound.awl b/=A01+UH06-KF00/Programmbausteine/Anlage/DSchnittstelle_zu_Outbound.awl new file mode 100644 index 0000000..4184941 --- /dev/null +++ b/=A01+UH06-KF00/Programmbausteine/Anlage/DSchnittstelle_zu_Outbound.awl @@ -0,0 +1,14 @@ +=== GlobalDB 7: DSchnittstelle_zu_Outbound [DB] === +INTERFACE: + Static: + To_UH07 : Struct + MA0200_A_vor : Bool + MA0200_A_start : Bool + MA0203_kein_Stau : Bool + MA0203_aktiv : Bool + From_UH07 : Struct + MA0203_A_vor : Bool + MA0203_A_start : Bool + MA0200_kein_Stau : Bool + MA0200_aktiv : Bool // + BG3724_aktiv : Bool diff --git a/=A01+UH06-KF00/Programmbausteine/Anlage/DSchnittstelle_zu_Safety.awl b/=A01+UH06-KF00/Programmbausteine/Anlage/DSchnittstelle_zu_Safety.awl new file mode 100644 index 0000000..336a5ab --- /dev/null +++ b/=A01+UH06-KF00/Programmbausteine/Anlage/DSchnittstelle_zu_Safety.awl @@ -0,0 +1,19 @@ +=== GlobalDB 3: DSchnittstelle_zu_Safety [DB] === +INTERFACE: + Static: + ToSafety : Struct + StOk_HSS : Bool + ACK_A01_UH06 : Bool // Quittierung Bereich + ACK_A01_UH06_Halle4 : Bool // Quittierung Bereich + ACK_A01_UC061 : Bool // Quittierung Bereich + Ohne_Partner : Bool // Nur eigener Not-AUS! + FromSafety : Struct + ACK_REQ_A01_UH06_1 : Bool // Quittierung benötigt Bereich + ACK_REQ_A01_UH06_2 : Bool // Quittierung benötigt Bereich + ACK_A01_UH06_fertig : Bool // Quittierung abgearbeitet + ACK_REQ_A01_UH06_Halle4_1 : Bool // Quittierung benötigt Bereich + ACK_REQ_A01_UH06_Halle4_2 : Bool // Quittierung benötigt Bereich + ACK_A01_UH06_Halle4_fertig : Bool // Quittierung abgearbeitet + ACK_REQ_A01_UC061_1 : Bool // Quittierung benötigt Bereich + ACK_REQ_A01_UC061_2 : Bool // Quittierung benötigt Bereich + ACK_A01_UC061_fertig : Bool // Quittierung abgearbeitet diff --git a/=A01+UH06-KF00/Programmbausteine/Barcode-Reader/FB_BarcodeReader_DB.awl b/=A01+UH06-KF00/Programmbausteine/Barcode-Reader/FB_BarcodeReader_DB.awl new file mode 100644 index 0000000..47c1e98 --- /dev/null +++ b/=A01+UH06-KF00/Programmbausteine/Barcode-Reader/FB_BarcodeReader_DB.awl @@ -0,0 +1,109 @@ +=== InstanceDB 4711: FB_BarcodeReader_DB [DB] === +INTERFACE: + Input: + Output: + InOut: + Static: + fbBarcodeReaderBX6100 : "FB_BarcodeReaderCognex" + fbBarcodeReaderBX6101 : "FB_BarcodeReaderCognex" + fbBarcodeReaderBX6102 : "FB_BarcodeReaderCognex" + fbBarcodeReaderBX6103 : "FB_BarcodeReaderCognex" + fbBarcodeReaderBX6104 : "FB_BarcodeReaderCognex" + fbBarcodeReaderBX6105 : "FB_BarcodeReaderCognex" + fbBarcodeReaderBX6106 : "FB_BarcodeReaderCognex" + fbBarcodeReaderBX6107 : "FB_BarcodeReaderCognex" + fbBarcodeReaderBX6108 : "FB_BarcodeReaderCognex" + fbBarcodeReaderBX6109 : "FB_BarcodeReaderCognex" + fbBarcodeReaderBX6110 : "FB_BarcodeReaderCognex" + fbBarcodeReaderBX6111 : "FB_BarcodeReaderCognex" + fbBarcodeReaderBX6112 : "FB_BarcodeReaderCognex" + fbBarcodeReaderBX6113 : "FB_BarcodeReaderCognex" + fbBarcodeReaderBX6114 : "FB_BarcodeReaderCognex" + fbBarcodeReaderBX6115 : "FB_BarcodeReaderCognex" + fbBarcodeReaderBX6116 : "FB_BarcodeReaderCognex" + fbBarcodeReaderBX6117 : "FB_BarcodeReaderCognex" + fbBarcodeReaderBX6118 : "FB_BarcodeReaderCognex" + fbBarcodeReaderBX6119 : "FB_BarcodeReaderCognex" + fbBarcodeReaderBX6120 : "FB_BarcodeReaderCognex" + fbBarcodeReaderBX6121 : "FB_BarcodeReaderCognex" + fbBarcodeReaderBX6122 : "FB_BarcodeReaderCognex" + fbBarcodeReaderBX6123 : "FB_BarcodeReaderCognex" + fbBarcodeReaderBX6124 : "FB_BarcodeReaderCognex" + fbBarcodeReaderBX6125 : "FB_BarcodeReaderCognex" + fbBarcodeReaderBX6126 : "FB_BarcodeReaderCognex" + fbBarcodeReaderBX6127 : "FB_BarcodeReaderCognex" + fbBarcodeReaderBX6128 : "FB_BarcodeReaderCognex" + fbBarcodeReaderBX6129 : "FB_BarcodeReaderCognex" + fbBarcodeReaderBX6130 : "FB_BarcodeReaderCognex" + fbBarcodeReaderBX6131 : "FB_BarcodeReaderCognex" + fbBarcodeReaderBX6133 : "FB_BarcodeReaderCognex" + stCognexInterface : Struct + BX6100 : "stCognexInterface" + BX6101 : "stCognexInterface" + BX6102 : "stCognexInterface" + BX6103 : "stCognexInterface" + BX6104 : "stCognexInterface" + BX6105 : "stCognexInterface" + BX6106 : "stCognexInterface" + BX6107 : "stCognexInterface" + BX6108 : "stCognexInterface" + BX6109 : "stCognexInterface" + BX6110 : "stCognexInterface" + BX6111 : "stCognexInterface" + BX6112 : "stCognexInterface" + BX6113 : "stCognexInterface" + BX6114 : "stCognexInterface" + BX6115 : "stCognexInterface" + BX6116 : "stCognexInterface" + BX6117 : "stCognexInterface" + BX6118 : "stCognexInterface" + BX6119 : "stCognexInterface" + BX6120 : "stCognexInterface" + BX6121 : "stCognexInterface" + BX6122 : "stCognexInterface" + BX6123 : "stCognexInterface" + BX6124 : "stCognexInterface" + BX6125 : "stCognexInterface" + BX6126 : "stCognexInterface" + BX6127 : "stCognexInterface" + BX6128 : "stCognexInterface" + BX6129 : "stCognexInterface" + BX6130 : "stCognexInterface" + BX6131 : "stCognexInterface" + BX6133 : "stCognexInterface" + stHMI : Struct + stBarcodeReader : Struct + BX6100 : "UDT_BarcodeReader" + BX6101 : "UDT_BarcodeReader" + BX6102 : "UDT_BarcodeReader" + BX6103 : "UDT_BarcodeReader" + BX6104 : "UDT_BarcodeReader" + BX6105 : "UDT_BarcodeReader" + BX6106 : "UDT_BarcodeReader" + BX6107 : "UDT_BarcodeReader" + BX6108 : "UDT_BarcodeReader" + BX6109 : "UDT_BarcodeReader" + BX6110 : "UDT_BarcodeReader" + BX6111 : "UDT_BarcodeReader" + BX6112 : "UDT_BarcodeReader" + BX6113 : "UDT_BarcodeReader" + BX6114 : "UDT_BarcodeReader" + BX6115 : "UDT_BarcodeReader" + BX6116 : "UDT_BarcodeReader" + BX6117 : "UDT_BarcodeReader" + BX6118 : "UDT_BarcodeReader" + BX6119 : "UDT_BarcodeReader" + BX6120 : "UDT_BarcodeReader" + BX6121 : "UDT_BarcodeReader" + BX6122 : "UDT_BarcodeReader" + BX6123 : "UDT_BarcodeReader" + BX6124 : "UDT_BarcodeReader" + BX6125 : "UDT_BarcodeReader" + BX6126 : "UDT_BarcodeReader" + BX6127 : "UDT_BarcodeReader" + BX6128 : "UDT_BarcodeReader" + BX6129 : "UDT_BarcodeReader" + BX6130 : "UDT_BarcodeReader" + BX6131 : "UDT_BarcodeReader" + BX6133 : "UDT_BarcodeReader" + stMainState : "IntfMainState" diff --git a/=A01+UH06-KF00/Programmbausteine/Datenlisten/DLCognexLeser.awl b/=A01+UH06-KF00/Programmbausteine/Datenlisten/DLCognexLeser.awl new file mode 100644 index 0000000..0f45485 --- /dev/null +++ b/=A01+UH06-KF00/Programmbausteine/Datenlisten/DLCognexLeser.awl @@ -0,0 +1,180 @@ +=== GlobalDB 273: DLCognexLeser [DB] === +INTERFACE: + Static: + Datenlistenkopf : Struct + KOPF : Word := WORD#16#DA04 // Datenliste-Kennnung (DA) / Datensatzlänge in Word (1 - 128) + LAENGE : Int := 33 // Länge der Datenliste (maximale Anzahl der Datensätze) + STAMMDATEN : Int := 1 // Stammdatenlänge in Word (1 - 9) + INDDB : Int // Indizierter DB (nur bei Stammdaten = 1 erlaubt !!!) + LAENGEINDDB : Int // Länge des indizierten DB in Word (nur bei Stammdaten = 1 erlaubt !!!) + OFFSETINDDATEN : Int // Offset für indizierte Daten (nur bei Stammdaten = 1 erlaubt !!!) + LETZTERZUGRIFF : Int // Speicherung des letzten Zugriffs + Belegt14 : Int // reserviert von Sort-Datenliste + Reserve16 : Int // Reserve + Reserve18 : Int // Reserve + Leser_6100 : "UDLCognexLeser" // AMR: vor 180 Grad Turn + Leser_6101 : "UDLCognexLeser" // AMR: vor Einfahrt PS5 + Leser_6102 : "UDLCognexLeser" // AMR: PS5/1 + Leser_6103 : "UDLCognexLeser" // AMR: PS5/2 + Leser_6104 : "UDLCognexLeser" // AMR: PS5/3 + Leser_6105 : "UDLCognexLeser" // AMR: vor Einfahrt PS4 + Leser_6106 : "UDLCognexLeser" // AMR: PS4/1 + Leser_6107 : "UDLCognexLeser" // AMR: PS4/2 + Leser_6108 : "UDLCognexLeser" // AMR: PS4/3 + Leser_6109 : "UDLCognexLeser" // AMR: vor Einfahrt PS3 + Leser_6110 : "UDLCognexLeser" // AMR: PS3/1 + Leser_6111 : "UDLCognexLeser" // AMR: PS3/2 + Leser_6112 : "UDLCognexLeser" // AMR: PS3/3 + Leser_6113 : "UDLCognexLeser" // AMR: vor Einfahrt PS2 + Leser_6114 : "UDLCognexLeser" // AMR: PS2/1 + Leser_6115 : "UDLCognexLeser" // AMR: PS2/2 + Leser_6116 : "UDLCognexLeser" // AMR: PS2/3 + Leser_6117 : "UDLCognexLeser" // AMR: PS1/1 + Leser_6118 : "UDLCognexLeser" // AMR: PS1/2 + Leser_6119 : "UDLCognexLeser" // AMR: PS1/3 + Leser_6120 : "UDLCognexLeser" // AMR: vor Einfahrt MPS3 + Leser_6121 : "UDLCognexLeser" // AMR: MPS3/1 + Leser_6122 : "UDLCognexLeser" // AMR: MPS3/2 + Leser_6123 : "UDLCognexLeser" // AMR: MPS3/3 + Leser_6124 : "UDLCognexLeser" // AMR: vor Einfahrt MPS2 + Leser_6125 : "UDLCognexLeser" // AMR: MPS2/1 + Leser_6126 : "UDLCognexLeser" // AMR: MPS2/2 + Leser_6127 : "UDLCognexLeser" // AMR: MPS2/3 + Leser_6128 : "UDLCognexLeser" // AMR: vor Einfahrt MPS1 + Leser_6129 : "UDLCognexLeser" // AMR: MPS1/1 + Leser_6130 : "UDLCognexLeser" // AMR: MPS1/2 + Leser_6131 : "UDLCognexLeser" // AMR: MPS1/3 + Leser_6133 : "UDLCognexLeser" // AMR: vor Einfahrt PS1 + Endekennung : Word := WORD#16#DAEE // Datensort-Ende-Kennung (DBEE) + None: + Leser_ID : Word := 16#6100 + Leser_Dyn_DB : Int := 4711 + Leser_Dyn_DD : DInt := 0 + None: + Leser_ID : Word := 16#6101 + Leser_Dyn_DB : Int := 4711 + Leser_Dyn_DD : DInt := 1414 + None: + Leser_ID : Word := 16#6102 + Leser_Dyn_DB : Int := 4711 + Leser_Dyn_DD : DInt := 2828 + None: + Leser_ID : Word := 16#6103 + Leser_Dyn_DB : Int := 4711 + Leser_Dyn_DD : DInt := 4242 + None: + Leser_ID : Word := 16#6104 + Leser_Dyn_DB : Int := 4711 + Leser_Dyn_DD : DInt := 5656 + None: + Leser_ID : Word := 16#6105 + Leser_Dyn_DB : Int := 4711 + Leser_Dyn_DD : DInt := 7070 + None: + Leser_ID : Word := 16#6106 + Leser_Dyn_DB : Int := 4711 + Leser_Dyn_DD : DInt := 8484 + None: + Leser_ID : Word := 16#6107 + Leser_Dyn_DB : Int := 4711 + Leser_Dyn_DD : DInt := 9898 + None: + Leser_ID : Word := 16#6108 + Leser_Dyn_DB : Int := 4711 + Leser_Dyn_DD : DInt := 11312 + None: + Leser_ID : Word := 16#6109 + Leser_Dyn_DB : Int := 4711 + Leser_Dyn_DD : DInt := 12726 + None: + Leser_ID : Word := 16#6110 + Leser_Dyn_DB : Int := 4711 + Leser_Dyn_DD : DInt := 14140 + None: + Leser_ID : Word := 16#6111 + Leser_Dyn_DB : Int := 4711 + Leser_Dyn_DD : DInt := 15554 + None: + Leser_ID : Word := 16#6112 + Leser_Dyn_DB : Int := 4711 + Leser_Dyn_DD : DInt := 16968 + None: + Leser_ID : Word := 16#6113 + Leser_Dyn_DB : Int := 4711 + Leser_Dyn_DD : DInt := 18382 + None: + Leser_ID : Word := 16#6114 + Leser_Dyn_DB : Int := 4711 + Leser_Dyn_DD : DInt := 19796 + None: + Leser_ID : Word := 16#6115 + Leser_Dyn_DB : Int := 4711 + Leser_Dyn_DD : DInt := 21210 + None: + Leser_ID : Word := 16#6116 + Leser_Dyn_DB : Int := 4711 + Leser_Dyn_DD : DInt := 22624 + None: + Leser_ID : Word := 16#6117 + Leser_Dyn_DB : Int := 4711 + Leser_Dyn_DD : DInt := 24038 + None: + Leser_ID : Word := 16#6118 + Leser_Dyn_DB : Int := 4711 + Leser_Dyn_DD : DInt := 25452 + None: + Leser_ID : Word := 16#6119 + Leser_Dyn_DB : Int := 4711 + Leser_Dyn_DD : DInt := 26866 + None: + Leser_ID : Word := 16#6120 + Leser_Dyn_DB : Int := 4711 + Leser_Dyn_DD : DInt := 28280 + None: + Leser_ID : Word := 16#6121 + Leser_Dyn_DB : Int := 4711 + Leser_Dyn_DD : DInt := 29694 + None: + Leser_ID : Word := 16#6122 + Leser_Dyn_DB : Int := 4711 + Leser_Dyn_DD : DInt := 31108 + None: + Leser_ID : Word := 16#6123 + Leser_Dyn_DB : Int := 4711 + Leser_Dyn_DD : DInt := 32522 + None: + Leser_ID : Word := 16#6124 + Leser_Dyn_DB : Int := 4711 + Leser_Dyn_DD : DInt := 33936 + None: + Leser_ID : Word := 16#6125 + Leser_Dyn_DB : Int := 4711 + Leser_Dyn_DD : DInt := 35350 + None: + Leser_ID : Word := 16#6126 + Leser_Dyn_DB : Int := 4711 + Leser_Dyn_DD : DInt := 36764 + None: + Leser_ID : Word := 16#6127 + Leser_Dyn_DB : Int := 4711 + Leser_Dyn_DD : DInt := 38178 + None: + Leser_ID : Word := 16#6128 + Leser_Dyn_DB : Int := 4711 + Leser_Dyn_DD : DInt := 39592 + None: + Leser_ID : Word := 16#6129 + Leser_Dyn_DB : Int := 4711 + Leser_Dyn_DD : DInt := 41006 + None: + Leser_ID : Word := 16#6130 + Leser_Dyn_DB : Int := 4711 + Leser_Dyn_DD : DInt := 42420 + None: + Leser_ID : Word := 16#6131 + Leser_Dyn_DB : Int := 4711 + Leser_Dyn_DD : DInt := 43834 + None: + Leser_ID : Word := 16#6133 + Leser_Dyn_DB : Int := 4711 + Leser_Dyn_DD : DInt := 45248 diff --git a/=A01+UH06-KF00/Programmbausteine/Datenlisten/DLHMABP.awl b/=A01+UH06-KF00/Programmbausteine/Datenlisten/DLHMABP.awl new file mode 100644 index 0000000..43f7f58 --- /dev/null +++ b/=A01+UH06-KF00/Programmbausteine/Datenlisten/DLHMABP.awl @@ -0,0 +1,143 @@ +=== GlobalDB 276: DLHMABP [DB] === +INTERFACE: + Static: + Datenlistenkopf : Struct + KOPF : Word := WORD#16#DA14 // Datenliste-Kennnung (DA) / Datensatzlänge in Word (1 - 118) + LAENGE : Int := 8 // Länge der Datenliste (maximale Anzahl der Datensätze) + STAMMDATEN : Int := 1 // Stammdatenlänge in Word (1 - 9) + INDDB : Int // Indizierter DB (nur bei Stammdaten = 1 erlaubt !!!) + LAENGEINDDB : Int // Länge des indizierten DB in Word (nur bei Stammdaten = 1 erlaubt !!!) + OFFSETINDDATEN : Int // Offset für indizierte Daten (nur bei Stammdaten = 1 erlaubt !!!) + LETZTERZUGRIFF : Int // Speicherung des letzten Zugriffs + Belegt14 : Int // reserviert von Sort-Datenliste + Reserve16 : Int // Reserve + Reserve18 : Int // Reserve + Pickstation_5 : "UDLHM_Arbeitsplatz" // Schleuse: Hauptstrecke vor AMR (PS5) + Pickstation_4 : "UDLHM_Arbeitsplatz" // Schleuse: Hauptstrecke vor AMR (PS5) + Pickstation_3 : "UDLHM_Arbeitsplatz" // Schleuse: Hauptstrecke vor AMR (PS5) + Pickstation_2 : "UDLHM_Arbeitsplatz" // Schleuse: Hauptstrecke vor AMR (PS5) + Pickstation_1 : "UDLHM_Arbeitsplatz" // Schleuse: Hauptstrecke vor AMR (PS5) + MultiPurposestation_3 : "UDLHM_Arbeitsplatz" // Schleuse: Hauptstrecke vor AMR (PS5) + MultiPurposestation_2 : "UDLHM_Arbeitsplatz" // Schleuse: Hauptstrecke vor AMR (PS5) + MultiPurposestation_1 : "UDLHM_Arbeitsplatz" // Schleuse: Hauptstrecke vor AMR (PS5) + Endekennung : Word := WORD#16#DAEE // Datensort-Ende-Kennung (DBEE) + None: + ABP_Nr : Word := 16#A500 + ABP_Dyn_DB : Int := 1121 + ABP_Dyn_DW : Int := 600 + MaxAnzahl : Int := 8 + Mindestzeit_zum_ABP_1 : Int := 15 + Mindestzeit_zum_ABP_2 : Int := 20 + Mindestzeit_zum_ABP_3 : Int := 23 + Mindestzeit_aus_ABP_1 : Int := 18 + Mindestzeit_aus_ABP_2 : Int := 18 + Mindestzeit_aus_ABP_3 : Int := 18 + Host_ABP : Int := 101 + Schleusen_Platz_1 : Int := 3245 + Schleusen_Platz_2 : Int := 3251 + Schleusen_Platz_3 : Int := 3255 + None: + ABP_Nr : Word := 16#A400 + ABP_Dyn_DB : Int := 1122 + ABP_Dyn_DW : Int := 600 + MaxAnzahl : Int := 8 + Mindestzeit_zum_ABP_1 : Int := 15 + Mindestzeit_zum_ABP_2 : Int := 20 + Mindestzeit_zum_ABP_3 : Int := 23 + Mindestzeit_aus_ABP_1 : Int := 18 + Mindestzeit_aus_ABP_2 : Int := 18 + Mindestzeit_aus_ABP_3 : Int := 18 + Host_ABP : Int := 102 + Schleusen_Platz_1 : Int := 3275 + Schleusen_Platz_2 : Int := 3281 + Schleusen_Platz_3 : Int := 3285 + None: + ABP_Nr : Word := 16#A300 + ABP_Dyn_DB : Int := 1123 + ABP_Dyn_DW : Int := 600 + MaxAnzahl : Int := 8 + Mindestzeit_zum_ABP_1 : Int := 15 + Mindestzeit_zum_ABP_2 : Int := 20 + Mindestzeit_zum_ABP_3 : Int := 23 + Mindestzeit_aus_ABP_1 : Int := 18 + Mindestzeit_aus_ABP_2 : Int := 18 + Mindestzeit_aus_ABP_3 : Int := 18 + Host_ABP : Int := 103 + Schleusen_Platz_1 : Int := 3305 + Schleusen_Platz_2 : Int := 3311 + Schleusen_Platz_3 : Int := 3315 + None: + ABP_Nr : Word := 16#A200 + ABP_Dyn_DB : Int := 1124 + ABP_Dyn_DW : Int := 600 + MaxAnzahl : Int := 8 + Mindestzeit_zum_ABP_1 : Int := 15 + Mindestzeit_zum_ABP_2 : Int := 20 + Mindestzeit_zum_ABP_3 : Int := 23 + Mindestzeit_aus_ABP_1 : Int := 18 + Mindestzeit_aus_ABP_2 : Int := 18 + Mindestzeit_aus_ABP_3 : Int := 18 + Host_ABP : Int := 104 + Schleusen_Platz_1 : Int := 3335 + Schleusen_Platz_2 : Int := 3341 + Schleusen_Platz_3 : Int := 3345 + None: + ABP_Nr : Word := 16#A100 + ABP_Dyn_DB : Int := 1125 + ABP_Dyn_DW : Int := 600 + MaxAnzahl : Int := 8 + Mindestzeit_zum_ABP_1 : Int := 15 + Mindestzeit_zum_ABP_2 : Int := 20 + Mindestzeit_zum_ABP_3 : Int := 23 + Mindestzeit_aus_ABP_1 : Int := 18 + Mindestzeit_aus_ABP_2 : Int := 18 + Mindestzeit_aus_ABP_3 : Int := 18 + Host_ABP : Int := 105 + Schleusen_Platz_1 : Int := 3365 + Schleusen_Platz_2 : Int := 3371 + Schleusen_Platz_3 : Int := 3375 + None: + ABP_Nr : Word := 16#B300 + ABP_Dyn_DB : Int := 1126 + ABP_Dyn_DW : Int := 600 + MaxAnzahl : Int := 8 + Mindestzeit_zum_ABP_1 : Int := 15 + Mindestzeit_zum_ABP_2 : Int := 20 + Mindestzeit_zum_ABP_3 : Int := 23 + Mindestzeit_aus_ABP_1 : Int := 18 + Mindestzeit_aus_ABP_2 : Int := 18 + Mindestzeit_aus_ABP_3 : Int := 18 + Host_ABP : Int := 106 + Schleusen_Platz_1 : Int := 3395 + Schleusen_Platz_2 : Int := 3401 + Schleusen_Platz_3 : Int := 3405 + None: + ABP_Nr : Word := 16#B200 + ABP_Dyn_DB : Int := 1127 + ABP_Dyn_DW : Int := 600 + MaxAnzahl : Int := 8 + Mindestzeit_zum_ABP_1 : Int := 15 + Mindestzeit_zum_ABP_2 : Int := 20 + Mindestzeit_zum_ABP_3 : Int := 23 + Mindestzeit_aus_ABP_1 : Int := 18 + Mindestzeit_aus_ABP_2 : Int := 18 + Mindestzeit_aus_ABP_3 : Int := 18 + Host_ABP : Int := 107 + Schleusen_Platz_1 : Int := 3425 + Schleusen_Platz_2 : Int := 3431 + Schleusen_Platz_3 : Int := 3435 + None: + ABP_Nr : Word := 16#B100 + ABP_Dyn_DB : Int := 1128 + ABP_Dyn_DW : Int := 600 + MaxAnzahl : Int := 8 + Mindestzeit_zum_ABP_1 : Int := 15 + Mindestzeit_zum_ABP_2 : Int := 20 + Mindestzeit_zum_ABP_3 : Int := 23 + Mindestzeit_aus_ABP_1 : Int := 18 + Mindestzeit_aus_ABP_2 : Int := 18 + Mindestzeit_aus_ABP_3 : Int := 18 + Host_ABP : Int := 108 + Schleusen_Platz_1 : Int := 3455 + Schleusen_Platz_2 : Int := 3461 + Schleusen_Platz_3 : Int := 3465 diff --git a/=A01+UH06-KF00/Programmbausteine/Datenlisten/DLOmniSchleuse.awl b/=A01+UH06-KF00/Programmbausteine/Datenlisten/DLOmniSchleuse.awl new file mode 100644 index 0000000..78f1ba9 --- /dev/null +++ b/=A01+UH06-KF00/Programmbausteine/Datenlisten/DLOmniSchleuse.awl @@ -0,0 +1,1244 @@ +=== GlobalDB 274: DLOmniSchleuse [DB] === +INTERFACE: + Static: + Datenlistenkopf : Struct + KOPF : Word := WORD#16#DA14 // Datenliste-Kennnung (DA) / Datensatzlänge in Word (1 - 118) + LAENGE : Int := 77 // Länge der Datenliste (maximale Anzahl der Datensätze) + STAMMDATEN : Int := 1 // Stammdatenlänge in Word (1 - 9) + INDDB : Int // Indizierter DB (nur bei Stammdaten = 1 erlaubt !!!) + LAENGEINDDB : Int // Länge des indizierten DB in Word (nur bei Stammdaten = 1 erlaubt !!!) + OFFSETINDDATEN : Int // Offset für indizierte Daten (nur bei Stammdaten = 1 erlaubt !!!) + LETZTERZUGRIFF : Int // Speicherung des letzten Zugriffs + Belegt14 : Int // reserviert von Sort-Datenliste + Reserve16 : Int // Reserve + Reserve18 : Int // Reserve + Bereich_3063 : "UDLHMOmniBereich" // HW>AMR: ganz oben + Schleuse_MB3061_Plus : "UDLHMOmniSchleuse_Plus" + Schleuse_MB3005 : "UDLHMOmniSchleuse" // HW>AMR: ganz oben + Schleuse_MB3004 : "UDLHMOmniSchleuse" // HW>AMR: vor BST 3 + Schleuse_MB3000 : "UDLHMOmniSchleuse" // HW>AMR: hinter BST 3 + Bereich_3555_Plus : "UDLHMOmniBereich_Plus" // VP>EP: hinter BST 1 + Schleuse_MB3562 : "UDLHMOmniSchleuse" // HW>AMR: andere Halle + Bereich_3556_Plus : "UDLHMOmniBereich_Plus" // VP>EP: hinter BST 1 + Schleuse_MB3565 : "UDLHMOmniSchleuse" // HW>AMR: vor BST 4 + Schleuse_MB3456_Plus : "UDLHMOmniSchleuse_Plus" + Schleuse_3481 : "UDLOmniSchleuse" // Schleuse: vor 180-Grad-Bypass + Schleuse_MB3487_Plus : "UDLHMOmniSchleuse_Plus" + Schleuse_vor_Einfahrt_PS5 : "UDLOmniSchleuse" // Schleuse: Hauptstrecke vor AMR (PS5) + Schleuse_Vorstau_PS5 : "UDLOmniSchleuse" // Schleuse: vor Platz 1/2/3 (PS5) + Schleuse_Platz1_PS5 : "UDLOmniSchleuse" // Schleuse: Platz 1 (PS5) + Schleuse_Platz2_PS5 : "UDLOmniSchleuse" // Schleuse: Platz 2 (PS5) + Schleuse_Platz3_PS5 : "UDLOmniSchleuse" // Schleuse: Platz 3 (PS5) + Schleuse_Ausfahrt_PS5 : "UDLOmniSchleuse" // Schleuse: Ausfahrt AMR (PS5) + Schleuse_vor_Ausfahrt_PS5 : "UDLOmniSchleuse" // Schleuse: Hauptstrecke vor AMR (PS5) + Schleuse_vor_Einfahrt_PS4 : "UDLOmniSchleuse" // Schleuse: Hauptstrecke vor AMR (PS4) + Schleuse_Vorstau_PS4 : "UDLOmniSchleuse" // Schleuse: vor Platz 1/2/3 (PS4) + Schleuse_Platz1_PS4 : "UDLOmniSchleuse" // Schleuse: Platz 1 (PS4) + Schleuse_Platz2_PS4 : "UDLOmniSchleuse" // Schleuse: Platz 2 (PS4) + Schleuse_Platz3_PS4 : "UDLOmniSchleuse" // Schleuse: Platz 3 (PS4) + Schleuse_Ausfahrt_PS4 : "UDLOmniSchleuse" // Schleuse: Ausfahrt AMR (PS4) + Schleuse_vor_Einfahrt_PS3 : "UDLOmniSchleuse" // Schleuse: Hauptstrecke vor AMR (PS3) + Schleuse_Vorstau_PS3 : "UDLOmniSchleuse" // Schleuse: vor Platz 1/2/3 (PS3) + Schleuse_Platz1_PS3 : "UDLOmniSchleuse" // Schleuse: Platz 1 (PS3) + Schleuse_Platz2_PS3 : "UDLOmniSchleuse" // Schleuse: Platz 2 (PS3) + Schleuse_Platz3_PS3 : "UDLOmniSchleuse" // Schleuse: Platz 3 (PS3) + Schleuse_Ausfahrt_PS3 : "UDLOmniSchleuse" // Schleuse: Ausfahrt AMR (PS3) + Schleuse_vor_Ausfahrt_PS3 : "UDLOmniSchleuse" // Schleuse: Hauptstrecke vor AMR (PS3) + Schleuse_vor_Einfahrt_PS2 : "UDLOmniSchleuse" // Schleuse: Hauptstrecke vor AMR (PS2) + Schleuse_Vorstau_PS2 : "UDLOmniSchleuse" // Schleuse: vor Platz 1/2/3 (PS2) + Schleuse_Platz1_PS2 : "UDLOmniSchleuse" // Schleuse: Platz 1 (PS2) + Schleuse_Platz2_PS2 : "UDLOmniSchleuse" // Schleuse: Platz 2 (PS2) + Schleuse_Platz3_PS2 : "UDLOmniSchleuse" // Schleuse: Platz 3 (PS2) + Schleuse_Ausfahrt_PS2 : "UDLOmniSchleuse" // Schleuse: Ausfahrt AMR (PS2) + Schleuse_vor_Einfahrt_PS1 : "UDLOmniSchleuse" // Schleuse: Hauptstrecke vor AMR (PS1) + Schleuse_Vorstau_PS1 : "UDLOmniSchleuse" // Schleuse: vor Platz 1/2/3 (PS1) + Schleuse_Platz1_PS1 : "UDLOmniSchleuse" // Schleuse: Platz 1 (PS1) + Schleuse_Platz2_PS1 : "UDLOmniSchleuse" // Schleuse: Platz 2 (PS1) + Schleuse_Platz3_PS1 : "UDLOmniSchleuse" // Schleuse: Platz 3 (PS1) + Schleuse_Ausfahrt_PS1 : "UDLOmniSchleuse" // Schleuse: Ausfahrt AMR (PS1) + Schleuse_vor_Ausfahrt_PS1 : "UDLOmniSchleuse" // Schleuse: Hauptstrecke vor AMR (PS1) + Schleuse_vor_Einfahrt_MPS3 : "UDLOmniSchleuse" // Schleuse: Hauptstrecke vor AMR (MPS3) + Schleuse_Vorstau_MPS3 : "UDLOmniSchleuse" // Schleuse: vor Platz 1/2/3 (MPS3) + Schleuse_Platz1_MPS3 : "UDLOmniSchleuse" // Schleuse: Platz 1 (MPS3) + Schleuse_Platz2_MPS3 : "UDLOmniSchleuse" // Schleuse: Platz 2 (MPS3) + Schleuse_Platz3_MPS3 : "UDLOmniSchleuse" // Schleuse: Platz 3 (MPS3) + Schleuse_Ausfahrt_MPS3 : "UDLOmniSchleuse" // Schleuse: Ausfahrt AMR (MPS3) + Schleuse_vor_Ausfahrt_MPS3 : "UDLOmniSchleuse" // Schleuse: Hauptstrecke vor AMR (MPS3) + Schleuse_vor_Einfahrt_MPS2 : "UDLOmniSchleuse" // Schleuse: Hauptstrecke vor AMR (MPS2) + Schleuse_Vorstau_MPS2 : "UDLOmniSchleuse" // Schleuse: vor Platz 1/2/3 (MPS2) + Schleuse_Platz1_MPS2 : "UDLOmniSchleuse" // Schleuse: Platz 1 (MPS2) + Schleuse_Platz2_MPS2 : "UDLOmniSchleuse" // Schleuse: Platz 2 (MPS2) + Schleuse_Platz3_MPS2 : "UDLOmniSchleuse" // Schleuse: Platz 3 (MPS2) + Schleuse_Ausfahrt_MPS2 : "UDLOmniSchleuse" // Schleuse: Ausfahrt AMR (MPS2) + Schleuse_vor_Ausfahrt_MPS2 : "UDLOmniSchleuse" // Schleuse: Hauptstrecke vor AMR (MPS2) + Schleuse_vor_Einfahrt_MPS1 : "UDLOmniSchleuse" // Schleuse: Hauptstrecke vor AMR (MPS1) + Schleuse_Vorstau_MPS1 : "UDLOmniSchleuse" // Schleuse: vor Platz 1/2/3 (MPS1) + Schleuse_Platz1_MPS1 : "UDLOmniSchleuse" // Schleuse: Platz 1 (MPS1) + Schleuse_Platz2_MPS1 : "UDLOmniSchleuse" // Schleuse: Platz 2 (MPS1) + Schleuse_Platz3_MPS1 : "UDLOmniSchleuse" // Schleuse: Platz 3 (MPS1) + Schleuse_Ausfahrt_MPS1 : "UDLOmniSchleuse" // Schleuse: Ausfahrt AMR (MPS1) + Schleuse_vor_Ausfahrt_MPS1 : "UDLOmniSchleuse" // Schleuse: Hauptstrecke vor AMR (MPS1) + Schleuse_3540 : "UDLOmniSchleuse" // Schleuse: hinter AMR + Schleuse_3543 : "UDLOmniSchleuse" // Schleuse: vor BST 4 + Schleuse_MB3546 : "UDLHMOmniSchleuse" // HW>OB: Hinter BST 4 + Bereich_3550_Plus : "UDLHMOmniBereich_Plus" // VP>EP: hinter BST 1 + Schleuse_MB3552 : "UDLHMOmniSchleuse" // HW>OB: andere Halle + Bereich_3016_Plus : "UDLHMOmniBereich_Plus" // VP>EP: hinter BST 1 + Schleuse_MB3014 : "UDLHMOmniSchleuse" // HW>OB: Vor BST 3 + Schleuse_MB3012 : "UDLHMOmniSchleuse" // HW>OB: Hinter BST 3 > OB + Schleuse_MB3010_Plus : "UDLHMOmniSchleuse_Plus" + Schleuse_MB3070 : "UDLHMOmniSchleuse" // HW>OB: Ganz oben + Schleuse_MB3073_Plus : "UDLHMOmniSchleuse_Plus" + Endekennung : Word := WORD#16#DAEE // Datensort-Ende-Kennung (DBEE) + None: + Bereichs_Nr : Int := 3063 + Bereichs_Typ : Int := 2274 + Bereich_Dyn_DB : Int := 128 + Bereich_Dyn_DW : Int := 0 + Parameter_allg : Struct + Para00 : Bool := false + Para01 : Bool := false + Para02 : Bool := false + Antrieb_Plus_vorhanden : Bool := 1 + Para05 : Bool := false + Para06 : Bool := false + Para07 : Bool := false + Para10 : Bool := false + Para11 : Bool := false + Para12 : Bool := false + Para13 : Bool := false + Para14 : Bool := false + Para15 : Bool := false + Para16 : Bool := false + Para17 : Bool := false + Frei10 : Word := 16#0 + Frei12 : Int := 0 + Ziel_FC : Int := 0 + Draussen_FC : Int := 0 + Frei18 : Int := 0 + Fahrzeit : Int := 0 + Wartezeit_bis_leer : Int := 120 + Übzeit_in_Bereich : Int := 120 + Übzeit_aus_Bereich : Int := 5 + Frei28 : Int := 0 + AusfahrZeit : Int := 0 + Reserve : Array[1..4] of Int + None: + Schleusen_Nr : Int := 3061 + Schleuse_Dyn_DB : Int := 128 + Schleuse_Dyn_DW : Int := 200 + Parameter_allg : Struct + Antrieb_Plus_vorhanden : Bool := 1 + EinfahrZeit : Int := 164 + None: + Schleusen_Nr : Int := 3005 + Schleusen_Typ : Int := 1274 + Schleuse_Dyn_DB : Int := 128 + Schleuse_Dyn_DW : Int := 400 + Parameter_allg : Struct + Antrieb_vorhanden : Bool := 1 + Para02 : Bool := false + Para06 : Bool := false + Para07 : Bool := false + Para10 : Bool := false + Para11 : Bool := false + Para12 : Bool := false + Para13 : Bool := false + Para14 : Bool := false + Para15 : Bool := false + Para16 : Bool := false + Position in DL : Bool := false + Draussen_FC : Int := 0 + RausWeichen_Nr : Int := 0 + Wartezeit_bis_leer : Int := 150 + Übzeit_in_Schleuse : Int := 150 + Übzeit_aus_Schleuse : Int := 30 + Gesamt_Trolley_DL : Int := 1000 + EinfahrZeit : Int := 28 + Reserve : Array[1..3] of Int + None: + Schleusen_Nr : Int := 3004 + Schleusen_Typ : Int := 1274 + Schleuse_Dyn_DB : Int := 128 + Schleuse_Dyn_DW : Int := 600 + Parameter_allg : Struct + Antrieb_vorhanden : Bool := 1 + Para02 : Bool := false + Para06 : Bool := false + Para07 : Bool := false + Para10 : Bool := false + Para11 : Bool := false + Para12 : Bool := false + Para13 : Bool := false + Para14 : Bool := false + Para15 : Bool := false + Para16 : Bool := false + Position in DL : Bool := false + Ziel_FC : Int := 181 + Draussen_FC : Int := 0 + RausWeichen_Nr : Int := 0 + Wartezeit_bis_leer : Int := 150 + Übzeit_in_Schleuse : Int := 150 + Übzeit_aus_Schleuse : Int := 30 + Gesamt_Trolley_DL : Int := 1000 + EinfahrZeit : Int := 66 + Reserve : Array[1..3] of Int + None: + Schleusen_Nr : Int := 3000 + Schleusen_Typ : Int := 1274 + Schleuse_Dyn_DB : Int := 128 + Schleuse_Dyn_DW : Int := 800 + Parameter_allg : Struct + Antrieb_vorhanden : Bool := 0 + Para02 : Bool := false + Antrieb_Plus_vorhanden : Bool := 1 + Para06 : Bool := false + Para07 : Bool := false + Para10 : Bool := false + Para11 : Bool := false + Para12 : Bool := false + Para13 : Bool := false + Para14 : Bool := false + Para15 : Bool := false + Para16 : Bool := false + Position in DL : Bool := false + Draussen_FC : Int := 0 + RausWeichen_Nr : Int := 0 + Wartezeit_bis_leer : Int := 150 + Übzeit_in_Schleuse : Int := 150 + Übzeit_aus_Schleuse : Int := 30 + Gesamt_Trolley_DL : Int := 1000 + AusfahrZeit : Int := 5 + EinfahrZeit : Int := 3 + Reserve : Array[1..3] of Int + None: + Bereichs_Nr : Int := 3555 + Bereich_Dyn_DB : Int := 128 + Bereich_Dyn_DW : Int := 1000 + Fahrzeit : Int := 63 + Wartezeit_bis_leer : Int := 90 + Übzeit_in_Bereich : Int := 90 + Übzeit_aus_Bereich : Int := 30 + MaxRausTrolleys : Int := 2 + None: + Schleusen_Nr : Int := 3562 + Schleusen_Typ : Int := 1274 + Schleuse_Dyn_DB : Int := 128 + Schleuse_Dyn_DW : Int := 1200 + Parameter_allg : Struct + Antrieb_vorhanden : Bool := 1 + Para02 : Bool := false + Antrieb_Plus_vorhanden : Bool := 1 + Para06 : Bool := false + Para07 : Bool := false + Para10 : Bool := false + Para11 : Bool := false + Para12 : Bool := false + Para13 : Bool := false + Para14 : Bool := false + Para15 : Bool := false + Para16 : Bool := false + Position in DL : Bool := false + Draussen_FC : Int := 0 + RausWeichen_Nr : Int := 0 + Wartezeit_bis_leer : Int := 150 + Übzeit_in_Schleuse : Int := 150 + Übzeit_aus_Schleuse : Int := 30 + Gesamt_Trolley_DL : Int := 1000 + AusfahrZeit : Int := 5 + EinfahrZeit : Int := 37 + Reserve : Array[1..3] of Int + None: + Bereichs_Nr : Int := 3556 + Bereich_Dyn_DB : Int := 128 + Bereich_Dyn_DW : Int := 1400 + Fahrzeit : Int := 48 + Wartezeit_bis_leer : Int := 90 + Übzeit_in_Bereich : Int := 90 + Übzeit_aus_Bereich : Int := 30 + MaxRausTrolleys : Int := 1 + None: + Schleusen_Nr : Int := 3565 + Schleusen_Typ : Int := 1274 + Schleuse_Dyn_DB : Int := 128 + Schleuse_Dyn_DW : Int := 1600 + Parameter_allg : Struct + Para02 : Bool := false + Antrieb_Plus_vorhanden : Bool := 1 + Para06 : Bool := false + Para07 : Bool := false + Para10 : Bool := false + Para11 : Bool := false + Para12 : Bool := false + Para13 : Bool := false + Para14 : Bool := false + Para15 : Bool := false + Para16 : Bool := false + Position in DL : Bool := false + Ziel_FC : Int := 181 + Draussen_FC : Int := 0 + RausWeichen_Nr : Int := 0 + Wartezeit_bis_leer : Int := 150 + Übzeit_in_Schleuse : Int := 150 + Übzeit_aus_Schleuse : Int := 30 + Gesamt_Trolley_DL : Int := 1000 + EinfahrZeit : Int := 5 + Reserve : Array[1..3] of Int + None: + Schleusen_Nr : Int := 3456 + Schleuse_Dyn_DB : Int := 1120 + Schleuse_Dyn_DW : Int := 0 + EinfahrZeit : Int := 58 + None: + Schleusen_Nr : Int := 3481 + Schleusen_Typ : Int := 1274 // Schleusentyp = 1274 (Normal) + Schleuse_Dyn_DB : Int := 1120 + Schleuse_Dyn_DW : Int := 200 + Parameter_allg : Struct + Leser_eingebaut : Bool := 1 + Leser_ID : Word := 16#6100 + Leser_FC : Int := 1180 + Ziel_FC : Int := 1181 + Draussen_FC : Int := 1182 + RausWeichen_Nr : Int := 3482 + Mindeszeit_Schleuse_geoeffnet : Int := 5 + EinfahrZeit : Int := 83 + None: + Schleusen_Nr : Int := 3487 + Schleuse_Dyn_DB : Int := 1120 + Schleuse_Dyn_DW : Int := 600 + Mindeszeit_Schleuse_geoeffnet : Int := 5 + EinfahrZeit : Int := 60 + None: + Schleusen_Nr : Int := 3241 + Schleusen_Typ : Int := 1274 // Schleusentyp = 1274 (Normal) + Schleuse_Dyn_DB : Int := 1121 + Parameter_allg : Struct + Leser_eingebaut : Bool := 1 + Leser_ID : Word := 16#6101 + Leser_FC : Int := 1180 + Ziel_FC : Int := 1181 + Draussen_FC : Int := 1182 + RausWeichen_Nr : Int := 3242 + Mindeszeit_Schleuse_geoeffnet : Int := 5 + EinfahrZeit : Int := 6 + None: + Schleusen_Nr : Int := 3243 + Schleusen_Typ : Int := 1274 // Schleusentyp = 1274 (Normal) + Schleuse_Dyn_DB : Int := 1121 + Schleuse_Dyn_DW : Int := 400 + Parameter_allg : Struct + B_AusSep_vorhanden : Bool := 1 + Ziel_FC : Int := 1181 + Mindeszeit_Schleuse_geoeffnet : Int := 5 + EinfahrZeit : Int := 29 + None: + Schleusen_Nr : Int := 3245 + Schleusen_Typ : Int := 1274 // Schleusentyp = 1274 (Normal) + Schleuse_Dyn_DB : Int := 1121 + Schleuse_Dyn_DW : Int := 800 + Parameter_allg : Struct + Leser_eingebaut : Bool := 1 + Antrieb_Plus_vorhanden : Bool := 1 + 2.V_bei_Ausfahrt_checken : Bool := 1 + Leser_ID : Word := 16#6102 + Leser_FC : Int := 1180 + Ziel_FC : Int := 1181 + Mindeszeit_Schleuse_geoeffnet : Int := 5 + Wartezeit_bis_leer : Int := 5 + Übzeit_in_Schleuse : Int := 5 + Übzeit_aus_Schleuse : Int := 5 + None: + Schleusen_Nr : Int := 3251 + Schleusen_Typ : Int := 1274 // Schleusentyp = 1274 (Normal) + Schleuse_Dyn_DB : Int := 1121 + Schleuse_Dyn_DW : Int := 1000 + Parameter_allg : Struct + Leser_eingebaut : Bool := 1 + Antrieb_Plus_vorhanden : Bool := 1 + 2.V_bei_Ausfahrt_checken : Bool := 1 + Leser_ID : Word := 16#6103 + Leser_FC : Int := 1180 + Ziel_FC : Int := 1181 + Mindeszeit_Schleuse_geoeffnet : Int := 5 + Wartezeit_bis_leer : Int := 5 + Übzeit_in_Schleuse : Int := 5 + Übzeit_aus_Schleuse : Int := 5 + None: + Schleusen_Nr : Int := 3255 + Schleusen_Typ : Int := 1274 // Schleusentyp = 1274 (Normal) + Schleuse_Dyn_DB : Int := 1121 + Schleuse_Dyn_DW : Int := 1200 + Parameter_allg : Struct + Leser_eingebaut : Bool := 1 + Antrieb_Plus_vorhanden : Bool := 1 + 2.V_bei_Ausfahrt_checken : Bool := 1 + Leser_ID : Word := 16#6104 + Leser_FC : Int := 1180 + Ziel_FC : Int := 1181 + Mindeszeit_Schleuse_geoeffnet : Int := 5 + Wartezeit_bis_leer : Int := 5 + Übzeit_in_Schleuse : Int := 5 + Übzeit_aus_Schleuse : Int := 5 + None: + Schleusen_Nr : Int := 3262 + Schleusen_Typ : Int := 1274 // Schleusentyp = 1274 (Normal) + Schleuse_Dyn_DB : Int := 1121 + Schleuse_Dyn_DW : Int := 1400 + Parameter_allg : Struct + B_AusSep_vorhanden : Bool := 1 + Antrieb_Plus_vorhanden : Bool := 1 + Ziel_FC : Int := 1181 + Mindeszeit_Schleuse_geoeffnet : Int := 5 + Wartezeit_bis_leer : Int := 30 + Übzeit_in_Schleuse : Int := 30 + EinfahrZeit : Int := 8 + None: + Schleusen_Nr : Int := 3265 + Schleusen_Typ : Int := 1274 // Schleusentyp = 1274 (Normal) + Schleuse_Dyn_DB : Int := 1121 + Schleuse_Dyn_DW : Int := 1600 + Parameter_allg : Struct + B_AusSep_vorhanden : Bool := 1 + Ziel_FC : Int := 1181 + Draussen_FC : Int := 1182 + Mindeszeit_Schleuse_geoeffnet : Int := 5 + EinfahrZeit : Int := 14 + None: + Schleusen_Nr : Int := 3271 + Schleusen_Typ : Int := 1274 // Schleusentyp = 1274 (Normal) + Schleuse_Dyn_DB : Int := 1122 + Parameter_allg : Struct + Leser_eingebaut : Bool := 1 + Leser_ID : Word := 16#6105 + Leser_FC : Int := 1180 + Ziel_FC : Int := 1181 + Draussen_FC : Int := 1182 + RausWeichen_Nr : Int := 3272 + Mindeszeit_Schleuse_geoeffnet : Int := 5 + EinfahrZeit : Int := 7 + None: + Schleusen_Nr : Int := 3273 + Schleusen_Typ : Int := 1274 // Schleusentyp = 1274 (Normal) + Schleuse_Dyn_DB : Int := 1122 + Schleuse_Dyn_DW : Int := 400 + Parameter_allg : Struct + B_AusSep_vorhanden : Bool := 1 + Ziel_FC : Int := 1181 + Mindeszeit_Schleuse_geoeffnet : Int := 5 + EinfahrZeit : Int := 29 + None: + Schleusen_Nr : Int := 3275 + Schleusen_Typ : Int := 1274 // Schleusentyp = 1274 (Normal) + Schleuse_Dyn_DB : Int := 1122 + Schleuse_Dyn_DW : Int := 800 + Parameter_allg : Struct + Leser_eingebaut : Bool := 1 + Antrieb_Plus_vorhanden : Bool := 1 + 2.V_bei_Ausfahrt_checken : Bool := 1 + Leser_ID : Word := 16#6106 + Leser_FC : Int := 1180 + Ziel_FC : Int := 1181 + Mindeszeit_Schleuse_geoeffnet : Int := 5 + Wartezeit_bis_leer : Int := 5 + Übzeit_in_Schleuse : Int := 5 + Übzeit_aus_Schleuse : Int := 5 + None: + Schleusen_Nr : Int := 3281 + Schleusen_Typ : Int := 1274 // Schleusentyp = 1274 (Normal) + Schleuse_Dyn_DB : Int := 1122 + Schleuse_Dyn_DW : Int := 1000 + Parameter_allg : Struct + Leser_eingebaut : Bool := 1 + Antrieb_Plus_vorhanden : Bool := 1 + 2.V_bei_Ausfahrt_checken : Bool := 1 + Leser_ID : Word := 16#6107 + Leser_FC : Int := 1180 + Ziel_FC : Int := 1181 + Mindeszeit_Schleuse_geoeffnet : Int := 5 + Wartezeit_bis_leer : Int := 5 + Übzeit_in_Schleuse : Int := 5 + Übzeit_aus_Schleuse : Int := 5 + None: + Schleusen_Nr : Int := 3285 + Schleusen_Typ : Int := 1274 // Schleusentyp = 1274 (Normal) + Schleuse_Dyn_DB : Int := 1122 + Schleuse_Dyn_DW : Int := 1200 + Parameter_allg : Struct + Leser_eingebaut : Bool := 1 + Antrieb_Plus_vorhanden : Bool := 1 + 2.V_bei_Ausfahrt_checken : Bool := 1 + Leser_ID : Word := 16#6108 + Leser_FC : Int := 1180 + Ziel_FC : Int := 1181 + Mindeszeit_Schleuse_geoeffnet : Int := 5 + Wartezeit_bis_leer : Int := 5 + Übzeit_in_Schleuse : Int := 5 + Übzeit_aus_Schleuse : Int := 5 + None: + Schleusen_Nr : Int := 3291 + Schleusen_Typ : Int := 1274 // Schleusentyp = 1274 (Normal) + Schleuse_Dyn_DB : Int := 1122 + Schleuse_Dyn_DW : Int := 1400 + Parameter_allg : Struct + B_AusSep_vorhanden : Bool := 1 + Antrieb_Plus_vorhanden : Bool := 1 + Ziel_FC : Int := 1181 + RausWeichen_Nr : Int := 3302 + Mindeszeit_Schleuse_geoeffnet : Int := 5 + Wartezeit_bis_leer : Int := 30 + Übzeit_in_Schleuse : Int := 30 + EinfahrZeit : Int := 8 + None: + Schleusen_Nr : Int := 3293 + Schleusen_Typ : Int := 1274 // Schleusentyp = 1274 (Normal) + Schleuse_Dyn_DB : Int := 1123 + Parameter_allg : Struct + Leser_eingebaut : Bool := 1 + Leser_ID : Word := 16#6109 + Leser_FC : Int := 1180 + Ziel_FC : Int := 1181 + Draussen_FC : Int := 1182 + RausWeichen_Nr : Int := 3302 + Mindeszeit_Schleuse_geoeffnet : Int := 5 + EinfahrZeit : Int := 15 + None: + Schleusen_Nr : Int := 3303 + Schleusen_Typ : Int := 1274 // Schleusentyp = 1274 (Normal) + Schleuse_Dyn_DB : Int := 1123 + Schleuse_Dyn_DW : Int := 400 + Parameter_allg : Struct + B_AusSep_vorhanden : Bool := 1 + Ziel_FC : Int := 1181 + Mindeszeit_Schleuse_geoeffnet : Int := 5 + EinfahrZeit : Int := 30 + None: + Schleusen_Nr : Int := 3305 + Schleusen_Typ : Int := 1274 // Schleusentyp = 1274 (Normal) + Schleuse_Dyn_DB : Int := 1123 + Schleuse_Dyn_DW : Int := 800 + Parameter_allg : Struct + Leser_eingebaut : Bool := 1 + Antrieb_Plus_vorhanden : Bool := 1 + 2.V_bei_Ausfahrt_checken : Bool := 1 + Leser_ID : Word := 16#6110 + Leser_FC : Int := 1180 + Ziel_FC : Int := 1181 + Mindeszeit_Schleuse_geoeffnet : Int := 5 + Wartezeit_bis_leer : Int := 5 + Übzeit_in_Schleuse : Int := 5 + Übzeit_aus_Schleuse : Int := 5 + None: + Schleusen_Nr : Int := 3311 + Schleusen_Typ : Int := 1274 // Schleusentyp = 1274 (Normal) + Schleuse_Dyn_DB : Int := 1123 + Schleuse_Dyn_DW : Int := 1000 + Parameter_allg : Struct + Leser_eingebaut : Bool := 1 + Antrieb_Plus_vorhanden : Bool := 1 + 2.V_bei_Ausfahrt_checken : Bool := 1 + Leser_ID : Word := 16#6111 + Leser_FC : Int := 1180 + Ziel_FC : Int := 1181 + Mindeszeit_Schleuse_geoeffnet : Int := 5 + Wartezeit_bis_leer : Int := 5 + Übzeit_in_Schleuse : Int := 5 + Übzeit_aus_Schleuse : Int := 5 + None: + Schleusen_Nr : Int := 3315 + Schleusen_Typ : Int := 1274 // Schleusentyp = 1274 (Normal) + Schleuse_Dyn_DB : Int := 1123 + Schleuse_Dyn_DW : Int := 1200 + Parameter_allg : Struct + Leser_eingebaut : Bool := 1 + Antrieb_Plus_vorhanden : Bool := 1 + 2.V_bei_Ausfahrt_checken : Bool := 1 + Leser_ID : Word := 16#6112 + Leser_FC : Int := 1180 + Ziel_FC : Int := 1181 + Mindeszeit_Schleuse_geoeffnet : Int := 5 + Wartezeit_bis_leer : Int := 5 + Übzeit_in_Schleuse : Int := 5 + Übzeit_aus_Schleuse : Int := 5 + None: + Schleusen_Nr : Int := 3321 + Schleusen_Typ : Int := 1274 // Schleusentyp = 1274 (Normal) + Schleuse_Dyn_DB : Int := 1123 + Schleuse_Dyn_DW : Int := 1400 + Parameter_allg : Struct + B_AusSep_vorhanden : Bool := 1 + Antrieb_Plus_vorhanden : Bool := 1 + Ziel_FC : Int := 1181 + Mindeszeit_Schleuse_geoeffnet : Int := 5 + Wartezeit_bis_leer : Int := 30 + Übzeit_in_Schleuse : Int := 30 + EinfahrZeit : Int := 8 + None: + Schleusen_Nr : Int := 3323 + Schleusen_Typ : Int := 1274 // Schleusentyp = 1274 (Normal) + Schleuse_Dyn_DB : Int := 1123 + Schleuse_Dyn_DW : Int := 1600 + Parameter_allg : Struct + B_AusSep_vorhanden : Bool := 1 + Ziel_FC : Int := 1181 + Draussen_FC : Int := 1182 + Mindeszeit_Schleuse_geoeffnet : Int := 5 + EinfahrZeit : Int := 14 + None: + Schleusen_Nr : Int := 3331 + Schleusen_Typ : Int := 1274 // Schleusentyp = 1274 (Normal) + Schleuse_Dyn_DB : Int := 1124 + Parameter_allg : Struct + Leser_eingebaut : Bool := 1 + Leser_ID : Word := 16#6113 + Leser_FC : Int := 1180 + Ziel_FC : Int := 1181 + Draussen_FC : Int := 1182 + RausWeichen_Nr : Int := 3332 + Mindeszeit_Schleuse_geoeffnet : Int := 5 + EinfahrZeit : Int := 6 + None: + Schleusen_Nr : Int := 3333 + Schleusen_Typ : Int := 1274 // Schleusentyp = 1274 (Normal) + Schleuse_Dyn_DB : Int := 1124 + Schleuse_Dyn_DW : Int := 400 + Parameter_allg : Struct + B_AusSep_vorhanden : Bool := 1 + Ziel_FC : Int := 1181 + Mindeszeit_Schleuse_geoeffnet : Int := 5 + EinfahrZeit : Int := 29 + None: + Schleusen_Nr : Int := 3335 + Schleusen_Typ : Int := 1274 // Schleusentyp = 1274 (Normal) + Schleuse_Dyn_DB : Int := 1124 + Schleuse_Dyn_DW : Int := 800 + Parameter_allg : Struct + Leser_eingebaut : Bool := 1 + Antrieb_Plus_vorhanden : Bool := 1 + 2.V_bei_Ausfahrt_checken : Bool := 1 + Leser_ID : Word := 16#6114 + Leser_FC : Int := 1180 + Ziel_FC : Int := 1181 + Mindeszeit_Schleuse_geoeffnet : Int := 5 + Wartezeit_bis_leer : Int := 5 + Übzeit_in_Schleuse : Int := 5 + Übzeit_aus_Schleuse : Int := 5 + None: + Schleusen_Nr : Int := 3341 + Schleusen_Typ : Int := 1274 // Schleusentyp = 1274 (Normal) + Schleuse_Dyn_DB : Int := 1124 + Schleuse_Dyn_DW : Int := 1000 + Parameter_allg : Struct + Leser_eingebaut : Bool := 1 + Antrieb_Plus_vorhanden : Bool := 1 + 2.V_bei_Ausfahrt_checken : Bool := 1 + Leser_ID : Word := 16#6115 + Leser_FC : Int := 1180 + Ziel_FC : Int := 1181 + Mindeszeit_Schleuse_geoeffnet : Int := 5 + Wartezeit_bis_leer : Int := 5 + Übzeit_in_Schleuse : Int := 5 + Übzeit_aus_Schleuse : Int := 5 + None: + Schleusen_Nr : Int := 3345 + Schleusen_Typ : Int := 1274 // Schleusentyp = 1274 (Normal) + Schleuse_Dyn_DB : Int := 1124 + Schleuse_Dyn_DW : Int := 1200 + Parameter_allg : Struct + Leser_eingebaut : Bool := 1 + Antrieb_Plus_vorhanden : Bool := 1 + 2.V_bei_Ausfahrt_checken : Bool := 1 + Leser_ID : Word := 16#6116 + Leser_FC : Int := 1180 + Ziel_FC : Int := 1181 + Mindeszeit_Schleuse_geoeffnet : Int := 5 + Wartezeit_bis_leer : Int := 5 + Übzeit_in_Schleuse : Int := 5 + Übzeit_aus_Schleuse : Int := 5 + None: + Schleusen_Nr : Int := 3351 + Schleusen_Typ : Int := 1274 // Schleusentyp = 1274 (Normal) + Schleuse_Dyn_DB : Int := 1124 + Schleuse_Dyn_DW : Int := 1400 + Parameter_allg : Struct + B_AusSep_vorhanden : Bool := 1 + Antrieb_Plus_vorhanden : Bool := 1 + Ziel_FC : Int := 1181 + RausWeichen_Nr : Int := 3362 + Mindeszeit_Schleuse_geoeffnet : Int := 5 + Wartezeit_bis_leer : Int := 30 + Übzeit_in_Schleuse : Int := 30 + EinfahrZeit : Int := 8 + None: + Schleusen_Nr : Int := 3353 + Schleusen_Typ : Int := 1274 // Schleusentyp = 1274 (Normal) + Schleuse_Dyn_DB : Int := 1125 + Parameter_allg : Struct + Leser_eingebaut : Bool := 1 + Leser_ID : Word := 16#6133 + Leser_FC : Int := 1180 + Ziel_FC : Int := 1181 + Draussen_FC : Int := 1182 + RausWeichen_Nr : Int := 3362 + Mindeszeit_Schleuse_geoeffnet : Int := 5 + EinfahrZeit : Int := 14 + None: + Schleusen_Nr : Int := 3363 + Schleusen_Typ : Int := 1274 // Schleusentyp = 1274 (Normal) + Schleuse_Dyn_DB : Int := 1125 + Schleuse_Dyn_DW : Int := 400 + Parameter_allg : Struct + B_AusSep_vorhanden : Bool := 1 + Ziel_FC : Int := 1181 + Mindeszeit_Schleuse_geoeffnet : Int := 5 + EinfahrZeit : Int := 30 + None: + Schleusen_Nr : Int := 3365 + Schleusen_Typ : Int := 1274 // Schleusentyp = 1274 (Normal) + Schleuse_Dyn_DB : Int := 1125 + Schleuse_Dyn_DW : Int := 800 + Parameter_allg : Struct + Leser_eingebaut : Bool := 1 + Antrieb_Plus_vorhanden : Bool := 1 + 2.V_bei_Ausfahrt_checken : Bool := 1 + Leser_ID : Word := 16#6117 + Leser_FC : Int := 1180 + Ziel_FC : Int := 1181 + Mindeszeit_Schleuse_geoeffnet : Int := 5 + Wartezeit_bis_leer : Int := 5 + Übzeit_in_Schleuse : Int := 5 + Übzeit_aus_Schleuse : Int := 5 + None: + Schleusen_Nr : Int := 3371 + Schleusen_Typ : Int := 1274 // Schleusentyp = 1274 (Normal) + Schleuse_Dyn_DB : Int := 1125 + Schleuse_Dyn_DW : Int := 1000 + Parameter_allg : Struct + Leser_eingebaut : Bool := 1 + Antrieb_Plus_vorhanden : Bool := 1 + 2.V_bei_Ausfahrt_checken : Bool := 1 + Leser_ID : Word := 16#6118 + Leser_FC : Int := 1180 + Ziel_FC : Int := 1181 + Mindeszeit_Schleuse_geoeffnet : Int := 5 + Wartezeit_bis_leer : Int := 5 + Übzeit_in_Schleuse : Int := 5 + Übzeit_aus_Schleuse : Int := 5 + None: + Schleusen_Nr : Int := 3375 + Schleusen_Typ : Int := 1274 // Schleusentyp = 1274 (Normal) + Schleuse_Dyn_DB : Int := 1125 + Schleuse_Dyn_DW : Int := 1200 + Parameter_allg : Struct + Leser_eingebaut : Bool := 1 + Antrieb_Plus_vorhanden : Bool := 1 + 2.V_bei_Ausfahrt_checken : Bool := 1 + Leser_ID : Word := 16#6119 + Leser_FC : Int := 1180 + Ziel_FC : Int := 1181 + Mindeszeit_Schleuse_geoeffnet : Int := 5 + Wartezeit_bis_leer : Int := 5 + Übzeit_in_Schleuse : Int := 5 + Übzeit_aus_Schleuse : Int := 5 + None: + Schleusen_Nr : Int := 3381 + Schleusen_Typ : Int := 1274 // Schleusentyp = 1274 (Normal) + Schleuse_Dyn_DB : Int := 1125 + Schleuse_Dyn_DW : Int := 1400 + Parameter_allg : Struct + B_AusSep_vorhanden : Bool := 1 + Antrieb_Plus_vorhanden : Bool := 1 + Ziel_FC : Int := 1181 + Mindeszeit_Schleuse_geoeffnet : Int := 5 + Wartezeit_bis_leer : Int := 30 + Übzeit_in_Schleuse : Int := 30 + EinfahrZeit : Int := 8 + None: + Schleusen_Nr : Int := 3383 + Schleusen_Typ : Int := 1274 // Schleusentyp = 1274 (Normal) + Schleuse_Dyn_DB : Int := 1125 + Schleuse_Dyn_DW : Int := 1600 + Parameter_allg : Struct + B_AusSep_vorhanden : Bool := 1 + Ziel_FC : Int := 1181 + Draussen_FC : Int := 1182 + Mindeszeit_Schleuse_geoeffnet : Int := 5 + EinfahrZeit : Int := 28 + None: + Schleusen_Nr : Int := 3390 + Schleusen_Typ : Int := 1274 // Schleusentyp = 1274 (Normal) + Schleuse_Dyn_DB : Int := 1126 + Parameter_allg : Struct + Leser_eingebaut : Bool := 1 + Leser_ID : Word := 16#6120 + Leser_FC : Int := 1180 + Ziel_FC : Int := 1181 + Draussen_FC : Int := 1182 + RausWeichen_Nr : Int := 3392 + Mindeszeit_Schleuse_geoeffnet : Int := 5 + EinfahrZeit : Int := 15 + None: + Schleusen_Nr : Int := 3393 + Schleusen_Typ : Int := 1274 // Schleusentyp = 1274 (Normal) + Schleuse_Dyn_DB : Int := 1126 + Schleuse_Dyn_DW : Int := 400 + Parameter_allg : Struct + B_AusSep_vorhanden : Bool := 1 + Ziel_FC : Int := 1181 + Mindeszeit_Schleuse_geoeffnet : Int := 5 + EinfahrZeit : Int := 30 + None: + Schleusen_Nr : Int := 3395 + Schleusen_Typ : Int := 1274 // Schleusentyp = 1274 (Normal) + Schleuse_Dyn_DB : Int := 1126 + Schleuse_Dyn_DW : Int := 800 + Parameter_allg : Struct + Leser_eingebaut : Bool := 1 + Antrieb_Plus_vorhanden : Bool := 1 + 2.V_bei_Ausfahrt_checken : Bool := 1 + Leser_ID : Word := 16#6121 + Leser_FC : Int := 1180 + Ziel_FC : Int := 1181 + Mindeszeit_Schleuse_geoeffnet : Int := 5 + Wartezeit_bis_leer : Int := 5 + Übzeit_in_Schleuse : Int := 5 + Übzeit_aus_Schleuse : Int := 5 + None: + Schleusen_Nr : Int := 3401 + Schleusen_Typ : Int := 1274 // Schleusentyp = 1274 (Normal) + Schleuse_Dyn_DB : Int := 1126 + Schleuse_Dyn_DW : Int := 1000 + Parameter_allg : Struct + Leser_eingebaut : Bool := 1 + Antrieb_Plus_vorhanden : Bool := 1 + 2.V_bei_Ausfahrt_checken : Bool := 1 + Leser_ID : Word := 16#6122 + Leser_FC : Int := 1180 + Ziel_FC : Int := 1181 + Mindeszeit_Schleuse_geoeffnet : Int := 5 + Wartezeit_bis_leer : Int := 5 + Übzeit_in_Schleuse : Int := 5 + Übzeit_aus_Schleuse : Int := 5 + None: + Schleusen_Nr : Int := 3405 + Schleusen_Typ : Int := 1274 // Schleusentyp = 1274 (Normal) + Schleuse_Dyn_DB : Int := 1126 + Schleuse_Dyn_DW : Int := 1200 + Parameter_allg : Struct + Leser_eingebaut : Bool := 1 + Antrieb_Plus_vorhanden : Bool := 1 + 2.V_bei_Ausfahrt_checken : Bool := 1 + Leser_ID : Word := 16#6123 + Leser_FC : Int := 1180 + Ziel_FC : Int := 1181 + Mindeszeit_Schleuse_geoeffnet : Int := 5 + Wartezeit_bis_leer : Int := 5 + Übzeit_in_Schleuse : Int := 5 + Übzeit_aus_Schleuse : Int := 5 + None: + Schleusen_Nr : Int := 3411 + Schleusen_Typ : Int := 1274 // Schleusentyp = 1274 (Normal) + Schleuse_Dyn_DB : Int := 1126 + Schleuse_Dyn_DW : Int := 1400 + Parameter_allg : Struct + B_AusSep_vorhanden : Bool := 1 + Antrieb_Plus_vorhanden : Bool := 1 + Ziel_FC : Int := 1181 + Mindeszeit_Schleuse_geoeffnet : Int := 5 + Wartezeit_bis_leer : Int := 30 + Übzeit_in_Schleuse : Int := 30 + EinfahrZeit : Int := 8 + None: + Schleusen_Nr : Int := 3413 + Schleusen_Typ : Int := 1274 // Schleusentyp = 1274 (Normal) + Schleuse_Dyn_DB : Int := 1126 + Schleuse_Dyn_DW : Int := 1600 + Parameter_allg : Struct + B_AusSep_vorhanden : Bool := 1 + Ziel_FC : Int := 1181 + Draussen_FC : Int := 1182 + Mindeszeit_Schleuse_geoeffnet : Int := 5 + EinfahrZeit : Int := 15 + None: + Schleusen_Nr : Int := 3421 + Schleusen_Typ : Int := 1274 // Schleusentyp = 1274 (Normal) + Schleuse_Dyn_DB : Int := 1127 + Parameter_allg : Struct + Leser_eingebaut : Bool := 1 + Leser_ID : Word := 16#6124 + Leser_FC : Int := 1180 + Ziel_FC : Int := 1181 + Draussen_FC : Int := 1182 + RausWeichen_Nr : Int := 3422 + Mindeszeit_Schleuse_geoeffnet : Int := 5 + EinfahrZeit : Int := 32 + None: + Schleusen_Nr : Int := 3423 + Schleusen_Typ : Int := 1274 // Schleusentyp = 1274 (Normal) + Schleuse_Dyn_DB : Int := 1127 + Schleuse_Dyn_DW : Int := 400 + Parameter_allg : Struct + B_AusSep_vorhanden : Bool := 1 + Ziel_FC : Int := 1181 + Mindeszeit_Schleuse_geoeffnet : Int := 5 + EinfahrZeit : Int := 29 + None: + Schleusen_Nr : Int := 3425 + Schleusen_Typ : Int := 1274 // Schleusentyp = 1274 (Normal) + Schleuse_Dyn_DB : Int := 1127 + Schleuse_Dyn_DW : Int := 800 + Parameter_allg : Struct + Leser_eingebaut : Bool := 1 + Antrieb_Plus_vorhanden : Bool := 1 + 2.V_bei_Ausfahrt_checken : Bool := 1 + Leser_ID : Word := 16#6125 + Leser_FC : Int := 1180 + Ziel_FC : Int := 1181 + Mindeszeit_Schleuse_geoeffnet : Int := 5 + Wartezeit_bis_leer : Int := 5 + Übzeit_in_Schleuse : Int := 5 + Übzeit_aus_Schleuse : Int := 5 + None: + Schleusen_Nr : Int := 3431 + Schleusen_Typ : Int := 1274 // Schleusentyp = 1274 (Normal) + Schleuse_Dyn_DB : Int := 1127 + Schleuse_Dyn_DW : Int := 1000 + Parameter_allg : Struct + Leser_eingebaut : Bool := 1 + Antrieb_Plus_vorhanden : Bool := 1 + 2.V_bei_Ausfahrt_checken : Bool := 1 + Leser_ID : Word := 16#6126 + Leser_FC : Int := 1180 + Ziel_FC : Int := 1181 + Mindeszeit_Schleuse_geoeffnet : Int := 5 + Wartezeit_bis_leer : Int := 5 + Übzeit_in_Schleuse : Int := 5 + Übzeit_aus_Schleuse : Int := 5 + None: + Schleusen_Nr : Int := 3435 + Schleusen_Typ : Int := 1274 // Schleusentyp = 1274 (Normal) + Schleuse_Dyn_DB : Int := 1127 + Schleuse_Dyn_DW : Int := 1200 + Parameter_allg : Struct + Leser_eingebaut : Bool := 1 + Antrieb_Plus_vorhanden : Bool := 1 + 2.V_bei_Ausfahrt_checken : Bool := 1 + Leser_ID : Word := 16#6127 + Leser_FC : Int := 1180 + Ziel_FC : Int := 1181 + Mindeszeit_Schleuse_geoeffnet : Int := 5 + Wartezeit_bis_leer : Int := 5 + Übzeit_in_Schleuse : Int := 5 + Übzeit_aus_Schleuse : Int := 5 + None: + Schleusen_Nr : Int := 3441 + Schleusen_Typ : Int := 1274 // Schleusentyp = 1274 (Normal) + Schleuse_Dyn_DB : Int := 1127 + Schleuse_Dyn_DW : Int := 1400 + Parameter_allg : Struct + B_AusSep_vorhanden : Bool := 1 + Antrieb_Plus_vorhanden : Bool := 1 + Ziel_FC : Int := 1181 + Mindeszeit_Schleuse_geoeffnet : Int := 5 + Wartezeit_bis_leer : Int := 30 + Übzeit_in_Schleuse : Int := 30 + EinfahrZeit : Int := 8 + None: + Schleusen_Nr : Int := 3443 + Schleusen_Typ : Int := 1274 // Schleusentyp = 1274 (Normal) + Schleuse_Dyn_DB : Int := 1127 + Schleuse_Dyn_DW : Int := 1600 + Parameter_allg : Struct + B_AusSep_vorhanden : Bool := 1 + Antrieb_Plus_vorhanden : Bool := 1 + Ziel_FC : Int := 1181 + Draussen_FC : Int := 1182 + Mindeszeit_Schleuse_geoeffnet : Int := 5 + EinfahrZeit : Int := 13 + None: + Schleusen_Nr : Int := 3450 + Schleusen_Typ : Int := 1274 // Schleusentyp = 1274 (Normal) + Schleuse_Dyn_DB : Int := 1128 + Parameter_allg : Struct + Leser_eingebaut : Bool := 1 + Leser_ID : Word := 16#6128 + Leser_FC : Int := 1180 + Ziel_FC : Int := 1181 + Draussen_FC : Int := 1182 + RausWeichen_Nr : Int := 3452 + Mindeszeit_Schleuse_geoeffnet : Int := 5 + EinfahrZeit : Int := 16 + None: + Schleusen_Nr : Int := 3453 + Schleusen_Typ : Int := 1274 // Schleusentyp = 1274 (Normal) + Schleuse_Dyn_DB : Int := 1128 + Schleuse_Dyn_DW : Int := 400 + Parameter_allg : Struct + B_AusSep_vorhanden : Bool := 1 + Ziel_FC : Int := 1181 + Mindeszeit_Schleuse_geoeffnet : Int := 5 + EinfahrZeit : Int := 30 + None: + Schleusen_Nr : Int := 3455 + Schleusen_Typ : Int := 1274 // Schleusentyp = 1274 (Normal) + Schleuse_Dyn_DB : Int := 1128 + Schleuse_Dyn_DW : Int := 800 + Parameter_allg : Struct + Leser_eingebaut : Bool := 1 + Antrieb_Plus_vorhanden : Bool := 1 + 2.V_bei_Ausfahrt_checken : Bool := 1 + Leser_ID : Word := 16#6129 + Leser_FC : Int := 1180 + Ziel_FC : Int := 1181 + Draussen_FC : Int := 1182 + Mindeszeit_Schleuse_geoeffnet : Int := 5 + Wartezeit_bis_leer : Int := 5 + Übzeit_in_Schleuse : Int := 5 + Übzeit_aus_Schleuse : Int := 5 + None: + Schleusen_Nr : Int := 3461 + Schleusen_Typ : Int := 1274 // Schleusentyp = 1274 (Normal) + Schleuse_Dyn_DB : Int := 1128 + Schleuse_Dyn_DW : Int := 1000 + Parameter_allg : Struct + Leser_eingebaut : Bool := 1 + Antrieb_Plus_vorhanden : Bool := 1 + 2.V_bei_Ausfahrt_checken : Bool := 1 + Leser_ID : Word := 16#6130 + Leser_FC : Int := 1180 + Ziel_FC : Int := 1181 + Draussen_FC : Int := 1182 + Mindeszeit_Schleuse_geoeffnet : Int := 5 + Wartezeit_bis_leer : Int := 5 + Übzeit_in_Schleuse : Int := 5 + Übzeit_aus_Schleuse : Int := 5 + None: + Schleusen_Nr : Int := 3465 + Schleusen_Typ : Int := 1274 // Schleusentyp = 1274 (Normal) + Schleuse_Dyn_DB : Int := 1128 + Schleuse_Dyn_DW : Int := 1200 + Parameter_allg : Struct + Leser_eingebaut : Bool := 1 + Antrieb_Plus_vorhanden : Bool := 1 + 2.V_bei_Ausfahrt_checken : Bool := 1 + Leser_ID : Word := 16#6131 + Leser_FC : Int := 1180 + Ziel_FC : Int := 1181 + Draussen_FC : Int := 1182 + Mindeszeit_Schleuse_geoeffnet : Int := 5 + Wartezeit_bis_leer : Int := 5 + Übzeit_in_Schleuse : Int := 5 + Übzeit_aus_Schleuse : Int := 5 + None: + Schleusen_Nr : Int := 3471 + Schleusen_Typ : Int := 1274 // Schleusentyp = 1274 (Normal) + Schleuse_Dyn_DB : Int := 1128 + Schleuse_Dyn_DW : Int := 1400 + Parameter_allg : Struct + B_AusSep_vorhanden : Bool := 1 + Antrieb_Plus_vorhanden : Bool := 1 + Ziel_FC : Int := 1181 + Mindeszeit_Schleuse_geoeffnet : Int := 5 + Wartezeit_bis_leer : Int := 30 + Übzeit_in_Schleuse : Int := 30 + EinfahrZeit : Int := 9 + None: + Schleusen_Nr : Int := 3473 + Schleusen_Typ : Int := 1274 // Schleusentyp = 1274 (Normal) + Schleuse_Dyn_DB : Int := 1128 + Schleuse_Dyn_DW : Int := 1600 + Parameter_allg : Struct + B_AusSep_vorhanden : Bool := 1 + Ziel_FC : Int := 1181 + Draussen_FC : Int := 1182 + Mindeszeit_Schleuse_geoeffnet : Int := 5 + EinfahrZeit : Int := 17 + None: + Schleusen_Nr : Int := 3540 + Schleusen_Typ : Int := 1274 // Schleusentyp = 1274 (Normal) + Schleuse_Dyn_DB : Int := 1129 + Schleuse_Dyn_DW : Int := 0 + Parameter_allg : Struct + B_AusSep_vorhanden : Bool := 1 + Mindeszeit_Schleuse_geoeffnet : Int := 5 + EinfahrZeit : Int := 11 + None: + Schleusen_Nr : Int := 3543 + Schleusen_Typ : Int := 1274 // Schleusentyp = 1274 (Normal) + Schleuse_Dyn_DB : Int := 1129 + Schleuse_Dyn_DW : Int := 200 + Parameter_allg : Struct + B_AusSep_vorhanden : Bool := 1 + Ziel_FC : Int := 1181 + Mindeszeit_Schleuse_geoeffnet : Int := 5 + EinfahrZeit : Int := 8 + None: + Schleusen_Nr : Int := 3546 + Schleusen_Typ : Int := 1274 + Schleuse_Dyn_DB : Int := 2128 + Schleuse_Dyn_DW : Int := 0 + Parameter_allg : Struct + Antrieb_vorhanden : Bool := 1 + Para02 : Bool := false + Antrieb_Plus_vorhanden : Bool := 1 + Para06 : Bool := false + Para07 : Bool := false + Para10 : Bool := false + Para11 : Bool := false + Para12 : Bool := false + Para13 : Bool := false + Para14 : Bool := false + Para15 : Bool := false + Para16 : Bool := false + Position in DL : Bool := false + Draussen_FC : Int := 0 + RausWeichen_Nr : Int := 0 + Wartezeit_bis_leer : Int := 150 + Übzeit_in_Schleuse : Int := 150 + Übzeit_aus_Schleuse : Int := 30 + Gesamt_Trolley_DL : Int := 1000 + AusfahrZeit : Int := 5 + EinfahrZeit : Int := 28 + Reserve : Array[1..3] of Int + None: + Bereichs_Nr : Int := 3550 + Bereich_Dyn_DB : Int := 2128 + Bereich_Dyn_DW : Int := 200 + Fahrzeit : Int := 42 + Wartezeit_bis_leer : Int := 60 + Übzeit_in_Bereich : Int := 60 + Übzeit_aus_Bereich : Int := 30 + MaxRausTrolleys : Int := 3 + None: + Schleusen_Nr : Int := 3552 + Schleusen_Typ : Int := 1274 + Schleuse_Dyn_DB : Int := 2128 + Schleuse_Dyn_DW : Int := 400 + Parameter_allg : Struct + Antrieb_vorhanden : Bool := 1 + Para02 : Bool := false + Antrieb_Plus_vorhanden : Bool := 1 + Para06 : Bool := false + Para07 : Bool := false + Para10 : Bool := false + Para11 : Bool := false + Para12 : Bool := false + Para13 : Bool := false + Para14 : Bool := false + Para15 : Bool := false + Para16 : Bool := false + Position in DL : Bool := false + Draussen_FC : Int := 0 + RausWeichen_Nr : Int := 0 + Wartezeit_bis_leer : Int := 150 + Übzeit_in_Schleuse : Int := 150 + Übzeit_aus_Schleuse : Int := 30 + Gesamt_Trolley_DL : Int := 1000 + AusfahrZeit : Int := 5 + EinfahrZeit : Int := 7 + Reserve : Array[1..3] of Int + None: + Bereichs_Nr : Int := 3016 + Bereich_Dyn_DB : Int := 2128 + Bereich_Dyn_DW : Int := 600 + Fahrzeit : Int := 55 + Wartezeit_bis_leer : Int := 90 + Übzeit_in_Bereich : Int := 90 + Übzeit_aus_Bereich : Int := 30 + MaxRausTrolleys : Int := 1 + None: + Schleusen_Nr : Int := 3014 + Schleusen_Typ : Int := 1274 + Schleuse_Dyn_DB : Int := 2128 + Schleuse_Dyn_DW : Int := 800 + Parameter_allg : Struct + Antrieb_vorhanden : Bool := 0 + Para02 : Bool := false + Antrieb_Plus_vorhanden : Bool := 1 + Para06 : Bool := false + Para07 : Bool := false + Para10 : Bool := false + Para11 : Bool := false + Para12 : Bool := false + Para13 : Bool := false + Para14 : Bool := false + Para15 : Bool := false + Para16 : Bool := false + Position in DL : Bool := false + Ziel_FC : Int := 2181 + Draussen_FC : Int := 0 + RausWeichen_Nr : Int := 0 + Wartezeit_bis_leer : Int := 150 + Übzeit_in_Schleuse : Int := 150 + Übzeit_aus_Schleuse : Int := 30 + Gesamt_Trolley_DL : Int := 1000 + EinfahrZeit : Int := 6 + Reserve : Array[1..3] of Int + None: + Schleusen_Nr : Int := 3012 + Schleusen_Typ : Int := 1274 + Schleuse_Dyn_DB : Int := 2128 + Schleuse_Dyn_DW : Int := 1000 + Parameter_allg : Struct + Para02 : Bool := false + Para06 : Bool := false + Para07 : Bool := false + Para10 : Bool := false + Para11 : Bool := false + Para12 : Bool := false + Para13 : Bool := false + Para14 : Bool := false + Para15 : Bool := false + Para16 : Bool := false + Position in DL : Bool := false + Draussen_FC : Int := 0 + RausWeichen_Nr : Int := 0 + Wartezeit_bis_leer : Int := 150 + Übzeit_in_Schleuse : Int := 150 + Übzeit_aus_Schleuse : Int := 30 + Gesamt_Trolley_DL : Int := 1000 + EinfahrZeit : Int := 68 + Reserve : Array[1..3] of Int + None: + Schleusen_Nr : Int := 3010 + Schleuse_Dyn_DB : Int := 2128 + Schleuse_Dyn_DW : Int := 1200 + Parameter_allg : Struct + Antrieb_Plus_vorhanden : Bool := 1 + EinfahrZeit : Int := 34 + None: + Schleusen_Nr : Int := 3070 + Schleusen_Typ : Int := 1274 + Schleuse_Dyn_DB : Int := 2128 + Schleuse_Dyn_DW : Int := 1400 + Parameter_allg : Struct + Para02 : Bool := false + Antrieb_Plus_vorhanden : Bool := 1 + Para06 : Bool := false + Para07 : Bool := false + Para10 : Bool := false + Para11 : Bool := false + Para12 : Bool := false + Para13 : Bool := false + Para14 : Bool := false + Para15 : Bool := false + Para16 : Bool := false + Position in DL : Bool := false + Draussen_FC : Int := 0 + RausWeichen_Nr : Int := 0 + Wartezeit_bis_leer : Int := 150 + Übzeit_in_Schleuse : Int := 150 + Übzeit_aus_Schleuse : Int := 30 + Gesamt_Trolley_DL : Int := 1000 + EinfahrZeit : Int := 154 + Reserve : Array[1..3] of Int + None: + Schleusen_Nr : Int := 3073 + Schleuse_Dyn_DB : Int := 2128 + Schleuse_Dyn_DW : Int := 1600 + Parameter_allg : Struct + Antrieb_Plus_vorhanden : Bool := 1 + Wartezeit_bis_leer : Int := 150 + Übzeit_in_Schleuse : Int := 150 + MaxRausTrolleys : Int := 3 + EinfahrZeit : Int := 106 diff --git a/=A01+UH06-KF00/Programmbausteine/Datenlisten/DLOmniWeichen.awl b/=A01+UH06-KF00/Programmbausteine/Datenlisten/DLOmniWeichen.awl new file mode 100644 index 0000000..70c52be --- /dev/null +++ b/=A01+UH06-KF00/Programmbausteine/Datenlisten/DLOmniWeichen.awl @@ -0,0 +1,141 @@ +=== GlobalDB 279: DLOmniWeichen [DB] === +INTERFACE: + Static: + Datenlistenkopf : Struct + KOPF : Word := WORD#16#DA14 // Datenliste-Kennnung (DA) / Datensatzlänge in Word (1 - 128) + LAENGE : Int := 9 // Länge der Datenliste (maximale Anzahl der Datensätze) + STAMMDATEN : Int := 1 // Stammdatenlänge in Word (1 - 9) + INDDB : Int // Indizierter DB (nur bei Stammdaten = 1 erlaubt !!!) + LAENGEINDDB : Int // Länge des indizierten DB in Word (nur bei Stammdaten = 1 erlaubt !!!) + OFFSETINDDATEN : Int // Offset für indizierte Daten (nur bei Stammdaten = 1 erlaubt !!!) + LETZTERZUGRIFF : Int // Speicherung des letzten Zugriffs + Belegt14 : Int // reserviert von Sort-Datenliste + Reserve16 : Int // Reserve + Reserve18 : Int // Reserve + Weiche_3482 : "UDLOmniWeiche_2fach" // Weiche vor AMR (PS5) + Weiche_vor_PS5 : "UDLOmniWeiche_2fach" // Weiche vor AMR (PS5) + Weiche_vor_PS4 : "UDLOmniWeiche_2fach" // Weiche vor AMR (PS5) + Weiche_vor_PS3 : "UDLOmniWeiche_2fach" // Weiche vor AMR (PS5) + Weiche_vor_PS2 : "UDLOmniWeiche_2fach" // Weiche vor AMR (PS5) + Weiche_vor_PS1 : "UDLOmniWeiche_2fach" // Weiche vor AMR (PS5) + Weiche_vor_MPS3 : "UDLOmniWeiche_2fach" // Weiche vor AMR (PS5) + Weiche_vor_MPS2 : "UDLOmniWeiche_2fach" // Weiche vor AMR (PS5) + Weiche_vor_MPS1 : "UDLOmniWeiche_2fach" // Weiche vor AMR (PS5) + Endekennung : Word := WORD#16#DAEE // Datensort-Ende-Kennung (DBEE) + None: + Weichen_Nr : Int := 3482 + Weichen_Dyn_DB : Int := 1120 + Weichen_Dyn_DW : Int := 400 + Wartezeit_bis_Weiche_leer : Int := 30 + Gerade : Struct + Ziel : Word := 16#3483 + Mindestzeit : Int := 10 + Überwachungszeit : Int := 30 + Abzweig : Struct + Ziel : Word := 16#3383 + Mindestzeit : Int := 10 + Überwachungszeit : Int := 30 + None: + Weichen_Nr : Int := 3242 + Weichen_Dyn_DB : Int := 1121 + Weichen_Dyn_DW : Int := 200 + Wartezeit_bis_Weiche_leer : Int := 30 + Gerade : Struct + Ziel : Word := 16#3264 + Mindestzeit : Int := 10 + Überwachungszeit : Int := 30 + Abzweig : Struct + Ziel : Word := 16#3242 + Mindestzeit : Int := 10 + Überwachungszeit : Int := 30 + None: + Weichen_Nr : Int := 3272 + Weichen_Dyn_DB : Int := 1122 + Weichen_Dyn_DW : Int := 200 + Wartezeit_bis_Weiche_leer : Int := 30 + Gerade : Struct + Ziel : Word := 16#3270 + Mindestzeit : Int := 10 + Überwachungszeit : Int := 30 + Abzweig : Struct + Ziel : Word := 16#3272 + Mindestzeit : Int := 10 + Überwachungszeit : Int := 30 + None: + Weichen_Nr : Int := 3302 + Weichen_Dyn_DB : Int := 1123 + Weichen_Dyn_DW : Int := 200 + Wartezeit_bis_Weiche_leer : Int := 30 + Gerade : Struct + Ziel : Word := 16#3294 + Mindestzeit : Int := 10 + Überwachungszeit : Int := 30 + Abzweig : Struct + Ziel : Word := 16#3302 + Mindestzeit : Int := 10 + Überwachungszeit : Int := 30 + None: + Weichen_Nr : Int := 3332 + Weichen_Dyn_DB : Int := 1124 + Weichen_Dyn_DW : Int := 200 + Wartezeit_bis_Weiche_leer : Int := 30 + Gerade : Struct + Ziel : Word := 16#3330 + Mindestzeit : Int := 10 + Überwachungszeit : Int := 30 + Abzweig : Struct + Ziel : Word := 16#3332 + Mindestzeit : Int := 10 + Überwachungszeit : Int := 30 + None: + Weichen_Nr : Int := 3362 + Weichen_Dyn_DB : Int := 1125 + Weichen_Dyn_DW : Int := 200 + Wartezeit_bis_Weiche_leer : Int := 30 + Gerade : Struct + Ziel : Word := 16#3361 + Mindestzeit : Int := 10 + Überwachungszeit : Int := 30 + Abzweig : Struct + Ziel : Word := 16#3362 + Mindestzeit : Int := 10 + Überwachungszeit : Int := 30 + None: + Weichen_Nr : Int := 3392 + Weichen_Dyn_DB : Int := 1126 + Weichen_Dyn_DW : Int := 200 + Wartezeit_bis_Weiche_leer : Int := 30 + Gerade : Struct + Ziel : Word := 16#3391 + Mindestzeit : Int := 10 + Überwachungszeit : Int := 30 + Abzweig : Struct + Ziel : Word := 16#3392 + Mindestzeit : Int := 10 + Überwachungszeit : Int := 30 + None: + Weichen_Nr : Int := 3422 + Weichen_Dyn_DB : Int := 1127 + Weichen_Dyn_DW : Int := 200 + Wartezeit_bis_Weiche_leer : Int := 30 + Gerade : Struct + Ziel : Word := 16#3445 + Mindestzeit : Int := 10 + Überwachungszeit : Int := 30 + Abzweig : Struct + Ziel : Word := 16#3422 + Mindestzeit : Int := 10 + Überwachungszeit : Int := 30 + None: + Weichen_Nr : Int := 3452 + Weichen_Dyn_DB : Int := 1128 + Weichen_Dyn_DW : Int := 200 + Wartezeit_bis_Weiche_leer : Int := 30 + Gerade : Struct + Ziel : Word := 16#3451 + Mindestzeit : Int := 10 + Überwachungszeit : Int := 30 + Abzweig : Struct + Ziel : Word := 16#3452 + Mindestzeit : Int := 10 + Überwachungszeit : Int := 30 diff --git a/=A01+UH06-KF00/Programmbausteine/Logistik/AMRZeiger_ermitteln.awl b/=A01+UH06-KF00/Programmbausteine/Logistik/AMRZeiger_ermitteln.awl new file mode 100644 index 0000000..0d394ca --- /dev/null +++ b/=A01+UH06-KF00/Programmbausteine/Logistik/AMRZeiger_ermitteln.awl @@ -0,0 +1,40 @@ +=== FC 19: AMRZeiger_ermitteln [STL] === +INTERFACE: + Input: + AMR_X : Word // AMR zum Beeinflussen + Output: + AMR_DB : Int + AMR_DW : Int + Error : Bool + InOut: + Temp: + Position : Int + Constant: + Return: + Ret_Val : Void + +--- NW 1: Zeiger für AMR_X ermitteln --- + L AMR_X + T "MW200" + +// Einsprung AMR ermitteln: +CALL FC "DatenOut" (SSDB:=276, SSDW:=0, PARA:=16#0000, SEARCHDATEN:=P#M200.0, RE_VAL:="MB199", OUTDATEN:=P#M220.0, Position:=Position) // Eintrag lesen + + L "MB199" + L 2#1111111 // Bit 7 ausblenden + AW + L 0 // Fehler vorhanden? + <>I // Ja + = "6_HMI_Err_UH06_AMR".Logistik.DB276_Err + = Error + BEC + + L "MW224" + T AMR_DB + L "MW226" + T AMR_DW + + +--- NW 2: Ende --- + BE + diff --git a/=A01+UH06-KF00/Programmbausteine/Logistik/AMR_TrolleyVersorgung.awl b/=A01+UH06-KF00/Programmbausteine/Logistik/AMR_TrolleyVersorgung.awl new file mode 100644 index 0000000..b4388ad --- /dev/null +++ b/=A01+UH06-KF00/Programmbausteine/Logistik/AMR_TrolleyVersorgung.awl @@ -0,0 +1,154 @@ +=== FB 11: AMR_TrolleyVersorgung [STL] === +INTERFACE: + Input: + Output: + Arbeitsplatz : Word + InOut: + Static: + Last_Arbeitsplatz : Word + Temp: + ArbeitsPlatz_zum_Versorgen : Word + Freiplätze_Arbeitsplatz : Int + Constant: + +--- NW 1: Initialisierung --- + L 0 + T ArbeitsPlatz_zum_Versorgen + T "Freiplätze_Arbeitsplatz" + + +--- NW 2: Arbeitsplatz PS5 mit größtem Bedarf? --- + L "DPS5_OmniFahren".Sks_Arbeitsplatz.Dyn.HMI."Frei_Plätze" // Mehr Freiplätze vorhanden? + L "Freiplätze_Arbeitsplatz" + <=I // Nein ! + JC PS5E + + CAC + T "Freiplätze_Arbeitsplatz" + + L 16#A500 + T ArbeitsPlatz_zum_Versorgen + +PS5E: NOP 0 + + +--- NW 3: Arbeitsplatz PS4 mit größtem Bedarf? --- + L "DPS4_OmniFahren".Sks_Arbeitsplatz.Dyn.HMI."Frei_Plätze" // Mehr Freiplätze vorhanden? + L "Freiplätze_Arbeitsplatz" + <=I // Nein ! + JC PS4E + + CAC + T "Freiplätze_Arbeitsplatz" + + L 16#A400 + T ArbeitsPlatz_zum_Versorgen + +PS4E: NOP 0 + + +--- NW 4: Arbeitsplatz PS3 mit größtem Bedarf? --- + L "DPS3_OmniFahren".Sks_Arbeitsplatz.Dyn.HMI."Frei_Plätze" // Mehr Freiplätze vorhanden? + L "Freiplätze_Arbeitsplatz" + <=I // Nein ! + JC PS3E + + CAC + T "Freiplätze_Arbeitsplatz" + + L 16#A300 + T ArbeitsPlatz_zum_Versorgen + +PS3E: NOP 0 + + +--- NW 5: Arbeitsplatz PS2 mit größtem Bedarf? --- + L "DPS2_OmniFahren".Sks_Arbeitsplatz.Dyn.HMI."Frei_Plätze" // Mehr Freiplätze vorhanden? + L "Freiplätze_Arbeitsplatz" + <=I // Nein ! + JC PS2E + + CAC + T "Freiplätze_Arbeitsplatz" + + L 16#A200 + T ArbeitsPlatz_zum_Versorgen + +PS2E: NOP 0 + + +--- NW 6: Arbeitsplatz PS1 mit größtem Bedarf? --- + L "DPS1_OmniFahren".Sks_Arbeitsplatz.Dyn.HMI."Frei_Plätze" // Mehr Freiplätze vorhanden? + L "Freiplätze_Arbeitsplatz" + <=I // Nein ! + JC PS1E + + CAC + T "Freiplätze_Arbeitsplatz" + + L 16#A100 + T ArbeitsPlatz_zum_Versorgen + +PS1E: NOP 0 + + +--- NW 7: Versorgung von MPS von Schleuse 3481 sichergestellt? --- + A "BG3481" // Trolley vorhanden + O "MB3481" // Schleuse noch geöffnet + JC Fertig + + +--- NW 8: Arbeitsplatz MPS3 mit größtem Bedarf? --- + L "DMPS3_OmniFahren".Sks_Arbeitsplatz.Dyn.HMI."Frei_Plätze" // Mehr Freiplätze vorhanden? + L "Freiplätze_Arbeitsplatz" + <=I // Nein ! + JC MPS3E + + CAC + T "Freiplätze_Arbeitsplatz" + + L 16#B300 + T ArbeitsPlatz_zum_Versorgen + +MPS3E: NOP 0 + + +--- NW 9: Arbeitsplatz MPS2 mit größtem Bedarf? --- + L "DMPS2_OmniFahren".Sks_Arbeitsplatz.Dyn.HMI."Frei_Plätze" // Mehr Freiplätze vorhanden? + L "Freiplätze_Arbeitsplatz" + <=I // Nein ! + JC MPS2E + + CAC + T "Freiplätze_Arbeitsplatz" + + L 16#B200 + T ArbeitsPlatz_zum_Versorgen + +MPS2E: NOP 0 + + +--- NW 10: Arbeitsplatz MPS1 mit größtem Bedarf? --- + L "DMPS1_OmniFahren".Sks_Arbeitsplatz.Dyn.HMI."Frei_Plätze" // Mehr Freiplätze vorhanden? + L "Freiplätze_Arbeitsplatz" + <=I // Nein ! + JC MPS1E + + CAC + T "Freiplätze_Arbeitsplatz" + + L 16#B100 + T ArbeitsPlatz_zum_Versorgen + +MPS1E: NOP 0 + + +--- NW 11: Arbeitsplatz übergeben --- +Fertig: L ArbeitsPlatz_zum_Versorgen + T Arbeitsplatz + T Last_Arbeitsplatz // Letzten Arbeitsplatz speichern (oder erst bei Draussen-FC) + + +--- NW 12: Ende --- + BE + diff --git a/=A01+UH06-KF00/Programmbausteine/Logistik/DLTrolleys.awl b/=A01+UH06-KF00/Programmbausteine/Logistik/DLTrolleys.awl new file mode 100644 index 0000000..9affecb --- /dev/null +++ b/=A01+UH06-KF00/Programmbausteine/Logistik/DLTrolleys.awl @@ -0,0 +1,16 @@ +=== GlobalDB 1000: DLTrolleys [DB] === +INTERFACE: + Static: + Datenlistenkopf : Struct + KOPF : Word := WORD#16#DA0A // Datenliste-Kennnung (DA) / Datensatzlänge in Word (1 - 128) + LAENGE : Int := 1635 // Länge der Datenliste (maximale Anzahl der Datensätze) + STAMMDATEN : Int := 2 // Stammdatenlänge in Word (1 - 9) + INDDB : Int := 1080 // Indizierter DB (nur bei Stammdaten = 1 erlaubt !!!) + LAENGEINDDB : Int := 20000 // Länge des indizierten DB in Word (nur bei Stammdaten = 1 erlaubt !!!) + INDDATEN_WANDEL_FC : Int := 1000 // FC zum Wandeln der indizierte Daten (nur bei Stammdaten = 1 erlaubt !!!) + LETZTERZUGRIFF : Int // Speicherung des letzten Zugriffs + Belegt14 : Int // reserviert von Sort-Datenliste + AnzahlEintraege : Int // Anzahl der eingetragenen Datensätze (nicht bei ind.Zugriff!) + Reserve18 : Int // Reserve + Trolley : Array[1..1635] of "UTrolley" + Endekennung : Word := WORD#16#DAEE // Datensort-Ende-Kennung (DBEE) diff --git a/=A01+UH06-KF00/Programmbausteine/Logistik/IndexDB1000.awl b/=A01+UH06-KF00/Programmbausteine/Logistik/IndexDB1000.awl new file mode 100644 index 0000000..d212201 --- /dev/null +++ b/=A01+UH06-KF00/Programmbausteine/Logistik/IndexDB1000.awl @@ -0,0 +1,4 @@ +=== GlobalDB 1080: IndexDB1000 [DB] === +INTERFACE: + Static: + Index : Array[6040000..6060000, 1..1] of Int // vorläufige Platzhaltervariable diff --git a/=A01+UH06-KF00/Programmbausteine/Logistik/LeerTrolley to AMR-Platz ermitteln.awl b/=A01+UH06-KF00/Programmbausteine/Logistik/LeerTrolley to AMR-Platz ermitteln.awl new file mode 100644 index 0000000..0ad1848 --- /dev/null +++ b/=A01+UH06-KF00/Programmbausteine/Logistik/LeerTrolley to AMR-Platz ermitteln.awl @@ -0,0 +1,76 @@ +=== FC 4: LeerTrolley to AMR-Platz ermitteln [STL] === +INTERFACE: + Input: + Erlaubter_Bereich : Word // 0=Alles ok, A000=nur PS, B000=nur MPS ok + Output: + AMR_Platz : Word // AMR-Platz ermitteln + InOut: + Temp: + DLDB : Int + Para : Word + Constant: + Return: + Ret_Val : Void + +--- NW 1: Initialisierung --- + L 16#0 + T AMR_Platz + + L 1112 // Mit DL (12 Trolleys benötigt) beginnen + T DLDB + + +--- NW 2: Werden 12->1 Trolley(s) benötigt? --- +NextDL: L 16#F100 // 1.Datensatz lesen + T Para + +Next: CALL FC "DatenOut" (SSDB:=DLDB, SSDW:=0, PARA:=Para, SEARCHDATEN:=P#M200.0, RE_VAL:="MB198", OUTDATEN:=P#M220.0, Position:="MW196") + + A "M198.7" // Datensatz ist vorhanden + JC Check + +// Nächst kleiner benötigte Stückzahl: + L DLDB + + -1 + T DLDB + + L 1101 // 1 Trolley benötigt + >=I // noch sinnvoll? + JC NextDL // Ja! + + BEU + + +--- NW 3: Check, ob Bereich ok --- +Check: L Erlaubter_Bereich + L 16#0 // Keine Beschränkung ? + ==I // Ja ! + JC AMR + + L "MW220" // Nächstes ABP-Ziel + L 16#F000 + AW // maskieren + L Erlaubter_Bereich // wie erlaubter Bereich ? + ==I // Ja! + A( + L "MW220" // Nächstes ABP-Ziel + L 16#0 // Sinnvoller Wert ? + <>I // Nein ! + ) + JC AMR + +// Nächsetn Eintrag lesen: + L 16#FF00 // Nächsten Datensatz lesen + T Para + + JU Next + + +--- NW 4: Puffer aufbereiten --- +AMR: L "MW220" + T AMR_Platz + + +--- NW 5: Ende --- + BE + diff --git a/=A01+UH06-KF00/Programmbausteine/Logistik/Reservierung_in_Arbeitsplatz_eintragen.awl b/=A01+UH06-KF00/Programmbausteine/Logistik/Reservierung_in_Arbeitsplatz_eintragen.awl new file mode 100644 index 0000000..9fe2433 --- /dev/null +++ b/=A01+UH06-KF00/Programmbausteine/Logistik/Reservierung_in_Arbeitsplatz_eintragen.awl @@ -0,0 +1,106 @@ +=== FC 5: Reservierung_in_Arbeitsplatz_eintragen [STL] === +INTERFACE: + Input: + TrolleyID : DInt + Ziel : Word + Standort : Word + Gesamt_Trolley_DL : Int + Output: + InOut: + Temp: + ABP_DB : Int + ABP_DW : Int + AR1Zeiger : DWord // Statt AR1 (ging nur bis DB-Länge <= 8191 Bytes) + AR1Start : DInt // Startwert mit Offset 0 + Position : Int + Constant: + Return: + Ret_Val : Void + +--- NW 1: Ziel bekannt -> Reservierung im Puffer --- + L Ziel + T "MW220" + L 16#0 + ==I + JC NoRes + +// Arbeitsplatz checken: +CALL FC "DatenOut" (SSDB:=276, SSDW:=0, PARA:=16#0000, SEARCHDATEN:=P#M220.0, RE_VAL:="MB199", OUTDATEN:=P#M220.0, Position:=Position) // Eintrag lesen + + L "MB199" + L 2#1111111 // Bit 7 ausblenden + AW + L 0 // Fehler vorhanden? + <>I // Ja + JC NoRes + + L "MW224" + T ABP_DB + L "MW226" + T ABP_DW + + L ABP_DW + ITD + T AR1Start // Startwert mit Offset 0 + +// Anzahl Reservierungen: + L AR1Start // Startwert mit Offset 0 + + DINT#130 // Offset für Reservierungen + SLD 3 + T AR1Zeiger // Statt Dyn.Bereichsstop (ging nur bis DB-Länge <= 8191 Bytes) + +// ReservierungsAnzahl +1: + OPN DB[ABP_DB] // ABP-DB öffnen + L DBW [AR1Zeiger] // Reservierungen + + 1 // +1 + OPN DB[ABP_DB] // ABP-DB öffnen + T DBW [AR1Zeiger] + +NoRes: NOP 0 + + +--- NW 2: TrolleyID + Standort in Trolley-DL eintragen --- + BEU // / + + L TrolleyID + L 0 + ==I + BEC + + L Gesamt_Trolley_DL + L 0 // Liste angegeben? + ==I // Nein! + BEC + + L TrolleyID + T "TrolleyDL_INDaten".INDaten.TrolleyID + L Ziel + T "TrolleyDL_INDaten".INDaten.EndZiel + L DINT#0 + T "TrolleyDL_INDaten".INDaten.ShopGroup + +// Standort: + L Standort + T "TrolleyDL_INDaten".INDaten.Standort + +// Startzeit: + L "SGes".DATE_TIME.Jahr + T "TrolleyDL_INDaten".INDaten.LastTime.Jahr + L "SGes".DATE_TIME.Monat + T "TrolleyDL_INDaten".INDaten.LastTime.Monat + L "SGes".DATE_TIME.Tag + T "TrolleyDL_INDaten".INDaten.LastTime.Tag + L "SGes".DATE_TIME.Stunde + T "TrolleyDL_INDaten".INDaten.LastTime.Stunde + L "SGes".DATE_TIME.Minute + T "TrolleyDL_INDaten".INDaten.LastTime.Minute + L "SGes".DATE_TIME.Sekunde + T "TrolleyDL_INDaten".INDaten.LastTime.Sekunde + +// Daten in Datenbank schreiben: +CALL FC "DatenIn" (SSDB:=Gesamt_Trolley_DL, SSDW:=0, INDATEN:=DB1010.DBX0.0, RE_VAL:="MB198") + + +--- NW 3: Ende --- + BE + diff --git a/=A01+UH06-KF00/Programmbausteine/Logistik/Simulation_AMR_Trolley_starten.awl b/=A01+UH06-KF00/Programmbausteine/Logistik/Simulation_AMR_Trolley_starten.awl new file mode 100644 index 0000000..8d13ce9 --- /dev/null +++ b/=A01+UH06-KF00/Programmbausteine/Logistik/Simulation_AMR_Trolley_starten.awl @@ -0,0 +1,144 @@ +=== FC 29: Simulation_AMR_Trolley_starten [STL] === +INTERFACE: + Input: + Output: + InOut: + Temp: + Zufallszahl : Int + AMR_DB : Int + AMR_DW : Int + AR1Zeiger : DWord // Statt AR1 (ging nur bis DB-Länge <= 8191 Bytes) + AR1Start : DInt // Startwert mit Offset 0 + Constant: + Return: + Ret_Val : Void + +--- NW 1: Simulation ist aktiv --- + A "T29" + S "DAMR_Bereich".Simulation.Wartezeit_ok + AN "DAMR_Bereich".Simulation.Wartezeit_ok + L s5t#20s + OnDelay "T29" + + A "DAMR_Bereich".Simulation.aktiv + = "DPS5_OmniFahren".Sks_Arbeitsplatz.Dyn.Simulation.Aktiviert + = "DPS4_OmniFahren".Sks_Arbeitsplatz.Dyn.Simulation.Aktiviert + = "DPS3_OmniFahren".Sks_Arbeitsplatz.Dyn.Simulation.Aktiviert + = "DPS2_OmniFahren".Sks_Arbeitsplatz.Dyn.Simulation.Aktiviert + = "DPS1_OmniFahren".Sks_Arbeitsplatz.Dyn.Simulation.Aktiviert + = "DMPS3_OmniFahren".Sks_Arbeitsplatz.Dyn.Simulation.Aktiviert + = "DMPS2_OmniFahren".Sks_Arbeitsplatz.Dyn.Simulation.Aktiviert + = "DMPS1_OmniFahren".Sks_Arbeitsplatz.Dyn.Simulation.Aktiviert + + AN "DAMR_Bereich".Simulation.aktiv + ON "DAMR_Bereich".Simulation.Wartezeit_ok + BEC + + +--- NW 2: Trolley zum Ausfahren vorhanden? --- + A "DPS5_OmniFahren".Sks_Arbeitsplatz.Dyn.Simulation."Trolleys bereit" + O "DPS4_OmniFahren".Sks_Arbeitsplatz.Dyn.Simulation."Trolleys bereit" + O "DPS3_OmniFahren".Sks_Arbeitsplatz.Dyn.Simulation."Trolleys bereit" + O "DPS2_OmniFahren".Sks_Arbeitsplatz.Dyn.Simulation."Trolleys bereit" + O "DPS1_OmniFahren".Sks_Arbeitsplatz.Dyn.Simulation."Trolleys bereit" + O "DMPS3_OmniFahren".Sks_Arbeitsplatz.Dyn.Simulation."Trolleys bereit" + O "DMPS2_OmniFahren".Sks_Arbeitsplatz.Dyn.Simulation."Trolleys bereit" + O "DMPS1_OmniFahren".Sks_Arbeitsplatz.Dyn.Simulation."Trolleys bereit" + JC Zufall + + SET + S "DPS5_OmniFahren".Sks_Arbeitsplatz.Dyn.Simulation.Neustart + S "DPS4_OmniFahren".Sks_Arbeitsplatz.Dyn.Simulation.Neustart + S "DPS3_OmniFahren".Sks_Arbeitsplatz.Dyn.Simulation.Neustart + S "DPS4_OmniFahren".Sks_Arbeitsplatz.Dyn.Simulation.Neustart + S "DPS1_OmniFahren".Sks_Arbeitsplatz.Dyn.Simulation.Neustart + S "DMPS3_OmniFahren".Sks_Arbeitsplatz.Dyn.Simulation.Neustart + S "DMPS2_OmniFahren".Sks_Arbeitsplatz.Dyn.Simulation.Neustart + S "DMPS1_OmniFahren".Sks_Arbeitsplatz.Dyn.Simulation.Neustart + + L 0 + T "DAMR_Bereich".Simulation.AMR + + BEU + + +--- NW 3: AMR zufällig ermitteln --- +Zufall: L "DAMR_Bereich".Simulation.MSekunden + SRW 4 + T Zufallszahl + + L Zufallszahl + JL Ende + JU s000 // Schritt 0 + JU s001 // Schritt 1 + JU s002 // Schritt 2 + JU s003 // Schritt 3 + JU s004 // Schritt 4 + JU s005 // Schritt 5 + JU s006 // Schritt 6 + JU s007 // Schritt 7 + JU s008 // Schritt 8 +Ende: BEU // Kein AMR + +s000: BEU // Kein AMR + +s001: L 16#A500 // PS5 + JU AMRCheck +s002: L 16#A400 // PS4 + JU AMRCheck +s003: L 16#A300 // PS3 + JU AMRCheck +s004: L 16#A200 // PS2 + JU AMRCheck +s005: L 16#A100 // PS1 + JU AMRCheck +s006: L 16#B300 // MPS3 + JU AMRCheck +s007: L 16#B200 // MPS2 + JU AMRCheck +s008: L 16#B100 // MPS1 + JU AMRCheck + + +--- NW 4: AMR bereit ? --- +AMRCheck: T "DAMR_Bereich".Simulation.AMR + +CALL FC "AMRZeiger_ermitteln" (AMR_X:="DAMR_Bereich".Simulation.AMR, AMR_DB:=AMR_DB, AMR_DW:=AMR_DW, Error:="M199.0") + + A "M199.0" + BEC + +// Ziel-Pointer erzeugen: (PLC-Daten) + L AMR_DW + ITD + T AR1Start // Startwert mit Offset 0 + +// Hat AMR Trolleys zum Ausfahren?: + L AR1Start // Startwert mit Offset 0 + + DINT#184 // Offset für Simulation + SLD 3 + L 3 // Damit DBX_Bit 3 + OD + T AR1Zeiger // Statt Dyn.Bereichsstop (ging nur bis DB-Länge <= 8191 Bytes) + OPN DB[AMR_DB] // AMR-DB öffnen + AN DBX [AR1Zeiger] // Trolleys bereit für Ausfahrt + BEC + +// Trolley starten: + L AR1Start // Startwert mit Offset 0 + + DINT#184 // Offset für Simulation + SLD 3 + L 1 // Damit DBX_Bit 1 + OD + T AR1Zeiger // Statt Dyn.Bereichsstop (ging nur bis DB-Länge <= 8191 Bytes) + OPN DB[AMR_DB] // AMR-DB öffnen + SET + = DBX [AR1Zeiger] // Trolley starten + + SET + R "DAMR_Bereich".Simulation.Wartezeit_ok // Wartezeit neu starten + + +--- NW 5: Ende --- + BE + diff --git a/=A01+UH06-KF00/Programmbausteine/Logistik/TrolleyDL_INDaten.awl b/=A01+UH06-KF00/Programmbausteine/Logistik/TrolleyDL_INDaten.awl new file mode 100644 index 0000000..5a1d778 --- /dev/null +++ b/=A01+UH06-KF00/Programmbausteine/Logistik/TrolleyDL_INDaten.awl @@ -0,0 +1,4 @@ +=== GlobalDB 1010: TrolleyDL_INDaten [DB] === +INTERFACE: + Static: + INDaten : "UTrolley" diff --git a/=A01+UH06-KF00/Programmbausteine/Logistik/TrolleyDL_OutDaten.awl b/=A01+UH06-KF00/Programmbausteine/Logistik/TrolleyDL_OutDaten.awl new file mode 100644 index 0000000..925b2b4 --- /dev/null +++ b/=A01+UH06-KF00/Programmbausteine/Logistik/TrolleyDL_OutDaten.awl @@ -0,0 +1,4 @@ +=== GlobalDB 1011: TrolleyDL_OutDaten [DB] === +INTERFACE: + Static: + OUTDaten : "UTrolley" diff --git a/=A01+UH06-KF00/Programmbausteine/Logistik/TrolleyDL_SearchDaten.awl b/=A01+UH06-KF00/Programmbausteine/Logistik/TrolleyDL_SearchDaten.awl new file mode 100644 index 0000000..3fcd268 --- /dev/null +++ b/=A01+UH06-KF00/Programmbausteine/Logistik/TrolleyDL_SearchDaten.awl @@ -0,0 +1,4 @@ +=== GlobalDB 1012: TrolleyDL_SearchDaten [DB] === +INTERFACE: + Static: + SEARCHDaten : "UTrolley" diff --git a/=A01+UH06-KF00/Programmbausteine/Logistik/Trolley_DL_Check_ID.awl b/=A01+UH06-KF00/Programmbausteine/Logistik/Trolley_DL_Check_ID.awl new file mode 100644 index 0000000..22081cf --- /dev/null +++ b/=A01+UH06-KF00/Programmbausteine/Logistik/Trolley_DL_Check_ID.awl @@ -0,0 +1,52 @@ +=== FC 1003: Trolley_DL_Check_ID [STL] === +INTERFACE: + Input: + TrolleyID : DInt + Output: + Check_EndZiel : Word // Ziel + Check_ZwischenZiel : Word // Für Weiche,... + Check_Variante : Int // Variante auf Trolley + Check_Standort : Word // Standort (Puffer, Heber, unterwegs) + Check_ShopGroup : DInt + Err : Bool + InOut: + Temp: + Constant: + Return: + Ret_Val : Void + +--- NW 1: Trolley auslesen --- + L TrolleyID + T "MD220" + +CALL FC "DatenOut" (SSDB:=1000, SSDW:=0, PARA:=16#0000, SEARCHDATEN:=P#M220.0, RE_VAL:="MB199", OUTDATEN:=DB1011.DBX0.0, Position:="MW196") // Eintrag lesen + + L "MB199" + L 2#1111111 // Bit 7 ausblenden + AW + L 0 // Fehler vorhanden? + <>I // Ja + = Err + BEC + + +--- NW 2: Relevante Daten übergeben --- + L "TrolleyDL_OutDaten".OUTDaten.EndZiel + T Check_EndZiel + + L "TrolleyDL_OutDaten".OUTDaten.ZwischenZiel + T Check_ZwischenZiel + + L "TrolleyDL_OutDaten".OUTDaten.ShopGroup + T Check_Variante + + L "TrolleyDL_OutDaten".OUTDaten.Standort + T Check_Standort + + L "TrolleyDL_OutDaten".OUTDaten.ShopGroup + T Check_ShopGroup + + +--- NW 3: Ende --- + BE + diff --git a/=A01+UH06-KF00/Programmbausteine/Logistik/Trolley_DL_Neue_Pos.awl b/=A01+UH06-KF00/Programmbausteine/Logistik/Trolley_DL_Neue_Pos.awl new file mode 100644 index 0000000..b585a77 --- /dev/null +++ b/=A01+UH06-KF00/Programmbausteine/Logistik/Trolley_DL_Neue_Pos.awl @@ -0,0 +1,86 @@ +=== FC 1002: Trolley_DL_Neue_Pos [STL] === +INTERFACE: + Input: + Gesamt_Trolley_DL : Int + TrolleyID : DInt + Position : Word + ShopGroup : DInt + Output: + Err : Bool + InOut: + Temp: + Constant: + Return: + Ret_Val : Void + +--- NW 1: GesamtTrolly-DL angegeben? --- + L Gesamt_Trolley_DL + L 0 // sinnvolle Angabe? + <=I // Nein! + BEC // Abbruch + + +--- NW 2: Trolley auslesen --- + L TrolleyID + T "MD220" + +CALL FC "DatenOut" (SSDB:=Gesamt_Trolley_DL, SSDW:=0, PARA:=16#0000, SEARCHDATEN:=P#M220.0, RE_VAL:="MB199", OUTDATEN:=DB1011.DBX0.0, Position:="MW196") // Eintrag lesen + + L "MB199" + L 2#1111111 // Bit 7 ausblenden + AW + L 0 // Fehler vorhanden? + <>I // Ja + = Err + BEC + + +--- NW 3: Zeit übegeben --- + L TrolleyID + T "TrolleyDL_OutDaten".OUTDaten.TrolleyID + L "SGes".DATE_TIME.Jahr + T "TrolleyDL_OutDaten".OUTDaten.LastTime.Jahr + L "SGes".DATE_TIME.Monat + T "TrolleyDL_OutDaten".OUTDaten.LastTime.Monat + L "SGes".DATE_TIME.Tag + T "TrolleyDL_OutDaten".OUTDaten.LastTime.Tag + L "SGes".DATE_TIME.Stunde + T "TrolleyDL_OutDaten".OUTDaten.LastTime.Stunde + L "SGes".DATE_TIME.Minute + T "TrolleyDL_OutDaten".OUTDaten.LastTime.Minute + L "SGes".DATE_TIME.Sekunde + T "TrolleyDL_OutDaten".OUTDaten.LastTime.Sekunde + + +--- NW 4: Neue Position übergeben --- + L Position + L 0 + ==I + JC NoNewPos + + CAC + T "TrolleyDL_OutDaten".OUTDaten.Standort + +NoNewPos: NOP 0 + + +--- NW 5: ShopGroup übergeben ? (bei 0 nichts ändern!) --- + L ShopGroup + L DINT#0 + ==D + JC NoShopGroup + + CAC + T "TrolleyDL_OutDaten".OUTDaten.ShopGroup + +NoShopGroup: NOP 0 + + +--- NW 6: Daten schreiben --- +CALL FC "DatenIn" (SSDB:=Gesamt_Trolley_DL, SSDW:=0, INDATEN:=DB1011.DBX0.0, RE_VAL:="MB199") + + + +--- NW 7: Ende --- + BE + diff --git a/=A01+UH06-KF00/Programmbausteine/Logistik/Trolley_in_Arbeitsplatz_eingefahren.awl b/=A01+UH06-KF00/Programmbausteine/Logistik/Trolley_in_Arbeitsplatz_eingefahren.awl new file mode 100644 index 0000000..baaad32 --- /dev/null +++ b/=A01+UH06-KF00/Programmbausteine/Logistik/Trolley_in_Arbeitsplatz_eingefahren.awl @@ -0,0 +1,108 @@ +=== FC 6: Trolley_in_Arbeitsplatz_eingefahren [STL] === +INTERFACE: + Input: + TrolleyID : DInt + Ziel : Word + AusfahrZiel : Word + Gesamt_Trolley_DL : Int + Output: + InOut: + Temp: + ABP_DB : Int + ABP_DW : Int + AR1Zeiger : DWord // Statt AR1 (ging nur bis DB-Länge <= 8191 Bytes) + AR1Start : DInt // Startwert mit Offset 0 + Position : Int + Constant: + Return: + Ret_Val : Void + +--- NW 1: Ziel = AusfahrZiel -> Einfahrt an ABP melden --- + L Ziel + T "MW220" + L 16#0 // Sinnvolles Ziel ? + ==I // Nein! + BEC + + CAC // Trolley-Ziel + L AusfahrZiel // Bei diesem Ziel ausfahren? + <>I // Nicht identisch! + BEC + +// Arbeitsplatz checken: +CALL FC "DatenOut" (SSDB:=276, SSDW:=0, PARA:=16#0000, SEARCHDATEN:=P#M220.0, RE_VAL:="MB199", OUTDATEN:=P#M220.0, Position:=Position) // Eintrag lesen + + L "MB199" + L 2#1111111 // Bit 7 ausblenden + AW + L 0 // Fehler vorhanden? + <>I // Ja + BEC + + L "MW224" + T ABP_DB + L "MW226" + T ABP_DW + + L ABP_DW + ITD + T AR1Start // Startwert mit Offset 0 + +// Status: + L AR1Start // Startwert mit Offset 0 + + DINT#62 // Offset für Status + SLD 3 + L 1 // Damit DBX_Bit 1 + OD + T AR1Zeiger // Statt Dyn.Bereichsstop (ging nur bis DB-Länge <= 8191 Bytes) + +// Trolley fährt ein: + OPN DB[ABP_DB] // ABP-DB öffnen + + SET + = DBX [AR1Zeiger] // Trolley ist eingefahren + + +--- NW 2: TrolleyID + Standort in Trolley-DL eintragen --- + L TrolleyID + L 0 + ==I + BEC + + L Gesamt_Trolley_DL + L 0 // Liste angegeben? + ==I // Nein! + BEC + + L TrolleyID + T "TrolleyDL_INDaten".INDaten.TrolleyID + L 16#0 // Ziel löschen + T "TrolleyDL_INDaten".INDaten.EndZiel + L DINT#0 + T "TrolleyDL_INDaten".INDaten.ShopGroup + +// Standort: + L AusfahrZiel + T "TrolleyDL_INDaten".INDaten.Standort + +// Startzeit: + L "SGes".DATE_TIME.Jahr + T "TrolleyDL_INDaten".INDaten.LastTime.Jahr + L "SGes".DATE_TIME.Monat + T "TrolleyDL_INDaten".INDaten.LastTime.Monat + L "SGes".DATE_TIME.Tag + T "TrolleyDL_INDaten".INDaten.LastTime.Tag + L "SGes".DATE_TIME.Stunde + T "TrolleyDL_INDaten".INDaten.LastTime.Stunde + L "SGes".DATE_TIME.Minute + T "TrolleyDL_INDaten".INDaten.LastTime.Minute + L "SGes".DATE_TIME.Sekunde + T "TrolleyDL_INDaten".INDaten.LastTime.Sekunde + +// Daten in Datenbank schreiben: +CALL FC "DatenIn" (SSDB:=Gesamt_Trolley_DL, SSDW:=0, INDATEN:=DB1010.DBX0.0, RE_VAL:="MB198") + + +--- NW 3: Ende --- + BE + diff --git a/=A01+UH06-KF00/Programmbausteine/Logistik/Trolleydaten_löschen.awl b/=A01+UH06-KF00/Programmbausteine/Logistik/Trolleydaten_löschen.awl new file mode 100644 index 0000000..86635d2 --- /dev/null +++ b/=A01+UH06-KF00/Programmbausteine/Logistik/Trolleydaten_löschen.awl @@ -0,0 +1,34 @@ +=== FC 1: Trolleydaten_löschen [STL] === +INTERFACE: + Input: + Gesamt_Trolley_DL : Int + TrolleyID : DInt + Output: + InOut: + Temp: + Constant: + Return: + Ret_Val : Void + +--- NW 1: GesamtTrolly-DL angegeben? --- + L Gesamt_Trolley_DL + L 0 // sinnvolle Angabe? + <=I // Nein! + BEC // Abbruch + + +--- NW 2: Trolleydaten auslesen und verändern --- +// Trolleydaten manipulieren: + L TrolleyID + T "TrolleyDL_SearchDaten".SEARCHDaten.TrolleyID + +CALL FC "DatenOut" (SSDB:=Gesamt_Trolley_DL, SSDW:=0, PARA:=16#E100, SEARCHDATEN:=DB1012.DBX0.0, RE_VAL:="MB198", OUTDATEN:=DB1011.DBX0.0, Position:="MW200") // Eintrag lesen + austragen + + L "MB198" + + BEU + + +--- NW 3: Ende --- + BE + diff --git a/=A01+UH06-KF00/Programmbausteine/Logistik/Trolleydaten_neu_anlegen.awl b/=A01+UH06-KF00/Programmbausteine/Logistik/Trolleydaten_neu_anlegen.awl new file mode 100644 index 0000000..1372318 --- /dev/null +++ b/=A01+UH06-KF00/Programmbausteine/Logistik/Trolleydaten_neu_anlegen.awl @@ -0,0 +1,53 @@ +=== FC 3: Trolleydaten_neu_anlegen [STL] === +INTERFACE: + Input: + Gesamt_Trolley_DL : Int + TrolleyID : DInt + Endziel : Word + ShopGroup : DInt + Output: + InOut: + Temp: + Lager_DB : Int + Lager_DW : Int + SSDW : Int + Position : Int + Constant: + Return: + Ret_Val : Void + +--- NW 1: GesamtTrolly-DL angegeben? --- + L Gesamt_Trolley_DL + L 0 // sinnvolle Angabe? + <=I // Nein! + BEC // Abbruch + + +--- NW 2: Erst mal alte Daten löschen --- +CALL FC "Trolleydaten_löschen" (Gesamt_Trolley_DL:=Gesamt_Trolley_DL, TrolleyID:=TrolleyID) + + +--- NW 3: Trolleydaten speichern --- +// Trolleydaten manipulieren: + L TrolleyID + T "TrolleyDL_INDaten".INDaten.TrolleyID + + L Endziel // Eingabe über Beobachtungstabelle (Tests) + T "TrolleyDL_INDaten".INDaten.EndZiel + L ShopGroup + T "TrolleyDL_INDaten".INDaten.ShopGroup + +// Rest nullen + L 0 + T "TrolleyDL_INDaten".INDaten.ZwischenZiel + T "TrolleyDL_INDaten".INDaten.Standort + +// Daten in Datenbank schreiben: +CALL FC "DatenIn" (SSDB:=Gesamt_Trolley_DL, SSDW:=0, INDATEN:=DB1010.DBX0.0, RE_VAL:="MB198") + + L "TrolleyDL_INDaten".INDaten.TrolleyID + + +--- NW 4: Ende --- + BE + diff --git a/=A01+UH06-KF00/Programmbausteine/Logistik/Trolleydaten_ändern.awl b/=A01+UH06-KF00/Programmbausteine/Logistik/Trolleydaten_ändern.awl new file mode 100644 index 0000000..01d1e05 --- /dev/null +++ b/=A01+UH06-KF00/Programmbausteine/Logistik/Trolleydaten_ändern.awl @@ -0,0 +1,59 @@ +=== FC 2: Trolleydaten_ändern [STL] === +INTERFACE: + Input: + Gesamt_Trolley_DL : Int + TrolleyID : DInt + Endziel : Word + ShopGroup : DInt + Output: + InOut: + Temp: + Constant: + Return: + Ret_Val : Void + +--- NW 1: GesamtTrolly-DL angegeben? --- + L Gesamt_Trolley_DL + L 0 // sinnvolle Angabe? + <=I // Nein! + BEC // Abbruch + + +--- NW 2: Trolleydaten auslesen und verändern --- +// Trolleydaten manipulieren: + L TrolleyID + T "TrolleyDL_SearchDaten".SEARCHDaten.TrolleyID + +CALL FC "DatenOut" (SSDB:=Gesamt_Trolley_DL, SSDW:=0, PARA:=16#0000, SEARCHDATEN:=DB1012.DBX0.0, RE_VAL:="MB198", OUTDATEN:=DB1011.DBX0.0, Position:="MW200") // Eintrag lesen + + L "MB198" + L 2#10000000 // Datensatz vorhanden? + <>I // Nein! + BEC + + L "TrolleyDL_OutDaten".OUTDaten.TrolleyID // Zum Beobachten + + L Endziel + L -1 // Keine Änderung ? + ==I // Ja ! + JC Variante // Nichts überschreiben + + CAC + T "TrolleyDL_OutDaten".OUTDaten.EndZiel + +Variante: L ShopGroup + L DINT#-1 // Keine Änderung ? + ==D // Ja ! + JC Save // Nichts überschreiben + + CAC + T "TrolleyDL_OutDaten".OUTDaten.ShopGroup + +Save: CALL FC "DatenIn" (SSDB:=Gesamt_Trolley_DL, SSDW:=0, INDATEN:=DB1011.DBX0.0, RE_VAL:="MB198") + + BEU + + +--- NW 3: Ende --- + BE + diff --git a/=A01+UH06-KF00/Programmbausteine/Logistik/Wandel_FC_für_DB1000.awl b/=A01+UH06-KF00/Programmbausteine/Logistik/Wandel_FC_für_DB1000.awl new file mode 100644 index 0000000..5f0f258 --- /dev/null +++ b/=A01+UH06-KF00/Programmbausteine/Logistik/Wandel_FC_für_DB1000.awl @@ -0,0 +1,19 @@ +=== FC 1000: Wandel_FC_für_DB1000 [STL] === +INTERFACE: + Input: + Output: + InOut: + Temp: + Constant: + Return: + Ret_Val : Void + +--- NW 1: Wandeln der Daten --- + L "MD94" + + DINT#-6040000 // Funktioniert bis max: 6072767 (Wert + 32767) + T "MW92" // Funktioniert bis max: 32767, danach negativ + + +--- NW 2: Ende --- + BE + diff --git a/=A01+UH06-KF00/Programmbausteine/Module/AMR_LeerTrolley_Anforderung.awl b/=A01+UH06-KF00/Programmbausteine/Module/AMR_LeerTrolley_Anforderung.awl new file mode 100644 index 0000000..68d3fb0 --- /dev/null +++ b/=A01+UH06-KF00/Programmbausteine/Module/AMR_LeerTrolley_Anforderung.awl @@ -0,0 +1,82 @@ +=== FC 276: AMR_LeerTrolley_Anforderung [STL] === +INTERFACE: + Input: + LeerTrolleys_benötigt : Int + ArbeitsPlatz : Word + Output: + InOut: + Gespeicherte_LeerTrolleys : Int + Temp: + DLDB : Int + Constant: + Return: + Ret_Val : Void + +--- NW 1: Änderung vorhanden? --- + L "LeerTrolleys_benötigt" // Diese Anzahl wird benötigt + L Gespeicherte_LeerTrolleys // Diese Anzahl ist schon gespeichert + ==I // Identisch! + A( + L "LeerTrolleys_benötigt" // Diese Anzahl wird benötigt + L 0 + <>I + ) + BEC // Keine Änderung nötig! + + +--- NW 2: Alle evtl. gespeicherte Anforderungen löschen --- + L 1112 // Mit DL (12 Trolleys benötigt) beginnen + T DLDB + +NextDL: L ArbeitsPlatz + T "MW220" + +CALL FC "DatenOut" (SSDB:=DLDB, SSDW:=0, PARA:=16#E100, SEARCHDATEN:=P#M220.0, RE_VAL:="MB198", OUTDATEN:=P#M200.0, Position:="MW196") // Daten suchen und austragen + +// Nächst kleiner benötigte Stückzahl: + L DLDB + + -1 + T DLDB + + L 1101 // 1 Trolley benötigt + >=I // noch sinnvoll? + JC NextDL // Ja! + + L 0 // Keine Speicherung mehr + T Gespeicherte_LeerTrolleys // Diese Anzahl ist schon gespeichert + + +--- NW 3: Benötigte Leertrolleys speichern --- + L "LeerTrolleys_benötigt" + L 12 + <=I + JC OK + + T "LeerTrolleys_benötigt" + +OK: L "LeerTrolleys_benötigt" + L 0 + ==I // Nichts benötigt + JC ESave + + CAC + + 1100 // 1101 ->1112 + T DLDB + + L ArbeitsPlatz + T "MW220" + +CALL FC "DatenIn" (SSDB:=DLDB, SSDW:=0, INDATEN:=P#M220.0, RE_VAL:="MB198") + + AN "M198.7" // Eintrag richtig erfolgt + JC ESave + + L "LeerTrolleys_benötigt" // Anzahl übergeben + T Gespeicherte_LeerTrolleys // Diese Anzahl ist schon gespeichert + +ESave: NOP 0 + + +--- NW 4: Ende --- + BE + diff --git a/=A01+UH06-KF00/Programmbausteine/Module/AMR_LeerTrolley_Anforderung_Del.awl b/=A01+UH06-KF00/Programmbausteine/Module/AMR_LeerTrolley_Anforderung_Del.awl new file mode 100644 index 0000000..90d22fe --- /dev/null +++ b/=A01+UH06-KF00/Programmbausteine/Module/AMR_LeerTrolley_Anforderung_Del.awl @@ -0,0 +1,35 @@ +=== FC 1276: AMR_LeerTrolley_Anforderung_Del [STL] === +INTERFACE: + Input: + ArbeitsPlatz : Word + Output: + InOut: + Gespeicherte_LeerTrolleys : Int + Temp: + DLDB : Int + Constant: + Return: + Ret_Val : Void + +--- NW 1: Bisherig gespeicherte Anforderung löschen --- + L Gespeicherte_LeerTrolleys // Diese Anzahl ist schon gespeichert + L 0 + ==I // Nichts gespeichert + BEC + + CAC + + 1100 // 1101 ->1109 + T DLDB + + L ArbeitsPlatz + T "MW220" + +CALL FC "DatenOut" (SSDB:=DLDB, SSDW:=0, PARA:=16#E100, SEARCHDATEN:=P#M220.0, RE_VAL:="MB198", OUTDATEN:=P#M200.0, Position:="MW196") // Daten suchen und austragen + + L 0 // Keine Speicherung mehr + T Gespeicherte_LeerTrolleys // Diese Anzahl ist schon gespeichert + + +--- NW 2: Ende --- + BE + diff --git a/=A01+UH06-KF00/Programmbausteine/Module/BCD (4stellig)_to_INT.awl b/=A01+UH06-KF00/Programmbausteine/Module/BCD (4stellig)_to_INT.awl new file mode 100644 index 0000000..2eab780 --- /dev/null +++ b/=A01+UH06-KF00/Programmbausteine/Module/BCD (4stellig)_to_INT.awl @@ -0,0 +1,87 @@ +=== FC 78: BCD (4stellig)_to_INT [STL] === +INTERFACE: + Input: + BCD_Wert : Word + Output: + Int_Wert : Int + InOut: + Temp: + BCD_Vergleich : Word + Multiplikator : Int + Constant: + Return: + Ret_Val : Void + +--- NW 1: Rückmeldung --- + L 0 // erst mal köschen + T Int_Wert + + L 1 + T Multiplikator + +--- NW 2: BCD-Wert wandeln --- + L BCD_Wert + T BCD_Vergleich + L 16#000F + AW + L Multiplikator + *I + L Int_Wert + +I + T Int_Wert + + L Multiplikator + L 16 + *I + T Multiplikator + + L BCD_Vergleich + SRW 4 + T BCD_Vergleich + + L 16#000F + AW + L Multiplikator + *I + L Int_Wert + +I + T Int_Wert + + L Multiplikator + L 16 + *I + T Multiplikator + + L BCD_Vergleich + SRW 4 + T BCD_Vergleich + + L 16#000F + AW + L Multiplikator + *I + L Int_Wert + +I + T Int_Wert + + L Multiplikator + L 16 + *I + T Multiplikator + + L BCD_Vergleich + SRW 4 + T BCD_Vergleich + + L 16#000F + AW + L Multiplikator + *I + L Int_Wert + +I + T Int_Wert + + +--- NW 3: Ende --- + BE + diff --git a/=A01+UH06-KF00/Programmbausteine/Module/DBMOV.awl b/=A01+UH06-KF00/Programmbausteine/Module/DBMOV.awl new file mode 100644 index 0000000..9376ec2 --- /dev/null +++ b/=A01+UH06-KF00/Programmbausteine/Module/DBMOV.awl @@ -0,0 +1,50 @@ +=== FC 99: DBMOV [STL] === +INTERFACE: + Input: + QuellDB : Int // Quell-DB + QuellDW : Int // Quell-1.DW + ZielDB : Int // Ziel-DB + ZielDW : Int // Ziel-1.DW + Anzahl_DW : Int // Anzahl der zu kopierenden DWs + Output: + RE_VAL : Int // Rückmeldung + InOut: + Temp: + Quelle : Any // Zeiger, wo Rein-Daten sind + Ziel : Any // Zeiger, FIFO-Stelle + Constant: + Return: + Ret_Val : Void + +--- NW 1: --- +// Kennung + Datenbytes + L 16#1004 // Kennung 10 + Word=04 + T LW0 + T LW10 // Any-Kennung, Datentyp + L Anzahl_DW // Datenwords speichern + T LW2 + T LW12 // Wiederholungen + +// Quelle-Pointer erzeugen: + L QuellDB + T LW4 // DB_Nummer + L QuellDW // Adresse + SLD 3 + L 16#8400_0000 // Kennung: Daten + OD + T LD6 // Kennung, Adresse + +// Ziel-Pointer erzeugen: + L ZielDB + T LW14 // DB_Nummer + L ZielDW // Adresse + SLD 3 + L 16#8400_0000 // Kennung: Daten + OD + T LD16 // Kennung, Adresse + +CALL SYS "BLKMOV" (SRCBLK:=Quelle, RET_VAL:=RE_VAL, DSTBLK:=Ziel) // Datenliste-Daten speichern + + +--- NW 2: Ende --- + BE diff --git a/=A01+UH06-KF00/Programmbausteine/Module/DL_Einsprung.awl b/=A01+UH06-KF00/Programmbausteine/Module/DL_Einsprung.awl new file mode 100644 index 0000000..371618c --- /dev/null +++ b/=A01+UH06-KF00/Programmbausteine/Module/DL_Einsprung.awl @@ -0,0 +1,55 @@ +=== FC 1004: DL_Einsprung [STL] === +INTERFACE: + Input: + Bereich_DL : Int // Nur für Stammdaten =1! + ID : Int + Output: + Dyn.DB : Int + AR_Start : DInt + Error : Bool + InOut: + Temp: + Constant: + Return: + Ret_Val : Void + +--- NW 1: Inittialisierung --- + L 0 + T "Dyn.DB" + L DINT#0 + T AR_Start + SET + S Error + + +--- NW 2: ID suchen --- + L ID + T "MW200" + +CALL FC "DatenOut" (SSDB:=Bereich_DL, SSDW:=0, PARA:=16#0000, SEARCHDATEN:=P#M200.0, RE_VAL:="MB199", OUTDATEN:=P#M220.0, Position:="MW196") // Eintrag lesen + + L "MB199" + L 2#1111111 // Bit 7 ausblenden + AW + L 0 // Fehler vorhanden? + <>I // Ja + = Error + BEC + + +--- NW 3: Daten übergeben --- + L "MW224" + T "Dyn.DB" // Dyn.DB + L 0 // sinnvoller Wert ? + <=I // Nein ! + S Error + BEC + + L "MW226" + ITD + T AR_Start + + +--- NW 4: Ende --- + BE + diff --git a/=A01+UH06-KF00/Programmbausteine/Module/DatenFindOffsetSort.awl b/=A01+UH06-KF00/Programmbausteine/Module/DatenFindOffsetSort.awl new file mode 100644 index 0000000..7e51039 --- /dev/null +++ b/=A01+UH06-KF00/Programmbausteine/Module/DatenFindOffsetSort.awl @@ -0,0 +1,627 @@ +=== FC 91: DatenFindOffsetSort [STL] === +INTERFACE: + Input: + SSDB : Int // Datenlisten-DB + SSDW : Int // Datenlisten-1.DW + PARA : Word // Aufrufparameter (Auftrag / Anzahl Zusatzdaten) + SEARCHDATEN : Pointer // Such-Daten-Schnittstelle + Output: + RE_VAL : Byte // Rückmeldung + OUTDATEN : Pointer // OutDaten-Schnittstelle + Position : Int // Daten stehen an angegebener Position in Datenbank + InOut: + Temp: + Quelle : Any // Zeiger, wo Rein-Daten sind + Ziel : Any // Zeiger, FIFO-Stelle + Kopf : Byte // Datenliste-Kennnung (DA) + Datensatzlaenge : Byte // Datensatzlänge in Word (01 - F0) F0=128 + Listenlaenge : Int // Länge der Datenliste (maximale Anzahl der Datensätze) + Stammdaten : Int // Stammdatenlänge in Word (1 - 9) + Belegt06 : Int // reserviert von Datenliste + Belegt08 : Int // reserviert von Datenliste + Belegt10 : Int // reserviert von Datenliste + Belegt12 : Int // reserviert von Datenliste + AnzahlEintraege : Int // Anzahl der eingetragenen Datensätze + Reserve16 : Int // Reserve + Reserve18 : Int // Reserve + Para1 : Byte // 1.Aufrufparameter + Para2 : Byte // 2.Aufrufparameter + Suchzeiger : Int // Suchzeiger + DBDatenliste : Word // Datenlisten-DB + OffsetDaten_1 : Int // Stammdaten beginnen ab hier + SFC_RET_VAL : Int // Rückmeldung SFC-Aufruf + SFC_DB_LENGTH : Word // Rückmeldung SFC-Aufruf + Datenlisten_Ende : Word // Ende der Datenliste + AR2_Speicher : DWord // Adress-Register 2 zwischenspeichern + Schleife : Word // Loopzähler + DBSuchDaten : Word // Such-Daten-DB, falls angegeben + SuchDaten_Pointer : DWord // Such-Daten-Pointer: Kennung, Adresse + SuchDaten_Startpunkt : Word // Such-Daten-Startpunkt: Adresse + DBOutDaten : Word // Out-Daten-DB, falls angegeben + OutDaten_Pointer : DWord // Out-Daten-Pointer: Kennung, Adresse + OutDaten_Startpunkt : Word // Out-Daten-Startpunkt: Adresse + IndPointer : DWord // Zeiger für IndDB + Daten_1 : Word // 1.Datenwort der Indaten + Datenblock_inBytes : Word // Datenblocklänge in Bytes + Suchstelle : Word // Bei angegebenen Datensatz suchen + SFC_WRITE_PROT : Bool // Rückmeldung SFC-Aufruf + Weitersuchen : Bool // Weitersuchen ist aktiv + Offsetsuchen : Bool // Offsetsuchen ist aktiv + AR1Zeiger : DWord // Statt AR1 (ging nur bis DB-Länge <= 8191 Bytes) + tRE_VAL : Byte // Rückmeldung + Constant: + Return: + Ret_Val : Void + +--- NW 1: Schnittstellen-DB sinnvoll ? --- + TAR2 + T AR2_Speicher // AR2 zwischenspeichern + + L SSDB + T DBDatenliste + +// CALL TEST_DB +// DB_NUMBER :=#DBDatenliste +// RET_VAL :=#SFC_RET_VAL +// DB_LENGTH :=#SFC_DB_LENGTH +// WRITE_PROT :=#SFC_WRITE_PROT + +CALL FC "TEST_DB_TO_ATTR_DB" (DB_Number:=DBDatenliste, RetVal:=SFC_RET_VAL, DB_Length:=SFC_DB_LENGTH, Write_Prot:=SFC_WRITE_PROT) + + L SFC_RET_VAL + L 2#0000_0000_0000_0000 + <>I + O SFC_WRITE_PROT // schreibgeschützt + JC Err0 // kein Datenlisten-Bereich + + +--- NW 2: Quelle-Pointer erzeugen: --- + L 16#1004 // Kennung 10 + Word=04 + T LW0 // Any-Kennung, Datentyp + L 16#000A // 10 Dw´s holen + T LW2 // Wiederholungen + L SSDB + T LW4 // DB_Nummer + L SSDW // Adresse + SLD 3 + L 16#8400_0000 // Kennung: Daten + OD + T LD6 // Kennung, Adresse + +CALL SYS "BLKMOV" (SRCBLK:=Quelle, RET_VAL:=SFC_RET_VAL, DSTBLK:=P#L20.0 WORD 10) // 1.-10.DW Datenliste holen + + L SFC_RET_VAL + L 2#0000_0000_0000_0000 + <>I + JC Err1 + + +--- NW 3: Zeigerüberprüfung --- + L Kopf // Datenliste-Kopf + L 16#DB // = Sort-Datenlistekennung ? + <>I // Nein ! + JC Err0 // kein Datenlistebereich + + L 1 + L Datensatzlaenge // Datenblocklänge + >I + JC Err0 // kein Datenlistebereich + + L 128 + >I + JC Err0 // kein Datenlistebereich + + L 1 + L Listenlaenge // Max.Anzahl von Datenblöcken + >I + JC Err0 // kein Datenlistebereich + + L 1 + L Stammdaten // Anzahl der Stammdaten + >I + JC Err0 // kein Datenlistebereich + + L 9 + >I + JC Err0 // kein Datenlistebereich + + L Stammdaten // Anzahl der Stammdaten + L Datensatzlaenge // Datenblocklänge + >I + JC Err0 // kein Datenlistebereich + + L Listenlaenge // Länge der Datenliste + L Datensatzlaenge // Datenblocklänge + *I + L 2 // DB byteorientiert + *I + + 20 // Speichern ab 10.DW + L SSDW + +I + T Datenlisten_Ende + ITD + SLD 3 + T AR1Zeiger // /Statt AR1 (ging nur bis DB-Länge <= 8191 Bytes) + + OPN DB[DBDatenliste] + + L Datenlisten_Ende + L SFC_DB_LENGTH + >I // Datenlisten-DB ist zu kurz! + JC Err0 // kein Datenlisten-Bereich + + L DBW [AR1Zeiger] + L 16#DAEE // Datenliste-Endekennung ? + <>I // Nein ! + A( + CAC + L 16#DBEE // Sort-Datenliste-Endekennung ? + <>I // Nein ! + ) + JC Err0 // kein Datenlisten-Bereich + + L Datensatzlaenge // Datenblocklänge + L 2 + *I + T Datenblock_inBytes // Datenblocklänge in Bytes + + +--- NW 4: Auftrag kontrollieren --- + SET + R Weitersuchen // Weitersuchen ist aktiv + R Offsetsuchen // Offsetsuchen ist aktiv + L 0 // Vorerst kein Offset + T OffsetDaten_1 + + L PARA + T LW40 // Aufrufparameter zwischenspeichern + + L 16#00 // XX = 00 ? + L Para1 + ==I // Ja! + JC W401 + + L 16#E1 // XX = E1 ? + ==I // Ja! + JC Err3 // Falscher Aufrufparameter + + L 16#F1 // XX = F1 ? + L Para1 + <>I // Nein ! + JC W400 + + L Para2 + L 16#00 + <>I + JC Err3 // Falscher Aufrufparameter + + SET + S Weitersuchen + + L SSDW + + 20 + T Suchzeiger + + JU Nw08 // OutDaten ok ? + +W400: L 16#FF // XX = FF ? + <>I // Nein ! + JC W403 + + L Para2 + L 16#00 + <>I + JC Err3 // Falscher Aufrufparameter + + SET + S Weitersuchen + + L Suchzeiger // Alter Suchzeiger + L Datenblock_inBytes // Datenblocklänge in bytes + +I // Nächsten Datensatz suchen + T Suchzeiger // Neuer Suchzeiger + + L Datenblock_inBytes // Datenblocklänge in bytes + L Listenlaenge // Alle möglichen Einträge + *I // Gesamtlänge + L SSDW // Startpunkt + +I + + 20 // Offset 1.Daten + L Suchzeiger // Schreibzeiger + >I // Noch nicht am Ende ! + JC Nw08 // OutDaten ok ? + + JU Err2 // Listenende erreicht + +W403: L 16#02 // XX < 02 ? + L Para1 + >I // Ja! + JC Err3 // Falscher Aufrufparameter + + L 16#80 // XX > 80 ? + >I // Ja! + JC Err3 // Falscher Aufrufparameter + + CAC + L Datensatzlaenge // XX > Datensatzlänge + >I // Ja! + JC Err3 // Falscher Aufrufparameter + + CAC + + -1 // Angegebener Offset -1 + L 2 // DB byteorientiert + *I + T OffsetDaten_1 // Richtiger Offset der 1.Stammdaten + + L 0 + T Suchzeiger // Suche ab Anfang + + SET + S Offsetsuchen + +W401: L 16#00 // =0 ? + L Para2 // 2.Aufrufparameter + ==I // Ja ! + JC W402 + + T Stammdaten // Anzahl der Stammdaten + L Datensatzlaenge // Datenblocklänge + >I + JC Err3 // Falscher Aufrufparameter + + L 1 + L Stammdaten // Anzahl der Stammdaten + >I + JC Err3 // Falscher Aufrufparameter + + L 9 + >I + JC Err3 // Falscher Aufrufparameter + +W402: AN Offsetsuchen + JC Nw05 + + L Para1 // Offset + + -1 + L Stammdaten + +I // Letzte Stammdaten zu groß ? + L Datensatzlaenge + >I // Ja! + JC Err3 // Falscher Aufrufparameter + + +--- NW 5: Such-DATEN-Pointer übernehmen: --- +Nw05: L AnzahlEintraege // Anzahl der eingetragenen Datensätze + L 0 // Eintrag vorhanden ? + ==I // Nein ! + JC Err6 // Datensatz ist nicht vorhanden + + L 0 + T Suchzeiger // Suchzeiger + + L P# + LAR2 + + L NoneW [AR2,] + T DBSuchDaten // Suchdaten-DB + L NoneD [AR2,] // Kennung, Adresse + T SuchDaten_Pointer + + L DBSuchDaten // Suchdaten-DB + L 0 // Angegeben ? + ==I // Nein + JC W501 + +// CALL TEST_DB +// DB_NUMBER :=#DBSuchDaten +// RET_VAL :=#SFC_RET_VAL +// DB_LENGTH :=#SFC_DB_LENGTH +// WRITE_PROT :=#SFC_WRITE_PROT + +CALL FC "TEST_DB_TO_ATTR_DB" (DB_Number:=DBSuchDaten, RetVal:=SFC_RET_VAL, DB_Length:=SFC_DB_LENGTH, Write_Prot:=SFC_WRITE_PROT) + + + L SFC_RET_VAL + L 2#0000_0000_0000_0000 // Fehler vorhanden ? + <>I // Ja ! + JC Err4 // Undefinierte Stammdaten + + L NoneD [AR2,] // Kennung, Adresse + L 16#00FF_FFFF // Ohne Kennung + AW + SRW 3 // Ohne Bit + T SuchDaten_Startpunkt + + L Datensatzlaenge // Datenblocklänge + L 2 // DB byteorientiert + *I + L SuchDaten_Startpunkt + +I + L SFC_DB_LENGTH + >I // Suchdaten-DB ist zu kurz + JC Err4 // Undefinierte Stammdaten + +W501: L SuchDaten_Pointer + LAR2 + + L DBSuchDaten // Suchdaten-DB + L 0 // Angegeben ? + ==I // Nein + JC W502 + + OPN DB[DBSuchDaten] + +W502: L NoneW [AR2,] // Suchdaten überprüfen + T Daten_1 // 1.Suchdaten speichern + + L Stammdaten +L500: T Schleife + + L DBSuchDaten // Suchdaten-DB + L 0 // Angegeben ? + ==I // Nein + JC W503 + + OPN DB[DBSuchDaten] + +W503: L NoneW [AR2,] // Suchdaten überprüfen + L 0 // Etwas angegeben ? + <>I // Ja ! + JC Nw07 // Weiter + + ADDAR2 P#2.0 + + L Schleife + LOOP L500 + + JU Err4 // Undefinierte Stammdaten + + +--- NW 6: Kontrolle auf gleiche Stammdaten --- +Nw07: L Suchzeiger // Suchzeiger + L 0 // Angegeben ? + ==I // Nein ! + JC W700 // Suche bei 1.Datensatz beginnen + + L Suchzeiger // Suchzeiger + + -20 // Zeiger 1.Daten + L Datenblock_inBytes // Datenblocklänge in Bytes + /I // Ermittlung der wievielten Daten -1 + SRD 16 // Rest ermitteln + L 0 // = 0 ? + <>I // Suchzeiger nicht im Raster ! + JC W700 // Suche bei 1.Datensatz beginnen + + L 0 // Bei angegebener Stelle suchen + T Suchstelle // Such bei X-ten Datensatz + + JU W701 + +W700: L 1 // Suche bei 1.Datensatz beginnen + T Suchstelle // Such bei X-ten Datensatz + L SSDW + + 20 // Offset für 1.Daten + T Suchzeiger // Suchzeiger + +W701: L Suchzeiger // Suchzeiger + L OffsetDaten_1 // Richtiger Offset der 1.Stammdaten + +I + ITD + SLD 3 + T AR1Zeiger // /Statt AR1 (ging nur bis DB-Länge <= 8191 Bytes) + + L SuchDaten_Pointer + LAR2 + + L Stammdaten // Anzahl der Stammdaten +L700: T Schleife + + L DBSuchDaten // Suchdaten-DB + L 0 // Angegeben ? + ==I // Nein + JC W702 + + OPN DB[DBSuchDaten] + +W702: L NoneW [AR2,] // Suchdaten überprüfen mit + OPN DB[DBDatenliste] + L DBW [AR1Zeiger] // Datenliste-Daten lesen + <>I // nicht identisch ! + JC W703 + + L AR1Zeiger + SRD 3 + L 2 + +D + SLD 3 + T AR1Zeiger + + ADDAR2 P#2.0 + + L Schleife + LOOP L700 + + L 2#0000_0000_1000_0000 // Daten sind vorhanden + T tRE_VAL // Ok-Status + + JU Nw08 // Datensatz ist in Liste enthalten + +W703: L 0 // Suche bei 1.Datensatz begonnen + L Suchstelle // Such bei X-ten Datensatz + ==I // Nein ! + JC W700 + + L Suchstelle // Such bei X-ten Datensatz + + 1 + T Suchstelle // Such bei X-ten Datensatz + L AnzahlEintraege // Anzahl der eingetragenen Datensätze + <=I // Alle Datensätze sind durchsucht + JC W705 // Nein ! + + JU Err6 // Datensatz ist nicht vorhanden + +W705: L Datenblock_inBytes // Datenblocklänge in bytes + L Suchzeiger // Suchzeiger + +I + T Suchzeiger // Suchzeiger + JU W701 + + +--- NW 7: Out-DATEN-Pointer übernehmen: --- +Nw08: L P# + LAR2 + + L NoneW [AR2,] + T DBOutDaten // Outdaten-DB + L NoneD [AR2,] // Kennung, Adresse + T OutDaten_Pointer + + L DBOutDaten // Outdaten-DB + L 0 // Angegeben ? + ==I // Nein + JC Nw09 + +// CALL TEST_DB +// DB_NUMBER :=#DBOutDaten +// RET_VAL :=#SFC_RET_VAL +// DB_LENGTH :=#SFC_DB_LENGTH +// WRITE_PROT :=#SFC_WRITE_PROT + +CALL FC "TEST_DB_TO_ATTR_DB" (DB_Number:=DBOutDaten, RetVal:=SFC_RET_VAL, DB_Length:=SFC_DB_LENGTH, Write_Prot:=SFC_WRITE_PROT) + + + L SFC_RET_VAL + L 2#0000_0000_0000_0000 // Fehler vorhanden ? + <>I // Ja ! + JC Err5 // Undefinierte Outdaten + + L NoneD [AR2,] // Kennung, Adresse + L 16#00FF_FFFF // Ohne Kennung + AW + SRW 3 // Ohne Bit + T OutDaten_Startpunkt + + L OutDaten_Startpunkt + L SFC_DB_LENGTH + >I // Outdaten-DB ist zu kurz + JC Err5 // Undefinierte Outdaten + + +--- NW 8: Quelle-Pointer erzeugen: --- +Nw09: L 16#1004 // Kennung 10 + Word=04 + T LW0 + T LW10 // Any-Kennung, Datentyp + L Datensatzlaenge // Datenwords speichern + T LW2 + T LW12 // Wiederholungen + +// DATEN-Pointer übernehmen: + L SSDB + T LW4 // DB_Nummer + L Suchzeiger // Adresse + SLD 3 + L 16#8400_0000 // Kennung: Daten + OD + T LD6 // Kennung, Adresse + +// Ziel-Pointer erzeugen: +// Kennung + Datenbytes s.o. + + L DBOutDaten + T LW14 // DB_Nummer + L OutDaten_Pointer + T LD16 // Kennung, Adresse + +CALL SYS "BLKMOV" (SRCBLK:=Quelle, RET_VAL:=SFC_RET_VAL, DSTBLK:=Ziel) // Datenliste-Daten speichern + + L SFC_RET_VAL + L 2#0000_0000_0000_0000 + <>I + JC Err1 + + L SSDW + + 12 // im 12.DW speichern + ITD + SLD 3 + T AR1Zeiger // /Statt AR1 (ging nur bis DB-Länge <= 8191 Bytes) + + L Suchzeiger // Suchzeiger + OPN DB[DBDatenliste] + T DBW [AR1Zeiger] // Speicherung letzter Zugriff + + L Suchzeiger // Suchzeiger + + -20 // Offeset 1.DS + L Datenblock_inBytes // Datenblocklänge in Bytes + /I + + 1 // Position errechnen + T Position // Daten stehen an angegebener Position in Datenbank + + +--- NW 9: Weitersuchen aktiv ? Datensatz vorhanden oder 0 ? --- + AN Weitersuchen + JC Ende + + L OutDaten_Pointer + LAR2 + + L Datensatzlaenge +L110: T Schleife + + L DBOutDaten // Outdaten-DB + L 0 // Angegeben ? + ==I // Nein + JC W111 + + OPN DB[DBOutDaten] + +W111: L NoneW [AR2,] // Outdaten überprüfen + L 0 // Etwas angegeben ? + <>I // Ja ! + JC W112 // Ok + + ADDAR2 P#2.0 + + L Schleife + LOOP L110 + + L 2#0000_0000_0100_0000 // Daten sind nicht vorhanden + T tRE_VAL // Ok-Status + JU Ende + +W112: L 2#0000_0000_1000_0000 // Daten sind vorhanden + T tRE_VAL // Ok-Status + JU Ende + + +--- NW 10: Fehlerausgabe / RET_VAL --- +Ende: SET // VKE = 1 ohne Fehler !!! + L tRE_VAL // Ok-Status + JU Ok +Err0: L 2#0000_0000_0000_0001 // Kein Datenlistebereich + JU Err +Err1: L 2#0000_0000_0000_0010 // SFC20-Aufruf mit Fehler + JU Err +Err2: L 2#0000_0000_0000_0100 // Listenende ist erreicht + JU Err +Err3: L 2#0000_0000_0000_1000 // Falscher Parameter bei Aufruf + JU Err +Err4: L 2#0000_0000_0001_0000 // Undefinierte Suchdaten + JU Err +Err5: L 2#0000_0000_0010_0000 // Undefinierte OUTDaten + JU Err +Err6: L 2#0000_0000_0100_0000 // Datensatz nicht vorhanden + +Err: CLR // VKE = 0 bei Fehler !!! + +Ok: T tRE_VAL + SAVE // VKE in BIE-Bit speichern + + L AR2_Speicher // AR2 zurückspeichern + LAR2 + + +--- NW 11: --- + L tRE_VAL + T RE_VAL + + diff --git a/=A01+UH06-KF00/Programmbausteine/Module/DatenIn.awl b/=A01+UH06-KF00/Programmbausteine/Module/DatenIn.awl new file mode 100644 index 0000000..e1268c1 --- /dev/null +++ b/=A01+UH06-KF00/Programmbausteine/Module/DatenIn.awl @@ -0,0 +1,552 @@ +=== FC 85: DatenIn [STL] === +INTERFACE: + Input: + SSDB : Int // Datenlisten-DB + SSDW : Int // Datenlisten-1.DW + INDATEN : Pointer // InDaten-Schnittstelle + Output: + RE_VAL : Byte + InOut: + Temp: + Quelle : Any // Zeiger, wo Rein-Daten sind + Ziel : Any // Zeiger, FIFO-Stelle + Kopf : Byte // Datenliste-Kennnung (DA) + Datensatzlaenge : Byte // Datensatzlänge in Word (01 - F0) F0=128 + Listenlaenge : Int // Länge der Datenliste (maximale Anzahl der Datensätze) + Stammdaten : Int // Stammdatenlänge in Word (1 - 9) + IndDB : Word // Indizierter DB (nur bei Stammdaten = 1 erlaubt !!!) + IndDB_Laenge : Int // Länge des indizierten DB in Einträge (nur bei Stammdaten = 1 erlaubt !!!) + IndDaten_FC : Int // FC zum Wandeln der indizierte Daten (nur bei Stammdaten = 1 erlaubt !!!) + Schreibzeiger : Int // Speicherung des letzten Zugriffs / Schreibzeiger + Belegt14 : Int // reserviert von Sort-Datenliste + AnzahlEintraege : Int // Anzahl der eingetragenen Datensätze (nicht bei ind.Zugriff!) + Reserve18 : Int // Reserve + DBDatenliste : Word // Datenlisten-DB + SFC_RET_VAL : Int // Rückmeldung SFC-Aufruf + SFC_DB_LENGTH : Word // Rückmeldung SFC-Aufruf + Datenlisten_Ende : Word // Ende der Datenliste + AR2_Speicher : DWord // Adress-Register 2 zwischenspeichern + Schleife : Word // Loopzähler + DBInDaten : Word // Indaten-DB, falls angegeben + InDaten_Pointer : DWord // In-Daten-Pointer: Kennung, Adresse + InDaten_Startpunkt : Word // In-Daten-Startpunkt: Adresse + IndPointer : DWord // Zeiger für IndDB + Daten_1 : Word // 1.Datenwort der Indaten + Daten_2 : DWord // 1+2.Datenwort der Indaten (falls ind.Suchen mit Stammdaten 2) + LeerZeiger : Word // Zeiger für Leerzelle + Datenblock_inBytes : Word // Datenblocklänge in Bytes + Suchstelle : Word // Bei angegebenen Datensatz suchen + SFC_WRITE_PROT : Bool // Rückmeldung SFC-Aufruf + Indok : Bool // Indizierung möglich + IndZeiger_ok : Bool // Indizier-Zeiger angegeben + Sortliste : Bool // Sortliste wird durchsucht + tRE_VAL : Byte // Rückmeldung + AR1Zeiger : DWord // Statt AR1 (ging nur bis DB-Länge <= 8191 Bytes) + DB_Länge : Int + Wandel_FC : Word // Wandel-FC + Constant: + Return: + Ret_Val : Void + +--- NW 1: Schnittstellen-DB sinnvoll ? --- + TAR2 + T AR2_Speicher // AR2 zwischenspeichern + + L SSDB + T DBDatenliste + +CALL FC "TEST_DB_TO_ATTR_DB" (DB_Number:=DBDatenliste, RetVal:=SFC_RET_VAL, DB_Length:=SFC_DB_LENGTH, Write_Prot:=SFC_WRITE_PROT) + +CALL FC "BCD (4stellig)_to_INT" (BCD_Wert:=SFC_DB_LENGTH, Int_Wert:="DB_Länge") + + L SFC_RET_VAL + L 2#0000_0000_0000_0000 + <>I + O SFC_WRITE_PROT + JC Err0 // kein Datenlisten-Bereich + + +--- NW 2: Quelle-Pointer erzeugen: --- + L 16#1004 // Kennung 10 + Word=04 + T LW0 // Any-Kennung, Datentyp + L 16#000A // 10 Dw´s holen + T LW2 // Wiederholungen + L SSDB + T LW4 // DB_Nummer + L SSDW // Adresse + SLD 3 + L 16#8400_0000 // Kennung: Daten + OD + T LD6 // Kennung, Adresse + +CALL SYS "BLKMOV" (SRCBLK:=Quelle, RET_VAL:=SFC_RET_VAL, DSTBLK:=P#L20.0 WORD 10) // 1.-10.DW Datenliste holen + + L SFC_RET_VAL + L 2#0000_0000_0000_0000 + <>I + JC Err1 + + +--- NW 3: Zeigerüberprüfung --- + L Kopf // Datenliste-Kopf + L 16#DB // = Sort-Datenlistekennung ? + ==I // Ja ! + = Sortliste // Sortliste wird durchsucht + JC w030 + + CAC + L 16#DA // = Datenlistekennung ? + <>I // Nein ! + JC Err0 // kein Datenlistebereich + +w030: L 1 + L Datensatzlaenge // Datenblocklänge + >I + JC Err0 // kein Datenlistebereich + + L 128 + >I + JC Err0 // kein Datenlistebereich + + L 1 + L Listenlaenge // Max.Anzahl von Datenblöcken + >I + JC Err0 // kein Datenlistebereich + + L 1 + L Stammdaten // Anzahl der Stammdaten + >I + JC Err0 // kein Datenlistebereich + + L 9 + >I + JC Err0 // kein Datenlistebereich + + L Stammdaten // Anzahl der Stammdaten + L Datensatzlaenge // Datenblocklänge + >I + JC Err0 // kein Datenlistebereich + + L Listenlaenge // Länge der Datenliste + L Datensatzlaenge // Datenblocklänge + *I + L 2 // DB byteorientiert + *I + + 20 // Speichern ab 10.DW + L SSDW + +I + T Datenlisten_Ende + ITD + SLD 3 + T AR1Zeiger // /Statt AR1 (ging nur bis DB-Länge <= 8191 Bytes) + + OPN DB[DBDatenliste] + + L Datenlisten_Ende + L "DB_Länge" + >I // Datenlisten-DB ist zu kurz! + JC Err0 // kein Datenlisten-Bereich + + L DBW [AR1Zeiger] + L 16#DAEE // Datenliste-Endekennung ? + <>I // Nein ! + A( + CAC + L 16#DBEE // Sort-Datenliste-Endekennung ? + <>I // Nein ! + ) + JC Err0 // kein Datenlisten-Bereich + + L Datensatzlaenge // Datenblocklänge + L 2 + *I + T Datenblock_inBytes // Datenblocklänge in Bytes + + +--- NW 4: In-DATEN-Pointer übernehmen: --- + L P# + LAR2 + + L NoneW [AR2,] + T DBInDaten // Indaten-DB + + L DBInDaten // Indaten-DB + L 0 // Angegeben ? + ==I // Nein + JC W401 + +CALL FC "TEST_DB_TO_ATTR_DB" (DB_Number:=DBInDaten, RetVal:=SFC_RET_VAL, DB_Length:=SFC_DB_LENGTH, Write_Prot:=SFC_WRITE_PROT) + +CALL FC "BCD (4stellig)_to_INT" (BCD_Wert:=SFC_DB_LENGTH, Int_Wert:="DB_Länge") + + L SFC_RET_VAL + L 2#0000_0000_0000_0000 // Fehler vorhanden ? + <>I // Ja ! + JC Err4 // Undefinierte Indaten + + L NoneD [AR2,] // Kennung, Adresse + L 16#00FF_FFFF // Ohne Kennung + AW + SRW 3 // Ohne Bit + T InDaten_Startpunkt + + L Datensatzlaenge // Datenblocklänge + L 2 // DB byteorientiert + *I + L InDaten_Startpunkt + +I + L "DB_Länge" + >I // Indaten-DB ist zu kurz + JC Err4 // Undefinierte Indaten + +W401: L NoneD [AR2,] // Kennung, Adresse + T InDaten_Pointer + LAR2 + + L DBInDaten // Indaten-DB + L 0 // Angegeben ? + ==I // Nein + JC W402 + + OPN DB[DBInDaten] + +W402: L NoneW [AR2,] // Indaten überprüfen + T Daten_1 // 1.Indaten speichern + L NoneD [AR2,] // Suchdaten überprüfen + T Daten_2 // 1.Suchdaten speichern + + L Stammdaten +L400: T Schleife + + L DBInDaten // Indaten-DB + L 0 // Angegeben ? + ==I // Nein + JC W403 + + OPN DB[DBInDaten] + +W403: L NoneW [AR2,] // Indaten überprüfen + L 0 // Etwas angegeben ? + <>I // Ja ! + JC Nw05 // Weiter + + ADDAR2 P#2.0 + + L Schleife + LOOP L400 + + JU Err4 // Undefinierte Indaten + + +--- NW 5: Indiziert speichern ? --- +Nw05: SET + R Indok // Indizierung möglich + R IndZeiger_ok // Indizier-Zeiger angegeben + + L IndDB // Indizierter DB + L 0 // Angegeben ? + ==I // Nein ! + O Sortliste // Sortliste wird durchsucht + JC Nw06 + +CALL FC "TEST_DB_TO_ATTR_DB" (DB_Number:=IndDB, RetVal:=SFC_RET_VAL, DB_Length:=SFC_DB_LENGTH, Write_Prot:=SFC_WRITE_PROT) + +CALL FC "BCD (4stellig)_to_INT" (BCD_Wert:=SFC_DB_LENGTH, Int_Wert:="DB_Länge") + + L SFC_RET_VAL + L 2#0000_0000_0000_0000 + <>I + O SFC_WRITE_PROT + JC Nw06 // kein Indizier-DB vorhanden + + + L IndDB_Laenge // Länge des Indizierten DB überschritten ? + L 2 // DB byteorientiert + *I + L "DB_Länge" + >I // Indizier-DB ist zu kurz + JC Nw06 // Zeiger ausserhalb Ind.DB + + L Stammdaten // Stammdaten + L 3 // zu viele Stammdaten ? + >=I // Ja ! + JC Nw06 // ohne Indizierung weiter + + L IndDaten_FC // Offset zum Abziehen + T Wandel_FC + L 0 // Parameter vorhanden ? + <=I // Nein + JC NoFC // Bei diesem Schritt weiter + + L Daten_1 // Stammdaten (1.DW) + T "MW90" // übergeben + L Daten_2 // Stammdaten (2.DW) + T "MD94" // übergeben + + UC DB[Wandel_FC] // Beeinflussung der Weiterfahrt + + L "MW92" // Rückwert von FC + + JU Ret + +NoFC: L Daten_1 // Stammdaten +Ret: T IndPointer // Stelle, wo Zeiger hinterlegt ist + L 0 + I // Schreibzeiger nicht im Raster ! + JC W600 // Suche bei 1.Datensatz beginnen + + L 0 // Bei angegebener Stelle suchen + T Suchstelle // Such bei X-ten Datensatz + + JU W601 + +W600: L 1 // Suche bei 1.Datensatz beginnen + T Suchstelle // Such bei X-ten Datensatz + SET + R IndZeiger_ok // Indizier-Zeiger angegeben + L SSDW + + 20 // Offset für 1.Daten + T Schreibzeiger // Schreibzeiger + +W601: L Schreibzeiger // Schreibzeiger + ITD + SLD 3 + T AR1Zeiger // /Statt AR1 (ging nur bis DB-Länge <= 8191 Bytes) + + L InDaten_Pointer + LAR2 + + L Stammdaten // Anzahl der Stammdaten +L600: T Schleife + + L DBInDaten // Indaten-DB + L 0 // Angegeben ? + ==I // Nein + JC W602 + + OPN DB[DBInDaten] + +W602: L NoneW [AR2,] // Indaten überprüfen mit + OPN DB[DBDatenliste] + L DBW [AR1Zeiger] // Datenliste-Daten lesen + <>I // nicht identisch ! + JC W603 + + L AR1Zeiger + SRD 3 + L DINT#2 + +D + SLD 3 + T AR1Zeiger + + ADDAR2 P#2.0 + + L Schleife + LOOP L600 + + L 2#0000_0000_1100_0000 // Daten werden gespeichert + überschrieben + T tRE_VAL // Ok-Status + + JU Nw07 // Datensatz ist in Liste enthalten + +W603: L 0 // Suche bei 1.Datensatz begonnen + L Suchstelle // Such bei X-ten Datensatz + ==I // Nein ! + JC W600 + + L LeerZeiger // Zeiger Leerzelle + L 0 // Gespeichert ? + <>I // Ja ! + JC W604 + + L Schreibzeiger // Schreibzeiger + ITD + SLD 3 + T AR1Zeiger // /Statt AR1 (ging nur bis DB-Länge <= 8191 Bytes) + + L Datensatzlaenge +L601: T Schleife + L DBW [AR1Zeiger] // Daten lesen + L 0 // Leerzelle ? + <>I // Nein ! + JC W604 + + L AR1Zeiger + SRD 3 + L DINT#2 + +D + SLD 3 + T AR1Zeiger + + L Schleife + LOOP L601 + + L Schreibzeiger // Schreibzeiger + T LeerZeiger // Zeiger Leerzelle + +W604: L Suchstelle // Such bei X-ten Datensatz + + 1 + T Suchstelle // Such bei X-ten Datensatz + L Listenlaenge // Anzahl aller Daten in Datenliste + <=I // Alle Datensätze sind durchsucht + JC W605 // Nein ! + + L 0 // Gefunden ? + L LeerZeiger // Zeiger Leerzelle + ==I // Nein ! + JC Err2 // Datenliste ist voll + + T Schreibzeiger // Schreibzeiger + L 2#0000_0000_1000_0000 // Daten werden gespeichert + T tRE_VAL // Ok-Status + + JU Nw07 + +W605: L Datenblock_inBytes // Datenblocklänge in bytes + L Schreibzeiger // Schreibzeiger + +I + T Schreibzeiger // Schreibzeiger + JU W601 + + +--- NW 7: Quelle-Pointer erzeugen: --- +Nw07: L 16#1004 // Kennung 10 + Word=04 + T LW0 + T LW10 // Any-Kennung, Datentyp + L Datensatzlaenge // Datenwords speichern + T LW2 + T LW12 // Wiederholungen + +// DATEN-Pointer übernehmen: + L DBInDaten + T LW4 // DB_Nummer + L InDaten_Pointer + T LD6 // Kennung, Adresse + +// Ziel-Pointer erzeugen: +// Kennung + Datenbytes s.o. + + L SSDB + T LW14 // DB_Nummer + L Schreibzeiger // Adresse + SLD 3 + L 16#8400_0000 // Kennung: Daten + OD + T LD16 // Kennung, Adresse + +CALL SYS "BLKMOV" (SRCBLK:=Quelle, RET_VAL:=SFC_RET_VAL, DSTBLK:=Ziel) // Datenliste-Daten speichern + + L SFC_RET_VAL + L 2#0000_0000_0000_0000 + <>I + JC Err1 + + A Sortliste // Sortliste wird durchsucht + JC Nw8 + + L SSDW + + 12 + ITD + SLD 3 + T AR1Zeiger // /Statt AR1 (ging nur bis DB-Länge <= 8191 Bytes) + + L Schreibzeiger // Schreibzeiger + OPN DB[DBDatenliste] + T DBW [AR1Zeiger] // Speicherung letzter Zugriff + + L tRE_VAL // Ok-Status + L 2#0000_0000_1100_0000 // Daten werden gespeichert + überschrieben ? + ==I // Ja ! + O Indok // Indizierung möglich ((Dann nicht!) + JC Nw8 // Kein Neueintrag ! + + L SSDW + + 16 // Offset Anzahl Einträge + ITD + SLD 3 + T AR1Zeiger // /Statt AR1 (ging nur bis DB-Länge <= 8191 Bytes) + + OPN DB[DBDatenliste] + L DBW [AR1Zeiger] // Anzahl der Einträge + + 1 // Einträge +1 + T DBW [AR1Zeiger] // Anzahl der Einträge + + +--- NW 8: Indizierung ok ? --- +Nw8: AN Indok // Indizierung möglich + O IndZeiger_ok // Indizier-Zeiger angegeben + JC Ende + + OPN DB[IndDB] // Indizierter DB + + L Schreibzeiger // Schreibzeiger + T DBW [IndPointer] + + OPN DB[DBDatenliste] // Datenliste DB + + +--- NW 9: Fehlerausgabe / RET_VAL --- +Ende: SET // VKE = 1 ohne Fehler !!! + L tRE_VAL // Ok-Status + JU Ok +Err0: L 2#0000_0000_0000_0001 // Kein Datenlistebereich + JU Err +Err1: L 2#0000_0000_0000_0010 // SFC20-Aufruf mit Fehler + JU Err +Err2: L 2#0000_0000_0000_0100 // Datenliste ist voll + JU Err +Err4: L 2#0000_0000_0001_0000 // Undefinierte Indaten + +Err: CLR // VKE = 0 bei Fehler !!! + +Ok: T tRE_VAL + SAVE // VKE in BIE-Bit speichern + + L AR2_Speicher // AR2 zurückspeichern + LAR2 + + +--- NW 10: Ausgangsvariablen schreiben --- + L tRE_VAL + T RE_VAL + + diff --git a/=A01+UH06-KF00/Programmbausteine/Module/DatenInSort.awl b/=A01+UH06-KF00/Programmbausteine/Module/DatenInSort.awl new file mode 100644 index 0000000..8943c60 --- /dev/null +++ b/=A01+UH06-KF00/Programmbausteine/Module/DatenInSort.awl @@ -0,0 +1,488 @@ +=== FC 88: DatenInSort [STL] === +INTERFACE: + Input: + SSDB : Int // Datenlisten-DB + SSDW : Int // Datenlisten-1.DW + INDATEN : Pointer // InDaten-Schnittstelle + Output: + RE_VAL : Byte // Rückmeldung + InOut: + Temp: + Quelle : Any // Zeiger, wo Rein-Daten sind + Ziel : Any // Zeiger, FIFO-Stelle + Kopf : Byte // Datenliste-Kennnung (DA) + Datensatzlaenge : Byte // Datensatzlänge in Word (01 - F0) F0=128 + Listenlaenge : Int // Länge der Datenliste (maximale Anzahl der Datensätze) + Stammdaten : Int // Stammdatenlänge in Word (1 - 9) + Belegt06 : Int // reserviert von Datenliste + Belegt08 : Int // reserviert von Datenliste + Belegt10 : Int // reserviert von Datenliste + Belegt12 : Int // reserviert von Datenliste + AnzahlEintraege : Int // Anzahl der eingetragenen Datensätze + Reserve16 : Int // Reserve + Reserve18 : Int // Reserve + DBDatenliste : Word // Datenlisten-DB + SFC_RET_VAL : Int // Rückmeldung SFC-Aufruf + SFC_DB_LENGTH : Word // Rückmeldung SFC-Aufruf + Datenlisten_Ende : Word // Ende der Datenliste + AR2_Speicher : DWord // Adress-Register 2 zwischenspeichern + Schleife : Word // Loopzähler + DBInDaten : Word // Indaten-DB, falls angegeben + InDaten_Pointer : DWord // In-Daten-Pointer: Kennung, Adresse + InDaten_Startpunkt : Word // In-Daten-Startpunkt: Adresse + Sort_Daten : DInt // Einzusortierende Daten (DWord) + Datenblock_inBytes : Word // Datenblocklänge in Bytes + SFC_WRITE_PROT : Bool // Rückmeldung SFC-Aufruf + Lesestelle : Int // An dieser Stelle Datensatz lesen + Min_Lesestelle : Int // Minimal sinnvolle Lesestelle + Max_Lesestelle : Int // Maximal sinnvolle Lesestelle + Savestelle : Int // An dieser Stelle wird In-Datensatz gespeichert + Lese_Daten : DInt // In Tabelle gelesenen Daten + Holstelle : Int // Freiraum schaffen: Stelle zum Daten holen + Bringstelle : Int // Freiraum schaffen: Stelle zum Daten schreiben + Holzeiger : DWord // Freiraum schaffen: Zeiger zum Daten holen + Bringzeiger : DWord // Freiraum schaffen: Zeiger zum Daten schreiben + AR1Zeiger : DWord // Statt AR1 (ging nur bis DB-Länge <= 8191 Bytes) + Constant: + Return: + Ret_Val : Void + +--- NW 1: Schnittstellen-DB sinnvoll ? --- + TAR2 + T AR2_Speicher // AR2 zwischenspeichern + + L SSDB + T DBDatenliste + +// CALL TEST_DB +// DB_NUMBER :=#DBDatenliste +// RET_VAL :=#SFC_RET_VAL +// DB_LENGTH :=#SFC_DB_LENGTH +// WRITE_PROT :=#SFC_WRITE_PROT + +CALL FC "TEST_DB_TO_ATTR_DB" (DB_Number:=DBDatenliste, RetVal:=SFC_RET_VAL, DB_Length:=SFC_DB_LENGTH, Write_Prot:=SFC_WRITE_PROT) + + L SFC_RET_VAL + L 2#0000_0000_0000_0000 + <>I + O SFC_WRITE_PROT + JC Err0 // kein Datenlisten-Bereich + + +--- NW 2: Quelle-Pointer erzeugen: --- + L 16#1004 // Kennung 10 + Word=04 + T LW0 // Any-Kennung, Datentyp + L 16#000A // 10 Dw´s holen + T LW2 // Wiederholungen + L SSDB + T LW4 // DB_Nummer + L SSDW // Adresse + SLD 3 + L 16#8400_0000 // Kennung: Daten + OD + T LD6 // Kennung, Adresse + +CALL SYS "BLKMOV" (SRCBLK:=Quelle, RET_VAL:=SFC_RET_VAL, DSTBLK:=P#L20.0 WORD 10) // 1.-10.DW Datenliste holen + + L SFC_RET_VAL + L 2#0000_0000_0000_0000 + <>I + JC Err1 + + +--- NW 3: Zeigerüberprüfung --- + L Kopf // Datenliste-Kopf + L 16#DB // = Datenlistekennung ? + <>I // Nein ! + JC Err0 // kein Datenlistebereich + + L 1 + L Datensatzlaenge // Datenblocklänge + >I + JC Err0 // kein Datenlistebereich + + L 128 + >I + JC Err0 // kein Datenlistebereich + + L 1 + L Listenlaenge // Max.Anzahl von Datenblöcken + >I + JC Err0 // kein Datenlistebereich + + L 1 + L Stammdaten // Anzahl der Stammdaten + >I + JC Err0 // kein Datenlistebereich + + L 9 + >I + JC Err0 // kein Datenlistebereich + + L Stammdaten // Anzahl der Stammdaten + L Datensatzlaenge // Datenblocklänge + >I + JC Err0 // kein Datenlistebereich + + L Listenlaenge // Länge der Datenliste + L Datensatzlaenge // Datenblocklänge + *I + L 2 // DB byteorientiert + *I + + 20 // Speichern ab 10.DW + L SSDW + +I + T Datenlisten_Ende + ITD + SLD 3 + T AR1Zeiger // /Statt AR1 (ging nur bis DB-Länge <= 8191 Bytes) + + OPN DB[DBDatenliste] + + L Datenlisten_Ende + L SFC_DB_LENGTH + >I // Datenlisten-DB ist zu kurz! + JC Err0 // kein Datenlisten-Bereich + + L DBW [AR1Zeiger] + L 16#DBEE // Datenliste-Endekennung ? + <>I // Nein ! + JC Err0 // kein Datenlisten-Bereich + + L Datensatzlaenge // Datenblocklänge + L 2 + *I + T Datenblock_inBytes // Datenblocklänge in Bytes + + L AnzahlEintraege // Anzahl der eingetragenen Datensätze + L Listenlaenge // Max.Anzahl von Datenblöcken + >=I // Nein ! + JC Err2 // Datenliste ist voll + + +--- NW 4: Indaten definiert ? --- + +// In-DATEN-Pointer übernehmen: + L P# + LAR2 + + L NoneW [AR2,] + T DBInDaten // Indaten-DB + + L DBInDaten // Indaten-DB + L 0 // Angegeben ? + ==I // Nein + JC W401 + +// CALL TEST_DB +// DB_NUMBER :=#DBInDaten +// RET_VAL :=#SFC_RET_VAL +// DB_LENGTH :=#SFC_DB_LENGTH +// WRITE_PROT :=#SFC_WRITE_PROT + +CALL FC "TEST_DB_TO_ATTR_DB" (DB_Number:=DBInDaten, RetVal:=SFC_RET_VAL, DB_Length:=SFC_DB_LENGTH, Write_Prot:=SFC_WRITE_PROT) + + + L SFC_RET_VAL + L 2#0000_0000_0000_0000 // Fehler vorhanden ? + <>I // Ja ! + JC Err4 // Undefinierte Indaten + + L NoneD [AR2,] // Kennung, Adresse + L 16#00FF_FFFF // Ohne Kennung + AW + SRW 3 // Ohne Bit + T InDaten_Startpunkt + + L Datensatzlaenge // Datenblocklänge + L 2 // DB byteorientiert + *I + L InDaten_Startpunkt + +I + L SFC_DB_LENGTH + >I // Indaten-DB ist zu kurz + JC Err4 // Undefinierte Indaten + +W401: L NoneD [AR2,] // Kennung, Adresse + T InDaten_Pointer + LAR2 + + L DBInDaten // Indaten-DB + L 0 // Angegeben ? + ==I // Nein + JC W402 + + OPN DB[DBInDaten] + +W402: L NoneD [AR2,] // Indaten überprüfen + T Sort_Daten // 1.Indaten speichern + + L Stammdaten +L400: T Schleife + + L DBInDaten // Indaten-DB + L 0 // Angegeben ? + ==I // Nein + JC W403 + + OPN DB[DBInDaten] + +W403: L NoneW [AR2,] // Indaten überprüfen + L 0 // Etwas angegeben ? + <>I // Ja ! + JC Nw05 // Weiter + + ADDAR2 P#2.0 + + L Schleife + LOOP L400 + + JU Err4 // Undefinierte Indaten + +Nw05: NOP 0 + + +--- NW 5: Minimale + maximale Lesestelle am Anfang --- + L 1 + T Min_Lesestelle // Minimal sinnvolle Lesestelle + + L AnzahlEintraege // Anzahl der eingetragenen Datensätze + T Max_Lesestelle // Maximal sinnvolle Lesestelle + +// Sonderfall: noch kein Eintrag: + L 0 // Eintrag schon vorhanden ? + >I // Ja ! + JC en05 + + L 1 // An 1.Stelle speichern + T Savestelle // Adresse + + JU Save + +en05: NOP 0 + + +--- NW 6: Aktuelle Lesestelle errechnen --- +New: L Max_Lesestelle // Maximal sinnvolle Lesestelle + + 1 + L Min_Lesestelle // Minimal sinnvolle Lesestelle + -I + L 2 + /I + L Min_Lesestelle // Minimal sinnvolle Lesestelle + +I + T Lesestelle // An dieser Stelle Datensatz lesen + + +--- NW 7: Daten an Lesestelle auslesen --- + L Lesestelle // An dieser Stelle Datensatz lesen + + -1 + L Datenblock_inBytes // Datenblocklänge in Bytes + *I + L SSDW + +I + + 20 // Offset für 1.Daten + ITD + SLD 3 + T AR1Zeiger // /Statt AR1 (ging nur bis DB-Länge <= 8191 Bytes) + + OPN DB[DBDatenliste] + L DBD [AR1Zeiger] // Datenliste-Daten lesen + T Lese_Daten // In Tabelle gelesenen Daten + L 0 // Nichts gespeicher oder negativ ? + <=D // Ja ! + JC Err5 + + +--- NW 8: Suche fertig ? --- + L Max_Lesestelle // Maximal sinnvolle Lesestelle + L Min_Lesestelle // Minimal sinnvolle Lesestelle + -I + L 0 // Suche fertig ? + D // Sort > Tabelle + JC MinP + + L Sort_Daten // Einzusortierende Daten + >D // Tabelle > Sort + JC MaxM + + L Lesestelle // An dieser Stelle Datensatz lesen + T Savestelle // An dieser Stelle wird In-Datensatz gespeichert + + JC Frei // Freiplatz schaffen + +MinP: L Lesestelle // An dieser Stelle Datensatz lesen + + 1 + T Min_Lesestelle // Minimal sinnvolle Lesestelle + + L Max_Lesestelle // Maximal sinnvolle Lesestelle + >I // Suche ist fertig + JC ok + + JU New + +MaxM: L Lesestelle // An dieser Stelle Datensatz lesen + + -1 + T Max_Lesestelle // Maximal sinnvolle Lesestelle + + L Min_Lesestelle // Minimal sinnvolle Lesestelle + D // Sort > Tabelle + JC Plus + + L Lesestelle // An dieser Stelle Datensatz lesen + T Savestelle // An dieser Stelle wird In-Datensatz gespeichert + + JU Frei // Freiplatz schaffen + +Plus: L Lesestelle // An dieser Stelle Datensatz lesen + + 1 + T Savestelle // An dieser Stelle wird In-Datensatz gespeichert + + +--- NW 11: Freiraum für Speicherung schaffen --- +Frei: L Savestelle // An dieser Stelle wird In-Datensatz gespeichert + T "MW240" + L AnzahlEintraege // Anzahl der eingetragenen Datensätze + >I // Eintrag ans Ende ! + JC Save + + L AnzahlEintraege // Anzahl der eingetragenen Datensätze + L Datenblock_inBytes // Datenblocklänge in Bytes + *I + L SSDW + +I + + 20 // Offset für 1.Daten + + -2 // Letzte Daten letzter Eintrag + T Holstelle // Freiraum schaffen: Stelle zum Daten holen + + L Holstelle // Freiraum schaffen: Stelle zum Daten holen + L Datenblock_inBytes // Datenblocklänge in Bytes + +I + T Bringstelle // Freiraum schaffen: Zeiger zum Daten schreiben + + L AnzahlEintraege // Anzahl der eingetragenen Datensätze + L Savestelle // An dieser Stelle wird In-Datensatz gespeichert + -I + + 1 + L Datenblock_inBytes // Datenblocklänge in Bytes + *I + L 2 // da DW-Zugriff (2Byte) + /I +L110: T Schleife + + L Holstelle // Freiraum schaffen: Stelle zum Daten holen + ITD + SLD 3 + T Holzeiger // Freiraum schaffen: Zeiger zum Daten holen + L Bringstelle // Freiraum schaffen: Zeiger zum Daten schreiben + ITD + SLD 3 + T Bringzeiger // Freiraum schaffen: Zeiger zum Daten schreiben + + OPN DB[DBDatenliste] + + L DBW [Holzeiger] // Datenliste-Daten lesen + T DBW [Bringzeiger] // Datenliste-Daten verschieben + + L Holstelle + + -2 // 2 Byte wegen DW-Zugriff + T Holstelle // Freiraum schaffen: Stelle zum Daten holen + + L Bringstelle + + -2 // 2 Byte wegen DW-Zugriff + T Bringstelle // Freiraum schaffen: Zeiger zum Daten schreiben + + L Schleife + LOOP L110 + + +--- NW 12: Daten in Datenliste schreiben --- +// Quelle-Pointer erzeugen: + +Save: L 16#1004 // Kennung 10 + Word=04 + T LW0 + T LW10 // Any-Kennung, Datentyp + L Datensatzlaenge // Datenwords speichern + T LW2 + T LW12 // Wiederholungen + +// DATEN-Pointer übernehmen: + L DBInDaten + T LW4 // DB_Nummer + L InDaten_Pointer + T LD6 // Kennung, Adresse + +// Ziel-Pointer erzeugen: +// Kennung + Datenbytes s.o. + + L SSDB + T LW14 // DB_Nummer + L Savestelle // Adresse + + -1 + L Datenblock_inBytes // Datenblocklänge in Bytes + *I + L SSDW + +I + + 20 // Offset für 1.Daten + SLD 3 + L 16#8400_0000 // Kennung: Daten + OD + T LD16 // Kennung, Adresse + +CALL SYS "BLKMOV" (SRCBLK:=Quelle, RET_VAL:=SFC_RET_VAL, DSTBLK:=Ziel) // Datenliste-Daten speichern + + L SFC_RET_VAL + L 2#0000_0000_0000_0000 + <>I + JC Err1 + + L SSDW + + 14 // Anzahl der Einträge + ITD + SLD 3 + T AR1Zeiger // /Statt AR1 (ging nur bis DB-Länge <= 8191 Bytes) + + OPN DB[DBDatenliste] + L DBW [AR1Zeiger] // Anzahl der Einträge + + 1 // Einträge +1 + T DBW [AR1Zeiger] // Anzahl der Einträge + + +--- NW 13: Fehlerausgabe / RET_VAL --- + SET // VKE = 1 ohne Fehler !!! + L 2#0000_0000_1000_0000 // Daten wurden gespeichert + JU Ok_Mig +Err0: L 2#0000_0000_0000_0001 // Kein Datenlistebereich + JU Err +Err1: L 2#0000_0000_0000_0010 // SFC20-Aufruf mit Fehler + JU Err +Err2: L 2#0000_0000_0000_0100 // Datenliste ist voll + JU Err +Err4: L 2#0000_0000_0001_0000 // Undefinierte Indaten + JU Err +Err5: L 2#0000_0000_0010_0000 // Gespeicherte Daten <= 0 (Inhalt ungültig) + +Err: CLR // VKE = 0 bei Fehler !!! + +Ok_Mig: T RE_VAL + SAVE // VKE in BIE-Bit speichern + + L AR2_Speicher // AR2 zurückspeichern + LAR2 + diff --git a/=A01+UH06-KF00/Programmbausteine/Module/DatenOut.awl b/=A01+UH06-KF00/Programmbausteine/Module/DatenOut.awl new file mode 100644 index 0000000..e9bf550 --- /dev/null +++ b/=A01+UH06-KF00/Programmbausteine/Module/DatenOut.awl @@ -0,0 +1,894 @@ +=== FC 86: DatenOut [STL] === +INTERFACE: + Input: + SSDB : Int // Datenlisten-DB + SSDW : Int // Datenlisten-1.DW + PARA : Word // Aufrufparameter (Auftrag / Anzahl Zusatzdaten) + SEARCHDATEN : Pointer // Such-Daten-Schnittstelle + Output: + RE_VAL : Byte // Rückmeldung + OUTDATEN : Pointer // OutDaten-Schnittstelle + Position : Int // Daten stehen an angegebener Position in Datenbank + InOut: + Temp: + Quelle : Any // Zeiger, wo Rein-Daten sind + Ziel : Any // Zeiger, FIFO-Stelle + Kopf : Byte // Datenliste-Kennnung (DA) + Datensatzlaenge : Byte // Datensatzlänge in Word (01 - F0) F0=128 + Listenlaenge : Int // Länge der Datenliste (maximale Anzahl der Datensätze) + Stammdaten : Int // Stammdatenlänge in Word (1 - 9) + IndDB : Word // Indizierter DB (nur bei Stammdaten = 1 erlaubt !!!) + IndDB_Laenge : Int // Länge des indizierten DB in Einträge (nur bei Stammdaten = 1 erlaubt !!!) + IndDaten_FC : Int // FC zum Wandeln der indizierte Daten (nur bei Stammdaten = 1 erlaubt !!!) + Suchzeiger : Int // Speicherung des letzten Zugriffs / Suchzeiger + Belegt14 : Int // reserviert von Sort-Datenliste + AnzahlEintraege : Int // Anzahl der eingetragenen Datensätze (nicht bei ind.Zugriff!) + Reserve18 : Int // Reserve + Para1 : Byte // 1.Aufrufparameter + Para2 : Byte // 2.Aufrufparameter + DBDatenliste : Word // Datenlisten-DB + OffsetDaten_1 : Int // Stammdaten beginnen ab hier + SFC_RET_VAL : Int // Rückmeldung SFC-Aufruf + SFC_DB_LENGTH : Word // Rückmeldung SFC-Aufruf + Datenlisten_Ende : Int // Ende der Datenliste + AR2_Speicher : DWord // Adress-Register 2 zwischenspeichern + Schleife : Word // Loopzähler + DBSuchDaten : Word // Such-Daten-DB, falls angegeben + SuchDaten_Pointer : DWord // Such-Daten-Pointer: Kennung, Adresse + SuchDaten_Startpunkt : Word // Such-Daten-Startpunkt: Adresse + DBOutDaten : Word // Out-Daten-DB, falls angegeben + OutDaten_Pointer : DWord // Out-Daten-Pointer: Kennung, Adresse + OutDaten_Startpunkt : Word // Out-Daten-Startpunkt: Adresse + IndPointer : DWord // Zeiger für IndDB + Daten_1 : Word // 1.Datenwort der Indaten + Daten_2 : DWord // 1+2.Datenwort der Indaten (falls ind.Suchen mit Stammdaten 2) + Datenblock_inBytes : Word // Datenblocklänge in Bytes + Suchstelle : Word // Bei angegebenen Datensatz suchen + SFC_WRITE_PROT : Bool // Rückmeldung SFC-Aufruf + Indok : Bool // Indizierung möglich + IndZeiger_ok : Bool // Indizier-Zeiger angegeben + Weitersuchen : Bool // Weitersuchen ist aktiv + Offsetsuchen : Bool // Offsetsuchen ist aktiv + Sortliste : Bool // Sortliste wird durchsucht + WandelFC : Bool // Wnadel-FC für ind.Suchen vorhanden + tRE_VAL : Byte // Rückmeldung + AR1Zeiger : DWord // Statt AR1 (ging nur bis DB-Länge <= 8191 Bytes) + DB_Länge : Int + NichtCopy : Int // Datenmenge, die nicht vorschoben wird + LoeschPos : Word // Lösch-Position + Wandel_FC : Word // Wandel-FC + Constant: + Return: + Ret_Val : Void + +--- NW 1: Schnittstellen-DB sinnvoll ? --- + TAR2 + T AR2_Speicher // AR2 zwischenspeichern + + L SSDB + T DBDatenliste + +CALL FC "TEST_DB_TO_ATTR_DB" (DB_Number:=DBDatenliste, RetVal:=SFC_RET_VAL, DB_Length:=SFC_DB_LENGTH, Write_Prot:=SFC_WRITE_PROT) + +CALL FC "BCD (4stellig)_to_INT" (BCD_Wert:=SFC_DB_LENGTH, Int_Wert:="DB_Länge") + + L SFC_RET_VAL + L 2#0000_0000_0000_0000 + <>I + O SFC_WRITE_PROT // schreibgeschützt + JC Err0 // kein Datenlisten-Bereich + + +--- NW 2: Quelle-Pointer erzeugen: --- + L 16#1004 // Kennung 10 + Word=04 + T LW0 // Any-Kennung, Datentyp + L 16#000A // 10 Dw´s holen + T LW2 // Wiederholungen + L SSDB + T LW4 // DB_Nummer + L SSDW // Adresse + SLD 3 + L 16#8400_0000 // Kennung: Daten + OD + T LD6 // Kennung, Adresse + +CALL SYS "BLKMOV" (SRCBLK:=Quelle, RET_VAL:=SFC_RET_VAL, DSTBLK:=P#L20.0 WORD 10) // 1.-10.DW Datenliste holen + + L SFC_RET_VAL + L 2#0000_0000_0000_0000 + <>I + JC Err1 + + +--- NW 3: Zeigerüberprüfung --- + L Kopf // Datenliste-Kopf + L 16#DB // = Sort-Datenlistekennung ? + ==I // Ja ! + = Sortliste // Sortliste wird durchsucht + JC w030 + + CAC + L 16#DA // = Datenlistekennung ? + <>I // Nein ! + JC Err0 // kein Datenlistebereich + +w030: L 1 + L Datensatzlaenge // Datenblocklänge + >I + JC Err0 // kein Datenlistebereich + + L 128 + >I + JC Err0 // kein Datenlistebereich + + L 1 + L Listenlaenge // Max.Anzahl von Datenblöcken + >I + JC Err0 // kein Datenlistebereich + + L 1 + L Stammdaten // Anzahl der Stammdaten + >I + JC Err0 // kein Datenlistebereich + + L 9 + >I + JC Err0 // kein Datenlistebereich + + L Stammdaten // Anzahl der Stammdaten + L Datensatzlaenge // Datenblocklänge + >I + JC Err0 // kein Datenlistebereich + + L Listenlaenge // Länge der Datenliste + L Datensatzlaenge // Datenblocklänge + *I + L 2 // DB byteorientiert + *I + + 20 // Speichern ab 10.DW + L SSDW + +I + T Datenlisten_Ende + ITD + SLD 3 + T AR1Zeiger // /Statt AR1 (ging nur bis DB-Länge <= 8191 Bytes) + + OPN DB[DBDatenliste] + + L Datenlisten_Ende + L "DB_Länge" + >I // Datenlisten-DB ist zu kurz! + JC Err0 // kein Datenlisten-Bereich + + L DBW [AR1Zeiger] + L 16#DAEE // Datenliste-Endekennung ? + <>I // Nein ! + A( + CAC + L 16#DBEE // Sort-Datenliste-Endekennung ? + <>I // Nein ! + ) + JC Err0 // kein Datenlisten-Bereich + + L Datensatzlaenge // Datenblocklänge + L 2 + *I + T Datenblock_inBytes // Datenblocklänge in Bytes + + +--- NW 4: Auftrag kontrollieren --- + SET + R Indok // Indizierung möglich + R IndZeiger_ok // Indizier-Zeiger angegeben + R Weitersuchen // Weitersuchen ist aktiv + R Offsetsuchen // Offsetsuchen ist aktiv + L 0 // Vorerst kein Offset + T OffsetDaten_1 + + L PARA + T LW40 // Aufrufparameter zwischenspeichern + + L 16#00 // XX = 00 ? + L Para1 + ==I // Ja! + JC W401 + + L 16#E1 // XX = E1 ? + ==I // Ja! + A Sortliste // Sortliste wird durchsucht + JC Err3 // Falscher Aufrufparameter (austragen nicht erlaubt !) + + CAC + L 16#E1 // XX = E1 ? + ==I // Ja! + JC W401 + + L 16#F1 // XX = F1 ? + L Para1 + <>I // Nein ! + JC W400 + + L Para2 + L 16#00 + <>I + O Sortliste // Sortliste wird durchsucht + JC Err3 // Falscher Aufrufparameter + + SET + S Weitersuchen + + L SSDW + + 20 + T Suchzeiger + + JU Nw08 // OutDaten ok ? + +W400: L 16#FF // XX = FF ? + <>I // Nein ! + JC W403 + + L Para2 + L 16#00 + <>I + O Sortliste // Sortliste wird durchsucht + JC Err3 // Falscher Aufrufparameter + + SET + S Weitersuchen + + L Suchzeiger // Alter Suchzeiger + L Datenblock_inBytes // Datenblocklänge in bytes + +I // Nächsten Datensatz suchen + T Suchzeiger // Neuer Suchzeiger + + L Datenblock_inBytes // Datenblocklänge in bytes + L Listenlaenge // Alle möglichen Einträge + *I // Gesamtlänge + L SSDW // Startpunkt + +I + + 20 // Offset 1.Daten + L Suchzeiger // Schreibzeiger + >I // Noch nicht am Ende ! + JC Nw08 // OutDaten ok ? + + JU Err2 // Listenende erreicht + +W403: L 16#02 // XX < 02 ? + L Para1 + >I // Ja! + JC Err3 // Falscher Aufrufparameter + + L 16#80 // XX > 80 ? + >I // Ja! + JC Err3 // Falscher Aufrufparameter + + CAC + L Datensatzlaenge // XX > Datensatzlänge + >I // Ja! + JC Err3 // Falscher Aufrufparameter + + CAC + + -1 // Angegebener Offset -1 + L 2 // DB byteorientiert + *I + T OffsetDaten_1 // Richtiger Offset der 1.Stammdaten + + L 0 + T Suchzeiger // Suche ab Anfang + + SET + S Offsetsuchen + +W401: L 16#00 // =0 ? + L Para2 // 2.Aufrufparameter + ==I // Ja ! + JC W402 + + T Stammdaten // Anzahl der Stammdaten + L Datensatzlaenge // Datenblocklänge + >I + JC Err3 // Falscher Aufrufparameter + + L 1 + L Stammdaten // Anzahl der Stammdaten + >I + JC Err3 // Falscher Aufrufparameter + + L 9 + >I + JC Err3 // Falscher Aufrufparameter + +W402: AN Offsetsuchen + JC Nw05 + + L Para1 // Offset + + -1 + L Stammdaten + +I // Letzte Stammdaten zu groß ? + L Datensatzlaenge + >I // Ja! + JC Err3 // Falscher Aufrufparameter + + +--- NW 5: Such-DATEN-Pointer übernehmen: --- +Nw05: L 0 + T Suchzeiger // Suchzeiger + + L P# + LAR2 + + L NoneW [AR2,] + T DBSuchDaten // Suchdaten-DB + L NoneD [AR2,] // Kennung, Adresse + T SuchDaten_Pointer + + L DBSuchDaten // Suchdaten-DB + L 0 // Angegeben ? + ==I // Nein + JC W501 + +CALL FC "TEST_DB_TO_ATTR_DB" (DB_Number:=DBSuchDaten, RetVal:=SFC_RET_VAL, DB_Length:=SFC_DB_LENGTH, Write_Prot:=SFC_WRITE_PROT) + +CALL FC "BCD (4stellig)_to_INT" (BCD_Wert:=SFC_DB_LENGTH, Int_Wert:="DB_Länge") + + L SFC_RET_VAL + L 2#0000_0000_0000_0000 // Fehler vorhanden ? + <>I // Ja ! + JC Err4 // Undefinierte Stammdaten + + L NoneD [AR2,] // Kennung, Adresse + L 16#00FF_FFFF // Ohne Kennung + AW + SRW 3 // Ohne Bit + T SuchDaten_Startpunkt + + L Datensatzlaenge // Datenblocklänge + L 2 // DB byteorientiert + *I + L SuchDaten_Startpunkt + +I + L "DB_Länge" + >I // Suchdaten-DB ist zu kurz + JC Err4 // Undefinierte Stammdaten + +W501: L SuchDaten_Pointer + LAR2 + + L DBSuchDaten // Suchdaten-DB + L 0 // Angegeben ? + ==I // Nein + JC W502 + + OPN DB[DBSuchDaten] + +W502: L NoneW [AR2,] // Suchdaten überprüfen + T Daten_1 // 1.Suchdaten speichern + L NoneD [AR2,] // Suchdaten überprüfen + T Daten_2 // 1.Suchdaten speichern + + L Stammdaten +L500: T Schleife + + L DBSuchDaten // Suchdaten-DB + L 0 // Angegeben ? + ==I // Nein + JC W503 + + OPN DB[DBSuchDaten] + +W503: L NoneW [AR2,] // Suchdaten überprüfen + L 0 // Etwas angegeben ? + <>I // Ja ! + JC Nw06 // Weiter + + ADDAR2 P#2.0 + + L Schleife + LOOP L500 + + JU Err4 // Undefinierte Stammdaten + + +--- NW 6: Indiziert suchen ? --- +Nw06: L IndDB // Indizierter DB + L 0 // =0 ? + ==I // Kein indizierter DB ! + O Offsetsuchen + O Sortliste // Sortliste wird durchsucht + JC Nw07 + +CALL FC "TEST_DB_TO_ATTR_DB" (DB_Number:=IndDB, RetVal:=SFC_RET_VAL, DB_Length:=SFC_DB_LENGTH, Write_Prot:=SFC_WRITE_PROT) + +CALL FC "BCD (4stellig)_to_INT" (BCD_Wert:=SFC_DB_LENGTH, Int_Wert:="DB_Länge") + + L SFC_RET_VAL + L 2#0000_0000_0000_0000 + <>I + O SFC_WRITE_PROT + JC Nw07 // kein Indizier-DB vorhanden + + L IndDB_Laenge // Länge des Indizierten DB überschritten ? + L DINT#2 // DB byteorientiert + *D + L "DB_Länge" + >I // Indizier-DB ist zu kurz + JC Nw07 // Zeiger ausserhalb Ind.DB + + L Stammdaten // Stammdaten + L 3 // zu viele Stammdaten ? + >=I // Ja ! + JC Nw07 // ohne Indizierung weiter + + L IndDaten_FC // Offset zum Abziehen + T Wandel_FC + L 0 // Parameter vorhanden ? + <=I // Nein + JC NoFC // Bei diesem Schritt weiter + + L Daten_1 // Stammdaten (1.DW) + T "MW90" // übergeben + L Daten_2 // Stammdaten (2.DW) + T "MD94" // übergeben + + UC DB[Wandel_FC] // Beeinflussung der Weiterfahrt + + L "MW92" // Rückwert von FC + + JU Ret + +NoFC: L Daten_1 // Stammdaten +Ret: T IndPointer // Stelle, wo Zeiger hinterlegt ist + L 0 + I // Suchzeiger nicht im Raster ! + JC W700 // Suche bei 1.Datensatz beginnen + + L 0 // Bei angegebener Stelle suchen + T Suchstelle // Such bei X-ten Datensatz + + JU W701 + +W700: L 1 // Suche bei 1.Datensatz beginnen + T Suchstelle // Such bei X-ten Datensatz + SET + R IndZeiger_ok // Indizier-Zeiger angegeben + L SSDW + + 20 // Offset für 1.Daten + T Suchzeiger // Suchzeiger + +W701: L Suchzeiger // Suchzeiger + L OffsetDaten_1 // Richtiger Offset der 1.Stammdaten + +I + ITD + SLD 3 + T AR1Zeiger // /Statt AR1 (ging nur bis DB-Länge <= 8191 Bytes) + + L SuchDaten_Pointer + LAR2 + + L Stammdaten // Anzahl der Stammdaten +L700: T Schleife + + L DBSuchDaten // Suchdaten-DB + L 0 // Angegeben ? + ==I // Nein + JC W702 + + OPN DB[DBSuchDaten] + +W702: L NoneW [AR2,] // Suchdaten überprüfen mit + OPN DB[DBDatenliste] + L DBW [AR1Zeiger] // Datenliste-Daten lesen + <>I // nicht identisch ! + JC W703 + + L AR1Zeiger + SRD 3 + L DINT#2 + +D + SLD 3 + T AR1Zeiger + + ADDAR2 P#2.0 + + L Schleife + LOOP L700 + + L 2#0000_0000_1000_0000 // Daten sind vorhanden + T tRE_VAL // Ok-Status + + JU Nw08 // Datensatz ist in Liste enthalten + +W703: L 0 // Suche bei 1.Datensatz begonnen + L Suchstelle // Such bei X-ten Datensatz + ==I // Nein ! + JC W700 + + L Suchstelle // Such bei X-ten Datensatz + + 1 + T Suchstelle // Such bei X-ten Datensatz + L Listenlaenge // Anzahl aller Daten in Datenliste + <=I // Alle Datensätze sind durchsucht + JC W705 // Nein ! + + JU Err6 // Datensatz ist nicht vorhanden + +W705: L Datenblock_inBytes // Datenblocklänge in bytes + L Suchzeiger // Suchzeiger + +I + T Suchzeiger // Suchzeiger + JU W701 + + +--- NW 8: Out-DATEN-Pointer übernehmen: --- +Nw08: L P# + LAR2 + + L NoneW [AR2,] + T DBOutDaten // Outdaten-DB + L NoneD [AR2,] // Kennung, Adresse + T OutDaten_Pointer + + L DBOutDaten // Outdaten-DB + L 0 // Angegeben ? + ==I // Nein + JC Nw09 + +CALL FC "TEST_DB_TO_ATTR_DB" (DB_Number:=DBOutDaten, RetVal:=SFC_RET_VAL, DB_Length:=SFC_DB_LENGTH, Write_Prot:=SFC_WRITE_PROT) + +CALL FC "BCD (4stellig)_to_INT" (BCD_Wert:=SFC_DB_LENGTH, Int_Wert:="DB_Länge") + + L SFC_RET_VAL + L 2#0000_0000_0000_0000 // Fehler vorhanden ? + <>I // Ja ! + JC Err5 // Undefinierte Outdaten + + L NoneD [AR2,] // Kennung, Adresse + L 16#00FF_FFFF // Ohne Kennung + AW + SRW 3 // Ohne Bit + T OutDaten_Startpunkt + + L OutDaten_Startpunkt + L "DB_Länge" + >I // Outdaten-DB ist zu kurz + JC Err5 // Undefinierte Outdaten + + +--- NW 9: Quelle-Pointer erzeugen: --- +Nw09: L 16#1004 // Kennung 10 + Word=04 + T LW0 + T LW10 // Any-Kennung, Datentyp + L Datensatzlaenge // Datenwords speichern + T LW2 + T LW12 // Wiederholungen + +// DATEN-Pointer übernehmen: + L SSDB + T LW4 // DB_Nummer + L Suchzeiger // Adresse + SLD 3 + L 16#8400_0000 // Kennung: Daten + OD + T LD6 // Kennung, Adresse + +// Ziel-Pointer erzeugen: +// Kennung + Datenbytes s.o. + + L DBOutDaten + T LW14 // DB_Nummer + L OutDaten_Pointer + T LD16 // Kennung, Adresse + +CALL SYS "BLKMOV" (SRCBLK:=Quelle, RET_VAL:=SFC_RET_VAL, DSTBLK:=Ziel) // Datenliste-Daten speichern + + L SFC_RET_VAL + L 2#0000_0000_0000_0000 + <>I + JC Err1 + + A SFC_WRITE_PROT // Datenliste kann nicht beschrieben werden + JC Nw10 + + L SSDW + + 12 // Offset letzter Zugriff + ITD + SLD 3 // Pointer erzeugen + T AR1Zeiger // /Statt AR1 (ging nur bis DB-Länge <= 8191 Bytes) + + L Suchzeiger // Suchzeiger + OPN DB[DBDatenliste] + T DBW [AR1Zeiger] // Speicherung letzter Zugriff + + L Suchstelle // Such bei X-ten Datensatz + T Position // Übergabe nach außen + + +--- NW 10: Daten aus Datenliste löschen ? (nicht indiziert!) --- +Nw10: L 16#E1 // Daten löschen ? + L Para1 // 1.Aufrufparameter + <>I // Nein ! + O SFC_WRITE_PROT // Datenliste kann nicht beschrieben werden + JC Nw11 + + A Indok // Indizierung möglich + JC X010 // Bei ind.Zugriff nur löschen, nicht verschieben, keine Anzahl! + +// Gemeinsame Daten für Pointer erzeugen: + L 16#1004 // Kennung 10 + Word=04 + T LW0 + T LW10 // Any-Kennung, Datentyp + + L Suchzeiger // Stelle, wo gelöscht werden soll + + -20 + L SSDW + -I + L Datenblock_inBytes // Datenblocklänge in bytes + /I + + 1 // Stelle, die gelöscht werden soll + T LoeschPos // Lösch-Position + L Listenlaenge // Länge der Datenliste (Letzter Eintrag zum Löschen ?) + ==I // Ja ! + JC Last // Ohne Verschieben letzten Eintrag löschen + + L LoeschPos // Lösch-Position + L Datensatzlaenge // Datenblocklänge + *I // Gesamtdatenlänge in Words + T NichtCopy // Datenmenge, die nicht vorschoben wird + + L Listenlaenge // Länge der Datenliste + L Datensatzlaenge // Datenblocklänge + *I // Gesamtdatenlänge in Words + L NichtCopy // Datenmenge, die nicht vorschoben wird + -I // abziehen + T LW2 + T LW12 // Wiederholungen + + L SSDB + T LW4 + T LW14 // DB_Nummer + +// Quelle-Pointer erzeugen: + L Suchzeiger // Stelle, wo gelöscht werden soll + L Datenblock_inBytes // Datenblocklänge in Bytes + +I + SLD 3 + L 16#8400_0000 // Kennung: Daten + OD + T LD6 // Kennung, Adresse + +// Ziel-Pointer erzeugen: + L Suchzeiger // Stelle, wo gelöscht werden soll + SLD 3 + L 16#8400_0000 // Kennung: Daten + OD + T LD16 // Kennung, Adresse + +// Daten verschieben: +CALL SYS "BLKMOV" (SRCBLK:=Quelle, RET_VAL:=SFC_RET_VAL, DSTBLK:=Ziel) // DatenSortliste-Daten verschieben + + L SFC_RET_VAL + L 2#0000_0000_0000_0000 + <>I + JC Err1 + +// Letzte Daten löschen: +Last: L Datenlisten_Ende // Ende des Datenbereichs + L Datenblock_inBytes // Datenblocklänge in Bytes + -I // Ab hier löschen ! + ITD + SLD 3 + T AR1Zeiger // /Statt AR1 (ging nur bis DB-Länge <= 8191 Bytes) + + L Datensatzlaenge // Datensatzlänge +L080: T Schleife + + OPN DB[DBDatenliste] + + L 0 // Daten löschen + T DBW [AR1Zeiger] + + L AR1Zeiger + SRD 3 + L 2 // nächstes DW + +D + SLD 3 + T AR1Zeiger + + L Schleife + LOOP L080 + +// Speicherung letzter Zugriff: + L SSDW + + 12 // Offset letzter Zugriff + ITD + SLD 3 + T AR1Zeiger // /Statt AR1 (ging nur bis DB-Länge <= 8191 Bytes) + + OPN DB[DBDatenliste] + L 0 // löschen + T DBW [AR1Zeiger] // Speicherung letzter Zugriff + T Suchzeiger // Suchzeiger + + SET + R IndZeiger_ok // Indizier-Zeiger angegeben + +// Anzahl Einträge: + L SSDW + + 16 // Offset Anzahl Einträge + ITD + SLD 3 + T AR1Zeiger // /Statt AR1 (ging nur bis DB-Länge <= 8191 Bytes) + + OPN DB[DBDatenliste] + L DBW [AR1Zeiger] // Anzahl der Einträge + + -1 // -1 + T DBW [AR1Zeiger] // Anzahl der Einträge + + L 0 + >=I + JC w080 + + T DBW [AR1Zeiger] // Minimum übergeben + +w080: JU Nw11 + + +--- NW 11: Daten aus Datenliste löschen ? (indiziert) --- +X010: L 16#E1 // Daten löschen ? + L Para1 // 1.Aufrufparameter + <>I // Nein ! + JC Nw11 + + L Suchzeiger // Suchzeiger + ITD + SLD 3 + T AR1Zeiger // /Statt AR1 (ging nur bis DB-Länge <= 8191 Bytes) + + OPN DB[DBDatenliste] + + L Datensatzlaenge +LA00: T Schleife + + L 0 + T DBW [AR1Zeiger] + + L AR1Zeiger + SRD 3 + L DINT#2 + +D + SLD 3 + T AR1Zeiger + + L Schleife + LOOP LA00 + + L SSDW + + 12 + ITD + SLD 3 + T AR1Zeiger // /Statt AR1 (ging nur bis DB-Länge <= 8191 Bytes) + + L 0 // Löschen + T Suchzeiger // Suchzeiger + T DBW [AR1Zeiger] + + SET + R IndZeiger_ok // Indizier-Zeiger angegeben + + +--- NW 12: Weitersuchen aktiv ? Datensatz vorhanden oder 0 ? --- +Nw11: AN Weitersuchen + JC Nw12 + + L OutDaten_Pointer + LAR2 + + L Datensatzlaenge +L110: T Schleife + + L DBOutDaten // Outdaten-DB + L 0 // Angegeben ? + ==I // Nein + JC W111 + + OPN DB[DBOutDaten] + +W111: L NoneW [AR2,] // Outdaten überprüfen + L 0 // Etwas angegeben ? + <>I // Ja ! + JC W112 // Ok + + ADDAR2 P#2.0 + + L Schleife + LOOP L110 + + L 2#0000_0000_0100_0000 // Daten sind nicht vorhanden + T tRE_VAL // Ok-Status + JU Ende + +W112: L 2#0000_0000_1000_0000 // Daten sind vorhanden + T tRE_VAL // Ok-Status + JU Ende + + +--- NW 13: Indizierung ok ? --- +Nw12: AN Indok // Indizierung möglich + O IndZeiger_ok // Indizier-Zeiger angegeben + JC Ende + + OPN DB[IndDB] // Indizierter DB + + L Suchzeiger // Suchzeiger + T DBW [IndPointer] + + OPN DB[DBDatenliste] // Datenliste DB + + +--- NW 14: Fehlerausgabe / RET_VAL --- +Ende: SET // VKE = 1 ohne Fehler !!! + L tRE_VAL // Ok-Status + JU Ok +Err0: L 2#0000_0000_0000_0001 // Kein Datenlistebereich + JU Err +Err1: L 2#0000_0000_0000_0010 // SFC20-Aufruf mit Fehler + JU Err +Err2: L 2#0000_0000_0000_0100 // Listenende ist erreicht + JU Err +Err3: L 2#0000_0000_0000_1000 // Falscher Parameter bei Aufruf + JU Err +Err4: L 2#0000_0000_0001_0000 // Undefinierte Suchdaten + JU Err +Err5: L 2#0000_0000_0010_0000 // Undefinierte OUTDaten + JU Err +Err6: L 2#0000_0000_0100_0000 // Datensatz nicht vorhanden + +Err: CLR // VKE = 0 bei Fehler !!! + +Ok: T tRE_VAL + SAVE // VKE in BIE-Bit speichern + + L AR2_Speicher // AR2 zurückspeichern + LAR2 + + +--- NW 15: Ende --- + L tRE_VAL + T RE_VAL diff --git a/=A01+UH06-KF00/Programmbausteine/Module/DatenOutSort.awl b/=A01+UH06-KF00/Programmbausteine/Module/DatenOutSort.awl new file mode 100644 index 0000000..76d164d --- /dev/null +++ b/=A01+UH06-KF00/Programmbausteine/Module/DatenOutSort.awl @@ -0,0 +1,532 @@ +=== FC 89: DatenOutSort [STL] === +INTERFACE: + Input: + SSDB : Int // Datenlisten-DB + SSDW : Int // Datenlisten-1.DW + PARA : Word // Aufrufparameter (Auftrag , Offset/Anzahl Daten) + Output: + OUTDATEN : Pointer // OutDaten-Schnittstelle + RE_VAL : Byte // Rückmeldung + InOut: + Temp: + Quelle : Any // Zeiger, wo Rein-Daten sind + Ziel : Any // Zeiger, FIFO-Stelle + Kopf : Byte // Datenliste-Kennnung (DA) + Datensatzlaenge : Byte // Datensatzlänge in Word (01 - F0) F0=128 + Listenlaenge : Int // Länge der Datenliste (maximale Anzahl der Datensätze) + Stammdaten : Int // Stammdatenlänge in Word (1 - 9) + Belegt06 : Int // reserviert von Datenliste + Belegt08 : Int // reserviert von Datenliste + Belegt10 : Int // reserviert von Datenliste + Belegt12 : Int // reserviert von Datenliste + AnzahlEintraege : Int // Anzahl der eingetragenen Datensätze + Reserve16 : Int // Reserve + Reserve18 : Int // Reserve + Para1 : Byte // 1.Aufrufparameter + Para2 : Byte // 2.Aufrufparameter + SFC_RET_VAL : Int // Rückmeldung SFC-Aufruf + SFC_DB_LENGTH : Word // Rückmeldung SFC-Aufruf + LeseStelle : Int // Stelle, wo gelesen werden soll + EraseStelle : Int // Stelle, wo gelöscht werden soll + FirstStelle : Int // Stelle, wo 1. zu bleibende Daten sind + DBDatenliste : Word // Datenlisten-DB + Datenlisten_Ende : Word // Ende der Datenliste + AR2_Speicher : DWord // Adress-Register 2 zwischenspeichern + DBOutDaten : Word // Out-Daten-DB, falls angegeben + OutDaten_Pointer : DWord // Out-Daten-Pointer: Kennung, Adresse + OutDaten_Startpunkt : Word // Out-Daten-Startpunkt: Adresse + Datenblock_inBytes : Word // Datenblocklänge in Bytes + Suchstelle : Word // Bei angegebenen Datensatz suchen + SFC_WRITE_PROT : Bool // Rückmeldung SFC-Aufruf + NichtCopy : Int // Datenmenge, die nicht vorschoben wird + Schleife : Word // Loopzähler + AR1Zeiger : DWord // Statt AR1 (ging nur bis DB-Länge <= 8191 Bytes) + Constant: + Return: + Ret_Val : Void + +--- NW 1: Schnittstellen-DB sinnvoll ? --- + TAR2 + T AR2_Speicher // AR2 zwischenspeichern + + L SSDB + T DBDatenliste + +// CALL TEST_DB +// DB_NUMBER :=#DBDatenliste +// RET_VAL :=#SFC_RET_VAL +// DB_LENGTH :=#SFC_DB_LENGTH +// WRITE_PROT :=#SFC_WRITE_PROT + +CALL FC "TEST_DB_TO_ATTR_DB" (DB_Number:=DBDatenliste, RetVal:=SFC_RET_VAL, DB_Length:=SFC_DB_LENGTH, Write_Prot:=SFC_WRITE_PROT) + + L SFC_RET_VAL + L 2#0000_0000_0000_0000 + <>I + O SFC_WRITE_PROT // schreibgeschützt + JC Err0 // kein Datenlisten-Bereich + + +--- NW 2: Quelle-Pointer erzeugen: --- + L 16#1004 // Kennung 10 + Word=04 + T LW0 // Any-Kennung, Datentyp + L 16#000A // 10 Dw´s holen + T LW2 // Wiederholungen + L SSDB + T LW4 // DB_Nummer + L SSDW // Adresse + SLD 3 + L 16#8400_0000 // Kennung: Daten + OD + T LD6 // Kennung, Adresse + +CALL SYS "BLKMOV" (SRCBLK:=Quelle, RET_VAL:=SFC_RET_VAL, DSTBLK:=P#L20.0 WORD 10) // 1.-10.DW Datenliste holen + + L SFC_RET_VAL + L 2#0000_0000_0000_0000 + <>I + JC Err1 + + +--- NW 3: Zeigerüberprüfung --- + L Kopf // Datenliste-Kopf + L 16#DB // = Datenlistekennung ? + <>I // Nein ! + JC Err0 // kein Datenlistebereich + + L 1 + L Datensatzlaenge // Datenblocklänge + >I + JC Err0 // kein Datenlistebereich + + L 128 + >I + JC Err0 // kein Datenlistebereich + + L 1 + L Listenlaenge // Max.Anzahl von Datenblöcken + >I + JC Err0 // kein Datenlistebereich + + L 1 + L Stammdaten // Anzahl der Stammdaten + >I + JC Err0 // kein Datenlistebereich + + L 9 + >I + JC Err0 // kein Datenlistebereich + + L Stammdaten // Anzahl der Stammdaten + L Datensatzlaenge // Datenblocklänge + >I + JC Err0 // kein Datenlistebereich + + L Listenlaenge // Länge der Datenliste + L Datensatzlaenge // Datenblocklänge + *I + L 2 // DB byteorientiert + *I + + 20 // Speichern ab 10.DW + L SSDW + +I + T Datenlisten_Ende + ITD + SLD 3 + T AR1Zeiger // /Statt AR1 (ging nur bis DB-Länge <= 8191 Bytes) + + OPN DB[DBDatenliste] + + L Datenlisten_Ende + L SFC_DB_LENGTH + >I // Datenlisten-DB ist zu kurz! + JC Err0 // kein Datenlisten-Bereich + + L DBW [AR1Zeiger] + L 16#DBEE // Datenliste-Endekennung ? + <>I // Nein ! + JC Err0 // kein Datenlisten-Bereich + + L Datensatzlaenge // Datenblocklänge + L 2 + *I + T Datenblock_inBytes // Datenblocklänge in Bytes + + +--- NW 4: Auftrag kontrollieren --- + L PARA + T LW40 // Aufrufparameter zwischenspeichern + + L Para2 + L 16#00 + <=I + JC Err3 // Falscher Aufrufparameter + + CAC + L Listenlaenge // Länge der Datenliste (maximale Anzahl der Datensätze) + >I + JC Err3 // Falscher Aufrufparameter + + L 16#0A // XX = 0A ? (Datensatz YY lesen) + L Para1 + <>I // Nein ! + JC W400 + +// Eintrag lesen: + L Para2 // Datensatz YY + + -1 // 1.Datensatz ohne Offset + L Datenblock_inBytes // Datenblocklänge in bytes + *I + + 20 + L SSDW + +I + T LeseStelle // Stelle, wo gelesen werden soll + + JU Nw06 // OutDaten ok ? + +W400: L 16#0E // XX = 0E ? (Datensatz YY löschen) + <>I // Nein ! + JC W401 + +// Datensatz löschen: + L AnzahlEintraege + L 0 + ==I + JC Err2 // Liste ist leer + + L Para2 // Datensatz YY + L AnzahlEintraege // zu löschender Datensatz ist grösser als Einträge ? + >I // Ja ! + JC Ende // Keine Aktion + + L Para2 // Datensatz YY + + -1 // 1.Datensatz ohne Offset + L Datenblock_inBytes // Datenblocklänge in bytes + *I + + 20 + L SSDW + +I + T EraseStelle // Stelle, wo gelöscht werden soll + + JU Nw08 // Daten löschen + +W401: L 16#0D // XX = 0D ? (Datensätze YY löschen, ab 1.DS) + L Para1 + <>I // Nein ! + JC W402 + +// Datenblock löschen: + L AnzahlEintraege + L 0 + ==I + JC Err2 // Liste ist leer + + L Para2 // Anzahl Datensätze YY + L Datenblock_inBytes // Datenblocklänge in bytes + *I + + 20 + L SSDW + +I + T FirstStelle // Stelle, wo 1. zu bleibende Daten sind + + JU Nw09 + + BEU + +W402: JU Err3 // Falscher Aufrufparameter + + +--- NW 5: Outdaten ok ? --- + +// Out-DATEN-Pointer übernehmen: +Nw06: L P# + LAR2 + + L NoneW [AR2,] + T DBOutDaten // Outdaten-DB + L NoneD [AR2,] // Kennung, Adresse + T OutDaten_Pointer + + L DBOutDaten // Outdaten-DB + L 0 // Angegeben ? + ==I // Nein + JC Nw07 + +// CALL TEST_DB +// DB_NUMBER :=#DBOutDaten +// RET_VAL :=#SFC_RET_VAL +// DB_LENGTH :=#SFC_DB_LENGTH +// WRITE_PROT :=#SFC_WRITE_PROT + +CALL FC "TEST_DB_TO_ATTR_DB" (DB_Number:=DBOutDaten, RetVal:=SFC_RET_VAL, DB_Length:=SFC_DB_LENGTH, Write_Prot:=SFC_WRITE_PROT) + + + L SFC_RET_VAL + L 2#0000_0000_0000_0000 // Fehler vorhanden ? + <>I // Ja ! + JC Err5 // Undefinierte Outdaten + + L NoneD [AR2,] // Kennung, Adresse + L 16#00FF_FFFF // Ohne Kennung + AW + SRW 3 // Ohne Bit + T OutDaten_Startpunkt + + L OutDaten_Startpunkt + L SFC_DB_LENGTH + >I // Outdaten-DB ist zu kurz + JC Err5 // Undefinierte Outdaten + + +--- NW 6: Daten aus Datenliste lesen (in OUTDaten übergeben) --- +// Quelle-Pointer erzeugen: +Nw07: L 16#1004 // Kennung 10 + Word=04 + T LW0 + T LW10 // Any-Kennung, Datentyp + L Datensatzlaenge // Datenwords speichern + T LW2 + T LW12 // Wiederholungen + +// DATEN-Pointer übernehmen: + L SSDB + T LW4 // DB_Nummer + L LeseStelle // Adresse + SLD 3 + L 16#8400_0000 // Kennung: Daten + OD + T LD6 // Kennung, Adresse + +// Ziel-Pointer erzeugen: +// Kennung + Datenbytes s.o. + + L DBOutDaten + T LW14 // DB_Nummer + L OutDaten_Pointer + T LD16 // Kennung, Adresse + +CALL SYS "BLKMOV" (SRCBLK:=Quelle, RET_VAL:=SFC_RET_VAL, DSTBLK:=Ziel) // DatenSortliste-Daten speichern + + L SFC_RET_VAL + L 2#0000_0000_0000_0000 + <>I + JC Err1 + + JU Ende + + +--- NW 7: Daten aus Datenliste löschen ? --- +// Gemeinsame Daten für Pointer erzeugen: +Nw08: L 16#1004 // Kennung 10 + Word=04 + T LW0 + T LW10 // Any-Kennung, Datentyp + + L Datensatzlaenge // Datensatzlänge + L Para2 // Datensatz YY + *I + T NichtCopy // Datenmenge, die nicht vorschoben wird + + L Listenlaenge // Länge der Datenliste + L Datensatzlaenge // Datenblocklänge + *I // Gesamtdatenlänge in Words + L NichtCopy // Datenmenge, die nicht vorschoben wird + -I // abziehen + T LW2 + T LW12 // Wiederholungen + + L SSDB + T LW4 + T LW14 // DB_Nummer + +// Quelle-Pointer erzeugen: + L EraseStelle // Stelle, wo gelöscht werden soll + L Datenblock_inBytes // Datenblocklänge in Bytes + +I + SLD 3 + L 16#8400_0000 // Kennung: Daten + OD + T LD6 // Kennung, Adresse + +// Ziel-Pointer erzeugen: + L EraseStelle // Stelle, wo gelöscht werden soll + SLD 3 + L 16#8400_0000 // Kennung: Daten + OD + T LD16 // Kennung, Adresse + +// Daten verschieben: +CALL SYS "BLKMOV" (SRCBLK:=Quelle, RET_VAL:=SFC_RET_VAL, DSTBLK:=Ziel) // DatenSortliste-Daten verschieben + + L SFC_RET_VAL + L 2#0000_0000_0000_0000 + <>I + JC Err1 + +// Letzte Daten löschen: + L Datenlisten_Ende // Ende des Datenbereichs + L Datenblock_inBytes // Datenblocklänge in Bytes + -I // Ab hier löschen ! + ITD + SLD 3 + T AR1Zeiger // /Statt AR1 (ging nur bis DB-Länge <= 8191 Bytes) + + L Datensatzlaenge // Datensatzlänge +L080: T Schleife + + OPN DB[DBDatenliste] + + L 0 // Daten löschen + T DBW [AR1Zeiger] + + L AR1Zeiger + SRD 3 + L 2 + +D + SLD 3 + T AR1Zeiger + + L Schleife + LOOP L080 + + L AnzahlEintraege // Anzahl der eingetragenen Datensätze + + -1 + T AnzahlEintraege + + L 0 + >=I + JC w080 + + T AnzahlEintraege // Minimum übergeben + +w080: L SSDW + + 14 // Anzahl der Einträge + ITD + SLD 3 + T AR1Zeiger // /Statt AR1 (ging nur bis DB-Länge <= 8191 Bytes) + + OPN DB[DBDatenliste] + L AnzahlEintraege // Anzahl der eingetragenen Datensätze + T DBW [AR1Zeiger] // Anzahl der Einträge + + JU Ende + + +--- NW 8: Datensätze aus Datenliste löschen ? --- +// Gemeinsame Daten für Pointer erzeugen: +Nw09: L 16#1004 // Kennung 10 + Word=04 + T LW0 + T LW10 // Any-Kennung, Datentyp + + L Datensatzlaenge // Datensatzlänge + L Para2 // Anzahl Datensätze YY + *I + T NichtCopy // Datenmenge, die nicht vorschoben wird + + L Listenlaenge // Länge der Datenliste + L Datensatzlaenge // Datenblocklänge + *I // Gesamtdatenlänge in Words + L NichtCopy // Datenmenge, die nicht vorschoben wird + -I // abziehen + T LW2 + T LW12 // Wiederholungen + + L SSDB + T LW4 + T LW14 // DB_Nummer + +// Quelle-Pointer erzeugen: + L FirstStelle // Stelle, wo 1. zu bleibende Daten sind + SLD 3 + L 16#8400_0000 // Kennung: Daten + OD + T LD6 // Kennung, Adresse + +// Ziel-Pointer erzeugen: + L SSDW + + 20 // 1.DS + SLD 3 + L 16#8400_0000 // Kennung: Daten + OD + T LD16 // Kennung, Adresse + +// Daten verschieben: +CALL SYS "BLKMOV" (SRCBLK:=Quelle, RET_VAL:=SFC_RET_VAL, DSTBLK:=Ziel) // DatenSortliste-Daten verschieben + + L SFC_RET_VAL + L 2#0000_0000_0000_0000 + <>I + JC Err1 + +// Letzte Daten löschen: + L Datenlisten_Ende // Ende des Datenbereichs + L NichtCopy // Datenmenge, die nicht vorschoben wird + -I + L NichtCopy // 2 mal, da Angabe in Word (Angabe in Byte benötigt!) + -I // Ab hier löschen ! + ITD + SLD 3 + T AR1Zeiger // /Statt AR1 (ging nur bis DB-Länge <= 8191 Bytes) + + L NichtCopy // Datenmenge, die nicht vorschoben wird +L090: T Schleife + + OPN DB[DBDatenliste] + + L 0 // Daten löschen + T DBW [AR1Zeiger] + + L AR1Zeiger + SRD 3 + L 2 + +D + SLD 3 + T AR1Zeiger + + L Schleife + LOOP L090 + + L AnzahlEintraege // Anzahl der eingetragenen Datensätze + L Para2 // Anzahl Datensätze YY + -I + T AnzahlEintraege + + L 0 + >=I + JC w090 + + T AnzahlEintraege // Minimum übergeben + +w090: L SSDW + + 14 // Anzahl der Einträge + ITD + SLD 3 + T AR1Zeiger // /Statt AR1 (ging nur bis DB-Länge <= 8191 Bytes) + + OPN DB[DBDatenliste] + L AnzahlEintraege // Anzahl der eingetragenen Datensätze + T DBW [AR1Zeiger] // Anzahl der Einträge + + JU Ende + + +--- NW 9: Fehlerausgabe / RET_VAL --- +Ende: SET // VKE = 1 ohne Fehler !!! + L 2#0000_0000_0000_0000 // Ok-Status + JU Ok +Err0: L 2#0000_0000_0000_0001 // Kein Datenlistebereich + JU Err +Err1: L 2#0000_0000_0000_0010 // SFC20-Aufruf mit Fehler + JU Err +Err2: L 2#0000_0000_0000_0100 // Sortliste ist leer + JU Err +Err3: L 2#0000_0000_0000_1000 // Falscher Parameter bei Aufruf + JU Err +Err5: L 2#0000_0000_0010_0000 // Undefinierte OUTDaten + +Err: CLR // VKE = 0 bei Fehler !!! + +Ok: T RE_VAL + SAVE // VKE in BIE-Bit speichern + + L AR2_Speicher // AR2 zurückspeichern + LAR2 + diff --git a/=A01+UH06-KF00/Programmbausteine/Module/DatenReset.awl b/=A01+UH06-KF00/Programmbausteine/Module/DatenReset.awl new file mode 100644 index 0000000..9f935f4 --- /dev/null +++ b/=A01+UH06-KF00/Programmbausteine/Module/DatenReset.awl @@ -0,0 +1,234 @@ +=== FC 87: DatenReset [STL] === +INTERFACE: + Input: + SSDB : Int // Datenlisten-DB + SSDW : Int // Datenlisten-1.DW + Output: + RE_VAL : Byte // Rückmeldung + InOut: + Temp: + Quelle : Any // Zeiger, wo Rein-Daten sind + Ziel : Any // Zeiger, FIFO-Stelle + Kopf : Byte // Datenliste-Kennnung (DA) + Datensatzlaenge : Byte // Datensatzlänge in Word (01 - F0) F0=128 + Listenlaenge : Int // Länge der Datenliste (maximale Anzahl der Datensätze) + Stammdaten : Int // Stammdatenlänge in Word (1 - 9) + IndDB : Word // Indizierter DB (nur bei Stammdaten = 1 erlaubt !!!) + IndDB_Laenge : Int // Länge des indizierten DB in Einträge (nur bei Stammdaten = 1 erlaubt !!!) + IndDaten_FC : Int // FC zum Wandeln der indizierte Daten (nur bei Stammdaten = 1 erlaubt !!!) + Suchzeiger : Int // Speicherung des letzten Zugriffs / Suchzeiger + Belegt14 : Int // reserviert von Sort-Datenliste + Reserve16 : Int // Reserve + Reserve18 : Int // Reserve + DBDatenliste : Word // Datenlisten-DB + SFC_RET_VAL : Int // Rückmeldung SFC-Aufruf + SFC_DB_LENGTH : Word // Rückmeldung SFC-Aufruf + Datenlisten_Ende : Word // Ende der Datenliste + Schleife : Word // Loopzähler + SFC_WRITE_PROT : Bool // Rückmeldung SFC-Aufruf + AR1Zeiger : DWord // Statt AR1 (ging nur bis DB-Länge <= 8191 Bytes) + DB_Länge : Int + Constant: + Return: + Ret_Val : Void + +--- NW 1: Schnittstellen-DB sinnvoll ? --- + L SSDB + T DBDatenliste + +CALL FC "TEST_DB_TO_ATTR_DB" (DB_Number:=DBDatenliste, RetVal:=SFC_RET_VAL, DB_Length:=SFC_DB_LENGTH, Write_Prot:=SFC_WRITE_PROT) + +CALL FC "BCD (4stellig)_to_INT" (BCD_Wert:=SFC_DB_LENGTH, Int_Wert:="DB_Länge") + + L SFC_RET_VAL + L 2#0000_0000_0000_0000 + <>I + O SFC_WRITE_PROT + JC Err0 // kein Datenlisten-Bereich + + +--- NW 2: Quelle-Pointer erzeugen: --- + L 16#1004 // Kennung 10 + Word=04 + T LW0 // Any-Kennung, Datentyp + L 16#000A // 10 Dw´s holen + T LW2 // Wiederholungen + L SSDB + T LW4 // DB_Nummer + L SSDW // Adresse + SLD 3 + L 16#8400_0000 // Kennung: Daten + OD + T LD6 // Kennung, Adresse + +CALL SYS "BLKMOV" (SRCBLK:=Quelle, RET_VAL:=SFC_RET_VAL, DSTBLK:=P#L20.0 WORD 10) // 1.-10.DW Datenliste holen + + L SFC_RET_VAL + L 2#0000_0000_0000_0000 + <>I + JC Err1 + + +--- NW 3: Zeigerüberprüfung --- + L Kopf // Datenliste-Kopf + L 16#DA // = Datenlistekennung ? + <>I // Nein ! + JC Err0 // kein Datenlistebereich + + L 1 + L Datensatzlaenge // Datenblocklänge + >I + JC Err0 // kein Datenlistebereich + + L 128 + >I + JC Err0 // kein Datenlistebereich + + L 1 + L Listenlaenge // Max.Anzahl von Datenblöcken + >I + JC Err0 // kein Datenlistebereich + + L 1 + L Stammdaten // Anzahl der Stammdaten + >I + JC Err0 // kein Datenlistebereich + + L 9 + >I + JC Err0 // kein Datenlistebereich + + L Stammdaten // Anzahl der Stammdaten + L Datensatzlaenge // Datenblocklänge + >I + JC Err0 // kein Datenlistebereich + + L Listenlaenge // Länge der Datenliste + L Datensatzlaenge // Datenblocklänge + *I + L 2 // DB byteorientiert + *I + + 20 // Speichern ab 10.DW + L SSDW + +I + T Datenlisten_Ende + ITD + SLD 3 + T AR1Zeiger // /Statt AR1 (ging nur bis DB-Länge <= 8191 Bytes) + + OPN DB[DBDatenliste] + + L Datenlisten_Ende + L "DB_Länge" + >I // Datenlisten-DB ist zu kurz! + JC Err0 // kein Datenlisten-Bereich + + L DBW [AR1Zeiger] + L 16#DAEE // Datenliste-Endekennung ? + <>I // Nein ! + JC Err0 // kein Datenlisten-Bereich + + +--- NW 4: Indizierung löschen ? --- + L IndDB // Indizierter DB + L 0 // =0 ? + ==I // Kein indizierter DB ! + JC Nw05 + +CALL FC "TEST_DB_TO_ATTR_DB" (DB_Number:=IndDB, RetVal:=SFC_RET_VAL, DB_Length:=SFC_DB_LENGTH, Write_Prot:=SFC_WRITE_PROT) + +CALL FC "BCD (4stellig)_to_INT" (BCD_Wert:=SFC_DB_LENGTH, Int_Wert:="DB_Länge") + + L SFC_RET_VAL + L 2#0000_0000_0000_0000 + <>I + O SFC_WRITE_PROT + JC Nw05 // kein Indizier-DB vorhanden + + L 0 + ITD + SLD 3 + T AR1Zeiger // /Statt AR1 (ging nur bis DB-Länge <= 8191 Bytes) + + OPN DB[IndDB] + + L "DB_Länge" // In Bytes angegeben +L400: T Schleife + + L 0 + T DBB [AR1Zeiger] // Inhalte löschen + + L AR1Zeiger + SRD 3 + L DINT#1 + +D + SLD 3 + T AR1Zeiger + + L Schleife + LOOP L400 + + + +--- NW 5: Datenliste löschen --- +Nw05: L SSDW + + 12 // 12.Dw + ITD + SLD 3 + T AR1Zeiger // /Statt AR1 (ging nur bis DB-Länge <= 8191 Bytes) + + OPN DB[DBDatenliste] + + L 0 + T DBW [AR1Zeiger] // Letzte Speicherung löschen + + L SSDW + + 16 // 16.Dw + ITD + SLD 3 + T AR1Zeiger // /Statt AR1 (ging nur bis DB-Länge <= 8191 Bytes) + + OPN DB[DBDatenliste] + + L 0 + T DBW [AR1Zeiger] // Anzahl Einträge löschen + + L SSDW + + 20 // Daten ab 20.Dw + ITD + SLD 3 + T AR1Zeiger // /Statt AR1 (ging nur bis DB-Länge <= 8191 Bytes) + + L Datensatzlaenge + L Listenlaenge + *I +L500: T Schleife + + OPN DB[DBDatenliste] + + L 0 + T DBW [AR1Zeiger] // Inhalte löschen + + L AR1Zeiger + SRD 3 + L DINT#2 + +D + SLD 3 + T AR1Zeiger + + L Schleife + LOOP L500 + + + +--- NW 6: Fehlerausgabe / RET_VAL --- + SET // VKE = 1 ohne Fehler !!! + JU Ok +Err0: L 2#0000_0000_0000_0001 // Kein Fifobereich + JU Err +Err1: L 2#0000_0000_0000_0010 // SFC20-Aufruf mit Fehler + +Err: CLR // VKE = 0 bei Fehler !!! +Ok: T RE_VAL + + SAVE // VKE in BIE-Bit speichern + diff --git a/=A01+UH06-KF00/Programmbausteine/Module/DatenResetSort.awl b/=A01+UH06-KF00/Programmbausteine/Module/DatenResetSort.awl new file mode 100644 index 0000000..d894185 --- /dev/null +++ b/=A01+UH06-KF00/Programmbausteine/Module/DatenResetSort.awl @@ -0,0 +1,183 @@ +=== FC 90: DatenResetSort [STL] === +INTERFACE: + Input: + SSDB : Int // Datenlisten-DB + SSDW : Int // Datenlisten-1.DW + Output: + RE_VAL : Byte // Rückmeldung + InOut: + Temp: + Quelle : Any // Zeiger, wo Rein-Daten sind + Ziel : Any // Zeiger, FIFO-Stelle + Kopf : Byte // Datenliste-Kennnung (DA) + Datensatzlaenge : Byte // Datensatzlänge in Word (01 - F0) F0=128 + Listenlaenge : Int // Länge der Datenliste (maximale Anzahl der Datensätze) + Stammdaten : Int // Stammdatenlänge in Word (1 - 9) + Belegt06 : Int // reserviert von Datenliste + Belegt08 : Int // reserviert von Datenliste + Belegt10 : Int // reserviert von Datenliste + Belegt12 : Int // reserviert von Datenliste + AnzahlEintraege : Int // Anzahl der eingetragenen Datensätze + Reserve16 : Int // Reserve + Reserve18 : Int // Reserve + Suchzeiger : Int // Speicherung des letzten Zugriffs / Suchzeiger + DBDatenliste : Word // Datenlisten-DB + SFC_RET_VAL : Int // Rückmeldung SFC-Aufruf + SFC_DB_LENGTH : Word // Rückmeldung SFC-Aufruf + Datenlisten_Ende : Word // Ende der Datenliste + Schleife : Word // Loopzähler + SFC_WRITE_PROT : Bool // Rückmeldung SFC-Aufruf + AR1Zeiger : DWord // Statt AR1 (ging nur bis DB-Länge <= 8191 Bytes) + Constant: + Return: + Ret_Val : Void + +--- NW 1: Schnittstellen-DB sinnvoll ? --- + L SSDB + T DBDatenliste + +// CALL TEST_DB +// DB_NUMBER :=#DBDatenliste +// RET_VAL :=#SFC_RET_VAL +// DB_LENGTH :=#SFC_DB_LENGTH +// WRITE_PROT :=#SFC_WRITE_PROT + +CALL FC "TEST_DB_TO_ATTR_DB" (DB_Number:=DBDatenliste, RetVal:=SFC_RET_VAL, DB_Length:=SFC_DB_LENGTH, Write_Prot:=SFC_WRITE_PROT) + + L SFC_RET_VAL + L 2#0000_0000_0000_0000 + <>I + O SFC_WRITE_PROT + JC Err0 // kein Datenlisten-Bereich + + +--- NW 2: Quelle-Pointer erzeugen: --- + L 16#1004 // Kennung 10 + Word=04 + T LW0 // Any-Kennung, Datentyp + L 16#000A // 10 Dw´s holen + T LW2 // Wiederholungen + L SSDB + T LW4 // DB_Nummer + L SSDW // Adresse + SLD 3 + L 16#8400_0000 // Kennung: Daten + OD + T LD6 // Kennung, Adresse + +CALL SYS "BLKMOV" (SRCBLK:=Quelle, RET_VAL:=SFC_RET_VAL, DSTBLK:=P#L20.0 WORD 10) // 1.-10.DW Datenliste holen + + L SFC_RET_VAL + L 2#0000_0000_0000_0000 + <>I + JC Err1 + + +--- NW 3: Zeigerüberprüfung --- + L Kopf // Datenliste-Kopf + L 16#DB // = DatenSortlistekennung ? + <>I // Nein ! + JC Err0 // kein Datenlistebereich + + L 1 + L Datensatzlaenge // Datenblocklänge + >I + JC Err0 // kein Datenlistebereich + + L 128 + >I + JC Err0 // kein Datenlistebereich + + L 1 + L Listenlaenge // Max.Anzahl von Datenblöcken + >I + JC Err0 // kein Datenlistebereich + + L 1 + L Stammdaten // Anzahl der Stammdaten + >I + JC Err0 // kein Datenlistebereich + + L 9 + >I + JC Err0 // kein Datenlistebereich + + L Stammdaten // Anzahl der Stammdaten + L Datensatzlaenge // Datenblocklänge + >I + JC Err0 // kein Datenlistebereich + + L Listenlaenge // Länge der Datenliste + L Datensatzlaenge // Datenblocklänge + *I + L 2 // DB byteorientiert + *I + + 20 // Speichern ab 10.DW + L SSDW + +I + T Datenlisten_Ende + ITD + SLD 3 + T AR1Zeiger // /Statt AR1 (ging nur bis DB-Länge <= 8191 Bytes) + + OPN DB[DBDatenliste] + + L Datenlisten_Ende + L SFC_DB_LENGTH + >I // Datenlisten-DB ist zu kurz! + JC Err0 // kein Datenlisten-Bereich + + L DBW [AR1Zeiger] + L 16#DBEE // DatenSortliste-Endekennung ? + <>I // Nein ! + JC Err0 // kein Datenlisten-Bereich + + +--- NW 4: Datenliste löschen --- + L SSDW + + 14 // 14.Dw + ITD + SLD 3 + T AR1Zeiger // /Statt AR1 (ging nur bis DB-Länge <= 8191 Bytes) + + OPN DB[DBDatenliste] + + L 0 + T DBW [AR1Zeiger] // Anzahl Einträge löschen + + L SSDW + + 20 // 20.Dw + ITD + SLD 3 + T AR1Zeiger // /Statt AR1 (ging nur bis DB-Länge <= 8191 Bytes) + + L Datensatzlaenge + L Listenlaenge + *I +L500: T Schleife + + L 0 // Daten löschen + T DBW [AR1Zeiger] + + L AR1Zeiger + SRD 3 + L 2 + +D + SLD 3 + T AR1Zeiger + + L Schleife + LOOP L500 + + +--- NW 5: Fehlerausgabe / RET_VAL --- + SET // VKE = 1 ohne Fehler !!! + JU Ok +Err0: L 2#0000_0000_0000_0001 // Kein Fifobereich + JU Err +Err1: L 2#0000_0000_0000_0010 // SFC20-Aufruf mit Fehler + +Err: CLR // VKE = 0 bei Fehler !!! +Ok: T RE_VAL + + SAVE // VKE in BIE-Bit speichern + diff --git a/=A01+UH06-KF00/Programmbausteine/Module/Err_vorhanden.awl b/=A01+UH06-KF00/Programmbausteine/Module/Err_vorhanden.awl new file mode 100644 index 0000000..0414324 --- /dev/null +++ b/=A01+UH06-KF00/Programmbausteine/Module/Err_vorhanden.awl @@ -0,0 +1,65 @@ +=== FC 125: Err_vorhanden [STL] === +INTERFACE: + Input: + Check_DB : Int + Anfangs_DW : DInt + Ende_DW : DInt + Output: + Stoerung : Bool // Störung vorhanden + ErrDW : DInt + ErrBits : Int + InOut: + Temp: + Anzeige_DB : Int + Zeiger : DInt // Startwert mit Offset 0 + AR1Zeiger : DWord // Statt AR1 (ging nur bis DB-Länge <= 8191 Bytes) + Constant: + Return: + Ret_Val : Void + +--- NW 1: Check-DB von "Abfangs_DW" bis "Ende_DW" checken --- + SET // GST + R Stoerung + L DINT#-1 // Sonst Störung in DBD0 nicht erkennbar + T ErrDW + L 0 + T ErrBits + + L Check_DB + T Anzeige_DB + + L Anfangs_DW // Mit diesem DW beginnen + T Zeiger // Zeiger + +Loop: L Zeiger // Zeiger + SLD 3 + T AR1Zeiger // Statt Dyn.Bereichsstop (ging nur bis DB-Länge <= 8191 Bytes) + + OPN DB[Anzeige_DB] + + L DBW [AR1Zeiger] // Störungsbits + T ErrBits + L 0 // aktiv ? + <>I // Ja ! + JC Err + + L Zeiger // Startwert mit Offset 0 + L 2 + +D + T Zeiger // Zeiger + L Ende_DW // Letztes DW überschritten? + <=D // Nein ! + JC Loop + + BEU + +Err: SET + S Stoerung + + L Zeiger // Zeiger + T ErrDW + + +--- NW 2: Ende --- + BE + diff --git a/=A01+UH06-KF00/Programmbausteine/Module/FIFOChange.awl b/=A01+UH06-KF00/Programmbausteine/Module/FIFOChange.awl new file mode 100644 index 0000000..54cf02d --- /dev/null +++ b/=A01+UH06-KF00/Programmbausteine/Module/FIFOChange.awl @@ -0,0 +1,327 @@ +=== FC 84: FIFOChange [STL] === +INTERFACE: + Input: + SSDB : Int // Schnittstellen-DB + SSDW : Int // Schnittstellen-1.DW + CH_POS : Int // Position des Eintrags, der zu ändernden Daten + CHANGEDATEN : Pointer // Wechsel-Daten-Schnittstelle + Output: + RE_VAL : Byte // Rückmeldung + InOut: + Temp: + Quelle : Any // Zeiger, wo Rein-Daten sind + Ziel : Any // Zeiger, FIFO-Stelle + Kopf : Byte // Fifo-Kennung (FF) + Datensatzlaenge : Byte // Datensatzlänge in Word (1 - 128) + FifoLaenge : Int // Länge des Fifo (maximale Anzahl der Datensätze) + Bringzeiger : Int // Zeiger, wohin nächster Eintrag gespeichert wird + Holzeiger : Int // Zeiger, woher nächste Daten geholt werden + Anzahl : Int // Anzahl der Datensätze (eingetragene) + Status : Word // Status des Fifo + Err : Byte // Fehlerbits + MinHolzeiger : Int // Minimum Holzeiger + MaxHolzeiger : Int // Maximum Holzeiger + DBFifo : Word // FIFO-DB + SFC_RET_VAL : Int // Rückmeldung SFC-Aufruf + SFC_DB_LENGTH : Word // Rückmeldung SFC-Aufruf + Fifo_Ende : Word // Ende des Fifo + AlleDaten : Word // Anzahl der bytes für alle Daten + Offset : Word // Offset zu überschreibender Datensatz + NixSave : Bool // Status nicht speichern + SFC_WRITE_PROT : Bool // Rückmeldung SFC-Aufruf + AR1Zeiger : DWord // Statt AR1 (ging nur bis DB-Länge <= 8191 Bytes) + AR1Start : DInt // Startwert mit Offset 0 + Constant: + Return: + Ret_Val : Void + +--- NW 1: Schnittstellen-DB sinnvoll ? --- + L SSDB + T DBFifo + +// CALL TEST_DB +// DB_NUMBER :=#DBFifo +// RET_VAL :=#SFC_RET_VAL +// DB_LENGTH :=#SFC_DB_LENGTH +// WRITE_PROT :=#SFC_WRITE_PROT + +CALL FC "TEST_DB_TO_ATTR_DB" (DB_Number:=DBFifo, RetVal:=SFC_RET_VAL, DB_Length:=SFC_DB_LENGTH, Write_Prot:=SFC_WRITE_PROT) + + + L SFC_RET_VAL + L 2#0000_0000_0000_0000 + <>I + O SFC_WRITE_PROT + = NixSave // Status nicht speichern + JC Err0 // kein Fifobereich + + +--- NW 2: Quelle-Pointer erzeugen: --- + L 16#1004 // Kennung 10 + Word=04 + T LW0 // Any-Kennung, Datentyp + L 16#0006 // 6 Dw´s holen + T LW2 // Wiederholungen + L SSDB + T LW4 // DB_Nummer + L SSDW // Adresse + SLD 3 + L 16#8400_0000 // Kennung: Daten + OD + T LD6 // Kennung, Adresse + +CALL SYS "BLKMOV" (SRCBLK:=Quelle, RET_VAL:=SFC_RET_VAL, DSTBLK:=P#L20.0 WORD 6) // 1.-6.DW FIFO holen + + L Status + L 2#0000_0000_1110_0000 + AW + T Err + JP Err // Kapitalfehler vorhanden + + L SFC_RET_VAL + L 2#0000_0000_0000_0000 + <>I + JC Err1 + + +--- NW 3: Zeigerüberprüfung --- + L Kopf // Fifo-Kopf + L 16#FF // = Fifokennung ? + <>I // Nein ! + = NixSave // Status nicht speichern + JC Err0 // kein Fifobereich + + L 1 + L Datensatzlaenge // Datenblocklänge + >I + JC Err0 // kein Fifobereich + + L 128 + >I + JC Err0 // kein Fifobereich + + L 1 + L FifoLaenge // Max.Anzahl von Datenblöcken + >I + JC Err0 // kein Fifobereich + + L SSDW + + 40 // Speichern ab 20.DW + T MinHolzeiger // Minimum Bringzeiger + + L FifoLaenge // Länge FIFO (in Word) + + -1 + L Datensatzlaenge // Datenblocklänge + *I + L 2 // DB byteorientiert + *I + + 40 // Speichern ab 20.DW + L SSDW + +I + T MaxHolzeiger // Maximum Bringzeiger + + L Datensatzlaenge // Datenblocklänge + L 2 // DB byteorientiert + *I + L MaxHolzeiger // Maximum Holzeiger + +I // Zeiger Endekennung + T Fifo_Ende + ITD + T AR1Start // Startwert mit Offset 0 + SLD 3 + T AR1Zeiger // /Statt Dyn.Bereichsstop (ging nur bis DB-Länge <= 8191 Bytes) + + OPN DB[DBFifo] + + L Fifo_Ende + L SFC_DB_LENGTH + >I // Fifo-DB ist zu kurz! + JC Err0 // kein Fifo-Bereich + + L DBW [AR1Zeiger] + L 16#FFEE // Fifo-Endekennung ? + <>I // Nein ! + JC Err0 // kein Fifobereich + + L MinHolzeiger // Minimum Holzeiger + L Holzeiger // Holzeiger + <=I // Ok ? + JC W300 // Ja! + + L 0 // Grundstellung ? + <>I // Nein ! + JC Err6 // Holzeiger ist ausserhalb + + L Holzeiger // Holzeiger Grundstellung ? + <>I // Nein ! + JC Err6 // Holzeiger ist ausserhalb + + L Anzahl // Anzahl Datensätze + L 0 // Grundstellung ? + <>I // Nein ! + JC Err6 // Holzeiger ist ausserhalb + + L MinHolzeiger // Minimum Holzeiger + T Bringzeiger // Bringzeiger + T Holzeiger // Holzeiger + +W300: L MaxHolzeiger // Maximum Holzeiger + <=I // Ok ? + JC W301 // Ja! + JU Err6 // Holzeiger ist ausserhalb + + +W301: L Bringzeiger // Bringzeiger + L Holzeiger // Holzeiger + ==I // Identisch ! + A( + L FifoLaenge + L Anzahl // Anzahl der gespeicherten Datensätze + <>I // Fifo noch nicht voll ! + ) + A( + L 0 + <>I // Datensätze aber noch vorhanden ! + ) + JC Err7 // Versatz Bring-/Holzeiger + + L Bringzeiger // Bringzeiger + L Holzeiger // Holzeiger + <>I // Ungleich ! + A( + L FifoLaenge + L Anzahl // Anzahl der gespeicherten Datensätze + ==I // Aber Fifo ist voll ! + O( + L 0 + ==I // Aber keine Datensätze vorhanden ! + ) + ) + JC Err7 // Versatz Bring-/Holzeiger + + L Anzahl // Anzahl der gespeicherten Datensätze + L 0 + ==I // Keine Datensätze vorhanden ! + JC Err2 // Fifo ist leer + + +--- NW 4: Offset bilden --- + L 0 + L CH_POS + >=I + JC Err3 // falscher Parameter bei Aufruf + + L FifoLaenge // Max.Anzahl von Datenblöcken + >I + JC Err3 // falscher Parameter bei Aufruf + + L Anzahl // Anzahl der Datensätze + L CH_POS + I + JC Err1 + + +--- NW 6: Fehlerausgabe / RET_VAL --- + SET // VKE = 1 ohne Fehler !!! + JU Ok +Err0: L 2#0000_0000_0000_0001 // Kein Fifobereich + T Err + JU Err +Err1: S L32.1 // SFC20-Aufruf mit Fehler + JU Err +Err2: S L32.2 // Fifo ist voll + JU Err +Err3: S L32.3 // Falscher Parameter + JU Err +Err4: S L32.4 // Position nicht belegt + JU Err +Err6: S L32.6 // Holzeiger außerhalb + JU Err +Err7: S L32.7 // Versatz Bring-/Holzeiger + +Err: CLR // VKE = 0 bei Fehler !!! +Ok: L Err + T RE_VAL + L Status + OW + T Status + + SAVE // VKE in BIE-Bit speichern + + +--- NW 7: Fifokopfdaten speichern --- + A L32.0 // Falscher Parameter + A NixSave // Status nicht speichern + BEC + + L SSDW + + 10 // Status + ITD + T AR1Start // Startwert mit Offset 0 + SLD 3 + T AR1Zeiger // /Statt Dyn.Bereichsstop (ging nur bis DB-Länge <= 8191 Bytes) + + OPN DB[DBFifo] + + L Err + T DBW [AR1Zeiger] + diff --git a/=A01+UH06-KF00/Programmbausteine/Module/FIFOSearch.awl b/=A01+UH06-KF00/Programmbausteine/Module/FIFOSearch.awl new file mode 100644 index 0000000..fda4b1f --- /dev/null +++ b/=A01+UH06-KF00/Programmbausteine/Module/FIFOSearch.awl @@ -0,0 +1,376 @@ +=== FC 83: FIFOSearch [STL] === +INTERFACE: + Input: + SSDB : Int // Schnittstellen-DB + SSDW : Int // Schnittstellen-1.DW + SEARCHDATEN : Pointer // SuchDaten-Schnittstelle + Laenge : Int // Anzahl der DWs zum Vergleichen im Datensatz + Output: + RE_POS : Int // Position des Eintrags, der gesuchten Daten + RE_VAL : Byte // Rückmeldungen + InOut: + Temp: + Quelle : Any // Zeiger, wo Rein-Daten sind + Ziel : Any // Zeiger, FIFO-Stelle + Kopf : Byte // Fifo-Kennung (FF) + Datensatzlaenge : Byte // Datensatzlänge in Word (1 - 128) + FifoLaenge : Int // Länge des Fifo (maximale Anzahl der Datensätze) + Bringzeiger : Int // Zeiger, wohin nächster Eintrag gespeichert wird + Holzeiger : Int // Zeiger, woher nächste Daten geholt werden + Anzahl : Int // Anzahl der Datensätze (eingetragene) + Status : Word // Status des Fifo + Err : Byte // Fehlerbits + MinHolzeiger : Int // Minimum Holzeiger + MaxHolzeiger : Int // Maximum Holzeiger + DBFifo : Word // FIFO-DB + SFC_RET_VAL : Int // Rückmeldung SFC-Aufruf + SFC_DB_LENGTH : Word // Rückmeldung SFC-Aufruf + Fifo_Ende : Word // Ende des Fifo + AR2_Speicher : DWord // Adress-Register 2 zwischenspeichern + DBSuchdaten : Word // Solldaten-DB, falls angegeben + SuchDaten_Startpunkt : Word // SuchDaten-Startpunkt: Adresse + SuchZeiger : Word // Suchzeiger + Schleife : Word // Loopzähler + NixSave : Bool // Status nicht speichern + SFC_WRITE_PROT : Bool // Rückmeldung SFC-Aufruf + AR1Zeiger : DWord // Statt AR1 (ging nur bis DB-Länge <= 8191 Bytes) + AR1Start : DInt // Startwert mit Offset 0 + sRE_POS : Int // Position des Eintrags, der gesuchten Daten + Constant: + Return: + Ret_Val : Void + +--- NW 1: Schnittstellen-DB sinnvoll ? --- + TAR2 + T AR2_Speicher // AR2 zwischenspeichern + + L SSDB + T DBFifo + +// CALL TEST_DB +// DB_NUMBER :=#DBFifo +// RET_VAL :=#SFC_RET_VAL +// DB_LENGTH :=#SFC_DB_LENGTH +// WRITE_PROT :=#SFC_WRITE_PROT + +CALL FC "TEST_DB_TO_ATTR_DB" (DB_Number:=DBFifo, RetVal:=SFC_RET_VAL, DB_Length:=SFC_DB_LENGTH, Write_Prot:=SFC_WRITE_PROT) + + + L SFC_RET_VAL + L 2#0000_0000_0000_0000 + <>I + = NixSave // Status nicht speichern + O SFC_WRITE_PROT + JC Err0 // kein Fifobereich + + +--- NW 2: Quelle-Pointer erzeugen: --- + L 16#1004 // Kennung 10 + Word=04 + T sRE_POS // Any-Kennung, Datentyp + L 16#0006 // 6 Dw´s holen + T LW2 // Wiederholungen + L SSDB + T LW4 // DB_Nummer + L SSDW // Adresse + SLD 3 + L 16#8400_0000 // Kennung: Daten + OD + T LD6 // Kennung, Adresse + +CALL SYS "BLKMOV" (SRCBLK:=Quelle, RET_VAL:=SFC_RET_VAL, DSTBLK:=P#L20.0 WORD 6) // 1.-6.DW FIFO holen + + L Status + L 2#0000_0000_1110_0000 + AW + T Err + JP Err // Kapitalfehler vorhanden + + L SFC_RET_VAL + L 2#0000_0000_0000_0000 + <>I + JC Err1 + + +--- NW 3: Zeigerüberprüfung --- + L Kopf // Fifo-Kopf + L 16#FF // = Fifokennung ? + <>I // Nein ! + = NixSave // Status nicht speichern + JC Err0 // kein Fifobereich + + L 1 + L Datensatzlaenge // Datenblocklänge + >I + JC Err0 // kein Fifobereich + + L 128 + >I + JC Err0 // kein Fifobereich + + L 1 + L FifoLaenge // Max.Anzahl von Datenblöcken + >I + JC Err0 // kein Fifobereich + + L SSDW + + 40 // Speichern ab 20.DW + T MinHolzeiger // Minimum Holzeiger + + L FifoLaenge // Länge FIFO (in Word) + + -1 + L Datensatzlaenge // Datenblocklänge + *I + L 2 // DB byteorientiert + *I + + 40 // Speichern ab 20.DW + L SSDW + +I + T MaxHolzeiger // Maximum Holzeiger + + L Datensatzlaenge // Datenblocklänge + L 2 // DB byteorientiert + *I + L MaxHolzeiger // Maximum Holzeiger + +I // Zeiger Endekennung + T Fifo_Ende + ITD + T AR1Start // Startwert mit Offset 0 + SLD 3 + T AR1Zeiger // /Statt Dyn.Bereichsstop (ging nur bis DB-Länge <= 8191 Bytes) + + OPN DB[DBFifo] + + L Fifo_Ende + L SFC_DB_LENGTH + >I // Fifo-DB ist zu kurz! + JC Err0 // kein Fifo-Bereich + + L DBW [AR1Zeiger] + L 16#FFEE // Fifo-Endekennung ? + <>I // Nein ! + JC Err0 // kein Fifobereich + + L MinHolzeiger // Minimum Holzeiger + L Holzeiger // Holzeiger + <=I // Ok ? + JC W300 // Ja! + + L 0 // Grundstellung ? + <>I // Nein ! + JC Err6 // Holzeiger ist ausserhalb + + L Bringzeiger // Bringzeiger Grundstellung ? + <>I // Nein ! + JC Err6 // Holzeiger ist ausserhalb + + L Anzahl // Anzahl Datensätze + L 0 // Grundstellung ? + <>I // Nein ! + JC Err6 // Holzeiger ist ausserhalb + + L MinHolzeiger // Minimum Holzeiger + T Bringzeiger // Bringzeiger + T Holzeiger // Holzeiger + + JU Err2 // Fifo ist leer + +W300: L MaxHolzeiger // Maximum Holzeiger + <=I // Ok ? + JC W301 // Ja! + JU Err6 // Holzeiger ist ausserhalb + + +W301: L Bringzeiger // Bringzeiger + L Holzeiger // Holzeiger + ==I // Identisch ! + A( + L FifoLaenge + L Anzahl // Anzahl der gespeicherten Datensätze + <>I // Fifo noch nicht voll ! + ) + A( + L 0 + <>I // Datensätze aber noch vorhanden ! + ) + JC Err7 // Versatz Bring-/Holzeiger + + L Bringzeiger // Bringzeiger + L Holzeiger // Holzeiger + <>I // Ungleich ! + A( + L FifoLaenge + L Anzahl // Anzahl der gespeicherten Datensätze + ==I // Aber Fifo ist voll ! + O( + L 0 + ==I // Aber keine Datensätze vorhanden ! + ) + ) + JC Err7 // Versatz Bring-/Holzeiger + + L Anzahl // Anzahl der gespeicherten Datensätze + L 0 + ==I // Keine Datensätze vorhanden ! + JC Err2 // Fifo ist leer + + +--- NW 4: Fifodaten suchen --- + L 1 + T sRE_POS // RET-POS + + L Holzeiger // Holzeiger + T SuchZeiger // Suchzeiger +W400: ITD + T AR1Start // Startwert mit Offset 0 + SLD 3 + T AR1Zeiger // /Statt Dyn.Bereichsstop (ging nur bis DB-Länge <= 8191 Bytes) + +// DATEN-Pointer übernehmen: + L P# + LAR2 + + L NoneW [AR2,] + T DBSuchdaten // Solldaten-DB + + L DBSuchdaten // Solldaten-DB + L 0 // Angegeben ? + ==I // Nein + JC W401 + +// CALL TEST_DB +// DB_NUMBER :=#DBSuchdaten +// RET_VAL :=#SFC_RET_VAL +// DB_LENGTH :=#SFC_DB_LENGTH +// WRITE_PROT :=#SFC_WRITE_PROT + +CALL FC "TEST_DB_TO_ATTR_DB" (DB_Number:=DBSuchdaten, RetVal:=SFC_RET_VAL, DB_Length:=SFC_DB_LENGTH, Write_Prot:=SFC_WRITE_PROT) + + + L SFC_RET_VAL + L 2#0000_0000_0000_0000 // Fehler vorhanden ? + <>I // Ja ! + JC Err1 // SFC20-Aufruf mit Fehler + + L NoneD [AR2,] // Kennung, Adresse + L 16#00FF_FFFF // Ohne Kennung + AW + SRW 3 // Ohne Bit + T SuchDaten_Startpunkt + + L Datensatzlaenge // Datenblocklänge + L 2 // DB byteorientiert + *I + L SuchDaten_Startpunkt + +I + L SFC_DB_LENGTH + >I // Indaten-DB ist zu kurz + JC Err1 // SFC20-Aufruf mit Fehler + +W401: L NoneD [AR2,] // Kennung, Adresse + LAR2 + + L Laenge // Anzahl der DWs zum Vergleichen im Datensatz +L400: T Schleife + + L DBSuchdaten // Solldaten-DB + L 0 // Angegeben ? + ==I // Nein + JC W402 + + OPN DB[DBSuchdaten] + +W402: L NoneW [AR2,] // Mit Solldaten überprüfen + OPN DB[DBFifo] + L DBW [AR1Zeiger] // Fifo-Daten lesen + <>I // nicht identisch ! + JC W403 + + L AR1Start // Startwert mit Offset 0 + + DINT#2 + T AR1Start // Startwert mit nächstem Offset + SLD 3 + T AR1Zeiger // /Statt Dyn.Bereichsstop (ging nur bis DB-Länge <= 8191 Bytes) + + ADDAR2 P#2.0 + + L Schleife + LOOP L400 + + JU Ende // Datensatz ist in Fifo enthalten + +W403: L sRE_POS // RET-POS + + 1 + T sRE_POS // RET-POS + L Anzahl // Anzahl der Daten im Fifo + >I // Alle Datensätze sind durchsucht + JC Err2 + + L Datensatzlaenge // Datenblocklänge + L 2 // DB byteorientiert + *I + L SuchZeiger // Suchzeiger + +I + T SuchZeiger // Suchzeiger + L MaxHolzeiger // Maximum Holzeiger + <=I // Ende erreicht? Nein! + JC W404 + + L MinHolzeiger // Minimum Holzeiger + T SuchZeiger + +W404: L SuchZeiger // Suchzeiger + JU W400 + + +--- NW 5: Fehlerausgabe / RET_VAL --- +Ende: SET // VKE = 1 ohne Fehler !!! + JU Ok +Err0: L 2#0000_0000_0000_0001 // Kein Fifobereich + T Err + JU Err +Err1: S L32.1 // SFC20-Aufruf mit Fehler + JU Err +Err2: S L32.2 // Fifo ist leer + JU Err +Err6: S L32.6 // Holzeiger außerhalb + JU Err +Err7: S L32.7 // Versatz Bring-/Holzeiger + +Err: L 0 + T sRE_POS // RET-POS = 0 + + CLR // VKE = 0 bei Fehler !!! + +Ok: L Err + T RE_VAL + L Status + OW + T Status + + SAVE // VKE in BIE-Bit speichern + + +--- NW 6: Fifokopfdaten speichern --- + L AR2_Speicher // AR2 zurückspeichern + LAR2 + + A L32.0 // Falscher Parameter + A NixSave // Status nicht speichern + BEC + + L SSDW + + 10 // Status + ITD + T AR1Start // Startwert mit Offset 0 + SLD 3 + T AR1Zeiger // /Statt Dyn.Bereichsstop (ging nur bis DB-Länge <= 8191 Bytes) + + OPN DB[DBFifo] + + L Err + T DBW [AR1Zeiger] + + +--- NW 7: --- + L sRE_POS + T RE_POS diff --git a/=A01+UH06-KF00/Programmbausteine/Module/FifoIn.awl b/=A01+UH06-KF00/Programmbausteine/Module/FifoIn.awl new file mode 100644 index 0000000..d144677 --- /dev/null +++ b/=A01+UH06-KF00/Programmbausteine/Module/FifoIn.awl @@ -0,0 +1,505 @@ +=== FC 80: FifoIn [STL] === +INTERFACE: + Input: + SSDB : Int // Schnittstellen-DB + SSDW : Int // Schnittstellen-1.DW + PARA : Word // Aufrufparameter (Auftrag / Anzahl Zusatzdaten) + INDATEN : Pointer // InDaten-Schnittstelle + Output: + RE_VAL : Byte // Rückmeldung + InOut: + Temp: + Quelle : Any // Zeiger, wo Rein-Daten sind + Ziel : Any // Zeiger, FIFO-Stelle + Kopf : Byte // Fifo-Kennung (FF) + Datensatzlaenge : Byte // Datensatzlänge in Word (1 - 128) + FifoLaenge : Int // Länge des Fifo (maximale Anzahl der Datensätze) + Bringzeiger : Int // Zeiger, wohin nächster Eintrag gespeichert wird + Holzeiger : Int // Zeiger, woher nächste Daten geholt werden + Anzahl : Int // Anzahl der Datensätze (eingetragene) + Status : Word // Status des Fifo + Err : Byte // Fehlerbits + Para1 : Byte // 1.Aufrufparameter + Para2 : Byte // 2.Aufrufparameter + Para21 : Byte // 2.Aufrufparameter 1.Stelle + Para22 : Byte // 2.Aufrufparameter 2.Stelle + MinBringzeiger : Int // Minimum Bringzeiger + MaxBringzeiger : Int // Maximum Bringzeiger + DBFifo : Word // FIFO-DB + SFC_RET_VAL : Int // Rückmeldung SFC-Aufruf + SFC_DB_LENGTH : Word // Rückmeldung SFC-Aufruf + Fifo_Ende : Word // Ende des Fifo + Schleife : Word // Loopzähler + Offset : Byte // Offset 1. zu speicherndes Zusatzwort + SFC_WRITE_PROT : Bool // Rückmeldung SFC-Aufruf + NixSave : Bool // Status nicht speichern + BieSpeicher : Bool // Bie-Bit zwischenspeichern + Constant: + Return: + Ret_Val : Void + +--- NW 1: Schnittstellen-DB sinnvoll ? --- + L SSDB + T DBFifo + +// CALL TEST_DB +// DB_NUMBER :=#DBFifo +// RET_VAL :=#SFC_RET_VAL +// DB_LENGTH :=#SFC_DB_LENGTH +// WRITE_PROT :=#SFC_WRITE_PROT + +CALL FC "TEST_DB_TO_ATTR_DB" (DB_Number:=DBFifo, RetVal:=SFC_RET_VAL, DB_Length:=SFC_DB_LENGTH, Write_Prot:=SFC_WRITE_PROT) + + L SFC_RET_VAL + L 2#0000_0000_0000_0000 + <>I + O SFC_WRITE_PROT + = NixSave // Status nicht speichern + JC Err0 // kein Fifobereich + + +--- NW 2: Quelle-Pointer erzeugen: --- + L 16#1004 // Kennung 10 + Word=04 + T LW0 // Any-Kennung, Datentyp + L 16#0006 // 6 Dw´s holen + T LW2 // Wiederholungen + L SSDB + T LW4 // DB_Nummer + L SSDW // Adresse + SLD 3 + L 16#8400_0000 // Kennung: Daten + OD + T LD6 // Kennung, Adresse + +CALL SYS "BLKMOV" (SRCBLK:=Quelle, RET_VAL:=SFC_RET_VAL, DSTBLK:=P#L20.0 WORD 6) // 1.-6.DW FIFO holen + + L Status + L 2#0000_0000_1110_0000 + AW + T Err + JP Err // Kapitalfehler vorhanden + + L SFC_RET_VAL + L 2#0000_0000_0000_0000 + <>I + JC Err1 + + +--- NW 3: Zeigerüberprüfung --- + L Kopf // Fifo-Kopf + L 16#FF // = Fifokennung ? + <>I // Nein ! + = NixSave // Status nicht speichern + JC Err0 // kein Fifobereich + + L 1 + L Datensatzlaenge // Datenblocklänge + >I + JC Err0 // kein Fifobereich + + L 128 + >I + JC Err0 // kein Fifobereich + + L 1 + L FifoLaenge // Max.Anzahl von Datenblöcken + >I + JC Err0 // kein Fifobereich + + L SSDW + + 40 // Speichern ab 20.DW + T MinBringzeiger // Minimum Bringzeiger + + L FifoLaenge // Länge FIFO (in Word) + + -1 + L Datensatzlaenge // Datenblocklänge + *I + L 2 // DB byteorientiert + *I + + 40 // Speichern ab 20.DW + L SSDW + +I + T MaxBringzeiger // Maximum Bringzeiger + + L Datensatzlaenge // Datenblocklänge + L 2 // DB byteorientiert + *I + L MaxBringzeiger // Maximum Bringzeiger + +I // Zeiger Endekennung + T Fifo_Ende + SLW 3 // Pointer erzeugen + LAR1 + + OPN DB[DBFifo] + + L Fifo_Ende + L SFC_DB_LENGTH + >I // Fifo-DB ist zu kurz! + JC Err0 // kein Fifo-Bereich + + L DBW [AR1,] + L 16#FFEE // Fifo-Endekennung ? + <>I // Nein ! + JC Err0 // kein Fifobereich + + L MinBringzeiger // Minimum Bringzeiger + L Bringzeiger // Bringzeiger + <=I // Ok ? + JC W300 // Ja! + + L 0 // Grundstellung ? + <>I // Nein ! + JC Err5 // Bringzeiger ist ausserhalb + + L Holzeiger // Holzeiger Grundstellung ? + <>I // Nein ! + JC Err5 // Bringzeiger ist ausserhalb + + L Anzahl // Anzahl Datensätze + L 0 // Grundstellung ? + <>I // Nein ! + JC Err5 // Bringzeiger ist ausserhalb + + L MinBringzeiger // Minimum Bringzeiger + T Bringzeiger // Bringzeiger + T Holzeiger // Holzeiger + +W300: L MaxBringzeiger // Maximum Bringzeiger + <=I // Ok ? + JC W301 // Ja! + JU Err5 // Bringzeiger ist ausserhalb + + +W301: L Bringzeiger // Bringzeiger + L Holzeiger // Holzeiger + ==I // Identisch ! + A( + L FifoLaenge + L Anzahl // Anzahl der gespeicherten Datensätze + <>I // Fifo noch nicht voll ! + ) + A( + L 0 + <>I // Datensätze aber noch vorhanden ! + ) + JC Err7 // Versatz Bring-/Holzeiger + + L Bringzeiger // Bringzeiger + L Holzeiger // Holzeiger + <>I // Ungleich ! + A( + L FifoLaenge + L Anzahl // Anzahl der gespeicherten Datensätze + ==I // Aber Fifo ist voll ! + O( + L 0 + ==I // Aber keine Datensätze vorhanden ! + ) + ) + JC Err7 // Versatz Bring-/Holzeiger + + +--- NW 4: Nur Zusatzdaten / als 1.Datensatz speichern ? --- + L PARA + T LW33 // Aufrufparameter zwischenspeichern + + L 16#02 // Nur Zusatzdaten speichern ? + L Para1 // 1.Aufrufparameter + <>I // Nein ! + JC W400 + + L Para2 // 2.Aufrufparameter + L 16#00 // =0 ? + ==I // Ja ! + JC Err3 // Falscher Aufrufparameter + + JU Nw06 // Zusatzdaten speichern + +W400: L 16#01 // Als 1.Datensatz speichern ? + <>I // Nein ! + JC Nw05 + + L MinBringzeiger // Minimum Bringzeiger + T Bringzeiger // Bringzeiger + T Holzeiger // Holzeiger + L 0 + T Anzahl // Anzahl Datensätze + + JU Nw06 // Zusatz-Daten speichern? + + +--- NW 5: Hat Fifo Platz / Datenbereich leer ? --- +Nw05: L Anzahl // Anzahl der gespeicherten Datensätze + L FifoLaenge // Max. Anzahl von Datenblöcken + I +// / U( /// +// / TAK /// +// / L ' ' /// +// / <>I /// +// / ) /// + JC Err4 // Speicherzelle ist belegt + + ADDAR1 P#2.0 + + L Schleife + LOOP L500 + + +--- NW 6: Zusatzdaten schreiben --- +Nw06: L 16#00 // =0 ? + L Para2 // 2.Aufrufparameter + ==I // Ja ! + JC Nw07 + + L 16#00F0 + AW + SRW 4 + T Para21 // 1.Stelle isolieren + + L Para2 // 2.Aufrufparameter + L 16#000F + AW + T Para22 // 2.Stelle isolieren + + L Para21 + L Para22 + >I // 1.Stelle > 2.Stelle ! + JC Err3 // Falscher Aufrufparameter + + L 16#04 + >I // 2.Stelle > 4 ! + JC Err3 // Falscher Aufrufparameter + + L Para21 + L 16#00 + ==I // 1.Stelle = 0 ! + JC Err3 // Falscher Aufrufparameter + +// Quelle-Pointer erzeugen: + L 16#1004 // Kennung 10 + Word=04 + T LW0 // Any-Kennung, Datentyp + T LW10 // Any-Kennung, Datentyp + L Para22 // bis + L Para21 // von + -I + + 1 + T LW2 // Wiederholungen + T LW12 // Wiederholungen + L 0 + T LW4 // DB_Nummer + + L Para21 // Beginn ab X.Zusatzwort + + -1 + L 2 // byteorientiert + *I + T Offset // Offset 1. zu speicherndes Zusatzwort + + L 16#00F0 // Adresse (ab MW240) + L Offset // falls nicht ab 1.Zusatzwort + +I + SLD 3 + L 16#8300_0000 // Kennung: Merker + OD + T LD6 // Kennung, Adresse + +// Ziel-Pointer erzeugen: +// Kennung + Datenbytes s.o. + L SSDB + T LW14 // DB_Nummer + L SSDW + + 12 // ab 6.Dw speichern + L Offset // falls nicht ab 1.Zusatzwort + +I + SLD 3 + L 16#8400_0000 // Kennung: Daten + OD + T LD16 // Kennung, Adresse + +CALL SYS "BLKMOV" (SRCBLK:=Quelle, RET_VAL:=SFC_RET_VAL, DSTBLK:=Ziel) // Zusatz-Daten speichern + + L SFC_RET_VAL + L 2#0000_0000_0000_0000 + <>I + JC Err1 + + +--- NW 7: Fifodaten schreiben --- +Nw07: L 16#FF // Testsendung ? + L Para1 // 1.Aufrufparameter + ==I // Ja ! + JC Nw08 // Zeiger testweise verändern + + L 16#02 // Nur Zusatzdaten speichern ? + ==I // Ja ! + JC Ende // Fertig ! + +// Quelle-Pointer erzeugen: + + L 16#1004 // Kennung 10 + Word=04 + T LW0 + T LW10 // Any-Kennung, Datentyp + L Datensatzlaenge // Datenbytes speichern + T LW2 + T LW12 // Wiederholungen + +// DATEN-Pointer übernehmen: + L P# + LAR1 + + L NoneW [AR1,] + T LW4 // DB_Nummer + L NoneD [AR1,] + T LD6 // Kennung, Adresse + +// Ziel-Pointer erzeugen: +// Kennung + Datenbytes s.o. + + L SSDB + T LW14 // DB_Nummer + L Bringzeiger // Adresse + SLD 3 + L 16#8400_0000 // Kennung: Daten + OD + T LD16 // Kennung, Adresse + +CALL SYS "BLKMOV" (SRCBLK:=Quelle, RET_VAL:=SFC_RET_VAL, DSTBLK:=Ziel) // FIFO-Daten speichern + + L SFC_RET_VAL + L 2#0000_0000_0000_0000 + <>I + JC Err1 + + +--- NW 8: Bringzeiger, Anzahl erhöhen --- +Nw08: L Datensatzlaenge // Datenblocklänge + L 2 // 1 word = 2 bytes + *I + L Bringzeiger // Bringzeiger + +I + T Bringzeiger // Bringzeiger + L MaxBringzeiger // Maximum Bringzeiger + <=I // Erreicht ? + JC W800 // Nein ! + + L MinBringzeiger // Minimum Bringzeiger + T Bringzeiger // Bringzeiger + +W800: L Anzahl // Anzahl der gespeicherten Datensätze + + 1 + T Anzahl // Anzahl der gespeicherten Datensätze + + +--- NW 9: Versatz Bring-/Holzeiger --- + L Bringzeiger // Bringzeiger + L Holzeiger // Holzeiger + ==I // Identisch ! + A( + L FifoLaenge + L Anzahl // Anzahl der gespeicherten Datensätze + <>I // Fifo noch nicht voll ! + ) + JC Err7 // Versatz Bring-/Holzeiger + + L Bringzeiger // Bringzeiger + L Holzeiger // Holzeiger + <>I // Ungleich ! + A( + L FifoLaenge + L Anzahl // Anzahl der gespeicherten Datensätze + ==I // Aber Fifo ist voll ! + ) + JC Err7 // Versatz Bring-/Holzeiger + + +--- NW 10: Fehlerausgabe / RET_VAL --- +Ende: SET // VKE = 1 ohne Fehler !!! + JU Ok +Err0: L 2#0000_0000_0000_0001 // Kein Fifobereich + T Err + JU Err +Err1: S L32.1 // SFC20-Aufruf mit Fehler + JU Err +Err2: S L32.2 // Fifo ist voll + JU Err +Err3: S L32.3 // Falscher Parameter + JU Err +Err4: S L32.4 // Speicherzelle ist belegt + JU Err +Err5: S L32.5 // Bringzeiger außerhalb + JU Err +Err7: S L32.7 // Versatz Bring-/Holzeiger + +Err: CLR // VKE = 0 bei Fehler !!! +Ok: L Err + T RE_VAL + L Status + OW + T Status + + SAVE // VKE in BIE-Bit speichern + A ?SW? + = BieSpeicher + +--- NW 11: Fifokopfdaten speichern --- + A L32.0 // Falscher Parameter + A NixSave // Status nicht speichern + BEC + + L Anzahl // Anzahl der Datensätze (eingetragene) + + -1 // da vorher zum Test erhöht wurde + T "MW254" // Übergabe an FC+1 (für FIFO-FÖBE) + + L 16#FF // Testsendung ? + L Para1 // 1.Aufrufparameter + ==I // Ja ! + BEC // Weil Zeiger testweise geändert! + +// Ziel-Pointer erzeugen: + + L 16#1004 // Kennung 10 + Word=04 + T LW10 // Any-Kennung, Datentyp + L 16#0004 // 4Dw´s speichern + T LW12 // Wiederholungen + L SSDB + T LW14 // DB_Nummer + L SSDW // Adresse + L 4 + +I + SLD 3 + L 16#8400_0000 // Kennung: Daten + OD + T LD16 // Kennung, Adresse + +CALL SYS "BLKMOV" (SRCBLK:=P#L24.0 WORD 4, RET_VAL:=SFC_RET_VAL, DSTBLK:=Ziel) // Ab Bringzeiger sichern! + + A BieSpeicher + SAVE // VKE in BIE-Bit speichern + + L FifoLaenge // Länge des Fifo (maximale Anzahl der Datensätze) + T "MW248" // Übergabe an FC+1 (für Durchlaufspeicher) + L Bringzeiger // Zeiger, wohin nächster Eintrag gespeichert wird + T "MW250" // Übergabe an FC+1 (für Durchlaufspeicher) + L Holzeiger // Zeiger, woher nächste Daten geholt werden + T "MW252" // Übergabe an FC+1 (für Durchlaufspeicher) + L Anzahl // Anzahl der Datensätze (eingetragene) + T "MW254" // Übergabe an FC+1 (für Durchlaufspeicher) + diff --git a/=A01+UH06-KF00/Programmbausteine/Module/FifoOut.awl b/=A01+UH06-KF00/Programmbausteine/Module/FifoOut.awl new file mode 100644 index 0000000..e72d629 --- /dev/null +++ b/=A01+UH06-KF00/Programmbausteine/Module/FifoOut.awl @@ -0,0 +1,502 @@ +=== FC 81: FifoOut [STL] === +INTERFACE: + Input: + SSDB : Int // Schnittstellen-DB + SSDW : Int // Schnittstellen-1.DW + PARA : Word // Aufrufparameter (Auftrag / Anzahl Zusatzdaten) + Output: + OUTDATEN : Pointer // OutDaten-Schnittstelle + RE_VAL : Byte // Rückmeldung + InOut: + Temp: + Quelle : Any // Zeiger, wo Rein-Daten sind + Ziel : Any // Zeiger, FIFO-Stelle + Kopf : Byte // Fifo-Kennung (FF) + Datensatzlaenge : Byte // Datensatzlänge in Word (1 - 128) + FifoLaenge : Int // Länge des Fifo (maximale Anzahl der Datensätze) + Bringzeiger : Int // Zeiger, wohin nächster Eintrag gespeichert wird + Holzeiger : Int // Zeiger, woher nächste Daten geholt werden + Anzahl : Int // Anzahl der Datensätze (eingetragene) + Status : Word // Status des Fifo + Err : Byte // Fehlerbits + Para1 : Byte // 1.Aufrufparameter + Para2 : Byte // 2.Aufrufparameter + Para21 : Byte // 2.Aufrufparameter 1.Stelle + Para22 : Byte // 2.Aufrufparameter 2.Stelle + MinHolzeiger : Int // Minimum Holzeiger + MaxHolzeiger : Int // Maximum Holzeiger + DBFifo : Word // FIFO-DB + SFC_RET_VAL : Int // Rückmeldung SFC-Aufruf + SFC_DB_LENGTH : Word // Rückmeldung SFC-Aufruf + Fifo_Ende : Word // Ende des Fifo + Schleife : Word // Loopzähler + Offset : Byte // Offset 1. zu lesendes Zusatzwort + SFC_WRITE_PROT : Bool // Rückmeldung SFC-Aufruf + NixSave : Bool // Status nicht speichern + BieSpeicher : Bool // Bie-Bit zwischenspeichern + Lesezeiger : Int // Lesezeiger + Diff : Int // Differenz + Constant: + Return: + Ret_Val : Void + +--- NW 1: Schnittstellen-DB sinnvoll ? --- + L SSDB + T DBFifo + +// CALL TEST_DB +// DB_NUMBER :=#DBFifo +// RET_VAL :=#SFC_RET_VAL +// DB_LENGTH :=#SFC_DB_LENGTH +// WRITE_PROT :=#SFC_WRITE_PROT + +CALL FC "TEST_DB_TO_ATTR_DB" (DB_Number:=DBFifo, RetVal:=SFC_RET_VAL, DB_Length:=SFC_DB_LENGTH, Write_Prot:=SFC_WRITE_PROT) + + L SFC_RET_VAL + L 2#0000_0000_0000_0000 + <>I + O SFC_WRITE_PROT + = NixSave // Status nicht speichern + JC Err0 // kein Fifobereich + + +--- NW 2: Quelle-Pointer erzeugen: --- + L 16#1004 // Kennung 10 + Word=04 + T LW0 // Any-Kennung, Datentyp + L 16#0006 // 6 Dw´s holen + T LW2 // Wiederholungen + L SSDB + T LW4 // DB_Nummer + L SSDW // Adresse + SLD 3 + L 16#8400_0000 // Kennung: Daten + OD + T LD6 // Kennung, Adresse + +CALL SYS "BLKMOV" (SRCBLK:=Quelle, RET_VAL:=SFC_RET_VAL, DSTBLK:=P#L20.0 WORD 6) // 1.-6.DW FIFO holen + + L Status + L 2#0000_0000_1110_0000 + AW + T Err + JP Err // Kapitalfehler vorhanden + + L SFC_RET_VAL + L 2#0000_0000_0000_0000 + <>I + JC Err1 + + +--- NW 3: Zeigerüberprüfung --- + L Kopf // Fifo-Kopf + L 16#FF // = Fifokennung ? + <>I // Nein ! + = NixSave // Status nicht speichern + JC Err0 // kein Fifobereich + + L 1 + L Datensatzlaenge // Datenblocklänge + >I + JC Err0 // kein Fifobereich + + L 128 + >I + JC Err0 // kein Fifobereich + + L 1 + L FifoLaenge // Max.Anzahl von Datenblöcken + >I + JC Err0 // kein Fifobereich + + L SSDW + + 40 // Speichern ab 20.DW + T MinHolzeiger // Minimum Holzeiger + + L FifoLaenge // Länge FIFO (in Word) + + -1 + L Datensatzlaenge // Datenblocklänge + *I + L 2 // DB byteorientiert + *I + + 40 // Speichern ab 20.DW + L SSDW + +I + T MaxHolzeiger // Maximum Holzeiger + + L Datensatzlaenge // Datenblocklänge + L 2 // DB byteorientiert + *I + L MaxHolzeiger // Maximum Holzeiger + +I // Zeiger Endekennung + T Fifo_Ende + SLW 3 // Pointer erzeugen + LAR1 + + OPN DB[DBFifo] + + L Fifo_Ende + L SFC_DB_LENGTH + >I // Fifo-DB ist zu kurz! + JC Err0 // kein Fifo-Bereich + + L DBW [AR1,] + L 16#FFEE // Fifo-Endekennung ? + <>I // Nein ! + JC Err0 // kein Fifobereich + + L MinHolzeiger // Minimum Holzeiger + L Holzeiger // Holzeiger + <=I // Ok ? + JC W300 // Ja! + + L 0 // Grundstellung ? + <>I // Nein ! + JC Err6 // Holzeiger ist ausserhalb + + L Bringzeiger // Bringzeiger Grundstellung ? + <>I // Nein ! + JC Err6 // Holzeiger ist ausserhalb + + L Anzahl // Anzahl Datensätze + L 0 // Grundstellung ? + <>I // Nein ! + JC Err6 // Holzeiger ist ausserhalb + + L MinHolzeiger // Minimum Holzeiger + T Bringzeiger // Bringzeiger + T Holzeiger // Holzeiger + + JU Zus // Zusatzdaten lesen ? + +W300: L MaxHolzeiger // Maximum Holzeiger + <=I // Ok ? + JC W301 // Ja! + JU Err6 // Holzeiger ist ausserhalb + + +W301: L Bringzeiger // Bringzeiger + L Holzeiger // Holzeiger + ==I // Identisch ! + A( + L FifoLaenge + L Anzahl // Anzahl der gespeicherten Datensätze + <>I // Fifo noch nicht voll ! + ) + A( + L 0 + <>I // Datensätze aber noch vorhanden ! + ) + JC Err7 // Versatz Bring-/Holzeiger + + L Bringzeiger // Bringzeiger + L Holzeiger // Holzeiger + <>I // Ungleich ! + A( + L FifoLaenge + L Anzahl // Anzahl der gespeicherten Datensätze + ==I // Aber Fifo ist voll ! + O( + L 0 + ==I // Aber keine Datensätze vorhanden ! + ) + ) + JC Err7 // Versatz Bring-/Holzeiger + + +--- NW 4: Zusatzdaten lesen ? --- +Zus: L PARA + T LW33 // Aufrufparameter zwischenspeichern + + L 16#E2 // Nur Zusatzdaten lesen ? + L Para1 // 1.Aufrufparameter + ==I // Ja ! + A( + L Para2 // 2.Aufrufparameter + L 16#00 // =0 ? + ==I // Ja ! + ) + JC Err3 // Falscher Aufrufparameter + + L 16#00 // =0 ? + L Para2 // 2.Aufrufparameter + ==I // Ja ! + JC Nw05 // Keine Zusatzdaten lesen + + L 16#00F0 + AW + SRW 4 + T Para21 // 1.Stelle isolieren + + L Para2 // 2.Aufrufparameter + L 16#000F + AW + T Para22 // 2.Stelle isolieren + + L Para21 + L Para22 + >I // 1.Stelle > 2.Stelle ! + JC Err3 // Falscher Aufrufparameter + + L 16#04 + >I // 2.Stelle > 4 ! + JC Err3 // Falscher Aufrufparameter + + L Para21 + L 16#00 + ==I // 1.Stelle = 0 ! + JC Err3 // Falscher Aufrufparameter + +// Quelle-Pointer erzeugen: + L 16#1004 // Kennung 10 + Word=04 + T LW0 // Any-Kennung, Datentyp + T LW10 // Any-Kennung, Datentyp + L Para22 // bis + L Para21 // von + -I + + 1 + T LW2 // Wiederholungen + T LW12 // Wiederholungen + + L Para21 // Beginn ab X.Zusatzwort + + -1 + L 2 // byteorientiert + *I + T Offset // Offset 1. zu speicherndes Zusatzwort + + L SSDB + T LW4 // DB_Nummer + L SSDW + + 12 // ab 6.Dw lesen + L Offset // falls nicht ab 1.Zusatzwort + +I + SLD 3 + L 16#8400_0000 // Kennung: Daten + OD + T LD6 // Kennung, Adresse + +// Ziel-Pointer erzeugen: +// Kennung + Datenbytes s.o. + + L 0 + T LW14 // DB_Nummer + + L 16#00F0 // Adresse (MW240) + L Offset // falls nicht ab 1.Zusatzwort + +I + SLD 3 + L 16#8300_0000 // Kennung: Merker + OD + T LD16 // Kennung, Adresse + +CALL SYS "BLKMOV" (SRCBLK:=Quelle, RET_VAL:=SFC_RET_VAL, DSTBLK:=Ziel) // Zusatz-Daten speichern + + L SFC_RET_VAL + L 2#0000_0000_0000_0000 + <>I + JC Err1 + + +--- NW 5: Fifodaten lesen --- +Nw05: L Para1 // 1.Aufrufparameter + L 16#E2 // Nur Zusatzdaten lesen ? + ==I // Ja ! + JC Ende // Fertig ! + + L Anzahl // Anzahl der gespeicherten Datensätze + L 0 + ==I // Keine Datensätze vorhanden ! + JC Err2 // Fifo ist leer + +// Quelle-Pointer erzeugen: + + L 16#1004 // Kennung 10 + Word=04 + T LW0 + T LW10 // Any-Kennung, Datentyp + L Datensatzlaenge // Datenbytes speichern + T LW2 + T LW12 // Wiederholungen + + L SSDB + T LW4 // DB_Nummer + + L Holzeiger // Adresse (erstmal !, falls Para 2=0) + T Lesezeiger // Lesezeiger + L Para1 // 1.Aufrufparameter + L 16#00 // =0 ? + ==I + O( + CAC + L 16#E1 // Datensatz löschen ? + ==I // Ja ! + ) + JC w050 + + CAC // X-te Stelle lesen + + -1 // -1, da 1.ohne Offeset + L Datensatzlaenge // Datenblocklänge + *I + L 2 // DB byteorientiert + *I + L Holzeiger // Adresse + +I + T Lesezeiger // Lesezeiger + L MaxHolzeiger // Maximum Holzeiger + <=I // Ist nicht über Maximum ! + JC w050 + + L FifoLaenge // Länge FIFO (in Word) + L Datensatzlaenge // Datenblocklänge + *I + L 2 // DB byteorientiert + *I + T Diff + + L Lesezeiger // Differenz subtrahieren: + L Diff + -I + T Lesezeiger // Lesezeiger + +w050: L Lesezeiger // Lesezeiger + SLD 3 + L 16#8400_0000 // Kennung: Daten + OD + T LD6 // Kennung, Adresse + +// Ziel-Pointer erzeugen: +// Kennung + Datenbytes s.o. + +// DATEN-Pointer übernehmen: + L P# + LAR1 + + L NoneW [AR1,] + T LW14 // DB_Nummer + L NoneD [AR1,] + T LD16 // Kennung, Adresse + +CALL SYS "BLKMOV" (SRCBLK:=Quelle, RET_VAL:=SFC_RET_VAL, DSTBLK:=Ziel) // FIFO-Daten speichern + + L SFC_RET_VAL + L 2#0000_0000_0000_0000 + <>I + JC Err1 + + +--- NW 6: Daten aus Fifo austragen ? --- + L 16#E1 // Daten löschen ? + L Para1 // 1.Aufrufparameter + <>I // Nein ! + JC Ende // Fertig ! + + L Holzeiger // Holzeiger + SLW 3 // Pointer erzeugen + LAR1 + + OPN DB[DBFifo] + + L Datensatzlaenge +L600: T Schleife + + L 0 + T DBW [AR1,] + + ADDAR1 P#2.0 + + L Schleife + LOOP L600 + + +--- NW 7: Holzeiger, Anzahl erniedrigen --- + L Datensatzlaenge // Datenblocklänge + L 2 // 1 word = 2 bytes + *I + L Holzeiger // Holzeiger + +I + T Holzeiger // Holzeiger + L MaxHolzeiger // Maximum Holzeiger + <=I // Erreicht ? + JC W700 // Nein ! + + L MinHolzeiger // Minimum Holzeiger + T Holzeiger // Holzeiger + +W700: L Anzahl // Anzahl der gespeicherten Datensätze + + -1 + T Anzahl // Anzahl der gespeicherten Datensätze + + +--- NW 8: Versatz Bring-/Holzeiger --- + L Bringzeiger // Bringzeiger + L Holzeiger // Holzeiger + ==I // Identisch ! + A( + L Anzahl // Anzahl der gespeicherten Datensätze + L 0 + <>I // Datensätze aber noch vorhanden ! + ) + JC Err7 // Versatz Bring-/Holzeiger + + L Bringzeiger // Bringzeiger + L Holzeiger // Holzeiger + <>I // Ungleich ! + A( + L Anzahl // Anzahl der gespeicherten Datensätze + L 0 + ==I // Aber keine Datensätze vorhanden ! + ) + JC Err7 // Versatz Bring-/Holzeiger + + +--- NW 9: Fehlerausgabe / RET_VAL --- +Ende: SET // VKE = 1 ohne Fehler !!! + JU Ok +Err0: L 2#0000_0000_0000_0001 // Kein Fifobereich + T Err + JU Err +Err1: S L32.1 // SFC20-Aufruf mit Fehler + JU Err +Err2: S L32.2 // Fifo ist leer + JU Err +Err3: S L32.3 // Falscher Parameter + JU Err +Err6: S L32.6 // Holzeiger außerhalb + JU Err +Err7: S L32.7 // Versatz Bring-/Holzeiger + +Err: CLR // VKE = 0 bei Fehler !!! +Ok: L Err + T RE_VAL + L Status + OW + T Status + + SAVE // VKE in BIE-Bit speichern + A ?SW? + = BieSpeicher + +--- NW 10: Fifokopfdaten speichern --- + A L32.0 // Falscher Parameter + A NixSave // Status nicht speichern + BEC + +// Ziel-Pointer erzeugen: + + L 16#1004 // Kennung 10 + Word=04 + T LW10 // Any-Kennung, Datentyp + L 16#0004 // 4Dw´s speichern + T LW12 // Wiederholungen + L SSDB + T LW14 // DB_Nummer + L SSDW // Adresse + L 4 + +I + SLD 3 + L 16#8400_0000 // Kennung: Daten + OD + T LD16 // Kennung, Adresse + +CALL SYS "BLKMOV" (SRCBLK:=P#L24.0 WORD 4, RET_VAL:=SFC_RET_VAL, DSTBLK:=Ziel) // Ab Bringzeiger sichern! + + A BieSpeicher + SAVE // VKE in BIE-Bit speichern + diff --git a/=A01+UH06-KF00/Programmbausteine/Module/FifoReset.awl b/=A01+UH06-KF00/Programmbausteine/Module/FifoReset.awl new file mode 100644 index 0000000..2468496 --- /dev/null +++ b/=A01+UH06-KF00/Programmbausteine/Module/FifoReset.awl @@ -0,0 +1,204 @@ +=== FC 82: FifoReset [STL] === +INTERFACE: + Input: + SSDB : Int // Schnittstellen-DB + SSDW : Int // Schnittstellen-1.DW + PARA : Word // Aufrufparameter (Durchlaufspeicher?) + Output: + RE_VAL : Byte // Rückmeldung + InOut: + Temp: + Quelle : Any // Zeiger, wo Rein-Daten sind + Kopf : Byte // Fifo-Kennung (FF) + Datensatzlaenge : Byte // Datensatzlänge in Word (1 - 128) + FifoLaenge : Int // Länge des Fifo (maximale Anzahl der Datensätze) + Bringzeiger : Int // Zeiger, wohin nächster Eintrag gespeichert wird + Holzeiger : Int // Zeiger, woher nächste Daten geholt werden + Anzahl : Int // Anzahl der Datensätze (eingetragene) + Status : Word // Status des Fifo + DBFifo : Word // FIFO-DB + SFC_RET_VAL : Int // Rückmeldung SFC-Aufruf + SFC_DB_LENGTH : Word // Rückmeldung SFC-Aufruf + Fifo_Ende : Word // Ende des Fifo + Schleife : Word // Loopzähler + SFC_WRITE_PROT : Bool // Rückmeldung SFC-Aufruf + Constant: + Return: + Ret_Val : Void + +--- NW 1: Schnittstellen-DB sinnvoll ? --- + L SSDB + T DBFifo + +// CALL TEST_DB +// DB_NUMBER :=#DBFifo +// RET_VAL :=#SFC_RET_VAL +// DB_LENGTH :=#SFC_DB_LENGTH +// WRITE_PROT :=#SFC_WRITE_PROT + +CALL FC "TEST_DB_TO_ATTR_DB" (DB_Number:=DBFifo, RetVal:=SFC_RET_VAL, DB_Length:=SFC_DB_LENGTH, Write_Prot:=SFC_WRITE_PROT) + + L SFC_RET_VAL + L 2#0000_0000_0000_0000 + <>I + O SFC_WRITE_PROT + JC Err0 // kein Fifobereich + + +--- NW 2: Quelle-Pointer erzeugen: --- + L 16#1004 // Kennung 10 + Word=04 + T LW0 // Any-Kennung, Datentyp + L 16#0006 // 6 Dw´s holen + T LW2 // Wiederholungen + L SSDB + T LW4 // DB_Nummer + L SSDW // Adresse + SLD 3 + L 16#8400_0000 // Kennung: Daten + OD + T LD6 // Kennung, Adresse + +CALL SYS "BLKMOV" (SRCBLK:=Quelle, RET_VAL:=SFC_RET_VAL, DSTBLK:=P#L10.0 WORD 6) // 1.-6.DW FIFO holen + + L SFC_RET_VAL + L 2#0000_0000_0000_0000 + <>I + JC Err1 + + +--- NW 3: Zeigerüberprüfung --- + L Kopf // Fifo-Kopf + L 16#FF // = Fifokennung ? + <>I // Nein ! + JC Err0 // kein Fifobereich + + L 1 + L Datensatzlaenge // Datenblocklänge + >I + JC Err0 // kein Fifobereich + + L 128 + >I + JC Err0 // kein Fifobereich + + L 1 + L FifoLaenge // Max.Anzahl von Datenblöcken + >I + JC Err0 // kein Fifobereich + + L FifoLaenge // Länge FIFO (in Word) + L Datensatzlaenge // Datenblocklänge + *I + L 2 // DB byteorientiert + *I + + 40 // Speichern ab 20.DW + L SSDW + +I + T Fifo_Ende + SLW 3 // Pointer erzeugen + LAR1 + + OPN DB[DBFifo] + + L Fifo_Ende + L SFC_DB_LENGTH + >I // Fifo-DB ist zu kurz! + JC Err0 // kein Fifo-Bereich + + L DBW [AR1,] + L 16#FFEE // Fifo-Endekennung ? + <>I // Nein ! + JC Err0 // kein Fifobereich + + +--- NW 4: Fifo-Daten löschen --- + L SSDW + + 4 // Ab 2.Dw + SLW 3 // Pointer erzeugen + LAR1 + + OPN DB[DBFifo] + + L Datensatzlaenge + L FifoLaenge + *I + + 18 // 18 Datenwörter (wortorientiert) +L400: T Schleife + + L 0 + T DBW [AR1,] + + ADDAR1 P#2.0 + + L Schleife + LOOP L400 + + + +--- NW 5: Durchlaufspeicher ? --- + L PARA // Aufrufparameter + SRW 4 + L 16#000D // Durchlaufspeicher ? + <>I // Nein ! + JC N006 + + L SSDW + + 4 // Speichern ab 4.DW + SLW 3 // Pointer erzeugen + LAR1 + + OPN DB[DBFifo] + + L SSDW + + 40 // 1.Speicherzelle + T DBW [AR1,] // Bringzeiger + T DBW [AR1,] // Holzeiger + + L FifoLaenge // Fifo ist voll + T DBW [AR1,] // Anzahl + + L PARA // Aufrufparameter + L 16#00D1 // Durchlaufspeicher mit FFFF füllen + <>I // Nein ! + JC N006 + + L FifoLaenge // Fifo ist voll + T DBW [AR1,] // 1.Zusatz-Dw (Anzahl der Daten) + + L 2#0000_0000_0000_0011 // Daten vorhanden/kommen raus + T DBW [AR1,] // 4.Zusatz-Dw (Status) + + L SSDW + + 40 // Ab 20.Dw + SLW 3 // Pointer erzeugen + LAR1 + + OPN DB[DBFifo] + + L Datensatzlaenge + L FifoLaenge + *I +L500: T Schleife + + L 16#FFFF + T DBW [AR1,] + + ADDAR1 P#2.0 + + L Schleife + LOOP L500 + + +--- NW 6: Fehlerausgabe / RET_VAL --- +N006: SET // VKE = 1 ohne Fehler !!! + L 2#0000_0000_0000_0000 + JU Ok +Err0: L 2#0000_0000_0000_0001 // Kein Fifobereich + JU Err +Err1: L 2#0000_0000_0000_0010 // SFC20-Aufruf mit Fehler + +Err: CLR // VKE = 0 bei Fehler !!! +Ok: T RE_VAL + + SAVE // VKE in BIE-Bit speichern + diff --git a/=A01+UH06-KF00/Programmbausteine/Module/MAntrieb_PowerSave.awl b/=A01+UH06-KF00/Programmbausteine/Module/MAntrieb_PowerSave.awl new file mode 100644 index 0000000..6845456 --- /dev/null +++ b/=A01+UH06-KF00/Programmbausteine/Module/MAntrieb_PowerSave.awl @@ -0,0 +1,496 @@ +=== FB 95: MAntrieb_PowerSave [STL] === +INTERFACE: + Input: + Automatik : Bool // Automatikbetrieb ist aktiv + Handbetrieb : Bool // Handbetrieb ist aktiv + BereichErr : Bool := 1 // Bereichsstörung -> Antrieb stoppen + Q : Bool // Eingang Motorschutz ok + Ptc : Bool // Eingang Motortemperatur ok + Fu : Bool // Eingang Frequenzumrichter ok + QKontroll : Bool // Jetzt Q-Ok-Meldung von Frequenzumrichter (nach Netz EIN) kontrollieren + FuKontroll : Bool // Jetzt Fu-Ok-Meldung von Frequenzumrichter (nach Netz EIN) kontrollieren + ErrQuit : Bool // Motorschutzstörung quittieren + Kontroll_B : Bool // Kontroll-Sensor für Bewegung + T_Nachlauf : Int := 60 // Nachlaufzeit (*1s) + Output: + Antriebrueck : Bool // Rückwärts-Ausgang des Antriebs + Antriebvor : Bool // Vorwärts-Ausgang des Antriebs + Jog1 : Bool // Frequenz 1/3 aktivieren + Jog2 : Bool // Frequenz 2/3 aktivieren + Analog : Int // Ausgangswort für Analogwandler + InOut: + QErr : Bool // Motorschutzstörung + PtcErr : Bool // Temperaturstörung + FuErr : Bool // Frequenzumrichter ist gestört + Err_Antrieb_verklemmt : Bool // Antrieb ist verklemmt (kein Kontroll_B oder dauernd aktiv) + Static: + sJog1 : Bool // Frequenz 1/3 aktivieren + sJog2 : Bool // Frequenz 2/3 aktivieren + sAntriebrueck : Bool // Rückwärts-Ausgang des Antriebs + sAntriebvor : Bool // Vorwärts-Ausgang des Antriebs + Stat : "UAntrieb_PowerSave" // Status des Antriebs + Temp: + Antriebaktiv : Bool // Antrieb ist aktiv + Neustart : Bool // Antrieb wurde erneut gestartet + Frequenz : Real // Frequenz für FC106 + Constant: + +--- NW 1: Zeitwert laden --- + AN Automatik + ON Stat.A_start + JC Nw02 + + L T_Nachlauf // Zeitwert laden + T Stat.T_Zelle + + +--- NW 2: Zeitwert löschen --- +Nw02: AN Automatik + O Stat.A_vor + O Stat.A_rueck + O BereichErr + O QErr + O FuErr + JCN Nw03 + + L 0 // Zeitwert löschen +// // T #Stat.T_Zelle + + +--- NW 3: Motorschutzstörung / Temperaturüberwachung --- +Nw03: A ErrQuit + R QErr + AN Q + A QKontroll + S QErr + + A ErrQuit + R PtcErr + AN Ptc + S PtcErr + + +--- NW 4: Frequenzumrichterstörung --- + AN Stat.Frequenz + AN Stat.Analog + JC en05 + + A ErrQuit + ON FuKontroll + R FuErr + AN Fu + A FuKontroll + S FuErr + +en05: NOP 0 + +--- NW 5: Undefinierte Zustände / Befehle (alle Antriebe) --- + A Automatik // Automatik + Hand aktiv + A Handbetrieb + O + AN Automatik // keine Betriebsart + AN Handbetrieb + O + A Stat.A_vor // Vorwärts + Rückwärts aktiv + A Stat.A_rueck + O + A Stat.H_vor + A Stat.H_rueck + O + A BereichErr // Bereichsstörung + A Automatik // Automatik aktiv + O + AN Stat.Normal // Antrieb nicht eindeutig + AN Stat.Frequenz + AN Stat.Analog + O + A Stat.Normal + A( + O Stat.Frequenz + O Stat.Analog + ) + O + A Stat.Frequenz + A Stat.Analog + O QErr // Motorschutzstörung + O + A Automatik // Automatik aktiv + A PtcErr // Temperaturstörung + JCN en06 + +Stop: SET + R sAntriebvor + R sAntriebrueck + R Stat.T_Ausfertig + R sJog1 + R sJog2 + + L 0.0 // Zeitwert/Frequenz löschen +// // T #Stat.T_Zelle + T Frequenz // Frequenz für FC106 + + JU RET + +en06: NOP 0 + +--- NW 6: Undefinierte Zustände / Befehle (Fu-Zusatz) --- + A Stat.Frequenz + A( + AN Stat.F1 // Keine Frequenz angegeben + AN Stat.F2 + AN Stat.F3 + O + A Stat.F1 // Mehrere Frequenzen angegeben + A( + O Stat.F2 + O Stat.F3 + ) + O + A Stat.F2 // Mehrere Frequenzen angegeben + A Stat.F3 + O FuErr // Frequenzumrichterstörung + ON FuKontroll // Frequenzumrichter ist eingeschaltet + ) + JC Stop + +--- NW 7: Undefinierte Zustände / Befehle (Analog-Zusatz) --- + A Stat.Analog + A( + L Stat.F // Keine Frequenz angegeben + L 0.0 + ==R + AN Stat.F1 // Keine Frequenz angegeben + AN Stat.F2 + AN Stat.F3 + O FuErr // Frequenzumrichterstörung + ON FuKontroll // Frequenzumrichter ist eingeschaltet + ) + JC Stop + + +--- NW 8: Antrieb vorwärts starten --- + A( + A Automatik // Automatik ist aktiv + AN Stat.A_rueck + A( + L Stat.T_Zelle + L 0 // Nachlaufzeit vorhanden ? + <>I // Ja ! + AN Stat.A_PS // PowerSave-Mode: Bei Ausschaltverzögerung anhalten + O Stat.A_vor // Einschalten + ) + O + A Handbetrieb // Handbetrieb aktiv + A Stat.H_vor // Handtaste vorwärts + ) + AN Stat.Stop_vor // Stoppen + A Q // Motorschutz ok + AN QErr // Motorschutzstörung noch aktiv + = sAntriebvor + R Stat.T_Ausfertig + +--- NW 9: Antrieb rückwärts starten --- + A( + A Automatik // Automatik ist aktiv + A Stat.A_rueck // Einschalten + O + A Handbetrieb // Handbetrieb aktiv + A Stat.H_rueck // Handtaste rückwärts + ) + AN Stat.Stop_rueck // Stoppen + A Q // Motorschutz ok + AN QErr // Motorschutzstörung noch aktiv + AN sAntriebvor + = sAntriebrueck + R Stat.T_Ausfertig + +--- NW 10: Frequenz übergeben (Fu-Zusatz) --- + AN Stat.Frequenz + AN Stat.Analog + JC en11 + + A sAntriebvor + AN sAntriebrueck + O + AN sAntriebvor + A sAntriebrueck + = Antriebaktiv + + A Antriebaktiv + A( + O Stat.F1 + O Stat.F3 + ) + = sJog1 + + A Antriebaktiv + A( + O Stat.F2 + O Stat.F3 + ) + = sJog2 + + AN sJog1 // Keine Geschwindigtkeit aktiv + AN sJog2 + AN Stat.Analog // falls analoge Übergabe erfolgt + R sAntriebvor + R sAntriebrueck + +en11: NOP 0 + +--- NW 11: Frequenz übergeben (Analog-Zusatz) --- + AN Stat.Analog + JC en12 + + A sAntriebvor + AN sAntriebrueck + O + AN sAntriebvor + A sAntriebrueck + = Antriebaktiv + + L 0.0 // Falls Stop erwünscht + + AN Antriebaktiv + JC w090 + + L Stat.F +w090: T Frequenz // Frequenz für FC106 + + L 3000.0 // Maximal 3000 U/min ? + <=R // Ja ! + JC w091 + + T Frequenz // Frequenz für FC106 + +w091: L Frequenz + L 0.0 // Keine Geschwindigtkeit aktiv ? + ==R // Ja ! + AN sJog1 // Aber schon Jog-Geschwindigtkeit aktiv + AN sJog2 + R sAntriebvor + R sAntriebrueck + +en12: NOP 0 + +--- NW 12: Steuersignale zurücksetzen --- +RET: A Stat.A_vor // Übergabe an OP + = Stat.OP_A_vor + + A Stat.A_start + = Stat.OP_A_start + + A Stat.A_PS + = Stat.OP_A_PS + + A Stat.Stop_vor + = Stat.OP_Stop_vor + + A Stat.Stop_rueck + = Stat.OP_Stop_rueck + + L Stat.F + T Stat.OP_F + + A Stat.F1 + = Stat.OP_F1 + + A Stat.F2 + = Stat.OP_F2 + + A Stat.F3 + = Stat.OP_F3 + + L 0.0 + T Stat.F + + SET + R Stat.F1 + R Stat.F2 + R Stat.F3 + R Stat.Stop_vor + R Stat.Stop_rueck + R Stat.Stop_intern + R Stat.A_vor + R Stat.A_rueck + R Stat.A_start + R Stat.A_PS + R Stat.H_vor + R Stat.H_rueck + + +--- NW 13: Nachlaufzeit läuft --- + AN "1s-Impuls" // 1s-Impuls + ON sAntriebvor // Antrieb steht + JC Nw14 + + L Stat.T_Zelle + L 0 // Zeit steht ? + ==I // Ja ! + JC Nw14 + + L Stat.T_Zelle + + -1 + T Stat.T_Zelle + + L 0 // Zeit gerade abgelaufen ? + <=I // Ja ! + S Stat.T_Ausfertig + JCN Nw14 + + T Stat.T_Zelle + + +--- NW 14: Analog-Signal wandeln --- +Nw14: AN Stat.Analog + JC en14 + +CALL SYS "UNSCALE" (IN:=Frequenz, HI_LIM:=200.0, LO_LIM:=0.0, BIPOLAR:=FALSE, RET_VAL:=Stat.RET_VAL_FC106, OUT:=Analog) + + L Stat.RET_VAL_FC106 + L 0 // Fehler vorhanden ? + <>I // Ja ! + R sAntriebvor // Antrieb stoppen + R sAntriebrueck + +en14: NOP 0 + + +--- NW 15: Ausgänge an OP übergeben --- + A sAntriebvor + AN Stat.OP_Out_Mvor // beim letzten Zyklus war Motor nicht eingeschaltet + O + A sAntriebrueck + AN Stat.OP_Out_Mrueck // beim letzten Zyklus war Motor nicht eingeschaltet + = Neustart // Antrieb wurde erneut gestartet + + A sAntriebvor + = Stat.OP_Out_Mvor + + A sAntriebrueck + = Stat.OP_Out_Mrueck + + +--- NW 16: Verklemm-Kontrolle --- + AN Stat.Kontroll_B_verbaut // Parameter 4: Kontroll-Sensor für Bewegung ist eingebaut + R Err_Antrieb_verklemmt // Antrieb ist verklemmt (kein Kontroll_B oder dauernd aktiv) + JC en16 + + A ErrQuit + A Err_Antrieb_verklemmt // Antrieb ist verklemmt (kein Kontroll_B oder dauernd aktiv) + JC w161 + + + A Err_Antrieb_verklemmt // Antrieb ist verklemmt (kein Kontroll_B oder dauernd aktiv) + R sAntriebvor // Antrieb anhalten + R sAntriebrueck + JC en16 + + AN Kontroll_B // Sensor ist nicht aktiv + JC w160 + +// Also Sensor aktiv: + L 0 // Inaktiv-Zeit nullen + T Stat.Raster_B_inaktiv + + AN sAntriebvor // Antrieb steht + AN sAntriebrueck + ON "100ms-Impuls" // 0,1s-Impuls + JC en16 + + L Stat.Raster_B_aktiv + L "MW2" // Anzahl der 100ms-Takte + +I + T Stat.Raster_B_aktiv + L 20 // 2s erreicht ? + >=I // Ja ! + S Err_Antrieb_verklemmt // Antrieb ist verklemmt (kein Kontroll_B oder dauernd aktiv) + + JU en16 + +// Sensor inaktiv: +w160: L 0 // Aktiv-Zeit nullen + T Stat.Raster_B_aktiv + + AN sAntriebvor // Antrieb steht + AN sAntriebrueck + ON "100ms-Impuls" // 0,1s-Impuls + JC en16 + + L Stat.Raster_B_inaktiv + L "MW2" // Anzahl der 100ms-Takte + +I + T Stat.Raster_B_inaktiv + L 20 // 2s erreicht ? + >=I // Ja ! + S Err_Antrieb_verklemmt // Antrieb ist verklemmt (kein Kontroll_B oder dauernd aktiv) + + JU en16 + +w161: L 0 + T Stat.Raster_B_aktiv // Aktiv-Zeit nullen + T Stat.Raster_B_inaktiv // Inaktiv-Zeit nullen + + SET + R Err_Antrieb_verklemmt // Antrieb ist verklemmt (kein Kontroll_B oder dauernd aktiv) + +en16: NOP 0 + + +--- NW 17: Anzahl der Einschaltungen speichern --- + AN Neustart // Antrieb wurde erneut gestartet + JC en17 + + L Stat.Statistik.Einschaltungen + + DINT#1 // Anzahl der Einschaltungen +1 + T Stat.Statistik.Einschaltungen + +en17: NOP 0 + + +--- NW 18: Ausgangsvariablen schreiben --- + A sAntriebvor + = Antriebvor + + A sAntriebrueck + = Antriebrueck + + A sJog1 + = Jog1 + + A sJog2 + = Jog2 + + +--- NW 19: Gesamt-Laufzeit aufaddieren --- + AN sAntriebvor // Antrieb steht + AN sAntriebrueck + ON "1s-Impuls" // 1s-Impuls + BEC + + L Stat.Statistik.Laufzeit_s + + 1 // Laufzeit des Antriebs in Sekunden+1 + T Stat.Statistik.Laufzeit_s + L 60 // Eine Minte erreicht ? + Antrieb stoppen + Q : Bool // Eingang Motorschutz ok + Ptc : Bool // Eingang Motortemperatur ok + Fu : Bool // Eingang Frequenzumrichter ok + QKontroll : Bool // Jetzt Q-Ok-Meldung von Frequenzumrichter (nach Netz EIN) kontrollieren + FuKontroll : Bool // Jetzt Fu-Ok-Meldung von Frequenzumrichter (nach Netz EIN) kontrollieren + ErrQuit : Bool // Motorschutzstörung quittieren + Kontroll_B : Bool // Kontroll-Sensor für Bewegung + Output: + Antriebrueck : Bool // Rückwärts-Ausgang des Antriebs + Antriebvor : Bool // Vorwärts-Ausgang des Antriebs + Jog1 : Bool // Frequenz 1/3 aktivieren + Jog2 : Bool // Frequenz 2/3 aktivieren + Analog : Int // Ausgangswort für Analogwandler + InOut: + QErr : Bool // Motorschutzstörung + PtcErr : Bool // Temperaturstörung + FuErr : Bool // Frequenzumrichter ist gestört + Err_Antrieb_verklemmt : Bool // Antrieb ist verklemmt (kein Kontroll_B oder dauernd aktiv) + hStOk : Bool // Anzeige Start n. Störung aktivieren + Static: + sJog1 : Bool // Frequenz 1/3 aktivieren + sJog2 : Bool // Frequenz 2/3 aktivieren + sAntriebrueck : Bool // Rückwärts-Ausgang des Antriebs + sAntriebvor : Bool // Vorwärts-Ausgang des Antriebs + Stat : "UAntrieb_all" // Status des Antriebs + Temp: + Antriebaktiv : Bool // Antrieb ist aktiv + Neustart : Bool // Antrieb wurde erneut gestartet + Frequenz : Real // Frequenz für FC106 + Constant: + +--- NW 1: Zeitwert laden --- + AN Automatik + ON Stat.A_start + JC Nw02 + + L Stat.T_Nachlauf // Zeitwert laden + T Stat.T_Zelle + + +--- NW 2: Zeitwert löschen --- +Nw02: AN Automatik + O Stat.A_vor + O Stat.A_rueck + O BereichErr + O QErr + O FuErr + JCN Nw03 + + L 0 // Zeitwert löschen +// // T #Stat.T_Zelle + + +--- NW 3: Motorschutzstörung / Temperaturüberwachung --- +Nw03: A ErrQuit + R QErr + AN Q + A QKontroll + S QErr + + A ErrQuit + R PtcErr + AN Ptc + S PtcErr + +// Störung ist quittierbar: + A Q + A QErr + O + A Ptc + A PtcErr + S hStOk + + +--- NW 4: Frequenzumrichterstörung --- + AN Stat.Frequenz + AN Stat.Analog + JC en05 + + A ErrQuit + ON FuKontroll + R FuErr + AN Fu + A FuKontroll + S FuErr + +en05: NOP 0 + +--- NW 5: Undefinierte Zustände / Befehle (alle Antriebe) --- + A Automatik // Automatik + Hand aktiv + A Handbetrieb + O + AN Automatik // keine Betriebsart + AN Handbetrieb + O + A Stat.A_vor // Vorwärts + Rückwärts aktiv + A Stat.A_rueck + O + A Stat.H_vor + A Stat.H_rueck + O + A BereichErr // Bereichsstörung + A Automatik // Automatik aktiv + O + AN Stat.Normal // Antrieb nicht eindeutig + AN Stat.Frequenz + AN Stat.Analog + O + A Stat.Normal + A( + O Stat.Frequenz + O Stat.Analog + ) + O + A Stat.Frequenz + A Stat.Analog + O QErr // Motorschutzstörung + O + A Automatik // Automatik aktiv + A PtcErr // Temperaturstörung + JCN en06 + +Stop: SET + R sAntriebvor + R sAntriebrueck + R Stat.T_Ausfertig + R sJog1 + R sJog2 + + L 0.0 // Zeitwert/Frequenz löschen +// // T #Stat.T_Zelle + T Frequenz // Frequenz für FC106 + + JU RET + +en06: NOP 0 + +--- NW 6: Undefinierte Zustände / Befehle (Fu-Zusatz) --- + A Stat.Frequenz + A( + AN Stat.F1 // Keine Frequenz angegeben + AN Stat.F2 + AN Stat.F3 + O + A Stat.F1 // Mehrere Frequenzen angegeben + A( + O Stat.F2 + O Stat.F3 + ) + O + A Stat.F2 // Mehrere Frequenzen angegeben + A Stat.F3 + O FuErr // Frequenzumrichterstörung + ON FuKontroll // Frequenzumrichter ist eingeschaltet + ) + JC Stop + +--- NW 7: Undefinierte Zustände / Befehle (Analog-Zusatz) --- + A Stat.Analog + A( + L Stat.F // Keine Frequenz angegeben + L 0.0 + ==R + AN Stat.F1 // Keine Frequenz angegeben + AN Stat.F2 + AN Stat.F3 + O FuErr // Frequenzumrichterstörung + ON FuKontroll // Frequenzumrichter ist eingeschaltet + ) + JC Stop + + +--- NW 8: Antrieb vorwärts starten --- + A( + A Automatik // Automatik ist aktiv + AN Stat.A_rueck + A( + L Stat.T_Zelle + L 0 // Nachlaufzeit vorhanden ? + <>I // Ja ! + O Stat.A_start + O Stat.A_vor // Einschalten + ) + O + A Handbetrieb // Handbetrieb aktiv + A Stat.H_vor // Handtaste vorwärts + ) + AN Stat.Stop_vor // Stoppen + A Q // Motorschutz ok + AN QErr // Motorschutzstörung noch aktiv + = sAntriebvor + R Stat.T_Ausfertig + +--- NW 9: Antrieb rückwärts starten --- + A( + A Automatik // Automatik ist aktiv + A Stat.A_rueck // Einschalten + O + A Handbetrieb // Handbetrieb aktiv + A Stat.H_rueck // Handtaste rückwärts + ) + AN Stat.Stop_rueck // Stoppen + A Q // Motorschutz ok + AN QErr // Motorschutzstörung noch aktiv + AN sAntriebvor + = sAntriebrueck + R Stat.T_Ausfertig + +--- NW 10: Frequenz übergeben (Fu-Zusatz) --- + AN Stat.Frequenz + AN Stat.Analog + JC en11 + + A sAntriebvor + AN sAntriebrueck + O + AN sAntriebvor + A sAntriebrueck + = Antriebaktiv + + A Antriebaktiv + A( + O Stat.F1 + O Stat.F3 + ) + = sJog1 + + A Antriebaktiv + A( + O Stat.F2 + O Stat.F3 + ) + = sJog2 + + AN sJog1 // Keine Geschwindigtkeit aktiv + AN sJog2 + AN Stat.Analog // falls analoge Übergabe erfolgt + R sAntriebvor + R sAntriebrueck + +en11: NOP 0 + +--- NW 11: Frequenz übergeben (Analog-Zusatz) --- + AN Stat.Analog + JC en12 + + A sAntriebvor + AN sAntriebrueck + O + AN sAntriebvor + A sAntriebrueck + = Antriebaktiv + + L 0.0 // Falls Stop erwünscht + + AN Antriebaktiv + JC w090 + + L Stat.F +w090: T Frequenz // Frequenz für FC106 + + L 3000.0 // Maximal 3000 U/min ? + <=R // Ja ! + JC w091 + + T Frequenz // Frequenz für FC106 + +w091: L Frequenz + L 0.0 // Keine Geschwindigtkeit aktiv ? + ==R // Ja ! + AN sJog1 // Aber schon Jog-Geschwindigtkeit aktiv + AN sJog2 + R sAntriebvor + R sAntriebrueck + +en12: NOP 0 + +--- NW 12: Steuersignale zurücksetzen --- +RET: A Stat.Stop_vor // Übergabe an OP + = Stat.OP_Stop_vor + + A Stat.Stop_rueck + = Stat.OP_Stop_rueck + + L Stat.F + T Stat.OP_F + + A Stat.F1 + = Stat.OP_F1 + + A Stat.F2 + = Stat.OP_F2 + + A Stat.F3 + = Stat.OP_F3 + + + L 0.0 + T Stat.F + + SET + R Stat.F1 + R Stat.F2 + R Stat.F3 + R Stat.Stop_vor + R Stat.Stop_rueck + R Stat.Stop_intern + R Stat.A_vor + R Stat.A_rueck + R Stat.A_start + R Stat.H_vor + R Stat.H_rueck + + +--- NW 13: Nachlaufzeit läuft --- + AN "100ms-Impuls" // 0,1s-Impuls + ON sAntriebvor // Antrieb steht + JC Nw14 + + L Stat.T_Zelle + L 0 // Zeit steht ? + ==I // Ja ! + JC Nw14 + + L Stat.T_Zelle + L "MW2" // minus 0,1-Takte + -I + T Stat.T_Zelle + + L 0.0 // Zeit gerade abgelaufen ? + <=I // Ja ! + S Stat.T_Ausfertig + JCN Nw14 + + T Stat.T_Zelle + + +--- NW 14: Analog-Signal wandeln --- +Nw14: AN Stat.Analog + JC en14 + +CALL SYS "UNSCALE" (IN:=Frequenz, HI_LIM:=200.0, LO_LIM:=0.0, BIPOLAR:=FALSE, RET_VAL:=Stat.RET_VAL_FC106, OUT:=Analog) + + L Stat.RET_VAL_FC106 + L 0 // Fehler vorhanden ? + <>I // Ja ! + R sAntriebvor // Antrieb stoppen + R sAntriebrueck + +en14: NOP 0 + + +--- NW 15: Ausgänge an OP übergeben --- + A sAntriebvor + AN Stat.OP_Out_Mvor // beim letzten Zyklus war Motor nicht eingeschaltet + O + A sAntriebrueck + AN Stat.OP_Out_Mrueck // beim letzten Zyklus war Motor nicht eingeschaltet + = Neustart // Antrieb wurde erneut gestartet + + A sAntriebvor + = Stat.OP_Out_Mvor + + A sAntriebrueck + = Stat.OP_Out_Mrueck + + +--- NW 16: Verklemm-Kontrolle --- + AN Stat.Kontroll_B_verbaut // Parameter 4: Kontroll-Sensor für Bewegung ist eingebaut + R Err_Antrieb_verklemmt // Antrieb ist verklemmt (kein Kontroll_B oder dauernd aktiv) + JC en16 + + A ErrQuit + A Err_Antrieb_verklemmt // Antrieb ist verklemmt (kein Kontroll_B oder dauernd aktiv) + JC w161 + + + A Err_Antrieb_verklemmt // Antrieb ist verklemmt (kein Kontroll_B oder dauernd aktiv) + R sAntriebvor // Antrieb anhalten + R sAntriebrueck + JC en16 + + AN Kontroll_B // Sensor ist nicht aktiv + JC w160 + +// Also Sensor aktiv: + L 0 // Inaktiv-Zeit nullen + T Stat.Raster_B_inaktiv + + AN sAntriebvor // Antrieb steht + AN sAntriebrueck + ON "100ms-Impuls" // 0,1s-Impuls + JC en16 + + L Stat.Raster_B_aktiv + L "MW2" // Anzahl der 100ms-Takte + +I + T Stat.Raster_B_aktiv + L 20 // 2s erreicht ? + >=I // Ja ! + S Err_Antrieb_verklemmt // Antrieb ist verklemmt (kein Kontroll_B oder dauernd aktiv) + + JU en16 + +// Sensor inaktiv: +w160: L 0 // Aktiv-Zeit nullen + T Stat.Raster_B_aktiv + + AN sAntriebvor // Antrieb steht + AN sAntriebrueck + ON "100ms-Impuls" // 0,1s-Impuls + JC en16 + + L Stat.Raster_B_inaktiv + L "MW2" // Anzahl der 100ms-Takte + +I + T Stat.Raster_B_inaktiv + L 20 // 2s erreicht ? + >=I // Ja ! + S Err_Antrieb_verklemmt // Antrieb ist verklemmt (kein Kontroll_B oder dauernd aktiv) + + JU en16 + +w161: L 0 + T Stat.Raster_B_aktiv // Aktiv-Zeit nullen + T Stat.Raster_B_inaktiv // Inaktiv-Zeit nullen + + SET + R Err_Antrieb_verklemmt // Antrieb ist verklemmt (kein Kontroll_B oder dauernd aktiv) + +en16: NOP 0 + + +--- NW 17: Anzahl der Einschaltungen speichern --- + AN Neustart // Antrieb wurde erneut gestartet + JC en17 + + L Stat.Statistik.Einschaltungen + + DINT#1 // Anzahl der Einschaltungen +1 + T Stat.Statistik.Einschaltungen + +en17: NOP 0 + + +--- NW 18: Ausgangsvariablen schreiben --- + A sAntriebvor + = Antriebvor + + A sAntriebrueck + = Antriebrueck + + A sJog1 + = Jog1 + + A sJog2 + = Jog2 + + +--- NW 19: Gesamt-Laufzeit aufaddieren --- + AN sAntriebvor // Antrieb steht + AN sAntriebrueck + ON "1s-Impuls" // 1s-Impuls + BEC + + L Stat.Statistik.Laufzeit_s + + 1 // Laufzeit des Antriebs in Sekunden+1 + T Stat.Statistik.Laufzeit_s + L 60 // Eine Minte erreicht ? + =I + S Check_ok + JCN En03 // Negierter Sprung + + T Dyn.Wartezeit // Zeit einfrieren + +En03: NOP 0 + + +--- NW 4: Check, wer dran ist --- +// Trolley nicht mehr in Schleuse: + AN BG_Haupt_Schleuse + R "OUT.Haupt_Schleuse_starten" + + AN BG_ABP_Schleuse + R "Out.ABP_Schleuse_starten" + +// Schon entschieden: + A "OUT.Haupt_Schleuse_starten" + A BG_Haupt_Schleuse + O + A "Out.ABP_Schleuse_starten" + A BG_ABP_Schleuse + O "Haupt_Schleuse_geöffnet" + O "ABP_Schleuse_geöffnet" + BEC + +// Relevante Partner: + L Aktive_ABP + + -1 // sich selbst abziehen + T Partner + + L 0 + <=I // Kein weiterer Partner mehr! + A BG_ABP_Schleuse + S "Out.ABP_Schleuse_starten" + BEC + +// Check, wer dran ist: + L Dyn.Anzahl_Haupt // Gefahrene Trolleys + L Partner // Andere Partner, die fahren sollten + =I + A Kein_Blinken + R Kein_Blinken + JC NoAn + + A Kein_Blinken + JC En01 + + CAC + L 1 + >=I + A Error_1 + S Kein_Blinken + JC NoAn + + CAC + L 2 + >=I + A Error_2 + S Kein_Blinken + JC NoAn + + CAC + L 3 + >=I + A Error_3 + S Kein_Blinken + JC NoAn + + CAC + L 4 + >=I + A Error_4 + S Kein_Blinken + JC NoAn + + CAC + L 5 + >=I + A Error_5 + S Kein_Blinken + JC NoAn + + CAC + L 6 + >=I + A Error_6 + S Kein_Blinken + JC NoAn + + CAC + L 7 + >=I + A Error_7 + S Kein_Blinken + JC NoAn + + CAC + L 8 + >=I + A Error_8 + S Kein_Blinken + JC NoAn + + CAC + L 9 + >=I + A Error_9 + S Kein_Blinken + JC NoAn + + CAC + L 10 + >=I + A Error_10 + S Kein_Blinken + JC NoAn + + CAC + L 10 + >I + S Kein_Blinken + JC NoAn + + JU En01 + +NoAn: L 0 + T Ausschalttakte + +En01: NOP 0 + + +--- NW 2: Ende --- + BE + + diff --git a/=A01+UH06-KF00/Programmbausteine/Module/MHMOmniBereich_Plus.awl b/=A01+UH06-KF00/Programmbausteine/Module/MHMOmniBereich_Plus.awl new file mode 100644 index 0000000..f841c4a --- /dev/null +++ b/=A01+UH06-KF00/Programmbausteine/Module/MHMOmniBereich_Plus.awl @@ -0,0 +1,1317 @@ +=== FB 2275: MHMOmniBereich_Plus [STL] === +INTERFACE: + Input: + Bereichs_Nr : Int // Aufruf für Bereich + ErrQuit : Bool // Ablaufstörung quittieren + B_BereichsAnfang : Bool // Sensor Trolley fährt in Bereich + B_BereichsEnde : Bool // Sensor Trolley istam BereichsEnde + B_Zähl : Bool // Sensor Trolley hat Bereich verlassen + B_Stau_raus : Bool // Sensor Stau im Bereich rausfahren + Start_Ok : Bool // Starten ist erlauTrolley + Antrieb_Bereich_aktiv : Bool // Bereichs-Antrieb aktiv + Antrieb_plus_aktiv : Bool // Antrieb plus aktiv + RestZeit_Bereich_plus : Int := 999 // Bereich +1: Restzeit bis AFS stoppt (s) + Output: + Antrieb_Bereich_vor : Bool // Bereichs-Antrieb einschalten + Antrieb_Bereich_stop : Bool // Bereichs-Antrieb stoppen + Error : Word // Störungen übergeben + InOut: + Antrieb_Bereich_start : Bool // Bereichs-Antrieb mit Zeit starten + Antrieb_plus_vor : Bool // Antrieb plus einschalten + Antrieb_plus_start : Bool // Antrieb plus mit Zeit starten + Antrieb_minus_vor : Bool // Antrieb minus einschalten + hStOk : Bool // Anzeige Start n. Störung aktivieren + Static: + Res20 : Array[1..4] of Int // Reserve + Para : Struct // Parameter + Bereich_DL_DB : Int // Einsprung Bereich-Datenliste-DB + Frei22 : Int + Frei24 : Int + Res30 : Array[1..2] of Int // Reserve + Bereich : "UDLHMOmniBereich_Plus" // Statische Bereichdaten (aus DL) + Dyn : Struct // Dynamische Daten + Status : Struct + Trolley_kommt_in_Bereich : Bool // Trolley kommt in Bereich (Signal von Bereich-1) + Trolley_ist_im_Bereich : Bool // Trolley fährt in Bereich + Trolley_am_BereichsEnde : Bool // Trolley ist am BereichsEnde + Trolley_wartet_auf_Ziel-FC : Bool + Trolley_wartet_Bereich+1 : Bool // Trolley wartet auf Bereich +1 + Trolley_fährt_aus : Bool // Trolley fährt aus + Trolley_draussen : Bool // Trolley ist ausgefahren + Error_aktiv : Bool // Störung vorhanden + Reset_aktiv : Bool := TRUE // Reset aktiv + Anfangs-Sensor_ausgewertet : Bool + Ende-Sensor_ausgewertet : Bool + Inilauf_aktiv : Bool + Trolley an Raus-Sensor : Bool // Trolley ist am Raus-Sensor + Stau_an_Raus-Sensor : Bool // Stau an Raus-Sensor (kein Zählen mehr) + HMI : Struct + Bereich_resetten : Bool // Bereich resetten (IN:HMI, Out:PLC) + Sk : "USk_ILS" // Status der Schrittkette + Rueckmld : Struct + RET_VAL_BLKMOV_Bereich : Int // Rückmeldung nach BLKMOV-Aufruf + RET_VAL_DL_Bereich : Byte + Error : "UErrHMOmniBereich" + Stau_Zeit : Int // Sensor B_VorSep ist belegt [100ms] + Leer_Zeit : Int + Stop_Ursache : Word // Stop-Stelle: Nw + Position + Gefahrene_Trolleys : DInt // Anzahl der getätigten Vereinzelungstakte + Laufzähler : Int // Laufzähler + Wartezeit : Int // Wartezeit (kein EInfahren erlaubt) [s] + Trolley_DL : Struct // AB DW350: Liste der Trolleys im Lager + Datenlistenkopf : Struct + KOPF : Word := WORD#16#DA01 // Datenliste-Kennnung (DA) / Datensatzlänge in Word (1 - 128) + LAENGE : Int := 10 // Länge der Datenliste (maximale Anzahl der Datensätze) + STAMMDATEN : Int := 1 // Stammdatenlänge in Word (1 - 9) + INDDB : Int // Indizierter DB (nur bei Stammdaten = 1 erlaubt !!!) + LAENGEINDDB : Int // Länge des indizierten DB in Word (nur bei Stammdaten = 1 erlaubt !!!) + INDDATEN_WANDEL_FC : Int // FC zum Wandeln der indizierte Daten (nur bei Stammdaten = 1 erlaubt !!!) + LETZTERZUGRIFF : Int // Speicherung des letzten Zugriffs + Belegt14 : Int // reserviert von Sort-Datenliste + AnzahlEintraege : Int // Anzahl der eingetragenen Datensätze (nicht bei ind.Zugriff!) + Reserve18 : Int // Reserve + Trolley : Array[1..10] of Int // TrolleyZeit bis Ende (s) + Endekennung : Word := WORD#16#DAEE // Datensort-Ende-Kennung (DBEE) + Restzeit : Int // Diese Zeit hat Trolley noch zum Fahren (s) + Timer_Rein : TON_TIME + Timer_Raus : TON_TIME + Zeit_Ohne_B_In_Schleuse : Int // Trolley nicht an B_In_Schleuse + Zeit_Ohne_B_Zähl : Int // Trolley nicht an B_Zähl + Zeit_Ausfahren_Ohne_B_Zähl : Int // Trolley fährt nicht zu B_Zähl + Raus_Trolleys : Int // Anzahl der Trolleys zwischen Schleuse und Raus-Sensor + Stau_Zeit_RausSensor : Int // Sensor B_AusSep ist belegt [1s] + Res200 : Array[1..2] of Int // Reserve + Temp: + Quelle : Any // Zeiger, wo Rein-Daten sind + Ziel : Any // Zeiger, FIFO-Stelle + Ueb_akt : Bool // Überwachungszeit aktivieren + Weiter : Bool // Weiterschaltbedingung ist erfüllt + Warte_neu : Bool // Wartezeit neu triggern + Warte_stop : Bool // Wartezeit stoppen + ZielFC_vorhanden : Bool + DraussenFC_vorhanden : Bool + Trolley_draussen : Bool // Signal: Trolley ist draussen + Antriebe_starten : Bool + ZielFC : Word // Ziel-FC + DraussenFC : Word // Draussen-FC + AR1Start : DInt // Startwert mit Offset 0 + AR1Zeiger : DWord // Statt AR1 (ging nur bis DB-Länge <= 8191 Bytes) + SSDW : Int + SSDB : Int + Restzeit_errechnet : Int + Constant: + +--- NW 1: Parameter-Übergabe --- + L Bereichs_Nr + + L 274 // Einsprung Bereich-DL + T Para.Bereich_DL_DB // vor Aufruf übergeben! + + +--- NW 2: Anzeige OP --- + L 252 // Bereichsstop aktiv + AN Dyn.Sk.Bereich_ok // Also: Bereichsstop / Not-Aus + JC w010 + + L 253 + AN Dyn.Sk.Auto_akt // Keine Betriebsart + AN Dyn.Sk.Hand_akt + JC w010 + + L 255 // Handbetrieb aktiv + A Dyn.Sk.Hand_akt + JC w010 + + L Dyn.Sk.Akt_Schritt // Aktiver Schritt +w010: T Dyn.Sk.OP_Schritt + + +--- NW 3: Out-Bits zum Zurücksetzen --- + SET // Jeden Zyklus neu + R Dyn.Status."Trolley_wartet_auf_Ziel-FC" + R Dyn.Status."Trolley_wartet_Bereich+1" + R Dyn.Status.Trolley_draussen + R Antrieb_Bereich_vor + R Antrieb_Bereich_stop + + L 0 + T Restzeit_errechnet + + +--- NW 4: HMI-Zeug --- +// Von HMI: + A Dyn.HMI.Bereich_resetten + R Dyn.HMI.Bereich_resetten // von HMI + S Dyn.Sk.Reset // SK zurücksetzen + + +--- NW 5: Sensoren entprellen --- +// Rein-Sensor entprellen: + AN B_BereichsAnfang + A Dyn.Status."Anfangs-Sensor_ausgewertet" + A Antrieb_Bereich_aktiv + = "M200.0" + +CALL SYS "TON" (IN:="M200.0", PT:=t#7s, Q:=?, ET:=?) + + A Dyn.Timer_Rein.Q + R Dyn.Status."Anfangs-Sensor_ausgewertet" + +// Ende-Sensor entprellen: + AN B_BereichsEnde + A Dyn.Status."Ende-Sensor_ausgewertet" + A Antrieb_Bereich_aktiv + A Antrieb_plus_aktiv + = "M200.0" + +CALL SYS "TON" (IN:="M200.0", PT:=t#6s, Q:=?, ET:=?) + + A Dyn.Timer_Raus.Q + R Dyn.Status."Ende-Sensor_ausgewertet" + + +--- NW 6: Schrittkette zurücksetzen --- + A ErrQuit // Überwachungszeit abgelaufen quittieren + R Dyn.Sk.Err_Uebzeit + R Dyn.Error.Err_Trolley_raus // Trolley fährt nicht aus + R Dyn.Error.Err_Raus_Sensor // Raus-Sensor wird nicht erreicht (oder dauernd aktiv)! + +// Reset oder Trolley kommt am Ende nicht an: + A ErrQuit // Überwachungszeit abgelaufen quittieren + A( + A Dyn.Status.Trolley_am_BereichsEnde + AN B_BereichsEnde // Aber kein Trolley mehr am Sensor + O Dyn.Error.Err_Trolley_nicht_am_Ende // Trolley fährt nicht in Bereich + ) + O Dyn.Sk.Reset // SK zurücksetzen + JCN en04 // Negierter Sprung! + +// Schrittkette zurücksetzen: + L 0 // Schritt 0: Warten + T Dyn.Sk.Akt_Schritt + T Dyn.Raus_Trolleys + + L 0 // Zeitwert löschen + T Dyn.Sk.Terr_Zelle + T Dyn.Sk.Tok_Zelle + + SET + R Dyn.Error.Err_BLKMov // Error bei Block kopieren + R Dyn.Sk.Reset // SK zurücksetzen + R Dyn.Sk.Err_Schritt // Undefinierter Schritt + R Dyn.Sk.Err_Uebzeit // Sofort weiter ! + R Dyn.Sk.Reset_Akt // Reset ist aktiv + R Dyn.Status.Trolley_am_BereichsEnde + R Dyn.Status."Trolley_wartet_auf_Ziel-FC" + R Dyn.Status."Trolley_wartet_Bereich+1" + R Dyn.Status."Trolley_fährt_aus" + R Dyn.Status.Inilauf_aktiv + S Dyn.Status.Reset_aktiv + + SET + R Dyn.Error.Bereich_DL // Bereich-Datenliste fehlerhaft + R Dyn.Error.Undef_Bereich // undefinierter Bereich + R Dyn.Error.Err_Trolley_nicht_am_Ende // Trolley fährt nicht in Bereich + R Dyn.Error.Err_Uebzeit // Überwachungzeit ist abgelaufen + R Dyn.Error.Err_Schritt // Schritt-Nummer ist nicht definiert + R Dyn.Error.Err_Stau_Eingang + R Dyn.Error.Err_BLKMov + R Dyn.Error.Err_Trolley_raus // Trolley fährt nicht aus + R Dyn.Error.Err_Raus_Sensor // Raus-/Belade-Sensor wird nicht erreicht (oder dauernd aktiv)! + R Dyn.Error.Err11 // kein Ziel angegeben + R Dyn.Error.Err12 // Weichen-Datenliste fehlerhaft + R Dyn.Error.Err13 // undefinierte Weiche + R Dyn.Error.Err14 // Weiche bleibt belegt + R Dyn.Error.Err15 + R Dyn.Error.Err16 + + L 0 + T Dyn.Stau_Zeit // Sensor B_VorSep ist belegt [10ms] + +// Defaultwerte übergeben: + L 0 // Damit statische Werte neu aus Datenbank geholt werden ! + T Bereich.Bereichs_Nr // Nummer des Bereichs + + JU RET + +en04: NOP 0 + + +--- NW 7: Störungen nach Außen übergeben --- + L 0 + T "MW200" + + A Dyn.Error.Bereich_DL // Bereich-Datenliste fehlerhaft + = "M200.0" + A Dyn.Error.Undef_Bereich // undefinierter Bereich + = "M200.1" + A Dyn.Error.Err_Trolley_nicht_am_Ende // Trolley fährt nicht in Bereich + = "M200.2" + A Dyn.Sk.Err_Uebzeit + = Dyn.Error.Err_Uebzeit // Überwachungzeit ist abgelaufen + = "M200.3" + NEG + R Dyn.Sk.Err_Uebzeit_AnzOk + A Dyn.Sk.Err_Schritt + = Dyn.Error.Err_Schritt // Schritt-Nummer ist nicht definiert + = "M200.4" + A Dyn.Error.Err_Stau_Eingang + = "M200.5" + A Dyn.Error.Err_BLKMov // Error bei Block kopieren + = "M200.6" + A Dyn.Error.Err_Trolley_raus // Trolley fährt nicht aus + = "M200.7" + A Dyn.Error.Err_Raus_Sensor // Raus-/Belade-Sensor wird nicht erreicht (oder dauernd aktiv)! + = "M201.0" + A Dyn.Error.Err11 // Trolley-Ziel nicht bekannt + = "M201.1" + A Dyn.Error.Err12 // Weichen-Datenliste fehlerhaft + = "M201.2" + A Dyn.Error.Err13 // undefinierte Weiche + = "M201.3" + A Dyn.Error.Err14 // Weiche bleibt belegt + = "M201.4" + A Dyn.Error.Err15 + = "M201.5" + A Dyn.Error.Err16 + = "M201.6" + A Dyn.Error.Err17 + = "M201.7" + +// Andere Meldung als Überwachungszeit aktiv ?: + L "MW200" + L 2#1111_0111_1111_1111 + AW + L 2#0000_0000_0000_0000 // Andere Meldung als Üb.zeit aktiv ? + <>I // Ja ! + ON Dyn.Sk.Err_Uebzeit_AnzOk // Störung anzeigen ok, da 2.Zyklus aktiv ! + R "M200.3" // Üb.Zeit-Meldung nicht an PC senden + + A Dyn.Sk.Err_Uebzeit + S Dyn.Sk.Err_Uebzeit_AnzOk // Störung anzeigen ok, da 2.Zyklus aktiv ! + + L "MW200" + T Error // Schnittstelle nach Außen + +// Störung vorhanden: + L 0 + <>I // Ja ! + = Dyn.Status.Error_aktiv + S hStOk + +// Antrieb stoppen: + A( + ON Dyn.Sk.Auto_akt // SystemVoraussetzungen fehlen + O Dyn.Sk.Hand_akt + ON Dyn.Sk.Bereich_ok + ) + S Antrieb_Bereich_stop // Antrieb stoppen + +// Störungen pro Zyklus neu erzeugen: + SET + R Dyn.Error.Bereich_DL // Bereich-Datenliste fehlerhaft + R Dyn.Error.Undef_Bereich // undefinierter Bereich +// / R #Dyn.Error.Err_Trolley_nicht_in_Bereich//Trolley fährt nicht in Bereich +// / R #Dyn.Error.Err_Uebzeit //Überwachungzeit ist abgelaufen + R Dyn.Error.Err_Schritt // Schritt-Nummer ist nicht definiert +// / R #Dyn.Error.Err_Stau_Einfahrt//Betriebsart ist nicht möglich + R Dyn.Error.Err_BLKMov +// / R #Dyn.Error.Err_Trolley_raus//Trolley fährt nicht aus +// / R #Dyn.Error.Err_Raus_Sensor//Raus-/Belade-Sensor wird nicht erreicht (oder dauernd aktiv)! + R Dyn.Error.Err11 // Trolley-Ziel nicht bekannt + R Dyn.Error.Err12 // Weichen-Datenliste fehlerhaft + R Dyn.Error.Err13 // undefinierte Weiche + R Dyn.Error.Err14 // Weiche bleibt belegt + R Dyn.Error.Err15 // undefinierte Weiche + R Dyn.Error.Err16 // Weiche bleibt belegt + R Dyn.Error.Err17 + + +--- NW 8: Statische Bereich-Parameter holen --- + L Bereich.Bereichs_Nr // Nummer des Bereichs + L Bereichs_Nr // Aufruf-Parameter + ==I // Identisch ? + R Dyn.Error.Bereich_DL // Bereichdatenbank fehlerhaft + R Dyn.Error.Undef_Bereich // undefinierter Bereich + JC en06 // Ja ! + + T "MW200" // Search-Daten + +CALL FC "DatenOut" (SSDB:=Para.Bereich_DL_DB, SSDW:=0, PARA:=WORD#16#0000, SEARCHDATEN:=P#M200.0, RE_VAL:="MB199", OUTDATEN:=P#M220.0, Position:="MW196") + + L "MB199" + T Dyn.Rueckmld.RET_VAL_DL_Bereich // Rückmeldung bei Datenbank-Zugriff (Gefälle-DL) + + JBI G_Ok + + A "M199.0" + JCN w060 + + SET + = Dyn.Error.Bereich_DL // Bereichdatenbank fehlerhaft + + L 16#A061 + T Dyn.Stop_Ursache + + JU RET + +w060: SET + S Dyn.Error.Undef_Bereich // undefinierter Bereich + + L 16#A062 + T Dyn.Stop_Ursache + + JU RET + +// Kennung + Datenbytes +G_Ok: SET + R Dyn.Error.Bereich_DL // Gefälledatenbank fehlerhaft + R Dyn.Error.Undef_Bereich // undefinierte Gefällestrecke + + L 16#1004 // Kennung 10 + Word=04 + T LW0 // Any-Kennung, Datentyp + L 20 // Datenwords speichern + T LW2 // Wiederholungen + +// Quelle-Pointer erzeugen: + L 0 // Bei Merker = 0 ! + T LW4 // DB_Nummer + L 220 // Adresse + SLD 3 + L 16#8300_0000 // Kennung: Merker + OD + T LD6 // Kennung, Adresse + +CALL SYS "BLKMOV" (SRCBLK:=Quelle, RET_VAL:=Dyn.Rueckmld.RET_VAL_BLKMOV_Bereich, DSTBLK:=Bereich) // Datenliste-Daten speichern | #Ziel + + L 16#A063 + T Dyn.Stop_Ursache + + L Dyn.Rueckmld.RET_VAL_BLKMOV_Bereich // Rückmeldung + L 0 // Fehler vorhanden ? + <>I // Ja ! + = Dyn.Error.Err_BLKMov // Error bei Block kopieren + JC RET + + L Bereich.Bereichs_Typ // Bereichtyp = 174 (Normal) + L 2275 // Dieser Aufruf-FB ? + ==I // Ja ! + JC w061 + + SET + S Dyn.Error.Undef_Bereich // undefinierter Bereich + + L 0 // Bereich ungültig ! + T Bereich.Bereichs_Nr // Nummer des Bereichs + + L 16#A064 + T Dyn.Stop_Ursache + + JU RET + +// Defaultwerte übergeben: +w061: NOP 0 + + JU RET + +en06: NOP 0 + + +--- NW 9: Trolleydaten auf Förderer vorhanden --- + L Dyn.Trolley_DL.Datenlistenkopf.AnzahlEintraege + L 0 // Trolleys im Bereich? + >I // Ja! + O Dyn.Status.Inilauf_aktiv + O Dyn.Status.Reset_aktiv // Reset ist aktiv + = Dyn.Status.Trolley_ist_im_Bereich + + +--- NW 10: Antrieb zusätzlich starten / stoppen --- +// Antrieb -1: + A( + O Dyn.Error.Err_Stau_Eingang // Stau bei Einfahrt + O Dyn.Status."Anfangs-Sensor_ausgewertet" + ) + A Antrieb_Bereich_aktiv + S Antrieb_minus_vor + +// Bereichs-Antrieb starten: + A ErrQuit // Überwachungszeit abgelaufen quittieren + O + A B_BereichsAnfang + AN Dyn.Error.Err_Stau_Eingang // Stau bei Einfahrt (Quittierung oder Sensor=0, wegen Bürstenantrieb + O Dyn.Status.Trolley_kommt_in_Bereich // Signal von Bereich-1 + O Dyn.Status.Trolley_ist_im_Bereich + O Dyn.Status."Trolley_fährt_aus" + O Dyn.Status."Anfangs-Sensor_ausgewertet" + O Dyn.Status."Ende-Sensor_ausgewertet" + O Dyn.Status.Inilauf_aktiv + O Dyn.Status.Reset_aktiv + S Antrieb_Bereich_start // Antrieb starten + +// Bereichsantrieb vor: + A Dyn.Status.Trolley_kommt_in_Bereich // Signal von Bereich-1 + O B_BereichsAnfang + O Dyn.Status."Trolley_fährt_aus" + S Antrieb_Bereich_vor + R Dyn.Status.Trolley_kommt_in_Bereich // Signal von Bereich-1 (Zyklus) + +// Bereichs-Antrieb stoppen: + A Dyn.Error.Err_Trolley_nicht_am_Ende + O + A Dyn.Status.Trolley_am_BereichsEnde + AN Dyn.Status."Trolley_fährt_aus" + O + A Dyn.Status."Trolley_fährt_aus" + A Bereich.Parameter_allg.Antrieb_Plus_vorhanden // Bereich an weiterem Antrieb (Weiche) + AN Antrieb_plus_aktiv // //Antrieb plus aktiv + S Antrieb_Bereich_stop // Antrieb stoppen + +// Antrieb +1: + L Dyn.Raus_Trolleys + L 0 // Trolles unterwegs? + >I // Ja! + AN Dyn.Status."Stau_an_Raus-Sensor" // Stau an Raus-Sensor + O Dyn.Status."Trolley_fährt_aus" + S Antrieb_plus_start // Antrieb plus starten + S Antrieb_plus_vor // Antrieb plus einschalten + + +--- NW 11: Plus: Trolley ist an Zähl-/Stau-Sensor --- + A "B_Zähl" + = Trolley_draussen + + A Trolley_draussen + JC B_Raus + + AN Dyn.Status."Trolley an Raus-Sensor" + AN Dyn.Status."Stau_an_Raus-Sensor" + ON "100ms-Impuls" + ON Dyn.Sk.Bereich_ok + JC En10 + + L Dyn."Zeit_Ohne_B_Zähl" + + 1 // Zeit ohne Sensor +100ms + T Dyn."Zeit_Ohne_B_Zähl" + +// B-Raus lange genug frei?: + L 10 // Nach ca. 1s + >=I + AN Dyn.Status."Stau_an_Raus-Sensor" + JC RDel + + CAC + L 200 // Nach ca. 20s + >=I + JC RDel + + JU En10 + +RDel: SET + R Dyn.Status."Trolley an Raus-Sensor" + L 0 + T Dyn."Zeit_Ohne_B_Zähl" + T Dyn.Stau_Zeit_RausSensor + +// War Stau?: + A Dyn.Status."Stau_an_Raus-Sensor" + R Dyn.Status."Stau_an_Raus-Sensor" + JCN En10 + + L 0 // Bisher gefahrene Trolleys löschen + T Dyn.Raus_Trolleys + T Dyn."Zeit_Ohne_B_Zähl" + T Dyn.Stau_Zeit_RausSensor + + JU En10 + +B_Raus: L 0 + T Dyn."Zeit_Ohne_B_Zähl" + T Dyn."Zeit_Ausfahren_Ohne_B_Zähl" + +// Einmalig: + AN Dyn.Status."Trolley an Raus-Sensor" + S Dyn.Status."Trolley an Raus-Sensor" // Raus-Sensor ausgewertet + JCN Xn10 // Negierter Sprung + + L Dyn.Raus_Trolleys + + -1 // Ausgefahrene Trolleys -1 + T Dyn.Raus_Trolleys + + L 0 + >=I + JC Xn10 + + T Dyn.Raus_Trolleys // Minimum übergeben + +// Stau an B_Raus: +Xn10: AN "100ms-Impuls" + O Dyn.Status."Stau_an_Raus-Sensor" + JC En10 + + L Dyn.Stau_Zeit_RausSensor + + 1 // StauZeit +1 + T Dyn.Stau_Zeit_RausSensor + + L 90 // Nach ca. 9s + >=I + JCN En10 // Negierter Sprung + + L 0 // Zeit löschen + T Dyn.Stau_Zeit_RausSensor + + SET + S Dyn.Status."Stau_an_Raus-Sensor" + +En10: NOP 0 + + +--- NW 12: Plus: Trolley fährt nicht bis Zähl-Sensor --- + L Dyn.Raus_Trolleys + L 0 // Trolles unterwegs? + ==I // Nein! + O Trolley_draussen // Sensor wurde erreicht + O Dyn.Status.Reset_aktiv + JC RTTD + + AN Antrieb_plus_aktiv + A Bereich.Parameter_allg.Antrieb_Plus_vorhanden + ON "1s-Impuls" + O Dyn.Error.Err_Raus_Sensor // Trolley fährt nicht aus + JC En12 + + L Dyn."Zeit_Ausfahren_Ohne_B_Zähl" + + 1 + T Dyn."Zeit_Ausfahren_Ohne_B_Zähl" + +// Trolley fährt nicht bis Zähl-Sensor!: + L Bereich."Übzeit_aus_Bereich" + >=I + S Dyn.Error.Err_Raus_Sensor // Trolley fährt nicht aus + JCN En12 // Negierter Sprung! + + L Dyn.Raus_Trolleys + + -1 + T Dyn.Raus_Trolleys + + JU En12 + +RTTD: L 0 + T Dyn."Zeit_Ausfahren_Ohne_B_Zähl" + + SET + R Dyn.Error.Err_Raus_Sensor // Trolley fährt nicht aus + +En12: NOP 0 + + +--- NW 13: Laufzähler --- + AN Antrieb_Bereich_aktiv + ON "1s-Impuls" + JC X900 + + L Dyn."Laufzähler" + + +1 + T Dyn."Laufzähler" + +// Laufzähler rücksetzen?: + A Dyn.Status.Trolley_ist_im_Bereich + JC Warte + + L 1 // Rücksetzen + T Dyn."Laufzähler" + +Warte: L Dyn.Wartezeit + + -1 + T Dyn.Wartezeit + + L 0 // Minimum unterschritten? + >=I // Nein! + JC X900 + + T Dyn.Wartezeit // Minimum übergeben + +X900: NOP 0 + + +--- NW 14: Anfangs-Sensor auswerten --- + L Bereich.Bereich_Dyn_DB + T SSDB + + L Bereich.Bereich_Dyn_DW + L 110 + +I + T SSDW + + A B_BereichsAnfang + A Antrieb_Bereich_aktiv + AN Dyn.Status."Anfangs-Sensor_ausgewertet" + S Dyn.Status."Anfangs-Sensor_ausgewertet" + JCN ReinEn // Negierter Sprung + +// Abstand schon gespeichert?: + L Bereich.Fahrzeit + L 1 // Sinnvoller Wert? + <=I // Nein ! + L 999 // Bei Inilauf + T "MW220" + S Dyn.Status.Inilauf_aktiv + JC Save + + L Bereich.Fahrzeit + L Dyn."Laufzähler" + +I // Abstand dazu addieren + T "MW220" + +// Eintrag in Trolley-Bereichsliste +Save: CALL FC "DatenIn" (SSDB:=SSDB, SSDW:=SSDW, INDATEN:=P#M220.0, RE_VAL:="MB199") + +// Wartezeit (Einlagern blöckieren) speichern: + L 6 // 6s wegen nach 5s draussen + T Dyn.Wartezeit // Damit genügend Abstand zwischen 2 Trolleys + +ReinEn: NOP 0 + + +--- NW 15: Ende-Sensor auswerten --- + A ErrQuit // Überwachungszeit abgelaufen quittieren + A Dyn.Error.Err_Trolley_nicht_am_Ende // Trolley fährt nicht in Bereich + R Dyn.Error.Err_Trolley_nicht_am_Ende // Trolley fährt nicht in Bereich + S Antrieb_Bereich_start + JC Delete + + A B_BereichsEnde + A( + O Antrieb_Bereich_aktiv + O Dyn.Error.Err_Trolley_nicht_am_Ende + ) + AN Dyn.Status."Ende-Sensor_ausgewertet" + S Dyn.Status."Ende-Sensor_ausgewertet" + JCN EndeEn // Negierter Sprung + + A Dyn.Status.Inilauf_aktiv + R Dyn.Status.Inilauf_aktiv + JCN Delete // Negierter Sprung + + L Dyn."Laufzähler" + + -3 // damit mehr Sicherheit! + T Bereich.Fahrzeit // Abstand speichern + +// /Austrag aus Trolley-Bereichsliste +Delete: CALL FC "DatenOut" (SSDB:=SSDB, SSDW:=SSDW, PARA:=16#F100, SEARCHDATEN:="MW220", RE_VAL:="MB199", OUTDATEN:="MW220", Position:="MW196") // 1.Datensatz lesen + +CALL FC "DatenOut" (SSDB:=SSDB, SSDW:=SSDW, PARA:=16#E100, SEARCHDATEN:="MW220", RE_VAL:="MB199", OUTDATEN:="MW220", Position:="MW196") // Angegebenen Datensatz austragen + +EndeEn: NOP 0 + + +--- NW 16: Restzeit ermitteln --- +// Keine Daten gespeichert?: + AN Dyn.Status.Trolley_ist_im_Bereich + L 999 // Einfahren erlaubt + JU Rest // Aktuell ohne Berechnung + +// Auswertung des nächsten Trolleys: +CALL FC "DatenOut" (SSDB:=SSDB, SSDW:=SSDW, PARA:=16#F100, SEARCHDATEN:="MW220", RE_VAL:="MB199", OUTDATEN:="MW220", Position:="MW196") // 1.Datensatz lesen + + L "MW220" // Bei dieser Zeit wird Trolley am B_BereichsEnde erwartet + L Dyn."Laufzähler" + -I + T Restzeit_errechnet +Rest: T Dyn.Restzeit + +// Restzeit nullen?: +// Laufzähler-Überlauf oder sonst Einfahrt blockieren: + L Dyn."Laufzähler" + L 32000 // wird zu groß? + >I // Ja ! + O Dyn.Status.Inilauf_aktiv + O Dyn.Status.Reset_aktiv + O Dyn.Status.Error_aktiv + O Dyn.Status."Anfangs-Sensor_ausgewertet" + O( + L Dyn.Sk.Akt_Schritt + L 0 // Warten auf Trolley? + <>I // //Nein, also am Ende, fährt aus,...! + ) + O( + L Dyn.Wartezeit // Damit genügend Abstand zwischen 2 Trolleys + L 0 // Einfahren noch blockieren ? + >I // Ja! + ) + JC KeinEinfahren // Einfahren nicht erlaubt + + L Dyn.Restzeit + L 0 // sinnvoller Wert? + >=I // Ja! + A( + L Dyn.Trolley_DL.Datenlistenkopf.AnzahlEintraege + L Dyn.Trolley_DL.Datenlistenkopf.LAENGE + I // Ja! + = ZielFC_vorhanden + + L Bereich.Draussen_FC + T DraussenFC + L 0 // Parameter vorhanden ? + >I // Ja! + = DraussenFC_vorhanden + + +--- NW 18: Error: Stau Bereich-Eingang --- +// Sensor bei Bereichs-Einfahrt bleibt belegt?: + AN B_BereichsAnfang // Sensor Trolley fährt in Bereich (kein Stau !) + O ErrQuit + R Dyn.Error.Err_Stau_Eingang // Stau bei Einfahrt + JC X090 // StauZeit neu aufziehen + + AN "1s-Impuls" + ON Antrieb_Bereich_aktiv + O Dyn.Error.Err_Stau_Eingang // Zeit bereits abgelaufen + JC Xn09 + + L Dyn.Stau_Zeit // Sensor B_VorSep ist belegt [1s] + + +1 + T Dyn.Stau_Zeit // Sensor B_VorSep ist belegt [1s] + + L 10 // Stau-Zeit erreicht ? + >=I // Ja ! + S Dyn.Error.Err_Stau_Eingang // Stau bei Einfahrt (Quittierung oder Sensor=0, wegen Bürstenantrieb + JCN Xn09 + +X090: L 0 // Zeiten löschen + T Dyn.Stau_Zeit // Sensor B_VorSep ist belegt [1s] + +Xn09: NOP 0 + + +--- NW 19: Schrittkette anhalten --- + A Dyn.Sk.Auto_akt // Automatik ist aktiv + A Dyn.Sk.Bereich_ok + CLR + + JU en08_Mig // Schrittkette nicht anhalten ! + + SET + R Dyn.Sk.Err_Uebzeit // Störungen löschen + R Dyn.Sk.Err_Schritt + + L 0 // Zeitwerte löschen + T Dyn.Sk.Terr_Zelle + T Dyn.Sk.Tok_Zelle + + JU RET + +en08_Mig: NOP 0 + + +--- NW 20: Sprungverteiler --- + L Dyn.Sk.Neu_Schritt // Schritt, der im nächsten Zyklus aktiv werden soll + L -1 // angegeben ? + ==I // Nein ! + JC NEU + + CAC // Neuen Schritt übergeben + T Dyn.Sk.Akt_Schritt + + L -1 // Urzustand + T Dyn.Sk.Neu_Schritt // Schritt, der im nächsten Zyklus aktiv werden soll + +NEU: SET + R Warte_neu // Wartezeit neutriggern + R Warte_stop // Wartezeit stoppen + + L Dyn.Sk.Akt_Schritt + JL Ende + JU s000 // Schritt 0 + JU s001 // Schritt 1 + JU s002 // Schritt 2 + JU s003 // Schritt 3 + JU s004 // Schritt 4 + JU s005 // Schritt 5 + JU s006 // Schritt 6 + JU s007 // Schritt 7 + JU s008 // Schritt 8 + JU s009 // Schritt 9 + JU s010 // Schritt 10 + JU s011 // Schritt 11 + JU s012 // Schritt 12 + JU s013 // Schritt 13 + JU s014 // Schritt 14 + JU s015 // Schritt 15 + JU s016 // Schritt 16 + JU s017 // Schritt 17 + JU s018 // Schritt 18 + JU s019 // Schritt 19 + JU s020 // Schritt 20 + JU s021 // Schritt 21 + JU s022 // Schritt 22 + JU s023 // Schritt 23 + JU s024 // Schritt 24 + JU s025 // Schritt 25 + JU s026 // Schritt 26 + JU s027 // Schritt 27 + JU s028 // Schritt 28 + JU s029 // Schritt 29 + JU s030 // Schritt 30 +Ende: S Dyn.Sk.Err_Schritt // Undefinierter Schritt + + L 16#A131 + T Dyn.Stop_Ursache + + JU RET + +Neu_Mig: A Dyn.Sk.Err_Uebzeit + JCN Sk + + L 16#A132 + T Dyn.Stop_Ursache + + JU RET + +Sk: T Dyn.Sk.Akt_Schritt + + L 0 // Zeitwerte löschen + T Dyn.Sk.Terr_Zelle + T Dyn.Sk.Tok_Zelle + + JU NEU + +// Nicht programmierte Schritte: +// s000: SPA Ende +// s001: SPA Ende +// s002: SPA Ende +// s003: SPA Ende +// s004: SPA Ende +// s005: SPA Ende +s006: JU Ende +s007: JU Ende +s008: JU Ende +s009: JU Ende +s010: JU Ende +s011: JU Ende +s012: JU Ende +s013: JU Ende +s014: JU Ende +s015: JU Ende +s016: JU Ende +s017: JU Ende +s018: JU Ende +s019: JU Ende +s020: JU Ende +s021: JU Ende +s022: JU Ende +s023: JU Ende +s024: JU Ende +s025: JU Ende +s026: JU Ende +s027: JU Ende +s028: JU Ende +s029: JU Ende +s030: JU Ende + + +--- NW 21: Schritt X: Reserve --- + SET // Weiterschaltbedingung + = Weiter + +// Schrittaktionen: + SET + + L 16#B001 + T Dyn.Stop_Ursache + + A Weiter // Weiterschaltbedingung ist erfüllt + R Dyn.Sk.Err_Uebzeit // Sofort weiter ! + L 0 // Angabe der Wartezeit (*10ms) + JC Plus // Nächsten Schritt starten + + L 1 // Weiter mit Schritt 1 + JC Neu_Mig // Bei diesem Schritt weiter + + SET + A Dyn.Sk.Auto_akt // Automatik ist aktiv + A Dyn.Sk.Bereich_ok + = Ueb_akt // Überwachungszeit aktivieren + L 50 // Angabe der Überwachungszeit (*1s) + JU tueb // Überwachungszeit + + JU RET + + +--- NW 22: Schritt 0: Warten auf Trolley am Bereichs-Ende --- +s000: SET // Weiterschaltbedingung + A B_BereichsEnde // Trolley im Bereich erkannt + A( + O Antrieb_Bereich_aktiv + O Dyn.Error.Err_Trolley_nicht_am_Ende + ) + = Weiter + +// Schrittaktionen: + SET + R Dyn.Error.Err_Trolley_raus + +// Antriebe: +// siehe Nw10 + + A Weiter // Weiterschaltbedingung ist erfüllt + R Dyn.Sk.Err_Uebzeit // Sofort weiter ! + L 0 // Angabe der Wartezeit (*10ms) + JC Plus // Nächsten Schritt starten + + L 16#B001 + T Dyn.Stop_Ursache + +// Überwachungszeit starten: + A Dyn.Status.Trolley_ist_im_Bereich + A Antrieb_Bereich_aktiv + = Ueb_akt // Überwachungszeit aktivieren + +// Reset aktiv? + A Dyn.Status.Reset_aktiv + A Dyn.Sk.Err_Uebzeit + R Dyn.Sk.Err_Uebzeit + JC Reset_fertig + + L Restzeit_errechnet + L -20 // Trolley schon 20s überfällig + Kein Trolley drin! + A Dyn.Sk.Err_Uebzeit + JCN X000 // Negierter Sprung + + SET + R Dyn.Sk.Err_Uebzeit + R Dyn.Error.Err_Trolley_nicht_am_Ende + + JU Delete // Trolley aus Liste löschen + +X000: L Bereich."Übzeit_in_Bereich" + JU tueb // Überwachungszeit + +Reset_fertig: SET + R Dyn.Status.Reset_aktiv + R Dyn.Status.Inilauf_aktiv + + L 0 + T Dyn.Raus_Trolleys + +// Trolleydaen löschen: +CALL FC "DatenReset" (SSDB:=SSDB, SSDW:=SSDW, RE_VAL:="MB199") + + JU ENDE_Mig + + +--- NW 23: Schritt 1: Trolley ist am Bereichsende --- +s001: NOP 0 +// Schrittaktionen: + SET + = Weiter + R Dyn.Error.Err_Trolley_nicht_am_Ende + + AN Weiter + JC RET + + L 2 // Weiter mit Schritt 2 (Ziel-FC?) + JU Neu_Mig // Bei diesem Schritt weiter + + +--- NW 24: Schritt 2: Ziel-FC --- +s002: NOP 0 + +// Schrittaktionen: + SET + S Dyn.Status.Trolley_am_BereichsEnde + S Dyn.Status."Trolley_wartet_auf_Ziel-FC" + + AN ZielFC_vorhanden + R Dyn.Status."Trolley_wartet_auf_Ziel-FC" + L 3 // Weiter mit Schritt 3 (Ausfahren ok?) + JC Neu_Mig // Bei diesem Schritt weiter + + SET // Rückmeldungen erst mal resetten + R "M180.6" // Weiterfahrt von Ziel-FC erlaubt + L Bereichs_Nr // Bereich-Nr. + T "MW190" // übergeben + L 0 // Erst mal nullen + T "MW194" // übergeben + T "MW196" // übergeben + T "MW198" // Weichenziel + + UC DB[ZielFC] // Beeinflussung der Weiterfahrt + + L 16#B102 + T Dyn.Stop_Ursache + + AN "M180.6" // Weiterfahrt von Ziel-FC erlaubt + JC RET + + L 3 // Weiter mit Schritt 3 (Ausfahren ok?) + JU Neu_Mig // Bei diesem Schritt weiter + + +--- NW 25: Schritt 3: Start ok ? --- +s003: NOP 0 + +// Schrittaktionen: + +// Anlage aus oder Störung: + L 16#B031 + T Dyn.Stop_Ursache + + AN Dyn.Sk.Auto_akt // Automatik ist aktiv + ON Dyn.Sk.Bereich_ok // Bereich ist gestört + JC X003 + +// Starten erlaut Trolley ?: + L 16#B032 + T Dyn.Stop_Ursache + + AN Start_Ok // Starten ist erlaubt + JC X003 + +// Stau im Bereich +1: + L 16#B033 + T Dyn.Stop_Ursache + + SET + S Dyn.Status."Trolley_wartet_Bereich+1" + + A B_Stau_raus // Sensor Stau im Bereich rausfahren + JC X003 + +// B_Aus_Bereich aktiv: + L 16#B034 + T Dyn.Stop_Ursache + + L Dyn.Raus_Trolleys + L 0 // Trolleys schon unterwegs? + <>I // Ja! + A Dyn.Status."Trolley an Raus-Sensor" + O Dyn.Status."Stau_an_Raus-Sensor" + = Dyn.Error.Err_Raus_Sensor // Raus-Sensor wird nicht erreicht (oder dauernd aktiv)! + JC X003 + +// Zu viele Raus-Trolleys unterwegs: + L 16#B027 + T Dyn.Stop_Ursache + + L Dyn.Raus_Trolleys // Gestartete Trolleys + L Bereich.MaxRausTrolleys // Erlaubte Anzahl gestarteter Trolleys + >=I + JC X003 + +// Antriebe aktivieren / aktiv ?: + A Bereich.Parameter_allg.Antrieb_Plus_vorhanden // Bereich an weiterem Antrieb (Weiche) + S Antrieb_plus_vor // Antrieb plus einschalten + + A( + O Antrieb_plus_aktiv // Antrieb plus aktiv + ON Bereich.Parameter_allg.Antrieb_Plus_vorhanden // Bereich an weiterem Antrieb (Weiche) + ) + S Antrieb_Bereich_vor // Antrieb einschalten + + L 16#B036 + T Dyn.Stop_Ursache + + AN Antrieb_plus_aktiv // Antrieb plus aktiv + A Bereich.Parameter_allg.Antrieb_Plus_vorhanden // Bereich an weiterem Antrieb (Weiche) + JC X003 + + SET + R Dyn.Error.Err_Trolley_raus // Trolley fährt nicht aus + + L Dyn.Raus_Trolleys + + 1 // Gestartete Trolleys + 1 + T Dyn.Raus_Trolleys + + L 4 // Weiter mit Schritt 4 (Trolley fährt aus) + JU Neu_Mig // Bei diesem Schritt weiter + +X003: L 2 // Beginn mit Schritt 2 (Ziel-FC?) + T Dyn.Sk.Neu_Schritt + JU RET + + +--- NW 26: Schritt 4: Trolley fährt aus ? --- +s004: SET // Weiterschaltbedingung + AN B_BereichsEnde // Sensor Trolley ist in Bereich + A Antrieb_Bereich_aktiv + A( + O Antrieb_plus_aktiv // Antrieb plus aktiv + ON Bereich.Parameter_allg.Antrieb_Plus_vorhanden // Bereich an weiterem Antrieb (Weiche) + ) + = Weiter + +// Schrittaktionen: + SET + S Dyn.Status."Trolley_fährt_aus" + +// Antriebe: +// siehe Nw10 + +// 5 s ohne Trolley-Signal: + A Weiter // Weiterschaltbedingung ist erfüllt + R Dyn.Sk.Err_Uebzeit // Sofort weiter ! + R Dyn.Error.Err_Trolley_raus // Trolley fährt nicht aus + L 500 // Angabe der Wartezeit (*10ms) + JC Plus // Nächsten Schritt starten + +// Trolley fährt nicht aus: + A Dyn.Sk.Err_Uebzeit + S Dyn.Error.Err_Trolley_raus // Trolley fährt nicht aus + +// Automatisches löschen, falls Sensor spinnt: + AN B_BereichsEnde // Sensor Trolley ist in Bereich + A Dyn.Error.Err_Trolley_raus // Trolley fährt nicht aus + A Dyn.Sk.Err_Uebzeit + R Dyn.Sk.Err_Uebzeit + R Dyn.Error.Err_Trolley_raus // Trolley fährt nicht aus + + L 16#B041 + T Dyn.Stop_Ursache + + A Antrieb_plus_aktiv + = Ueb_akt // Überwachungszeit aktivieren + L 20 // Angabe der Überwachungszeit (*1s) + JU tueb // Überwachungszeit + + +--- NW 27: Schritt 5: Trolley ist draussen --- +s005: NOP 0 + +// Trolley hat Bereich verlassen: + SET + S Dyn.Status.Trolley_draussen // 1 Zyklus + R Dyn.Status.Trolley_am_BereichsEnde + R Dyn.Status."Trolley_fährt_aus" + + L Dyn.Gefahrene_Trolleys + + DINT#1 // Gefahrene Trolleys +1 + T Dyn.Gefahrene_Trolleys + +// Draussen-FC ?: + AN DraussenFC_vorhanden + JC NoFC // Bei diesem Schritt weiter + + L Bereichs_Nr // Bereich-Nr. + T "MW190" + + L 0 + T "MW198" + + UC DB[DraussenFC] // z.Bsp. Daten anpassen + +NoFC: JU ENDE_Mig + + +--- NW 28: Schrittkette beenden --- +ENDE_Mig: L 0 // Schritt 0: Warten + T Dyn.Sk.Akt_Schritt + + L 0 // Zeitwert löschen + T Dyn.Sk.Terr_Zelle + T Dyn.Sk.Tok_Zelle + + SET + R Dyn.Sk.Err_Uebzeit + + JU RET + + +--- NW 29: Nächsten Schritt aktivieren --- +Plus: T Dyn.Sk.T_ok // Wartezeit übergeben + + A Dyn.Sk.Err_Uebzeit // Störung noch nicht quittiert + JC RET + + L 0 // keine Wartezeit ? + ==I // Ja ! -> sofort weiter + JC w220 + + AN Warte_neu // Wartezeit neutriggern + JC W220_Mig + + L 0 + T Dyn.Sk.Tok_Zelle // Wartezeit + +W220_Mig: A Warte_stop // Wartezeit stoppen + JC RET + + L Dyn.Sk.Tok_Zelle + L "MW4" // Wartezeit +10ms + +I + T Dyn.Sk.Tok_Zelle // Wartezeit + L Dyn.Sk.T_ok // abgelaufen ? + I // abgelaufen ? + AN Dyn.Sk.Err_Uebzeit + JC en24 // Nein ! + + A Ueb_akt // Überwachungszeit aktivieren + S Dyn.Sk.Err_Uebzeit + + L 0 // Zeitwert löschen + T Dyn.Sk.Terr_Zelle + + JU RET + +en24: NOP 0 + +--- NW 31: Überwachungszeit +1 --- + AN Dyn.Sk.Ueb_akt // Schrittaktion ist aktiv + ON "1s-Impuls" + JC RET + + L Dyn.Sk.Terr_Zelle + + 1 // Üb.zeit +1s + T Dyn.Sk.Terr_Zelle + + JU RET + + +--- NW 32: Return --- +RET: NOP 0 + + +--- NW 33: Ende --- + BE + diff --git a/=A01+UH06-KF00/Programmbausteine/Module/MHMOmniSchleuse.awl b/=A01+UH06-KF00/Programmbausteine/Module/MHMOmniSchleuse.awl new file mode 100644 index 0000000..a52514a --- /dev/null +++ b/=A01+UH06-KF00/Programmbausteine/Module/MHMOmniSchleuse.awl @@ -0,0 +1,2402 @@ +=== FB 1274: MHMOmniSchleuse [STL] === +INTERFACE: + Input: + Schleusen_Nr : Int // Aufruf für Schleuse + ErrQuit : Bool // Ablaufstörung quittieren + B_VorSchleuse : Bool // Sensor Trolley fährt in Bereich + B_InSchleuse : Bool // Sensor Trolley ist in Schleuse + B_AusSchleuse : Bool // Sensor Trolley hat Schleuse verlassen + B_Stau_raus : Bool // Sensor Stau im Bereich rausfahren + Start_Ok : Bool // Starten ist erlauTrolley + Antrieb_Schleuse_aktiv : Bool // Kreisel-Antrieb aktiv + Antrieb_plus_aktiv : Bool // Kreisel-Antrieb plus aktiv + Schleuse_geöffnet : Bool // Schleuse hat geöffnet + RestZeit_Bereich_plus : Int := 999 // Bereich +1: Restzeit bis AFS stoppt (s) + Output: + Y_Schleuse_Auf : Bool // Schleuse öffnen + Error : Word // Störungen übergeben + InOut: + Antrieb_Schleuse_vor : Bool // Schleusen-Antrieb einschalten + Antrieb_Schleuse_start : Bool // Schleusen-Antrieb mit Zeit starten + Antrieb_Schleuse_stop : Bool // Schleusen-Antrieb stoppen + Antrieb_Schleuse_PS : Bool // Schleusen-Antrieb Energie sparen + Antrieb_plus_vor : Bool // Antrieb plus einschalten + Antrieb_plus_start : Bool // Antrieb plus mit Zeit starten + hStOk : Bool // Anzeige Start n. Störung aktivieren + Static: + SAVE : Struct + Weichen_DB : Int // Weichen-FIFO-DB + Weichen_DW : Int // Weichen-FIFO-DW + Weiche+1 : Int // Weiche +1, wo reserviert wurde + Frei18 : Int + Frei20 : Int + Para : Struct // Parameter + Schleusen_DL_DB : Int // Einsprung Schleuse-Datenliste-DB + Weichen_DL_DB : Int // Einsprung Weichen-Datenliste-DB + Leser_DL_DB : Int // Einsprung Weichen-Datenliste-DB + Status2 : Struct + Trolley_an_Schleuse : Bool // Trolley ist an Schleuse + Warten_3.V : Bool // Warten auf 3.V + 2.Lesung_aktiv : Bool // 2.Lesung erfolgt + 3.Lesung_aktiv : Bool // 3.Lesung erfolgt + TrolleyPos_übergeben : Bool // Trolley-Pos. übergeben + Warten_4.V : Bool // Warten auf 4.V + Ausfahrzeit_lernen : Bool // Ausfahrzeit lernen + Weichen-Schritt : Bool // Schritt 13-17 aktiv (Weiche evtl. belegen) + Trolley_ist_draussen : Bool // Rückmeldung von Sensor / Weiche + Einfahrzeit_lernen : Bool // Ausfahrzeit lernen + Telegramm_gesendet : Bool // Telegramm wurde in Send-FIFO eingetragen + Schleuse : "UDLHMOmniSchleuse" // Statische Schleusendaten (aus DL) + Dyn : Struct // Dynamische Daten + Status : Struct + Trolley_fährt_in_Schleuse : Bool // Trolley fährt in Schleuse + Trolley_wartet_Lesung : Bool // Trolley wartet auf Auftrag + Trolley_wartet_auf_Ziel-FC : Bool + Trolley_wartet_auf_Weiche+1 : Bool + Trolley_wartet_Bereich+1 : Bool // Trolley wartet auf Bereich +1 + Trolley_fährt_aus : Bool // Trolley fährt aus + MindestZeit_ok : Bool // Schleuse ist MindestZeit geöffnet + Trolley_draussen : Bool // Trolley ist ausgefahren + Leser_triggern : Bool + SF_angefordert : Bool + Kein_Stop_mehr : Bool // Kein Stop mehr, Antrieb soll starten + Trolley_fährt_rückwärts : Bool // Trolley in Schleuse rückwärts erkannt + Weiche_geschaltet : Bool + Trolley ausserhalb Weiche : Bool // Trolley hat Weiche verlassen (von Weiche) + Error_aktiv : Bool // Störung vorhanden + Reset_aktiv : Bool := TRUE // Reset aktiv + TrolleyID_Schleuse : DInt // Trolley-Nr in der Schleuse + Trolley_EndZiel : Word // Trolley-EndZiel + Trolley_ZwischenZiel : Word // Trolley-ZwischenZiel + Trolley_ShopGroup : DInt // Trolley-ShopGroup + Weichen_Ziel : Word // Weichen-Ziel (Für WeichenModul von Ziel-FC) + TrolleyID_Eingefahren : DInt // Trolley-Nr von Bereich -1 gemeldet + TrolleyID_ausgefahren : DInt // TrolleyID des ausgefahrenen Trolleys + HMI : Struct + TrolleyID_in_Schleuse : DInt // Trolley-Nr in Schleuse (IN:PLC, OUT:PLC) + TrolleyID_Input : DInt // Trolley-Nr Input (IN:HMI, OUT:PLC) + Schleuse_resetten : Bool // Schleuse resetten (IN:HMI, Out:PLC) + Sk : "USk_ILS" // Status der Schrittkette + Leser : Struct + IN : Struct + xOutReadyForNewScan : Bool // DBX10.1: Reader ist bereit für Leseanforderung + xOutReadingDone : Bool // DBX10.0: Lesevorgang abgeschlossen / Handshake raus + xOutCodeGood : Bool // DBX278.0: Gute Lesung + xOutCodeBad : Bool // DBX278.1: Schlechte Lesung + nOutBarcode : DInt // DBD12: Trolley ID + OUT : Struct + xInStartReading : Bool // DBX4.1: Starte Lesevorgang + xInHandshakeDone : Bool // DBX4.2: Handshake Daten abgeholt + xInErrQuit : Bool // DBX4.4: Fehler rücksetzen + xInReset : Bool // DBX4.5: Allgemeines Rücksetzen des Bausteins + TrolleyID_unbekannt_Schleuse : DInt // TrolleyID unbekannt (Trolley in Schleuse) + Rueckmld : Struct + RET_VAL_BLKMOV_Schleuse : Int // Rückmeldung nach BLKMOV-Aufruf + RET_VAL_DL_Schleuse : Byte + RET_VAL_DL_Weiche : Byte // Rückmeldung nach DatenOut-Aufruf + RET_VAL_DL_Leser : Byte // Rückmeldung nach DatenOut-Aufruf + Error : "UErrHMOmniSchleuse" + Stau_Zeit : Int // Sensor B_VorSep ist belegt [100ms] + Mindest_Zeit : Int // Sensor B_VorSep ist frei [100ms] + Leer_Zeit : Int + Stop_Ursache : Word // Stop-Stelle: Nw + Position + Vereinzelungstakte : DInt // Anzahl der getätigten Vereinzelungstakte + ZwischenZiel_eingefahren : Word // Trolley-ZwischenZiel von Bereich -1 + Ohne_B : Int + SAVE2 : Struct + Leser_DB : Int // Weichen-FIFO-DB + Leser_DD : DInt // Weichen-FIFO-DD + WarteZeit_PS : Int + Restzeit_bis_Schleuse : Int + Res200 : Array[1..16] of Int // Reserve + Temp: + Quelle : Any // Zeiger, wo Rein-Daten sind + Ueb_akt : Bool // Überwachungszeit aktivieren + Weiter : Bool // Weiterschaltbedingung ist erfüllt + Warte_neu : Bool // Wartezeit neu triggern + Warte_stop : Bool // Wartezeit stoppen + Kein_Weichenbereich +1 : Bool + Reservierung_Weiche+1_aktiv : Bool + Leser_Zugriff : Bool // Leser-Zugriff vorhanden + LeserFC_vorhanden : Bool + ZielFC_vorhanden : Bool + DraussenFC_vorhanden : Bool + TrolleyID_Bereich-1 : Bool // Trolley--ID von Bereich -1 gemeldet + Einfahrzeit_nicht_bekannt : Bool + LeserFC : Word // Ziel-FC + ZielFC : Word // Ziel-FC + DraussenFC : Word // Draussen-FC + AR1Start : DInt // Startwert mit Offset 0 + AR1Zeiger : DWord // Statt AR1 (ging nur bis DB-Länge <= 8191 Bytes) + Constant: + +--- NW 1: Parameter-Übergabe --- + L Schleusen_Nr + + L 274 // Einsprung Schleuse-DL + T Para.Schleusen_DL_DB // vor Aufruf übergeben! + + L 279 // Einsprung Weichen-DL + T Para.Weichen_DL_DB // vor Aufruf übergeben! + + L 273 + T Para.Leser_DL_DB + + +--- NW 2: Anzeige OP --- + A ErrQuit // Überwachungszeit abgelaufen quittieren + R Dyn.Sk.Err_Uebzeit + + L 252 // Bereichsstop aktiv + AN Dyn.Sk.Bereich_ok // Also: Bereichsstop / Not-Aus + JC w010 + + L 253 + AN Dyn.Sk.Auto_akt // Keine Betriebsart + AN Dyn.Sk.Hand_akt + JC w010 + + L 255 // Handbetrieb aktiv + A Dyn.Sk.Hand_akt + JC w010 + + L Dyn.Sk.Akt_Schritt // Aktiver Schritt +w010: T Dyn.Sk.OP_Schritt + + +--- NW 3: Out-Bits zum Zurücksetzen --- + SET + R Y_Schleuse_Auf + + SET // Jeden Zyklus neu + R Dyn.Status.Trolley_wartet_Lesung + R Dyn.Status."Trolley_wartet_auf_Ziel-FC" + R Dyn.Status."Trolley_wartet_auf_Weiche+1" + R Dyn.Status."Trolley_wartet_Bereich+1" + R Dyn.Status."Trolley_fährt_aus" + R Dyn.Status.Trolley_draussen + R Leser_Zugriff + R Status2."Weichen-Schritt" + + A Dyn.Sk.Reset_Akt + = Dyn.Status.Reset_aktiv + + +--- NW 4: HMI-Zeug --- +// Von HMI: + A Dyn.HMI.Schleuse_resetten + R Dyn.HMI.Schleuse_resetten // von HMI + S Dyn.Sk.Reset // SK zurücksetzen + + L Dyn.HMI.TrolleyID_Input // Wird direkt im Programm verwertet (s.u.) + +// An HMI: +ToHMI: L Dyn.TrolleyID_Schleuse + T Dyn.HMI.TrolleyID_in_Schleuse + + +--- NW 5: Schrittkette zurücksetzen --- + A ErrQuit // Überwachungszeit abgelaufen quittieren + R Dyn.Sk.Err_Uebzeit + + AN Dyn.Sk.Reset // SK zurücksetzen + JC en04 + +// Schrittkette zurücksetzen: + L 0 // Schritt 0: Warten + T Dyn.Sk.Akt_Schritt + + L 0 // Zeitwert löschen + T Dyn.Sk.Terr_Zelle + T Dyn.Sk.Tok_Zelle + + SET + R Dyn.Error.Err_BLKMov // Error bei Block kopieren + R Dyn.Sk.Reset // SK zurücksetzen + R Dyn.Sk.Err_Schritt // Undefinierter Schritt + R Dyn.Sk.Err_Uebzeit // Sofort weiter ! + R Status2.Telegramm_gesendet + S Dyn.Sk.Reset_Akt // Reset ist aktiv + + SET + R Dyn.Error.Schleuse_DL // Schleuse-Datenliste fehlerhaft + R Dyn.Error.Undef_Schleuse // undefinierter Schleuse + R Dyn.Error.Err_Trolley_nicht_in_Schleuse // Trolley fährt nicht in Schleuse + R Dyn.Error.Err_Uebzeit // Überwachungzeit ist abgelaufen + R Dyn.Error.Err_Schritt // Schritt-Nummer ist nicht definiert + R Dyn.Error.Err_Stau_Einfahrt + R Dyn.Error.Err_BLKMov + R Dyn.Error.Err_Trolley_raus // Trolley fährt nicht aus + R Dyn.Error.Err_Raus_Sensor // Raus-/Belade-Sensor wird nicht erreicht (oder dauernd aktiv)! + R Dyn.Error.Err_Ziel // kein Ziel angegeben + R Dyn.Error.Err_Weichen_DL // Weichen-Datenliste fehlerhaft + R Dyn.Error.Err_Undef_Weiche // undefinierte Weiche + R Dyn.Error.Err_Weiche_belegt // Weiche bleibt belegt + R Dyn.Error.Err_Kein_LeseErgebnis + R Dyn.Error.Err_Leser_nicht_bereit + + L DINT#0 + T Dyn.Leser.IN.nOutBarcode + + L 0 + T Dyn.Stau_Zeit // Sensor B_VorSep ist belegt [10ms] + T Dyn.Mindest_Zeit // Sensor B_VorSep ist frei [10ms] + T SAVE."Weiche+1" + T SAVE.Weichen_DB + T SAVE.Weichen_DW + T Dyn.SAVE2.Leser_DB + L DINT#0 + T Dyn.SAVE2.Leser_DD + +// Defaultwerte übergeben: + L 0 // Damit statische Werte neu aus Datenbank geholt werden ! + T Schleuse.Schleusen_Nr // Nummer des Schleuses + + JU RET + +en04: NOP 0 + + +--- NW 6: Störungen nach Außen übergeben --- + L 0 + T "MW200" + + A Dyn.Error.Schleuse_DL // Schleuse-Datenliste fehlerhaft + = "M200.0" + A Dyn.Error.Undef_Schleuse // undefinierter Schleuse + = "M200.1" + A Dyn.Error.Err_Trolley_nicht_in_Schleuse // Trolley fährt nicht in Schleuse + = "M200.2" + A Dyn.Sk.Err_Uebzeit + = Dyn.Error.Err_Uebzeit // Überwachungzeit ist abgelaufen + = "M200.3" + NEG + R Dyn.Sk.Err_Uebzeit_AnzOk + A Dyn.Sk.Err_Schritt + = Dyn.Error.Err_Schritt // Schritt-Nummer ist nicht definiert + = "M200.4" + A Dyn.Error.Err_Stau_Einfahrt + AN B_InSchleuse + AN Y_Schleuse_Auf + = "M200.5" + A Dyn.Error.Err_BLKMov // Error bei Block kopieren + = "M200.6" + A Dyn.Error.Err_Trolley_raus // Trolley fährt nicht aus + = "M200.7" + A Dyn.Error.Err_Raus_Sensor // Raus-/Belade-Sensor wird nicht erreicht (oder dauernd aktiv)! + = "M201.0" + A Dyn.Error.Err_Ziel // Trolley-Ziel nicht bekannt + = "M201.1" + A Dyn.Error.Err_Weichen_DL // Weichen-Datenliste fehlerhaft + = "M201.2" + A Dyn.Error.Err_Undef_Weiche // undefinierte Weiche + = "M201.3" + A Dyn.Error.Err_Weiche_belegt // Weiche bleibt belegt + = "M201.4" + A Dyn.Error.Err_Kein_LeseErgebnis + = "M201.5" + A Dyn.Error.Err_Leser_nicht_bereit + = "M201.6" + A Dyn.Error.Barcode_nicht_bekannt + = "M201.7" + +// Andere Meldung als Überwachungszeit aktiv ?: + L "MW200" + L 2#1111_0111_1111_1111 + AW + L 2#0000_0000_0000_0000 // Andere Meldung als Üb.zeit aktiv ? + <>I // Ja ! + ON Dyn.Sk.Err_Uebzeit_AnzOk // Störung anzeigen ok, da 2.Zyklus aktiv ! + R "M200.3" // Üb.Zeit-Meldung nicht an PC senden + + A Dyn.Sk.Err_Uebzeit + S Dyn.Sk.Err_Uebzeit_AnzOk // Störung anzeigen ok, da 2.Zyklus aktiv ! + + L "MW200" + T Error // Schnittstelle nach Außen + +// Störung vorhanden: + L 0 + <>I // Ja ! + = Dyn.Status.Error_aktiv + S hStOk + +// Antrieb stoppen: + A( + ON Dyn.Sk.Auto_akt // SystemVoraussetzungen fehlen + O Dyn.Sk.Hand_akt + ON Dyn.Sk.Bereich_ok + ) + S Antrieb_Schleuse_stop // Antrieb stoppen + +// Störungen pro Zyklus neu erzeugen: + SET + R Dyn.Error.Schleuse_DL // Schleuse-Datenliste fehlerhaft + R Dyn.Error.Undef_Schleuse // undefinierter Schleuse +// / R #Dyn.Error.Err_Trolley_nicht_in_Schleuse//Trolley fährt nicht in Schleuse +// / R #Dyn.Error.Err_Uebzeit //Überwachungzeit ist abgelaufen + R Dyn.Error.Err_Schritt // Schritt-Nummer ist nicht definiert +// / R #Dyn.Error.Err_Stau_Einfahrt//Betriebsart ist nicht möglich + R Dyn.Error.Err_BLKMov +// / R #Dyn.Error.Err_Trolley_raus//Trolley fährt nicht aus + R Dyn.Error.Err_Raus_Sensor // Raus-/Belade-Sensor wird nicht erreicht (oder dauernd aktiv)! + R Dyn.Error.Err_Ziel // Trolley-Ziel nicht bekannt + R Dyn.Error.Err_Weichen_DL // Weichen-Datenliste fehlerhaft + R Dyn.Error.Err_Undef_Weiche // undefinierte Weiche + R Dyn.Error.Err_Weiche_belegt // Weiche bleibt belegt +// / R #Dyn.Error.Err_Kein_LeseErgebnis +// / R #Dyn.Error.Err_Leser_nicht_bereit + R Dyn.Error.Barcode_nicht_bekannt + + AN Dyn.Sk.Err_Uebzeit + R Dyn.Error.Err_Trolley_nicht_in_Schleuse // Trolley fährt nicht in Schleuse + R Dyn.Error.Err_Trolley_raus // Trolley fährt nicht aus + R Dyn.Error.Err_Raus_Sensor // Raus-Sensor wird nicht erreicht (oder dauernd aktiv)! + + +--- NW 7: Statische Schleuse-Parameter holen --- + L Schleuse.Schleusen_Nr // Nummer des Schleuses + L Schleusen_Nr // Aufruf-Parameter + ==I // Identisch ? + R Dyn.Error.Schleuse_DL // Schleusedatenbank fehlerhaft + R Dyn.Error.Undef_Schleuse // undefinierter Schleuse + JC en06 // Ja ! + + T "MW200" // Search-Daten + +CALL FC "DatenOut" (SSDB:=Para.Schleusen_DL_DB, SSDW:=0, PARA:=WORD#16#0000, SEARCHDATEN:=P#M200.0, RE_VAL:="MB199", OUTDATEN:=P#M220.0, Position:="MW196") + + L "MB199" + T Dyn.Rueckmld.RET_VAL_DL_Schleuse // Rückmeldung bei Datenbank-Zugriff (Gefälle-DL) + + JBI G_Ok + + A "M199.0" + JCN w060 + + SET + = Dyn.Error.Schleuse_DL // Schleusedatenbank fehlerhaft + + L 16#A061 + T Dyn.Stop_Ursache + + JU RET + +w060: SET + S Dyn.Error.Undef_Schleuse // undefinierter Schleuse + + L 16#A062 + T Dyn.Stop_Ursache + + JU RET + +// Kennung + Datenbytes +G_Ok: SET + R Dyn.Error.Schleuse_DL // Gefälledatenbank fehlerhaft + R Dyn.Error.Undef_Schleuse // undefinierte Gefällestrecke + + L 16#1004 // Kennung 10 + Word=04 + T LW0 // Any-Kennung, Datentyp + L 20 // Datenwords speichern + T LW2 // Wiederholungen + +// Quelle-Pointer erzeugen: + L 0 // Bei Merker = 0 ! + T LW4 // DB_Nummer + L 220 // Adresse + SLD 3 + L 16#8300_0000 // Kennung: Merker + OD + T LD6 // Kennung, Adresse + +CALL SYS "BLKMOV" (SRCBLK:=Quelle, RET_VAL:=Dyn.Rueckmld.RET_VAL_BLKMOV_Schleuse, DSTBLK:=Schleuse) // Datenliste-Daten speichern | #Ziel + + L 16#A063 + T Dyn.Stop_Ursache + + L Dyn.Rueckmld.RET_VAL_BLKMOV_Schleuse // Rückmeldung + L 0 // Fehler vorhanden ? + <>I // Ja ! + = Dyn.Error.Err_BLKMov // Error bei Block kopieren + JC RET + + L Schleuse.Schleusen_Typ // Schleusetyp = 1274 (HM-Schleuse) + L 1274 // Dieser Aufruf-FB ? + ==I // Ja ! + JC w061 + + SET + S Dyn.Error.Undef_Schleuse // undefinierter Schleuse + + L 0 // Schleuse ungültig ! + T Schleuse.Schleusen_Nr // Nummer des Schleuses + + L 16#A064 + T Dyn.Stop_Ursache + + JU RET + +// Defaultwerte übergeben: +w061: NOP 0 + + JU RET + +en06: NOP 0 + + +--- NW 8: Einsprung Weiche plus ermitteln --- + L SAVE.Weichen_DB // Weichen-FIFO-DB + L 0 // Einsprung-Zeiger bekannt ? + >I // Ja ! + R "Kein_Weichenbereich +1" + JC En08 + + L Schleuse.RausWeichen_Nr // Nr. der vorhandenen Weiche + T "MW200" // Search-Daten + L 0 // angegeben ? + ==I // Nein ! + = "Kein_Weichenbereich +1" + R Dyn.Error.Err_Undef_Weiche // undefinierte Weiche + JC En08 + +CALL FC "DatenOut" (SSDB:=Para.Weichen_DL_DB, SSDW:=0, PARA:=WORD#16#0000, SEARCHDATEN:=P#M200.0, RE_VAL:="MB199", OUTDATEN:=P#M220.0, Position:="MW196") + + L "MB199" + T Dyn.Rueckmld.RET_VAL_DL_Weiche // Rückmeldung bei Datenbank-Zugriff (Weiche-DL) + + JBI W_Ok + + A "M199.0" + = Dyn.Error.Err_Weichen_DL // Weichen-Datenliste fehlerhaft + JC En08 + + SET + S Dyn.Error.Err_Undef_Weiche // undefinierte Weiche + + JU En08 + +W_Ok: L "MW224" + T SAVE.Weichen_DB // Weichen-FIFO-DB + L 0 // sinnvoller Wert ? + <=I // Nein ! + S Dyn.Error.Err_Undef_Weiche // undefinierte Weiche + JC En08 + + L "MW226" + T SAVE.Weichen_DW // Weichen-FIFO-DW + +En08: NOP 0 + + +--- NW 9: Trolley in Schleuse entprellen --- + A B_InSchleuse + JC B_ok + + AN Status2.Trolley_an_Schleuse + ON "1s-Impuls" + JC Xn08 + + L Dyn.Ohne_B + + 1 // Zeit ohne Sensor +1s + T Dyn.Ohne_B + + L 3 // Nach ca. 3s + I + JC X014 + + T Dyn.Restzeit_bis_Schleuse // Minimum übergeben + +// Trolley fährt noch ein: +X014: L Dyn.Restzeit_bis_Schleuse + L 0 // Restzeit vorhanden? + >I // Ja ! + AN B_InSchleuse + AN "Schleuse_geöffnet" + S Antrieb_Schleuse_vor // Antrieb einschalten (dadurch wird PS-Modus deaktiviert) + +En14: NOP 0 + + +--- NW 13: Ausfahrzeit lernen --- + AN Status2.Ausfahrzeit_lernen + ON Antrieb_Schleuse_aktiv + ON "1s-Impuls" + JC NoAFZ + + L Schleuse.AusfahrZeit + + 1 + T Schleuse.AusfahrZeit + +NoAFZ: NOP 0 + + +--- NW 14: Spezial-FCs vorhanden? --- + L Schleuse.Leser_FC + T LeserFC + L 0 // Parameter vorhanden ? + >I // Ja! + = LeserFC_vorhanden + + L Schleuse.Ziel_FC + T ZielFC + L 0 // Parameter vorhanden ? + >I // Ja! + = ZielFC_vorhanden + + L Schleuse.Draussen_FC + T DraussenFC + L 0 // Parameter vorhanden ? + >I // Ja! + = DraussenFC_vorhanden + + +--- NW 15: Error: Stau Bereich-Eingang --- +// TrolleyID zum Einfahren gemeldet / Trolley fährt in Bereich: + L Dyn.TrolleyID_Eingefahren // Eintrag von Weiche -1 + L DINT#0 // angegeben ? + <>D // Ja ! + = "TrolleyID_Bereich-1" + A "TrolleyID_Bereich-1" + O B_VorSchleuse + S Dyn.Status."Trolley_fährt_in_Schleuse" + +// Antrieb einschalten: + A B_VorSchleuse + AN B_InSchleuse + AN "Schleuse_geöffnet" + S Antrieb_Schleuse_vor + + A B_VorSchleuse + S Antrieb_Schleuse_start + +// Sensor bei Bereichs-Einfahrt bleibt belegt?: + AN B_VorSchleuse // Sensor Trolley fährt in Bereich (kein Stau !) + O "Schleuse_geöffnet" + R Dyn.Error.Err_Stau_Einfahrt // Stau bei Einfahrt + JC X090 // StauZeit neu aufziehen + + AN "1s-Impuls" + O + A Schleuse.Parameter_allg.Antrieb_vorhanden + AN Antrieb_Schleuse_aktiv + O Dyn.Error.Err_Stau_Einfahrt // Zeit bereits abgelaufen + JC Xn09 + + L Dyn.Stau_Zeit // Sensor B_VorSep ist belegt [1s] + + +1 + T Dyn.Stau_Zeit // Sensor B_VorSep ist belegt [1s] + + L 20 // Stau-Zeit erreicht ? + >=I // Ja ! + S Dyn.Error.Err_Stau_Einfahrt // Stau bei Einfahrt (Quittierung oder Sensor=0, wegen Bürstenantrieb + JCN Xn09 + +X090: L 0 // Zeiten löschen + T Dyn.Stau_Zeit // Sensor B_VorSep ist belegt [1s] + +Xn09: NOP 0 + + +--- NW 16: Schleuse: Mindestzeit geöffnet/frei --- + L Dyn.Sk.Akt_Schritt + L 3 // AusSchleusen aktiv? + I // Nein! + ) +// / O #B_InSchleuse //Sensor Trolley in Schleuse vorhanden + ON "Schleuse_geöffnet" + R Dyn.Status.MindestZeit_ok + JC X100 // FreiZeit neu aufziehen + + A Schleuse.Parameter_allg.Antrieb_vorhanden + AN Antrieb_Schleuse_aktiv + O + A Schleuse.Parameter_allg.Antrieb_Plus_vorhanden + AN Antrieb_plus_aktiv + O Dyn.Status.MindestZeit_ok // Zeit bereits abgelaufen + ON "1s-Impuls" + JC Xn10 + + L Dyn.Mindest_Zeit // Sensor B_im_Sep ist frei [1s] + + +1 + T Dyn.Mindest_Zeit // Sensor B_im_Sep ist frei [1s] + + L Schleuse.Mindeszeit_Schleuse_geoeffnet // Mindest-Zeit erreicht ? + >=I // Ja ! + S Dyn.Status.MindestZeit_ok + JCN Xn10 + +X100: L 0 // Zeiten löschen + T Dyn.Mindest_Zeit // Sensor B_im_Sep ist frei [1s] + +Xn10: NOP 0 + + +--- NW 17: Schleuse: Trolley ist draussen (Sensor/Weiche) --- + L Dyn.Sk.Akt_Schritt + L 5 // Trolley fährt aus ? + I // Nein! + ) + ON "Schleuse_geöffnet" + R Status2.Trolley_ist_draussen + R Status2.Ausfahrzeit_lernen + JC En15 // FreiZeit neu aufziehen + +// Trolley ist draussen sofort (Rückmeldung von Sensor/Weiche): + A B_AusSchleuse // Sensor Trolley aus Schleuse gefahren + A Schleuse.Parameter_allg.B_AusSep_vorhanden + O + A Dyn.Status."Trolley ausserhalb Weiche" // Rückmeldung von Weiche +1 + AN "Kein_Weichenbereich +1" // Also Weiche +1 + S Status2.Trolley_ist_draussen + +En15: NOP 0 + + +--- NW 18: Einsprung Leser ermitteln --- + L Dyn.SAVE2.Leser_DB // Leser-FIFO-DB + L 0 // Einsprung-Zeiger bekannt ? + >I // Ja ! + S Leser_Zugriff // Leser-Zugriff vorhanden + JC En08L + + L Schleuse.Leser_ID // Nr. des vorhandenen Lesers + T "MW200" // Search-Daten + L 0 // angegeben ? + ==I // Nein ! + JC En08L + +CALL FC "DatenOut" (SSDB:=Para.Leser_DL_DB, SSDW:=0, PARA:=WORD#16#0000, SEARCHDATEN:=P#M200.0, RE_VAL:="MB199", OUTDATEN:=P#M220.0, Position:="MW196") + + L "MB199" + T Dyn.Rueckmld.RET_VAL_DL_Leser // Rückmeldung bei Datenbank-Zugriff (Leser-DL) + + JBI W_OkL + + SET + S Dyn.Error.Err_Leser_nicht_bereit // Leser-Datenliste fehlerhaft + + JU En08L + +W_OkL: L "MW222" // Rein-FIFO-DB + T Dyn.SAVE2.Leser_DB // Leser-FIFO-DB + L 0 // sinnvoller Wert ? + <=I // Nein ! + S Dyn.Error.Err_Leser_nicht_bereit // undefinierter Leser + JC En08L + + L "MD224" + T Dyn.SAVE2.Leser_DD // Leser-FIFO-DD + + SET + R Dyn.Error.Err_Leser_nicht_bereit // undefinierter Leser + S Leser_Zugriff // Leser-Zugriff vorhanden + +En08L: NOP 0 + + +--- NW 19: Reservierung bei Weiche plus noch aktiv? --- + A "Kein_Weichenbereich +1" + R "Reservierung_Weiche+1_aktiv" + JC Y11E + + OPN DB[SAVE.Weichen_DB] // FABE+ -DB öffnen + + L SAVE.Weichen_DW + ITD + T AR1Start // Startwert mit Offset 0 + + L AR1Start // Startwert mit Offset 0 + + DINT#78 + SLD 3 + T AR1Zeiger // Statt Dyn.Bereichsstop (ging nur bis DB-Länge <= 8191 Bytes) + + L DBW [AR1Zeiger] // Schleuse -1 (DBW 78) + L Schleusen_Nr // Diese Schleuse ? + ==I // Ja ! +// / SET /// + = "Reservierung_Weiche+1_aktiv" + +// Mindestzeit nachtriggern: + AN "Schleuse_geöffnet" + ON B_InSchleuse + JC Y11E + + L AR1Start // Startwert mit Offset 0 + + DINT#71 + SLD 3 + L 3 // Damit DBX_Bit 3 + OD + T AR1Zeiger // Statt Dyn.Bereichsstop (ging nur bis DB-Länge <= 8191 Bytes) + + SET + = DBX [AR1Zeiger] // Mindestzeit nachtriggern (71.3) + +Y11E: NOP 0 + + +--- NW 20: Leser-Einheit managen (Inputs holen) --- + AN Leser_Zugriff + ON Schleuse.Parameter_allg.Leser_eingebaut + R Dyn.Status.Leser_triggern // für Status-Anzeige + JC NoLeser + +// Leserdaten holen: + OPN DB[Dyn.SAVE2.Leser_DB] // Leser -DB öffnen + + L Dyn.SAVE2.Leser_DD + T AR1Start // Startwert mit Offset 0 + +// Offset 10: + L AR1Start // Startwert mit Offset 0 + + DINT#10 + SLD 3 + T AR1Zeiger // Statt Dyn.Bereichsstop (ging nur bis DB-Länge <= 8191 Bytes) + + L DBB [AR1Zeiger] + T "MB200" + A "M200.0" + = Dyn.Leser.IN.xOutReadingDone + A "M200.1" + = Dyn.Leser.IN.xOutReadyForNewScan + +// Offset 274: + L AR1Start // Startwert mit Offset 0 + + DINT#274 + SLD 3 + T AR1Zeiger // Statt Dyn.Bereichsstop (ging nur bis DB-Länge <= 8191 Bytes) + + L DBB [AR1Zeiger] + T "MB200" + A "M200.0" + = Dyn.Leser.IN.xOutCodeGood + A "M200.1" + = Dyn.Leser.IN.xOutCodeBad + +// Offset 12: + L AR1Start // Startwert mit Offset 0 + + DINT#12 + SLD 3 + T AR1Zeiger // Statt Dyn.Bereichsstop (ging nur bis DB-Länge <= 8191 Bytes) + + L DBD [AR1Zeiger] + T Dyn.Leser.IN.nOutBarcode + +NoLeser: NOP 0 + + +--- NW 21: Schrittkette anhalten --- + A Dyn.Sk.Auto_akt // Automatik ist aktiv + A Dyn.Sk.Bereich_ok + CLR + + JU en08_Mig // Schrittkette nicht anhalten ! + + SET + R Dyn.Sk.Err_Uebzeit // Störungen löschen + R Dyn.Sk.Err_Schritt + + L 0 // Zeitwerte löschen + T Dyn.Sk.Terr_Zelle + T Dyn.Sk.Tok_Zelle + + JU RET + +en08_Mig: NOP 0 + + +--- NW 22: Trolley wurde zurück gezogen --- + L Dyn.Sk.Akt_Schritt + L 10 // Trolley schon unterwegs ? + I // Ja ! + ) + O Status2.Trolley_an_Schleuse // Trolley ist noch in Schleuse + O "Schleuse_geöffnet" + JC TrolleyOk + + SET + S Antrieb_Schleuse_start + S Dyn.Leser.OUT.xInReset + + L 0 // Neubeginn + T Dyn.Sk.Akt_Schritt + + AN Schleuse.Parameter_allg.Leser_eingebaut // Falls kein Leser verbaut Daten behalten (falls von Bereich-1 gemeldet) + JC TrolleyOk + + T Dyn.Trolley_ZwischenZiel + + L DINT#0 + T Dyn.TrolleyID_Schleuse + +TrolleyOk: NOP 0 + + +--- NW 23: Sprungverteiler --- + L Dyn.Sk.Neu_Schritt // Schritt, der im nächsten Zyklus aktiv werden soll + L -1 // angegeben ? + ==I // Nein ! + JC NEU + + CAC // Neuen Schritt übergeben + T Dyn.Sk.Akt_Schritt + + L -1 // Urzustand + T Dyn.Sk.Neu_Schritt // Schritt, der im nächsten Zyklus aktiv werden soll + +NEU: SET + R Warte_neu // Wartezeit neutriggern + R Warte_stop // Wartezeit stoppen + + L Dyn.Sk.Akt_Schritt + JL Ende + JU s000 // Schritt 0 + JU s001 // Schritt 1 + JU s002 // Schritt 2 + JU s003 // Schritt 3 + JU s004 // Schritt 4 + JU s005 // Schritt 5 + JU s006 // Schritt 6 + JU s007 // Schritt 7 + JU s008 // Schritt 8 + JU s009 // Schritt 9 + JU s010 // Schritt 10 + JU s011 // Schritt 11 + JU s012 // Schritt 12 + JU s013 // Schritt 13 + JU s014 // Schritt 14 + JU s015 // Schritt 15 + JU s016 // Schritt 16 + JU s017 // Schritt 17 + JU s018 // Schritt 18 + JU s019 // Schritt 19 + JU s020 // Schritt 20 + JU s021 // Schritt 21 + JU s022 // Schritt 22 + JU s023 // Schritt 23 + JU s024 // Schritt 24 + JU s025 // Schritt 25 + JU s026 // Schritt 26 + JU s027 // Schritt 27 + JU s028 // Schritt 28 + JU s029 // Schritt 29 + JU s030 // Schritt 30 +Ende: S Dyn.Sk.Err_Schritt // Undefinierter Schritt + + L 16#A131 + T Dyn.Stop_Ursache + + JU RET + +Neu_Mig: A Dyn.Sk.Err_Uebzeit + JCN Sk + + L 16#A132 + T Dyn.Stop_Ursache + + JU RET + +Sk: T Dyn.Sk.Akt_Schritt + + L 0 // Zeitwerte löschen + T Dyn.Sk.Terr_Zelle + T Dyn.Sk.Tok_Zelle + + JU NEU + +// Nicht programmierte Schritte: +// s000: SPA Ende +// s001: SPA Ende +// s002: SPA Ende +// s003: SPA Ende +// s004: SPA Ende +// s005: SPA Ende +// s006: SPA Ende +// s007: SPA Ende +// s008: SPA Ende +// s009: SPA Ende +// s010: SPA Ende +// s011: SPA Ende +// s012: SPA Ende +// s013: SPA Ende +// s014: SPA Ende +// s015: SPA Ende +// s016: SPA Ende +// s017: SPA Ende +s018: JU Ende +s019: JU Ende +// s020: SPA Ende +// s021: SPA Ende +s022: JU Ende +s023: JU Ende +s024: JU Ende +s025: JU Ende +s026: JU Ende +s027: JU Ende +s028: JU Ende +s029: JU Ende +s030: JU Ende + + +--- NW 24: Schritt X: Reserve --- + SET // Weiterschaltbedingung + = Weiter + +// Schrittaktionen: + SET + + L 16#B001 + T Dyn.Stop_Ursache + + A Weiter // Weiterschaltbedingung ist erfüllt + R Dyn.Sk.Err_Uebzeit // Sofort weiter ! + L 0 // Angabe der Wartezeit (*10ms) + JC Plus // Nächsten Schritt starten + + L 1 // Weiter mit Schritt 1 + JC Neu_Mig // Bei diesem Schritt weiter + + L 2 + T Dyn.Sk.Neu_Schritt // Schritt, der im nächsten Zyklus aktiv werden soll + + SET + A Dyn.Sk.Auto_akt // Automatik ist aktiv + A Dyn.Sk.Bereich_ok + = Ueb_akt // Überwachungszeit aktivieren + L 50 // Angabe der Überwachungszeit (*1s) + JU tueb // Überwachungszeit + + JU RET + + +--- NW 25: Schritt 0: Warten auf Trolley --- +s000: SET // Weiterschaltbedingung + A B_InSchleuse // Trolley im Schleuse erkannt + A Dyn.Sk.Auto_akt // Automatik ist aktiv + A Dyn.Sk.Bereich_ok + = Weiter + +// Trolley-Schleusendaten löschen: + L DINT#0 + T Dyn.TrolleyID_Schleuse + T Dyn.Trolley_ShopGroup + + L 0 + T Dyn.Trolley_EndZiel + T Dyn.Weichen_Ziel + +// HMI-Zeug: + L DINT#0 + T Dyn.HMI.TrolleyID_Input + + A Dyn.Sk.Reset_Akt // Reset ist aktiv + L 20 // Weiter mit Schritt 20 + JC Neu_Mig // Bei diesem Schritt weiter + +// Schrittaktionen: + SET + R Dyn.Error.Err_Leser_nicht_bereit + R Dyn.Error.Err_Kein_LeseErgebnis + R Dyn.Status.SF_angefordert + R Status2."TrolleyPos_übergeben" + R Status2.Telegramm_gesendet + + A Weiter // Weiterschaltbedingung ist erfüllt + R Dyn.Sk.Err_Uebzeit // Sofort weiter ! + L 50 // Angabe der Wartezeit (*10ms) + JC Plus // Nächsten Schritt starten + + L 16#B001 + T Dyn.Stop_Ursache + + A Dyn.Status."Trolley_fährt_in_Schleuse" + AN B_InSchleuse + S Antrieb_Schleuse_vor // Antrieb einschalten + JC S000A + + SET + R Dyn.Sk.Err_Uebzeit + + L 16#B000 + T Dyn.Stop_Ursache + + JU RET + +// Überwachungszeit starten: +S000A: A Dyn.Status."Trolley_fährt_in_Schleuse" + AN B_InSchleuse // Trolley im Schleuse erkannt + A( + O Antrieb_Schleuse_aktiv + ON Schleuse.Parameter_allg.Antrieb_vorhanden + ) + = Ueb_akt // Überwachungszeit aktivieren + + A Dyn.Sk.Err_Uebzeit + R Dyn.Sk.Err_Uebzeit + S Dyn.Error.Err_Trolley_nicht_in_Schleuse + R Dyn.Status."Trolley_fährt_in_Schleuse" + + L Schleuse."Übzeit_in_Schleuse" + + JU tueb // Überwachungszeit + + +--- NW 26: Schritt 1: Trolley ist in Schleuse / Leser ? / Daten vorhanden ? --- +s001: NOP 0 +// Schrittaktionen: + A B_InSchleuse + S Status2.Trolley_an_Schleuse + + AN Status2.Trolley_an_Schleuse // Trolley im Schleuse erkannt + A Schleuse.Parameter_allg.Leser_eingebaut + L 0 // Weiter mit Schritt 0 + JC Neu_Mig // Bei diesem Schritt weiter + +// Zwischen-Ziel von Bereich -1 vorhanden?: + L Dyn.ZwischenZiel_eingefahren + L 0 // Zwischenziel von Bereich -1 vorhanden! + ==I // Nein ! + O Schleuse.Parameter_allg.Leser_eingebaut // Dann werden Daten neu ermittelt! + JC X001 + +// Daten von Bereich -1 übergeben: + L Dyn.ZwischenZiel_eingefahren + T Dyn.Trolley_ZwischenZiel + L 0 + T Dyn.ZwischenZiel_eingefahren + + L Dyn.TrolleyID_Eingefahren + T Dyn.TrolleyID_Schleuse + L DINT#0 + T Dyn.TrolleyID_Eingefahren + + L 12 // Weiter mit Schritt 12 + JU Neu_Mig // Bei diesem Schritt weiter + +X001: L 0 + T Dyn.Trolley_ZwischenZiel + +// Leser vorhanden: + A Schleuse.Parameter_allg.Leser_eingebaut + R Dyn.Error.Err_Kein_LeseErgebnis + L 9 // Weiter mit Schritt 9 (Leser bereit) + JC Neu_Mig // Bei diesem Schritt weiter + +// Trolleydaten vorhanden ?: (Übergabe von Bereich -1) + L Dyn.TrolleyID_Eingefahren + T Dyn.TrolleyID_Schleuse + L DINT#0 // Daten vorhanden ? + <>D // Ja ! + L 11 // Weiter mit Schritt 11 (Trolleydaten lesen) + JC Neu_Mig // Bei diesem Schritt weiter + +// Ziel-FC vorhanden ?: + A ZielFC_vorhanden + L 12 // Weiter mit Schritt 12 (Ziel-FC) + JC Neu_Mig // Bei diesem Schritt weiter + + L 14 // Weiter mit Schritt 14 (Weichenbereich +1 vorhanden) + JU Neu_Mig // Bei diesem Schritt weiter + + +--- NW 27: Schritt 2: Ausfahren ok ? --- +s002: NOP 0 + +// Schrittaktionen: + AN Status2.Trolley_an_Schleuse // Trolley im Schleuse erkannt + A Schleuse.Parameter_allg.Leser_eingebaut + L 0 // Weiter mit Schritt 0 + JC Neu_Mig // Bei diesem Schritt weiter + +// Anlage aus oder Störung: + L 16#B021 + T Dyn.Stop_Ursache + + AN Dyn.Sk.Auto_akt // Automatik ist aktiv + ON Dyn.Sk.Bereich_ok // Bereich ist gestört + JC RET + +// Starten erlaut Trolley ?: + L 16#B022 + T Dyn.Stop_Ursache + + AN Start_Ok // Starten ist erlaubt + JC RET + +// Stau im Bereich +1: + L 16#B023 + T Dyn.Stop_Ursache + + SET + S Dyn.Status."Trolley_wartet_Bereich+1" + + A B_Stau_raus // Sensor Stau im Bereich rausfahren + JC RET + +// B_Aus_Schleuse aktiv: + L 16#B024 + T Dyn.Stop_Ursache + + A Schleuse.Parameter_allg.B_AusSep_vorhanden + A B_AusSchleuse // Sensor Trolley aus Schleuse gefahren + = Dyn.Error.Err_Raus_Sensor // Raus-Sensor wird nicht erreicht (oder dauernd aktiv)! + JC RET + +// Restzeit zum Ausfahren ausreichend?: + L 16#B025 + T Dyn.Stop_Ursache + + A( + L RestZeit_Bereich_plus + L Schleuse.AusfahrZeit + I // Nicht Maximalzeit, also nicht leer + ) + BEC // Nein ! + +// Antriebe aktivieren / aktiv ?: + A Schleuse.Parameter_allg.Antrieb_Plus_vorhanden // Schleuse an weiterem Antrieb (Weiche) + S Antrieb_plus_vor // Antrieb plus einschalten + + A( + O Antrieb_plus_aktiv // Kreisel-Antrieb plus aktiv + ON Schleuse.Parameter_allg.Antrieb_Plus_vorhanden // Schleuse an weiterem Antrieb (Weiche) + ) + S Antrieb_Schleuse_vor // Antrieb einschalten + + L 16#B026 + T Dyn.Stop_Ursache + + AN Antrieb_plus_aktiv // Kreisel-Antrieb plus aktiv + A Schleuse.Parameter_allg.Antrieb_Plus_vorhanden // Schleuse an weiterem Antrieb (Weiche) + JC RET + + AN Antrieb_Schleuse_aktiv // Kreisel-Antrieb aktiv + A Schleuse.Parameter_allg.Antrieb_vorhanden // Schleuse an angetriebener Strecke + = Dyn.Status.Kein_Stop_mehr + JC RET + + SET + R Status2."Warten_3.V" + + L 5 // Nur 1 langes Signal! + AN Schleuse.Parameter_allg."2.V_bei_Ausfahrt_checken" + JC Neu_Mig // Bei diesem Schritt weiter + + L 3 // 2.V bei Ausfahrt checken + JU Neu_Mig // Bei diesem Schritt weiter + + +--- NW 28: Schritt 3: Trolley fährt aus / 1.V ausgefahren ? --- +s003: SET // Weiterschaltbedingung + AN B_InSchleuse // Sensor Trolley ist in Schleuse + = Weiter + +// Schrittaktionen: + SET + S Y_Schleuse_Auf // Schleuse öffnen + S Dyn.Status."Trolley_fährt_aus" + +// Antriebe: +// siehe Nw9 + + A Weiter // Weiterschaltbedingung ist erfüllt + R Dyn.Sk.Err_Uebzeit // Sofort weiter ! + R Dyn.Error.Err_Trolley_raus // Trolley fährt nicht aus + L 30 // Angabe der Wartezeit (*10ms) + JC Plus // Nächsten Schritt starten + + AN "Kein_Weichenbereich +1" // Also Weiche vorhanden + AN "Reservierung_Weiche+1_aktiv" // Weiche nicht mehr angemeldet + R Dyn.Sk.Err_Uebzeit // Sofort weiter ! + L 0 // Weiter mit Schritt 0 + JC Neu_Mig // Bei diesem Schritt weiter + + A Dyn.Sk.Err_Uebzeit + S Dyn.Error.Err_Trolley_raus // Trolley fährt nicht aus + + L 16#B031 + T Dyn.Stop_Ursache + + A Antrieb_Schleuse_aktiv + ON Schleuse.Parameter_allg.Antrieb_vorhanden // Schleuse an angetriebener Strecke + = Ueb_akt // Überwachungszeit aktivieren + L Schleuse."Übzeit_aus_Schleuse" // Angabe der Überwachungszeit (*1s) + JU tueb // Überwachungszeit + + +--- NW 29: Schritt 4: Trolley fährt aus / Warten auf 2.V --- +s004: SET // Weiterschaltbedingung + A B_InSchleuse // Sensor Trolley ist in Schleuse + O Dyn.Status."Trolley ausserhalb Weiche" // Rückmeldung von Weiche +1 + = Weiter + +// Bei Raus-Sensor nicht zählen: + A Schleuse.Parameter_allg.B_AusSep_vorhanden + A B_AusSchleuse // Sensor Trolley aus Schleuse gefahren + L 5 // Zählen überspringen + R Dyn.Sk.Err_Uebzeit // Sofort weiter ! + R Dyn.Error.Err_Trolley_raus // Trolley fährt nicht aus + JC Neu_Mig // Bei diesem Schritt weiter + +// Schrittaktionen: + SET + S Y_Schleuse_Auf // Schleuse öffnen + S Dyn.Status."Trolley_fährt_aus" + +// Antriebe: +// siehe Nw9 + + A Weiter // Weiterschaltbedingung ist erfüllt + R Dyn.Sk.Err_Uebzeit // Sofort weiter ! + R Dyn.Error.Err_Trolley_raus // Trolley fährt nicht aus + L 0 // Angabe der Wartezeit (*10ms) + JC Plus // Nächsten Schritt starten + + AN "Kein_Weichenbereich +1" // Also Weiche vorhanden + AN "Reservierung_Weiche+1_aktiv" // Weiche nicht mehr angemeldet + R Dyn.Sk.Err_Uebzeit // Sofort weiter ! + L 0 // Weiter mit Schritt 0 + JC Neu_Mig // Bei diesem Schritt weiter + + A Dyn.Sk.Err_Uebzeit + S Dyn.Error.Err_Trolley_raus // Trolley fährt nicht aus + + L 16#B041 + T Dyn.Stop_Ursache + + A Antrieb_Schleuse_aktiv + ON Schleuse.Parameter_allg.Antrieb_vorhanden // Schleuse an angetriebener Strecke + = Ueb_akt // Überwachungszeit aktivieren + L Schleuse."Übzeit_aus_Schleuse" // Angabe der Überwachungszeit (*1s) + JU tueb // Überwachungszeit + + +--- NW 30: Schritt 5: Trolley fährt aus ? --- +s005: SET // Weiterschaltbedingung + AN B_InSchleuse // Sensor Trolley ist in Schleuse + A( + O Antrieb_Schleuse_aktiv // Kreisel-Antrieb aktiv + ON Schleuse.Parameter_allg.Antrieb_vorhanden // Schleuse an angetriebener Strecke + ) + A( + O Antrieb_plus_aktiv + ON Schleuse.Parameter_allg.Antrieb_Plus_vorhanden + ) + = Weiter + +// Ausfahrzeit lernen: + A Schleuse.Parameter_allg.B_AusSep_vorhanden + JC X004 + +// Ohne Sensor -> Üb.Zeit übergeben: + L Schleuse."Übzeit_aus_Schleuse" + T Schleuse.AusfahrZeit + +X004: L Schleuse.AusfahrZeit + L 0 // Ausfahrzeit bekannt ? + ==I // Nein ! + A Schleuse.Parameter_allg.B_AusSep_vorhanden + S Status2.Ausfahrzeit_lernen + +// Schrittaktionen: + SET + S Y_Schleuse_Auf // Schleuse öffnen + S Dyn.Status."Trolley_fährt_aus" + +// Antriebe: +// siehe Nw10 + +// B in Schleuse aktiv: + A B_InSchleuse // Sensor Trolley ist in Schleuse + JCN X050 // Negierter Sprung + + L 0 + T Dyn.Sk.Tok_Zelle + +// Trolley ist draussen mit 5s-Verzögerung: +X050: A Weiter // Weiterschaltbedingung ist erfüllt + R Dyn.Sk.Err_Uebzeit // Sofort weiter ! + R Dyn.Error.Err_Trolley_raus // Trolley fährt nicht aus + L 300 + JC Plus // Nächsten Schritt starten + +// Trolley fährt nicht raus!: + A Dyn.Sk.Err_Uebzeit + S Dyn.Error.Err_Trolley_raus // Trolley fährt nicht aus + + L 16#B051 + T Dyn.Stop_Ursache + + A Antrieb_Schleuse_aktiv + ON Schleuse.Parameter_allg.Antrieb_vorhanden // Schleuse an angetriebener Strecke + = Ueb_akt // Überwachungszeit aktivieren + L Schleuse."Übzeit_aus_Schleuse" // Angabe der Überwachungszeit (*1s) + JU tueb // Überwachungszeit + + +--- NW 31: Schritt 6: Schleuse Mindestzeit geöffnet / Trolley draussen ? --- +s006: SET // Weiterschaltbedingung + A Dyn.Status.MindestZeit_ok + AN B_InSchleuse // Sensor Trolley in Schleuse vorhanden + A( + AN Schleuse.Parameter_allg.B_AusSep_vorhanden + A "Kein_Weichenbereich +1" + O Status2.Trolley_ist_draussen + ) + = Weiter + R Dyn.Sk.Err_Uebzeit // Sofort weiter ! + R Dyn.Error.Err_Trolley_raus // Trolley fährt nicht aus + +// Schrittaktionen: + SET + S Y_Schleuse_Auf // Schleuse öffnen + S Dyn.Status."Trolley_fährt_aus" + +// Erneutes Signal von B in Schleuse ?: + A B_InSchleuse // Sensor Trolley in Schleuse vorhanden + JCN X060 // Negierter Sprung + + L 5 + T Dyn.Sk.Neu_Schritt // Schritt, der im nächsten Zyklus aktiv werden soll + + L 0 // Mindest-Zeit neu starten + T Dyn.Mindest_Zeit // Sensor B_im_Sep ist frei [1s] + SET + R Dyn.Status.MindestZeit_ok // Zeit bereits abgelaufen + + JU RET + +// Antriebe: +// siehe Nw10 + +X060: A Weiter + JC X006 // Nächsten Schritt starten + + L 16#B061 + T Dyn.Stop_Ursache + +// Trolley fährt nicht raus!: + A Dyn.Sk.Err_Uebzeit + S Dyn.Error.Err_Trolley_raus // Trolley fährt nicht aus + + A Dyn.Error.Err_Trolley_raus // Trolley fährt nicht aus + AN Status2.Trolley_ist_draussen + A Schleuse.Parameter_allg.B_AusSep_vorhanden + R Dyn.Error.Err_Trolley_raus // Trolley fährt nicht aus + S Dyn.Error.Err_Raus_Sensor // Raus-Sensor wird nicht erreicht (oder dauernd aktiv)! + + A Antrieb_Schleuse_aktiv + ON Schleuse.Parameter_allg.Antrieb_vorhanden // Schleuse an angetriebener Strecke + = Ueb_akt // Überwachungszeit aktivieren + L Schleuse."Übzeit_aus_Schleuse" // Angabe der Überwachungszeit (*1s) + JU tueb // Überwachungszeit + +// Trolley hat Schleuse verlassen: +X006: SET + S Dyn.Status.Trolley_draussen // 1 Zyklus + R Dyn.Status."Trolley_fährt_in_Schleuse" + R Status2.Telegramm_gesendet + + L Dyn.Vereinzelungstakte + + DINT#1 // Vereinzelungen +1 + T Dyn.Vereinzelungstakte + +// Draussen-FC ?: + AN DraussenFC_vorhanden + JC NoFC // Bei diesem Schritt weiter + + L Schleusen_Nr // Schleusen-Nr. + T "MW190" + L Dyn.Trolley_ShopGroup // Shop-Gruppe + T "MD182" // übergeben + + L Dyn.Weichen_Ziel + T "MW198" // Weichenziel + + UC DB[DraussenFC] // z.Bsp. Daten anpassen + +NoFC: L 7 // Weiter mit Schritt 7 + JU Neu_Mig // Bei diesem Schritt weiter + + +--- NW 32: Schritt 7: Trolley ausserhalb der Weiche --- +s007: SET // Weiterschaltbedingung + AN "Kein_Weichenbereich +1" // Also Weiche vorhanden + AN "Reservierung_Weiche+1_aktiv" // Weiche nicht mehr angemeldet (Evtl. Reset im Weichenbereich) + O Dyn.Status."Trolley ausserhalb Weiche" // Rückmeldung von Weiche +1 + O "Kein_Weichenbereich +1" + = Weiter + +// Schrittaktionen: + SET + S Y_Schleuse_Auf // Schleuse öffnen + S Dyn.Status."Trolley_fährt_aus" + A( + O Dyn.Status.Weiche_geschaltet // Weiche ist aktiv + O "Kein_Weichenbereich +1" + ) + S Antrieb_Schleuse_vor // Antrieb einschalten + S Antrieb_plus_vor // Antrieb plus einschalten + + A Weiter // Weiterschaltbedingung ist erfüllt + JC X007 + + L 16#B071 + T Dyn.Stop_Ursache + + JU RET + +// Trolley ist ausserhalb der Weiche?: +X007: A "Kein_Weichenbereich +1" + JC ENDE_Mig + +// Weichen-Rückmeldungen löschen: + SET + R Dyn.Status.Weiche_geschaltet + R Dyn.Status."Trolley ausserhalb Weiche" + +// Weichen-Reservierung löschen: + OPN DB[SAVE.Weichen_DB] // FABE+ -DB öffnen + + L SAVE.Weichen_DW + ITD + T AR1Start // Startwert mit Offset 0 + + L AR1Start // Startwert mit Offset 0 + + DINT#78 + SLD 3 + T AR1Zeiger // Statt Dyn.Bereichsstop (ging nur bis DB-Länge <= 8191 Bytes) + + L DBW [AR1Zeiger] // Schleuse -1 (DBW 78) + L Schleusen_Nr + <>I // Nicht diese Schleuse! + JC ENDE_Mig + + L 0 + T DBW [AR1Zeiger] // Schleuse -1 (DBW 78) + T SAVE."Weiche+1" // Hier wurde reserviert + + L 0 + JU Plus // Nächsten Schritt starten + + +--- NW 33: Schritt 8: Weichen-Rückmeldungen = 0? --- +s008: SET // Weiterschaltbedingung + +// Schrittaktionen: + AN Dyn.Status.Weiche_geschaltet + AN Dyn.Status."Trolley ausserhalb Weiche" + JC ENDE_Mig + + L 16#B080 + T Dyn.Stop_Ursache + + JU RET + + +--- NW 34: Schritt 9: Lese-Einheit bereit? --- +s009: SET // Weiterschaltbedingung + L Dyn.Leser.IN.nOutBarcode + L DINT#0 + ==D + A Dyn.Leser.IN.xOutReadyForNewScan + AN Dyn.Leser.IN.xOutReadingDone + AN Dyn.Leser.IN.xOutCodeGood + AN Dyn.Leser.IN.xOutCodeBad + = Weiter + R Dyn.Error.Err_Leser_nicht_bereit + +// Schrittaktionen: + AN Status2.Trolley_an_Schleuse // Trolley im Schleuse erkannt + A Schleuse.Parameter_allg.Leser_eingebaut + R Dyn.Error.Err_Leser_nicht_bereit + L 0 // Weiter mit Schritt 0 + JC Neu_Mig // Bei diesem Schritt weiter + + A Weiter + = Dyn.Leser.OUT.xInStartReading // Leser triggern + L 0 // Angabe der Wartezeit (*10ms) + JC Plus // Nächsten Schritt starten + +// Leser nicht bereit: + A Dyn.Leser.IN.xOutReadingDone // Falls altes Handshake noch gewollt + O Dyn.Leser.IN.xOutCodeGood + O Dyn.Leser.IN.xOutCodeBad + S Dyn.Leser.OUT.xInHandshakeDone + + A Dyn.Sk.Err_Uebzeit + R Dyn.Sk.Err_Uebzeit // Sofort weiter ! + S Dyn.Error.Err_Leser_nicht_bereit + S Dyn.Leser.OUT.xInErrQuit // Vielleicht hilft es + + A Dyn.Error.Err_Leser_nicht_bereit + A ErrQuit // Mit Quittierung dann zusätzlich reset! + S Dyn.Leser.OUT.xInReset + +// HMI-TrolleyID bei Leser nicht bereit: + L Dyn.HMI.TrolleyID_Input + L DINT#0 + <>D // Ja! + A Dyn.Error.Err_Leser_nicht_bereit + L 0 // Angabe der Wartezeit (*10ms) + JC Plus // Nächsten Schritt starten + + SET + = Ueb_akt // Überwachungszeit aktivieren + L 5 // Angabe der Überwachungszeit (*1s) + JU tueb // Überwachungszeit + + +--- NW 35: Schritt 10: Warten auf Leseeinheit --- +s010: SET // Weiterschaltbedingung + A Dyn.Leser.IN.xOutReadingDone + A Dyn.Leser.IN.xOutCodeGood + AN Dyn.Leser.IN.xOutCodeBad + = Weiter + R Dyn.Error.Err_Kein_LeseErgebnis + +// Schrittaktionen: + AN Status2.Trolley_an_Schleuse // Trolley im Schleuse erkannt + A Schleuse.Parameter_allg.Leser_eingebaut + L 0 // Weiter mit Schritt 0 + R Dyn.Error.Err_Kein_LeseErgebnis + JC Neu_Mig // Bei diesem Schritt weiter + + SET + R Dyn.Leser.OUT.xInStartReading // Leseeinheit triggern + + A Weiter + S Dyn.Leser.OUT.xInHandshakeDone + R Dyn.Sk.Err_Uebzeit // Sofort weiter ! + JC X010 + + SET + S Dyn.Status.Trolley_wartet_Lesung + + A Dyn.Error.Err_Leser_nicht_bereit // von Schritt 9 + JC LX + + A Dyn.Sk.Err_Uebzeit + O Dyn.Leser.IN.xOutCodeBad + S Dyn.Leser.OUT.xInHandshakeDone + JC L2 // Erst bei 3.Fehllesung Error! + + L 16#B101 + T Dyn.Stop_Ursache + + SET + = Ueb_akt // Überwachungszeit aktivieren + + L 10 // Angabe der Überwachungszeit (*1s) + JU tueb // Überwachungszeit + +L2: A Status2."2.Lesung_aktiv" // Erst bei 3.Fehllesung Error! + JC L3 + + SET + S Status2."2.Lesung_aktiv" + R Dyn.Sk.Err_Uebzeit // Sofort weiter ! + + L 9 + T Dyn.Sk.Neu_Schritt // Schritt, der im nächsten Zyklus aktiv werden soll + + JU RET + +L3: A Status2."3.Lesung_aktiv" // //Erst bei 3.Fehllesung Error! + JC LX + + SET + S Status2."3.Lesung_aktiv" + R Dyn.Sk.Err_Uebzeit // Sofort weiter ! + + L 9 + T Dyn.Sk.Neu_Schritt // Schritt, der im nächsten Zyklus aktiv werden soll + + JU RET + +// Nach 3.Fehl-Lesung erst Leserfehler! +LX: SET + R Dyn.Sk.Err_Uebzeit // Sofort weiter ! + S Dyn.Error.Err_Kein_LeseErgebnis + JU NoLesung + +// Leserdaten übergeben: +X010: L Dyn.Leser.IN.nOutBarcode + T Dyn.TrolleyID_Schleuse + + L DINT#0 // Unbekannt ? + ==D // Ja ! + O( + CAC + L DINT#-1 // Fehl-Lesung? + ==D // Ja ! + ) + S Dyn.Error.Err_Kein_LeseErgebnis + L 9 // Weiter mit Schritt 9 (Leser bereit) + JC Neu_Mig // Bei diesem Schritt weiter + + L 11 // Weiter mit Schritt 11 + JU Neu_Mig // Bei diesem Schritt weiter + +// Lesefehler: +NoLesung: NOP 0 +// HMI-Eingabe?: +// HMI-TrolleyID: + L Dyn.HMI.TrolleyID_Input + T Dyn.TrolleyID_Schleuse + <>D // Ja! + L 0 // Angabe der Wartezeit (*10ms) + R Dyn.Error.Err_Kein_LeseErgebnis + R Dyn.Error.Err_Leser_nicht_bereit // von Schritt 9 + JC Plus // Nächsten Schritt starten + +// Leser-FC aufrufen: +No_HMIa: AN LeserFC_vorhanden + JC NoLFC + + L Schleusen_Nr // Schleusen-Nr. + T "MW190" // übergeben + L Dyn.Trolley_ZwischenZiel // Übergabe von Leser-Aufruf + T "MW196" + + A Dyn.Error.Err_Kein_LeseErgebnis + = "M180.0" + SET + R "M180.1" + + UC DB[LeserFC] // Beeinflussung der Fehllesung + + L 16#B102 + T Dyn.Stop_Ursache + + L "MW196" // Zwischenziel übergeben + T Dyn.Trolley_ZwischenZiel // Übergabe von Leser-Aufruf + L 0 // Übergeben ? + <>I // Ja! + L 12 // Weiter mit Schritt 12 + R Dyn.Error.Err_Kein_LeseErgebnis + JC Neu_Mig // Bei diesem Schritt weiter + +NoLFC: L 9 + T Dyn.Sk.Neu_Schritt // Schritt, der im nächsten Zyklus aktiv werden soll + + JU RET + + +--- NW 36: Schritt 11: Trolleydaten aus DL lesen --- +s011: L DINT#0 + T Dyn.TrolleyID_Eingefahren // Eintrag von Weiche -1 + + L Dyn.Trolley_ZwischenZiel // / + + L Dyn.TrolleyID_Schleuse + T "MD220" + +CALL FC "DatenOut" (SSDB:=Schleuse.Gesamt_Trolley_DL, SSDW:=0, PARA:=16#0000, SEARCHDATEN:=P#M220.0, RE_VAL:="MB199", OUTDATEN:=DB1011.DBX0.0, Position:="MW196") // Eintrag lesen + + L 16#B111 + T Dyn.Stop_Ursache + + AN "M199.7" + = Dyn.Error.Barcode_nicht_bekannt + JC UnbekanntBC + +// Relevanten Trolleydaten auslesen: + L "TrolleyDL_OutDaten".OUTDaten.EndZiel + T Dyn.Trolley_EndZiel + +// ZwischenZiel nicht überschreiben: + L Dyn.Trolley_ZwischenZiel + L 0 // Schon bekannt ? + <>I // Ja ! + JC NixZZ + + L "TrolleyDL_OutDaten".OUTDaten.ZwischenZiel + T Dyn.Trolley_ZwischenZiel + +NixZZ: L "TrolleyDL_OutDaten".OUTDaten.ShopGroup + T Dyn.Trolley_ShopGroup + + L 0 // Angabe der Wartezeit (*10ms) + JU Plus // Nächsten Schritt starten + +// Unbekannter Trolley: +UnbekanntBC: NOP 0 +// HMI-Eingabe?: + +// Leser-FC aufrufen: +Nix_HMI: AN LeserFC_vorhanden + JC Nix_LFC + + L Schleusen_Nr // Schleusen-Nr. + T "MW190" // übergeben + L Dyn.TrolleyID_Schleuse + T "MD192" + L Dyn.Trolley_ZwischenZiel + T "MW196" + + A Dyn.Error.Barcode_nicht_bekannt + = "M180.1" + SET + R "M180.0" + + UC DB[LeserFC] // Beeinflussung der Weiterfahrt bei nicht bekanntem Trolley + + L "MW196" // ZwischenZiel übergeben + T Dyn.Trolley_ZwischenZiel // Übergabe von Leser-Aufruf + L 0 // Übergeben ? + <>I // Ja! + L 12 // Weiter mit Schritt 12 + R Dyn.Error.Err_Kein_LeseErgebnis + JC Neu_Mig // Bei diesem Schritt weiter + +Nix_LFC: JU RET + + +--- NW 37: Schritt 12: Ziel-FC --- +s012: NOP 0 + +// Schrittaktionen: + AN Status2.Trolley_an_Schleuse // Trolley im Schleuse erkannt + A Schleuse.Parameter_allg.Leser_eingebaut + AN "Schleuse_geöffnet" + L 0 // Weiter mit Schritt 0 + JC Neu_Mig // Bei diesem Schritt weiter + + SET + S Dyn.Status."Trolley_wartet_auf_Ziel-FC" + + AN ZielFC_vorhanden + R Dyn.Status."Trolley_wartet_auf_Ziel-FC" + L 13 // Weiter mit Schritt 13 + JC Neu_Mig // Bei diesem Schritt weiter + + SET // Rückmeldungen erst mal resetten + R "M180.6" // Weiterfahrt von Ziel-FC erlaubt + L Schleusen_Nr // Schleusen-Nr. + T "MW190" // übergeben + L Dyn.Trolley_ShopGroup // Shop-Gruppe + T "MD182" // übergeben + L Dyn.Trolley_EndZiel // End-Ziel + T "MW194" // übergeben + L Dyn.Trolley_ZwischenZiel + T "MW196" // übergeben + L 0 // Erst mal nullen + T "MW198" // Weichenziel + + UC DB[ZielFC] // Beeinflussung der Weiterfahrt + + L 16#B122 + T Dyn.Stop_Ursache + +// Spezial-Fall bei Übergabe an Sorter / Turm (M180.6 wird nie im Ziel-FC gesetzt!) +// aber anderer Partner hat Schleuse extern geöffnet: + A "Schleuse_geöffnet" + AN "M180.6" // Weiterfahrt von Ziel-FC erlaubt + AN Status2."TrolleyPos_übergeben" // Nur einmalig + S Status2."TrolleyPos_übergeben" + JCN Normal // Negierter Sprung + + L Dyn.Vereinzelungstakte + + DINT#1 // Vereinzelungen +1 + T Dyn.Vereinzelungstakte + +CALL FC "Trolley_DL_Neue_Pos" (Gesamt_Trolley_DL:=Schleuse.Gesamt_Trolley_DL, TrolleyID:=Dyn.TrolleyID_Schleuse, Position:=Schleuse.Leser_ID, ShopGroup:=Dint#0, Err:="M199.0") + +// Draussen-FC ?: + AN DraussenFC_vorhanden + JC RET // Bei diesem Schritt weiter + + L Schleusen_Nr // Schleusen-Nr. + T "MW190" + + UC DB[DraussenFC] // z.Bsp. Daten anpassen + + JU RET + +Normal: A "M180.6" // Weiterfahrt von Ziel-FC erlaubt + JC X012 + + AN Schleuse.Parameter_allg.Leser_eingebaut + JC RET + + L 11 + T Dyn.Sk.Neu_Schritt // Schritt, der im nächsten Zyklus aktiv werden soll + + JU RET + +X012: L "MW196" // zurückschreiben, falls verändert + T Dyn.Trolley_ZwischenZiel + + L "MW198" // Weichenziel übergeben + T Dyn.Weichen_Ziel + + L 13 // Weiter mit Schritt 13 + JU Neu_Mig // Bei diesem Schritt weiter + + +--- NW 38: Schritt 13: Schleusen-Position zurückschreiben --- +s013: NOP 0 + +// Schrittaktionen: + SET + S Status2."Weichen-Schritt" + +// Neue Position an Gesamt-Trolley-DL übergeben: +CALL FC "Trolley_DL_Neue_Pos" (Gesamt_Trolley_DL:=Schleuse.Gesamt_Trolley_DL, TrolleyID:=Dyn.TrolleyID_Schleuse, Position:=Schleuse.Leser_ID, ShopGroup:=DINT#0, Err:="M199.0") // für nichts verändern + + L 0 // Angabe der Wartezeit (*10ms) + JU Plus // Nächsten Schritt starten + + +--- NW 39: Schritt 14: Weichenbereich +1 vorhanden --- +s014: NOP 0 + +// Schrittaktionen: +// Weichenbereich +1 vorhanden?: + A "Kein_Weichenbereich +1" + L 2 // Weiter mit Schritt 2 (Ausfahren ok?) + JC Neu_Mig // Bei diesem Schritt weiter + + SET + S Status2."Weichen-Schritt" + R Dyn.Status.Weiche_geschaltet + R Dyn.Status."Trolley ausserhalb Weiche" + + L 0 // Angabe der Wartezeit (*10ms) + JU Plus // Nächsten Schritt starten + + +--- NW 40: Schritt 15: Weichenbereich raus bereit ? --- +s015: NOP 0 + +// Schrittaktionen: + SET + S Status2."Weichen-Schritt" + + L Dyn.Weichen_Ziel + L 0 // Bekannt ? + <>I // Ja ! + JC X15A + + L 12 // Ziel-FC ? + T Dyn.Sk.Neu_Schritt // Schritt, der im nächsten Zyklus aktiv werden soll + + L 16#B154 + T Dyn.Stop_Ursache + + JU RET + +X15A: SET + S Dyn.Status."Trolley_wartet_auf_Weiche+1" + + L 16#B155 + T Dyn.Stop_Ursache + + L SAVE.Weichen_DB // Weichen-DB + L 0 // Einsprung-Zeiger bekannt ? + >I // Ja ! + JC S015A + + L 16#B150 + T Dyn.Stop_Ursache + + JU RET + +// Weichendaten auslesen: +S015A: L SAVE.Weichen_DW + ITD + T AR1Start // Startwert mit Offset 0 + + L AR1Start // Startwert mit Offset 0 + + DINT#70 + SLD 3 + L 0 // Damit DBX70.0 + OD + T AR1Zeiger // Statt Dyn.Bereichsstop (ging nur bis DB-Länge <= 8191 Bytes) + + L 16#B152 + T Dyn.Stop_Ursache + + OPN DB[SAVE.Weichen_DB] // FABE+ -DB öffnen + + AN DBX [AR1Zeiger] // Weichenbereich frei ? (DBX70.0) + O Dyn.Status.Weiche_geschaltet // Rückmeldungen noch aktiv! + O Dyn.Status."Trolley ausserhalb Weiche" + JC S015B + + L 16 // Weiter mit Schritt 16 (Daten an Weiche übergeben) + JU Neu_Mig // Bei diesem Schritt weiter + +// Reservierung schon erfolgt ?: +S015B: SET + R Dyn.Status.Weiche_geschaltet + R Dyn.Status."Trolley ausserhalb Weiche" + + L AR1Start // Startwert mit Offset 0 + + DINT#78 + SLD 3 + T AR1Zeiger // Statt Dyn.Bereichsstop (ging nur bis DB-Länge <= 8191 Bytes) + + OPN DB[SAVE.Weichen_DB] // FABE+ -DB öffnen + + L DBW [AR1Zeiger] // Schleuse -1 (DBW 78) + L Schleusen_Nr // Diese Schleuse ? + <>I // Nein ! -> Ok + JC RET + +// Reservierung löschen: + OPN DB[SAVE.Weichen_DB] // FABE+ -DB öffnen + + L 0 + T DBW [AR1Zeiger] // Schleuse -1 (DBW 78) + + JU RET + + +--- NW 41: Schritt 16: Daten an Rausweiche übergeben --- +s016: NOP 0 + +// Schrittaktionen: + SET + S Status2."Weichen-Schritt" + +// Daten für Eintrag vorbereiten: + OPN DB[SAVE.Weichen_DB] // FABE+ -DB öffnen + + L AR1Start // Startwert mit Offset 0 + + DINT#72 + SLD 3 + T AR1Zeiger // Statt Dyn.Bereichsstop (ging nur bis DB-Länge <= 8191 Bytes) + + L Dyn.TrolleyID_Schleuse + T DBD [AR1Zeiger] // Trolley-ID (DBD 72) + L DINT#0 + <>D + JC X16A + + L 0 // Damit sichtbar + T DBD [AR1Zeiger] // Trolley-ID (DBD 72) + +X16A: L AR1Start // Startwert mit Offset 0 + + DINT#76 + SLD 3 + T AR1Zeiger // Statt Dyn.Bereichsstop (ging nur bis DB-Länge <= 8191 Bytes) + + L Dyn.Weichen_Ziel + T DBW [AR1Zeiger] // Weichenziel (DBW 76) + + L AR1Start // Startwert mit Offset 0 + + DINT#80 + SLD 3 + T AR1Zeiger // Statt Dyn.Bereichsstop (ging nur bis DB-Länge <= 8191 Bytes) + + L Dyn.Trolley_ZwischenZiel + T DBW [AR1Zeiger] // Zwischenziel (DBW 80) + + L AR1Start // Startwert mit Offset 0 + + DINT#78 + SLD 3 + T AR1Zeiger // Statt Dyn.Bereichsstop (ging nur bis DB-Länge <= 8191 Bytes) + + L Schleusen_Nr + T DBW [AR1Zeiger] // Schleuse -1 (DBW 78) + + SET + S "Reservierung_Weiche+1_aktiv" // Weiche nicht mehr angemeldet (da erst im nächsten Zyklus) + + L Schleuse.RausWeichen_Nr // Nr. der vorhandenen Weiche + T SAVE."Weiche+1" // Hier wurde reserviert + + L 17 // Weiter mit Schritt 17 (Hat Weiche geschaltet ?) + JU Neu_Mig // Bei diesem Schritt weiter + + +--- NW 42: Schritt 17: Hat Rausweiche geschaltet ? --- +s017: NOP 0 + +// Schrittaktionen: + SET + S Status2."Weichen-Schritt" + +// Weiche +1 noch mit dieser Schleuse aktiv ?: + AN "Reservierung_Weiche+1_aktiv" // Weiche nicht mehr angemeldet + L 14 // Weiter mit Schritt 14 + JC Neu_Mig // Bei diesem Schritt weiter + + SET + S Dyn.Status."Trolley_wartet_auf_Weiche+1" + + L 16#B170 + T Dyn.Stop_Ursache + + A Dyn.Status."Trolley ausserhalb Weiche" // Rückmeldung von Weiche +1 + JC RET + + A Dyn.Status.Weiche_geschaltet // Rückmeldung von Weiche +1 + L 2 // Weiter mit Schritt 2 (Ausfahren ok?) + JC Neu_Mig // Bei diesem Schritt weiter + + L 16#B171 + T Dyn.Stop_Ursache + + JU RET + + +--- NW 43: Schritt 20: Schleuse resetten (Wartezeit) --- +s020: A B_InSchleuse // Weiterschaltbedingung + = Weiter // Weiterschaltbedingung ist erfüllt + +// Schrittaktionen: + SET // ELS in Grundstellung fahren + S Antrieb_Schleuse_vor // Antrieb einschalten + S Antrieb_Schleuse_start // Antrieb starten + + A Weiter + O Dyn.Sk.Err_Uebzeit + R Dyn.Sk.Err_Uebzeit // Sofort weiter ! + L 21 // Weiter mit Schritt 21 + JC Neu_Mig // Bei diesem Schritt weiter + + L 16#B201 + T Dyn.Stop_Ursache + + SET + = Ueb_akt // Überwachungszeit aktivieren + L Schleuse.Wartezeit_bis_leer // Angabe der Überwachungszeit (*1s) + L 60 + JU tueb // Überwachungszeit + + +--- NW 44: Schritt 21: Reset ist zu Ende --- +s021: SET + R Dyn.Sk.Reset_Akt // Reset ist aktiv + R Status2."Warten_3.V" + R Status2."TrolleyPos_übergeben" + R Dyn.Error.Err_Trolley_nicht_in_Schleuse // Trolley fährt nicht in Schleuse + R Dyn.Error.Err_Uebzeit // Überwachungzeit ist abgelaufen + R Dyn.Error.Err_Stau_Einfahrt // Betriebsart ist nicht möglich + R Dyn.Error.Err_Trolley_raus // Trolley fährt nicht aus + R Dyn.Status."Trolley_fährt_in_Schleuse" + + L 0 + T SAVE.Weichen_DB + T SAVE.Weichen_DW + T SAVE."Weiche+1" // Dadurch wird in Weiche Reservierung gelöscht + T Schleuse.Schleusen_Nr // Damit stat. Daten neu geholt werden! + + SET + S Dyn.Status.Trolley_draussen + + JU ENDE_Mig // Neubeginn + + +--- NW 45: Schrittkette beenden --- +ENDE_Mig: L 0 // Schritt 0: Warten + T Dyn.Sk.Akt_Schritt + + L 0 // Zeitwert löschen + T Dyn.Sk.Terr_Zelle + T Dyn.Sk.Tok_Zelle + T Dyn.ZwischenZiel_eingefahren + + L DINT#0 + T Dyn.TrolleyID_Eingefahren // Eintrag von Weiche -1 + T Dyn.TrolleyID_Schleuse // Daten übergeben + T Dyn.Trolley_ZwischenZiel + T Dyn.Trolley_EndZiel + T Dyn.Weichen_Ziel + + SET + R Dyn.Sk.Err_Uebzeit + R Dyn.Status.Weiche_geschaltet + R Dyn.Status."Trolley ausserhalb Weiche" + R Dyn.Status."Trolley_fährt_rückwärts" + R Status2."Warten_3.V" + R Dyn.Error.Err_Kein_LeseErgebnis + R Status2."2.Lesung_aktiv" + R Status2."3.Lesung_aktiv" + R Status2."TrolleyPos_übergeben" + R Status2.Telegramm_gesendet + +// HMI-Zeug: + L DINT#0 + T Dyn.HMI.TrolleyID_Input + + JU RET + + +--- NW 46: Nächsten Schritt aktivieren --- +Plus: T Dyn.Sk.T_ok // Wartezeit übergeben + + A Dyn.Sk.Err_Uebzeit // Störung noch nicht quittiert + JC RET + + L 0 // keine Wartezeit ? + ==I // Ja ! -> sofort weiter + JC w220 + + AN Warte_neu // Wartezeit neutriggern + JC W220_Mig + + L 0 + T Dyn.Sk.Tok_Zelle // Wartezeit + +W220_Mig: A Warte_stop // Wartezeit stoppen + JC RET + + L Dyn.Sk.Tok_Zelle + L "MW4" // Wartezeit +10ms + +I + T Dyn.Sk.Tok_Zelle // Wartezeit + L Dyn.Sk.T_ok // abgelaufen ? + I // abgelaufen ? + AN Dyn.Sk.Err_Uebzeit + JC en24 // Nein ! + + A Ueb_akt // Überwachungszeit aktivieren + S Dyn.Sk.Err_Uebzeit + + L 0 // Zeitwert löschen + T Dyn.Sk.Terr_Zelle + + JU RET + +en24: NOP 0 + +--- NW 48: Überwachungszeit +1 --- + AN Dyn.Sk.Ueb_akt // Schrittaktion ist aktiv + ON "1s-Impuls" + JC RET + + L Dyn.Sk.Terr_Zelle + + 1 // Üb.zeit +1s + T Dyn.Sk.Terr_Zelle + + JU RET + + +--- NW 49: Return --- +RET: NOP 0 + + +--- NW 50: Leser-Einheit managen (Outputs schreiben) --- + AN Leser_Zugriff + ON Schleuse.Parameter_allg.Leser_eingebaut + JC NixLeser + +// Leserdaten schreiben: + OPN DB[Dyn.SAVE2.Leser_DB] // Leser -DB öffnen + + L Dyn.SAVE2.Leser_DD + T AR1Start // Startwert mit Offset 0 + +// Offset 4: + L AR1Start // Startwert mit Offset 0 + + DINT#4 + SLD 3 + T AR1Zeiger // Statt Dyn.Bereichsstop (ging nur bis DB-Länge <= 8191 Bytes) + + L DBB [AR1Zeiger] // Aktuelle Werte holen + T "MB200" + + A Dyn.Leser.OUT.xInStartReading + = "M200.1" + A Dyn.Leser.OUT.xInHandshakeDone + R Dyn.Leser.OUT.xInHandshakeDone + = "M200.2" + A Dyn.Leser.OUT.xInErrQuit + R Dyn.Leser.OUT.xInErrQuit + = "M200.4" + A Dyn.Leser.OUT.xInReset + R Dyn.Leser.OUT.xInReset + = "M200.5" + + L "MB200" + T DBB [AR1Zeiger] // Veränderte Werte zurück schreiben + +NixLeser: NOP 0 + + +--- NW 51: Ende --- + BE + diff --git a/=A01+UH06-KF00/Programmbausteine/Module/MHMOmniSchleuse_Neu.awl b/=A01+UH06-KF00/Programmbausteine/Module/MHMOmniSchleuse_Neu.awl new file mode 100644 index 0000000..f6111f7 --- /dev/null +++ b/=A01+UH06-KF00/Programmbausteine/Module/MHMOmniSchleuse_Neu.awl @@ -0,0 +1,2414 @@ +=== FB 1273: MHMOmniSchleuse_Neu [STL] === +INTERFACE: + Input: + Schleusen_Nr : Int // Aufruf für Schleuse + ErrQuit : Bool // Ablaufstörung quittieren + B_VorSchleuse : Bool // Sensor Trolley fährt in Bereich + B_InSchleuse : Bool // Sensor Trolley ist in Schleuse + B_AusSchleuse : Bool // Sensor Trolley hat Schleuse verlassen + B_Stau_raus : Bool // Sensor Stau im Bereich rausfahren + Start_Ok : Bool // Starten ist erlauTrolley + Antrieb_Schleuse_aktiv : Bool // Kreisel-Antrieb aktiv + Antrieb_plus_aktiv : Bool // Kreisel-Antrieb plus aktiv + Schleuse_geöffnet : Bool // Schleuse hat geöffnet + RestZeit_Bereich_plus : Int := 999 // Bereich +1: Restzeit bis AFS stoppt (s) + Output: + Y_Schleuse_Auf : Bool // Schleuse öffnen + Error : Word // Störungen übergeben + InOut: + Antrieb_Schleuse_vor : Bool // Schleusen-Antrieb einschalten + Antrieb_Schleuse_start : Bool // Schleusen-Antrieb mit Zeit starten + Antrieb_Schleuse_stop : Bool // Schleusen-Antrieb stoppen + Antrieb_Schleuse_PS : Bool // Schleusen-Antrieb Energie sparen + Antrieb_plus_vor : Bool // Antrieb plus einschalten + Antrieb_plus_start : Bool // Antrieb plus mit Zeit starten + hStOk : Bool // Anzeige Start n. Störung aktivieren + Static: + SAVE : Struct + Weichen_DB : Int // Weichen-FIFO-DB + Weichen_DW : Int // Weichen-FIFO-DW + Weiche+1 : Int // Weiche +1, wo reserviert wurde + Frei18 : Int + Frei20 : Int + Para : Struct // Parameter + Schleusen_DL_DB : Int // Einsprung Schleuse-Datenliste-DB + Weichen_DL_DB : Int // Einsprung Weichen-Datenliste-DB + Leser_DL_DB : Int // Einsprung Weichen-Datenliste-DB + Status2 : Struct + Trolley_an_Schleuse : Bool // Trolley ist an Schleuse + Warten_3.V : Bool // Warten auf 3.V + 2.Lesung_aktiv : Bool // 2.Lesung erfolgt + 3.Lesung_aktiv : Bool // 3.Lesung erfolgt + TrolleyPos_übergeben : Bool // Trolley-Pos. übergeben + Warten_4.V : Bool // Warten auf 4.V + Ausfahrzeit_lernen : Bool // Ausfahrzeit lernen + Weichen-Schritt : Bool // Schritt 13-17 aktiv (Weiche evtl. belegen) + Trolley_ist_draussen : Bool // Rückmeldung von Sensor / Weiche + Einfahrzeit_lernen : Bool // Ausfahrzeit lernen + Telegramm_gesendet : Bool // Telegramm wurde in Send-FIFO eingetragen + Schleuse : "UDLHMOmniSchleuse" // Statische Schleusendaten (aus DL) + Dyn : Struct // Dynamische Daten + Status : Struct + Trolley_fährt_in_Schleuse : Bool // Trolley fährt in Schleuse + Trolley_wartet_Lesung : Bool // Trolley wartet auf Auftrag + Trolley_wartet_auf_Ziel-FC : Bool + Trolley_wartet_auf_Weiche+1 : Bool + Trolley_wartet_Bereich+1 : Bool // Trolley wartet auf Bereich +1 + Trolley_fährt_aus : Bool // Trolley fährt aus + MindestZeit_ok : Bool // Schleuse ist MindestZeit geöffnet + Trolley_draussen : Bool // Trolley ist ausgefahren + Leser_triggern : Bool + SF_angefordert : Bool + Kein_Stop_mehr : Bool // Kein Stop mehr, Antrieb soll starten + Trolley_fährt_rückwärts : Bool // Trolley in Schleuse rückwärts erkannt + Weiche_geschaltet : Bool + Trolley ausserhalb Weiche : Bool // Trolley hat Weiche verlassen (von Weiche) + Error_aktiv : Bool // Störung vorhanden + Reset_aktiv : Bool := TRUE // Reset aktiv + TrolleyID_Schleuse : DInt // Trolley-Nr in der Schleuse + Trolley_EndZiel : Word // Trolley-EndZiel + Trolley_ZwischenZiel : Word // Trolley-ZwischenZiel + Trolley_ShopGroup : DInt // Trolley-ShopGroup + Weichen_Ziel : Word // Weichen-Ziel (Für WeichenModul von Ziel-FC) + TrolleyID_Eingefahren : DInt // Trolley-Nr von Bereich -1 gemeldet + TrolleyID_ausgefahren : DInt // TrolleyID des ausgefahrenen Trolleys + HMI : Struct + TrolleyID_in_Schleuse : DInt // Trolley-Nr in Schleuse (IN:PLC, OUT:PLC) + TrolleyID_Input : DInt // Trolley-Nr Input (IN:HMI, OUT:PLC) + Schleuse_resetten : Bool // Schleuse resetten (IN:HMI, Out:PLC) + Sk : "USk_ILS" // Status der Schrittkette + Leser : Struct + IN : Struct + xOutReadyForNewScan : Bool // DBX10.1: Reader ist bereit für Leseanforderung + xOutReadingDone : Bool // DBX10.0: Lesevorgang abgeschlossen / Handshake raus + xOutCodeGood : Bool // DBX278.0: Gute Lesung + xOutCodeBad : Bool // DBX278.1: Schlechte Lesung + nOutBarcode : DInt // DBD12: Trolley ID + OUT : Struct + xInStartReading : Bool // DBX4.1: Starte Lesevorgang + xInHandshakeDone : Bool // DBX4.2: Handshake Daten abgeholt + xInErrQuit : Bool // DBX4.4: Fehler rücksetzen + xInReset : Bool // DBX4.5: Allgemeines Rücksetzen des Bausteins + TrolleyID_unbekannt_Schleuse : DInt // TrolleyID unbekannt (Trolley in Schleuse) + Rueckmld : Struct + RET_VAL_BLKMOV_Schleuse : Int // Rückmeldung nach BLKMOV-Aufruf + RET_VAL_DL_Schleuse : Byte + RET_VAL_DL_Weiche : Byte // Rückmeldung nach DatenOut-Aufruf + RET_VAL_DL_Leser : Byte // Rückmeldung nach DatenOut-Aufruf + Error : "UErrHMOmniSchleuse" + Stau_Zeit : Int // Sensor B_VorSep ist belegt [100ms] + Mindest_Zeit : Int // Sensor B_VorSep ist frei [100ms] + Leer_Zeit : Int + Stop_Ursache : Word // Stop-Stelle: Nw + Position + Vereinzelungstakte : DInt // Anzahl der getätigten Vereinzelungstakte + ZwischenZiel_eingefahren : Word // Trolley-ZwischenZiel von Bereich -1 + Ohne_B : Int + SAVE2 : Struct + Leser_DB : Int // Weichen-FIFO-DB + Leser_DD : DInt // Weichen-FIFO-DD + WarteZeit_PS : Int + Restzeit_bis_Schleuse : Int + Res200 : Array[1..16] of Int // Reserve + Temp: + Quelle : Any // Zeiger, wo Rein-Daten sind + Ueb_akt : Bool // Überwachungszeit aktivieren + Weiter : Bool // Weiterschaltbedingung ist erfüllt + Warte_neu : Bool // Wartezeit neu triggern + Warte_stop : Bool // Wartezeit stoppen + Kein_Weichenbereich +1 : Bool + Reservierung_Weiche+1_aktiv : Bool + Leser_Zugriff : Bool // Leser-Zugriff vorhanden + LeserFC_vorhanden : Bool + ZielFC_vorhanden : Bool + DraussenFC_vorhanden : Bool + TrolleyID_Bereich-1 : Bool // Trolley--ID von Bereich -1 gemeldet + Einfahrzeit_nicht_bekannt : Bool + LeserFC : Word // Ziel-FC + ZielFC : Word // Ziel-FC + DraussenFC : Word // Draussen-FC + AR1Start : DInt // Startwert mit Offset 0 + AR1Zeiger : DWord // Statt AR1 (ging nur bis DB-Länge <= 8191 Bytes) + Constant: + +--- NW 1: Parameter-Übergabe --- + L Schleusen_Nr + + L 274 // Einsprung Schleuse-DL + T Para.Schleusen_DL_DB // vor Aufruf übergeben! + + L 279 // Einsprung Weichen-DL + T Para.Weichen_DL_DB // vor Aufruf übergeben! + + L 273 + T Para.Leser_DL_DB + + +--- NW 2: Anzeige OP --- + A ErrQuit // Überwachungszeit abgelaufen quittieren + R Dyn.Sk.Err_Uebzeit + + L 252 // Bereichsstop aktiv + AN Dyn.Sk.Bereich_ok // Also: Bereichsstop / Not-Aus + JC w010 + + L 253 + AN Dyn.Sk.Auto_akt // Keine Betriebsart + AN Dyn.Sk.Hand_akt + JC w010 + + L 255 // Handbetrieb aktiv + A Dyn.Sk.Hand_akt + JC w010 + + L Dyn.Sk.Akt_Schritt // Aktiver Schritt +w010: T Dyn.Sk.OP_Schritt + + +--- NW 3: Out-Bits zum Zurücksetzen --- + SET + R Y_Schleuse_Auf + + SET // Jeden Zyklus neu + R Dyn.Status.Trolley_wartet_Lesung + R Dyn.Status."Trolley_wartet_auf_Ziel-FC" + R Dyn.Status."Trolley_wartet_auf_Weiche+1" + R Dyn.Status."Trolley_wartet_Bereich+1" + R Dyn.Status."Trolley_fährt_aus" + R Dyn.Status.Trolley_draussen + R Leser_Zugriff + R Status2."Weichen-Schritt" + + A Dyn.Sk.Reset_Akt + = Dyn.Status.Reset_aktiv + + +--- NW 4: HMI-Zeug --- +// Von HMI: + A Dyn.HMI.Schleuse_resetten + R Dyn.HMI.Schleuse_resetten // von HMI + S Dyn.Sk.Reset // SK zurücksetzen + + L Dyn.HMI.TrolleyID_Input // Wird direkt im Programm verwertet (s.u.) + +// An HMI: +ToHMI: L Dyn.TrolleyID_Schleuse + T Dyn.HMI.TrolleyID_in_Schleuse + + +--- NW 5: Schrittkette zurücksetzen --- + A ErrQuit // Überwachungszeit abgelaufen quittieren + R Dyn.Sk.Err_Uebzeit + + AN Dyn.Sk.Reset // SK zurücksetzen + JC en04 + +// Schrittkette zurücksetzen: + L 0 // Schritt 0: Warten + T Dyn.Sk.Akt_Schritt + + L 0 // Zeitwert löschen + T Dyn.Sk.Terr_Zelle + T Dyn.Sk.Tok_Zelle + + SET + R Dyn.Error.Err_BLKMov // Error bei Block kopieren + R Dyn.Sk.Reset // SK zurücksetzen + R Dyn.Sk.Err_Schritt // Undefinierter Schritt + R Dyn.Sk.Err_Uebzeit // Sofort weiter ! + R Status2.Telegramm_gesendet + S Dyn.Sk.Reset_Akt // Reset ist aktiv + + SET + R Dyn.Error.Schleuse_DL // Schleuse-Datenliste fehlerhaft + R Dyn.Error.Undef_Schleuse // undefinierter Schleuse + R Dyn.Error.Err_Trolley_nicht_in_Schleuse // Trolley fährt nicht in Schleuse + R Dyn.Error.Err_Uebzeit // Überwachungzeit ist abgelaufen + R Dyn.Error.Err_Schritt // Schritt-Nummer ist nicht definiert + R Dyn.Error.Err_Stau_Einfahrt + R Dyn.Error.Err_BLKMov + R Dyn.Error.Err_Trolley_raus // Trolley fährt nicht aus + R Dyn.Error.Err_Raus_Sensor // Raus-/Belade-Sensor wird nicht erreicht (oder dauernd aktiv)! + R Dyn.Error.Err_Ziel // kein Ziel angegeben + R Dyn.Error.Err_Weichen_DL // Weichen-Datenliste fehlerhaft + R Dyn.Error.Err_Undef_Weiche // undefinierte Weiche + R Dyn.Error.Err_Weiche_belegt // Weiche bleibt belegt + R Dyn.Error.Err_Kein_LeseErgebnis + R Dyn.Error.Err_Leser_nicht_bereit + + L DINT#0 + T Dyn.Leser.IN.nOutBarcode + + L 0 + T Dyn.Stau_Zeit // Sensor B_VorSep ist belegt [10ms] + T Dyn.Mindest_Zeit // Sensor B_VorSep ist frei [10ms] + T SAVE."Weiche+1" + T SAVE.Weichen_DB + T SAVE.Weichen_DW + T Dyn.SAVE2.Leser_DB + L DINT#0 + T Dyn.SAVE2.Leser_DD + +// Defaultwerte übergeben: + L 0 // Damit statische Werte neu aus Datenbank geholt werden ! + T Schleuse.Schleusen_Nr // Nummer des Schleuses + + JU RET + +en04: NOP 0 + + +--- NW 6: Störungen nach Außen übergeben --- + L 0 + T "MW200" + + A Dyn.Error.Schleuse_DL // Schleuse-Datenliste fehlerhaft + = "M200.0" + A Dyn.Error.Undef_Schleuse // undefinierter Schleuse + = "M200.1" + A Dyn.Error.Err_Trolley_nicht_in_Schleuse // Trolley fährt nicht in Schleuse + = "M200.2" + A Dyn.Sk.Err_Uebzeit + = Dyn.Error.Err_Uebzeit // Überwachungzeit ist abgelaufen + = "M200.3" + NEG + R Dyn.Sk.Err_Uebzeit_AnzOk + A Dyn.Sk.Err_Schritt + = Dyn.Error.Err_Schritt // Schritt-Nummer ist nicht definiert + = "M200.4" + A Dyn.Error.Err_Stau_Einfahrt + AN B_InSchleuse + AN Y_Schleuse_Auf + = "M200.5" + A Dyn.Error.Err_BLKMov // Error bei Block kopieren + = "M200.6" + A Dyn.Error.Err_Trolley_raus // Trolley fährt nicht aus + = "M200.7" + A Dyn.Error.Err_Raus_Sensor // Raus-/Belade-Sensor wird nicht erreicht (oder dauernd aktiv)! + = "M201.0" + A Dyn.Error.Err_Ziel // Trolley-Ziel nicht bekannt + = "M201.1" + A Dyn.Error.Err_Weichen_DL // Weichen-Datenliste fehlerhaft + = "M201.2" + A Dyn.Error.Err_Undef_Weiche // undefinierte Weiche + = "M201.3" + A Dyn.Error.Err_Weiche_belegt // Weiche bleibt belegt + = "M201.4" + A Dyn.Error.Err_Kein_LeseErgebnis + = "M201.5" + A Dyn.Error.Err_Leser_nicht_bereit + = "M201.6" + A Dyn.Error.Barcode_nicht_bekannt + = "M201.7" + +// Andere Meldung als Überwachungszeit aktiv ?: + L "MW200" + L 2#1111_0111_1111_1111 + AW + L 2#0000_0000_0000_0000 // Andere Meldung als Üb.zeit aktiv ? + <>I // Ja ! + ON Dyn.Sk.Err_Uebzeit_AnzOk // Störung anzeigen ok, da 2.Zyklus aktiv ! + R "M200.3" // Üb.Zeit-Meldung nicht an PC senden + + A Dyn.Sk.Err_Uebzeit + S Dyn.Sk.Err_Uebzeit_AnzOk // Störung anzeigen ok, da 2.Zyklus aktiv ! + + L "MW200" + T Error // Schnittstelle nach Außen + +// Störung vorhanden: + L 0 + <>I // Ja ! + = Dyn.Status.Error_aktiv + S hStOk + +// Antrieb stoppen: + A( + ON Dyn.Sk.Auto_akt // SystemVoraussetzungen fehlen + O Dyn.Sk.Hand_akt + ON Dyn.Sk.Bereich_ok + ) + S Antrieb_Schleuse_stop // Antrieb stoppen + +// Störungen pro Zyklus neu erzeugen: + SET + R Dyn.Error.Schleuse_DL // Schleuse-Datenliste fehlerhaft + R Dyn.Error.Undef_Schleuse // undefinierter Schleuse +// / R #Dyn.Error.Err_Trolley_nicht_in_Schleuse//Trolley fährt nicht in Schleuse +// / R #Dyn.Error.Err_Uebzeit //Überwachungzeit ist abgelaufen + R Dyn.Error.Err_Schritt // Schritt-Nummer ist nicht definiert +// / R #Dyn.Error.Err_Stau_Einfahrt//Betriebsart ist nicht möglich + R Dyn.Error.Err_BLKMov +// / R #Dyn.Error.Err_Trolley_raus//Trolley fährt nicht aus + R Dyn.Error.Err_Raus_Sensor // Raus-/Belade-Sensor wird nicht erreicht (oder dauernd aktiv)! + R Dyn.Error.Err_Ziel // Trolley-Ziel nicht bekannt + R Dyn.Error.Err_Weichen_DL // Weichen-Datenliste fehlerhaft + R Dyn.Error.Err_Undef_Weiche // undefinierte Weiche + R Dyn.Error.Err_Weiche_belegt // Weiche bleibt belegt +// / R #Dyn.Error.Err_Kein_LeseErgebnis +// / R #Dyn.Error.Err_Leser_nicht_bereit + R Dyn.Error.Barcode_nicht_bekannt + + AN Dyn.Sk.Err_Uebzeit + R Dyn.Error.Err_Trolley_nicht_in_Schleuse // Trolley fährt nicht in Schleuse + R Dyn.Error.Err_Trolley_raus // Trolley fährt nicht aus + R Dyn.Error.Err_Raus_Sensor // Raus-Sensor wird nicht erreicht (oder dauernd aktiv)! + + +--- NW 7: Statische Schleuse-Parameter holen --- + L Schleuse.Schleusen_Nr // Nummer des Schleuses + L Schleusen_Nr // Aufruf-Parameter + ==I // Identisch ? + R Dyn.Error.Schleuse_DL // Schleusedatenbank fehlerhaft + R Dyn.Error.Undef_Schleuse // undefinierter Schleuse + JC en06 // Ja ! + + T "MW200" // Search-Daten + +CALL FC "DatenOut" (SSDB:=Para.Schleusen_DL_DB, SSDW:=0, PARA:=WORD#16#0000, SEARCHDATEN:=P#M200.0, RE_VAL:="MB199", OUTDATEN:=P#M220.0, Position:="MW196") + + L "MB199" + T Dyn.Rueckmld.RET_VAL_DL_Schleuse // Rückmeldung bei Datenbank-Zugriff (Gefälle-DL) + + JBI G_Ok + + A "M199.0" + JCN w060 + + SET + = Dyn.Error.Schleuse_DL // Schleusedatenbank fehlerhaft + + L 16#A061 + T Dyn.Stop_Ursache + + JU RET + +w060: SET + S Dyn.Error.Undef_Schleuse // undefinierter Schleuse + + L 16#A062 + T Dyn.Stop_Ursache + + JU RET + +// Kennung + Datenbytes +G_Ok: SET + R Dyn.Error.Schleuse_DL // Gefälledatenbank fehlerhaft + R Dyn.Error.Undef_Schleuse // undefinierte Gefällestrecke + + L 16#1004 // Kennung 10 + Word=04 + T LW0 // Any-Kennung, Datentyp + L 20 // Datenwords speichern + T LW2 // Wiederholungen + +// Quelle-Pointer erzeugen: + L 0 // Bei Merker = 0 ! + T LW4 // DB_Nummer + L 220 // Adresse + SLD 3 + L 16#8300_0000 // Kennung: Merker + OD + T LD6 // Kennung, Adresse + +CALL SYS "BLKMOV" (SRCBLK:=Quelle, RET_VAL:=Dyn.Rueckmld.RET_VAL_BLKMOV_Schleuse, DSTBLK:=Schleuse) // Datenliste-Daten speichern | #Ziel + + L 16#A063 + T Dyn.Stop_Ursache + + L Dyn.Rueckmld.RET_VAL_BLKMOV_Schleuse // Rückmeldung + L 0 // Fehler vorhanden ? + <>I // Ja ! + = Dyn.Error.Err_BLKMov // Error bei Block kopieren + JC RET + + L Schleuse.Schleusen_Typ // Schleusetyp = 1274 (HM-Schleuse) + L 1274 // Dieser Aufruf-FB ? + ==I // Ja ! + JC w061 + + SET + S Dyn.Error.Undef_Schleuse // undefinierter Schleuse + + L 0 // Schleuse ungültig ! + T Schleuse.Schleusen_Nr // Nummer des Schleuses + + L 16#A064 + T Dyn.Stop_Ursache + + JU RET + +// Defaultwerte übergeben: +w061: NOP 0 + + JU RET + +en06: NOP 0 + + +--- NW 8: Einsprung Weiche plus ermitteln --- + L SAVE.Weichen_DB // Weichen-FIFO-DB + L 0 // Einsprung-Zeiger bekannt ? + >I // Ja ! + R "Kein_Weichenbereich +1" + JC En08 + + L Schleuse.RausWeichen_Nr // Nr. der vorhandenen Weiche + T "MW200" // Search-Daten + L 0 // angegeben ? + ==I // Nein ! + = "Kein_Weichenbereich +1" + R Dyn.Error.Err_Undef_Weiche // undefinierte Weiche + JC En08 + +CALL FC "DatenOut" (SSDB:=Para.Weichen_DL_DB, SSDW:=0, PARA:=WORD#16#0000, SEARCHDATEN:=P#M200.0, RE_VAL:="MB199", OUTDATEN:=P#M220.0, Position:="MW196") + + L "MB199" + T Dyn.Rueckmld.RET_VAL_DL_Weiche // Rückmeldung bei Datenbank-Zugriff (Weiche-DL) + + JBI W_Ok + + A "M199.0" + = Dyn.Error.Err_Weichen_DL // Weichen-Datenliste fehlerhaft + JC En08 + + SET + S Dyn.Error.Err_Undef_Weiche // undefinierte Weiche + + JU En08 + +W_Ok: L "MW224" + T SAVE.Weichen_DB // Weichen-FIFO-DB + L 0 // sinnvoller Wert ? + <=I // Nein ! + S Dyn.Error.Err_Undef_Weiche // undefinierte Weiche + JC En08 + + L "MW226" + T SAVE.Weichen_DW // Weichen-FIFO-DW + +En08: NOP 0 + + +--- NW 9: Trolley in Schleuse entprellen --- + A B_InSchleuse + JC B_ok + + AN Status2.Trolley_an_Schleuse + ON "1s-Impuls" + JC Xn08 + + L Dyn.Ohne_B + + 1 // Zeit ohne Sensor +1s + T Dyn.Ohne_B + + L 3 // Nach ca. 3s + I + JC X014 + + T Dyn.Restzeit_bis_Schleuse // Minimum übergeben + +// Trolley fährt noch ein: +X014: L Dyn.Restzeit_bis_Schleuse + L 0 // Restzeit vorhanden? + >I // Ja ! + AN B_InSchleuse + AN "Schleuse_geöffnet" + S Antrieb_Schleuse_vor // Antrieb einschalten (dadurch wird PS-Modus deaktiviert) + +En14: NOP 0 + + +--- NW 13: Ausfahrzeit lernen --- + AN Status2.Ausfahrzeit_lernen + ON Antrieb_Schleuse_aktiv + ON "1s-Impuls" + JC NoAFZ + + L Schleuse.AusfahrZeit + + 1 + T Schleuse.AusfahrZeit + +NoAFZ: NOP 0 + + +--- NW 14: Spezial-FCs vorhanden? --- + L Schleuse.Leser_FC + T LeserFC + L 0 // Parameter vorhanden ? + >I // Ja! + = LeserFC_vorhanden + + L Schleuse.Ziel_FC + T ZielFC + L 0 // Parameter vorhanden ? + >I // Ja! + = ZielFC_vorhanden + + L Schleuse.Draussen_FC + T DraussenFC + L 0 // Parameter vorhanden ? + >I // Ja! + = DraussenFC_vorhanden + + +--- NW 15: Error: Stau Bereich-Eingang --- +// TrolleyID zum Einfahren gemeldet / Trolley fährt in Bereich: + L Dyn.TrolleyID_Eingefahren // Eintrag von Weiche -1 + L DINT#0 // angegeben ? + <>D // Ja ! + = "TrolleyID_Bereich-1" + A "TrolleyID_Bereich-1" + O B_VorSchleuse + S Dyn.Status."Trolley_fährt_in_Schleuse" + +// Antrieb einschalten: + A B_VorSchleuse + AN B_InSchleuse + AN "Schleuse_geöffnet" + S Antrieb_Schleuse_vor + + A B_VorSchleuse + S Antrieb_Schleuse_start + +// Sensor bei Bereichs-Einfahrt bleibt belegt?: + AN B_VorSchleuse // Sensor Trolley fährt in Bereich (kein Stau !) + O "Schleuse_geöffnet" + R Dyn.Error.Err_Stau_Einfahrt // Stau bei Einfahrt + JC X090 // StauZeit neu aufziehen + + AN "1s-Impuls" + O + A Schleuse.Parameter_allg.Antrieb_vorhanden + AN Antrieb_Schleuse_aktiv + O Dyn.Error.Err_Stau_Einfahrt // Zeit bereits abgelaufen + JC Xn09 + + L Dyn.Stau_Zeit // Sensor B_VorSep ist belegt [1s] + + +1 + T Dyn.Stau_Zeit // Sensor B_VorSep ist belegt [1s] + + L 20 // Stau-Zeit erreicht ? + >=I // Ja ! + S Dyn.Error.Err_Stau_Einfahrt // Stau bei Einfahrt (Quittierung oder Sensor=0, wegen Bürstenantrieb + JCN Xn09 + +X090: L 0 // Zeiten löschen + T Dyn.Stau_Zeit // Sensor B_VorSep ist belegt [1s] + +Xn09: NOP 0 + + +--- NW 16: Schleuse: Mindestzeit geöffnet/frei --- + L Dyn.Sk.Akt_Schritt + L 3 // AusSchleusen aktiv? + I // Nein! + ) +// / O #B_InSchleuse //Sensor Trolley in Schleuse vorhanden + ON "Schleuse_geöffnet" + R Dyn.Status.MindestZeit_ok + JC X100 // FreiZeit neu aufziehen + + A Schleuse.Parameter_allg.Antrieb_vorhanden + AN Antrieb_Schleuse_aktiv + O + A Schleuse.Parameter_allg.Antrieb_Plus_vorhanden + AN Antrieb_plus_aktiv + O Dyn.Status.MindestZeit_ok // Zeit bereits abgelaufen + ON "1s-Impuls" + JC Xn10 + + L Dyn.Mindest_Zeit // Sensor B_im_Sep ist frei [1s] + + +1 + T Dyn.Mindest_Zeit // Sensor B_im_Sep ist frei [1s] + + L Schleuse.Mindeszeit_Schleuse_geoeffnet // Mindest-Zeit erreicht ? + >=I // Ja ! + S Dyn.Status.MindestZeit_ok + JCN Xn10 + +X100: L 0 // Zeiten löschen + T Dyn.Mindest_Zeit // Sensor B_im_Sep ist frei [1s] + +Xn10: NOP 0 + + +--- NW 17: Schleuse: Trolley ist draussen (Sensor/Weiche) --- + L Dyn.Sk.Akt_Schritt + L 5 // Trolley fährt aus ? + I // Nein! + ) + ON "Schleuse_geöffnet" + R Status2.Trolley_ist_draussen + R Status2.Ausfahrzeit_lernen + JC En15 // FreiZeit neu aufziehen + +// Trolley ist draussen sofort (Rückmeldung von Sensor/Weiche): + A B_AusSchleuse // Sensor Trolley aus Schleuse gefahren + A Schleuse.Parameter_allg.B_AusSep_vorhanden + O + A Dyn.Status."Trolley ausserhalb Weiche" // Rückmeldung von Weiche +1 + AN "Kein_Weichenbereich +1" // Also Weiche +1 + S Status2.Trolley_ist_draussen + +En15: NOP 0 + + +--- NW 18: Einsprung Leser ermitteln --- + L Dyn.SAVE2.Leser_DB // Leser-FIFO-DB + L 0 // Einsprung-Zeiger bekannt ? + >I // Ja ! + S Leser_Zugriff // Leser-Zugriff vorhanden + JC En08L + + L Schleuse.Leser_ID // Nr. des vorhandenen Lesers + T "MW200" // Search-Daten + L 0 // angegeben ? + ==I // Nein ! + JC En08L + +CALL FC "DatenOut" (SSDB:=Para.Leser_DL_DB, SSDW:=0, PARA:=WORD#16#0000, SEARCHDATEN:=P#M200.0, RE_VAL:="MB199", OUTDATEN:=P#M220.0, Position:="MW196") + + L "MB199" + T Dyn.Rueckmld.RET_VAL_DL_Leser // Rückmeldung bei Datenbank-Zugriff (Leser-DL) + + JBI W_OkL + + SET + S Dyn.Error.Err_Leser_nicht_bereit // Leser-Datenliste fehlerhaft + + JU En08L + +W_OkL: L "MW222" // Rein-FIFO-DB + T Dyn.SAVE2.Leser_DB // Leser-FIFO-DB + L 0 // sinnvoller Wert ? + <=I // Nein ! + S Dyn.Error.Err_Leser_nicht_bereit // undefinierter Leser + JC En08L + + L "MD224" + T Dyn.SAVE2.Leser_DD // Leser-FIFO-DD + + SET + R Dyn.Error.Err_Leser_nicht_bereit // undefinierter Leser + S Leser_Zugriff // Leser-Zugriff vorhanden + +En08L: NOP 0 + + +--- NW 19: Reservierung bei Weiche plus noch aktiv? --- + A "Kein_Weichenbereich +1" + R "Reservierung_Weiche+1_aktiv" + JC Y11E + + OPN DB[SAVE.Weichen_DB] // FABE+ -DB öffnen + + L SAVE.Weichen_DW + ITD + T AR1Start // Startwert mit Offset 0 + + L AR1Start // Startwert mit Offset 0 + + DINT#78 + SLD 3 + T AR1Zeiger // Statt Dyn.Bereichsstop (ging nur bis DB-Länge <= 8191 Bytes) + + L DBW [AR1Zeiger] // Schleuse -1 (DBW 78) + L Schleusen_Nr // Diese Schleuse ? + ==I // Ja ! +// / SET /// + = "Reservierung_Weiche+1_aktiv" + +// Mindestzeit nachtriggern: + AN "Schleuse_geöffnet" + ON B_InSchleuse + JC Y11E + + L AR1Start // Startwert mit Offset 0 + + DINT#71 + SLD 3 + L 3 // Damit DBX_Bit 3 + OD + T AR1Zeiger // Statt Dyn.Bereichsstop (ging nur bis DB-Länge <= 8191 Bytes) + + SET + = DBX [AR1Zeiger] // Mindestzeit nachtriggern (71.3) + +Y11E: NOP 0 + + +--- NW 20: Leser-Einheit managen (Inputs holen) --- + AN Leser_Zugriff + ON Schleuse.Parameter_allg.Leser_eingebaut + R Dyn.Status.Leser_triggern // für Status-Anzeige + JC NoLeser + +// Leserdaten holen: + OPN DB[Dyn.SAVE2.Leser_DB] // Leser -DB öffnen + + L Dyn.SAVE2.Leser_DD + T AR1Start // Startwert mit Offset 0 + +// Offset 10: + L AR1Start // Startwert mit Offset 0 + + DINT#10 + SLD 3 + T AR1Zeiger // Statt Dyn.Bereichsstop (ging nur bis DB-Länge <= 8191 Bytes) + + L DBB [AR1Zeiger] + T "MB200" + A "M200.0" + = Dyn.Leser.IN.xOutReadingDone + A "M200.1" + = Dyn.Leser.IN.xOutReadyForNewScan + +// Offset 274: + L AR1Start // Startwert mit Offset 0 + + DINT#274 + SLD 3 + T AR1Zeiger // Statt Dyn.Bereichsstop (ging nur bis DB-Länge <= 8191 Bytes) + + L DBB [AR1Zeiger] + T "MB200" + A "M200.0" + = Dyn.Leser.IN.xOutCodeGood + A "M200.1" + = Dyn.Leser.IN.xOutCodeBad + +// Offset 12: + L AR1Start // Startwert mit Offset 0 + + DINT#12 + SLD 3 + T AR1Zeiger // Statt Dyn.Bereichsstop (ging nur bis DB-Länge <= 8191 Bytes) + + L DBD [AR1Zeiger] + T Dyn.Leser.IN.nOutBarcode + +NoLeser: NOP 0 + + +--- NW 21: Schrittkette anhalten --- + A Dyn.Sk.Auto_akt // Automatik ist aktiv + A Dyn.Sk.Bereich_ok + CLR + + JU en08_Mig // Schrittkette nicht anhalten ! + + SET + R Dyn.Sk.Err_Uebzeit // Störungen löschen + R Dyn.Sk.Err_Schritt + + L 0 // Zeitwerte löschen + T Dyn.Sk.Terr_Zelle + T Dyn.Sk.Tok_Zelle + + JU RET + +en08_Mig: NOP 0 + + +--- NW 22: Trolley wurde zurück gezogen --- + L Dyn.Sk.Akt_Schritt + L 10 // Trolley schon unterwegs ? + I // Ja ! + ) + O Status2.Trolley_an_Schleuse // Trolley ist noch in Schleuse + O "Schleuse_geöffnet" + JC TrolleyOk + + SET + S Antrieb_Schleuse_start + S Dyn.Leser.OUT.xInReset + + L 0 // Neubeginn + T Dyn.Sk.Akt_Schritt + + AN Schleuse.Parameter_allg.Leser_eingebaut // Falls kein Leser verbaut Daten behalten (falls von Bereich-1 gemeldet) + JC TrolleyOk + + T Dyn.Trolley_ZwischenZiel + + L DINT#0 + T Dyn.TrolleyID_Schleuse + +TrolleyOk: NOP 0 + + +--- NW 23: Sprungverteiler --- + L Dyn.Sk.Neu_Schritt // Schritt, der im nächsten Zyklus aktiv werden soll + L -1 // angegeben ? + ==I // Nein ! + JC NEU + + CAC // Neuen Schritt übergeben + T Dyn.Sk.Akt_Schritt + + L -1 // Urzustand + T Dyn.Sk.Neu_Schritt // Schritt, der im nächsten Zyklus aktiv werden soll + +NEU: SET + R Warte_neu // Wartezeit neutriggern + R Warte_stop // Wartezeit stoppen + + L Dyn.Sk.Akt_Schritt + JL Ende + JU s000 // Schritt 0 + JU s001 // Schritt 1 + JU s002 // Schritt 2 + JU s003 // Schritt 3 + JU s004 // Schritt 4 + JU s005 // Schritt 5 + JU s006 // Schritt 6 + JU s007 // Schritt 7 + JU s008 // Schritt 8 + JU s009 // Schritt 9 + JU s010 // Schritt 10 + JU s011 // Schritt 11 + JU s012 // Schritt 12 + JU s013 // Schritt 13 + JU s014 // Schritt 14 + JU s015 // Schritt 15 + JU s016 // Schritt 16 + JU s017 // Schritt 17 + JU s018 // Schritt 18 + JU s019 // Schritt 19 + JU s020 // Schritt 20 + JU s021 // Schritt 21 + JU s022 // Schritt 22 + JU s023 // Schritt 23 + JU s024 // Schritt 24 + JU s025 // Schritt 25 + JU s026 // Schritt 26 + JU s027 // Schritt 27 + JU s028 // Schritt 28 + JU s029 // Schritt 29 + JU s030 // Schritt 30 +Ende: S Dyn.Sk.Err_Schritt // Undefinierter Schritt + + L 16#A131 + T Dyn.Stop_Ursache + + JU RET + +Neu_Mig: A Dyn.Sk.Err_Uebzeit + JCN Sk + + L 16#A132 + T Dyn.Stop_Ursache + + JU RET + +Sk: T Dyn.Sk.Akt_Schritt + + L 0 // Zeitwerte löschen + T Dyn.Sk.Terr_Zelle + T Dyn.Sk.Tok_Zelle + + JU NEU + +// Nicht programmierte Schritte: +// s000: SPA Ende +// s001: SPA Ende +// s002: SPA Ende +// s003: SPA Ende +// s004: SPA Ende +// s005: SPA Ende +// s006: SPA Ende +// s007: SPA Ende +// s008: SPA Ende +// s009: SPA Ende +// s010: SPA Ende +// s011: SPA Ende +// s012: SPA Ende +// s013: SPA Ende +// s014: SPA Ende +// s015: SPA Ende +// s016: SPA Ende +// s017: SPA Ende +s018: JU Ende +s019: JU Ende +// s020: SPA Ende +// s021: SPA Ende +s022: JU Ende +s023: JU Ende +s024: JU Ende +s025: JU Ende +s026: JU Ende +s027: JU Ende +s028: JU Ende +s029: JU Ende +s030: JU Ende + + +--- NW 24: Schritt X: Reserve --- + SET // Weiterschaltbedingung + = Weiter + +// Schrittaktionen: + SET + + L 16#B001 + T Dyn.Stop_Ursache + + A Weiter // Weiterschaltbedingung ist erfüllt + R Dyn.Sk.Err_Uebzeit // Sofort weiter ! + L 0 // Angabe der Wartezeit (*10ms) + JC Plus // Nächsten Schritt starten + + L 1 // Weiter mit Schritt 1 + JC Neu_Mig // Bei diesem Schritt weiter + + L 2 + T Dyn.Sk.Neu_Schritt // Schritt, der im nächsten Zyklus aktiv werden soll + + SET + A Dyn.Sk.Auto_akt // Automatik ist aktiv + A Dyn.Sk.Bereich_ok + = Ueb_akt // Überwachungszeit aktivieren + L 50 // Angabe der Überwachungszeit (*1s) + JU tueb // Überwachungszeit + + JU RET + + +--- NW 25: Schritt 0: Warten auf Trolley --- +s000: SET // Weiterschaltbedingung + A B_InSchleuse // Trolley im Schleuse erkannt + A Dyn.Sk.Auto_akt // Automatik ist aktiv + A Dyn.Sk.Bereich_ok + = Weiter + +// Trolley-Schleusendaten löschen: + L DINT#0 + T Dyn.TrolleyID_Schleuse + T Dyn.Trolley_ShopGroup + + L 0 + T Dyn.Trolley_EndZiel + T Dyn.Weichen_Ziel + +// HMI-Zeug: + L DINT#0 + T Dyn.HMI.TrolleyID_Input + + A Dyn.Sk.Reset_Akt // Reset ist aktiv + L 20 // Weiter mit Schritt 20 + JC Neu_Mig // Bei diesem Schritt weiter + +// Schrittaktionen: + SET + R Dyn.Error.Err_Leser_nicht_bereit + R Dyn.Error.Err_Kein_LeseErgebnis + R Dyn.Status.SF_angefordert + R Status2."TrolleyPos_übergeben" + R Status2.Telegramm_gesendet + + A Weiter // Weiterschaltbedingung ist erfüllt + R Dyn.Sk.Err_Uebzeit // Sofort weiter ! + L 50 // Angabe der Wartezeit (*10ms) + JC Plus // Nächsten Schritt starten + + L 16#B001 + T Dyn.Stop_Ursache + + A Dyn.Status."Trolley_fährt_in_Schleuse" + AN B_InSchleuse + S Antrieb_Schleuse_vor // Antrieb einschalten + JC S000A + + SET + R Dyn.Sk.Err_Uebzeit + + L 16#B000 + T Dyn.Stop_Ursache + + JU RET + +// Überwachungszeit starten: +S000A: A Dyn.Status."Trolley_fährt_in_Schleuse" + AN B_InSchleuse // Trolley im Schleuse erkannt + A( + O Antrieb_Schleuse_aktiv + ON Schleuse.Parameter_allg.Antrieb_vorhanden + ) + = Ueb_akt // Überwachungszeit aktivieren + + A Dyn.Sk.Err_Uebzeit + R Dyn.Sk.Err_Uebzeit + S Dyn.Error.Err_Trolley_nicht_in_Schleuse + R Dyn.Status."Trolley_fährt_in_Schleuse" + + L Schleuse."Übzeit_in_Schleuse" + + JU tueb // Überwachungszeit + + +--- NW 26: Schritt 1: Trolley ist in Schleuse / Leser ? / Daten vorhanden ? --- +s001: NOP 0 +// Schrittaktionen: + A B_InSchleuse + S Status2.Trolley_an_Schleuse + + AN Status2.Trolley_an_Schleuse // Trolley im Schleuse erkannt + A Schleuse.Parameter_allg.Leser_eingebaut + L 0 // Weiter mit Schritt 0 + JC Neu_Mig // Bei diesem Schritt weiter + +// Zwischen-Ziel von Bereich -1 vorhanden?: + L Dyn.ZwischenZiel_eingefahren + L 0 // Zwischenziel von Bereich -1 vorhanden! + ==I // Nein ! + O Schleuse.Parameter_allg.Leser_eingebaut // Dann werden Daten neu ermittelt! + JC X001 + +// Daten von Bereich -1 übergeben: + L Dyn.ZwischenZiel_eingefahren + T Dyn.Trolley_ZwischenZiel + L 0 + T Dyn.ZwischenZiel_eingefahren + + L Dyn.TrolleyID_Eingefahren + T Dyn.TrolleyID_Schleuse + L DINT#0 + T Dyn.TrolleyID_Eingefahren + + L 12 // Weiter mit Schritt 12 + JU Neu_Mig // Bei diesem Schritt weiter + +X001: L 0 + T Dyn.Trolley_ZwischenZiel + +// Leser vorhanden: + A Schleuse.Parameter_allg.Leser_eingebaut + R Dyn.Error.Err_Kein_LeseErgebnis + L 9 // Weiter mit Schritt 9 (Leser bereit) + JC Neu_Mig // Bei diesem Schritt weiter + +// Trolleydaten vorhanden ?: (Übergabe von Bereich -1) + L Dyn.TrolleyID_Eingefahren + T Dyn.TrolleyID_Schleuse + L DINT#0 // Daten vorhanden ? + <>D // Ja ! + L 11 // Weiter mit Schritt 11 (Trolleydaten lesen) + JC Neu_Mig // Bei diesem Schritt weiter + +// Ziel-FC vorhanden ?: + A ZielFC_vorhanden + L 12 // Weiter mit Schritt 12 (Ziel-FC) + JC Neu_Mig // Bei diesem Schritt weiter + + L 14 // Weiter mit Schritt 14 (Weichenbereich +1 vorhanden) + JU Neu_Mig // Bei diesem Schritt weiter + + +--- NW 27: Schritt 2: Ausfahren ok ? --- +s002: NOP 0 + +// Schrittaktionen: + AN Status2.Trolley_an_Schleuse // Trolley im Schleuse erkannt + A Schleuse.Parameter_allg.Leser_eingebaut + L 0 // Weiter mit Schritt 0 + JC Neu_Mig // Bei diesem Schritt weiter + +// Anlage aus oder Störung: + L 16#B021 + T Dyn.Stop_Ursache + + AN Dyn.Sk.Auto_akt // Automatik ist aktiv + ON Dyn.Sk.Bereich_ok // Bereich ist gestört + JC RET + +// Starten erlaut Trolley ?: + L 16#B022 + T Dyn.Stop_Ursache + + AN Start_Ok // Starten ist erlaubt + JC RET + +// Stau im Bereich +1: + L 16#B023 + T Dyn.Stop_Ursache + + SET + S Dyn.Status."Trolley_wartet_Bereich+1" + + A B_Stau_raus // Sensor Stau im Bereich rausfahren + JC RET + +// B_Aus_Schleuse aktiv: + L 16#B024 + T Dyn.Stop_Ursache + + A Schleuse.Parameter_allg.B_AusSep_vorhanden + A B_AusSchleuse // Sensor Trolley aus Schleuse gefahren + = Dyn.Error.Err_Raus_Sensor // Raus-Sensor wird nicht erreicht (oder dauernd aktiv)! + JC RET + +// Restzeit zum Ausfahren ausreichend?: + L 16#B025 + T Dyn.Stop_Ursache + + A( + L RestZeit_Bereich_plus + L Schleuse.AusfahrZeit + I // Nicht Maximalzeit, also nicht leer + ) + BEC // Nein ! + +// Antriebe aktivieren / aktiv ?: + A Schleuse.Parameter_allg.Antrieb_Plus_vorhanden // Schleuse an weiterem Antrieb (Weiche) + S Antrieb_plus_vor // Antrieb plus einschalten + + A( + O Antrieb_plus_aktiv // Kreisel-Antrieb plus aktiv + ON Schleuse.Parameter_allg.Antrieb_Plus_vorhanden // Schleuse an weiterem Antrieb (Weiche) + ) + S Antrieb_Schleuse_vor // Antrieb einschalten + + L 16#B026 + T Dyn.Stop_Ursache + + AN Antrieb_plus_aktiv // Kreisel-Antrieb plus aktiv + A Schleuse.Parameter_allg.Antrieb_Plus_vorhanden // Schleuse an weiterem Antrieb (Weiche) + JC RET + + AN Antrieb_Schleuse_aktiv // Kreisel-Antrieb aktiv + A Schleuse.Parameter_allg.Antrieb_vorhanden // Schleuse an angetriebener Strecke + = Dyn.Status.Kein_Stop_mehr + JC RET + + SET + R Status2."Warten_3.V" + + L 5 // Nur 1 langes Signal! + AN Schleuse.Parameter_allg."2.V_bei_Ausfahrt_checken" + JC Neu_Mig // Bei diesem Schritt weiter + + L 3 // 2.V bei Ausfahrt checken + JU Neu_Mig // Bei diesem Schritt weiter + + +--- NW 28: Schritt 3: Trolley fährt aus / 1.V ausgefahren ? --- +s003: SET // Weiterschaltbedingung + AN B_InSchleuse // Sensor Trolley ist in Schleuse + = Weiter + +// Schrittaktionen: + SET + S Y_Schleuse_Auf // Schleuse öffnen + S Dyn.Status."Trolley_fährt_aus" + +// Antriebe: +// siehe Nw9 + + A Weiter // Weiterschaltbedingung ist erfüllt + R Dyn.Sk.Err_Uebzeit // Sofort weiter ! + R Dyn.Error.Err_Trolley_raus // Trolley fährt nicht aus + L 30 // Angabe der Wartezeit (*10ms) + JC Plus // Nächsten Schritt starten + + AN "Kein_Weichenbereich +1" // Also Weiche vorhanden + AN "Reservierung_Weiche+1_aktiv" // Weiche nicht mehr angemeldet + R Dyn.Sk.Err_Uebzeit // Sofort weiter ! + L 0 // Weiter mit Schritt 0 + JC Neu_Mig // Bei diesem Schritt weiter + + A Dyn.Sk.Err_Uebzeit + S Dyn.Error.Err_Trolley_raus // Trolley fährt nicht aus + + L 16#B031 + T Dyn.Stop_Ursache + + A Antrieb_Schleuse_aktiv + ON Schleuse.Parameter_allg.Antrieb_vorhanden // Schleuse an angetriebener Strecke + = Ueb_akt // Überwachungszeit aktivieren + L Schleuse."Übzeit_aus_Schleuse" // Angabe der Überwachungszeit (*1s) + JU tueb // Überwachungszeit + + +--- NW 29: Schritt 4: Trolley fährt aus / Warten auf 2.V --- +s004: SET // Weiterschaltbedingung + A B_InSchleuse // Sensor Trolley ist in Schleuse + O Dyn.Status."Trolley ausserhalb Weiche" // Rückmeldung von Weiche +1 + = Weiter + +// Bei Raus-Sensor nicht zählen: + A Schleuse.Parameter_allg.B_AusSep_vorhanden + A B_AusSchleuse // Sensor Trolley aus Schleuse gefahren + L 5 // Zählen überspringen + R Dyn.Sk.Err_Uebzeit // Sofort weiter ! + R Dyn.Error.Err_Trolley_raus // Trolley fährt nicht aus + JC Neu_Mig // Bei diesem Schritt weiter + +// Schrittaktionen: + SET + S Y_Schleuse_Auf // Schleuse öffnen + S Dyn.Status."Trolley_fährt_aus" + +// Antriebe: +// siehe Nw9 + + A Weiter // Weiterschaltbedingung ist erfüllt + R Dyn.Sk.Err_Uebzeit // Sofort weiter ! + R Dyn.Error.Err_Trolley_raus // Trolley fährt nicht aus + L 0 // Angabe der Wartezeit (*10ms) + JC Plus // Nächsten Schritt starten + + AN "Kein_Weichenbereich +1" // Also Weiche vorhanden + AN "Reservierung_Weiche+1_aktiv" // Weiche nicht mehr angemeldet + R Dyn.Sk.Err_Uebzeit // Sofort weiter ! + L 0 // Weiter mit Schritt 0 + JC Neu_Mig // Bei diesem Schritt weiter + + A Dyn.Sk.Err_Uebzeit + S Dyn.Error.Err_Trolley_raus // Trolley fährt nicht aus + + L 16#B041 + T Dyn.Stop_Ursache + + A Antrieb_Schleuse_aktiv + ON Schleuse.Parameter_allg.Antrieb_vorhanden // Schleuse an angetriebener Strecke + = Ueb_akt // Überwachungszeit aktivieren + L Schleuse."Übzeit_aus_Schleuse" // Angabe der Überwachungszeit (*1s) + JU tueb // Überwachungszeit + + +--- NW 30: Schritt 5: Trolley fährt aus ? --- +s005: SET // Weiterschaltbedingung + AN B_InSchleuse // Sensor Trolley ist in Schleuse + A( + O Antrieb_Schleuse_aktiv // Kreisel-Antrieb aktiv + ON Schleuse.Parameter_allg.Antrieb_vorhanden // Schleuse an angetriebener Strecke + ) + A( + O Antrieb_plus_aktiv + ON Schleuse.Parameter_allg.Antrieb_Plus_vorhanden + ) + = Weiter + +// Ausfahrzeit lernen: + A Schleuse.Parameter_allg.B_AusSep_vorhanden + JC X004 + +// Ohne Sensor -> Üb.Zeit übergeben: + L Schleuse."Übzeit_aus_Schleuse" + T Schleuse.AusfahrZeit + +X004: L Schleuse.AusfahrZeit + L 0 // Ausfahrzeit bekannt ? + ==I // Nein ! + A Schleuse.Parameter_allg.B_AusSep_vorhanden + S Status2.Ausfahrzeit_lernen + +// Schrittaktionen: + SET + S Y_Schleuse_Auf // Schleuse öffnen + S Dyn.Status."Trolley_fährt_aus" + +// Antriebe: +// siehe Nw10 + +// B in Schleuse aktiv: + A B_InSchleuse // Sensor Trolley ist in Schleuse + JCN X050 // Negierter Sprung + + L 0 + T Dyn.Sk.Tok_Zelle + +// Trolley ist draussen mit 5s-Verzögerung: +X050: A Weiter // Weiterschaltbedingung ist erfüllt + R Dyn.Sk.Err_Uebzeit // Sofort weiter ! + R Dyn.Error.Err_Trolley_raus // Trolley fährt nicht aus + L 300 + JC Plus // Nächsten Schritt starten + +// Trolley fährt nicht raus!: + A Dyn.Sk.Err_Uebzeit + S Dyn.Error.Err_Trolley_raus // Trolley fährt nicht aus + + L 16#B051 + T Dyn.Stop_Ursache + + A Antrieb_Schleuse_aktiv + ON Schleuse.Parameter_allg.Antrieb_vorhanden // Schleuse an angetriebener Strecke + = Ueb_akt // Überwachungszeit aktivieren + L Schleuse."Übzeit_aus_Schleuse" // Angabe der Überwachungszeit (*1s) + JU tueb // Überwachungszeit + + +--- NW 31: Schritt 6: Schleuse Mindestzeit geöffnet / Trolley draussen ? --- +s006: SET // Weiterschaltbedingung + A Dyn.Status.MindestZeit_ok + AN B_InSchleuse // Sensor Trolley in Schleuse vorhanden + A( + AN Schleuse.Parameter_allg.B_AusSep_vorhanden + A "Kein_Weichenbereich +1" + O Status2.Trolley_ist_draussen + ) + = Weiter + R Dyn.Sk.Err_Uebzeit // Sofort weiter ! + R Dyn.Error.Err_Trolley_raus // Trolley fährt nicht aus + +// Schrittaktionen: + SET + S Y_Schleuse_Auf // Schleuse öffnen + S Dyn.Status."Trolley_fährt_aus" + +// Erneutes Signal von B in Schleuse ?: + A B_InSchleuse // Sensor Trolley in Schleuse vorhanden + JCN X060 // Negierter Sprung + + L 5 + T Dyn.Sk.Neu_Schritt // Schritt, der im nächsten Zyklus aktiv werden soll + + L 0 // Mindest-Zeit neu starten + T Dyn.Mindest_Zeit // Sensor B_im_Sep ist frei [1s] + SET + R Dyn.Status.MindestZeit_ok // Zeit bereits abgelaufen + + JU RET + +// Antriebe: +// siehe Nw10 + +X060: A Weiter + JC X006 // Nächsten Schritt starten + + L 16#B061 + T Dyn.Stop_Ursache + +// Trolley fährt nicht raus!: + A Dyn.Sk.Err_Uebzeit + S Dyn.Error.Err_Trolley_raus // Trolley fährt nicht aus + + A Dyn.Error.Err_Trolley_raus // Trolley fährt nicht aus + AN Status2.Trolley_ist_draussen + A Schleuse.Parameter_allg.B_AusSep_vorhanden + R Dyn.Error.Err_Trolley_raus // Trolley fährt nicht aus + S Dyn.Error.Err_Raus_Sensor // Raus-Sensor wird nicht erreicht (oder dauernd aktiv)! + + A Antrieb_Schleuse_aktiv + ON Schleuse.Parameter_allg.Antrieb_vorhanden // Schleuse an angetriebener Strecke + = Ueb_akt // Überwachungszeit aktivieren + L Schleuse."Übzeit_aus_Schleuse" // Angabe der Überwachungszeit (*1s) + JU tueb // Überwachungszeit + +// Trolley hat Schleuse verlassen: +X006: SET + S Dyn.Status.Trolley_draussen // 1 Zyklus + R Dyn.Status."Trolley_fährt_in_Schleuse" + R Status2.Telegramm_gesendet + + L Dyn.Vereinzelungstakte + + DINT#1 // Vereinzelungen +1 + T Dyn.Vereinzelungstakte + +// Draussen-FC ?: + AN DraussenFC_vorhanden + JC NoFC // Bei diesem Schritt weiter + + L Schleusen_Nr // Schleusen-Nr. + T "MW190" + L Dyn.Trolley_ShopGroup // Shop-Gruppe + T "MD182" // übergeben + + L Dyn.Weichen_Ziel + T "MW198" // Weichenziel + + UC DB[DraussenFC] // z.Bsp. Daten anpassen + +NoFC: L 7 // Weiter mit Schritt 7 + JU Neu_Mig // Bei diesem Schritt weiter + + +--- NW 32: Schritt 7: Trolley ausserhalb der Weiche --- +s007: SET // Weiterschaltbedingung + AN "Kein_Weichenbereich +1" // Also Weiche vorhanden + AN "Reservierung_Weiche+1_aktiv" // Weiche nicht mehr angemeldet (Evtl. Reset im Weichenbereich) + O Dyn.Status."Trolley ausserhalb Weiche" // Rückmeldung von Weiche +1 + O "Kein_Weichenbereich +1" + = Weiter + +// Schrittaktionen: + SET + S Y_Schleuse_Auf // Schleuse öffnen + S Dyn.Status."Trolley_fährt_aus" + A( + O Dyn.Status.Weiche_geschaltet // Weiche ist aktiv + O "Kein_Weichenbereich +1" + ) + S Antrieb_Schleuse_vor // Antrieb einschalten + S Antrieb_plus_vor // Antrieb plus einschalten + + A Weiter // Weiterschaltbedingung ist erfüllt + JC X007 + + L 16#B071 + T Dyn.Stop_Ursache + + JU RET + +// Trolley ist ausserhalb der Weiche?: +X007: A "Kein_Weichenbereich +1" + JC ENDE_Mig + +// Weichen-Rückmeldungen löschen: + SET + R Dyn.Status.Weiche_geschaltet + R Dyn.Status."Trolley ausserhalb Weiche" + +// Weichen-Reservierung löschen: + OPN DB[SAVE.Weichen_DB] // FABE+ -DB öffnen + + L SAVE.Weichen_DW + ITD + T AR1Start // Startwert mit Offset 0 + + L AR1Start // Startwert mit Offset 0 + + DINT#78 + SLD 3 + T AR1Zeiger // Statt Dyn.Bereichsstop (ging nur bis DB-Länge <= 8191 Bytes) + + L DBW [AR1Zeiger] // Schleuse -1 (DBW 78) + L Schleusen_Nr + <>I // Nicht diese Schleuse! + JC ENDE_Mig + + L 0 + T DBW [AR1Zeiger] // Schleuse -1 (DBW 78) + T SAVE."Weiche+1" // Hier wurde reserviert + + L 0 + JU Plus // Nächsten Schritt starten + + +--- NW 33: Schritt 8: Weichen-Rückmeldungen = 0? --- +s008: SET // Weiterschaltbedingung + +// Schrittaktionen: + AN Dyn.Status.Weiche_geschaltet + AN Dyn.Status."Trolley ausserhalb Weiche" + JC ENDE_Mig + + L 16#B080 + T Dyn.Stop_Ursache + + JU RET + + +--- NW 34: Schritt 9: Lese-Einheit bereit? --- +s009: SET // Weiterschaltbedingung + L Dyn.Leser.IN.nOutBarcode + L DINT#0 + ==D + A Dyn.Leser.IN.xOutReadyForNewScan + AN Dyn.Leser.IN.xOutReadingDone + AN Dyn.Leser.IN.xOutCodeGood + AN Dyn.Leser.IN.xOutCodeBad + = Weiter + R Dyn.Error.Err_Leser_nicht_bereit + +// Schrittaktionen: + AN Status2.Trolley_an_Schleuse // Trolley im Schleuse erkannt + A Schleuse.Parameter_allg.Leser_eingebaut + R Dyn.Error.Err_Leser_nicht_bereit + L 0 // Weiter mit Schritt 0 + JC Neu_Mig // Bei diesem Schritt weiter + + A Weiter + = Dyn.Leser.OUT.xInStartReading // Leser triggern + L 0 // Angabe der Wartezeit (*10ms) + JC Plus // Nächsten Schritt starten + +// Leser nicht bereit: + A Dyn.Leser.IN.xOutReadingDone // Falls altes Handshake noch gewollt + O Dyn.Leser.IN.xOutCodeGood + O Dyn.Leser.IN.xOutCodeBad + S Dyn.Leser.OUT.xInHandshakeDone + + A Dyn.Sk.Err_Uebzeit + R Dyn.Sk.Err_Uebzeit // Sofort weiter ! + S Dyn.Error.Err_Leser_nicht_bereit + S Dyn.Leser.OUT.xInErrQuit // Vielleicht hilft es + + A Dyn.Error.Err_Leser_nicht_bereit + A ErrQuit // Mit Quittierung dann zusätzlich reset! + S Dyn.Leser.OUT.xInReset + +// HMI-TrolleyID bei Leser nicht bereit: + L Dyn.HMI.TrolleyID_Input + L DINT#0 + <>D // Ja! + A Dyn.Error.Err_Leser_nicht_bereit + L 0 // Angabe der Wartezeit (*10ms) + JC Plus // Nächsten Schritt starten + + SET + = Ueb_akt // Überwachungszeit aktivieren + L 5 // Angabe der Überwachungszeit (*1s) + JU tueb // Überwachungszeit + + +--- NW 35: Schritt 10: Warten auf Leseeinheit --- +s010: SET // Weiterschaltbedingung + A Dyn.Leser.IN.xOutReadingDone + A Dyn.Leser.IN.xOutCodeGood + AN Dyn.Leser.IN.xOutCodeBad + = Weiter + R Dyn.Error.Err_Kein_LeseErgebnis + +// Schrittaktionen: + AN Status2.Trolley_an_Schleuse // Trolley im Schleuse erkannt + A Schleuse.Parameter_allg.Leser_eingebaut + L 0 // Weiter mit Schritt 0 + R Dyn.Error.Err_Kein_LeseErgebnis + JC Neu_Mig // Bei diesem Schritt weiter + + SET + R Dyn.Leser.OUT.xInStartReading // Leseeinheit triggern + + A Weiter + S Dyn.Leser.OUT.xInHandshakeDone + R Dyn.Sk.Err_Uebzeit // Sofort weiter ! + JC X010 + + SET + S Dyn.Status.Trolley_wartet_Lesung + + A Dyn.Error.Err_Leser_nicht_bereit // von Schritt 9 + JC LX + + A Dyn.Sk.Err_Uebzeit + O Dyn.Leser.IN.xOutCodeBad + S Dyn.Leser.OUT.xInHandshakeDone + JC L2 // Erst bei 3.Fehllesung Error! + + L 16#B101 + T Dyn.Stop_Ursache + + SET + = Ueb_akt // Überwachungszeit aktivieren + + L 10 // Angabe der Überwachungszeit (*1s) + JU tueb // Überwachungszeit + +L2: A Status2."2.Lesung_aktiv" // Erst bei 3.Fehllesung Error! + JC L3 + + SET + S Status2."2.Lesung_aktiv" + R Dyn.Sk.Err_Uebzeit // Sofort weiter ! + + L 9 + T Dyn.Sk.Neu_Schritt // Schritt, der im nächsten Zyklus aktiv werden soll + + JU RET + +L3: A Status2."3.Lesung_aktiv" // //Erst bei 3.Fehllesung Error! + JC LX + + SET + S Status2."3.Lesung_aktiv" + R Dyn.Sk.Err_Uebzeit // Sofort weiter ! + + L 9 + T Dyn.Sk.Neu_Schritt // Schritt, der im nächsten Zyklus aktiv werden soll + + JU RET + +// Nach 3.Fehl-Lesung erst Leserfehler! +LX: SET + R Dyn.Sk.Err_Uebzeit // Sofort weiter ! + S Dyn.Error.Err_Kein_LeseErgebnis + JU NoLesung + +// Leserdaten übergeben: +X010: L Dyn.Leser.IN.nOutBarcode + T Dyn.TrolleyID_Schleuse + + L DINT#0 // Unbekannt ? + ==D // Ja ! + O( + CAC + L DINT#-1 // Fehl-Lesung? + ==D // Ja ! + ) + S Dyn.Error.Err_Kein_LeseErgebnis + L 9 // Weiter mit Schritt 9 (Leser bereit) + JC Neu_Mig // Bei diesem Schritt weiter + + L 11 // Weiter mit Schritt 11 + JU Neu_Mig // Bei diesem Schritt weiter + +// Lesefehler: +NoLesung: NOP 0 +// HMI-Eingabe?: +// HMI-TrolleyID: + L Dyn.HMI.TrolleyID_Input + T Dyn.TrolleyID_Schleuse + <>D // Ja! + L 0 // Angabe der Wartezeit (*10ms) + R Dyn.Error.Err_Kein_LeseErgebnis + R Dyn.Error.Err_Leser_nicht_bereit // von Schritt 9 + JC Plus // Nächsten Schritt starten + +// Leser-FC aufrufen: +No_HMIa: AN LeserFC_vorhanden + JC NoLFC + + L Schleusen_Nr // Schleusen-Nr. + T "MW190" // übergeben + L Dyn.Trolley_ZwischenZiel // Übergabe von Leser-Aufruf + T "MW196" + + A Dyn.Error.Err_Kein_LeseErgebnis + = "M180.0" + SET + R "M180.1" + + UC DB[LeserFC] // Beeinflussung der Fehllesung + + L 16#B102 + T Dyn.Stop_Ursache + + L "MW196" // Zwischenziel übergeben + T Dyn.Trolley_ZwischenZiel // Übergabe von Leser-Aufruf + L 0 // Übergeben ? + <>I // Ja! + L 12 // Weiter mit Schritt 12 + R Dyn.Error.Err_Kein_LeseErgebnis + JC Neu_Mig // Bei diesem Schritt weiter + +NoLFC: L 9 + T Dyn.Sk.Neu_Schritt // Schritt, der im nächsten Zyklus aktiv werden soll + + JU RET + + +--- NW 36: Schritt 11: Trolleydaten aus DL lesen --- +s011: L DINT#0 + T Dyn.TrolleyID_Eingefahren // Eintrag von Weiche -1 + + L Dyn.Trolley_ZwischenZiel // / + + L Dyn.TrolleyID_Schleuse + T "MD220" + +CALL FC "DatenOut" (SSDB:=Schleuse.Gesamt_Trolley_DL, SSDW:=0, PARA:=16#0000, SEARCHDATEN:=P#M220.0, RE_VAL:="MB199", OUTDATEN:=DB1011.DBX0.0, Position:="MW196") // Eintrag lesen + + L 16#B111 + T Dyn.Stop_Ursache + + AN "M199.7" + = Dyn.Error.Barcode_nicht_bekannt + JC UnbekanntBC + +// Relevanten Trolleydaten auslesen: + L "TrolleyDL_OutDaten".OUTDaten.EndZiel + T Dyn.Trolley_EndZiel + +// ZwischenZiel nicht überschreiben: + L Dyn.Trolley_ZwischenZiel + L 0 // Schon bekannt ? + <>I // Ja ! + JC NixZZ + + L "TrolleyDL_OutDaten".OUTDaten.ZwischenZiel + T Dyn.Trolley_ZwischenZiel + +NixZZ: L "TrolleyDL_OutDaten".OUTDaten.ShopGroup + T Dyn.Trolley_ShopGroup + + L 0 // Angabe der Wartezeit (*10ms) + JU Plus // Nächsten Schritt starten + +// Unbekannter Trolley: +UnbekanntBC: NOP 0 +// HMI-Eingabe?: + +// Leser-FC aufrufen: +Nix_HMI: AN LeserFC_vorhanden + JC Nix_LFC + + L Schleusen_Nr // Schleusen-Nr. + T "MW190" // übergeben + L Dyn.TrolleyID_Schleuse + T "MD192" + L Dyn.Trolley_ZwischenZiel + T "MW196" + + A Dyn.Error.Barcode_nicht_bekannt + = "M180.1" + SET + R "M180.0" + + UC DB[LeserFC] // Beeinflussung der Weiterfahrt bei nicht bekanntem Trolley + + L "MW196" // ZwischenZiel übergeben + T Dyn.Trolley_ZwischenZiel // Übergabe von Leser-Aufruf + L 0 // Übergeben ? + <>I // Ja! + L 12 // Weiter mit Schritt 12 + R Dyn.Error.Err_Kein_LeseErgebnis + JC Neu_Mig // Bei diesem Schritt weiter + +Nix_LFC: JU RET + + +--- NW 37: Schritt 12: Ziel-FC --- +s012: NOP 0 + +// Schrittaktionen: + AN Status2.Trolley_an_Schleuse // Trolley im Schleuse erkannt + A Schleuse.Parameter_allg.Leser_eingebaut + AN "Schleuse_geöffnet" + L 0 // Weiter mit Schritt 0 + JC Neu_Mig // Bei diesem Schritt weiter + + SET + S Dyn.Status."Trolley_wartet_auf_Ziel-FC" + + AN ZielFC_vorhanden + R Dyn.Status."Trolley_wartet_auf_Ziel-FC" + L 13 // Weiter mit Schritt 13 + JC Neu_Mig // Bei diesem Schritt weiter + + SET // Rückmeldungen erst mal resetten + R "M180.6" // Weiterfahrt von Ziel-FC erlaubt + L Schleusen_Nr // Schleusen-Nr. + T "MW190" // übergeben + L Dyn.Trolley_ShopGroup // Shop-Gruppe + T "MD182" // übergeben + L Dyn.Trolley_EndZiel // End-Ziel + T "MW194" // übergeben + L Dyn.Trolley_ZwischenZiel + T "MW196" // übergeben + L 0 // Erst mal nullen + T "MW198" // Weichenziel + + UC DB[ZielFC] // Beeinflussung der Weiterfahrt + + L 16#B122 + T Dyn.Stop_Ursache + +// Spezial-Fall bei Übergabe an Sorter / Turm (M180.6 wird nie im Ziel-FC gesetzt!) +// aber anderer Partner hat Schleuse extern geöffnet: + A "Schleuse_geöffnet" + AN "M180.6" // Weiterfahrt von Ziel-FC erlaubt + AN Status2."TrolleyPos_übergeben" // Nur einmalig + S Status2."TrolleyPos_übergeben" + JCN Normal // Negierter Sprung + + L Dyn.Vereinzelungstakte + + DINT#1 // Vereinzelungen +1 + T Dyn.Vereinzelungstakte + +CALL FC "Trolley_DL_Neue_Pos" (Gesamt_Trolley_DL:=Schleuse.Gesamt_Trolley_DL, TrolleyID:=Dyn.TrolleyID_Schleuse, Position:=Schleuse.Leser_ID, ShopGroup:=Dint#0, Err:="M199.0") + +// Draussen-FC ?: + AN DraussenFC_vorhanden + JC RET // Bei diesem Schritt weiter + + L Schleusen_Nr // Schleusen-Nr. + T "MW190" + + UC DB[DraussenFC] // z.Bsp. Daten anpassen + + JU RET + +Normal: A "M180.6" // Weiterfahrt von Ziel-FC erlaubt + JC X012 + + AN Schleuse.Parameter_allg.Leser_eingebaut + JC RET + + L 11 + T Dyn.Sk.Neu_Schritt // Schritt, der im nächsten Zyklus aktiv werden soll + + JU RET + +X012: L "MW196" // zurückschreiben, falls verändert + T Dyn.Trolley_ZwischenZiel + + L "MW198" // Weichenziel übergeben + T Dyn.Weichen_Ziel + + L 13 // Weiter mit Schritt 13 + JU Neu_Mig // Bei diesem Schritt weiter + + +--- NW 38: Schritt 13: Schleusen-Position zurückschreiben --- +s013: NOP 0 + +// Schrittaktionen: + SET + S Status2."Weichen-Schritt" + +// Neue Position an Gesamt-Trolley-DL übergeben: +CALL FC "Trolley_DL_Neue_Pos" (Gesamt_Trolley_DL:=Schleuse.Gesamt_Trolley_DL, TrolleyID:=Dyn.TrolleyID_Schleuse, Position:=Schleuse.Leser_ID, ShopGroup:=DINT#0, Err:="M199.0") // für nichts verändern + + L 0 // Angabe der Wartezeit (*10ms) + JU Plus // Nächsten Schritt starten + + +--- NW 39: Schritt 14: Weichenbereich +1 vorhanden --- +s014: NOP 0 + +// Schrittaktionen: +// Weichenbereich +1 vorhanden?: + A "Kein_Weichenbereich +1" + L 2 // Weiter mit Schritt 2 (Ausfahren ok?) + JC Neu_Mig // Bei diesem Schritt weiter + + SET + S Status2."Weichen-Schritt" + R Dyn.Status.Weiche_geschaltet + R Dyn.Status."Trolley ausserhalb Weiche" + + L 0 // Angabe der Wartezeit (*10ms) + JU Plus // Nächsten Schritt starten + + +--- NW 40: Schritt 15: Weichenbereich raus bereit ? --- +s015: NOP 0 + +// Schrittaktionen: + AN Status2.Trolley_an_Schleuse // Trolley im Schleuse erkannt + L 0 // Weiter mit Schritt 0 + JC Neu_Mig // Bei diesem Schritt weiter + + SET + S Status2."Weichen-Schritt" + + L Dyn.Weichen_Ziel + L 0 // Bekannt ? + <>I // Ja ! + JC X15A + + L 12 // Ziel-FC ? + T Dyn.Sk.Neu_Schritt // Schritt, der im nächsten Zyklus aktiv werden soll + + L 16#B154 + T Dyn.Stop_Ursache + + JU RET + +X15A: SET + S Dyn.Status."Trolley_wartet_auf_Weiche+1" + + L 16#B155 + T Dyn.Stop_Ursache + + L SAVE.Weichen_DB // Weichen-DB + L 0 // Einsprung-Zeiger bekannt ? + >I // Ja ! + JC S015A + + L 16#B150 + T Dyn.Stop_Ursache + + JU RET + +// Weichendaten auslesen: +S015A: L SAVE.Weichen_DW + ITD + T AR1Start // Startwert mit Offset 0 + + L AR1Start // Startwert mit Offset 0 + + DINT#70 + SLD 3 + L 0 // Damit DBX70.0 + OD + T AR1Zeiger // Statt Dyn.Bereichsstop (ging nur bis DB-Länge <= 8191 Bytes) + + L 16#B152 + T Dyn.Stop_Ursache + + OPN DB[SAVE.Weichen_DB] // FABE+ -DB öffnen + + AN DBX [AR1Zeiger] // Weichenbereich frei ? (DBX70.0) + O Dyn.Status.Weiche_geschaltet // Rückmeldungen noch aktiv! + O Dyn.Status."Trolley ausserhalb Weiche" + JC S015B + + L 16 // Weiter mit Schritt 16 (Daten an Weiche übergeben) + JU Neu_Mig // Bei diesem Schritt weiter + +// Reservierung schon erfolgt ?: +S015B: SET + R Dyn.Status.Weiche_geschaltet + R Dyn.Status."Trolley ausserhalb Weiche" + + L AR1Start // Startwert mit Offset 0 + + DINT#78 + SLD 3 + T AR1Zeiger // Statt Dyn.Bereichsstop (ging nur bis DB-Länge <= 8191 Bytes) + + OPN DB[SAVE.Weichen_DB] // FABE+ -DB öffnen + + L DBW [AR1Zeiger] // Schleuse -1 (DBW 78) + L Schleusen_Nr // Diese Schleuse ? + <>I // Nein ! -> Ok + L 16#B156 + JC X015 // Warten ! + +// Reservierung löschen: + OPN DB[SAVE.Weichen_DB] // FABE+ -DB öffnen + + L 0 + T DBW [AR1Zeiger] // Schleuse -1 (DBW 78) + + L 16#B157 + +X015: T Dyn.Stop_Ursache + + L 12 // Ziel-FC ? + T Dyn.Sk.Neu_Schritt // Schritt, der im nächsten Zyklus aktiv werden soll + + JU RET // Warten ! + + +--- NW 41: Schritt 16: Daten an Rausweiche übergeben --- +s016: NOP 0 + +// Schrittaktionen: + SET + S Status2."Weichen-Schritt" + +// Daten für Eintrag vorbereiten: + OPN DB[SAVE.Weichen_DB] // FABE+ -DB öffnen + + L AR1Start // Startwert mit Offset 0 + + DINT#72 + SLD 3 + T AR1Zeiger // Statt Dyn.Bereichsstop (ging nur bis DB-Länge <= 8191 Bytes) + + L Dyn.TrolleyID_Schleuse + T DBD [AR1Zeiger] // Trolley-ID (DBD 72) + L DINT#0 + <>D + JC X16A + + L 0 // Damit sichtbar + T DBD [AR1Zeiger] // Trolley-ID (DBD 72) + +X16A: L AR1Start // Startwert mit Offset 0 + + DINT#76 + SLD 3 + T AR1Zeiger // Statt Dyn.Bereichsstop (ging nur bis DB-Länge <= 8191 Bytes) + + L Dyn.Weichen_Ziel + T DBW [AR1Zeiger] // Weichenziel (DBW 76) + + L AR1Start // Startwert mit Offset 0 + + DINT#80 + SLD 3 + T AR1Zeiger // Statt Dyn.Bereichsstop (ging nur bis DB-Länge <= 8191 Bytes) + + L Dyn.Trolley_ZwischenZiel + T DBW [AR1Zeiger] // Zwischenziel (DBW 80) + + L AR1Start // Startwert mit Offset 0 + + DINT#78 + SLD 3 + T AR1Zeiger // Statt Dyn.Bereichsstop (ging nur bis DB-Länge <= 8191 Bytes) + + L Schleusen_Nr + T DBW [AR1Zeiger] // Schleuse -1 (DBW 78) + + SET + S "Reservierung_Weiche+1_aktiv" // Weiche nicht mehr angemeldet (da erst im nächsten Zyklus) + + L Schleuse.RausWeichen_Nr // Nr. der vorhandenen Weiche + T SAVE."Weiche+1" // Hier wurde reserviert + + L 17 // Weiter mit Schritt 17 (Hat Weiche geschaltet ?) + JU Neu_Mig // Bei diesem Schritt weiter + + +--- NW 42: Schritt 17: Hat Rausweiche geschaltet ? --- +s017: NOP 0 + +// Schrittaktionen: + SET + S Status2."Weichen-Schritt" + +// Weiche +1 noch mit dieser Schleuse aktiv ?: + AN "Reservierung_Weiche+1_aktiv" // Weiche nicht mehr angemeldet + L 14 // Weiter mit Schritt 14 + JC Neu_Mig // Bei diesem Schritt weiter + + SET + S Dyn.Status."Trolley_wartet_auf_Weiche+1" + + L 16#B170 + T Dyn.Stop_Ursache + + A Dyn.Status."Trolley ausserhalb Weiche" // Rückmeldung von Weiche +1 + JC RET + + A Dyn.Status.Weiche_geschaltet // Rückmeldung von Weiche +1 + L 2 // Weiter mit Schritt 2 (Ausfahren ok?) + JC Neu_Mig // Bei diesem Schritt weiter + + L 16#B171 + T Dyn.Stop_Ursache + + JU RET + + +--- NW 43: Schritt 20: Schleuse resetten (Wartezeit) --- +s020: A B_InSchleuse // Weiterschaltbedingung + = Weiter // Weiterschaltbedingung ist erfüllt + +// Schrittaktionen: + SET // ELS in Grundstellung fahren + S Antrieb_Schleuse_vor // Antrieb einschalten + S Antrieb_Schleuse_start // Antrieb starten + + A Weiter + O Dyn.Sk.Err_Uebzeit + R Dyn.Sk.Err_Uebzeit // Sofort weiter ! + L 21 // Weiter mit Schritt 21 + JC Neu_Mig // Bei diesem Schritt weiter + + L 16#B201 + T Dyn.Stop_Ursache + + SET + = Ueb_akt // Überwachungszeit aktivieren + L Schleuse.Wartezeit_bis_leer // Angabe der Überwachungszeit (*1s) + L 60 + JU tueb // Überwachungszeit + + +--- NW 44: Schritt 21: Reset ist zu Ende --- +s021: SET + R Dyn.Sk.Reset_Akt // Reset ist aktiv + R Status2."Warten_3.V" + R Status2."TrolleyPos_übergeben" + R Dyn.Error.Err_Trolley_nicht_in_Schleuse // Trolley fährt nicht in Schleuse + R Dyn.Error.Err_Uebzeit // Überwachungzeit ist abgelaufen + R Dyn.Error.Err_Stau_Einfahrt // Betriebsart ist nicht möglich + R Dyn.Error.Err_Trolley_raus // Trolley fährt nicht aus + R Dyn.Status."Trolley_fährt_in_Schleuse" + + L 0 + T SAVE.Weichen_DB + T SAVE.Weichen_DW + T SAVE."Weiche+1" // Dadurch wird in Weiche Reservierung gelöscht + T Schleuse.Schleusen_Nr // Damit stat. Daten neu geholt werden! + + SET + S Dyn.Status.Trolley_draussen + + JU ENDE_Mig // Neubeginn + + +--- NW 45: Schrittkette beenden --- +ENDE_Mig: L 0 // Schritt 0: Warten + T Dyn.Sk.Akt_Schritt + + L 0 // Zeitwert löschen + T Dyn.Sk.Terr_Zelle + T Dyn.Sk.Tok_Zelle + T Dyn.ZwischenZiel_eingefahren + + L DINT#0 + T Dyn.TrolleyID_Eingefahren // Eintrag von Weiche -1 + T Dyn.TrolleyID_Schleuse // Daten übergeben + T Dyn.Trolley_ZwischenZiel + T Dyn.Trolley_EndZiel + T Dyn.Weichen_Ziel + + SET + R Dyn.Sk.Err_Uebzeit + R Dyn.Status.Weiche_geschaltet + R Dyn.Status."Trolley ausserhalb Weiche" + R Dyn.Status."Trolley_fährt_rückwärts" + R Status2."Warten_3.V" + R Dyn.Error.Err_Kein_LeseErgebnis + R Status2."2.Lesung_aktiv" + R Status2."3.Lesung_aktiv" + R Status2."TrolleyPos_übergeben" + R Status2.Telegramm_gesendet + +// HMI-Zeug: + L DINT#0 + T Dyn.HMI.TrolleyID_Input + + JU RET + + +--- NW 46: Nächsten Schritt aktivieren --- +Plus: T Dyn.Sk.T_ok // Wartezeit übergeben + + A Dyn.Sk.Err_Uebzeit // Störung noch nicht quittiert + JC RET + + L 0 // keine Wartezeit ? + ==I // Ja ! -> sofort weiter + JC w220 + + AN Warte_neu // Wartezeit neutriggern + JC W220_Mig + + L 0 + T Dyn.Sk.Tok_Zelle // Wartezeit + +W220_Mig: A Warte_stop // Wartezeit stoppen + JC RET + + L Dyn.Sk.Tok_Zelle + L "MW4" // Wartezeit +10ms + +I + T Dyn.Sk.Tok_Zelle // Wartezeit + L Dyn.Sk.T_ok // abgelaufen ? + I // abgelaufen ? + AN Dyn.Sk.Err_Uebzeit + JC en24 // Nein ! + + A Ueb_akt // Überwachungszeit aktivieren + S Dyn.Sk.Err_Uebzeit + + L 0 // Zeitwert löschen + T Dyn.Sk.Terr_Zelle + + JU RET + +en24: NOP 0 + +--- NW 48: Überwachungszeit +1 --- + AN Dyn.Sk.Ueb_akt // Schrittaktion ist aktiv + ON "1s-Impuls" + JC RET + + L Dyn.Sk.Terr_Zelle + + 1 // Üb.zeit +1s + T Dyn.Sk.Terr_Zelle + + JU RET + + +--- NW 49: Return --- +RET: NOP 0 + + +--- NW 50: Leser-Einheit managen (Outputs schreiben) --- + AN Leser_Zugriff + ON Schleuse.Parameter_allg.Leser_eingebaut + JC NixLeser + +// Leserdaten schreiben: + OPN DB[Dyn.SAVE2.Leser_DB] // Leser -DB öffnen + + L Dyn.SAVE2.Leser_DD + T AR1Start // Startwert mit Offset 0 + +// Offset 4: + L AR1Start // Startwert mit Offset 0 + + DINT#4 + SLD 3 + T AR1Zeiger // Statt Dyn.Bereichsstop (ging nur bis DB-Länge <= 8191 Bytes) + + L DBB [AR1Zeiger] // Aktuelle Werte holen + T "MB200" + + A Dyn.Leser.OUT.xInStartReading + = "M200.1" + A Dyn.Leser.OUT.xInHandshakeDone + R Dyn.Leser.OUT.xInHandshakeDone + = "M200.2" + A Dyn.Leser.OUT.xInErrQuit + R Dyn.Leser.OUT.xInErrQuit + = "M200.4" + A Dyn.Leser.OUT.xInReset + R Dyn.Leser.OUT.xInReset + = "M200.5" + + L "MB200" + T DBB [AR1Zeiger] // Veränderte Werte zurück schreiben + +NixLeser: NOP 0 + + +--- NW 51: Ende --- + BE + diff --git a/=A01+UH06-KF00/Programmbausteine/Module/MHMOmniSchleuse_Plus.awl b/=A01+UH06-KF00/Programmbausteine/Module/MHMOmniSchleuse_Plus.awl new file mode 100644 index 0000000..091fe02 --- /dev/null +++ b/=A01+UH06-KF00/Programmbausteine/Module/MHMOmniSchleuse_Plus.awl @@ -0,0 +1,2338 @@ +=== FB 1275: MHMOmniSchleuse_Plus [STL] === +INTERFACE: + Input: + Schleusen_Nr : Int // Aufruf für Schleuse + ErrQuit : Bool // Ablaufstörung quittieren + B_VorSchleuse : Bool // Sensor Trolley fährt in Bereich + B_InSchleuse : Bool // Sensor Trolley ist in Schleuse + B_Zähl : Bool // Sensor Trolley ist imnächsten Bereich + B_Stau_raus : Bool // Sensor Stau im Bereich rausfahren + Start_Ok : Bool // Starten ist erlauTrolley + Antrieb_Schleuse_aktiv : Bool // Kreisel-Antrieb aktiv + Antrieb_plus_aktiv : Bool // Kreisel-Antrieb plus aktiv + Schleuse_geöffnet : Bool // Schleuse hat geöffnet + RestZeit_Bereich_plus : Int := 999 // Bereich +1: Restzeit bis AFS stoppt (s) + Output: + Y_Schleuse_Auf : Bool // Schleuse öffnen + Error : Word // Störungen übergeben + InOut: + Antrieb_Schleuse_vor : Bool // Schleusen-Antrieb einschalten + Antrieb_Schleuse_start : Bool // Schleusen-Antrieb mit Zeit starten + Antrieb_Schleuse_stop : Bool // Schleusen-Antrieb stoppen + Antrieb_Schleuse_PS : Bool // Schleusen-Antrieb Energie sparen + Antrieb_plus_vor : Bool // Antrieb plus einschalten + Antrieb_plus_start : Bool // Antrieb plus mit Zeit starten + hStOk : Bool // Anzeige Start n. Störung aktivieren + Static: + SAVE : Struct + Weichen_DB : Int // Weichen-FIFO-DB + Weichen_DW : Int // Weichen-FIFO-DW + Weiche+1 : Int // Weiche +1, wo reserviert wurde + Frei18 : Int + Frei20 : Int + Para : Struct // Parameter + Schleusen_DL_DB : Int // Einsprung Schleuse-Datenliste-DB + Weichen_DL_DB : Int // Einsprung Weichen-Datenliste-DB + Leser_DL_DB : Int // Einsprung Weichen-Datenliste-DB + Status2 : Struct + Trolley_an_Schleuse : Bool // Trolley ist an Schleuse + 2.Lesung_aktiv : Bool // 2.Lesung erfolgt + 3.Lesung_aktiv : Bool // 3.Lesung erfolgt + TrolleyPos_übergeben : Bool // Trolley-Pos. übergeben + Warten_4.V : Bool // Warten auf 4.V + Weichen-Schritt : Bool // Schritt 13-17 aktiv (Weiche evtl. belegen) + Trolley an Raus-Sensor : Bool // Trolley ist am Raus-Sensor + Stau_an_Raus-Sensor : Bool // Stau an Raus-Sensor (kein Zählen mehr) + Einfahrzeit_lernen : Bool // Ausfahrzeit lernen + Telegramm_gesendet : Bool // Telegramm wurde in Send-FIFO eingetragen + Schleuse : "UDLHMOmniSchleuse_Plus" // Statische Schleusendaten (aus DL) + Dyn : Struct // Dynamische Daten + Status : Struct + Trolley_fährt_in_Schleuse : Bool // Trolley fährt in Schleuse + Trolley_wartet_Lesung : Bool // Trolley wartet auf Auftrag + Trolley_wartet_auf_Ziel-FC : Bool + Trolley_wartet_auf_Weiche+1 : Bool + Trolley_wartet_Bereich+1 : Bool // Trolley wartet auf Bereich +1 + Trolley_fährt_aus : Bool // Trolley fährt aus + MindestZeit_ok : Bool // Schleuse ist MindestZeit geöffnet + Trolley_draussen : Bool // Trolley ist ausgefahren + Leser_triggern : Bool + SF_angefordert : Bool + Kein_Stop_mehr : Bool // Kein Stop mehr, Antrieb soll starten + Trolley_fährt_rückwärts : Bool // Trolley in Schleuse rückwärts erkannt + Weiche_geschaltet : Bool + Trolley ausserhalb Weiche : Bool // Trolley hat Weiche verlassen (von Weiche) + Error_aktiv : Bool // Störung vorhanden + Reset_aktiv : Bool := TRUE // Reset aktiv + TrolleyID_Schleuse : DInt // Trolley-Nr in der Schleuse + Trolley_EndZiel : Word // Trolley-EndZiel + Trolley_ZwischenZiel : Word // Trolley-ZwischenZiel + Trolley_ShopGroup : DInt // Trolley-ShopGroup + Weichen_Ziel : Word // Weichen-Ziel (Für WeichenModul von Ziel-FC) + TrolleyID_Eingefahren : DInt // Trolley-Nr von Bereich -1 gemeldet + TrolleyID_ausgefahren : DInt // TrolleyID des ausgefahrenen Trolleys + HMI : Struct + TrolleyID_in_Schleuse : DInt // Trolley-Nr in Schleuse (IN:PLC, OUT:PLC) + TrolleyID_Input : DInt // Trolley-Nr Input (IN:HMI, OUT:PLC) + Schleuse_resetten : Bool // Schleuse resetten (IN:HMI, Out:PLC) + Sk : "USk_ILS" // Status der Schrittkette + Leser : Struct + IN : Struct + xOutReadyForNewScan : Bool // DBX10.1: Reader ist bereit für Leseanforderung + xOutReadingDone : Bool // DBX10.0: Lesevorgang abgeschlossen / Handshake raus + xOutCodeGood : Bool // DBX278.0: Gute Lesung + xOutCodeBad : Bool // DBX278.1: Schlechte Lesung + nOutBarcode : DInt // DBD12: Trolley ID + OUT : Struct + xInStartReading : Bool // DBX4.1: Starte Lesevorgang + xInHandshakeDone : Bool // DBX4.2: Handshake Daten abgeholt + xInErrQuit : Bool // DBX4.4: Fehler rücksetzen + xInReset : Bool // DBX4.5: Allgemeines Rücksetzen des Bausteins + TrolleyID_unbekannt_Schleuse : DInt // TrolleyID unbekannt (Trolley in Schleuse) + Rueckmld : Struct + RET_VAL_BLKMOV_Schleuse : Int // Rückmeldung nach BLKMOV-Aufruf + RET_VAL_DL_Schleuse : Byte + RET_VAL_DL_Weiche : Byte // Rückmeldung nach DatenOut-Aufruf + RET_VAL_DL_Leser : Byte // Rückmeldung nach DatenOut-Aufruf + Error : "UErrHMOmniSchleuse" + Stau_Zeit : Int // Sensor B_VorSep ist belegt [1s] + Mindest_Zeit : Int // Sensor B_VorSep ist frei [1s] + Leer_Zeit : Int + Stop_Ursache : Word // Stop-Stelle: Nw + Position + Vereinzelungstakte : DInt // Anzahl der getätigten Vereinzelungstakte + ZwischenZiel_eingefahren : Word // Trolley-ZwischenZiel von Bereich -1 + Zeit_Ohne_B_In_Schleuse : Int // Trolley nicht an B_In_Schleuse + Zeit_Ohne_B_Zähl : Int // Trolley nicht an B_Zähl + Zeit_Ausfahren_Ohne_B_Zähl : Int // Trolley fährt nicht zu B_Zähl + Raus_Trolleys : Int // Anzahl der Trolleys zwischen Schleuse und Raus-Sensor + Stau_Zeit_RausSensor : Int // Sensor B_AusSep ist belegt [1s] + Zurück_gemeldetes_Weichen_Ziel : Word // Von Weiche zurück gemeldetes Weichen-Ziel + SAVE2 : Struct + Leser_DB : Int // Weichen-FIFO-DB + Leser_DD : DInt // Weichen-FIFO-DD + WarteZeit_PS : Int + Restzeit_bis_Schleuse : Int + Res200 : Array[1..11] of Int // Reserve + Temp: + Quelle : Any // Zeiger, wo Rein-Daten sind + Ueb_akt : Bool // Überwachungszeit aktivieren + Weiter : Bool // Weiterschaltbedingung ist erfüllt + Warte_neu : Bool // Wartezeit neu triggern + Warte_stop : Bool // Wartezeit stoppen + Kein_Weichenbereich +1 : Bool + Reservierung_Weiche+1_aktiv : Bool + Leser_Zugriff : Bool // Leser-Zugriff vorhanden + LeserFC_vorhanden : Bool + ZielFC_vorhanden : Bool + DraussenFC_vorhanden : Bool + TrolleyID_Bereich-1 : Bool // Trolley--ID von Bereich -1 gemeldet + Trolley_draussen : Bool // Signal: Trolley ist draussen + Antriebe_starten : Bool + Einfahrzeit_nicht_bekannt : Bool + LeserFC : Word // Ziel-FC + ZielFC : Word // Ziel-FC + DraussenFC : Word // Draussen-FC + AR1Start : DInt // Startwert mit Offset 0 + AR1Zeiger : DWord // Statt AR1 (ging nur bis DB-Länge <= 8191 Bytes) + Constant: + +--- NW 1: Parameter-Übergabe --- + L Schleusen_Nr + + L 274 // Einsprung Schleuse-DL + T Para.Schleusen_DL_DB // vor Aufruf übergeben! + + L 279 // Einsprung Weichen-DL + T Para.Weichen_DL_DB // vor Aufruf übergeben! + + L 273 + T Para.Leser_DL_DB + + +--- NW 2: Anzeige OP --- + A ErrQuit // Überwachungszeit abgelaufen quittieren + R Dyn.Sk.Err_Uebzeit + + L 252 // Bereichsstop aktiv + AN Dyn.Sk.Bereich_ok // Also: Bereichsstop / Not-Aus + JC w010 + + L 253 + AN Dyn.Sk.Auto_akt // Keine Betriebsart + AN Dyn.Sk.Hand_akt + JC w010 + + L 255 // Handbetrieb aktiv + A Dyn.Sk.Hand_akt + JC w010 + + L Dyn.Sk.Akt_Schritt // Aktiver Schritt +w010: T Dyn.Sk.OP_Schritt + + +--- NW 3: Out-Bits zum Zurücksetzen --- + SET + R Y_Schleuse_Auf + + SET // Jeden Zyklus neu + R Dyn.Status.Trolley_wartet_Lesung + R Dyn.Status."Trolley_wartet_auf_Ziel-FC" + R Dyn.Status."Trolley_wartet_auf_Weiche+1" + R Dyn.Status."Trolley_wartet_Bereich+1" + R Dyn.Status."Trolley_fährt_aus" + R Dyn.Status.Trolley_draussen + R Leser_Zugriff + R Status2."Weichen-Schritt" + + A Dyn.Sk.Reset_Akt + = Dyn.Status.Reset_aktiv + + +--- NW 4: HMI-Zeug --- +// Von HMI: + A Dyn.HMI.Schleuse_resetten + R Dyn.HMI.Schleuse_resetten // von HMI + S Dyn.Sk.Reset // SK zurücksetzen + + L Dyn.HMI.TrolleyID_Input // Wird direkt im Programm verwertet (s.u.) + +// An HMI: +ToHMI: L Dyn.TrolleyID_Schleuse + T Dyn.HMI.TrolleyID_in_Schleuse + + +--- NW 5: Schrittkette zurücksetzen --- + A ErrQuit // Überwachungszeit abgelaufen quittieren + R Dyn.Sk.Err_Uebzeit + + AN Dyn.Sk.Reset // SK zurücksetzen + JC en04 + +// Schrittkette zurücksetzen: + L 0 // Schritt 0: Warten + T Dyn.Sk.Akt_Schritt + T Dyn.Raus_Trolleys + + L 0 // Zeitwert löschen + T Dyn.Sk.Terr_Zelle + T Dyn.Sk.Tok_Zelle + + SET + R Dyn.Error.Err_BLKMov // Error bei Block kopieren + R Dyn.Sk.Reset // SK zurücksetzen + R Dyn.Sk.Err_Schritt // Undefinierter Schritt + R Dyn.Sk.Err_Uebzeit // Sofort weiter ! + R Status2.Telegramm_gesendet + S Dyn.Sk.Reset_Akt // Reset ist aktiv + + SET + R Dyn.Error.Schleuse_DL // Schleuse-Datenliste fehlerhaft + R Dyn.Error.Undef_Schleuse // undefinierter Schleuse + R Dyn.Error.Err_Trolley_nicht_in_Schleuse // Trolley fährt nicht in Schleuse + R Dyn.Error.Err_Uebzeit // Überwachungzeit ist abgelaufen + R Dyn.Error.Err_Schritt // Schritt-Nummer ist nicht definiert + R Dyn.Error.Err_Stau_Einfahrt + R Dyn.Error.Err_BLKMov + R Dyn.Error.Err_Trolley_raus // Trolley fährt nicht aus + R Dyn.Error.Err_Raus_Sensor // Raus-/Belade-Sensor wird nicht erreicht (oder dauernd aktiv)! + R Dyn.Error.Err_Ziel // kein Ziel angegeben + R Dyn.Error.Err_Weichen_DL // Weichen-Datenliste fehlerhaft + R Dyn.Error.Err_Undef_Weiche // undefinierte Weiche + R Dyn.Error.Err_Weiche_belegt // Weiche bleibt belegt + R Dyn.Error.Err_Kein_LeseErgebnis + R Dyn.Error.Err_Leser_nicht_bereit + + L 0 + T Dyn.SAVE2.Leser_DB + L DINT#0 + T Dyn.SAVE2.Leser_DD + T Dyn.Leser.IN.nOutBarcode + +// Defaultwerte übergeben: + L 0 // Damit statische Werte neu aus Datenbank geholt werden ! + T Schleuse.Schleusen_Nr // Nummer des Schleuses + + JU RET + +en04: NOP 0 + + +--- NW 6: Störungen nach Außen übergeben --- + L 0 + T "MW200" + + A Dyn.Error.Schleuse_DL // Schleuse-Datenliste fehlerhaft + = "M200.0" + A Dyn.Error.Undef_Schleuse // undefinierter Schleuse + = "M200.1" + A Dyn.Error.Err_Trolley_nicht_in_Schleuse // Trolley fährt nicht in Schleuse + = "M200.2" + A Dyn.Sk.Err_Uebzeit + = Dyn.Error.Err_Uebzeit // Überwachungzeit ist abgelaufen + = "M200.3" + NEG + R Dyn.Sk.Err_Uebzeit_AnzOk + A Dyn.Sk.Err_Schritt + = Dyn.Error.Err_Schritt // Schritt-Nummer ist nicht definiert + = "M200.4" + A Dyn.Error.Err_Stau_Einfahrt + AN B_InSchleuse + AN Y_Schleuse_Auf + = "M200.5" + A Dyn.Error.Err_BLKMov // Error bei Block kopieren + = "M200.6" + A Dyn.Error.Err_Trolley_raus // Trolley fährt nicht aus + = "M200.7" + A Dyn.Error.Err_Raus_Sensor // Raus-/Belade-Sensor wird nicht erreicht (oder dauernd aktiv)! + = "M201.0" + A Dyn.Error.Err_Ziel // Trolley-Ziel nicht bekannt + = "M201.1" + A Dyn.Error.Err_Weichen_DL // Weichen-Datenliste fehlerhaft + = "M201.2" + A Dyn.Error.Err_Undef_Weiche // undefinierte Weiche + = "M201.3" + A Dyn.Error.Err_Weiche_belegt // Weiche bleibt belegt + = "M201.4" + A Dyn.Error.Err_Kein_LeseErgebnis + = "M201.5" + A Dyn.Error.Err_Leser_nicht_bereit + = "M201.6" + A Dyn.Error.Barcode_nicht_bekannt + = "M201.7" + +// Andere Meldung als Überwachungszeit aktiv ?: + L "MW200" + L 2#1111_0111_1111_1111 + AW + L 2#0000_0000_0000_0000 // Andere Meldung als Üb.zeit aktiv ? + <>I // Ja ! + ON Dyn.Sk.Err_Uebzeit_AnzOk // Störung anzeigen ok, da 2.Zyklus aktiv ! + R "M200.3" // Üb.Zeit-Meldung nicht an PC senden + + A Dyn.Sk.Err_Uebzeit + S Dyn.Sk.Err_Uebzeit_AnzOk // Störung anzeigen ok, da 2.Zyklus aktiv ! + + L "MW200" + T Error // Schnittstelle nach Außen + +// Störung vorhanden: + L 0 + <>I // Ja ! + = Dyn.Status.Error_aktiv + S hStOk + +// Antrieb stoppen: + A( + ON Dyn.Sk.Auto_akt // SystemVoraussetzungen fehlen + O Dyn.Sk.Hand_akt + ON Dyn.Sk.Bereich_ok + ) + S Antrieb_Schleuse_stop // Antrieb stoppen + +// Störungen pro Zyklus neu erzeugen: + SET + R Dyn.Error.Schleuse_DL // Schleuse-Datenliste fehlerhaft + R Dyn.Error.Undef_Schleuse // undefinierter Schleuse +// / R #Dyn.Error.Err_Trolley_nicht_in_Schleuse//Trolley fährt nicht in Schleuse +// / R #Dyn.Error.Err_Uebzeit //Überwachungzeit ist abgelaufen + R Dyn.Error.Err_Schritt // Schritt-Nummer ist nicht definiert +// / R #Dyn.Error.Err_Stau_Einfahrt//Betriebsart ist nicht möglich + R Dyn.Error.Err_BLKMov +// / R #Dyn.Error.Err_Trolley_raus//Trolley fährt nicht aus +// / R #Dyn.Error.Err_Raus_Sensor//Raus-/Belade-Sensor wird nicht erreicht (oder dauernd aktiv)! + R Dyn.Error.Err_Ziel // Trolley-Ziel nicht bekannt + R Dyn.Error.Err_Weichen_DL // Weichen-Datenliste fehlerhaft + R Dyn.Error.Err_Undef_Weiche // undefinierte Weiche + R Dyn.Error.Err_Weiche_belegt // Weiche bleibt belegt +// / R #Dyn.Error.Err_Kein_LeseErgebnis +// / R #Dyn.Error.Err_Leser_nicht_bereit + R Dyn.Error.Barcode_nicht_bekannt + + AN Dyn.Sk.Err_Uebzeit + R Dyn.Error.Err_Trolley_nicht_in_Schleuse // Trolley fährt nicht in Schleuse + R Dyn.Error.Err_Trolley_raus // Trolley fährt nicht aus + + +--- NW 7: Statische Schleuse-Parameter holen --- + L Schleuse.Schleusen_Nr // Nummer des Schleuses + L Schleusen_Nr // Aufruf-Parameter + ==I // Identisch ? + R Dyn.Error.Schleuse_DL // Schleusedatenbank fehlerhaft + R Dyn.Error.Undef_Schleuse // undefinierter Schleuse + JC en06 // Ja ! + + T "MW200" // Search-Daten + +CALL FC "DatenOut" (SSDB:=Para.Schleusen_DL_DB, SSDW:=0, PARA:=WORD#16#0000, SEARCHDATEN:=P#M200.0, RE_VAL:="MB199", OUTDATEN:=P#M220.0, Position:="MW196") + + L "MB199" + T Dyn.Rueckmld.RET_VAL_DL_Schleuse // Rückmeldung bei Datenbank-Zugriff (Gefälle-DL) + + JBI G_Ok + + A "M199.0" + JCN w060 + + SET + = Dyn.Error.Schleuse_DL // Schleusedatenbank fehlerhaft + + L 16#A061 + T Dyn.Stop_Ursache + + JU RET + +w060: SET + S Dyn.Error.Undef_Schleuse // undefinierter Schleuse + + L 16#A062 + T Dyn.Stop_Ursache + + JU RET + +// Kennung + Datenbytes +G_Ok: SET + R Dyn.Error.Schleuse_DL // Gefälledatenbank fehlerhaft + R Dyn.Error.Undef_Schleuse // undefinierte Gefällestrecke + + L 16#1004 // Kennung 10 + Word=04 + T LW0 // Any-Kennung, Datentyp + L 20 // Datenwords speichern + T LW2 // Wiederholungen + +// Quelle-Pointer erzeugen: + L 0 // Bei Merker = 0 ! + T LW4 // DB_Nummer + L 220 // Adresse + SLD 3 + L 16#8300_0000 // Kennung: Merker + OD + T LD6 // Kennung, Adresse + +CALL SYS "BLKMOV" (SRCBLK:=Quelle, RET_VAL:=Dyn.Rueckmld.RET_VAL_BLKMOV_Schleuse, DSTBLK:=Schleuse) // Datenliste-Daten speichern | #Ziel + + L 16#A063 + T Dyn.Stop_Ursache + + L Dyn.Rueckmld.RET_VAL_BLKMOV_Schleuse // Rückmeldung + L 0 // Fehler vorhanden ? + <>I // Ja ! + = Dyn.Error.Err_BLKMov // Error bei Block kopieren + JC RET + + L Schleuse.Schleusen_Typ // Schleusetyp = 1275 (HM-Schleuse Plus) + L 1275 // Dieser Aufruf-FB ? + ==I // Ja ! + JC w061 + + SET + S Dyn.Error.Undef_Schleuse // undefinierter Schleuse + + L 0 // Schleuse ungültig ! + T Schleuse.Schleusen_Nr // Nummer des Schleuses + + L 16#A064 + T Dyn.Stop_Ursache + + JU RET + +// Defaultwerte übergeben: +w061: NOP 0 + + JU RET + +en06: NOP 0 + + +--- NW 8: Einsprung Weiche plus ermitteln --- + L SAVE.Weichen_DB // Weichen-FIFO-DB + L 0 // Einsprung-Zeiger bekannt ? + >I // Ja ! + R "Kein_Weichenbereich +1" + JC En08 + + L Schleuse.RausWeichen_Nr // Nr. der vorhandenen Weiche + T "MW200" // Search-Daten + L 0 // angegeben ? + ==I // Nein ! + = "Kein_Weichenbereich +1" + R Dyn.Error.Err_Undef_Weiche // undefinierte Weiche + JC En08 + +CALL FC "DatenOut" (SSDB:=Para.Weichen_DL_DB, SSDW:=0, PARA:=WORD#16#0000, SEARCHDATEN:=P#M200.0, RE_VAL:="MB199", OUTDATEN:=P#M220.0, Position:="MW196") + + L "MB199" + T Dyn.Rueckmld.RET_VAL_DL_Weiche // Rückmeldung bei Datenbank-Zugriff (Weiche-DL) + + JBI W_Ok + + A "M199.0" + = Dyn.Error.Err_Weichen_DL // Weichen-Datenliste fehlerhaft + JC En08 + + SET + S Dyn.Error.Err_Undef_Weiche // undefinierte Weiche + + JU En08 + +W_Ok: L "MW224" + T SAVE.Weichen_DB // Weichen-FIFO-DB + L 0 // sinnvoller Wert ? + <=I // Nein ! + S Dyn.Error.Err_Undef_Weiche // undefinierte Weiche + JC En08 + + L "MW226" + T SAVE.Weichen_DW // Weichen-FIFO-DW + +En08: NOP 0 + + +--- NW 9: Trolley in Schleuse entprellen --- + A B_InSchleuse + JC B_ok + + AN Status2.Trolley_an_Schleuse + ON "1s-Impuls" + JC Xn08 + + L Dyn.Zeit_Ohne_B_In_Schleuse + + 1 // Zeit ohne Sensor +1s + T Dyn.Zeit_Ohne_B_In_Schleuse + + L 3 // Nach ca. 3s + I // Ja! + AN Status2."Stau_an_Raus-Sensor" // Stau an Raus-Sensor + O + A B_VorSchleuse // // + AN Dyn.Error.Err_Stau_Einfahrt // // + O "Schleuse_geöffnet" + = Antriebe_starten + + A Antriebe_starten +// / UN #Dyn.Error.Err_Trolley_raus//Trolley fährt nicht aus + A( + O Dyn.Status.Weiche_geschaltet // Weiche ist aktiv + O "Kein_Weichenbereich +1" + ) + A Schleuse.Parameter_allg.Antrieb_Plus_vorhanden + S Antrieb_plus_vor // Antrieb plus einschalten + + A Antriebe_starten +// / UN #Dyn.Error.Err_Trolley_raus//Trolley fährt nicht aus + A( + O Dyn.Status.Weiche_geschaltet // Weiche ist aktiv + O "Kein_Weichenbereich +1" + ) + A( + O Antrieb_plus_aktiv + ON Schleuse.Parameter_allg.Antrieb_Plus_vorhanden + ) + S Antrieb_Schleuse_vor // Antrieb einschalten + +// Trolley ist in Schleuse und wartet + A Status2.Trolley_an_Schleuse // Trolley im Schleuse erkannt + AN "Schleuse_geöffnet" // Trolley soll ausfahren + A( + ON B_VorSchleuse + O Dyn.Error.Err_Stau_Einfahrt + ) + AN Dyn.Status.Kein_Stop_mehr // Wird in Schritt 2 gesetzt + O + A "Schleuse_geöffnet" // Trolley soll ausfahren + A Schleuse.Parameter_allg.Antrieb_Plus_vorhanden + AN Antrieb_plus_aktiv + JC Warten + + L 0 + T Dyn.WarteZeit_PS + + JU NwE10 + +Warten: L Dyn.WarteZeit_PS + L 3 // ca. 3s rum ? + =I + AN Status2."Stau_an_Raus-Sensor" + JC RDel + + CAC + L 200 // Nach ca. 20s + >=I + JC RDel + + JU En10 + +RDel: SET + R Status2."Trolley an Raus-Sensor" + L 0 + T Dyn."Zeit_Ohne_B_Zähl" + T Dyn.Stau_Zeit_RausSensor + +// War Stau?: + A Status2."Stau_an_Raus-Sensor" + R Status2."Stau_an_Raus-Sensor" + JCN DelRT + + L 0 // Bisher gefahrene Trolleys löschen + T Dyn.Raus_Trolleys + T Dyn."Zeit_Ohne_B_Zähl" + T Dyn.Stau_Zeit_RausSensor + +// Im Weichenbereich noch Trolleys unterwegs?: +DelRT: L Dyn.Raus_Trolleys + L 0 + >I + O "Kein_Weichenbereich +1" + JC En10 + +// Weiche+1 löschen: + L 0 + T SAVE."Weiche+1" // Hier wurde reserviert (Im Weichenmodul wird dann Reservierung gelöscht!) + + JU En10 + +B_Raus: L 0 + T Dyn."Zeit_Ohne_B_Zähl" + T Dyn."Zeit_Ausfahren_Ohne_B_Zähl" + +// Einmalig: + AN Status2."Trolley an Raus-Sensor" + S Status2."Trolley an Raus-Sensor" // Raus-Sensor ausgewertet + JCN Xn10 // Negierter Sprung + + L Dyn.Raus_Trolleys + + -1 // Ausgefahrene Trolleys -1 + T Dyn.Raus_Trolleys + + L 0 + >=I + JC Xn10 + + T Dyn.Raus_Trolleys // Minimum übergeben + +// Stau an B_Raus: +Xn10: AN "100ms-Impuls" + O Status2."Stau_an_Raus-Sensor" + JC En10 + + L Dyn.Stau_Zeit_RausSensor + + 1 // StauZeit +1 + T Dyn.Stau_Zeit_RausSensor + + L 90 // Nach ca. 9s + >=I + JCN En10 // Negierter Sprung + + L 0 // Zeit löschen + T Dyn.Stau_Zeit_RausSensor + + SET + S Status2."Stau_an_Raus-Sensor" + +En10: NOP 0 + + +--- NW 12: Plus: Trolley fährt nicht bis Zähl-Sensor --- + L Dyn.Raus_Trolleys + L 0 // Trolles unterwegs? + ==I // Nein! + O Trolley_draussen // Sensor wurde erreicht + O "Schleuse_geöffnet" // Dann Üb.zeit von Sk + O Dyn.Status.Reset_aktiv + JC RTTD + + AN Antrieb_Schleuse_aktiv + O + AN Antrieb_plus_aktiv + A Schleuse.Parameter_allg.Antrieb_Plus_vorhanden + ON "1s-Impuls" + O Dyn.Error.Err_Raus_Sensor // Trolley fährt nicht aus + JC En12 + + L Dyn."Zeit_Ausfahren_Ohne_B_Zähl" + + 1 + T Dyn."Zeit_Ausfahren_Ohne_B_Zähl" + +// Trolley fährt nicht bis Zähl-Sensor!: + L Schleuse."Übzeit_aus_Schleuse" + >=I + S Dyn.Error.Err_Raus_Sensor // Trolley fährt nicht aus + JCN En12 // Negierter Sprung! + + L Dyn.Raus_Trolleys + + -1 + T Dyn.Raus_Trolleys + + JU En12 + +RTTD: L 0 + T Dyn."Zeit_Ausfahren_Ohne_B_Zähl" + + SET + R Dyn.Error.Err_Raus_Sensor // Trolley fährt nicht aus + +En12: NOP 0 + + +--- NW 13: Einfahrzeit lernen --- + L Schleuse.EinfahrZeit + L 0 // Ausfahrzeit bekannt ? + ==I // Nein ! + O Status2.Einfahrzeit_lernen + = Einfahrzeit_nicht_bekannt + A Einfahrzeit_nicht_bekannt + A B_VorSchleuse // Stauklappe bei Einfahrt + A Antrieb_Schleuse_aktiv + AN B_InSchleuse + AN "Schleuse_geöffnet" + S Status2.Einfahrzeit_lernen + + A B_InSchleuse + AN "Schleuse_geöffnet" + R Status2.Einfahrzeit_lernen + + A Status2.Einfahrzeit_lernen + S Antrieb_Schleuse_vor // Antrieb einschalten + + AN Status2.Einfahrzeit_lernen + ON Antrieb_Schleuse_aktiv + ON "1s-Impuls" + JC NoEFZ + + L Schleuse.EinfahrZeit + + 1 + T Schleuse.EinfahrZeit + +NoEFZ: NOP 0 + + +--- NW 14: PS deaktivieren, da Trolley einfährt --- + A Einfahrzeit_nicht_bekannt // Also bekannt + JC En14 + +// Neuer Trolley fährt ein: + A B_VorSchleuse + JCN Wait // Negierter Sprung + + L Schleuse.EinfahrZeit + T Dyn.Restzeit_bis_Schleuse + +// Restzeit zurück zählen: +Wait: AN Antrieb_Schleuse_aktiv + O "Schleuse_geöffnet" + ON "1s-Impuls" + JC X014 + + L Dyn.Restzeit_bis_Schleuse + + -1 + T Dyn.Restzeit_bis_Schleuse + + L 0 + >I + JC X014 + + T Dyn.Restzeit_bis_Schleuse // Minimum übergeben + +// Trolley fährt noch ein: +X014: L Dyn.Restzeit_bis_Schleuse + L 0 // Restzeit vorhanden? + >I // Ja ! + AN B_InSchleuse + AN "Schleuse_geöffnet" + S Antrieb_Schleuse_vor // Antrieb einschalten (dadurch wird PS-Modus deaktiviert) + +En14: NOP 0 + + +--- NW 15: Spezial-FCs vorhanden? --- + L Schleuse.Leser_FC + T LeserFC + L 0 // Parameter vorhanden ? + >I // Ja! + = LeserFC_vorhanden + + L Schleuse.Ziel_FC + T ZielFC + L 0 // Parameter vorhanden ? + >I // Ja! + = ZielFC_vorhanden + + L Schleuse.Draussen_FC + T DraussenFC + L 0 // Parameter vorhanden ? + >I // Ja! + = DraussenFC_vorhanden + + +--- NW 16: Error: Stau Bereich-Eingang --- +// TrolleyID zum Einfahren gemeldet / Trolley fährt in Bereich: + L Dyn.TrolleyID_Eingefahren // Eintrag von Weiche -1 + L DINT#0 // angegeben ? + <>D // Ja ! + = "TrolleyID_Bereich-1" + A "TrolleyID_Bereich-1" + O B_VorSchleuse + S Dyn.Status."Trolley_fährt_in_Schleuse" + +// Antrieb einschalten: + A B_VorSchleuse + AN B_InSchleuse + AN "Schleuse_geöffnet" + S Antrieb_Schleuse_vor + + A B_VorSchleuse + S Antrieb_Schleuse_start + +// Sensor bei Bereichs-Einfahrt bleibt belegt?: + AN B_VorSchleuse // Sensor Trolley fährt in Bereich (kein Stau !) + O "Schleuse_geöffnet" + R Dyn.Error.Err_Stau_Einfahrt // Stau bei Einfahrt + JC X120 // StauZeit neu aufziehen + + AN "1s-Impuls" + O + A Schleuse.Parameter_allg.Antrieb_vorhanden + AN Antrieb_Schleuse_aktiv + O Dyn.Error.Err_Stau_Einfahrt // Zeit bereits abgelaufen + JC Xn12 + + L Dyn.Stau_Zeit // Sensor B_VorSep ist belegt [1s] + + +1 + T Dyn.Stau_Zeit // Sensor B_VorSep ist belegt [1s] + + L 20 // Stau-Zeit erreicht ? + >=I // Ja ! + S Dyn.Error.Err_Stau_Einfahrt // Stau bei Einfahrt (Quittierung oder Sensor=0, wegen Bürstenantrieb + JCN Xn12 + +X120: L 0 // Zeiten löschen + T Dyn.Stau_Zeit // Sensor B_VorSep ist belegt [1s] + +Xn12: NOP 0 + + +--- NW 17: Schleuse: Mindestzeit geöffnet/frei --- + L Dyn.Sk.Akt_Schritt + L 3 // AusSchleusen aktiv? + I // Nein! + ) +// / O #B_InSchleuse //Sensor Trolley in Schleuse vorhanden + ON "Schleuse_geöffnet" + R Dyn.Status.MindestZeit_ok + JC X130 // FreiZeit neu aufziehen + + A Schleuse.Parameter_allg.Antrieb_vorhanden + AN Antrieb_Schleuse_aktiv + O + A Schleuse.Parameter_allg.Antrieb_Plus_vorhanden + AN Antrieb_plus_aktiv + O Dyn.Status.MindestZeit_ok // Zeit bereits abgelaufen + ON "1s-Impuls" + JC Xn13 + + L Dyn.Mindest_Zeit // Sensor B_im_Sep ist frei [1s] + + +1 + T Dyn.Mindest_Zeit // Sensor B_im_Sep ist frei [1s] + + L Schleuse.Mindeszeit_Schleuse_geoeffnet // Mindest-Zeit erreicht ? + >=I // Ja ! + S Dyn.Status.MindestZeit_ok + JCN Xn13 + +X130: L 0 // Zeiten löschen + T Dyn.Mindest_Zeit // Sensor B_im_Sep ist frei [1s] + +Xn13: NOP 0 + + +--- NW 18: Einsprung Leser ermitteln --- + L Dyn.SAVE2.Leser_DB // Leser-FIFO-DB + L 0 // Einsprung-Zeiger bekannt ? + >I // Ja ! + S Leser_Zugriff // Leser-Zugriff vorhanden + JC En08L + + L Schleuse.Leser_ID // Nr. des vorhandenen Lesers + T "MW200" // Search-Daten + L 0 // angegeben ? + ==I // Nein ! + JC En08L + +CALL FC "DatenOut" (SSDB:=Para.Leser_DL_DB, SSDW:=0, PARA:=WORD#16#0000, SEARCHDATEN:=P#M200.0, RE_VAL:="MB199", OUTDATEN:=P#M220.0, Position:="MW196") + + L "MB199" + T Dyn.Rueckmld.RET_VAL_DL_Leser // Rückmeldung bei Datenbank-Zugriff (Leser-DL) + + JBI W_OkL + + SET + S Dyn.Error.Err_Leser_nicht_bereit // Leser-Datenliste fehlerhaft + + JU En08L + +W_OkL: L "MW222" // Rein-FIFO-DB + T Dyn.SAVE2.Leser_DB // Leser-FIFO-DB + L 0 // sinnvoller Wert ? + <=I // Nein ! + S Dyn.Error.Err_Leser_nicht_bereit // undefinierter Leser + JC En08L + + L "MD224" + T Dyn.SAVE2.Leser_DD // Leser-FIFO-DD + + SET + R Dyn.Error.Err_Leser_nicht_bereit // undefinierter Leser + S Leser_Zugriff // Leser-Zugriff vorhanden + +En08L: NOP 0 + + +--- NW 19: Reservierung bei Weiche plus noch aktiv? Nachtriggern --- + A "Kein_Weichenbereich +1" + R "Reservierung_Weiche+1_aktiv" + JC Y11E + + OPN DB[SAVE.Weichen_DB] // FABE+ -DB öffnen + + L SAVE.Weichen_DW + ITD + T AR1Start // Startwert mit Offset 0 + + L AR1Start // Startwert mit Offset 0 + + DINT#78 + SLD 3 + T AR1Zeiger // Statt Dyn.Bereichsstop (ging nur bis DB-Länge <= 8191 Bytes) + + L DBW [AR1Zeiger] // Schleuse -1 (DBW 78) + L Schleusen_Nr // Diese Schleuse ? + ==I // Ja ! + = "Reservierung_Weiche+1_aktiv" + +// Mindestzeit nachtriggern: (nach Weiche +1) + AN "Schleuse_geöffnet" + JC Y11E + + L AR1Start // Startwert mit Offset 0 + + DINT#71 + SLD 3 + L 3 // Damit DBX_Bit 3 + OD + T AR1Zeiger // Statt Dyn.Bereichsstop (ging nur bis DB-Länge <= 8191 Bytes) + + SET + = DBX [AR1Zeiger] // Mindestzeit nachtriggern (71.2) + +Y11E: NOP 0 + + +--- NW 20: Leser-Einheit managen (Inputs holen) --- + AN Leser_Zugriff + ON Schleuse.Parameter_allg.Leser_eingebaut + R Dyn.Status.Leser_triggern // für Status-Anzeige + JC NoLeser + +// Leserdaten holen: + OPN DB[Dyn.SAVE2.Leser_DB] // Leser -DB öffnen + + L Dyn.SAVE2.Leser_DD + T AR1Start // Startwert mit Offset 0 + +// Offset 10: + L AR1Start // Startwert mit Offset 0 + + DINT#10 + SLD 3 + T AR1Zeiger // Statt Dyn.Bereichsstop (ging nur bis DB-Länge <= 8191 Bytes) + + L DBB [AR1Zeiger] + T "MB200" + A "M200.0" + = Dyn.Leser.IN.xOutReadingDone + A "M200.1" + = Dyn.Leser.IN.xOutReadyForNewScan + +// Offset 274: + L AR1Start // Startwert mit Offset 0 + + DINT#274 + SLD 3 + T AR1Zeiger // Statt Dyn.Bereichsstop (ging nur bis DB-Länge <= 8191 Bytes) + + L DBB [AR1Zeiger] + T "MB200" + A "M200.0" + = Dyn.Leser.IN.xOutCodeGood + A "M200.1" + = Dyn.Leser.IN.xOutCodeBad + +// Offset 12: + L AR1Start // Startwert mit Offset 0 + + DINT#12 + SLD 3 + T AR1Zeiger // Statt Dyn.Bereichsstop (ging nur bis DB-Länge <= 8191 Bytes) + + L DBD [AR1Zeiger] + T Dyn.Leser.IN.nOutBarcode + +NoLeser: NOP 0 + + +--- NW 21: Schrittkette anhalten --- + A Dyn.Sk.Auto_akt // Automatik ist aktiv + A Dyn.Sk.Bereich_ok + CLR + + JU en08_Mig // Schrittkette nicht anhalten ! + + SET + R Dyn.Sk.Err_Uebzeit // Störungen löschen + R Dyn.Sk.Err_Schritt + + L 0 // Zeitwerte löschen + T Dyn.Sk.Terr_Zelle + T Dyn.Sk.Tok_Zelle + + JU RET + +en08_Mig: NOP 0 + + +--- NW 22: Trolley wurde zurück gezogen --- + L Dyn.Sk.Akt_Schritt + L 10 // Trolley schon unterwegs ? + I // Ja ! + ) + O Status2.Trolley_an_Schleuse // Trolley ist noch in Schleuse + O "Schleuse_geöffnet" + JC TrolleyOk + + SET + S Antrieb_Schleuse_start + S Dyn.Leser.OUT.xInReset + + L 0 // Neubeginn + T Dyn.Sk.Akt_Schritt + + AN Schleuse.Parameter_allg.Leser_eingebaut // Falls kein Leser verbaut Daten behalten (falls von Bereich-1 gemeldet) + JC TrolleyOk + + T Dyn.Trolley_ZwischenZiel + + L DINT#0 + T Dyn.TrolleyID_Schleuse + +TrolleyOk: NOP 0 + + +--- NW 23: Sprungverteiler --- + L Dyn.Sk.Neu_Schritt // Schritt, der im nächsten Zyklus aktiv werden soll + L -1 // angegeben ? + ==I // Nein ! + JC NEU + + CAC // Neuen Schritt übergeben + T Dyn.Sk.Akt_Schritt + + L -1 // Urzustand + T Dyn.Sk.Neu_Schritt // Schritt, der im nächsten Zyklus aktiv werden soll + +NEU: SET + R Warte_neu // Wartezeit neutriggern + R Warte_stop // Wartezeit stoppen + + L Dyn.Sk.Akt_Schritt + JL Ende + JU s000 // Schritt 0 + JU s001 // Schritt 1 + JU s002 // Schritt 2 + JU s003 // Schritt 3 + JU s004 // Schritt 4 + JU s005 // Schritt 5 + JU s006 // Schritt 6 + JU s007 // Schritt 7 + JU s008 // Schritt 8 + JU s009 // Schritt 9 + JU s010 // Schritt 10 + JU s011 // Schritt 11 + JU s012 // Schritt 12 + JU s013 // Schritt 13 + JU s014 // Schritt 14 + JU s015 // Schritt 15 + JU s016 // Schritt 16 + JU s017 // Schritt 17 + JU s018 // Schritt 18 + JU s019 // Schritt 19 + JU s020 // Schritt 20 + JU s021 // Schritt 21 + JU s022 // Schritt 22 + JU s023 // Schritt 23 + JU s024 // Schritt 24 + JU s025 // Schritt 25 + JU s026 // Schritt 26 + JU s027 // Schritt 27 + JU s028 // Schritt 28 + JU s029 // Schritt 29 + JU s030 // Schritt 30 +Ende: S Dyn.Sk.Err_Schritt // Undefinierter Schritt + + L 16#A131 + T Dyn.Stop_Ursache + + JU RET + +Neu_Mig: A Dyn.Sk.Err_Uebzeit + JCN Sk + + L 16#A132 + T Dyn.Stop_Ursache + + JU RET + +Sk: T Dyn.Sk.Akt_Schritt + + L 0 // Zeitwerte löschen + T Dyn.Sk.Terr_Zelle + T Dyn.Sk.Tok_Zelle + + JU NEU + +// Nicht programmierte Schritte: +// s000: SPA Ende +// s001: SPA Ende +// s002: SPA Ende +s003: JU Ende +s004: JU Ende +// s005: SPA Ende +// s006: SPA Ende +// s007: SPA Ende +s008: JU Ende +// s009: SPA Ende +// s010: SPA Ende +// s011: SPA Ende +// s012: SPA Ende +// s013: SPA Ende +// s014: SPA Ende +// s015: SPA Ende +// s016: SPA Ende +// s017: SPA Ende +s018: JU Ende +s019: JU Ende +// s020: SPA Ende +// s021: SPA Ende +s022: JU Ende +s023: JU Ende +s024: JU Ende +s025: JU Ende +s026: JU Ende +s027: JU Ende +s028: JU Ende +s029: JU Ende +s030: JU Ende + + +--- NW 24: Schritt X: Reserve --- + SET // Weiterschaltbedingung + = Weiter + +// Schrittaktionen: + SET + + L 16#B001 + T Dyn.Stop_Ursache + + A Weiter // Weiterschaltbedingung ist erfüllt + R Dyn.Sk.Err_Uebzeit // Sofort weiter ! + L 0 // Angabe der Wartezeit (*10ms) + JC Plus // Nächsten Schritt starten + + L 1 // Weiter mit Schritt 1 + JC Neu_Mig // Bei diesem Schritt weiter + + SET + A Dyn.Sk.Auto_akt // Automatik ist aktiv + A Dyn.Sk.Bereich_ok + = Ueb_akt // Überwachungszeit aktivieren + L 50 // Angabe der Überwachungszeit (*1s) + JU tueb // Überwachungszeit + + JU RET + + +--- NW 25: Schritt 0: Warten auf Trolley --- +s000: SET // Weiterschaltbedingung + A B_InSchleuse // Trolley im Schleuse erkannt + A Dyn.Sk.Auto_akt // Automatik ist aktiv + A Dyn.Sk.Bereich_ok + = Weiter + +// Trolley-Schleusendaten löschen: + L DINT#0 + T Dyn.TrolleyID_Schleuse + T Dyn.Trolley_ShopGroup + + L 0 + T Dyn.Trolley_EndZiel + T Dyn.Weichen_Ziel + +// HMI-Zeug: + L DINT#0 + T Dyn.HMI.TrolleyID_Input + + A Dyn.Sk.Reset_Akt // Reset ist aktiv + L 20 // Weiter mit Schritt 20 + JC Neu_Mig // Bei diesem Schritt weiter + +// Schrittaktionen: + SET + R Dyn.Error.Err_Leser_nicht_bereit + R Dyn.Error.Err_Kein_LeseErgebnis + R Dyn.Status.SF_angefordert + R Status2."TrolleyPos_übergeben" + R Status2.Telegramm_gesendet + + A Weiter // Weiterschaltbedingung ist erfüllt + R Dyn.Sk.Err_Uebzeit // Sofort weiter ! + L 50 // Angabe der Wartezeit (*10ms) + JC Plus // Nächsten Schritt starten + + L 16#B001 + T Dyn.Stop_Ursache + + A Dyn.Status."Trolley_fährt_in_Schleuse" + AN B_InSchleuse + S Antrieb_Schleuse_vor // Antrieb einschalten + JC S000A + + SET + R Dyn.Sk.Err_Uebzeit + + L 16#B000 + T Dyn.Stop_Ursache + + JU RET + +// Überwachungszeit starten: +S000A: A Dyn.Status."Trolley_fährt_in_Schleuse" + AN B_InSchleuse // Trolley im Schleuse erkannt + A( + O Antrieb_Schleuse_aktiv + ON Schleuse.Parameter_allg.Antrieb_vorhanden + ) + = Ueb_akt // Überwachungszeit aktivieren + + A Dyn.Sk.Err_Uebzeit + R Dyn.Sk.Err_Uebzeit + S Dyn.Error.Err_Trolley_nicht_in_Schleuse + R Dyn.Status."Trolley_fährt_in_Schleuse" + + L Schleuse."Übzeit_in_Schleuse" + + JU tueb // Überwachungszeit + + +--- NW 26: Schritt 1: Trolley ist in Schleuse / Leser ? / Daten vorhanden ? --- +s001: NOP 0 +// Schrittaktionen: + A B_InSchleuse + S Status2.Trolley_an_Schleuse + + AN Status2.Trolley_an_Schleuse // Trolley im Schleuse erkannt + A Schleuse.Parameter_allg.Leser_eingebaut + L 0 // Weiter mit Schritt 0 + JC Neu_Mig // Bei diesem Schritt weiter + +// Zwischen-Ziel von Bereich -1 vorhanden?: + L Dyn.ZwischenZiel_eingefahren + L 0 // Zwischenziel von Bereich -1 vorhanden! + ==I // Nein ! + O Schleuse.Parameter_allg.Leser_eingebaut // Dann werden Daten neu ermittelt! + JC X001 + +// Daten von Bereich -1 übergeben: + L Dyn.ZwischenZiel_eingefahren + T Dyn.Trolley_ZwischenZiel + L 0 + T Dyn.ZwischenZiel_eingefahren + + L Dyn.TrolleyID_Eingefahren + T Dyn.TrolleyID_Schleuse + L DINT#0 + T Dyn.TrolleyID_Eingefahren + + L 12 // Weiter mit Schritt 12 + JU Neu_Mig // Bei diesem Schritt weiter + +X001: L 0 + T Dyn.Trolley_ZwischenZiel + +// Leser vorhanden: + A Schleuse.Parameter_allg.Leser_eingebaut + R Dyn.Error.Err_Kein_LeseErgebnis + L 9 // Weiter mit Schritt 9 (Leser bereit) + JC Neu_Mig // Bei diesem Schritt weiter + +// Trolleydaten vorhanden ?: (Übergabe von Bereich -1) + L Dyn.TrolleyID_Eingefahren + T Dyn.TrolleyID_Schleuse + L DINT#0 // Daten vorhanden ? + <>D // Ja ! + L 11 // Weiter mit Schritt 11 (Trolleydaten lesen) + JC Neu_Mig // Bei diesem Schritt weiter + +// Ziel-FC vorhanden ?: + A ZielFC_vorhanden + L 12 // Weiter mit Schritt 12 (Ziel-FC) + JC Neu_Mig // Bei diesem Schritt weiter + + L 14 // Weiter mit Schritt 14 (Weichenbereich +1 vorhanden) + JU Neu_Mig // Bei diesem Schritt weiter + + +--- NW 27: Schritt 2: Ausfahren ok ? --- +s002: NOP 0 + +// Schrittaktionen: + AN Status2.Trolley_an_Schleuse // Trolley im Schleuse erkannt + L 0 // Weiter mit Schritt 0 + JC Neu_Mig // Bei diesem Schritt weiter + +// Anlage aus oder Störung: + L 16#B021 + T Dyn.Stop_Ursache + + AN Dyn.Sk.Auto_akt // Automatik ist aktiv + ON Dyn.Sk.Bereich_ok // Bereich ist gestört + JC RET + +// Starten erlaubt Trolley ?: + L 16#B022 + T Dyn.Stop_Ursache + + AN Start_Ok // Starten ist erlaubt + JC RET + +// Stau im Bereich +1: + L 16#B023 + T Dyn.Stop_Ursache + + SET + S Dyn.Status."Trolley_wartet_Bereich+1" + + A B_Stau_raus // Sensor Stau im Bereich rausfahren + JC RET + +// B_Aus_Schleuse aktiv: + L 16#B024 + T Dyn.Stop_Ursache + + A( + L Dyn.Raus_Trolleys + L 0 // Trolleys schon unterwegs? + <>I // Ja! + O( + L Schleuse.MaxRausTrolleys + L 1 // Nur einer darf ausfahren ? + ==I // Ja ! + ) + ) + A Status2."Trolley an Raus-Sensor" + O Status2."Stau_an_Raus-Sensor" + JC RET + +// Raus-Weiche bereit?: + L 16#B028 + T Dyn.Stop_Ursache + + A( + L Dyn.Weichen_Ziel + L Dyn."Zurück_gemeldetes_Weichen_Ziel" + <>I // Nicht identisch ! + ON Dyn.Status.Weiche_geschaltet // Rückmeldung von Weiche +1 + ) + AN "Kein_Weichenbereich +1" // Also Weiche +1 + L 15 + JC Neu_Mig // Bei diesem Schritt weiter + +// Zu viele Raus-Trolleys unterwegs: + L 16#B027 + T Dyn.Stop_Ursache + + L Dyn.Raus_Trolleys // Gestartete Trolleys + L Schleuse.MaxRausTrolleys // Erlaubte Anzahl gestarteter Trolleys + >=I + JC RET + +// Antriebe aktivieren / aktiv ?: + A Schleuse.Parameter_allg.Antrieb_Plus_vorhanden // Schleuse an weiterem Antrieb (Weiche) + S Antrieb_plus_vor // Antrieb plus einschalten + + A( + O Antrieb_plus_aktiv // Kreisel-Antrieb plus aktiv + ON Schleuse.Parameter_allg.Antrieb_Plus_vorhanden // Schleuse an weiterem Antrieb (Weiche) + ) + S Antrieb_Schleuse_vor // Antrieb einschalten + + L 16#B026 + T Dyn.Stop_Ursache + + AN Antrieb_plus_aktiv // Kreisel-Antrieb plus aktiv + A Schleuse.Parameter_allg.Antrieb_Plus_vorhanden // Schleuse an weiterem Antrieb (Weiche) + JC RET + + AN Antrieb_Schleuse_aktiv // Kreisel-Antrieb aktiv + A Schleuse.Parameter_allg.Antrieb_vorhanden // Schleuse an angetriebener Strecke + = Dyn.Status.Kein_Stop_mehr + JC RET + + L Dyn.Raus_Trolleys + + 1 // Gestartete Trolleys + 1 + T Dyn.Raus_Trolleys + + L 5 // Nur 1 langes Signal! + JC Neu_Mig // Bei diesem Schritt weiter + + +--- NW 28: Schritt 5: Trolley fährt aus ? --- +s005: SET // Weiterschaltbedingung + AN B_InSchleuse // Sensor Trolley ist in Schleuse + A( + O Antrieb_Schleuse_aktiv // Kreisel-Antrieb aktiv + ON Schleuse.Parameter_allg.Antrieb_vorhanden // Schleuse an angetriebener Strecke + ) + A( + O Antrieb_plus_aktiv + ON Schleuse.Parameter_allg.Antrieb_Plus_vorhanden + ) + = Weiter + +// Schrittaktionen: + SET + S Y_Schleuse_Auf // Schleuse öffnen + S Dyn.Status."Trolley_fährt_aus" + +// Antriebe: +// siehe Nw10 + +// B in Schleuse aktiv: + A B_InSchleuse // Sensor Trolley ist in Schleuse + JCN X050 // Negierter Sprung + + L 0 + T Dyn.Sk.Tok_Zelle + +// Trolley ist draussen mit 5s-Verzögerung: +X050: A Weiter // Weiterschaltbedingung ist erfüllt + R Dyn.Sk.Err_Uebzeit // Sofort weiter ! + R Dyn.Error.Err_Trolley_raus // Trolley fährt nicht aus + L 300 + JC Plus // Nächsten Schritt starten + +// Trolley fährt nicht raus!: + A Dyn.Sk.Err_Uebzeit + S Dyn.Error.Err_Trolley_raus // Trolley fährt nicht aus + + L 16#B051 + T Dyn.Stop_Ursache + + A Antrieb_Schleuse_aktiv + ON Schleuse.Parameter_allg.Antrieb_vorhanden // Schleuse an angetriebener Strecke + = Ueb_akt // Überwachungszeit aktivieren + L Schleuse."Übzeit_aus_Schleuse" // Angabe der Überwachungszeit (*1s) + JU tueb // Überwachungszeit + + +--- NW 29: Schritt 6: Schleuse Mindestzeit geöffnet ? --- +s006: SET // Weiterschaltbedingung + A Dyn.Status.MindestZeit_ok + AN B_InSchleuse // Sensor Trolley in Schleuse vorhanden + = Weiter + R Dyn.Sk.Err_Uebzeit // Sofort weiter ! + R Dyn.Error.Err_Trolley_raus // Trolley fährt nicht aus + +// Schrittaktionen: +// Gezählt wird in NW11 + + SET + S Y_Schleuse_Auf // Schleuse öffnen + S Dyn.Status."Trolley_fährt_aus" + +// Erneutes Signal von B in Schleuse ?: + A B_InSchleuse // Sensor Trolley in Schleuse vorhanden + JCN X060 // Negierter Sprung + + L 5 + T Dyn.Sk.Neu_Schritt // Schritt, der im nächsten Zyklus aktiv werden soll + + L 0 // Mindest-Zeit neu starten + T Dyn.Mindest_Zeit // Sensor B_im_Sep ist frei [1s] + SET + R Dyn.Status.MindestZeit_ok // Zeit bereits abgelaufen + + JU RET + +// Antriebe: +// siehe Nw10 +X060: A Weiter + L 0 + JC X006 // Nächsten Schritt starten + + L 16#B061 + T Dyn.Stop_Ursache + +// Trolley fährt nicht raus!: + A Dyn.Sk.Err_Uebzeit + S Dyn.Error.Err_Trolley_raus // Trolley fährt nicht aus + + A Antrieb_Schleuse_aktiv + ON Schleuse.Parameter_allg.Antrieb_vorhanden // Schleuse an angetriebener Strecke + = Ueb_akt // Überwachungszeit aktivieren + L Schleuse."Übzeit_aus_Schleuse" // Angabe der Überwachungszeit (*1s) + JU tueb // Überwachungszeit + +// Trolley hat Schleuse verlassen: +X006: SET + S Dyn.Status.Trolley_draussen // 1 Zyklus + R Dyn.Status."Trolley_fährt_in_Schleuse" + R Status2.Telegramm_gesendet + + L Dyn.Vereinzelungstakte + + DINT#1 // Vereinzelungen +1 + T Dyn.Vereinzelungstakte + +// Draussen-FC ?: + AN DraussenFC_vorhanden + JC NoFC // Bei diesem Schritt weiter + + L Schleusen_Nr // Schleusen-Nr. + T "MW190" + L Dyn.Trolley_ShopGroup // Shop-Gruppe + T "MD182" // übergeben + + L Dyn.Weichen_Ziel + T "MW198" // Weichenziel + + UC DB[DraussenFC] // z.Bsp. Daten anpassen + +NoFC: L 7 // Weiter mit Schritt 7 + JU Neu_Mig // Bei diesem Schritt weiter + + +--- NW 30: Schritt 7: Fertig --- +s007: SET // Weiterschaltbedingung + +// Schrittaktionen: + JU ENDE_Mig + + +--- NW 31: Schritt 9: Lese-Einheit bereit? --- +s009: SET // Weiterschaltbedingung + L Dyn.Leser.IN.nOutBarcode + L DINT#0 + ==D + A Dyn.Leser.IN.xOutReadyForNewScan + AN Dyn.Leser.IN.xOutReadingDone + AN Dyn.Leser.IN.xOutCodeGood + AN Dyn.Leser.IN.xOutCodeBad + = Weiter + R Dyn.Error.Err_Leser_nicht_bereit + +// Schrittaktionen: + AN Status2.Trolley_an_Schleuse // Trolley im Schleuse erkannt + A Schleuse.Parameter_allg.Leser_eingebaut + R Dyn.Error.Err_Leser_nicht_bereit + L 0 // Weiter mit Schritt 0 + JC Neu_Mig // Bei diesem Schritt weiter + + A Weiter + = Dyn.Leser.OUT.xInStartReading // Leser triggern + L 0 // Angabe der Wartezeit (*10ms) + JC Plus // Nächsten Schritt starten + +// Leser nicht bereit: + A Dyn.Leser.IN.xOutReadingDone // Falls altes Handshake noch gewollt + O Dyn.Leser.IN.xOutCodeGood + O Dyn.Leser.IN.xOutCodeBad + S Dyn.Leser.OUT.xInHandshakeDone + + A Dyn.Sk.Err_Uebzeit + R Dyn.Sk.Err_Uebzeit // Sofort weiter ! + S Dyn.Error.Err_Leser_nicht_bereit + S Dyn.Leser.OUT.xInErrQuit // Vielleicht hilft es + + A Dyn.Error.Err_Leser_nicht_bereit + A ErrQuit // Mit Quittierung dann zusätzlich reset! + S Dyn.Leser.OUT.xInReset + +// HMI-TrolleyID bei Leser nicht bereit: + L Dyn.HMI.TrolleyID_Input + L DINT#0 + <>D // Ja! + A Dyn.Error.Err_Leser_nicht_bereit + L 0 // Angabe der Wartezeit (*10ms) + JC Plus // Nächsten Schritt starten + + SET + = Ueb_akt // Überwachungszeit aktivieren + L 5 // Angabe der Überwachungszeit (*1s) + JU tueb // Überwachungszeit + + +--- NW 32: Schritt 10: Warten auf Leseeinheit --- +s010: SET // Weiterschaltbedingung + A Dyn.Leser.IN.xOutReadingDone + A Dyn.Leser.IN.xOutCodeGood + AN Dyn.Leser.IN.xOutCodeBad + = Weiter + R Dyn.Error.Err_Kein_LeseErgebnis + +// Schrittaktionen: + AN Status2.Trolley_an_Schleuse // Trolley im Schleuse erkannt + A Schleuse.Parameter_allg.Leser_eingebaut + L 0 // Weiter mit Schritt 0 + R Dyn.Error.Err_Kein_LeseErgebnis + JC Neu_Mig // Bei diesem Schritt weiter + + SET + R Dyn.Leser.OUT.xInStartReading // Leseeinheit triggern + + A Weiter + S Dyn.Leser.OUT.xInHandshakeDone + R Dyn.Sk.Err_Uebzeit // Sofort weiter ! + JC X010 + + SET + S Dyn.Status.Trolley_wartet_Lesung + + A Dyn.Error.Err_Leser_nicht_bereit // von Schritt 9 + JC LX + + A Dyn.Sk.Err_Uebzeit + O Dyn.Leser.IN.xOutCodeBad + S Dyn.Leser.OUT.xInHandshakeDone + JC L2 // Erst bei 3.Fehllesung Error! + + L 16#B101 + T Dyn.Stop_Ursache + + SET + = Ueb_akt // Überwachungszeit aktivieren + + L 10 // Angabe der Überwachungszeit (*1s) + JU tueb // Überwachungszeit + +L2: A Status2."2.Lesung_aktiv" // Erst bei 3.Fehllesung Error! + JC L3 + + SET + S Status2."2.Lesung_aktiv" + R Dyn.Sk.Err_Uebzeit // Sofort weiter ! + + L 9 + T Dyn.Sk.Neu_Schritt // Schritt, der im nächsten Zyklus aktiv werden soll + + JU RET + +L3: A Status2."3.Lesung_aktiv" // //Erst bei 3.Fehllesung Error! + JC LX + + SET + S Status2."3.Lesung_aktiv" + R Dyn.Sk.Err_Uebzeit // Sofort weiter ! + + L 9 + T Dyn.Sk.Neu_Schritt // Schritt, der im nächsten Zyklus aktiv werden soll + + JU RET + +// Nach 3.Fehl-Lesung erst Leserfehler! +LX: SET + R Dyn.Sk.Err_Uebzeit // Sofort weiter ! + S Dyn.Error.Err_Kein_LeseErgebnis + JU NoLesung + +// Leserdaten übergeben: +X010: L Dyn.Leser.IN.nOutBarcode + T Dyn.TrolleyID_Schleuse + + L DINT#0 // Unbekannt ? + ==D // Ja ! + O( + CAC + L DINT#-1 // Fehl-Lesung? + ==D // Ja ! + ) + S Dyn.Error.Err_Kein_LeseErgebnis + L 9 // Weiter mit Schritt 9 (Leser bereit) + JC Neu_Mig // Bei diesem Schritt weiter + + L 11 // Weiter mit Schritt 11 + JU Neu_Mig // Bei diesem Schritt weiter + +// Lesefehler: +NoLesung: NOP 0 +// HMI-Eingabe?: +// HMI-TrolleyID: + L Dyn.HMI.TrolleyID_Input + T Dyn.TrolleyID_Schleuse + <>D // Ja! + L 0 // Angabe der Wartezeit (*10ms) + R Dyn.Error.Err_Kein_LeseErgebnis + R Dyn.Error.Err_Leser_nicht_bereit // von Schritt 9 + JC Plus // Nächsten Schritt starten + +// Leser-FC aufrufen: +No_HMIa: AN LeserFC_vorhanden + JC NoLFC + + L Schleusen_Nr // Schleusen-Nr. + T "MW190" // übergeben + L Dyn.Trolley_ZwischenZiel // Übergabe von Leser-Aufruf + T "MW196" + + A Dyn.Error.Err_Kein_LeseErgebnis + = "M180.0" + SET + R "M180.1" + + UC DB[LeserFC] // Beeinflussung der Fehllesung + + L 16#B102 + T Dyn.Stop_Ursache + + L "MW196" // Zwischenziel übergeben + T Dyn.Trolley_ZwischenZiel // Übergabe von Leser-Aufruf + L 0 // Übergeben ? + <>I // Ja! + L 12 // Weiter mit Schritt 12 + R Dyn.Error.Err_Kein_LeseErgebnis + JC Neu_Mig // Bei diesem Schritt weiter + +NoLFC: L 9 + T Dyn.Sk.Neu_Schritt // Schritt, der im nächsten Zyklus aktiv werden soll + + JU RET + + +--- NW 33: Schritt 11: Trolleydaten aus DL lesen --- +s011: L DINT#0 + T Dyn.TrolleyID_Eingefahren // Eintrag von Weiche -1 + + L Dyn.Trolley_ZwischenZiel // / + + L Dyn.TrolleyID_Schleuse + T "MD220" + +CALL FC "DatenOut" (SSDB:=Schleuse.Gesamt_Trolley_DL, SSDW:=0, PARA:=16#0000, SEARCHDATEN:=P#M220.0, RE_VAL:="MB199", OUTDATEN:=DB1011.DBX0.0, Position:="MW196") // Eintrag lesen + + L 16#B111 + T Dyn.Stop_Ursache + + AN "M199.7" + = Dyn.Error.Barcode_nicht_bekannt + JC UnbekanntBC + +// Relevanten Trolleydaten auslesen: + L "TrolleyDL_OutDaten".OUTDaten.EndZiel + T Dyn.Trolley_EndZiel + +// ZwischenZiel nicht überschreiben: + L Dyn.Trolley_ZwischenZiel + L 0 // Schon bekannt ? + <>I // Ja ! + JC NixZZ + + L "TrolleyDL_OutDaten".OUTDaten.ZwischenZiel + T Dyn.Trolley_ZwischenZiel + +NixZZ: L "TrolleyDL_OutDaten".OUTDaten.ShopGroup + T Dyn.Trolley_ShopGroup + + L 0 // Angabe der Wartezeit (*10ms) + JU Plus // Nächsten Schritt starten + +// Unbekannter Trolley: +UnbekanntBC: NOP 0 +// HMI-Eingabe?: + +// Leser-FC aufrufen: +Nix_HMI: AN LeserFC_vorhanden + JC Nix_LFC + + L Schleusen_Nr // Schleusen-Nr. + T "MW190" // übergeben + L Dyn.TrolleyID_Schleuse + T "MD192" + L Dyn.Trolley_ZwischenZiel + T "MW196" + + A Dyn.Error.Barcode_nicht_bekannt + = "M180.1" + SET + R "M180.0" + + UC DB[LeserFC] // Beeinflussung der Weiterfahrt bei nicht bekanntem Trolley + + L "MW196" // ZwischenZiel übergeben + T Dyn.Trolley_ZwischenZiel // Übergabe von Leser-Aufruf + L 0 // Übergeben ? + <>I // Ja! + L 12 // Weiter mit Schritt 12 + R Dyn.Error.Err_Kein_LeseErgebnis + JC Neu_Mig // Bei diesem Schritt weiter + +Nix_LFC: JU RET + + +--- NW 34: Schritt 12: Ziel-FC --- +s012: NOP 0 + +// Schrittaktionen: + AN Status2.Trolley_an_Schleuse // Trolley im Schleuse erkannt + A Schleuse.Parameter_allg.Leser_eingebaut + AN "Schleuse_geöffnet" + L 0 // Weiter mit Schritt 0 + JC Neu_Mig // Bei diesem Schritt weiter + + SET + S Dyn.Status."Trolley_wartet_auf_Ziel-FC" + + AN ZielFC_vorhanden + R Dyn.Status."Trolley_wartet_auf_Ziel-FC" + L 13 // Weiter mit Schritt 13 + JC Neu_Mig // Bei diesem Schritt weiter + + SET // Rückmeldungen erst mal resetten + R "M180.6" // Weiterfahrt von Ziel-FC erlaubt + L Schleusen_Nr // Schleusen-Nr. + T "MW190" // übergeben + L Dyn.Trolley_ShopGroup // Shop-Gruppe + T "MD182" // übergeben + L Dyn.Trolley_EndZiel // End-Ziel + T "MW194" // übergeben + L Dyn.Trolley_ZwischenZiel + T "MW196" // übergeben + L 0 // Erst mal nullen + T "MW198" // Weichenziel + + UC DB[ZielFC] // Beeinflussung der Weiterfahrt + + L 16#B122 + T Dyn.Stop_Ursache + +// Spezial-Fall bei Übergabe an Sorter / Turm (M180.6 wird nie im Ziel-FC gesetzt!) +// aber anderer Partner hat Schleuse extern geöffnet: + A "Schleuse_geöffnet" + AN "M180.6" // Weiterfahrt von Ziel-FC erlaubt + AN Status2."TrolleyPos_übergeben" // Nur einmalig + S Status2."TrolleyPos_übergeben" + JCN Normal // Negierter Sprung + + L Dyn.Vereinzelungstakte + + DINT#1 // Vereinzelungen +1 + T Dyn.Vereinzelungstakte + +CALL FC "Trolley_DL_Neue_Pos" (Gesamt_Trolley_DL:=Schleuse.Gesamt_Trolley_DL, TrolleyID:=Dyn.TrolleyID_Schleuse, Position:=Schleuse.Leser_ID, ShopGroup:=Dint#0, Err:="M199.0") + +// Draussen-FC ?: + AN DraussenFC_vorhanden + JC RET // Bei diesem Schritt weiter + + L Schleusen_Nr // Schleusen-Nr. + T "MW190" + + UC DB[DraussenFC] // z.Bsp. Daten anpassen + + JU RET + +Normal: A "M180.6" // Weiterfahrt von Ziel-FC erlaubt + JC X012 + + AN Schleuse.Parameter_allg.Leser_eingebaut + JC RET + + L 11 + T Dyn.Sk.Neu_Schritt // Schritt, der im nächsten Zyklus aktiv werden soll + + JU RET + +X012: L "MW196" // zurückschreiben, falls verändert + T Dyn.Trolley_ZwischenZiel + + L "MW198" // Weichenziel übergeben + T Dyn.Weichen_Ziel + + L 13 // Weiter mit Schritt 13 + JU Neu_Mig // Bei diesem Schritt weiter + + +--- NW 35: Schritt 13: Schleusen-Position zurückschreiben --- +s013: NOP 0 + +// Schrittaktionen: + SET + S Status2."Weichen-Schritt" + +// Neue Position an Gesamt-Trolley-DL übergeben: +CALL FC "Trolley_DL_Neue_Pos" (Gesamt_Trolley_DL:=Schleuse.Gesamt_Trolley_DL, TrolleyID:=Dyn.TrolleyID_Schleuse, Position:=Schleuse.Leser_ID, ShopGroup:=DInt#0, Err:="M199.0") // für nichts verändern + + L 0 // Angabe der Wartezeit (*10ms) + JU Plus // Nächsten Schritt starten + + +--- NW 36: Schritt 14: Weichenbereich +1 vorhanden --- +s014: NOP 0 + +// Schrittaktionen: +// Weichenbereich +1 vorhanden?: + A "Kein_Weichenbereich +1" + L 2 // Weiter mit Schritt 2 (Ausfahren ok?) + JC Neu_Mig // Bei diesem Schritt weiter + + SET + S Status2."Weichen-Schritt" + + L 0 // Angabe der Wartezeit (*10ms) + JU Plus // Nächsten Schritt starten + + +--- NW 37: Schritt 15: Weichenbereich raus bereit ? --- +s015: NOP 0 + +// Schrittaktionen: + AN Status2.Trolley_an_Schleuse // Trolley im Schleuse erkannt + L 0 // Weiter mit Schritt 0 + JC Neu_Mig // Bei diesem Schritt weiter + + SET + S Status2."Weichen-Schritt" + + L Dyn.Weichen_Ziel + L 0 // Bekannt ? + <>I // Ja ! + JC X15A + + L 12 // Ziel-FC ? + T Dyn.Sk.Neu_Schritt // Schritt, der im nächsten Zyklus aktiv werden soll + + L 16#B154 + T Dyn.Stop_Ursache + + JU RET + +X15A: SET + S Dyn.Status."Trolley_wartet_auf_Weiche+1" + + L 16#B155 + T Dyn.Stop_Ursache + + L SAVE.Weichen_DB // Weichen-DB + L 0 // Einsprung-Zeiger bekannt ? + >I // Ja ! + JC S015A + + L 16#B150 + T Dyn.Stop_Ursache + + JU RET + +// Weichendaten auslesen: +S015A: L SAVE.Weichen_DW + ITD + T AR1Start // Startwert mit Offset 0 + + L AR1Start // Startwert mit Offset 0 + + DINT#70 + SLD 3 + L 0 // Damit DBX70.0 + OD + T AR1Zeiger // Statt Dyn.Bereichsstop (ging nur bis DB-Länge <= 8191 Bytes) + + L 16#B152 + T Dyn.Stop_Ursache + + OPN DB[SAVE.Weichen_DB] // FABE+ -DB öffnen + + AN DBX [AR1Zeiger] // Weichenbereich frei ? (DBX70.0) + JC S015B + + L 16 // Weiter mit Schritt 16 (Daten an Weiche übergeben) + JU Neu_Mig // Bei diesem Schritt weiter + +// Reservierung noch diese Schleuse ?: +S015B: L AR1Start // Startwert mit Offset 0 + + DINT#78 + SLD 3 + T AR1Zeiger // Statt Dyn.Bereichsstop (ging nur bis DB-Länge <= 8191 Bytes) + + OPN DB[SAVE.Weichen_DB] // FABE+ -DB öffnen + + L DBW [AR1Zeiger] // Schleuse -1 (DBW 78) + L Schleusen_Nr // Diese Schleuse ? + <>I // Nein ! + JC RET // Warten ! + +// Dasselbe Weichen-Ziel ?: + L Dyn.Weichen_Ziel // Gewolltes Ziel + L Dyn."Zurück_gemeldetes_Weichen_Ziel" // Aktuell im Weichenbereich aktives Ziel + <>I // Sind nicht identisch ! + JC RET // Warten ! + + L 16 // Weiter mit Schritt 16 (Daten an Weiche übergeben) + JU Neu_Mig // Bei diesem Schritt weiter + + +--- NW 38: Schritt 16: Daten an Rausweiche übergeben --- +s016: NOP 0 + +// Schrittaktionen: + SET + S Status2."Weichen-Schritt" + +// Daten für Eintrag vorbereiten: + OPN DB[SAVE.Weichen_DB] // FABE+ -DB öffnen + + L AR1Start // Startwert mit Offset 0 + + DINT#72 + SLD 3 + T AR1Zeiger // Statt Dyn.Bereichsstop (ging nur bis DB-Länge <= 8191 Bytes) + + L Dyn.TrolleyID_Schleuse + T DBD [AR1Zeiger] // Trolley-ID (DBD 72) + + L AR1Start // Startwert mit Offset 0 + + DINT#76 + SLD 3 + T AR1Zeiger // Statt Dyn.Bereichsstop (ging nur bis DB-Länge <= 8191 Bytes) + + L Dyn.Weichen_Ziel + T DBW [AR1Zeiger] // Weichenziel (DBW 76) + + L AR1Start // Startwert mit Offset 0 + + DINT#80 + SLD 3 + T AR1Zeiger // Statt Dyn.Bereichsstop (ging nur bis DB-Länge <= 8191 Bytes) + + L Dyn.Trolley_ZwischenZiel + T DBW [AR1Zeiger] // Zwischenziel (DBW 80) + + L AR1Start // Startwert mit Offset 0 + + DINT#78 + SLD 3 + T AR1Zeiger // Statt Dyn.Bereichsstop (ging nur bis DB-Länge <= 8191 Bytes) + + L Schleusen_Nr + T DBW [AR1Zeiger] // Schleuse -1 (DBW 78) + + SET + S "Reservierung_Weiche+1_aktiv" // Weiche nicht mehr angemeldet (da erst im nächsten Zyklus) + + L Schleuse.RausWeichen_Nr // Nr. der vorhandenen Weiche + T SAVE."Weiche+1" // Hier wurde reserviert + + L 17 // Weiter mit Schritt 17 (Hat Weiche geschaltet ?) + JU Neu_Mig // Bei diesem Schritt weiter + + +--- NW 39: Schritt 17: Hat Rausweiche geschaltet ? --- +s017: NOP 0 + +// Schrittaktionen: + SET + S Status2."Weichen-Schritt" + +// Weiche +1 noch mit dieser Schleuse aktiv ?: + AN "Reservierung_Weiche+1_aktiv" // Weiche nicht mehr angemeldet + L 14 // Weiter mit Schritt 14 + JC Neu_Mig // Bei diesem Schritt weiter + + SET + S Dyn.Status."Trolley_wartet_auf_Weiche+1" + + L 16#B170 + T Dyn.Stop_Ursache + + L Dyn.Weichen_Ziel // Gewolltes Ziel + L Dyn."Zurück_gemeldetes_Weichen_Ziel" // Aktuell im Weichenbereich aktives Ziel + ==I // Sind identisch ! + A Dyn.Status.Weiche_geschaltet // Rückmeldung von Weiche +1 + L 2 // Weiter mit Schritt 2 (Ausfahren ok?) + JC Neu_Mig // Bei diesem Schritt weiter + + L 16#B171 + T Dyn.Stop_Ursache + + JU RET + + +--- NW 40: Schritt 20: Schleuse resetten (Wartezeit) --- +s020: A B_InSchleuse // Weiterschaltbedingung + = Weiter // Weiterschaltbedingung ist erfüllt + +// Schrittaktionen: + SET // ELS in Grundstellung fahren + S Antrieb_Schleuse_vor // Antrieb einschalten + S Antrieb_Schleuse_start // Antrieb starten + + A Weiter + O Dyn.Sk.Err_Uebzeit + R Dyn.Sk.Err_Uebzeit // Sofort weiter ! + L 21 // Weiter mit Schritt 21 + JC Neu_Mig // Bei diesem Schritt weiter + + L 16#B201 + T Dyn.Stop_Ursache + + SET + = Ueb_akt // Überwachungszeit aktivieren + L Schleuse.Wartezeit_bis_leer // Angabe der Überwachungszeit (*1s) + JU tueb // Überwachungszeit + + +--- NW 41: Schritt 21: Reset ist zu Ende --- +s021: SET + R Dyn.Sk.Reset_Akt // Reset ist aktiv + R Status2."TrolleyPos_übergeben" + R Dyn.Error.Err_Trolley_nicht_in_Schleuse // Trolley fährt nicht in Schleuse + R Dyn.Error.Err_Uebzeit // Überwachungzeit ist abgelaufen + R Dyn.Error.Err_Stau_Einfahrt // Betriebsart ist nicht möglich + R Dyn.Error.Err_Trolley_raus // Trolley fährt nicht aus + R Dyn.Status."Trolley_fährt_in_Schleuse" + + L 0 + T SAVE.Weichen_DB + T SAVE.Weichen_DW + T SAVE."Weiche+1" // Dadurch wird in Weiche Reservierung gelöscht + T Dyn.Raus_Trolleys + T Dyn.Stau_Zeit // Sensor B_VorSep ist belegt [1s] + T Dyn.Mindest_Zeit // Sensor B_VorSep ist frei [1s] + + SET + S Dyn.Status.Trolley_draussen + + JU ENDE_Mig // Neubeginn + + +--- NW 42: Schrittkette beenden --- +ENDE_Mig: L 0 // Schritt 0: Warten + T Dyn.Sk.Akt_Schritt + + L 0 // Zeitwert löschen + T Dyn.Sk.Terr_Zelle + T Dyn.Sk.Tok_Zelle + T Dyn.ZwischenZiel_eingefahren + + L DINT#0 + T Dyn.TrolleyID_Eingefahren // Eintrag von Weiche -1 + T Dyn.TrolleyID_Schleuse // Daten übergeben + T Dyn.Trolley_ZwischenZiel + T Dyn.Trolley_EndZiel + T Dyn.Weichen_Ziel + + SET + R Dyn.Sk.Err_Uebzeit + R Dyn.Status."Trolley_fährt_rückwärts" + R Dyn.Error.Err_Kein_LeseErgebnis + R Status2."2.Lesung_aktiv" + R Status2."3.Lesung_aktiv" + R Status2."TrolleyPos_übergeben" + R Status2.Telegramm_gesendet + +// HMI-Zeug: + L DINT#0 + T Dyn.HMI.TrolleyID_Input + + JU RET + + +--- NW 43: Nächsten Schritt aktivieren --- +Plus: T Dyn.Sk.T_ok // Wartezeit übergeben + + A Dyn.Sk.Err_Uebzeit // Störung noch nicht quittiert + JC RET + + L 0 // keine Wartezeit ? + ==I // Ja ! -> sofort weiter + JC w220 + + AN Warte_neu // Wartezeit neutriggern + JC W220_Mig + + L 0 + T Dyn.Sk.Tok_Zelle // Wartezeit + +W220_Mig: A Warte_stop // Wartezeit stoppen + JC RET + + L Dyn.Sk.Tok_Zelle + L "MW4" // Wartezeit +10ms + +I + T Dyn.Sk.Tok_Zelle // Wartezeit + L Dyn.Sk.T_ok // abgelaufen ? + I // abgelaufen ? + AN Dyn.Sk.Err_Uebzeit + JC en24 // Nein ! + + A Ueb_akt // Überwachungszeit aktivieren + S Dyn.Sk.Err_Uebzeit + + L 0 // Zeitwert löschen + T Dyn.Sk.Terr_Zelle + + JU RET + +en24: NOP 0 + +--- NW 45: Überwachungszeit +1 --- + AN Dyn.Sk.Ueb_akt // Schrittaktion ist aktiv + ON "1s-Impuls" + JC RET + + L Dyn.Sk.Terr_Zelle + + 1 // Üb.zeit +1s + T Dyn.Sk.Terr_Zelle + + JU RET + + +--- NW 46: Return --- +RET: NOP 0 +// Weichen -R ückmeldung löschen: + SET + R Dyn.Status.Weiche_geschaltet + R Dyn.Status."Trolley ausserhalb Weiche" + + L 0 + T Dyn."Zurück_gemeldetes_Weichen_Ziel" + + +--- NW 47: Leser-Einheit managen (Outputs schreiben) --- + AN Leser_Zugriff + ON Schleuse.Parameter_allg.Leser_eingebaut + JC NixLeser + +// Leserdaten schreiben: + OPN DB[Dyn.SAVE2.Leser_DB] // Leser -DB öffnen + + L Dyn.SAVE2.Leser_DD + T AR1Start // Startwert mit Offset 0 + +// Offset 4: + L AR1Start // Startwert mit Offset 0 + + DINT#4 + SLD 3 + T AR1Zeiger // Statt Dyn.Bereichsstop (ging nur bis DB-Länge <= 8191 Bytes) + + L DBB [AR1Zeiger] // Aktuelle Werte holen + T "MB200" + + A Dyn.Leser.OUT.xInStartReading + = "M200.1" + A Dyn.Leser.OUT.xInHandshakeDone + R Dyn.Leser.OUT.xInHandshakeDone + = "M200.2" + A Dyn.Leser.OUT.xInErrQuit + R Dyn.Leser.OUT.xInErrQuit + = "M200.4" + A Dyn.Leser.OUT.xInReset + R Dyn.Leser.OUT.xInReset + = "M200.5" + + L "MB200" + T DBB [AR1Zeiger] // Veränderte Werte zurück schreiben + +NixLeser: NOP 0 + + +--- NW 48: Ende --- + BE + diff --git a/=A01+UH06-KF00/Programmbausteine/Module/MHMOmniSchleuse_Plus_Neu.awl b/=A01+UH06-KF00/Programmbausteine/Module/MHMOmniSchleuse_Plus_Neu.awl new file mode 100644 index 0000000..3e9c2ff --- /dev/null +++ b/=A01+UH06-KF00/Programmbausteine/Module/MHMOmniSchleuse_Plus_Neu.awl @@ -0,0 +1,2347 @@ +=== FB 1276: MHMOmniSchleuse_Plus_Neu [STL] === +INTERFACE: + Input: + Schleusen_Nr : Int // Aufruf für Schleuse + ErrQuit : Bool // Ablaufstörung quittieren + B_VorSchleuse : Bool // Sensor Trolley fährt in Bereich + B_InSchleuse : Bool // Sensor Trolley ist in Schleuse + B_Zähl : Bool // Sensor Trolley ist imnächsten Bereich + B_Stau_raus : Bool // Sensor Stau im Bereich rausfahren + Start_Ok : Bool // Starten ist erlauTrolley + Antrieb_Schleuse_aktiv : Bool // Kreisel-Antrieb aktiv + Antrieb_plus_aktiv : Bool // Kreisel-Antrieb plus aktiv + Schleuse_geöffnet : Bool // Schleuse hat geöffnet + RestZeit_Bereich_plus : Int := 999 // Bereich +1: Restzeit bis AFS stoppt (s) + Output: + Y_Schleuse_Auf : Bool // Schleuse öffnen + Error : Word // Störungen übergeben + InOut: + Antrieb_Schleuse_vor : Bool // Schleusen-Antrieb einschalten + Antrieb_Schleuse_start : Bool // Schleusen-Antrieb mit Zeit starten + Antrieb_Schleuse_stop : Bool // Schleusen-Antrieb stoppen + Antrieb_Schleuse_PS : Bool // Schleusen-Antrieb Energie sparen + Antrieb_plus_vor : Bool // Antrieb plus einschalten + Antrieb_plus_start : Bool // Antrieb plus mit Zeit starten + hStOk : Bool // Anzeige Start n. Störung aktivieren + Static: + SAVE : Struct + Weichen_DB : Int // Weichen-FIFO-DB + Weichen_DW : Int // Weichen-FIFO-DW + Weiche+1 : Int // Weiche +1, wo reserviert wurde + Frei18 : Int + Frei20 : Int + Para : Struct // Parameter + Schleusen_DL_DB : Int // Einsprung Schleuse-Datenliste-DB + Weichen_DL_DB : Int // Einsprung Weichen-Datenliste-DB + Leser_DL_DB : Int // Einsprung Weichen-Datenliste-DB + Status2 : Struct + Trolley_an_Schleuse : Bool // Trolley ist an Schleuse + 2.Lesung_aktiv : Bool // 2.Lesung erfolgt + 3.Lesung_aktiv : Bool // 3.Lesung erfolgt + TrolleyPos_übergeben : Bool // Trolley-Pos. übergeben + Warten_4.V : Bool // Warten auf 4.V + Weichen-Schritt : Bool // Schritt 13-17 aktiv (Weiche evtl. belegen) + Trolley an Raus-Sensor : Bool // Trolley ist am Raus-Sensor + Stau_an_Raus-Sensor : Bool // Stau an Raus-Sensor (kein Zählen mehr) + Einfahrzeit_lernen : Bool // Ausfahrzeit lernen + Telegramm_gesendet : Bool // Telegramm wurde in Send-FIFO eingetragen + Schleuse : "UDLHMOmniSchleuse_Plus" // Statische Schleusendaten (aus DL) + Dyn : Struct // Dynamische Daten + Status : Struct + Trolley_fährt_in_Schleuse : Bool // Trolley fährt in Schleuse + Trolley_wartet_Lesung : Bool // Trolley wartet auf Auftrag + Trolley_wartet_auf_Ziel-FC : Bool + Trolley_wartet_auf_Weiche+1 : Bool + Trolley_wartet_Bereich+1 : Bool // Trolley wartet auf Bereich +1 + Trolley_fährt_aus : Bool // Trolley fährt aus + MindestZeit_ok : Bool // Schleuse ist MindestZeit geöffnet + Trolley_draussen : Bool // Trolley ist ausgefahren + Leser_triggern : Bool + SF_angefordert : Bool + Kein_Stop_mehr : Bool // Kein Stop mehr, Antrieb soll starten + Trolley_fährt_rückwärts : Bool // Trolley in Schleuse rückwärts erkannt + Weiche_geschaltet : Bool + Trolley ausserhalb Weiche : Bool // Trolley hat Weiche verlassen (von Weiche) + Error_aktiv : Bool // Störung vorhanden + Reset_aktiv : Bool := TRUE // Reset aktiv + TrolleyID_Schleuse : DInt // Trolley-Nr in der Schleuse + Trolley_EndZiel : Word // Trolley-EndZiel + Trolley_ZwischenZiel : Word // Trolley-ZwischenZiel + Trolley_ShopGroup : DInt // Trolley-ShopGroup + Weichen_Ziel : Word // Weichen-Ziel (Für WeichenModul von Ziel-FC) + TrolleyID_Eingefahren : DInt // Trolley-Nr von Bereich -1 gemeldet + TrolleyID_ausgefahren : DInt // TrolleyID des ausgefahrenen Trolleys + HMI : Struct + TrolleyID_in_Schleuse : DInt // Trolley-Nr in Schleuse (IN:PLC, OUT:PLC) + TrolleyID_Input : DInt // Trolley-Nr Input (IN:HMI, OUT:PLC) + Schleuse_resetten : Bool // Schleuse resetten (IN:HMI, Out:PLC) + Sk : "USk_ILS" // Status der Schrittkette + Leser : Struct + IN : Struct + xOutReadyForNewScan : Bool // DBX10.1: Reader ist bereit für Leseanforderung + xOutReadingDone : Bool // DBX10.0: Lesevorgang abgeschlossen / Handshake raus + xOutCodeGood : Bool // DBX278.0: Gute Lesung + xOutCodeBad : Bool // DBX278.1: Schlechte Lesung + nOutBarcode : DInt // DBD12: Trolley ID + OUT : Struct + xInStartReading : Bool // DBX4.1: Starte Lesevorgang + xInHandshakeDone : Bool // DBX4.2: Handshake Daten abgeholt + xInErrQuit : Bool // DBX4.4: Fehler rücksetzen + xInReset : Bool // DBX4.5: Allgemeines Rücksetzen des Bausteins + TrolleyID_unbekannt_Schleuse : DInt // TrolleyID unbekannt (Trolley in Schleuse) + Rueckmld : Struct + RET_VAL_BLKMOV_Schleuse : Int // Rückmeldung nach BLKMOV-Aufruf + RET_VAL_DL_Schleuse : Byte + RET_VAL_DL_Weiche : Byte // Rückmeldung nach DatenOut-Aufruf + RET_VAL_DL_Leser : Byte // Rückmeldung nach DatenOut-Aufruf + Error : "UErrHMOmniSchleuse" + Stau_Zeit : Int // Sensor B_VorSep ist belegt [1s] + Mindest_Zeit : Int // Sensor B_VorSep ist frei [1s] + Leer_Zeit : Int + Stop_Ursache : Word // Stop-Stelle: Nw + Position + Vereinzelungstakte : DInt // Anzahl der getätigten Vereinzelungstakte + ZwischenZiel_eingefahren : Word // Trolley-ZwischenZiel von Bereich -1 + Zeit_Ohne_B_In_Schleuse : Int // Trolley nicht an B_In_Schleuse + Zeit_Ohne_B_Zähl : Int // Trolley nicht an B_Zähl + Zeit_Ausfahren_Ohne_B_Zähl : Int // Trolley fährt nicht zu B_Zähl + Raus_Trolleys : Int // Anzahl der Trolleys zwischen Schleuse und Raus-Sensor + Stau_Zeit_RausSensor : Int // Sensor B_AusSep ist belegt [1s] + Zurück_gemeldetes_Weichen_Ziel : Word // Von Weiche zurück gemeldetes Weichen-Ziel + SAVE2 : Struct + Leser_DB : Int // Weichen-FIFO-DB + Leser_DD : DInt // Weichen-FIFO-DD + WarteZeit_PS : Int + Restzeit_bis_Schleuse : Int + Res200 : Array[1..11] of Int // Reserve + Temp: + Quelle : Any // Zeiger, wo Rein-Daten sind + Ueb_akt : Bool // Überwachungszeit aktivieren + Weiter : Bool // Weiterschaltbedingung ist erfüllt + Warte_neu : Bool // Wartezeit neu triggern + Warte_stop : Bool // Wartezeit stoppen + Kein_Weichenbereich +1 : Bool + Reservierung_Weiche+1_aktiv : Bool + Leser_Zugriff : Bool // Leser-Zugriff vorhanden + LeserFC_vorhanden : Bool + ZielFC_vorhanden : Bool + DraussenFC_vorhanden : Bool + TrolleyID_Bereich-1 : Bool // Trolley--ID von Bereich -1 gemeldet + Trolley_draussen : Bool // Signal: Trolley ist draussen + Antriebe_starten : Bool + Einfahrzeit_nicht_bekannt : Bool + LeserFC : Word // Ziel-FC + ZielFC : Word // Ziel-FC + DraussenFC : Word // Draussen-FC + AR1Start : DInt // Startwert mit Offset 0 + AR1Zeiger : DWord // Statt AR1 (ging nur bis DB-Länge <= 8191 Bytes) + Constant: + +--- NW 1: Parameter-Übergabe --- + L Schleusen_Nr + + L 274 // Einsprung Schleuse-DL + T Para.Schleusen_DL_DB // vor Aufruf übergeben! + + L 279 // Einsprung Weichen-DL + T Para.Weichen_DL_DB // vor Aufruf übergeben! + + L 273 + T Para.Leser_DL_DB + + +--- NW 2: Anzeige OP --- + A ErrQuit // Überwachungszeit abgelaufen quittieren + R Dyn.Sk.Err_Uebzeit + + L 252 // Bereichsstop aktiv + AN Dyn.Sk.Bereich_ok // Also: Bereichsstop / Not-Aus + JC w010 + + L 253 + AN Dyn.Sk.Auto_akt // Keine Betriebsart + AN Dyn.Sk.Hand_akt + JC w010 + + L 255 // Handbetrieb aktiv + A Dyn.Sk.Hand_akt + JC w010 + + L Dyn.Sk.Akt_Schritt // Aktiver Schritt +w010: T Dyn.Sk.OP_Schritt + + +--- NW 3: Out-Bits zum Zurücksetzen --- + SET + R Y_Schleuse_Auf + + SET // Jeden Zyklus neu + R Dyn.Status.Trolley_wartet_Lesung + R Dyn.Status."Trolley_wartet_auf_Ziel-FC" + R Dyn.Status."Trolley_wartet_auf_Weiche+1" + R Dyn.Status."Trolley_wartet_Bereich+1" + R Dyn.Status."Trolley_fährt_aus" + R Dyn.Status.Trolley_draussen + R Leser_Zugriff + R Status2."Weichen-Schritt" + + A Dyn.Sk.Reset_Akt + = Dyn.Status.Reset_aktiv + + +--- NW 4: HMI-Zeug --- +// Von HMI: + A Dyn.HMI.Schleuse_resetten + R Dyn.HMI.Schleuse_resetten // von HMI + S Dyn.Sk.Reset // SK zurücksetzen + + L Dyn.HMI.TrolleyID_Input // Wird direkt im Programm verwertet (s.u.) + +// An HMI: +ToHMI: L Dyn.TrolleyID_Schleuse + T Dyn.HMI.TrolleyID_in_Schleuse + + +--- NW 5: Schrittkette zurücksetzen --- + A ErrQuit // Überwachungszeit abgelaufen quittieren + R Dyn.Sk.Err_Uebzeit + + AN Dyn.Sk.Reset // SK zurücksetzen + JC en04 + +// Schrittkette zurücksetzen: + L 0 // Schritt 0: Warten + T Dyn.Sk.Akt_Schritt + T Dyn.Raus_Trolleys + + L 0 // Zeitwert löschen + T Dyn.Sk.Terr_Zelle + T Dyn.Sk.Tok_Zelle + + SET + R Dyn.Error.Err_BLKMov // Error bei Block kopieren + R Dyn.Sk.Reset // SK zurücksetzen + R Dyn.Sk.Err_Schritt // Undefinierter Schritt + R Dyn.Sk.Err_Uebzeit // Sofort weiter ! + R Status2.Telegramm_gesendet + S Dyn.Sk.Reset_Akt // Reset ist aktiv + + SET + R Dyn.Error.Schleuse_DL // Schleuse-Datenliste fehlerhaft + R Dyn.Error.Undef_Schleuse // undefinierter Schleuse + R Dyn.Error.Err_Trolley_nicht_in_Schleuse // Trolley fährt nicht in Schleuse + R Dyn.Error.Err_Uebzeit // Überwachungzeit ist abgelaufen + R Dyn.Error.Err_Schritt // Schritt-Nummer ist nicht definiert + R Dyn.Error.Err_Stau_Einfahrt + R Dyn.Error.Err_BLKMov + R Dyn.Error.Err_Trolley_raus // Trolley fährt nicht aus + R Dyn.Error.Err_Raus_Sensor // Raus-/Belade-Sensor wird nicht erreicht (oder dauernd aktiv)! + R Dyn.Error.Err_Ziel // kein Ziel angegeben + R Dyn.Error.Err_Weichen_DL // Weichen-Datenliste fehlerhaft + R Dyn.Error.Err_Undef_Weiche // undefinierte Weiche + R Dyn.Error.Err_Weiche_belegt // Weiche bleibt belegt + R Dyn.Error.Err_Kein_LeseErgebnis + R Dyn.Error.Err_Leser_nicht_bereit + + L 0 + T Dyn.SAVE2.Leser_DB + L DINT#0 + T Dyn.SAVE2.Leser_DD + T Dyn.Leser.IN.nOutBarcode + +// Defaultwerte übergeben: + L 0 // Damit statische Werte neu aus Datenbank geholt werden ! + T Schleuse.Schleusen_Nr // Nummer des Schleuses + + JU RET + +en04: NOP 0 + + +--- NW 6: Störungen nach Außen übergeben --- + L 0 + T "MW200" + + A Dyn.Error.Schleuse_DL // Schleuse-Datenliste fehlerhaft + = "M200.0" + A Dyn.Error.Undef_Schleuse // undefinierter Schleuse + = "M200.1" + A Dyn.Error.Err_Trolley_nicht_in_Schleuse // Trolley fährt nicht in Schleuse + = "M200.2" + A Dyn.Sk.Err_Uebzeit + = Dyn.Error.Err_Uebzeit // Überwachungzeit ist abgelaufen + = "M200.3" + NEG + R Dyn.Sk.Err_Uebzeit_AnzOk + A Dyn.Sk.Err_Schritt + = Dyn.Error.Err_Schritt // Schritt-Nummer ist nicht definiert + = "M200.4" + A Dyn.Error.Err_Stau_Einfahrt + AN B_InSchleuse + AN Y_Schleuse_Auf + = "M200.5" + A Dyn.Error.Err_BLKMov // Error bei Block kopieren + = "M200.6" + A Dyn.Error.Err_Trolley_raus // Trolley fährt nicht aus + = "M200.7" + A Dyn.Error.Err_Raus_Sensor // Raus-/Belade-Sensor wird nicht erreicht (oder dauernd aktiv)! + = "M201.0" + A Dyn.Error.Err_Ziel // Trolley-Ziel nicht bekannt + = "M201.1" + A Dyn.Error.Err_Weichen_DL // Weichen-Datenliste fehlerhaft + = "M201.2" + A Dyn.Error.Err_Undef_Weiche // undefinierte Weiche + = "M201.3" + A Dyn.Error.Err_Weiche_belegt // Weiche bleibt belegt + = "M201.4" + A Dyn.Error.Err_Kein_LeseErgebnis + = "M201.5" + A Dyn.Error.Err_Leser_nicht_bereit + = "M201.6" + A Dyn.Error.Barcode_nicht_bekannt + = "M201.7" + +// Andere Meldung als Überwachungszeit aktiv ?: + L "MW200" + L 2#1111_0111_1111_1111 + AW + L 2#0000_0000_0000_0000 // Andere Meldung als Üb.zeit aktiv ? + <>I // Ja ! + ON Dyn.Sk.Err_Uebzeit_AnzOk // Störung anzeigen ok, da 2.Zyklus aktiv ! + R "M200.3" // Üb.Zeit-Meldung nicht an PC senden + + A Dyn.Sk.Err_Uebzeit + S Dyn.Sk.Err_Uebzeit_AnzOk // Störung anzeigen ok, da 2.Zyklus aktiv ! + + L "MW200" + T Error // Schnittstelle nach Außen + +// Störung vorhanden: + L 0 + <>I // Ja ! + = Dyn.Status.Error_aktiv + S hStOk + +// Antrieb stoppen: + A( + ON Dyn.Sk.Auto_akt // SystemVoraussetzungen fehlen + O Dyn.Sk.Hand_akt + ON Dyn.Sk.Bereich_ok + ) + S Antrieb_Schleuse_stop // Antrieb stoppen + +// Störungen pro Zyklus neu erzeugen: + SET + R Dyn.Error.Schleuse_DL // Schleuse-Datenliste fehlerhaft + R Dyn.Error.Undef_Schleuse // undefinierter Schleuse +// / R #Dyn.Error.Err_Trolley_nicht_in_Schleuse//Trolley fährt nicht in Schleuse +// / R #Dyn.Error.Err_Uebzeit //Überwachungzeit ist abgelaufen + R Dyn.Error.Err_Schritt // Schritt-Nummer ist nicht definiert +// / R #Dyn.Error.Err_Stau_Einfahrt//Betriebsart ist nicht möglich + R Dyn.Error.Err_BLKMov +// / R #Dyn.Error.Err_Trolley_raus//Trolley fährt nicht aus +// / R #Dyn.Error.Err_Raus_Sensor//Raus-/Belade-Sensor wird nicht erreicht (oder dauernd aktiv)! + R Dyn.Error.Err_Ziel // Trolley-Ziel nicht bekannt + R Dyn.Error.Err_Weichen_DL // Weichen-Datenliste fehlerhaft + R Dyn.Error.Err_Undef_Weiche // undefinierte Weiche + R Dyn.Error.Err_Weiche_belegt // Weiche bleibt belegt +// / R #Dyn.Error.Err_Kein_LeseErgebnis +// / R #Dyn.Error.Err_Leser_nicht_bereit + R Dyn.Error.Barcode_nicht_bekannt + + AN Dyn.Sk.Err_Uebzeit + R Dyn.Error.Err_Trolley_nicht_in_Schleuse // Trolley fährt nicht in Schleuse + R Dyn.Error.Err_Trolley_raus // Trolley fährt nicht aus + + +--- NW 7: Statische Schleuse-Parameter holen --- + L Schleuse.Schleusen_Nr // Nummer des Schleuses + L Schleusen_Nr // Aufruf-Parameter + ==I // Identisch ? + R Dyn.Error.Schleuse_DL // Schleusedatenbank fehlerhaft + R Dyn.Error.Undef_Schleuse // undefinierter Schleuse + JC en06 // Ja ! + + T "MW200" // Search-Daten + +CALL FC "DatenOut" (SSDB:=Para.Schleusen_DL_DB, SSDW:=0, PARA:=WORD#16#0000, SEARCHDATEN:=P#M200.0, RE_VAL:="MB199", OUTDATEN:=P#M220.0, Position:="MW196") + + L "MB199" + T Dyn.Rueckmld.RET_VAL_DL_Schleuse // Rückmeldung bei Datenbank-Zugriff (Gefälle-DL) + + JBI G_Ok + + A "M199.0" + JCN w060 + + SET + = Dyn.Error.Schleuse_DL // Schleusedatenbank fehlerhaft + + L 16#A061 + T Dyn.Stop_Ursache + + JU RET + +w060: SET + S Dyn.Error.Undef_Schleuse // undefinierter Schleuse + + L 16#A062 + T Dyn.Stop_Ursache + + JU RET + +// Kennung + Datenbytes +G_Ok: SET + R Dyn.Error.Schleuse_DL // Gefälledatenbank fehlerhaft + R Dyn.Error.Undef_Schleuse // undefinierte Gefällestrecke + + L 16#1004 // Kennung 10 + Word=04 + T LW0 // Any-Kennung, Datentyp + L 20 // Datenwords speichern + T LW2 // Wiederholungen + +// Quelle-Pointer erzeugen: + L 0 // Bei Merker = 0 ! + T LW4 // DB_Nummer + L 220 // Adresse + SLD 3 + L 16#8300_0000 // Kennung: Merker + OD + T LD6 // Kennung, Adresse + +CALL SYS "BLKMOV" (SRCBLK:=Quelle, RET_VAL:=Dyn.Rueckmld.RET_VAL_BLKMOV_Schleuse, DSTBLK:=Schleuse) // Datenliste-Daten speichern | #Ziel + + L 16#A063 + T Dyn.Stop_Ursache + + L Dyn.Rueckmld.RET_VAL_BLKMOV_Schleuse // Rückmeldung + L 0 // Fehler vorhanden ? + <>I // Ja ! + = Dyn.Error.Err_BLKMov // Error bei Block kopieren + JC RET + + L Schleuse.Schleusen_Typ // Schleusetyp = 1275 (HM-Schleuse Plus) + L 1275 // Dieser Aufruf-FB ? + ==I // Ja ! + JC w061 + + SET + S Dyn.Error.Undef_Schleuse // undefinierter Schleuse + + L 0 // Schleuse ungültig ! + T Schleuse.Schleusen_Nr // Nummer des Schleuses + + L 16#A064 + T Dyn.Stop_Ursache + + JU RET + +// Defaultwerte übergeben: +w061: NOP 0 + + JU RET + +en06: NOP 0 + + +--- NW 8: Einsprung Weiche plus ermitteln --- + L SAVE.Weichen_DB // Weichen-FIFO-DB + L 0 // Einsprung-Zeiger bekannt ? + >I // Ja ! + R "Kein_Weichenbereich +1" + JC En08 + + L Schleuse.RausWeichen_Nr // Nr. der vorhandenen Weiche + T "MW200" // Search-Daten + L 0 // angegeben ? + ==I // Nein ! + = "Kein_Weichenbereich +1" + R Dyn.Error.Err_Undef_Weiche // undefinierte Weiche + JC En08 + +CALL FC "DatenOut" (SSDB:=Para.Weichen_DL_DB, SSDW:=0, PARA:=WORD#16#0000, SEARCHDATEN:=P#M200.0, RE_VAL:="MB199", OUTDATEN:=P#M220.0, Position:="MW196") + + L "MB199" + T Dyn.Rueckmld.RET_VAL_DL_Weiche // Rückmeldung bei Datenbank-Zugriff (Weiche-DL) + + JBI W_Ok + + A "M199.0" + = Dyn.Error.Err_Weichen_DL // Weichen-Datenliste fehlerhaft + JC En08 + + SET + S Dyn.Error.Err_Undef_Weiche // undefinierte Weiche + + JU En08 + +W_Ok: L "MW224" + T SAVE.Weichen_DB // Weichen-FIFO-DB + L 0 // sinnvoller Wert ? + <=I // Nein ! + S Dyn.Error.Err_Undef_Weiche // undefinierte Weiche + JC En08 + + L "MW226" + T SAVE.Weichen_DW // Weichen-FIFO-DW + +En08: NOP 0 + + +--- NW 9: Trolley in Schleuse entprellen --- + A B_InSchleuse + JC B_ok + + AN Status2.Trolley_an_Schleuse + ON "1s-Impuls" + JC Xn08 + + L Dyn.Zeit_Ohne_B_In_Schleuse + + 1 // Zeit ohne Sensor +1s + T Dyn.Zeit_Ohne_B_In_Schleuse + + L 3 // Nach ca. 3s + I // Ja! + AN Status2."Stau_an_Raus-Sensor" // Stau an Raus-Sensor + O + A B_VorSchleuse // // + AN Dyn.Error.Err_Stau_Einfahrt // // + O "Schleuse_geöffnet" + = Antriebe_starten + + A Antriebe_starten +// / UN #Dyn.Error.Err_Trolley_raus//Trolley fährt nicht aus + A( + O Dyn.Status.Weiche_geschaltet // Weiche ist aktiv + O "Kein_Weichenbereich +1" + ) + A Schleuse.Parameter_allg.Antrieb_Plus_vorhanden + S Antrieb_plus_vor // Antrieb plus einschalten + + A Antriebe_starten +// / UN #Dyn.Error.Err_Trolley_raus//Trolley fährt nicht aus + A( + O Dyn.Status.Weiche_geschaltet // Weiche ist aktiv + O "Kein_Weichenbereich +1" + ) + A( + O Antrieb_plus_aktiv + ON Schleuse.Parameter_allg.Antrieb_Plus_vorhanden + ) + S Antrieb_Schleuse_vor // Antrieb einschalten + +// Trolley ist in Schleuse und wartet + A Status2.Trolley_an_Schleuse // Trolley im Schleuse erkannt + AN "Schleuse_geöffnet" // Trolley soll ausfahren + A( + ON B_VorSchleuse + O Dyn.Error.Err_Stau_Einfahrt + ) + AN Dyn.Status.Kein_Stop_mehr // Wird in Schritt 2 gesetzt + O + A "Schleuse_geöffnet" // Trolley soll ausfahren + A Schleuse.Parameter_allg.Antrieb_Plus_vorhanden + AN Antrieb_plus_aktiv + JC Warten + + L 0 + T Dyn.WarteZeit_PS + + JU NwE10 + +Warten: L Dyn.WarteZeit_PS + L 3 // ca. 3s rum ? + =I + AN Status2."Stau_an_Raus-Sensor" + JC RDel + + CAC + L 200 // Nach ca. 20s + >=I + JC RDel + + JU En10 + +RDel: SET + R Status2."Trolley an Raus-Sensor" + L 0 + T Dyn."Zeit_Ohne_B_Zähl" + T Dyn.Stau_Zeit_RausSensor + +// War Stau?: + A Status2."Stau_an_Raus-Sensor" + R Status2."Stau_an_Raus-Sensor" + JCN DelRT + + L 0 // Bisher gefahrene Trolleys löschen + T Dyn.Raus_Trolleys + T Dyn."Zeit_Ohne_B_Zähl" + T Dyn.Stau_Zeit_RausSensor + +// Im Weichenbereich noch Trolleys unterwegs?: +DelRT: L Dyn.Raus_Trolleys + L 0 + >I + O "Kein_Weichenbereich +1" + JC En10 + +// Weiche+1 löschen: + L 0 + T SAVE."Weiche+1" // Hier wurde reserviert (Im Weichenmodul wird dann Reservierung gelöscht!) + + JU En10 + +B_Raus: L 0 + T Dyn."Zeit_Ohne_B_Zähl" + T Dyn."Zeit_Ausfahren_Ohne_B_Zähl" + +// Einmalig: + AN Status2."Trolley an Raus-Sensor" + S Status2."Trolley an Raus-Sensor" // Raus-Sensor ausgewertet + JCN Xn10 // Negierter Sprung + + L Dyn.Raus_Trolleys + + -1 // Ausgefahrene Trolleys -1 + T Dyn.Raus_Trolleys + + L 0 + >=I + JC Xn10 + + T Dyn.Raus_Trolleys // Minimum übergeben + +// Stau an B_Raus: +Xn10: AN "100ms-Impuls" + O Status2."Stau_an_Raus-Sensor" + JC En10 + + L Dyn.Stau_Zeit_RausSensor + + 1 // StauZeit +1 + T Dyn.Stau_Zeit_RausSensor + + L 90 // Nach ca. 9s + >=I + JCN En10 // Negierter Sprung + + L 0 // Zeit löschen + T Dyn.Stau_Zeit_RausSensor + + SET + S Status2."Stau_an_Raus-Sensor" + +En10: NOP 0 + + +--- NW 12: Plus: Trolley fährt nicht bis Zähl-Sensor --- + L Dyn.Raus_Trolleys + L 0 // Trolles unterwegs? + ==I // Nein! + O Trolley_draussen // Sensor wurde erreicht + O "Schleuse_geöffnet" // Dann Üb.zeit von Sk + O Dyn.Status.Reset_aktiv + JC RTTD + + AN Antrieb_Schleuse_aktiv + O + AN Antrieb_plus_aktiv + A Schleuse.Parameter_allg.Antrieb_Plus_vorhanden + ON "1s-Impuls" + O Dyn.Error.Err_Raus_Sensor // Trolley fährt nicht aus + JC En12 + + L Dyn."Zeit_Ausfahren_Ohne_B_Zähl" + + 1 + T Dyn."Zeit_Ausfahren_Ohne_B_Zähl" + +// Trolley fährt nicht bis Zähl-Sensor!: + L Schleuse."Übzeit_aus_Schleuse" + >=I + S Dyn.Error.Err_Raus_Sensor // Trolley fährt nicht aus + JCN En12 // Negierter Sprung! + + L Dyn.Raus_Trolleys + + -1 + T Dyn.Raus_Trolleys + + JU En12 + +RTTD: L 0 + T Dyn."Zeit_Ausfahren_Ohne_B_Zähl" + + SET + R Dyn.Error.Err_Raus_Sensor // Trolley fährt nicht aus + +En12: NOP 0 + + +--- NW 13: Einfahrzeit lernen --- + L Schleuse.EinfahrZeit + L 0 // Ausfahrzeit bekannt ? + ==I // Nein ! + O Status2.Einfahrzeit_lernen + = Einfahrzeit_nicht_bekannt + A Einfahrzeit_nicht_bekannt + A B_VorSchleuse // Stauklappe bei Einfahrt + A Antrieb_Schleuse_aktiv + AN B_InSchleuse + AN "Schleuse_geöffnet" + S Status2.Einfahrzeit_lernen + + A B_InSchleuse + AN "Schleuse_geöffnet" + R Status2.Einfahrzeit_lernen + + A Status2.Einfahrzeit_lernen + S Antrieb_Schleuse_vor // Antrieb einschalten + + AN Status2.Einfahrzeit_lernen + ON Antrieb_Schleuse_aktiv + ON "1s-Impuls" + JC NoEFZ + + L Schleuse.EinfahrZeit + + 1 + T Schleuse.EinfahrZeit + +NoEFZ: NOP 0 + + +--- NW 14: PS deaktivieren, da Trolley einfährt --- + A Einfahrzeit_nicht_bekannt // Also bekannt + JC En14 + +// Neuer Trolley fährt ein: + A B_VorSchleuse + JCN Wait // Negierter Sprung + + L Schleuse.EinfahrZeit + T Dyn.Restzeit_bis_Schleuse + +// Restzeit zurück zählen: +Wait: AN Antrieb_Schleuse_aktiv + O "Schleuse_geöffnet" + ON "1s-Impuls" + JC X014 + + L Dyn.Restzeit_bis_Schleuse + + -1 + T Dyn.Restzeit_bis_Schleuse + + L 0 + >I + JC X014 + + T Dyn.Restzeit_bis_Schleuse // Minimum übergeben + +// Trolley fährt noch ein: +X014: L Dyn.Restzeit_bis_Schleuse + L 0 // Restzeit vorhanden? + >I // Ja ! + AN B_InSchleuse + AN "Schleuse_geöffnet" + S Antrieb_Schleuse_vor // Antrieb einschalten (dadurch wird PS-Modus deaktiviert) + +En14: NOP 0 + + +--- NW 15: Spezial-FCs vorhanden? --- + L Schleuse.Leser_FC + T LeserFC + L 0 // Parameter vorhanden ? + >I // Ja! + = LeserFC_vorhanden + + L Schleuse.Ziel_FC + T ZielFC + L 0 // Parameter vorhanden ? + >I // Ja! + = ZielFC_vorhanden + + L Schleuse.Draussen_FC + T DraussenFC + L 0 // Parameter vorhanden ? + >I // Ja! + = DraussenFC_vorhanden + + +--- NW 16: Error: Stau Bereich-Eingang --- +// TrolleyID zum Einfahren gemeldet / Trolley fährt in Bereich: + L Dyn.TrolleyID_Eingefahren // Eintrag von Weiche -1 + L DINT#0 // angegeben ? + <>D // Ja ! + = "TrolleyID_Bereich-1" + A "TrolleyID_Bereich-1" + O B_VorSchleuse + S Dyn.Status."Trolley_fährt_in_Schleuse" + +// Antrieb einschalten: + A B_VorSchleuse + AN B_InSchleuse + AN "Schleuse_geöffnet" + S Antrieb_Schleuse_vor + + A B_VorSchleuse + S Antrieb_Schleuse_start + +// Sensor bei Bereichs-Einfahrt bleibt belegt?: + AN B_VorSchleuse // Sensor Trolley fährt in Bereich (kein Stau !) + O "Schleuse_geöffnet" + R Dyn.Error.Err_Stau_Einfahrt // Stau bei Einfahrt + JC X120 // StauZeit neu aufziehen + + AN "1s-Impuls" + O + A Schleuse.Parameter_allg.Antrieb_vorhanden + AN Antrieb_Schleuse_aktiv + O Dyn.Error.Err_Stau_Einfahrt // Zeit bereits abgelaufen + JC Xn12 + + L Dyn.Stau_Zeit // Sensor B_VorSep ist belegt [1s] + + +1 + T Dyn.Stau_Zeit // Sensor B_VorSep ist belegt [1s] + + L 20 // Stau-Zeit erreicht ? + >=I // Ja ! + S Dyn.Error.Err_Stau_Einfahrt // Stau bei Einfahrt (Quittierung oder Sensor=0, wegen Bürstenantrieb + JCN Xn12 + +X120: L 0 // Zeiten löschen + T Dyn.Stau_Zeit // Sensor B_VorSep ist belegt [1s] + +Xn12: NOP 0 + + +--- NW 17: Schleuse: Mindestzeit geöffnet/frei --- + L Dyn.Sk.Akt_Schritt + L 3 // AusSchleusen aktiv? + I // Nein! + ) +// / O #B_InSchleuse //Sensor Trolley in Schleuse vorhanden + ON "Schleuse_geöffnet" + R Dyn.Status.MindestZeit_ok + JC X130 // FreiZeit neu aufziehen + + A Schleuse.Parameter_allg.Antrieb_vorhanden + AN Antrieb_Schleuse_aktiv + O + A Schleuse.Parameter_allg.Antrieb_Plus_vorhanden + AN Antrieb_plus_aktiv + O Dyn.Status.MindestZeit_ok // Zeit bereits abgelaufen + ON "1s-Impuls" + JC Xn13 + + L Dyn.Mindest_Zeit // Sensor B_im_Sep ist frei [1s] + + +1 + T Dyn.Mindest_Zeit // Sensor B_im_Sep ist frei [1s] + + L Schleuse.Mindeszeit_Schleuse_geoeffnet // Mindest-Zeit erreicht ? + >=I // Ja ! + S Dyn.Status.MindestZeit_ok + JCN Xn13 + +X130: L 0 // Zeiten löschen + T Dyn.Mindest_Zeit // Sensor B_im_Sep ist frei [1s] + +Xn13: NOP 0 + + +--- NW 18: Einsprung Leser ermitteln --- + L Dyn.SAVE2.Leser_DB // Leser-FIFO-DB + L 0 // Einsprung-Zeiger bekannt ? + >I // Ja ! + S Leser_Zugriff // Leser-Zugriff vorhanden + JC En08L + + L Schleuse.Leser_ID // Nr. des vorhandenen Lesers + T "MW200" // Search-Daten + L 0 // angegeben ? + ==I // Nein ! + JC En08L + +CALL FC "DatenOut" (SSDB:=Para.Leser_DL_DB, SSDW:=0, PARA:=WORD#16#0000, SEARCHDATEN:=P#M200.0, RE_VAL:="MB199", OUTDATEN:=P#M220.0, Position:="MW196") + + L "MB199" + T Dyn.Rueckmld.RET_VAL_DL_Leser // Rückmeldung bei Datenbank-Zugriff (Leser-DL) + + JBI W_OkL + + SET + S Dyn.Error.Err_Leser_nicht_bereit // Leser-Datenliste fehlerhaft + + JU En08L + +W_OkL: L "MW222" // Rein-FIFO-DB + T Dyn.SAVE2.Leser_DB // Leser-FIFO-DB + L 0 // sinnvoller Wert ? + <=I // Nein ! + S Dyn.Error.Err_Leser_nicht_bereit // undefinierter Leser + JC En08L + + L "MD224" + T Dyn.SAVE2.Leser_DD // Leser-FIFO-DD + + SET + R Dyn.Error.Err_Leser_nicht_bereit // undefinierter Leser + S Leser_Zugriff // Leser-Zugriff vorhanden + +En08L: NOP 0 + + +--- NW 19: Reservierung bei Weiche plus noch aktiv? Nachtriggern --- + A "Kein_Weichenbereich +1" + R "Reservierung_Weiche+1_aktiv" + JC Y11E + + OPN DB[SAVE.Weichen_DB] // FABE+ -DB öffnen + + L SAVE.Weichen_DW + ITD + T AR1Start // Startwert mit Offset 0 + + L AR1Start // Startwert mit Offset 0 + + DINT#78 + SLD 3 + T AR1Zeiger // Statt Dyn.Bereichsstop (ging nur bis DB-Länge <= 8191 Bytes) + + L DBW [AR1Zeiger] // Schleuse -1 (DBW 78) + L Schleusen_Nr // Diese Schleuse ? + ==I // Ja ! + = "Reservierung_Weiche+1_aktiv" + +// Mindestzeit nachtriggern: (nach Weiche +1) + AN "Schleuse_geöffnet" + JC Y11E + + L AR1Start // Startwert mit Offset 0 + + DINT#71 + SLD 3 + L 3 // Damit DBX_Bit 3 + OD + T AR1Zeiger // Statt Dyn.Bereichsstop (ging nur bis DB-Länge <= 8191 Bytes) + + SET + = DBX [AR1Zeiger] // Mindestzeit nachtriggern (71.2) + +Y11E: NOP 0 + + +--- NW 20: Leser-Einheit managen (Inputs holen) --- + AN Leser_Zugriff + ON Schleuse.Parameter_allg.Leser_eingebaut + R Dyn.Status.Leser_triggern // für Status-Anzeige + JC NoLeser + +// Leserdaten holen: + OPN DB[Dyn.SAVE2.Leser_DB] // Leser -DB öffnen + + L Dyn.SAVE2.Leser_DD + T AR1Start // Startwert mit Offset 0 + +// Offset 10: + L AR1Start // Startwert mit Offset 0 + + DINT#10 + SLD 3 + T AR1Zeiger // Statt Dyn.Bereichsstop (ging nur bis DB-Länge <= 8191 Bytes) + + L DBB [AR1Zeiger] + T "MB200" + A "M200.0" + = Dyn.Leser.IN.xOutReadingDone + A "M200.1" + = Dyn.Leser.IN.xOutReadyForNewScan + +// Offset 274: + L AR1Start // Startwert mit Offset 0 + + DINT#274 + SLD 3 + T AR1Zeiger // Statt Dyn.Bereichsstop (ging nur bis DB-Länge <= 8191 Bytes) + + L DBB [AR1Zeiger] + T "MB200" + A "M200.0" + = Dyn.Leser.IN.xOutCodeGood + A "M200.1" + = Dyn.Leser.IN.xOutCodeBad + +// Offset 12: + L AR1Start // Startwert mit Offset 0 + + DINT#12 + SLD 3 + T AR1Zeiger // Statt Dyn.Bereichsstop (ging nur bis DB-Länge <= 8191 Bytes) + + L DBD [AR1Zeiger] + T Dyn.Leser.IN.nOutBarcode + +NoLeser: NOP 0 + + +--- NW 21: Schrittkette anhalten --- + A Dyn.Sk.Auto_akt // Automatik ist aktiv + A Dyn.Sk.Bereich_ok + CLR + + JU en08_Mig // Schrittkette nicht anhalten ! + + SET + R Dyn.Sk.Err_Uebzeit // Störungen löschen + R Dyn.Sk.Err_Schritt + + L 0 // Zeitwerte löschen + T Dyn.Sk.Terr_Zelle + T Dyn.Sk.Tok_Zelle + + JU RET + +en08_Mig: NOP 0 + + +--- NW 22: Trolley wurde zurück gezogen --- + L Dyn.Sk.Akt_Schritt + L 10 // Trolley schon unterwegs ? + I // Ja ! + ) + O Status2.Trolley_an_Schleuse // Trolley ist noch in Schleuse + O "Schleuse_geöffnet" + JC TrolleyOk + + SET + S Antrieb_Schleuse_start + S Dyn.Leser.OUT.xInReset + + L 0 // Neubeginn + T Dyn.Sk.Akt_Schritt + + AN Schleuse.Parameter_allg.Leser_eingebaut // Falls kein Leser verbaut Daten behalten (falls von Bereich-1 gemeldet) + JC TrolleyOk + + T Dyn.Trolley_ZwischenZiel + + L DINT#0 + T Dyn.TrolleyID_Schleuse + +TrolleyOk: NOP 0 + + +--- NW 23: Sprungverteiler --- + L Dyn.Sk.Neu_Schritt // Schritt, der im nächsten Zyklus aktiv werden soll + L -1 // angegeben ? + ==I // Nein ! + JC NEU + + CAC // Neuen Schritt übergeben + T Dyn.Sk.Akt_Schritt + + L -1 // Urzustand + T Dyn.Sk.Neu_Schritt // Schritt, der im nächsten Zyklus aktiv werden soll + +NEU: SET + R Warte_neu // Wartezeit neutriggern + R Warte_stop // Wartezeit stoppen + + L Dyn.Sk.Akt_Schritt + JL Ende + JU s000 // Schritt 0 + JU s001 // Schritt 1 + JU s002 // Schritt 2 + JU s003 // Schritt 3 + JU s004 // Schritt 4 + JU s005 // Schritt 5 + JU s006 // Schritt 6 + JU s007 // Schritt 7 + JU s008 // Schritt 8 + JU s009 // Schritt 9 + JU s010 // Schritt 10 + JU s011 // Schritt 11 + JU s012 // Schritt 12 + JU s013 // Schritt 13 + JU s014 // Schritt 14 + JU s015 // Schritt 15 + JU s016 // Schritt 16 + JU s017 // Schritt 17 + JU s018 // Schritt 18 + JU s019 // Schritt 19 + JU s020 // Schritt 20 + JU s021 // Schritt 21 + JU s022 // Schritt 22 + JU s023 // Schritt 23 + JU s024 // Schritt 24 + JU s025 // Schritt 25 + JU s026 // Schritt 26 + JU s027 // Schritt 27 + JU s028 // Schritt 28 + JU s029 // Schritt 29 + JU s030 // Schritt 30 +Ende: S Dyn.Sk.Err_Schritt // Undefinierter Schritt + + L 16#A131 + T Dyn.Stop_Ursache + + JU RET + +Neu_Mig: A Dyn.Sk.Err_Uebzeit + JCN Sk + + L 16#A132 + T Dyn.Stop_Ursache + + JU RET + +Sk: T Dyn.Sk.Akt_Schritt + + L 0 // Zeitwerte löschen + T Dyn.Sk.Terr_Zelle + T Dyn.Sk.Tok_Zelle + + JU NEU + +// Nicht programmierte Schritte: +// s000: SPA Ende +// s001: SPA Ende +// s002: SPA Ende +s003: JU Ende +s004: JU Ende +// s005: SPA Ende +// s006: SPA Ende +// s007: SPA Ende +s008: JU Ende +// s009: SPA Ende +// s010: SPA Ende +// s011: SPA Ende +// s012: SPA Ende +// s013: SPA Ende +// s014: SPA Ende +// s015: SPA Ende +// s016: SPA Ende +// s017: SPA Ende +s018: JU Ende +s019: JU Ende +// s020: SPA Ende +// s021: SPA Ende +s022: JU Ende +s023: JU Ende +s024: JU Ende +s025: JU Ende +s026: JU Ende +s027: JU Ende +s028: JU Ende +s029: JU Ende +s030: JU Ende + + +--- NW 24: Schritt X: Reserve --- + SET // Weiterschaltbedingung + = Weiter + +// Schrittaktionen: + SET + + L 16#B001 + T Dyn.Stop_Ursache + + A Weiter // Weiterschaltbedingung ist erfüllt + R Dyn.Sk.Err_Uebzeit // Sofort weiter ! + L 0 // Angabe der Wartezeit (*10ms) + JC Plus // Nächsten Schritt starten + + L 1 // Weiter mit Schritt 1 + JC Neu_Mig // Bei diesem Schritt weiter + + SET + A Dyn.Sk.Auto_akt // Automatik ist aktiv + A Dyn.Sk.Bereich_ok + = Ueb_akt // Überwachungszeit aktivieren + L 50 // Angabe der Überwachungszeit (*1s) + JU tueb // Überwachungszeit + + JU RET + + +--- NW 25: Schritt 0: Warten auf Trolley --- +s000: SET // Weiterschaltbedingung + A B_InSchleuse // Trolley im Schleuse erkannt + A Dyn.Sk.Auto_akt // Automatik ist aktiv + A Dyn.Sk.Bereich_ok + = Weiter + +// Trolley-Schleusendaten löschen: + L DINT#0 + T Dyn.TrolleyID_Schleuse + T Dyn.Trolley_ShopGroup + + L 0 + T Dyn.Trolley_EndZiel + T Dyn.Weichen_Ziel + +// HMI-Zeug: + L DINT#0 + T Dyn.HMI.TrolleyID_Input + + A Dyn.Sk.Reset_Akt // Reset ist aktiv + L 20 // Weiter mit Schritt 20 + JC Neu_Mig // Bei diesem Schritt weiter + +// Schrittaktionen: + SET + R Dyn.Error.Err_Leser_nicht_bereit + R Dyn.Error.Err_Kein_LeseErgebnis + R Dyn.Status.SF_angefordert + R Status2."TrolleyPos_übergeben" + R Status2.Telegramm_gesendet + + A Weiter // Weiterschaltbedingung ist erfüllt + R Dyn.Sk.Err_Uebzeit // Sofort weiter ! + L 50 // Angabe der Wartezeit (*10ms) + JC Plus // Nächsten Schritt starten + + L 16#B001 + T Dyn.Stop_Ursache + + A Dyn.Status."Trolley_fährt_in_Schleuse" + AN B_InSchleuse + S Antrieb_Schleuse_vor // Antrieb einschalten + JC S000A + + SET + R Dyn.Sk.Err_Uebzeit + + L 16#B000 + T Dyn.Stop_Ursache + + JU RET + +// Überwachungszeit starten: +S000A: A Dyn.Status."Trolley_fährt_in_Schleuse" + AN B_InSchleuse // Trolley im Schleuse erkannt + A( + O Antrieb_Schleuse_aktiv + ON Schleuse.Parameter_allg.Antrieb_vorhanden + ) + = Ueb_akt // Überwachungszeit aktivieren + + A Dyn.Sk.Err_Uebzeit + R Dyn.Sk.Err_Uebzeit + S Dyn.Error.Err_Trolley_nicht_in_Schleuse + R Dyn.Status."Trolley_fährt_in_Schleuse" + + L Schleuse."Übzeit_in_Schleuse" + + JU tueb // Überwachungszeit + + +--- NW 26: Schritt 1: Trolley ist in Schleuse / Leser ? / Daten vorhanden ? --- +s001: NOP 0 +// Schrittaktionen: + A B_InSchleuse + S Status2.Trolley_an_Schleuse + + AN Status2.Trolley_an_Schleuse // Trolley im Schleuse erkannt + A Schleuse.Parameter_allg.Leser_eingebaut + L 0 // Weiter mit Schritt 0 + JC Neu_Mig // Bei diesem Schritt weiter + +// Zwischen-Ziel von Bereich -1 vorhanden?: + L Dyn.ZwischenZiel_eingefahren + L 0 // Zwischenziel von Bereich -1 vorhanden! + ==I // Nein ! + O Schleuse.Parameter_allg.Leser_eingebaut // Dann werden Daten neu ermittelt! + JC X001 + +// Daten von Bereich -1 übergeben: + L Dyn.ZwischenZiel_eingefahren + T Dyn.Trolley_ZwischenZiel + L 0 + T Dyn.ZwischenZiel_eingefahren + + L Dyn.TrolleyID_Eingefahren + T Dyn.TrolleyID_Schleuse + L DINT#0 + T Dyn.TrolleyID_Eingefahren + + L 12 // Weiter mit Schritt 12 + JU Neu_Mig // Bei diesem Schritt weiter + +X001: L 0 + T Dyn.Trolley_ZwischenZiel + +// Leser vorhanden: + A Schleuse.Parameter_allg.Leser_eingebaut + R Dyn.Error.Err_Kein_LeseErgebnis + L 9 // Weiter mit Schritt 9 (Leser bereit) + JC Neu_Mig // Bei diesem Schritt weiter + +// Trolleydaten vorhanden ?: (Übergabe von Bereich -1) + L Dyn.TrolleyID_Eingefahren + T Dyn.TrolleyID_Schleuse + L DINT#0 // Daten vorhanden ? + <>D // Ja ! + L 11 // Weiter mit Schritt 11 (Trolleydaten lesen) + JC Neu_Mig // Bei diesem Schritt weiter + +// Ziel-FC vorhanden ?: + A ZielFC_vorhanden + L 12 // Weiter mit Schritt 12 (Ziel-FC) + JC Neu_Mig // Bei diesem Schritt weiter + + L 14 // Weiter mit Schritt 14 (Weichenbereich +1 vorhanden) + JU Neu_Mig // Bei diesem Schritt weiter + + +--- NW 27: Schritt 2: Ausfahren ok ? --- +s002: NOP 0 + +// Schrittaktionen: + AN Status2.Trolley_an_Schleuse // Trolley im Schleuse erkannt + L 0 // Weiter mit Schritt 0 + JC Neu_Mig // Bei diesem Schritt weiter + +// Anlage aus oder Störung: + L 16#B021 + T Dyn.Stop_Ursache + + AN Dyn.Sk.Auto_akt // Automatik ist aktiv + ON Dyn.Sk.Bereich_ok // Bereich ist gestört + JC RET + +// Starten erlaubt Trolley ?: + L 16#B022 + T Dyn.Stop_Ursache + + AN Start_Ok // Starten ist erlaubt + JC RET + +// Stau im Bereich +1: + L 16#B023 + T Dyn.Stop_Ursache + + SET + S Dyn.Status."Trolley_wartet_Bereich+1" + + A B_Stau_raus // Sensor Stau im Bereich rausfahren + JC RET + +// B_Aus_Schleuse aktiv: + L 16#B024 + T Dyn.Stop_Ursache + + A( + L Dyn.Raus_Trolleys + L 0 // Trolleys schon unterwegs? + <>I // Ja! + O( + L Schleuse.MaxRausTrolleys + L 1 // Nur einer darf ausfahren ? + ==I // Ja ! + ) + ) + A Status2."Trolley an Raus-Sensor" + O Status2."Stau_an_Raus-Sensor" + JC RET + +// Raus-Weiche bereit?: + L 16#B028 + T Dyn.Stop_Ursache + + A( + L Dyn.Weichen_Ziel + L Dyn."Zurück_gemeldetes_Weichen_Ziel" + <>I // Nicht identisch ! + ON Dyn.Status.Weiche_geschaltet // Rückmeldung von Weiche +1 + ) + AN "Kein_Weichenbereich +1" // Also Weiche +1 + L 15 + JC Neu_Mig // Bei diesem Schritt weiter + +// Zu viele Raus-Trolleys unterwegs: + L 16#B027 + T Dyn.Stop_Ursache + + L Dyn.Raus_Trolleys // Gestartete Trolleys + L Schleuse.MaxRausTrolleys // Erlaubte Anzahl gestarteter Trolleys + >=I + JC RET + +// Antriebe aktivieren / aktiv ?: + A Schleuse.Parameter_allg.Antrieb_Plus_vorhanden // Schleuse an weiterem Antrieb (Weiche) + S Antrieb_plus_vor // Antrieb plus einschalten + + A( + O Antrieb_plus_aktiv // Kreisel-Antrieb plus aktiv + ON Schleuse.Parameter_allg.Antrieb_Plus_vorhanden // Schleuse an weiterem Antrieb (Weiche) + ) + S Antrieb_Schleuse_vor // Antrieb einschalten + + L 16#B026 + T Dyn.Stop_Ursache + + AN Antrieb_plus_aktiv // Kreisel-Antrieb plus aktiv + A Schleuse.Parameter_allg.Antrieb_Plus_vorhanden // Schleuse an weiterem Antrieb (Weiche) + JC RET + + AN Antrieb_Schleuse_aktiv // Kreisel-Antrieb aktiv + A Schleuse.Parameter_allg.Antrieb_vorhanden // Schleuse an angetriebener Strecke + = Dyn.Status.Kein_Stop_mehr + JC RET + + L Dyn.Raus_Trolleys + + 1 // Gestartete Trolleys + 1 + T Dyn.Raus_Trolleys + + L 5 // Nur 1 langes Signal! + JC Neu_Mig // Bei diesem Schritt weiter + + +--- NW 28: Schritt 5: Trolley fährt aus ? --- +s005: SET // Weiterschaltbedingung + AN B_InSchleuse // Sensor Trolley ist in Schleuse + A( + O Antrieb_Schleuse_aktiv // Kreisel-Antrieb aktiv + ON Schleuse.Parameter_allg.Antrieb_vorhanden // Schleuse an angetriebener Strecke + ) + A( + O Antrieb_plus_aktiv + ON Schleuse.Parameter_allg.Antrieb_Plus_vorhanden + ) + = Weiter + +// Schrittaktionen: + SET + S Y_Schleuse_Auf // Schleuse öffnen + S Dyn.Status."Trolley_fährt_aus" + +// Antriebe: +// siehe Nw10 + +// B in Schleuse aktiv: + A B_InSchleuse // Sensor Trolley ist in Schleuse + JCN X050 // Negierter Sprung + + L 0 + T Dyn.Sk.Tok_Zelle + +// Trolley ist draussen mit 5s-Verzögerung: +X050: A Weiter // Weiterschaltbedingung ist erfüllt + R Dyn.Sk.Err_Uebzeit // Sofort weiter ! + R Dyn.Error.Err_Trolley_raus // Trolley fährt nicht aus + L 300 + JC Plus // Nächsten Schritt starten + +// Trolley fährt nicht raus!: + A Dyn.Sk.Err_Uebzeit + S Dyn.Error.Err_Trolley_raus // Trolley fährt nicht aus + + L 16#B051 + T Dyn.Stop_Ursache + + A Antrieb_Schleuse_aktiv + ON Schleuse.Parameter_allg.Antrieb_vorhanden // Schleuse an angetriebener Strecke + = Ueb_akt // Überwachungszeit aktivieren + L Schleuse."Übzeit_aus_Schleuse" // Angabe der Überwachungszeit (*1s) + JU tueb // Überwachungszeit + + +--- NW 29: Schritt 6: Schleuse Mindestzeit geöffnet ? --- +s006: SET // Weiterschaltbedingung + A Dyn.Status.MindestZeit_ok + AN B_InSchleuse // Sensor Trolley in Schleuse vorhanden + = Weiter + R Dyn.Sk.Err_Uebzeit // Sofort weiter ! + R Dyn.Error.Err_Trolley_raus // Trolley fährt nicht aus + +// Schrittaktionen: +// Gezählt wird in NW11 + + SET + S Y_Schleuse_Auf // Schleuse öffnen + S Dyn.Status."Trolley_fährt_aus" + +// Erneutes Signal von B in Schleuse ?: + A B_InSchleuse // Sensor Trolley in Schleuse vorhanden + JCN X060 // Negierter Sprung + + L 5 + T Dyn.Sk.Neu_Schritt // Schritt, der im nächsten Zyklus aktiv werden soll + + L 0 // Mindest-Zeit neu starten + T Dyn.Mindest_Zeit // Sensor B_im_Sep ist frei [1s] + SET + R Dyn.Status.MindestZeit_ok // Zeit bereits abgelaufen + + JU RET + +// Antriebe: +// siehe Nw10 +X060: A Weiter + L 0 + JC X006 // Nächsten Schritt starten + + L 16#B061 + T Dyn.Stop_Ursache + +// Trolley fährt nicht raus!: + A Dyn.Sk.Err_Uebzeit + S Dyn.Error.Err_Trolley_raus // Trolley fährt nicht aus + + A Antrieb_Schleuse_aktiv + ON Schleuse.Parameter_allg.Antrieb_vorhanden // Schleuse an angetriebener Strecke + = Ueb_akt // Überwachungszeit aktivieren + L Schleuse."Übzeit_aus_Schleuse" // Angabe der Überwachungszeit (*1s) + JU tueb // Überwachungszeit + +// Trolley hat Schleuse verlassen: +X006: SET + S Dyn.Status.Trolley_draussen // 1 Zyklus + R Dyn.Status."Trolley_fährt_in_Schleuse" + R Status2.Telegramm_gesendet + + L Dyn.Vereinzelungstakte + + DINT#1 // Vereinzelungen +1 + T Dyn.Vereinzelungstakte + +// Draussen-FC ?: + AN DraussenFC_vorhanden + JC NoFC // Bei diesem Schritt weiter + + L Schleusen_Nr // Schleusen-Nr. + T "MW190" + L Dyn.Trolley_ShopGroup // Shop-Gruppe + T "MD182" // übergeben + + L Dyn.Weichen_Ziel + T "MW198" // Weichenziel + + UC DB[DraussenFC] // z.Bsp. Daten anpassen + +NoFC: L 7 // Weiter mit Schritt 7 + JU Neu_Mig // Bei diesem Schritt weiter + + +--- NW 30: Schritt 7: Fertig --- +s007: SET // Weiterschaltbedingung + +// Schrittaktionen: + JU ENDE_Mig + + +--- NW 31: Schritt 9: Lese-Einheit bereit? --- +s009: SET // Weiterschaltbedingung + L Dyn.Leser.IN.nOutBarcode + L DINT#0 + ==D + A Dyn.Leser.IN.xOutReadyForNewScan + AN Dyn.Leser.IN.xOutReadingDone + AN Dyn.Leser.IN.xOutCodeGood + AN Dyn.Leser.IN.xOutCodeBad + = Weiter + R Dyn.Error.Err_Leser_nicht_bereit + +// Schrittaktionen: + AN Status2.Trolley_an_Schleuse // Trolley im Schleuse erkannt + A Schleuse.Parameter_allg.Leser_eingebaut + R Dyn.Error.Err_Leser_nicht_bereit + L 0 // Weiter mit Schritt 0 + JC Neu_Mig // Bei diesem Schritt weiter + + A Weiter + = Dyn.Leser.OUT.xInStartReading // Leser triggern + L 0 // Angabe der Wartezeit (*10ms) + JC Plus // Nächsten Schritt starten + +// Leser nicht bereit: + A Dyn.Leser.IN.xOutReadingDone // Falls altes Handshake noch gewollt + O Dyn.Leser.IN.xOutCodeGood + O Dyn.Leser.IN.xOutCodeBad + S Dyn.Leser.OUT.xInHandshakeDone + + A Dyn.Sk.Err_Uebzeit + R Dyn.Sk.Err_Uebzeit // Sofort weiter ! + S Dyn.Error.Err_Leser_nicht_bereit + S Dyn.Leser.OUT.xInErrQuit // Vielleicht hilft es + + A Dyn.Error.Err_Leser_nicht_bereit + A ErrQuit // Mit Quittierung dann zusätzlich reset! + S Dyn.Leser.OUT.xInReset + +// HMI-TrolleyID bei Leser nicht bereit: + L Dyn.HMI.TrolleyID_Input + L DINT#0 + <>D // Ja! + A Dyn.Error.Err_Leser_nicht_bereit + L 0 // Angabe der Wartezeit (*10ms) + JC Plus // Nächsten Schritt starten + + SET + = Ueb_akt // Überwachungszeit aktivieren + L 5 // Angabe der Überwachungszeit (*1s) + JU tueb // Überwachungszeit + + +--- NW 32: Schritt 10: Warten auf Leseeinheit --- +s010: SET // Weiterschaltbedingung + A Dyn.Leser.IN.xOutReadingDone + A Dyn.Leser.IN.xOutCodeGood + AN Dyn.Leser.IN.xOutCodeBad + = Weiter + R Dyn.Error.Err_Kein_LeseErgebnis + +// Schrittaktionen: + AN Status2.Trolley_an_Schleuse // Trolley im Schleuse erkannt + A Schleuse.Parameter_allg.Leser_eingebaut + L 0 // Weiter mit Schritt 0 + R Dyn.Error.Err_Kein_LeseErgebnis + JC Neu_Mig // Bei diesem Schritt weiter + + SET + R Dyn.Leser.OUT.xInStartReading // Leseeinheit triggern + + A Weiter + S Dyn.Leser.OUT.xInHandshakeDone + R Dyn.Sk.Err_Uebzeit // Sofort weiter ! + JC X010 + + SET + S Dyn.Status.Trolley_wartet_Lesung + + A Dyn.Error.Err_Leser_nicht_bereit // von Schritt 9 + JC LX + + A Dyn.Sk.Err_Uebzeit + O Dyn.Leser.IN.xOutCodeBad + S Dyn.Leser.OUT.xInHandshakeDone + JC L2 // Erst bei 3.Fehllesung Error! + + L 16#B101 + T Dyn.Stop_Ursache + + SET + = Ueb_akt // Überwachungszeit aktivieren + + L 10 // Angabe der Überwachungszeit (*1s) + JU tueb // Überwachungszeit + +L2: A Status2."2.Lesung_aktiv" // Erst bei 3.Fehllesung Error! + JC L3 + + SET + S Status2."2.Lesung_aktiv" + R Dyn.Sk.Err_Uebzeit // Sofort weiter ! + + L 9 + T Dyn.Sk.Neu_Schritt // Schritt, der im nächsten Zyklus aktiv werden soll + + JU RET + +L3: A Status2."3.Lesung_aktiv" // //Erst bei 3.Fehllesung Error! + JC LX + + SET + S Status2."3.Lesung_aktiv" + R Dyn.Sk.Err_Uebzeit // Sofort weiter ! + + L 9 + T Dyn.Sk.Neu_Schritt // Schritt, der im nächsten Zyklus aktiv werden soll + + JU RET + +// Nach 3.Fehl-Lesung erst Leserfehler! +LX: SET + R Dyn.Sk.Err_Uebzeit // Sofort weiter ! + S Dyn.Error.Err_Kein_LeseErgebnis + JU NoLesung + +// Leserdaten übergeben: +X010: L Dyn.Leser.IN.nOutBarcode + T Dyn.TrolleyID_Schleuse + + L DINT#0 // Unbekannt ? + ==D // Ja ! + O( + CAC + L DINT#-1 // Fehl-Lesung? + ==D // Ja ! + ) + S Dyn.Error.Err_Kein_LeseErgebnis + L 9 // Weiter mit Schritt 9 (Leser bereit) + JC Neu_Mig // Bei diesem Schritt weiter + + L 11 // Weiter mit Schritt 11 + JU Neu_Mig // Bei diesem Schritt weiter + +// Lesefehler: +NoLesung: NOP 0 +// HMI-Eingabe?: +// HMI-TrolleyID: + L Dyn.HMI.TrolleyID_Input + T Dyn.TrolleyID_Schleuse + <>D // Ja! + L 0 // Angabe der Wartezeit (*10ms) + R Dyn.Error.Err_Kein_LeseErgebnis + R Dyn.Error.Err_Leser_nicht_bereit // von Schritt 9 + JC Plus // Nächsten Schritt starten + +// Leser-FC aufrufen: +No_HMIa: AN LeserFC_vorhanden + JC NoLFC + + L Schleusen_Nr // Schleusen-Nr. + T "MW190" // übergeben + L Dyn.Trolley_ZwischenZiel // Übergabe von Leser-Aufruf + T "MW196" + + A Dyn.Error.Err_Kein_LeseErgebnis + = "M180.0" + SET + R "M180.1" + + UC DB[LeserFC] // Beeinflussung der Fehllesung + + L 16#B102 + T Dyn.Stop_Ursache + + L "MW196" // Zwischenziel übergeben + T Dyn.Trolley_ZwischenZiel // Übergabe von Leser-Aufruf + L 0 // Übergeben ? + <>I // Ja! + L 12 // Weiter mit Schritt 12 + R Dyn.Error.Err_Kein_LeseErgebnis + JC Neu_Mig // Bei diesem Schritt weiter + +NoLFC: L 9 + T Dyn.Sk.Neu_Schritt // Schritt, der im nächsten Zyklus aktiv werden soll + + JU RET + + +--- NW 33: Schritt 11: Trolleydaten aus DL lesen --- +s011: L DINT#0 + T Dyn.TrolleyID_Eingefahren // Eintrag von Weiche -1 + + L Dyn.Trolley_ZwischenZiel // / + + L Dyn.TrolleyID_Schleuse + T "MD220" + +CALL FC "DatenOut" (SSDB:=Schleuse.Gesamt_Trolley_DL, SSDW:=0, PARA:=16#0000, SEARCHDATEN:=P#M220.0, RE_VAL:="MB199", OUTDATEN:=DB1011.DBX0.0, Position:="MW196") // Eintrag lesen + + L 16#B111 + T Dyn.Stop_Ursache + + AN "M199.7" + = Dyn.Error.Barcode_nicht_bekannt + JC UnbekanntBC + +// Relevanten Trolleydaten auslesen: + L "TrolleyDL_OutDaten".OUTDaten.EndZiel + T Dyn.Trolley_EndZiel + +// ZwischenZiel nicht überschreiben: + L Dyn.Trolley_ZwischenZiel + L 0 // Schon bekannt ? + <>I // Ja ! + JC NixZZ + + L "TrolleyDL_OutDaten".OUTDaten.ZwischenZiel + T Dyn.Trolley_ZwischenZiel + +NixZZ: L "TrolleyDL_OutDaten".OUTDaten.ShopGroup + T Dyn.Trolley_ShopGroup + + L 0 // Angabe der Wartezeit (*10ms) + JU Plus // Nächsten Schritt starten + +// Unbekannter Trolley: +UnbekanntBC: NOP 0 +// HMI-Eingabe?: + +// Leser-FC aufrufen: +Nix_HMI: AN LeserFC_vorhanden + JC Nix_LFC + + L Schleusen_Nr // Schleusen-Nr. + T "MW190" // übergeben + L Dyn.TrolleyID_Schleuse + T "MD192" + L Dyn.Trolley_ZwischenZiel + T "MW196" + + A Dyn.Error.Barcode_nicht_bekannt + = "M180.1" + SET + R "M180.0" + + UC DB[LeserFC] // Beeinflussung der Weiterfahrt bei nicht bekanntem Trolley + + L "MW196" // ZwischenZiel übergeben + T Dyn.Trolley_ZwischenZiel // Übergabe von Leser-Aufruf + L 0 // Übergeben ? + <>I // Ja! + L 12 // Weiter mit Schritt 12 + R Dyn.Error.Err_Kein_LeseErgebnis + JC Neu_Mig // Bei diesem Schritt weiter + +Nix_LFC: JU RET + + +--- NW 34: Schritt 12: Ziel-FC --- +s012: NOP 0 + +// Schrittaktionen: + AN Status2.Trolley_an_Schleuse // Trolley im Schleuse erkannt + A Schleuse.Parameter_allg.Leser_eingebaut + AN "Schleuse_geöffnet" + L 0 // Weiter mit Schritt 0 + JC Neu_Mig // Bei diesem Schritt weiter + + SET + S Dyn.Status."Trolley_wartet_auf_Ziel-FC" + + AN ZielFC_vorhanden + R Dyn.Status."Trolley_wartet_auf_Ziel-FC" + L 13 // Weiter mit Schritt 13 + JC Neu_Mig // Bei diesem Schritt weiter + + SET // Rückmeldungen erst mal resetten + R "M180.6" // Weiterfahrt von Ziel-FC erlaubt + L Schleusen_Nr // Schleusen-Nr. + T "MW190" // übergeben + L Dyn.Trolley_ShopGroup // Shop-Gruppe + T "MD182" // übergeben + L Dyn.Trolley_EndZiel // End-Ziel + T "MW194" // übergeben + L Dyn.Trolley_ZwischenZiel + T "MW196" // übergeben + L 0 // Erst mal nullen + T "MW198" // Weichenziel + + UC DB[ZielFC] // Beeinflussung der Weiterfahrt + + L 16#B122 + T Dyn.Stop_Ursache + +// Spezial-Fall bei Übergabe an Sorter / Turm (M180.6 wird nie im Ziel-FC gesetzt!) +// aber anderer Partner hat Schleuse extern geöffnet: + A "Schleuse_geöffnet" + AN "M180.6" // Weiterfahrt von Ziel-FC erlaubt + AN Status2."TrolleyPos_übergeben" // Nur einmalig + S Status2."TrolleyPos_übergeben" + JCN Normal // Negierter Sprung + + L Dyn.Vereinzelungstakte + + DINT#1 // Vereinzelungen +1 + T Dyn.Vereinzelungstakte + +CALL FC "Trolley_DL_Neue_Pos" (Gesamt_Trolley_DL:=Schleuse.Gesamt_Trolley_DL, TrolleyID:=Dyn.TrolleyID_Schleuse, Position:=Schleuse.Leser_ID, ShopGroup:=Dint#0, Err:="M199.0") + +// Draussen-FC ?: + AN DraussenFC_vorhanden + JC RET // Bei diesem Schritt weiter + + L Schleusen_Nr // Schleusen-Nr. + T "MW190" + + UC DB[DraussenFC] // z.Bsp. Daten anpassen + + JU RET + +Normal: A "M180.6" // Weiterfahrt von Ziel-FC erlaubt + JC X012 + + AN Schleuse.Parameter_allg.Leser_eingebaut + JC RET + + L 11 + T Dyn.Sk.Neu_Schritt // Schritt, der im nächsten Zyklus aktiv werden soll + + JU RET + +X012: L "MW196" // zurückschreiben, falls verändert + T Dyn.Trolley_ZwischenZiel + + L "MW198" // Weichenziel übergeben + T Dyn.Weichen_Ziel + + L 13 // Weiter mit Schritt 13 + JU Neu_Mig // Bei diesem Schritt weiter + + +--- NW 35: Schritt 13: Schleusen-Position zurückschreiben --- +s013: NOP 0 + +// Schrittaktionen: + SET + S Status2."Weichen-Schritt" + +// Neue Position an Gesamt-Trolley-DL übergeben: +CALL FC "Trolley_DL_Neue_Pos" (Gesamt_Trolley_DL:=Schleuse.Gesamt_Trolley_DL, TrolleyID:=Dyn.TrolleyID_Schleuse, Position:=Schleuse.Leser_ID, ShopGroup:=DInt#0, Err:="M199.0") // für nichts verändern + + L 0 // Angabe der Wartezeit (*10ms) + JU Plus // Nächsten Schritt starten + + +--- NW 36: Schritt 14: Weichenbereich +1 vorhanden --- +s014: NOP 0 + +// Schrittaktionen: +// Weichenbereich +1 vorhanden?: + A "Kein_Weichenbereich +1" + L 2 // Weiter mit Schritt 2 (Ausfahren ok?) + JC Neu_Mig // Bei diesem Schritt weiter + + SET + S Status2."Weichen-Schritt" + + L 0 // Angabe der Wartezeit (*10ms) + JU Plus // Nächsten Schritt starten + + +--- NW 37: Schritt 15: Weichenbereich raus bereit ? --- +s015: NOP 0 + +// Schrittaktionen: + AN Status2.Trolley_an_Schleuse // Trolley im Schleuse erkannt + L 0 // Weiter mit Schritt 0 + JC Neu_Mig // Bei diesem Schritt weiter + + SET + S Status2."Weichen-Schritt" + + L Dyn.Weichen_Ziel + L 0 // Bekannt ? + <>I // Ja ! + JC X15A + + L 12 // Ziel-FC ? + T Dyn.Sk.Neu_Schritt // Schritt, der im nächsten Zyklus aktiv werden soll + + L 16#B154 + T Dyn.Stop_Ursache + + JU RET + +X15A: SET + S Dyn.Status."Trolley_wartet_auf_Weiche+1" + + L 16#B155 + T Dyn.Stop_Ursache + + L SAVE.Weichen_DB // Weichen-DB + L 0 // Einsprung-Zeiger bekannt ? + >I // Ja ! + JC S015A + + L 16#B150 + T Dyn.Stop_Ursache + + JU RET + +// Weichendaten auslesen: +S015A: L SAVE.Weichen_DW + ITD + T AR1Start // Startwert mit Offset 0 + + L AR1Start // Startwert mit Offset 0 + + DINT#70 + SLD 3 + L 0 // Damit DBX70.0 + OD + T AR1Zeiger // Statt Dyn.Bereichsstop (ging nur bis DB-Länge <= 8191 Bytes) + + L 16#B152 + T Dyn.Stop_Ursache + + OPN DB[SAVE.Weichen_DB] // FABE+ -DB öffnen + + AN DBX [AR1Zeiger] // Weichenbereich frei ? (DBX70.0) + JC S015B + + L 16 // Weiter mit Schritt 16 (Daten an Weiche übergeben) + JU Neu_Mig // Bei diesem Schritt weiter + +// Reservierung noch diese Schleuse ?: +S015B: L AR1Start // Startwert mit Offset 0 + + DINT#78 + SLD 3 + T AR1Zeiger // Statt Dyn.Bereichsstop (ging nur bis DB-Länge <= 8191 Bytes) + + OPN DB[SAVE.Weichen_DB] // FABE+ -DB öffnen + + L DBW [AR1Zeiger] // Schleuse -1 (DBW 78) + L Schleusen_Nr // Diese Schleuse ? + <>I // Nein ! + L 16#B156 + JC X015 // Warten ! + +// Dasselbe Weichen-Ziel ?: + L Dyn.Weichen_Ziel // Gewolltes Ziel + L Dyn."Zurück_gemeldetes_Weichen_Ziel" // Aktuell im Weichenbereich aktives Ziel + <>I // Sind nicht identisch ! + L 16#B157 + JC X015 // Warten ! + + L 16 // Weiter mit Schritt 16 (Daten an Weiche übergeben) + JU Neu_Mig // Bei diesem Schritt weiter + +X015: T Dyn.Stop_Ursache + + L 12 // Ziel-FC ? + T Dyn.Sk.Neu_Schritt // Schritt, der im nächsten Zyklus aktiv werden soll + + JU RET // Warten ! + + +--- NW 38: Schritt 16: Daten an Rausweiche übergeben --- +s016: NOP 0 + +// Schrittaktionen: + SET + S Status2."Weichen-Schritt" + +// Daten für Eintrag vorbereiten: + OPN DB[SAVE.Weichen_DB] // FABE+ -DB öffnen + + L AR1Start // Startwert mit Offset 0 + + DINT#72 + SLD 3 + T AR1Zeiger // Statt Dyn.Bereichsstop (ging nur bis DB-Länge <= 8191 Bytes) + + L Dyn.TrolleyID_Schleuse + T DBD [AR1Zeiger] // Trolley-ID (DBD 72) + + L AR1Start // Startwert mit Offset 0 + + DINT#76 + SLD 3 + T AR1Zeiger // Statt Dyn.Bereichsstop (ging nur bis DB-Länge <= 8191 Bytes) + + L Dyn.Weichen_Ziel + T DBW [AR1Zeiger] // Weichenziel (DBW 76) + + L AR1Start // Startwert mit Offset 0 + + DINT#80 + SLD 3 + T AR1Zeiger // Statt Dyn.Bereichsstop (ging nur bis DB-Länge <= 8191 Bytes) + + L Dyn.Trolley_ZwischenZiel + T DBW [AR1Zeiger] // Zwischenziel (DBW 80) + + L AR1Start // Startwert mit Offset 0 + + DINT#78 + SLD 3 + T AR1Zeiger // Statt Dyn.Bereichsstop (ging nur bis DB-Länge <= 8191 Bytes) + + L Schleusen_Nr + T DBW [AR1Zeiger] // Schleuse -1 (DBW 78) + + SET + S "Reservierung_Weiche+1_aktiv" // Weiche nicht mehr angemeldet (da erst im nächsten Zyklus) + + L Schleuse.RausWeichen_Nr // Nr. der vorhandenen Weiche + T SAVE."Weiche+1" // Hier wurde reserviert + + L 17 // Weiter mit Schritt 17 (Hat Weiche geschaltet ?) + JU Neu_Mig // Bei diesem Schritt weiter + + +--- NW 39: Schritt 17: Hat Rausweiche geschaltet ? --- +s017: NOP 0 + +// Schrittaktionen: + SET + S Status2."Weichen-Schritt" + +// Weiche +1 noch mit dieser Schleuse aktiv ?: + AN "Reservierung_Weiche+1_aktiv" // Weiche nicht mehr angemeldet + L 14 // Weiter mit Schritt 14 + JC Neu_Mig // Bei diesem Schritt weiter + + SET + S Dyn.Status."Trolley_wartet_auf_Weiche+1" + + L 16#B170 + T Dyn.Stop_Ursache + + L Dyn.Weichen_Ziel // Gewolltes Ziel + L Dyn."Zurück_gemeldetes_Weichen_Ziel" // Aktuell im Weichenbereich aktives Ziel + ==I // Sind identisch ! + A Dyn.Status.Weiche_geschaltet // Rückmeldung von Weiche +1 + L 2 // Weiter mit Schritt 2 (Ausfahren ok?) + JC Neu_Mig // Bei diesem Schritt weiter + + L 16#B171 + T Dyn.Stop_Ursache + + JU RET + + +--- NW 40: Schritt 20: Schleuse resetten (Wartezeit) --- +s020: A B_InSchleuse // Weiterschaltbedingung + = Weiter // Weiterschaltbedingung ist erfüllt + +// Schrittaktionen: + SET // ELS in Grundstellung fahren + S Antrieb_Schleuse_vor // Antrieb einschalten + S Antrieb_Schleuse_start // Antrieb starten + + A Weiter + O Dyn.Sk.Err_Uebzeit + R Dyn.Sk.Err_Uebzeit // Sofort weiter ! + L 21 // Weiter mit Schritt 21 + JC Neu_Mig // Bei diesem Schritt weiter + + L 16#B201 + T Dyn.Stop_Ursache + + SET + = Ueb_akt // Überwachungszeit aktivieren + L Schleuse.Wartezeit_bis_leer // Angabe der Überwachungszeit (*1s) + JU tueb // Überwachungszeit + + +--- NW 41: Schritt 21: Reset ist zu Ende --- +s021: SET + R Dyn.Sk.Reset_Akt // Reset ist aktiv + R Status2."TrolleyPos_übergeben" + R Dyn.Error.Err_Trolley_nicht_in_Schleuse // Trolley fährt nicht in Schleuse + R Dyn.Error.Err_Uebzeit // Überwachungzeit ist abgelaufen + R Dyn.Error.Err_Stau_Einfahrt // Betriebsart ist nicht möglich + R Dyn.Error.Err_Trolley_raus // Trolley fährt nicht aus + R Dyn.Status."Trolley_fährt_in_Schleuse" + + L 0 + T SAVE.Weichen_DB + T SAVE.Weichen_DW + T SAVE."Weiche+1" // Dadurch wird in Weiche Reservierung gelöscht + T Dyn.Raus_Trolleys + T Dyn.Stau_Zeit // Sensor B_VorSep ist belegt [1s] + T Dyn.Mindest_Zeit // Sensor B_VorSep ist frei [1s] + + SET + S Dyn.Status.Trolley_draussen + + JU ENDE_Mig // Neubeginn + + +--- NW 42: Schrittkette beenden --- +ENDE_Mig: L 0 // Schritt 0: Warten + T Dyn.Sk.Akt_Schritt + + L 0 // Zeitwert löschen + T Dyn.Sk.Terr_Zelle + T Dyn.Sk.Tok_Zelle + T Dyn.ZwischenZiel_eingefahren + + L DINT#0 + T Dyn.TrolleyID_Eingefahren // Eintrag von Weiche -1 + T Dyn.TrolleyID_Schleuse // Daten übergeben + T Dyn.Trolley_ZwischenZiel + T Dyn.Trolley_EndZiel + T Dyn.Weichen_Ziel + + SET + R Dyn.Sk.Err_Uebzeit + R Dyn.Status."Trolley_fährt_rückwärts" + R Dyn.Error.Err_Kein_LeseErgebnis + R Status2."2.Lesung_aktiv" + R Status2."3.Lesung_aktiv" + R Status2."TrolleyPos_übergeben" + R Status2.Telegramm_gesendet + +// HMI-Zeug: + L DINT#0 + T Dyn.HMI.TrolleyID_Input + + JU RET + + +--- NW 43: Nächsten Schritt aktivieren --- +Plus: T Dyn.Sk.T_ok // Wartezeit übergeben + + A Dyn.Sk.Err_Uebzeit // Störung noch nicht quittiert + JC RET + + L 0 // keine Wartezeit ? + ==I // Ja ! -> sofort weiter + JC w220 + + AN Warte_neu // Wartezeit neutriggern + JC W220_Mig + + L 0 + T Dyn.Sk.Tok_Zelle // Wartezeit + +W220_Mig: A Warte_stop // Wartezeit stoppen + JC RET + + L Dyn.Sk.Tok_Zelle + L "MW4" // Wartezeit +10ms + +I + T Dyn.Sk.Tok_Zelle // Wartezeit + L Dyn.Sk.T_ok // abgelaufen ? + I // abgelaufen ? + AN Dyn.Sk.Err_Uebzeit + JC en24 // Nein ! + + A Ueb_akt // Überwachungszeit aktivieren + S Dyn.Sk.Err_Uebzeit + + L 0 // Zeitwert löschen + T Dyn.Sk.Terr_Zelle + + JU RET + +en24: NOP 0 + +--- NW 45: Überwachungszeit +1 --- + AN Dyn.Sk.Ueb_akt // Schrittaktion ist aktiv + ON "1s-Impuls" + JC RET + + L Dyn.Sk.Terr_Zelle + + 1 // Üb.zeit +1s + T Dyn.Sk.Terr_Zelle + + JU RET + + +--- NW 46: Return --- +RET: NOP 0 +// Weichen -R ückmeldung löschen: + SET + R Dyn.Status.Weiche_geschaltet + R Dyn.Status."Trolley ausserhalb Weiche" + + L 0 + T Dyn."Zurück_gemeldetes_Weichen_Ziel" + + +--- NW 47: Leser-Einheit managen (Outputs schreiben) --- + AN Leser_Zugriff + ON Schleuse.Parameter_allg.Leser_eingebaut + JC NixLeser + +// Leserdaten schreiben: + OPN DB[Dyn.SAVE2.Leser_DB] // Leser -DB öffnen + + L Dyn.SAVE2.Leser_DD + T AR1Start // Startwert mit Offset 0 + +// Offset 4: + L AR1Start // Startwert mit Offset 0 + + DINT#4 + SLD 3 + T AR1Zeiger // Statt Dyn.Bereichsstop (ging nur bis DB-Länge <= 8191 Bytes) + + L DBB [AR1Zeiger] // Aktuelle Werte holen + T "MB200" + + A Dyn.Leser.OUT.xInStartReading + = "M200.1" + A Dyn.Leser.OUT.xInHandshakeDone + R Dyn.Leser.OUT.xInHandshakeDone + = "M200.2" + A Dyn.Leser.OUT.xInErrQuit + R Dyn.Leser.OUT.xInErrQuit + = "M200.4" + A Dyn.Leser.OUT.xInReset + R Dyn.Leser.OUT.xInReset + = "M200.5" + + L "MB200" + T DBB [AR1Zeiger] // Veränderte Werte zurück schreiben + +NixLeser: NOP 0 + + +--- NW 48: Ende --- + BE + diff --git a/=A01+UH06-KF00/Programmbausteine/Module/MHMOmniWeiche.awl b/=A01+UH06-KF00/Programmbausteine/Module/MHMOmniWeiche.awl new file mode 100644 index 0000000..48f704a --- /dev/null +++ b/=A01+UH06-KF00/Programmbausteine/Module/MHMOmniWeiche.awl @@ -0,0 +1,913 @@ +=== FB 1279: MHMOmniWeiche [STL] === +INTERFACE: + Input: + Weichen_Nr : Int // Aufruf für Weiche + ErrQuit : Bool // Ablaufstörung quittieren + Fahren_Ok : Bool // Fahren Ok + B_Ziel_gerade : Bool // Ziel-Sensor gerade + B_Ziel_abzweig : Bool // Ziel-Sensor abzweig + Antrieb_Weiche_aktiv : Bool // Weichen-Antrieb aktiv + Antrieb_Gerade_aktiv : Bool // Gerade-Antrieb aktiv + Antrieb_Abzweig_aktiv : Bool // Abzweig-Antrieb aktiv + Weiche_ist_AST : Bool // Weiche ist auf Arbeitsstellung + Output: + Y_Weiche_gerade : Bool // Weiche auf Gerade schalten + Y_Weiche_abzweig : Bool // Weiche auf Abzweig schalten + Error : Word // Störungen übergeben + InOut: + Antrieb_Weiche_vor : Bool // Weichenantrieb einschalten + Antrieb_Weiche_stop : Bool // Weichenantrieb stoppen + Antrieb_Weiche_gerade_vor : Bool // Weichenantrieb gerade einschalten + Antrieb_Weiche_gerade_stop : Bool // Weichenantrieb gerade stoppen + Antrieb_Weiche_abzweig_vor : Bool // Weichenantrieb abzweig einschalten + Antrieb_Weiche_abzweig_stop : Bool // Weichenantrieb abzweig stoppen + hStOk : Bool // Anzeige Start n. Störung aktivieren + Static: + SAVE : Struct + Schleusen_DB : Int // Schleuse-1-DB + Schleuse-1_DW : Int // Schleuse-1-DW + Res : Array[1..3] of Int // Reserve + Para : Struct // Parameter + Weichen_DL_DB : Int // Einsprung Weichen-Datenliste-DB + Weichen_DL_DW : Int // Einsprung Weichen-Datenliste-DW + Schleusen_DL_DB : Int // Einsprung Schleuse-Datenliste-DB + Schleusen_DL_DW : Int // Einsprung Schleuse-Datenliste-DW + Res1 : Array[1..1] of Int // Reserve + Weiche : "UDLOmniWeiche_2fach" // Fahrbereichs Daten + Dyn : Struct // Dynamische Daten fürs Einfahren + Status : Struct // Status + Weiche_frei : Bool // Rückmeldung: Weiche ist wieder frei + Kein_StartOk : Bool // Input StartOk <>1 + Weiche_abzweigen : Bool // Weiche auf Abzweig schalten + Weiche_geradeaus : Bool // Weiche auf Gerade schalten + MindestZeit_ok : Bool // Mindestzeit für Weichendurchfahrt erreicht? + Ziel_erreicht : Bool // Ziel erreicht + Reservierung _noch aktiv : Bool // Reservierung noch aktiv! + Weiche_aktiv : Bool // Weiche ist aktiv + Auto_akt : Bool + Hand_akt : Bool + Bereich_ok : Bool + MindestZeit_nachtriggern : Bool // Mindestzeit nachtriggern + Res14 : Bool + Res15 : Bool + Error_aktiv : Bool // Störung vorhanden + Reset_aktiv : Bool := TRUE // Reset aktiv + TrolleyID : DInt // Trolley-Nr (Eintrag Schleuse, Austrag Weiche) + Weichen_Ziel : Word // Weichen-Ziel (Eintrag Schleuse, Austrag Weiche) + Schleuse -1 : Int // Schleuse, woher Ziel kam + Zwischen_Ziel : Word // Zwischen-Ziel + HMI : Struct + TrolleyID_Weiche : DInt // Trolley-Nr im Weichenbereich (IN:PLC, OUT:PLC) + WeichenZiel : DInt // Ziel im Weichenbereich (IN:PLC, OUT:PLC) + Weiche_resetten : Bool // Weiche resetten (IN:HMI, Out:PLC) + Rueckmld : Struct + RET_VAL_BLKMOV_Weiche : Int // Rückmeldung nach BLKMOV-Aufruf + RET_VAL_DL_Weichen : Byte // Rückmeldung nach DatenOut-Aufruf + RET_VAL_DL_Schleusen : Byte // Rückmeldung nach DatenOut-Aufruf + Error : "UErrOmniWeiche_2fach" + FahrKontrolle : Struct + Para_Mindestzeit : Int // BM erst nach dieser Zeit im Ziel + Para_Überwachungszeit : Int // BM nach dieser Zeit in Weiche verklemmt + Akt_Mindestzeitzeit : Int // BM erst nach dieser Zeit im Ziel + Akt_Überwachungszeit : Int // BM nach dieser Zeit in Weiche verklemmt + Leer_Zeit : Int // Lager ist frei [1s] + Schalttakte : DInt // Anzahl der getätigten Umschaltungen + Frei200 : Array[1..44] of Int + Temp: + Quelle : Any // Zeiger, wo Rein-Daten sind + Ziel : Any // Zeiger, FIFO-Stelle + Parameter : Word // Parameter + AR1Zeiger : DWord // Statt AR1 (ging nur bis DB-Länge <= 8191 Bytes) + AR1Start : DInt // Startwert mit Offset 0 + Bereich+1ID : Int + Bereich+1_DB : Int + Keine_Einfahrt : Bool // Keine Einfahrt angemeldet + Err_Bereich+1 : Bool + Abzweig_Ziel : Bool + Gerade_Ziel : Bool + Antriebe_ein : Bool + Constant: + +--- NW 1: Parameter-Übergabe --- + L Weichen_Nr // Aufruf-Parameter (für Baustein beobachten) + + L 279 // Einsprung Weichen-DL + T Para.Weichen_DL_DB // vor Aufruf übergeben! + L 0 + T Para.Weichen_DL_DW + + L 274 // Einsprung Schleuse-DL + T Para.Schleusen_DL_DB // vor Aufruf übergeben! + L 0 + T Para.Schleusen_DL_DW + + +--- NW 2: Gesamt: Out-Bits zum Zurücksetzen --- + L Weichen_Nr + + SET +// R #Y_Weiche_gerade //Wegen Reset +// R #Y_Weiche_abzweig //Wegen Reset + + SET // Erst mal + R Dyn.Status.Weiche_frei + S Dyn.Status.Weiche_aktiv + + +--- NW 3: HMI-Zeug --- +// Von HMI: + A Dyn.HMI.Weiche_resetten + R Dyn.HMI.Weiche_resetten // von HMI + S Dyn.Status.Reset_aktiv + JCN HMI1 + + L 0 + T Dyn.Leer_Zeit // da kein Sk + T Dyn.FahrKontrolle.Akt_Mindestzeitzeit + T Dyn.FahrKontrolle."Akt_Überwachungszeit" + + SET + R Dyn.Error."Übzeit_Gerade" + R Dyn.Error."Übzeit_Abzweig" + +// An HMI: +HMI1: L Dyn.TrolleyID + T Dyn.HMI.TrolleyID_Weiche + + L Dyn.Weichen_Ziel + T Dyn.HMI.WeichenZiel + + +--- NW 4: Störungen nach Außen übergeben --- + L 0 + T "MB200" + + A Dyn.Error.Weichen_DL // Weichen-Datenliste fehlerhaft + = "M200.0" + A Dyn.Error.Undef_Weiche // undefinierte Weiche + = "M200.1" + A Dyn.Error.BLKMov // Fehler bei Block kopieren + = "M200.2" + A Dyn.Error."Undef_Bereich+1" + = "M200.3" + A Dyn.Error.Frei04 + = "M200.4" + A Dyn.Error.Frei05 + = "M200.5" + A Dyn.Error.Ziel_undefiniert + = "M200.6" + A Dyn.Error.Err_Schleusen_DL + = "M200.7" + A Dyn.Error."Err_Undef_Schleuse-1" + = "M201.0" + A Dyn.Error."Übzeit_Gerade" // BM bei Weiterfahrt in Weiche verklemmt (-> Antrieb stoppen) + = "M201.1" + A Dyn.Error."Übzeit_Abzweig" // BM bei Ausfahrt in Weiche verklemmt (-> Antrieb stoppen) + = "M201.2" + A Dyn.Error.Gerade_Sensor_aktiv + = "M201.3" + A Dyn.Error.Abzweig_Sensor_aktiv + = "M201.4" + A Dyn.Error.Gerade_Bereich_belegt + = "M201.5" + A Dyn.Error.Abzweig_Bereich_belegt + = "M201.6" + A Dyn.Status.Reset_aktiv + = Dyn.Error.Reset_aktiv + = "M201.7" + + L "MW200" + T Error // Schnittstelle nach Außen + +// Störung vorhanden: + L 0 + <>I // Ja ! + = Dyn.Status.Error_aktiv + +// Anzeige Start n. Störung aktivieren: + A Dyn.Error."Übzeit_Gerade" // BM bei Weiterfahrt in Weiche verklemmt (-> Antrieb stoppen) + O Dyn.Error."Übzeit_Abzweig" // BM bei Ausfahrt in Weiche verklemmt (-> Antrieb stoppen) + S hStOk + + +--- NW 5: Statische Weichen-Parameter holen --- + L Weiche.Weichen_Nr // Nummer der Weiche + L Weichen_Nr // Aufruf-Parameter + ==I // Identisch ? + R Dyn.Error.Weichen_DL // Weichendatenbank fehlerhaft + R Dyn.Error.Undef_Weiche // undefinierte Weiche + JC en06_Mig // Ja ! + + T "MW200" // Search-Daten + +CALL FC "DatenOut" (SSDB:=Para.Weichen_DL_DB, SSDW:=Para.Weichen_DL_DW, PARA:=WORD#16#0000, SEARCHDATEN:=P#M200.0, RE_VAL:="MB199", OUTDATEN:=P#M220.0, Position:="MW196") + + L "MB199" + T Dyn.Rueckmld.RET_VAL_DL_Weichen // Rückmeldung bei Datenbank-Zugriff (Gefälle-DL) + + JBI G_Ok + + A "M199.0" + = Dyn.Error.Weichen_DL // Weichendatenbank fehlerhaft + BEC + + SET + S Dyn.Error.Undef_Weiche // undefinierte Weiche + + BEU + +// Kennung + Datenbytes +G_Ok: SET + R Dyn.Error.Weichen_DL // Weichendatenbank fehlerhaft + R Dyn.Error.Undef_Weiche // undefinierte Weiche + + L 16#1004 // Kennung 10 + Word=04 + T LW0 // Any-Kennung, Datentyp + L 40 // Datenwords speichern + T LW2 // Wiederholungen + +// Quelle-Pointer erzeugen: + L 0 // Bei Merker = 0 ! + T LW4 // DB_Nummer + L 220 // Adresse + SLD 3 + L 16#8300_0000 // Kennung: Merker + OD + T LD6 // Kennung, Adresse + +CALL SYS "BLKMOV" (SRCBLK:=Quelle, RET_VAL:=Dyn.Rueckmld.RET_VAL_BLKMOV_Weiche, DSTBLK:=Weiche) // Datenliste-Daten speichern | #Ziel + + L Dyn.Rueckmld.RET_VAL_BLKMOV_Weiche // Rückmeldung + L 0 // Fehler vorhanden ? + <>I // Ja ! + = Dyn.Error.BLKMov // Error bei Block kopieren + BEC + + L Weiche.Weichen_Typ // Weichentyp = 279 (Weiche 2fach) + L 279 // Dieser Aufruf-FB ? + ==I // Ja ! + JC en06_Mig + + SET + S Dyn.Error.Undef_Weiche // undefinierte Weiche + + L 0 // Weiche ungültig ! + T Weiche.Weichen_Nr // Nummer der Weiche + + BEU + +en06_Mig: NOP 0 + + +--- NW 6: + --- + AN Dyn.Status.Reset_aktiv + JC En06 + + SET + S Antrieb_Weiche_vor + S Antrieb_Weiche_gerade_vor // Antrieb gerade einschalten + S Antrieb_Weiche_abzweig_vor // Antrieb abzweig einschalten + + AN Antrieb_Weiche_aktiv + ON "1s-Impuls" + JC En06 + + L Dyn.Leer_Zeit // Zeit für LeerCheck [1s] + + +1 + T Dyn.Leer_Zeit // Zeit für LeerCheck [1s] + + L Weiche.Wartezeit_bis_Weiche_leer // Leer-Zeit erreicht ? + I // Ja ! + R Dyn.Error.Err_Schleusen_DL // Schleusen-Datenliste fehlerhaft + R Dyn.Error."Err_Undef_Schleuse-1" // undefinierte Schleuse-1 + JC En08 + +CALL FC "DatenOut" (SSDB:=Para.Schleusen_DL_DB, SSDW:=Para.Schleusen_DL_DW, PARA:=WORD#16#0000, SEARCHDATEN:=P#M200.0, RE_VAL:="MB199", OUTDATEN:=P#M220.0, Position:="MW196") + + L "MB199" + T Dyn.Rueckmld.RET_VAL_DL_Schleusen // Rückmeldung bei Datenbank-Zugriff (Weichen-DL) + + JBI W_Ok + + A "M199.0" + = Dyn.Error.Err_Schleusen_DL // Schleusen-Datenliste fehlerhaft + BEC + + SET + S Dyn.Error."Err_Undef_Schleuse-1" // undefinierte Schleuse-1 + + BEU + +W_Ok: L "MW224" // Rein-FIFO-DB + T SAVE.Schleusen_DB // Weichen-FIFO-DB + L 0 // sinnvoller Wert ? + <=I // Nein ! + S Dyn.Error."Err_Undef_Schleuse-1" // undefinierte Schleuse-1 + BEC + + L "MW226" // Rein-FIFO-DW + T SAVE."Schleuse-1_DW" // Weichen-FIFO-DW + + BEU + +En08: NOP 0 + + +--- NW 8: + --- +// Antrieb zusätzlich starten: + A ErrQuit // Überwachungszeit abgelaufen quittieren + S Antrieb_Weiche_vor // Weichenantrieb starten + S Antrieb_Weiche_gerade_vor // Antrieb gerade einschalten + S Antrieb_Weiche_abzweig_vor // Antrieb abzweig einschalten + + AN ErrQuit + AN Keine_Einfahrt + JC En08_Mig + +// Störungen löschen: + SET + R Dyn.Error.Ziel_undefiniert + R Dyn.Error.Err_Schleusen_DL + R Dyn.Error."Err_Undef_Schleuse-1" + R Dyn.Error."Übzeit_Gerade" + R Dyn.Error."Übzeit_Abzweig" + R Dyn.Error.Gerade_Sensor_aktiv + R Dyn.Error.Abzweig_Sensor_aktiv + R Dyn.Error.Gerade_Bereich_belegt + R Dyn.Error.Abzweig_Bereich_belegt + +// Kann nur über Reset zurückgesetzt werden: +// / R #Dyn.Error.Weichen_DL +// / R #Dyn.Error.Undef_Weiche +// / R #Dyn.Error.BLKMov +// / R #Dyn.Error."Undef_Bereich+1" +// / R #Dyn.Error.Frei04 +// / R #Dyn.Error.Frei05 +// / R #Dyn.Error.Reset_aktiv//Reset ist aktiv + +En08_Mig: NOP 0 + + +--- NW 9: Einfahrt angemeldet/reserviert ? --- + A Keine_Einfahrt // Also keine Schleuse -1 aktiv + O Dyn.Error.Err_Schleusen_DL // Schleusen-Datenliste fehlerhaft + O Dyn.Error."Err_Undef_Schleuse-1" // undefinierte Schleuse-1 + JCN Schalt // Negierter Sprung! + +// Einsprung löschen: + L 0 + T SAVE.Schleusen_DB + T SAVE."Schleuse-1_DW" + +// Weichendaten löschen: + L DINT#0 + T Dyn.TrolleyID + L 0 + T Dyn.Weichen_Ziel + T Dyn.Zwischen_Ziel + T Dyn.FahrKontrolle."Akt_Überwachungszeit" + + SET + R Dyn.Status.Kein_StartOk + R Dyn.Status.MindestZeit_ok + R Dyn.Status.Ziel_erreicht + R Dyn.Status."Reservierung _noch aktiv" + R Dyn.Status.Weiche_geradeaus + R Dyn.Status.Weiche_abzweigen + + JU Ret // Weichen-Checkerei überspringen + + +--- NW 10: Weiche aufgrund vom Weichen-Ziel checken --- +// Ziel-Check für Kontrolle: +Schalt: L Dyn.Weichen_Ziel + L Weiche.Abzweig.Ziel // Abzweig-Ziel? + ==I // Ja! + = Abzweig_Ziel + + CAC + L Weiche.Gerade.Ziel // Gerade-Ziel? + ==I // Ja! + = Gerade_Ziel + + A Dyn.Status."Reservierung _noch aktiv" // Schleuse -1 muss Reservierung noch löschen! + JC Ret // Damit Meldung an Schleuse -1 + + A Dyn.Status.Weiche_abzweigen // Weiche auf Abzweig schalten + O Dyn.Status.Weiche_geradeaus // Weiche auf Gerade schalten + O Dyn.Status."Reservierung _noch aktiv" // Schleuse -1 + R Dyn.Error.Ziel_undefiniert + R Dyn.Error.Gerade_Sensor_aktiv + R Dyn.Error.Abzweig_Sensor_aktiv + R Dyn.Error.Gerade_Bereich_belegt + R Dyn.Error.Abzweig_Bereich_belegt + JC en10 + + AN Fahren_Ok + = Dyn.Status.Kein_StartOk + JC Ret + +// Ziel-Check zum Schalten: + L Dyn.Weichen_Ziel + L 0 + ==I + S Dyn.Error.Ziel_undefiniert + JC New + + CAC + L Weiche.Abzweig.Ziel // Abzweig-Ziel? + ==I // Ja! + JC Abzweigen + + CAC + L Weiche.Gerade.Ziel // Gerade-Ziel? + ==I // Ja! + O( + L 16#FFFF // Universal-Ziel? + ==I // Ja! + ) + JC Gerade + + SET + S Dyn.Error.Ziel_undefiniert + + JU New + +Gerade: NOP 0 +// Gerade-Fahrt gewünscht************************************************** +// Ziel-Sensor-Check: + A B_Ziel_gerade + = Dyn.Error.Gerade_Sensor_aktiv + A Dyn.Error.Gerade_Sensor_aktiv // Muss erst quittiert werden! + JC New + +// Bereich-1-Check: + AN Weiche.Parameter."Bereich+1_Gerade" // Datenbereich +1? + JC GOk + +// Bereich +1 frei ? + L Weiche.Gerade."Bereich+1" + T "Bereich+1ID" + +CALL FC "DL_Einsprung" (Bereich_DL:=274, ID:="Bereich+1ID", Dyn.DB:="Bereich+1_DB", AR_Start:=AR1Start, Error:="Err_Bereich+1") + + A "Err_Bereich+1" + = Dyn.Error."Undef_Bereich+1" + JC New + + OPN DB["Bereich+1_DB"] // Bereich+1 -DB öffnen + + L AR1Start // Startwert mit Offset 0 + + DINT#86 + SLD 3 + T AR1Zeiger // Statt Dyn.Bereichsstop (ging nur bis DB-Länge <= 8191 Bytes) + + L DBD [AR1Zeiger] // Trolley-ID (DBD 86) + L 0 // Daten vorhanden ? + <>I + = Dyn.Error.Gerade_Bereich_belegt + JC New + +// Trolley geradeaus fahren: +GOk: SET + S Dyn.Status.Weiche_geradeaus // Weiche auf Gerade schalten + R Dyn.Status.Weiche_abzweigen // Weiche auf Abzweig schalten + +// Zeiten speichern: + L Weiche.Gerade.Mindestzeit // Nach dieser Zeit kann Trolley erst aus Weiche sein + T Dyn.FahrKontrolle.Para_Mindestzeit + L Weiche.Gerade."Überwachungszeit" // Nach dieser Zeit muss Trolley Zielbereich erreicht haben + T Dyn.FahrKontrolle."Para_Überwachungszeit" + + JU en10 + +Abzweigen: NOP 0 +// Abzweig-Fahrt gewünscht************************************************** +// Ziel-Sensor-Check: + A B_Ziel_abzweig + = Dyn.Error.Abzweig_Sensor_aktiv + A Dyn.Error.Abzweig_Sensor_aktiv // Muss erst quittiert werden! + JC New + +// Bereich+1-Check: + AN Weiche.Parameter."Bereich+1_Abzweig" // Datenbereich +1? + JC AOk + +// Bereich +1 frei ? + L Weiche.Abzweig."Bereich+1" + T "Bereich+1ID" + +CALL FC "DL_Einsprung" (Bereich_DL:=274, ID:="Bereich+1ID", Dyn.DB:="Bereich+1_DB", AR_Start:=AR1Start, Error:="Err_Bereich+1") + + A "Err_Bereich+1" + = Dyn.Error."Undef_Bereich+1" + JC New + + OPN DB["Bereich+1_DB"] // Bereich+1 -DB öffnen + + L AR1Start // Startwert mit Offset 0 + + DINT#86 + SLD 3 + T AR1Zeiger // Statt Dyn.Bereichsstop (ging nur bis DB-Länge <= 8191 Bytes) + + L DBD [AR1Zeiger] // Trolley-ID (DBD 86) + L 0 // Daten vorhanden ? + <>I + = Dyn.Error.Abzweig_Bereich_belegt + JC New + +// Trolly abzweigen fahren: +AOk: SET + S Dyn.Status.Weiche_abzweigen // Weiche auf Abzweig schalten + R Dyn.Status.Weiche_geradeaus // Weiche auf Gerade schalten + +// Zeiten speichern: + L Weiche.Abzweig.Mindestzeit // Nach dieser Zeit kann Trolley erst aus Weiche sein + T Dyn.FahrKontrolle.Para_Mindestzeit + L Weiche.Abzweig."Überwachungszeit" // Nach dieser Zeit muss Trolley Zielbereich erreicht haben + T Dyn.FahrKontrolle."Para_Überwachungszeit" + + JU en10 + +New: AN ErrQuit + JC en10 + + L 0 // Reservierung löschen + T Dyn."Schleuse -1" + +en10: NOP 0 + + +--- NW 11: Mindestzeit / Überwachungszeit --- + A Gerade_Ziel + A( + ON Y_Weiche_gerade + ON Antrieb_Gerade_aktiv + ) + O + A Abzweig_Ziel + A( + ON Y_Weiche_abzweig + ON Antrieb_Abzweig_aktiv + ) + JC W011 + +// Mindestzeit neu triggern: + A Dyn.Status.MindestZeit_nachtriggern + R Dyn.Status.MindestZeit_nachtriggern + JCN X011 // Negierter Sprung + +W011: L 0 + T Dyn.FahrKontrolle.Akt_Mindestzeitzeit + + JU y011 + +// Zeiten aufaddieren: +X011: AN "1s-Impuls" // 1s-Impuls + ON Antrieb_Weiche_aktiv + JC X08E + + L Dyn.FahrKontrolle.Akt_Mindestzeitzeit + + 1 + T Dyn.FahrKontrolle.Akt_Mindestzeitzeit + +y011: L Dyn.FahrKontrolle.Akt_Mindestzeitzeit + L Dyn.FahrKontrolle.Para_Mindestzeit + >=I + = Dyn.Status.MindestZeit_ok + JCN X080 + + T Dyn.FahrKontrolle.Akt_Mindestzeitzeit + +X080: A Dyn.Status.Ziel_erreicht + O Dyn.Error."Übzeit_Gerade" + O Dyn.Error."Übzeit_Abzweig" + ON "1s-Impuls" // 1s-Impuls + ON Antrieb_Weiche_aktiv + JC X08E + + L Dyn.FahrKontrolle."Akt_Überwachungszeit" + + 1 + T Dyn.FahrKontrolle."Akt_Überwachungszeit" + + L Dyn.FahrKontrolle."Para_Überwachungszeit" + Trolley_ist_in_Vorstau_eingefahren : Bool // IN: Trolley ist in Vorstau eingefahren + PC>Trolley_zum_Platz_1_starten : Bool // Von PC: Trolley zum Platz 1 starten + PC>Trolley_zum_Platz_2_starten : Bool // Von PC: Trolley zum Platz 2 starten + PC>Trolley_zum_Platz_3_starten : Bool // Von PC: Trolley zum Platz 2 starten + Trolley_ist_in_Platz_1_eingefahren>PC : Bool // An PC: Trolley ist in Platz 1 eingefahren + Trolley_ist_in_Platz_2_eingefahren>PC : Bool // An PC: Trolley ist in Platz 2 eingefahren + Trolley_ist_in_Platz_3_eingefahren>PC : Bool // An PC: Trolley ist in Platz 3 eingefahren + Externe_Anzeige : Bool // Von PC: Externe gelbe Anzeige aktivieren + Frei610 : Bool + PC>Trolley_an_Platz_1_freigegeben : Bool // Von PC: Trolley ist an Platz 1 beladen / freigegeben + PC>Trolley_an_Platz_2_freigegeben : Bool // Von PC: Trolley ist an Platz 2 beladen / freigegeben + PC>Trolley_an_Platz_3_freigegeben : Bool // Von PC: Trolley ist an Platz 3 beladen / freigegeben + Trolley_ist_aus_Platz_1_ausgefahren>PC : Bool // An PC: Trolley ist aus Platz 1 ausgefahren + Trolley_ist_aus_Platz_2_ausgefahren>PC : Bool // An PC: Trolley ist aus Platz 2 ausgefahren + Trolley_ist_aus_Platz_3_ausgefahren>PC : Bool // An PC: Trolley ist aus Platz 3 ausgefahren + Status : Struct // Intern + Arbeitsplatz_aktiviert : Bool // ABP durch PC aktiviert + Trolley_fährt_in_Vorstau : Bool // Trolley fährt in Vorstau + Trolley_fährt_nach_Platz_1 : Bool // Trolley fährt nach Platz 1 + Trolley_fährt_nach_Platz_2 : Bool // Trolley fährt nach Platz 2 + Trolley_fährt_nach_Platz_3 : Bool // Trolley fährt nach Platz 3 + Trolley_fährt_aus_Platz_1 : Bool // Trolley fährt aus Nachstau 1 + Trolley_fährt_aus_Platz_2 : Bool // Trolley fährt aus Nachstau 2 + Trolley_fährt_aus_Platz_3 : Bool // Trolley fährt aus Nachstau 3 + Trolley_fährt_in_Nachstau : Bool + Trolley_hat_Nachstau_erreicht : Bool // Trolley ist in Nachstau eingefahren + Leer_Check : Bool // Vorstau-Leercheck aktiv + Error_aktiv : Bool // Störung vorhanden + Beladung_erfolgt : Bool // Für Prio (3 Minuten aktiv) + Reset_zum_Beladeplatz_aktiv : Bool // Reset Sk zum Beladeplatz aktiv + Reset_Platz_1_aktiv : Bool // Reset Platz 1 aktiv + Reset_Platz_2_aktiv : Bool // Reset Platz 2 aktiv + Reset_Platz_3_aktiv : Bool // Reset Platz 3 aktiv + Reset_aus_Beladeplatz_aktiv : Bool // Reset Sk aus Beladeplatz aktiv + HMI : Struct + Res_Trolleys : Int // Anzahl reservierte Trolleys (IN:PLC, OUT:PLC) + Frei_Plätze : Int // Freiplätze für Trolleys (IN:PLC, OUT:PLC) + Vorstau_Trolleys : Int // Anzahl Vorstau-Trolleys (IN:PLC, OUT:PLC) + Vorstau_resetten : Bool := 1 // Vorstau-Schleuse resetten (IN:HMI, Out:PLC) + Platz_1_resetten : Bool // Platz 1-Schleuse resetten (IN:HMI, Out:PLC) + Platz_2_resetten : Bool // Platz 2-Schleuse resetten (IN:HMI, Out:PLC) + Platz_3_resetten : Bool // Platz 3-Schleuse resetten (IN:HMI, Out:PLC) + Sk_zu_Plätze_resetten : Bool := 1 + Sk_aus_Plätze_resetten : Bool := 1 + Sk_zum_Beladeplatz : "USk_Omni" // Status der Schrittkette + Sk_aus_Beladeplatz : "USk" // Status der Schrittkette + Rueckmld : Struct + RET_VAL_BLKMOV_ABP : Int // Rückmeldung nach BLKMOV-Aufruf + RET_VAL_DL_ABP : Byte // Rückmeldung nach DatenOut-Aufruf + RET_VAL_SendFIFO : Byte + Error : "UErrHM_Arbeitsplatz" + Mindestzeit_Rein : Int // Mindestzeit [s] + Stop_Ursache_Rein : Word // Stop-Stelle: Nw + Position + Mindestzeit_Raus : Int // Mindestzeit [s] + Stop_Ursache_Raus : Word // Stop-Stelle: Nw + Position + Vorstau : Struct + Anzahl_Reservierungen : Int // Anzahl der reservierten Trolleys + Anzahl_Leertrolleys : Int // Anzahl der vorhandenen Leertrolleys + Freigabe_an_Stopper : Bool // Freigabe an Ziel-FC + Trolley_fährt_aus : Bool // Trolley hat Stopper verlassen + Gespeichert_Anzahl : Int // Aufgrund dieser Anzahl Eintrag in DL + Reserve : Array[1..6] of Int + Platz_1 : Struct + Beladestelle_wurde_angefahren : Bool // Beladestelle wurde angefahren + Trolley_ist_an_Beladung : Bool // Trolley ist an Beladestelle + Trolley_hat_Arbeitsplatz_verlassen : Bool // Trolley hat Arbeitsplatz verlassen (Draussen-FC) + Beladestelle_wurde_entsorgt : Bool // Beladestelle wurde entsorgt + Freigabe_an_Stopper : Bool // Freigabe an Ziel-FC + Trolley_fährt_aus : Bool // Trolley hat Stopper verlassen + TrolleyID_ausgefahren : DInt + Reserve : Array[1..2] of Int + Platz_2 : Struct + Beladestelle_wurde_angefahren : Bool // Beladestelle wurde angefahren + Trolley_ist_an_Beladung : Bool // Trolley ist an Beladestelle + Trolley_hat_Arbeitsplatz_verlassen : Bool // Trolley hat Arbeitsplatz verlassen (Draussen-FC) + Beladestelle_wurde_entsorgt : Bool // Beladestelle wurde entsorgt + Freigabe_an_Stopper : Bool // Freigabe an Ziel-FC + Trolley_fährt_aus : Bool // Trolley hat Stopper verlassen + TrolleyID_ausgefahren : DInt + Reserve : Array[1..2] of Int + Platz_3 : Struct + Beladestelle_wurde_angefahren : Bool // Beladestelle wurde angefahren + Trolley_ist_an_Beladung : Bool // Trolley ist an Beladestelle + Trolley_hat_Arbeitsplatz_verlassen : Bool // Trolley hat Arbeitsplatz verlassen (Draussen-FC) + Beladestelle_wurde_entsorgt : Bool // Beladestelle wurde entsorgt + Freigabe_an_Stopper : Bool // Freigabe an Ziel-FC + Trolley_fährt_aus : Bool // Trolley hat Stopper verlassen + TrolleyID_ausgefahren : DInt + Reserve : Array[1..2] of Int + LeerCheckZeit : Int + BeladungErfolgtZeit : Int + Simulation : Struct + Aktiviert : Bool // Von Simulation + Einen Trolley ausfahren : Bool // Von Simulation + Neustart : Bool // Von Simulation + Trolleys bereit : Bool // An SImulation + Trolley gestartet : Bool // An Simulation + Trolley 1 gefahren : Bool // Intern + Trolley 2 gefahren : Bool // Intern + Trolley 3 gefahren : Bool // Intern + Res200 : Array[1..7] of Int + Temp: + Quelle : Any // Zeiger, wo Rein-Daten sind + Ueb_akt : Bool // Überwachungszeit aktivieren + Weiter : Bool // Weiterschaltbedingung ist erfüllt + Warte_neu : Bool // Wartezeit neu triggern + Warte_stop : Bool // Wartezeit stoppen + Raus_Ueb_akt : Bool // Überwachungszeit aktivieren + Raus_Weiter : Bool // Weiterschaltbedingung ist erfüllt + Raus_Warte_neu : Bool // Wartezeit neu triggern + Raus_Warte_stop : Bool // Wartezeit stoppen + Vorstau_ist_leer : Bool // Vorstau zeitlang ohne Sensor + MindestZeit_Rein_Ok : Bool + MindestZeit_Raus_Ok : Bool + TrolleyID_Ok : Bool + Error_SendFIFO : Bool + Position : Int + BenötigteLeerTrolleys : Int // Zusätzlich benötigte Trolleys + Constant: + +--- NW 1: Parameter-Übergabe --- + L Arbeitsplatz_Nr + + L 276 // Einsprung AMR-DL + T Para.AMR_DL_DB // vor Aufruf übergeben! + L 0 + T Para.AMR_DL_DW + + +--- NW 2: Anzeige OP --- + L 252 // Bereichsstop aktiv + AN Dyn.Sk_zum_Beladeplatz.Bereich_ok // Also: Bereichsstop / Not-Aus + JC w010 + + L 253 + AN Dyn.Sk_zum_Beladeplatz.Auto_akt // Keine Betriebsart + AN Dyn.Sk_zum_Beladeplatz.Hand_akt + JC w010 + + L 255 // Handbetrieb aktiv + A Dyn.Sk_zum_Beladeplatz.Hand_akt + JC w010 + + L Dyn.Sk_zum_Beladeplatz.Akt_Schritt // Aktiver Schritt +w010: T Dyn.Sk_zum_Beladeplatz.OP_Schritt + + +--- NW 3: Out-Bits zum Zurücksetzen --- + SET +// R #Y_Weiche_zu_Platz_1 +// R #Y_Weiche_zu_Platz_2 +// R #Y_Weiche_von_Platz_1 +// R #Y_Weiche_von_Platz_2 + R Antrieb_Nachstau_1_vor + R Antrieb_Nachstau_2_vor + R Antrieb_Nachstau_3_vor + R Vorstau_ist_leer + R Reset_Vorstau_Schleuse + R Reset_Platz_1_Stopper // Nur 1 Zyklus + R Reset_Platz_2_Stopper + R Reset_Platz_3_Stopper + + AN Y_Vorstau + R Trolley_hat_ABS_erreicht + + SET // Jeden Zyklus neu + + +--- NW 4: HMI-Zeug --- +// Von HMI: +// Platz-Resets siehe dort! + A Dyn.HMI.Vorstau_resetten + R Dyn.HMI.Vorstau_resetten + JCN HMI_B // Negierter Sprung + + SET + S Dyn.Status.Leer_Check + +// LeerTrolley-Anforderung löschen: +CALL FC "AMR_LeerTrolley_Anforderung_Del" (ArbeitsPlatz:=Arbeitsplatz_Nr, Gespeicherte_LeerTrolleys:=Dyn.Vorstau.Gespeichert_Anzahl) + +HMI_B: A Dyn.HMI."Sk_zu_Plätze_resetten" + R Dyn.HMI."Sk_zu_Plätze_resetten" + S Dyn.Sk_zum_Beladeplatz.Reset // SK zurücksetzen + + A Dyn.HMI."Sk_aus_Plätze_resetten" + R Dyn.HMI."Sk_aus_Plätze_resetten" + S Dyn.Sk_aus_Beladeplatz.Reset // SK zurücksetzen + + CLR + +// An HMI: + L Dyn.Vorstau.Anzahl_Leertrolleys + T Dyn.HMI.Vorstau_Trolleys + + L Dyn.Vorstau.Anzahl_Reservierungen + T Dyn.HMI.Res_Trolleys + + L Arbeitsplatz.MaxAnzahl + L Dyn.Vorstau.Anzahl_Reservierungen + -I + L Dyn.Vorstau.Anzahl_Leertrolleys + -I + T Dyn.HMI."Frei_Plätze" + + L 0 + >=I + JC Anzahl_ok + + T Dyn.HMI."Frei_Plätze" // Minimum übergeben + +Anzahl_ok: L Dyn.HMI."Frei_Plätze" + T "BenötigteLeerTrolleys" + + +--- NW 5: Leer-Check im Vorstau --- + AN Dyn.Status.Leer_Check + JC RLCT + +// Leer-Check aktiv: + A B_In_Schleuse_Vorstau + O Y_Vorstau + JC RLCT + + AN B_In_Schleuse_Vorstau + S Antrieb_Vorstau_vor + + AN Antrieb_Vorstau_aktiv + ON "1s-Impuls" + JC LCE + + L Dyn.LeerCheckZeit + + 1 + T Dyn.LeerCheckZeit + +// Leer-Check fertig ? + L 60 // 60s rum? + I // Ja ! + O B_Nachstau_Ausfahrt // Trolley wartet auf Ausfahrt + S Dyn.Status.Beladung_erfolgt // Zusätzlich beim Starten aus ABP! + + AN Dyn.Status.Beladung_erfolgt + JC RBET + + A "DAMR_Bereich".A01_UH06.BereichErr + ON "1s-Impuls" + JC BEE + + L Dyn.BeladungErfolgtZeit + + 1 + T Dyn.BeladungErfolgtZeit + +// Keine erneute Beladung fertig ? + L 300 // 5 min rum? + =I + JCN Normal // Negierter Sprung + + A Dyn.Status."Trolley_fährt_nach_Platz_1" + O Dyn.Platz_1.Trolley_ist_an_Beladung + JC ABP2 // Also kein weiterer LT benötigt + + L "BenötigteLeerTrolleys" + + 1 // Weiterer Trolley benötigt + T "BenötigteLeerTrolleys" // Zusätzlich benötigte Trolleys + +ABP2: A Dyn.Status."Trolley_fährt_nach_Platz_2" + O Dyn.Platz_2.Trolley_ist_an_Beladung + JC ABP3 // Also kein weiterer LT benötigt + + L "BenötigteLeerTrolleys" + + 1 // Weiterer Trolley benötigt + T "BenötigteLeerTrolleys" // Zusätzlich benötigte Trolleys + +ABP3: A Dyn.Status."Trolley_fährt_nach_Platz_3" + O Dyn.Platz_3.Trolley_ist_an_Beladung + JC Normal // Also kein weiterer LT benötigt + + L "BenötigteLeerTrolleys" + + 1 // Weiterer Trolley benötigt + T "BenötigteLeerTrolleys" // Zusätzlich benötigte Trolleys + +Normal: NOP 0 + + +--- NW 8: LeerTrolley-Anforderung --- + A Dyn.Status.Arbeitsplatz_aktiviert + AN Dyn.Status.Leer_Check + JC Anforderung + + L 0 // Löschen, damit keine Anforderung + T "BenötigteLeerTrolleys" + T Dyn.Vorstau.Gespeichert_Anzahl + +Anforderung: CALL FC "AMR_LeerTrolley_Anforderung" (LeerTrolleys_benötigt:="BenötigteLeerTrolleys", ArbeitsPlatz:=Arbeitsplatz_Nr, Gespeicherte_LeerTrolleys:=Dyn.Vorstau.Gespeichert_Anzahl) + + +--- NW 9: Rein-Schrittkette zurücksetzen --- + AN Dyn.HMI."Sk_zu_Plätze_resetten" + AN Dyn.Sk_zum_Beladeplatz.Reset // SK zurücksetzen + JC en04 + +// Schrittkette zurücksetzen: + L 0 // Schritt 0: Warten + T Dyn.Sk_zum_Beladeplatz.Akt_Schritt + + L 0 // Zeitwert löschen + T Dyn.Sk_zum_Beladeplatz.Terr_Zelle + T Dyn.Sk_zum_Beladeplatz.Tok_Zelle + T Dyn.Mindestzeit_Rein + + SET + R Dyn.HMI."Sk_zu_Plätze_resetten" + R Dyn.Error.Err_BLKMov // Error bei Block kopieren + R Dyn.Sk_zum_Beladeplatz.Reset // SK zurücksetzen + R Dyn.Sk_zum_Beladeplatz.Err_Schritt // Undefinierter Schritt + R Dyn.Sk_zum_Beladeplatz.Err_Uebzeit // Sofort weiter ! + S Dyn.Sk_zum_Beladeplatz.Reset_Akt // Reset ist aktiv + S Reset_Vorstau_Schleuse + R Dyn.Vorstau."Trolley_fährt_aus" + R Dyn.Vorstau.Freigabe_an_Stopper + + SET + R Dyn.Error.ABP_DL // AMR-Datenliste fehlerhaft + R Dyn.Error.Undef_AMR // undefinierter Arbeitsplatz + R Dyn.Error.Err_Uebzeit_SK_Rein // Überwachungzeit ist abgelaufen + R Dyn.Error.Err_Schritt_Sk_Rein // Schritt-Nummer ist nicht definiert + R Dyn.Error.Err_BLKMov + +// Defaultwerte übergeben: + L 0 // Damit statische Werte neu aus Datenbank geholt werden ! + T Arbeitsplatz.ABP_Nr // Nummer des Arbeitsplatzes + + BEU + +en04: NOP 0 + + +--- NW 10: Raus-Schrittkette zurücksetzen --- + AN Dyn.HMI."Sk_aus_Plätze_resetten" + AN Dyn.Sk_aus_Beladeplatz.Reset // SK zurücksetzen + JC en05 + +// Schrittkette zurücksetzen: + L 0 // Schritt 0: Warten + T Dyn.Sk_aus_Beladeplatz.Akt_Schritt + + L 0 // Zeitwert löschen + T Dyn.Sk_aus_Beladeplatz.Terr_Zelle + T Dyn.Sk_aus_Beladeplatz.Tok_Zelle + T Dyn.Mindestzeit_Raus + + SET + R Dyn.HMI."Sk_aus_Plätze_resetten" + R Dyn.Sk_aus_Beladeplatz.Reset // SK zurücksetzen + R Dyn.Sk_aus_Beladeplatz.Err_Schritt // Undefinierter Schritt + R Dyn.Sk_aus_Beladeplatz.Err_Uebzeit // Sofort weiter ! + S Dyn.Sk_aus_Beladeplatz.Reset_Akt // Reset ist aktiv + S Reset_Platz_1_Stopper + S Dyn.Status.Reset_Platz_1_aktiv + R Dyn.Platz_1.Freigabe_an_Stopper + S Reset_Platz_2_Stopper + S Dyn.Status.Reset_Platz_2_aktiv + R Dyn.Platz_2.Freigabe_an_Stopper + S Reset_Platz_3_Stopper + S Dyn.Status.Reset_Platz_3_aktiv + R Dyn.Platz_3.Freigabe_an_Stopper + + SET + R Dyn.Error.Err_Uebzeit_SK_Raus // Überwachungzeit ist abgelaufen + R Dyn.Error.Err_Schritt_Sk_Raus // Schritt-Nummer ist nicht definiert + + BEU + +en05: NOP 0 + + +--- NW 11: Störungen nach Außen übergeben --- + L 0 + T "MW200" + + A Dyn.Error.ABP_DL // AMR-Datenliste fehlerhaft + = "M200.0" + A Dyn.Error.Undef_AMR // undefinierter Arbeitsplatz + = "M200.1" + A Dyn.Error.Err_BLKMov // Error bei Block kopieren + = "M200.2" + A Dyn.Sk_zum_Beladeplatz.Err_Uebzeit // Überwachungzeit ist abgelaufen + = Dyn.Error.Err_Uebzeit_SK_Rein + = "M200.3" + A Dyn.Sk_zum_Beladeplatz.Err_Schritt // Schritt-Nummer ist nicht definiert + = Dyn.Error.Err_Schritt_Sk_Rein + = "M200.4" + A Dyn.Sk_aus_Beladeplatz.Err_Uebzeit + = Dyn.Error.Err_Uebzeit_SK_Raus + = "M200.5" + A Dyn.Sk_aus_Beladeplatz.Err_Schritt + = "M200.6" + A Dyn.Error.Err_Platz_1 + = "M200.7" + A Dyn.Error.Err_Platz_2 + = "M201.0" + A Dyn.Error.Err_Platz_3 + = "M201.1" + A Dyn.Error.Reset_Einfahren_akt + = "M201.2" + A Dyn.Error.Reset_Platz_1_akt + = "M201.3" + A Dyn.Error.Reset_Platz_2_akt + = "M201.4" + A Dyn.Error.Reset_Platz_2_akt + = "M201.5" + A Dyn.Error.Reset_Ausfahren_akt + = "M201.6" + CLR + = "M201.7" + + L "MW200" + T Error // Schnittstelle nach Außen + +// Störung vorhanden: + L 0 + <>I // Ja ! + = Dyn.Status.Error_aktiv + S hStOk + +// Störungen pro Zyklus neu erzeugen: + SET + R Dyn.Error.ABP_DL // AMR-Datenliste fehlerhaft + R Dyn.Error.Undef_AMR // undefinierter Arbeitsplatz + R Dyn.Error.Err_BLKMov +// R #Dyn.Sk_zum_Beladeplatz.Err_Uebzeit//Überwachungzeit ist abgelaufen +// R #Dyn.Sk_zum_Beladeplatz.Err_Schritt//Schritt-Nummer ist nicht definiert +// R #Dyn.Sk_aus_Beladeplatz.Err_Uebzeit//Überwachungzeit ist abgelaufen +// R #Dyn.Sk_aus_Beladeplatz.Err_Schritt//Schritt-Nummer ist nicht definiert + R Dyn.Error.Err_Platz_1 + R Dyn.Error.Err_Platz_2 + R Dyn.Error.Err_Platz_3 + R Dyn.Error.Reset_Einfahren_akt + R Dyn.Error.Reset_Platz_1_akt + R Dyn.Error.Reset_Platz_1_akt + R Dyn.Error.Reset_Platz_1_akt + R Dyn.Error.Reset_Ausfahren_akt + + +--- NW 12: Statische Arbeitsplatz-Parameter holen --- + L Arbeitsplatz.ABP_Nr // Nummer des Lagers + L Arbeitsplatz_Nr // Aufruf-Parameter + ==I // Identisch ? + R Dyn.Error.ABP_DL // AMR-Datenbank fehlerhaft + R Dyn.Error.Undef_AMR // undefinierter Arbeitsplatz + JC en06 // Ja ! + + T "MW200" // Search-Daten + +CALL FC "DatenOut" (SSDB:=Para.AMR_DL_DB, SSDW:=Para.AMR_DL_DW, PARA:=WORD#16#0000, SEARCHDATEN:=P#M200.0, RE_VAL:=Dyn.Rueckmld.RET_VAL_DL_ABP, OUTDATEN:=P#M220.0, Position:="MW196") + + JBI G_Ok + + A "M199.0" + JCN w060 + + SET + = Dyn.Error.ABP_DL // AMR-Datenbank fehlerhaft + + L 16#A061 + T Dyn.Stop_Ursache_Rein + + BEU + +w060: SET + S Dyn.Error.Undef_AMR // undefinierter Arbeitsplatz + + L 16#A062 + T Dyn.Stop_Ursache_Rein + + BEU + +// Kennung + Datenbytes +G_Ok: SET + R Dyn.Error.ABP_DL // AMR-Datenbank fehlerhaft + R Dyn.Error.Undef_AMR // undefinierter Arbeitsplatz + + L 16#1004 // Kennung 10 + Word=04 + T LW0 // Any-Kennung, Datentyp + L 20 // Datenwords speichern + T LW2 // Wiederholungen + +// Quelle-Pointer erzeugen: + L 0 // Bei Merker = 0 ! + T LW4 // DB_Nummer + L 220 // Adresse + SLD 3 + L 16#8300_0000 // Kennung: Merker + OD + T LD6 // Kennung, Adresse + +CALL SYS "BLKMOV" (SRCBLK:=Quelle, RET_VAL:=Dyn.Rueckmld.RET_VAL_BLKMOV_ABP, DSTBLK:=Arbeitsplatz) // Datenliste-Daten speichern + + L 16#A063 + T Dyn.Stop_Ursache_Rein + + L Dyn.Rueckmld.RET_VAL_BLKMOV_ABP // Rückmeldung + L 0 // Fehler vorhanden ? + <>I // Ja ! + = Dyn.Error.Err_BLKMov // Error bei Block kopieren + BEC + + L Arbeitsplatz.ABP_Typ // AMR-Typ = 276 (Normal) + L 276 // Dieser Aufruf-FB ? + ==I // Ja ! + JC w061 + + SET + S Dyn.Error.Undef_AMR // undefinierter Arbeitsplatz + + L 0 // Lager ungültig ! + T Arbeitsplatz.ABP_Nr // Nummer des Lagers + + L 16#A064 + T Dyn.Stop_Ursache_Rein + + BEU + +// Defaultwerte übergeben: +w061: NOP 0 + + BEU + +en06: NOP 0 + + +--- NW 13: Trolley kommt in Vorstau / Antrieb zusätzlich starten --- +// Antrieb zusätlich starten: + A ErrQuit // Überwachungszeit abgelaufen quittieren + R Dyn.Sk_zum_Beladeplatz.Err_Uebzeit + + +--- NW 14: Indirekt adressierte Daten in temporäre Daten übergeben --- + A ErrQuit // Überwachungszeit abgelaufen quittieren + R Dyn.Sk_zum_Beladeplatz.Err_Uebzeit + R Dyn.Sk_aus_Beladeplatz.Err_Uebzeit + R Ueb_akt // Überwachungszeit aktivieren + + +--- NW 15: Einfahrenden Trolley in AMR verarbeiten --- + A Dyn.Status."Trolley_fährt_in_Vorstau" + R Dyn.Status."Trolley_fährt_in_Vorstau" + JCN NoNewT // Negierter Sprung + +// Reservierungen -1: + L Dyn.Vorstau.Anzahl_Reservierungen + + -1 + T Dyn.Vorstau.Anzahl_Reservierungen + + L 0 // Minimum unterschritten ? + >=I // Nein ! + JC ResOk + + T Dyn.Vorstau.Anzahl_Reservierungen // Minimum übergeben + +// Leertrolleys +1: +ResOk: L Dyn.Vorstau.Anzahl_Leertrolleys + + +1 + T Dyn.Vorstau.Anzahl_Leertrolleys + +NoNewT: NOP 0 + + +--- NW 16: Platz 1 --- +// Freigabe von PC sinnlos!: + AN Dyn.Platz_1.Trolley_ist_an_Beladung // Trolleydaten ok + R Dyn.SS."PC>Trolley_an_Platz_1_freigegeben" // Signal für Platz-Schleuse zum Öffnen + +// Trolley ist draussen: + AN Dyn.Platz_1.Trolley_hat_Arbeitsplatz_verlassen // Rückmeldung von Draussen-FC + JC P1HMI + +// Reset war aktiv?: + A Dyn.Status.Reset_Platz_1_aktiv + R Dyn.Status.Reset_Platz_1_aktiv + JCN P1NoReset // Negierter Sprung! + + SET + R Dyn.SS."PC>Trolley_an_Platz_1_freigegeben" // Signal für Platz-Schleuse zum Öffnen + + A B_an_Platz_1 // Trolley vorhanden + S Dyn.Platz_1.Trolley_ist_an_Beladung // Trolleydaten ok + S Dyn.SS."Trolley_ist_in_Platz_1_eingefahren>PC" + +P1NoReset: AN B_an_Platz_1 + R Dyn.Platz_1.Trolley_ist_an_Beladung // Trolley ist ausgefahren + + A Dyn.Status."Trolley_fährt_aus_Platz_1" // /wird in Raus-SK benötigt (Schritt 2!) + JC P1HMI + + SET + R Dyn.Platz_1.Trolley_hat_Arbeitsplatz_verlassen + +// HMI-Platz-Reset: +P1HMI: A Dyn.HMI.Platz_1_resetten + R Dyn.HMI.Platz_1_resetten + JCN P1Check + +// Trolley vorhanden: + A B_an_Platz_1 // Trolley vorhanden + AN Y_Platz_1 // Stopper GST + A Dyn.Platz_1.Trolley_ist_an_Beladung // Trolleydaten ok + JC P1Check // Kein Reset notwendig + +// Kein Trolley vorhanden: + AN B_an_Platz_1 // Trolley vorhanden + AN Y_Platz_1 // Stopper GST + AN Dyn.Platz_1.Trolley_ist_an_Beladung // Trolleydaten ok + JC P1Check // Kein Reset notwendig + +// Unklarer Zustand -> Reset starten + SET + S Reset_Platz_1_Stopper + S Dyn.Status.Reset_Platz_1_aktiv + +// Daten-/Sensor-Check: +P1Check: A Dyn.Status.Reset_Platz_1_aktiv + O Dyn.Status."Trolley_fährt_nach_Platz_1" + O Y_Platz_1 + R Dyn.Error.Err_Platz_1 + JC P1Ende + + A Dyn.Platz_1.Trolley_ist_an_Beladung // Trolleydaten ok + AN B_an_Platz_1 + O + AN Dyn.Platz_1.Trolley_ist_an_Beladung // Trolleydaten ok + A B_an_Platz_1 + = Dyn.Error.Err_Platz_1 + +P1Ende: NOP 0 + + +--- NW 17: Platz 2 --- +// Freigabe von PC sinnlos!: + AN Dyn.Platz_2.Trolley_ist_an_Beladung // Trolleydaten ok + R Dyn.SS."PC>Trolley_an_Platz_2_freigegeben" // Signal für Platz-Schleuse zum Öffnen + +// Trolley ist draussen: + AN Dyn.Platz_2.Trolley_hat_Arbeitsplatz_verlassen // Rückmeldung von Draussen-FC + JC P2HMI + +// Reset war aktiv?: + A Dyn.Status.Reset_Platz_2_aktiv + R Dyn.Status.Reset_Platz_2_aktiv + JCN P2NoReset // Negierter Sprung! + + SET + R Dyn.SS."PC>Trolley_an_Platz_2_freigegeben" // Signal für Platz-Schleuse zum Öffnen + + A B_an_Platz_2 // Trolley vorhanden + S Dyn.Platz_2.Trolley_ist_an_Beladung // Trolleydaten ok + S Dyn.SS."Trolley_ist_in_Platz_2_eingefahren>PC" + +P2NoReset: AN B_an_Platz_2 + R Dyn.Platz_2.Trolley_ist_an_Beladung // Trolley ist ausgefahren + + A Dyn.Status."Trolley_fährt_aus_Platz_2" // /wird in Raus-SK benötigt (Schritt 2!) + JC P2HMI + + SET + R Dyn.Platz_2.Trolley_hat_Arbeitsplatz_verlassen + +// HMI-Platz-Reset: +P2HMI: A Dyn.HMI.Platz_2_resetten + R Dyn.HMI.Platz_2_resetten + JCN P2Check + +// Trolley vorhanden: + A B_an_Platz_2 // Trolley vorhanden + AN Y_Platz_2 // Stopper GST + A Dyn.Platz_2.Trolley_ist_an_Beladung // Trolleydaten ok + JC P2Check // Kein Reset notwendig + +// Kein Trolley vorhanden: + AN B_an_Platz_2 // Trolley vorhanden + AN Y_Platz_2 // Stopper GST + AN Dyn.Platz_2.Trolley_ist_an_Beladung // Trolleydaten ok + JC P2Check // Kein Reset notwendig + +// Unklarer Zustand -> Reset starten + SET + S Reset_Platz_2_Stopper + S Dyn.Status.Reset_Platz_2_aktiv + +// Daten-/Sensor-Check: +P2Check: A Dyn.Status.Reset_Platz_2_aktiv + O Dyn.Status."Trolley_fährt_nach_Platz_2" + O Y_Platz_2 + R Dyn.Error.Err_Platz_2 + JC P2Ende + + A Dyn.Platz_2.Trolley_ist_an_Beladung // Trolleydaten ok + AN B_an_Platz_2 + O + AN Dyn.Platz_2.Trolley_ist_an_Beladung // Trolleydaten ok + A B_an_Platz_2 + = Dyn.Error.Err_Platz_2 + +P2Ende: NOP 0 + + +--- NW 18: Platz 3 --- +// Freigabe von PC sinnlos!: + AN Dyn.Platz_3.Trolley_ist_an_Beladung // Trolleydaten ok + R Dyn.SS."PC>Trolley_an_Platz_3_freigegeben" // Signal für Platz-Schleuse zum Öffnen + +// Trolley ist draussen: + AN Dyn.Platz_3.Trolley_hat_Arbeitsplatz_verlassen // Rückmeldung von Draussen-FC + JC P3HMI + +// Reset war aktiv?: + A Dyn.Status.Reset_Platz_3_aktiv + R Dyn.Status.Reset_Platz_3_aktiv + JCN P3NoReset // Negierter Sprung! + + SET + R Dyn.SS."PC>Trolley_an_Platz_3_freigegeben" // Signal für Platz-Schleuse zum Öffnen + + A B_an_Platz_3 // Trolley vorhanden + S Dyn.Platz_3.Trolley_ist_an_Beladung // Trolleydaten ok + S Dyn.SS."Trolley_ist_in_Platz_3_eingefahren>PC" + +P3NoReset: AN B_an_Platz_3 + R Dyn.Platz_3.Trolley_ist_an_Beladung // Trolley ist ausgefahren + + A Dyn.Status."Trolley_fährt_aus_Platz_3" // /wird in Raus-SK benötigt (Schritt 2!) + JC P3HMI + + SET + R Dyn.Platz_3.Trolley_hat_Arbeitsplatz_verlassen + +// HMI-Platz-Reset: +P3HMI: A Dyn.HMI.Platz_3_resetten + R Dyn.HMI.Platz_3_resetten + JCN P3Check + +// Trolley vorhanden: + A B_an_Platz_3 // Trolley vorhanden + AN Y_Platz_3 // Stopper GST + A Dyn.Platz_3.Trolley_ist_an_Beladung // Trolleydaten ok + JC P3Check // Kein Reset notwendig + +// Kein Trolley vorhanden: + AN B_an_Platz_3 // Trolley vorhanden + AN Y_Platz_3 // Stopper GST + AN Dyn.Platz_3.Trolley_ist_an_Beladung // Trolleydaten ok + JC P3Check // Kein Reset notwendig + +// Unklarer Zustand -> Reset starten + SET + S Reset_Platz_3_Stopper + S Dyn.Status.Reset_Platz_3_aktiv + +// Daten-/Sensor-Check: +P3Check: A Dyn.Status.Reset_Platz_3_aktiv + O Dyn.Status."Trolley_fährt_nach_Platz_3" + O Y_Platz_3 + R Dyn.Error.Err_Platz_3 + JC P3Ende + + A Dyn.Platz_3.Trolley_ist_an_Beladung // Trolleydaten ok + AN B_an_Platz_3 + O + AN Dyn.Platz_3.Trolley_ist_an_Beladung // Trolleydaten ok + A B_an_Platz_3 + = Dyn.Error.Err_Platz_3 + +P3Ende: NOP 0 + + +--- NW 19: CTMP-Telegramm Platz 1 --- +// CTMP: Nach Erreichen des Beladepunktes: + A "SGes".Ohne_PC_Fahren + R Dyn.SS."Trolley_ist_in_Platz_1_eingefahren>PC" + +// Telegramm an Host senden: + AN Dyn.SS."Trolley_ist_in_Platz_1_eingefahren>PC" + JC NoCTMP1 + +// TrolleyID ermitteln +CALL FC "HMSchleuse_TrolleyID" (Schleuse:=Arbeitsplatz.Schleusen_Platz_1, TrolleyID:="Daten_für_SendFIFO".TrolleyID, Ok:=TrolleyID_Ok) // TrolleyID übergeben + + AN TrolleyID_Ok + JC NoCTMP1 + +// CTMP: Nach Erreichen des Beladepunktes: +CALL FB "Daten_in_SendFIFO_speichern" , (TelegrammKennung[1]:='C', TelegrammKennung[2]:='T', TelegrammKennung[3]:='M', TelegrammKennung[4]:='P', TelegrammKennung[5]:=?, TelegrammKennung[6]:=?, TelegrammKennung[7]:=?, TelegrammKennung[8]:=?, TelegrammKennung[9]:=?, TelegrammKennung[10]:=?, TrolleyID:=?, StationsNr:=Arbeitsplatz.Host_ABP, Puffer_LinienNr:=1, StoreGroup:=?, Status_1_Int:=?, Status_2_Bit[0]:=?, Status_2_Bit[1]:=?, Status_2_Bit[2]:=?, Status_2_Bit[3]:=?, Status_2_Bit[4]:=?, Status_2_Bit[5]:=?, Status_2_Bit[6]:=?, Status_2_Bit[7]:=?, Reserve[1]_Int:=?, Reserve[2]_Int:=?, Port:=1, Ret_Val_FIFO_IN:="MB199", Error:=Error_SendFIFO) // s.o. + + AN Error_SendFIFO + R Dyn.SS."Trolley_ist_in_Platz_1_eingefahren>PC" + +NoCTMP1: NOP 0 + + +--- NW 20: CTMP-Telegramm Platz 2 --- +// CTMP: Nach Erreichen des Beladepunktes: + A "SGes".Ohne_PC_Fahren + R Dyn.SS."Trolley_ist_in_Platz_2_eingefahren>PC" + +// Telegramm an Host senden: + AN Dyn.SS."Trolley_ist_in_Platz_2_eingefahren>PC" + JC NoCTMP2 + +// TrolleyID ermitteln +CALL FC "HMSchleuse_TrolleyID" (Schleuse:=Arbeitsplatz.Schleusen_Platz_2, TrolleyID:="Daten_für_SendFIFO".TrolleyID, Ok:=TrolleyID_Ok) // TrolleyID übergeben + + AN TrolleyID_Ok + JC NoCTMP2 + +// CTMP: Nach Erreichen des Beladepunktes: +CALL FB "Daten_in_SendFIFO_speichern" , (TelegrammKennung[1]:='C', TelegrammKennung[2]:='T', TelegrammKennung[3]:='M', TelegrammKennung[4]:='P', TelegrammKennung[5]:=?, TelegrammKennung[6]:=?, TelegrammKennung[7]:=?, TelegrammKennung[8]:=?, TelegrammKennung[9]:=?, TelegrammKennung[10]:=?, TrolleyID:=?, StationsNr:=Arbeitsplatz.Host_ABP, Puffer_LinienNr:=2, StoreGroup:=?, Status_1_Int:=?, Status_2_Bit[0]:=?, Status_2_Bit[1]:=?, Status_2_Bit[2]:=?, Status_2_Bit[3]:=?, Status_2_Bit[4]:=?, Status_2_Bit[5]:=?, Status_2_Bit[6]:=?, Status_2_Bit[7]:=?, Reserve[1]_Int:=?, Reserve[2]_Int:=?, Port:=1, Ret_Val_FIFO_IN:="MB199", Error:=Error_SendFIFO) // s.o. + + AN Error_SendFIFO + R Dyn.SS."Trolley_ist_in_Platz_2_eingefahren>PC" + +NoCTMP2: NOP 0 + + +--- NW 21: CTMP-Telegramm Platz 3 --- +// CTMP: Nach Erreichen des Beladepunktes: + A "SGes".Ohne_PC_Fahren + R Dyn.SS."Trolley_ist_in_Platz_3_eingefahren>PC" + +// Telegramm an Host senden: + AN Dyn.SS."Trolley_ist_in_Platz_3_eingefahren>PC" + JC NoCTMP3 + +// TrolleyID ermitteln +CALL FC "HMSchleuse_TrolleyID" (Schleuse:=Arbeitsplatz.Schleusen_Platz_3, TrolleyID:="Daten_für_SendFIFO".TrolleyID, Ok:=TrolleyID_Ok) // //TrolleyID übergeben + + AN TrolleyID_Ok + JC NoCTMP3 + +// CTMP: Nach Erreichen des Beladepunktes: +CALL FB "Daten_in_SendFIFO_speichern" , (TelegrammKennung[1]:='C', TelegrammKennung[2]:='T', TelegrammKennung[3]:='M', TelegrammKennung[4]:='P', TelegrammKennung[5]:=?, TelegrammKennung[6]:=?, TelegrammKennung[7]:=?, TelegrammKennung[8]:=?, TelegrammKennung[9]:=?, TelegrammKennung[10]:=?, TrolleyID:=?, StationsNr:=Arbeitsplatz.Host_ABP, Puffer_LinienNr:=3, StoreGroup:=?, Status_1_Int:=?, Status_2_Bit[0]:=?, Status_2_Bit[1]:=?, Status_2_Bit[2]:=?, Status_2_Bit[3]:=?, Status_2_Bit[4]:=?, Status_2_Bit[5]:=?, Status_2_Bit[6]:=?, Status_2_Bit[7]:=?, Reserve[1]_Int:=?, Reserve[2]_Int:=?, Port:=1, Ret_Val_FIFO_IN:="MB199", Error:=Error_SendFIFO) // s.o. + + AN Error_SendFIFO + R Dyn.SS."Trolley_ist_in_Platz_3_eingefahren>PC" + +NoCTMP3: NOP 0 + + +--- NW 22: UNLDResp-Telegramm Platz 1 --- +// UNLDResp: Nach Verlassen des Beladepunktes: + A "SGes".Ohne_PC_Fahren + R Dyn.SS."Trolley_ist_aus_Platz_1_ausgefahren>PC" + +// Telegramm an Host senden: + AN Dyn.SS."Trolley_ist_aus_Platz_1_ausgefahren>PC" + JC NoUNLDResp1 + +// TrolleyID ermitteln + L Dyn.Platz_1.TrolleyID_ausgefahren + T "Daten_für_SendFIFO".TrolleyID // TrolleyID übergeben + L DINT#0 + <>D + = TrolleyID_Ok + + L 1 // Trolley ausgefahren + + A TrolleyID_Ok + JC UNLDResp1_Ok + + L 0 // Kein Trolley ausgefahren + +UNLDResp1_Ok: T "Daten_für_SendFIFO".Status_1_Int // Status übergeben + +// UNLDResp: Nach Verlassen des Beladepunktes: +CALL FB "Daten_in_SendFIFO_speichern" , (TelegrammKennung[1]:='U', TelegrammKennung[2]:='N', TelegrammKennung[3]:='L', TelegrammKennung[4]:='D', TelegrammKennung[5]:='R', TelegrammKennung[6]:='e', TelegrammKennung[7]:='s', TelegrammKennung[8]:='p', TelegrammKennung[9]:=?, TelegrammKennung[10]:=?, TrolleyID:=?, StationsNr:=Arbeitsplatz.Host_ABP, Puffer_LinienNr:=1, StoreGroup:=?, Status_1_Int:=?, Status_2_Bit[0]:=?, Status_2_Bit[1]:=?, Status_2_Bit[2]:=?, Status_2_Bit[3]:=?, Status_2_Bit[4]:=?, Status_2_Bit[5]:=?, Status_2_Bit[6]:=?, Status_2_Bit[7]:=?, Reserve[1]_Int:=?, Reserve[2]_Int:=?, Port:=1, Ret_Val_FIFO_IN:="MB199", Error:=Error_SendFIFO) // s.o. | s.o. + + AN Error_SendFIFO + R Dyn.SS."Trolley_ist_aus_Platz_1_ausgefahren>PC" + JCN NoUNLDResp1 + + L DINT#0 + T Dyn.Platz_1.TrolleyID_ausgefahren + +NoUNLDResp1: NOP 0 + + +--- NW 23: UNLDResp-Telegramm Platz 2 --- +// UNLDResp: Nach Verlassen des Beladepunktes: + A "SGes".Ohne_PC_Fahren + R Dyn.SS."Trolley_ist_aus_Platz_2_ausgefahren>PC" + +// Telegramm an Host senden: + AN Dyn.SS."Trolley_ist_aus_Platz_2_ausgefahren>PC" + JC NoUNLDResp2 + +// TrolleyID ermitteln + L Dyn.Platz_2.TrolleyID_ausgefahren + T "Daten_für_SendFIFO".TrolleyID // TrolleyID übergeben + L DINT#0 + <>D + = TrolleyID_Ok + + L 1 // Trolley ausgefahren + + A TrolleyID_Ok + JC UNLDResp2_Ok + + L 0 // Kein Trolley ausgefahren + +UNLDResp2_Ok: T "Daten_für_SendFIFO".Status_1_Int // Status übergeben + +// UNLDResp: Nach Verlassen des Beladepunktes: +CALL FB "Daten_in_SendFIFO_speichern" , (TelegrammKennung[1]:='U', TelegrammKennung[2]:='N', TelegrammKennung[3]:='L', TelegrammKennung[4]:='D', TelegrammKennung[5]:='R', TelegrammKennung[6]:='e', TelegrammKennung[7]:='s', TelegrammKennung[8]:='p', TelegrammKennung[9]:=?, TelegrammKennung[10]:=?, TrolleyID:=?, StationsNr:=Arbeitsplatz.Host_ABP, Puffer_LinienNr:=2, StoreGroup:=?, Status_1_Int:=?, Status_2_Bit[0]:=?, Status_2_Bit[1]:=?, Status_2_Bit[2]:=?, Status_2_Bit[3]:=?, Status_2_Bit[4]:=?, Status_2_Bit[5]:=?, Status_2_Bit[6]:=?, Status_2_Bit[7]:=?, Reserve[1]_Int:=?, Reserve[2]_Int:=?, Port:=1, Ret_Val_FIFO_IN:="MB199", Error:=Error_SendFIFO) // s.o. | s.o. + + AN Error_SendFIFO + R Dyn.SS."Trolley_ist_aus_Platz_2_ausgefahren>PC" + JCN NoUNLDResp2 + + L DINT#0 + T Dyn.Platz_2.TrolleyID_ausgefahren + +NoUNLDResp2: NOP 0 + + +--- NW 24: UNLDResp-Telegramm Platz 3 --- +// UNLDResp: Nach Verlassen des Beladepunktes: + A "SGes".Ohne_PC_Fahren + R Dyn.SS."Trolley_ist_aus_Platz_3_ausgefahren>PC" + +// Telegramm an Host senden: + AN Dyn.SS."Trolley_ist_aus_Platz_3_ausgefahren>PC" + JC NoUNLDResp3 + +// TrolleyID ermitteln +// TrolleyID ermitteln + L Dyn.Platz_3.TrolleyID_ausgefahren + T "Daten_für_SendFIFO".TrolleyID // TrolleyID übergeben + L DINT#0 + <>D + = TrolleyID_Ok + + L 1 // Trolley ausgefahren + + A TrolleyID_Ok + JC UNLDResp3_Ok + + L 0 // Kein Trolley ausgefahren + +UNLDResp3_Ok: T "Daten_für_SendFIFO".Status_1_Int // Status übergeben + +// UNLDResp: Nach Verlassen des Beladepunktes: +CALL FB "Daten_in_SendFIFO_speichern" , (TelegrammKennung[1]:='U', TelegrammKennung[2]:='N', TelegrammKennung[3]:='L', TelegrammKennung[4]:='D', TelegrammKennung[5]:='R', TelegrammKennung[6]:='e', TelegrammKennung[7]:='s', TelegrammKennung[8]:='p', TelegrammKennung[9]:=?, TelegrammKennung[10]:=?, TrolleyID:=?, StationsNr:=Arbeitsplatz.Host_ABP, Puffer_LinienNr:=3, StoreGroup:=?, Status_1_Int:=?, Status_2_Bit[0]:=?, Status_2_Bit[1]:=?, Status_2_Bit[2]:=?, Status_2_Bit[3]:=?, Status_2_Bit[4]:=?, Status_2_Bit[5]:=?, Status_2_Bit[6]:=?, Status_2_Bit[7]:=?, Reserve[1]_Int:=?, Reserve[2]_Int:=?, Port:=1, Ret_Val_FIFO_IN:="MB199", Error:=Error_SendFIFO) // s.o. | s.o. + + AN Error_SendFIFO + R Dyn.SS."Trolley_ist_aus_Platz_3_ausgefahren>PC" + JCN NoUNLDResp3 + + L DINT#0 + T Dyn.Platz_3.TrolleyID_ausgefahren + +NoUNLDResp3: NOP 0 + + +--- NW 25: Simulation zu Starten von beladenen Trolleys --- + SET + R Dyn.Simulation."Trolleys bereit" + R Dyn.Simulation."Trolley gestartet" + + AN Dyn.Simulation.Aktiviert + R Dyn.Simulation.Neustart + R Dyn.Simulation."Einen Trolley ausfahren" + JC SimEnde + +// Neustart: + A Dyn.Simulation.Neustart + R Dyn.Simulation.Neustart + JCN TrolleyOk // Negierter Sprung + + SET + R Dyn.Simulation."Trolley 1 gefahren" + R Dyn.Simulation."Trolley 2 gefahren" + R Dyn.Simulation."Trolley 3 gefahren" + +// Trolley für Ausfahrt bereit: +TrolleyOk: A B_an_Platz_1 // Trolley vorhanden + A Dyn.Platz_1.Trolley_ist_an_Beladung // Trolleydaten ok + AN Dyn.Simulation."Trolley 1 gefahren" + O + A B_an_Platz_2 // Trolley vorhanden + A Dyn.Platz_2.Trolley_ist_an_Beladung // Trolleydaten ok + AN Dyn.Simulation."Trolley 2 gefahren" + O + A B_an_Platz_3 // Trolley vorhanden + A Dyn.Platz_3.Trolley_ist_an_Beladung // Trolleydaten ok + AN Dyn.Simulation."Trolley 3 gefahren" + = Dyn.Simulation."Trolleys bereit" + +// Trolley starten: +New: AN Dyn.Simulation."Trolleys bereit" + ON Dyn.Simulation."Einen Trolley ausfahren" + R Dyn.Simulation."Einen Trolley ausfahren" + JC SimEnde + + A B_an_Platz_1 // Trolley vorhanden + A Dyn.Platz_1.Trolley_ist_an_Beladung // Trolleydaten ok + AN Dyn.Simulation."Trolley 1 gefahren" + S Dyn.Simulation."Trolley 1 gefahren" + S Dyn.SS."PC>Trolley_an_Platz_1_freigegeben" // Signal für Platz-Schleuse zum Öffnen + S Dyn.Simulation."Trolley gestartet" + R Dyn.Simulation."Einen Trolley ausfahren" + JC SimEnde + + A B_an_Platz_2 // Trolley vorhanden + A Dyn.Platz_2.Trolley_ist_an_Beladung // Trolleydaten ok + AN Dyn.Simulation."Trolley 2 gefahren" + S Dyn.Simulation."Trolley 2 gefahren" + S Dyn.SS."PC>Trolley_an_Platz_2_freigegeben" // Signal für Platz-Schleuse zum Öffnen + S Dyn.Simulation."Trolley gestartet" + R Dyn.Simulation."Einen Trolley ausfahren" + JC SimEnde + + A B_an_Platz_3 // Trolley vorhanden + A Dyn.Platz_3.Trolley_ist_an_Beladung // Trolleydaten ok + AN Dyn.Simulation."Trolley 3 gefahren" + S Dyn.Simulation."Trolley 3 gefahren" + S Dyn.SS."PC>Trolley_an_Platz_3_freigegeben" // Signal für Platz-Schleuse zum Öffnen + S Dyn.Simulation."Trolley gestartet" + R Dyn.Simulation."Einen Trolley ausfahren" + + SET + R Dyn.Simulation."Trolley 1 gefahren" + R Dyn.Simulation."Trolley 2 gefahren" + R Dyn.Simulation."Trolley 3 gefahren" + + A B_an_Platz_1 // Trolley vorhanden + A Dyn.Platz_1.Trolley_ist_an_Beladung // Trolleydaten ok + O + A B_an_Platz_2 // Trolley vorhanden + A Dyn.Platz_2.Trolley_ist_an_Beladung // Trolleydaten ok + O + A B_an_Platz_3 // Trolley vorhanden + A Dyn.Platz_3.Trolley_ist_an_Beladung // Trolleydaten ok + JC New + +SimEnde: NOP 0 + + +--- NW 26: Mindestzeit Einfahren: --- + SET + R MindestZeit_Rein_Ok + + AN Dyn.Status."Trolley_fährt_nach_Platz_1" + AN Dyn.Status."Trolley_fährt_nach_Platz_2" + AN Dyn.Status."Trolley_fährt_nach_Platz_3" + ON Dyn.Vorstau."Trolley_fährt_aus" + JCN TReinPlus // Negierter Sprung + + L 0 + T Dyn.Mindestzeit_Rein + + JU TReinEnde + +TReinPlus: AN Antrieb_Vorstau_aktiv + ON "1s-Impuls" + JC TReinCheck + + L Dyn.Mindestzeit_Rein + + 1 + T Dyn.Mindestzeit_Rein + +TReinCheck: NOP 0 + L Dyn.Mindestzeit_Rein + L Arbeitsplatz.Mindestzeit_zum_ABP_1 + >=I + A Dyn.Status."Trolley_fährt_nach_Platz_1" + JC TReinOk + + CAC + L Arbeitsplatz.Mindestzeit_zum_ABP_2 + >=I + A Dyn.Status."Trolley_fährt_nach_Platz_2" + JC TReinOk + + CAC + L Arbeitsplatz.Mindestzeit_zum_ABP_3 + >=I + A Dyn.Status."Trolley_fährt_nach_Platz_3" + JC TReinOk + + JU TReinEnde // Negierter Sprung + +TReinOk: T Dyn.Mindestzeit_Rein // Zeit einfrieren + + SET + S MindestZeit_Rein_Ok + +TReinEnde: NOP 0 + + +--- NW 27: Mindestzeit Ausfahren: --- + SET + R MindestZeit_Raus_Ok + + AN Dyn.Status."Trolley_fährt_aus_Platz_1" + AN Dyn.Status."Trolley_fährt_aus_Platz_2" + AN Dyn.Status."Trolley_fährt_aus_Platz_3" + ON Dyn.Status."Trolley_fährt_in_Nachstau" + JCN TRausPlus // Negierter Sprung + + L 0 + T Dyn.Mindestzeit_Raus + + JU TRausEnde + +TRausPlus: AN Antrieb_Nachstau_2_aktiv + A Dyn.Status."Trolley_fährt_aus_Platz_2" + ON Antrieb_Nachstau_1_aktiv + ON Antrieb_Nachstau_3_aktiv + ON "1s-Impuls" + JC TRausCheck + + L Dyn.Mindestzeit_Raus + + 1 + T Dyn.Mindestzeit_Raus + +TRausCheck: NOP 0 + L Dyn.Mindestzeit_Raus + L Arbeitsplatz.Mindestzeit_aus_ABP_1 + >=I + A Dyn.Status."Trolley_fährt_aus_Platz_1" + JC TRausOk + + CAC + L Arbeitsplatz.Mindestzeit_aus_ABP_2 + >=I + A Dyn.Status."Trolley_fährt_aus_Platz_2" + JC TRausOk + + CAC + L Arbeitsplatz.Mindestzeit_aus_ABP_3 + >=I + A Dyn.Status."Trolley_fährt_aus_Platz_3" + JC TRausOk + + JU TRausEnde // Negierter Sprung + +TRausOk: T Dyn.Mindestzeit_Raus // Zeit einfrieren + + SET + S MindestZeit_Raus_Ok + +TRausEnde: NOP 0 + + +--- NW 28: Schrittkette anhalten --- + A Dyn.Sk_zum_Beladeplatz.Auto_akt // Automatik ist aktiv + A Dyn.Sk_zum_Beladeplatz.Bereich_ok + JU en08_Mig // Schrittkette nicht anhalten ! + + SET + R Dyn.Sk_zum_Beladeplatz.Err_Uebzeit // Störungen löschen + R Dyn.Sk_zum_Beladeplatz.Err_Schritt + + L 0 // Zeitwerte löschen + T Dyn.Sk_zum_Beladeplatz.Terr_Zelle + T Dyn.Sk_zum_Beladeplatz.Tok_Zelle + + BEU + +en08_Mig: NOP 0 + + +--- NW 29: Sprungverteiler Platz-Versorgung --- + L Dyn.Sk_zum_Beladeplatz.Neu_Schritt // Schritt, der im nächsten Zyklus aktiv werden soll + L -1 // angegeben ? + ==I // Nein ! + JC NEU + + CAC // Neuen Schritt übergeben + T Dyn.Sk_zum_Beladeplatz.Akt_Schritt + + L -1 // Urzustand + T Dyn.Sk_zum_Beladeplatz.Neu_Schritt // Schritt, der im nächsten Zyklus aktiv werden soll + +NEU: SET + R Warte_neu // Wartezeit neutriggern + R Warte_stop // Wartezeit stoppen + + L Dyn.Sk_zum_Beladeplatz.Akt_Schritt + JL Ende + JU s000 // Schritt 0 + JU s001 // Schritt 1 + JU s002 // Schritt 2 + JU s003 // Schritt 3 + JU s004 // Schritt 4 + JU s005 // Schritt 5 + JU s006 // Schritt 6 + JU s007 // Schritt 7 + JU s008 // Schritt 8 + JU s009 // Schritt 9 + JU s010 // Schritt 10 + JU s011 // Schritt 11 + JU s012 // Schritt 12 + JU s013 // Schritt 13 + JU s014 // Schritt 14 + JU s015 // Schritt 15 + JU s016 // Schritt 16 + JU s017 // Schritt 17 + JU s018 // Schritt 18 + JU s019 // Schritt 19 + JU s020 // Schritt 20 + JU s021 // Schritt 21 + JU s022 // Schritt 22 + JU s023 // Schritt 23 + JU s024 // Schritt 24 + JU s025 // Schritt 25 + JU s026 // Schritt 26 + JU s027 // Schritt 27 + JU s028 // Schritt 28 + JU s029 // Schritt 29 + JU s030 // Schritt 30 +Ende: S Dyn.Sk_zum_Beladeplatz.Err_Schritt // Undefinierter Schritt + + L 16#A131 + T Dyn.Stop_Ursache_Rein + + JU Raus_NEU + +Neu_Mig: A Dyn.Sk_zum_Beladeplatz.Err_Uebzeit + JCN Sk + + L 16#A132 + T Dyn.Stop_Ursache_Rein + + JU Raus_NEU + +Sk: T Dyn.Sk_zum_Beladeplatz.Akt_Schritt + + L 0 // Zeitwerte löschen + T Dyn.Sk_zum_Beladeplatz.Terr_Zelle + T Dyn.Sk_zum_Beladeplatz.Tok_Zelle + + JU NEU + +// Nicht programmierte Schritte: +// s000: SPA Ende +// s001: SPA Ende +// s002: SPA Ende +// s003: SPA Ende +s004: JU Ende +s005: JU Ende +s006: JU Ende +s007: JU Ende +s008: JU Ende +s009: JU Ende +s010: JU Ende +s011: JU Ende +s012: JU Ende +s013: JU Ende +s014: JU Ende +s015: JU Ende +s016: JU Ende +s017: JU Ende +s018: JU Ende +s019: JU Ende +// s020: SPA Ende +// s021: SPA Ende +s022: JU Ende +s023: JU Ende +s024: JU Ende +s025: JU Ende +s026: JU Ende +s027: JU Ende +s028: JU Ende +s029: JU Ende +s030: JU Ende + + +--- NW 30: Schritt X: Reserve --- + SET // Weiterschaltbedingung + = Weiter + +// Schrittaktionen: + SET + + L 16#B001 + T Dyn.Stop_Ursache_Rein + + A Dyn.Sk_zum_Beladeplatz.Reset_Akt // Reset ist aktiv + L 20 // Weiter mit Schritt 20 + JC Neu_Mig // Bei diesem Schritt weiter + + A Weiter // Weiterschaltbedingung ist erfüllt + R Dyn.Sk_zum_Beladeplatz.Err_Uebzeit // Sofort weiter ! + L 0 // Angabe der Wartezeit (*10ms) + JC Plus // Nächsten Schritt starten + + L 1 // Weiter mit Schritt 1 + JC Neu_Mig // Bei diesem Schritt weiter + + T Dyn.Sk_zum_Beladeplatz.Neu_Schritt // Schritt, der im nächsten Zyklus aktiv werden soll + + SET + A Dyn.Sk_zum_Beladeplatz.Auto_akt // Automatik ist aktiv + A Dyn.Sk_zum_Beladeplatz.Bereich_ok + = Ueb_akt // Überwachungszeit aktivieren + L 50 // Angabe der Überwachungszeit (*1s) + JU tueb // Überwachungszeit + + JU Raus_NEU + + +--- NW 31: Schritt 0: Trolley ist in Schleuse / Auftrag erzeugen --- +s000: NOP 0 + +// Schrittaktionen: + A Dyn.Sk_zum_Beladeplatz.Reset_Akt // Reset ist aktiv + L 20 // Weiter mit Schritt 20 + JC Neu_Mig // Bei diesem Schritt weiter + + AN B_In_Schleuse_Vorstau // Trolley im Schleuse erkannt + O Y_Vorstau + O Dyn.Status.Reset_zum_Beladeplatz_aktiv + JC Raus_NEU + + SET + R Dyn.Status."Trolley_fährt_nach_Platz_1" + R Dyn.Status."Trolley_fährt_nach_Platz_2" + R Dyn.Status."Trolley_fährt_nach_Platz_3" + R Dyn.Vorstau.Freigabe_an_Stopper + + A( + O Dyn.SS."PC>Trolley_zum_Platz_1_starten" + O "SGes".Ohne_PC_Fahren + ) + AN Dyn.SS."Trolley_ist_in_Platz_1_eingefahren>PC" // Alt-Telegramm noch nicht gesendet + AN B_an_Platz_1 + AN Y_Platz_1 // Arbeitsplatz ist geöffnet + AN Dyn.Platz_1.Beladestelle_wurde_angefahren // wegen FIFO-Versorgung + AN Dyn.Platz_1.Trolley_ist_an_Beladung + AN Dyn.Status.Reset_Platz_1_aktiv + S Dyn.Vorstau.Freigabe_an_Stopper + S Dyn.Status."Trolley_fährt_nach_Platz_1" + S Dyn.Platz_1.Beladestelle_wurde_angefahren + JC SX001 + + A( + O Dyn.SS."PC>Trolley_zum_Platz_2_starten" + O "SGes".Ohne_PC_Fahren + ) + AN Dyn.SS."Trolley_ist_in_Platz_2_eingefahren>PC" // Alt-Telegramm noch nicht gesendet + AN B_an_Platz_2 + AN Y_Platz_2 // Arbeitsplatz ist geöffnet + AN Dyn.Platz_2.Beladestelle_wurde_angefahren // wegen FIFO-Versorgung + AN Dyn.Platz_2.Trolley_ist_an_Beladung + AN Dyn.Status.Reset_Platz_2_aktiv + S Dyn.Vorstau.Freigabe_an_Stopper + S Dyn.Status."Trolley_fährt_nach_Platz_2" + S Dyn.Platz_2.Beladestelle_wurde_angefahren + JC SX001 + + A( + O Dyn.SS."PC>Trolley_zum_Platz_3_starten" + O "SGes".Ohne_PC_Fahren + ) + AN Dyn.SS."Trolley_ist_in_Platz_3_eingefahren>PC" // Alt-Telegramm noch nicht gesendet + AN B_an_Platz_3 + AN Y_Platz_3 // Arbeitsplatz ist geöffnet + AN Dyn.Platz_3.Beladestelle_wurde_angefahren // wegen FIFO-Versorgung + AN Dyn.Platz_3.Trolley_ist_an_Beladung + AN Dyn.Status.Reset_Platz_3_aktiv + S Dyn.Vorstau.Freigabe_an_Stopper + S Dyn.Status."Trolley_fährt_nach_Platz_3" + S Dyn.Platz_3.Beladestelle_wurde_angefahren + JC SX001 + + SET + R Dyn.Platz_1.Beladestelle_wurde_angefahren + R Dyn.Platz_2.Beladestelle_wurde_angefahren + R Dyn.Platz_3.Beladestelle_wurde_angefahren + + JU Raus_NEU + +SX001: L 1 // Weiter mit Schritt 1 + JU Neu_Mig // Bei diesem Schritt weiter + + +--- NW 32: Schritt 1: Trolley gestartet --- +s001: SET // Weiterschaltbedingung + A Y_Vorstau + = Weiter + +// Schrittaktionen: + + A Weiter + R Dyn.Vorstau.Freigabe_an_Stopper + R Dyn.Sk_zum_Beladeplatz.Err_Uebzeit + L 0 // Angabe der Wartezeit (*100ms) + JC Plus // Nächsten Raus_Schritt starten************************************************ + + JU Raus_NEU + + +--- NW 33: Schritt 2: Ziel erreicht ? --- +s002: SET // Weiterschaltbedingung + A( + A Dyn.Status."Trolley_fährt_nach_Platz_1" + A B_an_Platz_1 + O + A Dyn.Status."Trolley_fährt_nach_Platz_2" + A B_an_Platz_2 + O + A Dyn.Status."Trolley_fährt_nach_Platz_3" + A B_an_Platz_3 + ) + A MindestZeit_Rein_Ok + = Weiter + +// Schrittaktionen: + SET + S Antrieb_Vorstau_vor + + AN B_In_Schleuse_Vorstau + S Dyn.Vorstau."Trolley_fährt_aus" + + A Dyn.Status."Trolley_fährt_nach_Platz_1" + = Y_Weiche_zu_Platz_1 + A Dyn.Status."Trolley_fährt_nach_Platz_2" + = Y_Weiche_zu_Platz_2 + + A Weiter + L 0 + JC Plus // Nächsten Schritt starten + + L 16#B061 + T Dyn.Stop_Ursache_Rein + + JU Raus_NEU + +--- NW 34: Schritt 3: Trolleydaten ändern --- +s003: SET // Weiterschaltbedingung + = Weiter + +// Schrittaktionen: + SET + R Dyn.Vorstau."Trolley_fährt_aus" + S Trolley_hat_ABS_erreicht // Rückmeldung an Vorstau (Draussen-Sensor) + + A Dyn.Status."Trolley_fährt_nach_Platz_1" + R Dyn.Status."Trolley_fährt_nach_Platz_1" + S Dyn.Platz_1.Trolley_ist_an_Beladung + R Dyn.SS."PC>Trolley_zum_Platz_1_starten" + R Dyn.SS."PC>Trolley_an_Platz_1_freigegeben" // Signal kam zu früh + S Dyn.SS."Trolley_ist_in_Platz_1_eingefahren>PC" + + A Dyn.Status."Trolley_fährt_nach_Platz_2" + R Dyn.Status."Trolley_fährt_nach_Platz_2" + S Dyn.Platz_2.Trolley_ist_an_Beladung + R Dyn.SS."PC>Trolley_zum_Platz_2_starten" + R Dyn.SS."PC>Trolley_an_Platz_2_freigegeben" // Signal kam zu früh + S Dyn.SS."Trolley_ist_in_Platz_2_eingefahren>PC" + + A Dyn.Status."Trolley_fährt_nach_Platz_3" + R Dyn.Status."Trolley_fährt_nach_Platz_3" + S Dyn.Platz_3.Trolley_ist_an_Beladung + R Dyn.SS."PC>Trolley_zum_Platz_3_starten" + R Dyn.SS."PC>Trolley_an_Platz_3_freigegeben" // Signal kam zu früh + S Dyn.SS."Trolley_ist_in_Platz_3_eingefahren>PC" + +// Leertrolleys -1: + L Dyn.Vorstau.Anzahl_Leertrolleys + + -1 + T Dyn.Vorstau.Anzahl_Leertrolleys + + L 0 + >=I + JC ENDE_Mig + + T Dyn.Vorstau.Anzahl_Leertrolleys // Minimum übergeben + + JU ENDE_Mig + + +--- NW 35: Schritt 20: Einfahr-Sk resetten --- +s020: SET // Weiterschaltbedingung + A Antrieb_Vorstau_aktiv + = Weiter // Weiterschaltbedingung ist erfüllt + +// Schrittaktionen: + SET + S Antrieb_Vorstau_vor // Kreiselantrieb starten + + L 16#B201 + T Dyn.Stop_Ursache_Rein + + SET + S Antrieb_Vorstau_vor + + A Weiter // Weiterschaltbedingung ist erfüllt + L 3000 // Angabe der Wartezeit (*10ms) + JC Plus // Nächsten Schritt starten + + JU Raus_NEU + + +--- NW 36: Schritt 21: Reset ist zu Ende --- +s021: SET + R Dyn.Sk_zum_Beladeplatz.Reset_Akt // Reset ist aktiv + + JU ENDE_Mig // Ende + + +--- NW 37: Schrittkette beenden --- +ENDE_Mig: L 0 // Schritt 0: Warten + T Dyn.Sk_zum_Beladeplatz.Akt_Schritt + + L 0 // Zeitwert löschen + T Dyn.Sk_zum_Beladeplatz.Terr_Zelle + T Dyn.Sk_zum_Beladeplatz.Tok_Zelle + + SET + R Dyn.Sk_zum_Beladeplatz.Err_Uebzeit + R Dyn.Status."Trolley_fährt_nach_Platz_1" + R Dyn.Status."Trolley_fährt_nach_Platz_2" + R Dyn.Status."Trolley_fährt_nach_Platz_3" + R Dyn.Vorstau."Trolley_fährt_aus" + R Dyn.Vorstau.Freigabe_an_Stopper + + JU Raus_NEU + + +--- NW 38: Nächsten Schritt aktivieren --- +Plus: T Dyn.Sk_zum_Beladeplatz.T_ok // Wartezeit übergeben + + A Dyn.Sk_zum_Beladeplatz.Err_Uebzeit // Störung noch nicht quittiert + JC Raus_NEU + + L 0 // keine Wartezeit ? + ==I // Ja ! -> sofort weiter + JC w220 + + AN Warte_neu // Wartezeit neutriggern + JC W220_Mig + + L 0 + T Dyn.Sk_zum_Beladeplatz.Tok_Zelle // Wartezeit + +W220_Mig: A Warte_stop // Wartezeit stoppen + JC Raus_NEU + + L Dyn.Sk_zum_Beladeplatz.Tok_Zelle + L "MW4" // Wartezeit +10ms + +I + T Dyn.Sk_zum_Beladeplatz.Tok_Zelle // Wartezeit + L Dyn.Sk_zum_Beladeplatz.T_ok // abgelaufen ? + I // abgelaufen ? + AN Dyn.Sk_zum_Beladeplatz.Err_Uebzeit + JC en24 // Nein ! + + A Ueb_akt // Überwachungszeit aktivieren + S Dyn.Sk_zum_Beladeplatz.Err_Uebzeit + + L 0 // Zeitwert löschen + T Dyn.Sk_zum_Beladeplatz.Terr_Zelle + + JU Raus_NEU + +en24: NOP 0 + +--- NW 40: Überwachungszeit +1 --- + AN Dyn.Sk_zum_Beladeplatz.Ueb_akt // Schrittaktion ist aktiv + ON "1s-Impuls" + JC Raus_NEU + + L Dyn.Sk_zum_Beladeplatz.Terr_Zelle + + 1 // Üb.zeit +1s + T Dyn.Sk_zum_Beladeplatz.Terr_Zelle + + JU Raus_NEU + + +--- NW 41: Sprungverteiler SK-Rausfahren --- +Raus_NEU: SET + R Raus_Warte_neu // Wartezeit neutriggern + R Raus_Warte_stop // Wartezeit stoppen + + L Dyn.Sk_aus_Beladeplatz.Akt_Schritt + JL Raus_Ende_Mig + JU Raus_s000 // Schritt 0 + JU Raus_s001 // Schritt 1 + JU Raus_s002 // Schritt 2 + JU Raus_s003 // Schritt 3 + JU Raus_s004 // Schritt 4 + JU Raus_s005 // Schritt 5 + JU Raus_s006 // Schritt 6 + JU Raus_s007 // Schritt 7 + JU Raus_s008 // Schritt 8 + JU Raus_s009 // Schritt 9 + JU Raus_s010 // Schritt 10 + JU Raus_s011 // Schritt 11 + JU Raus_s012 // Schritt 12 + JU Raus_s013 // Schritt 13 + JU Raus_s014 // Schritt 14 + JU Raus_s015 // Schritt 15 + JU Raus_s016 // Schritt 16 + JU Raus_s017 // Schritt 17 + JU Raus_s018 // Schritt 18 + JU Raus_s019 // Schritt 19 + JU Raus_s020 // Schritt 20 + JU Raus_s021 // Schritt 21 + JU Raus_s022 // Schritt 22 + JU Raus_s023 // Schritt 23 + JU Raus_s024 // Schritt 24 + JU Raus_s025 // Schritt 25 + JU Raus_s026 // Schritt 26 + JU Raus_s027 // Schritt 27 + JU Raus_s028 // Schritt 28 + JU Raus_s029 // Schritt 29 + JU Raus_s030 // Schritt 30 +Raus_Ende_Mig: S Dyn.Sk_aus_Beladeplatz.Err_Schritt // Undefinierter Schritt + BEU + +Raus_Neu_Mig: A Dyn.Sk_aus_Beladeplatz.Einzelschritt_akt // Einzelschritt fahren aktiv + S Dyn.Sk_aus_Beladeplatz.Einzelschritt_fertig // Einzelschritt ist ausgeführt + + A Dyn.Sk_aus_Beladeplatz.Err_Uebzeit + BEC + + T Dyn.Sk_aus_Beladeplatz.Akt_Schritt + + L 0 // Zeitwerte löschen + T Dyn.Sk_aus_Beladeplatz.Terr_Zelle + T Dyn.Sk_aus_Beladeplatz.Tok_Zelle + + JU Raus_NEU + +// Nicht programmierte Schritte: +// Raus_s000 : SPA Raus_Ende_Mig +// Raus_s001 : SPA Raus_Ende_Mig +// Raus_s002 : SPA Raus_Ende_Mig +// Raus_s003 : SPA Raus_Ende_Mig +// Raus_s004 : SPA Raus_Ende_Mig +// Raus_s005 : SPA Raus_Ende_Mig +Raus_s006: JU Raus_Ende_Mig +Raus_s007: JU Raus_Ende_Mig +Raus_s008: JU Raus_Ende_Mig +Raus_s009: JU Raus_Ende_Mig +Raus_s010: JU Raus_Ende_Mig +Raus_s011: JU Raus_Ende_Mig +Raus_s012: JU Raus_Ende_Mig +Raus_s013: JU Raus_Ende_Mig +Raus_s014: JU Raus_Ende_Mig +Raus_s015: JU Raus_Ende_Mig +Raus_s016: JU Raus_Ende_Mig +Raus_s017: JU Raus_Ende_Mig +Raus_s018: JU Raus_Ende_Mig +Raus_s019: JU Raus_Ende_Mig +// Raus_s020 : SPA Raus_Ende_Mig +// Raus_s021 : SPA Raus_Ende_Mig +Raus_s022: JU Raus_Ende_Mig +Raus_s023: JU Raus_Ende_Mig +Raus_s024: JU Raus_Ende_Mig +Raus_s025: JU Raus_Ende_Mig +Raus_s026: JU Raus_Ende_Mig +Raus_s027: JU Raus_Ende_Mig +Raus_s028: JU Raus_Ende_Mig +Raus_s029: JU Raus_Ende_Mig +Raus_s030: JU Raus_Ende_Mig + + +--- NW 42: SK-Raus: Schritt 0: Raus-Auftrag erzeugen --- +Raus_s000: NOP 0 + +// Schrittaktionen: + + A Dyn.Sk_aus_Beladeplatz.Reset_Akt // Reset ist aktiv + L 20 // Weiter mit Schritt 20 + JC Raus_Neu_Mig // Bei diesem Schritt weiter + + A B_Nachstau_Einfahrt + O Y_Platz_1 // Ein Arbeitsplatz geöffnet + O Y_Platz_2 + O Y_Platz_3 + O Dyn.Platz_1."Trolley_fährt_aus" + O Dyn.Platz_2."Trolley_fährt_aus" + O Dyn.Platz_3."Trolley_fährt_aus" + O Dyn.Status."Trolley_fährt_in_Nachstau" + O Dyn.Status.Reset_aus_Beladeplatz_aktiv + BEC // Kein Platz vor Nachstau-Schleuse + + SET + R Dyn.Status."Trolley_fährt_aus_Platz_1" + R Dyn.Platz_1.Freigabe_an_Stopper + R Dyn.Status."Trolley_fährt_aus_Platz_2" + R Dyn.Platz_2.Freigabe_an_Stopper + R Dyn.Status."Trolley_fährt_aus_Platz_3" + R Dyn.Platz_3.Freigabe_an_Stopper + + A B_an_Platz_1 + AN Dyn.SS."Trolley_ist_aus_Platz_1_ausgefahren>PC" // Alt-Telegramm noch nicht gesendet + A Dyn.SS."PC>Trolley_an_Platz_1_freigegeben" // Signal für Platz-Schleuse zum Öffnen + AN Dyn.Platz_1.Beladestelle_wurde_entsorgt // wegen FIFO-Entsorgung + R Dyn.SS."PC>Trolley_an_Platz_1_freigegeben" // Signal für Platz-Schleuse zum Öffnen + S Dyn.Status."Trolley_fährt_aus_Platz_1" + S Dyn.Platz_1.Beladestelle_wurde_entsorgt + S Dyn.Platz_1.Freigabe_an_Stopper + JC SXR000 + + A B_an_Platz_2 + AN Dyn.SS."Trolley_ist_aus_Platz_2_ausgefahren>PC" // Alt-Telegramm noch nicht gesendet + A Dyn.SS."PC>Trolley_an_Platz_2_freigegeben" // Signal für Platz-Schleuse zum Öffnen + AN Dyn.Platz_2.Beladestelle_wurde_entsorgt // wegen FIFO-Entsorgung + R Dyn.SS."PC>Trolley_an_Platz_2_freigegeben" // Signal für Platz-Schleuse zum Öffnen + S Dyn.Status."Trolley_fährt_aus_Platz_2" + S Dyn.Platz_2.Beladestelle_wurde_entsorgt + S Dyn.Platz_2.Freigabe_an_Stopper + JC SXR000 + + A B_an_Platz_3 + AN Dyn.SS."Trolley_ist_aus_Platz_3_ausgefahren>PC" // Alt-Telegramm noch nicht gesendet + A Dyn.SS."PC>Trolley_an_Platz_3_freigegeben" // Signal für Platz-Schleuse zum Öffnen + AN Dyn.Platz_3.Beladestelle_wurde_entsorgt // wegen FIFO-Entsorgung + R Dyn.SS."PC>Trolley_an_Platz_3_freigegeben" // Signal für Platz-Schleuse zum Öffnen + S Dyn.Status."Trolley_fährt_aus_Platz_3" + S Dyn.Platz_3.Beladestelle_wurde_entsorgt + S Dyn.Platz_3.Freigabe_an_Stopper + JC SXR000 + + SET + R Dyn.Platz_1.Beladestelle_wurde_entsorgt + R Dyn.Platz_2.Beladestelle_wurde_entsorgt + R Dyn.Platz_3.Beladestelle_wurde_entsorgt + + BEU + +SXR000: L 1 // Weiter mit Schritt 1 + JU Raus_Neu_Mig // Bei diesem Schritt weiter + + +--- NW 43: SK-Raus: Schritt 1: Trolley gestartet --- +Raus_s001: NOP 0 // Weiterschaltbedingung + A Dyn.Platz_1."Trolley_fährt_aus" + O Dyn.Platz_2."Trolley_fährt_aus" + O Dyn.Platz_3."Trolley_fährt_aus" + = Weiter + +// Schrittaktionen: + SET + S Dyn.Status.Beladung_erfolgt + + A Y_Platz_1 + A Dyn.Status."Trolley_fährt_aus_Platz_1" + S Dyn.Platz_1."Trolley_fährt_aus" + R Dyn.Platz_1.Freigabe_an_Stopper + + A Y_Platz_2 + A Dyn.Status."Trolley_fährt_aus_Platz_2" + S Dyn.Platz_2."Trolley_fährt_aus" + R Dyn.Platz_2.Freigabe_an_Stopper + + A Y_Platz_3 + A Dyn.Status."Trolley_fährt_aus_Platz_3" + S Dyn.Platz_3."Trolley_fährt_aus" + R Dyn.Platz_3.Freigabe_an_Stopper + + A Weiter + R Dyn.Sk_aus_Beladeplatz.Err_Uebzeit + R Dyn.Status.Trolley_hat_Nachstau_erreicht + L 0 // Angabe der Wartezeit (*100ms) + JC Raus_Plus // Nächsten Raus_Schritt starten************************************************ + + BEU + + +--- NW 44: SK-Raus: Schritt 2: Trolley hat Arbeitsplatz verlassen --- +Raus_s002: NOP 0 +// Schrittaktionen: + A B_Nachstau_Einfahrt + S Dyn.Status.Trolley_hat_Nachstau_erreicht + + A Dyn.Status."Trolley_fährt_aus_Platz_1" + = Y_Weiche_von_Platz_1 + S Antrieb_Nachstau_1_vor + S Antrieb_Nachstau_3_vor + + A Dyn.Status."Trolley_fährt_aus_Platz_2" + = Y_Weiche_von_Platz_2 + S Antrieb_Nachstau_2_vor + S Antrieb_Nachstau_3_vor + S Antrieb_Nachstau_1_vor + + A Dyn.Status."Trolley_fährt_aus_Platz_3" + S Antrieb_Nachstau_3_vor + S Antrieb_Nachstau_1_vor + +// Weiterschaltbedingung: + A Dyn.Platz_1.Trolley_hat_Arbeitsplatz_verlassen // von Schleuse + A Dyn.Status."Trolley_fährt_aus_Platz_1" + R Dyn.Platz_1.Trolley_hat_Arbeitsplatz_verlassen + R Dyn.Platz_1."Trolley_fährt_aus" + S Dyn.Status."Trolley_fährt_in_Nachstau" + S Dyn.SS."Trolley_ist_aus_Platz_1_ausgefahren>PC" // Signal von Platz-Schleuse + JC R2weiter + + A Dyn.Status."Trolley_fährt_aus_Platz_2" + A Dyn.Platz_2.Trolley_hat_Arbeitsplatz_verlassen // von Schleuse + R Dyn.Platz_2.Trolley_hat_Arbeitsplatz_verlassen + R Dyn.Platz_2."Trolley_fährt_aus" + S Dyn.Status."Trolley_fährt_in_Nachstau" + S Dyn.SS."Trolley_ist_aus_Platz_2_ausgefahren>PC" // Signal von Platz-Schleuse + JC R2weiter + + A Dyn.Status."Trolley_fährt_aus_Platz_3" + A Dyn.Platz_3.Trolley_hat_Arbeitsplatz_verlassen // von Schleuse + R Dyn.Platz_3.Trolley_hat_Arbeitsplatz_verlassen + R Dyn.Platz_3."Trolley_fährt_aus" + S Dyn.Status."Trolley_fährt_in_Nachstau" + S Dyn.SS."Trolley_ist_aus_Platz_3_ausgefahren>PC" // Signal von Platz-Schleuse + JC R2weiter + +// Trolley fährt nicht in Nachstau: + A( + ON Dyn.Status."Trolley_fährt_aus_Platz_2" + O Antrieb_Nachstau_2_aktiv + ) + A Antrieb_Nachstau_3_aktiv + A Antrieb_Nachstau_3_aktiv + = Raus_Ueb_akt // Überwachungszeit aktivieren + L 60 // Angabe der Überwachungszeit (*1s) + JU Raus_tueb // Überwachungszeit + +R2weiter: SET + R Dyn.Sk_aus_Beladeplatz.Err_Uebzeit + L 0 // Angabe der Wartezeit (*100ms) + JU Raus_Plus // Nächsten Raus_Schritt starten************************************************ + + +--- NW 45: SK-Raus: Schritt 3: Trolley in Nachstau fahren --- +Raus_s003: A Dyn.Status.Trolley_hat_Nachstau_erreicht + A Antrieb_Nachstau_3_aktiv // Nur bei aktivem Antrieb auswerten! + A MindestZeit_Raus_Ok + = Weiter + +// Schrittaktionen: + A B_Nachstau_Einfahrt + S Dyn.Status.Trolley_hat_Nachstau_erreicht + + A Dyn.Status."Trolley_fährt_aus_Platz_1" + = Y_Weiche_von_Platz_1 + S Antrieb_Nachstau_1_vor + S Antrieb_Nachstau_3_vor + + A Dyn.Status."Trolley_fährt_aus_Platz_2" + = Y_Weiche_von_Platz_2 + S Antrieb_Nachstau_2_vor + S Antrieb_Nachstau_3_vor + S Antrieb_Nachstau_1_vor + + A Dyn.Status."Trolley_fährt_aus_Platz_3" + S Antrieb_Nachstau_3_vor + S Antrieb_Nachstau_1_vor + + A Weiter + R Dyn.Sk_aus_Beladeplatz.Err_Uebzeit + L 0 // Angabe der Wartezeit (*100ms) + JC Raus_Plus // Nächsten Raus_Schritt starten************************************************ + +// Trolley fährt nicht in Nachstau: + A( + ON Dyn.Status."Trolley_fährt_aus_Platz_2" + O Antrieb_Nachstau_2_aktiv + ) + A Antrieb_Nachstau_3_aktiv + A Antrieb_Nachstau_3_aktiv + = Raus_Ueb_akt // Überwachungszeit aktivieren + L 60 // Angabe der Überwachungszeit (*1s) + JU Raus_tueb // Überwachungszeit + + +--- NW 46: SK-Raus: Schritt 4: 5s Weiterfahren --- +Raus_s004: SET // Weiterschaltbedingung + = Weiter + +// Schrittaktionen: + A Dyn.Status."Trolley_fährt_aus_Platz_2" + AN Antrieb_Nachstau_2_aktiv + ON Antrieb_Nachstau_1_aktiv + ON Antrieb_Nachstau_3_aktiv + O Y_Platz_1 // Ein Arbeitsplatz noch geöffnet + O Y_Platz_2 + O Y_Platz_3 + S Raus_Warte_neu + S Raus_Warte_stop + + A Dyn.Status."Trolley_fährt_aus_Platz_1" + = Y_Weiche_von_Platz_1 + S Antrieb_Nachstau_1_vor + S Antrieb_Nachstau_3_vor + + A Dyn.Status."Trolley_fährt_aus_Platz_2" + = Y_Weiche_von_Platz_2 + S Antrieb_Nachstau_2_vor + S Antrieb_Nachstau_3_vor + S Antrieb_Nachstau_1_vor + + A Dyn.Status."Trolley_fährt_aus_Platz_3" + S Antrieb_Nachstau_3_vor + S Antrieb_Nachstau_1_vor + + L 50 // Angabe der Wartezeit (*100ms) + JU Raus_Plus // Nächsten Raus_Schritt starten************************************************ + + +--- NW 47: SK-Raus: Schritt 5: Fertig --- +Raus_s005: NOP 0 // Weiterschaltbedingung + + JU Raus_Ende + + +--- NW 48: SK-Raus: Schritt 20: Schleuse resetten --- +Raus_s020: SET // Weiterschaltbedingung + A Antrieb_Nachstau_1_aktiv + A Antrieb_Nachstau_2_aktiv + A Antrieb_Nachstau_3_aktiv + = Weiter // Weiterschaltbedingung ist erfüllt + +// Schrittaktionen: + SET + S Antrieb_Nachstau_1_vor // Antriebe starten + S Antrieb_Nachstau_2_vor + S Antrieb_Nachstau_3_vor + + L 16#B201 + T Dyn.Stop_Ursache_Raus + + A Weiter // Weiterschaltbedingung ist erfüllt + L 300 // Angabe der Wartezeit (*100ms) + JC Raus_Plus // Nächsten Raus_Schritt starten************************************************ + + BEU + + +--- NW 49: SK-Raus: Schritt 21: Reset ist zu Ende --- +Raus_s021: SET + R Dyn.Sk_aus_Beladeplatz.Reset_Akt // Reset ist aktiv + + JU Raus_Ende // Ende + + +--- NW 50: SK-Raus: Schrittkette beenden --- +Raus_Ende: L 0 // Schritt 0: Warten + T Dyn.Sk_aus_Beladeplatz.Akt_Schritt + + L 0 // Zeitwert löschen + T Dyn.Sk_aus_Beladeplatz.Terr_Zelle + T Dyn.Sk_aus_Beladeplatz.Tok_Zelle + + SET + R Dyn.Sk_aus_Beladeplatz.Err_Uebzeit + R Dyn.Status."Trolley_fährt_aus_Platz_1" + R Dyn.Platz_1."Trolley_fährt_aus" + R Dyn.Platz_1.Freigabe_an_Stopper + R Dyn.Status."Trolley_fährt_aus_Platz_2" + R Dyn.Platz_2."Trolley_fährt_aus" + R Dyn.Platz_2.Freigabe_an_Stopper + R Dyn.Status."Trolley_fährt_aus_Platz_3" + R Dyn.Platz_3."Trolley_fährt_aus" + R Dyn.Platz_3.Freigabe_an_Stopper + R Dyn.Status."Trolley_fährt_in_Nachstau" + + BEU + + +--- NW 51: SK-Raus: Nächsten Schritt aktivieren --- +Raus_Plus: T Dyn.Sk_aus_Beladeplatz.T_ok // Wartezeit übergeben + + A Dyn.Sk_aus_Beladeplatz.Err_Uebzeit // Störung noch nicht quittiert + BEC + + L 0 // keine Wartezeit ? + ==I // Ja ! -> sofort weiter + JC Raus_w220 + + AN Raus_Warte_neu // Wartezeit neutriggern + JC Nix_Neu + + L 0 + T Dyn.Sk_aus_Beladeplatz.Tok_Zelle // Wartezeit + +Nix_Neu: A Raus_Warte_stop // Wartezeit stoppen + BEC + + AN "100ms-Impuls" // 0,1s-Impuls + BEC + + L Dyn.Sk_aus_Beladeplatz.Tok_Zelle + L "MW2" // Wartezeit +100ms + +I + T Dyn.Sk_aus_Beladeplatz.Tok_Zelle // Wartezeit + L Dyn.Sk_aus_Beladeplatz.T_ok // abgelaufen ? + I // abgelaufen ? + AN Dyn.Sk_aus_Beladeplatz.Err_Uebzeit + JC en50 // Nein ! + + A Raus_Ueb_akt // Überwachungszeit aktivieren + S Dyn.Sk_aus_Beladeplatz.Err_Uebzeit + + L 0 // Zeitwert löschen + T Dyn.Sk_aus_Beladeplatz.Terr_Zelle + + BEU + +en50: NOP 0 + +--- NW 53: SK-Raus: Überwachungszeit +1 --- + AN Dyn.Sk_aus_Beladeplatz.Ueb_akt // Schrittaktion ist aktiv + ON "1s-Impuls" + BEC + + L Dyn.Sk_aus_Beladeplatz.Terr_Zelle + + +1 + T Dyn.Sk_aus_Beladeplatz.Terr_Zelle + + BEU + + +--- NW 54: Ende --- + BE + diff --git a/=A01+UH06-KF00/Programmbausteine/Module/MHMÜbergang_ohne_Schleuse_AMR.awl b/=A01+UH06-KF00/Programmbausteine/Module/MHMÜbergang_ohne_Schleuse_AMR.awl new file mode 100644 index 0000000..fcded97 --- /dev/null +++ b/=A01+UH06-KF00/Programmbausteine/Module/MHMÜbergang_ohne_Schleuse_AMR.awl @@ -0,0 +1,100 @@ +=== FB 183: MHMÜbergang_ohne_Schleuse_AMR [STL] === +INTERFACE: + Input: + ErrQuit : Bool + B_Anfang : Bool + B_Am_Übergang : Bool + B_Stau_Antrieb_plus : Bool + Antrieb_aktiv : Bool + Antrieb_plus_aktiv : Bool + Output: + InOut: + Antrieb_vor : Bool + Antrieb_start : Bool + Antrieb_stop : Bool + Antrieb_plus_vor : Bool + Antrieb_plus_start : Bool + Static: + Am_Übergang : "MSensoren" + Stau_Antrieb_plus : "MSensoren" + Stau_B_Anfang : "MSensoren" + Temp: + Antrieb : Bool + Antrieb_gestoppt : Bool + Constant: + +--- NW 1: Antrieb ansteuern --- + SET + R Antrieb_gestoppt // Falls bei Aufruf nicht gestoppt wird! + +// Antrieb starten: + A B_Anfang + O ErrQuit + S Antrieb_start + + A B_Anfang + AN Stau_B_Anfang.Stat.B_Akt + O ErrQuit + S Antrieb_vor + +// Trolley am Übergang: + AN "Am_Übergang".Stat.B_Akt + JC Nix + +// Antrieb stoppen: + A Stau_Antrieb_plus.Stat.B_Akt + S Antrieb_stop // Trolley stoppen + S Antrieb_gestoppt // Falls bei Aufruf nicht gestoppt wird! + JC Nix + + AN Stau_Antrieb_plus.Stat.B_Akt + S Antrieb_plus_vor // Antrieb plus einschalten + + SET + S Antrieb_plus_start // Antrieb plus zeitlang starten + + AN Antrieb_plus_aktiv + S Antrieb_stop // Trolley stoppen + S Antrieb_gestoppt // Falls bei Aufruf nicht gestoppt wird! + JC Nix + +// Antrieb einschalten: + SET + S Antrieb_vor // Trolley weiterfahren + +Nix: NOP 0 + + +--- NW 2: Antrieb plus zusätzlich ansteuern --- +// Antrieb plus starten: + A B_Stau_Antrieb_plus // Sensor + O ErrQuit + S Antrieb_plus_start // Antrieb plus zeitlang starten + +// Antrieb plus einschalten: + A B_Stau_Antrieb_plus + AN Stau_Antrieb_plus.Stat.B_Akt + CLR // Nicht mehr! + S Antrieb_plus_vor // Antrieb plus einschalten + + +--- NW 3: Stau B_Anfang --- +CALL FB "None" , (ESensor:=B_Anfang, T_Ein:=1, T_Aus:=100, tein_aktiv:=Antrieb_aktiv, taus_aktiv:=1) + + +--- NW 4: Trolley ist am Übergang --- + A Antrieb_aktiv + A Antrieb_plus_aktiv + AN Antrieb_gestoppt // Falls bei Aufruf nicht gestoppt wird! + = Antrieb + +CALL FB "None" , (ESensor:="B_Am_Übergang", T_Ein:=1, T_Aus:=100, tein_aktiv:=1, taus_aktiv:=Antrieb) + + +--- NW 5: Stau im Förderer plus --- +CALL FB "None" , (ESensor:=B_Stau_Antrieb_plus, T_Ein:=100, T_Aus:=50, tein_aktiv:=1, taus_aktiv:=1) + + +--- NW 6: Ende --- + BE + diff --git a/=A01+UH06-KF00/Programmbausteine/Module/MImpulsGeber.awl b/=A01+UH06-KF00/Programmbausteine/Module/MImpulsGeber.awl new file mode 100644 index 0000000..fdda011 --- /dev/null +++ b/=A01+UH06-KF00/Programmbausteine/Module/MImpulsGeber.awl @@ -0,0 +1,122 @@ +=== FB 100: MImpulsGeber [STL] === +INTERFACE: + Input: + Ink_DB : Int // DB-Nr des Inkremental-Gebers (Zählerbaugruppe) Neu-Sync-Zähler + B_Zaehlen : Bool // Sensor zum Zählen + Antrieb_aktiv : Bool // Antrieb ist aktiv + Quit : Bool + Zeit_Signal_zu_lang : Time := T#350ms + Zeit_Kein_Signal : Time := T#500ms + Output: + Signal : Bool // Falls kein InkDB + InOut: + Err_Kein_Signal : Bool // Kein_Signal bei laufenden Antrieb + Err_Signal_zu_lang : Bool // Signal bei laufenden Antrieb zu lang + Static: + Sensor_entprellen : Bool + Timer_1 : TON_TIME + Timer_2 : TON_TIME + Timer_3 : TON_TIME + Temp: + Constant: + +--- NW 1: Initialisierung --- + SET + R Signal + + +--- NW 2: Störungen --- +// Störung quittieren: + A Quit + R Err_Signal_zu_lang + R Err_Kein_Signal + +// Signal zu lang: + A B_Zaehlen // Sensor zum Zählen + A Antrieb_aktiv // Antrieb ist aktiv + AN Quit + = "M200.0" + +CALL SYS "TON" (IN:="M200.0", PT:=Zeit_Signal_zu_lang, Q:=?, ET:=?) + + A Timer_2.Q + S Err_Signal_zu_lang + +// Kein Signal: + AN B_Zaehlen // Sensor zum Zählen + A Antrieb_aktiv // Antrieb ist aktiv + AN Quit + = "M200.0" + +CALL SYS "TON" (IN:="M200.0", PT:=Zeit_Kein_Signal, Q:=?, ET:=?) + + A Timer_3.Q + S Err_Kein_Signal + + +--- NW 3: Zählen über Sensor --- + AN B_Zaehlen // Sensor zum Zählen + A Sensor_entprellen // Sperre Auswertung schon erfolgt + A Antrieb_aktiv // Antrieb ist aktiv + = "M200.0" + +CALL SYS "TON" (IN:="M200.0", PT:=t#50ms, Q:=?, ET:=?) + + A Timer_1.Q + R Sensor_entprellen // Sperre Auswertung schon erfolgt + + AN B_Zaehlen // Sensor zum Zählen + O Sensor_entprellen + BEC + + SET + S Sensor_entprellen // Sperre Auswertung schon erfolgt + S Signal // Für Signal-Auswertung ohne InkDB + + +--- NW 4: Übergabe an Inkrement-Baustein / max.Wert erreicht? --- + L Ink_DB + T "MW200" + + L 0 // Sinnvolle Angabe? + <=I // Nein! + BEC // Also nur Signal-Auswertung ! + + OPN DB["MW200"] // Zähler-DB öffnen + + L DBD80 + + DINT#1 // Aktueller Zählerwert +1 + T DBD80 + + L DBD80 // Aktueller Zählerwert + L DBD76 // Max. Wert erreicht ? + <=D // Nein ! + R DBX74.5 // Ohne Flag-Lauf wurde beendet + R DBX74.4 // Flag-Lauf wurde beendet + BEC + + -D // Restwert als Startwert nehmen ! + T DBD80 // Keine Inkrementalgeber verbaut, sondern nur Sensor + + AN DBX74.3 // Umschaltung Zähl-Lauf ohne-mit-ohne Flag + = DBX74.5 // Ohne Flag-Lauf wurde beendet + A DBX74.3 // Umschaltung Zähl-Lauf ohne-mit-ohne Flag + = DBX74.4 // Flag-Lauf wurde beendet + + AN DBX74.3 // Umschaltung Zähl-Lauf ohne-mit-ohne Flag + = DBX74.3 + +// Zähler auf 000 setzen ?: + AN DBX74.6 // Zähler Zero-Load + BEC + + SET + R DBX74.6 + + L 0 + T DBD80 // Zählerwert zum Setzen + + +--- NW 5: Ende --- + BE + diff --git a/=A01+UH06-KF00/Programmbausteine/Module/MSensoren.awl b/=A01+UH06-KF00/Programmbausteine/Module/MSensoren.awl new file mode 100644 index 0000000..a0302d6 --- /dev/null +++ b/=A01+UH06-KF00/Programmbausteine/Module/MSensoren.awl @@ -0,0 +1,87 @@ +=== FB 91: MSensoren [STL] === +INTERFACE: + Input: + ESensor : Bool // Eingang des zu überwachenden Sensors + T_Ein : Int := 1 // Einschaltzeitverzögerung (*100ms) + T_Aus : Int := 5 // Ausschaltzeitverzögerung (*100ms) + tein_aktiv : Bool := TRUE // Einschaltzeit aktivieren + taus_aktiv : Bool := TRUE // Ausschaltzeit aktivieren + Output: + InOut: + Static: + Stat : "USensor_Ein_Aus" // Status des Endschalters + Temp: + Constant: + +--- NW 1: Zeitwert löschen --- + A ESensor + A Stat.B_Akt + O + AN ESensor + AN Stat.B_Akt + JCN Nw02 + + +tdel: L 0 // Zeitwert löschen + T Stat.T_Zelle + + BEU + +--- NW 2: Einschaltzeit abgelaufen ? --- +Nw02: L Stat.T_Ein_Akt // Gewollter Zeitwert + L 9999 // angegeben ? + <>I // Ja ! + JC w020 + + L T_Ein // Sollwert übergeben + T Stat.T_Ein_Akt // Gewollter Zeitwert + +w020: A Stat.B_Akt + JC Nw03 + + L Stat.T_Zelle // Aktueller Zeitwert + L Stat.T_Ein_Akt // Gewollter Zeitwert erreicht ? + >=I + S Stat.B_Akt // Sensor ist nach Einschaltzeit aktiv + JC tdel // Zeit löschen + + JU Nw04 + +--- NW 3: Ausschaltzeit abgelaufen ? --- +Nw03: L Stat.T_Aus_Akt // Gewollter Zeitwert + L 9999 // angegeben ? + <>I // Ja ! + JC w030 + + L T_Aus // Sollwert übergeben + T Stat.T_Aus_Akt // Gewollter Zeitwert + +w030: AN Stat.B_Akt + JC Nw04 + + L Stat.T_Zelle // Aktueller Zeitwert + L Stat.T_Aus_Akt // Gewollter Zeitwert erreicht ? + >=I + R Stat.B_Akt // Sensor ist nach Ausschaltzeit nicht mehr aktiv + JC tdel // Zeit löschen + + +--- NW 4: Zeit läuft --- +Nw04: AN "100ms-Impuls" // nur als Impuls + O + AN Stat.B_Akt // Einschaltzeit läuft + AN tein_aktiv // aber Zeit einfrieren + O + A Stat.B_Akt // Ausschaltzeit läuft + AN taus_aktiv // aber Zeit einfrieren + BEC + + L Stat.T_Zelle + L "MW2" + +I + T Stat.T_Zelle + + +--- NW 5: Ende --- + BE + diff --git a/=A01+UH06-KF00/Programmbausteine/Module/MZylinder.awl b/=A01+UH06-KF00/Programmbausteine/Module/MZylinder.awl new file mode 100644 index 0000000..4a6c6f5 --- /dev/null +++ b/=A01+UH06-KF00/Programmbausteine/Module/MZylinder.awl @@ -0,0 +1,203 @@ +=== FB 92: MZylinder [STL] === +INTERFACE: + Input: + Automatik : Bool // Automatikbetrieb ist aktiv + Handbetrieb : Bool // Handbetrieb ist aktiv + T_Ast : Int := 5 // Zeit bis AST erreicht ist (*100ms) + T_Gst : Int := 5 // Zeit bis GST erreicht ist (*100ms) + Output: + ZylAst : Bool // Vorwärts-Ausgang des Antriebs + ZylGst : Bool // Rückwärts-Ausgang des Antriebs + InOut: + Static: + Stat : "UZylinder" + Temp: + Constant: + +--- NW 1: Zeitwert löschen --- + A ZylAst // Zylinder fährt nach AST + A( + O Stat.B_AST // Hat Endstellung erreicht + ON Stat.Old_Ast // Fuhr letzten Zyklus anders + ) + O + AN ZylAst // Zylinder fährt nach GST + A( + O Stat.B_GST // Hat Endstellung erreicht + O Stat.Old_Ast // Fuhr letzten Zyklus anders + ) + JCN Nw02 + +tdel: L 0 // Zeitwert löschen + T Stat.T_Zelle + + A ZylAst // Zylinder fährt nach AST + = Stat.Old_Ast // Fuhr letzten Zyklus nach AST + + JU Nw05 + +--- NW 2: AST-Erreichtzeit abgelaufen ? --- +Nw02: L Stat.T_AST_Akt // Gewollter Zeitwert + L 9999 // angegeben ? + <>I // Ja ! + JC w020 + + L T_Ast // Sollwert übergeben + T Stat.T_AST_Akt // Gewollter Zeitwert + +w020: A ZylAst // Zylinder fährt nach AST ? + JCN en02 + + SET + R Stat.B_GST + + L Stat.T_Zelle // Aktueller Zeitwert + L Stat.T_AST_Akt // Gewollter Zeitwert erreicht ? + >=I + S Stat.B_AST // Zylinder hat AST erreicht + JC tdel // Zeit nullen + + JU Nw03 + +en02: AN Stat.Typ5_3 // Zylinder hält seine Stellung ! + R Stat.B_AST + + +--- NW 3: GST-Erreichtzeit abgelaufen ? --- +Nw03: L Stat.T_GST_Akt // Gewollter Zeitwert + L 9999 // angegeben ? + <>I // Ja ! + JC w030 + + L T_Gst // Sollwert übergeben + T Stat.T_GST_Akt // Gewollter Zeitwert + +w030: A( // Zylinder fährt nach GST ? + O Stat.Typ5_2 // Zylinder mit 2-facher Ansteuerung + O Stat.Typ5_3 + ) + A ZylGst + O + A Stat.Typ3_2 // Zylinder mit 1-facher Ansteuerung + AN ZylAst + JCN en03 + + SET + R Stat.B_AST + + L Stat.T_Zelle // Aktueller Zeitwert + L Stat.T_GST_Akt // Gewollter Zeitwert erreicht ? + >=I + S Stat.B_GST // Zylinder hat GST erreicht + JC tdel // Zeit nullen + + JU Nw04 + +en03: AN Stat.Typ5_3 // Zylinder hält seine Stellung ! + R Stat.B_GST + + +--- NW 4: Zeit läuft --- +Nw04: A( // Zylinder fährt nach GST ? + O Stat.Typ5_2 // Zylinder mit 2-facher Ansteuerung + O Stat.Typ5_3 + ) + AN ZylGst // Zylinder wird nicht angesteuert + AN ZylAst + ON "100ms-Impuls" // nur als Impuls + JC Nw05 + + L Stat.T_Zelle + L "MW2" // 100ms-Takte + +I + T Stat.T_Zelle + + +--- NW 5: Undefinierte Zustände / Befehle --- +Nw05: A Automatik // Automatik + Hand aktiv + A Handbetrieb + O + AN Automatik // keine Betriebsart + AN Handbetrieb + O + A Stat.Ast // Arbeitsstellung- + Grundstellungfahren aktiv + A Stat.Gst + O + AN Stat.Typ3_2 // Undefinierter Ventil-Typ + AN Stat.Typ5_2 + AN Stat.Typ5_3 + O + A Stat.Typ3_2 + A( + O Stat.Typ5_2 + O Stat.Typ5_3 + ) + O + A Stat.Typ5_2 + A Stat.Typ5_3 + JCN en06 // Zylinderstellung bleibt eingefroren + + A Stat.Typ5_3 // Zylinder hält seine Stellung ! + R Stat.Ast // Bewegungsbits löschen + R Stat.Gst + + BEU + +en06: NOP 0 + +--- NW 6: Zylinder auf Arbeitstellung fahren --- + A Stat.Ast + = ZylAst + + +--- NW 7: Zylinder auf Grundstellung fahren --- + A( + O Stat.Typ5_2 + O Stat.Typ5_3 + ) + A Stat.Gst + = ZylGst + + +--- NW 8: Daten, die zurückgesetzt werden --- + A Stat.Typ5_3 // Zylinder hält seine Stellung ! + R Stat.Ast // Bewegungsbits löschen + R Stat.Gst + A Stat.Typ3_2 + R Stat.Gst // Es gibt kein GST fahren ! + + +--- NW 9: Ausgänge übergeben an OP übergeben --- + A ZylGst + = Stat.OP_Out_GST + + A ZylAst + = Stat.OP_Out_AST + + +--- NW 10: Statistik --- + A ZylAst + Rise Stat.FP_AST + JCN AST2 + + L Stat.Statistik.AST_Schaltungen + L DINT#1 + +D + T Stat.Statistik.AST_Schaltungen + +AST2: A ZylGst + A Stat.Typ5_3 + Rise Stat.FP_AST2 + JCN StatEnde + + L Stat.Statistik.AST2_Schaltungen + L DINT#1 + +D + T Stat.Statistik.AST2_Schaltungen + +StatEnde: NOP 0 + + +--- NW 11: Ende --- + BE + diff --git a/=A01+UH06-KF00/Programmbausteine/Module/Set_Input.awl b/=A01+UH06-KF00/Programmbausteine/Module/Set_Input.awl new file mode 100644 index 0000000..6102644 --- /dev/null +++ b/=A01+UH06-KF00/Programmbausteine/Module/Set_Input.awl @@ -0,0 +1,34 @@ +=== FC 1028: Set_Input [STL] === +INTERFACE: + Input: + Enable : Bool // Baustein aktivieren + Status : Bool // Angegebenen Ausgang auf diesen Status steuern + InByte : DInt // Eingangsbyte zum Steuern + InBit : Int // Eingangsbit zum Steuern + Output: + InOut: + Temp: + AR1Zeiger : DWord // Statt AR1 (ging nur bis DB-Länge <= 8191 Bytes) + Constant: + Return: + Ret_Val : Void + +--- NW 1: Baustein aktiviert ? --- + AN Enable + BEC + + +--- NW 2: Eingang stuern --- + L InByte // Ausgangsbyte zum Steuern + SLD 3 + L InBit // Ausgangsbit zum Steuern + OW + T AR1Zeiger // Statt Dyn.Bereichsstop (ging nur bis DB-Länge <= 8191 Bytes) + + A Status + = IX [AR1Zeiger] // Eingang steuern + + +--- NW 3: Ende --- + BE + diff --git a/=A01+UH06-KF00/Programmbausteine/Module/Set_Output.awl b/=A01+UH06-KF00/Programmbausteine/Module/Set_Output.awl new file mode 100644 index 0000000..0946eba --- /dev/null +++ b/=A01+UH06-KF00/Programmbausteine/Module/Set_Output.awl @@ -0,0 +1,34 @@ +=== FC 127: Set_Output [STL] === +INTERFACE: + Input: + Enable : Bool // Baustein aktivieren + Status : Bool // Angegebenen Ausgang auf diesen Status steuern + OutByte : DInt // Ausgangsbyte zum Steuern + OutBit : Int // Ausgangsbit zum Steuern + Output: + InOut: + Temp: + AR1Zeiger : DWord // Statt AR1 (ging nur bis DB-Länge <= 8191 Bytes) + Constant: + Return: + Ret_Val : Void + +--- NW 1: Baustein aktiviert ? --- + AN Enable + BEC + + +--- NW 2: Ausgang steuern --- + L OutByte // Ausgangsbyte zum Steuern + SLD 3 + L OutBit // Ausgangsbit zum Steuern + OW + T AR1Zeiger // Statt Dyn.Bereichsstop (ging nur bis DB-Länge <= 8191 Bytes) + + A Status + = QX [AR1Zeiger] // Ausgang steuern + + +--- NW 3: Ende --- + BE + diff --git a/=A01+UH06-KF00/Programmbausteine/PerformanceTest/FB_PerfTest_6_180Grad.awl b/=A01+UH06-KF00/Programmbausteine/PerformanceTest/FB_PerfTest_6_180Grad.awl new file mode 100644 index 0000000..b7ecd71 --- /dev/null +++ b/=A01+UH06-KF00/Programmbausteine/PerformanceTest/FB_PerfTest_6_180Grad.awl @@ -0,0 +1,26 @@ +=== InstanceDB 202: FB_PerfTest_6_180Grad [DB] === +INTERFACE: + Input: + nInSepNo : Int + xInSepFlag : Bool + xInReset : Bool + tInTimeMeasurement : Time + nInGoalFlags : Int + Output: + InOut: + Static: + tOnTimer : TON_TIME + xTestActive : Bool + xTimerRun : Bool + nCount : Int + Date_And_TimeStart : Date_And_Time + Date_And_TimeLap : Date_And_Time + tTimeResult : Time + rTrigRun : R_TRIG + fTrigRun : F_TRIG + fTrigSepFlag : F_TRIG + arTrolley : Array[1..500] of Struct + nCount : Int + tTimeEvent : Date_And_Time + tTimeResult : Time + nTrolleyNo : Int diff --git a/=A01+UH06-KF00/Programmbausteine/PerformanceTest/FB_PerfTest_6_Ausfahrt.awl b/=A01+UH06-KF00/Programmbausteine/PerformanceTest/FB_PerfTest_6_Ausfahrt.awl new file mode 100644 index 0000000..8d6d6d9 --- /dev/null +++ b/=A01+UH06-KF00/Programmbausteine/PerformanceTest/FB_PerfTest_6_Ausfahrt.awl @@ -0,0 +1,26 @@ +=== InstanceDB 219: FB_PerfTest_6_Ausfahrt [DB] === +INTERFACE: + Input: + nInSepNo : Int + xInSepFlag : Bool + xInReset : Bool + tInTimeMeasurement : Time + nInGoalFlags : Int + Output: + InOut: + Static: + tOnTimer : TON_TIME + xTestActive : Bool + xTimerRun : Bool + nCount : Int + Date_And_TimeStart : Date_And_Time + Date_And_TimeLap : Date_And_Time + tTimeResult : Time + rTrigRun : R_TRIG + fTrigRun : F_TRIG + fTrigSepFlag : F_TRIG + arTrolley : Array[1..500] of Struct + nCount : Int + tTimeEvent : Date_And_Time + tTimeResult : Time + nTrolleyNo : Int diff --git a/=A01+UH06-KF00/Programmbausteine/PerformanceTest/FB_PerfTest_6_Einfahrt.awl b/=A01+UH06-KF00/Programmbausteine/PerformanceTest/FB_PerfTest_6_Einfahrt.awl new file mode 100644 index 0000000..2d5bc19 --- /dev/null +++ b/=A01+UH06-KF00/Programmbausteine/PerformanceTest/FB_PerfTest_6_Einfahrt.awl @@ -0,0 +1,26 @@ +=== InstanceDB 201: FB_PerfTest_6_Einfahrt [DB] === +INTERFACE: + Input: + nInSepNo : Int + xInSepFlag : Bool + xInReset : Bool + tInTimeMeasurement : Time + nInGoalFlags : Int + Output: + InOut: + Static: + tOnTimer : TON_TIME + xTestActive : Bool + xTimerRun : Bool + nCount : Int + Date_And_TimeStart : Date_And_Time + Date_And_TimeLap : Date_And_Time + tTimeResult : Time + rTrigRun : R_TRIG + fTrigRun : F_TRIG + fTrigSepFlag : F_TRIG + arTrolley : Array[1..500] of Struct + nCount : Int + tTimeEvent : Date_And_Time + tTimeResult : Time + nTrolleyNo : Int diff --git a/=A01+UH06-KF00/Programmbausteine/PerformanceTest/FB_PerfTest_6_MPS1_Ausfahrt.awl b/=A01+UH06-KF00/Programmbausteine/PerformanceTest/FB_PerfTest_6_MPS1_Ausfahrt.awl new file mode 100644 index 0000000..8c89d24 --- /dev/null +++ b/=A01+UH06-KF00/Programmbausteine/PerformanceTest/FB_PerfTest_6_MPS1_Ausfahrt.awl @@ -0,0 +1,26 @@ +=== InstanceDB 218: FB_PerfTest_6_MPS1_Ausfahrt [DB] === +INTERFACE: + Input: + nInSepNo : Int + xInSepFlag : Bool + xInReset : Bool + tInTimeMeasurement : Time + nInGoalFlags : Int + Output: + InOut: + Static: + tOnTimer : TON_TIME + xTestActive : Bool + xTimerRun : Bool + nCount : Int + Date_And_TimeStart : Date_And_Time + Date_And_TimeLap : Date_And_Time + tTimeResult : Time + rTrigRun : R_TRIG + fTrigRun : F_TRIG + fTrigSepFlag : F_TRIG + arTrolley : Array[1..500] of Struct + nCount : Int + tTimeEvent : Date_And_Time + tTimeResult : Time + nTrolleyNo : Int diff --git a/=A01+UH06-KF00/Programmbausteine/PerformanceTest/FB_PerfTest_6_MPS1_Einfahrt.awl b/=A01+UH06-KF00/Programmbausteine/PerformanceTest/FB_PerfTest_6_MPS1_Einfahrt.awl new file mode 100644 index 0000000..98bc2b6 --- /dev/null +++ b/=A01+UH06-KF00/Programmbausteine/PerformanceTest/FB_PerfTest_6_MPS1_Einfahrt.awl @@ -0,0 +1,26 @@ +=== InstanceDB 217: FB_PerfTest_6_MPS1_Einfahrt [DB] === +INTERFACE: + Input: + nInSepNo : Int + xInSepFlag : Bool + xInReset : Bool + tInTimeMeasurement : Time + nInGoalFlags : Int + Output: + InOut: + Static: + tOnTimer : TON_TIME + xTestActive : Bool + xTimerRun : Bool + nCount : Int + Date_And_TimeStart : Date_And_Time + Date_And_TimeLap : Date_And_Time + tTimeResult : Time + rTrigRun : R_TRIG + fTrigRun : F_TRIG + fTrigSepFlag : F_TRIG + arTrolley : Array[1..500] of Struct + nCount : Int + tTimeEvent : Date_And_Time + tTimeResult : Time + nTrolleyNo : Int diff --git a/=A01+UH06-KF00/Programmbausteine/PerformanceTest/FB_PerfTest_6_MPS2_Ausfahrt.awl b/=A01+UH06-KF00/Programmbausteine/PerformanceTest/FB_PerfTest_6_MPS2_Ausfahrt.awl new file mode 100644 index 0000000..9063403 --- /dev/null +++ b/=A01+UH06-KF00/Programmbausteine/PerformanceTest/FB_PerfTest_6_MPS2_Ausfahrt.awl @@ -0,0 +1,26 @@ +=== InstanceDB 216: FB_PerfTest_6_MPS2_Ausfahrt [DB] === +INTERFACE: + Input: + nInSepNo : Int + xInSepFlag : Bool + xInReset : Bool + tInTimeMeasurement : Time + nInGoalFlags : Int + Output: + InOut: + Static: + tOnTimer : TON_TIME + xTestActive : Bool + xTimerRun : Bool + nCount : Int + Date_And_TimeStart : Date_And_Time + Date_And_TimeLap : Date_And_Time + tTimeResult : Time + rTrigRun : R_TRIG + fTrigRun : F_TRIG + fTrigSepFlag : F_TRIG + arTrolley : Array[1..500] of Struct + nCount : Int + tTimeEvent : Date_And_Time + tTimeResult : Time + nTrolleyNo : Int diff --git a/=A01+UH06-KF00/Programmbausteine/PerformanceTest/FB_PerfTest_6_MPS2_Einfahrt.awl b/=A01+UH06-KF00/Programmbausteine/PerformanceTest/FB_PerfTest_6_MPS2_Einfahrt.awl new file mode 100644 index 0000000..c9298b7 --- /dev/null +++ b/=A01+UH06-KF00/Programmbausteine/PerformanceTest/FB_PerfTest_6_MPS2_Einfahrt.awl @@ -0,0 +1,26 @@ +=== InstanceDB 215: FB_PerfTest_6_MPS2_Einfahrt [DB] === +INTERFACE: + Input: + nInSepNo : Int + xInSepFlag : Bool + xInReset : Bool + tInTimeMeasurement : Time + nInGoalFlags : Int + Output: + InOut: + Static: + tOnTimer : TON_TIME + xTestActive : Bool + xTimerRun : Bool + nCount : Int + Date_And_TimeStart : Date_And_Time + Date_And_TimeLap : Date_And_Time + tTimeResult : Time + rTrigRun : R_TRIG + fTrigRun : F_TRIG + fTrigSepFlag : F_TRIG + arTrolley : Array[1..500] of Struct + nCount : Int + tTimeEvent : Date_And_Time + tTimeResult : Time + nTrolleyNo : Int diff --git a/=A01+UH06-KF00/Programmbausteine/PerformanceTest/FB_PerfTest_6_MPS3_Ausfahrt.awl b/=A01+UH06-KF00/Programmbausteine/PerformanceTest/FB_PerfTest_6_MPS3_Ausfahrt.awl new file mode 100644 index 0000000..f3dfffb --- /dev/null +++ b/=A01+UH06-KF00/Programmbausteine/PerformanceTest/FB_PerfTest_6_MPS3_Ausfahrt.awl @@ -0,0 +1,26 @@ +=== InstanceDB 214: FB_PerfTest_6_MPS3_Ausfahrt [DB] === +INTERFACE: + Input: + nInSepNo : Int + xInSepFlag : Bool + xInReset : Bool + tInTimeMeasurement : Time + nInGoalFlags : Int + Output: + InOut: + Static: + tOnTimer : TON_TIME + xTestActive : Bool + xTimerRun : Bool + nCount : Int + Date_And_TimeStart : Date_And_Time + Date_And_TimeLap : Date_And_Time + tTimeResult : Time + rTrigRun : R_TRIG + fTrigRun : F_TRIG + fTrigSepFlag : F_TRIG + arTrolley : Array[1..500] of Struct + nCount : Int + tTimeEvent : Date_And_Time + tTimeResult : Time + nTrolleyNo : Int diff --git a/=A01+UH06-KF00/Programmbausteine/PerformanceTest/FB_PerfTest_6_MPS3_Einfahrt.awl b/=A01+UH06-KF00/Programmbausteine/PerformanceTest/FB_PerfTest_6_MPS3_Einfahrt.awl new file mode 100644 index 0000000..cc24e95 --- /dev/null +++ b/=A01+UH06-KF00/Programmbausteine/PerformanceTest/FB_PerfTest_6_MPS3_Einfahrt.awl @@ -0,0 +1,26 @@ +=== InstanceDB 213: FB_PerfTest_6_MPS3_Einfahrt [DB] === +INTERFACE: + Input: + nInSepNo : Int + xInSepFlag : Bool + xInReset : Bool + tInTimeMeasurement : Time + nInGoalFlags : Int + Output: + InOut: + Static: + tOnTimer : TON_TIME + xTestActive : Bool + xTimerRun : Bool + nCount : Int + Date_And_TimeStart : Date_And_Time + Date_And_TimeLap : Date_And_Time + tTimeResult : Time + rTrigRun : R_TRIG + fTrigRun : F_TRIG + fTrigSepFlag : F_TRIG + arTrolley : Array[1..500] of Struct + nCount : Int + tTimeEvent : Date_And_Time + tTimeResult : Time + nTrolleyNo : Int diff --git a/=A01+UH06-KF00/Programmbausteine/PerformanceTest/FB_PerfTest_6_PS1_Ausfahrt.awl b/=A01+UH06-KF00/Programmbausteine/PerformanceTest/FB_PerfTest_6_PS1_Ausfahrt.awl new file mode 100644 index 0000000..ea04d3f --- /dev/null +++ b/=A01+UH06-KF00/Programmbausteine/PerformanceTest/FB_PerfTest_6_PS1_Ausfahrt.awl @@ -0,0 +1,26 @@ +=== InstanceDB 212: FB_PerfTest_6_PS1_Ausfahrt [DB] === +INTERFACE: + Input: + nInSepNo : Int + xInSepFlag : Bool + xInReset : Bool + tInTimeMeasurement : Time + nInGoalFlags : Int + Output: + InOut: + Static: + tOnTimer : TON_TIME + xTestActive : Bool + xTimerRun : Bool + nCount : Int + Date_And_TimeStart : Date_And_Time + Date_And_TimeLap : Date_And_Time + tTimeResult : Time + rTrigRun : R_TRIG + fTrigRun : F_TRIG + fTrigSepFlag : F_TRIG + arTrolley : Array[1..500] of Struct + nCount : Int + tTimeEvent : Date_And_Time + tTimeResult : Time + nTrolleyNo : Int diff --git a/=A01+UH06-KF00/Programmbausteine/PerformanceTest/FB_PerfTest_6_PS1_Einfahrt.awl b/=A01+UH06-KF00/Programmbausteine/PerformanceTest/FB_PerfTest_6_PS1_Einfahrt.awl new file mode 100644 index 0000000..2ba13dc --- /dev/null +++ b/=A01+UH06-KF00/Programmbausteine/PerformanceTest/FB_PerfTest_6_PS1_Einfahrt.awl @@ -0,0 +1,26 @@ +=== InstanceDB 211: FB_PerfTest_6_PS1_Einfahrt [DB] === +INTERFACE: + Input: + nInSepNo : Int + xInSepFlag : Bool + xInReset : Bool + tInTimeMeasurement : Time + nInGoalFlags : Int + Output: + InOut: + Static: + tOnTimer : TON_TIME + xTestActive : Bool + xTimerRun : Bool + nCount : Int + Date_And_TimeStart : Date_And_Time + Date_And_TimeLap : Date_And_Time + tTimeResult : Time + rTrigRun : R_TRIG + fTrigRun : F_TRIG + fTrigSepFlag : F_TRIG + arTrolley : Array[1..500] of Struct + nCount : Int + tTimeEvent : Date_And_Time + tTimeResult : Time + nTrolleyNo : Int diff --git a/=A01+UH06-KF00/Programmbausteine/PerformanceTest/FB_PerfTest_6_PS2_Ausfahrt.awl b/=A01+UH06-KF00/Programmbausteine/PerformanceTest/FB_PerfTest_6_PS2_Ausfahrt.awl new file mode 100644 index 0000000..0ef69c1 --- /dev/null +++ b/=A01+UH06-KF00/Programmbausteine/PerformanceTest/FB_PerfTest_6_PS2_Ausfahrt.awl @@ -0,0 +1,26 @@ +=== InstanceDB 210: FB_PerfTest_6_PS2_Ausfahrt [DB] === +INTERFACE: + Input: + nInSepNo : Int + xInSepFlag : Bool + xInReset : Bool + tInTimeMeasurement : Time + nInGoalFlags : Int + Output: + InOut: + Static: + tOnTimer : TON_TIME + xTestActive : Bool + xTimerRun : Bool + nCount : Int + Date_And_TimeStart : Date_And_Time + Date_And_TimeLap : Date_And_Time + tTimeResult : Time + rTrigRun : R_TRIG + fTrigRun : F_TRIG + fTrigSepFlag : F_TRIG + arTrolley : Array[1..500] of Struct + nCount : Int + tTimeEvent : Date_And_Time + tTimeResult : Time + nTrolleyNo : Int diff --git a/=A01+UH06-KF00/Programmbausteine/PerformanceTest/FB_PerfTest_6_PS2_Einfahrt.awl b/=A01+UH06-KF00/Programmbausteine/PerformanceTest/FB_PerfTest_6_PS2_Einfahrt.awl new file mode 100644 index 0000000..c5fbe71 --- /dev/null +++ b/=A01+UH06-KF00/Programmbausteine/PerformanceTest/FB_PerfTest_6_PS2_Einfahrt.awl @@ -0,0 +1,26 @@ +=== InstanceDB 209: FB_PerfTest_6_PS2_Einfahrt [DB] === +INTERFACE: + Input: + nInSepNo : Int + xInSepFlag : Bool + xInReset : Bool + tInTimeMeasurement : Time + nInGoalFlags : Int + Output: + InOut: + Static: + tOnTimer : TON_TIME + xTestActive : Bool + xTimerRun : Bool + nCount : Int + Date_And_TimeStart : Date_And_Time + Date_And_TimeLap : Date_And_Time + tTimeResult : Time + rTrigRun : R_TRIG + fTrigRun : F_TRIG + fTrigSepFlag : F_TRIG + arTrolley : Array[1..500] of Struct + nCount : Int + tTimeEvent : Date_And_Time + tTimeResult : Time + nTrolleyNo : Int diff --git a/=A01+UH06-KF00/Programmbausteine/PerformanceTest/FB_PerfTest_6_PS3_Ausfahrt.awl b/=A01+UH06-KF00/Programmbausteine/PerformanceTest/FB_PerfTest_6_PS3_Ausfahrt.awl new file mode 100644 index 0000000..49edd50 --- /dev/null +++ b/=A01+UH06-KF00/Programmbausteine/PerformanceTest/FB_PerfTest_6_PS3_Ausfahrt.awl @@ -0,0 +1,26 @@ +=== InstanceDB 208: FB_PerfTest_6_PS3_Ausfahrt [DB] === +INTERFACE: + Input: + nInSepNo : Int + xInSepFlag : Bool + xInReset : Bool + tInTimeMeasurement : Time + nInGoalFlags : Int + Output: + InOut: + Static: + tOnTimer : TON_TIME + xTestActive : Bool + xTimerRun : Bool + nCount : Int + Date_And_TimeStart : Date_And_Time + Date_And_TimeLap : Date_And_Time + tTimeResult : Time + rTrigRun : R_TRIG + fTrigRun : F_TRIG + fTrigSepFlag : F_TRIG + arTrolley : Array[1..500] of Struct + nCount : Int + tTimeEvent : Date_And_Time + tTimeResult : Time + nTrolleyNo : Int diff --git a/=A01+UH06-KF00/Programmbausteine/PerformanceTest/FB_PerfTest_6_PS3_Einfahrt.awl b/=A01+UH06-KF00/Programmbausteine/PerformanceTest/FB_PerfTest_6_PS3_Einfahrt.awl new file mode 100644 index 0000000..1b9a6eb --- /dev/null +++ b/=A01+UH06-KF00/Programmbausteine/PerformanceTest/FB_PerfTest_6_PS3_Einfahrt.awl @@ -0,0 +1,26 @@ +=== InstanceDB 207: FB_PerfTest_6_PS3_Einfahrt [DB] === +INTERFACE: + Input: + nInSepNo : Int + xInSepFlag : Bool + xInReset : Bool + tInTimeMeasurement : Time + nInGoalFlags : Int + Output: + InOut: + Static: + tOnTimer : TON_TIME + xTestActive : Bool + xTimerRun : Bool + nCount : Int + Date_And_TimeStart : Date_And_Time + Date_And_TimeLap : Date_And_Time + tTimeResult : Time + rTrigRun : R_TRIG + fTrigRun : F_TRIG + fTrigSepFlag : F_TRIG + arTrolley : Array[1..500] of Struct + nCount : Int + tTimeEvent : Date_And_Time + tTimeResult : Time + nTrolleyNo : Int diff --git a/=A01+UH06-KF00/Programmbausteine/PerformanceTest/FB_PerfTest_6_PS4_Ausfahrt.awl b/=A01+UH06-KF00/Programmbausteine/PerformanceTest/FB_PerfTest_6_PS4_Ausfahrt.awl new file mode 100644 index 0000000..0d42d6c --- /dev/null +++ b/=A01+UH06-KF00/Programmbausteine/PerformanceTest/FB_PerfTest_6_PS4_Ausfahrt.awl @@ -0,0 +1,26 @@ +=== InstanceDB 206: FB_PerfTest_6_PS4_Ausfahrt [DB] === +INTERFACE: + Input: + nInSepNo : Int + xInSepFlag : Bool + xInReset : Bool + tInTimeMeasurement : Time + nInGoalFlags : Int + Output: + InOut: + Static: + tOnTimer : TON_TIME + xTestActive : Bool + xTimerRun : Bool + nCount : Int + Date_And_TimeStart : Date_And_Time + Date_And_TimeLap : Date_And_Time + tTimeResult : Time + rTrigRun : R_TRIG + fTrigRun : F_TRIG + fTrigSepFlag : F_TRIG + arTrolley : Array[1..500] of Struct + nCount : Int + tTimeEvent : Date_And_Time + tTimeResult : Time + nTrolleyNo : Int diff --git a/=A01+UH06-KF00/Programmbausteine/PerformanceTest/FB_PerfTest_6_PS4_Einfahrt.awl b/=A01+UH06-KF00/Programmbausteine/PerformanceTest/FB_PerfTest_6_PS4_Einfahrt.awl new file mode 100644 index 0000000..1ff31d8 --- /dev/null +++ b/=A01+UH06-KF00/Programmbausteine/PerformanceTest/FB_PerfTest_6_PS4_Einfahrt.awl @@ -0,0 +1,26 @@ +=== InstanceDB 205: FB_PerfTest_6_PS4_Einfahrt [DB] === +INTERFACE: + Input: + nInSepNo : Int + xInSepFlag : Bool + xInReset : Bool + tInTimeMeasurement : Time + nInGoalFlags : Int + Output: + InOut: + Static: + tOnTimer : TON_TIME + xTestActive : Bool + xTimerRun : Bool + nCount : Int + Date_And_TimeStart : Date_And_Time + Date_And_TimeLap : Date_And_Time + tTimeResult : Time + rTrigRun : R_TRIG + fTrigRun : F_TRIG + fTrigSepFlag : F_TRIG + arTrolley : Array[1..500] of Struct + nCount : Int + tTimeEvent : Date_And_Time + tTimeResult : Time + nTrolleyNo : Int diff --git a/=A01+UH06-KF00/Programmbausteine/PerformanceTest/FB_PerfTest_6_PS5_Ausfahrt.awl b/=A01+UH06-KF00/Programmbausteine/PerformanceTest/FB_PerfTest_6_PS5_Ausfahrt.awl new file mode 100644 index 0000000..cc14b0c --- /dev/null +++ b/=A01+UH06-KF00/Programmbausteine/PerformanceTest/FB_PerfTest_6_PS5_Ausfahrt.awl @@ -0,0 +1,26 @@ +=== InstanceDB 204: FB_PerfTest_6_PS5_Ausfahrt [DB] === +INTERFACE: + Input: + nInSepNo : Int + xInSepFlag : Bool + xInReset : Bool + tInTimeMeasurement : Time + nInGoalFlags : Int + Output: + InOut: + Static: + tOnTimer : TON_TIME + xTestActive : Bool + xTimerRun : Bool + nCount : Int + Date_And_TimeStart : Date_And_Time + Date_And_TimeLap : Date_And_Time + tTimeResult : Time + rTrigRun : R_TRIG + fTrigRun : F_TRIG + fTrigSepFlag : F_TRIG + arTrolley : Array[1..500] of Struct + nCount : Int + tTimeEvent : Date_And_Time + tTimeResult : Time + nTrolleyNo : Int diff --git a/=A01+UH06-KF00/Programmbausteine/PerformanceTest/FB_PerfTest_6_PS5_Einfahrt.awl b/=A01+UH06-KF00/Programmbausteine/PerformanceTest/FB_PerfTest_6_PS5_Einfahrt.awl new file mode 100644 index 0000000..f7ecff2 --- /dev/null +++ b/=A01+UH06-KF00/Programmbausteine/PerformanceTest/FB_PerfTest_6_PS5_Einfahrt.awl @@ -0,0 +1,26 @@ +=== InstanceDB 203: FB_PerfTest_6_PS5_Einfahrt [DB] === +INTERFACE: + Input: + nInSepNo : Int + xInSepFlag : Bool + xInReset : Bool + tInTimeMeasurement : Time + nInGoalFlags : Int + Output: + InOut: + Static: + tOnTimer : TON_TIME + xTestActive : Bool + xTimerRun : Bool + nCount : Int + Date_And_TimeStart : Date_And_Time + Date_And_TimeLap : Date_And_Time + tTimeResult : Time + rTrigRun : R_TRIG + fTrigRun : F_TRIG + fTrigSepFlag : F_TRIG + arTrolley : Array[1..500] of Struct + nCount : Int + tTimeEvent : Date_And_Time + tTimeResult : Time + nTrolleyNo : Int diff --git a/=A01+UH06-KF00/Programmbausteine/SCADA/DB_Status.awl b/=A01+UH06-KF00/Programmbausteine/SCADA/DB_Status.awl new file mode 100644 index 0000000..689188d --- /dev/null +++ b/=A01+UH06-KF00/Programmbausteine/SCADA/DB_Status.awl @@ -0,0 +1,4 @@ +=== GlobalDB 66: DB_Status [DB] === +INTERFACE: + Static: + System : "UDT_GOHStatus" // Main Cabinet (e.g. on, off, emergency stop…) diff --git a/=A01+UH06-KF00/Programmbausteine/SCADA/FB-OPC_UA_System-Stat_DB.awl b/=A01+UH06-KF00/Programmbausteine/SCADA/FB-OPC_UA_System-Stat_DB.awl new file mode 100644 index 0000000..1f502cc --- /dev/null +++ b/=A01+UH06-KF00/Programmbausteine/SCADA/FB-OPC_UA_System-Stat_DB.awl @@ -0,0 +1,12 @@ +=== InstanceDB 5: FB-OPC_UA_System-Stat_DB [DB] === +INTERFACE: + Input: + xInSystemStat : Bool + xInFireAlarm : Bool + xInSafetyStop : Bool + xInError : Bool + xInCommunicationError : Bool + Output: + nOutScadaStatus : Int + InOut: + Static: diff --git a/=A01+UH06-KF00/Programmbausteine/SS_Host/DDaten_Host_senden.awl b/=A01+UH06-KF00/Programmbausteine/SS_Host/DDaten_Host_senden.awl new file mode 100644 index 0000000..610172e --- /dev/null +++ b/=A01+UH06-KF00/Programmbausteine/SS_Host/DDaten_Host_senden.awl @@ -0,0 +1,7 @@ +=== InstanceDB 9100: DDaten_Host_senden [DB] === +INTERFACE: + Input: + Output: + InOut: + Static: + Port1_senden : "Port1_Daten_senden" diff --git a/=A01+UH06-KF00/Programmbausteine/SS_Host/DDaten_von_Host_empfangen.awl b/=A01+UH06-KF00/Programmbausteine/SS_Host/DDaten_von_Host_empfangen.awl new file mode 100644 index 0000000..e4a459f --- /dev/null +++ b/=A01+UH06-KF00/Programmbausteine/SS_Host/DDaten_von_Host_empfangen.awl @@ -0,0 +1,7 @@ +=== InstanceDB 9000: DDaten_von_Host_empfangen [DB] === +INTERFACE: + Input: + Output: + InOut: + Static: + Port1_empfangen : "Port1_Daten_empfangen" diff --git a/=A01+UH06-KF00/Programmbausteine/SS_Host/Daten_Host_senden.awl b/=A01+UH06-KF00/Programmbausteine/SS_Host/Daten_Host_senden.awl new file mode 100644 index 0000000..cd4d2a0 --- /dev/null +++ b/=A01+UH06-KF00/Programmbausteine/SS_Host/Daten_Host_senden.awl @@ -0,0 +1,28 @@ +=== FB 9100: Daten_Host_senden [STL] === +INTERFACE: + Input: + Output: + InOut: + Static: + Port1_senden : "Port1_Daten_senden" + Temp: + Constant: + +--- NW 1: Daten über Port 1 senden --- +CALL FB "None" , + +// Send-FIFO wird zu voll: + L "Port1_SendFIFO".ANZAHL + L 70 + >I + S "6_HMI_Err_UH06_AMR".Kommunikation.SendFIFO_Port1 + + CAC + L 40 + I + = Error // Error bei FIFO-Zugriff + + JBI en03 // Alles ok + +FIErr: SET + S Error // Error bei FIFO-Zugriff + +en03: NOP 0 + + +--- NW 2: Instanz-DB nullen --- +CALL FC "DBMOV" (QuellDB:=8000, QuellDW:=0, ZielDB:=7100, ZielDW:=00, Anzahl_DW:=16, RE_VAL:="MW196") // Empfangsfach leeren, da Telegramm verarbeitet + diff --git a/=A01+UH06-KF00/Programmbausteine/SS_Host/Daten_von_Host_empfangen.awl b/=A01+UH06-KF00/Programmbausteine/SS_Host/Daten_von_Host_empfangen.awl new file mode 100644 index 0000000..3d8a688 --- /dev/null +++ b/=A01+UH06-KF00/Programmbausteine/SS_Host/Daten_von_Host_empfangen.awl @@ -0,0 +1,27 @@ +=== FB 9000: Daten_von_Host_empfangen [STL] === +INTERFACE: + Input: + Output: + InOut: + Static: + Port1_empfangen : "Port1_Daten_empfangen" + Temp: + Constant: + +--- NW 1: Testdaten übergeben --- + A "M8999.0" + R "M8999.0" + JCN NixTest + +CALL FC "DBMOV" (QuellDB:=8999, QuellDW:=0, ZielDB:=9001, ZielDW:=0, Anzahl_DW:=15, RE_VAL:="MW196") + +NixTest: NOP 0 + + +--- NW 2: Daten über Port 1 empfangen --- +CALL FB "None" , + + +--- NW 3: Ende --- + BE + diff --git a/=A01+UH06-KF00/Programmbausteine/SS_Host/HMSchleuse_TrolleyID.awl b/=A01+UH06-KF00/Programmbausteine/SS_Host/HMSchleuse_TrolleyID.awl new file mode 100644 index 0000000..5900f71 --- /dev/null +++ b/=A01+UH06-KF00/Programmbausteine/SS_Host/HMSchleuse_TrolleyID.awl @@ -0,0 +1,62 @@ +=== FC 155: HMSchleuse_TrolleyID [STL] === +INTERFACE: + Input: + Schleuse : Int + Output: + TrolleyID : DInt + Ok : Bool + InOut: + Temp: + Schleusen_DB : Int // Schleuse-DB + Schleusen_DW : Int // Schleuse-DW + AR1Zeiger : DWord // Statt AR1 (ging nur bis DB-Länge <= 8191 Bytes) + AR1Start : DInt // Startwert mit Offset 0 + Constant: + Return: + Ret_Val : Void + +--- NW 1: Rückmeldung --- + SET + R Ok + L DINT#0 + T TrolleyID + + +--- NW 2: Zeiger von gewolltem Schleuse ermitteln --- + L Schleuse + T "MW200" // Search-Daten + +CALL FC "DatenOut" (SSDB:=274, SSDW:=0, PARA:=WORD#16#0000, SEARCHDATEN:=P#M200.0, RE_VAL:="MB219", OUTDATEN:=P#M220.0, Position:="MW298") // Datenlisten-DB + + JBI ok2 + + BEU + +ok2: L "MW224" + T Schleusen_DB + L "MW226" + T Schleusen_DW + + +--- NW 3: TrolleyID-Schleuse lesen --- + L Schleusen_DW + ITD + T AR1Start // Startwert mit Offset 0 + +// TrolleyID-Schleuse: + L AR1Start // Startwert mit Offset 0 + + DINT#72 // Offset für TrolleyID_Schleuse + SLD 3 + T AR1Zeiger // Statt Dyn.Bereichsstop (ging nur bis DB-Länge <= 8191 Bytes) + OPN DB[Schleusen_DB] // Schleuse-DB öffnen + L DBD [AR1Zeiger] // Schleuse-ID + T TrolleyID + + L DINT#0 + <>D + = Ok + + +--- NW 4: Ende --- + BE + diff --git a/=A01+UH06-KF00/Programmbausteine/SS_Host/Host_ABPtoPLC_ABP.awl b/=A01+UH06-KF00/Programmbausteine/SS_Host/Host_ABPtoPLC_ABP.awl new file mode 100644 index 0000000..ebe27a2 --- /dev/null +++ b/=A01+UH06-KF00/Programmbausteine/SS_Host/Host_ABPtoPLC_ABP.awl @@ -0,0 +1,70 @@ +=== FC 9100: Host_ABPtoPLC_ABP [STL] === +INTERFACE: + Input: + Host_ABP : Int + Output: + PLC-ABP : Word + InOut: + Temp: + ABP : Int + Constant: + Return: + Ret_Val : Void + +--- NW 1: PLC-ABP ermitteln --- + L 16#0 // Vorerst + T "PLC-ABP" + + L Host_ABP + + -100 + T ABP + + L ABP + JL Ende + JU Ende // Platz 0 + JU Platz1 // Platz 1 + JU Platz2 // Platz 2 + JU Platz3 // Platz 3 + JU Platz4 // Platz 4 + JU Platz5 // Platz 5 + JU Platz6 // Platz 6 + JU Platz7 // Platz 7 + JU Platz8 // Platz 8 +Ende: BEU // Undefinierter Platz + +Platz1: L 16#A500 // PS5 + T "PLC-ABP" + BEU + +Platz2: L 16#A400 // PS4 + T "PLC-ABP" + BEU + +Platz3: L 16#A300 // PS3 + T "PLC-ABP" + BEU + +Platz4: L 16#A200 // PS2 + T "PLC-ABP" + BEU + +Platz5: L 16#A100 // PS1 + T "PLC-ABP" + BEU + +Platz6: L 16#B300 // MPS3 + T "PLC-ABP" + BEU + +Platz7: L 16#B200 // MPS2 + T "PLC-ABP" + BEU + +Platz8: L 16#B100 // MPS1 + T "PLC-ABP" + BEU + + +--- NW 2: Ende --- + BE + diff --git a/=A01+UH06-KF00/Programmbausteine/SS_Host/LeerDaten.awl b/=A01+UH06-KF00/Programmbausteine/SS_Host/LeerDaten.awl new file mode 100644 index 0000000..6053ca5 --- /dev/null +++ b/=A01+UH06-KF00/Programmbausteine/SS_Host/LeerDaten.awl @@ -0,0 +1,4 @@ +=== GlobalDB 8000: LeerDaten [DB] === +INTERFACE: + Static: + Leer : Array[1..25] of Int diff --git a/=A01+UH06-KF00/Programmbausteine/SS_Host/Port1_Daten_empfangen.awl b/=A01+UH06-KF00/Programmbausteine/SS_Host/Port1_Daten_empfangen.awl new file mode 100644 index 0000000..2f53084 --- /dev/null +++ b/=A01+UH06-KF00/Programmbausteine/SS_Host/Port1_Daten_empfangen.awl @@ -0,0 +1,56 @@ +=== FB 9001: Port1_Daten_empfangen [STL] === +INTERFACE: + Input: + Output: + InOut: + Static: + Dyn : Struct // Status + RET_VAL_SaveFIFO_IN : Byte // Rückmeldung bei Fifo-Zugriff + Error : Struct // Störungen + Save_FIFO_IN : Bool // Save-FIFO fehlerhaft + Auswerte_FC : Bool // Kein Auswerte-FC angegeben + Telegramm : Bool // Telegramm in Auswerte-FC nicht bekannt + Empfangs_DB : Bool + DL_Sep : Bool + DL_Weiche : Bool + Status : Word // Status bei Fehlerfall + Temp: + Temp_NDR : Bool + Temp_Error : Bool + Constant: + +--- NW 1: Neue Daten vorhanden? --- +// Telegramm-Kopf hat Kennung ?: + L "SS_Port1_EmpfangsDaten".Port1.TelegrammKennung[1] + L 0 // Daten vorhanden? + ==I // Nein ! + BEC + + +--- NW 2: Empfangene Daten speichern --- +CALL FC "FifoOut" (SSDB:=8001, SSDW:=0, PARA:=WORD#16#E100, OUTDATEN:=P#M200.0, RE_VAL:="MB199") // da Ringspeicher nächster Eintrag lesen + austragen + +CALL FC "FifoIn" (SSDB:=8001, SSDW:=0, PARA:=WORD#16#0000, INDATEN:=DB9001.DBX0.0, RE_VAL:="MB199") + + L "MB199" + T Dyn.RET_VAL_SaveFIFO_IN + + JBI en03 // Alles ok + + SET + S Dyn.Error.Save_FIFO_IN // Error bei FIFO-Zugriff + +en03: NOP 0 + + +--- NW 3: Auswerte-FC aufrufen --- + UC "Port1_Telegramme_auswerten" + + +--- NW 4: Empfangsdatenfeld wieder freigeben --- +CALL FC "DBMOV" (QuellDB:=8000, QuellDW:=0, ZielDB:=9001, ZielDW:=00, Anzahl_DW:=15, RE_VAL:="MW196") // Empfangsfach leeren, da Telegramm verarbeitet + + +--- NW 5: Ende --- + BE + diff --git a/=A01+UH06-KF00/Programmbausteine/SS_Host/Port1_Daten_senden.awl b/=A01+UH06-KF00/Programmbausteine/SS_Host/Port1_Daten_senden.awl new file mode 100644 index 0000000..b8ebac0 --- /dev/null +++ b/=A01+UH06-KF00/Programmbausteine/SS_Host/Port1_Daten_senden.awl @@ -0,0 +1,80 @@ +=== FB 9101: Port1_Daten_senden [STL] === +INTERFACE: + Input: + Output: + InOut: + Static: + Dyn : Struct // Status + RET_VAL_SendFIFO_OUT : Byte // Rückmeldung bei Fifo-Zugriff + RET_VAL_SaveFIFO_IN : Byte // Rückmeldung bei Fifo-Zugriff + Error : Struct // Störungen + Send_FIFO_OUT : Bool // Send-FIFO fehlerhaft + Save_FIFO_IN : Bool // Save-FIFO fehlerhaft + Res : Array[1..35] of Int // Damit Sendedaten ab DW100 ! + Temp: + Schleife : Int + Constant: + +--- NW 1: Sendefach frei? / Hat Host Daten verarbeitet --- +// Telegramm-Kopf leer?: + L 1 // Mit 1.Zeichen beginnen +L100: T Schleife + + L "SS_Port1_SendDaten".Port1.TelegrammKennung[Schleife] + L 0 // Daten noch vorhanden? + <>I // Ja! + BEC + + L Schleife + + 1 + T Schleife + + L 10 // 10.Zeichen erreicht ? + <=I // Nein ! + JC L100 + + +--- NW 2: Neue Sendedaten im FIFO ? --- + SET + R Dyn.Error.Send_FIFO_OUT // Error bei FIFO-Zugriff + +CALL FC "FifoOut" (SSDB:=7101, SSDW:=0, PARA:=WORD#16#E100, OUTDATEN:=DB9101.DBX0.0, RE_VAL:="MB199") // Gewollte Sendedaten | Lesen + austragen + + L "MB199" + T Dyn.RET_VAL_SendFIFO_OUT + + JBI En02 // Alles ok + + A "M199.2" // FIFO ist leer + BEC + + SET + S Dyn.Error.Send_FIFO_OUT // Error bei FIFO-Zugriff + + BEU + +En02: NOP 0 + + +--- NW 3: Gesendete Daten speichern --- + SET + R Dyn.Error.Save_FIFO_IN // Error bei FIFO-Zugriff + +CALL FC "FifoOut" (SSDB:=8101, SSDW:=0, PARA:=WORD#16#E100, OUTDATEN:=P#M200.0, RE_VAL:="MB199") // da Ringspeicher nächster Eintrag lesen + austragen + +CALL FC "FifoIn" (SSDB:=8101, SSDW:=0, PARA:=WORD#16#0000, INDATEN:=DB9101.DBX0.0, RE_VAL:="MB199") + + L "MB199" + T Dyn.RET_VAL_SaveFIFO_IN + + JBI en03 // Alles ok + + SET + S Dyn.Error.Save_FIFO_IN // Error bei FIFO-Zugriff + +en03: NOP 0 + + +--- NW 4: Ende --- + BE + diff --git a/=A01+UH06-KF00/Programmbausteine/SS_Host/Port1_EmpfangenFIFO.awl b/=A01+UH06-KF00/Programmbausteine/SS_Host/Port1_EmpfangenFIFO.awl new file mode 100644 index 0000000..aa218f6 --- /dev/null +++ b/=A01+UH06-KF00/Programmbausteine/SS_Host/Port1_EmpfangenFIFO.awl @@ -0,0 +1,29 @@ +=== GlobalDB 8001: Port1_EmpfangenFIFO [DB] === +INTERFACE: + Static: + EmpfangenFIFO : Struct + KOPF : Word := WORD#16#FF0F // Fifo-Kennung (FF) / Datensatzlänge in Word (1 - 128) + LAENGE : Int := 100 // Länge des Fifo (maximale Anzahl der Datensätze) + BRINGZEIGER : Int := 40 // Zeiger, wohin nächster Eintrag gespeichert wird + HOLZEIGER : Int := 40 // Zeiger, woher nächste Daten geholt werden + ANZAHL : Int := 100 // Anzahl der Datensätze (eingetragene) + STATUS : Word // Status des Fifo + ZUSATZDW1 : Int // Speicherzelle für 1.Zusatzdaten + ZUSATZDW2 : Int // Speicherzelle für 2.Zusatzdaten + ZUSATZDW3 : Int // Speicherzelle für 3.Zusatzdaten + ZUSATZDW4 : Int // Speicherzelle für 4.Zusatzdaten + Frei1 : Int + Frei2 : Int + Frei3 : Int + Frei4 : Int + Frei5 : Int + OP_Anzeige_Datensatz : Int // Bei Ringspeicher -1,-2,...-Datensatz anzeigen + Datensatz : Int // Zu lesender Datenstatz (OP-Zeug)********************************* + Taste_Daten_minus : Bool // Taste Datensatz -1 lesen + Taste_Daten_plus : Bool // Taste Datensatz +1 lesen + Taste_FIFO_Del : Bool // Taste Fifo löschen + Zustand : Int // Zustand + Error : Int // Error + Empfangen : Array[1..100] of "UDatenEmpfangen" + EmpfangenFIFOEnde : Struct + Endekennung : Word := WORD#16#FFEE // Fifo-Ende-Kennung (FFEE) diff --git a/=A01+UH06-KF00/Programmbausteine/SS_Host/Port1_GesendetFIFO.awl b/=A01+UH06-KF00/Programmbausteine/SS_Host/Port1_GesendetFIFO.awl new file mode 100644 index 0000000..b64b382 --- /dev/null +++ b/=A01+UH06-KF00/Programmbausteine/SS_Host/Port1_GesendetFIFO.awl @@ -0,0 +1,29 @@ +=== GlobalDB 8101: Port1_GesendetFIFO [DB] === +INTERFACE: + Static: + GesendetFIFO : Struct + KOPF : Word := WORD#16#FF0F // Fifo-Kennung (FF) / Datensatzlänge in Word (1 - 128) + LAENGE : Int := 100 // Länge des Fifo (maximale Anzahl der Datensätze) + BRINGZEIGER : Int := 40 // Zeiger, wohin nächster Eintrag gespeichert wird + HOLZEIGER : Int := 40 // Zeiger, woher nächste Daten geholt werden + ANZAHL : Int := 100 // Anzahl der Datensätze (eingetragene) + STATUS : Word // Status des Fifo + ZUSATZDW1 : Int // Speicherzelle für 1.Zusatzdaten + ZUSATZDW2 : Int // Speicherzelle für 2.Zusatzdaten + ZUSATZDW3 : Int // Speicherzelle für 3.Zusatzdaten + ZUSATZDW4 : Int // Speicherzelle für 4.Zusatzdaten + Frei1 : Int + Frei2 : Int + Frei3 : Int + Frei4 : Int + Frei5 : Int + OP_Anzeige_Datensatz : Int // Bei Ringspeicher -1,-2,...-Datensatz anzeigen + Datensatz : Int // Zu lesender Datenstatz (OP-Zeug)********************************* + Taste_Daten_minus : Bool // Taste Datensatz -1 lesen + Taste_Daten_plus : Bool // Taste Datensatz +1 lesen + Taste_FIFO_Del : Bool // Taste Fifo löschen + Zustand : Int // Zustand + Error : Int // Error + Gesendet : Array[1..100] of "UDatenSend" + GesendetFIFOEnde : Struct + Endekennung : Word := WORD#16#FFEE // Fifo-Ende-Kennung (FFEE) diff --git a/=A01+UH06-KF00/Programmbausteine/SS_Host/Port1_SendFIFO.awl b/=A01+UH06-KF00/Programmbausteine/SS_Host/Port1_SendFIFO.awl new file mode 100644 index 0000000..e963db8 --- /dev/null +++ b/=A01+UH06-KF00/Programmbausteine/SS_Host/Port1_SendFIFO.awl @@ -0,0 +1,27 @@ +=== GlobalDB 7101: Port1_SendFIFO [DB] === +INTERFACE: + Static: + KOPF : Word := WORD#16#FF0F // Fifo-Kennung (FF) / Datensatzlänge in Word (1 - 128) + LAENGE : Int := 100 // Länge des Fifo (maximale Anzahl der Datensätze) + BRINGZEIGER : Int // Zeiger, wohin nächster Eintrag gespeichert wird + HOLZEIGER : Int // Zeiger, woher nächste Daten geholt werden + ANZAHL : Int // Anzahl der Datensätze (eingetragene) + STATUS : Word // Status des Fifo + ZUSATZDW1 : Int // Speicherzelle für 1.Zusatzdaten + ZUSATZDW2 : Int // Speicherzelle für 2.Zusatzdaten + ZUSATZDW3 : Int // Speicherzelle für 3.Zusatzdaten + ZUSATZDW4 : Int // Speicherzelle für 4.Zusatzdaten + Datensatz : Int // Zu lesender Datenstatz (OP-Zeug)********************************* + Daten1 : Int // Daten 1 + Daten2 : Int // Daten 2 + Daten3 : Int // Daten 3 + Daten4 : Int // Daten 4 + Daten5 : Int // Daten 5 + Daten6 : Int // Daten 6 + Taste_Daten_minus : Bool // Taste Datensatz -1 lesen + Taste_Daten_plus : Bool // Taste Datensatz +1 lesen + Taste_FIFO_Del : Bool // Taste Fifo löschen + Zustand : Int // Zustand + Error : Int // Error + Sende : Array[1..100] of "UDatenSend" + Endekennung : Word := WORD#16#FFEE // Fifo-Ende-Kennung (FFEE) diff --git a/=A01+UH06-KF00/Programmbausteine/SS_Host/Port1_Telegramme_auswerten.awl b/=A01+UH06-KF00/Programmbausteine/SS_Host/Port1_Telegramme_auswerten.awl new file mode 100644 index 0000000..27e49ef --- /dev/null +++ b/=A01+UH06-KF00/Programmbausteine/SS_Host/Port1_Telegramme_auswerten.awl @@ -0,0 +1,186 @@ +=== FC 9001: Port1_Telegramme_auswerten [STL] === +INTERFACE: + Input: + Output: + InOut: + Temp: + QuellDB : Any // Zeiger, wo Empfangsdaten sind + ZielDB : Any // Zeiger, wo Auswertesdaten sind + Teleg_Kennung_A : DWord + Teleg_Kennung_B : DWord + Teleg_Kennung_C : Word + AMR_DB : Int + AMR_DW : Int + Error : Bool + Lampe_aktivieren : Bool + AR1Zeiger : DWord // Statt AR1 (ging nur bis DB-Länge <= 8191 Bytes) + AR1Start : DInt // Startwert mit Offset 0 + PLC_ABP : Word + Constant: + Return: + Ret_Val : Void + +--- NW 1: Telegrammkopf übergeben --- +// Kennung A: + L "SS_Port1_EmpfangsDaten".Port1.TelegrammKennung[1] + T LB20 + L "SS_Port1_EmpfangsDaten".Port1.TelegrammKennung[2] + T LB21 + L "SS_Port1_EmpfangsDaten".Port1.TelegrammKennung[3] + T LB22 + L "SS_Port1_EmpfangsDaten".Port1.TelegrammKennung[4] + T LB23 + +// Kennung B: + L "SS_Port1_EmpfangsDaten".Port1.TelegrammKennung[5] + T LB24 + L "SS_Port1_EmpfangsDaten".Port1.TelegrammKennung[6] + T LB25 + L "SS_Port1_EmpfangsDaten".Port1.TelegrammKennung[7] + T LB26 + L "SS_Port1_EmpfangsDaten".Port1.TelegrammKennung[8] + T LB27 + +// Kennung C: + L "SS_Port1_EmpfangsDaten".Port1.TelegrammKennung[9] + T LB28 + L "SS_Port1_EmpfangsDaten".Port1.TelegrammKennung[10] + T LB29 + + +--- NW 2: WSAD-Telegramm ? (Arbeitsplatz aktivieren / deaktivieren) --- + L Teleg_Kennung_A + L 'WSAD' + ==D + JCN NoWSAD + +CALL FC "Host_ABPtoPLC_ABP" (Host_ABP:="SS_Port1_EmpfangsDaten".Port1.StationsNr, PLC-ABP:=PLC_ABP) + +CALL FC "AMRZeiger_ermitteln" (AMR_X:=PLC_ABP, AMR_DB:=AMR_DB, AMR_DW:=AMR_DW, Error:=Error) + + A Error + JC Unbekannt + +// Ziel-Pointer erzeugen: (PLC-Daten) + L AMR_DW + ITD + T AR1Start // Startwert mit Offset 0 + +// Externe Anzeige steuern?: + L "SS_Port1_EmpfangsDaten".Port1.Aktion_1 + L 11 // Einschalten? + ==I // Ja ! + = Lampe_aktivieren + JC ExtL + + CAC + L 12 // Ausschalten? + ==I // Ja ! + JC ExtL + +// Aktivieren / Deaktivieren: + L AR1Start // Startwert mit Offset 0 + + DINT#62 // Offset für Status + SLD 3 + L 0 // Damit DBX_Bit 0 + OD + T AR1Zeiger // Statt Dyn.Bereichsstop (ging nur bis DB-Länge <= 8191 Bytes) + + A "SS_Port1_EmpfangsDaten".Port1.Aktion_2[0] + OPN DB[AMR_DB] // ABP-DB öffnen + = DBX [AR1Zeiger] // ABP aktivieren / deaktivieren + + BEU + +// Externe Lampe ein-/ausschalten +ExtL: L AR1Start // Startwert mit Offset 0 + + DINT#60 // Offset für SS + SLD 3 + L 7 // Damit DBX_Bit 7 + OD + T AR1Zeiger // Statt Dyn.Bereichsstop (ging nur bis DB-Länge <= 8191 Bytes) + + A Lampe_aktivieren + OPN DB[AMR_DB] // ABP-DB öffnen + = DBX [AR1Zeiger] // ABP aktivieren / deaktivieren + + BEU + +NoWSAD: NOP 0 + + +--- NW 3: INDX-Telegramm ? (Arbeitsplatz-Linien-Versorgung --- + L Teleg_Kennung_A + L 'INDX' + ==D + JCN NoINDX + +CALL FC "Host_ABPtoPLC_ABP" (Host_ABP:="SS_Port1_EmpfangsDaten".Port1.StationsNr, PLC-ABP:=PLC_ABP) + +CALL FC "AMRZeiger_ermitteln" (AMR_X:=PLC_ABP, AMR_DB:=AMR_DB, AMR_DW:=AMR_DW, Error:=Error) + + A Error + JC Unbekannt + +// Ziel-Pointer erzeugen: (PLC-Daten) + L AMR_DW + ITD + T AR1Start // Startwert mit Offset 0 + + L AR1Start // Startwert mit Offset 0 + + DINT#60 // Offset für Status + SLD 3 + L "SS_Port1_EmpfangsDaten".Port1.Puffer_LinienNr + OD + T AR1Zeiger // Statt Dyn.Bereichsstop (ging nur bis DB-Länge <= 8191 Bytes) + + SET + OPN DB[AMR_DB] // ABP-DB öffnen + = DBX [AR1Zeiger] // Platz resetten + + BEU + +NoINDX: NOP 0 + + +--- NW 4: ECNT-Telegramm ? (Arbeitsplatz nach Beladen ausfahren --- + L Teleg_Kennung_A + L 'ECNT' + ==D + JCN NoECNT + +CALL FC "Host_ABPtoPLC_ABP" (Host_ABP:="SS_Port1_EmpfangsDaten".Port1.StationsNr, PLC-ABP:=PLC_ABP) + +CALL FC "AMRZeiger_ermitteln" (AMR_X:=PLC_ABP, AMR_DB:=AMR_DB, AMR_DW:=AMR_DW, Error:=Error) + + A Error + JC Unbekannt + +// Ziel-Pointer erzeugen: (PLC-Daten) + L AMR_DW + ITD + T AR1Start // Startwert mit Offset 0 + + L AR1Start // Startwert mit Offset 0 + + DINT#61 // Offset Status b + SLD 3 + L "SS_Port1_EmpfangsDaten".Port1.Puffer_LinienNr + OD + T AR1Zeiger // Statt Dyn.Bereichsstop (ging nur bis DB-Länge <= 8191 Bytes) + + SET + OPN DB[AMR_DB] // ABP-DB öffnen + = DBX [AR1Zeiger] // Platz resetten + + BEU + +NoECNT: NOP 0 + + +--- NW 5: Unbekanntes Telegramm --- +Unbekannt: CALL FC "DBMOV" (QuellDB:=9001, QuellDW:=0, ZielDB:=9001, ZielDW:=30, Anzahl_DW:=15, RE_VAL:="MW196") // Letztes ???-Telegramm speichern + + +--- NW 6: Baustein Ende --- + BE + diff --git a/=A01+UH06-KF00/Programmbausteine/SS_Host/SS_Port1_EmpfangsDaten.awl b/=A01+UH06-KF00/Programmbausteine/SS_Host/SS_Port1_EmpfangsDaten.awl new file mode 100644 index 0000000..b13ee00 --- /dev/null +++ b/=A01+UH06-KF00/Programmbausteine/SS_Host/SS_Port1_EmpfangsDaten.awl @@ -0,0 +1,5 @@ +=== GlobalDB 9001: SS_Port1_EmpfangsDaten [DB] === +INTERFACE: + Static: + Port1 : "UDatenEmpfangen" // Daten von Host > SPS + Error : "UDatenEmpfangen" diff --git a/=A01+UH06-KF00/Programmbausteine/SS_Host/SS_Port1_SendDaten.awl b/=A01+UH06-KF00/Programmbausteine/SS_Host/SS_Port1_SendDaten.awl new file mode 100644 index 0000000..1d7952b --- /dev/null +++ b/=A01+UH06-KF00/Programmbausteine/SS_Host/SS_Port1_SendDaten.awl @@ -0,0 +1,4 @@ +=== GlobalDB 9101: SS_Port1_SendDaten [DB] === +INTERFACE: + Static: + Port1 : "UDatenSend" // Daten von SPS > Host diff --git a/=A01+UH06-KF00/Programmbausteine/SS_Host/Test_EmpfangsDaten.awl b/=A01+UH06-KF00/Programmbausteine/SS_Host/Test_EmpfangsDaten.awl new file mode 100644 index 0000000..b6c7b56 --- /dev/null +++ b/=A01+UH06-KF00/Programmbausteine/SS_Host/Test_EmpfangsDaten.awl @@ -0,0 +1,5 @@ +=== GlobalDB 8999: Test_EmpfangsDaten [DB] === +INTERFACE: + Static: + Port1 : "UDatenEmpfangen" + Error : "UDatenEmpfangen" diff --git a/=A01+UH06-KF00/Programmbausteine/Visualisierung/DVisu_CheckTrolley.awl b/=A01+UH06-KF00/Programmbausteine/Visualisierung/DVisu_CheckTrolley.awl new file mode 100644 index 0000000..46dab01 --- /dev/null +++ b/=A01+UH06-KF00/Programmbausteine/Visualisierung/DVisu_CheckTrolley.awl @@ -0,0 +1,28 @@ +=== InstanceDB 158: DVisu_CheckTrolley [DB] === +INTERFACE: + Input: + Output: + InOut: + Static: + SearchDaten : "UTrolley" + OutDaten : "UTrolley" + Leerfeld : "UTrolley" + Daten_Speichern : Bool + Errors : Struct + Datenbank : Bool + SFC20 : Bool + Listenende : Bool + Parameter : Bool + Stammdaten : Bool + Outdaten : Bool + Ergebnis : Struct + Keine Abfrage : Bool + Falsche_Abfrage : Bool + Keine Daten : Bool + Daten_vorhanden : Bool + Abruf_erfolgt : Bool + Eintrag_erfolgt : Bool + Position : Int + TrolleyID : DInt + ShopGroup : DInt + RET_VAL_BLKMOV : Int diff --git a/=A01+UH06-KF00/Programmbausteine/Visualisierung/DVisu_HMOmniBereich_Plus.awl b/=A01+UH06-KF00/Programmbausteine/Visualisierung/DVisu_HMOmniBereich_Plus.awl new file mode 100644 index 0000000..2723b46 --- /dev/null +++ b/=A01+UH06-KF00/Programmbausteine/Visualisierung/DVisu_HMOmniBereich_Plus.awl @@ -0,0 +1,22 @@ +=== InstanceDB 252: DVisu_HMOmniBereich_Plus [DB] === +INTERFACE: + Input: + Output: + InOut: + Static: + Bereich_Visu : "MHMOmniBereich_Plus" + Bereich_Visu_old : "MHMOmniBereich_Plus" + Empty_Visu : Array[1..100] of Int + DL_DB : Int + Bereich_Nr_from_PC : Int + Bereich_Nr_from_PLC : Int + Bereich_Nr_from_VAR : Int + VAR_old : Int + VAR_Timer : Int + RET_VAL_Datenbank : Byte + RET_VAL_BLKMOV : Int + Durchlauf1 : Bool + Error : Struct + Datenbank : Bool + Undef_Schleuse : Bool + BLKMOV : Bool diff --git a/=A01+UH06-KF00/Programmbausteine/Visualisierung/DVisu_HMOmniSchleuse_Plus.awl b/=A01+UH06-KF00/Programmbausteine/Visualisierung/DVisu_HMOmniSchleuse_Plus.awl new file mode 100644 index 0000000..89c60fc --- /dev/null +++ b/=A01+UH06-KF00/Programmbausteine/Visualisierung/DVisu_HMOmniSchleuse_Plus.awl @@ -0,0 +1,22 @@ +=== InstanceDB 255: DVisu_HMOmniSchleuse_Plus [DB] === +INTERFACE: + Input: + Output: + InOut: + Static: + Schleuse_Visu : "MHMOmniSchleuse_Plus" + Schleuse_Visu_old : "MHMOmniSchleuse_Plus" + Empty_Visu : Array[1..100] of Int + DL_DB : Int + Schleuse_Nr_from_PC : Int + Schleuse_Nr_from_PLC : Int + Schleuse_Nr_from_VAR : Int + VAR_old : Int + VAR_Timer : Int + RET_VAL_Datenbank : Byte + RET_VAL_BLKMOV : Int + Durchlauf1 : Bool + Error : Struct + Datenbank : Bool + Undef_Schleuse : Bool + BLKMOV : Bool diff --git a/=A01+UH06-KF00/Programmbausteine/Visualisierung/DVisu_HMOmniWeiche.awl b/=A01+UH06-KF00/Programmbausteine/Visualisierung/DVisu_HMOmniWeiche.awl new file mode 100644 index 0000000..1323ee1 --- /dev/null +++ b/=A01+UH06-KF00/Programmbausteine/Visualisierung/DVisu_HMOmniWeiche.awl @@ -0,0 +1,22 @@ +=== InstanceDB 156: DVisu_HMOmniWeiche [DB] === +INTERFACE: + Input: + Output: + InOut: + Static: + Weiche_Visu : "MHMOmniWeiche" + Weiche_Visu_old : "MHMOmniWeiche" + empty_Visu : Array[1..100] of Int + DL_DB : Int + Weiche_Nr_from_PC : Int + Weiche_Nr_from_PLC : Int + Weiche_Nr_from_VAR : Int + VAR_old : Int + VAR_Timer : Int + RET_VAL_Datenbank : Byte + RET_VAL_BLKMOV : Int + Durchlauf1 : Bool + Error : Struct + Datenbank : Bool + Undef_Weiche : Bool + BLKMOV : Bool diff --git a/=A01+UH06-KF00/Programmbausteine/Visualisierung/DVisu_HMOmnischleuse.awl b/=A01+UH06-KF00/Programmbausteine/Visualisierung/DVisu_HMOmnischleuse.awl new file mode 100644 index 0000000..ef75162 --- /dev/null +++ b/=A01+UH06-KF00/Programmbausteine/Visualisierung/DVisu_HMOmnischleuse.awl @@ -0,0 +1,22 @@ +=== InstanceDB 155: DVisu_HMOmnischleuse [DB] === +INTERFACE: + Input: + Output: + InOut: + Static: + Schleuse_Visu : "MHMOmniSchleuse" + Schleuse_Visu_old : "MHMOmniSchleuse" + Empty_Visu : Array[1..100] of Int + DL_DB : Int + Schleuse_Nr_from_PC : Int + Schleuse_Nr_from_PLC : Int + Schleuse_Nr_from_VAR : Int + VAR_old : Int + VAR_Timer : Int + RET_VAL_Datenbank : Byte + RET_VAL_BLKMOV : Int + Durchlauf1 : Bool + Error : Struct + Datenbank : Bool + Undef_Schleuse : Bool + BLKMOV : Bool diff --git a/=A01+UH06-KF00/Programmbausteine/Visualisierung/DVisu_HM_ABP.awl b/=A01+UH06-KF00/Programmbausteine/Visualisierung/DVisu_HM_ABP.awl new file mode 100644 index 0000000..2be0dcc --- /dev/null +++ b/=A01+UH06-KF00/Programmbausteine/Visualisierung/DVisu_HM_ABP.awl @@ -0,0 +1,22 @@ +=== InstanceDB 159: DVisu_HM_ABP [DB] === +INTERFACE: + Input: + Output: + InOut: + Static: + ABP_Visu : "MHM_Arbeitsplatz" + ABP_Visu_old : "MHM_Arbeitsplatz" + Empty_Visu : Array[1..100] of Int + DL_DB : Int + ABP_Nr_from_PC : Word + ABP_Nr_from_PLC : Word + ABP_Nr_from_VAR : Word + VAR_old : Word + VAR_Timer : Int + RET_VAL_Datenbank : Byte + RET_VAL_BLKMOV : Int + Durchlauf1 : Bool + Error : Struct + Datenbank : Bool + Undef_ABP : Bool + BLKMOV : Bool diff --git a/=A01+UH06-KF00/Programmbausteine/Visualisierung/Visu_CheckTrolley.awl b/=A01+UH06-KF00/Programmbausteine/Visualisierung/Visu_CheckTrolley.awl new file mode 100644 index 0000000..afe24ec --- /dev/null +++ b/=A01+UH06-KF00/Programmbausteine/Visualisierung/Visu_CheckTrolley.awl @@ -0,0 +1,201 @@ +=== FB 158: Visu_CheckTrolley [STL] === +INTERFACE: + Input: + Output: + InOut: + Static: + SearchDaten : "UTrolley" + OutDaten : "UTrolley" + Leerfeld : "UTrolley" + Daten_Speichern : Bool // Aktuelle Daten übernehmen + Errors : Struct + Datenbank : Bool // Kein Datenlistenbereich / falscher Kopfinhalt / Endekennung + SFC20 : Bool // SFC20-Aufruf mit Fehler + Listenende : Bool // Listenende ist erreicht + Parameter : Bool // Falscher Parameter bei Aufruf + Stammdaten : Bool // Undefinierte Stammdaten zum Suchen + Outdaten : Bool // Undefinierte OUT-Daten + Ergebnis : Struct + Keine Abfrage : Bool // Keine Abfrage vorhanden + Falsche_Abfrage : Bool // Falsche / nicht eindeutige Abfrage + Keine Daten : Bool // Datensatz ist nicht vorhanden + Daten_vorhanden : Bool // Datensatz ist vorhanden + Abruf_erfolgt : Bool // Abruf einmalig ausgeführt + Eintrag_erfolgt : Bool // Speicherung ist erfolgt + Position : Int + TrolleyID : DInt + ShopGroup : DInt + RET_VAL_BLKMOV : Int + Temp: + Quelle : Any // Zeiger, wo Quell-Daten sind + Ziel : Any // Zeiger, wo Ziel-Daten sind + Error : Byte + Abfragen : Struct + TrolleyID : Bool + ShopGroup : Bool + Lager : Int + Lager_DB : Int + Lager_DW : Int + AR1Zeiger : DWord // Statt AR1 (ging nur bis DB-Länge <= 8191 Bytes) + AR1Start : DInt // Startwert mit Offset 0 + ErrorBit : Bool + Constant: + +--- NW 1: Initialisieren --- + L 0 + T Error + + SET + R Ergebnis.Abruf_erfolgt + + +--- NW 2: Daten speichern --- + AN Ergebnis.Daten_vorhanden + R Daten_Speichern + R Ergebnis.Eintrag_erfolgt + + A Daten_Speichern + R Daten_Speichern + R Ergebnis.Eintrag_erfolgt + JCN Nw3 + +CALL FC "DatenIn" (SSDB:=1000, SSDW:=0, INDATEN:=OutDaten, RE_VAL:="MB198") + + L "MB198" + L 2#11000000 + AW + L 0 + <>I + = Ergebnis.Eintrag_erfolgt + + L OutDaten.TrolleyID + T SearchDaten.TrolleyID + L DINT#0 // Ergebnis neu holen + T Ergebnis.TrolleyID + T SearchDaten.ShopGroup + + BEU + + +--- NW 3: Abfrage vorhanden ? --- +Nw3: L SearchDaten.TrolleyID + L DINT#0 + <>D + = Abfragen.TrolleyID + + L SearchDaten.ShopGroup + L DINT#0 + <>D + = Abfragen.ShopGroup + + A Abfragen.TrolleyID + AN Abfragen.ShopGroup + JC ReadTrolley + + A Abfragen.ShopGroup + AN Abfragen.TrolleyID + JC ReadAbrufID + + JU Ergebnis + + +--- NW 4: Outdaten löschen: --- +// Kennung + Datenbytes +DEL: L DINT#0 + T Ergebnis.TrolleyID + T Ergebnis.ShopGroup + + L 16#1004 // Kennung 10 + Word=04 + T LW0 + T LW10 // Any-Kennung, Datentyp + L 10 // Datenwords speichern + T LW2 + T LW12 // Wiederholungen + +// Quelle-Pointer erzeugen: (Leerfeld) + L 158 + T LW4 // DB_Nummer + L 40 // Adresse + SLD 3 + L 16#8400_0000 // Kennung: Daten + OD + T LD6 // Kennung, Adresse + +// Ziel-Pointer erzeugen: (Outdaten) + L 158 + T LW14 // DB_Nummer + L 20 // Adresse + SLD 3 + L 16#8400_0000 // Kennung: Daten + OD + T LD16 // Kennung, Adresse + +CALL SYS "BLKMOV" (SRCBLK:=Quelle, RET_VAL:=RET_VAL_BLKMOV, DSTBLK:=Ziel) // Datenliste-Daten speichern + + BEU + + +--- NW 5: Daten von TrolleyID lesen --- +ReadTrolley: L SearchDaten.TrolleyID + L Ergebnis.TrolleyID + ==D + = Ergebnis.Abruf_erfolgt + BEC + +CALL FC "DatenOut" (SSDB:=1000, SSDW:=0, PARA:=16#0000, SEARCHDATEN:=SearchDaten, RE_VAL:=Error, OUTDATEN:=OutDaten, Position:=Ergebnis.Position) // Eintrag lesen + + L OutDaten.TrolleyID + T Ergebnis.TrolleyID + + JU Ergebnis + + +--- NW 6: Daten von AbrufID lesen --- +ReadAbrufID: L SearchDaten.ShopGroup + T "MD220" + L Ergebnis.ShopGroup + ==D + = Ergebnis.Abruf_erfolgt + BEC + +CALL FC "DatenOut" (SSDB:=1000, SSDW:=0, PARA:=16#0500, SEARCHDATEN:=P#M220.0, RE_VAL:=Error, OUTDATEN:=OutDaten, Position:=Ergebnis.Position) // ShopGroup mit 16#0500 suchen ! + + L OutDaten.ShopGroup + T Ergebnis.ShopGroup + + +--- NW 7: Error / Ergebnis --- +// Errors: +Ergebnis: A L20.0 + = Errors.Datenbank + A L20.1 + = Errors.SFC20 + A L20.2 + = Errors.Listenende + A L20.3 + = Errors.Parameter + A L20.4 + = Errors.Stammdaten + A L20.5 + = Errors.Outdaten + +// Ergebnis: + AN Abfragen.TrolleyID + AN Abfragen.ShopGroup + = Ergebnis."Keine Abfrage" + A Abfragen.TrolleyID + A Abfragen.ShopGroup + = Ergebnis.Falsche_Abfrage + A L20.6 + = Ergebnis."Keine Daten" + A L20.7 + = Ergebnis.Daten_vorhanden + +// Resultat: + AN Ergebnis.Daten_vorhanden + JC DEL + + +--- NW 8: Ende --- + BE + diff --git a/=A01+UH06-KF00/Programmbausteine/Visualisierung/Visu_HMOmniBereich_Plus.awl b/=A01+UH06-KF00/Programmbausteine/Visualisierung/Visu_HMOmniBereich_Plus.awl new file mode 100644 index 0000000..54c3a77 --- /dev/null +++ b/=A01+UH06-KF00/Programmbausteine/Visualisierung/Visu_HMOmniBereich_Plus.awl @@ -0,0 +1,336 @@ +=== FB 252: Visu_HMOmniBereich_Plus [STL] === +INTERFACE: + Input: + Output: + InOut: + Static: + Bereich_Visu : "MHMOmniBereich_Plus" // Schleuse-Bereich für Visualisierung + Bereich_Visu_old : "MHMOmniBereich_Plus" + Empty_Visu : Array[1..100] of Int // Bereich für Daten-Löschung + DL_DB : Int // Datenlisten-DB + Bereich_Nr_from_PC : Int // PC>PLC: Für diesen Schleuse Daten bereitstellen + Bereich_Nr_from_PLC : Int // PLC>PC: Daten von diesem Schleusee aktiv + Bereich_Nr_from_VAR : Int // VAR>PLC: Für diesen Schleuse Daten bereitstellen + VAR_old : Int // VAR>PLC: Für diesen Schleuse Daten bereitstellen + VAR_Timer : Int // VAR>PLC: Für diesen Schleuse Daten bereitstellen + RET_VAL_Datenbank : Byte + RET_VAL_BLKMOV : Int + Durchlauf1 : Bool // 1.Durchlauf hat stattgefunden + Error : Struct + Datenbank : Bool + Undef_Schleuse : Bool + BLKMOV : Bool + Temp: + Quelle : Any // Zeiger, wo Quell-Daten sind + Ziel : Any // Zeiger, wo Ziel-Daten sind + Bereichs_DB : Int // Schleuse-DB + Bereichs_DW : Int // Schleuse-DW + AR1Zeiger : DWord // Statt AR1 (ging nur bis DB-Länge <= 8191 Bytes) + AR1Start : DInt // Startwert mit Offset 0 + Schleuse_Nr_aktiv : Int // Intern: Für diesen Schleuse Daten bereitstellen + Constant: + +--- NW 1: + --- + L Bereich_Nr_from_VAR // Anforderung von Variablentabelle ? + L 0 + >I // Ja ! + JC X010 + + L Bereich_Nr_from_PC // Anfoderung von Visualisierung? + L 0 + >I // Ja ! + JC X011 + + L 0 + T Bereich_Nr_from_PLC + T VAR_old + T VAR_Timer + + SET + R Error.Datenbank + R Error.Undef_Schleuse + R Error.BLKMOV + + A Durchlauf1 + R Durchlauf1 // 1.Durchlauf hat stattgefunden + JC D010 + + BEU + +// Daten löschen: +// Kennung + Datenbytes +D010: L 16#1004 // Kennung 10 + Word=04 + T LW0 + T LW10 // Any-Kennung, Datentyp + L 100 // Datenwords speichern + T LW2 + T LW12 // Wiederholungen + +// Quelle-Pointer erzeugen: (Empty-Visu) + L 252 + T LW4 // DB_Nummer + L 400 // Adresse + SLD 3 + L 16#8400_0000 // Kennung: Daten + OD + T LD6 // Kennung, Adresse + +// Ziel-Pointer erzeugen: (Schleuse_Visu_Daten) + L 252 + T LW14 // DB_Nummer + L 0 // Adresse + SLD 3 + L 16#8400_0000 // Kennung: Daten + OD + T LD16 // Kennung, Adresse + +CALL SYS "BLKMOV" (SRCBLK:=Quelle, RET_VAL:=RET_VAL_BLKMOV, DSTBLK:=Ziel) // Datenliste-Daten speichern + +// Ziel-Pointer erzeugen: (Schleuse_Visu_old-Daten) + L 252 + T LW14 // DB_Nummer + L 200 // Adresse + SLD 3 + L 16#8400_0000 // Kennung: Daten + OD + T LD16 // Kennung, Adresse + +CALL SYS "BLKMOV" (SRCBLK:=Quelle, RET_VAL:=RET_VAL_BLKMOV, DSTBLK:=Ziel) // Datenliste-Daten speichern + + L 0 + T RET_VAL_Datenbank + T RET_VAL_BLKMOV + + BEU + +X010: CAC + T Schleuse_Nr_aktiv + + L 0 // Anforderung von PC löschen + T Bereich_Nr_from_PC // Visualisierung + +// Automatisches Deaktivieren: + L Bereich_Nr_from_VAR + L VAR_old // Noch diesselbe VAR-Nr. ? + ==I // Ja ! + A Durchlauf1 + JC Y010 + +// NeuBeginn: + L 3600 // 1 Stunde + T VAR_Timer // Timer neu laden + + L Bereich_Nr_from_VAR + T VAR_old // VAR-Nr. speichern + + JU En01 + +// Timer aktiv: +Y010: AN "1s-Impuls" // 1s-Impuls + JC En01 + + L VAR_Timer // Timer + + -1 // 1s von Restzeit abziehen + T VAR_Timer // Timer + + L 0 // abgelaufen ? + >I // Nein ! + JC En01 + +// Timer abgelaufen: + L 0 // Automatisch beaktivieren + T Bereich_Nr_from_VAR + T VAR_old + T VAR_Timer // Timer + + JU En01 + +X011: CAC + T Schleuse_Nr_aktiv + + L 0 // Anforderung von VAR löschen + T Bereich_Nr_from_VAR // Visualisierung + T VAR_old + T VAR_Timer + +En01: NOP 0 + + +--- NW 2: Zeiger von gewolltem Bereich_Plus ermitteln --- + L Schleuse_Nr_aktiv + T "MW200" // Search-Daten + +CALL FC "DatenOut" (SSDB:=DL_DB, SSDW:=0, PARA:=WORD#16#0000, SEARCHDATEN:=P#M200.0, RE_VAL:="MB219", OUTDATEN:=P#M220.0, Position:="MW298") // Datenlisten-DB + + L "MB219" + T RET_VAL_Datenbank // Rückmeldung bei Datenbank-Zugriff (Vorstau-DL) + + JBI ok2 + + A "M219.0" + S Error.Datenbank + +No: SET + S Error.Undef_Schleuse + + L 0 + T Bereich_Nr_from_PLC // Aktiv-Schleuse + + JU D010 + +ok2: SET + R Error.Datenbank + R Error.Undef_Schleuse + + L "MW222" + L 2275 // Omni-Bereich_Plus? + ==I // Ja! + JC Ok2_Mig + + JU No + +Ok2_Mig: L "MW224" + T Bereichs_DB + L "MW226" + T Bereichs_DW + + +--- NW 3: Neue Datenübergabe an PC ? --- + AN Durchlauf1 // 1.Durchlauf hat stattgefunden + JC En03 + +// Ziel-Pointer erzeugen: (PLC-Daten) + L Bereichs_DW + ITD + T AR1Start // Startwert mit Offset 0 + +// Raus-Trolleys: + L Bereich_Visu.Dyn.Raus_Trolleys + L Bereich_Visu_old.Dyn.Raus_Trolleys + ==I // Keine Änderung ! + JC X200 + + L AR1Start // Startwert mit Offset 0 + + DINT#192 // Offset für Raus-Trolleys + SLD 3 + T AR1Zeiger // Statt Dyn.Bereichsstop (ging nur bis DB-Länge <= 8191 Bytes) + L Bereich_Visu.Dyn.Raus_Trolleys + OPN DB[Bereichs_DB] // Schleuse-DB öffnen + T DBW [AR1Zeiger] // Raus-Trolleys + +// Fahrzeit: +X200: L Bereich_Visu.Bereich.Fahrzeit + L Bereich_Visu_old.Bereich.Fahrzeit + ==I // Keine Änderung ! + JC X201 + + L AR1Start // Startwert mit Offset 0 + + DINT#50 // Offset für Fahrzeit + SLD 3 + T AR1Zeiger // Statt Dyn.Bereichsstop (ging nur bis DB-Länge <= 8191 Bytes) + L Bereich_Visu.Bereich.Fahrzeit + OPN DB[Bereichs_DB] // Schleuse-DB öffnen + T DBW [AR1Zeiger] // Schleuse-Zug + +// Schleusen.SK-Reset: +X201: A Bereich_Visu.Dyn.Sk.Reset + A Bereich_Visu_old.Dyn.Sk.Reset + O + AN Bereich_Visu.Dyn.Sk.Reset + AN Bereich_Visu_old.Dyn.Sk.Reset + JC X301 // Keine Änderung ! + + L AR1Start // Startwert mit Offset 0 + + DINT#88 // Offset für SK-Zeug + SLD 3 + L 3 // Damit DBX_Bit 3 + OD + T AR1Zeiger // Statt Dyn.Bereichsstop (ging nur bis DB-Länge <= 8191 Bytes) + A Bereich_Visu.Dyn.Sk.Reset + OPN DB[Bereichs_DB] // Schleuse-DB öffnen + = DBX [AR1Zeiger] // Schleuse-SK-Reset + +// HMI-Reset: +X301: A Bereich_Visu.Dyn.HMI.Bereich_resetten + A Bereich_Visu_old.Dyn.HMI.Bereich_resetten + O + AN Bereich_Visu.Dyn.HMI.Bereich_resetten + AN Bereich_Visu_old.Dyn.HMI.Bereich_resetten + JC En03 // Keine Änderung ! + + L AR1Start // Startwert mit Offset 0 + + DINT#72 // Offset für HMI + SLD 3 + L 0 // Damit DBX_Bit 0 + OD + T AR1Zeiger // Statt Dyn.Bereichsstop (ging nur bis DB-Länge <= 8191 Bytes) + A Bereich_Visu.Dyn.HMI.Bereich_resetten + OPN DB[Bereichs_DB] // Weiche-DB öffnen + = DBX [AR1Zeiger] // Weiche-SK-Reset + +En03: NOP 0 + + +--- NW 4: Datenübernahme vom PC --- +// Kennung + Datenbytes + L 16#1004 // Kennung 10 + Word=04 + T LW0 + T LW10 // Any-Kennung, Datentyp + L 100 // Datenwords speichern + T LW2 + T LW12 // Wiederholungen + +// Quelle-Pointer erzeugen: (PLC-Daten) + L Bereichs_DB + T LW4 // DB_Nummer + L Bereichs_DW // Adresse + SLD 3 + L 16#8400_0000 // Kennung: Daten + OD + T LD6 // Kennung, Adresse + +// Ziel-Pointer erzeugen: (PC-Schleuse-Visu-Daten) + L 252 + T LW14 // DB_Nummer + L 0 // Adresse + SLD 3 + L 16#8400_0000 // Kennung: Daten + OD + T LD16 // Kennung, Adresse + +CALL SYS "BLKMOV" (SRCBLK:=Quelle, RET_VAL:=RET_VAL_BLKMOV, DSTBLK:=Ziel) // Datenliste-Daten speichern + + L RET_VAL_BLKMOV // Rückmeldung + L 0 // Fehler vorhanden ? + <>I // Ja ! + = Error.BLKMOV // Error bei Block kopieren + BEC + +// Ziel-Pointer erzeugen: (Schleuse_Visu_old-Daten) + L 252 + T LW14 // DB_Nummer + L 200 // Adresse + SLD 3 + L 16#8400_0000 // Kennung: Daten + OD + T LD16 // Kennung, Adresse + +CALL SYS "BLKMOV" (SRCBLK:=Quelle, RET_VAL:=RET_VAL_BLKMOV, DSTBLK:=Ziel) // Datenliste-Daten speichern + + L RET_VAL_BLKMOV // Rückmeldung + L 0 // Fehler vorhanden ? + <>I // Ja ! + = Error.BLKMOV // Error bei Block kopieren + BEC + + L Schleuse_Nr_aktiv + T Bereich_Nr_from_PLC // Rückmeldung an PC (Daten stehen an) + + SET + S Durchlauf1 // 1.Durchlauf hat stattgefunden + + +--- NW 5: Ende --- + BE + diff --git a/=A01+UH06-KF00/Programmbausteine/Visualisierung/Visu_HMOmniSchleuse.awl b/=A01+UH06-KF00/Programmbausteine/Visualisierung/Visu_HMOmniSchleuse.awl new file mode 100644 index 0000000..4849ac4 --- /dev/null +++ b/=A01+UH06-KF00/Programmbausteine/Visualisierung/Visu_HMOmniSchleuse.awl @@ -0,0 +1,364 @@ +=== FB 155: Visu_HMOmniSchleuse [STL] === +INTERFACE: + Input: + Output: + InOut: + Static: + Schleuse_Visu : "MHMOmniSchleuse" // Schleuse-Bereich für Visualisierung + Schleuse_Visu_old : "MHMOmniSchleuse" + Empty_Visu : Array[1..100] of Int // Bereich für Daten-Löschung + DL_DB : Int // Datenlisten-DB + Schleuse_Nr_from_PC : Int // PC>PLC: Für diesen Schleuse Daten bereitstellen + Schleuse_Nr_from_PLC : Int // PLC>PC: Daten von diesem Schleusee aktiv + Schleuse_Nr_from_VAR : Int // VAR>PLC: Für diesen Schleuse Daten bereitstellen + VAR_old : Int // VAR>PLC: Für diesen Schleuse Daten bereitstellen + VAR_Timer : Int // VAR>PLC: Für diesen Schleuse Daten bereitstellen + RET_VAL_Datenbank : Byte + RET_VAL_BLKMOV : Int + Durchlauf1 : Bool // 1.Durchlauf hat stattgefunden + Error : Struct + Datenbank : Bool + Undef_Schleuse : Bool + BLKMOV : Bool + Input: + Output: + InOut: + Static: + Dyn : Struct + Stau_Zeit : Int // Sensor B_VorSchleuse ist belegt [100ms] + Mindest_Zeit : Int // Sensor B_VorSchleuse ist frei [100ms] + Input: + Output: + InOut: + Static: + Dyn : Struct + Stau_Zeit : Int // Sensor B_VorSchleuse ist belegt [100ms] + Mindest_Zeit : Int // Sensor B_VorSchleuse ist frei [100ms] + Temp: + Quelle : Any // Zeiger, wo Quell-Daten sind + Ziel : Any // Zeiger, wo Ziel-Daten sind + Schleusen_DB : Int // Schleuse-DB + Schleusen_DW : Int // Schleuse-DW + AR1Zeiger : DWord // Statt AR1 (ging nur bis DB-Länge <= 8191 Bytes) + AR1Start : DInt // Startwert mit Offset 0 + Schleuse_Nr_aktiv : Int // Intern: Für diesen Schleuse Daten bereitstellen + Constant: + +--- NW 1: + --- + L Schleuse_Nr_from_VAR // Anforderung von Variablentabelle ? + L 0 + >I // Ja ! + JC X010 + + L Schleuse_Nr_from_PC // Anfoderung von Visualisierung? + L 0 + >I // Ja ! + JC X011 + + L 0 + T Schleuse_Nr_from_PLC + T VAR_old + T VAR_Timer + + SET + R Error.Datenbank + R Error.Undef_Schleuse + R Error.BLKMOV + + A Durchlauf1 + R Durchlauf1 // 1.Durchlauf hat stattgefunden + JC D010 + + BEU + +// Daten löschen: +// Kennung + Datenbytes +D010: L 16#1004 // Kennung 10 + Word=04 + T LW0 + T LW10 // Any-Kennung, Datentyp + L 100 // Datenwords speichern + T LW2 + T LW12 // Wiederholungen + +// Quelle-Pointer erzeugen: (Empty-Visu) + L 155 + T LW4 // DB_Nummer + L 400 // Adresse + SLD 3 + L 16#8400_0000 // Kennung: Daten + OD + T LD6 // Kennung, Adresse + +// Ziel-Pointer erzeugen: (Schleuse_Visu_Daten) + L 155 + T LW14 // DB_Nummer + L 0 // Adresse + SLD 3 + L 16#8400_0000 // Kennung: Daten + OD + T LD16 // Kennung, Adresse + +CALL SYS "BLKMOV" (SRCBLK:=Quelle, RET_VAL:=RET_VAL_BLKMOV, DSTBLK:=Ziel) // Datenliste-Daten speichern + +// Ziel-Pointer erzeugen: (Schleuse_Visu_old-Daten) + L 155 + T LW14 // DB_Nummer + L 200 // Adresse + SLD 3 + L 16#8400_0000 // Kennung: Daten + OD + T LD16 // Kennung, Adresse + +CALL SYS "BLKMOV" (SRCBLK:=Quelle, RET_VAL:=RET_VAL_BLKMOV, DSTBLK:=Ziel) // Datenliste-Daten speichern + + L 0 + T RET_VAL_Datenbank + T RET_VAL_BLKMOV + + BEU + +X010: CAC + T Schleuse_Nr_aktiv + + L 0 // Anforderung von PC löschen + T Schleuse_Nr_from_PC // Visualisierung + +// Automatisches Deaktivieren: + L Schleuse_Nr_from_VAR + L VAR_old // Noch diesselbe VAR-Nr. ? + ==I // Ja ! + A Durchlauf1 + JC Y010 + +// NeuBeginn: + L 3600 // 1 Stunde + T VAR_Timer // Timer neu laden + + L Schleuse_Nr_from_VAR + T VAR_old // VAR-Nr. speichern + + JU En01 + +// Timer aktiv: +Y010: AN "1s-Impuls" // 1s-Impuls + JC En01 + + L VAR_Timer // Timer + + -1 // 1s von Restzeit abziehen + T VAR_Timer // Timer + + L 0 // abgelaufen ? + >I // Nein ! + JC En01 + +// Timer abgelaufen: + L 0 // Automatisch beaktivieren + T Schleuse_Nr_from_VAR + T VAR_old + T VAR_Timer // Timer + + JU En01 + +X011: CAC + T Schleuse_Nr_aktiv + + L 0 // Anforderung von VAR löschen + T Schleuse_Nr_from_VAR // Visualisierung + T VAR_old + T VAR_Timer + +En01: NOP 0 + + +--- NW 2: Zeiger von gewolltem Schleuse ermitteln --- + L Schleuse_Nr_aktiv + T "MW200" // Search-Daten + +CALL FC "DatenOut" (SSDB:=DL_DB, SSDW:=0, PARA:=WORD#16#0000, SEARCHDATEN:=P#M200.0, RE_VAL:="MB219", OUTDATEN:=P#M220.0, Position:="MW298") // Datenlisten-DB + + L "MB219" + T RET_VAL_Datenbank // Rückmeldung bei Datenbank-Zugriff (Vorstau-DL) + + JBI ok2 + + A "M219.0" + S Error.Datenbank + +No: SET + S Error.Undef_Schleuse + + L 0 + T Schleuse_Nr_from_PLC // Aktiv-Schleuse + + JU D010 + +ok2: SET + R Error.Datenbank + R Error.Undef_Schleuse + + L "MW222" + L 1274 // HM-Omni-Schleuse? + ==I // Ja! + JC Ok2_Mig + + JU No + +Ok2_Mig: L "MW224" + T Schleusen_DB + L "MW226" + T Schleusen_DW + + +--- NW 3: Neue Datenübergabe an PC ? --- + AN Durchlauf1 // 1.Durchlauf hat stattgefunden + JC En03 + +// Ziel-Pointer erzeugen: (PLC-Daten) + L Schleusen_DW + ITD + T AR1Start // Startwert mit Offset 0 + +// Ausfahrzeit: + L Schleuse_Visu.Schleuse.AusfahrZeit + L Schleuse_Visu_old.Schleuse.AusfahrZeit + ==I // Keine Änderung ! + JC X200 + + L AR1Start // Startwert mit Offset 0 + + DINT#60 // Offset für Ausfahrzeit + SLD 3 + T AR1Zeiger // Statt Dyn.Bereichsstop (ging nur bis DB-Länge <= 8191 Bytes) + L Schleuse_Visu.Schleuse.AusfahrZeit + OPN DB[Schleusen_DB] // Schleuse-DB öffnen + T DBW [AR1Zeiger] // Schleuse-Zug + +// HMI TrolleyID-Input: +X200: L Schleuse_Visu.Dyn.HMI.TrolleyID_Input + L Schleuse_Visu_old.Dyn.HMI.TrolleyID_Input + ==D // Keine Änderung ! + JC X201 + + L AR1Start // Startwert mit Offset 0 + + DINT#98 // Offset für DefaultZiel + SLD 3 + T AR1Zeiger // Statt Dyn.Bereichsstop (ging nur bis DB-Länge <= 8191 Bytes) + L Schleuse_Visu.Dyn.HMI.TrolleyID_Input + OPN DB[Schleusen_DB] // Schleuse-DB öffnen + T DBD [AR1Zeiger] // Schleuse-Zug + +// SK.Akt_Schritt: +X201: L Schleuse_Visu.Dyn.Sk.Akt_Schritt + L Schleuse_Visu_old.Dyn.Sk.Akt_Schritt + ==D // Keine Änderung ! + JC X300 + + L AR1Start // Startwert mit Offset 0 + + DINT#104 // Offset für Akt.Schritt + SLD 3 + T AR1Zeiger // Statt Dyn.Bereichsstop (ging nur bis DB-Länge <= 8191 Bytes) + L Schleuse_Visu.Dyn.Sk.Akt_Schritt + OPN DB[Schleusen_DB] // Schleuse-DB öffnen + T DBD [AR1Zeiger] // Schleuse-Zug + +// Schleusen.SK-Reset: +X300: A Schleuse_Visu.Dyn.Sk.Reset + A Schleuse_Visu_old.Dyn.Sk.Reset + O + AN Schleuse_Visu.Dyn.Sk.Reset + AN Schleuse_Visu_old.Dyn.Sk.Reset + JC X301 // Keine Änderung ! + + L AR1Start // Startwert mit Offset 0 + + DINT#118 // Offset für SK-Zeug + SLD 3 + L 3 // Damit DBX_Bit 3 + OD + T AR1Zeiger // Statt Dyn.Bereichsstop (ging nur bis DB-Länge <= 8191 Bytes) + A Schleuse_Visu.Dyn.Sk.Reset + OPN DB[Schleusen_DB] // Schleuse-DB öffnen + = DBX [AR1Zeiger] // Schleuse-SK-Reset + +// HMI-Reset: +X301: A Schleuse_Visu.Dyn.HMI.Schleuse_resetten + A Schleuse_Visu_old.Dyn.HMI.Schleuse_resetten + O + AN Schleuse_Visu.Dyn.HMI.Schleuse_resetten + AN Schleuse_Visu_old.Dyn.HMI.Schleuse_resetten + JC En03 // Keine Änderung ! + + L AR1Start // Startwert mit Offset 0 + + DINT#102 // Offset für Weichen-Zeug + SLD 3 + L 0 // Damit DBX_Bit 0 + OD + T AR1Zeiger // Statt Dyn.Bereichsstop (ging nur bis DB-Länge <= 8191 Bytes) + A Schleuse_Visu.Dyn.HMI.Schleuse_resetten + OPN DB[Schleusen_DB] // Weiche-DB öffnen + = DBX [AR1Zeiger] // Weiche-SK-Reset + +En03: NOP 0 + + +--- NW 4: Datenübernahme vom PC --- +// Kennung + Datenbytes + L 16#1004 // Kennung 10 + Word=04 + T LW0 + T LW10 // Any-Kennung, Datentyp + L 100 // Datenwords speichern + T LW2 + T LW12 // Wiederholungen + +// Quelle-Pointer erzeugen: (PLC-Daten) + L Schleusen_DB + T LW4 // DB_Nummer + L Schleusen_DW // Adresse + SLD 3 + L 16#8400_0000 // Kennung: Daten + OD + T LD6 // Kennung, Adresse + +// Ziel-Pointer erzeugen: (PC-Schleuse-Visu-Daten) + L 155 + T LW14 // DB_Nummer + L 0 // Adresse + SLD 3 + L 16#8400_0000 // Kennung: Daten + OD + T LD16 // Kennung, Adresse + +CALL SYS "BLKMOV" (SRCBLK:=Quelle, RET_VAL:=RET_VAL_BLKMOV, DSTBLK:=Ziel) // Datenliste-Daten speichern + + L RET_VAL_BLKMOV // Rückmeldung + L 0 // Fehler vorhanden ? + <>I // Ja ! + = Error.BLKMOV // Error bei Block kopieren + BEC + +// Ziel-Pointer erzeugen: (Schleuse_Visu_old-Daten) + L 155 + T LW14 // DB_Nummer + L 200 // Adresse + SLD 3 + L 16#8400_0000 // Kennung: Daten + OD + T LD16 // Kennung, Adresse + +CALL SYS "BLKMOV" (SRCBLK:=Quelle, RET_VAL:=RET_VAL_BLKMOV, DSTBLK:=Ziel) // Datenliste-Daten speichern + + L RET_VAL_BLKMOV // Rückmeldung + L 0 // Fehler vorhanden ? + <>I // Ja ! + = Error.BLKMOV // Error bei Block kopieren + BEC + + L Schleuse_Nr_aktiv + T Schleuse_Nr_from_PLC // Rückmeldung an PC (Daten stehen an) + + SET + S Durchlauf1 // 1.Durchlauf hat stattgefunden + + +--- NW 5: Ende --- + BE + diff --git a/=A01+UH06-KF00/Programmbausteine/Visualisierung/Visu_HMOmniSchleuse_Plus.awl b/=A01+UH06-KF00/Programmbausteine/Visualisierung/Visu_HMOmniSchleuse_Plus.awl new file mode 100644 index 0000000..fd0e762 --- /dev/null +++ b/=A01+UH06-KF00/Programmbausteine/Visualisierung/Visu_HMOmniSchleuse_Plus.awl @@ -0,0 +1,350 @@ +=== FB 255: Visu_HMOmniSchleuse_Plus [STL] === +INTERFACE: + Input: + Output: + InOut: + Static: + Schleuse_Visu : "MHMOmniSchleuse_Plus" // Schleuse-Bereich für Visualisierung + Schleuse_Visu_old : "MHMOmniSchleuse_Plus" + Empty_Visu : Array[1..100] of Int // Bereich für Daten-Löschung + DL_DB : Int // Datenlisten-DB + Schleuse_Nr_from_PC : Int // PC>PLC: Für diesen Schleuse Daten bereitstellen + Schleuse_Nr_from_PLC : Int // PLC>PC: Daten von diesem Schleusee aktiv + Schleuse_Nr_from_VAR : Int // VAR>PLC: Für diesen Schleuse Daten bereitstellen + VAR_old : Int // VAR>PLC: Für diesen Schleuse Daten bereitstellen + VAR_Timer : Int // VAR>PLC: Für diesen Schleuse Daten bereitstellen + RET_VAL_Datenbank : Byte + RET_VAL_BLKMOV : Int + Durchlauf1 : Bool // 1.Durchlauf hat stattgefunden + Error : Struct + Datenbank : Bool + Undef_Schleuse : Bool + BLKMOV : Bool + Temp: + Quelle : Any // Zeiger, wo Quell-Daten sind + Ziel : Any // Zeiger, wo Ziel-Daten sind + Schleusen_DB : Int // Schleuse-DB + Schleusen_DW : Int // Schleuse-DW + AR1Zeiger : DWord // Statt AR1 (ging nur bis DB-Länge <= 8191 Bytes) + AR1Start : DInt // Startwert mit Offset 0 + Schleuse_Nr_aktiv : Int // Intern: Für diesen Schleuse Daten bereitstellen + Constant: + +--- NW 1: + --- + L Schleuse_Nr_from_VAR // Anforderung von Variablentabelle ? + L 0 + >I // Ja ! + JC X010 + + L Schleuse_Nr_from_PC // Anfoderung von Visualisierung? + L 0 + >I // Ja ! + JC X011 + + L 0 + T Schleuse_Nr_from_PLC + T VAR_old + T VAR_Timer + + SET + R Error.Datenbank + R Error.Undef_Schleuse + R Error.BLKMOV + + A Durchlauf1 + R Durchlauf1 // 1.Durchlauf hat stattgefunden + JC D010 + + BEU + +// Daten löschen: +// Kennung + Datenbytes +D010: L 16#1004 // Kennung 10 + Word=04 + T LW0 + T LW10 // Any-Kennung, Datentyp + L 100 // Datenwords speichern + T LW2 + T LW12 // Wiederholungen + +// Quelle-Pointer erzeugen: (Empty-Visu) + L 255 + T LW4 // DB_Nummer + L 400 // Adresse + SLD 3 + L 16#8400_0000 // Kennung: Daten + OD + T LD6 // Kennung, Adresse + +// Ziel-Pointer erzeugen: (Schleuse_Visu_Daten) + L 255 + T LW14 // DB_Nummer + L 0 // Adresse + SLD 3 + L 16#8400_0000 // Kennung: Daten + OD + T LD16 // Kennung, Adresse + +CALL SYS "BLKMOV" (SRCBLK:=Quelle, RET_VAL:=RET_VAL_BLKMOV, DSTBLK:=Ziel) // Datenliste-Daten speichern + +// Ziel-Pointer erzeugen: (Schleuse_Visu_old-Daten) + L 255 + T LW14 // DB_Nummer + L 200 // Adresse + SLD 3 + L 16#8400_0000 // Kennung: Daten + OD + T LD16 // Kennung, Adresse + +CALL SYS "BLKMOV" (SRCBLK:=Quelle, RET_VAL:=RET_VAL_BLKMOV, DSTBLK:=Ziel) // Datenliste-Daten speichern + + L 0 + T RET_VAL_Datenbank + T RET_VAL_BLKMOV + + BEU + +X010: CAC + T Schleuse_Nr_aktiv + + L 0 // Anforderung von PC löschen + T Schleuse_Nr_from_PC // Visualisierung + +// Automatisches Deaktivieren: + L Schleuse_Nr_from_VAR + L VAR_old // Noch diesselbe VAR-Nr. ? + ==I // Ja ! + A Durchlauf1 + JC Y010 + +// NeuBeginn: + L 3600 // 1 Stunde + T VAR_Timer // Timer neu laden + + L Schleuse_Nr_from_VAR + T VAR_old // VAR-Nr. speichern + + JU En01 + +// Timer aktiv: +Y010: AN "1s-Impuls" // 1s-Impuls + JC En01 + + L VAR_Timer // Timer + + -1 // 1s von Restzeit abziehen + T VAR_Timer // Timer + + L 0 // abgelaufen ? + >I // Nein ! + JC En01 + +// Timer abgelaufen: + L 0 // Automatisch beaktivieren + T Schleuse_Nr_from_VAR + T VAR_old + T VAR_Timer // Timer + + JU En01 + +X011: CAC + T Schleuse_Nr_aktiv + + L 0 // Anforderung von VAR löschen + T Schleuse_Nr_from_VAR // Visualisierung + T VAR_old + T VAR_Timer + +En01: NOP 0 + + +--- NW 2: Zeiger von gewolltem Schleuse ermitteln --- + L Schleuse_Nr_aktiv + T "MW200" // Search-Daten + +CALL FC "DatenOut" (SSDB:=DL_DB, SSDW:=0, PARA:=WORD#16#0000, SEARCHDATEN:=P#M200.0, RE_VAL:="MB219", OUTDATEN:=P#M220.0, Position:="MW298") // Datenlisten-DB + + L "MB219" + T RET_VAL_Datenbank // Rückmeldung bei Datenbank-Zugriff (Vorstau-DL) + + JBI ok2 + + A "M219.0" + S Error.Datenbank + +No: SET + S Error.Undef_Schleuse + + L 0 + T Schleuse_Nr_from_PLC // Aktiv-Schleuse + + JU D010 + +ok2: SET + R Error.Datenbank + R Error.Undef_Schleuse + + L "MW222" + L 1275 // HM-Omni-Schleuse_Plus? + ==I // Ja! + JC Ok2_Mig + + JU No + +Ok2_Mig: L "MW224" + T Schleusen_DB + L "MW226" + T Schleusen_DW + + +--- NW 3: Neue Datenübergabe an PC ? --- + AN Durchlauf1 // 1.Durchlauf hat stattgefunden + JC En03 + +// Ziel-Pointer erzeugen: (PLC-Daten) + L Schleusen_DW + ITD + T AR1Start // Startwert mit Offset 0 + +// Raus-Trolleys: + L Schleuse_Visu.Dyn.Raus_Trolleys + L Schleuse_Visu_old.Dyn.Raus_Trolleys + ==I // Keine Änderung ! + JC X200 + + L AR1Start // Startwert mit Offset 0 + + DINT#162 // Offset für Raus-Trolleys + SLD 3 + T AR1Zeiger // Statt Dyn.Bereichsstop (ging nur bis DB-Länge <= 8191 Bytes) + L Schleuse_Visu.Dyn.Raus_Trolleys + OPN DB[Schleusen_DB] // Schleuse-DB öffnen + T DBW [AR1Zeiger] // Raus-Trolleys + +// HMI TrolleyID-Input: +X200: L Schleuse_Visu.Dyn.HMI.TrolleyID_Input + L Schleuse_Visu_old.Dyn.HMI.TrolleyID_Input + ==D // Keine Änderung ! + JC X201 + + L AR1Start // Startwert mit Offset 0 + + DINT#98 // Offset für DefaultZiel + SLD 3 + T AR1Zeiger // Statt Dyn.Bereichsstop (ging nur bis DB-Länge <= 8191 Bytes) + L Schleuse_Visu.Dyn.HMI.TrolleyID_Input + OPN DB[Schleusen_DB] // Schleuse-DB öffnen + T DBD [AR1Zeiger] // Schleuse-Zug + +// SK.Akt_Schritt: +X201: L Schleuse_Visu.Dyn.Sk.Akt_Schritt + L Schleuse_Visu_old.Dyn.Sk.Akt_Schritt + ==D // Keine Änderung ! + JC X300 + + L AR1Start // Startwert mit Offset 0 + + DINT#104 // Offset für Akt.Schritt + SLD 3 + T AR1Zeiger // Statt Dyn.Bereichsstop (ging nur bis DB-Länge <= 8191 Bytes) + L Schleuse_Visu.Dyn.Sk.Akt_Schritt + OPN DB[Schleusen_DB] // Schleuse-DB öffnen + T DBD [AR1Zeiger] // Schleuse-Zug + +// Schleusen.SK-Reset: +X300: A Schleuse_Visu.Dyn.Sk.Reset + A Schleuse_Visu_old.Dyn.Sk.Reset + O + AN Schleuse_Visu.Dyn.Sk.Reset + AN Schleuse_Visu_old.Dyn.Sk.Reset + JC X301 // Keine Änderung ! + + L AR1Start // Startwert mit Offset 0 + + DINT#118 // Offset für SK-Zeug + SLD 3 + L 3 // Damit DBX_Bit 3 + OD + T AR1Zeiger // Statt Dyn.Bereichsstop (ging nur bis DB-Länge <= 8191 Bytes) + A Schleuse_Visu.Dyn.Sk.Reset + OPN DB[Schleusen_DB] // Schleuse-DB öffnen + = DBX [AR1Zeiger] // Schleuse-SK-Reset + +// HMI-Reset: +X301: A Schleuse_Visu.Dyn.HMI.Schleuse_resetten + A Schleuse_Visu_old.Dyn.HMI.Schleuse_resetten + O + AN Schleuse_Visu.Dyn.HMI.Schleuse_resetten + AN Schleuse_Visu_old.Dyn.HMI.Schleuse_resetten + JC En03 // Keine Änderung ! + + L AR1Start // Startwert mit Offset 0 + + DINT#102 // Offset für Weichen-Zeug + SLD 3 + L 0 // Damit DBX_Bit 0 + OD + T AR1Zeiger // Statt Dyn.Bereichsstop (ging nur bis DB-Länge <= 8191 Bytes) + A Schleuse_Visu.Dyn.HMI.Schleuse_resetten + OPN DB[Schleusen_DB] // Weiche-DB öffnen + = DBX [AR1Zeiger] // Weiche-SK-Reset + +En03: NOP 0 + + +--- NW 4: Datenübernahme vom PC --- +// Kennung + Datenbytes + L 16#1004 // Kennung 10 + Word=04 + T LW0 + T LW10 // Any-Kennung, Datentyp + L 100 // Datenwords speichern + T LW2 + T LW12 // Wiederholungen + +// Quelle-Pointer erzeugen: (PLC-Daten) + L Schleusen_DB + T LW4 // DB_Nummer + L Schleusen_DW // Adresse + SLD 3 + L 16#8400_0000 // Kennung: Daten + OD + T LD6 // Kennung, Adresse + +// Ziel-Pointer erzeugen: (PC-Schleuse-Visu-Daten) + L 255 + T LW14 // DB_Nummer + L 0 // Adresse + SLD 3 + L 16#8400_0000 // Kennung: Daten + OD + T LD16 // Kennung, Adresse + +CALL SYS "BLKMOV" (SRCBLK:=Quelle, RET_VAL:=RET_VAL_BLKMOV, DSTBLK:=Ziel) // Datenliste-Daten speichern + + L RET_VAL_BLKMOV // Rückmeldung + L 0 // Fehler vorhanden ? + <>I // Ja ! + = Error.BLKMOV // Error bei Block kopieren + BEC + +// Ziel-Pointer erzeugen: (Schleuse_Visu_old-Daten) + L 255 + T LW14 // DB_Nummer + L 200 // Adresse + SLD 3 + L 16#8400_0000 // Kennung: Daten + OD + T LD16 // Kennung, Adresse + +CALL SYS "BLKMOV" (SRCBLK:=Quelle, RET_VAL:=RET_VAL_BLKMOV, DSTBLK:=Ziel) // Datenliste-Daten speichern + + L RET_VAL_BLKMOV // Rückmeldung + L 0 // Fehler vorhanden ? + <>I // Ja ! + = Error.BLKMOV // Error bei Block kopieren + BEC + + L Schleuse_Nr_aktiv + T Schleuse_Nr_from_PLC // Rückmeldung an PC (Daten stehen an) + + SET + S Durchlauf1 // 1.Durchlauf hat stattgefunden + + +--- NW 5: Ende --- + BE + diff --git a/=A01+UH06-KF00/Programmbausteine/Visualisierung/Visu_HMOmniWeiche.awl b/=A01+UH06-KF00/Programmbausteine/Visualisierung/Visu_HMOmniWeiche.awl new file mode 100644 index 0000000..31603b6 --- /dev/null +++ b/=A01+UH06-KF00/Programmbausteine/Visualisierung/Visu_HMOmniWeiche.awl @@ -0,0 +1,290 @@ +=== FB 156: Visu_HMOmniWeiche [STL] === +INTERFACE: + Input: + Output: + InOut: + Static: + Weiche_Visu : "MHMOmniWeiche" // Weiche-Bereich für Visualisierung + Weiche_Visu_old : "MHMOmniWeiche" + empty_Visu : Array[1..100] of Int // Bereich für Daten-Löschung + DL_DB : Int // Datenlisten-DB + Weiche_Nr_from_PC : Int // PC>PLC: Für diesen Weiche Daten bereitstellen + Weiche_Nr_from_PLC : Int // PLC>PC: Daten von diesem Weiche aktiv + Weiche_Nr_from_VAR : Int // VAR>PLC: Für diesen Weiche Daten bereitstellen + VAR_old : Int // VAR>PLC: Für diesen Weiche Daten bereitstellen + VAR_Timer : Int // VAR>PLC: Für diesen Weiche Daten bereitstellen + RET_VAL_Datenbank : Byte + RET_VAL_BLKMOV : Int + Durchlauf1 : Bool // 1.Durchlauf hat stattgefunden + Error : Struct + Datenbank : Bool + Undef_Weiche : Bool + BLKMOV : Bool + Temp: + Quelle : Any // Zeiger, wo Quell-Daten sind + Ziel : Any // Zeiger, wo Ziel-Daten sind + Weichen_DB : Int // Weiche-DB + Weichen_DW : Int // Weiche-DW + AR1Zeiger : DWord // Statt AR1 (ging nur bis DB-Länge <= 8191 Bytes) + AR1Start : DInt // Startwert mit Offset 0 + Weiche_Nr_aktiv : Int // Intern: Für diesen Weiche Daten bereitstellen + Constant: + +--- NW 1: + --- + L Weiche_Nr_from_VAR // Anforderung von Variablentabelle ? + L 0 + >I // Ja ! + JC X010 + + L Weiche_Nr_from_PC // Anfoderung von Visualisierung? + L 0 + >I // Ja ! + JC X011 + + L 0 + T Weiche_Nr_from_PLC + T VAR_old + T VAR_Timer + + SET + R Error.Datenbank + R Error.Undef_Weiche + R Error.BLKMOV + + A Durchlauf1 + R Durchlauf1 // 1.Durchlauf hat stattgefunden + JC D010 + + BEU + +// Daten löschen: +// Kennung + Datenbytes +D010: L 16#1004 // Kennung 10 + Word=04 + T LW0 + T LW10 // Any-Kennung, Datentyp + L 100 // Datenwords speichern + T LW2 + T LW12 // Wiederholungen + +// Quelle-Pointer erzeugen: (empty-Visu) + L 156 + T LW4 // DB_Nummer + L 400 // Adresse + SLD 3 + L 16#8400_0000 // Kennung: Daten + OD + T LD6 // Kennung, Adresse + +// Ziel-Pointer erzeugen: (Weiche_Visu_Daten) + L 156 + T LW14 // DB_Nummer + L 0 // Adresse + SLD 3 + L 16#8400_0000 // Kennung: Daten + OD + T LD16 // Kennung, Adresse + +CALL SYS "BLKMOV" (SRCBLK:=Quelle, RET_VAL:=RET_VAL_BLKMOV, DSTBLK:=Ziel) // Datenliste-Daten speichern + +// Ziel-Pointer erzeugen: (Weiche_Visu_old-Daten) + L 156 + T LW14 // DB_Nummer + L 150 // Adresse + SLD 3 + L 16#8400_0000 // Kennung: Daten + OD + T LD16 // Kennung, Adresse + +CALL SYS "BLKMOV" (SRCBLK:=Quelle, RET_VAL:=RET_VAL_BLKMOV, DSTBLK:=Ziel) // Datenliste-Daten speichern + + L 0 + T RET_VAL_Datenbank + T RET_VAL_BLKMOV + + BEU + +X010: CAC + T Weiche_Nr_aktiv + + L 0 // Anforderung von PC löschen + T Weiche_Nr_from_PC // Visualisierung + +// Automatisches Deaktivieren: + L Weiche_Nr_from_VAR + L VAR_old // Noch diesselbe VAR-Nr. ? + ==I // Ja ! + A Durchlauf1 + JC Y010 + +// NeuBeginn: + L 3600 // 1 Stunde + T VAR_Timer // Timer neu laden + + L Weiche_Nr_from_VAR + T VAR_old // VAR-Nr. speichern + + JU En01 + +// Timer aktiv: +Y010: AN "1s-Impuls" // 1s-Impuls + JC En01 + + L VAR_Timer // Timer + + -1 // 1s von Restzeit abziehen + T VAR_Timer // Timer + + L 0 // abgelaufen ? + >I // Nein ! + JC En01 + +// Timer abgelaufen: + L 0 // Automatisch beaktivieren + T Weiche_Nr_from_VAR + T VAR_old + T VAR_Timer // Timer + + JU En01 + +X011: CAC + T Weiche_Nr_aktiv + + L 0 // Anforderung von VAR löschen + T Weiche_Nr_from_VAR // Visualisierung + T VAR_old + T VAR_Timer + +En01: NOP 0 + + +--- NW 2: Zeiger von gewolltem Weiche ermitteln --- + L Weiche_Nr_aktiv + T "MW200" // Search-Daten + +CALL FC "DatenOut" (SSDB:=DL_DB, SSDW:=0, PARA:=WORD#16#0000, SEARCHDATEN:=P#M200.0, RE_VAL:="MB219", OUTDATEN:=P#M220.0, Position:="MW298") // Datenlisten-DB + + L "MB219" + T RET_VAL_Datenbank // Rückmeldung bei Datenbank-Zugriff (Vorstau-DL) + + JBI ok2 + + A "M219.0" + S Error.Datenbank + +No: SET + S Error.Undef_Weiche + + L 0 + T Weiche_Nr_from_PLC // Aktiv-Weiche + + JU D010 + +ok2: SET + R Error.Datenbank + R Error.Undef_Weiche + + L "MW222" + L 279 // Omni-Weiche? + ==I // Ja! + JC Ok2_Mig + + JU No + +Ok2_Mig: L "MW224" + T Weichen_DB + L "MW226" + T Weichen_DW + + +--- NW 3: Neue Datenübergabe an PC ? --- + AN Durchlauf1 // 1.Durchlauf hat stattgefunden + JC En03 + +// Ziel-Pointer erzeugen: (PLC-Daten) + L Weichen_DW + ITD + T AR1Start // Startwert mit Offset 0 + +// HMI-Reset: +X300: A Weiche_Visu.Dyn.HMI.Weiche_resetten + A Weiche_Visu_old.Dyn.HMI.Weiche_resetten + O + AN Weiche_Visu.Dyn.HMI.Weiche_resetten + AN Weiche_Visu_old.Dyn.HMI.Weiche_resetten + JC En03 // Keine Änderung ! + + L AR1Start // Startwert mit Offset 0 + + DINT#90 // Offset für Weichen-Zeug + SLD 3 + L 0 // Damit DBX_Bit 0 + OD + T AR1Zeiger // Statt Dyn.Bereichsstop (ging nur bis DB-Länge <= 8191 Bytes) + A Weiche_Visu.Dyn.HMI.Weiche_resetten + OPN DB[Weichen_DB] // Weiche-DB öffnen + = DBX [AR1Zeiger] // Weiche-SK-Reset + +En03: NOP 0 + + +--- NW 4: Datenübernahme vom PC --- +// Kennung + Datenbytes + L 16#1004 // Kennung 10 + Word=04 + T LW0 + T LW10 // Any-Kennung, Datentyp + L 100 // Datenwords speichern + T LW2 + T LW12 // Wiederholungen + +// Quelle-Pointer erzeugen: (PLC-Daten) + L Weichen_DB + T LW4 // DB_Nummer + L Weichen_DW // Adresse + SLD 3 + L 16#8400_0000 // Kennung: Daten + OD + T LD6 // Kennung, Adresse + +// Ziel-Pointer erzeugen: (PC-Weiche-Visu-Daten) + L 156 + T LW14 // DB_Nummer + L 0 // Adresse + SLD 3 + L 16#8400_0000 // Kennung: Daten + OD + T LD16 // Kennung, Adresse + +CALL SYS "BLKMOV" (SRCBLK:=Quelle, RET_VAL:=RET_VAL_BLKMOV, DSTBLK:=Ziel) // Datenliste-Daten speichern + + L RET_VAL_BLKMOV // Rückmeldung + L 0 // Fehler vorhanden ? + <>I // Ja ! + = Error.BLKMOV // Error bei Block kopieren + BEC + +// Ziel-Pointer erzeugen: (Weiche_Visu_old-Daten) + L 156 + T LW14 // DB_Nummer + L 200 // Adresse + SLD 3 + L 16#8400_0000 // Kennung: Daten + OD + T LD16 // Kennung, Adresse + +CALL SYS "BLKMOV" (SRCBLK:=Quelle, RET_VAL:=RET_VAL_BLKMOV, DSTBLK:=Ziel) // Datenliste-Daten speichern + + L RET_VAL_BLKMOV // Rückmeldung + L 0 // Fehler vorhanden ? + <>I // Ja ! + = Error.BLKMOV // Error bei Block kopieren + BEC + + L Weiche_Nr_aktiv + T Weiche_Nr_from_PLC // Rückmeldung an PC (Daten stehen an) + + SET + S Durchlauf1 // 1.Durchlauf hat stattgefunden + + +--- NW 5: Ende --- + BE + diff --git a/=A01+UH06-KF00/Programmbausteine/Visualisierung/Visu_HM_ABP.awl b/=A01+UH06-KF00/Programmbausteine/Visualisierung/Visu_HM_ABP.awl new file mode 100644 index 0000000..5609c90 --- /dev/null +++ b/=A01+UH06-KF00/Programmbausteine/Visualisierung/Visu_HM_ABP.awl @@ -0,0 +1,566 @@ +=== FB 159: Visu_HM_ABP [STL] === +INTERFACE: + Input: + Output: + InOut: + Static: + ABP_Visu : "MHM_Arbeitsplatz" // ABP-Bereich für Visualisierung + ABP_Visu_old : "MHM_Arbeitsplatz" // COPYRIGHT by Ingenieurbüro A.EmmertOrtsstr.33, D-869925 Fuchstal (Germany)Tel.: 0049(0)8243-960629Version: Omniflow H&M AMR / 04.2025Schritt 0: Warten auf TrolleySchritt 1: Betriebsart ok/angegeben?Schritt 5: Mit Scanner fahren: Defaultziel?Schritt 6: Scanner triggernSchritt 7: "DREQ" an PC sendenSchritt 8: Warten auf PC-Antwort Schritt 9: PC-Antwort auswerten Schritt 10: Fahrtrichtung ermittelnSchritt 11: Ausfahren ok ?Schritt 12: Warten auf Pin-Signal Schritt 13: Weichenbereich raus bereit ? Schritt 14: Daten an Rausweiche übergebenSchritt 15: ABP Mindestzeit öffnen Schritt 16: Trolley ausgefahren ? Schritt 17: Trolley ist draussen Schritt 18: BM wurde vereinzeltSchritt 19: Beladezustand checkenSchritt 20: Schleuse resettenSchritt 21: Reset ist zu Ende + Empty_Visu : Array[1..100] of Int // Bereich für Daten-Löschung + DL_DB : Int // Datenlisten-DB + ABP_Nr_from_PC : Word // PC>PLC: Für diesen ABP Daten bereitstellen + ABP_Nr_from_PLC : Word // PLC>PC: Daten von diesem ABPe aktiv + ABP_Nr_from_VAR : Word // VAR>PLC: Für diesen ABP Daten bereitstellen + VAR_old : Word // VAR>PLC: Für diesen ABP Daten bereitstellen + VAR_Timer : Int // VAR>PLC: Für diesen ABP Daten bereitstellen + RET_VAL_Datenbank : Byte + RET_VAL_BLKMOV : Int + Durchlauf1 : Bool // 1.Durchlauf hat stattgefunden + Error : Struct + Datenbank : Bool + Undef_ABP : Bool + BLKMOV : Bool + Input: + B_In_Schleuse_Vorstau : Bool // Sensor Trolley ist in ABP Vorstau + Output: + InOut: + Static: + Dyn : Struct + HMI : Struct + Vorstau_resetten : Bool // Vorstau-ABP resetten (IN:HMI, Out:PLC) + Platz_1_resetten : Bool // Platz 1-ABP resetten (IN:HMI, Out:PLC) + Platz_2_resetten : Bool // Platz 2-ABP resetten (IN:HMI, Out:PLC) + Platz_3_resetten : Bool // Platz 3-ABP resetten (IN:HMI, Out:PLC) + Input: + B_In_Schleuse_Vorstau : Bool // Sensor Trolley ist in ABP Vorstau + Output: + InOut: + Static: + Dyn : Struct + HMI : Struct + Vorstau_resetten : Bool // Vorstau-ABP resetten (IN:HMI, Out:PLC) + Platz_1_resetten : Bool // Platz 1-ABP resetten (IN:HMI, Out:PLC) + Platz_2_resetten : Bool // Platz 2-ABP resetten (IN:HMI, Out:PLC) + Platz_3_resetten : Bool // Platz 3-ABP resetten (IN:HMI, Out:PLC) + Temp: + Quelle : Any // Zeiger, wo Quell-Daten sind + Ziel : Any // Zeiger, wo Ziel-Daten sind + ABPn_DB : Int // ABP-DB + ABPn_DW : Int // ABP-DW + AR1Zeiger : DWord // Statt AR1 (ging nur bis DB-Länge <= 8191 Bytes) + AR1Start : DInt // Startwert mit Offset 0 + ABP_Nr_aktiv : Int // Intern: Für diesen ABP Daten bereitstellen + Constant: + +--- NW 1: + --- + L ABP_Nr_from_VAR // Anforderung von Variablentabelle ? + L 16#0 + <>I // Ja ! + JC X010 + + L ABP_Nr_from_PC // Anfoderung von Visualisierung? + L 16#0 + <>I // Ja ! + JC X011 + + L 0 + T ABP_Nr_from_PLC + T VAR_old + T VAR_Timer + + SET + R Error.Datenbank + R Error.Undef_ABP + R Error.BLKMOV + + A Durchlauf1 + R Durchlauf1 // 1.Durchlauf hat stattgefunden + JC D010 + + BEU + +// Daten löschen: +// Kennung + Datenbytes +D010: L 16#1004 // Kennung 10 + Word=04 + T LW0 + T LW10 // Any-Kennung, Datentyp + L 100 // Datenwords speichern + T LW2 + T LW12 // Wiederholungen + +// Quelle-Pointer erzeugen: (Empty-Visu) + L 159 + T LW4 // DB_Nummer + L 400 // Adresse + SLD 3 + L 16#8400_0000 // Kennung: Daten + OD + T LD6 // Kennung, Adresse + +// Ziel-Pointer erzeugen: (ABP_Visu_Daten) + L 159 + T LW14 // DB_Nummer + L 0 // Adresse + SLD 3 + L 16#8400_0000 // Kennung: Daten + OD + T LD16 // Kennung, Adresse + +CALL SYS "BLKMOV" (SRCBLK:=Quelle, RET_VAL:=RET_VAL_BLKMOV, DSTBLK:=Ziel) // Datenliste-Daten speichern + +// Ziel-Pointer erzeugen: (ABP_Visu_old-Daten) + L 159 + T LW14 // DB_Nummer + L 200 // Adresse + SLD 3 + L 16#8400_0000 // Kennung: Daten + OD + T LD16 // Kennung, Adresse + +CALL SYS "BLKMOV" (SRCBLK:=Quelle, RET_VAL:=RET_VAL_BLKMOV, DSTBLK:=Ziel) // Datenliste-Daten speichern + + L 0 + T RET_VAL_Datenbank + T RET_VAL_BLKMOV + + BEU + +X010: CAC + T ABP_Nr_aktiv + + L 0 // Anforderung von PC löschen + T ABP_Nr_from_PC // Visualisierung + +// Automatisches Deaktivieren: + L ABP_Nr_from_VAR + L VAR_old // Noch diesselbe VAR-Nr. ? + ==I // Ja ! + A Durchlauf1 + JC Y010 + +// NeuBeginn: + L 3600 // 1 Stunde + T VAR_Timer // Timer neu laden + + L ABP_Nr_from_VAR + T VAR_old // VAR-Nr. speichern + + JU En01 + +// Timer aktiv: +Y010: AN "1s-Impuls" // 1s-Impuls + JC En01 + + L VAR_Timer // Timer + + -1 // 1s von Restzeit abziehen + T VAR_Timer // Timer + + L 0 // abgelaufen ? + >I // Nein ! + JC En01 + +// Timer abgelaufen: + L 0 // Automatisch beaktivieren + T ABP_Nr_from_VAR + T VAR_old + T VAR_Timer // Timer + + JU En01 + +X011: CAC + T ABP_Nr_aktiv + + L 0 // Anforderung von VAR löschen + T ABP_Nr_from_VAR // Visualisierung + T VAR_old + T VAR_Timer + +En01: NOP 0 + + +--- NW 2: Zeiger von gewolltem ABP ermitteln --- + L ABP_Nr_aktiv + T "MW200" // Search-Daten + +CALL FC "DatenOut" (SSDB:=DL_DB, SSDW:=0, PARA:=WORD#16#0000, SEARCHDATEN:=P#M200.0, RE_VAL:="MB219", OUTDATEN:=P#M220.0, Position:="MW298") // Datenlisten-DB + + L "MB219" + T RET_VAL_Datenbank // Rückmeldung bei Datenbank-Zugriff (Vorstau-DL) + + JBI ok2 + + A "M219.0" + S Error.Datenbank + +No: SET + S Error.Undef_ABP + + L 0 + T ABP_Nr_from_PLC // Aktiv-ABP + + JU D010 + +ok2: SET + R Error.Datenbank + R Error.Undef_ABP + + L "MW222" + L 276 // HM-ABP? + ==I // Ja! + JC Ok2_Mig + + JU No + +Ok2_Mig: L "MW224" + T ABPn_DB + L "MW226" + T ABPn_DW + + +--- NW 3: Neue Datenübergabe an PC ? --- + AN Durchlauf1 // 1.Durchlauf hat stattgefunden + JC En03 + +// Ziel-Pointer erzeugen: (PLC-Daten) + L ABPn_DW + ITD + T AR1Start // Startwert mit Offset 0 + +// SK_zum_Beladeplatz-Reset: +X300: A ABP_Visu.Dyn.Sk_zum_Beladeplatz.Reset + A ABP_Visu_old.Dyn.Sk_zum_Beladeplatz.Reset + O + AN ABP_Visu.Dyn.Sk_zum_Beladeplatz.Reset + AN ABP_Visu_old.Dyn.Sk_zum_Beladeplatz.Reset + JC X301 // Keine Änderung ! + + L AR1Start // Startwert mit Offset 0 + + DINT#88 // Offset für Sk_zum_Beladeplatz-Zeug + SLD 3 + L 3 // Damit DBX_Bit 3 + OD + T AR1Zeiger // Statt Dyn.Bereichsstop (ging nur bis DB-Länge <= 8191 Bytes) + A ABP_Visu.Dyn.Sk_zum_Beladeplatz.Reset + OPN DB[ABPn_DB] // ABP-DB öffnen + = DBX [AR1Zeiger] // ABP-Sk_zum_Beladeplatz-Reset + +// SK_aus_Beladeplatz-Reset: +X301: A ABP_Visu.Dyn.Sk_aus_Beladeplatz.Reset + A ABP_Visu_old.Dyn.Sk_aus_Beladeplatz.Reset + O + AN ABP_Visu.Dyn.Sk_aus_Beladeplatz.Reset + AN ABP_Visu_old.Dyn.Sk_aus_Beladeplatz.Reset + JC X700 // Keine Änderung ! + + L AR1Start // Startwert mit Offset 0 + + DINT#114 // Offset für Sk_aus_Beladeplatz-Zeug + SLD 3 + L 4 // Damit DBX_Bit 4 + OD + T AR1Zeiger // Statt Dyn.Bereichsstop (ging nur bis DB-Länge <= 8191 Bytes) + A ABP_Visu.Dyn.Sk_aus_Beladeplatz.Reset + OPN DB[ABPn_DB] // ABP-DB öffnen + = DBX [AR1Zeiger] // ABP-Sk_aus_Beladeplatz-Reset + +X700: A ABP_Visu.Dyn.HMI.Vorstau_resetten + A ABP_Visu_old.Dyn.HMI.Vorstau_resetten + O + AN ABP_Visu.Dyn.HMI.Vorstau_resetten + AN ABP_Visu_old.Dyn.HMI.Vorstau_resetten + JC X701 // Keine Änderung ! + + L AR1Start // Startwert mit Offset 0 + + DINT#72 // Offset für Sk_aus_Beladeplatz-Zeug + SLD 3 + L 0 // Damit DBX_Bit 0 + OD + T AR1Zeiger // Statt Dyn.Bereichsstop (ging nur bis DB-Länge <= 8191 Bytes) + A ABP_Visu.Dyn.HMI.Vorstau_resetten + OPN DB[ABPn_DB] // ABP-DB öffnen + = DBX [AR1Zeiger] // ABP-Sk_aus_Beladeplatz-Reset + +X701: A ABP_Visu.Dyn.HMI.Platz_1_resetten + A ABP_Visu_old.Dyn.HMI.Platz_1_resetten + O + AN ABP_Visu.Dyn.HMI.Platz_1_resetten + AN ABP_Visu_old.Dyn.HMI.Platz_1_resetten + JC X702 // Keine Änderung ! + + L AR1Start // Startwert mit Offset 0 + + DINT#72 // Offset für Sk_aus_Beladeplatz-Zeug + SLD 3 + L 1 // Damit DBX_Bit 1 + OD + T AR1Zeiger // Statt Dyn.Bereichsstop (ging nur bis DB-Länge <= 8191 Bytes) + A ABP_Visu.Dyn.HMI.Platz_1_resetten + OPN DB[ABPn_DB] // ABP-DB öffnen + = DBX [AR1Zeiger] // Platz resetten + +X702: A ABP_Visu.Dyn.HMI.Platz_2_resetten + A ABP_Visu_old.Dyn.HMI.Platz_2_resetten + O + AN ABP_Visu.Dyn.HMI.Platz_2_resetten + AN ABP_Visu_old.Dyn.HMI.Platz_2_resetten + JC X703 // Keine Änderung ! + + L AR1Start // Startwert mit Offset 0 + + DINT#72 // Offset für Sk_aus_Beladeplatz-Zeug + SLD 3 + L 2 // Damit DBX_Bit 2 + OD + T AR1Zeiger // Statt Dyn.Bereichsstop (ging nur bis DB-Länge <= 8191 Bytes) + A ABP_Visu.Dyn.HMI.Platz_2_resetten + OPN DB[ABPn_DB] // ABP-DB öffnen + = DBX [AR1Zeiger] // Platz resetten + +X703: A ABP_Visu.Dyn.HMI.Platz_3_resetten + A ABP_Visu_old.Dyn.HMI.Platz_3_resetten + O + AN ABP_Visu.Dyn.HMI.Platz_3_resetten + AN ABP_Visu_old.Dyn.HMI.Platz_3_resetten + JC X704 // Keine Änderung ! + + L AR1Start // Startwert mit Offset 0 + + DINT#72 // Offset für Sk_aus_Beladeplatz-Zeug + SLD 3 + L 3 // Damit DBX_Bit 3 + OD + T AR1Zeiger // Statt Dyn.Bereichsstop (ging nur bis DB-Länge <= 8191 Bytes) + A ABP_Visu.Dyn.HMI.Platz_3_resetten + OPN DB[ABPn_DB] // ABP-DB öffnen + = DBX [AR1Zeiger] // Platz resetten + +X704: A ABP_Visu.Dyn.HMI."Sk_zu_Plätze_resetten" + A ABP_Visu_old.Dyn.HMI."Sk_zu_Plätze_resetten" + O + AN ABP_Visu.Dyn.HMI."Sk_zu_Plätze_resetten" + AN ABP_Visu_old.Dyn.HMI."Sk_zu_Plätze_resetten" + JC X705 // Keine Änderung ! + + L AR1Start // Startwert mit Offset 0 + + DINT#72 // Offset für Sk_aus_Beladeplatz-Zeug + SLD 3 + L 4 // Damit DBX_Bit 4 + OD + T AR1Zeiger // Statt Dyn.Bereichsstop (ging nur bis DB-Länge <= 8191 Bytes) + A ABP_Visu.Dyn.HMI."Sk_zu_Plätze_resetten" + OPN DB[ABPn_DB] // ABP-DB öffnen + = DBX [AR1Zeiger] // Platz resetten + +X705: A ABP_Visu.Dyn.HMI."Sk_aus_Plätze_resetten" + A ABP_Visu_old.Dyn.HMI."Sk_aus_Plätze_resetten" + O + AN ABP_Visu.Dyn.HMI."Sk_aus_Plätze_resetten" + AN ABP_Visu_old.Dyn.HMI."Sk_aus_Plätze_resetten" + JC X621 // Keine Änderung ! + + L AR1Start // Startwert mit Offset 0 + + DINT#72 // Offset für Sk_aus_Beladeplatz-Zeug + SLD 3 + L 5 // Damit DBX_Bit 5 + OD + T AR1Zeiger // Statt Dyn.Bereichsstop (ging nur bis DB-Länge <= 8191 Bytes) + A ABP_Visu.Dyn.HMI."Sk_aus_Plätze_resetten" + OPN DB[ABPn_DB] // ABP-DB öffnen + = DBX [AR1Zeiger] // Platz resetten + +X621: A ABP_Visu.Dyn.SS."PC>Trolley_zum_Platz_1_starten" + A ABP_Visu_old.Dyn.SS."PC>Trolley_zum_Platz_1_starten" + O + AN ABP_Visu.Dyn.SS."PC>Trolley_zum_Platz_1_starten" + AN ABP_Visu_old.Dyn.SS."PC>Trolley_zum_Platz_1_starten" + JC X622 // Keine Änderung ! + + L AR1Start // Startwert mit Offset 0 + + DINT#60 // Offset für Sk_aus_Beladeplatz-Zeug + SLD 3 + L 1 // Damit DBX_Bit 1 + OD + T AR1Zeiger // Statt Dyn.Bereichsstop (ging nur bis DB-Länge <= 8191 Bytes) + A ABP_Visu.Dyn.SS."PC>Trolley_zum_Platz_1_starten" + OPN DB[ABPn_DB] // ABP-DB öffnen + = DBX [AR1Zeiger] // Platz resetten + +X622: A ABP_Visu.Dyn.SS."PC>Trolley_zum_Platz_2_starten" + A ABP_Visu_old.Dyn.SS."PC>Trolley_zum_Platz_2_starten" + O + AN ABP_Visu.Dyn.SS."PC>Trolley_zum_Platz_2_starten" + AN ABP_Visu_old.Dyn.SS."PC>Trolley_zum_Platz_2_starten" + JC X623 // Keine Änderung ! + + L AR1Start // Startwert mit Offset 0 + + DINT#60 // Offset für Sk_aus_Beladeplatz-Zeug + SLD 3 + L 2 // Damit DBX_Bit 2 + OD + T AR1Zeiger // Statt Dyn.Bereichsstop (ging nur bis DB-Länge <= 8191 Bytes) + A ABP_Visu.Dyn.SS."PC>Trolley_zum_Platz_2_starten" + OPN DB[ABPn_DB] // ABP-DB öffnen + = DBX [AR1Zeiger] // Platz resetten + +X623: A ABP_Visu.Dyn.SS."PC>Trolley_zum_Platz_3_starten" + A ABP_Visu_old.Dyn.SS."PC>Trolley_zum_Platz_3_starten" + O + AN ABP_Visu.Dyn.SS."PC>Trolley_zum_Platz_3_starten" + AN ABP_Visu_old.Dyn.SS."PC>Trolley_zum_Platz_3_starten" + JC X627 // Keine Änderung ! + + L AR1Start // Startwert mit Offset 0 + + DINT#60 // Offset für Sk_aus_Beladeplatz-Zeug + SLD 3 + L 3 // Damit DBX_Bit 3 + OD + T AR1Zeiger // Statt Dyn.Bereichsstop (ging nur bis DB-Länge <= 8191 Bytes) + A ABP_Visu.Dyn.SS."PC>Trolley_zum_Platz_3_starten" + OPN DB[ABPn_DB] // ABP-DB öffnen + = DBX [AR1Zeiger] // Platz resetten + +X627: A ABP_Visu.Dyn.SS."PC>Trolley_an_Platz_1_freigegeben" + A ABP_Visu_old.Dyn.SS."PC>Trolley_an_Platz_1_freigegeben" + O + AN ABP_Visu.Dyn.SS."PC>Trolley_an_Platz_1_freigegeben" + AN ABP_Visu_old.Dyn.SS."PC>Trolley_an_Platz_1_freigegeben" + JC X630 // Keine Änderung ! + + L AR1Start // Startwert mit Offset 0 + + DINT#60 // Offset für Sk_aus_Beladeplatz-Zeug + SLD 3 + L 7 // Damit DBX_Bit 7 + OD + T AR1Zeiger // Statt Dyn.Bereichsstop (ging nur bis DB-Länge <= 8191 Bytes) + A ABP_Visu.Dyn.SS."PC>Trolley_an_Platz_1_freigegeben" + OPN DB[ABPn_DB] // ABP-DB öffnen + = DBX [AR1Zeiger] // Platz resetten + +X630: A ABP_Visu.Dyn.SS."PC>Trolley_an_Platz_2_freigegeben" + A ABP_Visu_old.Dyn.SS."PC>Trolley_an_Platz_2_freigegeben" + O + AN ABP_Visu.Dyn.SS."PC>Trolley_an_Platz_2_freigegeben" + AN ABP_Visu_old.Dyn.SS."PC>Trolley_an_Platz_2_freigegeben" + JC X631 // Keine Änderung ! + + L AR1Start // Startwert mit Offset 0 + + DINT#61 // Offset für Sk_aus_Beladeplatz-Zeug + SLD 3 + L 0 // Damit DBX_Bit 0 + OD + T AR1Zeiger // Statt Dyn.Bereichsstop (ging nur bis DB-Länge <= 8191 Bytes) + A ABP_Visu.Dyn.SS."PC>Trolley_an_Platz_2_freigegeben" + OPN DB[ABPn_DB] // ABP-DB öffnen + = DBX [AR1Zeiger] // Platz resetten + +X631: A ABP_Visu.Dyn.SS."PC>Trolley_an_Platz_3_freigegeben" + A ABP_Visu_old.Dyn.SS."PC>Trolley_an_Platz_3_freigegeben" + O + AN ABP_Visu.Dyn.SS."PC>Trolley_an_Platz_3_freigegeben" + AN ABP_Visu_old.Dyn.SS."PC>Trolley_an_Platz_3_freigegeben" + JC X632 // Keine Änderung ! + + L AR1Start // Startwert mit Offset 0 + + DINT#61 // Offset für Sk_aus_Beladeplatz-Zeug + SLD 3 + L 1 // Damit DBX_Bit 1 + OD + T AR1Zeiger // Statt Dyn.Bereichsstop (ging nur bis DB-Länge <= 8191 Bytes) + A ABP_Visu.Dyn.SS."PC>Trolley_an_Platz_3_freigegeben" + OPN DB[ABPn_DB] // ABP-DB öffnen + = DBX [AR1Zeiger] // Platz resetten + +// Anzahl Leertrolleys im Vorstau: +X632: L ABP_Visu.Dyn.Vorstau.Anzahl_Leertrolleys + L ABP_Visu_old.Dyn.Vorstau.Anzahl_Leertrolleys + ==I // Keine Änderung ! + JC X633 // Keine Änderung ! + + L AR1Start // Startwert mit Offset 0 + + DINT#132 // Offset für Trolleys im Vorstau + SLD 3 + T AR1Zeiger // Statt Dyn.Bereichsstop (ging nur bis DB-Länge <= 8191 Bytes) + L ABP_Visu.Dyn.Vorstau.Anzahl_Leertrolleys + OPN DB[ABPn_DB] // ABP-DB öffnen + T DBW [AR1Zeiger] // Anzahl + +// Arbeitsplatz aktivieren / deaktivieren: +X633: A ABP_Visu.Dyn.Status.Arbeitsplatz_aktiviert + A ABP_Visu_old.Dyn.Status.Arbeitsplatz_aktiviert + O + AN ABP_Visu.Dyn.Status.Arbeitsplatz_aktiviert + AN ABP_Visu_old.Dyn.Status.Arbeitsplatz_aktiviert + JC En03 + + L AR1Start // Startwert mit Offset 0 + + DINT#62 // Offset für Status + SLD 3 + L 0 // Damit DBX_Bit 0 + OD + T AR1Zeiger // Statt Dyn.Bereichsstop (ging nur bis DB-Länge <= 8191 Bytes) + A ABP_Visu.Dyn.Status.Arbeitsplatz_aktiviert + OPN DB[ABPn_DB] // ABP-DB öffnen + = DBX [AR1Zeiger] // ABP aktivieren / deaktivieren + +En03: NOP 0 + + +--- NW 4: Datenübernahme vom PC --- +// Kennung + Datenbytes + L 16#1004 // Kennung 10 + Word=04 + T LW0 + T LW10 // Any-Kennung, Datentyp + L 100 // Datenwords speichern + T LW2 + T LW12 // Wiederholungen + +// Quelle-Pointer erzeugen: (PLC-Daten) + L ABPn_DB + T LW4 // DB_Nummer + L ABPn_DW // Adresse + SLD 3 + L 16#8400_0000 // Kennung: Daten + OD + T LD6 // Kennung, Adresse + +// Ziel-Pointer erzeugen: (PC-ABP-Visu-Daten) + L 159 + T LW14 // DB_Nummer + L 0 // Adresse + SLD 3 + L 16#8400_0000 // Kennung: Daten + OD + T LD16 // Kennung, Adresse + +CALL SYS "BLKMOV" (SRCBLK:=Quelle, RET_VAL:=RET_VAL_BLKMOV, DSTBLK:=Ziel) // Datenliste-Daten speichern + + L RET_VAL_BLKMOV // Rückmeldung + L 0 // Fehler vorhanden ? + <>I // Ja ! + = Error.BLKMOV // Error bei Block kopieren + BEC + +// Ziel-Pointer erzeugen: (ABP_Visu_old-Daten) + L 159 + T LW14 // DB_Nummer + L 200 // Adresse + SLD 3 + L 16#8400_0000 // Kennung: Daten + OD + T LD16 // Kennung, Adresse + +CALL SYS "BLKMOV" (SRCBLK:=Quelle, RET_VAL:=RET_VAL_BLKMOV, DSTBLK:=Ziel) // Datenliste-Daten speichern + + L RET_VAL_BLKMOV // Rückmeldung + L 0 // Fehler vorhanden ? + <>I // Ja ! + = Error.BLKMOV // Error bei Block kopieren + BEC + + L ABP_Nr_aktiv + T ABP_Nr_from_PLC // Rückmeldung an PC (Daten stehen an) + + SET + S Durchlauf1 // 1.Durchlauf hat stattgefunden + + +--- NW 5: Ende --- + BE + diff --git a/=A01+UH06-KF00/Programmbausteine/_All/6_HMI_Err_UH06_AMR.awl b/=A01+UH06-KF00/Programmbausteine/_All/6_HMI_Err_UH06_AMR.awl new file mode 100644 index 0000000..fe3c7dc --- /dev/null +++ b/=A01+UH06-KF00/Programmbausteine/_All/6_HMI_Err_UH06_AMR.awl @@ -0,0 +1,1969 @@ +=== GlobalDB 608: 6_HMI_Err_UH06_AMR [DB] === +INTERFACE: + Static: + System : Struct + Bus_Anlauf : Bool // AMR (UH06): Profibus-Anlauf (warten mit Programm) + Anlage_aus : Bool // AMR (UH06):(UH06): Anlage ist ausgeschaltet + Gesamt_Feueralarm : Bool // AMR (UH06): Hauptmeldung Feueralarm + BST3_Feueralarm : Bool // AMR (UH06): BST3 Feueralarm + BST3_Störung : Bool // AMR (UH06): BST3 Störung + BST3_Geschlossen : Bool // AMR (UH06): BST3 Geschlossen + BST4_Feueralarm : Bool // AMR (UH06): BST4 Feueralarm + BST4_Störung : Bool // AMR (UH06): BST4 Störung + BST4_Geschlossen : Bool // AMR (UH06): BST4 Geschlossen + Aufzug_Vorrang : Bool // AMR (UH06): Aufzug hat Vorrang + Kommunikation : Struct + SendFIFO_Port1 : Bool // AMR (UH06/Port1): Send-FIFO ist voll, Anlage gestoppt + SendFIFO_Port2 : Bool // AMR (UH06/Port2): Send-FIFO ist voll, Anlage gestoppt + Frei02 : Bool + Frei03 : Bool + Frei04 : Bool + Frei05 : Bool + Frei06 : Bool + Frei07 : Bool + Frei10 : Bool + Frei11 : Bool + Frei12 : Bool + Frei13 : Bool + Frei14 : Bool + Frei15 : Bool + Frei16 : Bool + Frei17 : Bool + Not : Struct + ausgeloest_UH06 : Bool // AMR (UH06): Not-Aus im UH06 hat ausgelöst + ausgeloest_UH06_Halle4 : Bool // AMR (UH06): Not-Aus im UH06/Halle 4 hat ausgelöst + ausgeloest_UC061 : Bool // AMR (UH06): Not-Aus im UC061 hat ausgelöst + UH06 : Bool // AMR (UH06): Not-Aus am Schaltschrank UH06 betätigt + UC061 : Bool // AMR (UH06): Not-Aus am Schaltschrank UC061 betätigt + UZ0601 : Bool // AMR (UH06): Not-Aus am MPS1 betätigt (UZ601) + UZ0602 : Bool // AMR (UH06): Not-Aus am MPS2 betätigt (UZ602) + UZ0603 : Bool // AMR (UH06): Not-Aus am MPS3 betätigt (UZ603) + UZ0611 : Bool // AMR (UH06): Not-Aus am PS1 betätigt (UZ611) + UZ0612 : Bool // AMR (UH06): Not-Aus am PS2 betätigt (UZ612) + UZ0613 : Bool // AMR (UH06): Not-Aus am PS3 betätigt (UZ613) + UZ0614 : Bool // AMR (UH06): Not-Aus am PS4 betätigt (UZ614) + UZ0615 : Bool // AMR (UH06): Not-Aus am PS5 betätigt (UZ615) + UZ0620 : Bool // AMR (UH06): Highway (vor AMR-Bereich/BST4) (UZ620) + UZ0621 : Bool // AMR (UH06): Zuführung AMRs (MPS2) (UZ621) + UZ0622 : Bool // AMR (UH06): Zuführung AMRs (PS4/5) (UZ622) + Ausgebaut : Bool + UZ6102 : Bool // AMR (UH06): Not-Aus am Highway betätigt (UZ6102) + UZ6103 : Bool // AMR (UH06): Not-Aus am Highway betätigt (UZ6103) + UZ6104 : Bool // AMR (UH06): Not-Aus am Highway Nähe OB betätigt (UZ6104) + von_UH04 : Bool // AMR (UH06): Not-Aus von ILS/UH04 gemeldet + von_UC011 : Bool // AMR (UH06): Not-Aus vom ILS/UC011 gemeldet + von_UC072 : Bool // AMR (UH06): Not-Aus von UH07 gemeldet + Frei67 : Bool + Frei70 : Bool + Frei71 : Bool + Frei72 : Bool + Frei73 : Bool + Frei74 : Bool + Frei75 : Bool + Frei76 : Bool + Frei77 : Bool + Halt : Struct + Ausgebaut : Bool + UZ6102 : Bool // AMR (UH06): Bereichshalt UZ6102 betätigt + UZ6103 : Bool // AMR (UH06): Bereichshalt UZ6103 betätigt + UZ6104 : Bool // AMR (UH06): Bereichshalt UZ6141 betätigt + Frei04 : Bool + Frei05 : Bool + Frei06 : Bool + Frei07 : Bool + Frei10 : Bool + Frei11 : Bool + Frei12 : Bool + Frei13 : Bool + Frei14 : Bool + Frei15 : Bool + Frei16 : Bool + Frei17 : Bool + Schutz : Struct + Hauptschütz UH06 : Bool // AMR (UH06): Hauptschütz nicht aktiv + Hauptschütz UC061 : Bool // AMR (UC061): Hauptschütz nicht aktiv + Frei02 : Bool + Frei03 : Bool + Frei04 : Bool + Frei05 : Bool + Frei06 : Bool + Frei07 : Bool + Frei10 : Bool + Frei11 : Bool + Frei12 : Bool + Frei13 : Bool + Frei14 : Bool + Frei15 : Bool + Frei16 : Bool + Frei17 : Bool + VErr : Struct + Phasen : Bool // AMR (UH06): Phasen-Ausfall UH06 + FC0006 : Bool // AMR (UH06): Vorsicherung UC061 400V Motoren + Frei122 : Bool + FC0021 : Bool // AMR (UH06): Vorsicherung 24V + FC0022 : Bool // AMR (UH06): Vorsicherung 24V + FC0023 : Bool // AMR (UH06): Vorsicherung 24V + FC0024 : Bool // AMR (UH06): Vorsicherung 24V + FC0025 : Bool // AMR (UH06): Vorsicherung 24V + Frei130 : Bool + FC0160 : Bool // AMR (UC061): Vorsicherung 400V Motoren + FC0161 : Bool // AMR (UC061): Vorsicherung 24V + FC0162 : Bool // AMR (UC061): Vorsicherung 24V + Frei14 : Bool + Frei15 : Bool + Pn_UH06 : Bool // AMR (UH06): Pneumatik + Pn_UC061 : Bool // AMR (UC061): Pneumatik + QErr : Struct + MA0060 : Bool // AMR (UH06): Motorschutz MA0060 hat ausgelöst + MA0061 : Bool // AMR (UH06): Motorschutz MA0061 hat ausgelöst + MA0062 : Bool // AMR (UH06): Motorschutz MA0062 hat ausgelöst + MA0063 : Bool // AMR (UH06): Motorschutz MA0063 hat ausgelöst + MA0064 : Bool // AMR (UH06): Motorschutz MA0064 hat ausgelöst + MA0065 : Bool // AMR (UH06): Motorschutz MA0065 hat ausgelöst + MA0066 : Bool // AMR (UH06): Motorschutz MA0066 hat ausgelöst + MA0067 : Bool // AMR (UH06): Motorschutz MA0067 hat ausgelöst + MA0070 : Bool // AMR (UH06): Motorschutz MA0070 hat ausgelöst + MA0071 : Bool // AMR (UH06): Motorschutz MA0071 hat ausgelöst + MA0072 : Bool // AMR (UH06): Motorschutz MA0072 hat ausgelöst + MA0073 : Bool // AMR (UH06): Motorschutz MA0073 hat ausgelöst + MA0074 : Bool // AMR (UH06): Motorschutz MA0074 hat ausgelöst + MA0075 : Bool // AMR (UH06): Motorschutz MA0075 hat ausgelöst + MA0076 : Bool // AMR (UH06): Motorschutz MA0076 hat ausgelöst + MA0077 : Bool // AMR (UH06): Motorschutz MA0077 hat ausgelöst + MA0080 : Bool // AMR (UH06): Motorschutz MA0080 hat ausgelöst + MA0081 : Bool // AMR (UH06): Motorschutz MA0081 hat ausgelöst + MA0082 : Bool // AMR (UH06): Motorschutz MA0082 hat ausgelöst + MA0083 : Bool // AMR (UH06): Motorschutz MA0083 hat ausgelöst + MA0084 : Bool // AMR (UH06): Motorschutz MA0084 hat ausgelöst + MA0085 : Bool // AMR (UH06): Motorschutz MA0085 hat ausgelöst + MA0086 : Bool // AMR (UH06): Motorschutz MA0086 hat ausgelöst + MA0087 : Bool // AMR (UH06): Motorschutz MA0087 hat ausgelöst + MA0090 : Bool // AMR (UH06): Motorschutz MA0090 hat ausgelöst + MA0091 : Bool // AMR (UH06): Motorschutz MA0091 hat ausgelöst + MA0092 : Bool // AMR (UH06): Motorschutz MA0092 hat ausgelöst + MA0093 : Bool // AMR (UH06): Motorschutz MA0093 hat ausgelöst + MA0094 : Bool // AMR (UH06): Motorschutz MA0094 hat ausgelöst + MA0095 : Bool // AMR (UH06): Motorschutz MA0095 hat ausgelöst + MA0096 : Bool // AMR (UH06): Motorschutz MA0096 hat ausgelöst + MA0097 : Bool // AMR (UH06): Motorschutz MA0097 hat ausgelöst + MA0100 : Bool // AMR (UH06): Motorschutz MA0100 hat ausgelöst + MA0101 : Bool // AMR (UH06): Motorschutz MA0101 hat ausgelöst + MA0102 : Bool // AMR (UH06): Motorschutz MA0102 hat ausgelöst + MA0103 : Bool // AMR (UH06): Motorschutz MA0103 hat ausgelöst + MA0104 : Bool // AMR (UH06): Motorschutz MA0104 hat ausgelöst + MA0105 : Bool // AMR (UH06): Motorschutz MA0105 hat ausgelöst + MA0106 : Bool // AMR (UH06): Motorschutz MA0106 hat ausgelöst + MA0107 : Bool // AMR (UH06): Motorschutz MA0107 hat ausgelöst + MA0110 : Bool // AMR (UH06): Motorschutz MA0110 hat ausgelöst + MA0111 : Bool // AMR (UH06): Motorschutz MA0111 hat ausgelöst + MA0112 : Bool // AMR (UH06): Motorschutz MA0112 hat ausgelöst + MA0113 : Bool // AMR (UH06): Motorschutz MA0113 hat ausgelöst + MA0114 : Bool // AMR (UH06): Motorschutz MA0114 hat ausgelöst + MA0115 : Bool // AMR (UH06): Motorschutz MA0115 hat ausgelöst + MA0116 : Bool // AMR (UH06): Motorschutz MA0116 hat ausgelöst + MA0117 : Bool // AMR (UH06): Motorschutz MA0117 hat ausgelöst + MA0130 : Bool // AMR (UH06): Motorschutz MA0130 hat ausgelöst + MA0131 : Bool // AMR (UH06): Motorschutz MA0130 hat ausgelöst + Frei132 : Bool + Frei133 : Bool + Frei134 : Bool + Frei135 : Bool + Frei136 : Bool + Frei137 : Bool + MA0200 : Bool // AMR (UC061): Motorschutz MA0200 hat ausgelöst + MA0201 : Bool // AMR (UC061): Motorschutz MA0201 hat ausgelöst + MA0202 : Bool // AMR (UC061): Motorschutz MA0202 hat ausgelöst + MA0203 : Bool // AMR (UC061): Motorschutz MA0203 hat ausgelöst + MA0204 : Bool // AMR (UC061): Motorschutz MA0204 hat ausgelöst + MA0205 : Bool // AMR (UC061): Motorschutz MA0205 hat ausgelöst + Frei206 : Bool + Frei207 : Bool + FuErr : Struct + Frei00 : Bool + Frei01 : Bool + Frei02 : Bool + Frei03 : Bool + Frei04 : Bool + Frei05 : Bool + Frei06 : Bool + Frei07 : Bool + Frei10 : Bool + Frei11 : Bool + Frei12 : Bool + Frei13 : Bool + Frei14 : Bool + Frei15 : Bool + Frei16 : Bool + Frei17 : Bool + Logistik : Struct + DB276_Err : Bool // AMR (UH06): Softwarefehler Aufruf DB276 + Frei01 : Bool + Frei02 : Bool + Frei03 : Bool + Frei04 : Bool + Frei05 : Bool + Frei06 : Bool + Frei07 : Bool + Frei10 : Bool + Frei11 : Bool + Frei12 : Bool + Frei13 : Bool + Frei14 : Bool + Frei15 : Bool + Frei16 : Bool + Frei17 : Bool + Frei100 : Array[1..37] of Word + PS1 : Struct // AMR (UH06)/Pickstation 1: + ABP_DL : Bool // Pickstation 1: Arbeitsplatz-Datenliste fehlerhaft + Undef_AMR : Bool // Pickstation 1: undefinierter Arbeitsplatz + Err_BLKMov : Bool // Pickstation 1: Error bei Block kopieren + Err_Uebzeit_SK_Rein : Bool // Pickstation 1: Überwachungzeit ist abgelaufen + Err_Schritt_Sk_Rein : Bool // Pickstation 1: Schritt-Nummer ist nicht definiert + Err_Uebzeit_SK_Raus : Bool // Pickstation 1: Überwachungzeit ist abgelaufen + Err_Schritt_Sk_Raus : Bool // Pickstation 1: Schritt-Nummer ist nicht definiert + Err_Platz_1 : Bool // Pickstation 1: Arbeitsplatz 1 unklar + Err_Platz_2 : Bool // Pickstation 1: Arbeitsplatz 2 unklar + Err_Platz_3 : Bool // Pickstation 1: Arbeitsplatz 3 unklar + Reset_Einfahren_akt : Bool // Pickstation 1: Reset zum Arbeitsplatz ist aktiv + Reset_Platz_1_akt : Bool // Pickstation 1: Reset Arbeitsplatz 1 ist aktiv + Reset_Platz_2_akt : Bool // Pickstation 1: Reset Arbeitsplatz 2 ist aktiv + Reset_Platz_3_akt : Bool // Pickstation 1: Reset Arbeitsplatz 3 ist aktiv + Reset_Ausfahren_akt : Bool // Pickstation 1: Reset aus Arbeitsplatz ist aktiv + Frei16 : Bool // Pickstation 1: Frei16 + PS2 : Struct // AMR (UH06)/Pickstation 2: + ABP_DL : Bool // Pickstation 2: Arbeitsplatz-Datenliste fehlerhaft + Undef_AMR : Bool // Pickstation 2: undefinierter Arbeitsplatz + Err_BLKMov : Bool // Pickstation 2: Error bei Block kopieren + Err_Uebzeit_SK_Rein : Bool // Pickstation 2: Überwachungzeit ist abgelaufen + Err_Schritt_Sk_Rein : Bool // Pickstation 2: Schritt-Nummer ist nicht definiert + Err_Uebzeit_SK_Raus : Bool // Pickstation 2: Überwachungzeit ist abgelaufen + Err_Schritt_Sk_Raus : Bool // Pickstation 2: Schritt-Nummer ist nicht definiert + Err_Platz_1 : Bool // Pickstation 2: Arbeitsplatz 1 unklar + Err_Platz_2 : Bool // Pickstation 2: Arbeitsplatz 2 unklar + Err_Platz_3 : Bool // Pickstation 2: Arbeitsplatz 3 unklar + Reset_Einfahren_akt : Bool // Pickstation 2: Reset zum Arbeitsplatz ist aktiv + Reset_Platz_1_akt : Bool // Pickstation 2: Reset Arbeitsplatz 1 ist aktiv + Reset_Platz_2_akt : Bool // Pickstation 2: Reset Arbeitsplatz 2 ist aktiv + Reset_Platz_3_akt : Bool // Pickstation 2: Reset Arbeitsplatz 3 ist aktiv + Reset_Ausfahren_akt : Bool // Pickstation 2: Reset aus Arbeitsplatz ist aktiv + Frei16 : Bool // Pickstation 2: Frei16 + PS3 : Struct // AMR (UH06)/Pickstation 3: + ABP_DL : Bool // Pickstation 3: Arbeitsplatz-Datenliste fehlerhaft + Undef_AMR : Bool // Pickstation 3: undefinierter Arbeitsplatz + Err_BLKMov : Bool // Pickstation 3: Error bei Block kopieren + Err_Uebzeit_SK_Rein : Bool // Pickstation 3: Überwachungzeit ist abgelaufen + Err_Schritt_Sk_Rein : Bool // Pickstation 3: Schritt-Nummer ist nicht definiert + Err_Uebzeit_SK_Raus : Bool // Pickstation 3: Überwachungzeit ist abgelaufen + Err_Schritt_Sk_Raus : Bool // Pickstation 3: Schritt-Nummer ist nicht definiert + Err_Platz_1 : Bool // Pickstation 3: Arbeitsplatz 1 unklar + Err_Platz_2 : Bool // Pickstation 3: Arbeitsplatz 2 unklar + Err_Platz_3 : Bool // Pickstation 3: Arbeitsplatz 3 unklar + Reset_Einfahren_akt : Bool // Pickstation 3: Reset zum Arbeitsplatz ist aktiv + Reset_Platz_1_akt : Bool // Pickstation 3: Reset Arbeitsplatz 1 ist aktiv + Reset_Platz_2_akt : Bool // Pickstation 3: Reset Arbeitsplatz 2 ist aktiv + Reset_Platz_3_akt : Bool // Pickstation 3: Reset Arbeitsplatz 3 ist aktiv + Reset_Ausfahren_akt : Bool // Pickstation 3: Reset aus Arbeitsplatz ist aktiv + Frei16 : Bool // Pickstation 3: Frei16 + PS4 : Struct // AMR (UH06)/Pickstation 4: + ABP_DL : Bool // Pickstation 4: Arbeitsplatz-Datenliste fehlerhaft + Undef_AMR : Bool // Pickstation 4: undefinierter Arbeitsplatz + Err_BLKMov : Bool // Pickstation 4: Error bei Block kopieren + Err_Uebzeit_SK_Rein : Bool // Pickstation 4: Überwachungzeit ist abgelaufen + Err_Schritt_Sk_Rein : Bool // Pickstation 4: Schritt-Nummer ist nicht definiert + Err_Uebzeit_SK_Raus : Bool // Pickstation 4: Überwachungzeit ist abgelaufen + Err_Schritt_Sk_Raus : Bool // Pickstation 4: Schritt-Nummer ist nicht definiert + Err_Platz_1 : Bool // Pickstation 4: Arbeitsplatz 1 unklar + Err_Platz_2 : Bool // Pickstation 4: Arbeitsplatz 2 unklar + Err_Platz_3 : Bool // Pickstation 4: Arbeitsplatz 3 unklar + Reset_Einfahren_akt : Bool // Pickstation 4: Reset zum Arbeitsplatz ist aktiv + Reset_Platz_1_akt : Bool // Pickstation 4: Reset Arbeitsplatz 1 ist aktiv + Reset_Platz_2_akt : Bool // Pickstation 4: Reset Arbeitsplatz 2 ist aktiv + Reset_Platz_3_akt : Bool // Pickstation 4: Reset Arbeitsplatz 3 ist aktiv + Reset_Ausfahren_akt : Bool // Pickstation 4: Reset aus Arbeitsplatz ist aktiv + Frei16 : Bool // Pickstation 4: Frei16 + PS5 : Struct // AMR (UH06)/Pickstation 5: + ABP_DL : Bool // Pickstation 5: Arbeitsplatz-Datenliste fehlerhaft + Undef_AMR : Bool // Pickstation 5: undefinierter Arbeitsplatz + Err_BLKMov : Bool // Pickstation 5: Error bei Block kopieren + Err_Uebzeit_SK_Rein : Bool // Pickstation 5: Überwachungzeit ist abgelaufen + Err_Schritt_Sk_Rein : Bool // Pickstation 5: Schritt-Nummer ist nicht definiert + Err_Uebzeit_SK_Raus : Bool // Pickstation 5: Überwachungzeit ist abgelaufen + Err_Schritt_Sk_Raus : Bool // Pickstation 5: Schritt-Nummer ist nicht definiert + Err_Platz_1 : Bool // Pickstation 5: Arbeitsplatz 1 unklar + Err_Platz_2 : Bool // Pickstation 5: Arbeitsplatz 2 unklar + Err_Platz_3 : Bool // Pickstation 5: Arbeitsplatz 3 unklar + Reset_Einfahren_akt : Bool // Pickstation 5: Reset zum Arbeitsplatz ist aktiv + Reset_Platz_1_akt : Bool // Pickstation 5: Reset Arbeitsplatz 1 ist aktiv + Reset_Platz_2_akt : Bool // Pickstation 5: Reset Arbeitsplatz 2 ist aktiv + Reset_Platz_3_akt : Bool // Pickstation 5: Reset Arbeitsplatz 3 ist aktiv + Reset_Ausfahren_akt : Bool // Pickstation 5: Reset aus Arbeitsplatz ist aktiv + Frei16 : Bool // Pickstation 5: Frei16 + MPS1 : Struct // AMR (UH06)/Multipurposestation 1: + ABP_DL : Bool // Multipurposestation 1: Arbeitsplatz-Datenliste fehlerhaft + Undef_AMR : Bool // Multipurposestation 1: undefinierter Arbeitsplatz + Err_BLKMov : Bool // Multipurposestation 1: Error bei Block kopieren + Err_Uebzeit_SK_Rein : Bool // Multipurposestation 1: Überwachungzeit ist abgelaufen + Err_Schritt_Sk_Rein : Bool // Multipurposestation 1: Schritt-Nummer ist nicht definiert + Err_Uebzeit_SK_Raus : Bool // Multipurposestation 1: Überwachungzeit ist abgelaufen + Err_Schritt_Sk_Raus : Bool // Multipurposestation 1: Schritt-Nummer ist nicht definiert + Err_Platz_1 : Bool // Multipurposestation 1: Arbeitsplatz 1 unklar + Err_Platz_2 : Bool // Multipurposestation 1: Arbeitsplatz 2 unklar + Err_Platz_3 : Bool // Multipurposestation 1: Arbeitsplatz 3 unklar + Reset_Einfahren_akt : Bool // Multipurposestation 1: Reset zum Arbeitsplatz ist aktiv + Reset_Platz_1_akt : Bool // Multipurposestation 1: Reset Arbeitsplatz 1 ist aktiv + Reset_Platz_2_akt : Bool // Multipurposestation 1: Reset Arbeitsplatz 2 ist aktiv + Reset_Platz_3_akt : Bool // Multipurposestation 1: Reset Arbeitsplatz 3 ist aktiv + Reset_Ausfahren_akt : Bool // Multipurposestation 1: Reset aus Arbeitsplatz ist aktiv + Frei16 : Bool // Multipurposestation 1: Frei16 + MPS2 : Struct // AMR (UH06)/Multipurposestation 2: + ABP_DL : Bool // Multipurposestation 2: Arbeitsplatz-Datenliste fehlerhaft + Undef_AMR : Bool // Multipurposestation 2: undefinierter Arbeitsplatz + Err_BLKMov : Bool // Multipurposestation 2: Error bei Block kopieren + Err_Uebzeit_SK_Rein : Bool // Multipurposestation 2: Überwachungzeit ist abgelaufen + Err_Schritt_Sk_Rein : Bool // Multipurposestation 2: Schritt-Nummer ist nicht definiert + Err_Uebzeit_SK_Raus : Bool // Multipurposestation 2: Überwachungzeit ist abgelaufen + Err_Schritt_Sk_Raus : Bool // Multipurposestation 2: Schritt-Nummer ist nicht definiert + Err_Platz_1 : Bool // Multipurposestation 2: Arbeitsplatz 1 unklar + Err_Platz_2 : Bool // Multipurposestation 2: Arbeitsplatz 2 unklar + Err_Platz_3 : Bool // Multipurposestation 2: Arbeitsplatz 3 unklar + Reset_Einfahren_akt : Bool // Multipurposestation 2: Reset zum Arbeitsplatz ist aktiv + Reset_Platz_1_akt : Bool // Multipurposestation 2: Reset Arbeitsplatz 1 ist aktiv + Reset_Platz_2_akt : Bool // Multipurposestation 2: Reset Arbeitsplatz 2 ist aktiv + Reset_Platz_3_akt : Bool // Multipurposestation 2: Reset Arbeitsplatz 3 ist aktiv + Reset_Ausfahren_akt : Bool // Multipurposestation 2: Reset aus Arbeitsplatz ist aktiv + Frei16 : Bool // Multipurposestation 2: Frei16 + MPS3 : Struct // AMR (UH06)/Multipurposestation 3: + ABP_DL : Bool // Multipurposestation 3: Arbeitsplatz-Datenliste fehlerhaft + Undef_AMR : Bool // Multipurposestation 3: undefinierter Arbeitsplatz + Err_BLKMov : Bool // Multipurposestation 3: Error bei Block kopieren + Err_Uebzeit_SK_Rein : Bool // Multipurposestation 3: Überwachungzeit ist abgelaufen + Err_Schritt_Sk_Rein : Bool // Multipurposestation 3: Schritt-Nummer ist nicht definiert + Err_Uebzeit_SK_Raus : Bool // Multipurposestation 3: Überwachungzeit ist abgelaufen + Err_Schritt_Sk_Raus : Bool // Multipurposestation 3: Schritt-Nummer ist nicht definiert + Err_Platz_1 : Bool // Multipurposestation 3: Arbeitsplatz 1 unklar + Err_Platz_2 : Bool // Multipurposestation 3: Arbeitsplatz 2 unklar + Err_Platz_3 : Bool // Multipurposestation 3: Arbeitsplatz 3 unklar + Reset_Einfahren_akt : Bool // Multipurposestation 3: Reset zum Arbeitsplatz ist aktiv + Reset_Platz_1_akt : Bool // Multipurposestation 3: Reset Arbeitsplatz 1 ist aktiv + Reset_Platz_2_akt : Bool // Multipurposestation 3: Reset Arbeitsplatz 2 ist aktiv + Reset_Platz_3_akt : Bool // Multipurposestation 3: Reset Arbeitsplatz 3 ist aktiv + Reset_Ausfahren_akt : Bool // Multipurposestation 3: Reset aus Arbeitsplatz ist aktiv + Frei16 : Bool // Multipurposestation 3: Frei16 + Frei150 : Array[1..17] of Word + Reserve150 : Struct // AMR (UH06): Reserve150 + Schleuse_DL : Bool // Highway zu AMR : Schleuse-Datenliste fehlerhaft + Undef_Schleuse : Bool // Highway zu AMR : undefinierter Schleuse + Err_Trolley_nicht_in_Schleuse : Bool // Highway zu AMR : Trolley fährt nicht in Schleuse + Err_Uebzeit : Bool // Highway zu AMR : Überwachungzeit ist abgelaufen + Err_Schritt : Bool // Highway zu AMR : Schritt-Nummer ist nicht definiert + Err_Stau_Einfahrt : Bool // Highway zu AMR : Stau bei Bereich-Einfahrt + Err_BLKMov : Bool // Highway zu AMR : Error bei Block kopieren + Err_Trolley_raus : Bool // Highway zu AMR : Trolley fährt nicht aus Schleuse + Err_Raus_Sensor : Bool // Highway zu AMR : Raus-Sensor wird nicht erreicht (oder dauernd aktiv)! + Err_Ziel : Bool // Highway zu AMR : Trolley-Ziel nicht bekannt + Err_Weichen_DL : Bool // Highway zu AMR : Weichen-Datenliste fehlerhaft + Err_Undef_Weiche : Bool // Highway zu AMR : undefinierte Weiche + Err_Weiche_belegt : Bool // Highway zu AMR : Weiche bleibt belegt + Err_Kein_LeseErgebnis : Bool // Highway zu AMR : Kein Ergebnis von LeseEinheit + Err_Leser_nicht_bereit : Bool // Highway zu AMR : Leser nicht betriebsbereit + Barcode_nicht_bekannt : Bool // Highway zu AMR : Barcode nicht in Datenbank vorhanden + Reserve152 : Struct // AMR (UH06): Reserve152 + Schleuse_DL : Bool // Highway zu AMR : Schleuse-Datenliste fehlerhaft + Undef_Schleuse : Bool // Highway zu AMR : undefinierter Schleuse + Err_Trolley_nicht_in_Schleuse : Bool // Highway zu AMR : Trolley fährt nicht in Schleuse + Err_Uebzeit : Bool // Highway zu AMR : Überwachungzeit ist abgelaufen + Err_Schritt : Bool // Highway zu AMR : Schritt-Nummer ist nicht definiert + Err_Stau_Einfahrt : Bool // Highway zu AMR : Stau bei Bereich-Einfahrt + Err_BLKMov : Bool // Highway zu AMR : Error bei Block kopieren + Err_Trolley_raus : Bool // Highway zu AMR : Trolley fährt nicht aus Schleuse + Err_Raus_Sensor : Bool // Highway zu AMR : Raus-Sensor wird nicht erreicht (oder dauernd aktiv)! + Err_Ziel : Bool // Highway zu AMR : Trolley-Ziel nicht bekannt + Err_Weichen_DL : Bool // Highway zu AMR : Weichen-Datenliste fehlerhaft + Err_Undef_Weiche : Bool // Highway zu AMR : undefinierte Weiche + Err_Weiche_belegt : Bool // Highway zu AMR : Weiche bleibt belegt + Err_Kein_LeseErgebnis : Bool // Highway zu AMR : Kein Ergebnis von LeseEinheit + Err_Leser_nicht_bereit : Bool // Highway zu AMR : Leser nicht betriebsbereit + Barcode_nicht_bekannt : Bool // Highway zu AMR : Barcode nicht in Datenbank vorhanden + Bereich_ MA0117 : Struct // AMR (UH06): Bereich MA0117/BG3016 (Turm zu Outbound) + Schleuse_DL : Bool // Highway zu AMR : Schleuse-Datenliste fehlerhaft + Undef_Schleuse : Bool // Highway zu AMR : undefinierter Schleuse + Err_Trolley_nicht_in_Schleuse : Bool // Highway zu AMR : Trolley fährt nicht in Schleuse + Err_Uebzeit : Bool // Highway zu AMR : Überwachungzeit ist abgelaufen + Err_Schritt : Bool // Highway zu AMR : Schritt-Nummer ist nicht definiert + Err_Stau_Einfahrt : Bool // Highway zu AMR : Stau bei Bereich-Einfahrt + Err_BLKMov : Bool // Highway zu AMR : Error bei Block kopieren + Err_Trolley_raus : Bool // Highway zu AMR : Trolley fährt nicht aus Schleuse + Err_Raus_Sensor : Bool // Highway zu AMR : Raus-Sensor wird nicht erreicht (oder dauernd aktiv)! + Err_Ziel : Bool // Highway zu AMR : Trolley-Ziel nicht bekannt + Err_Weichen_DL : Bool // Highway zu AMR : Weichen-Datenliste fehlerhaft + Err_Undef_Weiche : Bool // Highway zu AMR : undefinierte Weiche + Err_Weiche_belegt : Bool // Highway zu AMR : Weiche bleibt belegt + Err_Kein_LeseErgebnis : Bool // Highway zu AMR : Kein Ergebnis von LeseEinheit + Err_Leser_nicht_bereit : Bool // Highway zu AMR : Leser nicht betriebsbereit + Barcode_nicht_bekannt : Bool // Highway zu AMR : Barcode nicht in Datenbank vorhanden + Übergang_BG3063 : Struct // AMR (UH06): Übergang BG3063 (Highway zu AMR) + Schleuse_DL : Bool // Highway zu AMR : Schleuse-Datenliste fehlerhaft + Undef_Schleuse : Bool // Highway zu AMR : undefinierter Schleuse + Err_Trolley_nicht_in_Schleuse : Bool // Highway zu AMR : Trolley fährt nicht in Schleuse + Err_Uebzeit : Bool // Highway zu AMR : Überwachungzeit ist abgelaufen + Err_Schritt : Bool // Highway zu AMR : Schritt-Nummer ist nicht definiert + Err_Stau_Einfahrt : Bool // Highway zu AMR : Stau bei Bereich-Einfahrt + Err_BLKMov : Bool // Highway zu AMR : Error bei Block kopieren + Err_Trolley_raus : Bool // Highway zu AMR : Trolley fährt nicht aus Schleuse + Err_Raus_Sensor : Bool // Highway zu AMR : Raus-Sensor wird nicht erreicht (oder dauernd aktiv)! + Err_Ziel : Bool // Highway zu AMR : Trolley-Ziel nicht bekannt + Err_Weichen_DL : Bool // Highway zu AMR : Weichen-Datenliste fehlerhaft + Err_Undef_Weiche : Bool // Highway zu AMR : undefinierte Weiche + Err_Weiche_belegt : Bool // Highway zu AMR : Weiche bleibt belegt + Err_Kein_LeseErgebnis : Bool // Highway zu AMR : Kein Ergebnis von LeseEinheit + Err_Leser_nicht_bereit : Bool // Highway zu AMR : Leser nicht betriebsbereit + Barcode_nicht_bekannt : Bool // Highway zu AMR : Barcode nicht in Datenbank vorhanden + Übergang_BG3240 : Struct // AMR (UH06): Übergang BG3240 (Zuführung zu AMR) + Schleuse_DL : Bool // Highway zu AMR : Schleuse-Datenliste fehlerhaft + Undef_Schleuse : Bool // Highway zu AMR : undefinierter Schleuse + Err_Trolley_nicht_in_Schleuse : Bool // Highway zu AMR : Trolley fährt nicht in Schleuse + Err_Uebzeit : Bool // Highway zu AMR : Überwachungzeit ist abgelaufen + Err_Schritt : Bool // Highway zu AMR : Schritt-Nummer ist nicht definiert + Err_Stau_Einfahrt : Bool // Highway zu AMR : Stau bei Bereich-Einfahrt + Err_BLKMov : Bool // Highway zu AMR : Error bei Block kopieren + Err_Trolley_raus : Bool // Highway zu AMR : Trolley fährt nicht aus Schleuse + Err_Raus_Sensor : Bool // Highway zu AMR : Raus-Sensor wird nicht erreicht (oder dauernd aktiv)! + Err_Ziel : Bool // Highway zu AMR : Trolley-Ziel nicht bekannt + Err_Weichen_DL : Bool // Highway zu AMR : Weichen-Datenliste fehlerhaft + Err_Undef_Weiche : Bool // Highway zu AMR : undefinierte Weiche + Err_Weiche_belegt : Bool // Highway zu AMR : Weiche bleibt belegt + Err_Kein_LeseErgebnis : Bool // Highway zu AMR : Kein Ergebnis von LeseEinheit + Err_Leser_nicht_bereit : Bool // Highway zu AMR : Leser nicht betriebsbereit + Barcode_nicht_bekannt : Bool // Highway zu AMR : Barcode nicht in Datenbank vorhanden + Reserve160 : Struct // AMR (UH06): Reserve160 + Schleuse_DL : Bool // Highway zu AMR : Schleuse-Datenliste fehlerhaft + Undef_Schleuse : Bool // Highway zu AMR : undefinierter Schleuse + Err_Trolley_nicht_in_Schleuse : Bool // Highway zu AMR : Trolley fährt nicht in Schleuse + Err_Uebzeit : Bool // Highway zu AMR : Überwachungzeit ist abgelaufen + Err_Schritt : Bool // Highway zu AMR : Schritt-Nummer ist nicht definiert + Err_Stau_Einfahrt : Bool // Highway zu AMR : Stau bei Bereich-Einfahrt + Err_BLKMov : Bool // Highway zu AMR : Error bei Block kopieren + Err_Trolley_raus : Bool // Highway zu AMR : Trolley fährt nicht aus Schleuse + Err_Raus_Sensor : Bool // Highway zu AMR : Raus-Sensor wird nicht erreicht (oder dauernd aktiv)! + Err_Ziel : Bool // Highway zu AMR : Trolley-Ziel nicht bekannt + Err_Weichen_DL : Bool // Highway zu AMR : Weichen-Datenliste fehlerhaft + Err_Undef_Weiche : Bool // Highway zu AMR : undefinierte Weiche + Err_Weiche_belegt : Bool // Highway zu AMR : Weiche bleibt belegt + Err_Kein_LeseErgebnis : Bool // Highway zu AMR : Kein Ergebnis von LeseEinheit + Err_Leser_nicht_bereit : Bool // Highway zu AMR : Leser nicht betriebsbereit + Barcode_nicht_bekannt : Bool // Highway zu AMR : Barcode nicht in Datenbank vorhanden + Übergang_BG3446 : Struct // AMR (UH06): Übergang BG3446 (Zuführung zu AMR) + Schleuse_DL : Bool // Highway zu AMR : Schleuse-Datenliste fehlerhaft + Undef_Schleuse : Bool // Highway zu AMR : undefinierter Schleuse + Err_Trolley_nicht_in_Schleuse : Bool // Highway zu AMR : Trolley fährt nicht in Schleuse + Err_Uebzeit : Bool // Highway zu AMR : Überwachungzeit ist abgelaufen + Err_Schritt : Bool // Highway zu AMR : Schritt-Nummer ist nicht definiert + Err_Stau_Einfahrt : Bool // Highway zu AMR : Stau bei Bereich-Einfahrt + Err_BLKMov : Bool // Highway zu AMR : Error bei Block kopieren + Err_Trolley_raus : Bool // Highway zu AMR : Trolley fährt nicht aus Schleuse + Err_Raus_Sensor : Bool // Highway zu AMR : Raus-Sensor wird nicht erreicht (oder dauernd aktiv)! + Err_Ziel : Bool // Highway zu AMR : Trolley-Ziel nicht bekannt + Err_Weichen_DL : Bool // Highway zu AMR : Weichen-Datenliste fehlerhaft + Err_Undef_Weiche : Bool // Highway zu AMR : undefinierte Weiche + Err_Weiche_belegt : Bool // Highway zu AMR : Weiche bleibt belegt + Err_Kein_LeseErgebnis : Bool // Highway zu AMR : Kein Ergebnis von LeseEinheit + Err_Leser_nicht_bereit : Bool // Highway zu AMR : Leser nicht betriebsbereit + Barcode_nicht_bekannt : Bool // Highway zu AMR : Barcode nicht in Datenbank vorhanden + Übergang_BG3480 : Struct // AMR (UH06): Übergang BG3480 (Zuführung zu AMR) + Schleuse_DL : Bool // Highway zu AMR : Schleuse-Datenliste fehlerhaft + Undef_Schleuse : Bool // Highway zu AMR : undefinierter Schleuse + Err_Trolley_nicht_in_Schleuse : Bool // Highway zu AMR : Trolley fährt nicht in Schleuse + Err_Uebzeit : Bool // Highway zu AMR : Überwachungzeit ist abgelaufen + Err_Schritt : Bool // Highway zu AMR : Schritt-Nummer ist nicht definiert + Err_Stau_Einfahrt : Bool // Highway zu AMR : Stau bei Bereich-Einfahrt + Err_BLKMov : Bool // Highway zu AMR : Error bei Block kopieren + Err_Trolley_raus : Bool // Highway zu AMR : Trolley fährt nicht aus Schleuse + Err_Raus_Sensor : Bool // Highway zu AMR : Raus-Sensor wird nicht erreicht (oder dauernd aktiv)! + Err_Ziel : Bool // Highway zu AMR : Trolley-Ziel nicht bekannt + Err_Weichen_DL : Bool // Highway zu AMR : Weichen-Datenliste fehlerhaft + Err_Undef_Weiche : Bool // Highway zu AMR : undefinierte Weiche + Err_Weiche_belegt : Bool // Highway zu AMR : Weiche bleibt belegt + Err_Kein_LeseErgebnis : Bool // Highway zu AMR : Kein Ergebnis von LeseEinheit + Err_Leser_nicht_bereit : Bool // Highway zu AMR : Leser nicht betriebsbereit + Barcode_nicht_bekannt : Bool // Highway zu AMR : Barcode nicht in Datenbank vorhanden + Übergang_BG3485 : Struct // AMR (UH06): Übergang BG3485 (Zuführung zu AMR) + Schleuse_DL : Bool // Highway zu AMR : Schleuse-Datenliste fehlerhaft + Undef_Schleuse : Bool // Highway zu AMR : undefinierter Schleuse + Err_Trolley_nicht_in_Schleuse : Bool // Highway zu AMR : Trolley fährt nicht in Schleuse + Err_Uebzeit : Bool // Highway zu AMR : Überwachungzeit ist abgelaufen + Err_Schritt : Bool // Highway zu AMR : Schritt-Nummer ist nicht definiert + Err_Stau_Einfahrt : Bool // Highway zu AMR : Stau bei Bereich-Einfahrt + Err_BLKMov : Bool // Highway zu AMR : Error bei Block kopieren + Err_Trolley_raus : Bool // Highway zu AMR : Trolley fährt nicht aus Schleuse + Err_Raus_Sensor : Bool // Highway zu AMR : Raus-Sensor wird nicht erreicht (oder dauernd aktiv)! + Err_Ziel : Bool // Highway zu AMR : Trolley-Ziel nicht bekannt + Err_Weichen_DL : Bool // Highway zu AMR : Weichen-Datenliste fehlerhaft + Err_Undef_Weiche : Bool // Highway zu AMR : undefinierte Weiche + Err_Weiche_belegt : Bool // Highway zu AMR : Weiche bleibt belegt + Err_Kein_LeseErgebnis : Bool // Highway zu AMR : Kein Ergebnis von LeseEinheit + Err_Leser_nicht_bereit : Bool // Highway zu AMR : Leser nicht betriebsbereit + Barcode_nicht_bekannt : Bool // Highway zu AMR : Barcode nicht in Datenbank vorhanden + Übergang_BG3490 : Struct // AMR (UH06): Übergang BG3490 (Zuführung zu AMR) + Schleuse_DL : Bool // Highway zu AMR : Schleuse-Datenliste fehlerhaft + Undef_Schleuse : Bool // Highway zu AMR : undefinierter Schleuse + Err_Trolley_nicht_in_Schleuse : Bool // Highway zu AMR : Trolley fährt nicht in Schleuse + Err_Uebzeit : Bool // Highway zu AMR : Überwachungzeit ist abgelaufen + Err_Schritt : Bool // Highway zu AMR : Schritt-Nummer ist nicht definiert + Err_Stau_Einfahrt : Bool // Highway zu AMR : Stau bei Bereich-Einfahrt + Err_BLKMov : Bool // Highway zu AMR : Error bei Block kopieren + Err_Trolley_raus : Bool // Highway zu AMR : Trolley fährt nicht aus Schleuse + Err_Raus_Sensor : Bool // Highway zu AMR : Raus-Sensor wird nicht erreicht (oder dauernd aktiv)! + Err_Ziel : Bool // Highway zu AMR : Trolley-Ziel nicht bekannt + Err_Weichen_DL : Bool // Highway zu AMR : Weichen-Datenliste fehlerhaft + Err_Undef_Weiche : Bool // Highway zu AMR : undefinierte Weiche + Err_Weiche_belegt : Bool // Highway zu AMR : Weiche bleibt belegt + Err_Kein_LeseErgebnis : Bool // Highway zu AMR : Kein Ergebnis von LeseEinheit + Err_Leser_nicht_bereit : Bool // Highway zu AMR : Leser nicht betriebsbereit + Barcode_nicht_bekannt : Bool // Highway zu AMR : Barcode nicht in Datenbank vorhanden + Bereich_MA0114 : Struct // AMR (UH06): Bereich MA0114/BG3550 (Turm zu Outbound) + Schleuse_DL : Bool // Highway zu AMR : Schleuse-Datenliste fehlerhaft + Undef_Schleuse : Bool // Highway zu AMR : undefinierter Schleuse + Err_Trolley_nicht_in_Schleuse : Bool // Highway zu AMR : Trolley fährt nicht in Schleuse + Err_Uebzeit : Bool // Highway zu AMR : Überwachungzeit ist abgelaufen + Err_Schritt : Bool // Highway zu AMR : Schritt-Nummer ist nicht definiert + Err_Stau_Einfahrt : Bool // Highway zu AMR : Stau bei Bereich-Einfahrt + Err_BLKMov : Bool // Highway zu AMR : Error bei Block kopieren + Err_Trolley_raus : Bool // Highway zu AMR : Trolley fährt nicht aus Schleuse + Err_Raus_Sensor : Bool // Highway zu AMR : Raus-Sensor wird nicht erreicht (oder dauernd aktiv)! + Err_Ziel : Bool // Highway zu AMR : Trolley-Ziel nicht bekannt + Err_Weichen_DL : Bool // Highway zu AMR : Weichen-Datenliste fehlerhaft + Err_Undef_Weiche : Bool // Highway zu AMR : undefinierte Weiche + Err_Weiche_belegt : Bool // Highway zu AMR : Weiche bleibt belegt + Err_Kein_LeseErgebnis : Bool // Highway zu AMR : Kein Ergebnis von LeseEinheit + Err_Leser_nicht_bereit : Bool // Highway zu AMR : Leser nicht betriebsbereit + Barcode_nicht_bekannt : Bool // Highway zu AMR : Barcode nicht in Datenbank vorhanden + Bereich_MA0130 : Struct // AMR (UH06): Bereich MA0130/BG3555 (Turm zu AMR) + Schleuse_DL : Bool // Highway zu AMR : Schleuse-Datenliste fehlerhaft + Undef_Schleuse : Bool // Highway zu AMR : undefinierter Schleuse + Err_Trolley_nicht_in_Schleuse : Bool // Highway zu AMR : Trolley fährt nicht in Schleuse + Err_Uebzeit : Bool // Highway zu AMR : Überwachungzeit ist abgelaufen + Err_Schritt : Bool // Highway zu AMR : Schritt-Nummer ist nicht definiert + Err_Stau_Einfahrt : Bool // Highway zu AMR : Stau bei Bereich-Einfahrt + Err_BLKMov : Bool // Highway zu AMR : Error bei Block kopieren + Err_Trolley_raus : Bool // Highway zu AMR : Trolley fährt nicht aus Schleuse + Err_Raus_Sensor : Bool // Highway zu AMR : Raus-Sensor wird nicht erreicht (oder dauernd aktiv)! + Err_Ziel : Bool // Highway zu AMR : Trolley-Ziel nicht bekannt + Err_Weichen_DL : Bool // Highway zu AMR : Weichen-Datenliste fehlerhaft + Err_Undef_Weiche : Bool // Highway zu AMR : undefinierte Weiche + Err_Weiche_belegt : Bool // Highway zu AMR : Weiche bleibt belegt + Err_Kein_LeseErgebnis : Bool // Highway zu AMR : Kein Ergebnis von LeseEinheit + Err_Leser_nicht_bereit : Bool // Highway zu AMR : Leser nicht betriebsbereit + Barcode_nicht_bekannt : Bool // Highway zu AMR : Barcode nicht in Datenbank vorhanden + Bereich_MA0116 : Struct // AMR (UH06): Bereich MA0116/BG3556 (Turm zu AMR) + Schleuse_DL : Bool // Highway zu AMR : Schleuse-Datenliste fehlerhaft + Undef_Schleuse : Bool // Highway zu AMR : undefinierter Schleuse + Err_Trolley_nicht_in_Schleuse : Bool // Highway zu AMR : Trolley fährt nicht in Schleuse + Err_Uebzeit : Bool // Highway zu AMR : Überwachungzeit ist abgelaufen + Err_Schritt : Bool // Highway zu AMR : Schritt-Nummer ist nicht definiert + Err_Stau_Einfahrt : Bool // Highway zu AMR : Stau bei Bereich-Einfahrt + Err_BLKMov : Bool // Highway zu AMR : Error bei Block kopieren + Err_Trolley_raus : Bool // Highway zu AMR : Trolley fährt nicht aus Schleuse + Err_Raus_Sensor : Bool // Highway zu AMR : Raus-Sensor wird nicht erreicht (oder dauernd aktiv)! + Err_Ziel : Bool // Highway zu AMR : Trolley-Ziel nicht bekannt + Err_Weichen_DL : Bool // Highway zu AMR : Weichen-Datenliste fehlerhaft + Err_Undef_Weiche : Bool // Highway zu AMR : undefinierte Weiche + Err_Weiche_belegt : Bool // Highway zu AMR : Weiche bleibt belegt + Err_Kein_LeseErgebnis : Bool // Highway zu AMR : Kein Ergebnis von LeseEinheit + Err_Leser_nicht_bereit : Bool // Highway zu AMR : Leser nicht betriebsbereit + Barcode_nicht_bekannt : Bool // Highway zu AMR : Barcode nicht in Datenbank vorhanden + Frei200 : Array[1..12] of Word + Schleuse_MB3000 : Struct // AMR (UH06): Schleuse MB3000 (Turm zu AMR) + Schleuse_DL : Bool // Highway zu AMR : Schleuse-Datenliste fehlerhaft + Undef_Schleuse : Bool // Highway zu AMR : undefinierter Schleuse + Err_Trolley_nicht_in_Schleuse : Bool // Highway zu AMR : Trolley fährt nicht in Schleuse + Err_Uebzeit : Bool // Highway zu AMR : Überwachungzeit ist abgelaufen + Err_Schritt : Bool // Highway zu AMR : Schritt-Nummer ist nicht definiert + Err_Stau_Einfahrt : Bool // Highway zu AMR : Stau bei Bereich-Einfahrt + Err_BLKMov : Bool // Highway zu AMR : Error bei Block kopieren + Err_Trolley_raus : Bool // Highway zu AMR : Trolley fährt nicht aus Schleuse + Err_Raus_Sensor : Bool // Highway zu AMR : Raus-Sensor wird nicht erreicht (oder dauernd aktiv)! + Err_Ziel : Bool // Highway zu AMR : Trolley-Ziel nicht bekannt + Err_Weichen_DL : Bool // Highway zu AMR : Weichen-Datenliste fehlerhaft + Err_Undef_Weiche : Bool // Highway zu AMR : undefinierte Weiche + Err_Weiche_belegt : Bool // Highway zu AMR : Weiche bleibt belegt + Err_Kein_LeseErgebnis : Bool // Highway zu AMR : Kein Ergebnis von LeseEinheit + Err_Leser_nicht_bereit : Bool // Highway zu AMR : Leser nicht betriebsbereit + Barcode_nicht_bekannt : Bool // Highway zu AMR : Barcode nicht in Datenbank vorhanden + Schleuse_MB3004 : Struct // AMR (UH06): Schleuse MB3004 (Brandschutztüre 3) + Schleuse_DL : Bool // Highway zu AMR : Schleuse-Datenliste fehlerhaft + Undef_Schleuse : Bool // Highway zu AMR : undefinierter Schleuse + Err_Trolley_nicht_in_Schleuse : Bool // Highway zu AMR : Trolley fährt nicht in Schleuse + Err_Uebzeit : Bool // Highway zu AMR : Überwachungzeit ist abgelaufen + Err_Schritt : Bool // Highway zu AMR : Schritt-Nummer ist nicht definiert + Err_Stau_Einfahrt : Bool // Highway zu AMR : Stau bei Bereich-Einfahrt + Err_BLKMov : Bool // Highway zu AMR : Error bei Block kopieren + Err_Trolley_raus : Bool // Highway zu AMR : Trolley fährt nicht aus Schleuse + Err_Raus_Sensor : Bool // Highway zu AMR : Raus-Sensor wird nicht erreicht (oder dauernd aktiv)! + Err_Ziel : Bool // Highway zu AMR : Trolley-Ziel nicht bekannt + Err_Weichen_DL : Bool // Highway zu AMR : Weichen-Datenliste fehlerhaft + Err_Undef_Weiche : Bool // Highway zu AMR : undefinierte Weiche + Err_Weiche_belegt : Bool // Highway zu AMR : Weiche bleibt belegt + Err_Kein_LeseErgebnis : Bool // Highway zu AMR : Kein Ergebnis von LeseEinheit + Err_Leser_nicht_bereit : Bool // Highway zu AMR : Leser nicht betriebsbereit + Barcode_nicht_bekannt : Bool // Highway zu AMR : Barcode nicht in Datenbank vorhanden + Schleuse_MB3005 : Struct // AMR (UH06): Schleuse MB3005 (Highway zu AMR) + Schleuse_DL : Bool // Highway zu AMR : Schleuse-Datenliste fehlerhaft + Undef_Schleuse : Bool // Highway zu AMR : undefinierter Schleuse + Err_Trolley_nicht_in_Schleuse : Bool // Highway zu AMR : Trolley fährt nicht in Schleuse + Err_Uebzeit : Bool // Highway zu AMR : Überwachungzeit ist abgelaufen + Err_Schritt : Bool // Highway zu AMR : Schritt-Nummer ist nicht definiert + Err_Stau_Einfahrt : Bool // Highway zu AMR : Stau bei Bereich-Einfahrt + Err_BLKMov : Bool // Highway zu AMR : Error bei Block kopieren + Err_Trolley_raus : Bool // Highway zu AMR : Trolley fährt nicht aus Schleuse + Err_Raus_Sensor : Bool // Highway zu AMR : Raus-Sensor wird nicht erreicht (oder dauernd aktiv)! + Err_Ziel : Bool // Highway zu AMR : Trolley-Ziel nicht bekannt + Err_Weichen_DL : Bool // Highway zu AMR : Weichen-Datenliste fehlerhaft + Err_Undef_Weiche : Bool // Highway zu AMR : undefinierte Weiche + Err_Weiche_belegt : Bool // Highway zu AMR : Weiche bleibt belegt + Err_Kein_LeseErgebnis : Bool // Highway zu AMR : Kein Ergebnis von LeseEinheit + Err_Leser_nicht_bereit : Bool // Highway zu AMR : Leser nicht betriebsbereit + Barcode_nicht_bekannt : Bool // Highway zu AMR : Barcode nicht in Datenbank vorhanden + Schleuse_MB3010 : Struct // AMR (UH06): Schleuse MB3010 (Highway zu Outbound) + Schleuse_DL : Bool // Highway zu OB: Schleuse-Datenliste fehlerhaft + Undef_Schleuse : Bool // Highway zu OB: undefinierter Schleuse + Err_Trolley_nicht_in_Schleuse : Bool // Highway zu OB: Trolley fährt nicht in Schleuse + Err_Uebzeit : Bool // Highway zu OB: Überwachungzeit ist abgelaufen + Err_Schritt : Bool // Highway zu OB: Schritt-Nummer ist nicht definiert + Err_Stau_Einfahrt : Bool // Highway zu OB: Stau bei Bereich-Einfahrt + Err_BLKMov : Bool // Highway zu OB: Error bei Block kopieren + Err_Trolley_raus : Bool // Highway zu OB: Trolley fährt nicht aus Schleuse + Err_Raus_Sensor : Bool // Highway zu OB: Raus-Sensor wird nicht erreicht (oder dauernd aktiv)! + Err_Ziel : Bool // Highway zu OB: Trolley-Ziel nicht bekannt + Err_Weichen_DL : Bool // Highway zu OB: Weichen-Datenliste fehlerhaft + Err_Undef_Weiche : Bool // Highway zu OB: undefinierte Weiche + Err_Weiche_belegt : Bool // Highway zu OB: Weiche bleibt belegt + Err_Kein_LeseErgebnis : Bool // Highway zu OB: Kein Ergebnis von LeseEinheit + Err_Leser_nicht_bereit : Bool // Highway zu OB: Leser nicht betriebsbereit + Barcode_nicht_bekannt : Bool // Highway zu OB: Barcode nicht in Datenbank vorhanden + Schleuse_MB3012 : Struct // AMR (UH06): Schleuse MB3012 (Highway zu Outbound) + Schleuse_DL : Bool // Highway zu OB: Schleuse-Datenliste fehlerhaft + Undef_Schleuse : Bool // Highway zu OB: undefinierter Schleuse + Err_Trolley_nicht_in_Schleuse : Bool // Highway zu OB: Trolley fährt nicht in Schleuse + Err_Uebzeit : Bool // Highway zu OB: Überwachungzeit ist abgelaufen + Err_Schritt : Bool // Highway zu OB: Schritt-Nummer ist nicht definiert + Err_Stau_Einfahrt : Bool // Highway zu OB: Stau bei Bereich-Einfahrt + Err_BLKMov : Bool // Highway zu OB: Error bei Block kopieren + Err_Trolley_raus : Bool // Highway zu OB: Trolley fährt nicht aus Schleuse + Err_Raus_Sensor : Bool // Highway zu OB: Raus-Sensor wird nicht erreicht (oder dauernd aktiv)! + Err_Ziel : Bool // Highway zu OB: Trolley-Ziel nicht bekannt + Err_Weichen_DL : Bool // Highway zu OB: Weichen-Datenliste fehlerhaft + Err_Undef_Weiche : Bool // Highway zu OB: undefinierte Weiche + Err_Weiche_belegt : Bool // Highway zu OB: Weiche bleibt belegt + Err_Kein_LeseErgebnis : Bool // Highway zu OB: Kein Ergebnis von LeseEinheit + Err_Leser_nicht_bereit : Bool // Highway zu OB: Leser nicht betriebsbereit + Barcode_nicht_bekannt : Bool // Highway zu OB: Barcode nicht in Datenbank vorhanden + Schleuse_MB3014 : Struct // AMR (UH06): Schleuse MB3014 (Brandschutztüre 3) + Schleuse_DL : Bool // Highway zu OB: Schleuse-Datenliste fehlerhaft + Undef_Schleuse : Bool // Highway zu OB: undefinierter Schleuse + Err_Trolley_nicht_in_Schleuse : Bool // Highway zu OB: Trolley fährt nicht in Schleuse + Err_Uebzeit : Bool // Highway zu OB: Überwachungzeit ist abgelaufen + Err_Schritt : Bool // Highway zu OB: Schritt-Nummer ist nicht definiert + Err_Stau_Einfahrt : Bool // Highway zu OB: Stau bei Bereich-Einfahrt + Err_BLKMov : Bool // Highway zu OB: Error bei Block kopieren + Err_Trolley_raus : Bool // Highway zu OB: Trolley fährt nicht aus Schleuse + Err_Raus_Sensor : Bool // Highway zu OB: Raus-Sensor wird nicht erreicht (oder dauernd aktiv)! + Err_Ziel : Bool // Highway zu OB: Trolley-Ziel nicht bekannt + Err_Weichen_DL : Bool // Highway zu OB: Weichen-Datenliste fehlerhaft + Err_Undef_Weiche : Bool // Highway zu OB: undefinierte Weiche + Err_Weiche_belegt : Bool // Highway zu OB: Weiche bleibt belegt + Err_Kein_LeseErgebnis : Bool // Highway zu OB: Kein Ergebnis von LeseEinheit + Err_Leser_nicht_bereit : Bool // Highway zu OB: Leser nicht betriebsbereit + Barcode_nicht_bekannt : Bool // Highway zu OB: Barcode nicht in Datenbank vorhanden + Schleuse_MB3061 : Struct // AMR (UH06): Schleuse MB3061 (Highway zu AMR) + Schleuse_DL : Bool // Highway zu AMR : Schleuse-Datenliste fehlerhaft + Undef_Schleuse : Bool // Highway zu AMR : undefinierter Schleuse + Err_Trolley_nicht_in_Schleuse : Bool // Highway zu AMR : Trolley fährt nicht in Schleuse + Err_Uebzeit : Bool // Highway zu AMR : Überwachungzeit ist abgelaufen + Err_Schritt : Bool // Highway zu AMR : Schritt-Nummer ist nicht definiert + Err_Stau_Einfahrt : Bool // Highway zu AMR : Stau bei Bereich-Einfahrt + Err_BLKMov : Bool // Highway zu AMR : Error bei Block kopieren + Err_Trolley_raus : Bool // Highway zu AMR : Trolley fährt nicht aus Schleuse + Err_Raus_Sensor : Bool // Highway zu AMR : Raus-Sensor wird nicht erreicht (oder dauernd aktiv)! + Err_Ziel : Bool // Highway zu AMR : Trolley-Ziel nicht bekannt + Err_Weichen_DL : Bool // Highway zu AMR : Weichen-Datenliste fehlerhaft + Err_Undef_Weiche : Bool // Highway zu AMR : undefinierte Weiche + Err_Weiche_belegt : Bool // Highway zu AMR : Weiche bleibt belegt + Err_Kein_LeseErgebnis : Bool // Highway zu AMR : Kein Ergebnis von LeseEinheit + Err_Leser_nicht_bereit : Bool // Highway zu AMR : Leser nicht betriebsbereit + Barcode_nicht_bekannt : Bool // Highway zu AMR : Barcode nicht in Datenbank vorhanden + Schleuse_MB3070 : Struct // AMR (UH06): Schleuse MB3070 (Highway zu Outbound) + Schleuse_DL : Bool // Highway zu OB: Schleuse-Datenliste fehlerhaft + Undef_Schleuse : Bool // Highway zu OB: undefinierter Schleuse + Err_Trolley_nicht_in_Schleuse : Bool // Highway zu OB: Trolley fährt nicht in Schleuse + Err_Uebzeit : Bool // Highway zu OB: Überwachungzeit ist abgelaufen + Err_Schritt : Bool // Highway zu OB: Schritt-Nummer ist nicht definiert + Err_Stau_Einfahrt : Bool // Highway zu OB: Stau bei Bereich-Einfahrt + Err_BLKMov : Bool // Highway zu OB: Error bei Block kopieren + Err_Trolley_raus : Bool // Highway zu OB: Trolley fährt nicht aus Schleuse + Err_Raus_Sensor : Bool // Highway zu OB: Raus-Sensor wird nicht erreicht (oder dauernd aktiv)! + Err_Ziel : Bool // Highway zu OB: Trolley-Ziel nicht bekannt + Err_Weichen_DL : Bool // Highway zu OB: Weichen-Datenliste fehlerhaft + Err_Undef_Weiche : Bool // Highway zu OB: undefinierte Weiche + Err_Weiche_belegt : Bool // Highway zu OB: Weiche bleibt belegt + Err_Kein_LeseErgebnis : Bool // Highway zu OB: Kein Ergebnis von LeseEinheit + Err_Leser_nicht_bereit : Bool // Highway zu OB: Leser nicht betriebsbereit + Barcode_nicht_bekannt : Bool // Highway zu OB: Barcode nicht in Datenbank vorhanden + Schleuse_MB3241 : Struct // AMR (UH06): Schleuse MB3241 (Vor Einfahrt PS5) + Schleuse_DL : Bool // Vor Einfahrt PS5: Schleuse-Datenliste fehlerhaft + Undef_Schleuse : Bool // Vor Einfahrt PS5: undefinierter Schleuse + Err_Trolley_nicht_in_Schleuse : Bool // Vor Einfahrt PS5: Trolley fährt nicht in Schleuse + Err_Uebzeit : Bool // Vor Einfahrt PS5: Überwachungzeit ist abgelaufen + Err_Schritt : Bool // Vor Einfahrt PS5: Schritt-Nummer ist nicht definiert + Err_Stau_Einfahrt : Bool // Vor Einfahrt PS5: Stau bei Bereich-Einfahrt + Err_BLKMov : Bool // Vor Einfahrt PS5: Error bei Block kopieren + Err_Trolley_raus : Bool // Vor Einfahrt PS5: Trolley fährt nicht aus Schleuse + Err_Raus_Sensor : Bool // Vor Einfahrt PS5: Raus-Sensor wird nicht erreicht (oder dauernd aktiv)! + Err_Ziel : Bool // Vor Einfahrt PS5: Trolley-Ziel nicht bekannt + Err_Weichen_DL : Bool // Vor Einfahrt PS5: Weichen-Datenliste fehlerhaft + Err_Undef_Weiche : Bool // Vor Einfahrt PS5: undefinierte Weiche + Err_Weiche_belegt : Bool // Vor Einfahrt PS5: Weiche bleibt belegt + Err_Kein_LeseErgebnis : Bool // Vor Einfahrt PS5: Kein Ergebnis von LeseEinheit + Err_Leser_nicht_bereit : Bool // Vor Einfahrt PS5: Leser nicht betriebsbereit + Barcode_nicht_bekannt : Bool // Vor Einfahrt PS5: Barcode nicht in Datenbank vorhanden + Weiche_MB3242 : Struct // AMR (UH06): Weiche MB3242 (Einfahrt PS5) + Weichen_DL : Bool // Einfahrt PS5: Weichen-Datenliste fehlerhaft + Undef_Weiche : Bool // Einfahrt PS5: undefinierte Weiche + BLKMov : Bool // Einfahrt PS5: Fehler bei Block kopieren + Undef_Bereich+1 : Bool // Einfahrt PS5: Bereich +1 unbekannt + Frei04 : Bool // Einfahrt PS5: Frei04 + Frei05 : Bool // Einfahrt PS5: Frei05 + Ziel_undefiniert : Bool // Einfahrt PS5: Ziel ist undefiniert + Err_Schleusen_DL : Bool // Einfahrt PS5: Schleusen-Datenliste fehlerhaft + Err_Undef_Schleuse-1 : Bool // Einfahrt PS5: undefinierte Schleuse -1 + Übzeit_Gerade : Bool // Einfahrt PS5: Trolley bei Geradefahrt in Weiche verklemmt (-> Antrieb gestoppt) + Übzeit_Abzweig : Bool // Einfahrt PS5: Trolley bei Abzweigfahrt in Weiche verklemmt (-> Antrieb gestoppt) + Gerade_Sensor_aktiv : Bool // Einfahrt PS5: Ziel-Sensor Geradefahrt aktiv + Abzweig_Sensor_aktiv : Bool // Einfahrt PS5: Ziel-Sensor Abzweigfahrt aktiv + Gerade_Bereich_belegt : Bool // Einfahrt PS5: Bereich Geradefahrt noch belegt + Abzweig_Bereich_belegt : Bool // Einfahrt PS5: Bereich Abzweigfahrt noch belegt + Reset_aktiv : Bool // Einfahrt PS5: Reset ist aktiv + Schleuse_MB3243 : Struct // AMR (UH06): Schleuse MB3243 (PS5 Vorstau) + Schleuse_DL : Bool // PS5 vor Arbeitsplätze: Schleuse-Datenliste fehlerhaft + Undef_Schleuse : Bool // PS5 vor Arbeitsplätze: undefinierter Schleuse + Err_Trolley_nicht_in_Schleuse : Bool // PS5 vor Arbeitsplätze: Trolley fährt nicht in Schleuse + Err_Uebzeit : Bool // PS5 vor Arbeitsplätze: Überwachungzeit ist abgelaufen + Err_Schritt : Bool // PS5 vor Arbeitsplätze: Schritt-Nummer ist nicht definiert + Err_Stau_Einfahrt : Bool // PS5 vor Arbeitsplätze: Stau bei Bereich-Einfahrt + Err_BLKMov : Bool // PS5 vor Arbeitsplätze: Error bei Block kopieren + Err_Trolley_raus : Bool // PS5 vor Arbeitsplätze: Trolley fährt nicht aus Schleuse + Err_Raus_Sensor : Bool // PS5 vor Arbeitsplätze: Raus-Sensor wird nicht erreicht (oder dauernd aktiv)! + Err_Ziel : Bool // PS5 vor Arbeitsplätze: Trolley-Ziel nicht bekannt + Err_Weichen_DL : Bool // PS5 vor Arbeitsplätze: Weichen-Datenliste fehlerhaft + Err_Undef_Weiche : Bool // PS5 vor Arbeitsplätze: undefinierte Weiche + Err_Weiche_belegt : Bool // PS5 vor Arbeitsplätze: Weiche bleibt belegt + Err_Kein_LeseErgebnis : Bool // PS5 vor Arbeitsplätze: Kein Ergebnis von LeseEinheit + Err_Leser_nicht_bereit : Bool // PS5 vor Arbeitsplätze: Leser nicht betriebsbereit + Barcode_nicht_bekannt : Bool // PS5 vor Arbeitsplätze: Barcode nicht in Datenbank vorhanden + Stopper_MB3245 : Struct // AMR (UH06): Stopper MB3245 (PS5 / Arbeitsplatz 1) + Schleuse_DL : Bool // PS5 / Arbeitsplatz 1: Schleuse-Datenliste fehlerhaft + Undef_Schleuse : Bool // PS5 / Arbeitsplatz 1: undefinierter Schleuse + Err_Trolley_nicht_in_Schleuse : Bool // PS5 / Arbeitsplatz 1: Trolley fährt nicht in Schleuse + Err_Uebzeit : Bool // PS5 / Arbeitsplatz 1: Überwachungzeit ist abgelaufen + Err_Schritt : Bool // PS5 / Arbeitsplatz 1: Schritt-Nummer ist nicht definiert + Err_Stau_Einfahrt : Bool // PS5 / Arbeitsplatz 1: Stau bei Bereich-Einfahrt + Err_BLKMov : Bool // PS5 / Arbeitsplatz 1: Error bei Block kopieren + Err_Trolley_raus : Bool // PS5 / Arbeitsplatz 1: Trolley fährt nicht aus Schleuse + Err_Raus_Sensor : Bool // PS5 / Arbeitsplatz 1: Raus-Sensor wird nicht erreicht (oder dauernd aktiv)! + Err_Ziel : Bool // PS5 / Arbeitsplatz 1: Trolley-Ziel nicht bekannt + Err_Weichen_DL : Bool // PS5 / Arbeitsplatz 1: Weichen-Datenliste fehlerhaft + Err_Undef_Weiche : Bool // PS5 / Arbeitsplatz 1: undefinierte Weiche + Err_Weiche_belegt : Bool // PS5 / Arbeitsplatz 1: Weiche bleibt belegt + Err_Kein_LeseErgebnis : Bool // PS5 / Arbeitsplatz 1: Kein Ergebnis von LeseEinheit + Err_Leser_nicht_bereit : Bool // PS5 / Arbeitsplatz 1: Leser nicht betriebsbereit + Barcode_nicht_bekannt : Bool // PS5 / Arbeitsplatz 1: Barcode nicht in Datenbank vorhanden + Stopper_MB3251 : Struct // AMR (UH06): Stopper MB3251 (PS5 / Arbeitsplatz 2) + Schleuse_DL : Bool // PS5 / Arbeitsplatz 2: Schleuse-Datenliste fehlerhaft + Undef_Schleuse : Bool // PS5 / Arbeitsplatz 2: undefinierter Schleuse + Err_Trolley_nicht_in_Schleuse : Bool // PS5 / Arbeitsplatz 2: Trolley fährt nicht in Schleuse + Err_Uebzeit : Bool // PS5 / Arbeitsplatz 2: Überwachungzeit ist abgelaufen + Err_Schritt : Bool // PS5 / Arbeitsplatz 2: Schritt-Nummer ist nicht definiert + Err_Stau_Einfahrt : Bool // PS5 / Arbeitsplatz 2: Stau bei Bereich-Einfahrt + Err_BLKMov : Bool // PS5 / Arbeitsplatz 2: Error bei Block kopieren + Err_Trolley_raus : Bool // PS5 / Arbeitsplatz 2: Trolley fährt nicht aus Schleuse + Err_Raus_Sensor : Bool // PS5 / Arbeitsplatz 2: Raus-Sensor wird nicht erreicht (oder dauernd aktiv)! + Err_Ziel : Bool // PS5 / Arbeitsplatz 2: Trolley-Ziel nicht bekannt + Err_Weichen_DL : Bool // PS5 / Arbeitsplatz 2: Weichen-Datenliste fehlerhaft + Err_Undef_Weiche : Bool // PS5 / Arbeitsplatz 2: undefinierte Weiche + Err_Weiche_belegt : Bool // PS5 / Arbeitsplatz 2: Weiche bleibt belegt + Err_Kein_LeseErgebnis : Bool // PS5 / Arbeitsplatz 2: Kein Ergebnis von LeseEinheit + Err_Leser_nicht_bereit : Bool // PS5 / Arbeitsplatz 2: Leser nicht betriebsbereit + Barcode_nicht_bekannt : Bool // PS5 / Arbeitsplatz 2: Barcode nicht in Datenbank vorhanden + Stopper_MB3255 : Struct // AMR (UH06): Stopper MB3255 (PS5 / Arbeitsplatz 3) + Schleuse_DL : Bool // PS5 / Arbeitsplatz 3: Schleuse-Datenliste fehlerhaft + Undef_Schleuse : Bool // PS5 / Arbeitsplatz 3: undefinierter Schleuse + Err_Trolley_nicht_in_Schleuse : Bool // PS5 / Arbeitsplatz 3: Trolley fährt nicht in Schleuse + Err_Uebzeit : Bool // PS5 / Arbeitsplatz 3: Überwachungzeit ist abgelaufen + Err_Schritt : Bool // PS5 / Arbeitsplatz 3: Schritt-Nummer ist nicht definiert + Err_Stau_Einfahrt : Bool // PS5 / Arbeitsplatz 3: Stau bei Bereich-Einfahrt + Err_BLKMov : Bool // PS5 / Arbeitsplatz 3: Error bei Block kopieren + Err_Trolley_raus : Bool // PS5 / Arbeitsplatz 3: Trolley fährt nicht aus Schleuse + Err_Raus_Sensor : Bool // PS5 / Arbeitsplatz 3: Raus-Sensor wird nicht erreicht (oder dauernd aktiv)! + Err_Ziel : Bool // PS5 / Arbeitsplatz 3: Trolley-Ziel nicht bekannt + Err_Weichen_DL : Bool // PS5 / Arbeitsplatz 3: Weichen-Datenliste fehlerhaft + Err_Undef_Weiche : Bool // PS5 / Arbeitsplatz 3: undefinierte Weiche + Err_Weiche_belegt : Bool // PS5 / Arbeitsplatz 3: Weiche bleibt belegt + Err_Kein_LeseErgebnis : Bool // PS5 / Arbeitsplatz 3: Kein Ergebnis von LeseEinheit + Err_Leser_nicht_bereit : Bool // PS5 / Arbeitsplatz 3: Leser nicht betriebsbereit + Barcode_nicht_bekannt : Bool // PS5 / Arbeitsplatz 3: Barcode nicht in Datenbank vorhanden + Schleuse_MB3262 : Struct // AMR (UH06): Schleuse MB3262 (PS5 Nachstau) + Schleuse_DL : Bool // PS5 vor Ausfahrt: Schleuse-Datenliste fehlerhaft + Undef_Schleuse : Bool // PS5 vor Ausfahrt: undefinierter Schleuse + Err_Trolley_nicht_in_Schleuse : Bool // PS5 vor Ausfahrt: Trolley fährt nicht in Schleuse + Err_Uebzeit : Bool // PS5 vor Ausfahrt: Überwachungzeit ist abgelaufen + Err_Schritt : Bool // PS5 vor Ausfahrt: Schritt-Nummer ist nicht definiert + Err_Stau_Einfahrt : Bool // PS5 vor Ausfahrt: Stau bei Bereich-Einfahrt + Err_BLKMov : Bool // PS5 vor Ausfahrt: Error bei Block kopieren + Err_Trolley_raus : Bool // PS5 vor Ausfahrt: Trolley fährt nicht aus Schleuse + Err_Raus_Sensor : Bool // PS5 vor Ausfahrt: Raus-Sensor wird nicht erreicht (oder dauernd aktiv)! + Err_Ziel : Bool // PS5 vor Ausfahrt: Trolley-Ziel nicht bekannt + Err_Weichen_DL : Bool // PS5 vor Ausfahrt: Weichen-Datenliste fehlerhaft + Err_Undef_Weiche : Bool // PS5 vor Ausfahrt: undefinierte Weiche + Err_Weiche_belegt : Bool // PS5 vor Ausfahrt: Weiche bleibt belegt + Err_Kein_LeseErgebnis : Bool // PS5 vor Ausfahrt: Kein Ergebnis von LeseEinheit + Err_Leser_nicht_bereit : Bool // PS5 vor Ausfahrt: Leser nicht betriebsbereit + Barcode_nicht_bekannt : Bool // PS5 vor Ausfahrt: Barcode nicht in Datenbank vorhanden + Schleuse_MB3265 : Struct // AMR (UH06): Schleuse MB3265 (Vor Ausfahrt PS5) + Schleuse_DL : Bool // Vor PS5-Ausfahrt: Schleuse-Datenliste fehlerhaft + Undef_Schleuse : Bool // Vor PS5-Ausfahrt: undefinierter Schleuse + Err_Trolley_nicht_in_Schleuse : Bool // Vor PS5-Ausfahrt: Trolley fährt nicht in Schleuse + Err_Uebzeit : Bool // Vor PS5-Ausfahrt: Überwachungzeit ist abgelaufen + Err_Schritt : Bool // Vor PS5-Ausfahrt: Schritt-Nummer ist nicht definiert + Err_Stau_Einfahrt : Bool // Vor PS5-Ausfahrt: Stau bei Bereich-Einfahrt + Err_BLKMov : Bool // Vor PS5-Ausfahrt: Error bei Block kopieren + Err_Trolley_raus : Bool // Vor PS5-Ausfahrt: Trolley fährt nicht aus Schleuse + Err_Raus_Sensor : Bool // Vor PS5-Ausfahrt: Raus-Sensor wird nicht erreicht (oder dauernd aktiv)! + Err_Ziel : Bool // Vor PS5-Ausfahrt: Trolley-Ziel nicht bekannt + Err_Weichen_DL : Bool // Vor PS5-Ausfahrt: Weichen-Datenliste fehlerhaft + Err_Undef_Weiche : Bool // Vor PS5-Ausfahrt: undefinierte Weiche + Err_Weiche_belegt : Bool // Vor PS5-Ausfahrt: Weiche bleibt belegt + Err_Kein_LeseErgebnis : Bool // Vor PS5-Ausfahrt: Kein Ergebnis von LeseEinheit + Err_Leser_nicht_bereit : Bool // Vor PS5-Ausfahrt: Leser nicht betriebsbereit + Barcode_nicht_bekannt : Bool // Vor PS5-Ausfahrt: Barcode nicht in Datenbank vorhanden + Schleuse_MB3271 : Struct // AMR (UH06): Schleuse MB3271 (Vor Einfahrt PS4) + Schleuse_DL : Bool // Vor Einfahrt PS4: Schleuse-Datenliste fehlerhaft + Undef_Schleuse : Bool // Vor Einfahrt PS4: undefinierter Schleuse + Err_Trolley_nicht_in_Schleuse : Bool // Vor Einfahrt PS4: Trolley fährt nicht in Schleuse + Err_Uebzeit : Bool // Vor Einfahrt PS4: Überwachungzeit ist abgelaufen + Err_Schritt : Bool // Vor Einfahrt PS4: Schritt-Nummer ist nicht definiert + Err_Stau_Einfahrt : Bool // Vor Einfahrt PS4: Stau bei Bereich-Einfahrt + Err_BLKMov : Bool // Vor Einfahrt PS4: Error bei Block kopieren + Err_Trolley_raus : Bool // Vor Einfahrt PS4: Trolley fährt nicht aus Schleuse + Err_Raus_Sensor : Bool // Vor Einfahrt PS4: Raus-Sensor wird nicht erreicht (oder dauernd aktiv)! + Err_Ziel : Bool // Vor Einfahrt PS4: Trolley-Ziel nicht bekannt + Err_Weichen_DL : Bool // Vor Einfahrt PS4: Weichen-Datenliste fehlerhaft + Err_Undef_Weiche : Bool // Vor Einfahrt PS4: undefinierte Weiche + Err_Weiche_belegt : Bool // Vor Einfahrt PS4: Weiche bleibt belegt + Err_Kein_LeseErgebnis : Bool // Vor Einfahrt PS4: Kein Ergebnis von LeseEinheit + Err_Leser_nicht_bereit : Bool // Vor Einfahrt PS4: Leser nicht betriebsbereit + Barcode_nicht_bekannt : Bool // Vor Einfahrt PS4: Barcode nicht in Datenbank vorhanden + Weiche_MB3272 : Struct // AMR (UH06): Weiche MB3272 (Einfahrt PS4) + Weichen_DL : Bool // Einfahrt PS4: Weichen-Datenliste fehlerhaft + Undef_Weiche : Bool // Einfahrt PS4: undefinierte Weiche + BLKMov : Bool // Einfahrt PS4: Fehler bei Block kopieren + Undef_Bereich+1 : Bool // Einfahrt PS4: Bereich +1 unbekannt + Frei04 : Bool // Einfahrt PS4: Frei04 + Frei05 : Bool // Einfahrt PS4: Frei05 + Ziel_undefiniert : Bool // Einfahrt PS4: Ziel ist undefiniert + Err_Schleusen_DL : Bool // Einfahrt PS4: Schleusen-Datenliste fehlerhaft + Err_Undef_Schleuse-1 : Bool // Einfahrt PS4: undefinierte Schleuse -1 + Übzeit_Gerade : Bool // Einfahrt PS4: Trolley bei Geradefahrt in Weiche verklemmt (-> Antrieb gestoppt) + Übzeit_Abzweig : Bool // Einfahrt PS4: Trolley bei Abzweigfahrt in Weiche verklemmt (-> Antrieb gestoppt) + Gerade_Sensor_aktiv : Bool // Einfahrt PS4: Ziel-Sensor Geradefahrt aktiv + Abzweig_Sensor_aktiv : Bool // Einfahrt PS4: Ziel-Sensor Abzweigfahrt aktiv + Gerade_Bereich_belegt : Bool // Einfahrt PS4: Bereich Geradefahrt noch belegt + Abzweig_Bereich_belegt : Bool // Einfahrt PS4: Bereich Abzweigfahrt noch belegt + Reset_aktiv : Bool // Einfahrt PS4: Reset ist aktiv + Schleuse_MB3273 : Struct // AMR (UH06): Schleuse MB3273 (PS4 Vorstau) + Schleuse_DL : Bool // PS4 vor Arbeitsplätze: Schleuse-Datenliste fehlerhaft + Undef_Schleuse : Bool // PS4 vor Arbeitsplätze: undefinierter Schleuse + Err_Trolley_nicht_in_Schleuse : Bool // PS4 vor Arbeitsplätze: Trolley fährt nicht in Schleuse + Err_Uebzeit : Bool // PS4 vor Arbeitsplätze: Überwachungzeit ist abgelaufen + Err_Schritt : Bool // PS4 vor Arbeitsplätze: Schritt-Nummer ist nicht definiert + Err_Stau_Einfahrt : Bool // PS4 vor Arbeitsplätze: Stau bei Bereich-Einfahrt + Err_BLKMov : Bool // PS4 vor Arbeitsplätze: Error bei Block kopieren + Err_Trolley_raus : Bool // PS4 vor Arbeitsplätze: Trolley fährt nicht aus Schleuse + Err_Raus_Sensor : Bool // PS4 vor Arbeitsplätze: Raus-Sensor wird nicht erreicht (oder dauernd aktiv)! + Err_Ziel : Bool // PS4 vor Arbeitsplätze: Trolley-Ziel nicht bekannt + Err_Weichen_DL : Bool // PS4 vor Arbeitsplätze: Weichen-Datenliste fehlerhaft + Err_Undef_Weiche : Bool // PS4 vor Arbeitsplätze: undefinierte Weiche + Err_Weiche_belegt : Bool // PS4 vor Arbeitsplätze: Weiche bleibt belegt + Err_Kein_LeseErgebnis : Bool // PS4 vor Arbeitsplätze: Kein Ergebnis von LeseEinheit + Err_Leser_nicht_bereit : Bool // PS4 vor Arbeitsplätze: Leser nicht betriebsbereit + Barcode_nicht_bekannt : Bool // PS4 vor Arbeitsplätze: Barcode nicht in Datenbank vorhanden + Stopper_MB3275 : Struct // AMR (UH06): Stopper MB3275 (PS4 / Arbeitsplatz 1) + Schleuse_DL : Bool // PS4 / Arbeitsplatz 1: Schleuse-Datenliste fehlerhaft + Undef_Schleuse : Bool // PS4 / Arbeitsplatz 1: undefinierter Schleuse + Err_Trolley_nicht_in_Schleuse : Bool // PS4 / Arbeitsplatz 1: Trolley fährt nicht in Schleuse + Err_Uebzeit : Bool // PS4 / Arbeitsplatz 1: Überwachungzeit ist abgelaufen + Err_Schritt : Bool // PS4 / Arbeitsplatz 1: Schritt-Nummer ist nicht definiert + Err_Stau_Einfahrt : Bool // PS4 / Arbeitsplatz 1: Stau bei Bereich-Einfahrt + Err_BLKMov : Bool // PS4 / Arbeitsplatz 1: Error bei Block kopieren + Err_Trolley_raus : Bool // PS4 / Arbeitsplatz 1: Trolley fährt nicht aus Schleuse + Err_Raus_Sensor : Bool // PS4 / Arbeitsplatz 1: Raus-Sensor wird nicht erreicht (oder dauernd aktiv)! + Err_Ziel : Bool // PS4 / Arbeitsplatz 1: Trolley-Ziel nicht bekannt + Err_Weichen_DL : Bool // PS4 / Arbeitsplatz 1: Weichen-Datenliste fehlerhaft + Err_Undef_Weiche : Bool // PS4 / Arbeitsplatz 1: undefinierte Weiche + Err_Weiche_belegt : Bool // PS4 / Arbeitsplatz 1: Weiche bleibt belegt + Err_Kein_LeseErgebnis : Bool // PS4 / Arbeitsplatz 1: Kein Ergebnis von LeseEinheit + Err_Leser_nicht_bereit : Bool // PS4 / Arbeitsplatz 1: Leser nicht betriebsbereit + Barcode_nicht_bekannt : Bool // PS4 / Arbeitsplatz 1: Barcode nicht in Datenbank vorhanden + Stopper_MB3281 : Struct // AMR (UH06): Stopper MB3281 (PS4 / Arbeitsplatz 2) + Schleuse_DL : Bool // PS4 / Arbeitsplatz 2: Schleuse-Datenliste fehlerhaft + Undef_Schleuse : Bool // PS4 / Arbeitsplatz 2: undefinierter Schleuse + Err_Trolley_nicht_in_Schleuse : Bool // PS4 / Arbeitsplatz 2: Trolley fährt nicht in Schleuse + Err_Uebzeit : Bool // PS4 / Arbeitsplatz 2: Überwachungzeit ist abgelaufen + Err_Schritt : Bool // PS4 / Arbeitsplatz 2: Schritt-Nummer ist nicht definiert + Err_Stau_Einfahrt : Bool // PS4 / Arbeitsplatz 2: Stau bei Bereich-Einfahrt + Err_BLKMov : Bool // PS4 / Arbeitsplatz 2: Error bei Block kopieren + Err_Trolley_raus : Bool // PS4 / Arbeitsplatz 2: Trolley fährt nicht aus Schleuse + Err_Raus_Sensor : Bool // PS4 / Arbeitsplatz 2: Raus-Sensor wird nicht erreicht (oder dauernd aktiv)! + Err_Ziel : Bool // PS4 / Arbeitsplatz 2: Trolley-Ziel nicht bekannt + Err_Weichen_DL : Bool // PS4 / Arbeitsplatz 2: Weichen-Datenliste fehlerhaft + Err_Undef_Weiche : Bool // PS4 / Arbeitsplatz 2: undefinierte Weiche + Err_Weiche_belegt : Bool // PS4 / Arbeitsplatz 2: Weiche bleibt belegt + Err_Kein_LeseErgebnis : Bool // PS4 / Arbeitsplatz 2: Kein Ergebnis von LeseEinheit + Err_Leser_nicht_bereit : Bool // PS4 / Arbeitsplatz 2: Leser nicht betriebsbereit + Barcode_nicht_bekannt : Bool // PS4 / Arbeitsplatz 2: Barcode nicht in Datenbank vorhanden + Stopper_MB3285 : Struct // AMR (UH06): Stopper MB3285 (PS4 / Arbeitsplatz 3) + Schleuse_DL : Bool // PS4 / Arbeitsplatz 3: Schleuse-Datenliste fehlerhaft + Undef_Schleuse : Bool // PS4 / Arbeitsplatz 3: undefinierter Schleuse + Err_Trolley_nicht_in_Schleuse : Bool // PS4 / Arbeitsplatz 3: Trolley fährt nicht in Schleuse + Err_Uebzeit : Bool // PS4 / Arbeitsplatz 3: Überwachungzeit ist abgelaufen + Err_Schritt : Bool // PS4 / Arbeitsplatz 3: Schritt-Nummer ist nicht definiert + Err_Stau_Einfahrt : Bool // PS4 / Arbeitsplatz 3: Stau bei Bereich-Einfahrt + Err_BLKMov : Bool // PS4 / Arbeitsplatz 3: Error bei Block kopieren + Err_Trolley_raus : Bool // PS4 / Arbeitsplatz 3: Trolley fährt nicht aus Schleuse + Err_Raus_Sensor : Bool // PS4 / Arbeitsplatz 3: Raus-Sensor wird nicht erreicht (oder dauernd aktiv)! + Err_Ziel : Bool // PS4 / Arbeitsplatz 3: Trolley-Ziel nicht bekannt + Err_Weichen_DL : Bool // PS4 / Arbeitsplatz 3: Weichen-Datenliste fehlerhaft + Err_Undef_Weiche : Bool // PS4 / Arbeitsplatz 3: undefinierte Weiche + Err_Weiche_belegt : Bool // PS4 / Arbeitsplatz 3: Weiche bleibt belegt + Err_Kein_LeseErgebnis : Bool // PS4 / Arbeitsplatz 3: Kein Ergebnis von LeseEinheit + Err_Leser_nicht_bereit : Bool // PS4 / Arbeitsplatz 3: Leser nicht betriebsbereit + Barcode_nicht_bekannt : Bool // PS4 / Arbeitsplatz 3: Barcode nicht in Datenbank vorhanden + Schleuse_MB3291 : Struct // AMR (UH06): Schleuse MB3291 (PS4 Nachstau) + Schleuse_DL : Bool // PS4 vor Ausfahrt: Schleuse-Datenliste fehlerhaft + Undef_Schleuse : Bool // PS4 vor Ausfahrt: undefinierter Schleuse + Err_Trolley_nicht_in_Schleuse : Bool // PS4 vor Ausfahrt: Trolley fährt nicht in Schleuse + Err_Uebzeit : Bool // PS4 vor Ausfahrt: Überwachungzeit ist abgelaufen + Err_Schritt : Bool // PS4 vor Ausfahrt: Schritt-Nummer ist nicht definiert + Err_Stau_Einfahrt : Bool // PS4 vor Ausfahrt: Stau bei Bereich-Einfahrt + Err_BLKMov : Bool // PS4 vor Ausfahrt: Error bei Block kopieren + Err_Trolley_raus : Bool // PS4 vor Ausfahrt: Trolley fährt nicht aus Schleuse + Err_Raus_Sensor : Bool // PS4 vor Ausfahrt: Raus-Sensor wird nicht erreicht (oder dauernd aktiv)! + Err_Ziel : Bool // PS4 vor Ausfahrt: Trolley-Ziel nicht bekannt + Err_Weichen_DL : Bool // PS4 vor Ausfahrt: Weichen-Datenliste fehlerhaft + Err_Undef_Weiche : Bool // PS4 vor Ausfahrt: undefinierte Weiche + Err_Weiche_belegt : Bool // PS4 vor Ausfahrt: Weiche bleibt belegt + Err_Kein_LeseErgebnis : Bool // PS4 vor Ausfahrt: Kein Ergebnis von LeseEinheit + Err_Leser_nicht_bereit : Bool // PS4 vor Ausfahrt: Leser nicht betriebsbereit + Barcode_nicht_bekannt : Bool // PS4 vor Ausfahrt: Barcode nicht in Datenbank vorhanden + Schleuse_MB3293 : Struct // AMR (UH06): Schleuse MB3293 (Vor Ausfahrt PS4) + Schleuse_DL : Bool // Vor PS4-Ausfahrt: Schleuse-Datenliste fehlerhaft + Undef_Schleuse : Bool // Vor PS4-Ausfahrt: undefinierter Schleuse + Err_Trolley_nicht_in_Schleuse : Bool // Vor PS4-Ausfahrt: Trolley fährt nicht in Schleuse + Err_Uebzeit : Bool // Vor PS4-Ausfahrt: Überwachungzeit ist abgelaufen + Err_Schritt : Bool // Vor PS4-Ausfahrt: Schritt-Nummer ist nicht definiert + Err_Stau_Einfahrt : Bool // Vor PS4-Ausfahrt: Stau bei Bereich-Einfahrt + Err_BLKMov : Bool // Vor PS4-Ausfahrt: Error bei Block kopieren + Err_Trolley_raus : Bool // Vor PS4-Ausfahrt: Trolley fährt nicht aus Schleuse + Err_Raus_Sensor : Bool // Vor PS4-Ausfahrt: Raus-Sensor wird nicht erreicht (oder dauernd aktiv)! + Err_Ziel : Bool // Vor PS4-Ausfahrt: Trolley-Ziel nicht bekannt + Err_Weichen_DL : Bool // Vor PS4-Ausfahrt: Weichen-Datenliste fehlerhaft + Err_Undef_Weiche : Bool // Vor PS4-Ausfahrt: undefinierte Weiche + Err_Weiche_belegt : Bool // Vor PS4-Ausfahrt: Weiche bleibt belegt + Err_Kein_LeseErgebnis : Bool // Vor PS4-Ausfahrt: Kein Ergebnis von LeseEinheit + Err_Leser_nicht_bereit : Bool // Vor PS4-Ausfahrt: Leser nicht betriebsbereit + Barcode_nicht_bekannt : Bool // Vor PS4-Ausfahrt: Barcode nicht in Datenbank vorhanden + Weiche_MB3302 : Struct // AMR (UH06): Weiche MB3302 (Einfahrt PS3) + Weichen_DL : Bool // Einfahrt PS3: Weichen-Datenliste fehlerhaft + Undef_Weiche : Bool // Einfahrt PS3: undefinierte Weiche + BLKMov : Bool // Einfahrt PS3: Fehler bei Block kopieren + Undef_Bereich+1 : Bool // Einfahrt PS3: Bereich +1 unbekannt + Frei04 : Bool // Einfahrt PS3: Frei04 + Frei05 : Bool // Einfahrt PS3: Frei05 + Ziel_undefiniert : Bool // Einfahrt PS3: Ziel ist undefiniert + Err_Schleusen_DL : Bool // Einfahrt PS3: Schleusen-Datenliste fehlerhaft + Err_Undef_Schleuse-1 : Bool // Einfahrt PS3: undefinierte Schleuse -1 + Übzeit_Gerade : Bool // Einfahrt PS3: Trolley bei Geradefahrt in Weiche verklemmt (-> Antrieb gestoppt) + Übzeit_Abzweig : Bool // Einfahrt PS3: Trolley bei Abzweigfahrt in Weiche verklemmt (-> Antrieb gestoppt) + Gerade_Sensor_aktiv : Bool // Einfahrt PS3: Ziel-Sensor Geradefahrt aktiv + Abzweig_Sensor_aktiv : Bool // Einfahrt PS3: Ziel-Sensor Abzweigfahrt aktiv + Gerade_Bereich_belegt : Bool // Einfahrt PS3: Bereich Geradefahrt noch belegt + Abzweig_Bereich_belegt : Bool // Einfahrt PS3: Bereich Abzweigfahrt noch belegt + Reset_aktiv : Bool // Einfahrt PS3: Reset ist aktiv + Schleuse_MB3303 : Struct // AMR (UH06): Schleuse MB3303 (PS3 Vorstau) + Schleuse_DL : Bool // PS3 vor Arbeitsplätze: Schleuse-Datenliste fehlerhaft + Undef_Schleuse : Bool // PS3 vor Arbeitsplätze: undefinierter Schleuse + Err_Trolley_nicht_in_Schleuse : Bool // PS3 vor Arbeitsplätze: Trolley fährt nicht in Schleuse + Err_Uebzeit : Bool // PS3 vor Arbeitsplätze: Überwachungzeit ist abgelaufen + Err_Schritt : Bool // PS3 vor Arbeitsplätze: Schritt-Nummer ist nicht definiert + Err_Stau_Einfahrt : Bool // PS3 vor Arbeitsplätze: Stau bei Bereich-Einfahrt + Err_BLKMov : Bool // PS3 vor Arbeitsplätze: Error bei Block kopieren + Err_Trolley_raus : Bool // PS3 vor Arbeitsplätze: Trolley fährt nicht aus Schleuse + Err_Raus_Sensor : Bool // PS3 vor Arbeitsplätze: Raus-Sensor wird nicht erreicht (oder dauernd aktiv)! + Err_Ziel : Bool // PS3 vor Arbeitsplätze: Trolley-Ziel nicht bekannt + Err_Weichen_DL : Bool // PS3 vor Arbeitsplätze: Weichen-Datenliste fehlerhaft + Err_Undef_Weiche : Bool // PS3 vor Arbeitsplätze: undefinierte Weiche + Err_Weiche_belegt : Bool // PS3 vor Arbeitsplätze: Weiche bleibt belegt + Err_Kein_LeseErgebnis : Bool // PS3 vor Arbeitsplätze: Kein Ergebnis von LeseEinheit + Err_Leser_nicht_bereit : Bool // PS3 vor Arbeitsplätze: Leser nicht betriebsbereit + Barcode_nicht_bekannt : Bool // PS3 vor Arbeitsplätze: Barcode nicht in Datenbank vorhanden + Schleuse_MB3305 : Struct // AMR (UH06): Stopper MB3305 (PS3 / Arbeitsplatz 1) + Schleuse_DL : Bool // PS3 / Arbeitsplatz 1: Schleuse-Datenliste fehlerhaft + Undef_Schleuse : Bool // PS3 / Arbeitsplatz 1: undefinierter Schleuse + Err_Trolley_nicht_in_Schleuse : Bool // PS3 / Arbeitsplatz 1: Trolley fährt nicht in Schleuse + Err_Uebzeit : Bool // PS3 / Arbeitsplatz 1: Überwachungzeit ist abgelaufen + Err_Schritt : Bool // PS3 / Arbeitsplatz 1: Schritt-Nummer ist nicht definiert + Err_Stau_Einfahrt : Bool // PS3 / Arbeitsplatz 1: Stau bei Bereich-Einfahrt + Err_BLKMov : Bool // PS3 / Arbeitsplatz 1: Error bei Block kopieren + Err_Trolley_raus : Bool // PS3 / Arbeitsplatz 1: Trolley fährt nicht aus Schleuse + Err_Raus_Sensor : Bool // PS3 / Arbeitsplatz 1: Raus-Sensor wird nicht erreicht (oder dauernd aktiv)! + Err_Ziel : Bool // PS3 / Arbeitsplatz 1: Trolley-Ziel nicht bekannt + Err_Weichen_DL : Bool // PS3 / Arbeitsplatz 1: Weichen-Datenliste fehlerhaft + Err_Undef_Weiche : Bool // PS3 / Arbeitsplatz 1: undefinierte Weiche + Err_Weiche_belegt : Bool // PS3 / Arbeitsplatz 1: Weiche bleibt belegt + Err_Kein_LeseErgebnis : Bool // PS3 / Arbeitsplatz 1: Kein Ergebnis von LeseEinheit + Err_Leser_nicht_bereit : Bool // PS3 / Arbeitsplatz 1: Leser nicht betriebsbereit + Barcode_nicht_bekannt : Bool // PS3 / Arbeitsplatz 1: Barcode nicht in Datenbank vorhanden + Schleuse_MB3311 : Struct // AMR (UH06): Stopper MB3311 (PS3 / Arbeitsplatz 2) + Schleuse_DL : Bool // PS3 / Arbeitsplatz 2: Schleuse-Datenliste fehlerhaft + Undef_Schleuse : Bool // PS3 / Arbeitsplatz 2: undefinierter Schleuse + Err_Trolley_nicht_in_Schleuse : Bool // PS3 / Arbeitsplatz 2: Trolley fährt nicht in Schleuse + Err_Uebzeit : Bool // PS3 / Arbeitsplatz 2: Überwachungzeit ist abgelaufen + Err_Schritt : Bool // PS3 / Arbeitsplatz 2: Schritt-Nummer ist nicht definiert + Err_Stau_Einfahrt : Bool // PS3 / Arbeitsplatz 2: Stau bei Bereich-Einfahrt + Err_BLKMov : Bool // PS3 / Arbeitsplatz 2: Error bei Block kopieren + Err_Trolley_raus : Bool // PS3 / Arbeitsplatz 2: Trolley fährt nicht aus Schleuse + Err_Raus_Sensor : Bool // PS3 / Arbeitsplatz 2: Raus-Sensor wird nicht erreicht (oder dauernd aktiv)! + Err_Ziel : Bool // PS3 / Arbeitsplatz 2: Trolley-Ziel nicht bekannt + Err_Weichen_DL : Bool // PS3 / Arbeitsplatz 2: Weichen-Datenliste fehlerhaft + Err_Undef_Weiche : Bool // PS3 / Arbeitsplatz 2: undefinierte Weiche + Err_Weiche_belegt : Bool // PS3 / Arbeitsplatz 2: Weiche bleibt belegt + Err_Kein_LeseErgebnis : Bool // PS3 / Arbeitsplatz 2: Kein Ergebnis von LeseEinheit + Err_Leser_nicht_bereit : Bool // PS3 / Arbeitsplatz 2: Leser nicht betriebsbereit + Barcode_nicht_bekannt : Bool // PS3 / Arbeitsplatz 2: Barcode nicht in Datenbank vorhanden + Schleuse_MB3315 : Struct // AMR (UH06): Stopper MB3315 (PS3 / Arbeitsplatz 3) + Schleuse_DL : Bool // PS3 / Arbeitsplatz 3: Schleuse-Datenliste fehlerhaft + Undef_Schleuse : Bool // PS3 / Arbeitsplatz 3: undefinierter Schleuse + Err_Trolley_nicht_in_Schleuse : Bool // PS3 / Arbeitsplatz 3: Trolley fährt nicht in Schleuse + Err_Uebzeit : Bool // PS3 / Arbeitsplatz 3: Überwachungzeit ist abgelaufen + Err_Schritt : Bool // PS3 / Arbeitsplatz 3: Schritt-Nummer ist nicht definiert + Err_Stau_Einfahrt : Bool // PS3 / Arbeitsplatz 3: Stau bei Bereich-Einfahrt + Err_BLKMov : Bool // PS3 / Arbeitsplatz 3: Error bei Block kopieren + Err_Trolley_raus : Bool // PS3 / Arbeitsplatz 3: Trolley fährt nicht aus Schleuse + Err_Raus_Sensor : Bool // PS3 / Arbeitsplatz 3: Raus-Sensor wird nicht erreicht (oder dauernd aktiv)! + Err_Ziel : Bool // PS3 / Arbeitsplatz 3: Trolley-Ziel nicht bekannt + Err_Weichen_DL : Bool // PS3 / Arbeitsplatz 3: Weichen-Datenliste fehlerhaft + Err_Undef_Weiche : Bool // PS3 / Arbeitsplatz 3: undefinierte Weiche + Err_Weiche_belegt : Bool // PS3 / Arbeitsplatz 3: Weiche bleibt belegt + Err_Kein_LeseErgebnis : Bool // PS3 / Arbeitsplatz 3: Kein Ergebnis von LeseEinheit + Err_Leser_nicht_bereit : Bool // PS3 / Arbeitsplatz 3: Leser nicht betriebsbereit + Barcode_nicht_bekannt : Bool // PS3 / Arbeitsplatz 3: Barcode nicht in Datenbank vorhanden + Schleuse_MB3321 : Struct // AMR (UH06): Schleuse MB3321 (PS3 Nachstau) + Schleuse_DL : Bool // PS3 vor Ausfahrt: Schleuse-Datenliste fehlerhaft + Undef_Schleuse : Bool // PS3 vor Ausfahrt: undefinierter Schleuse + Err_Trolley_nicht_in_Schleuse : Bool // PS3 vor Ausfahrt: Trolley fährt nicht in Schleuse + Err_Uebzeit : Bool // PS3 vor Ausfahrt: Überwachungzeit ist abgelaufen + Err_Schritt : Bool // PS3 vor Ausfahrt: Schritt-Nummer ist nicht definiert + Err_Stau_Einfahrt : Bool // PS3 vor Ausfahrt: Stau bei Bereich-Einfahrt + Err_BLKMov : Bool // PS3 vor Ausfahrt: Error bei Block kopieren + Err_Trolley_raus : Bool // PS3 vor Ausfahrt: Trolley fährt nicht aus Schleuse + Err_Raus_Sensor : Bool // PS3 vor Ausfahrt: Raus-Sensor wird nicht erreicht (oder dauernd aktiv)! + Err_Ziel : Bool // PS3 vor Ausfahrt: Trolley-Ziel nicht bekannt + Err_Weichen_DL : Bool // PS3 vor Ausfahrt: Weichen-Datenliste fehlerhaft + Err_Undef_Weiche : Bool // PS3 vor Ausfahrt: undefinierte Weiche + Err_Weiche_belegt : Bool // PS3 vor Ausfahrt: Weiche bleibt belegt + Err_Kein_LeseErgebnis : Bool // PS3 vor Ausfahrt: Kein Ergebnis von LeseEinheit + Err_Leser_nicht_bereit : Bool // PS3 vor Ausfahrt: Leser nicht betriebsbereit + Barcode_nicht_bekannt : Bool // PS3 vor Ausfahrt: Barcode nicht in Datenbank vorhanden + Schleuse_MB3323 : Struct // AMR (UH06): Schleuse MB3323 (Vor Ausfahrt PS3) + Schleuse_DL : Bool // Vor PS3-Ausfahrt: Schleuse-Datenliste fehlerhaft + Undef_Schleuse : Bool // Vor PS3-Ausfahrt: undefinierter Schleuse + Err_Trolley_nicht_in_Schleuse : Bool // Vor PS3-Ausfahrt: Trolley fährt nicht in Schleuse + Err_Uebzeit : Bool // Vor PS3-Ausfahrt: Überwachungzeit ist abgelaufen + Err_Schritt : Bool // Vor PS3-Ausfahrt: Schritt-Nummer ist nicht definiert + Err_Stau_Einfahrt : Bool // Vor PS3-Ausfahrt: Stau bei Bereich-Einfahrt + Err_BLKMov : Bool // Vor PS3-Ausfahrt: Error bei Block kopieren + Err_Trolley_raus : Bool // Vor PS3-Ausfahrt: Trolley fährt nicht aus Schleuse + Err_Raus_Sensor : Bool // Vor PS3-Ausfahrt: Raus-Sensor wird nicht erreicht (oder dauernd aktiv)! + Err_Ziel : Bool // Vor PS3-Ausfahrt: Trolley-Ziel nicht bekannt + Err_Weichen_DL : Bool // Vor PS3-Ausfahrt: Weichen-Datenliste fehlerhaft + Err_Undef_Weiche : Bool // Vor PS3-Ausfahrt: undefinierte Weiche + Err_Weiche_belegt : Bool // Vor PS3-Ausfahrt: Weiche bleibt belegt + Err_Kein_LeseErgebnis : Bool // Vor PS3-Ausfahrt: Kein Ergebnis von LeseEinheit + Err_Leser_nicht_bereit : Bool // Vor PS3-Ausfahrt: Leser nicht betriebsbereit + Barcode_nicht_bekannt : Bool // Vor PS3-Ausfahrt: Barcode nicht in Datenbank vorhanden + Schleuse_MB3331 : Struct // AMR (UH06): Schleuse MB3331 (Vor Einfahrt PS2) + Schleuse_DL : Bool // Vor Einfahrt PS2: Schleuse-Datenliste fehlerhaft + Undef_Schleuse : Bool // Vor Einfahrt PS2: undefinierter Schleuse + Err_Trolley_nicht_in_Schleuse : Bool // Vor Einfahrt PS2: Trolley fährt nicht in Schleuse + Err_Uebzeit : Bool // Vor Einfahrt PS2: Überwachungzeit ist abgelaufen + Err_Schritt : Bool // Vor Einfahrt PS2: Schritt-Nummer ist nicht definiert + Err_Stau_Einfahrt : Bool // Vor Einfahrt PS2: Stau bei Bereich-Einfahrt + Err_BLKMov : Bool // Vor Einfahrt PS2: Error bei Block kopieren + Err_Trolley_raus : Bool // Vor Einfahrt PS2: Trolley fährt nicht aus Schleuse + Err_Raus_Sensor : Bool // Vor Einfahrt PS2: Raus-Sensor wird nicht erreicht (oder dauernd aktiv)! + Err_Ziel : Bool // Vor Einfahrt PS2: Trolley-Ziel nicht bekannt + Err_Weichen_DL : Bool // Vor Einfahrt PS2: Weichen-Datenliste fehlerhaft + Err_Undef_Weiche : Bool // Vor Einfahrt PS2: undefinierte Weiche + Err_Weiche_belegt : Bool // Vor Einfahrt PS2: Weiche bleibt belegt + Err_Kein_LeseErgebnis : Bool // Vor Einfahrt PS2: Kein Ergebnis von LeseEinheit + Err_Leser_nicht_bereit : Bool // Vor Einfahrt PS2: Leser nicht betriebsbereit + Barcode_nicht_bekannt : Bool // Vor Einfahrt PS2: Barcode nicht in Datenbank vorhanden + Weiche_MB3332 : Struct // AMR (UH06): Weiche MB3332 (Einfahrt PS2) + Weichen_DL : Bool // Einfahrt PS2: Weichen-Datenliste fehlerhaft + Undef_Weiche : Bool // Einfahrt PS2: undefinierte Weiche + BLKMov : Bool // Einfahrt PS2: Fehler bei Block kopieren + Undef_Bereich+1 : Bool // Einfahrt PS2: Bereich +1 unbekannt + Frei04 : Bool // Einfahrt PS2: Frei04 + Frei05 : Bool // Einfahrt PS2: Frei05 + Ziel_undefiniert : Bool // Einfahrt PS2: Ziel ist undefiniert + Err_Schleusen_DL : Bool // Einfahrt PS2: Schleusen-Datenliste fehlerhaft + Err_Undef_Schleuse-1 : Bool // Einfahrt PS2: undefinierte Schleuse -1 + Übzeit_Gerade : Bool // Einfahrt PS2: Trolley bei Geradefahrt in Weiche verklemmt (-> Antrieb gestoppt) + Übzeit_Abzweig : Bool // Einfahrt PS2: Trolley bei Abzweigfahrt in Weiche verklemmt (-> Antrieb gestoppt) + Gerade_Sensor_aktiv : Bool // Einfahrt PS2: Ziel-Sensor Geradefahrt aktiv + Abzweig_Sensor_aktiv : Bool // Einfahrt PS2: Ziel-Sensor Abzweigfahrt aktiv + Gerade_Bereich_belegt : Bool // Einfahrt PS2: Bereich Geradefahrt noch belegt + Abzweig_Bereich_belegt : Bool // Einfahrt PS2: Bereich Abzweigfahrt noch belegt + Reset_aktiv : Bool // Einfahrt PS2: Reset ist aktiv + Schleuse_MB3333 : Struct // AMR (UH06): Schleuse MB3333 (PS2 Vorstau) + Schleuse_DL : Bool // PS2 vor Arbeitsplätze: Schleuse-Datenliste fehlerhaft + Undef_Schleuse : Bool // PS2 vor Arbeitsplätze: undefinierter Schleuse + Err_Trolley_nicht_in_Schleuse : Bool // PS2 vor Arbeitsplätze: Trolley fährt nicht in Schleuse + Err_Uebzeit : Bool // PS2 vor Arbeitsplätze: Überwachungzeit ist abgelaufen + Err_Schritt : Bool // PS2 vor Arbeitsplätze: Schritt-Nummer ist nicht definiert + Err_Stau_Einfahrt : Bool // PS2 vor Arbeitsplätze: Stau bei Bereich-Einfahrt + Err_BLKMov : Bool // PS2 vor Arbeitsplätze: Error bei Block kopieren + Err_Trolley_raus : Bool // PS2 vor Arbeitsplätze: Trolley fährt nicht aus Schleuse + Err_Raus_Sensor : Bool // PS2 vor Arbeitsplätze: Raus-Sensor wird nicht erreicht (oder dauernd aktiv)! + Err_Ziel : Bool // PS2 vor Arbeitsplätze: Trolley-Ziel nicht bekannt + Err_Weichen_DL : Bool // PS2 vor Arbeitsplätze: Weichen-Datenliste fehlerhaft + Err_Undef_Weiche : Bool // PS2 vor Arbeitsplätze: undefinierte Weiche + Err_Weiche_belegt : Bool // PS2 vor Arbeitsplätze: Weiche bleibt belegt + Err_Kein_LeseErgebnis : Bool // PS2 vor Arbeitsplätze: Kein Ergebnis von LeseEinheit + Err_Leser_nicht_bereit : Bool // PS2 vor Arbeitsplätze: Leser nicht betriebsbereit + Barcode_nicht_bekannt : Bool // PS2 vor Arbeitsplätze: Barcode nicht in Datenbank vorhanden + Schleuse_MB3335 : Struct // AMR (UH06): Stopper MB3335 (PS2 / Arbeitsplatz 1) + Schleuse_DL : Bool // PS2 / Arbeitsplatz 1: Schleuse-Datenliste fehlerhaft + Undef_Schleuse : Bool // PS2 / Arbeitsplatz 1: undefinierter Schleuse + Err_Trolley_nicht_in_Schleuse : Bool // PS2 / Arbeitsplatz 1: Trolley fährt nicht in Schleuse + Err_Uebzeit : Bool // PS2 / Arbeitsplatz 1: Überwachungzeit ist abgelaufen + Err_Schritt : Bool // PS2 / Arbeitsplatz 1: Schritt-Nummer ist nicht definiert + Err_Stau_Einfahrt : Bool // PS2 / Arbeitsplatz 1: Stau bei Bereich-Einfahrt + Err_BLKMov : Bool // PS2 / Arbeitsplatz 1: Error bei Block kopieren + Err_Trolley_raus : Bool // PS2 / Arbeitsplatz 1: Trolley fährt nicht aus Schleuse + Err_Raus_Sensor : Bool // PS2 / Arbeitsplatz 1: Raus-Sensor wird nicht erreicht (oder dauernd aktiv)! + Err_Ziel : Bool // PS2 / Arbeitsplatz 1: Trolley-Ziel nicht bekannt + Err_Weichen_DL : Bool // PS2 / Arbeitsplatz 1: Weichen-Datenliste fehlerhaft + Err_Undef_Weiche : Bool // PS2 / Arbeitsplatz 1: undefinierte Weiche + Err_Weiche_belegt : Bool // PS2 / Arbeitsplatz 1: Weiche bleibt belegt + Err_Kein_LeseErgebnis : Bool // PS2 / Arbeitsplatz 1: Kein Ergebnis von LeseEinheit + Err_Leser_nicht_bereit : Bool // PS2 / Arbeitsplatz 1: Leser nicht betriebsbereit + Barcode_nicht_bekannt : Bool // PS2 / Arbeitsplatz 1: Barcode nicht in Datenbank vorhanden + Schleuse_MB3341 : Struct // AMR (UH06): Stopper MB3341 (PS2 / Arbeitsplatz 2) + Schleuse_DL : Bool // PS2 / Arbeitsplatz 2: Schleuse-Datenliste fehlerhaft + Undef_Schleuse : Bool // PS2 / Arbeitsplatz 2: undefinierter Schleuse + Err_Trolley_nicht_in_Schleuse : Bool // PS2 / Arbeitsplatz 2: Trolley fährt nicht in Schleuse + Err_Uebzeit : Bool // PS2 / Arbeitsplatz 2: Überwachungzeit ist abgelaufen + Err_Schritt : Bool // PS2 / Arbeitsplatz 2: Schritt-Nummer ist nicht definiert + Err_Stau_Einfahrt : Bool // PS2 / Arbeitsplatz 2: Stau bei Bereich-Einfahrt + Err_BLKMov : Bool // PS2 / Arbeitsplatz 2: Error bei Block kopieren + Err_Trolley_raus : Bool // PS2 / Arbeitsplatz 2: Trolley fährt nicht aus Schleuse + Err_Raus_Sensor : Bool // PS2 / Arbeitsplatz 2: Raus-Sensor wird nicht erreicht (oder dauernd aktiv)! + Err_Ziel : Bool // PS2 / Arbeitsplatz 2: Trolley-Ziel nicht bekannt + Err_Weichen_DL : Bool // PS2 / Arbeitsplatz 2: Weichen-Datenliste fehlerhaft + Err_Undef_Weiche : Bool // PS2 / Arbeitsplatz 2: undefinierte Weiche + Err_Weiche_belegt : Bool // PS2 / Arbeitsplatz 2: Weiche bleibt belegt + Err_Kein_LeseErgebnis : Bool // PS2 / Arbeitsplatz 2: Kein Ergebnis von LeseEinheit + Err_Leser_nicht_bereit : Bool // PS2 / Arbeitsplatz 2: Leser nicht betriebsbereit + Barcode_nicht_bekannt : Bool // PS2 / Arbeitsplatz 2: Barcode nicht in Datenbank vorhanden + Schleuse_MB3345 : Struct // AMR (UH06): Stopper MB3345 (PS2 / Arbeitsplatz 3) + Schleuse_DL : Bool // PS2 / Arbeitsplatz 3: Schleuse-Datenliste fehlerhaft + Undef_Schleuse : Bool // PS2 / Arbeitsplatz 3: undefinierter Schleuse + Err_Trolley_nicht_in_Schleuse : Bool // PS2 / Arbeitsplatz 3: Trolley fährt nicht in Schleuse + Err_Uebzeit : Bool // PS2 / Arbeitsplatz 3: Überwachungzeit ist abgelaufen + Err_Schritt : Bool // PS2 / Arbeitsplatz 3: Schritt-Nummer ist nicht definiert + Err_Stau_Einfahrt : Bool // PS2 / Arbeitsplatz 3: Stau bei Bereich-Einfahrt + Err_BLKMov : Bool // PS2 / Arbeitsplatz 3: Error bei Block kopieren + Err_Trolley_raus : Bool // PS2 / Arbeitsplatz 3: Trolley fährt nicht aus Schleuse + Err_Raus_Sensor : Bool // PS2 / Arbeitsplatz 3: Raus-Sensor wird nicht erreicht (oder dauernd aktiv)! + Err_Ziel : Bool // PS2 / Arbeitsplatz 3: Trolley-Ziel nicht bekannt + Err_Weichen_DL : Bool // PS2 / Arbeitsplatz 3: Weichen-Datenliste fehlerhaft + Err_Undef_Weiche : Bool // PS2 / Arbeitsplatz 3: undefinierte Weiche + Err_Weiche_belegt : Bool // PS2 / Arbeitsplatz 3: Weiche bleibt belegt + Err_Kein_LeseErgebnis : Bool // PS2 / Arbeitsplatz 3: Kein Ergebnis von LeseEinheit + Err_Leser_nicht_bereit : Bool // PS2 / Arbeitsplatz 3: Leser nicht betriebsbereit + Barcode_nicht_bekannt : Bool // PS2 / Arbeitsplatz 3: Barcode nicht in Datenbank vorhanden + Schleuse_MB3351 : Struct // AMR (UH06): Schleuse MB3351 (PS2 Nachstau) + Schleuse_DL : Bool // PS2 vor Ausfahrt: Schleuse-Datenliste fehlerhaft + Undef_Schleuse : Bool // PS2 vor Ausfahrt: undefinierter Schleuse + Err_Trolley_nicht_in_Schleuse : Bool // PS2 vor Ausfahrt: Trolley fährt nicht in Schleuse + Err_Uebzeit : Bool // PS2 vor Ausfahrt: Überwachungzeit ist abgelaufen + Err_Schritt : Bool // PS2 vor Ausfahrt: Schritt-Nummer ist nicht definiert + Err_Stau_Einfahrt : Bool // PS2 vor Ausfahrt: Stau bei Bereich-Einfahrt + Err_BLKMov : Bool // PS2 vor Ausfahrt: Error bei Block kopieren + Err_Trolley_raus : Bool // PS2 vor Ausfahrt: Trolley fährt nicht aus Schleuse + Err_Raus_Sensor : Bool // PS2 vor Ausfahrt: Raus-Sensor wird nicht erreicht (oder dauernd aktiv)! + Err_Ziel : Bool // PS2 vor Ausfahrt: Trolley-Ziel nicht bekannt + Err_Weichen_DL : Bool // PS2 vor Ausfahrt: Weichen-Datenliste fehlerhaft + Err_Undef_Weiche : Bool // PS2 vor Ausfahrt: undefinierte Weiche + Err_Weiche_belegt : Bool // PS2 vor Ausfahrt: Weiche bleibt belegt + Err_Kein_LeseErgebnis : Bool // PS2 vor Ausfahrt: Kein Ergebnis von LeseEinheit + Err_Leser_nicht_bereit : Bool // PS2 vor Ausfahrt: Leser nicht betriebsbereit + Barcode_nicht_bekannt : Bool // PS2 vor Ausfahrt: Barcode nicht in Datenbank vorhanden + Schleuse_MB3353 : Struct // AMR (UH06): Schleuse MB3353 (Vor Ausfahrt PS2) + Schleuse_DL : Bool // Vor PS2-Ausfahrt: Schleuse-Datenliste fehlerhaft + Undef_Schleuse : Bool // Vor PS2-Ausfahrt: undefinierter Schleuse + Err_Trolley_nicht_in_Schleuse : Bool // Vor PS2-Ausfahrt: Trolley fährt nicht in Schleuse + Err_Uebzeit : Bool // Vor PS2-Ausfahrt: Überwachungzeit ist abgelaufen + Err_Schritt : Bool // Vor PS2-Ausfahrt: Schritt-Nummer ist nicht definiert + Err_Stau_Einfahrt : Bool // Vor PS2-Ausfahrt: Stau bei Bereich-Einfahrt + Err_BLKMov : Bool // Vor PS2-Ausfahrt: Error bei Block kopieren + Err_Trolley_raus : Bool // Vor PS2-Ausfahrt: Trolley fährt nicht aus Schleuse + Err_Raus_Sensor : Bool // Vor PS2-Ausfahrt: Raus-Sensor wird nicht erreicht (oder dauernd aktiv)! + Err_Ziel : Bool // Vor PS2-Ausfahrt: Trolley-Ziel nicht bekannt + Err_Weichen_DL : Bool // Vor PS2-Ausfahrt: Weichen-Datenliste fehlerhaft + Err_Undef_Weiche : Bool // Vor PS2-Ausfahrt: undefinierte Weiche + Err_Weiche_belegt : Bool // Vor PS2-Ausfahrt: Weiche bleibt belegt + Err_Kein_LeseErgebnis : Bool // Vor PS2-Ausfahrt: Kein Ergebnis von LeseEinheit + Err_Leser_nicht_bereit : Bool // Vor PS2-Ausfahrt: Leser nicht betriebsbereit + Barcode_nicht_bekannt : Bool // Vor PS2-Ausfahrt: Barcode nicht in Datenbank vorhanden + Reserve278 : Struct // AMR (UH06): Reserve278 + Schleuse_DL : Bool // Vor Einfahrt PS1: Schleuse-Datenliste fehlerhaft + Undef_Schleuse : Bool // Vor Einfahrt PS1: undefinierter Schleuse + Err_Trolley_nicht_in_Schleuse : Bool // Vor Einfahrt PS1: Trolley fährt nicht in Schleuse + Err_Uebzeit : Bool // Vor Einfahrt PS1: Überwachungzeit ist abgelaufen + Err_Schritt : Bool // Vor Einfahrt PS1: Schritt-Nummer ist nicht definiert + Err_Stau_Einfahrt : Bool // Vor Einfahrt PS1: Stau bei Bereich-Einfahrt + Err_BLKMov : Bool // Vor Einfahrt PS1: Error bei Block kopieren + Err_Trolley_raus : Bool // Vor Einfahrt PS1: Trolley fährt nicht aus Schleuse + Err_Raus_Sensor : Bool // Vor Einfahrt PS1: Raus-Sensor wird nicht erreicht (oder dauernd aktiv)! + Err_Ziel : Bool // Vor Einfahrt PS1: Trolley-Ziel nicht bekannt + Err_Weichen_DL : Bool // Vor Einfahrt PS1: Weichen-Datenliste fehlerhaft + Err_Undef_Weiche : Bool // Vor Einfahrt PS1: undefinierte Weiche + Err_Weiche_belegt : Bool // Vor Einfahrt PS1: Weiche bleibt belegt + Err_Kein_LeseErgebnis : Bool // Vor Einfahrt PS1: Kein Ergebnis von LeseEinheit + Err_Leser_nicht_bereit : Bool // Vor Einfahrt PS1: Leser nicht betriebsbereit + Barcode_nicht_bekannt : Bool // Vor Einfahrt PS1: Barcode nicht in Datenbank vorhanden + Weiche_MB3362 : Struct // AMR (UH06): Weiche MB3362 (Einfahrt PS1) + Weichen_DL : Bool // Einfahrt PS1: Weichen-Datenliste fehlerhaft + Undef_Weiche : Bool // Einfahrt PS1: undefinierte Weiche + BLKMov : Bool // Einfahrt PS1: Fehler bei Block kopieren + Undef_Bereich+1 : Bool // Einfahrt PS1: Bereich +1 unbekannt + Frei04 : Bool // Einfahrt PS1: Frei04 + Frei05 : Bool // Einfahrt PS1: Frei05 + Ziel_undefiniert : Bool // Einfahrt PS1: Ziel ist undefiniert + Err_Schleusen_DL : Bool // Einfahrt PS1: Schleusen-Datenliste fehlerhaft + Err_Undef_Schleuse-1 : Bool // Einfahrt PS1: undefinierte Schleuse -1 + Übzeit_Gerade : Bool // Einfahrt PS1: Trolley bei Geradefahrt in Weiche verklemmt (-> Antrieb gestoppt) + Übzeit_Abzweig : Bool // Einfahrt PS1: Trolley bei Abzweigfahrt in Weiche verklemmt (-> Antrieb gestoppt) + Gerade_Sensor_aktiv : Bool // Einfahrt PS1: Ziel-Sensor Geradefahrt aktiv + Abzweig_Sensor_aktiv : Bool // Einfahrt PS1: Ziel-Sensor Abzweigfahrt aktiv + Gerade_Bereich_belegt : Bool // Einfahrt PS1: Bereich Geradefahrt noch belegt + Abzweig_Bereich_belegt : Bool // Einfahrt PS1: Bereich Abzweigfahrt noch belegt + Reset_aktiv : Bool // Einfahrt PS1: Reset ist aktiv + Schleuse_MB3363 : Struct // AMR (UH06): Schleuse MB3363 (PS1 Vorstau) + Schleuse_DL : Bool // PS1 vor Arbeitsplätze: Schleuse-Datenliste fehlerhaft + Undef_Schleuse : Bool // PS1 vor Arbeitsplätze: undefinierter Schleuse + Err_Trolley_nicht_in_Schleuse : Bool // PS1 vor Arbeitsplätze: Trolley fährt nicht in Schleuse + Err_Uebzeit : Bool // PS1 vor Arbeitsplätze: Überwachungzeit ist abgelaufen + Err_Schritt : Bool // PS1 vor Arbeitsplätze: Schritt-Nummer ist nicht definiert + Err_Stau_Einfahrt : Bool // PS1 vor Arbeitsplätze: Stau bei Bereich-Einfahrt + Err_BLKMov : Bool // PS1 vor Arbeitsplätze: Error bei Block kopieren + Err_Trolley_raus : Bool // PS1 vor Arbeitsplätze: Trolley fährt nicht aus Schleuse + Err_Raus_Sensor : Bool // PS1 vor Arbeitsplätze: Raus-Sensor wird nicht erreicht (oder dauernd aktiv)! + Err_Ziel : Bool // PS1 vor Arbeitsplätze: Trolley-Ziel nicht bekannt + Err_Weichen_DL : Bool // PS1 vor Arbeitsplätze: Weichen-Datenliste fehlerhaft + Err_Undef_Weiche : Bool // PS1 vor Arbeitsplätze: undefinierte Weiche + Err_Weiche_belegt : Bool // PS1 vor Arbeitsplätze: Weiche bleibt belegt + Err_Kein_LeseErgebnis : Bool // PS1 vor Arbeitsplätze: Kein Ergebnis von LeseEinheit + Err_Leser_nicht_bereit : Bool // PS1 vor Arbeitsplätze: Leser nicht betriebsbereit + Barcode_nicht_bekannt : Bool // PS1 vor Arbeitsplätze: Barcode nicht in Datenbank vorhanden + Schleuse_MB3365 : Struct // AMR (UH06): Stopper MB3365 (PS1 / Arbeitsplatz 1) + Schleuse_DL : Bool // PS1 / Arbeitsplatz 1: Schleuse-Datenliste fehlerhaft + Undef_Schleuse : Bool // PS1 / Arbeitsplatz 1: undefinierter Schleuse + Err_Trolley_nicht_in_Schleuse : Bool // PS1 / Arbeitsplatz 1: Trolley fährt nicht in Schleuse + Err_Uebzeit : Bool // PS1 / Arbeitsplatz 1: Überwachungzeit ist abgelaufen + Err_Schritt : Bool // PS1 / Arbeitsplatz 1: Schritt-Nummer ist nicht definiert + Err_Stau_Einfahrt : Bool // PS1 / Arbeitsplatz 1: Stau bei Bereich-Einfahrt + Err_BLKMov : Bool // PS1 / Arbeitsplatz 1: Error bei Block kopieren + Err_Trolley_raus : Bool // PS1 / Arbeitsplatz 1: Trolley fährt nicht aus Schleuse + Err_Raus_Sensor : Bool // PS1 / Arbeitsplatz 1: Raus-Sensor wird nicht erreicht (oder dauernd aktiv)! + Err_Ziel : Bool // PS1 / Arbeitsplatz 1: Trolley-Ziel nicht bekannt + Err_Weichen_DL : Bool // PS1 / Arbeitsplatz 1: Weichen-Datenliste fehlerhaft + Err_Undef_Weiche : Bool // PS1 / Arbeitsplatz 1: undefinierte Weiche + Err_Weiche_belegt : Bool // PS1 / Arbeitsplatz 1: Weiche bleibt belegt + Err_Kein_LeseErgebnis : Bool // PS1 / Arbeitsplatz 1: Kein Ergebnis von LeseEinheit + Err_Leser_nicht_bereit : Bool // PS1 / Arbeitsplatz 1: Leser nicht betriebsbereit + Barcode_nicht_bekannt : Bool // PS1 / Arbeitsplatz 1: Barcode nicht in Datenbank vorhanden + Schleuse_MB3371 : Struct // AMR (UH06): Stopper MB3371 (PS1 / Arbeitsplatz 2) + Schleuse_DL : Bool // PS1 / Arbeitsplatz 2: Schleuse-Datenliste fehlerhaft + Undef_Schleuse : Bool // PS1 / Arbeitsplatz 2: undefinierter Schleuse + Err_Trolley_nicht_in_Schleuse : Bool // PS1 / Arbeitsplatz 2: Trolley fährt nicht in Schleuse + Err_Uebzeit : Bool // PS1 / Arbeitsplatz 2: Überwachungzeit ist abgelaufen + Err_Schritt : Bool // PS1 / Arbeitsplatz 2: Schritt-Nummer ist nicht definiert + Err_Stau_Einfahrt : Bool // PS1 / Arbeitsplatz 2: Stau bei Bereich-Einfahrt + Err_BLKMov : Bool // PS1 / Arbeitsplatz 2: Error bei Block kopieren + Err_Trolley_raus : Bool // PS1 / Arbeitsplatz 2: Trolley fährt nicht aus Schleuse + Err_Raus_Sensor : Bool // PS1 / Arbeitsplatz 2: Raus-Sensor wird nicht erreicht (oder dauernd aktiv)! + Err_Ziel : Bool // PS1 / Arbeitsplatz 2: Trolley-Ziel nicht bekannt + Err_Weichen_DL : Bool // PS1 / Arbeitsplatz 2: Weichen-Datenliste fehlerhaft + Err_Undef_Weiche : Bool // PS1 / Arbeitsplatz 2: undefinierte Weiche + Err_Weiche_belegt : Bool // PS1 / Arbeitsplatz 2: Weiche bleibt belegt + Err_Kein_LeseErgebnis : Bool // PS1 / Arbeitsplatz 2: Kein Ergebnis von LeseEinheit + Err_Leser_nicht_bereit : Bool // PS1 / Arbeitsplatz 2: Leser nicht betriebsbereit + Barcode_nicht_bekannt : Bool // PS1 / Arbeitsplatz 2: Barcode nicht in Datenbank vorhanden + Schleuse_MB3375 : Struct // AMR (UH06): Stopper MB3375 (PS1 / Arbeitsplatz 3) + Schleuse_DL : Bool // PS1 / Arbeitsplatz 3: Schleuse-Datenliste fehlerhaft + Undef_Schleuse : Bool // PS1 / Arbeitsplatz 3: undefinierter Schleuse + Err_Trolley_nicht_in_Schleuse : Bool // PS1 / Arbeitsplatz 3: Trolley fährt nicht in Schleuse + Err_Uebzeit : Bool // PS1 / Arbeitsplatz 3: Überwachungzeit ist abgelaufen + Err_Schritt : Bool // PS1 / Arbeitsplatz 3: Schritt-Nummer ist nicht definiert + Err_Stau_Einfahrt : Bool // PS1 / Arbeitsplatz 3: Stau bei Bereich-Einfahrt + Err_BLKMov : Bool // PS1 / Arbeitsplatz 3: Error bei Block kopieren + Err_Trolley_raus : Bool // PS1 / Arbeitsplatz 3: Trolley fährt nicht aus Schleuse + Err_Raus_Sensor : Bool // PS1 / Arbeitsplatz 3: Raus-Sensor wird nicht erreicht (oder dauernd aktiv)! + Err_Ziel : Bool // PS1 / Arbeitsplatz 3: Trolley-Ziel nicht bekannt + Err_Weichen_DL : Bool // PS1 / Arbeitsplatz 3: Weichen-Datenliste fehlerhaft + Err_Undef_Weiche : Bool // PS1 / Arbeitsplatz 3: undefinierte Weiche + Err_Weiche_belegt : Bool // PS1 / Arbeitsplatz 3: Weiche bleibt belegt + Err_Kein_LeseErgebnis : Bool // PS1 / Arbeitsplatz 3: Kein Ergebnis von LeseEinheit + Err_Leser_nicht_bereit : Bool // PS1 / Arbeitsplatz 3: Leser nicht betriebsbereit + Barcode_nicht_bekannt : Bool // PS1 / Arbeitsplatz 3: Barcode nicht in Datenbank vorhanden + Schleuse_MB3381 : Struct // AMR (UH06): Schleuse MB3381 (PS1 Nachstau) + Schleuse_DL : Bool // PS1 vor Ausfahrt: Schleuse-Datenliste fehlerhaft + Undef_Schleuse : Bool // PS1 vor Ausfahrt: undefinierter Schleuse + Err_Trolley_nicht_in_Schleuse : Bool // PS1 vor Ausfahrt: Trolley fährt nicht in Schleuse + Err_Uebzeit : Bool // PS1 vor Ausfahrt: Überwachungzeit ist abgelaufen + Err_Schritt : Bool // PS1 vor Ausfahrt: Schritt-Nummer ist nicht definiert + Err_Stau_Einfahrt : Bool // PS1 vor Ausfahrt: Stau bei Bereich-Einfahrt + Err_BLKMov : Bool // PS1 vor Ausfahrt: Error bei Block kopieren + Err_Trolley_raus : Bool // PS1 vor Ausfahrt: Trolley fährt nicht aus Schleuse + Err_Raus_Sensor : Bool // PS1 vor Ausfahrt: Raus-Sensor wird nicht erreicht (oder dauernd aktiv)! + Err_Ziel : Bool // PS1 vor Ausfahrt: Trolley-Ziel nicht bekannt + Err_Weichen_DL : Bool // PS1 vor Ausfahrt: Weichen-Datenliste fehlerhaft + Err_Undef_Weiche : Bool // PS1 vor Ausfahrt: undefinierte Weiche + Err_Weiche_belegt : Bool // PS1 vor Ausfahrt: Weiche bleibt belegt + Err_Kein_LeseErgebnis : Bool // PS1 vor Ausfahrt: Kein Ergebnis von LeseEinheit + Err_Leser_nicht_bereit : Bool // PS1 vor Ausfahrt: Leser nicht betriebsbereit + Barcode_nicht_bekannt : Bool // PS1 vor Ausfahrt: Barcode nicht in Datenbank vorhanden + Schleuse_MB3383 : Struct // AMR (UH06): Schleuse MB3383 (Vor Ausfahrt PS1) + Schleuse_DL : Bool // Vor PS1-Ausfahrt: Schleuse-Datenliste fehlerhaft + Undef_Schleuse : Bool // Vor PS1-Ausfahrt: undefinierter Schleuse + Err_Trolley_nicht_in_Schleuse : Bool // Vor PS1-Ausfahrt: Trolley fährt nicht in Schleuse + Err_Uebzeit : Bool // Vor PS1-Ausfahrt: Überwachungzeit ist abgelaufen + Err_Schritt : Bool // Vor PS1-Ausfahrt: Schritt-Nummer ist nicht definiert + Err_Stau_Einfahrt : Bool // Vor PS1-Ausfahrt: Stau bei Bereich-Einfahrt + Err_BLKMov : Bool // Vor PS1-Ausfahrt: Error bei Block kopieren + Err_Trolley_raus : Bool // Vor PS1-Ausfahrt: Trolley fährt nicht aus Schleuse + Err_Raus_Sensor : Bool // Vor PS1-Ausfahrt: Raus-Sensor wird nicht erreicht (oder dauernd aktiv)! + Err_Ziel : Bool // Vor PS1-Ausfahrt: Trolley-Ziel nicht bekannt + Err_Weichen_DL : Bool // Vor PS1-Ausfahrt: Weichen-Datenliste fehlerhaft + Err_Undef_Weiche : Bool // Vor PS1-Ausfahrt: undefinierte Weiche + Err_Weiche_belegt : Bool // Vor PS1-Ausfahrt: Weiche bleibt belegt + Err_Kein_LeseErgebnis : Bool // Vor PS1-Ausfahrt: Kein Ergebnis von LeseEinheit + Err_Leser_nicht_bereit : Bool // Vor PS1-Ausfahrt: Leser nicht betriebsbereit + Barcode_nicht_bekannt : Bool // Vor PS1-Ausfahrt: Barcode nicht in Datenbank vorhanden + Schleuse_MB3390 : Struct // AMR (UH06): Schleuse MB3390 (Vor Einfahrt MPS3) + Schleuse_DL : Bool // Vor Einfahrt MPS3: Schleuse-Datenliste fehlerhaft + Undef_Schleuse : Bool // Vor Einfahrt MPS3: undefinierter Schleuse + Err_Trolley_nicht_in_Schleuse : Bool // Vor Einfahrt MPS3: Trolley fährt nicht in Schleuse + Err_Uebzeit : Bool // Vor Einfahrt MPS3: Überwachungzeit ist abgelaufen + Err_Schritt : Bool // Vor Einfahrt MPS3: Schritt-Nummer ist nicht definiert + Err_Stau_Einfahrt : Bool // Vor Einfahrt MPS3: Stau bei Bereich-Einfahrt + Err_BLKMov : Bool // Vor Einfahrt MPS3: Error bei Block kopieren + Err_Trolley_raus : Bool // Vor Einfahrt MPS3: Trolley fährt nicht aus Schleuse + Err_Raus_Sensor : Bool // Vor Einfahrt MPS3: Raus-Sensor wird nicht erreicht (oder dauernd aktiv)! + Err_Ziel : Bool // Vor Einfahrt MPS3: Trolley-Ziel nicht bekannt + Err_Weichen_DL : Bool // Vor Einfahrt MPS3: Weichen-Datenliste fehlerhaft + Err_Undef_Weiche : Bool // Vor Einfahrt MPS3: undefinierte Weiche + Err_Weiche_belegt : Bool // Vor Einfahrt MPS3: Weiche bleibt belegt + Err_Kein_LeseErgebnis : Bool // Vor Einfahrt MPS3: Kein Ergebnis von LeseEinheit + Err_Leser_nicht_bereit : Bool // Vor Einfahrt MPS3: Leser nicht betriebsbereit + Barcode_nicht_bekannt : Bool // Vor Einfahrt MPS3: Barcode nicht in Datenbank vorhanden + Weiche_MB3392 : Struct // AMR (UH06): Weiche MB3392 (Einfahrt MPS3) + Weichen_DL : Bool // Einfahrt MPS3: Weichen-Datenliste fehlerhaft + Undef_Weiche : Bool // Einfahrt MPS3: undefinierte Weiche + BLKMov : Bool // Einfahrt MPS3: Fehler bei Block kopieren + Undef_Bereich+1 : Bool // Einfahrt MPS3: Bereich +1 unbekannt + Frei04 : Bool // Einfahrt MPS3: Frei04 + Frei05 : Bool // Einfahrt MPS3: Frei05 + Ziel_undefiniert : Bool // Einfahrt MPS3: Ziel ist undefiniert + Err_Schleusen_DL : Bool // Einfahrt MPS3: Schleusen-Datenliste fehlerhaft + Err_Undef_Schleuse-1 : Bool // Einfahrt MPS3: undefinierte Schleuse -1 + Übzeit_Gerade : Bool // Einfahrt MPS3: Trolley bei Geradefahrt in Weiche verklemmt (-> Antrieb gestoppt) + Übzeit_Abzweig : Bool // Einfahrt MPS3: Trolley bei Abzweigfahrt in Weiche verklemmt (-> Antrieb gestoppt) + Gerade_Sensor_aktiv : Bool // Einfahrt MPS3: Ziel-Sensor Geradefahrt aktiv + Abzweig_Sensor_aktiv : Bool // Einfahrt MPS3: Ziel-Sensor Abzweigfahrt aktiv + Gerade_Bereich_belegt : Bool // Einfahrt MPS3: Bereich Geradefahrt noch belegt + Abzweig_Bereich_belegt : Bool // Einfahrt MPS3: Bereich Abzweigfahrt noch belegt + Reset_aktiv : Bool // Einfahrt MPS3: Reset ist aktiv + Schleuse_MB3393 : Struct // AMR (UH06): Schleuse MB3393 (MPS3 Vorstau) + Schleuse_DL : Bool // MPS3 vor Arbeitsplätze: Schleuse-Datenliste fehlerhaft + Undef_Schleuse : Bool // MPS3 vor Arbeitsplätze: undefinierter Schleuse + Err_Trolley_nicht_in_Schleuse : Bool // MPS3 vor Arbeitsplätze: Trolley fährt nicht in Schleuse + Err_Uebzeit : Bool // MPS3 vor Arbeitsplätze: Überwachungzeit ist abgelaufen + Err_Schritt : Bool // MPS3 vor Arbeitsplätze: Schritt-Nummer ist nicht definiert + Err_Stau_Einfahrt : Bool // MPS3 vor Arbeitsplätze: Stau bei Bereich-Einfahrt + Err_BLKMov : Bool // MPS3 vor Arbeitsplätze: Error bei Block kopieren + Err_Trolley_raus : Bool // MPS3 vor Arbeitsplätze: Trolley fährt nicht aus Schleuse + Err_Raus_Sensor : Bool // MPS3 vor Arbeitsplätze: Raus-Sensor wird nicht erreicht (oder dauernd aktiv)! + Err_Ziel : Bool // MPS3 vor Arbeitsplätze: Trolley-Ziel nicht bekannt + Err_Weichen_DL : Bool // MPS3 vor Arbeitsplätze: Weichen-Datenliste fehlerhaft + Err_Undef_Weiche : Bool // MPS3 vor Arbeitsplätze: undefinierte Weiche + Err_Weiche_belegt : Bool // MPS3 vor Arbeitsplätze: Weiche bleibt belegt + Err_Kein_LeseErgebnis : Bool // MPS3 vor Arbeitsplätze: Kein Ergebnis von LeseEinheit + Err_Leser_nicht_bereit : Bool // MPS3 vor Arbeitsplätze: Leser nicht betriebsbereit + Barcode_nicht_bekannt : Bool // MPS3 vor Arbeitsplätze: Barcode nicht in Datenbank vorhanden + Schleuse_MB3395 : Struct // AMR (UH06): Stopper MB3395 (MPS3 / Arbeitsplatz 1) + Schleuse_DL : Bool // MPS3 / Arbeitsplatz 1: Schleuse-Datenliste fehlerhaft + Undef_Schleuse : Bool // MPS3 / Arbeitsplatz 1: undefinierter Schleuse + Err_Trolley_nicht_in_Schleuse : Bool // MPS3 / Arbeitsplatz 1: Trolley fährt nicht in Schleuse + Err_Uebzeit : Bool // MPS3 / Arbeitsplatz 1: Überwachungzeit ist abgelaufen + Err_Schritt : Bool // MPS3 / Arbeitsplatz 1: Schritt-Nummer ist nicht definiert + Err_Stau_Einfahrt : Bool // MPS3 / Arbeitsplatz 1: Stau bei Bereich-Einfahrt + Err_BLKMov : Bool // MPS3 / Arbeitsplatz 1: Error bei Block kopieren + Err_Trolley_raus : Bool // MPS3 / Arbeitsplatz 1: Trolley fährt nicht aus Schleuse + Err_Raus_Sensor : Bool // MPS3 / Arbeitsplatz 1: Raus-Sensor wird nicht erreicht (oder dauernd aktiv)! + Err_Ziel : Bool // MPS3 / Arbeitsplatz 1: Trolley-Ziel nicht bekannt + Err_Weichen_DL : Bool // MPS3 / Arbeitsplatz 1: Weichen-Datenliste fehlerhaft + Err_Undef_Weiche : Bool // MPS3 / Arbeitsplatz 1: undefinierte Weiche + Err_Weiche_belegt : Bool // MPS3 / Arbeitsplatz 1: Weiche bleibt belegt + Err_Kein_LeseErgebnis : Bool // MPS3 / Arbeitsplatz 1: Kein Ergebnis von LeseEinheit + Err_Leser_nicht_bereit : Bool // MPS3 / Arbeitsplatz 1: Leser nicht betriebsbereit + Barcode_nicht_bekannt : Bool // MPS3 / Arbeitsplatz 1: Barcode nicht in Datenbank vorhanden + Schleuse_MB3401 : Struct // AMR (UH06): Stopper MB3401 (MPS3 / Arbeitsplatz 2) + Schleuse_DL : Bool // MPS3 / Arbeitsplatz 2: Schleuse-Datenliste fehlerhaft + Undef_Schleuse : Bool // MPS3 / Arbeitsplatz 2: undefinierter Schleuse + Err_Trolley_nicht_in_Schleuse : Bool // MPS3 / Arbeitsplatz 2: Trolley fährt nicht in Schleuse + Err_Uebzeit : Bool // MPS3 / Arbeitsplatz 2: Überwachungzeit ist abgelaufen + Err_Schritt : Bool // MPS3 / Arbeitsplatz 2: Schritt-Nummer ist nicht definiert + Err_Stau_Einfahrt : Bool // MPS3 / Arbeitsplatz 2: Stau bei Bereich-Einfahrt + Err_BLKMov : Bool // MPS3 / Arbeitsplatz 2: Error bei Block kopieren + Err_Trolley_raus : Bool // MPS3 / Arbeitsplatz 2: Trolley fährt nicht aus Schleuse + Err_Raus_Sensor : Bool // MPS3 / Arbeitsplatz 2: Raus-Sensor wird nicht erreicht (oder dauernd aktiv)! + Err_Ziel : Bool // MPS3 / Arbeitsplatz 2: Trolley-Ziel nicht bekannt + Err_Weichen_DL : Bool // MPS3 / Arbeitsplatz 2: Weichen-Datenliste fehlerhaft + Err_Undef_Weiche : Bool // MPS3 / Arbeitsplatz 2: undefinierte Weiche + Err_Weiche_belegt : Bool // MPS3 / Arbeitsplatz 2: Weiche bleibt belegt + Err_Kein_LeseErgebnis : Bool // MPS3 / Arbeitsplatz 2: Kein Ergebnis von LeseEinheit + Err_Leser_nicht_bereit : Bool // MPS3 / Arbeitsplatz 2: Leser nicht betriebsbereit + Barcode_nicht_bekannt : Bool // MPS3 / Arbeitsplatz 2: Barcode nicht in Datenbank vorhanden + Schleuse_MB3405 : Struct // AMR (UH06): Stopper MB3405 (MPS3 / Arbeitsplatz 3) + Schleuse_DL : Bool // MPS3 / Arbeitsplatz 3: Schleuse-Datenliste fehlerhaft + Undef_Schleuse : Bool // MPS3 / Arbeitsplatz 3: undefinierter Schleuse + Err_Trolley_nicht_in_Schleuse : Bool // MPS3 / Arbeitsplatz 3: Trolley fährt nicht in Schleuse + Err_Uebzeit : Bool // MPS3 / Arbeitsplatz 3: Überwachungzeit ist abgelaufen + Err_Schritt : Bool // MPS3 / Arbeitsplatz 3: Schritt-Nummer ist nicht definiert + Err_Stau_Einfahrt : Bool // MPS3 / Arbeitsplatz 3: Stau bei Bereich-Einfahrt + Err_BLKMov : Bool // MPS3 / Arbeitsplatz 3: Error bei Block kopieren + Err_Trolley_raus : Bool // MPS3 / Arbeitsplatz 3: Trolley fährt nicht aus Schleuse + Err_Raus_Sensor : Bool // MPS3 / Arbeitsplatz 3: Raus-Sensor wird nicht erreicht (oder dauernd aktiv)! + Err_Ziel : Bool // MPS3 / Arbeitsplatz 3: Trolley-Ziel nicht bekannt + Err_Weichen_DL : Bool // MPS3 / Arbeitsplatz 3: Weichen-Datenliste fehlerhaft + Err_Undef_Weiche : Bool // MPS3 / Arbeitsplatz 3: undefinierte Weiche + Err_Weiche_belegt : Bool // MPS3 / Arbeitsplatz 3: Weiche bleibt belegt + Err_Kein_LeseErgebnis : Bool // MPS3 / Arbeitsplatz 3: Kein Ergebnis von LeseEinheit + Err_Leser_nicht_bereit : Bool // MPS3 / Arbeitsplatz 3: Leser nicht betriebsbereit + Barcode_nicht_bekannt : Bool // MPS3 / Arbeitsplatz 3: Barcode nicht in Datenbank vorhanden + Schleuse_MB3411 : Struct // AMR (UH06): Schleuse MB3411 (MPS3 Nachstau) + Schleuse_DL : Bool // MPS3 vor Ausfahrt: Schleuse-Datenliste fehlerhaft + Undef_Schleuse : Bool // MPS3 vor Ausfahrt: undefinierter Schleuse + Err_Trolley_nicht_in_Schleuse : Bool // MPS3 vor Ausfahrt: Trolley fährt nicht in Schleuse + Err_Uebzeit : Bool // MPS3 vor Ausfahrt: Überwachungzeit ist abgelaufen + Err_Schritt : Bool // MPS3 vor Ausfahrt: Schritt-Nummer ist nicht definiert + Err_Stau_Einfahrt : Bool // MPS3 vor Ausfahrt: Stau bei Bereich-Einfahrt + Err_BLKMov : Bool // MPS3 vor Ausfahrt: Error bei Block kopieren + Err_Trolley_raus : Bool // MPS3 vor Ausfahrt: Trolley fährt nicht aus Schleuse + Err_Raus_Sensor : Bool // MPS3 vor Ausfahrt: Raus-Sensor wird nicht erreicht (oder dauernd aktiv)! + Err_Ziel : Bool // MPS3 vor Ausfahrt: Trolley-Ziel nicht bekannt + Err_Weichen_DL : Bool // MPS3 vor Ausfahrt: Weichen-Datenliste fehlerhaft + Err_Undef_Weiche : Bool // MPS3 vor Ausfahrt: undefinierte Weiche + Err_Weiche_belegt : Bool // MPS3 vor Ausfahrt: Weiche bleibt belegt + Err_Kein_LeseErgebnis : Bool // MPS3 vor Ausfahrt: Kein Ergebnis von LeseEinheit + Err_Leser_nicht_bereit : Bool // MPS3 vor Ausfahrt: Leser nicht betriebsbereit + Barcode_nicht_bekannt : Bool // MPS3 vor Ausfahrt: Barcode nicht in Datenbank vorhanden + Schleuse_MB3413 : Struct // AMR (UH06): Schleuse MB3413 (Vor Ausfahrt MPS3) + Schleuse_DL : Bool // Vor MPS3-Ausfahrt: Schleuse-Datenliste fehlerhaft + Undef_Schleuse : Bool // Vor MPS3-Ausfahrt: undefinierter Schleuse + Err_Trolley_nicht_in_Schleuse : Bool // Vor MPS3-Ausfahrt: Trolley fährt nicht in Schleuse + Err_Uebzeit : Bool // Vor MPS3-Ausfahrt: Überwachungzeit ist abgelaufen + Err_Schritt : Bool // Vor MPS3-Ausfahrt: Schritt-Nummer ist nicht definiert + Err_Stau_Einfahrt : Bool // Vor MPS3-Ausfahrt: Stau bei Bereich-Einfahrt + Err_BLKMov : Bool // Vor MPS3-Ausfahrt: Error bei Block kopieren + Err_Trolley_raus : Bool // Vor MPS3-Ausfahrt: Trolley fährt nicht aus Schleuse + Err_Raus_Sensor : Bool // Vor MPS3-Ausfahrt: Raus-Sensor wird nicht erreicht (oder dauernd aktiv)! + Err_Ziel : Bool // Vor MPS3-Ausfahrt: Trolley-Ziel nicht bekannt + Err_Weichen_DL : Bool // Vor MPS3-Ausfahrt: Weichen-Datenliste fehlerhaft + Err_Undef_Weiche : Bool // Vor MPS3-Ausfahrt: undefinierte Weiche + Err_Weiche_belegt : Bool // Vor MPS3-Ausfahrt: Weiche bleibt belegt + Err_Kein_LeseErgebnis : Bool // Vor MPS3-Ausfahrt: Kein Ergebnis von LeseEinheit + Err_Leser_nicht_bereit : Bool // Vor MPS3-Ausfahrt: Leser nicht betriebsbereit + Barcode_nicht_bekannt : Bool // Vor MPS3-Ausfahrt: Barcode nicht in Datenbank vorhanden + Schleuse_MB3421 : Struct // AMR (UH06): Schleuse MB3421 (Vor Einfahrt MPS2) + Schleuse_DL : Bool // Vor Einfahrt MPS2: Schleuse-Datenliste fehlerhaft + Undef_Schleuse : Bool // Vor Einfahrt MPS2: undefinierter Schleuse + Err_Trolley_nicht_in_Schleuse : Bool // Vor Einfahrt MPS2: Trolley fährt nicht in Schleuse + Err_Uebzeit : Bool // Vor Einfahrt MPS2: Überwachungzeit ist abgelaufen + Err_Schritt : Bool // Vor Einfahrt MPS2: Schritt-Nummer ist nicht definiert + Err_Stau_Einfahrt : Bool // Vor Einfahrt MPS2: Stau bei Bereich-Einfahrt + Err_BLKMov : Bool // Vor Einfahrt MPS2: Error bei Block kopieren + Err_Trolley_raus : Bool // Vor Einfahrt MPS2: Trolley fährt nicht aus Schleuse + Err_Raus_Sensor : Bool // Vor Einfahrt MPS2: Raus-Sensor wird nicht erreicht (oder dauernd aktiv)! + Err_Ziel : Bool // Vor Einfahrt MPS2: Trolley-Ziel nicht bekannt + Err_Weichen_DL : Bool // Vor Einfahrt MPS2: Weichen-Datenliste fehlerhaft + Err_Undef_Weiche : Bool // Vor Einfahrt MPS2: undefinierte Weiche + Err_Weiche_belegt : Bool // Vor Einfahrt MPS2: Weiche bleibt belegt + Err_Kein_LeseErgebnis : Bool // Vor Einfahrt MPS2: Kein Ergebnis von LeseEinheit + Err_Leser_nicht_bereit : Bool // Vor Einfahrt MPS2: Leser nicht betriebsbereit + Barcode_nicht_bekannt : Bool // Vor Einfahrt MPS2: Barcode nicht in Datenbank vorhanden + Weiche_MB3422 : Struct // AMR (UH06): Weiche MB3422 (Einfahrt MPS2) + Weichen_DL : Bool // Einfahrt MPS2: Weichen-Datenliste fehlerhaft + Undef_Weiche : Bool // Einfahrt MPS2: undefinierte Weiche + BLKMov : Bool // Einfahrt MPS2: Fehler bei Block kopieren + Undef_Bereich+1 : Bool // Einfahrt MPS2: Bereich +1 unbekannt + Frei04 : Bool // Einfahrt MPS2: Frei04 + Frei05 : Bool // Einfahrt MPS2: Frei05 + Ziel_undefiniert : Bool // Einfahrt MPS2: Ziel ist undefiniert + Err_Schleusen_DL : Bool // Einfahrt MPS2: Schleusen-Datenliste fehlerhaft + Err_Undef_Schleuse-1 : Bool // Einfahrt MPS2: undefinierte Schleuse -1 + Übzeit_Gerade : Bool // Einfahrt MPS2: Trolley bei Geradefahrt in Weiche verklemmt (-> Antrieb gestoppt) + Übzeit_Abzweig : Bool // Einfahrt MPS2: Trolley bei Abzweigfahrt in Weiche verklemmt (-> Antrieb gestoppt) + Gerade_Sensor_aktiv : Bool // Einfahrt MPS2: Ziel-Sensor Geradefahrt aktiv + Abzweig_Sensor_aktiv : Bool // Einfahrt MPS2: Ziel-Sensor Abzweigfahrt aktiv + Gerade_Bereich_belegt : Bool // Einfahrt MPS2: Bereich Geradefahrt noch belegt + Abzweig_Bereich_belegt : Bool // Einfahrt MPS2: Bereich Abzweigfahrt noch belegt + Reset_aktiv : Bool // Einfahrt MPS2: Reset ist aktiv + Schleuse_MB3423 : Struct // AMR (UH06): Schleuse MB3423 (MPS2 Vorstau) + Schleuse_DL : Bool // MPS2 vor Arbeitsplätze: Schleuse-Datenliste fehlerhaft + Undef_Schleuse : Bool // MPS2 vor Arbeitsplätze: undefinierter Schleuse + Err_Trolley_nicht_in_Schleuse : Bool // MPS2 vor Arbeitsplätze: Trolley fährt nicht in Schleuse + Err_Uebzeit : Bool // MPS2 vor Arbeitsplätze: Überwachungzeit ist abgelaufen + Err_Schritt : Bool // MPS2 vor Arbeitsplätze: Schritt-Nummer ist nicht definiert + Err_Stau_Einfahrt : Bool // MPS2 vor Arbeitsplätze: Stau bei Bereich-Einfahrt + Err_BLKMov : Bool // MPS2 vor Arbeitsplätze: Error bei Block kopieren + Err_Trolley_raus : Bool // MPS2 vor Arbeitsplätze: Trolley fährt nicht aus Schleuse + Err_Raus_Sensor : Bool // MPS2 vor Arbeitsplätze: Raus-Sensor wird nicht erreicht (oder dauernd aktiv)! + Err_Ziel : Bool // MPS2 vor Arbeitsplätze: Trolley-Ziel nicht bekannt + Err_Weichen_DL : Bool // MPS2 vor Arbeitsplätze: Weichen-Datenliste fehlerhaft + Err_Undef_Weiche : Bool // MPS2 vor Arbeitsplätze: undefinierte Weiche + Err_Weiche_belegt : Bool // MPS2 vor Arbeitsplätze: Weiche bleibt belegt + Err_Kein_LeseErgebnis : Bool // MPS2 vor Arbeitsplätze: Kein Ergebnis von LeseEinheit + Err_Leser_nicht_bereit : Bool // MPS2 vor Arbeitsplätze: Leser nicht betriebsbereit + Barcode_nicht_bekannt : Bool // MPS2 vor Arbeitsplätze: Barcode nicht in Datenbank vorhanden + Schleuse_MB3425 : Struct // AMR (UH06): Stopper MB3425 (MPS2 / Arbeitsplatz 1) + Schleuse_DL : Bool // MPS2 / Arbeitsplatz 1: Schleuse-Datenliste fehlerhaft + Undef_Schleuse : Bool // MPS2 / Arbeitsplatz 1: undefinierter Schleuse + Err_Trolley_nicht_in_Schleuse : Bool // MPS2 / Arbeitsplatz 1: Trolley fährt nicht in Schleuse + Err_Uebzeit : Bool // MPS2 / Arbeitsplatz 1: Überwachungzeit ist abgelaufen + Err_Schritt : Bool // MPS2 / Arbeitsplatz 1: Schritt-Nummer ist nicht definiert + Err_Stau_Einfahrt : Bool // MPS2 / Arbeitsplatz 1: Stau bei Bereich-Einfahrt + Err_BLKMov : Bool // MPS2 / Arbeitsplatz 1: Error bei Block kopieren + Err_Trolley_raus : Bool // MPS2 / Arbeitsplatz 1: Trolley fährt nicht aus Schleuse + Err_Raus_Sensor : Bool // MPS2 / Arbeitsplatz 1: Raus-Sensor wird nicht erreicht (oder dauernd aktiv)! + Err_Ziel : Bool // MPS2 / Arbeitsplatz 1: Trolley-Ziel nicht bekannt + Err_Weichen_DL : Bool // MPS2 / Arbeitsplatz 1: Weichen-Datenliste fehlerhaft + Err_Undef_Weiche : Bool // MPS2 / Arbeitsplatz 1: undefinierte Weiche + Err_Weiche_belegt : Bool // MPS2 / Arbeitsplatz 1: Weiche bleibt belegt + Err_Kein_LeseErgebnis : Bool // MPS2 / Arbeitsplatz 1: Kein Ergebnis von LeseEinheit + Err_Leser_nicht_bereit : Bool // MPS2 / Arbeitsplatz 1: Leser nicht betriebsbereit + Barcode_nicht_bekannt : Bool // MPS2 / Arbeitsplatz 1: Barcode nicht in Datenbank vorhanden + Schleuse_MB3431 : Struct // AMR (UH06): Stopper MB3431 (MPS2 / Arbeitsplatz 2) + Schleuse_DL : Bool // MPS2 / Arbeitsplatz 2: Schleuse-Datenliste fehlerhaft + Undef_Schleuse : Bool // MPS2 / Arbeitsplatz 2: undefinierter Schleuse + Err_Trolley_nicht_in_Schleuse : Bool // MPS2 / Arbeitsplatz 2: Trolley fährt nicht in Schleuse + Err_Uebzeit : Bool // MPS2 / Arbeitsplatz 2: Überwachungzeit ist abgelaufen + Err_Schritt : Bool // MPS2 / Arbeitsplatz 2: Schritt-Nummer ist nicht definiert + Err_Stau_Einfahrt : Bool // MPS2 / Arbeitsplatz 2: Stau bei Bereich-Einfahrt + Err_BLKMov : Bool // MPS2 / Arbeitsplatz 2: Error bei Block kopieren + Err_Trolley_raus : Bool // MPS2 / Arbeitsplatz 2: Trolley fährt nicht aus Schleuse + Err_Raus_Sensor : Bool // MPS2 / Arbeitsplatz 2: Raus-Sensor wird nicht erreicht (oder dauernd aktiv)! + Err_Ziel : Bool // MPS2 / Arbeitsplatz 2: Trolley-Ziel nicht bekannt + Err_Weichen_DL : Bool // MPS2 / Arbeitsplatz 2: Weichen-Datenliste fehlerhaft + Err_Undef_Weiche : Bool // MPS2 / Arbeitsplatz 2: undefinierte Weiche + Err_Weiche_belegt : Bool // MPS2 / Arbeitsplatz 2: Weiche bleibt belegt + Err_Kein_LeseErgebnis : Bool // MPS2 / Arbeitsplatz 2: Kein Ergebnis von LeseEinheit + Err_Leser_nicht_bereit : Bool // MPS2 / Arbeitsplatz 2: Leser nicht betriebsbereit + Barcode_nicht_bekannt : Bool // MPS2 / Arbeitsplatz 2: Barcode nicht in Datenbank vorhanden + Schleuse_MB3435 : Struct // AMR (UH06): Stopper MB3435 (MPS2 / Arbeitsplatz 3) + Schleuse_DL : Bool // MPS2 / Arbeitsplatz 3: Schleuse-Datenliste fehlerhaft + Undef_Schleuse : Bool // MPS2 / Arbeitsplatz 3: undefinierter Schleuse + Err_Trolley_nicht_in_Schleuse : Bool // MPS2 / Arbeitsplatz 3: Trolley fährt nicht in Schleuse + Err_Uebzeit : Bool // MPS2 / Arbeitsplatz 3: Überwachungzeit ist abgelaufen + Err_Schritt : Bool // MPS2 / Arbeitsplatz 3: Schritt-Nummer ist nicht definiert + Err_Stau_Einfahrt : Bool // MPS2 / Arbeitsplatz 3: Stau bei Bereich-Einfahrt + Err_BLKMov : Bool // MPS2 / Arbeitsplatz 3: Error bei Block kopieren + Err_Trolley_raus : Bool // MPS2 / Arbeitsplatz 3: Trolley fährt nicht aus Schleuse + Err_Raus_Sensor : Bool // MPS2 / Arbeitsplatz 3: Raus-Sensor wird nicht erreicht (oder dauernd aktiv)! + Err_Ziel : Bool // MPS2 / Arbeitsplatz 3: Trolley-Ziel nicht bekannt + Err_Weichen_DL : Bool // MPS2 / Arbeitsplatz 3: Weichen-Datenliste fehlerhaft + Err_Undef_Weiche : Bool // MPS2 / Arbeitsplatz 3: undefinierte Weiche + Err_Weiche_belegt : Bool // MPS2 / Arbeitsplatz 3: Weiche bleibt belegt + Err_Kein_LeseErgebnis : Bool // MPS2 / Arbeitsplatz 3: Kein Ergebnis von LeseEinheit + Err_Leser_nicht_bereit : Bool // MPS2 / Arbeitsplatz 3: Leser nicht betriebsbereit + Barcode_nicht_bekannt : Bool // MPS2 / Arbeitsplatz 3: Barcode nicht in Datenbank vorhanden + Schleuse_MB3441 : Struct // AMR (UH06): Schleuse MB3441 (MPS2 Nachstau) + Schleuse_DL : Bool // MPS2 vor Ausfahrt: Schleuse-Datenliste fehlerhaft + Undef_Schleuse : Bool // MPS2 vor Ausfahrt: undefinierter Schleuse + Err_Trolley_nicht_in_Schleuse : Bool // MPS2 vor Ausfahrt: Trolley fährt nicht in Schleuse + Err_Uebzeit : Bool // MPS2 vor Ausfahrt: Überwachungzeit ist abgelaufen + Err_Schritt : Bool // MPS2 vor Ausfahrt: Schritt-Nummer ist nicht definiert + Err_Stau_Einfahrt : Bool // MPS2 vor Ausfahrt: Stau bei Bereich-Einfahrt + Err_BLKMov : Bool // MPS2 vor Ausfahrt: Error bei Block kopieren + Err_Trolley_raus : Bool // MPS2 vor Ausfahrt: Trolley fährt nicht aus Schleuse + Err_Raus_Sensor : Bool // MPS2 vor Ausfahrt: Raus-Sensor wird nicht erreicht (oder dauernd aktiv)! + Err_Ziel : Bool // MPS2 vor Ausfahrt: Trolley-Ziel nicht bekannt + Err_Weichen_DL : Bool // MPS2 vor Ausfahrt: Weichen-Datenliste fehlerhaft + Err_Undef_Weiche : Bool // MPS2 vor Ausfahrt: undefinierte Weiche + Err_Weiche_belegt : Bool // MPS2 vor Ausfahrt: Weiche bleibt belegt + Err_Kein_LeseErgebnis : Bool // MPS2 vor Ausfahrt: Kein Ergebnis von LeseEinheit + Err_Leser_nicht_bereit : Bool // MPS2 vor Ausfahrt: Leser nicht betriebsbereit + Barcode_nicht_bekannt : Bool // MPS2 vor Ausfahrt: Barcode nicht in Datenbank vorhanden + Schleuse_MB3443 : Struct // AMR (UH06): Schleuse MB3443 (Vor Ausfahrt MPS2) + Schleuse_DL : Bool // Vor MPS2-Ausfahrt: Schleuse-Datenliste fehlerhaft + Undef_Schleuse : Bool // Vor MPS2-Ausfahrt: undefinierter Schleuse + Err_Trolley_nicht_in_Schleuse : Bool // Vor MPS2-Ausfahrt: Trolley fährt nicht in Schleuse + Err_Uebzeit : Bool // Vor MPS2-Ausfahrt: Überwachungzeit ist abgelaufen + Err_Schritt : Bool // Vor MPS2-Ausfahrt: Schritt-Nummer ist nicht definiert + Err_Stau_Einfahrt : Bool // Vor MPS2-Ausfahrt: Stau bei Bereich-Einfahrt + Err_BLKMov : Bool // Vor MPS2-Ausfahrt: Error bei Block kopieren + Err_Trolley_raus : Bool // Vor MPS2-Ausfahrt: Trolley fährt nicht aus Schleuse + Err_Raus_Sensor : Bool // Vor MPS2-Ausfahrt: Raus-Sensor wird nicht erreicht (oder dauernd aktiv)! + Err_Ziel : Bool // Vor MPS2-Ausfahrt: Trolley-Ziel nicht bekannt + Err_Weichen_DL : Bool // Vor MPS2-Ausfahrt: Weichen-Datenliste fehlerhaft + Err_Undef_Weiche : Bool // Vor MPS2-Ausfahrt: undefinierte Weiche + Err_Weiche_belegt : Bool // Vor MPS2-Ausfahrt: Weiche bleibt belegt + Err_Kein_LeseErgebnis : Bool // Vor MPS2-Ausfahrt: Kein Ergebnis von LeseEinheit + Err_Leser_nicht_bereit : Bool // Vor MPS2-Ausfahrt: Leser nicht betriebsbereit + Barcode_nicht_bekannt : Bool // Vor MPS2-Ausfahrt: Barcode nicht in Datenbank vorhanden + Schleuse_MB3450 : Struct // AMR (UH06): Schleuse MB3450 (Vor Einfahrt MPS1) + Schleuse_DL : Bool // Vor Einfahrt MPS1: Schleuse-Datenliste fehlerhaft + Undef_Schleuse : Bool // Vor Einfahrt MPS1: undefinierter Schleuse + Err_Trolley_nicht_in_Schleuse : Bool // Vor Einfahrt MPS1: Trolley fährt nicht in Schleuse + Err_Uebzeit : Bool // Vor Einfahrt MPS1: Überwachungzeit ist abgelaufen + Err_Schritt : Bool // Vor Einfahrt MPS1: Schritt-Nummer ist nicht definiert + Err_Stau_Einfahrt : Bool // Vor Einfahrt MPS1: Stau bei Bereich-Einfahrt + Err_BLKMov : Bool // Vor Einfahrt MPS1: Error bei Block kopieren + Err_Trolley_raus : Bool // Vor Einfahrt MPS1: Trolley fährt nicht aus Schleuse + Err_Raus_Sensor : Bool // Vor Einfahrt MPS1: Raus-Sensor wird nicht erreicht (oder dauernd aktiv)! + Err_Ziel : Bool // Vor Einfahrt MPS1: Trolley-Ziel nicht bekannt + Err_Weichen_DL : Bool // Vor Einfahrt MPS1: Weichen-Datenliste fehlerhaft + Err_Undef_Weiche : Bool // Vor Einfahrt MPS1: undefinierte Weiche + Err_Weiche_belegt : Bool // Vor Einfahrt MPS1: Weiche bleibt belegt + Err_Kein_LeseErgebnis : Bool // Vor Einfahrt MPS1: Kein Ergebnis von LeseEinheit + Err_Leser_nicht_bereit : Bool // Vor Einfahrt MPS1: Leser nicht betriebsbereit + Barcode_nicht_bekannt : Bool // Vor Einfahrt MPS1: Barcode nicht in Datenbank vorhanden + Weiche_MB3452 : Struct // AMR (UH06): Weiche MB3452 (Einfahrt MPS1) + Weichen_DL : Bool // Einfahrt MPS1: Weichen-Datenliste fehlerhaft + Undef_Weiche : Bool // Einfahrt MPS1: undefinierte Weiche + BLKMov : Bool // Einfahrt MPS1: Fehler bei Block kopieren + Undef_Bereich+1 : Bool // Einfahrt MPS1: Bereich +1 unbekannt + Frei04 : Bool // Einfahrt MPS1: Frei04 + Frei05 : Bool // Einfahrt MPS1: Frei05 + Ziel_undefiniert : Bool // Einfahrt MPS1: Ziel ist undefiniert + Err_Schleusen_DL : Bool // Einfahrt MPS1: Schleusen-Datenliste fehlerhaft + Err_Undef_Schleuse-1 : Bool // Einfahrt MPS1: undefinierte Schleuse -1 + Übzeit_Gerade : Bool // Einfahrt MPS1: Trolley bei Geradefahrt in Weiche verklemmt (-> Antrieb gestoppt) + Übzeit_Abzweig : Bool // Einfahrt MPS1: Trolley bei Abzweigfahrt in Weiche verklemmt (-> Antrieb gestoppt) + Gerade_Sensor_aktiv : Bool // Einfahrt MPS1: Ziel-Sensor Geradefahrt aktiv + Abzweig_Sensor_aktiv : Bool // Einfahrt MPS1: Ziel-Sensor Abzweigfahrt aktiv + Gerade_Bereich_belegt : Bool // Einfahrt MPS1: Bereich Geradefahrt noch belegt + Abzweig_Bereich_belegt : Bool // Einfahrt MPS1: Bereich Abzweigfahrt noch belegt + Reset_aktiv : Bool // Einfahrt MPS1: Reset ist aktiv + Schleuse_MB3453 : Struct // AMR (UH06): Schleuse MB3453 (MPS1 Vorstau) + Schleuse_DL : Bool // MPS1 vor Arbeitsplätze: Schleuse-Datenliste fehlerhaft + Undef_Schleuse : Bool // MPS1 vor Arbeitsplätze: undefinierter Schleuse + Err_Trolley_nicht_in_Schleuse : Bool // MPS1 vor Arbeitsplätze: Trolley fährt nicht in Schleuse + Err_Uebzeit : Bool // MPS1 vor Arbeitsplätze: Überwachungzeit ist abgelaufen + Err_Schritt : Bool // MPS1 vor Arbeitsplätze: Schritt-Nummer ist nicht definiert + Err_Stau_Einfahrt : Bool // MPS1 vor Arbeitsplätze: Stau bei Bereich-Einfahrt + Err_BLKMov : Bool // MPS1 vor Arbeitsplätze: Error bei Block kopieren + Err_Trolley_raus : Bool // MPS1 vor Arbeitsplätze: Trolley fährt nicht aus Schleuse + Err_Raus_Sensor : Bool // MPS1 vor Arbeitsplätze: Raus-Sensor wird nicht erreicht (oder dauernd aktiv)! + Err_Ziel : Bool // MPS1 vor Arbeitsplätze: Trolley-Ziel nicht bekannt + Err_Weichen_DL : Bool // MPS1 vor Arbeitsplätze: Weichen-Datenliste fehlerhaft + Err_Undef_Weiche : Bool // MPS1 vor Arbeitsplätze: undefinierte Weiche + Err_Weiche_belegt : Bool // MPS1 vor Arbeitsplätze: Weiche bleibt belegt + Err_Kein_LeseErgebnis : Bool // MPS1 vor Arbeitsplätze: Kein Ergebnis von LeseEinheit + Err_Leser_nicht_bereit : Bool // MPS1 vor Arbeitsplätze: Leser nicht betriebsbereit + Barcode_nicht_bekannt : Bool // MPS1 vor Arbeitsplätze: Barcode nicht in Datenbank vorhanden + Schleuse_MB3455 : Struct // AMR (UH06): Stopper MB3455 (MPS1 / Arbeitsplatz 1) + Schleuse_DL : Bool // MPS1 / Arbeitsplatz 1: Schleuse-Datenliste fehlerhaft + Undef_Schleuse : Bool // MPS1 / Arbeitsplatz 1: undefinierter Schleuse + Err_Trolley_nicht_in_Schleuse : Bool // MPS1 / Arbeitsplatz 1: Trolley fährt nicht in Schleuse + Err_Uebzeit : Bool // MPS1 / Arbeitsplatz 1: Überwachungzeit ist abgelaufen + Err_Schritt : Bool // MPS1 / Arbeitsplatz 1: Schritt-Nummer ist nicht definiert + Err_Stau_Einfahrt : Bool // MPS1 / Arbeitsplatz 1: Stau bei Bereich-Einfahrt + Err_BLKMov : Bool // MPS1 / Arbeitsplatz 1: Error bei Block kopieren + Err_Trolley_raus : Bool // MPS1 / Arbeitsplatz 1: Trolley fährt nicht aus Schleuse + Err_Raus_Sensor : Bool // MPS1 / Arbeitsplatz 1: Raus-Sensor wird nicht erreicht (oder dauernd aktiv)! + Err_Ziel : Bool // MPS1 / Arbeitsplatz 1: Trolley-Ziel nicht bekannt + Err_Weichen_DL : Bool // MPS1 / Arbeitsplatz 1: Weichen-Datenliste fehlerhaft + Err_Undef_Weiche : Bool // MPS1 / Arbeitsplatz 1: undefinierte Weiche + Err_Weiche_belegt : Bool // MPS1 / Arbeitsplatz 1: Weiche bleibt belegt + Err_Kein_LeseErgebnis : Bool // MPS1 / Arbeitsplatz 1: Kein Ergebnis von LeseEinheit + Err_Leser_nicht_bereit : Bool // MPS1 / Arbeitsplatz 1: Leser nicht betriebsbereit + Barcode_nicht_bekannt : Bool // MPS1 / Arbeitsplatz 1: Barcode nicht in Datenbank vorhanden + Schleuse_MB3461 : Struct // AMR (UH06): Stopper MB3461 (MPS1 / Arbeitsplatz 2) + Schleuse_DL : Bool // Vor Aufzug: Schleuse-Datenliste fehlerhaft + Undef_Schleuse : Bool // Vor Aufzug: undefinierter Schleuse + Err_Trolley_nicht_in_Schleuse : Bool // Vor Aufzug: Trolley fährt nicht in Schleuse + Err_Uebzeit : Bool // Vor Aufzug: Überwachungzeit ist abgelaufen + Err_Schritt : Bool // Vor Aufzug: Schritt-Nummer ist nicht definiert + Err_Stau_Einfahrt : Bool // Vor Aufzug: Stau bei Bereich-Einfahrt + Err_BLKMov : Bool // Vor Aufzug: Error bei Block kopieren + Err_Trolley_raus : Bool // Vor Aufzug: Trolley fährt nicht aus Schleuse + Err_Raus_Sensor : Bool // Vor Aufzug: Raus-Sensor wird nicht erreicht (oder dauernd aktiv)! + Err_Ziel : Bool // Vor Aufzug: Trolley-Ziel nicht bekannt + Err_Weichen_DL : Bool // Vor Aufzug: Weichen-Datenliste fehlerhaft + Err_Undef_Weiche : Bool // Vor Aufzug: undefinierte Weiche + Err_Weiche_belegt : Bool // Vor Aufzug: Weiche bleibt belegt + Err_Kein_LeseErgebnis : Bool // Vor Aufzug: Kein Ergebnis von LeseEinheit + Err_Leser_nicht_bereit : Bool // Vor Aufzug: Leser nicht betriebsbereit + Barcode_nicht_bekannt : Bool // Vor Aufzug: Barcode nicht in Datenbank vorhanden + Schleuse_MB3465 : Struct // AMR (UH06): Stopper MB3465 (MPS1 / Arbeitsplatz 3) + Schleuse_DL : Bool // MPS1 / Arbeitsplatz 2: Schleuse-Datenliste fehlerhaft + Undef_Schleuse : Bool // MPS1 / Arbeitsplatz 2: undefinierter Schleuse + Err_Trolley_nicht_in_Schleuse : Bool // MPS1 / Arbeitsplatz 2: Trolley fährt nicht in Schleuse + Err_Uebzeit : Bool // MPS1 / Arbeitsplatz 2: Überwachungzeit ist abgelaufen + Err_Schritt : Bool // MPS1 / Arbeitsplatz 2: Schritt-Nummer ist nicht definiert + Err_Stau_Einfahrt : Bool // MPS1 / Arbeitsplatz 2: Stau bei Bereich-Einfahrt + Err_BLKMov : Bool // MPS1 / Arbeitsplatz 2: Error bei Block kopieren + Err_Trolley_raus : Bool // MPS1 / Arbeitsplatz 2: Trolley fährt nicht aus Schleuse + Err_Raus_Sensor : Bool // MPS1 / Arbeitsplatz 2: Raus-Sensor wird nicht erreicht (oder dauernd aktiv)! + Err_Ziel : Bool // MPS1 / Arbeitsplatz 2: Trolley-Ziel nicht bekannt + Err_Weichen_DL : Bool // MPS1 / Arbeitsplatz 2: Weichen-Datenliste fehlerhaft + Err_Undef_Weiche : Bool // MPS1 / Arbeitsplatz 2: undefinierte Weiche + Err_Weiche_belegt : Bool // MPS1 / Arbeitsplatz 2: Weiche bleibt belegt + Err_Kein_LeseErgebnis : Bool // MPS1 / Arbeitsplatz 2: Kein Ergebnis von LeseEinheit + Err_Leser_nicht_bereit : Bool // MPS1 / Arbeitsplatz 2: Leser nicht betriebsbereit + Barcode_nicht_bekannt : Bool // MPS1 / Arbeitsplatz 2: Barcode nicht in Datenbank vorhanden + Schleuse_MB3471 : Struct // AMR (UH06): Schleuse MB3471 (MPS1 Nachstau) + Schleuse_DL : Bool // MPS1 / Arbeitsplatz 3: Schleuse-Datenliste fehlerhaft + Undef_Schleuse : Bool // MPS1 / Arbeitsplatz 3: undefinierter Schleuse + Err_Trolley_nicht_in_Schleuse : Bool // MPS1 / Arbeitsplatz 3: Trolley fährt nicht in Schleuse + Err_Uebzeit : Bool // MPS1 / Arbeitsplatz 3: Überwachungzeit ist abgelaufen + Err_Schritt : Bool // MPS1 / Arbeitsplatz 3: Schritt-Nummer ist nicht definiert + Err_Stau_Einfahrt : Bool // MPS1 / Arbeitsplatz 3: Stau bei Bereich-Einfahrt + Err_BLKMov : Bool // MPS1 / Arbeitsplatz 3: Error bei Block kopieren + Err_Trolley_raus : Bool // MPS1 / Arbeitsplatz 3: Trolley fährt nicht aus Schleuse + Err_Raus_Sensor : Bool // MPS1 / Arbeitsplatz 3: Raus-Sensor wird nicht erreicht (oder dauernd aktiv)! + Err_Ziel : Bool // MPS1 / Arbeitsplatz 3: Trolley-Ziel nicht bekannt + Err_Weichen_DL : Bool // MPS1 / Arbeitsplatz 3: Weichen-Datenliste fehlerhaft + Err_Undef_Weiche : Bool // MPS1 / Arbeitsplatz 3: undefinierte Weiche + Err_Weiche_belegt : Bool // MPS1 / Arbeitsplatz 3: Weiche bleibt belegt + Err_Kein_LeseErgebnis : Bool // MPS1 / Arbeitsplatz 3: Kein Ergebnis von LeseEinheit + Err_Leser_nicht_bereit : Bool // MPS1 / Arbeitsplatz 3: Leser nicht betriebsbereit + Barcode_nicht_bekannt : Bool // MPS1 / Arbeitsplatz 3: Barcode nicht in Datenbank vorhanden + Schleuse_MB3473 : Struct // AMR (UH06): Schleuse MB3473 (Vor Ausfahrt MPS1) + Schleuse_DL : Bool // MPS1 vor Ausfahrt: Schleuse-Datenliste fehlerhaft + Undef_Schleuse : Bool // MPS1 vor Ausfahrt: undefinierter Schleuse + Err_Trolley_nicht_in_Schleuse : Bool // MPS1 vor Ausfahrt: Trolley fährt nicht in Schleuse + Err_Uebzeit : Bool // MPS1 vor Ausfahrt: Überwachungzeit ist abgelaufen + Err_Schritt : Bool // MPS1 vor Ausfahrt: Schritt-Nummer ist nicht definiert + Err_Stau_Einfahrt : Bool // MPS1 vor Ausfahrt: Stau bei Bereich-Einfahrt + Err_BLKMov : Bool // MPS1 vor Ausfahrt: Error bei Block kopieren + Err_Trolley_raus : Bool // MPS1 vor Ausfahrt: Trolley fährt nicht aus Schleuse + Err_Raus_Sensor : Bool // MPS1 vor Ausfahrt: Raus-Sensor wird nicht erreicht (oder dauernd aktiv)! + Err_Ziel : Bool // MPS1 vor Ausfahrt: Trolley-Ziel nicht bekannt + Err_Weichen_DL : Bool // MPS1 vor Ausfahrt: Weichen-Datenliste fehlerhaft + Err_Undef_Weiche : Bool // MPS1 vor Ausfahrt: undefinierte Weiche + Err_Weiche_belegt : Bool // MPS1 vor Ausfahrt: Weiche bleibt belegt + Err_Kein_LeseErgebnis : Bool // MPS1 vor Ausfahrt: Kein Ergebnis von LeseEinheit + Err_Leser_nicht_bereit : Bool // MPS1 vor Ausfahrt: Leser nicht betriebsbereit + Barcode_nicht_bekannt : Bool // MPS1 vor Ausfahrt: Barcode nicht in Datenbank vorhanden + Schleuse_MB3456 : Struct // AMR (UH06): Schleuse MB3456 (Vor Aufzug) + Schleuse_DL : Bool // Vor MPS1-Ausfahrt: Schleuse-Datenliste fehlerhaft + Undef_Schleuse : Bool // Vor MPS1-Ausfahrt: undefinierter Schleuse + Err_Trolley_nicht_in_Schleuse : Bool // Vor MPS1-Ausfahrt: Trolley fährt nicht in Schleuse + Err_Uebzeit : Bool // Vor MPS1-Ausfahrt: Überwachungzeit ist abgelaufen + Err_Schritt : Bool // Vor MPS1-Ausfahrt: Schritt-Nummer ist nicht definiert + Err_Stau_Einfahrt : Bool // Vor MPS1-Ausfahrt: Stau bei Bereich-Einfahrt + Err_BLKMov : Bool // Vor MPS1-Ausfahrt: Error bei Block kopieren + Err_Trolley_raus : Bool // Vor MPS1-Ausfahrt: Trolley fährt nicht aus Schleuse + Err_Raus_Sensor : Bool // Vor MPS1-Ausfahrt: Raus-Sensor wird nicht erreicht (oder dauernd aktiv)! + Err_Ziel : Bool // Vor MPS1-Ausfahrt: Trolley-Ziel nicht bekannt + Err_Weichen_DL : Bool // Vor MPS1-Ausfahrt: Weichen-Datenliste fehlerhaft + Err_Undef_Weiche : Bool // Vor MPS1-Ausfahrt: undefinierte Weiche + Err_Weiche_belegt : Bool // Vor MPS1-Ausfahrt: Weiche bleibt belegt + Err_Kein_LeseErgebnis : Bool // Vor MPS1-Ausfahrt: Kein Ergebnis von LeseEinheit + Err_Leser_nicht_bereit : Bool // Vor MPS1-Ausfahrt: Leser nicht betriebsbereit + Barcode_nicht_bekannt : Bool // Vor MPS1-Ausfahrt: Barcode nicht in Datenbank vorhanden + Schleuse_MB3481 : Struct // AMR (UH06): Schleuse MB3481 (ByPass Mitte) + Schleuse_DL : Bool // Umschleußung Zuführung zu AMR (UH06): Schleuse-Datenliste fehlerhaft + Undef_Schleuse : Bool // Umschleußung Zuführung zu AMR (UH06): undefinierter Schleuse + Err_Trolley_nicht_in_Schleuse : Bool // Umschleußung Zuführung zu AMR (UH06): Trolley fährt nicht in Schleuse + Err_Uebzeit : Bool // Umschleußung Zuführung zu AMR (UH06): Überwachungzeit ist abgelaufen + Err_Schritt : Bool // Umschleußung Zuführung zu AMR (UH06): Schritt-Nummer ist nicht definiert + Err_Stau_Einfahrt : Bool // Umschleußung Zuführung zu AMR (UH06): Stau bei Bereich-Einfahrt + Err_BLKMov : Bool // Umschleußung Zuführung zu AMR (UH06): Error bei Block kopieren + Err_Trolley_raus : Bool // Umschleußung Zuführung zu AMR (UH06): Trolley fährt nicht aus Schleuse + Err_Raus_Sensor : Bool // Umschleußung Zuführung zu AMR (UH06): Raus-Sensor wird nicht erreicht (oder dauernd aktiv)! + Err_Ziel : Bool // Umschleußung Zuführung zu AMR (UH06): Trolley-Ziel nicht bekannt + Err_Weichen_DL : Bool // Umschleußung Zuführung zu AMR (UH06): Weichen-Datenliste fehlerhaft + Err_Undef_Weiche : Bool // Umschleußung Zuführung zu AMR (UH06): undefinierte Weiche + Err_Weiche_belegt : Bool // Umschleußung Zuführung zu AMR (UH06): Weiche bleibt belegt + Err_Kein_LeseErgebnis : Bool // Umschleußung Zuführung zu AMR (UH06): Kein Ergebnis von LeseEinheit + Err_Leser_nicht_bereit : Bool // Umschleußung Zuführung zu AMR (UH06): Leser nicht betriebsbereit + Barcode_nicht_bekannt : Bool // Umschleußung Zuführung zu AMR (UH06): Barcode nicht in Datenbank vorhanden + Weiche_MB3482 : Struct // AMR (UH06): Weiche MB3482 (ByPass Mitte) + Weichen_DL : Bool // Umschleußung Zuführung zu AMR (UH06): Weichen-Datenliste fehlerhaft + Undef_Weiche : Bool // Umschleußung Zuführung zu AMR (UH06): undefinierte Weiche + BLKMov : Bool // Umschleußung Zuführung zu AMR (UH06): Fehler bei Block kopieren + Undef_Bereich+1 : Bool // Umschleußung Zuführung zu AMR (UH06): Bereich +1 unbekannt + Frei04 : Bool // Umschleußung Zuführung zu AMR (UH06): Frei04 + Frei05 : Bool // Umschleußung Zuführung zu AMR (UH06): Frei05 + Ziel_undefiniert : Bool // Umschleußung Zuführung zu AMR (UH06): Ziel ist undefiniert + Err_Schleusen_DL : Bool // Umschleußung Zuführung zu AMR (UH06): Schleusen-Datenliste fehlerhaft + Err_Undef_Schleuse-1 : Bool // Umschleußung Zuführung zu AMR (UH06): undefinierte Schleuse -1 + Übzeit_Gerade : Bool // Umschleußung Zuführung zu AMR (UH06): Trolley bei Geradefahrt in Weiche verklemmt (-> Antrieb gestoppt) + Übzeit_Abzweig : Bool // Umschleußung Zuführung zu AMR (UH06): Trolley bei Abzweigfahrt in Weiche verklemmt (-> Antrieb gestoppt) + Gerade_Sensor_aktiv : Bool // Umschleußung Zuführung zu AMR (UH06): Ziel-Sensor Geradefahrt aktiv + Abzweig_Sensor_aktiv : Bool // Umschleußung Zuführung zu AMR (UH06): Ziel-Sensor Abzweigfahrt aktiv + Gerade_Bereich_belegt : Bool // Umschleußung Zuführung zu AMR (UH06): Bereich Geradefahrt noch belegt + Abzweig_Bereich_belegt : Bool // Umschleußung Zuführung zu AMR (UH06): Bereich Abzweigfahrt noch belegt + Reset_aktiv : Bool // Umschleußung Zuführung zu AMR (UH06): Reset ist aktiv + Schleuse_MB3487 : Struct // AMR (UH06): Schleuse MB3487 (Vor 180 Bogen) + Schleuse_DL : Bool // Vor 180 Zuführung zu AMR (UH06): Schleuse-Datenliste fehlerhaft + Undef_Schleuse : Bool // Vor 180 Zuführung zu AMR (UH06): undefinierter Schleuse + Err_Trolley_nicht_in_Schleuse : Bool // Vor 180 Zuführung zu AMR (UH06): Trolley fährt nicht in Schleuse + Err_Uebzeit : Bool // Vor 180 Zuführung zu AMR (UH06): Überwachungzeit ist abgelaufen + Err_Schritt : Bool // Vor 180 Zuführung zu AMR (UH06): Schritt-Nummer ist nicht definiert + Err_Stau_Einfahrt : Bool // Vor 180 Zuführung zu AMR (UH06): Stau bei Bereich-Einfahrt + Err_BLKMov : Bool // Vor 180 Zuführung zu AMR (UH06): Error bei Block kopieren + Err_Trolley_raus : Bool // Vor 180 Zuführung zu AMR (UH06): Trolley fährt nicht aus Schleuse + Err_Raus_Sensor : Bool // Vor 180 Zuführung zu AMR (UH06): Raus-Sensor wird nicht erreicht (oder dauernd aktiv)! + Err_Ziel : Bool // Vor 180 Zuführung zu AMR (UH06): Trolley-Ziel nicht bekannt + Err_Weichen_DL : Bool // Vor 180 Zuführung zu AMR (UH06): Weichen-Datenliste fehlerhaft + Err_Undef_Weiche : Bool // Vor 180 Zuführung zu AMR (UH06): undefinierte Weiche + Err_Weiche_belegt : Bool // Vor 180 Zuführung zu AMR (UH06): Weiche bleibt belegt + Err_Kein_LeseErgebnis : Bool // Vor 180 Zuführung zu AMR (UH06): Kein Ergebnis von LeseEinheit + Err_Leser_nicht_bereit : Bool // Vor 180 Zuführung zu AMR (UH06): Leser nicht betriebsbereit + Barcode_nicht_bekannt : Bool // Vor 180 Zuführung zu AMR (UH06): Barcode nicht in Datenbank vorhanden + Schleuse_MB3540 : Struct // AMR (UH06): Schleuse MB3540 (Nach Ausfahrt MPS1) + Schleuse_DL : Bool // Highway zu OB: Schleuse-Datenliste fehlerhaft + Undef_Schleuse : Bool // Highway zu OB: undefinierter Schleuse + Err_Trolley_nicht_in_Schleuse : Bool // Highway zu OB: Trolley fährt nicht in Schleuse + Err_Uebzeit : Bool // Highway zu OB: Überwachungzeit ist abgelaufen + Err_Schritt : Bool // Highway zu OB: Schritt-Nummer ist nicht definiert + Err_Stau_Einfahrt : Bool // Highway zu OB: Stau bei Bereich-Einfahrt + Err_BLKMov : Bool // Highway zu OB: Error bei Block kopieren + Err_Trolley_raus : Bool // Highway zu OB: Trolley fährt nicht aus Schleuse + Err_Raus_Sensor : Bool // Highway zu OB: Raus-Sensor wird nicht erreicht (oder dauernd aktiv)! + Err_Ziel : Bool // Highway zu OB: Trolley-Ziel nicht bekannt + Err_Weichen_DL : Bool // Highway zu OB: Weichen-Datenliste fehlerhaft + Err_Undef_Weiche : Bool // Highway zu OB: undefinierte Weiche + Err_Weiche_belegt : Bool // Highway zu OB: Weiche bleibt belegt + Err_Kein_LeseErgebnis : Bool // Highway zu OB: Kein Ergebnis von LeseEinheit + Err_Leser_nicht_bereit : Bool // Highway zu OB: Leser nicht betriebsbereit + Barcode_nicht_bekannt : Bool // Highway zu OB: Barcode nicht in Datenbank vorhanden + Schleuse_MB3543 : Struct // AMR (UH06): Schleuse MB3543 (Brandschutztüre 4) + Schleuse_DL : Bool // Highway zu OB: Schleuse-Datenliste fehlerhaft + Undef_Schleuse : Bool // Highway zu OB: undefinierter Schleuse + Err_Trolley_nicht_in_Schleuse : Bool // Highway zu OB: Trolley fährt nicht in Schleuse + Err_Uebzeit : Bool // Highway zu OB: Überwachungzeit ist abgelaufen + Err_Schritt : Bool // Highway zu OB: Schritt-Nummer ist nicht definiert + Err_Stau_Einfahrt : Bool // Highway zu OB: Stau bei Bereich-Einfahrt + Err_BLKMov : Bool // Highway zu OB: Error bei Block kopieren + Err_Trolley_raus : Bool // Highway zu OB: Trolley fährt nicht aus Schleuse + Err_Raus_Sensor : Bool // Highway zu OB: Raus-Sensor wird nicht erreicht (oder dauernd aktiv)! + Err_Ziel : Bool // Highway zu OB: Trolley-Ziel nicht bekannt + Err_Weichen_DL : Bool // Highway zu OB: Weichen-Datenliste fehlerhaft + Err_Undef_Weiche : Bool // Highway zu OB: undefinierte Weiche + Err_Weiche_belegt : Bool // Highway zu OB: Weiche bleibt belegt + Err_Kein_LeseErgebnis : Bool // Highway zu OB: Kein Ergebnis von LeseEinheit + Err_Leser_nicht_bereit : Bool // Highway zu OB: Leser nicht betriebsbereit + Barcode_nicht_bekannt : Bool // Highway zu OB: Barcode nicht in Datenbank vorhanden + Schleuse_MB3546 : Struct // AMR (UH06): Schleuse MB3546 (Turm zu Outbound) + Schleuse_DL : Bool // Highway zu OB: Schleuse-Datenliste fehlerhaft + Undef_Schleuse : Bool // Highway zu OB: undefinierter Schleuse + Err_Trolley_nicht_in_Schleuse : Bool // Highway zu OB: Trolley fährt nicht in Schleuse + Err_Uebzeit : Bool // Highway zu OB: Überwachungzeit ist abgelaufen + Err_Schritt : Bool // Highway zu OB: Schritt-Nummer ist nicht definiert + Err_Stau_Einfahrt : Bool // Highway zu OB: Stau bei Bereich-Einfahrt + Err_BLKMov : Bool // Highway zu OB: Error bei Block kopieren + Err_Trolley_raus : Bool // Highway zu OB: Trolley fährt nicht aus Schleuse + Err_Raus_Sensor : Bool // Highway zu OB: Raus-Sensor wird nicht erreicht (oder dauernd aktiv)! + Err_Ziel : Bool // Highway zu OB: Trolley-Ziel nicht bekannt + Err_Weichen_DL : Bool // Highway zu OB: Weichen-Datenliste fehlerhaft + Err_Undef_Weiche : Bool // Highway zu OB: undefinierte Weiche + Err_Weiche_belegt : Bool // Highway zu OB: Weiche bleibt belegt + Err_Kein_LeseErgebnis : Bool // Highway zu OB: Kein Ergebnis von LeseEinheit + Err_Leser_nicht_bereit : Bool // Highway zu OB: Leser nicht betriebsbereit + Barcode_nicht_bekannt : Bool // Highway zu OB: Barcode nicht in Datenbank vorhanden + Schleuse_MB3552 : Struct // AMR (UH06): Schleuse MB3552 (Turm zu Outbound) + Schleuse_DL : Bool // Highway zu OB: Schleuse-Datenliste fehlerhaft + Undef_Schleuse : Bool // Highway zu OB: undefinierter Schleuse + Err_Trolley_nicht_in_Schleuse : Bool // Highway zu OB: Trolley fährt nicht in Schleuse + Err_Uebzeit : Bool // Highway zu OB: Überwachungzeit ist abgelaufen + Err_Schritt : Bool // Highway zu OB: Schritt-Nummer ist nicht definiert + Err_Stau_Einfahrt : Bool // Highway zu OB: Stau bei Bereich-Einfahrt + Err_BLKMov : Bool // Highway zu OB: Error bei Block kopieren + Err_Trolley_raus : Bool // Highway zu OB: Trolley fährt nicht aus Schleuse + Err_Raus_Sensor : Bool // Highway zu OB: Raus-Sensor wird nicht erreicht (oder dauernd aktiv)! + Err_Ziel : Bool // Highway zu OB: Trolley-Ziel nicht bekannt + Err_Weichen_DL : Bool // Highway zu OB: Weichen-Datenliste fehlerhaft + Err_Undef_Weiche : Bool // Highway zu OB: undefinierte Weiche + Err_Weiche_belegt : Bool // Highway zu OB: Weiche bleibt belegt + Err_Kein_LeseErgebnis : Bool // Highway zu OB: Kein Ergebnis von LeseEinheit + Err_Leser_nicht_bereit : Bool // Highway zu OB: Leser nicht betriebsbereit + Barcode_nicht_bekannt : Bool // Highway zu OB: Barcode nicht in Datenbank vorhanden + Schleuse_MB3562 : Struct // AMR (UH06): Schleuse MB3562 (Turm zu AMR) + Schleuse_DL : Bool // Highway zu AMR : Schleuse-Datenliste fehlerhaft + Undef_Schleuse : Bool // Highway zu AMR : undefinierter Schleuse + Err_Trolley_nicht_in_Schleuse : Bool // Highway zu AMR : Trolley fährt nicht in Schleuse + Err_Uebzeit : Bool // Highway zu AMR : Überwachungzeit ist abgelaufen + Err_Schritt : Bool // Highway zu AMR : Schritt-Nummer ist nicht definiert + Err_Stau_Einfahrt : Bool // Highway zu AMR : Stau bei Bereich-Einfahrt + Err_BLKMov : Bool // Highway zu AMR : Error bei Block kopieren + Err_Trolley_raus : Bool // Highway zu AMR : Trolley fährt nicht aus Schleuse + Err_Raus_Sensor : Bool // Highway zu AMR : Raus-Sensor wird nicht erreicht (oder dauernd aktiv)! + Err_Ziel : Bool // Highway zu AMR : Trolley-Ziel nicht bekannt + Err_Weichen_DL : Bool // Highway zu AMR : Weichen-Datenliste fehlerhaft + Err_Undef_Weiche : Bool // Highway zu AMR : undefinierte Weiche + Err_Weiche_belegt : Bool // Highway zu AMR : Weiche bleibt belegt + Err_Kein_LeseErgebnis : Bool // Highway zu AMR : Kein Ergebnis von LeseEinheit + Err_Leser_nicht_bereit : Bool // Highway zu AMR : Leser nicht betriebsbereit + Barcode_nicht_bekannt : Bool // Highway zu AMR : Barcode nicht in Datenbank vorhanden + Schleuse_MB3565 : Struct // AMR (UH06): Schleuse MB3565 (Brandschutztüre 4) + Schleuse_DL : Bool // Highway zu AMR : Schleuse-Datenliste fehlerhaft + Undef_Schleuse : Bool // Highway zu AMR : undefinierter Schleuse + Err_Trolley_nicht_in_Schleuse : Bool // Highway zu AMR : Trolley fährt nicht in Schleuse + Err_Uebzeit : Bool // Highway zu AMR : Überwachungzeit ist abgelaufen + Err_Schritt : Bool // Highway zu AMR : Schritt-Nummer ist nicht definiert + Err_Stau_Einfahrt : Bool // Highway zu AMR : Stau bei Bereich-Einfahrt + Err_BLKMov : Bool // Highway zu AMR : Error bei Block kopieren + Err_Trolley_raus : Bool // Highway zu AMR : Trolley fährt nicht aus Schleuse + Err_Raus_Sensor : Bool // Highway zu AMR : Raus-Sensor wird nicht erreicht (oder dauernd aktiv)! + Err_Ziel : Bool // Highway zu AMR : Trolley-Ziel nicht bekannt + Err_Weichen_DL : Bool // Highway zu AMR : Weichen-Datenliste fehlerhaft + Err_Undef_Weiche : Bool // Highway zu AMR : undefinierte Weiche + Err_Weiche_belegt : Bool // Highway zu AMR : Weiche bleibt belegt + Err_Kein_LeseErgebnis : Bool // Highway zu AMR : Kein Ergebnis von LeseEinheit + Err_Leser_nicht_bereit : Bool // Highway zu AMR : Leser nicht betriebsbereit + Barcode_nicht_bekannt : Bool // Highway zu AMR : Barcode nicht in Datenbank vorhanden + Schleuse_MB3073 : Struct // AMR (UH06): Schleuse MB3073 (Highway zu OB) + Schleuse_DL : Bool // Highway zu OB: Schleuse-Datenliste fehlerhaft + Undef_Schleuse : Bool // Highway zu OB: undefinierter Schleuse + Err_Trolley_nicht_in_Schleuse : Bool // Highway zu OB: Trolley fährt nicht in Schleuse + Err_Uebzeit : Bool // Highway zu OB: Überwachungzeit ist abgelaufen + Err_Schritt : Bool // Highway zu OB: Schritt-Nummer ist nicht definiert + Err_Stau_Einfahrt : Bool // Highway zu OB: Stau bei Bereich-Einfahrt + Err_BLKMov : Bool // Highway zu OB: Error bei Block kopieren + Err_Trolley_raus : Bool // Highway zu OB: Trolley fährt nicht aus Schleuse + Err_Raus_Sensor : Bool // Highway zu OB: Raus-Sensor wird nicht erreicht (oder dauernd aktiv)! + Err_Ziel : Bool // Highway zu OB: Trolley-Ziel nicht bekannt + Err_Weichen_DL : Bool // Highway zu OB: Weichen-Datenliste fehlerhaft + Err_Undef_Weiche : Bool // Highway zu OB: undefinierte Weiche + Err_Weiche_belegt : Bool // Highway zu OB: Weiche bleibt belegt + Err_Kein_LeseErgebnis : Bool // Highway zu OB: Kein Ergebnis von LeseEinheit + Err_Leser_nicht_bereit : Bool // Highway zu OB: Leser nicht betriebsbereit + Barcode_nicht_bekannt : Bool // Highway zu OB: Barcode nicht in Datenbank vorhanden + Frei500 : Array[1..68] of Word diff --git a/=A01+UH06-KF00/Programmbausteine/_All/6_HMI_Err_UH06_AMR_Ori.awl b/=A01+UH06-KF00/Programmbausteine/_All/6_HMI_Err_UH06_AMR_Ori.awl new file mode 100644 index 0000000..4892359 --- /dev/null +++ b/=A01+UH06-KF00/Programmbausteine/_All/6_HMI_Err_UH06_AMR_Ori.awl @@ -0,0 +1,1969 @@ +=== GlobalDB 609: 6_HMI_Err_UH06_AMR_Ori [DB] === +INTERFACE: + Static: + System : Struct + Bus_Anlauf : Bool // AMR (UH06): Profibus-Anlauf (warten mit Programm) + Anlage_aus : Bool // AMR (UH06):(UH06): Anlage ist ausgeschaltet + Gesamt_Feueralarm : Bool // AMR (UH06): Hauptmeldung Feueralarm + BST3_Feueralarm : Bool // AMR (UH06): BST3 Feueralarm + BST3_Störung : Bool // AMR (UH06): BST3 Störung + BST3_Geschlossen : Bool // AMR (UH06): BST3 Geschlossen + BST4_Feueralarm : Bool // AMR (UH06): BST4 Feueralarm + BST4_Störung : Bool // AMR (UH06): BST4 Störung + BST4_Geschlossen : Bool // AMR (UH06): BST4 Geschlossen + Aufzug_Vorrang : Bool // AMR (UH06): Aufzug hat Vorrang + Kommunikation : Struct + SendFIFO_Port1 : Bool // AMR (UH06/Port1): Send-FIFO ist voll, Anlage gestoppt + SendFIFO_Port2 : Bool // AMR (UH06/Port2): Send-FIFO ist voll, Anlage gestoppt + Frei02 : Bool + Frei03 : Bool + Frei04 : Bool + Frei05 : Bool + Frei06 : Bool + Frei07 : Bool + Frei10 : Bool + Frei11 : Bool + Frei12 : Bool + Frei13 : Bool + Frei14 : Bool + Frei15 : Bool + Frei16 : Bool + Frei17 : Bool + Not : Struct + ausgeloest_UH06 : Bool // AMR (UH06): Not-Aus im UH06 hat ausgelöst + ausgeloest_UH06_Halle4 : Bool // AMR (UH06): Not-Aus im UH06/Halle 4 hat ausgelöst + ausgeloest_UC061 : Bool // AMR (UH06): Not-Aus im UC061 hat ausgelöst + UH06 : Bool // AMR (UH06): Not-Aus am Schaltschrank UH06 betätigt + UC061 : Bool // AMR (UH06): Not-Aus am Schaltschrank UC061 betätigt + UZ0601 : Bool // AMR (UH06): Not-Aus am MPS1 betätigt (UZ601) + UZ0602 : Bool // AMR (UH06): Not-Aus am MPS2 betätigt (UZ602) + UZ0603 : Bool // AMR (UH06): Not-Aus am MPS3 betätigt (UZ603) + UZ0611 : Bool // AMR (UH06): Not-Aus am PS1 betätigt (UZ611) + UZ0612 : Bool // AMR (UH06): Not-Aus am PS2 betätigt (UZ612) + UZ0613 : Bool // AMR (UH06): Not-Aus am PS3 betätigt (UZ613) + UZ0614 : Bool // AMR (UH06): Not-Aus am PS4 betätigt (UZ614) + UZ0615 : Bool // AMR (UH06): Not-Aus am PS5 betätigt (UZ615) + UZ0620 : Bool // AMR (UH06): Highway (vor AMR-Bereich/BST4) (UZ620) + UZ0621 : Bool // AMR (UH06): Zuführung AMRs (MPS2) (UZ621) + UZ0622 : Bool // AMR (UH06): Zuführung AMRs (PS4/5) (UZ622) + Ausgebaut : Bool + UZ6102 : Bool // AMR (UH06): Not-Aus am Highway betätigt (UZ6102) + UZ6103 : Bool // AMR (UH06): Not-Aus am Highway betätigt (UZ6103) + UZ6104 : Bool // AMR (UH06): Not-Aus am Highway Nähe OB betätigt (UZ6104) + von_UH04 : Bool // AMR (UH06): Not-Aus von ILS/UH04 gemeldet + von_UC011 : Bool // AMR (UH06): Not-Aus vom ILS/UC011 gemeldet + Frei66 : Bool + Frei67 : Bool + Frei70 : Bool + Frei71 : Bool + Frei72 : Bool + Frei73 : Bool + Frei74 : Bool + Frei75 : Bool + Frei76 : Bool + Frei77 : Bool + Halt : Struct + Ausgebaut : Bool + UZ6102 : Bool // AMR (UH06): Bereichshalt UZ6102 betätigt + UZ6103 : Bool // AMR (UH06): Bereichshalt UZ6103 betätigt + UZ6104 : Bool // AMR (UH06): Bereichshalt UZ6141 betätigt + Frei04 : Bool + Frei05 : Bool + Frei06 : Bool + Frei07 : Bool + Frei10 : Bool + Frei11 : Bool + Frei12 : Bool + Frei13 : Bool + Frei14 : Bool + Frei15 : Bool + Frei16 : Bool + Frei17 : Bool + Schutz : Struct + Hauptschütz UH06 : Bool // AMR (UH06): Hauptschütz nicht aktiv + Hauptschütz UC061 : Bool // AMR (UC061): Hauptschütz nicht aktiv + Frei02 : Bool + Frei03 : Bool + Frei04 : Bool + Frei05 : Bool + Frei06 : Bool + Frei07 : Bool + Frei10 : Bool + Frei11 : Bool + Frei12 : Bool + Frei13 : Bool + Frei14 : Bool + Frei15 : Bool + Frei16 : Bool + Frei17 : Bool + VErr : Struct + Phasen : Bool // AMR (UH06): Phasen-Ausfall UH06 + FC0006 : Bool // AMR (UH06): Vorsicherung UC061 400V Motoren + Frei122 : Bool + FC0021 : Bool // AMR (UH06): Vorsicherung 24V + FC0022 : Bool // AMR (UH06): Vorsicherung 24V + FC0023 : Bool // AMR (UH06): Vorsicherung 24V + FC0024 : Bool // AMR (UH06): Vorsicherung 24V + FC0025 : Bool // AMR (UH06): Vorsicherung 24V + Frei130 : Bool + FC0160 : Bool // AMR (UC061): Vorsicherung 400V Motoren + FC0161 : Bool // AMR (UC061): Vorsicherung 24V + FC0162 : Bool // AMR (UC061): Vorsicherung 24V + Frei14 : Bool + Frei15 : Bool + Pn_UH06 : Bool // AMR (UH06): Pneumatik + Pn_UC061 : Bool // AMR (UC061): Pneumatik + QErr : Struct + MA0060 : Bool // AMR (UH06): Motorschutz MA0060 hat ausgelöst + MA0061 : Bool // AMR (UH06): Motorschutz MA0061 hat ausgelöst + MA0062 : Bool // AMR (UH06): Motorschutz MA0062 hat ausgelöst + MA0063 : Bool // AMR (UH06): Motorschutz MA0063 hat ausgelöst + MA0064 : Bool // AMR (UH06): Motorschutz MA0064 hat ausgelöst + MA0065 : Bool // AMR (UH06): Motorschutz MA0065 hat ausgelöst + MA0066 : Bool // AMR (UH06): Motorschutz MA0066 hat ausgelöst + MA0067 : Bool // AMR (UH06): Motorschutz MA0067 hat ausgelöst + MA0070 : Bool // AMR (UH06): Motorschutz MA0070 hat ausgelöst + MA0071 : Bool // AMR (UH06): Motorschutz MA0071 hat ausgelöst + MA0072 : Bool // AMR (UH06): Motorschutz MA0072 hat ausgelöst + MA0073 : Bool // AMR (UH06): Motorschutz MA0073 hat ausgelöst + MA0074 : Bool // AMR (UH06): Motorschutz MA0074 hat ausgelöst + MA0075 : Bool // AMR (UH06): Motorschutz MA0075 hat ausgelöst + MA0076 : Bool // AMR (UH06): Motorschutz MA0076 hat ausgelöst + MA0077 : Bool // AMR (UH06): Motorschutz MA0077 hat ausgelöst + MA0080 : Bool // AMR (UH06): Motorschutz MA0080 hat ausgelöst + MA0081 : Bool // AMR (UH06): Motorschutz MA0081 hat ausgelöst + MA0082 : Bool // AMR (UH06): Motorschutz MA0082 hat ausgelöst + MA0083 : Bool // AMR (UH06): Motorschutz MA0083 hat ausgelöst + MA0084 : Bool // AMR (UH06): Motorschutz MA0084 hat ausgelöst + MA0085 : Bool // AMR (UH06): Motorschutz MA0085 hat ausgelöst + MA0086 : Bool // AMR (UH06): Motorschutz MA0086 hat ausgelöst + MA0087 : Bool // AMR (UH06): Motorschutz MA0087 hat ausgelöst + MA0090 : Bool // AMR (UH06): Motorschutz MA0090 hat ausgelöst + MA0091 : Bool // AMR (UH06): Motorschutz MA0091 hat ausgelöst + MA0092 : Bool // AMR (UH06): Motorschutz MA0092 hat ausgelöst + MA0093 : Bool // AMR (UH06): Motorschutz MA0093 hat ausgelöst + MA0094 : Bool // AMR (UH06): Motorschutz MA0094 hat ausgelöst + MA0095 : Bool // AMR (UH06): Motorschutz MA0095 hat ausgelöst + MA0096 : Bool // AMR (UH06): Motorschutz MA0096 hat ausgelöst + MA0097 : Bool // AMR (UH06): Motorschutz MA0097 hat ausgelöst + MA0100 : Bool // AMR (UH06): Motorschutz MA0100 hat ausgelöst + MA0101 : Bool // AMR (UH06): Motorschutz MA0101 hat ausgelöst + MA0102 : Bool // AMR (UH06): Motorschutz MA0102 hat ausgelöst + MA0103 : Bool // AMR (UH06): Motorschutz MA0103 hat ausgelöst + MA0104 : Bool // AMR (UH06): Motorschutz MA0104 hat ausgelöst + MA0105 : Bool // AMR (UH06): Motorschutz MA0105 hat ausgelöst + MA0106 : Bool // AMR (UH06): Motorschutz MA0106 hat ausgelöst + MA0107 : Bool // AMR (UH06): Motorschutz MA0107 hat ausgelöst + MA0110 : Bool // AMR (UH06): Motorschutz MA0110 hat ausgelöst + MA0111 : Bool // AMR (UH06): Motorschutz MA0111 hat ausgelöst + MA0112 : Bool // AMR (UH06): Motorschutz MA0112 hat ausgelöst + MA0113 : Bool // AMR (UH06): Motorschutz MA0113 hat ausgelöst + MA0114 : Bool // AMR (UH06): Motorschutz MA0114 hat ausgelöst + MA0115 : Bool // AMR (UH06): Motorschutz MA0115 hat ausgelöst + MA0116 : Bool // AMR (UH06): Motorschutz MA0116 hat ausgelöst + MA0117 : Bool // AMR (UH06): Motorschutz MA0117 hat ausgelöst + MA0130 : Bool // AMR (UH06): Motorschutz MA0130 hat ausgelöst + MA0131 : Bool // AMR (UH06): Motorschutz MA0130 hat ausgelöst + Frei132 : Bool + Frei133 : Bool + Frei134 : Bool + Frei135 : Bool + Frei136 : Bool + Frei137 : Bool + MA0200 : Bool // AMR (UC061): Motorschutz MA0200 hat ausgelöst + MA0201 : Bool // AMR (UC061): Motorschutz MA0201 hat ausgelöst + MA0202 : Bool // AMR (UC061): Motorschutz MA0202 hat ausgelöst + MA0203 : Bool // AMR (UC061): Motorschutz MA0203 hat ausgelöst + MA0204 : Bool // AMR (UC061): Motorschutz MA0204 hat ausgelöst + MA0205 : Bool // AMR (UC061): Motorschutz MA0205 hat ausgelöst + Frei206 : Bool + Frei207 : Bool + FuErr : Struct + Frei00 : Bool + Frei01 : Bool + Frei02 : Bool + Frei03 : Bool + Frei04 : Bool + Frei05 : Bool + Frei06 : Bool + Frei07 : Bool + Frei10 : Bool + Frei11 : Bool + Frei12 : Bool + Frei13 : Bool + Frei14 : Bool + Frei15 : Bool + Frei16 : Bool + Frei17 : Bool + Logistik : Struct + DB276_Err : Bool // AMR (UH06): Softwarefehler Aufruf DB276 + Frei01 : Bool + Frei02 : Bool + Frei03 : Bool + Frei04 : Bool + Frei05 : Bool + Frei06 : Bool + Frei07 : Bool + Frei10 : Bool + Frei11 : Bool + Frei12 : Bool + Frei13 : Bool + Frei14 : Bool + Frei15 : Bool + Frei16 : Bool + Frei17 : Bool + Frei100 : Array[1..37] of Word + PS1 : Struct // AMR (UH06)/Pickstation 1: + ABP_DL : Bool // Pickstation 1: Arbeitsplatz-Datenliste fehlerhaft + Undef_AMR : Bool // Pickstation 1: undefinierter Arbeitsplatz + Err_BLKMov : Bool // Pickstation 1: Error bei Block kopieren + Err_Uebzeit_SK_Rein : Bool // Pickstation 1: Überwachungzeit ist abgelaufen + Err_Schritt_Sk_Rein : Bool // Pickstation 1: Schritt-Nummer ist nicht definiert + Err_Uebzeit_SK_Raus : Bool // Pickstation 1: Überwachungzeit ist abgelaufen + Err_Schritt_Sk_Raus : Bool // Pickstation 1: Schritt-Nummer ist nicht definiert + Err_Platz_1 : Bool // Pickstation 1: Arbeitsplatz 1 unklar + Err_Platz_2 : Bool // Pickstation 1: Arbeitsplatz 2 unklar + Err_Platz_3 : Bool // Pickstation 1: Arbeitsplatz 3 unklar + Reset_Einfahren_akt : Bool // Pickstation 1: Reset zum Arbeitsplatz ist aktiv + Reset_Platz_1_akt : Bool // Pickstation 1: Reset Arbeitsplatz 1 ist aktiv + Reset_Platz_2_akt : Bool // Pickstation 1: Reset Arbeitsplatz 2 ist aktiv + Reset_Platz_3_akt : Bool // Pickstation 1: Reset Arbeitsplatz 3 ist aktiv + Reset_Ausfahren_akt : Bool // Pickstation 1: Reset aus Arbeitsplatz ist aktiv + Frei16 : Bool // Pickstation 1: Frei16 + PS2 : Struct // AMR (UH06)/Pickstation 2: + ABP_DL : Bool // Pickstation 2: Arbeitsplatz-Datenliste fehlerhaft + Undef_AMR : Bool // Pickstation 2: undefinierter Arbeitsplatz + Err_BLKMov : Bool // Pickstation 2: Error bei Block kopieren + Err_Uebzeit_SK_Rein : Bool // Pickstation 2: Überwachungzeit ist abgelaufen + Err_Schritt_Sk_Rein : Bool // Pickstation 2: Schritt-Nummer ist nicht definiert + Err_Uebzeit_SK_Raus : Bool // Pickstation 2: Überwachungzeit ist abgelaufen + Err_Schritt_Sk_Raus : Bool // Pickstation 2: Schritt-Nummer ist nicht definiert + Err_Platz_1 : Bool // Pickstation 2: Arbeitsplatz 1 unklar + Err_Platz_2 : Bool // Pickstation 2: Arbeitsplatz 2 unklar + Err_Platz_3 : Bool // Pickstation 2: Arbeitsplatz 3 unklar + Reset_Einfahren_akt : Bool // Pickstation 2: Reset zum Arbeitsplatz ist aktiv + Reset_Platz_1_akt : Bool // Pickstation 2: Reset Arbeitsplatz 1 ist aktiv + Reset_Platz_2_akt : Bool // Pickstation 2: Reset Arbeitsplatz 2 ist aktiv + Reset_Platz_3_akt : Bool // Pickstation 2: Reset Arbeitsplatz 3 ist aktiv + Reset_Ausfahren_akt : Bool // Pickstation 2: Reset aus Arbeitsplatz ist aktiv + Frei16 : Bool // Pickstation 2: Frei16 + PS3 : Struct // AMR (UH06)/Pickstation 3: + ABP_DL : Bool // Pickstation 3: Arbeitsplatz-Datenliste fehlerhaft + Undef_AMR : Bool // Pickstation 3: undefinierter Arbeitsplatz + Err_BLKMov : Bool // Pickstation 3: Error bei Block kopieren + Err_Uebzeit_SK_Rein : Bool // Pickstation 3: Überwachungzeit ist abgelaufen + Err_Schritt_Sk_Rein : Bool // Pickstation 3: Schritt-Nummer ist nicht definiert + Err_Uebzeit_SK_Raus : Bool // Pickstation 3: Überwachungzeit ist abgelaufen + Err_Schritt_Sk_Raus : Bool // Pickstation 3: Schritt-Nummer ist nicht definiert + Err_Platz_1 : Bool // Pickstation 3: Arbeitsplatz 1 unklar + Err_Platz_2 : Bool // Pickstation 3: Arbeitsplatz 2 unklar + Err_Platz_3 : Bool // Pickstation 3: Arbeitsplatz 3 unklar + Reset_Einfahren_akt : Bool // Pickstation 3: Reset zum Arbeitsplatz ist aktiv + Reset_Platz_1_akt : Bool // Pickstation 3: Reset Arbeitsplatz 1 ist aktiv + Reset_Platz_2_akt : Bool // Pickstation 3: Reset Arbeitsplatz 2 ist aktiv + Reset_Platz_3_akt : Bool // Pickstation 3: Reset Arbeitsplatz 3 ist aktiv + Reset_Ausfahren_akt : Bool // Pickstation 3: Reset aus Arbeitsplatz ist aktiv + Frei16 : Bool // Pickstation 3: Frei16 + PS4 : Struct // AMR (UH06)/Pickstation 4: + ABP_DL : Bool // Pickstation 4: Arbeitsplatz-Datenliste fehlerhaft + Undef_AMR : Bool // Pickstation 4: undefinierter Arbeitsplatz + Err_BLKMov : Bool // Pickstation 4: Error bei Block kopieren + Err_Uebzeit_SK_Rein : Bool // Pickstation 4: Überwachungzeit ist abgelaufen + Err_Schritt_Sk_Rein : Bool // Pickstation 4: Schritt-Nummer ist nicht definiert + Err_Uebzeit_SK_Raus : Bool // Pickstation 4: Überwachungzeit ist abgelaufen + Err_Schritt_Sk_Raus : Bool // Pickstation 4: Schritt-Nummer ist nicht definiert + Err_Platz_1 : Bool // Pickstation 4: Arbeitsplatz 1 unklar + Err_Platz_2 : Bool // Pickstation 4: Arbeitsplatz 2 unklar + Err_Platz_3 : Bool // Pickstation 4: Arbeitsplatz 3 unklar + Reset_Einfahren_akt : Bool // Pickstation 4: Reset zum Arbeitsplatz ist aktiv + Reset_Platz_1_akt : Bool // Pickstation 4: Reset Arbeitsplatz 1 ist aktiv + Reset_Platz_2_akt : Bool // Pickstation 4: Reset Arbeitsplatz 2 ist aktiv + Reset_Platz_3_akt : Bool // Pickstation 4: Reset Arbeitsplatz 3 ist aktiv + Reset_Ausfahren_akt : Bool // Pickstation 4: Reset aus Arbeitsplatz ist aktiv + Frei16 : Bool // Pickstation 4: Frei16 + PS5 : Struct // AMR (UH06)/Pickstation 5: + ABP_DL : Bool // Pickstation 5: Arbeitsplatz-Datenliste fehlerhaft + Undef_AMR : Bool // Pickstation 5: undefinierter Arbeitsplatz + Err_BLKMov : Bool // Pickstation 5: Error bei Block kopieren + Err_Uebzeit_SK_Rein : Bool // Pickstation 5: Überwachungzeit ist abgelaufen + Err_Schritt_Sk_Rein : Bool // Pickstation 5: Schritt-Nummer ist nicht definiert + Err_Uebzeit_SK_Raus : Bool // Pickstation 5: Überwachungzeit ist abgelaufen + Err_Schritt_Sk_Raus : Bool // Pickstation 5: Schritt-Nummer ist nicht definiert + Err_Platz_1 : Bool // Pickstation 5: Arbeitsplatz 1 unklar + Err_Platz_2 : Bool // Pickstation 5: Arbeitsplatz 2 unklar + Err_Platz_3 : Bool // Pickstation 5: Arbeitsplatz 3 unklar + Reset_Einfahren_akt : Bool // Pickstation 5: Reset zum Arbeitsplatz ist aktiv + Reset_Platz_1_akt : Bool // Pickstation 5: Reset Arbeitsplatz 1 ist aktiv + Reset_Platz_2_akt : Bool // Pickstation 5: Reset Arbeitsplatz 2 ist aktiv + Reset_Platz_3_akt : Bool // Pickstation 5: Reset Arbeitsplatz 3 ist aktiv + Reset_Ausfahren_akt : Bool // Pickstation 5: Reset aus Arbeitsplatz ist aktiv + Frei16 : Bool // Pickstation 5: Frei16 + MPS1 : Struct // AMR (UH06)/Multipurposestation 1: + ABP_DL : Bool // Multipurposestation 1: Arbeitsplatz-Datenliste fehlerhaft + Undef_AMR : Bool // Multipurposestation 1: undefinierter Arbeitsplatz + Err_BLKMov : Bool // Multipurposestation 1: Error bei Block kopieren + Err_Uebzeit_SK_Rein : Bool // Multipurposestation 1: Überwachungzeit ist abgelaufen + Err_Schritt_Sk_Rein : Bool // Multipurposestation 1: Schritt-Nummer ist nicht definiert + Err_Uebzeit_SK_Raus : Bool // Multipurposestation 1: Überwachungzeit ist abgelaufen + Err_Schritt_Sk_Raus : Bool // Multipurposestation 1: Schritt-Nummer ist nicht definiert + Err_Platz_1 : Bool // Multipurposestation 1: Arbeitsplatz 1 unklar + Err_Platz_2 : Bool // Multipurposestation 1: Arbeitsplatz 2 unklar + Err_Platz_3 : Bool // Multipurposestation 1: Arbeitsplatz 3 unklar + Reset_Einfahren_akt : Bool // Multipurposestation 1: Reset zum Arbeitsplatz ist aktiv + Reset_Platz_1_akt : Bool // Multipurposestation 1: Reset Arbeitsplatz 1 ist aktiv + Reset_Platz_2_akt : Bool // Multipurposestation 1: Reset Arbeitsplatz 2 ist aktiv + Reset_Platz_3_akt : Bool // Multipurposestation 1: Reset Arbeitsplatz 3 ist aktiv + Reset_Ausfahren_akt : Bool // Multipurposestation 1: Reset aus Arbeitsplatz ist aktiv + Frei16 : Bool // Multipurposestation 1: Frei16 + MPS2 : Struct // AMR (UH06)/Multipurposestation 2: + ABP_DL : Bool // Multipurposestation 2: Arbeitsplatz-Datenliste fehlerhaft + Undef_AMR : Bool // Multipurposestation 2: undefinierter Arbeitsplatz + Err_BLKMov : Bool // Multipurposestation 2: Error bei Block kopieren + Err_Uebzeit_SK_Rein : Bool // Multipurposestation 2: Überwachungzeit ist abgelaufen + Err_Schritt_Sk_Rein : Bool // Multipurposestation 2: Schritt-Nummer ist nicht definiert + Err_Uebzeit_SK_Raus : Bool // Multipurposestation 2: Überwachungzeit ist abgelaufen + Err_Schritt_Sk_Raus : Bool // Multipurposestation 2: Schritt-Nummer ist nicht definiert + Err_Platz_1 : Bool // Multipurposestation 2: Arbeitsplatz 1 unklar + Err_Platz_2 : Bool // Multipurposestation 2: Arbeitsplatz 2 unklar + Err_Platz_3 : Bool // Multipurposestation 2: Arbeitsplatz 3 unklar + Reset_Einfahren_akt : Bool // Multipurposestation 2: Reset zum Arbeitsplatz ist aktiv + Reset_Platz_1_akt : Bool // Multipurposestation 2: Reset Arbeitsplatz 1 ist aktiv + Reset_Platz_2_akt : Bool // Multipurposestation 2: Reset Arbeitsplatz 2 ist aktiv + Reset_Platz_3_akt : Bool // Multipurposestation 2: Reset Arbeitsplatz 3 ist aktiv + Reset_Ausfahren_akt : Bool // Multipurposestation 2: Reset aus Arbeitsplatz ist aktiv + Frei16 : Bool // Multipurposestation 2: Frei16 + MPS3 : Struct // AMR (UH06)/Multipurposestation 3: + ABP_DL : Bool // Multipurposestation 3: Arbeitsplatz-Datenliste fehlerhaft + Undef_AMR : Bool // Multipurposestation 3: undefinierter Arbeitsplatz + Err_BLKMov : Bool // Multipurposestation 3: Error bei Block kopieren + Err_Uebzeit_SK_Rein : Bool // Multipurposestation 3: Überwachungzeit ist abgelaufen + Err_Schritt_Sk_Rein : Bool // Multipurposestation 3: Schritt-Nummer ist nicht definiert + Err_Uebzeit_SK_Raus : Bool // Multipurposestation 3: Überwachungzeit ist abgelaufen + Err_Schritt_Sk_Raus : Bool // Multipurposestation 3: Schritt-Nummer ist nicht definiert + Err_Platz_1 : Bool // Multipurposestation 3: Arbeitsplatz 1 unklar + Err_Platz_2 : Bool // Multipurposestation 3: Arbeitsplatz 2 unklar + Err_Platz_3 : Bool // Multipurposestation 3: Arbeitsplatz 3 unklar + Reset_Einfahren_akt : Bool // Multipurposestation 3: Reset zum Arbeitsplatz ist aktiv + Reset_Platz_1_akt : Bool // Multipurposestation 3: Reset Arbeitsplatz 1 ist aktiv + Reset_Platz_2_akt : Bool // Multipurposestation 3: Reset Arbeitsplatz 2 ist aktiv + Reset_Platz_3_akt : Bool // Multipurposestation 3: Reset Arbeitsplatz 3 ist aktiv + Reset_Ausfahren_akt : Bool // Multipurposestation 3: Reset aus Arbeitsplatz ist aktiv + Frei16 : Bool // Multipurposestation 3: Frei16 + Frei150 : Array[1..17] of Word + Reserve150 : Struct // AMR (UH06): Reserve150 + Schleuse_DL : Bool // Highway zu AMR : Schleuse-Datenliste fehlerhaft + Undef_Schleuse : Bool // Highway zu AMR : undefinierter Schleuse + Err_Trolley_nicht_in_Schleuse : Bool // Highway zu AMR : Trolley fährt nicht in Schleuse + Err_Uebzeit : Bool // Highway zu AMR : Überwachungzeit ist abgelaufen + Err_Schritt : Bool // Highway zu AMR : Schritt-Nummer ist nicht definiert + Err_Stau_Einfahrt : Bool // Highway zu AMR : Stau bei Bereich-Einfahrt + Err_BLKMov : Bool // Highway zu AMR : Error bei Block kopieren + Err_Trolley_raus : Bool // Highway zu AMR : Trolley fährt nicht aus Schleuse + Err_Raus_Sensor : Bool // Highway zu AMR : Raus-Sensor wird nicht erreicht (oder dauernd aktiv)! + Err_Ziel : Bool // Highway zu AMR : Trolley-Ziel nicht bekannt + Err_Weichen_DL : Bool // Highway zu AMR : Weichen-Datenliste fehlerhaft + Err_Undef_Weiche : Bool // Highway zu AMR : undefinierte Weiche + Err_Weiche_belegt : Bool // Highway zu AMR : Weiche bleibt belegt + Err_Kein_LeseErgebnis : Bool // Highway zu AMR : Kein Ergebnis von LeseEinheit + Err_Leser_nicht_bereit : Bool // Highway zu AMR : Leser nicht betriebsbereit + Barcode_nicht_bekannt : Bool // Highway zu AMR : Barcode nicht in Datenbank vorhanden + Reserve152 : Struct // AMR (UH06): Reserve152 + Schleuse_DL : Bool // Highway zu AMR : Schleuse-Datenliste fehlerhaft + Undef_Schleuse : Bool // Highway zu AMR : undefinierter Schleuse + Err_Trolley_nicht_in_Schleuse : Bool // Highway zu AMR : Trolley fährt nicht in Schleuse + Err_Uebzeit : Bool // Highway zu AMR : Überwachungzeit ist abgelaufen + Err_Schritt : Bool // Highway zu AMR : Schritt-Nummer ist nicht definiert + Err_Stau_Einfahrt : Bool // Highway zu AMR : Stau bei Bereich-Einfahrt + Err_BLKMov : Bool // Highway zu AMR : Error bei Block kopieren + Err_Trolley_raus : Bool // Highway zu AMR : Trolley fährt nicht aus Schleuse + Err_Raus_Sensor : Bool // Highway zu AMR : Raus-Sensor wird nicht erreicht (oder dauernd aktiv)! + Err_Ziel : Bool // Highway zu AMR : Trolley-Ziel nicht bekannt + Err_Weichen_DL : Bool // Highway zu AMR : Weichen-Datenliste fehlerhaft + Err_Undef_Weiche : Bool // Highway zu AMR : undefinierte Weiche + Err_Weiche_belegt : Bool // Highway zu AMR : Weiche bleibt belegt + Err_Kein_LeseErgebnis : Bool // Highway zu AMR : Kein Ergebnis von LeseEinheit + Err_Leser_nicht_bereit : Bool // Highway zu AMR : Leser nicht betriebsbereit + Barcode_nicht_bekannt : Bool // Highway zu AMR : Barcode nicht in Datenbank vorhanden + Bereich_ MA0117 : Struct // AMR (UH06): Bereich MA0117/BG3016 (Turm zu Outbound) + Schleuse_DL : Bool // Highway zu AMR : Schleuse-Datenliste fehlerhaft + Undef_Schleuse : Bool // Highway zu AMR : undefinierter Schleuse + Err_Trolley_nicht_in_Schleuse : Bool // Highway zu AMR : Trolley fährt nicht in Schleuse + Err_Uebzeit : Bool // Highway zu AMR : Überwachungzeit ist abgelaufen + Err_Schritt : Bool // Highway zu AMR : Schritt-Nummer ist nicht definiert + Err_Stau_Einfahrt : Bool // Highway zu AMR : Stau bei Bereich-Einfahrt + Err_BLKMov : Bool // Highway zu AMR : Error bei Block kopieren + Err_Trolley_raus : Bool // Highway zu AMR : Trolley fährt nicht aus Schleuse + Err_Raus_Sensor : Bool // Highway zu AMR : Raus-Sensor wird nicht erreicht (oder dauernd aktiv)! + Err_Ziel : Bool // Highway zu AMR : Trolley-Ziel nicht bekannt + Err_Weichen_DL : Bool // Highway zu AMR : Weichen-Datenliste fehlerhaft + Err_Undef_Weiche : Bool // Highway zu AMR : undefinierte Weiche + Err_Weiche_belegt : Bool // Highway zu AMR : Weiche bleibt belegt + Err_Kein_LeseErgebnis : Bool // Highway zu AMR : Kein Ergebnis von LeseEinheit + Err_Leser_nicht_bereit : Bool // Highway zu AMR : Leser nicht betriebsbereit + Barcode_nicht_bekannt : Bool // Highway zu AMR : Barcode nicht in Datenbank vorhanden + Übergang_BG3063 : Struct // AMR (UH06): Übergang BG3063 (Highway zu AMR) + Schleuse_DL : Bool // Highway zu AMR : Schleuse-Datenliste fehlerhaft + Undef_Schleuse : Bool // Highway zu AMR : undefinierter Schleuse + Err_Trolley_nicht_in_Schleuse : Bool // Highway zu AMR : Trolley fährt nicht in Schleuse + Err_Uebzeit : Bool // Highway zu AMR : Überwachungzeit ist abgelaufen + Err_Schritt : Bool // Highway zu AMR : Schritt-Nummer ist nicht definiert + Err_Stau_Einfahrt : Bool // Highway zu AMR : Stau bei Bereich-Einfahrt + Err_BLKMov : Bool // Highway zu AMR : Error bei Block kopieren + Err_Trolley_raus : Bool // Highway zu AMR : Trolley fährt nicht aus Schleuse + Err_Raus_Sensor : Bool // Highway zu AMR : Raus-Sensor wird nicht erreicht (oder dauernd aktiv)! + Err_Ziel : Bool // Highway zu AMR : Trolley-Ziel nicht bekannt + Err_Weichen_DL : Bool // Highway zu AMR : Weichen-Datenliste fehlerhaft + Err_Undef_Weiche : Bool // Highway zu AMR : undefinierte Weiche + Err_Weiche_belegt : Bool // Highway zu AMR : Weiche bleibt belegt + Err_Kein_LeseErgebnis : Bool // Highway zu AMR : Kein Ergebnis von LeseEinheit + Err_Leser_nicht_bereit : Bool // Highway zu AMR : Leser nicht betriebsbereit + Barcode_nicht_bekannt : Bool // Highway zu AMR : Barcode nicht in Datenbank vorhanden + Übergang_BG3240 : Struct // AMR (UH06): Übergang BG3240 (Zuführung zu AMR) + Schleuse_DL : Bool // Highway zu AMR : Schleuse-Datenliste fehlerhaft + Undef_Schleuse : Bool // Highway zu AMR : undefinierter Schleuse + Err_Trolley_nicht_in_Schleuse : Bool // Highway zu AMR : Trolley fährt nicht in Schleuse + Err_Uebzeit : Bool // Highway zu AMR : Überwachungzeit ist abgelaufen + Err_Schritt : Bool // Highway zu AMR : Schritt-Nummer ist nicht definiert + Err_Stau_Einfahrt : Bool // Highway zu AMR : Stau bei Bereich-Einfahrt + Err_BLKMov : Bool // Highway zu AMR : Error bei Block kopieren + Err_Trolley_raus : Bool // Highway zu AMR : Trolley fährt nicht aus Schleuse + Err_Raus_Sensor : Bool // Highway zu AMR : Raus-Sensor wird nicht erreicht (oder dauernd aktiv)! + Err_Ziel : Bool // Highway zu AMR : Trolley-Ziel nicht bekannt + Err_Weichen_DL : Bool // Highway zu AMR : Weichen-Datenliste fehlerhaft + Err_Undef_Weiche : Bool // Highway zu AMR : undefinierte Weiche + Err_Weiche_belegt : Bool // Highway zu AMR : Weiche bleibt belegt + Err_Kein_LeseErgebnis : Bool // Highway zu AMR : Kein Ergebnis von LeseEinheit + Err_Leser_nicht_bereit : Bool // Highway zu AMR : Leser nicht betriebsbereit + Barcode_nicht_bekannt : Bool // Highway zu AMR : Barcode nicht in Datenbank vorhanden + Reserve160 : Struct // AMR (UH06): Reserve160 + Schleuse_DL : Bool // Highway zu AMR : Schleuse-Datenliste fehlerhaft + Undef_Schleuse : Bool // Highway zu AMR : undefinierter Schleuse + Err_Trolley_nicht_in_Schleuse : Bool // Highway zu AMR : Trolley fährt nicht in Schleuse + Err_Uebzeit : Bool // Highway zu AMR : Überwachungzeit ist abgelaufen + Err_Schritt : Bool // Highway zu AMR : Schritt-Nummer ist nicht definiert + Err_Stau_Einfahrt : Bool // Highway zu AMR : Stau bei Bereich-Einfahrt + Err_BLKMov : Bool // Highway zu AMR : Error bei Block kopieren + Err_Trolley_raus : Bool // Highway zu AMR : Trolley fährt nicht aus Schleuse + Err_Raus_Sensor : Bool // Highway zu AMR : Raus-Sensor wird nicht erreicht (oder dauernd aktiv)! + Err_Ziel : Bool // Highway zu AMR : Trolley-Ziel nicht bekannt + Err_Weichen_DL : Bool // Highway zu AMR : Weichen-Datenliste fehlerhaft + Err_Undef_Weiche : Bool // Highway zu AMR : undefinierte Weiche + Err_Weiche_belegt : Bool // Highway zu AMR : Weiche bleibt belegt + Err_Kein_LeseErgebnis : Bool // Highway zu AMR : Kein Ergebnis von LeseEinheit + Err_Leser_nicht_bereit : Bool // Highway zu AMR : Leser nicht betriebsbereit + Barcode_nicht_bekannt : Bool // Highway zu AMR : Barcode nicht in Datenbank vorhanden + Übergang_BG3446 : Struct // AMR (UH06): Übergang BG3446 (Zuführung zu AMR) + Schleuse_DL : Bool // Highway zu AMR : Schleuse-Datenliste fehlerhaft + Undef_Schleuse : Bool // Highway zu AMR : undefinierter Schleuse + Err_Trolley_nicht_in_Schleuse : Bool // Highway zu AMR : Trolley fährt nicht in Schleuse + Err_Uebzeit : Bool // Highway zu AMR : Überwachungzeit ist abgelaufen + Err_Schritt : Bool // Highway zu AMR : Schritt-Nummer ist nicht definiert + Err_Stau_Einfahrt : Bool // Highway zu AMR : Stau bei Bereich-Einfahrt + Err_BLKMov : Bool // Highway zu AMR : Error bei Block kopieren + Err_Trolley_raus : Bool // Highway zu AMR : Trolley fährt nicht aus Schleuse + Err_Raus_Sensor : Bool // Highway zu AMR : Raus-Sensor wird nicht erreicht (oder dauernd aktiv)! + Err_Ziel : Bool // Highway zu AMR : Trolley-Ziel nicht bekannt + Err_Weichen_DL : Bool // Highway zu AMR : Weichen-Datenliste fehlerhaft + Err_Undef_Weiche : Bool // Highway zu AMR : undefinierte Weiche + Err_Weiche_belegt : Bool // Highway zu AMR : Weiche bleibt belegt + Err_Kein_LeseErgebnis : Bool // Highway zu AMR : Kein Ergebnis von LeseEinheit + Err_Leser_nicht_bereit : Bool // Highway zu AMR : Leser nicht betriebsbereit + Barcode_nicht_bekannt : Bool // Highway zu AMR : Barcode nicht in Datenbank vorhanden + Übergang_BG3480 : Struct // AMR (UH06): Übergang BG3480 (Zuführung zu AMR) + Schleuse_DL : Bool // Highway zu AMR : Schleuse-Datenliste fehlerhaft + Undef_Schleuse : Bool // Highway zu AMR : undefinierter Schleuse + Err_Trolley_nicht_in_Schleuse : Bool // Highway zu AMR : Trolley fährt nicht in Schleuse + Err_Uebzeit : Bool // Highway zu AMR : Überwachungzeit ist abgelaufen + Err_Schritt : Bool // Highway zu AMR : Schritt-Nummer ist nicht definiert + Err_Stau_Einfahrt : Bool // Highway zu AMR : Stau bei Bereich-Einfahrt + Err_BLKMov : Bool // Highway zu AMR : Error bei Block kopieren + Err_Trolley_raus : Bool // Highway zu AMR : Trolley fährt nicht aus Schleuse + Err_Raus_Sensor : Bool // Highway zu AMR : Raus-Sensor wird nicht erreicht (oder dauernd aktiv)! + Err_Ziel : Bool // Highway zu AMR : Trolley-Ziel nicht bekannt + Err_Weichen_DL : Bool // Highway zu AMR : Weichen-Datenliste fehlerhaft + Err_Undef_Weiche : Bool // Highway zu AMR : undefinierte Weiche + Err_Weiche_belegt : Bool // Highway zu AMR : Weiche bleibt belegt + Err_Kein_LeseErgebnis : Bool // Highway zu AMR : Kein Ergebnis von LeseEinheit + Err_Leser_nicht_bereit : Bool // Highway zu AMR : Leser nicht betriebsbereit + Barcode_nicht_bekannt : Bool // Highway zu AMR : Barcode nicht in Datenbank vorhanden + Übergang_BG3485 : Struct // AMR (UH06): Übergang BG3485 (Zuführung zu AMR) + Schleuse_DL : Bool // Highway zu AMR : Schleuse-Datenliste fehlerhaft + Undef_Schleuse : Bool // Highway zu AMR : undefinierter Schleuse + Err_Trolley_nicht_in_Schleuse : Bool // Highway zu AMR : Trolley fährt nicht in Schleuse + Err_Uebzeit : Bool // Highway zu AMR : Überwachungzeit ist abgelaufen + Err_Schritt : Bool // Highway zu AMR : Schritt-Nummer ist nicht definiert + Err_Stau_Einfahrt : Bool // Highway zu AMR : Stau bei Bereich-Einfahrt + Err_BLKMov : Bool // Highway zu AMR : Error bei Block kopieren + Err_Trolley_raus : Bool // Highway zu AMR : Trolley fährt nicht aus Schleuse + Err_Raus_Sensor : Bool // Highway zu AMR : Raus-Sensor wird nicht erreicht (oder dauernd aktiv)! + Err_Ziel : Bool // Highway zu AMR : Trolley-Ziel nicht bekannt + Err_Weichen_DL : Bool // Highway zu AMR : Weichen-Datenliste fehlerhaft + Err_Undef_Weiche : Bool // Highway zu AMR : undefinierte Weiche + Err_Weiche_belegt : Bool // Highway zu AMR : Weiche bleibt belegt + Err_Kein_LeseErgebnis : Bool // Highway zu AMR : Kein Ergebnis von LeseEinheit + Err_Leser_nicht_bereit : Bool // Highway zu AMR : Leser nicht betriebsbereit + Barcode_nicht_bekannt : Bool // Highway zu AMR : Barcode nicht in Datenbank vorhanden + Übergang_BG3490 : Struct // AMR (UH06): Übergang BG3490 (Zuführung zu AMR) + Schleuse_DL : Bool // Highway zu AMR : Schleuse-Datenliste fehlerhaft + Undef_Schleuse : Bool // Highway zu AMR : undefinierter Schleuse + Err_Trolley_nicht_in_Schleuse : Bool // Highway zu AMR : Trolley fährt nicht in Schleuse + Err_Uebzeit : Bool // Highway zu AMR : Überwachungzeit ist abgelaufen + Err_Schritt : Bool // Highway zu AMR : Schritt-Nummer ist nicht definiert + Err_Stau_Einfahrt : Bool // Highway zu AMR : Stau bei Bereich-Einfahrt + Err_BLKMov : Bool // Highway zu AMR : Error bei Block kopieren + Err_Trolley_raus : Bool // Highway zu AMR : Trolley fährt nicht aus Schleuse + Err_Raus_Sensor : Bool // Highway zu AMR : Raus-Sensor wird nicht erreicht (oder dauernd aktiv)! + Err_Ziel : Bool // Highway zu AMR : Trolley-Ziel nicht bekannt + Err_Weichen_DL : Bool // Highway zu AMR : Weichen-Datenliste fehlerhaft + Err_Undef_Weiche : Bool // Highway zu AMR : undefinierte Weiche + Err_Weiche_belegt : Bool // Highway zu AMR : Weiche bleibt belegt + Err_Kein_LeseErgebnis : Bool // Highway zu AMR : Kein Ergebnis von LeseEinheit + Err_Leser_nicht_bereit : Bool // Highway zu AMR : Leser nicht betriebsbereit + Barcode_nicht_bekannt : Bool // Highway zu AMR : Barcode nicht in Datenbank vorhanden + Bereich_MA0114 : Struct // AMR (UH06): Bereich MA0114/BG3550 (Turm zu Outbound) + Schleuse_DL : Bool // Highway zu AMR : Schleuse-Datenliste fehlerhaft + Undef_Schleuse : Bool // Highway zu AMR : undefinierter Schleuse + Err_Trolley_nicht_in_Schleuse : Bool // Highway zu AMR : Trolley fährt nicht in Schleuse + Err_Uebzeit : Bool // Highway zu AMR : Überwachungzeit ist abgelaufen + Err_Schritt : Bool // Highway zu AMR : Schritt-Nummer ist nicht definiert + Err_Stau_Einfahrt : Bool // Highway zu AMR : Stau bei Bereich-Einfahrt + Err_BLKMov : Bool // Highway zu AMR : Error bei Block kopieren + Err_Trolley_raus : Bool // Highway zu AMR : Trolley fährt nicht aus Schleuse + Err_Raus_Sensor : Bool // Highway zu AMR : Raus-Sensor wird nicht erreicht (oder dauernd aktiv)! + Err_Ziel : Bool // Highway zu AMR : Trolley-Ziel nicht bekannt + Err_Weichen_DL : Bool // Highway zu AMR : Weichen-Datenliste fehlerhaft + Err_Undef_Weiche : Bool // Highway zu AMR : undefinierte Weiche + Err_Weiche_belegt : Bool // Highway zu AMR : Weiche bleibt belegt + Err_Kein_LeseErgebnis : Bool // Highway zu AMR : Kein Ergebnis von LeseEinheit + Err_Leser_nicht_bereit : Bool // Highway zu AMR : Leser nicht betriebsbereit + Barcode_nicht_bekannt : Bool // Highway zu AMR : Barcode nicht in Datenbank vorhanden + Bereich_MA0130 : Struct // AMR (UH06): Bereich MA0130/BG3555 (Turm zu AMR) + Schleuse_DL : Bool // Highway zu AMR : Schleuse-Datenliste fehlerhaft + Undef_Schleuse : Bool // Highway zu AMR : undefinierter Schleuse + Err_Trolley_nicht_in_Schleuse : Bool // Highway zu AMR : Trolley fährt nicht in Schleuse + Err_Uebzeit : Bool // Highway zu AMR : Überwachungzeit ist abgelaufen + Err_Schritt : Bool // Highway zu AMR : Schritt-Nummer ist nicht definiert + Err_Stau_Einfahrt : Bool // Highway zu AMR : Stau bei Bereich-Einfahrt + Err_BLKMov : Bool // Highway zu AMR : Error bei Block kopieren + Err_Trolley_raus : Bool // Highway zu AMR : Trolley fährt nicht aus Schleuse + Err_Raus_Sensor : Bool // Highway zu AMR : Raus-Sensor wird nicht erreicht (oder dauernd aktiv)! + Err_Ziel : Bool // Highway zu AMR : Trolley-Ziel nicht bekannt + Err_Weichen_DL : Bool // Highway zu AMR : Weichen-Datenliste fehlerhaft + Err_Undef_Weiche : Bool // Highway zu AMR : undefinierte Weiche + Err_Weiche_belegt : Bool // Highway zu AMR : Weiche bleibt belegt + Err_Kein_LeseErgebnis : Bool // Highway zu AMR : Kein Ergebnis von LeseEinheit + Err_Leser_nicht_bereit : Bool // Highway zu AMR : Leser nicht betriebsbereit + Barcode_nicht_bekannt : Bool // Highway zu AMR : Barcode nicht in Datenbank vorhanden + Bereich_MA0116 : Struct // AMR (UH06): Bereich MA0116/BG3556 (Turm zu AMR) + Schleuse_DL : Bool // Highway zu AMR : Schleuse-Datenliste fehlerhaft + Undef_Schleuse : Bool // Highway zu AMR : undefinierter Schleuse + Err_Trolley_nicht_in_Schleuse : Bool // Highway zu AMR : Trolley fährt nicht in Schleuse + Err_Uebzeit : Bool // Highway zu AMR : Überwachungzeit ist abgelaufen + Err_Schritt : Bool // Highway zu AMR : Schritt-Nummer ist nicht definiert + Err_Stau_Einfahrt : Bool // Highway zu AMR : Stau bei Bereich-Einfahrt + Err_BLKMov : Bool // Highway zu AMR : Error bei Block kopieren + Err_Trolley_raus : Bool // Highway zu AMR : Trolley fährt nicht aus Schleuse + Err_Raus_Sensor : Bool // Highway zu AMR : Raus-Sensor wird nicht erreicht (oder dauernd aktiv)! + Err_Ziel : Bool // Highway zu AMR : Trolley-Ziel nicht bekannt + Err_Weichen_DL : Bool // Highway zu AMR : Weichen-Datenliste fehlerhaft + Err_Undef_Weiche : Bool // Highway zu AMR : undefinierte Weiche + Err_Weiche_belegt : Bool // Highway zu AMR : Weiche bleibt belegt + Err_Kein_LeseErgebnis : Bool // Highway zu AMR : Kein Ergebnis von LeseEinheit + Err_Leser_nicht_bereit : Bool // Highway zu AMR : Leser nicht betriebsbereit + Barcode_nicht_bekannt : Bool // Highway zu AMR : Barcode nicht in Datenbank vorhanden + Frei200 : Array[1..12] of Word + Schleuse_MB3000 : Struct // AMR (UH06): Schleuse MB3000 (Turm zu AMR) + Schleuse_DL : Bool // Highway zu AMR : Schleuse-Datenliste fehlerhaft + Undef_Schleuse : Bool // Highway zu AMR : undefinierter Schleuse + Err_Trolley_nicht_in_Schleuse : Bool // Highway zu AMR : Trolley fährt nicht in Schleuse + Err_Uebzeit : Bool // Highway zu AMR : Überwachungzeit ist abgelaufen + Err_Schritt : Bool // Highway zu AMR : Schritt-Nummer ist nicht definiert + Err_Stau_Einfahrt : Bool // Highway zu AMR : Stau bei Bereich-Einfahrt + Err_BLKMov : Bool // Highway zu AMR : Error bei Block kopieren + Err_Trolley_raus : Bool // Highway zu AMR : Trolley fährt nicht aus Schleuse + Err_Raus_Sensor : Bool // Highway zu AMR : Raus-Sensor wird nicht erreicht (oder dauernd aktiv)! + Err_Ziel : Bool // Highway zu AMR : Trolley-Ziel nicht bekannt + Err_Weichen_DL : Bool // Highway zu AMR : Weichen-Datenliste fehlerhaft + Err_Undef_Weiche : Bool // Highway zu AMR : undefinierte Weiche + Err_Weiche_belegt : Bool // Highway zu AMR : Weiche bleibt belegt + Err_Kein_LeseErgebnis : Bool // Highway zu AMR : Kein Ergebnis von LeseEinheit + Err_Leser_nicht_bereit : Bool // Highway zu AMR : Leser nicht betriebsbereit + Barcode_nicht_bekannt : Bool // Highway zu AMR : Barcode nicht in Datenbank vorhanden + Schleuse_MB3004 : Struct // AMR (UH06): Schleuse MB3004 (Brandschutztüre 3) + Schleuse_DL : Bool // Highway zu AMR : Schleuse-Datenliste fehlerhaft + Undef_Schleuse : Bool // Highway zu AMR : undefinierter Schleuse + Err_Trolley_nicht_in_Schleuse : Bool // Highway zu AMR : Trolley fährt nicht in Schleuse + Err_Uebzeit : Bool // Highway zu AMR : Überwachungzeit ist abgelaufen + Err_Schritt : Bool // Highway zu AMR : Schritt-Nummer ist nicht definiert + Err_Stau_Einfahrt : Bool // Highway zu AMR : Stau bei Bereich-Einfahrt + Err_BLKMov : Bool // Highway zu AMR : Error bei Block kopieren + Err_Trolley_raus : Bool // Highway zu AMR : Trolley fährt nicht aus Schleuse + Err_Raus_Sensor : Bool // Highway zu AMR : Raus-Sensor wird nicht erreicht (oder dauernd aktiv)! + Err_Ziel : Bool // Highway zu AMR : Trolley-Ziel nicht bekannt + Err_Weichen_DL : Bool // Highway zu AMR : Weichen-Datenliste fehlerhaft + Err_Undef_Weiche : Bool // Highway zu AMR : undefinierte Weiche + Err_Weiche_belegt : Bool // Highway zu AMR : Weiche bleibt belegt + Err_Kein_LeseErgebnis : Bool // Highway zu AMR : Kein Ergebnis von LeseEinheit + Err_Leser_nicht_bereit : Bool // Highway zu AMR : Leser nicht betriebsbereit + Barcode_nicht_bekannt : Bool // Highway zu AMR : Barcode nicht in Datenbank vorhanden + Schleuse_MB3005 : Struct // AMR (UH06): Schleuse MB3005 (Highway zu AMR) + Schleuse_DL : Bool // Highway zu AMR : Schleuse-Datenliste fehlerhaft + Undef_Schleuse : Bool // Highway zu AMR : undefinierter Schleuse + Err_Trolley_nicht_in_Schleuse : Bool // Highway zu AMR : Trolley fährt nicht in Schleuse + Err_Uebzeit : Bool // Highway zu AMR : Überwachungzeit ist abgelaufen + Err_Schritt : Bool // Highway zu AMR : Schritt-Nummer ist nicht definiert + Err_Stau_Einfahrt : Bool // Highway zu AMR : Stau bei Bereich-Einfahrt + Err_BLKMov : Bool // Highway zu AMR : Error bei Block kopieren + Err_Trolley_raus : Bool // Highway zu AMR : Trolley fährt nicht aus Schleuse + Err_Raus_Sensor : Bool // Highway zu AMR : Raus-Sensor wird nicht erreicht (oder dauernd aktiv)! + Err_Ziel : Bool // Highway zu AMR : Trolley-Ziel nicht bekannt + Err_Weichen_DL : Bool // Highway zu AMR : Weichen-Datenliste fehlerhaft + Err_Undef_Weiche : Bool // Highway zu AMR : undefinierte Weiche + Err_Weiche_belegt : Bool // Highway zu AMR : Weiche bleibt belegt + Err_Kein_LeseErgebnis : Bool // Highway zu AMR : Kein Ergebnis von LeseEinheit + Err_Leser_nicht_bereit : Bool // Highway zu AMR : Leser nicht betriebsbereit + Barcode_nicht_bekannt : Bool // Highway zu AMR : Barcode nicht in Datenbank vorhanden + Schleuse_MB3010 : Struct // AMR (UH06): Schleuse MB3010 (Highway zu Outbound) + Schleuse_DL : Bool // Highway zu OB: Schleuse-Datenliste fehlerhaft + Undef_Schleuse : Bool // Highway zu OB: undefinierter Schleuse + Err_Trolley_nicht_in_Schleuse : Bool // Highway zu OB: Trolley fährt nicht in Schleuse + Err_Uebzeit : Bool // Highway zu OB: Überwachungzeit ist abgelaufen + Err_Schritt : Bool // Highway zu OB: Schritt-Nummer ist nicht definiert + Err_Stau_Einfahrt : Bool // Highway zu OB: Stau bei Bereich-Einfahrt + Err_BLKMov : Bool // Highway zu OB: Error bei Block kopieren + Err_Trolley_raus : Bool // Highway zu OB: Trolley fährt nicht aus Schleuse + Err_Raus_Sensor : Bool // Highway zu OB: Raus-Sensor wird nicht erreicht (oder dauernd aktiv)! + Err_Ziel : Bool // Highway zu OB: Trolley-Ziel nicht bekannt + Err_Weichen_DL : Bool // Highway zu OB: Weichen-Datenliste fehlerhaft + Err_Undef_Weiche : Bool // Highway zu OB: undefinierte Weiche + Err_Weiche_belegt : Bool // Highway zu OB: Weiche bleibt belegt + Err_Kein_LeseErgebnis : Bool // Highway zu OB: Kein Ergebnis von LeseEinheit + Err_Leser_nicht_bereit : Bool // Highway zu OB: Leser nicht betriebsbereit + Barcode_nicht_bekannt : Bool // Highway zu OB: Barcode nicht in Datenbank vorhanden + Schleuse_MB3012 : Struct // AMR (UH06): Schleuse MB3012 (Highway zu Outbound) + Schleuse_DL : Bool // Highway zu OB: Schleuse-Datenliste fehlerhaft + Undef_Schleuse : Bool // Highway zu OB: undefinierter Schleuse + Err_Trolley_nicht_in_Schleuse : Bool // Highway zu OB: Trolley fährt nicht in Schleuse + Err_Uebzeit : Bool // Highway zu OB: Überwachungzeit ist abgelaufen + Err_Schritt : Bool // Highway zu OB: Schritt-Nummer ist nicht definiert + Err_Stau_Einfahrt : Bool // Highway zu OB: Stau bei Bereich-Einfahrt + Err_BLKMov : Bool // Highway zu OB: Error bei Block kopieren + Err_Trolley_raus : Bool // Highway zu OB: Trolley fährt nicht aus Schleuse + Err_Raus_Sensor : Bool // Highway zu OB: Raus-Sensor wird nicht erreicht (oder dauernd aktiv)! + Err_Ziel : Bool // Highway zu OB: Trolley-Ziel nicht bekannt + Err_Weichen_DL : Bool // Highway zu OB: Weichen-Datenliste fehlerhaft + Err_Undef_Weiche : Bool // Highway zu OB: undefinierte Weiche + Err_Weiche_belegt : Bool // Highway zu OB: Weiche bleibt belegt + Err_Kein_LeseErgebnis : Bool // Highway zu OB: Kein Ergebnis von LeseEinheit + Err_Leser_nicht_bereit : Bool // Highway zu OB: Leser nicht betriebsbereit + Barcode_nicht_bekannt : Bool // Highway zu OB: Barcode nicht in Datenbank vorhanden + Schleuse_MB3014 : Struct // AMR (UH06): Schleuse MB3014 (Brandschutztüre 3) + Schleuse_DL : Bool // Highway zu OB: Schleuse-Datenliste fehlerhaft + Undef_Schleuse : Bool // Highway zu OB: undefinierter Schleuse + Err_Trolley_nicht_in_Schleuse : Bool // Highway zu OB: Trolley fährt nicht in Schleuse + Err_Uebzeit : Bool // Highway zu OB: Überwachungzeit ist abgelaufen + Err_Schritt : Bool // Highway zu OB: Schritt-Nummer ist nicht definiert + Err_Stau_Einfahrt : Bool // Highway zu OB: Stau bei Bereich-Einfahrt + Err_BLKMov : Bool // Highway zu OB: Error bei Block kopieren + Err_Trolley_raus : Bool // Highway zu OB: Trolley fährt nicht aus Schleuse + Err_Raus_Sensor : Bool // Highway zu OB: Raus-Sensor wird nicht erreicht (oder dauernd aktiv)! + Err_Ziel : Bool // Highway zu OB: Trolley-Ziel nicht bekannt + Err_Weichen_DL : Bool // Highway zu OB: Weichen-Datenliste fehlerhaft + Err_Undef_Weiche : Bool // Highway zu OB: undefinierte Weiche + Err_Weiche_belegt : Bool // Highway zu OB: Weiche bleibt belegt + Err_Kein_LeseErgebnis : Bool // Highway zu OB: Kein Ergebnis von LeseEinheit + Err_Leser_nicht_bereit : Bool // Highway zu OB: Leser nicht betriebsbereit + Barcode_nicht_bekannt : Bool // Highway zu OB: Barcode nicht in Datenbank vorhanden + Schleuse_MB3061 : Struct // AMR (UH06): Schleuse MB3061 (Highway zu AMR) + Schleuse_DL : Bool // Highway zu AMR : Schleuse-Datenliste fehlerhaft + Undef_Schleuse : Bool // Highway zu AMR : undefinierter Schleuse + Err_Trolley_nicht_in_Schleuse : Bool // Highway zu AMR : Trolley fährt nicht in Schleuse + Err_Uebzeit : Bool // Highway zu AMR : Überwachungzeit ist abgelaufen + Err_Schritt : Bool // Highway zu AMR : Schritt-Nummer ist nicht definiert + Err_Stau_Einfahrt : Bool // Highway zu AMR : Stau bei Bereich-Einfahrt + Err_BLKMov : Bool // Highway zu AMR : Error bei Block kopieren + Err_Trolley_raus : Bool // Highway zu AMR : Trolley fährt nicht aus Schleuse + Err_Raus_Sensor : Bool // Highway zu AMR : Raus-Sensor wird nicht erreicht (oder dauernd aktiv)! + Err_Ziel : Bool // Highway zu AMR : Trolley-Ziel nicht bekannt + Err_Weichen_DL : Bool // Highway zu AMR : Weichen-Datenliste fehlerhaft + Err_Undef_Weiche : Bool // Highway zu AMR : undefinierte Weiche + Err_Weiche_belegt : Bool // Highway zu AMR : Weiche bleibt belegt + Err_Kein_LeseErgebnis : Bool // Highway zu AMR : Kein Ergebnis von LeseEinheit + Err_Leser_nicht_bereit : Bool // Highway zu AMR : Leser nicht betriebsbereit + Barcode_nicht_bekannt : Bool // Highway zu AMR : Barcode nicht in Datenbank vorhanden + Schleuse_MB3070 : Struct // AMR (UH06): Schleuse MB3070 (Highway zu Outbound) + Schleuse_DL : Bool // Highway zu OB: Schleuse-Datenliste fehlerhaft + Undef_Schleuse : Bool // Highway zu OB: undefinierter Schleuse + Err_Trolley_nicht_in_Schleuse : Bool // Highway zu OB: Trolley fährt nicht in Schleuse + Err_Uebzeit : Bool // Highway zu OB: Überwachungzeit ist abgelaufen + Err_Schritt : Bool // Highway zu OB: Schritt-Nummer ist nicht definiert + Err_Stau_Einfahrt : Bool // Highway zu OB: Stau bei Bereich-Einfahrt + Err_BLKMov : Bool // Highway zu OB: Error bei Block kopieren + Err_Trolley_raus : Bool // Highway zu OB: Trolley fährt nicht aus Schleuse + Err_Raus_Sensor : Bool // Highway zu OB: Raus-Sensor wird nicht erreicht (oder dauernd aktiv)! + Err_Ziel : Bool // Highway zu OB: Trolley-Ziel nicht bekannt + Err_Weichen_DL : Bool // Highway zu OB: Weichen-Datenliste fehlerhaft + Err_Undef_Weiche : Bool // Highway zu OB: undefinierte Weiche + Err_Weiche_belegt : Bool // Highway zu OB: Weiche bleibt belegt + Err_Kein_LeseErgebnis : Bool // Highway zu OB: Kein Ergebnis von LeseEinheit + Err_Leser_nicht_bereit : Bool // Highway zu OB: Leser nicht betriebsbereit + Barcode_nicht_bekannt : Bool // Highway zu OB: Barcode nicht in Datenbank vorhanden + Schleuse_MB3241 : Struct // AMR (UH06): Schleuse MB3241 (Vor Einfahrt PS5) + Schleuse_DL : Bool // Vor Einfahrt PS5: Schleuse-Datenliste fehlerhaft + Undef_Schleuse : Bool // Vor Einfahrt PS5: undefinierter Schleuse + Err_Trolley_nicht_in_Schleuse : Bool // Vor Einfahrt PS5: Trolley fährt nicht in Schleuse + Err_Uebzeit : Bool // Vor Einfahrt PS5: Überwachungzeit ist abgelaufen + Err_Schritt : Bool // Vor Einfahrt PS5: Schritt-Nummer ist nicht definiert + Err_Stau_Einfahrt : Bool // Vor Einfahrt PS5: Stau bei Bereich-Einfahrt + Err_BLKMov : Bool // Vor Einfahrt PS5: Error bei Block kopieren + Err_Trolley_raus : Bool // Vor Einfahrt PS5: Trolley fährt nicht aus Schleuse + Err_Raus_Sensor : Bool // Vor Einfahrt PS5: Raus-Sensor wird nicht erreicht (oder dauernd aktiv)! + Err_Ziel : Bool // Vor Einfahrt PS5: Trolley-Ziel nicht bekannt + Err_Weichen_DL : Bool // Vor Einfahrt PS5: Weichen-Datenliste fehlerhaft + Err_Undef_Weiche : Bool // Vor Einfahrt PS5: undefinierte Weiche + Err_Weiche_belegt : Bool // Vor Einfahrt PS5: Weiche bleibt belegt + Err_Kein_LeseErgebnis : Bool // Vor Einfahrt PS5: Kein Ergebnis von LeseEinheit + Err_Leser_nicht_bereit : Bool // Vor Einfahrt PS5: Leser nicht betriebsbereit + Barcode_nicht_bekannt : Bool // Vor Einfahrt PS5: Barcode nicht in Datenbank vorhanden + Weiche_MB3242 : Struct // AMR (UH06): Weiche MB3242 (Einfahrt PS5) + Weichen_DL : Bool // Einfahrt PS5: Weichen-Datenliste fehlerhaft + Undef_Weiche : Bool // Einfahrt PS5: undefinierte Weiche + BLKMov : Bool // Einfahrt PS5: Fehler bei Block kopieren + Undef_Bereich+1 : Bool // Einfahrt PS5: Bereich +1 unbekannt + Frei04 : Bool // Einfahrt PS5: Frei04 + Frei05 : Bool // Einfahrt PS5: Frei05 + Ziel_undefiniert : Bool // Einfahrt PS5: Ziel ist undefiniert + Err_Schleusen_DL : Bool // Einfahrt PS5: Schleusen-Datenliste fehlerhaft + Err_Undef_Schleuse-1 : Bool // Einfahrt PS5: undefinierte Schleuse -1 + Übzeit_Gerade : Bool // Einfahrt PS5: Trolley bei Geradefahrt in Weiche verklemmt (-> Antrieb gestoppt) + Übzeit_Abzweig : Bool // Einfahrt PS5: Trolley bei Abzweigfahrt in Weiche verklemmt (-> Antrieb gestoppt) + Gerade_Sensor_aktiv : Bool // Einfahrt PS5: Ziel-Sensor Geradefahrt aktiv + Abzweig_Sensor_aktiv : Bool // Einfahrt PS5: Ziel-Sensor Abzweigfahrt aktiv + Gerade_Bereich_belegt : Bool // Einfahrt PS5: Bereich Geradefahrt noch belegt + Abzweig_Bereich_belegt : Bool // Einfahrt PS5: Bereich Abzweigfahrt noch belegt + Reset_aktiv : Bool // Einfahrt PS5: Reset ist aktiv + Schleuse_MB3243 : Struct // AMR (UH06): Schleuse MB3243 (PS5 Vorstau) + Schleuse_DL : Bool // PS5 vor Arbeitsplätze: Schleuse-Datenliste fehlerhaft + Undef_Schleuse : Bool // PS5 vor Arbeitsplätze: undefinierter Schleuse + Err_Trolley_nicht_in_Schleuse : Bool // PS5 vor Arbeitsplätze: Trolley fährt nicht in Schleuse + Err_Uebzeit : Bool // PS5 vor Arbeitsplätze: Überwachungzeit ist abgelaufen + Err_Schritt : Bool // PS5 vor Arbeitsplätze: Schritt-Nummer ist nicht definiert + Err_Stau_Einfahrt : Bool // PS5 vor Arbeitsplätze: Stau bei Bereich-Einfahrt + Err_BLKMov : Bool // PS5 vor Arbeitsplätze: Error bei Block kopieren + Err_Trolley_raus : Bool // PS5 vor Arbeitsplätze: Trolley fährt nicht aus Schleuse + Err_Raus_Sensor : Bool // PS5 vor Arbeitsplätze: Raus-Sensor wird nicht erreicht (oder dauernd aktiv)! + Err_Ziel : Bool // PS5 vor Arbeitsplätze: Trolley-Ziel nicht bekannt + Err_Weichen_DL : Bool // PS5 vor Arbeitsplätze: Weichen-Datenliste fehlerhaft + Err_Undef_Weiche : Bool // PS5 vor Arbeitsplätze: undefinierte Weiche + Err_Weiche_belegt : Bool // PS5 vor Arbeitsplätze: Weiche bleibt belegt + Err_Kein_LeseErgebnis : Bool // PS5 vor Arbeitsplätze: Kein Ergebnis von LeseEinheit + Err_Leser_nicht_bereit : Bool // PS5 vor Arbeitsplätze: Leser nicht betriebsbereit + Barcode_nicht_bekannt : Bool // PS5 vor Arbeitsplätze: Barcode nicht in Datenbank vorhanden + Stopper_MB3245 : Struct // AMR (UH06): Stopper MB3245 (PS5 / Arbeitsplatz 1) + Schleuse_DL : Bool // PS5 / Arbeitsplatz 1: Schleuse-Datenliste fehlerhaft + Undef_Schleuse : Bool // PS5 / Arbeitsplatz 1: undefinierter Schleuse + Err_Trolley_nicht_in_Schleuse : Bool // PS5 / Arbeitsplatz 1: Trolley fährt nicht in Schleuse + Err_Uebzeit : Bool // PS5 / Arbeitsplatz 1: Überwachungzeit ist abgelaufen + Err_Schritt : Bool // PS5 / Arbeitsplatz 1: Schritt-Nummer ist nicht definiert + Err_Stau_Einfahrt : Bool // PS5 / Arbeitsplatz 1: Stau bei Bereich-Einfahrt + Err_BLKMov : Bool // PS5 / Arbeitsplatz 1: Error bei Block kopieren + Err_Trolley_raus : Bool // PS5 / Arbeitsplatz 1: Trolley fährt nicht aus Schleuse + Err_Raus_Sensor : Bool // PS5 / Arbeitsplatz 1: Raus-Sensor wird nicht erreicht (oder dauernd aktiv)! + Err_Ziel : Bool // PS5 / Arbeitsplatz 1: Trolley-Ziel nicht bekannt + Err_Weichen_DL : Bool // PS5 / Arbeitsplatz 1: Weichen-Datenliste fehlerhaft + Err_Undef_Weiche : Bool // PS5 / Arbeitsplatz 1: undefinierte Weiche + Err_Weiche_belegt : Bool // PS5 / Arbeitsplatz 1: Weiche bleibt belegt + Err_Kein_LeseErgebnis : Bool // PS5 / Arbeitsplatz 1: Kein Ergebnis von LeseEinheit + Err_Leser_nicht_bereit : Bool // PS5 / Arbeitsplatz 1: Leser nicht betriebsbereit + Barcode_nicht_bekannt : Bool // PS5 / Arbeitsplatz 1: Barcode nicht in Datenbank vorhanden + Stopper_MB3251 : Struct // AMR (UH06): Stopper MB3251 (PS5 / Arbeitsplatz 2) + Schleuse_DL : Bool // PS5 / Arbeitsplatz 2: Schleuse-Datenliste fehlerhaft + Undef_Schleuse : Bool // PS5 / Arbeitsplatz 2: undefinierter Schleuse + Err_Trolley_nicht_in_Schleuse : Bool // PS5 / Arbeitsplatz 2: Trolley fährt nicht in Schleuse + Err_Uebzeit : Bool // PS5 / Arbeitsplatz 2: Überwachungzeit ist abgelaufen + Err_Schritt : Bool // PS5 / Arbeitsplatz 2: Schritt-Nummer ist nicht definiert + Err_Stau_Einfahrt : Bool // PS5 / Arbeitsplatz 2: Stau bei Bereich-Einfahrt + Err_BLKMov : Bool // PS5 / Arbeitsplatz 2: Error bei Block kopieren + Err_Trolley_raus : Bool // PS5 / Arbeitsplatz 2: Trolley fährt nicht aus Schleuse + Err_Raus_Sensor : Bool // PS5 / Arbeitsplatz 2: Raus-Sensor wird nicht erreicht (oder dauernd aktiv)! + Err_Ziel : Bool // PS5 / Arbeitsplatz 2: Trolley-Ziel nicht bekannt + Err_Weichen_DL : Bool // PS5 / Arbeitsplatz 2: Weichen-Datenliste fehlerhaft + Err_Undef_Weiche : Bool // PS5 / Arbeitsplatz 2: undefinierte Weiche + Err_Weiche_belegt : Bool // PS5 / Arbeitsplatz 2: Weiche bleibt belegt + Err_Kein_LeseErgebnis : Bool // PS5 / Arbeitsplatz 2: Kein Ergebnis von LeseEinheit + Err_Leser_nicht_bereit : Bool // PS5 / Arbeitsplatz 2: Leser nicht betriebsbereit + Barcode_nicht_bekannt : Bool // PS5 / Arbeitsplatz 2: Barcode nicht in Datenbank vorhanden + Stopper_MB3255 : Struct // AMR (UH06): Stopper MB3255 (PS5 / Arbeitsplatz 3) + Schleuse_DL : Bool // PS5 / Arbeitsplatz 3: Schleuse-Datenliste fehlerhaft + Undef_Schleuse : Bool // PS5 / Arbeitsplatz 3: undefinierter Schleuse + Err_Trolley_nicht_in_Schleuse : Bool // PS5 / Arbeitsplatz 3: Trolley fährt nicht in Schleuse + Err_Uebzeit : Bool // PS5 / Arbeitsplatz 3: Überwachungzeit ist abgelaufen + Err_Schritt : Bool // PS5 / Arbeitsplatz 3: Schritt-Nummer ist nicht definiert + Err_Stau_Einfahrt : Bool // PS5 / Arbeitsplatz 3: Stau bei Bereich-Einfahrt + Err_BLKMov : Bool // PS5 / Arbeitsplatz 3: Error bei Block kopieren + Err_Trolley_raus : Bool // PS5 / Arbeitsplatz 3: Trolley fährt nicht aus Schleuse + Err_Raus_Sensor : Bool // PS5 / Arbeitsplatz 3: Raus-Sensor wird nicht erreicht (oder dauernd aktiv)! + Err_Ziel : Bool // PS5 / Arbeitsplatz 3: Trolley-Ziel nicht bekannt + Err_Weichen_DL : Bool // PS5 / Arbeitsplatz 3: Weichen-Datenliste fehlerhaft + Err_Undef_Weiche : Bool // PS5 / Arbeitsplatz 3: undefinierte Weiche + Err_Weiche_belegt : Bool // PS5 / Arbeitsplatz 3: Weiche bleibt belegt + Err_Kein_LeseErgebnis : Bool // PS5 / Arbeitsplatz 3: Kein Ergebnis von LeseEinheit + Err_Leser_nicht_bereit : Bool // PS5 / Arbeitsplatz 3: Leser nicht betriebsbereit + Barcode_nicht_bekannt : Bool // PS5 / Arbeitsplatz 3: Barcode nicht in Datenbank vorhanden + Schleuse_MB3262 : Struct // AMR (UH06): Schleuse MB3262 (PS5 Nachstau) + Schleuse_DL : Bool // PS5 vor Ausfahrt: Schleuse-Datenliste fehlerhaft + Undef_Schleuse : Bool // PS5 vor Ausfahrt: undefinierter Schleuse + Err_Trolley_nicht_in_Schleuse : Bool // PS5 vor Ausfahrt: Trolley fährt nicht in Schleuse + Err_Uebzeit : Bool // PS5 vor Ausfahrt: Überwachungzeit ist abgelaufen + Err_Schritt : Bool // PS5 vor Ausfahrt: Schritt-Nummer ist nicht definiert + Err_Stau_Einfahrt : Bool // PS5 vor Ausfahrt: Stau bei Bereich-Einfahrt + Err_BLKMov : Bool // PS5 vor Ausfahrt: Error bei Block kopieren + Err_Trolley_raus : Bool // PS5 vor Ausfahrt: Trolley fährt nicht aus Schleuse + Err_Raus_Sensor : Bool // PS5 vor Ausfahrt: Raus-Sensor wird nicht erreicht (oder dauernd aktiv)! + Err_Ziel : Bool // PS5 vor Ausfahrt: Trolley-Ziel nicht bekannt + Err_Weichen_DL : Bool // PS5 vor Ausfahrt: Weichen-Datenliste fehlerhaft + Err_Undef_Weiche : Bool // PS5 vor Ausfahrt: undefinierte Weiche + Err_Weiche_belegt : Bool // PS5 vor Ausfahrt: Weiche bleibt belegt + Err_Kein_LeseErgebnis : Bool // PS5 vor Ausfahrt: Kein Ergebnis von LeseEinheit + Err_Leser_nicht_bereit : Bool // PS5 vor Ausfahrt: Leser nicht betriebsbereit + Barcode_nicht_bekannt : Bool // PS5 vor Ausfahrt: Barcode nicht in Datenbank vorhanden + Schleuse_MB3265 : Struct // AMR (UH06): Schleuse MB3265 (Vor Ausfahrt PS5) + Schleuse_DL : Bool // Vor PS5-Ausfahrt: Schleuse-Datenliste fehlerhaft + Undef_Schleuse : Bool // Vor PS5-Ausfahrt: undefinierter Schleuse + Err_Trolley_nicht_in_Schleuse : Bool // Vor PS5-Ausfahrt: Trolley fährt nicht in Schleuse + Err_Uebzeit : Bool // Vor PS5-Ausfahrt: Überwachungzeit ist abgelaufen + Err_Schritt : Bool // Vor PS5-Ausfahrt: Schritt-Nummer ist nicht definiert + Err_Stau_Einfahrt : Bool // Vor PS5-Ausfahrt: Stau bei Bereich-Einfahrt + Err_BLKMov : Bool // Vor PS5-Ausfahrt: Error bei Block kopieren + Err_Trolley_raus : Bool // Vor PS5-Ausfahrt: Trolley fährt nicht aus Schleuse + Err_Raus_Sensor : Bool // Vor PS5-Ausfahrt: Raus-Sensor wird nicht erreicht (oder dauernd aktiv)! + Err_Ziel : Bool // Vor PS5-Ausfahrt: Trolley-Ziel nicht bekannt + Err_Weichen_DL : Bool // Vor PS5-Ausfahrt: Weichen-Datenliste fehlerhaft + Err_Undef_Weiche : Bool // Vor PS5-Ausfahrt: undefinierte Weiche + Err_Weiche_belegt : Bool // Vor PS5-Ausfahrt: Weiche bleibt belegt + Err_Kein_LeseErgebnis : Bool // Vor PS5-Ausfahrt: Kein Ergebnis von LeseEinheit + Err_Leser_nicht_bereit : Bool // Vor PS5-Ausfahrt: Leser nicht betriebsbereit + Barcode_nicht_bekannt : Bool // Vor PS5-Ausfahrt: Barcode nicht in Datenbank vorhanden + Schleuse_MB3271 : Struct // AMR (UH06): Schleuse MB3271 (Vor Einfahrt PS4) + Schleuse_DL : Bool // Vor Einfahrt PS4: Schleuse-Datenliste fehlerhaft + Undef_Schleuse : Bool // Vor Einfahrt PS4: undefinierter Schleuse + Err_Trolley_nicht_in_Schleuse : Bool // Vor Einfahrt PS4: Trolley fährt nicht in Schleuse + Err_Uebzeit : Bool // Vor Einfahrt PS4: Überwachungzeit ist abgelaufen + Err_Schritt : Bool // Vor Einfahrt PS4: Schritt-Nummer ist nicht definiert + Err_Stau_Einfahrt : Bool // Vor Einfahrt PS4: Stau bei Bereich-Einfahrt + Err_BLKMov : Bool // Vor Einfahrt PS4: Error bei Block kopieren + Err_Trolley_raus : Bool // Vor Einfahrt PS4: Trolley fährt nicht aus Schleuse + Err_Raus_Sensor : Bool // Vor Einfahrt PS4: Raus-Sensor wird nicht erreicht (oder dauernd aktiv)! + Err_Ziel : Bool // Vor Einfahrt PS4: Trolley-Ziel nicht bekannt + Err_Weichen_DL : Bool // Vor Einfahrt PS4: Weichen-Datenliste fehlerhaft + Err_Undef_Weiche : Bool // Vor Einfahrt PS4: undefinierte Weiche + Err_Weiche_belegt : Bool // Vor Einfahrt PS4: Weiche bleibt belegt + Err_Kein_LeseErgebnis : Bool // Vor Einfahrt PS4: Kein Ergebnis von LeseEinheit + Err_Leser_nicht_bereit : Bool // Vor Einfahrt PS4: Leser nicht betriebsbereit + Barcode_nicht_bekannt : Bool // Vor Einfahrt PS4: Barcode nicht in Datenbank vorhanden + Weiche_MB3272 : Struct // AMR (UH06): Weiche MB3272 (Einfahrt PS4) + Weichen_DL : Bool // Einfahrt PS4: Weichen-Datenliste fehlerhaft + Undef_Weiche : Bool // Einfahrt PS4: undefinierte Weiche + BLKMov : Bool // Einfahrt PS4: Fehler bei Block kopieren + Undef_Bereich+1 : Bool // Einfahrt PS4: Bereich +1 unbekannt + Frei04 : Bool // Einfahrt PS4: Frei04 + Frei05 : Bool // Einfahrt PS4: Frei05 + Ziel_undefiniert : Bool // Einfahrt PS4: Ziel ist undefiniert + Err_Schleusen_DL : Bool // Einfahrt PS4: Schleusen-Datenliste fehlerhaft + Err_Undef_Schleuse-1 : Bool // Einfahrt PS4: undefinierte Schleuse -1 + Übzeit_Gerade : Bool // Einfahrt PS4: Trolley bei Geradefahrt in Weiche verklemmt (-> Antrieb gestoppt) + Übzeit_Abzweig : Bool // Einfahrt PS4: Trolley bei Abzweigfahrt in Weiche verklemmt (-> Antrieb gestoppt) + Gerade_Sensor_aktiv : Bool // Einfahrt PS4: Ziel-Sensor Geradefahrt aktiv + Abzweig_Sensor_aktiv : Bool // Einfahrt PS4: Ziel-Sensor Abzweigfahrt aktiv + Gerade_Bereich_belegt : Bool // Einfahrt PS4: Bereich Geradefahrt noch belegt + Abzweig_Bereich_belegt : Bool // Einfahrt PS4: Bereich Abzweigfahrt noch belegt + Reset_aktiv : Bool // Einfahrt PS4: Reset ist aktiv + Schleuse_MB3273 : Struct // AMR (UH06): Schleuse MB3273 (PS4 Vorstau) + Schleuse_DL : Bool // PS4 vor Arbeitsplätze: Schleuse-Datenliste fehlerhaft + Undef_Schleuse : Bool // PS4 vor Arbeitsplätze: undefinierter Schleuse + Err_Trolley_nicht_in_Schleuse : Bool // PS4 vor Arbeitsplätze: Trolley fährt nicht in Schleuse + Err_Uebzeit : Bool // PS4 vor Arbeitsplätze: Überwachungzeit ist abgelaufen + Err_Schritt : Bool // PS4 vor Arbeitsplätze: Schritt-Nummer ist nicht definiert + Err_Stau_Einfahrt : Bool // PS4 vor Arbeitsplätze: Stau bei Bereich-Einfahrt + Err_BLKMov : Bool // PS4 vor Arbeitsplätze: Error bei Block kopieren + Err_Trolley_raus : Bool // PS4 vor Arbeitsplätze: Trolley fährt nicht aus Schleuse + Err_Raus_Sensor : Bool // PS4 vor Arbeitsplätze: Raus-Sensor wird nicht erreicht (oder dauernd aktiv)! + Err_Ziel : Bool // PS4 vor Arbeitsplätze: Trolley-Ziel nicht bekannt + Err_Weichen_DL : Bool // PS4 vor Arbeitsplätze: Weichen-Datenliste fehlerhaft + Err_Undef_Weiche : Bool // PS4 vor Arbeitsplätze: undefinierte Weiche + Err_Weiche_belegt : Bool // PS4 vor Arbeitsplätze: Weiche bleibt belegt + Err_Kein_LeseErgebnis : Bool // PS4 vor Arbeitsplätze: Kein Ergebnis von LeseEinheit + Err_Leser_nicht_bereit : Bool // PS4 vor Arbeitsplätze: Leser nicht betriebsbereit + Barcode_nicht_bekannt : Bool // PS4 vor Arbeitsplätze: Barcode nicht in Datenbank vorhanden + Stopper_MB3275 : Struct // AMR (UH06): Stopper MB3275 (PS4 / Arbeitsplatz 1) + Schleuse_DL : Bool // PS4 / Arbeitsplatz 1: Schleuse-Datenliste fehlerhaft + Undef_Schleuse : Bool // PS4 / Arbeitsplatz 1: undefinierter Schleuse + Err_Trolley_nicht_in_Schleuse : Bool // PS4 / Arbeitsplatz 1: Trolley fährt nicht in Schleuse + Err_Uebzeit : Bool // PS4 / Arbeitsplatz 1: Überwachungzeit ist abgelaufen + Err_Schritt : Bool // PS4 / Arbeitsplatz 1: Schritt-Nummer ist nicht definiert + Err_Stau_Einfahrt : Bool // PS4 / Arbeitsplatz 1: Stau bei Bereich-Einfahrt + Err_BLKMov : Bool // PS4 / Arbeitsplatz 1: Error bei Block kopieren + Err_Trolley_raus : Bool // PS4 / Arbeitsplatz 1: Trolley fährt nicht aus Schleuse + Err_Raus_Sensor : Bool // PS4 / Arbeitsplatz 1: Raus-Sensor wird nicht erreicht (oder dauernd aktiv)! + Err_Ziel : Bool // PS4 / Arbeitsplatz 1: Trolley-Ziel nicht bekannt + Err_Weichen_DL : Bool // PS4 / Arbeitsplatz 1: Weichen-Datenliste fehlerhaft + Err_Undef_Weiche : Bool // PS4 / Arbeitsplatz 1: undefinierte Weiche + Err_Weiche_belegt : Bool // PS4 / Arbeitsplatz 1: Weiche bleibt belegt + Err_Kein_LeseErgebnis : Bool // PS4 / Arbeitsplatz 1: Kein Ergebnis von LeseEinheit + Err_Leser_nicht_bereit : Bool // PS4 / Arbeitsplatz 1: Leser nicht betriebsbereit + Barcode_nicht_bekannt : Bool // PS4 / Arbeitsplatz 1: Barcode nicht in Datenbank vorhanden + Stopper_MB3281 : Struct // AMR (UH06): Stopper MB3281 (PS4 / Arbeitsplatz 2) + Schleuse_DL : Bool // PS4 / Arbeitsplatz 2: Schleuse-Datenliste fehlerhaft + Undef_Schleuse : Bool // PS4 / Arbeitsplatz 2: undefinierter Schleuse + Err_Trolley_nicht_in_Schleuse : Bool // PS4 / Arbeitsplatz 2: Trolley fährt nicht in Schleuse + Err_Uebzeit : Bool // PS4 / Arbeitsplatz 2: Überwachungzeit ist abgelaufen + Err_Schritt : Bool // PS4 / Arbeitsplatz 2: Schritt-Nummer ist nicht definiert + Err_Stau_Einfahrt : Bool // PS4 / Arbeitsplatz 2: Stau bei Bereich-Einfahrt + Err_BLKMov : Bool // PS4 / Arbeitsplatz 2: Error bei Block kopieren + Err_Trolley_raus : Bool // PS4 / Arbeitsplatz 2: Trolley fährt nicht aus Schleuse + Err_Raus_Sensor : Bool // PS4 / Arbeitsplatz 2: Raus-Sensor wird nicht erreicht (oder dauernd aktiv)! + Err_Ziel : Bool // PS4 / Arbeitsplatz 2: Trolley-Ziel nicht bekannt + Err_Weichen_DL : Bool // PS4 / Arbeitsplatz 2: Weichen-Datenliste fehlerhaft + Err_Undef_Weiche : Bool // PS4 / Arbeitsplatz 2: undefinierte Weiche + Err_Weiche_belegt : Bool // PS4 / Arbeitsplatz 2: Weiche bleibt belegt + Err_Kein_LeseErgebnis : Bool // PS4 / Arbeitsplatz 2: Kein Ergebnis von LeseEinheit + Err_Leser_nicht_bereit : Bool // PS4 / Arbeitsplatz 2: Leser nicht betriebsbereit + Barcode_nicht_bekannt : Bool // PS4 / Arbeitsplatz 2: Barcode nicht in Datenbank vorhanden + Stopper_MB3285 : Struct // AMR (UH06): Stopper MB3285 (PS4 / Arbeitsplatz 3) + Schleuse_DL : Bool // PS4 / Arbeitsplatz 3: Schleuse-Datenliste fehlerhaft + Undef_Schleuse : Bool // PS4 / Arbeitsplatz 3: undefinierter Schleuse + Err_Trolley_nicht_in_Schleuse : Bool // PS4 / Arbeitsplatz 3: Trolley fährt nicht in Schleuse + Err_Uebzeit : Bool // PS4 / Arbeitsplatz 3: Überwachungzeit ist abgelaufen + Err_Schritt : Bool // PS4 / Arbeitsplatz 3: Schritt-Nummer ist nicht definiert + Err_Stau_Einfahrt : Bool // PS4 / Arbeitsplatz 3: Stau bei Bereich-Einfahrt + Err_BLKMov : Bool // PS4 / Arbeitsplatz 3: Error bei Block kopieren + Err_Trolley_raus : Bool // PS4 / Arbeitsplatz 3: Trolley fährt nicht aus Schleuse + Err_Raus_Sensor : Bool // PS4 / Arbeitsplatz 3: Raus-Sensor wird nicht erreicht (oder dauernd aktiv)! + Err_Ziel : Bool // PS4 / Arbeitsplatz 3: Trolley-Ziel nicht bekannt + Err_Weichen_DL : Bool // PS4 / Arbeitsplatz 3: Weichen-Datenliste fehlerhaft + Err_Undef_Weiche : Bool // PS4 / Arbeitsplatz 3: undefinierte Weiche + Err_Weiche_belegt : Bool // PS4 / Arbeitsplatz 3: Weiche bleibt belegt + Err_Kein_LeseErgebnis : Bool // PS4 / Arbeitsplatz 3: Kein Ergebnis von LeseEinheit + Err_Leser_nicht_bereit : Bool // PS4 / Arbeitsplatz 3: Leser nicht betriebsbereit + Barcode_nicht_bekannt : Bool // PS4 / Arbeitsplatz 3: Barcode nicht in Datenbank vorhanden + Schleuse_MB3291 : Struct // AMR (UH06): Schleuse MB3291 (PS4 Nachstau) + Schleuse_DL : Bool // PS4 vor Ausfahrt: Schleuse-Datenliste fehlerhaft + Undef_Schleuse : Bool // PS4 vor Ausfahrt: undefinierter Schleuse + Err_Trolley_nicht_in_Schleuse : Bool // PS4 vor Ausfahrt: Trolley fährt nicht in Schleuse + Err_Uebzeit : Bool // PS4 vor Ausfahrt: Überwachungzeit ist abgelaufen + Err_Schritt : Bool // PS4 vor Ausfahrt: Schritt-Nummer ist nicht definiert + Err_Stau_Einfahrt : Bool // PS4 vor Ausfahrt: Stau bei Bereich-Einfahrt + Err_BLKMov : Bool // PS4 vor Ausfahrt: Error bei Block kopieren + Err_Trolley_raus : Bool // PS4 vor Ausfahrt: Trolley fährt nicht aus Schleuse + Err_Raus_Sensor : Bool // PS4 vor Ausfahrt: Raus-Sensor wird nicht erreicht (oder dauernd aktiv)! + Err_Ziel : Bool // PS4 vor Ausfahrt: Trolley-Ziel nicht bekannt + Err_Weichen_DL : Bool // PS4 vor Ausfahrt: Weichen-Datenliste fehlerhaft + Err_Undef_Weiche : Bool // PS4 vor Ausfahrt: undefinierte Weiche + Err_Weiche_belegt : Bool // PS4 vor Ausfahrt: Weiche bleibt belegt + Err_Kein_LeseErgebnis : Bool // PS4 vor Ausfahrt: Kein Ergebnis von LeseEinheit + Err_Leser_nicht_bereit : Bool // PS4 vor Ausfahrt: Leser nicht betriebsbereit + Barcode_nicht_bekannt : Bool // PS4 vor Ausfahrt: Barcode nicht in Datenbank vorhanden + Schleuse_MB3293 : Struct // AMR (UH06): Schleuse MB3293 (Vor Ausfahrt PS4) + Schleuse_DL : Bool // Vor PS4-Ausfahrt: Schleuse-Datenliste fehlerhaft + Undef_Schleuse : Bool // Vor PS4-Ausfahrt: undefinierter Schleuse + Err_Trolley_nicht_in_Schleuse : Bool // Vor PS4-Ausfahrt: Trolley fährt nicht in Schleuse + Err_Uebzeit : Bool // Vor PS4-Ausfahrt: Überwachungzeit ist abgelaufen + Err_Schritt : Bool // Vor PS4-Ausfahrt: Schritt-Nummer ist nicht definiert + Err_Stau_Einfahrt : Bool // Vor PS4-Ausfahrt: Stau bei Bereich-Einfahrt + Err_BLKMov : Bool // Vor PS4-Ausfahrt: Error bei Block kopieren + Err_Trolley_raus : Bool // Vor PS4-Ausfahrt: Trolley fährt nicht aus Schleuse + Err_Raus_Sensor : Bool // Vor PS4-Ausfahrt: Raus-Sensor wird nicht erreicht (oder dauernd aktiv)! + Err_Ziel : Bool // Vor PS4-Ausfahrt: Trolley-Ziel nicht bekannt + Err_Weichen_DL : Bool // Vor PS4-Ausfahrt: Weichen-Datenliste fehlerhaft + Err_Undef_Weiche : Bool // Vor PS4-Ausfahrt: undefinierte Weiche + Err_Weiche_belegt : Bool // Vor PS4-Ausfahrt: Weiche bleibt belegt + Err_Kein_LeseErgebnis : Bool // Vor PS4-Ausfahrt: Kein Ergebnis von LeseEinheit + Err_Leser_nicht_bereit : Bool // Vor PS4-Ausfahrt: Leser nicht betriebsbereit + Barcode_nicht_bekannt : Bool // Vor PS4-Ausfahrt: Barcode nicht in Datenbank vorhanden + Weiche_MB3302 : Struct // AMR (UH06): Weiche MB3302 (Einfahrt PS3) + Weichen_DL : Bool // Einfahrt PS3: Weichen-Datenliste fehlerhaft + Undef_Weiche : Bool // Einfahrt PS3: undefinierte Weiche + BLKMov : Bool // Einfahrt PS3: Fehler bei Block kopieren + Undef_Bereich+1 : Bool // Einfahrt PS3: Bereich +1 unbekannt + Frei04 : Bool // Einfahrt PS3: Frei04 + Frei05 : Bool // Einfahrt PS3: Frei05 + Ziel_undefiniert : Bool // Einfahrt PS3: Ziel ist undefiniert + Err_Schleusen_DL : Bool // Einfahrt PS3: Schleusen-Datenliste fehlerhaft + Err_Undef_Schleuse-1 : Bool // Einfahrt PS3: undefinierte Schleuse -1 + Übzeit_Gerade : Bool // Einfahrt PS3: Trolley bei Geradefahrt in Weiche verklemmt (-> Antrieb gestoppt) + Übzeit_Abzweig : Bool // Einfahrt PS3: Trolley bei Abzweigfahrt in Weiche verklemmt (-> Antrieb gestoppt) + Gerade_Sensor_aktiv : Bool // Einfahrt PS3: Ziel-Sensor Geradefahrt aktiv + Abzweig_Sensor_aktiv : Bool // Einfahrt PS3: Ziel-Sensor Abzweigfahrt aktiv + Gerade_Bereich_belegt : Bool // Einfahrt PS3: Bereich Geradefahrt noch belegt + Abzweig_Bereich_belegt : Bool // Einfahrt PS3: Bereich Abzweigfahrt noch belegt + Reset_aktiv : Bool // Einfahrt PS3: Reset ist aktiv + Schleuse_MB3303 : Struct // AMR (UH06): Schleuse MB3303 (PS3 Vorstau) + Schleuse_DL : Bool // PS3 vor Arbeitsplätze: Schleuse-Datenliste fehlerhaft + Undef_Schleuse : Bool // PS3 vor Arbeitsplätze: undefinierter Schleuse + Err_Trolley_nicht_in_Schleuse : Bool // PS3 vor Arbeitsplätze: Trolley fährt nicht in Schleuse + Err_Uebzeit : Bool // PS3 vor Arbeitsplätze: Überwachungzeit ist abgelaufen + Err_Schritt : Bool // PS3 vor Arbeitsplätze: Schritt-Nummer ist nicht definiert + Err_Stau_Einfahrt : Bool // PS3 vor Arbeitsplätze: Stau bei Bereich-Einfahrt + Err_BLKMov : Bool // PS3 vor Arbeitsplätze: Error bei Block kopieren + Err_Trolley_raus : Bool // PS3 vor Arbeitsplätze: Trolley fährt nicht aus Schleuse + Err_Raus_Sensor : Bool // PS3 vor Arbeitsplätze: Raus-Sensor wird nicht erreicht (oder dauernd aktiv)! + Err_Ziel : Bool // PS3 vor Arbeitsplätze: Trolley-Ziel nicht bekannt + Err_Weichen_DL : Bool // PS3 vor Arbeitsplätze: Weichen-Datenliste fehlerhaft + Err_Undef_Weiche : Bool // PS3 vor Arbeitsplätze: undefinierte Weiche + Err_Weiche_belegt : Bool // PS3 vor Arbeitsplätze: Weiche bleibt belegt + Err_Kein_LeseErgebnis : Bool // PS3 vor Arbeitsplätze: Kein Ergebnis von LeseEinheit + Err_Leser_nicht_bereit : Bool // PS3 vor Arbeitsplätze: Leser nicht betriebsbereit + Barcode_nicht_bekannt : Bool // PS3 vor Arbeitsplätze: Barcode nicht in Datenbank vorhanden + Schleuse_MB3305 : Struct // AMR (UH06): Stopper MB3305 (PS3 / Arbeitsplatz 1) + Schleuse_DL : Bool // PS3 / Arbeitsplatz 1: Schleuse-Datenliste fehlerhaft + Undef_Schleuse : Bool // PS3 / Arbeitsplatz 1: undefinierter Schleuse + Err_Trolley_nicht_in_Schleuse : Bool // PS3 / Arbeitsplatz 1: Trolley fährt nicht in Schleuse + Err_Uebzeit : Bool // PS3 / Arbeitsplatz 1: Überwachungzeit ist abgelaufen + Err_Schritt : Bool // PS3 / Arbeitsplatz 1: Schritt-Nummer ist nicht definiert + Err_Stau_Einfahrt : Bool // PS3 / Arbeitsplatz 1: Stau bei Bereich-Einfahrt + Err_BLKMov : Bool // PS3 / Arbeitsplatz 1: Error bei Block kopieren + Err_Trolley_raus : Bool // PS3 / Arbeitsplatz 1: Trolley fährt nicht aus Schleuse + Err_Raus_Sensor : Bool // PS3 / Arbeitsplatz 1: Raus-Sensor wird nicht erreicht (oder dauernd aktiv)! + Err_Ziel : Bool // PS3 / Arbeitsplatz 1: Trolley-Ziel nicht bekannt + Err_Weichen_DL : Bool // PS3 / Arbeitsplatz 1: Weichen-Datenliste fehlerhaft + Err_Undef_Weiche : Bool // PS3 / Arbeitsplatz 1: undefinierte Weiche + Err_Weiche_belegt : Bool // PS3 / Arbeitsplatz 1: Weiche bleibt belegt + Err_Kein_LeseErgebnis : Bool // PS3 / Arbeitsplatz 1: Kein Ergebnis von LeseEinheit + Err_Leser_nicht_bereit : Bool // PS3 / Arbeitsplatz 1: Leser nicht betriebsbereit + Barcode_nicht_bekannt : Bool // PS3 / Arbeitsplatz 1: Barcode nicht in Datenbank vorhanden + Schleuse_MB3311 : Struct // AMR (UH06): Stopper MB3311 (PS3 / Arbeitsplatz 2) + Schleuse_DL : Bool // PS3 / Arbeitsplatz 2: Schleuse-Datenliste fehlerhaft + Undef_Schleuse : Bool // PS3 / Arbeitsplatz 2: undefinierter Schleuse + Err_Trolley_nicht_in_Schleuse : Bool // PS3 / Arbeitsplatz 2: Trolley fährt nicht in Schleuse + Err_Uebzeit : Bool // PS3 / Arbeitsplatz 2: Überwachungzeit ist abgelaufen + Err_Schritt : Bool // PS3 / Arbeitsplatz 2: Schritt-Nummer ist nicht definiert + Err_Stau_Einfahrt : Bool // PS3 / Arbeitsplatz 2: Stau bei Bereich-Einfahrt + Err_BLKMov : Bool // PS3 / Arbeitsplatz 2: Error bei Block kopieren + Err_Trolley_raus : Bool // PS3 / Arbeitsplatz 2: Trolley fährt nicht aus Schleuse + Err_Raus_Sensor : Bool // PS3 / Arbeitsplatz 2: Raus-Sensor wird nicht erreicht (oder dauernd aktiv)! + Err_Ziel : Bool // PS3 / Arbeitsplatz 2: Trolley-Ziel nicht bekannt + Err_Weichen_DL : Bool // PS3 / Arbeitsplatz 2: Weichen-Datenliste fehlerhaft + Err_Undef_Weiche : Bool // PS3 / Arbeitsplatz 2: undefinierte Weiche + Err_Weiche_belegt : Bool // PS3 / Arbeitsplatz 2: Weiche bleibt belegt + Err_Kein_LeseErgebnis : Bool // PS3 / Arbeitsplatz 2: Kein Ergebnis von LeseEinheit + Err_Leser_nicht_bereit : Bool // PS3 / Arbeitsplatz 2: Leser nicht betriebsbereit + Barcode_nicht_bekannt : Bool // PS3 / Arbeitsplatz 2: Barcode nicht in Datenbank vorhanden + Schleuse_MB3315 : Struct // AMR (UH06): Stopper MB3315 (PS3 / Arbeitsplatz 3) + Schleuse_DL : Bool // PS3 / Arbeitsplatz 3: Schleuse-Datenliste fehlerhaft + Undef_Schleuse : Bool // PS3 / Arbeitsplatz 3: undefinierter Schleuse + Err_Trolley_nicht_in_Schleuse : Bool // PS3 / Arbeitsplatz 3: Trolley fährt nicht in Schleuse + Err_Uebzeit : Bool // PS3 / Arbeitsplatz 3: Überwachungzeit ist abgelaufen + Err_Schritt : Bool // PS3 / Arbeitsplatz 3: Schritt-Nummer ist nicht definiert + Err_Stau_Einfahrt : Bool // PS3 / Arbeitsplatz 3: Stau bei Bereich-Einfahrt + Err_BLKMov : Bool // PS3 / Arbeitsplatz 3: Error bei Block kopieren + Err_Trolley_raus : Bool // PS3 / Arbeitsplatz 3: Trolley fährt nicht aus Schleuse + Err_Raus_Sensor : Bool // PS3 / Arbeitsplatz 3: Raus-Sensor wird nicht erreicht (oder dauernd aktiv)! + Err_Ziel : Bool // PS3 / Arbeitsplatz 3: Trolley-Ziel nicht bekannt + Err_Weichen_DL : Bool // PS3 / Arbeitsplatz 3: Weichen-Datenliste fehlerhaft + Err_Undef_Weiche : Bool // PS3 / Arbeitsplatz 3: undefinierte Weiche + Err_Weiche_belegt : Bool // PS3 / Arbeitsplatz 3: Weiche bleibt belegt + Err_Kein_LeseErgebnis : Bool // PS3 / Arbeitsplatz 3: Kein Ergebnis von LeseEinheit + Err_Leser_nicht_bereit : Bool // PS3 / Arbeitsplatz 3: Leser nicht betriebsbereit + Barcode_nicht_bekannt : Bool // PS3 / Arbeitsplatz 3: Barcode nicht in Datenbank vorhanden + Schleuse_MB3321 : Struct // AMR (UH06): Schleuse MB3321 (PS3 Nachstau) + Schleuse_DL : Bool // PS3 vor Ausfahrt: Schleuse-Datenliste fehlerhaft + Undef_Schleuse : Bool // PS3 vor Ausfahrt: undefinierter Schleuse + Err_Trolley_nicht_in_Schleuse : Bool // PS3 vor Ausfahrt: Trolley fährt nicht in Schleuse + Err_Uebzeit : Bool // PS3 vor Ausfahrt: Überwachungzeit ist abgelaufen + Err_Schritt : Bool // PS3 vor Ausfahrt: Schritt-Nummer ist nicht definiert + Err_Stau_Einfahrt : Bool // PS3 vor Ausfahrt: Stau bei Bereich-Einfahrt + Err_BLKMov : Bool // PS3 vor Ausfahrt: Error bei Block kopieren + Err_Trolley_raus : Bool // PS3 vor Ausfahrt: Trolley fährt nicht aus Schleuse + Err_Raus_Sensor : Bool // PS3 vor Ausfahrt: Raus-Sensor wird nicht erreicht (oder dauernd aktiv)! + Err_Ziel : Bool // PS3 vor Ausfahrt: Trolley-Ziel nicht bekannt + Err_Weichen_DL : Bool // PS3 vor Ausfahrt: Weichen-Datenliste fehlerhaft + Err_Undef_Weiche : Bool // PS3 vor Ausfahrt: undefinierte Weiche + Err_Weiche_belegt : Bool // PS3 vor Ausfahrt: Weiche bleibt belegt + Err_Kein_LeseErgebnis : Bool // PS3 vor Ausfahrt: Kein Ergebnis von LeseEinheit + Err_Leser_nicht_bereit : Bool // PS3 vor Ausfahrt: Leser nicht betriebsbereit + Barcode_nicht_bekannt : Bool // PS3 vor Ausfahrt: Barcode nicht in Datenbank vorhanden + Schleuse_MB3323 : Struct // AMR (UH06): Schleuse MB3323 (Vor Ausfahrt PS3) + Schleuse_DL : Bool // Vor PS3-Ausfahrt: Schleuse-Datenliste fehlerhaft + Undef_Schleuse : Bool // Vor PS3-Ausfahrt: undefinierter Schleuse + Err_Trolley_nicht_in_Schleuse : Bool // Vor PS3-Ausfahrt: Trolley fährt nicht in Schleuse + Err_Uebzeit : Bool // Vor PS3-Ausfahrt: Überwachungzeit ist abgelaufen + Err_Schritt : Bool // Vor PS3-Ausfahrt: Schritt-Nummer ist nicht definiert + Err_Stau_Einfahrt : Bool // Vor PS3-Ausfahrt: Stau bei Bereich-Einfahrt + Err_BLKMov : Bool // Vor PS3-Ausfahrt: Error bei Block kopieren + Err_Trolley_raus : Bool // Vor PS3-Ausfahrt: Trolley fährt nicht aus Schleuse + Err_Raus_Sensor : Bool // Vor PS3-Ausfahrt: Raus-Sensor wird nicht erreicht (oder dauernd aktiv)! + Err_Ziel : Bool // Vor PS3-Ausfahrt: Trolley-Ziel nicht bekannt + Err_Weichen_DL : Bool // Vor PS3-Ausfahrt: Weichen-Datenliste fehlerhaft + Err_Undef_Weiche : Bool // Vor PS3-Ausfahrt: undefinierte Weiche + Err_Weiche_belegt : Bool // Vor PS3-Ausfahrt: Weiche bleibt belegt + Err_Kein_LeseErgebnis : Bool // Vor PS3-Ausfahrt: Kein Ergebnis von LeseEinheit + Err_Leser_nicht_bereit : Bool // Vor PS3-Ausfahrt: Leser nicht betriebsbereit + Barcode_nicht_bekannt : Bool // Vor PS3-Ausfahrt: Barcode nicht in Datenbank vorhanden + Schleuse_MB3331 : Struct // AMR (UH06): Schleuse MB3331 (Vor Einfahrt PS2) + Schleuse_DL : Bool // Vor Einfahrt PS2: Schleuse-Datenliste fehlerhaft + Undef_Schleuse : Bool // Vor Einfahrt PS2: undefinierter Schleuse + Err_Trolley_nicht_in_Schleuse : Bool // Vor Einfahrt PS2: Trolley fährt nicht in Schleuse + Err_Uebzeit : Bool // Vor Einfahrt PS2: Überwachungzeit ist abgelaufen + Err_Schritt : Bool // Vor Einfahrt PS2: Schritt-Nummer ist nicht definiert + Err_Stau_Einfahrt : Bool // Vor Einfahrt PS2: Stau bei Bereich-Einfahrt + Err_BLKMov : Bool // Vor Einfahrt PS2: Error bei Block kopieren + Err_Trolley_raus : Bool // Vor Einfahrt PS2: Trolley fährt nicht aus Schleuse + Err_Raus_Sensor : Bool // Vor Einfahrt PS2: Raus-Sensor wird nicht erreicht (oder dauernd aktiv)! + Err_Ziel : Bool // Vor Einfahrt PS2: Trolley-Ziel nicht bekannt + Err_Weichen_DL : Bool // Vor Einfahrt PS2: Weichen-Datenliste fehlerhaft + Err_Undef_Weiche : Bool // Vor Einfahrt PS2: undefinierte Weiche + Err_Weiche_belegt : Bool // Vor Einfahrt PS2: Weiche bleibt belegt + Err_Kein_LeseErgebnis : Bool // Vor Einfahrt PS2: Kein Ergebnis von LeseEinheit + Err_Leser_nicht_bereit : Bool // Vor Einfahrt PS2: Leser nicht betriebsbereit + Barcode_nicht_bekannt : Bool // Vor Einfahrt PS2: Barcode nicht in Datenbank vorhanden + Weiche_MB3332 : Struct // AMR (UH06): Weiche MB3332 (Einfahrt PS2) + Weichen_DL : Bool // Einfahrt PS2: Weichen-Datenliste fehlerhaft + Undef_Weiche : Bool // Einfahrt PS2: undefinierte Weiche + BLKMov : Bool // Einfahrt PS2: Fehler bei Block kopieren + Undef_Bereich+1 : Bool // Einfahrt PS2: Bereich +1 unbekannt + Frei04 : Bool // Einfahrt PS2: Frei04 + Frei05 : Bool // Einfahrt PS2: Frei05 + Ziel_undefiniert : Bool // Einfahrt PS2: Ziel ist undefiniert + Err_Schleusen_DL : Bool // Einfahrt PS2: Schleusen-Datenliste fehlerhaft + Err_Undef_Schleuse-1 : Bool // Einfahrt PS2: undefinierte Schleuse -1 + Übzeit_Gerade : Bool // Einfahrt PS2: Trolley bei Geradefahrt in Weiche verklemmt (-> Antrieb gestoppt) + Übzeit_Abzweig : Bool // Einfahrt PS2: Trolley bei Abzweigfahrt in Weiche verklemmt (-> Antrieb gestoppt) + Gerade_Sensor_aktiv : Bool // Einfahrt PS2: Ziel-Sensor Geradefahrt aktiv + Abzweig_Sensor_aktiv : Bool // Einfahrt PS2: Ziel-Sensor Abzweigfahrt aktiv + Gerade_Bereich_belegt : Bool // Einfahrt PS2: Bereich Geradefahrt noch belegt + Abzweig_Bereich_belegt : Bool // Einfahrt PS2: Bereich Abzweigfahrt noch belegt + Reset_aktiv : Bool // Einfahrt PS2: Reset ist aktiv + Schleuse_MB3333 : Struct // AMR (UH06): Schleuse MB3333 (PS2 Vorstau) + Schleuse_DL : Bool // PS2 vor Arbeitsplätze: Schleuse-Datenliste fehlerhaft + Undef_Schleuse : Bool // PS2 vor Arbeitsplätze: undefinierter Schleuse + Err_Trolley_nicht_in_Schleuse : Bool // PS2 vor Arbeitsplätze: Trolley fährt nicht in Schleuse + Err_Uebzeit : Bool // PS2 vor Arbeitsplätze: Überwachungzeit ist abgelaufen + Err_Schritt : Bool // PS2 vor Arbeitsplätze: Schritt-Nummer ist nicht definiert + Err_Stau_Einfahrt : Bool // PS2 vor Arbeitsplätze: Stau bei Bereich-Einfahrt + Err_BLKMov : Bool // PS2 vor Arbeitsplätze: Error bei Block kopieren + Err_Trolley_raus : Bool // PS2 vor Arbeitsplätze: Trolley fährt nicht aus Schleuse + Err_Raus_Sensor : Bool // PS2 vor Arbeitsplätze: Raus-Sensor wird nicht erreicht (oder dauernd aktiv)! + Err_Ziel : Bool // PS2 vor Arbeitsplätze: Trolley-Ziel nicht bekannt + Err_Weichen_DL : Bool // PS2 vor Arbeitsplätze: Weichen-Datenliste fehlerhaft + Err_Undef_Weiche : Bool // PS2 vor Arbeitsplätze: undefinierte Weiche + Err_Weiche_belegt : Bool // PS2 vor Arbeitsplätze: Weiche bleibt belegt + Err_Kein_LeseErgebnis : Bool // PS2 vor Arbeitsplätze: Kein Ergebnis von LeseEinheit + Err_Leser_nicht_bereit : Bool // PS2 vor Arbeitsplätze: Leser nicht betriebsbereit + Barcode_nicht_bekannt : Bool // PS2 vor Arbeitsplätze: Barcode nicht in Datenbank vorhanden + Schleuse_MB3335 : Struct // AMR (UH06): Stopper MB3335 (PS2 / Arbeitsplatz 1) + Schleuse_DL : Bool // PS2 / Arbeitsplatz 1: Schleuse-Datenliste fehlerhaft + Undef_Schleuse : Bool // PS2 / Arbeitsplatz 1: undefinierter Schleuse + Err_Trolley_nicht_in_Schleuse : Bool // PS2 / Arbeitsplatz 1: Trolley fährt nicht in Schleuse + Err_Uebzeit : Bool // PS2 / Arbeitsplatz 1: Überwachungzeit ist abgelaufen + Err_Schritt : Bool // PS2 / Arbeitsplatz 1: Schritt-Nummer ist nicht definiert + Err_Stau_Einfahrt : Bool // PS2 / Arbeitsplatz 1: Stau bei Bereich-Einfahrt + Err_BLKMov : Bool // PS2 / Arbeitsplatz 1: Error bei Block kopieren + Err_Trolley_raus : Bool // PS2 / Arbeitsplatz 1: Trolley fährt nicht aus Schleuse + Err_Raus_Sensor : Bool // PS2 / Arbeitsplatz 1: Raus-Sensor wird nicht erreicht (oder dauernd aktiv)! + Err_Ziel : Bool // PS2 / Arbeitsplatz 1: Trolley-Ziel nicht bekannt + Err_Weichen_DL : Bool // PS2 / Arbeitsplatz 1: Weichen-Datenliste fehlerhaft + Err_Undef_Weiche : Bool // PS2 / Arbeitsplatz 1: undefinierte Weiche + Err_Weiche_belegt : Bool // PS2 / Arbeitsplatz 1: Weiche bleibt belegt + Err_Kein_LeseErgebnis : Bool // PS2 / Arbeitsplatz 1: Kein Ergebnis von LeseEinheit + Err_Leser_nicht_bereit : Bool // PS2 / Arbeitsplatz 1: Leser nicht betriebsbereit + Barcode_nicht_bekannt : Bool // PS2 / Arbeitsplatz 1: Barcode nicht in Datenbank vorhanden + Schleuse_MB3341 : Struct // AMR (UH06): Stopper MB3341 (PS2 / Arbeitsplatz 2) + Schleuse_DL : Bool // PS2 / Arbeitsplatz 2: Schleuse-Datenliste fehlerhaft + Undef_Schleuse : Bool // PS2 / Arbeitsplatz 2: undefinierter Schleuse + Err_Trolley_nicht_in_Schleuse : Bool // PS2 / Arbeitsplatz 2: Trolley fährt nicht in Schleuse + Err_Uebzeit : Bool // PS2 / Arbeitsplatz 2: Überwachungzeit ist abgelaufen + Err_Schritt : Bool // PS2 / Arbeitsplatz 2: Schritt-Nummer ist nicht definiert + Err_Stau_Einfahrt : Bool // PS2 / Arbeitsplatz 2: Stau bei Bereich-Einfahrt + Err_BLKMov : Bool // PS2 / Arbeitsplatz 2: Error bei Block kopieren + Err_Trolley_raus : Bool // PS2 / Arbeitsplatz 2: Trolley fährt nicht aus Schleuse + Err_Raus_Sensor : Bool // PS2 / Arbeitsplatz 2: Raus-Sensor wird nicht erreicht (oder dauernd aktiv)! + Err_Ziel : Bool // PS2 / Arbeitsplatz 2: Trolley-Ziel nicht bekannt + Err_Weichen_DL : Bool // PS2 / Arbeitsplatz 2: Weichen-Datenliste fehlerhaft + Err_Undef_Weiche : Bool // PS2 / Arbeitsplatz 2: undefinierte Weiche + Err_Weiche_belegt : Bool // PS2 / Arbeitsplatz 2: Weiche bleibt belegt + Err_Kein_LeseErgebnis : Bool // PS2 / Arbeitsplatz 2: Kein Ergebnis von LeseEinheit + Err_Leser_nicht_bereit : Bool // PS2 / Arbeitsplatz 2: Leser nicht betriebsbereit + Barcode_nicht_bekannt : Bool // PS2 / Arbeitsplatz 2: Barcode nicht in Datenbank vorhanden + Schleuse_MB3345 : Struct // AMR (UH06): Stopper MB3345 (PS2 / Arbeitsplatz 3) + Schleuse_DL : Bool // PS2 / Arbeitsplatz 3: Schleuse-Datenliste fehlerhaft + Undef_Schleuse : Bool // PS2 / Arbeitsplatz 3: undefinierter Schleuse + Err_Trolley_nicht_in_Schleuse : Bool // PS2 / Arbeitsplatz 3: Trolley fährt nicht in Schleuse + Err_Uebzeit : Bool // PS2 / Arbeitsplatz 3: Überwachungzeit ist abgelaufen + Err_Schritt : Bool // PS2 / Arbeitsplatz 3: Schritt-Nummer ist nicht definiert + Err_Stau_Einfahrt : Bool // PS2 / Arbeitsplatz 3: Stau bei Bereich-Einfahrt + Err_BLKMov : Bool // PS2 / Arbeitsplatz 3: Error bei Block kopieren + Err_Trolley_raus : Bool // PS2 / Arbeitsplatz 3: Trolley fährt nicht aus Schleuse + Err_Raus_Sensor : Bool // PS2 / Arbeitsplatz 3: Raus-Sensor wird nicht erreicht (oder dauernd aktiv)! + Err_Ziel : Bool // PS2 / Arbeitsplatz 3: Trolley-Ziel nicht bekannt + Err_Weichen_DL : Bool // PS2 / Arbeitsplatz 3: Weichen-Datenliste fehlerhaft + Err_Undef_Weiche : Bool // PS2 / Arbeitsplatz 3: undefinierte Weiche + Err_Weiche_belegt : Bool // PS2 / Arbeitsplatz 3: Weiche bleibt belegt + Err_Kein_LeseErgebnis : Bool // PS2 / Arbeitsplatz 3: Kein Ergebnis von LeseEinheit + Err_Leser_nicht_bereit : Bool // PS2 / Arbeitsplatz 3: Leser nicht betriebsbereit + Barcode_nicht_bekannt : Bool // PS2 / Arbeitsplatz 3: Barcode nicht in Datenbank vorhanden + Schleuse_MB3351 : Struct // AMR (UH06): Schleuse MB3351 (PS2 Nachstau) + Schleuse_DL : Bool // PS2 vor Ausfahrt: Schleuse-Datenliste fehlerhaft + Undef_Schleuse : Bool // PS2 vor Ausfahrt: undefinierter Schleuse + Err_Trolley_nicht_in_Schleuse : Bool // PS2 vor Ausfahrt: Trolley fährt nicht in Schleuse + Err_Uebzeit : Bool // PS2 vor Ausfahrt: Überwachungzeit ist abgelaufen + Err_Schritt : Bool // PS2 vor Ausfahrt: Schritt-Nummer ist nicht definiert + Err_Stau_Einfahrt : Bool // PS2 vor Ausfahrt: Stau bei Bereich-Einfahrt + Err_BLKMov : Bool // PS2 vor Ausfahrt: Error bei Block kopieren + Err_Trolley_raus : Bool // PS2 vor Ausfahrt: Trolley fährt nicht aus Schleuse + Err_Raus_Sensor : Bool // PS2 vor Ausfahrt: Raus-Sensor wird nicht erreicht (oder dauernd aktiv)! + Err_Ziel : Bool // PS2 vor Ausfahrt: Trolley-Ziel nicht bekannt + Err_Weichen_DL : Bool // PS2 vor Ausfahrt: Weichen-Datenliste fehlerhaft + Err_Undef_Weiche : Bool // PS2 vor Ausfahrt: undefinierte Weiche + Err_Weiche_belegt : Bool // PS2 vor Ausfahrt: Weiche bleibt belegt + Err_Kein_LeseErgebnis : Bool // PS2 vor Ausfahrt: Kein Ergebnis von LeseEinheit + Err_Leser_nicht_bereit : Bool // PS2 vor Ausfahrt: Leser nicht betriebsbereit + Barcode_nicht_bekannt : Bool // PS2 vor Ausfahrt: Barcode nicht in Datenbank vorhanden + Schleuse_MB3353 : Struct // AMR (UH06): Schleuse MB3353 (Vor Ausfahrt PS2) + Schleuse_DL : Bool // Vor PS2-Ausfahrt: Schleuse-Datenliste fehlerhaft + Undef_Schleuse : Bool // Vor PS2-Ausfahrt: undefinierter Schleuse + Err_Trolley_nicht_in_Schleuse : Bool // Vor PS2-Ausfahrt: Trolley fährt nicht in Schleuse + Err_Uebzeit : Bool // Vor PS2-Ausfahrt: Überwachungzeit ist abgelaufen + Err_Schritt : Bool // Vor PS2-Ausfahrt: Schritt-Nummer ist nicht definiert + Err_Stau_Einfahrt : Bool // Vor PS2-Ausfahrt: Stau bei Bereich-Einfahrt + Err_BLKMov : Bool // Vor PS2-Ausfahrt: Error bei Block kopieren + Err_Trolley_raus : Bool // Vor PS2-Ausfahrt: Trolley fährt nicht aus Schleuse + Err_Raus_Sensor : Bool // Vor PS2-Ausfahrt: Raus-Sensor wird nicht erreicht (oder dauernd aktiv)! + Err_Ziel : Bool // Vor PS2-Ausfahrt: Trolley-Ziel nicht bekannt + Err_Weichen_DL : Bool // Vor PS2-Ausfahrt: Weichen-Datenliste fehlerhaft + Err_Undef_Weiche : Bool // Vor PS2-Ausfahrt: undefinierte Weiche + Err_Weiche_belegt : Bool // Vor PS2-Ausfahrt: Weiche bleibt belegt + Err_Kein_LeseErgebnis : Bool // Vor PS2-Ausfahrt: Kein Ergebnis von LeseEinheit + Err_Leser_nicht_bereit : Bool // Vor PS2-Ausfahrt: Leser nicht betriebsbereit + Barcode_nicht_bekannt : Bool // Vor PS2-Ausfahrt: Barcode nicht in Datenbank vorhanden + Reserve278 : Struct // AMR (UH06): Reserve278 + Schleuse_DL : Bool // Vor Einfahrt PS1: Schleuse-Datenliste fehlerhaft + Undef_Schleuse : Bool // Vor Einfahrt PS1: undefinierter Schleuse + Err_Trolley_nicht_in_Schleuse : Bool // Vor Einfahrt PS1: Trolley fährt nicht in Schleuse + Err_Uebzeit : Bool // Vor Einfahrt PS1: Überwachungzeit ist abgelaufen + Err_Schritt : Bool // Vor Einfahrt PS1: Schritt-Nummer ist nicht definiert + Err_Stau_Einfahrt : Bool // Vor Einfahrt PS1: Stau bei Bereich-Einfahrt + Err_BLKMov : Bool // Vor Einfahrt PS1: Error bei Block kopieren + Err_Trolley_raus : Bool // Vor Einfahrt PS1: Trolley fährt nicht aus Schleuse + Err_Raus_Sensor : Bool // Vor Einfahrt PS1: Raus-Sensor wird nicht erreicht (oder dauernd aktiv)! + Err_Ziel : Bool // Vor Einfahrt PS1: Trolley-Ziel nicht bekannt + Err_Weichen_DL : Bool // Vor Einfahrt PS1: Weichen-Datenliste fehlerhaft + Err_Undef_Weiche : Bool // Vor Einfahrt PS1: undefinierte Weiche + Err_Weiche_belegt : Bool // Vor Einfahrt PS1: Weiche bleibt belegt + Err_Kein_LeseErgebnis : Bool // Vor Einfahrt PS1: Kein Ergebnis von LeseEinheit + Err_Leser_nicht_bereit : Bool // Vor Einfahrt PS1: Leser nicht betriebsbereit + Barcode_nicht_bekannt : Bool // Vor Einfahrt PS1: Barcode nicht in Datenbank vorhanden + Weiche_MB3362 : Struct // AMR (UH06): Weiche MB3362 (Einfahrt PS1) + Weichen_DL : Bool // Einfahrt PS1: Weichen-Datenliste fehlerhaft + Undef_Weiche : Bool // Einfahrt PS1: undefinierte Weiche + BLKMov : Bool // Einfahrt PS1: Fehler bei Block kopieren + Undef_Bereich+1 : Bool // Einfahrt PS1: Bereich +1 unbekannt + Frei04 : Bool // Einfahrt PS1: Frei04 + Frei05 : Bool // Einfahrt PS1: Frei05 + Ziel_undefiniert : Bool // Einfahrt PS1: Ziel ist undefiniert + Err_Schleusen_DL : Bool // Einfahrt PS1: Schleusen-Datenliste fehlerhaft + Err_Undef_Schleuse-1 : Bool // Einfahrt PS1: undefinierte Schleuse -1 + Übzeit_Gerade : Bool // Einfahrt PS1: Trolley bei Geradefahrt in Weiche verklemmt (-> Antrieb gestoppt) + Übzeit_Abzweig : Bool // Einfahrt PS1: Trolley bei Abzweigfahrt in Weiche verklemmt (-> Antrieb gestoppt) + Gerade_Sensor_aktiv : Bool // Einfahrt PS1: Ziel-Sensor Geradefahrt aktiv + Abzweig_Sensor_aktiv : Bool // Einfahrt PS1: Ziel-Sensor Abzweigfahrt aktiv + Gerade_Bereich_belegt : Bool // Einfahrt PS1: Bereich Geradefahrt noch belegt + Abzweig_Bereich_belegt : Bool // Einfahrt PS1: Bereich Abzweigfahrt noch belegt + Reset_aktiv : Bool // Einfahrt PS1: Reset ist aktiv + Schleuse_MB3363 : Struct // AMR (UH06): Schleuse MB3363 (PS1 Vorstau) + Schleuse_DL : Bool // PS1 vor Arbeitsplätze: Schleuse-Datenliste fehlerhaft + Undef_Schleuse : Bool // PS1 vor Arbeitsplätze: undefinierter Schleuse + Err_Trolley_nicht_in_Schleuse : Bool // PS1 vor Arbeitsplätze: Trolley fährt nicht in Schleuse + Err_Uebzeit : Bool // PS1 vor Arbeitsplätze: Überwachungzeit ist abgelaufen + Err_Schritt : Bool // PS1 vor Arbeitsplätze: Schritt-Nummer ist nicht definiert + Err_Stau_Einfahrt : Bool // PS1 vor Arbeitsplätze: Stau bei Bereich-Einfahrt + Err_BLKMov : Bool // PS1 vor Arbeitsplätze: Error bei Block kopieren + Err_Trolley_raus : Bool // PS1 vor Arbeitsplätze: Trolley fährt nicht aus Schleuse + Err_Raus_Sensor : Bool // PS1 vor Arbeitsplätze: Raus-Sensor wird nicht erreicht (oder dauernd aktiv)! + Err_Ziel : Bool // PS1 vor Arbeitsplätze: Trolley-Ziel nicht bekannt + Err_Weichen_DL : Bool // PS1 vor Arbeitsplätze: Weichen-Datenliste fehlerhaft + Err_Undef_Weiche : Bool // PS1 vor Arbeitsplätze: undefinierte Weiche + Err_Weiche_belegt : Bool // PS1 vor Arbeitsplätze: Weiche bleibt belegt + Err_Kein_LeseErgebnis : Bool // PS1 vor Arbeitsplätze: Kein Ergebnis von LeseEinheit + Err_Leser_nicht_bereit : Bool // PS1 vor Arbeitsplätze: Leser nicht betriebsbereit + Barcode_nicht_bekannt : Bool // PS1 vor Arbeitsplätze: Barcode nicht in Datenbank vorhanden + Schleuse_MB3365 : Struct // AMR (UH06): Stopper MB3365 (PS1 / Arbeitsplatz 1) + Schleuse_DL : Bool // PS1 / Arbeitsplatz 1: Schleuse-Datenliste fehlerhaft + Undef_Schleuse : Bool // PS1 / Arbeitsplatz 1: undefinierter Schleuse + Err_Trolley_nicht_in_Schleuse : Bool // PS1 / Arbeitsplatz 1: Trolley fährt nicht in Schleuse + Err_Uebzeit : Bool // PS1 / Arbeitsplatz 1: Überwachungzeit ist abgelaufen + Err_Schritt : Bool // PS1 / Arbeitsplatz 1: Schritt-Nummer ist nicht definiert + Err_Stau_Einfahrt : Bool // PS1 / Arbeitsplatz 1: Stau bei Bereich-Einfahrt + Err_BLKMov : Bool // PS1 / Arbeitsplatz 1: Error bei Block kopieren + Err_Trolley_raus : Bool // PS1 / Arbeitsplatz 1: Trolley fährt nicht aus Schleuse + Err_Raus_Sensor : Bool // PS1 / Arbeitsplatz 1: Raus-Sensor wird nicht erreicht (oder dauernd aktiv)! + Err_Ziel : Bool // PS1 / Arbeitsplatz 1: Trolley-Ziel nicht bekannt + Err_Weichen_DL : Bool // PS1 / Arbeitsplatz 1: Weichen-Datenliste fehlerhaft + Err_Undef_Weiche : Bool // PS1 / Arbeitsplatz 1: undefinierte Weiche + Err_Weiche_belegt : Bool // PS1 / Arbeitsplatz 1: Weiche bleibt belegt + Err_Kein_LeseErgebnis : Bool // PS1 / Arbeitsplatz 1: Kein Ergebnis von LeseEinheit + Err_Leser_nicht_bereit : Bool // PS1 / Arbeitsplatz 1: Leser nicht betriebsbereit + Barcode_nicht_bekannt : Bool // PS1 / Arbeitsplatz 1: Barcode nicht in Datenbank vorhanden + Schleuse_MB3371 : Struct // AMR (UH06): Stopper MB3371 (PS1 / Arbeitsplatz 2) + Schleuse_DL : Bool // PS1 / Arbeitsplatz 2: Schleuse-Datenliste fehlerhaft + Undef_Schleuse : Bool // PS1 / Arbeitsplatz 2: undefinierter Schleuse + Err_Trolley_nicht_in_Schleuse : Bool // PS1 / Arbeitsplatz 2: Trolley fährt nicht in Schleuse + Err_Uebzeit : Bool // PS1 / Arbeitsplatz 2: Überwachungzeit ist abgelaufen + Err_Schritt : Bool // PS1 / Arbeitsplatz 2: Schritt-Nummer ist nicht definiert + Err_Stau_Einfahrt : Bool // PS1 / Arbeitsplatz 2: Stau bei Bereich-Einfahrt + Err_BLKMov : Bool // PS1 / Arbeitsplatz 2: Error bei Block kopieren + Err_Trolley_raus : Bool // PS1 / Arbeitsplatz 2: Trolley fährt nicht aus Schleuse + Err_Raus_Sensor : Bool // PS1 / Arbeitsplatz 2: Raus-Sensor wird nicht erreicht (oder dauernd aktiv)! + Err_Ziel : Bool // PS1 / Arbeitsplatz 2: Trolley-Ziel nicht bekannt + Err_Weichen_DL : Bool // PS1 / Arbeitsplatz 2: Weichen-Datenliste fehlerhaft + Err_Undef_Weiche : Bool // PS1 / Arbeitsplatz 2: undefinierte Weiche + Err_Weiche_belegt : Bool // PS1 / Arbeitsplatz 2: Weiche bleibt belegt + Err_Kein_LeseErgebnis : Bool // PS1 / Arbeitsplatz 2: Kein Ergebnis von LeseEinheit + Err_Leser_nicht_bereit : Bool // PS1 / Arbeitsplatz 2: Leser nicht betriebsbereit + Barcode_nicht_bekannt : Bool // PS1 / Arbeitsplatz 2: Barcode nicht in Datenbank vorhanden + Schleuse_MB3375 : Struct // AMR (UH06): Stopper MB3375 (PS1 / Arbeitsplatz 3) + Schleuse_DL : Bool // PS1 / Arbeitsplatz 3: Schleuse-Datenliste fehlerhaft + Undef_Schleuse : Bool // PS1 / Arbeitsplatz 3: undefinierter Schleuse + Err_Trolley_nicht_in_Schleuse : Bool // PS1 / Arbeitsplatz 3: Trolley fährt nicht in Schleuse + Err_Uebzeit : Bool // PS1 / Arbeitsplatz 3: Überwachungzeit ist abgelaufen + Err_Schritt : Bool // PS1 / Arbeitsplatz 3: Schritt-Nummer ist nicht definiert + Err_Stau_Einfahrt : Bool // PS1 / Arbeitsplatz 3: Stau bei Bereich-Einfahrt + Err_BLKMov : Bool // PS1 / Arbeitsplatz 3: Error bei Block kopieren + Err_Trolley_raus : Bool // PS1 / Arbeitsplatz 3: Trolley fährt nicht aus Schleuse + Err_Raus_Sensor : Bool // PS1 / Arbeitsplatz 3: Raus-Sensor wird nicht erreicht (oder dauernd aktiv)! + Err_Ziel : Bool // PS1 / Arbeitsplatz 3: Trolley-Ziel nicht bekannt + Err_Weichen_DL : Bool // PS1 / Arbeitsplatz 3: Weichen-Datenliste fehlerhaft + Err_Undef_Weiche : Bool // PS1 / Arbeitsplatz 3: undefinierte Weiche + Err_Weiche_belegt : Bool // PS1 / Arbeitsplatz 3: Weiche bleibt belegt + Err_Kein_LeseErgebnis : Bool // PS1 / Arbeitsplatz 3: Kein Ergebnis von LeseEinheit + Err_Leser_nicht_bereit : Bool // PS1 / Arbeitsplatz 3: Leser nicht betriebsbereit + Barcode_nicht_bekannt : Bool // PS1 / Arbeitsplatz 3: Barcode nicht in Datenbank vorhanden + Schleuse_MB3381 : Struct // AMR (UH06): Schleuse MB3381 (PS1 Nachstau) + Schleuse_DL : Bool // PS1 vor Ausfahrt: Schleuse-Datenliste fehlerhaft + Undef_Schleuse : Bool // PS1 vor Ausfahrt: undefinierter Schleuse + Err_Trolley_nicht_in_Schleuse : Bool // PS1 vor Ausfahrt: Trolley fährt nicht in Schleuse + Err_Uebzeit : Bool // PS1 vor Ausfahrt: Überwachungzeit ist abgelaufen + Err_Schritt : Bool // PS1 vor Ausfahrt: Schritt-Nummer ist nicht definiert + Err_Stau_Einfahrt : Bool // PS1 vor Ausfahrt: Stau bei Bereich-Einfahrt + Err_BLKMov : Bool // PS1 vor Ausfahrt: Error bei Block kopieren + Err_Trolley_raus : Bool // PS1 vor Ausfahrt: Trolley fährt nicht aus Schleuse + Err_Raus_Sensor : Bool // PS1 vor Ausfahrt: Raus-Sensor wird nicht erreicht (oder dauernd aktiv)! + Err_Ziel : Bool // PS1 vor Ausfahrt: Trolley-Ziel nicht bekannt + Err_Weichen_DL : Bool // PS1 vor Ausfahrt: Weichen-Datenliste fehlerhaft + Err_Undef_Weiche : Bool // PS1 vor Ausfahrt: undefinierte Weiche + Err_Weiche_belegt : Bool // PS1 vor Ausfahrt: Weiche bleibt belegt + Err_Kein_LeseErgebnis : Bool // PS1 vor Ausfahrt: Kein Ergebnis von LeseEinheit + Err_Leser_nicht_bereit : Bool // PS1 vor Ausfahrt: Leser nicht betriebsbereit + Barcode_nicht_bekannt : Bool // PS1 vor Ausfahrt: Barcode nicht in Datenbank vorhanden + Schleuse_MB3383 : Struct // AMR (UH06): Schleuse MB3383 (Vor Ausfahrt PS1) + Schleuse_DL : Bool // Vor PS1-Ausfahrt: Schleuse-Datenliste fehlerhaft + Undef_Schleuse : Bool // Vor PS1-Ausfahrt: undefinierter Schleuse + Err_Trolley_nicht_in_Schleuse : Bool // Vor PS1-Ausfahrt: Trolley fährt nicht in Schleuse + Err_Uebzeit : Bool // Vor PS1-Ausfahrt: Überwachungzeit ist abgelaufen + Err_Schritt : Bool // Vor PS1-Ausfahrt: Schritt-Nummer ist nicht definiert + Err_Stau_Einfahrt : Bool // Vor PS1-Ausfahrt: Stau bei Bereich-Einfahrt + Err_BLKMov : Bool // Vor PS1-Ausfahrt: Error bei Block kopieren + Err_Trolley_raus : Bool // Vor PS1-Ausfahrt: Trolley fährt nicht aus Schleuse + Err_Raus_Sensor : Bool // Vor PS1-Ausfahrt: Raus-Sensor wird nicht erreicht (oder dauernd aktiv)! + Err_Ziel : Bool // Vor PS1-Ausfahrt: Trolley-Ziel nicht bekannt + Err_Weichen_DL : Bool // Vor PS1-Ausfahrt: Weichen-Datenliste fehlerhaft + Err_Undef_Weiche : Bool // Vor PS1-Ausfahrt: undefinierte Weiche + Err_Weiche_belegt : Bool // Vor PS1-Ausfahrt: Weiche bleibt belegt + Err_Kein_LeseErgebnis : Bool // Vor PS1-Ausfahrt: Kein Ergebnis von LeseEinheit + Err_Leser_nicht_bereit : Bool // Vor PS1-Ausfahrt: Leser nicht betriebsbereit + Barcode_nicht_bekannt : Bool // Vor PS1-Ausfahrt: Barcode nicht in Datenbank vorhanden + Schleuse_MB3390 : Struct // AMR (UH06): Schleuse MB3390 (Vor Einfahrt MPS3) + Schleuse_DL : Bool // Vor Einfahrt MPS3: Schleuse-Datenliste fehlerhaft + Undef_Schleuse : Bool // Vor Einfahrt MPS3: undefinierter Schleuse + Err_Trolley_nicht_in_Schleuse : Bool // Vor Einfahrt MPS3: Trolley fährt nicht in Schleuse + Err_Uebzeit : Bool // Vor Einfahrt MPS3: Überwachungzeit ist abgelaufen + Err_Schritt : Bool // Vor Einfahrt MPS3: Schritt-Nummer ist nicht definiert + Err_Stau_Einfahrt : Bool // Vor Einfahrt MPS3: Stau bei Bereich-Einfahrt + Err_BLKMov : Bool // Vor Einfahrt MPS3: Error bei Block kopieren + Err_Trolley_raus : Bool // Vor Einfahrt MPS3: Trolley fährt nicht aus Schleuse + Err_Raus_Sensor : Bool // Vor Einfahrt MPS3: Raus-Sensor wird nicht erreicht (oder dauernd aktiv)! + Err_Ziel : Bool // Vor Einfahrt MPS3: Trolley-Ziel nicht bekannt + Err_Weichen_DL : Bool // Vor Einfahrt MPS3: Weichen-Datenliste fehlerhaft + Err_Undef_Weiche : Bool // Vor Einfahrt MPS3: undefinierte Weiche + Err_Weiche_belegt : Bool // Vor Einfahrt MPS3: Weiche bleibt belegt + Err_Kein_LeseErgebnis : Bool // Vor Einfahrt MPS3: Kein Ergebnis von LeseEinheit + Err_Leser_nicht_bereit : Bool // Vor Einfahrt MPS3: Leser nicht betriebsbereit + Barcode_nicht_bekannt : Bool // Vor Einfahrt MPS3: Barcode nicht in Datenbank vorhanden + Weiche_MB3392 : Struct // AMR (UH06): Weiche MB3392 (Einfahrt MPS3) + Weichen_DL : Bool // Einfahrt MPS3: Weichen-Datenliste fehlerhaft + Undef_Weiche : Bool // Einfahrt MPS3: undefinierte Weiche + BLKMov : Bool // Einfahrt MPS3: Fehler bei Block kopieren + Undef_Bereich+1 : Bool // Einfahrt MPS3: Bereich +1 unbekannt + Frei04 : Bool // Einfahrt MPS3: Frei04 + Frei05 : Bool // Einfahrt MPS3: Frei05 + Ziel_undefiniert : Bool // Einfahrt MPS3: Ziel ist undefiniert + Err_Schleusen_DL : Bool // Einfahrt MPS3: Schleusen-Datenliste fehlerhaft + Err_Undef_Schleuse-1 : Bool // Einfahrt MPS3: undefinierte Schleuse -1 + Übzeit_Gerade : Bool // Einfahrt MPS3: Trolley bei Geradefahrt in Weiche verklemmt (-> Antrieb gestoppt) + Übzeit_Abzweig : Bool // Einfahrt MPS3: Trolley bei Abzweigfahrt in Weiche verklemmt (-> Antrieb gestoppt) + Gerade_Sensor_aktiv : Bool // Einfahrt MPS3: Ziel-Sensor Geradefahrt aktiv + Abzweig_Sensor_aktiv : Bool // Einfahrt MPS3: Ziel-Sensor Abzweigfahrt aktiv + Gerade_Bereich_belegt : Bool // Einfahrt MPS3: Bereich Geradefahrt noch belegt + Abzweig_Bereich_belegt : Bool // Einfahrt MPS3: Bereich Abzweigfahrt noch belegt + Reset_aktiv : Bool // Einfahrt MPS3: Reset ist aktiv + Schleuse_MB3393 : Struct // AMR (UH06): Schleuse MB3393 (MPS3 Vorstau) + Schleuse_DL : Bool // MPS3 vor Arbeitsplätze: Schleuse-Datenliste fehlerhaft + Undef_Schleuse : Bool // MPS3 vor Arbeitsplätze: undefinierter Schleuse + Err_Trolley_nicht_in_Schleuse : Bool // MPS3 vor Arbeitsplätze: Trolley fährt nicht in Schleuse + Err_Uebzeit : Bool // MPS3 vor Arbeitsplätze: Überwachungzeit ist abgelaufen + Err_Schritt : Bool // MPS3 vor Arbeitsplätze: Schritt-Nummer ist nicht definiert + Err_Stau_Einfahrt : Bool // MPS3 vor Arbeitsplätze: Stau bei Bereich-Einfahrt + Err_BLKMov : Bool // MPS3 vor Arbeitsplätze: Error bei Block kopieren + Err_Trolley_raus : Bool // MPS3 vor Arbeitsplätze: Trolley fährt nicht aus Schleuse + Err_Raus_Sensor : Bool // MPS3 vor Arbeitsplätze: Raus-Sensor wird nicht erreicht (oder dauernd aktiv)! + Err_Ziel : Bool // MPS3 vor Arbeitsplätze: Trolley-Ziel nicht bekannt + Err_Weichen_DL : Bool // MPS3 vor Arbeitsplätze: Weichen-Datenliste fehlerhaft + Err_Undef_Weiche : Bool // MPS3 vor Arbeitsplätze: undefinierte Weiche + Err_Weiche_belegt : Bool // MPS3 vor Arbeitsplätze: Weiche bleibt belegt + Err_Kein_LeseErgebnis : Bool // MPS3 vor Arbeitsplätze: Kein Ergebnis von LeseEinheit + Err_Leser_nicht_bereit : Bool // MPS3 vor Arbeitsplätze: Leser nicht betriebsbereit + Barcode_nicht_bekannt : Bool // MPS3 vor Arbeitsplätze: Barcode nicht in Datenbank vorhanden + Schleuse_MB3395 : Struct // AMR (UH06): Stopper MB3395 (MPS3 / Arbeitsplatz 1) + Schleuse_DL : Bool // MPS3 / Arbeitsplatz 1: Schleuse-Datenliste fehlerhaft + Undef_Schleuse : Bool // MPS3 / Arbeitsplatz 1: undefinierter Schleuse + Err_Trolley_nicht_in_Schleuse : Bool // MPS3 / Arbeitsplatz 1: Trolley fährt nicht in Schleuse + Err_Uebzeit : Bool // MPS3 / Arbeitsplatz 1: Überwachungzeit ist abgelaufen + Err_Schritt : Bool // MPS3 / Arbeitsplatz 1: Schritt-Nummer ist nicht definiert + Err_Stau_Einfahrt : Bool // MPS3 / Arbeitsplatz 1: Stau bei Bereich-Einfahrt + Err_BLKMov : Bool // MPS3 / Arbeitsplatz 1: Error bei Block kopieren + Err_Trolley_raus : Bool // MPS3 / Arbeitsplatz 1: Trolley fährt nicht aus Schleuse + Err_Raus_Sensor : Bool // MPS3 / Arbeitsplatz 1: Raus-Sensor wird nicht erreicht (oder dauernd aktiv)! + Err_Ziel : Bool // MPS3 / Arbeitsplatz 1: Trolley-Ziel nicht bekannt + Err_Weichen_DL : Bool // MPS3 / Arbeitsplatz 1: Weichen-Datenliste fehlerhaft + Err_Undef_Weiche : Bool // MPS3 / Arbeitsplatz 1: undefinierte Weiche + Err_Weiche_belegt : Bool // MPS3 / Arbeitsplatz 1: Weiche bleibt belegt + Err_Kein_LeseErgebnis : Bool // MPS3 / Arbeitsplatz 1: Kein Ergebnis von LeseEinheit + Err_Leser_nicht_bereit : Bool // MPS3 / Arbeitsplatz 1: Leser nicht betriebsbereit + Barcode_nicht_bekannt : Bool // MPS3 / Arbeitsplatz 1: Barcode nicht in Datenbank vorhanden + Schleuse_MB3401 : Struct // AMR (UH06): Stopper MB3401 (MPS3 / Arbeitsplatz 2) + Schleuse_DL : Bool // MPS3 / Arbeitsplatz 2: Schleuse-Datenliste fehlerhaft + Undef_Schleuse : Bool // MPS3 / Arbeitsplatz 2: undefinierter Schleuse + Err_Trolley_nicht_in_Schleuse : Bool // MPS3 / Arbeitsplatz 2: Trolley fährt nicht in Schleuse + Err_Uebzeit : Bool // MPS3 / Arbeitsplatz 2: Überwachungzeit ist abgelaufen + Err_Schritt : Bool // MPS3 / Arbeitsplatz 2: Schritt-Nummer ist nicht definiert + Err_Stau_Einfahrt : Bool // MPS3 / Arbeitsplatz 2: Stau bei Bereich-Einfahrt + Err_BLKMov : Bool // MPS3 / Arbeitsplatz 2: Error bei Block kopieren + Err_Trolley_raus : Bool // MPS3 / Arbeitsplatz 2: Trolley fährt nicht aus Schleuse + Err_Raus_Sensor : Bool // MPS3 / Arbeitsplatz 2: Raus-Sensor wird nicht erreicht (oder dauernd aktiv)! + Err_Ziel : Bool // MPS3 / Arbeitsplatz 2: Trolley-Ziel nicht bekannt + Err_Weichen_DL : Bool // MPS3 / Arbeitsplatz 2: Weichen-Datenliste fehlerhaft + Err_Undef_Weiche : Bool // MPS3 / Arbeitsplatz 2: undefinierte Weiche + Err_Weiche_belegt : Bool // MPS3 / Arbeitsplatz 2: Weiche bleibt belegt + Err_Kein_LeseErgebnis : Bool // MPS3 / Arbeitsplatz 2: Kein Ergebnis von LeseEinheit + Err_Leser_nicht_bereit : Bool // MPS3 / Arbeitsplatz 2: Leser nicht betriebsbereit + Barcode_nicht_bekannt : Bool // MPS3 / Arbeitsplatz 2: Barcode nicht in Datenbank vorhanden + Schleuse_MB3405 : Struct // AMR (UH06): Stopper MB3405 (MPS3 / Arbeitsplatz 3) + Schleuse_DL : Bool // MPS3 / Arbeitsplatz 3: Schleuse-Datenliste fehlerhaft + Undef_Schleuse : Bool // MPS3 / Arbeitsplatz 3: undefinierter Schleuse + Err_Trolley_nicht_in_Schleuse : Bool // MPS3 / Arbeitsplatz 3: Trolley fährt nicht in Schleuse + Err_Uebzeit : Bool // MPS3 / Arbeitsplatz 3: Überwachungzeit ist abgelaufen + Err_Schritt : Bool // MPS3 / Arbeitsplatz 3: Schritt-Nummer ist nicht definiert + Err_Stau_Einfahrt : Bool // MPS3 / Arbeitsplatz 3: Stau bei Bereich-Einfahrt + Err_BLKMov : Bool // MPS3 / Arbeitsplatz 3: Error bei Block kopieren + Err_Trolley_raus : Bool // MPS3 / Arbeitsplatz 3: Trolley fährt nicht aus Schleuse + Err_Raus_Sensor : Bool // MPS3 / Arbeitsplatz 3: Raus-Sensor wird nicht erreicht (oder dauernd aktiv)! + Err_Ziel : Bool // MPS3 / Arbeitsplatz 3: Trolley-Ziel nicht bekannt + Err_Weichen_DL : Bool // MPS3 / Arbeitsplatz 3: Weichen-Datenliste fehlerhaft + Err_Undef_Weiche : Bool // MPS3 / Arbeitsplatz 3: undefinierte Weiche + Err_Weiche_belegt : Bool // MPS3 / Arbeitsplatz 3: Weiche bleibt belegt + Err_Kein_LeseErgebnis : Bool // MPS3 / Arbeitsplatz 3: Kein Ergebnis von LeseEinheit + Err_Leser_nicht_bereit : Bool // MPS3 / Arbeitsplatz 3: Leser nicht betriebsbereit + Barcode_nicht_bekannt : Bool // MPS3 / Arbeitsplatz 3: Barcode nicht in Datenbank vorhanden + Schleuse_MB3411 : Struct // AMR (UH06): Schleuse MB3411 (MPS3 Nachstau) + Schleuse_DL : Bool // MPS3 vor Ausfahrt: Schleuse-Datenliste fehlerhaft + Undef_Schleuse : Bool // MPS3 vor Ausfahrt: undefinierter Schleuse + Err_Trolley_nicht_in_Schleuse : Bool // MPS3 vor Ausfahrt: Trolley fährt nicht in Schleuse + Err_Uebzeit : Bool // MPS3 vor Ausfahrt: Überwachungzeit ist abgelaufen + Err_Schritt : Bool // MPS3 vor Ausfahrt: Schritt-Nummer ist nicht definiert + Err_Stau_Einfahrt : Bool // MPS3 vor Ausfahrt: Stau bei Bereich-Einfahrt + Err_BLKMov : Bool // MPS3 vor Ausfahrt: Error bei Block kopieren + Err_Trolley_raus : Bool // MPS3 vor Ausfahrt: Trolley fährt nicht aus Schleuse + Err_Raus_Sensor : Bool // MPS3 vor Ausfahrt: Raus-Sensor wird nicht erreicht (oder dauernd aktiv)! + Err_Ziel : Bool // MPS3 vor Ausfahrt: Trolley-Ziel nicht bekannt + Err_Weichen_DL : Bool // MPS3 vor Ausfahrt: Weichen-Datenliste fehlerhaft + Err_Undef_Weiche : Bool // MPS3 vor Ausfahrt: undefinierte Weiche + Err_Weiche_belegt : Bool // MPS3 vor Ausfahrt: Weiche bleibt belegt + Err_Kein_LeseErgebnis : Bool // MPS3 vor Ausfahrt: Kein Ergebnis von LeseEinheit + Err_Leser_nicht_bereit : Bool // MPS3 vor Ausfahrt: Leser nicht betriebsbereit + Barcode_nicht_bekannt : Bool // MPS3 vor Ausfahrt: Barcode nicht in Datenbank vorhanden + Schleuse_MB3413 : Struct // AMR (UH06): Schleuse MB3413 (Vor Ausfahrt MPS3) + Schleuse_DL : Bool // Vor MPS3-Ausfahrt: Schleuse-Datenliste fehlerhaft + Undef_Schleuse : Bool // Vor MPS3-Ausfahrt: undefinierter Schleuse + Err_Trolley_nicht_in_Schleuse : Bool // Vor MPS3-Ausfahrt: Trolley fährt nicht in Schleuse + Err_Uebzeit : Bool // Vor MPS3-Ausfahrt: Überwachungzeit ist abgelaufen + Err_Schritt : Bool // Vor MPS3-Ausfahrt: Schritt-Nummer ist nicht definiert + Err_Stau_Einfahrt : Bool // Vor MPS3-Ausfahrt: Stau bei Bereich-Einfahrt + Err_BLKMov : Bool // Vor MPS3-Ausfahrt: Error bei Block kopieren + Err_Trolley_raus : Bool // Vor MPS3-Ausfahrt: Trolley fährt nicht aus Schleuse + Err_Raus_Sensor : Bool // Vor MPS3-Ausfahrt: Raus-Sensor wird nicht erreicht (oder dauernd aktiv)! + Err_Ziel : Bool // Vor MPS3-Ausfahrt: Trolley-Ziel nicht bekannt + Err_Weichen_DL : Bool // Vor MPS3-Ausfahrt: Weichen-Datenliste fehlerhaft + Err_Undef_Weiche : Bool // Vor MPS3-Ausfahrt: undefinierte Weiche + Err_Weiche_belegt : Bool // Vor MPS3-Ausfahrt: Weiche bleibt belegt + Err_Kein_LeseErgebnis : Bool // Vor MPS3-Ausfahrt: Kein Ergebnis von LeseEinheit + Err_Leser_nicht_bereit : Bool // Vor MPS3-Ausfahrt: Leser nicht betriebsbereit + Barcode_nicht_bekannt : Bool // Vor MPS3-Ausfahrt: Barcode nicht in Datenbank vorhanden + Schleuse_MB3421 : Struct // AMR (UH06): Schleuse MB3421 (Vor Einfahrt MPS2) + Schleuse_DL : Bool // Vor Einfahrt MPS2: Schleuse-Datenliste fehlerhaft + Undef_Schleuse : Bool // Vor Einfahrt MPS2: undefinierter Schleuse + Err_Trolley_nicht_in_Schleuse : Bool // Vor Einfahrt MPS2: Trolley fährt nicht in Schleuse + Err_Uebzeit : Bool // Vor Einfahrt MPS2: Überwachungzeit ist abgelaufen + Err_Schritt : Bool // Vor Einfahrt MPS2: Schritt-Nummer ist nicht definiert + Err_Stau_Einfahrt : Bool // Vor Einfahrt MPS2: Stau bei Bereich-Einfahrt + Err_BLKMov : Bool // Vor Einfahrt MPS2: Error bei Block kopieren + Err_Trolley_raus : Bool // Vor Einfahrt MPS2: Trolley fährt nicht aus Schleuse + Err_Raus_Sensor : Bool // Vor Einfahrt MPS2: Raus-Sensor wird nicht erreicht (oder dauernd aktiv)! + Err_Ziel : Bool // Vor Einfahrt MPS2: Trolley-Ziel nicht bekannt + Err_Weichen_DL : Bool // Vor Einfahrt MPS2: Weichen-Datenliste fehlerhaft + Err_Undef_Weiche : Bool // Vor Einfahrt MPS2: undefinierte Weiche + Err_Weiche_belegt : Bool // Vor Einfahrt MPS2: Weiche bleibt belegt + Err_Kein_LeseErgebnis : Bool // Vor Einfahrt MPS2: Kein Ergebnis von LeseEinheit + Err_Leser_nicht_bereit : Bool // Vor Einfahrt MPS2: Leser nicht betriebsbereit + Barcode_nicht_bekannt : Bool // Vor Einfahrt MPS2: Barcode nicht in Datenbank vorhanden + Weiche_MB3422 : Struct // AMR (UH06): Weiche MB3422 (Einfahrt MPS2) + Weichen_DL : Bool // Einfahrt MPS2: Weichen-Datenliste fehlerhaft + Undef_Weiche : Bool // Einfahrt MPS2: undefinierte Weiche + BLKMov : Bool // Einfahrt MPS2: Fehler bei Block kopieren + Undef_Bereich+1 : Bool // Einfahrt MPS2: Bereich +1 unbekannt + Frei04 : Bool // Einfahrt MPS2: Frei04 + Frei05 : Bool // Einfahrt MPS2: Frei05 + Ziel_undefiniert : Bool // Einfahrt MPS2: Ziel ist undefiniert + Err_Schleusen_DL : Bool // Einfahrt MPS2: Schleusen-Datenliste fehlerhaft + Err_Undef_Schleuse-1 : Bool // Einfahrt MPS2: undefinierte Schleuse -1 + Übzeit_Gerade : Bool // Einfahrt MPS2: Trolley bei Geradefahrt in Weiche verklemmt (-> Antrieb gestoppt) + Übzeit_Abzweig : Bool // Einfahrt MPS2: Trolley bei Abzweigfahrt in Weiche verklemmt (-> Antrieb gestoppt) + Gerade_Sensor_aktiv : Bool // Einfahrt MPS2: Ziel-Sensor Geradefahrt aktiv + Abzweig_Sensor_aktiv : Bool // Einfahrt MPS2: Ziel-Sensor Abzweigfahrt aktiv + Gerade_Bereich_belegt : Bool // Einfahrt MPS2: Bereich Geradefahrt noch belegt + Abzweig_Bereich_belegt : Bool // Einfahrt MPS2: Bereich Abzweigfahrt noch belegt + Reset_aktiv : Bool // Einfahrt MPS2: Reset ist aktiv + Schleuse_MB3423 : Struct // AMR (UH06): Schleuse MB3423 (MPS2 Vorstau) + Schleuse_DL : Bool // MPS2 vor Arbeitsplätze: Schleuse-Datenliste fehlerhaft + Undef_Schleuse : Bool // MPS2 vor Arbeitsplätze: undefinierter Schleuse + Err_Trolley_nicht_in_Schleuse : Bool // MPS2 vor Arbeitsplätze: Trolley fährt nicht in Schleuse + Err_Uebzeit : Bool // MPS2 vor Arbeitsplätze: Überwachungzeit ist abgelaufen + Err_Schritt : Bool // MPS2 vor Arbeitsplätze: Schritt-Nummer ist nicht definiert + Err_Stau_Einfahrt : Bool // MPS2 vor Arbeitsplätze: Stau bei Bereich-Einfahrt + Err_BLKMov : Bool // MPS2 vor Arbeitsplätze: Error bei Block kopieren + Err_Trolley_raus : Bool // MPS2 vor Arbeitsplätze: Trolley fährt nicht aus Schleuse + Err_Raus_Sensor : Bool // MPS2 vor Arbeitsplätze: Raus-Sensor wird nicht erreicht (oder dauernd aktiv)! + Err_Ziel : Bool // MPS2 vor Arbeitsplätze: Trolley-Ziel nicht bekannt + Err_Weichen_DL : Bool // MPS2 vor Arbeitsplätze: Weichen-Datenliste fehlerhaft + Err_Undef_Weiche : Bool // MPS2 vor Arbeitsplätze: undefinierte Weiche + Err_Weiche_belegt : Bool // MPS2 vor Arbeitsplätze: Weiche bleibt belegt + Err_Kein_LeseErgebnis : Bool // MPS2 vor Arbeitsplätze: Kein Ergebnis von LeseEinheit + Err_Leser_nicht_bereit : Bool // MPS2 vor Arbeitsplätze: Leser nicht betriebsbereit + Barcode_nicht_bekannt : Bool // MPS2 vor Arbeitsplätze: Barcode nicht in Datenbank vorhanden + Schleuse_MB3425 : Struct // AMR (UH06): Stopper MB3425 (MPS2 / Arbeitsplatz 1) + Schleuse_DL : Bool // MPS2 / Arbeitsplatz 1: Schleuse-Datenliste fehlerhaft + Undef_Schleuse : Bool // MPS2 / Arbeitsplatz 1: undefinierter Schleuse + Err_Trolley_nicht_in_Schleuse : Bool // MPS2 / Arbeitsplatz 1: Trolley fährt nicht in Schleuse + Err_Uebzeit : Bool // MPS2 / Arbeitsplatz 1: Überwachungzeit ist abgelaufen + Err_Schritt : Bool // MPS2 / Arbeitsplatz 1: Schritt-Nummer ist nicht definiert + Err_Stau_Einfahrt : Bool // MPS2 / Arbeitsplatz 1: Stau bei Bereich-Einfahrt + Err_BLKMov : Bool // MPS2 / Arbeitsplatz 1: Error bei Block kopieren + Err_Trolley_raus : Bool // MPS2 / Arbeitsplatz 1: Trolley fährt nicht aus Schleuse + Err_Raus_Sensor : Bool // MPS2 / Arbeitsplatz 1: Raus-Sensor wird nicht erreicht (oder dauernd aktiv)! + Err_Ziel : Bool // MPS2 / Arbeitsplatz 1: Trolley-Ziel nicht bekannt + Err_Weichen_DL : Bool // MPS2 / Arbeitsplatz 1: Weichen-Datenliste fehlerhaft + Err_Undef_Weiche : Bool // MPS2 / Arbeitsplatz 1: undefinierte Weiche + Err_Weiche_belegt : Bool // MPS2 / Arbeitsplatz 1: Weiche bleibt belegt + Err_Kein_LeseErgebnis : Bool // MPS2 / Arbeitsplatz 1: Kein Ergebnis von LeseEinheit + Err_Leser_nicht_bereit : Bool // MPS2 / Arbeitsplatz 1: Leser nicht betriebsbereit + Barcode_nicht_bekannt : Bool // MPS2 / Arbeitsplatz 1: Barcode nicht in Datenbank vorhanden + Schleuse_MB3431 : Struct // AMR (UH06): Stopper MB3431 (MPS2 / Arbeitsplatz 2) + Schleuse_DL : Bool // MPS2 / Arbeitsplatz 2: Schleuse-Datenliste fehlerhaft + Undef_Schleuse : Bool // MPS2 / Arbeitsplatz 2: undefinierter Schleuse + Err_Trolley_nicht_in_Schleuse : Bool // MPS2 / Arbeitsplatz 2: Trolley fährt nicht in Schleuse + Err_Uebzeit : Bool // MPS2 / Arbeitsplatz 2: Überwachungzeit ist abgelaufen + Err_Schritt : Bool // MPS2 / Arbeitsplatz 2: Schritt-Nummer ist nicht definiert + Err_Stau_Einfahrt : Bool // MPS2 / Arbeitsplatz 2: Stau bei Bereich-Einfahrt + Err_BLKMov : Bool // MPS2 / Arbeitsplatz 2: Error bei Block kopieren + Err_Trolley_raus : Bool // MPS2 / Arbeitsplatz 2: Trolley fährt nicht aus Schleuse + Err_Raus_Sensor : Bool // MPS2 / Arbeitsplatz 2: Raus-Sensor wird nicht erreicht (oder dauernd aktiv)! + Err_Ziel : Bool // MPS2 / Arbeitsplatz 2: Trolley-Ziel nicht bekannt + Err_Weichen_DL : Bool // MPS2 / Arbeitsplatz 2: Weichen-Datenliste fehlerhaft + Err_Undef_Weiche : Bool // MPS2 / Arbeitsplatz 2: undefinierte Weiche + Err_Weiche_belegt : Bool // MPS2 / Arbeitsplatz 2: Weiche bleibt belegt + Err_Kein_LeseErgebnis : Bool // MPS2 / Arbeitsplatz 2: Kein Ergebnis von LeseEinheit + Err_Leser_nicht_bereit : Bool // MPS2 / Arbeitsplatz 2: Leser nicht betriebsbereit + Barcode_nicht_bekannt : Bool // MPS2 / Arbeitsplatz 2: Barcode nicht in Datenbank vorhanden + Schleuse_MB3435 : Struct // AMR (UH06): Stopper MB3435 (MPS2 / Arbeitsplatz 3) + Schleuse_DL : Bool // MPS2 / Arbeitsplatz 3: Schleuse-Datenliste fehlerhaft + Undef_Schleuse : Bool // MPS2 / Arbeitsplatz 3: undefinierter Schleuse + Err_Trolley_nicht_in_Schleuse : Bool // MPS2 / Arbeitsplatz 3: Trolley fährt nicht in Schleuse + Err_Uebzeit : Bool // MPS2 / Arbeitsplatz 3: Überwachungzeit ist abgelaufen + Err_Schritt : Bool // MPS2 / Arbeitsplatz 3: Schritt-Nummer ist nicht definiert + Err_Stau_Einfahrt : Bool // MPS2 / Arbeitsplatz 3: Stau bei Bereich-Einfahrt + Err_BLKMov : Bool // MPS2 / Arbeitsplatz 3: Error bei Block kopieren + Err_Trolley_raus : Bool // MPS2 / Arbeitsplatz 3: Trolley fährt nicht aus Schleuse + Err_Raus_Sensor : Bool // MPS2 / Arbeitsplatz 3: Raus-Sensor wird nicht erreicht (oder dauernd aktiv)! + Err_Ziel : Bool // MPS2 / Arbeitsplatz 3: Trolley-Ziel nicht bekannt + Err_Weichen_DL : Bool // MPS2 / Arbeitsplatz 3: Weichen-Datenliste fehlerhaft + Err_Undef_Weiche : Bool // MPS2 / Arbeitsplatz 3: undefinierte Weiche + Err_Weiche_belegt : Bool // MPS2 / Arbeitsplatz 3: Weiche bleibt belegt + Err_Kein_LeseErgebnis : Bool // MPS2 / Arbeitsplatz 3: Kein Ergebnis von LeseEinheit + Err_Leser_nicht_bereit : Bool // MPS2 / Arbeitsplatz 3: Leser nicht betriebsbereit + Barcode_nicht_bekannt : Bool // MPS2 / Arbeitsplatz 3: Barcode nicht in Datenbank vorhanden + Schleuse_MB3441 : Struct // AMR (UH06): Schleuse MB3441 (MPS2 Nachstau) + Schleuse_DL : Bool // MPS2 vor Ausfahrt: Schleuse-Datenliste fehlerhaft + Undef_Schleuse : Bool // MPS2 vor Ausfahrt: undefinierter Schleuse + Err_Trolley_nicht_in_Schleuse : Bool // MPS2 vor Ausfahrt: Trolley fährt nicht in Schleuse + Err_Uebzeit : Bool // MPS2 vor Ausfahrt: Überwachungzeit ist abgelaufen + Err_Schritt : Bool // MPS2 vor Ausfahrt: Schritt-Nummer ist nicht definiert + Err_Stau_Einfahrt : Bool // MPS2 vor Ausfahrt: Stau bei Bereich-Einfahrt + Err_BLKMov : Bool // MPS2 vor Ausfahrt: Error bei Block kopieren + Err_Trolley_raus : Bool // MPS2 vor Ausfahrt: Trolley fährt nicht aus Schleuse + Err_Raus_Sensor : Bool // MPS2 vor Ausfahrt: Raus-Sensor wird nicht erreicht (oder dauernd aktiv)! + Err_Ziel : Bool // MPS2 vor Ausfahrt: Trolley-Ziel nicht bekannt + Err_Weichen_DL : Bool // MPS2 vor Ausfahrt: Weichen-Datenliste fehlerhaft + Err_Undef_Weiche : Bool // MPS2 vor Ausfahrt: undefinierte Weiche + Err_Weiche_belegt : Bool // MPS2 vor Ausfahrt: Weiche bleibt belegt + Err_Kein_LeseErgebnis : Bool // MPS2 vor Ausfahrt: Kein Ergebnis von LeseEinheit + Err_Leser_nicht_bereit : Bool // MPS2 vor Ausfahrt: Leser nicht betriebsbereit + Barcode_nicht_bekannt : Bool // MPS2 vor Ausfahrt: Barcode nicht in Datenbank vorhanden + Schleuse_MB3443 : Struct // AMR (UH06): Schleuse MB3443 (Vor Ausfahrt MPS2) + Schleuse_DL : Bool // Vor MPS2-Ausfahrt: Schleuse-Datenliste fehlerhaft + Undef_Schleuse : Bool // Vor MPS2-Ausfahrt: undefinierter Schleuse + Err_Trolley_nicht_in_Schleuse : Bool // Vor MPS2-Ausfahrt: Trolley fährt nicht in Schleuse + Err_Uebzeit : Bool // Vor MPS2-Ausfahrt: Überwachungzeit ist abgelaufen + Err_Schritt : Bool // Vor MPS2-Ausfahrt: Schritt-Nummer ist nicht definiert + Err_Stau_Einfahrt : Bool // Vor MPS2-Ausfahrt: Stau bei Bereich-Einfahrt + Err_BLKMov : Bool // Vor MPS2-Ausfahrt: Error bei Block kopieren + Err_Trolley_raus : Bool // Vor MPS2-Ausfahrt: Trolley fährt nicht aus Schleuse + Err_Raus_Sensor : Bool // Vor MPS2-Ausfahrt: Raus-Sensor wird nicht erreicht (oder dauernd aktiv)! + Err_Ziel : Bool // Vor MPS2-Ausfahrt: Trolley-Ziel nicht bekannt + Err_Weichen_DL : Bool // Vor MPS2-Ausfahrt: Weichen-Datenliste fehlerhaft + Err_Undef_Weiche : Bool // Vor MPS2-Ausfahrt: undefinierte Weiche + Err_Weiche_belegt : Bool // Vor MPS2-Ausfahrt: Weiche bleibt belegt + Err_Kein_LeseErgebnis : Bool // Vor MPS2-Ausfahrt: Kein Ergebnis von LeseEinheit + Err_Leser_nicht_bereit : Bool // Vor MPS2-Ausfahrt: Leser nicht betriebsbereit + Barcode_nicht_bekannt : Bool // Vor MPS2-Ausfahrt: Barcode nicht in Datenbank vorhanden + Schleuse_MB3450 : Struct // AMR (UH06): Schleuse MB3450 (Vor Einfahrt MPS1) + Schleuse_DL : Bool // Vor Einfahrt MPS1: Schleuse-Datenliste fehlerhaft + Undef_Schleuse : Bool // Vor Einfahrt MPS1: undefinierter Schleuse + Err_Trolley_nicht_in_Schleuse : Bool // Vor Einfahrt MPS1: Trolley fährt nicht in Schleuse + Err_Uebzeit : Bool // Vor Einfahrt MPS1: Überwachungzeit ist abgelaufen + Err_Schritt : Bool // Vor Einfahrt MPS1: Schritt-Nummer ist nicht definiert + Err_Stau_Einfahrt : Bool // Vor Einfahrt MPS1: Stau bei Bereich-Einfahrt + Err_BLKMov : Bool // Vor Einfahrt MPS1: Error bei Block kopieren + Err_Trolley_raus : Bool // Vor Einfahrt MPS1: Trolley fährt nicht aus Schleuse + Err_Raus_Sensor : Bool // Vor Einfahrt MPS1: Raus-Sensor wird nicht erreicht (oder dauernd aktiv)! + Err_Ziel : Bool // Vor Einfahrt MPS1: Trolley-Ziel nicht bekannt + Err_Weichen_DL : Bool // Vor Einfahrt MPS1: Weichen-Datenliste fehlerhaft + Err_Undef_Weiche : Bool // Vor Einfahrt MPS1: undefinierte Weiche + Err_Weiche_belegt : Bool // Vor Einfahrt MPS1: Weiche bleibt belegt + Err_Kein_LeseErgebnis : Bool // Vor Einfahrt MPS1: Kein Ergebnis von LeseEinheit + Err_Leser_nicht_bereit : Bool // Vor Einfahrt MPS1: Leser nicht betriebsbereit + Barcode_nicht_bekannt : Bool // Vor Einfahrt MPS1: Barcode nicht in Datenbank vorhanden + Weiche_MB3452 : Struct // AMR (UH06): Weiche MB3452 (Einfahrt MPS1) + Weichen_DL : Bool // Einfahrt MPS1: Weichen-Datenliste fehlerhaft + Undef_Weiche : Bool // Einfahrt MPS1: undefinierte Weiche + BLKMov : Bool // Einfahrt MPS1: Fehler bei Block kopieren + Undef_Bereich+1 : Bool // Einfahrt MPS1: Bereich +1 unbekannt + Frei04 : Bool // Einfahrt MPS1: Frei04 + Frei05 : Bool // Einfahrt MPS1: Frei05 + Ziel_undefiniert : Bool // Einfahrt MPS1: Ziel ist undefiniert + Err_Schleusen_DL : Bool // Einfahrt MPS1: Schleusen-Datenliste fehlerhaft + Err_Undef_Schleuse-1 : Bool // Einfahrt MPS1: undefinierte Schleuse -1 + Übzeit_Gerade : Bool // Einfahrt MPS1: Trolley bei Geradefahrt in Weiche verklemmt (-> Antrieb gestoppt) + Übzeit_Abzweig : Bool // Einfahrt MPS1: Trolley bei Abzweigfahrt in Weiche verklemmt (-> Antrieb gestoppt) + Gerade_Sensor_aktiv : Bool // Einfahrt MPS1: Ziel-Sensor Geradefahrt aktiv + Abzweig_Sensor_aktiv : Bool // Einfahrt MPS1: Ziel-Sensor Abzweigfahrt aktiv + Gerade_Bereich_belegt : Bool // Einfahrt MPS1: Bereich Geradefahrt noch belegt + Abzweig_Bereich_belegt : Bool // Einfahrt MPS1: Bereich Abzweigfahrt noch belegt + Reset_aktiv : Bool // Einfahrt MPS1: Reset ist aktiv + Schleuse_MB3453 : Struct // AMR (UH06): Schleuse MB3453 (MPS1 Vorstau) + Schleuse_DL : Bool // MPS1 vor Arbeitsplätze: Schleuse-Datenliste fehlerhaft + Undef_Schleuse : Bool // MPS1 vor Arbeitsplätze: undefinierter Schleuse + Err_Trolley_nicht_in_Schleuse : Bool // MPS1 vor Arbeitsplätze: Trolley fährt nicht in Schleuse + Err_Uebzeit : Bool // MPS1 vor Arbeitsplätze: Überwachungzeit ist abgelaufen + Err_Schritt : Bool // MPS1 vor Arbeitsplätze: Schritt-Nummer ist nicht definiert + Err_Stau_Einfahrt : Bool // MPS1 vor Arbeitsplätze: Stau bei Bereich-Einfahrt + Err_BLKMov : Bool // MPS1 vor Arbeitsplätze: Error bei Block kopieren + Err_Trolley_raus : Bool // MPS1 vor Arbeitsplätze: Trolley fährt nicht aus Schleuse + Err_Raus_Sensor : Bool // MPS1 vor Arbeitsplätze: Raus-Sensor wird nicht erreicht (oder dauernd aktiv)! + Err_Ziel : Bool // MPS1 vor Arbeitsplätze: Trolley-Ziel nicht bekannt + Err_Weichen_DL : Bool // MPS1 vor Arbeitsplätze: Weichen-Datenliste fehlerhaft + Err_Undef_Weiche : Bool // MPS1 vor Arbeitsplätze: undefinierte Weiche + Err_Weiche_belegt : Bool // MPS1 vor Arbeitsplätze: Weiche bleibt belegt + Err_Kein_LeseErgebnis : Bool // MPS1 vor Arbeitsplätze: Kein Ergebnis von LeseEinheit + Err_Leser_nicht_bereit : Bool // MPS1 vor Arbeitsplätze: Leser nicht betriebsbereit + Barcode_nicht_bekannt : Bool // MPS1 vor Arbeitsplätze: Barcode nicht in Datenbank vorhanden + Schleuse_MB3455 : Struct // AMR (UH06): Stopper MB3455 (MPS1 / Arbeitsplatz 1) + Schleuse_DL : Bool // MPS1 / Arbeitsplatz 1: Schleuse-Datenliste fehlerhaft + Undef_Schleuse : Bool // MPS1 / Arbeitsplatz 1: undefinierter Schleuse + Err_Trolley_nicht_in_Schleuse : Bool // MPS1 / Arbeitsplatz 1: Trolley fährt nicht in Schleuse + Err_Uebzeit : Bool // MPS1 / Arbeitsplatz 1: Überwachungzeit ist abgelaufen + Err_Schritt : Bool // MPS1 / Arbeitsplatz 1: Schritt-Nummer ist nicht definiert + Err_Stau_Einfahrt : Bool // MPS1 / Arbeitsplatz 1: Stau bei Bereich-Einfahrt + Err_BLKMov : Bool // MPS1 / Arbeitsplatz 1: Error bei Block kopieren + Err_Trolley_raus : Bool // MPS1 / Arbeitsplatz 1: Trolley fährt nicht aus Schleuse + Err_Raus_Sensor : Bool // MPS1 / Arbeitsplatz 1: Raus-Sensor wird nicht erreicht (oder dauernd aktiv)! + Err_Ziel : Bool // MPS1 / Arbeitsplatz 1: Trolley-Ziel nicht bekannt + Err_Weichen_DL : Bool // MPS1 / Arbeitsplatz 1: Weichen-Datenliste fehlerhaft + Err_Undef_Weiche : Bool // MPS1 / Arbeitsplatz 1: undefinierte Weiche + Err_Weiche_belegt : Bool // MPS1 / Arbeitsplatz 1: Weiche bleibt belegt + Err_Kein_LeseErgebnis : Bool // MPS1 / Arbeitsplatz 1: Kein Ergebnis von LeseEinheit + Err_Leser_nicht_bereit : Bool // MPS1 / Arbeitsplatz 1: Leser nicht betriebsbereit + Barcode_nicht_bekannt : Bool // MPS1 / Arbeitsplatz 1: Barcode nicht in Datenbank vorhanden + Schleuse_MB3461 : Struct // AMR (UH06): Stopper MB3461 (MPS1 / Arbeitsplatz 2) + Schleuse_DL : Bool // Vor Aufzug: Schleuse-Datenliste fehlerhaft + Undef_Schleuse : Bool // Vor Aufzug: undefinierter Schleuse + Err_Trolley_nicht_in_Schleuse : Bool // Vor Aufzug: Trolley fährt nicht in Schleuse + Err_Uebzeit : Bool // Vor Aufzug: Überwachungzeit ist abgelaufen + Err_Schritt : Bool // Vor Aufzug: Schritt-Nummer ist nicht definiert + Err_Stau_Einfahrt : Bool // Vor Aufzug: Stau bei Bereich-Einfahrt + Err_BLKMov : Bool // Vor Aufzug: Error bei Block kopieren + Err_Trolley_raus : Bool // Vor Aufzug: Trolley fährt nicht aus Schleuse + Err_Raus_Sensor : Bool // Vor Aufzug: Raus-Sensor wird nicht erreicht (oder dauernd aktiv)! + Err_Ziel : Bool // Vor Aufzug: Trolley-Ziel nicht bekannt + Err_Weichen_DL : Bool // Vor Aufzug: Weichen-Datenliste fehlerhaft + Err_Undef_Weiche : Bool // Vor Aufzug: undefinierte Weiche + Err_Weiche_belegt : Bool // Vor Aufzug: Weiche bleibt belegt + Err_Kein_LeseErgebnis : Bool // Vor Aufzug: Kein Ergebnis von LeseEinheit + Err_Leser_nicht_bereit : Bool // Vor Aufzug: Leser nicht betriebsbereit + Barcode_nicht_bekannt : Bool // Vor Aufzug: Barcode nicht in Datenbank vorhanden + Schleuse_MB3465 : Struct // AMR (UH06): Stopper MB3465 (MPS1 / Arbeitsplatz 3) + Schleuse_DL : Bool // MPS1 / Arbeitsplatz 2: Schleuse-Datenliste fehlerhaft + Undef_Schleuse : Bool // MPS1 / Arbeitsplatz 2: undefinierter Schleuse + Err_Trolley_nicht_in_Schleuse : Bool // MPS1 / Arbeitsplatz 2: Trolley fährt nicht in Schleuse + Err_Uebzeit : Bool // MPS1 / Arbeitsplatz 2: Überwachungzeit ist abgelaufen + Err_Schritt : Bool // MPS1 / Arbeitsplatz 2: Schritt-Nummer ist nicht definiert + Err_Stau_Einfahrt : Bool // MPS1 / Arbeitsplatz 2: Stau bei Bereich-Einfahrt + Err_BLKMov : Bool // MPS1 / Arbeitsplatz 2: Error bei Block kopieren + Err_Trolley_raus : Bool // MPS1 / Arbeitsplatz 2: Trolley fährt nicht aus Schleuse + Err_Raus_Sensor : Bool // MPS1 / Arbeitsplatz 2: Raus-Sensor wird nicht erreicht (oder dauernd aktiv)! + Err_Ziel : Bool // MPS1 / Arbeitsplatz 2: Trolley-Ziel nicht bekannt + Err_Weichen_DL : Bool // MPS1 / Arbeitsplatz 2: Weichen-Datenliste fehlerhaft + Err_Undef_Weiche : Bool // MPS1 / Arbeitsplatz 2: undefinierte Weiche + Err_Weiche_belegt : Bool // MPS1 / Arbeitsplatz 2: Weiche bleibt belegt + Err_Kein_LeseErgebnis : Bool // MPS1 / Arbeitsplatz 2: Kein Ergebnis von LeseEinheit + Err_Leser_nicht_bereit : Bool // MPS1 / Arbeitsplatz 2: Leser nicht betriebsbereit + Barcode_nicht_bekannt : Bool // MPS1 / Arbeitsplatz 2: Barcode nicht in Datenbank vorhanden + Schleuse_MB3471 : Struct // AMR (UH06): Schleuse MB3471 (MPS1 Nachstau) + Schleuse_DL : Bool // MPS1 / Arbeitsplatz 3: Schleuse-Datenliste fehlerhaft + Undef_Schleuse : Bool // MPS1 / Arbeitsplatz 3: undefinierter Schleuse + Err_Trolley_nicht_in_Schleuse : Bool // MPS1 / Arbeitsplatz 3: Trolley fährt nicht in Schleuse + Err_Uebzeit : Bool // MPS1 / Arbeitsplatz 3: Überwachungzeit ist abgelaufen + Err_Schritt : Bool // MPS1 / Arbeitsplatz 3: Schritt-Nummer ist nicht definiert + Err_Stau_Einfahrt : Bool // MPS1 / Arbeitsplatz 3: Stau bei Bereich-Einfahrt + Err_BLKMov : Bool // MPS1 / Arbeitsplatz 3: Error bei Block kopieren + Err_Trolley_raus : Bool // MPS1 / Arbeitsplatz 3: Trolley fährt nicht aus Schleuse + Err_Raus_Sensor : Bool // MPS1 / Arbeitsplatz 3: Raus-Sensor wird nicht erreicht (oder dauernd aktiv)! + Err_Ziel : Bool // MPS1 / Arbeitsplatz 3: Trolley-Ziel nicht bekannt + Err_Weichen_DL : Bool // MPS1 / Arbeitsplatz 3: Weichen-Datenliste fehlerhaft + Err_Undef_Weiche : Bool // MPS1 / Arbeitsplatz 3: undefinierte Weiche + Err_Weiche_belegt : Bool // MPS1 / Arbeitsplatz 3: Weiche bleibt belegt + Err_Kein_LeseErgebnis : Bool // MPS1 / Arbeitsplatz 3: Kein Ergebnis von LeseEinheit + Err_Leser_nicht_bereit : Bool // MPS1 / Arbeitsplatz 3: Leser nicht betriebsbereit + Barcode_nicht_bekannt : Bool // MPS1 / Arbeitsplatz 3: Barcode nicht in Datenbank vorhanden + Schleuse_MB3473 : Struct // AMR (UH06): Schleuse MB3473 (Vor Ausfahrt MPS1) + Schleuse_DL : Bool // MPS1 vor Ausfahrt: Schleuse-Datenliste fehlerhaft + Undef_Schleuse : Bool // MPS1 vor Ausfahrt: undefinierter Schleuse + Err_Trolley_nicht_in_Schleuse : Bool // MPS1 vor Ausfahrt: Trolley fährt nicht in Schleuse + Err_Uebzeit : Bool // MPS1 vor Ausfahrt: Überwachungzeit ist abgelaufen + Err_Schritt : Bool // MPS1 vor Ausfahrt: Schritt-Nummer ist nicht definiert + Err_Stau_Einfahrt : Bool // MPS1 vor Ausfahrt: Stau bei Bereich-Einfahrt + Err_BLKMov : Bool // MPS1 vor Ausfahrt: Error bei Block kopieren + Err_Trolley_raus : Bool // MPS1 vor Ausfahrt: Trolley fährt nicht aus Schleuse + Err_Raus_Sensor : Bool // MPS1 vor Ausfahrt: Raus-Sensor wird nicht erreicht (oder dauernd aktiv)! + Err_Ziel : Bool // MPS1 vor Ausfahrt: Trolley-Ziel nicht bekannt + Err_Weichen_DL : Bool // MPS1 vor Ausfahrt: Weichen-Datenliste fehlerhaft + Err_Undef_Weiche : Bool // MPS1 vor Ausfahrt: undefinierte Weiche + Err_Weiche_belegt : Bool // MPS1 vor Ausfahrt: Weiche bleibt belegt + Err_Kein_LeseErgebnis : Bool // MPS1 vor Ausfahrt: Kein Ergebnis von LeseEinheit + Err_Leser_nicht_bereit : Bool // MPS1 vor Ausfahrt: Leser nicht betriebsbereit + Barcode_nicht_bekannt : Bool // MPS1 vor Ausfahrt: Barcode nicht in Datenbank vorhanden + Schleuse_MB3456 : Struct // AMR (UH06): Schleuse MB3456 (Vor Aufzug) + Schleuse_DL : Bool // Vor MPS1-Ausfahrt: Schleuse-Datenliste fehlerhaft + Undef_Schleuse : Bool // Vor MPS1-Ausfahrt: undefinierter Schleuse + Err_Trolley_nicht_in_Schleuse : Bool // Vor MPS1-Ausfahrt: Trolley fährt nicht in Schleuse + Err_Uebzeit : Bool // Vor MPS1-Ausfahrt: Überwachungzeit ist abgelaufen + Err_Schritt : Bool // Vor MPS1-Ausfahrt: Schritt-Nummer ist nicht definiert + Err_Stau_Einfahrt : Bool // Vor MPS1-Ausfahrt: Stau bei Bereich-Einfahrt + Err_BLKMov : Bool // Vor MPS1-Ausfahrt: Error bei Block kopieren + Err_Trolley_raus : Bool // Vor MPS1-Ausfahrt: Trolley fährt nicht aus Schleuse + Err_Raus_Sensor : Bool // Vor MPS1-Ausfahrt: Raus-Sensor wird nicht erreicht (oder dauernd aktiv)! + Err_Ziel : Bool // Vor MPS1-Ausfahrt: Trolley-Ziel nicht bekannt + Err_Weichen_DL : Bool // Vor MPS1-Ausfahrt: Weichen-Datenliste fehlerhaft + Err_Undef_Weiche : Bool // Vor MPS1-Ausfahrt: undefinierte Weiche + Err_Weiche_belegt : Bool // Vor MPS1-Ausfahrt: Weiche bleibt belegt + Err_Kein_LeseErgebnis : Bool // Vor MPS1-Ausfahrt: Kein Ergebnis von LeseEinheit + Err_Leser_nicht_bereit : Bool // Vor MPS1-Ausfahrt: Leser nicht betriebsbereit + Barcode_nicht_bekannt : Bool // Vor MPS1-Ausfahrt: Barcode nicht in Datenbank vorhanden + Schleuse_MB3481 : Struct // AMR (UH06): Schleuse MB3481 (ByPass Mitte) + Schleuse_DL : Bool // Umschleußung Zuführung zu AMR (UH06): Schleuse-Datenliste fehlerhaft + Undef_Schleuse : Bool // Umschleußung Zuführung zu AMR (UH06): undefinierter Schleuse + Err_Trolley_nicht_in_Schleuse : Bool // Umschleußung Zuführung zu AMR (UH06): Trolley fährt nicht in Schleuse + Err_Uebzeit : Bool // Umschleußung Zuführung zu AMR (UH06): Überwachungzeit ist abgelaufen + Err_Schritt : Bool // Umschleußung Zuführung zu AMR (UH06): Schritt-Nummer ist nicht definiert + Err_Stau_Einfahrt : Bool // Umschleußung Zuführung zu AMR (UH06): Stau bei Bereich-Einfahrt + Err_BLKMov : Bool // Umschleußung Zuführung zu AMR (UH06): Error bei Block kopieren + Err_Trolley_raus : Bool // Umschleußung Zuführung zu AMR (UH06): Trolley fährt nicht aus Schleuse + Err_Raus_Sensor : Bool // Umschleußung Zuführung zu AMR (UH06): Raus-Sensor wird nicht erreicht (oder dauernd aktiv)! + Err_Ziel : Bool // Umschleußung Zuführung zu AMR (UH06): Trolley-Ziel nicht bekannt + Err_Weichen_DL : Bool // Umschleußung Zuführung zu AMR (UH06): Weichen-Datenliste fehlerhaft + Err_Undef_Weiche : Bool // Umschleußung Zuführung zu AMR (UH06): undefinierte Weiche + Err_Weiche_belegt : Bool // Umschleußung Zuführung zu AMR (UH06): Weiche bleibt belegt + Err_Kein_LeseErgebnis : Bool // Umschleußung Zuführung zu AMR (UH06): Kein Ergebnis von LeseEinheit + Err_Leser_nicht_bereit : Bool // Umschleußung Zuführung zu AMR (UH06): Leser nicht betriebsbereit + Barcode_nicht_bekannt : Bool // Umschleußung Zuführung zu AMR (UH06): Barcode nicht in Datenbank vorhanden + Weiche_MB3482 : Struct // AMR (UH06): Weiche MB3482 (ByPass Mitte) + Weichen_DL : Bool // Umschleußung Zuführung zu AMR (UH06): Weichen-Datenliste fehlerhaft + Undef_Weiche : Bool // Umschleußung Zuführung zu AMR (UH06): undefinierte Weiche + BLKMov : Bool // Umschleußung Zuführung zu AMR (UH06): Fehler bei Block kopieren + Undef_Bereich+1 : Bool // Umschleußung Zuführung zu AMR (UH06): Bereich +1 unbekannt + Frei04 : Bool // Umschleußung Zuführung zu AMR (UH06): Frei04 + Frei05 : Bool // Umschleußung Zuführung zu AMR (UH06): Frei05 + Ziel_undefiniert : Bool // Umschleußung Zuführung zu AMR (UH06): Ziel ist undefiniert + Err_Schleusen_DL : Bool // Umschleußung Zuführung zu AMR (UH06): Schleusen-Datenliste fehlerhaft + Err_Undef_Schleuse-1 : Bool // Umschleußung Zuführung zu AMR (UH06): undefinierte Schleuse -1 + Übzeit_Gerade : Bool // Umschleußung Zuführung zu AMR (UH06): Trolley bei Geradefahrt in Weiche verklemmt (-> Antrieb gestoppt) + Übzeit_Abzweig : Bool // Umschleußung Zuführung zu AMR (UH06): Trolley bei Abzweigfahrt in Weiche verklemmt (-> Antrieb gestoppt) + Gerade_Sensor_aktiv : Bool // Umschleußung Zuführung zu AMR (UH06): Ziel-Sensor Geradefahrt aktiv + Abzweig_Sensor_aktiv : Bool // Umschleußung Zuführung zu AMR (UH06): Ziel-Sensor Abzweigfahrt aktiv + Gerade_Bereich_belegt : Bool // Umschleußung Zuführung zu AMR (UH06): Bereich Geradefahrt noch belegt + Abzweig_Bereich_belegt : Bool // Umschleußung Zuführung zu AMR (UH06): Bereich Abzweigfahrt noch belegt + Reset_aktiv : Bool // Umschleußung Zuführung zu AMR (UH06): Reset ist aktiv + Schleuse_MB3487 : Struct // AMR (UH06): Schleuse MB3487 (Vor 180 Bogen) + Schleuse_DL : Bool // Vor 180 Zuführung zu AMR (UH06): Schleuse-Datenliste fehlerhaft + Undef_Schleuse : Bool // Vor 180 Zuführung zu AMR (UH06): undefinierter Schleuse + Err_Trolley_nicht_in_Schleuse : Bool // Vor 180 Zuführung zu AMR (UH06): Trolley fährt nicht in Schleuse + Err_Uebzeit : Bool // Vor 180 Zuführung zu AMR (UH06): Überwachungzeit ist abgelaufen + Err_Schritt : Bool // Vor 180 Zuführung zu AMR (UH06): Schritt-Nummer ist nicht definiert + Err_Stau_Einfahrt : Bool // Vor 180 Zuführung zu AMR (UH06): Stau bei Bereich-Einfahrt + Err_BLKMov : Bool // Vor 180 Zuführung zu AMR (UH06): Error bei Block kopieren + Err_Trolley_raus : Bool // Vor 180 Zuführung zu AMR (UH06): Trolley fährt nicht aus Schleuse + Err_Raus_Sensor : Bool // Vor 180 Zuführung zu AMR (UH06): Raus-Sensor wird nicht erreicht (oder dauernd aktiv)! + Err_Ziel : Bool // Vor 180 Zuführung zu AMR (UH06): Trolley-Ziel nicht bekannt + Err_Weichen_DL : Bool // Vor 180 Zuführung zu AMR (UH06): Weichen-Datenliste fehlerhaft + Err_Undef_Weiche : Bool // Vor 180 Zuführung zu AMR (UH06): undefinierte Weiche + Err_Weiche_belegt : Bool // Vor 180 Zuführung zu AMR (UH06): Weiche bleibt belegt + Err_Kein_LeseErgebnis : Bool // Vor 180 Zuführung zu AMR (UH06): Kein Ergebnis von LeseEinheit + Err_Leser_nicht_bereit : Bool // Vor 180 Zuführung zu AMR (UH06): Leser nicht betriebsbereit + Barcode_nicht_bekannt : Bool // Vor 180 Zuführung zu AMR (UH06): Barcode nicht in Datenbank vorhanden + Schleuse_MB3540 : Struct // AMR (UH06): Schleuse MB3540 (Nach Ausfahrt MPS1) + Schleuse_DL : Bool // Highway zu OB: Schleuse-Datenliste fehlerhaft + Undef_Schleuse : Bool // Highway zu OB: undefinierter Schleuse + Err_Trolley_nicht_in_Schleuse : Bool // Highway zu OB: Trolley fährt nicht in Schleuse + Err_Uebzeit : Bool // Highway zu OB: Überwachungzeit ist abgelaufen + Err_Schritt : Bool // Highway zu OB: Schritt-Nummer ist nicht definiert + Err_Stau_Einfahrt : Bool // Highway zu OB: Stau bei Bereich-Einfahrt + Err_BLKMov : Bool // Highway zu OB: Error bei Block kopieren + Err_Trolley_raus : Bool // Highway zu OB: Trolley fährt nicht aus Schleuse + Err_Raus_Sensor : Bool // Highway zu OB: Raus-Sensor wird nicht erreicht (oder dauernd aktiv)! + Err_Ziel : Bool // Highway zu OB: Trolley-Ziel nicht bekannt + Err_Weichen_DL : Bool // Highway zu OB: Weichen-Datenliste fehlerhaft + Err_Undef_Weiche : Bool // Highway zu OB: undefinierte Weiche + Err_Weiche_belegt : Bool // Highway zu OB: Weiche bleibt belegt + Err_Kein_LeseErgebnis : Bool // Highway zu OB: Kein Ergebnis von LeseEinheit + Err_Leser_nicht_bereit : Bool // Highway zu OB: Leser nicht betriebsbereit + Barcode_nicht_bekannt : Bool // Highway zu OB: Barcode nicht in Datenbank vorhanden + Schleuse_MB3543 : Struct // AMR (UH06): Schleuse MB3543 (Brandschutztüre 4) + Schleuse_DL : Bool // Highway zu OB: Schleuse-Datenliste fehlerhaft + Undef_Schleuse : Bool // Highway zu OB: undefinierter Schleuse + Err_Trolley_nicht_in_Schleuse : Bool // Highway zu OB: Trolley fährt nicht in Schleuse + Err_Uebzeit : Bool // Highway zu OB: Überwachungzeit ist abgelaufen + Err_Schritt : Bool // Highway zu OB: Schritt-Nummer ist nicht definiert + Err_Stau_Einfahrt : Bool // Highway zu OB: Stau bei Bereich-Einfahrt + Err_BLKMov : Bool // Highway zu OB: Error bei Block kopieren + Err_Trolley_raus : Bool // Highway zu OB: Trolley fährt nicht aus Schleuse + Err_Raus_Sensor : Bool // Highway zu OB: Raus-Sensor wird nicht erreicht (oder dauernd aktiv)! + Err_Ziel : Bool // Highway zu OB: Trolley-Ziel nicht bekannt + Err_Weichen_DL : Bool // Highway zu OB: Weichen-Datenliste fehlerhaft + Err_Undef_Weiche : Bool // Highway zu OB: undefinierte Weiche + Err_Weiche_belegt : Bool // Highway zu OB: Weiche bleibt belegt + Err_Kein_LeseErgebnis : Bool // Highway zu OB: Kein Ergebnis von LeseEinheit + Err_Leser_nicht_bereit : Bool // Highway zu OB: Leser nicht betriebsbereit + Barcode_nicht_bekannt : Bool // Highway zu OB: Barcode nicht in Datenbank vorhanden + Schleuse_MB3546 : Struct // AMR (UH06): Schleuse MB3546 (Turm zu Outbound) + Schleuse_DL : Bool // Highway zu OB: Schleuse-Datenliste fehlerhaft + Undef_Schleuse : Bool // Highway zu OB: undefinierter Schleuse + Err_Trolley_nicht_in_Schleuse : Bool // Highway zu OB: Trolley fährt nicht in Schleuse + Err_Uebzeit : Bool // Highway zu OB: Überwachungzeit ist abgelaufen + Err_Schritt : Bool // Highway zu OB: Schritt-Nummer ist nicht definiert + Err_Stau_Einfahrt : Bool // Highway zu OB: Stau bei Bereich-Einfahrt + Err_BLKMov : Bool // Highway zu OB: Error bei Block kopieren + Err_Trolley_raus : Bool // Highway zu OB: Trolley fährt nicht aus Schleuse + Err_Raus_Sensor : Bool // Highway zu OB: Raus-Sensor wird nicht erreicht (oder dauernd aktiv)! + Err_Ziel : Bool // Highway zu OB: Trolley-Ziel nicht bekannt + Err_Weichen_DL : Bool // Highway zu OB: Weichen-Datenliste fehlerhaft + Err_Undef_Weiche : Bool // Highway zu OB: undefinierte Weiche + Err_Weiche_belegt : Bool // Highway zu OB: Weiche bleibt belegt + Err_Kein_LeseErgebnis : Bool // Highway zu OB: Kein Ergebnis von LeseEinheit + Err_Leser_nicht_bereit : Bool // Highway zu OB: Leser nicht betriebsbereit + Barcode_nicht_bekannt : Bool // Highway zu OB: Barcode nicht in Datenbank vorhanden + Schleuse_MB3552 : Struct // AMR (UH06): Schleuse MB3552 (Turm zu Outbound) + Schleuse_DL : Bool // Highway zu OB: Schleuse-Datenliste fehlerhaft + Undef_Schleuse : Bool // Highway zu OB: undefinierter Schleuse + Err_Trolley_nicht_in_Schleuse : Bool // Highway zu OB: Trolley fährt nicht in Schleuse + Err_Uebzeit : Bool // Highway zu OB: Überwachungzeit ist abgelaufen + Err_Schritt : Bool // Highway zu OB: Schritt-Nummer ist nicht definiert + Err_Stau_Einfahrt : Bool // Highway zu OB: Stau bei Bereich-Einfahrt + Err_BLKMov : Bool // Highway zu OB: Error bei Block kopieren + Err_Trolley_raus : Bool // Highway zu OB: Trolley fährt nicht aus Schleuse + Err_Raus_Sensor : Bool // Highway zu OB: Raus-Sensor wird nicht erreicht (oder dauernd aktiv)! + Err_Ziel : Bool // Highway zu OB: Trolley-Ziel nicht bekannt + Err_Weichen_DL : Bool // Highway zu OB: Weichen-Datenliste fehlerhaft + Err_Undef_Weiche : Bool // Highway zu OB: undefinierte Weiche + Err_Weiche_belegt : Bool // Highway zu OB: Weiche bleibt belegt + Err_Kein_LeseErgebnis : Bool // Highway zu OB: Kein Ergebnis von LeseEinheit + Err_Leser_nicht_bereit : Bool // Highway zu OB: Leser nicht betriebsbereit + Barcode_nicht_bekannt : Bool // Highway zu OB: Barcode nicht in Datenbank vorhanden + Schleuse_MB3562 : Struct // AMR (UH06): Schleuse MB3562 (Turm zu AMR) + Schleuse_DL : Bool // Highway zu AMR : Schleuse-Datenliste fehlerhaft + Undef_Schleuse : Bool // Highway zu AMR : undefinierter Schleuse + Err_Trolley_nicht_in_Schleuse : Bool // Highway zu AMR : Trolley fährt nicht in Schleuse + Err_Uebzeit : Bool // Highway zu AMR : Überwachungzeit ist abgelaufen + Err_Schritt : Bool // Highway zu AMR : Schritt-Nummer ist nicht definiert + Err_Stau_Einfahrt : Bool // Highway zu AMR : Stau bei Bereich-Einfahrt + Err_BLKMov : Bool // Highway zu AMR : Error bei Block kopieren + Err_Trolley_raus : Bool // Highway zu AMR : Trolley fährt nicht aus Schleuse + Err_Raus_Sensor : Bool // Highway zu AMR : Raus-Sensor wird nicht erreicht (oder dauernd aktiv)! + Err_Ziel : Bool // Highway zu AMR : Trolley-Ziel nicht bekannt + Err_Weichen_DL : Bool // Highway zu AMR : Weichen-Datenliste fehlerhaft + Err_Undef_Weiche : Bool // Highway zu AMR : undefinierte Weiche + Err_Weiche_belegt : Bool // Highway zu AMR : Weiche bleibt belegt + Err_Kein_LeseErgebnis : Bool // Highway zu AMR : Kein Ergebnis von LeseEinheit + Err_Leser_nicht_bereit : Bool // Highway zu AMR : Leser nicht betriebsbereit + Barcode_nicht_bekannt : Bool // Highway zu AMR : Barcode nicht in Datenbank vorhanden + Schleuse_MB3565 : Struct // AMR (UH06): Schleuse MB3565 (Brandschutztüre 4) + Schleuse_DL : Bool // Highway zu AMR : Schleuse-Datenliste fehlerhaft + Undef_Schleuse : Bool // Highway zu AMR : undefinierter Schleuse + Err_Trolley_nicht_in_Schleuse : Bool // Highway zu AMR : Trolley fährt nicht in Schleuse + Err_Uebzeit : Bool // Highway zu AMR : Überwachungzeit ist abgelaufen + Err_Schritt : Bool // Highway zu AMR : Schritt-Nummer ist nicht definiert + Err_Stau_Einfahrt : Bool // Highway zu AMR : Stau bei Bereich-Einfahrt + Err_BLKMov : Bool // Highway zu AMR : Error bei Block kopieren + Err_Trolley_raus : Bool // Highway zu AMR : Trolley fährt nicht aus Schleuse + Err_Raus_Sensor : Bool // Highway zu AMR : Raus-Sensor wird nicht erreicht (oder dauernd aktiv)! + Err_Ziel : Bool // Highway zu AMR : Trolley-Ziel nicht bekannt + Err_Weichen_DL : Bool // Highway zu AMR : Weichen-Datenliste fehlerhaft + Err_Undef_Weiche : Bool // Highway zu AMR : undefinierte Weiche + Err_Weiche_belegt : Bool // Highway zu AMR : Weiche bleibt belegt + Err_Kein_LeseErgebnis : Bool // Highway zu AMR : Kein Ergebnis von LeseEinheit + Err_Leser_nicht_bereit : Bool // Highway zu AMR : Leser nicht betriebsbereit + Barcode_nicht_bekannt : Bool // Highway zu AMR : Barcode nicht in Datenbank vorhanden + Schleuse_MB3073 : Struct // AMR (UH06): Schleuse MB3073 (Highway zu OB) + Schleuse_DL : Bool // Highway zu OB: Schleuse-Datenliste fehlerhaft + Undef_Schleuse : Bool // Highway zu OB: undefinierter Schleuse + Err_Trolley_nicht_in_Schleuse : Bool // Highway zu OB: Trolley fährt nicht in Schleuse + Err_Uebzeit : Bool // Highway zu OB: Überwachungzeit ist abgelaufen + Err_Schritt : Bool // Highway zu OB: Schritt-Nummer ist nicht definiert + Err_Stau_Einfahrt : Bool // Highway zu OB: Stau bei Bereich-Einfahrt + Err_BLKMov : Bool // Highway zu OB: Error bei Block kopieren + Err_Trolley_raus : Bool // Highway zu OB: Trolley fährt nicht aus Schleuse + Err_Raus_Sensor : Bool // Highway zu OB: Raus-Sensor wird nicht erreicht (oder dauernd aktiv)! + Err_Ziel : Bool // Highway zu OB: Trolley-Ziel nicht bekannt + Err_Weichen_DL : Bool // Highway zu OB: Weichen-Datenliste fehlerhaft + Err_Undef_Weiche : Bool // Highway zu OB: undefinierte Weiche + Err_Weiche_belegt : Bool // Highway zu OB: Weiche bleibt belegt + Err_Kein_LeseErgebnis : Bool // Highway zu OB: Kein Ergebnis von LeseEinheit + Err_Leser_nicht_bereit : Bool // Highway zu OB: Leser nicht betriebsbereit + Barcode_nicht_bekannt : Bool // Highway zu OB: Barcode nicht in Datenbank vorhanden + Frei500 : Array[1..68] of Word diff --git a/=A01+UH06-KF00/Programmbausteine/_All/CYC_INT8_(10ms).awl b/=A01+UH06-KF00/Programmbausteine/_All/CYC_INT8_(10ms).awl new file mode 100644 index 0000000..37e4987 --- /dev/null +++ b/=A01+UH06-KF00/Programmbausteine/_All/CYC_INT8_(10ms).awl @@ -0,0 +1,68 @@ +=== OB 35: CYC_INT8_(10ms) [STL] === +INTERFACE: + Temp: + OB35_EV_CLASS : Byte // Bits 0-3 = 1 (Coming event), Bits 4-7 = 1 (Event class 1) + OB35_STRT_INF : Byte // 16#36 (OB 35 has started) + OB35_PRIORITY : Byte // Priority of OB Execution + OB35_OB_NUMBR : Byte // 35 (Organization block 35, OB35) + OB35_RESERVED_1 : Byte // Reserved for system + OB35_RESERVED_2 : Byte // Reserved for system + OB35_PHASE_OFFSET : Word // Phase offset (msec) + OB35_RESERVED_3 : Int // Reserved for system + OB35_EXC_FREQ : Int // Frequency of execution (msec) + OB35_DATE_TIME : Date_And_Time // Date and time OB35 started + Save1 : DInt + Save2 : DInt + Constant: + +--- NW 1: AR1 und AR2 sichern --- + TAR1 + T Save1 + TAR2 + T Save2 + + +--- NW 2: Sensoren mit kurzen Imuls --- +// / L "PEB112":P +// / T "PEB112" +// / U "TascheOK_M0051" +// / S "DBereich"."Fast-Sensors".B1123 + + +--- NW 3: 10ms Impuls --- + L "MW38" + + 1 // 10ms-Takte aufaddieren + T "MW38" + + CLR + CU "Z35" + + SET + CU "Z35" + + L "Z35" + L 10 + AMR --- +CALL FC "HWTtoAMR_Bereich" + + +--- NW 14: 1_Arbeitsplätze --- +CALL FC "Arbeitsplätze" + + +--- NW 15: 2_Highway > Outbound --- +CALL FC "HWtoOB_Bereich" + + +--- NW 16: Visu-Zeug --- +CALL FB "Visu_HMOmniSchleuse" , + +CALL FB "Visu_HMOmniSchleuse_Plus" , + +CALL FB "Visu_HMOmniBereich_Plus" , + +CALL FB "Visu_HMOmniWeiche" , + +CALL FB "Visu_HM_ABP" , + +CALL FB "Visu_CheckTrolley" , + + +--- NW 17: Lampentest --- +CALL FC "LTest" + + +--- NW 18: Ausgang ansteuern --- +CALL FC "Set_Output" (Enable:="M1000.1", Status:="M1000.0", OutByte:="MD1002", OutBit:="MW1006") + + +--- NW 19: Daten an UH07/Outbound senden --- + A "DSchnittstelle_zu_Outbound".To_UH07.MA0200_A_vor + = "INTERFACE_TO_UH07_Byte2.x0" + A "DSchnittstelle_zu_Outbound".To_UH07.MA0200_A_start + = "INTERFACE_TO_UH07_Byte2.x1" + A "DSchnittstelle_zu_Outbound".To_UH07.MA0203_kein_Stau + = "INTERFACE_TO_UH07_Byte2.x2" + A "DSchnittstelle_zu_Outbound".To_UH07.MA0203_aktiv + = "INTERFACE_TO_UH07_Byte2.x3" + + +--- NW 20: Daten an Host senden --- +CALL FB "Daten_Host_senden" , + + +--- NW 21: Daten in SendFifo schreiben --- + A "M83.1" + R "M83.1" + JCN nix + +CALL FB "Daten_in_SendFIFO_speichern" , (TelegrammKennung[1]:='B', TelegrammKennung[2]:='2', TelegrammKennung[3]:='C', TelegrammKennung[4]:='D', TelegrammKennung[5]:='E', TelegrammKennung[6]:='F', TelegrammKennung[7]:='G', TelegrammKennung[8]:='I', TelegrammKennung[9]:='J', TelegrammKennung[10]:='K', TrolleyID:=DINT#4711, StationsNr:=13, Puffer_LinienNr:=7, StoreGroup:=DINT#0815, Status_1_Int:=83, Status_2_Bit[0]:=1, Status_2_Bit[1]:=0, Status_2_Bit[2]:=1, Status_2_Bit[3]:=0, Status_2_Bit[4]:=1, Status_2_Bit[5]:=0, Status_2_Bit[6]:=1, Status_2_Bit[7]:=1, Reserve[1]_Int:=62, Reserve[2]_Int:=63, Port:=2, Ret_Val_FIFO_IN:="MB199", Error:="M83.0") + +nix: NOP 0 + + +--- NW 22: Ende --- + BE + + +--- NW 23: Daten in SendFifo schreiben --- + A "M83.1" + R "M83.1" + JCN nixi + +CALL FB "Daten_in_SendFIFO_speichern" , (TelegrammKennung[1]:='A', TelegrammKennung[2]:='B', TelegrammKennung[3]:='C', TelegrammKennung[4]:='D', TelegrammKennung[5]:='E', TelegrammKennung[6]:='F', TelegrammKennung[7]:='G', TelegrammKennung[8]:='I', TelegrammKennung[9]:='J', TelegrammKennung[10]:='K', TrolleyID:=DINT#4711, StationsNr:=13, Puffer_LinienNr:=7, StoreGroup:=DINT#0815, Status_1_Int:=83, Status_2_Bit[0]:=1, Status_2_Bit[1]:=0, Status_2_Bit[2]:=1, Status_2_Bit[3]:=0, Status_2_Bit[4]:=1, Status_2_Bit[5]:=0, Status_2_Bit[6]:=1, Status_2_Bit[7]:=1, Reserve[1]_Int:=62, Reserve[2]_Int:=63, Port:=1, Ret_Val_FIFO_IN:="MB199", Error:="M83.0") + +nixi: NOP 0 + + +--- NW 24: Eingang ansteuern --- +CALL FC "Set_Input" (Enable:="M2000.1", Status:="M2000.0", InByte:="MD2002", InBit:="MW2006") + + +--- NW 25: Ausgang ansteuern --- + A "Clock_1Hz" + = "M1000.0" + +CALL FC "Set_Output" (Enable:="M1000.1", Status:="M1000.0", OutByte:="MD1002", OutBit:="MW1006") + diff --git a/=A01+UH06-KF00/Programmbausteine/_All/LTest.awl b/=A01+UH06-KF00/Programmbausteine/_All/LTest.awl new file mode 100644 index 0000000..fb9e252 --- /dev/null +++ b/=A01+UH06-KF00/Programmbausteine/_All/LTest.awl @@ -0,0 +1,162 @@ +=== FC 1016: LTest [STL] === +INTERFACE: + Input: + Output: + InOut: + Temp: + Constant: + Return: + Ret_Val : Void + +--- NW 1: Anzeigen Anlage ausschalten ? --- + A "DAMR_Bereich".A01_UH06.AnlageEin + JC Nw02 + +// Anzeigen ausschalten: + SET + R "PF0000" + R "PF0001" + R "PF0002" + R "PF0003" + R "PF0004" + R "PF0005" +// R "PF0006" //Feueralarm +// R "PF0030" //Not-Aus + R "PF0031" + R "PF0032" + R "PF0033" + R "PF0040" + R "PF0041" + R "PF0042" + R "PF0043" + R "PF0044" + R "PF0045" + R "PF0046" + R "PF0047" + R "PF0050" + R "PF0051" + R "PF0052" + R "PF0053" + R "PF0054" + R "PF0055" + R "PF0056" + R "PF0057" + R "PF0120" + R "PF0121" + R "PF0122" + R "PF0123" + R "PF0124" + R "PF0125" + R "PF0160" + R "PF0161" + R "PF0162" + R "PF0177" + R "PF0182" + R "PF0183" + R "PF0184" + R "PF0185" + R "PF0186" + R "PF0187" + R "PF3240" + R "PF3270" + R "PF3300" + R "PF3324" + R "PF3360" + R "PF3384" + R "PF3420" + R "PF3444" + R "PF3462" + R "PF3463" + + +--- NW 2: + --- +// Einschalten: +Nw02: A "SF0003" + AN "SGes".Lampentest_aktiv + AN "SGes".I_Lampentest_aktiv // Tastensperre + S "SGes".I_Lampentest_aktiv + S "SGes".Lampentest_aktiv + + AN "SF0003" + R "SGes".I_Lampentest_aktiv // Tastensperre + +// Ausschalten: + A "SF0003" + AN "SGes".I_Lampentest_aktiv // Tastensperre + A "SGes".Lampentest_aktiv + S "SGes".I_Lampentest_aktiv + R "SGes".Lampentest_aktiv + +// Lampentest zeitlang aktiv: + A "SGes".Lampentest_aktiv // Automatisch ausschalten + L S5T#5M // 5min + OnDelay "T16" + A "T16" // Nach 5min automatisch ausschalten + R "SGes".Lampentest_aktiv + + AN "SGes".Lampentest_aktiv + BEC + +// Anzeigen einschalten: + A "SF0003" + = "PF0033" // Horn + + SET + S "PF0000" + S "PF0001" + S "PF0002" + S "PF0003" + S "PF0004" + S "PF0005" + S "PF0006" + S "PF0030" + S "PF0031" + S "PF0032" + S "PF0040" + S "PF0041" + S "PF0042" + S "PF0043" + S "PF0044" + S "PF0045" + S "PF0046" + S "PF0047" + S "PF0050" + S "PF0051" + S "PF0052" + S "PF0053" + S "PF0054" + S "PF0055" + S "PF0056" + S "PF0057" + S "PF0120" + S "PF0121" + S "PF0122" + S "PF0123" + S "PF0124" + S "PF0125" + S "PF0160" + S "PF0161" + S "PF0162" + S "PF0177" + S "PF0182" + S "PF0183" + S "PF0184" + S "PF0185" + S "PF0186" + S "PF0187" + S "PF3240" + S "PF3270" + S "PF3300" + S "PF3324" + S "PF3360" + S "PF3384" + S "PF3420" + S "PF3444" + S "PF3462" + S "PF3463" + + +--- NW 3: Ende --- + BE + diff --git a/=A01+UH06-KF00/Programmbausteine/_All/SGes.awl b/=A01+UH06-KF00/Programmbausteine/_All/SGes.awl new file mode 100644 index 0000000..2718ee9 --- /dev/null +++ b/=A01+UH06-KF00/Programmbausteine/_All/SGes.awl @@ -0,0 +1,25 @@ +=== GlobalDB 9: SGes [DB] === +INTERFACE: + Static: + DATE_TIME : "UDate+Time" + Resetaktiv : Bool // Reset ist aktiv + Lampentest_aktiv : Bool // Lampentest ist aktiv + I_Lampentest_aktiv : Bool // Flanke + FpTasterAnlageEin : Bool // Flankenmerker Taster Anlage Ein + AnlageEinHupe : Bool // Vor Anlage Ein Hupe aktivieren + AnlageEinStartOk : Bool // Anlage kann jetzt Eingeschaltet werden + ErrorAnzeige : Bool // Störung zum Anzeigen vorhanden + PC_AnlageAus : Bool // Anlage über PC ausschalten + Ohne_PC_Fahren : Bool // Inbetriebnahme: Ohne PC fahren + Neustart : Bool // SPS wurde neu eingeschaltet + Simulation_ohne_HW_aktiv : Bool // Test auf Simulations-SPS + Test_Multiuser : Bool + IDX : Int // SPS-Nr. für BT ind MT + Zyklen : Struct + Zyklus1 : Bool // Zyklus 1 aktiv + Zyklus2 : Bool // Zyklus 1 aktiv + Zyklus3 : Bool // Zyklus 1 aktiv + Zyklus4 : Bool // Zyklus 1 aktiv + Zyklus5 : Bool // Zyklus 1 aktiv + Zyklus6 : Bool // Zyklus 1 aktiv + Zyklus7 : Bool // Zyklus 1 aktiv diff --git a/=A01+UH06-KF00/Programmbausteine/_All/Startup.awl b/=A01+UH06-KF00/Programmbausteine/_All/Startup.awl new file mode 100644 index 0000000..f560cc5 --- /dev/null +++ b/=A01+UH06-KF00/Programmbausteine/_All/Startup.awl @@ -0,0 +1,31 @@ +=== OB 100: Startup [STL] === +INTERFACE: + Input: + LostRetentive : Bool // True if retentive data are lost + LostRTC : Bool // True if date and time are lost + Temp: + Constant: + +--- NW 1: Neustart --- + SET + S "SGes".Neustart + R "DAMR_Bereich".A01_UH06.Not_Aus.UH06 + R "DAMR_Bereich".A01_UH06.Not_Aus.UZ0601 + R "DAMR_Bereich".A01_UH06.Not_Aus.UZ0602 + R "DAMR_Bereich".A01_UH06.Not_Aus.UZ0603 + R "DAMR_Bereich".A01_UH06.Not_Aus.UZ0611 + R "DAMR_Bereich".A01_UH06.Not_Aus.UZ0612 + R "DAMR_Bereich".A01_UH06.Not_Aus.UZ0613 + R "DAMR_Bereich".A01_UH06.Not_Aus.UZ0614 + R "DAMR_Bereich".A01_UH06.Not_Aus.UZ0615 + R "DAMR_Bereich".A01_UH06.Not_Aus.UZ0621 + R "DAMR_Bereich".A01_UH06.Not_Aus.UZ0622 + R "DAMR_Bereich".A01_UH06_Halle4.Not_Aus.UZ0620 + R "DAMR_Bereich".A01_UC061.Not_Aus.UZ6102 + R "DAMR_Bereich".A01_UC061.Not_Aus.UZ6103 + R "DAMR_Bereich".A01_UC061.Not_Aus.UZ6104 + + +--- NW 2: Ende --- + BE + diff --git a/=A01+UH06-KF00/Programmbausteine/xBaseSystemLib/GDBs/100_Common/DB_AlarmGlobal.awl b/=A01+UH06-KF00/Programmbausteine/xBaseSystemLib/GDBs/100_Common/DB_AlarmGlobal.awl new file mode 100644 index 0000000..544fe72 --- /dev/null +++ b/=A01+UH06-KF00/Programmbausteine/xBaseSystemLib/GDBs/100_Common/DB_AlarmGlobal.awl @@ -0,0 +1,8 @@ +=== GlobalDB 12: DB_AlarmGlobal [DB] === +INTERFACE: + Static: + nAlarmNoOffsetGlobal : UInt := 10 + nAlarmNoStep : UInt := 5 + nAlarmPrioGlobal : USInt := 15 + xAlarmReOrg : Bool + xAlarmReOrgNextStep : Bool diff --git a/=A01+UH06-KF00/Programmbausteine/xBaseSystemLib/GDBs/100_Common/DB_MachineGlobal.awl b/=A01+UH06-KF00/Programmbausteine/xBaseSystemLib/GDBs/100_Common/DB_MachineGlobal.awl new file mode 100644 index 0000000..b42b76b --- /dev/null +++ b/=A01+UH06-KF00/Programmbausteine/xBaseSystemLib/GDBs/100_Common/DB_MachineGlobal.awl @@ -0,0 +1,23 @@ +=== GlobalDB 2: DB_MachineGlobal [DB] === +INTERFACE: + Static: + nMachineMode : Int // Eingang um Simulationslevel festzulegen. Kann verwendet werden, um Eingangssignale zu simulieren + nLogicCycle : UInt + nPrevCycle : DInt + sMachine-Name : String[20] // Name of the Machine + sFL-Name : String[20] // Name of Production Line + sFactory : String[20] // Place of the Factory + xCold_Restart : Bool // (Cold restart scan 1 of OB 1) + xAlwaysFalse : Bool := FALSE // Always FALSE + xAlwaysTrue : Bool := TRUE // Always TRUE + nHourCounter : Int // Betriebsstundenzähler für Automatikbetrieb + xIBN : Bool // Inbetriebnahme aktiv + xSoftwareReset : Bool // Software Reset + DTL_TimePLC : DTL // SPS Zeit DTL + sPLCTimeAsString : String // SPS Zeit als String + stSMCCard : Struct // Speicherkarte + Size : UDInt + AcutalInUse : UDInt + Livespan : UDInt + stStateMain : "IntfMainState" // Hauptzustandsmaschine + nLogLevel : Int // Global LogLevel diff --git a/=A01+UH06-KF00/Programmbausteine/xBaseSystemLib/GDBs/dbDataLogBuffer.awl b/=A01+UH06-KF00/Programmbausteine/xBaseSystemLib/GDBs/dbDataLogBuffer.awl new file mode 100644 index 0000000..59b8a9c --- /dev/null +++ b/=A01+UH06-KF00/Programmbausteine/xBaseSystemLib/GDBs/dbDataLogBuffer.awl @@ -0,0 +1,7 @@ +=== GlobalDB 19: dbDataLogBuffer [DB] === +INTERFACE: + Static: + nIdx : Int + nIdxMax : Int + DataLogBuffer : Array[0.."cNoTempDataLog"] of "DataLogBuffer" + DataLogBufferEmpty : "DataLogBuffer" diff --git a/=A01+UH06-KF00/Programmbausteine/xCommunication/DB_Buffer_CommunicationWCSBL.awl b/=A01+UH06-KF00/Programmbausteine/xCommunication/DB_Buffer_CommunicationWCSBL.awl new file mode 100644 index 0000000..7379c36 --- /dev/null +++ b/=A01+UH06-KF00/Programmbausteine/xCommunication/DB_Buffer_CommunicationWCSBL.awl @@ -0,0 +1,4 @@ +=== GlobalDB 47: DB_Buffer_CommunicationWCSBL [DB] === +INTERFACE: + Static: + BUFFER : Array[1..100] of "UDT_TelegramData_Send" diff --git a/=A01+UH06-KF00/Programmbausteine/xCommunication/DB_Buffer_CommunicationWES.awl b/=A01+UH06-KF00/Programmbausteine/xCommunication/DB_Buffer_CommunicationWES.awl new file mode 100644 index 0000000..b9789c7 --- /dev/null +++ b/=A01+UH06-KF00/Programmbausteine/xCommunication/DB_Buffer_CommunicationWES.awl @@ -0,0 +1,4 @@ +=== GlobalDB 48: DB_Buffer_CommunicationWES [DB] === +INTERFACE: + Static: + BUFFER : Array[1..100] of "UDT_TelegramData_Send" diff --git a/=A01+UH06-KF00/Programmbausteine/xCommunication/DB_CommunicationParameters.awl b/=A01+UH06-KF00/Programmbausteine/xCommunication/DB_CommunicationParameters.awl new file mode 100644 index 0000000..b1945b8 --- /dev/null +++ b/=A01+UH06-KF00/Programmbausteine/xCommunication/DB_CommunicationParameters.awl @@ -0,0 +1,4 @@ +=== GlobalDB 64: DB_CommunicationParameters [DB] === +INTERFACE: + Static: + nSeqNumWESDeviceHub : LInt diff --git a/=A01+UH06-KF00/Programmbausteine/xCommunication/DB_LGF_FIFO_CommWCSBL.awl b/=A01+UH06-KF00/Programmbausteine/xCommunication/DB_LGF_FIFO_CommWCSBL.awl new file mode 100644 index 0000000..165ae1c --- /dev/null +++ b/=A01+UH06-KF00/Programmbausteine/xCommunication/DB_LGF_FIFO_CommWCSBL.awl @@ -0,0 +1,31 @@ +=== InstanceDB 11: DB_LGF_FIFO_CommWCSBL [DB] === +INTERFACE: + Input: + enqueue : Bool + dequeue : Bool + reset : Bool + clear : Bool + initialItem : Variant + maxElementCount : UInt + Output: + error : Bool + status : Word + subFunctionStatus : Word + elementCount : USInt + isEmpty : Bool + isFull : Bool + oldestElement : Int + enqueueDone : Bool + dequeueDone : Bool + InOut: + itemIn : Variant + buffer : Variant + itemOut : Variant + Static: + statEdgesMem : Struct + enqueue : Bool + dequeue : Bool + clear : Bool + statFirstItemIndex : Int + statNextEmptyItemIndex : Int + statElementCount : DInt diff --git a/=A01+UH06-KF00/Programmbausteine/xCommunication/DB_LGF_FIFO_CommWES.awl b/=A01+UH06-KF00/Programmbausteine/xCommunication/DB_LGF_FIFO_CommWES.awl new file mode 100644 index 0000000..e579785 --- /dev/null +++ b/=A01+UH06-KF00/Programmbausteine/xCommunication/DB_LGF_FIFO_CommWES.awl @@ -0,0 +1,31 @@ +=== InstanceDB 13: DB_LGF_FIFO_CommWES [DB] === +INTERFACE: + Input: + enqueue : Bool + dequeue : Bool + reset : Bool + clear : Bool + initialItem : Variant + maxElementCount : UInt + Output: + error : Bool + status : Word + subFunctionStatus : Word + elementCount : USInt + isEmpty : Bool + isFull : Bool + oldestElement : Int + enqueueDone : Bool + dequeueDone : Bool + InOut: + itemIn : Variant + buffer : Variant + itemOut : Variant + Static: + statEdgesMem : Struct + enqueue : Bool + dequeue : Bool + clear : Bool + statFirstItemIndex : Int + statNextEmptyItemIndex : Int + statElementCount : DInt diff --git a/=A01+UH06-KF00/Programmbausteine/xCommunication/FB_CommunicationWCSBL_DB.awl b/=A01+UH06-KF00/Programmbausteine/xCommunication/FB_CommunicationWCSBL_DB.awl new file mode 100644 index 0000000..1de6958 --- /dev/null +++ b/=A01+UH06-KF00/Programmbausteine/xCommunication/FB_CommunicationWCSBL_DB.awl @@ -0,0 +1,22 @@ +=== InstanceDB 10: FB_CommunicationWCSBL_DB [DB] === +INTERFACE: + Input: + Output: + InOut: + fbInOutSendFIFO : "LGF_FIFO" + arFifoSendBuffer : Array[1..100] of "UDT_TelegramData_Send" + Static: + fbTeleHandler : "FB_TCP_LCOM_TeleHandler" + xReset : Bool + xSendTele : Bool + stTelegramToSend : "UDT_TelegramData_Send" + nState : Int + nStateSend : Int + xRetVal : Bool + stNewTelegram : "UDT_TelegramData" + stTeleGOHDRespM : "UDT_Telegram_GOHDRespM" + arPayloadHelp : Array[0..200] of Byte + cnt : UInt + LStream_JsonDeserializer_Instance : "LStream_JsonDeserializer" + typeElement : Array[0..10] of "LStream_typeElement" + xDone : Bool diff --git a/=A01+UH06-KF00/Programmbausteine/xCommunication/FB_CommunicationWES_DeviceHub_DB.awl b/=A01+UH06-KF00/Programmbausteine/xCommunication/FB_CommunicationWES_DeviceHub_DB.awl new file mode 100644 index 0000000..db9bcfa --- /dev/null +++ b/=A01+UH06-KF00/Programmbausteine/xCommunication/FB_CommunicationWES_DeviceHub_DB.awl @@ -0,0 +1,21 @@ +=== InstanceDB 4: FB_CommunicationWES_DeviceHub_DB [DB] === +INTERFACE: + Input: + Output: + InOut: + fbInOutSendFIFO : "LGF_FIFO" + arFifoSendBuffer : Array[1..100] of "UDT_TelegramData_Send" + Static: + fbTeleHandler : "FB_TCP_LCOM_TeleHandler" + xReset : Bool + xSendTele : Bool + stTelegramToSend : "UDT_TelegramData_Send" + nStateReceive : Int + nStateSend : Int + xRetVal : Bool + stNewTelegram : "UDT_TelegramData" + stTeleGOHDRespM : "UDT_Telegram_GOHDRespM" + rTrigConnectionActive : R_TRIG + xSendHeartbeat : Bool + tOnHeartbeat : TON_TIME + sTelegramKennung : String diff --git a/=A01+UH06-KF00/Programmbausteine/xCommunication/TCP-Logger/DB_Buffer_CommunicationLogger.awl b/=A01+UH06-KF00/Programmbausteine/xCommunication/TCP-Logger/DB_Buffer_CommunicationLogger.awl new file mode 100644 index 0000000..a198811 --- /dev/null +++ b/=A01+UH06-KF00/Programmbausteine/xCommunication/TCP-Logger/DB_Buffer_CommunicationLogger.awl @@ -0,0 +1,4 @@ +=== GlobalDB 68: DB_Buffer_CommunicationLogger [DB] === +INTERFACE: + Static: + BUFFER : Array[1..100] of "UDT_TelegramData_Send" diff --git a/=A01+UH06-KF00/Programmbausteine/xCommunication/TCP-Logger/DB_CommunciationParametersLogger.awl b/=A01+UH06-KF00/Programmbausteine/xCommunication/TCP-Logger/DB_CommunciationParametersLogger.awl new file mode 100644 index 0000000..3a8ac73 --- /dev/null +++ b/=A01+UH06-KF00/Programmbausteine/xCommunication/TCP-Logger/DB_CommunciationParametersLogger.awl @@ -0,0 +1,5 @@ +=== GlobalDB 71: DB_CommunciationParametersLogger [DB] === +INTERFACE: + Static: + nSeqNum : LInt + xIsLogger : Bool diff --git a/=A01+UH06-KF00/Programmbausteine/xCommunication/TCP-Logger/DB_LGF_FIFO_CommLogger.awl b/=A01+UH06-KF00/Programmbausteine/xCommunication/TCP-Logger/DB_LGF_FIFO_CommLogger.awl new file mode 100644 index 0000000..ae0181b --- /dev/null +++ b/=A01+UH06-KF00/Programmbausteine/xCommunication/TCP-Logger/DB_LGF_FIFO_CommLogger.awl @@ -0,0 +1,31 @@ +=== InstanceDB 69: DB_LGF_FIFO_CommLogger [DB] === +INTERFACE: + Input: + enqueue : Bool + dequeue : Bool + reset : Bool + clear : Bool + initialItem : Variant + maxElementCount : UInt + Output: + error : Bool + status : Word + subFunctionStatus : Word + elementCount : USInt + isEmpty : Bool + isFull : Bool + oldestElement : Int + enqueueDone : Bool + dequeueDone : Bool + InOut: + itemIn : Variant + buffer : Variant + itemOut : Variant + Static: + statEdgesMem : Struct + enqueue : Bool + dequeue : Bool + clear : Bool + statFirstItemIndex : Int + statNextEmptyItemIndex : Int + statElementCount : DInt diff --git a/=A01+UH06-KF00/Programmbausteine/xCommunication/TCP-Logger/FB_CommunicationLogger_DB.awl b/=A01+UH06-KF00/Programmbausteine/xCommunication/TCP-Logger/FB_CommunicationLogger_DB.awl new file mode 100644 index 0000000..2400890 --- /dev/null +++ b/=A01+UH06-KF00/Programmbausteine/xCommunication/TCP-Logger/FB_CommunicationLogger_DB.awl @@ -0,0 +1,24 @@ +=== InstanceDB 67: FB_CommunicationLogger_DB [DB] === +INTERFACE: + Input: + Output: + InOut: + fbInOutSendFIFO : "LGF_FIFO" + arFifoSendBuffer : Array[1..100] of "UDT_TelegramData_Send" + Static: + fbTeleHandler : "FB_TCP_LCOM_TeleHandler" + xReset : Bool + xSendTele : Bool + stTelegramToSend : "UDT_TelegramData_Send" + nState : Int + xRetVal : Bool + stNewTelegram : "UDT_TelegramData" + stTeleGOHDRespM : "UDT_Telegram_GOHDRespM" + arPayloadHelp : Array[0..200] of Byte + cnt : UInt + LStream_JsonDeserializer_Instance : "LStream_JsonDeserializer" + typeElement : Array[0..10] of "LStream_typeElement" + xDone : Bool + rTrigConnectionActive : R_TRIG + xSendHeartbeat : Bool + tOnHeartbeat : TON_TIME diff --git a/=A01+UH07-KF00/Programmbausteine/Anlage/0_HWtoVP/Basics/DHWtoVP_Antriebe.awl b/=A01+UH07-KF00/Programmbausteine/Anlage/0_HWtoVP/Basics/DHWtoVP_Antriebe.awl new file mode 100644 index 0000000..b5094de --- /dev/null +++ b/=A01+UH07-KF00/Programmbausteine/Anlage/0_HWtoVP/Basics/DHWtoVP_Antriebe.awl @@ -0,0 +1,17 @@ +=== InstanceDB 199: DHWtoVP_Antriebe [DB] === +INTERFACE: + Input: + Output: + InOut: + Static: + MA0200 : "MAntrieb_PowerSave" + MA0201 : "MAntrieb_PowerSave" + MA0260 : "MAntrieb_PowerSave" + MA0261 : "MAntrieb_PowerSave" + MA0262 : "MAntrieb_PowerSave" + MA0263 : "MAntrieb_PowerSave" + MA0140 : "MAntrieb_PowerSave" + MA0141 : "MAntrieb_PowerSave" + MA0142 : "MAntrieb_PowerSave" + MA0143 : "MAntrieb_PowerSave" + MA0144 : "MAntrieb_PowerSave" diff --git a/=A01+UH07-KF00/Programmbausteine/Anlage/0_HWtoVP/Basics/DHWtoVP_Sensoren.awl b/=A01+UH07-KF00/Programmbausteine/Anlage/0_HWtoVP/Basics/DHWtoVP_Sensoren.awl new file mode 100644 index 0000000..f61e880 --- /dev/null +++ b/=A01+UH07-KF00/Programmbausteine/Anlage/0_HWtoVP/Basics/DHWtoVP_Sensoren.awl @@ -0,0 +1,24 @@ +=== InstanceDB 190: DHWtoVP_Sensoren [DB] === +INTERFACE: + Input: + Output: + InOut: + Static: + Stau_BG3730 : "MSensoren" + Stau_BG4202 : "MSensoren" + Stau_BG4204 : "MSensoren" + Stau_BG4206 : "MSensoren" + Stau_BG4210 : "MSensoren" + Stau_BG4211 : "MSensoren" + Stau_BG4213 : "MSensoren" + Stau_BG4215 : "MSensoren" + Stau_BG3144 : "MSensoren" + Stau_BG3142 : "MSensoren" + Stau_BG3130 : "MSensoren" + Stau_BG3127 : "MSensoren" + Stau_BG3132 : "MSensoren" + Stau_BG3133 : "MSensoren" + Stau_BG3135 : "MSensoren" + Stau_BG4216 : "MSensoren" + Stau_BG3724 : "MSensoren" + Stau_BG4201 : "MSensoren" diff --git a/=A01+UH07-KF00/Programmbausteine/Anlage/0_HWtoVP/Basics/DHWtoVP_Zylinder.awl b/=A01+UH07-KF00/Programmbausteine/Anlage/0_HWtoVP/Basics/DHWtoVP_Zylinder.awl new file mode 100644 index 0000000..f0c8152 --- /dev/null +++ b/=A01+UH07-KF00/Programmbausteine/Anlage/0_HWtoVP/Basics/DHWtoVP_Zylinder.awl @@ -0,0 +1,19 @@ +=== InstanceDB 192: DHWtoVP_Zylinder [DB] === +INTERFACE: + Input: + Output: + InOut: + Static: + Schleuse_3725 : "MZylinder" + Schleuse_4200 : "MZylinder" + Schleuse_4207 : "MZylinder" + Schleuse_4212 : "MZylinder" + Schleuse_4214 : "MZylinder" + Schleuse_3143 : "MZylinder" + Schleuse_3141 : "MZylinder" + Weiche_3137 : "MZylinder" + Weiche_3140 : "MZylinder" + Schleuse_3131 : "MZylinder" + Schleuse_3134 : "MZylinder" + Schleuse_3136 : "MZylinder" + Schleuse_4217 : "MZylinder" diff --git a/=A01+UH07-KF00/Programmbausteine/Anlage/0_HWtoVP/Basics/HWtoVP_Antriebe.awl b/=A01+UH07-KF00/Programmbausteine/Anlage/0_HWtoVP/Basics/HWtoVP_Antriebe.awl new file mode 100644 index 0000000..37b727a --- /dev/null +++ b/=A01+UH07-KF00/Programmbausteine/Anlage/0_HWtoVP/Basics/HWtoVP_Antriebe.awl @@ -0,0 +1,169 @@ +=== FB 199: HWtoVP_Antriebe [STL] === +INTERFACE: + Input: + Output: + InOut: + Static: + MA0200 : "MAntrieb_PowerSave" + MA0201 : "MAntrieb_PowerSave" + MA0260 : "MAntrieb_PowerSave" + MA0261 : "MAntrieb_PowerSave" + MA0262 : "MAntrieb_PowerSave" + MA0263 : "MAntrieb_PowerSave" + MA0140 : "MAntrieb_PowerSave" + MA0141 : "MAntrieb_PowerSave" + MA0142 : "MAntrieb_PowerSave" + MA0143 : "MAntrieb_PowerSave" + MA0144 : "MAntrieb_PowerSave" + Temp: + Auto : Bool // Automatik Linie ist aktiv + Hand : Bool // Hand Linie ist aktiv + BereichErr : Bool // Bereichsstörung -> Antrieb stoppen + QKontroll : Bool // Frequenzumrichter schon 3s Netz EIN + FuKontroll : Bool // Frequenzumrichter schon 3s Netz EIN + Quit : Bool // Motorschutz-Störung quittieren + Qok : Bool // Motorschutz ok + Jog1 : Bool // Geschwindigkeit 1 + Jog2 : Bool // Geschwindigkeit 2 + Betrieb : Bool // Betriebsart aktiv + FC105_RET : Word // Returnwert von FC105 + Antrieb1 : Bool // Antrieb dazuschalten + Antrieb2 : Bool // Antrieb dazuschalten + F1 : Bool // Geschwindigkeit 1 aktiviert + F2 : Bool // Geschwindigkeit 2 aktiviert + F3 : Bool // Geschwindigkeit 3 aktiviert + Constant: + +--- NW 1: Übergabe des Bereichstatus System UC072/A01 --- + A "DOutbound_Bereich".A01_UH07.Automatik + AN "DOutbound_Bereich".A01_UH07.Handbetrieb + = Auto + + A( + A "DOutbound_Bereich".A01_UC072.BereichErr + O "DOutbound_Bereich".A01_UZ7201.Area_Stop + O "DOutbound_Bereich".A01_UZ7202.Area_Stop + ) + AN "SGes".Simulation_ohne_HW_aktiv + = BereichErr + + AN BereichErr + L S5T#1S + OnDelay "T192" + + A "T192" + = QKontroll + = FuKontroll + + A "DOutbound_Bereich".A01_UC072.StOk_aktiv + = Quit + + +--- NW 2: MA0200 --- +CALL FB "None" , (Automatik:=Auto, Handbetrieb:=Hand, BereichErr:=BereichErr, Q:="FC0200", Ptc:=TRUE, Fu:=?, QKontroll:=QKontroll, FuKontroll:=?, ErrQuit:=Quit, Kontroll_B:=?, T_Nachlauf:=?, Antriebrueck:=?, Antriebvor:="MA0200", Jog1:=?, Jog2:=?, Analog:=?, QErr:="7_HMI_Err_UH07_OB".QErr.MA0200, PtcErr:=?, FuErr:=?, Err_Antrieb_verklemmt:=?) + + + +--- NW 3: MA0201 --- +CALL FB "None" , (Automatik:=Auto, Handbetrieb:=Hand, BereichErr:=BereichErr, Q:="FC0201", Ptc:=TRUE, Fu:=?, QKontroll:=QKontroll, FuKontroll:=?, ErrQuit:=Quit, Kontroll_B:=?, T_Nachlauf:=?, Antriebrueck:=?, Antriebvor:="MA0201", Jog1:=?, Jog2:=?, Analog:=?, QErr:="7_HMI_Err_UH07_OB".QErr.MA0201, PtcErr:=?, FuErr:=?, Err_Antrieb_verklemmt:=?) + + + +--- NW 4: Übergabe des Bereichstatus System UC073/A01 --- + A "DOutbound_Bereich".A01_UH07.Automatik + AN "DOutbound_Bereich".A01_UH07.Handbetrieb + = Auto + + CLR + = Hand + + A "DOutbound_Bereich".A01_UC073.BereichErr + AN "SGes".Simulation_ohne_HW_aktiv + = BereichErr + + AN BereichErr + L S5T#1S + OnDelay "T193" + + A "T193" + = QKontroll + = FuKontroll + + A "DOutbound_Bereich".A01_UC073.StOk_aktiv + = Quit + + +--- NW 5: MA0260 --- +CALL FB "None" , (Automatik:=Auto, Handbetrieb:=Hand, BereichErr:=BereichErr, Q:="FC0260", Ptc:=TRUE, Fu:=?, QKontroll:=QKontroll, FuKontroll:=?, ErrQuit:=Quit, Kontroll_B:=?, T_Nachlauf:=?, Antriebrueck:=?, Antriebvor:="MA0260", Jog1:=?, Jog2:=?, Analog:=?, QErr:="7_HMI_Err_UH07_OB".QErr.MA0260, PtcErr:=?, FuErr:=?, Err_Antrieb_verklemmt:=?) + + + +--- NW 6: MA0261 --- +CALL FB "None" , (Automatik:=Auto, Handbetrieb:=Hand, BereichErr:=BereichErr, Q:="FC0261", Ptc:=TRUE, Fu:=?, QKontroll:=QKontroll, FuKontroll:=?, ErrQuit:=Quit, Kontroll_B:=?, T_Nachlauf:=?, Antriebrueck:=?, Antriebvor:="MA0261", Jog1:=?, Jog2:=?, Analog:=?, QErr:="7_HMI_Err_UH07_OB".QErr.MA0261, PtcErr:=?, FuErr:=?, Err_Antrieb_verklemmt:=?) + + + +--- NW 7: MA0262 --- +CALL FB "None" , (Automatik:=Auto, Handbetrieb:=Hand, BereichErr:=BereichErr, Q:="FC0262", Ptc:=TRUE, Fu:=?, QKontroll:=QKontroll, FuKontroll:=?, ErrQuit:=Quit, Kontroll_B:=?, T_Nachlauf:=?, Antriebrueck:=?, Antriebvor:="MA0262", Jog1:=?, Jog2:=?, Analog:=?, QErr:="7_HMI_Err_UH07_OB".QErr.MA0262, PtcErr:=?, FuErr:=?, Err_Antrieb_verklemmt:=?) + + + +--- NW 8: MA0263 --- +CALL FB "None" , (Automatik:=Auto, Handbetrieb:=Hand, BereichErr:=BereichErr, Q:="FC0263", Ptc:=TRUE, Fu:=?, QKontroll:=QKontroll, FuKontroll:=?, ErrQuit:=Quit, Kontroll_B:=?, T_Nachlauf:=?, Antriebrueck:=?, Antriebvor:="MA0263", Jog1:=?, Jog2:=?, Analog:=?, QErr:="7_HMI_Err_UH07_OB".QErr.MA0263, PtcErr:=?, FuErr:=?, Err_Antrieb_verklemmt:=?) + + + +--- NW 9: Übergabe des Bereichstatus System UC071/A01 --- + A "DOutbound_Bereich".A01_UH07.Automatik + AN "DOutbound_Bereich".A01_UH07.Handbetrieb + = Auto + + CLR + = Hand + + A( + O "DOutbound_Bereich".A01_UC071.BereichErr + O "DOutbound_Bereich".A01_UZ7102.Area_Stop + ) + AN "SGes".Simulation_ohne_HW_aktiv + = BereichErr + + AN BereichErr + L S5T#1S + OnDelay "T191" + + A "T191" + = QKontroll + = FuKontroll + + A "DOutbound_Bereich".A01_UC071.StOk_aktiv + = Quit + + +--- NW 10: MA0140 --- +CALL FB "None" , (Automatik:=Auto, Handbetrieb:=Hand, BereichErr:=BereichErr, Q:="FC0140", Ptc:=TRUE, Fu:=?, QKontroll:=QKontroll, FuKontroll:=?, ErrQuit:=Quit, Kontroll_B:=?, T_Nachlauf:=?, Antriebrueck:=?, Antriebvor:="MA0140", Jog1:=?, Jog2:=?, Analog:=?, QErr:="7_HMI_Err_UH07_OB".QErr.MA0140, PtcErr:=?, FuErr:=?, Err_Antrieb_verklemmt:=?) + + + +--- NW 11: MA0141 --- +CALL FB "None" , (Automatik:=Auto, Handbetrieb:=Hand, BereichErr:=BereichErr, Q:="FC0141", Ptc:=TRUE, Fu:=?, QKontroll:=QKontroll, FuKontroll:=?, ErrQuit:=Quit, Kontroll_B:=?, T_Nachlauf:=?, Antriebrueck:=?, Antriebvor:="MA0141", Jog1:=?, Jog2:=?, Analog:=?, QErr:="7_HMI_Err_UH07_OB".QErr.MA0141, PtcErr:=?, FuErr:=?, Err_Antrieb_verklemmt:=?) + + + +--- NW 12: MA0142 --- +CALL FB "None" , (Automatik:=Auto, Handbetrieb:=Hand, BereichErr:=BereichErr, Q:="FC0142", Ptc:=TRUE, Fu:=?, QKontroll:=QKontroll, FuKontroll:=?, ErrQuit:=Quit, Kontroll_B:=?, T_Nachlauf:=?, Antriebrueck:=?, Antriebvor:="MA0142", Jog1:=?, Jog2:=?, Analog:=?, QErr:="7_HMI_Err_UH07_OB".QErr.MA0142, PtcErr:=?, FuErr:=?, Err_Antrieb_verklemmt:=?) + + + +--- NW 13: MA0143 --- +CALL FB "None" , (Automatik:=Auto, Handbetrieb:=Hand, BereichErr:=BereichErr, Q:="FC0143", Ptc:=TRUE, Fu:=?, QKontroll:=QKontroll, FuKontroll:=?, ErrQuit:=Quit, Kontroll_B:=?, T_Nachlauf:=?, Antriebrueck:=?, Antriebvor:="MA0143", Jog1:=?, Jog2:=?, Analog:=?, QErr:="7_HMI_Err_UH07_OB".QErr.MA0143, PtcErr:=?, FuErr:=?, Err_Antrieb_verklemmt:=?) + + + +--- NW 14: MA0144 --- +CALL FB "None" , (Automatik:=Auto, Handbetrieb:=Hand, BereichErr:=BereichErr, Q:="FC0144", Ptc:=TRUE, Fu:=?, QKontroll:=QKontroll, FuKontroll:=?, ErrQuit:=Quit, Kontroll_B:=?, T_Nachlauf:=?, Antriebrueck:=?, Antriebvor:="MA0144", Jog1:=?, Jog2:=?, Analog:=?, QErr:="7_HMI_Err_UH07_OB".QErr.MA0144, PtcErr:=?, FuErr:=?, Err_Antrieb_verklemmt:=?) + + +--- NW 15: Ende --- + BE + diff --git a/=A01+UH07-KF00/Programmbausteine/Anlage/0_HWtoVP/Basics/HWtoVP_Sensoren.awl b/=A01+UH07-KF00/Programmbausteine/Anlage/0_HWtoVP/Basics/HWtoVP_Sensoren.awl new file mode 100644 index 0000000..07ad51f --- /dev/null +++ b/=A01+UH07-KF00/Programmbausteine/Anlage/0_HWtoVP/Basics/HWtoVP_Sensoren.awl @@ -0,0 +1,111 @@ +=== FB 190: HWtoVP_Sensoren [STL] === +INTERFACE: + Input: + Output: + InOut: + Static: + Stau_BG3730 : "MSensoren" // Stau am Sensor Einfahrt MA0201 + Stau_BG4202 : "MSensoren" // Stau am Sensor Einfahrt MA0261 + Stau_BG4204 : "MSensoren" // Stau am Sensor Einfahrt MA0262 + Stau_BG4206 : "MSensoren" // Stau am Sensor Einfahrt MA0263 + Stau_BG4210 : "MSensoren" // Stau am Sensor Weiche MB4210 + Stau_BG4211 : "MSensoren" // Stau am Sensor Weiche MB4210 + Stau_BG4213 : "MSensoren" // Stau am Sensor + Stau_BG4215 : "MSensoren" // Stau am Sensor Einfahrt MA140 + Stau_BG3144 : "MSensoren" // Stau am Sensor Einfahrt Schleuse3144 + Stau_BG3142 : "MSensoren" // Stau am Sensor Einfahrt Schleuse3142 + Stau_BG3130 : "MSensoren" // Stau am Sensor Einfahrt Schleuse3130 + Stau_BG3127 : "MSensoren" // Stau am Sensor Einfahrt Schleuse3127 + Stau_BG3132 : "MSensoren" // Stau am Sensor Einfahrt Schleuse3132 + Stau_BG3133 : "MSensoren" // Stau am Sensor Einfahrt Schleuse3132 + Stau_BG3135 : "MSensoren" // Stau am Sensor Einfahrt Schleuse3135 + Stau_BG4216 : "MSensoren" // Stau am Sensor Einfahrt MA140 + Stau_BG3724 : "MSensoren" // Stau am Sensor Einfahrt MA200 + Stau_BG4201 : "MSensoren" // Stau am Sensor hinter BST2 + Temp: + T_Ein : Int // Vorgabe Einschaltverzögerung + T_Aus : Int // Zwischenspeicher Ausschaltverzögerung + F1 : Bool // Geschwindigkeit 1 aktiviert + F2 : Bool // Geschwindigkeit 2 aktiviert + F3 : Bool // Geschwindigkeit 3 aktiviert + ESensor : Bool // Sensoren + Antrieb : Bool + VReal : Real // GeschwindigkeitinReal + Zeit : Int // Zeit für Ausschaltverzögerung LT1100 + Aktiv : Bool // Zeit aktivieren + Constant: + +--- NW 1: Sensoren entprellen --- +CALL FB "None" , (ESensor:="BG3730", T_Ein:=1, T_Aus:=11, tein_aktiv:=TRUE, taus_aktiv:=TRUE) + + +--- NW 2: Sensoren entprellen --- +CALL FB "None" , (ESensor:="BG4202", T_Ein:=1, T_Aus:=11, tein_aktiv:=TRUE, taus_aktiv:=TRUE) + + +--- NW 3: Sensoren entprellen --- +CALL FB "None" , (ESensor:="BG4204", T_Ein:=80, T_Aus:=11, tein_aktiv:=TRUE, taus_aktiv:=TRUE) + +--- NW 4: Sensoren entprellen --- +CALL FB "None" , (ESensor:="BG4206", T_Ein:=80, T_Aus:=11, tein_aktiv:=TRUE, taus_aktiv:=TRUE) + + +--- NW 5: Sensoren entprellen --- +CALL FB "None" , (ESensor:="BG4210", T_Ein:=80, T_Aus:=101, tein_aktiv:=TRUE, taus_aktiv:=TRUE) + + +--- NW 6: Sensoren entprellen --- +CALL FB "None" , (ESensor:="BG4211", T_Ein:=80, T_Aus:=11, tein_aktiv:=TRUE, taus_aktiv:=TRUE) + + +--- NW 7: Sensoren entprellen --- +CALL FB "None" , (ESensor:="BG4213", T_Ein:=80, T_Aus:=11, tein_aktiv:=TRUE, taus_aktiv:=TRUE) + + +--- NW 8: Sensoren entprellen --- +CALL FB "None" , (ESensor:="BG4215", T_Ein:=1, T_Aus:=11, tein_aktiv:=TRUE, taus_aktiv:=TRUE) + + +--- NW 9: Sensoren entprellen --- +CALL FB "None" , (ESensor:="BG3144", T_Ein:=80, T_Aus:=11, tein_aktiv:=TRUE, taus_aktiv:=TRUE) + + +--- NW 10: Sensoren entprellen --- +CALL FB "None" , (ESensor:="BG3142", T_Ein:=80, T_Aus:=11, tein_aktiv:=TRUE, taus_aktiv:=True) + + +--- NW 11: Sensoren entprellen --- +CALL FB "None" , (ESensor:="BG3130", T_Ein:=80, T_Aus:=11, tein_aktiv:=TRUE, taus_aktiv:=True) + + +--- NW 12: Sensoren entprellen --- +CALL FB "None" , (ESensor:="BG3127", T_Ein:=80, T_Aus:=11, tein_aktiv:=TRUE, taus_aktiv:=TRUE) + + +--- NW 13: Sensoren entprellen --- +CALL FB "None" , (ESensor:="BG3132", T_Ein:=1, T_Aus:=11, tein_aktiv:=TRUE, taus_aktiv:=TRUE) + + +--- NW 14: Sensoren entprellen --- +CALL FB "None" , (ESensor:="BG3133", T_Ein:=80, T_Aus:=11, tein_aktiv:=TRUE, taus_aktiv:=TRUE) + + +--- NW 15: Sensoren entprellen --- +CALL FB "None" , (ESensor:="BG3135", T_Ein:=80, T_Aus:=11, tein_aktiv:=TRUE, taus_aktiv:=TRUE) + + +--- NW 16: Sensoren entprellen --- +CALL FB "None" , (ESensor:="BG4216", T_Ein:=80, T_Aus:=11, tein_aktiv:=TRUE, taus_aktiv:=TRUE) + + +--- NW 17: Sensoren entprellen --- +CALL FB "None" , (ESensor:="BG3724", T_Ein:=80, T_Aus:=11, tein_aktiv:=TRUE, taus_aktiv:=TRUE) + + +--- NW 18: Sensoren entprellen --- +CALL FB "None" , (ESensor:="BG4201", T_Ein:=1, T_Aus:=30, tein_aktiv:=TRUE, taus_aktiv:=TRUE) + + +--- NW 19: Ende --- + BE + diff --git a/=A01+UH07-KF00/Programmbausteine/Anlage/0_HWtoVP/Basics/HWtoVP_Zylinder.awl b/=A01+UH07-KF00/Programmbausteine/Anlage/0_HWtoVP/Basics/HWtoVP_Zylinder.awl new file mode 100644 index 0000000..99c8962 --- /dev/null +++ b/=A01+UH07-KF00/Programmbausteine/Anlage/0_HWtoVP/Basics/HWtoVP_Zylinder.awl @@ -0,0 +1,117 @@ +=== FB 192: HWtoVP_Zylinder [STL] === +INTERFACE: + Input: + Output: + InOut: + Static: + Schleuse_3725 : "MZylinder" // + Schleuse_4200 : "MZylinder" + Schleuse_4207 : "MZylinder" + Schleuse_4212 : "MZylinder" + Schleuse_4214 : "MZylinder" + Schleuse_3143 : "MZylinder" // + Schleuse_3141 : "MZylinder" // + Weiche_3137 : "MZylinder" // + Weiche_3140 : "MZylinder" // + Schleuse_3131 : "MZylinder" // + Schleuse_3134 : "MZylinder" // + Schleuse_3136 : "MZylinder" // + Schleuse_4217 : "MZylinder" // + Temp: + Auto : Bool // Automatik ist aktiv + Hand : Bool // Hand ist aktiv + ZylAst : Bool // Zylinder ansteuern + Constant: + +--- NW 1: Übergabe des Bereichstatus System UC072/A01 --- + A "DOutbound_Bereich".A01_UH07.Automatik + AN "DOutbound_Bereich".A01_UH07.Handbetrieb + = Auto + + A( + A "DOutbound_Bereich".A01_UC072.BereichErr + O "DOutbound_Bereich".A01_UZ7201.Area_Stop + O "DOutbound_Bereich".A01_UZ7202.Area_Stop + ) + AN "SGes".Simulation_ohne_HW_aktiv + JC Next // Zylinder-Stellung nicht mehr ändern + + +--- NW 2: Schleuse_3725 --- +CALL FB "None" , (Automatik:=Auto, Handbetrieb:=FALSE, T_Ast:=0, T_Gst:=5, ZylAst:="MB3725", ZylGst:=?) + + +--- NW 3: Übergabe des Bereichstatus System UC073/A01 --- +Next: A "DOutbound_Bereich".A01_UH07.Automatik + AN "DOutbound_Bereich".A01_UH07.Handbetrieb + = Auto + + A "DOutbound_Bereich".A01_UC073.BereichErr + AN "SGes".Simulation_ohne_HW_aktiv + JC Next2 // Zylinder-Stellung nicht mehr ändern + + +--- NW 4: Schleuse_4200 --- +CALL FB "None" , (Automatik:=Auto, Handbetrieb:=FALSE, T_Ast:=0, T_Gst:=5, ZylAst:="MB4200", ZylGst:=?) + + +--- NW 5: Schleuse_4207 --- +CALL FB "None" , (Automatik:=Auto, Handbetrieb:=FALSE, T_Ast:=0, T_Gst:=5, ZylAst:="MB4207", ZylGst:=?) + + +--- NW 6: Schleuse_4212 --- +CALL FB "None" , (Automatik:=Auto, Handbetrieb:=FALSE, T_Ast:=0, T_Gst:=5, ZylAst:="MB4212", ZylGst:=?) + + +--- NW 7: Schleuse_4214 --- +CALL FB "None" , (Automatik:=Auto, Handbetrieb:=FALSE, T_Ast:=0, T_Gst:=5, ZylAst:="MB4214", ZylGst:=?) + + +--- NW 8: Übergabe des Bereichstatus System UC071/A01 --- +Next2: A "DOutbound_Bereich".A01_UH07.Automatik + AN "DOutbound_Bereich".A01_UH07.Handbetrieb + = Auto + + A( + O "DOutbound_Bereich".A01_UC071.BereichErr + O "DOutbound_Bereich".A01_UZ7102.Area_Stop + ) + AN "SGes".Simulation_ohne_HW_aktiv + JC Next3 // Zylinder-Stellung nicht mehr ändern + + +--- NW 9: Schleuse_3143 --- +CALL FB "None" , (Automatik:=Auto, Handbetrieb:=FALSE, T_Ast:=0, T_Gst:=5, ZylAst:="MB3143", ZylGst:=?) + + +--- NW 10: Schleuse_3141 --- +CALL FB "None" , (Automatik:=Auto, Handbetrieb:=FALSE, T_Ast:=0, T_Gst:=5, ZylAst:="MB3141", ZylGst:=?) + + +--- NW 11: Weiche_3137 --- +CALL FB "None" , (Automatik:=Auto, Handbetrieb:=FALSE, T_Ast:=0, T_Gst:=5, ZylAst:="MB3137", ZylGst:=?) + + +--- NW 12: Weiche_3140 --- +CALL FB "None" , (Automatik:=Auto, Handbetrieb:=FALSE, T_Ast:=0, T_Gst:=5, ZylAst:="MB3140", ZylGst:=?) + + +--- NW 13: Schleuse_3131 --- +CALL FB "None" , (Automatik:=Auto, Handbetrieb:=FALSE, T_Ast:=0, T_Gst:=5, ZylAst:="MB3131", ZylGst:=?) + + +--- NW 14: Schleuse_3134 --- +CALL FB "None" , (Automatik:=Auto, Handbetrieb:=FALSE, T_Ast:=0, T_Gst:=5, ZylAst:="MB3134", ZylGst:=?) + + +--- NW 15: Schleuse_3136 --- +CALL FB "None" , (Automatik:=Auto, Handbetrieb:=FALSE, T_Ast:=0, T_Gst:=5, ZylAst:="MB3136", ZylGst:=?) + + +--- NW 16: Schleuse_4217 --- +CALL FB "None" , (Automatik:=Auto, Handbetrieb:=FALSE, T_Ast:=0, T_Gst:=5, ZylAst:="MB4217", ZylGst:=?) + + +--- NW 17: Ende --- +Next3: BE + diff --git a/=A01+UH07-KF00/Programmbausteine/Anlage/0_HWtoVP/HWtoOB_Bereich.awl b/=A01+UH07-KF00/Programmbausteine/Anlage/0_HWtoVP/HWtoOB_Bereich.awl new file mode 100644 index 0000000..f23678e --- /dev/null +++ b/=A01+UH07-KF00/Programmbausteine/Anlage/0_HWtoVP/HWtoOB_Bereich.awl @@ -0,0 +1,23 @@ +=== FC 100: HWtoOB_Bereich [STL] === +INTERFACE: + Input: + Output: + InOut: + Temp: + Constant: + Return: + Ret_Val : Void + +--- NW 1: Baustein-Aufrufe --- +CALL FB "HWtoVP_Sensoren" , + +CALL FB "HWtoVP_OmniFahren" , + +CALL FB "HWtoVP_Zylinder" , + +CALL FB "HWtoVP_Antriebe" , + + +--- NW 2: Ende --- + BE + diff --git a/=A01+UH07-KF00/Programmbausteine/Anlage/0_HWtoVP/Omnifahren_HWtoVP/DHWtoVP_OmniFahren.awl b/=A01+UH07-KF00/Programmbausteine/Anlage/0_HWtoVP/Omnifahren_HWtoVP/DHWtoVP_OmniFahren.awl new file mode 100644 index 0000000..b37ac1f --- /dev/null +++ b/=A01+UH07-KF00/Programmbausteine/Anlage/0_HWtoVP/Omnifahren_HWtoVP/DHWtoVP_OmniFahren.awl @@ -0,0 +1,25 @@ +=== InstanceDB 128: DHWtoVP_OmniFahren [DB] === +INTERFACE: + Input: + Output: + InOut: + Static: + Schleuse_3725 : "MHMOmniSchleuse" + Bereich_3731 : "MHMOmniBereich_Plus" + Schleuse_4200 : "MHMOmniSchleuse" + Bereich_4203 : "MHMOmniBereich_Plus" + Schleuse_4207 : "MHMOmniSchleuse_Plus" + Schleuse_4212 : "MHMOmniSchleuse" + Schleuse_4214 : "MHMOmniSchleuse" + Bereich_3145 : "MHMOmniBereich_Plus" + Schleuse_3143 : "MHMOmniSchleuse_Plus" + Schleuse_3141 : "MHMOmniSchleuse_Plus" + Weiche_3140 : "MHMOmniWeiche_Plus" + Schleuse_3131 : "MHMOmniSchleuse" + Schleuse_3134 : "MHMOmniSchleuse" + Schleuse_3136 : "MHMOmniSchleuse_Plus" + Schleuse_4217 : "MHMOmniSchleuse_Plus" + Übergang_4205 : "MHMÜbergang_ohne_Schleuse" + Test_RFID : Struct + Flanke : Bool + Stop_Wegen_Test : Bool diff --git a/=A01+UH07-KF00/Programmbausteine/Anlage/0_HWtoVP/Omnifahren_HWtoVP/HWtoVP_Draussen.awl b/=A01+UH07-KF00/Programmbausteine/Anlage/0_HWtoVP/Omnifahren_HWtoVP/HWtoVP_Draussen.awl new file mode 100644 index 0000000..a55e173 --- /dev/null +++ b/=A01+UH07-KF00/Programmbausteine/Anlage/0_HWtoVP/Omnifahren_HWtoVP/HWtoVP_Draussen.awl @@ -0,0 +1,84 @@ +=== FC 182: HWtoVP_Draussen [STL] === +INTERFACE: + Input: + Output: + InOut: + Temp: + Error.Bit : Bool + Constant: + Return: + Ret_Val : Void + +--- NW 1: Rückmeldung --- + SET // Rückmeldungen erst mal resetten + R "M180.6" // Weiterfahrt von Ziel-FC erlaubt + + +--- NW 2: Schleuse 4207 (Vor ByPass vom LP): Ausgefahren ? --- + L "MW190" + L 4207 // Aufruf von Schleuse 4207? + <>I // Nein! + JC X4207E + + L "DLPtoHW_OmniFahren".Schleuse_4221.Dyn.Weichen_Ziel + L 16#4224 // Gerade ? Also zum AMR-Bereich? + ==I // Ja ! + BEC + +// Partner-Trolley will zu VP fahren: +// Bei Partner (Schleuse 4221) wieder mit Schritt 0 beginnen (erneuter Ziel-FC-Aufruf) + L 0 + T "DLPtoHW_OmniFahren".Schleuse_4221.Dyn.Sk.Akt_Schritt + +X4207E: NOP 0 + + +--- NW 3: Schleuse 3141: (Vor Einfahrt Kontrollplatz) --- + L "MW190" + L 3141 // Aufruf von Schleuse 3141 ? + <>I // Nein! + JC X3141E + +// Bei Partner (Schleuse 3136) wieder mit Schritt 0 beginnen (erneuter Ziel-FC-Aufruf) + L 0 + T "DHWtoVP_OmniFahren".Schleuse_3136.Dyn.Sk.Akt_Schritt + +// Leerer Trolley vom Leerpuffer? + L "MD182" // ShopGroup + L DINT#-1 // Leer-Trolley? + ==D // Ja ! + BEC // Kein Telegramm! + +// GOHDUM an Host senden: + L "DHWtoVP_OmniFahren".Schleuse_3141.Dyn.Weichen_Ziel + BTI + T "Daten_für_SendFIFO".Puffer_LinienNr + +CALL FB "Daten_in_SendFIFO_speichern" , (TelegrammKennung[1]:='G', TelegrammKennung[2]:='O', TelegrammKennung[3]:='H', TelegrammKennung[4]:='D', TelegrammKennung[5]:='U', TelegrammKennung[6]:='M', TelegrammKennung[7]:=?, TelegrammKennung[8]:=?, TelegrammKennung[9]:=?, TelegrammKennung[10]:=?, TrolleyID:="DHWtoVP_OmniFahren".Schleuse_3141.Dyn.TrolleyID_Schleuse, StationsNr:=3141, Puffer_LinienNr:=?, StoreGroup:=?, Status_1_Int:=?, Status_2_Bit[0]:=?, Status_2_Bit[1]:=?, Status_2_Bit[2]:=?, Status_2_Bit[3]:=?, Status_2_Bit[4]:=?, Status_2_Bit[5]:=?, Status_2_Bit[6]:=?, Status_2_Bit[7]:=?, Reserve[1]_Int:=?, Reserve[2]_Int:=?, Port:=2, Ret_Val_FIFO_IN:="MB199", Error:="Error.Bit") + +// Endziel wieder nullen: +CALL FC "Trolleydaten_ändern" (Gesamt_Trolley_DL:=1000, TrolleyID:="DHWtoVP_OmniFahren".Schleuse_3141.Dyn.TrolleyID_Schleuse, Endziel:=W#16#0, ShopGroup:=0) + + BEU + +X3141E: NOP 0 + + +--- NW 4: Schleuse 3136: (Vor Einfahrt Kontrollplatz) --- + L "MW190" + L 3136 // Aufruf von Schleuse 3136 ? + <>I // Nein! + JC X3136E + +// Bei Partner (Schleuse 3141) wieder mit Schritt 0 beginnen (erneuter Ziel-FC-Aufruf) + L 0 + T "DHWtoVP_OmniFahren".Schleuse_3141.Dyn.Sk.Akt_Schritt + + BEU + +X3136E: NOP 0 + + +--- NW 5: Ende --- + BE + diff --git a/=A01+UH07-KF00/Programmbausteine/Anlage/0_HWtoVP/Omnifahren_HWtoVP/HWtoVP_Leser_FC.awl b/=A01+UH07-KF00/Programmbausteine/Anlage/0_HWtoVP/Omnifahren_HWtoVP/HWtoVP_Leser_FC.awl new file mode 100644 index 0000000..9f5c9da --- /dev/null +++ b/=A01+UH07-KF00/Programmbausteine/Anlage/0_HWtoVP/Omnifahren_HWtoVP/HWtoVP_Leser_FC.awl @@ -0,0 +1,101 @@ +=== FC 180: HWtoVP_Leser_FC [STL] === +INTERFACE: + Input: + Output: + InOut: + Temp: + Zielebene : Word + Constant: + Return: + Ret_Val : Void + +--- NW 1: Rückmeldung --- +// Keine + L 0 // Evtl. Zwischenziel (MW196) + T "MW196" + + +--- NW 2: Schleuse 3143: (Anfrage KontrollPlatz) --- + L "MW190" // Schleusen-Nr. + L 3143 // Aufruf von Schleuse ? + <>I // Nein! + JC X3143E + + AN "M180.0" // Lesefehler + JC Y3143 + + BEU + +Y3143: AN "M180.1" // unbekannt in TrolleysDL + BEC + +// Daten in Datenbank erzeugen: + L "DHWtoVP_OmniFahren".Schleuse_3143.Dyn.TrolleyID_Schleuse + L DINT#0 // ID bekannt? + ==D // Nein + BEC + +CALL FC "Trolleydaten_neu_anlegen" (Gesamt_Trolley_DL:="DHWtoVP_OmniFahren".Schleuse_3143.Schleuse.Gesamt_Trolley_DL, TrolleyID:="DHWtoVP_OmniFahren".Schleuse_3143.Dyn.TrolleyID_Schleuse, Endziel:=16#B000, ShopGroup:=DINT#0) // Voll-Puffer-Bereich + + BEU + +X3143E: NOP 0 + + +--- NW 3: Schleuse 3141: (Vor Einfahrt KontrollPlatz) --- + L "MW190" // Schleusen-Nr. + L 3141 // Aufruf von Schleuse ? + <>I // Nein! + JC X3141E + + AN "M180.0" // Lesefehler + JC Y3141 + + BEU + +Y3141: AN "M180.1" // unbekannt in TrolleysDL + BEC + +// Daten in Datenbank erzeugen: + L "DHWtoVP_OmniFahren".Schleuse_3141.Dyn.TrolleyID_Schleuse + L DINT#0 // ID bekannt? + ==D // Nein + BEC + +CALL FC "Trolleydaten_neu_anlegen" (Gesamt_Trolley_DL:="DHWtoVP_OmniFahren".Schleuse_3141.Schleuse.Gesamt_Trolley_DL, TrolleyID:="DHWtoVP_OmniFahren".Schleuse_3141.Dyn.TrolleyID_Schleuse, Endziel:=16#B000, ShopGroup:=DINT#0) // Voll-Puffer-Bereich + + BEU + +X3141E: NOP 0 + + +--- NW 4: Schleuse 3134: (KontrollPlatz) --- + L "MW190" // Schleusen-Nr. + L 3134 // Aufruf von Schleuse ? + <>I // Nein! + JC X3134E + + AN "M180.0" // Lesefehler + JC Y3134 + + BEU + +Y3134: AN "M180.1" // unbekannt in TrolleysDL + BEC + +// Daten in Datenbank erzeugen: + L "DHWtoVP_OmniFahren".Schleuse_3134.Dyn.TrolleyID_Schleuse + L DINT#0 // ID bekannt? + ==D // Nein + BEC + +CALL FC "Trolleydaten_neu_anlegen" (Gesamt_Trolley_DL:="DHWtoVP_OmniFahren".Schleuse_3134.Schleuse.Gesamt_Trolley_DL, TrolleyID:="DHWtoVP_OmniFahren".Schleuse_3134.Dyn.TrolleyID_Schleuse, Endziel:=16#B000, ShopGroup:=DINT#0) // Voll-Puffer-Bereich + + BEU + +X3134E: NOP 0 + + +--- NW 5: Ende --- + BE + diff --git a/=A01+UH07-KF00/Programmbausteine/Anlage/0_HWtoVP/Omnifahren_HWtoVP/HWtoVP_OmniFahren.awl b/=A01+UH07-KF00/Programmbausteine/Anlage/0_HWtoVP/Omnifahren_HWtoVP/HWtoVP_OmniFahren.awl new file mode 100644 index 0000000..8b2dcb1 --- /dev/null +++ b/=A01+UH07-KF00/Programmbausteine/Anlage/0_HWtoVP/Omnifahren_HWtoVP/HWtoVP_OmniFahren.awl @@ -0,0 +1,385 @@ +=== FB 128: HWtoVP_OmniFahren [STL] === +INTERFACE: + Input: + Output: + InOut: + Static: + Schleuse_3725 : "MHMOmniSchleuse" + Bereich_3731 : "MHMOmniBereich_Plus" + Schleuse_4200 : "MHMOmniSchleuse" + Bereich_4203 : "MHMOmniBereich_Plus" + Schleuse_4207 : "MHMOmniSchleuse_Plus" + Schleuse_4212 : "MHMOmniSchleuse" + Schleuse_4214 : "MHMOmniSchleuse" + Bereich_3145 : "MHMOmniBereich_Plus" + Schleuse_3143 : "MHMOmniSchleuse_Plus" + Schleuse_3141 : "MHMOmniSchleuse_Plus" + Weiche_3140 : "MHMOmniWeiche_Plus" + Schleuse_3131 : "MHMOmniSchleuse" + Schleuse_3134 : "MHMOmniSchleuse" + Schleuse_3136 : "MHMOmniSchleuse_Plus" + Schleuse_4217 : "MHMOmniSchleuse_Plus" + Übergang_4205 : "MHMÜbergang_ohne_Schleuse" + Test_RFID : Struct + Flanke : Bool + Stop_Wegen_Test : Bool + Temp: + ErrQuit : Bool + ErrAnz : Bool + Stau_raus : Bool + Start_ok : Bool + B_aktiv : Bool + B_vor_Schleuse : Bool + B_nach_Schleuse : Bool + Antrieb_aktiv : Bool + Antrieb_vor : Bool + Antrieb_stop : Bool + Fahren_Ok : Bool + Antrieb_nicht_stoppen : Bool + Constant: + +--- NW 1: Systemzeug --- +// HW > VP-Bereich: + A "DOutbound_Bereich".A01_UH07.AnlageEin + = Schleuse_3725.Dyn.Sk.Auto_akt + = Bereich_3731.Dyn.Sk.Auto_akt + = Schleuse_4200.Dyn.Sk.Auto_akt + = Bereich_4203.Dyn.Sk.Auto_akt + = Schleuse_4217.Dyn.Sk.Auto_akt + = Schleuse_4207.Dyn.Sk.Auto_akt + = Schleuse_4212.Dyn.Sk.Auto_akt + = Schleuse_4214.Dyn.Sk.Auto_akt + = Bereich_3145.Dyn.Sk.Auto_akt + = Schleuse_3143.Dyn.Sk.Auto_akt + = Schleuse_3141.Dyn.Sk.Auto_akt + = Weiche_3140.Dyn.Status.Auto_akt + = Schleuse_3131.Dyn.Sk.Auto_akt + = Schleuse_3134.Dyn.Sk.Auto_akt + = Schleuse_3136.Dyn.Sk.Auto_akt + + AN "DOutbound_Bereich".A01_UC072.BereichErr + = Schleuse_3725.Dyn.Sk.Bereich_ok + = Bereich_3731.Dyn.Sk.Bereich_ok + AN "DOutbound_Bereich".A01_UC073.BereichErr + = Schleuse_4200.Dyn.Sk.Bereich_ok + = Bereich_4203.Dyn.Sk.Bereich_ok + = Schleuse_4217.Dyn.Sk.Bereich_ok + = Schleuse_4207.Dyn.Sk.Bereich_ok + = Schleuse_4212.Dyn.Sk.Bereich_ok + = Schleuse_4214.Dyn.Sk.Bereich_ok + AN "DOutbound_Bereich".A01_UC071.BereichErr + = Bereich_3145.Dyn.Sk.Bereich_ok + = Schleuse_3143.Dyn.Sk.Bereich_ok + = Schleuse_3141.Dyn.Sk.Bereich_ok + = Weiche_3140.Dyn.Status.Bereich_ok + = Schleuse_3131.Dyn.Sk.Bereich_ok + = Schleuse_3134.Dyn.Sk.Bereich_ok + = Schleuse_3136.Dyn.Sk.Bereich_ok + + +--- NW 2: Störungen quittieren UZ7202 --- + A "DOutbound_Bereich".A01_UZ7202.StOk_aktiv + O "DOutbound_Bereich".A01_UC072.StOk_aktiv + O "DOutbound_Bereich".A01_UH07.StOk_aktiv + = ErrQuit + + +--- NW 3: Schleuse 3725 (vor AFS) --- +// Schnittstelle von AMR: + A "DSchnittstelle_zu_AMR".From_UH06.MA0200_A_vor + S "DHWtoVP_Antriebe".MA0200.Stat.A_vor + + A "DSchnittstelle_zu_AMR".From_UH06.MA0200_A_start + S "DHWtoVP_Antriebe".MA0200.Stat.A_start + +// Schnittstelle zu AMR: + A Schleuse_3725.Dyn.Sk.Bereich_ok // Kein Sensor in UH06 verbaut! + A Schleuse_3725.Dyn.Sk.Auto_akt + AN "DHWtoVP_Sensoren".Stau_BG3724.Stat.B_Akt + = "DSchnittstelle_zu_AMR".To_UH06.MA0200_kein_Stau + + A "MA0200" + = "DSchnittstelle_zu_AMR".To_UH06.MA0200_aktiv + + A "BG3724" + = "DSchnittstelle_zu_AMR".To_UH06.BG3724_aktiv + +CALL FB "None" , (Schleusen_Nr:=3725, ErrQuit:=ErrQuit, B_VorSchleuse:="BG3724", B_InSchleuse:="BG3725", B_AusSchleuse:="BG3730", B_Stau_raus:="DHWtoVP_Sensoren".Stau_BG3730.Stat.B_Akt, Start_Ok:=1, Antrieb_Schleuse_aktiv:="MA0200", Antrieb_plus_aktiv:="MA0201", Schleuse_geöffnet:="MB3725", RestZeit_Bereich_plus:=Bereich_3731.Dyn.Restzeit, Y_Schleuse_Auf:="DHWtoVP_Zylinder".Schleuse_3725.Stat.Ast, Error:=DB708.DBW536, Antrieb_Schleuse_vor:="DHWtoVP_Antriebe".MA0200.Stat.A_vor, Antrieb_Schleuse_start:="DHWtoVP_Antriebe".MA0200.Stat.A_start, Antrieb_Schleuse_stop:="DHWtoVP_Antriebe".MA0200.Stat.Stop_vor, Antrieb_Schleuse_PS:="DHWtoVP_Antriebe".MA0200.Stat.A_PS, Antrieb_plus_vor:=Bereich_3731.Dyn.Status.Trolley_kommt_in_Bereich, Antrieb_plus_start:=?, hStOk:=ErrAnz) + + +--- NW 4: Bereich 3731 (vor BST 2) --- + AN "7_HMI_Err_UH07_OB".System.Gesamt_Feueralarm_Halle3 + AN "7_HMI_Err_UH07_OB".System.Gesamt_Feueralarm_Halle4 + AN "7_HMI_Err_UH07_OB".System.BST2_Feueralarm + AN "7_HMI_Err_UH07_OB".System.BST2_Geschlossen + AN "7_HMI_Err_UH07_OB".System."BST2_Störung" + A Schleuse_4200.Dyn.Sk.Bereich_ok + = Fahren_Ok + + A "BG3730" + A "MB3725" + = B_vor_Schleuse + + A "DHWtoVP_Sensoren".Stau_BG4201.Stat.B_Akt + = Stau_raus + +CALL FB "None" , (Bereichs_Nr:=3731, ErrQuit:=ErrQuit, B_BereichsAnfang:=B_vor_Schleuse, B_BereichsEnde:="BG3731", B_Zähl:="BG4201", B_Stau_raus:=Stau_raus, Start_Ok:=Fahren_Ok, Antrieb_Bereich_aktiv:="MA0201", Antrieb_plus_aktiv:="MA0260", RestZeit_Bereich_plus:=?, Antrieb_Bereich_vor:="DHWtoVP_Antriebe".MA0201.Stat.A_vor, Antrieb_Bereich_stop:="DHWtoVP_Antriebe".MA0201.Stat.Stop_vor, Error:=DB708.DBW458, Antrieb_Bereich_start:="DHWtoVP_Antriebe".MA0201.Stat.A_start, Antrieb_plus_vor:="DHWtoVP_Antriebe".MA0260.Stat.A_vor, Antrieb_plus_start:="DHWtoVP_Antriebe".MA0260.Stat.A_start, Antrieb_minus_vor:="DHWtoVP_Antriebe".MA0200.Stat.A_vor, hStOk:=ErrAnz) + + +--- NW 5: Störungen anzeigen UZ7202 --- + A ErrAnz + R ErrAnz + S "DOutbound_Bereich".A01_UZ7202.StOk_blinken + S "DOutbound_Bereich".A01_UC072.StOk_blinken + S "DOutbound_Bereich".A01_UH07.StOk_blinken + + +--- NW 6: Störungen quittieren UZ7202/7302 --- + A "DOutbound_Bereich".A01_UZ7202.StOk_aktiv + O "DOutbound_Bereich".A01_UZ7302.StOk_aktiv + O "DOutbound_Bereich".A01_UC073.StOk_aktiv + O "DOutbound_Bereich".A01_UH07.StOk_aktiv + = ErrQuit + + +--- NW 7: Schleuse 4200 (hinter BST 2) --- +CALL FB "None" , (Schleusen_Nr:=4200, ErrQuit:=ErrQuit, B_VorSchleuse:=?, B_InSchleuse:="BG4200", B_AusSchleuse:="BG4202", B_Stau_raus:="DHWtoVP_Sensoren".Stau_BG4202.Stat.B_Akt, Start_Ok:=1, Antrieb_Schleuse_aktiv:="MA0260", Antrieb_plus_aktiv:="MA0261", Schleuse_geöffnet:="MB4200", RestZeit_Bereich_plus:=Bereich_4203.Dyn.Restzeit, Y_Schleuse_Auf:="DHWtoVP_Zylinder".Schleuse_4200.Stat.Ast, Error:=DB708.DBW538, Antrieb_Schleuse_vor:="DHWtoVP_Antriebe".MA0260.Stat.A_vor, Antrieb_Schleuse_start:="DHWtoVP_Antriebe".MA0260.Stat.A_start, Antrieb_Schleuse_stop:="DHWtoVP_Antriebe".MA0260.Stat.Stop_vor, Antrieb_Schleuse_PS:="DHWtoVP_Antriebe".MA0260.Stat.A_PS, Antrieb_plus_vor:=Bereich_4203.Dyn.Status.Trolley_kommt_in_Bereich, Antrieb_plus_start:=?, hStOk:=ErrAnz) + + +--- NW 8: Bereich 4203 --- + A "BG4202" + A "MB4200" + = B_vor_Schleuse + + A "DHWtoVP_Sensoren".Stau_BG4204.Stat.B_Akt + O "DHWtoVP_Sensoren".Stau_BG4206.Stat.B_Akt + = Stau_raus + +CALL FB "None" , (Bereichs_Nr:=4203, ErrQuit:=ErrQuit, B_BereichsAnfang:=B_vor_Schleuse, B_BereichsEnde:="BG4203", B_Zähl:="BG4204", B_Stau_raus:=Stau_raus, Start_Ok:=1, Antrieb_Bereich_aktiv:="MA0261", Antrieb_plus_aktiv:="MA0262", RestZeit_Bereich_plus:=?, Antrieb_Bereich_vor:="DHWtoVP_Antriebe".MA0261.Stat.A_vor, Antrieb_Bereich_stop:="DHWtoVP_Antriebe".MA0261.Stat.Stop_vor, Error:=DB708.DBW464, Antrieb_Bereich_start:="DHWtoVP_Antriebe".MA0261.Stat.A_start, Antrieb_plus_vor:="DHWtoVP_Antriebe".MA0262.Stat.A_vor, Antrieb_plus_start:="DHWtoVP_Antriebe".MA0262.Stat.A_start, Antrieb_minus_vor:="DHWtoVP_Antriebe".MA0260.Stat.A_vor, hStOk:=ErrAnz) + + +--- NW 9: Störungen anzeigen UZ7202/7302 --- + A ErrAnz + R ErrAnz + S "DOutbound_Bereich".A01_UZ7202.StOk_blinken + S "DOutbound_Bereich".A01_UZ7302.StOk_blinken + S "DOutbound_Bereich".A01_UC073.StOk_blinken + S "DOutbound_Bereich".A01_UH07.StOk_blinken + + +--- NW 10: Störungen quittieren UZ7302/7303 --- + A "DOutbound_Bereich".A01_UZ7302.StOk_aktiv + O "DOutbound_Bereich".A01_UZ7303.StOk_aktiv + O "DOutbound_Bereich".A01_UC073.StOk_aktiv + O "DOutbound_Bereich".A01_UH07.StOk_aktiv + = ErrQuit + + +--- NW 11: MA0262 / Übergang 4205 --- +CALL FB "None" , (ErrQuit:=ErrQuit, B_Anfang:="BG4204", B_Am_Übergang:="BG4205", B_Stau_Antrieb_plus:="BG4206", Antrieb_aktiv:="MA0262", Antrieb_plus_aktiv:="MA0263", Antrieb_vor:="DHWtoVP_Antriebe".MA0262.Stat.A_vor, Antrieb_start:="DHWtoVP_Antriebe".MA0262.Stat.A_start, Antrieb_stop:="DHWtoVP_Antriebe".MA0262.Stat.A_PS, Antrieb_plus_vor:="DHWtoVP_Antriebe".MA0263.Stat.A_vor, Antrieb_plus_start:="DHWtoVP_Antriebe".MA0263.Stat.A_start) + + +--- NW 12: Schleuse 4217 (Vor RFID-Gate) --- + A( + O "DI0246" // Rückmeldung von RFID-Gate + O "DI0247" + ) +// / UN #Test_RFID.Stop_Wegen_Test + = Start_ok + +// Meldungen für RFID-Gate: + A "BG4217" + AN "MB4217" + AN Start_ok + = "7_HMI_Err_UH07_OB".RFID_Gate.Gate_nicht_bereit + + A "DI0247" + = "7_HMI_Err_UH07_OB".RFID_Gate.Gate_ByPAss + +CALL FB "None" , (Schleusen_Nr:=4217, ErrQuit:=ErrQuit, B_VorSchleuse:="BG4206", B_InSchleuse:="BG4217", B_Zähl:="BG4216", B_Stau_raus:="DHWtoVP_Sensoren".Stau_BG4216.Stat.B_Akt, Start_Ok:=Start_ok, Antrieb_Schleuse_aktiv:="MA0263", Antrieb_plus_aktiv:="MA0263", Schleuse_geöffnet:="MB4217", RestZeit_Bereich_plus:=?, Y_Schleuse_Auf:="DHWtoVP_Zylinder".Schleuse_4217.Stat.Ast, Error:=DB708.DBW580, Antrieb_Schleuse_vor:="DHWtoVP_Antriebe".MA0263.Stat.A_vor, Antrieb_Schleuse_start:="DHWtoVP_Antriebe".MA0263.Stat.A_start, Antrieb_Schleuse_stop:="DHWtoVP_Antriebe".MA0263.Stat.Stop_vor, Antrieb_Schleuse_PS:="DHWtoVP_Antriebe".MA0263.Stat.A_PS, Antrieb_plus_vor:=?, Antrieb_plus_start:=?, hStOk:=ErrAnz) // da schon oben verwendet | da schon oben verwendet + + A Schleuse_4217.Dyn.Sk.Bereich_ok + = "DQ0246" + A "MB4217" + = "DQ0247" + + +--- NW 13: Schleuse 4207 (Plus) --- + A "DHWtoVP_Sensoren".Stau_BG4210.Stat.B_Akt + O "DHWtoVP_Sensoren".Stau_BG4211.Stat.B_Akt + = Stau_raus + + AN "MB4223" // Weiche Einfahrt ByPass + AN "MB4210" + = Start_ok + +CALL FB "None" , (Schleusen_Nr:=4207, ErrQuit:=ErrQuit, B_VorSchleuse:="BG4216", B_InSchleuse:="BG4207", B_Zähl:="BG4211", B_Stau_raus:=Stau_raus, Start_Ok:=Start_ok, Antrieb_Schleuse_aktiv:="MA0263", Antrieb_plus_aktiv:="MA0264", Schleuse_geöffnet:="MB4207", RestZeit_Bereich_plus:=?, Y_Schleuse_Auf:="DHWtoVP_Zylinder".Schleuse_4207.Stat.Ast, Error:=DB708.DBW540, Antrieb_Schleuse_vor:="DHWtoVP_Antriebe".MA0263.Stat.A_vor, Antrieb_Schleuse_start:="DHWtoVP_Antriebe".MA0263.Stat.A_start, Antrieb_Schleuse_stop:="DHWtoVP_Antriebe".MA0263.Stat.Stop_vor, Antrieb_Schleuse_PS:="DHWtoVP_Antriebe".MA0263.Stat.A_PS, Antrieb_plus_vor:="DLPtoHW_Antriebe".MA0264.Stat.A_vor, Antrieb_plus_start:="DLPtoHW_Antriebe".MA0264.Stat.A_start, hStOk:=ErrAnz) + + A "MA0263" + A( + L Schleuse_4207.Dyn.Raus_Trolleys + L 0 + >I + O "BG4211" + ) + S "DLPtoHW_Antriebe".MA0264.Stat.A_vor + + +--- NW 14: Störungen anzeigen UZ7302/7303 --- + A ErrAnz + R ErrAnz + S "DOutbound_Bereich".A01_UZ7302.StOk_blinken + S "DOutbound_Bereich".A01_UZ7303.StOk_blinken + S "DOutbound_Bereich".A01_UC073.StOk_blinken + S "DOutbound_Bereich".A01_UH07.StOk_blinken + + +--- NW 15: Störungen quittieren UZ7303 --- + A "DOutbound_Bereich".A01_UZ7303.StOk_aktiv + O "DOutbound_Bereich".A01_UC073.StOk_aktiv + O "DOutbound_Bereich".A01_UH07.StOk_aktiv + = ErrQuit + + +--- NW 16: Schleuse 4212 --- +CALL FB "None" , (Schleusen_Nr:=4212, ErrQuit:=ErrQuit, B_VorSchleuse:="BG4211", B_InSchleuse:="BG4212", B_AusSchleuse:="BG4213", B_Stau_raus:="DHWtoVP_Sensoren".Stau_BG4213.Stat.B_Akt, Start_Ok:=1, Antrieb_Schleuse_aktiv:="MA0263", Antrieb_plus_aktiv:="MA0263", Schleuse_geöffnet:="MB4212", RestZeit_Bereich_plus:=?, Y_Schleuse_Auf:="DHWtoVP_Zylinder".Schleuse_4212.Stat.Ast, Error:=DB708.DBW542, Antrieb_Schleuse_vor:="DHWtoVP_Antriebe".MA0263.Stat.A_vor, Antrieb_Schleuse_start:="DHWtoVP_Antriebe".MA0263.Stat.A_start, Antrieb_Schleuse_stop:="DHWtoVP_Antriebe".MA0263.Stat.Stop_vor, Antrieb_Schleuse_PS:="DHWtoVP_Antriebe".MA0263.Stat.A_PS, Antrieb_plus_vor:=?, Antrieb_plus_start:=?, hStOk:=ErrAnz) // da schon oben verwendet | da schon oben verwendet + + +--- NW 17: Schleuse 4214 --- +CALL FB "None" , (Schleusen_Nr:=4214, ErrQuit:=ErrQuit, B_VorSchleuse:="BG4213", B_InSchleuse:="BG4214", B_AusSchleuse:="BG4215", B_Stau_raus:="DHWtoVP_Sensoren".Stau_BG4215.Stat.B_Akt, Start_Ok:=Bereich_3145.Dyn.Sk.Bereich_ok, Antrieb_Schleuse_aktiv:="MA0263", Antrieb_plus_aktiv:="MA0140", Schleuse_geöffnet:="MB4214", RestZeit_Bereich_plus:=Bereich_3145.Dyn.Restzeit, Y_Schleuse_Auf:="DHWtoVP_Zylinder".Schleuse_4214.Stat.Ast, Error:=DB708.DBW544, Antrieb_Schleuse_vor:="DHWtoVP_Antriebe".MA0263.Stat.A_vor, Antrieb_Schleuse_start:="DHWtoVP_Antriebe".MA0263.Stat.A_start, Antrieb_Schleuse_stop:="DHWtoVP_Antriebe".MA0263.Stat.Stop_vor, Antrieb_Schleuse_PS:="DHWtoVP_Antriebe".MA0263.Stat.A_PS, Antrieb_plus_vor:=Bereich_3145.Dyn.Status.Trolley_kommt_in_Bereich, Antrieb_plus_start:=?, hStOk:=ErrAnz) + + +--- NW 18: Störungen anzeigen UZ7303 --- + A ErrAnz + R ErrAnz + S "DOutbound_Bereich".A01_UZ7303.StOk_blinken + S "DOutbound_Bereich".A01_UC073.StOk_blinken + S "DOutbound_Bereich".A01_UH07.StOk_blinken + + +--- NW 19: Störungen quittieren UZ7303/7101 --- + A "DOutbound_Bereich".A01_UZ7303.StOk_aktiv + O "DOutbound_Bereich".A01_UZ7101.StOk_aktiv + O "DOutbound_Bereich".A01_UC073.StOk_aktiv + O "DOutbound_Bereich".A01_UC071.StOk_aktiv + O "DOutbound_Bereich".A01_UH07.StOk_aktiv + = ErrQuit + + +--- NW 20: Bereich 3145 --- + A "BG4215" + A "MB4214" + = B_vor_Schleuse + +CALL FB "None" , (Bereichs_Nr:=3145, ErrQuit:=ErrQuit, B_BereichsAnfang:=B_vor_Schleuse, B_BereichsEnde:="BG3145", B_Zähl:="BG3144", B_Stau_raus:="DHWtoVP_Sensoren".Stau_BG3144.Stat.B_Akt, Start_Ok:=1, Antrieb_Bereich_aktiv:="MA0140", Antrieb_plus_aktiv:="MA0141", RestZeit_Bereich_plus:=?, Antrieb_Bereich_vor:="DHWtoVP_Antriebe".MA0140.Stat.A_vor, Antrieb_Bereich_stop:="DHWtoVP_Antriebe".MA0140.Stat.Stop_vor, Error:=DB708.DBW450, Antrieb_Bereich_start:="DHWtoVP_Antriebe".MA0140.Stat.A_start, Antrieb_plus_vor:="DHWtoVP_Antriebe".MA0141.Stat.A_vor, Antrieb_plus_start:="DHWtoVP_Antriebe".MA0141.Stat.A_start, Antrieb_minus_vor:="DHWtoVP_Antriebe".MA0263.Stat.A_vor, hStOk:=ErrAnz) + + +--- NW 21: Störungen anzeigen UZ7303/7101 --- + A ErrAnz + R ErrAnz + S "DOutbound_Bereich".A01_UZ7303.StOk_blinken + S "DOutbound_Bereich".A01_UZ7101.StOk_blinken + S "DOutbound_Bereich".A01_UC073.StOk_blinken + S "DOutbound_Bereich".A01_UC071.StOk_blinken + S "DOutbound_Bereich".A01_UH07.StOk_blinken + + +--- NW 22: Störungen quittieren UZ7101/7102 --- + A "DOutbound_Bereich".A01_UZ7101.StOk_aktiv + O "DOutbound_Bereich".A01_UZ7102.StOk_aktiv + O "DOutbound_Bereich".A01_UC071.StOk_aktiv + O "DOutbound_Bereich".A01_UH07.StOk_aktiv + = ErrQuit + + +--- NW 23: Schleuse 3143 --- +CALL FB "None" , (Schleusen_Nr:=3143, ErrQuit:=ErrQuit, B_VorSchleuse:="BG3144", B_InSchleuse:="BG3143", B_Zähl:="BG3142", B_Stau_raus:="DHWtoVP_Sensoren".Stau_BG3142.Stat.B_Akt, Start_Ok:=1, Antrieb_Schleuse_aktiv:="MA0141", Antrieb_plus_aktiv:="MA0141", Schleuse_geöffnet:="MB3143", RestZeit_Bereich_plus:=?, Y_Schleuse_Auf:="DHWtoVP_Zylinder".Schleuse_3143.Stat.Ast, Error:=DB708.DBW514, Antrieb_Schleuse_vor:="DHWtoVP_Antriebe".MA0141.Stat.A_vor, Antrieb_Schleuse_start:="DHWtoVP_Antriebe".MA0141.Stat.A_start, Antrieb_Schleuse_stop:="DHWtoVP_Antriebe".MA0141.Stat.Stop_vor, Antrieb_Schleuse_PS:="DHWtoVP_Antriebe".MA0141.Stat.A_PS, Antrieb_plus_vor:=?, Antrieb_plus_start:=?, hStOk:=ErrAnz) + + +--- NW 24: Schleuse 3141 (vor Weiche zum KontrollPlatz) --- + AN "MB3136" // Andere Quelle aktiv + = Start_ok + +CALL FB "None" , (Schleusen_Nr:=3141, ErrQuit:=ErrQuit, B_VorSchleuse:="BG3142", B_InSchleuse:="BG3141", B_Zähl:=?, B_Stau_raus:=?, Start_Ok:=Start_ok, Antrieb_Schleuse_aktiv:="MA0141", Antrieb_plus_aktiv:="MA0141", Schleuse_geöffnet:="MB3141", RestZeit_Bereich_plus:=?, Y_Schleuse_Auf:="DHWtoVP_Zylinder".Schleuse_3141.Stat.Ast, Error:=DB708.DBW512, Antrieb_Schleuse_vor:="DHWtoVP_Antriebe".MA0141.Stat.A_vor, Antrieb_Schleuse_start:="DHWtoVP_Antriebe".MA0141.Stat.A_start, Antrieb_Schleuse_stop:="DHWtoVP_Antriebe".MA0141.Stat.Stop_vor, Antrieb_Schleuse_PS:="DHWtoVP_Antriebe".MA0141.Stat.A_PS, Antrieb_plus_vor:=?, Antrieb_plus_start:=?, hStOk:=ErrAnz) // über Weiche | über Ziel-FC | über Weiche | über Weiche + + A "MB3141" + R "DHWtoVP_Zylinder".Weiche_3137.Stat.Ast // Einfahrt-Weiche von Kontrollplatz + + +--- NW 25: Weiche 3140 (zum Kontrollplatz) --- + SET + R Antrieb_vor + R Antrieb_stop + + A "MA0141" + A "MA0143" + = Antrieb_aktiv + +CALL FB "None" , (Weichen_Nr:=3140, ErrQuit:=ErrQuit, Fahren_Ok:=1, B_Ziel_gerade:="BG3127", B_Ziel_abzweig:="BG3130", Antrieb_Weiche_aktiv:=Antrieb_aktiv, Antrieb_Gerade_aktiv:="MA0144", Antrieb_Abzweig_aktiv:="MA0142", Weiche_ist_AST:="MB3140", Y_Weiche_gerade:=?, Y_Weiche_abzweig:="DHWtoVP_Zylinder".Weiche_3140.Stat.Ast, Error:=DB708.DBW510, Antrieb_Weiche_vor:=Antrieb_vor, Antrieb_Weiche_stop:=Antrieb_stop, Antrieb_Weiche_gerade_vor:="DHWtoVP_Antriebe".MA0144.Stat.A_vor, Antrieb_Weiche_gerade_stop:="DHWtoVP_Antriebe".MA0144.Stat.Stop_vor, Antrieb_Weiche_abzweig_vor:="DHWtoVP_Antriebe".MA0142.Stat.A_vor, Antrieb_Weiche_abzweig_stop:="DHWtoVP_Antriebe".MA0142.Stat.Stop_vor, hStOk:=ErrAnz) + + A Antrieb_vor + S "DHWtoVP_Antriebe".MA0141.Stat.A_vor + S "DHWtoVP_Antriebe".MA0143.Stat.A_vor + A Antrieb_stop + S "DHWtoVP_Antriebe".MA0141.Stat.Stop_vor + S "DHWtoVP_Antriebe".MA0142.Stat.Stop_vor + + CLR // / + S "DHWtoVP_Antriebe".MA0141.Stat.Stop_vor + S "DHWtoVP_Antriebe".MA0142.Stat.Stop_vor + S "DHWtoVP_Antriebe".MA0144.Stat.Stop_vor + + +--- NW 26: Schleuse 3131(vor Kontrollplatz) --- + A "DHWtoVP_Sensoren".Stau_BG3132.Stat.B_Akt + O "DHWtoVP_Sensoren".Stau_BG3133.Stat.B_Akt + = Stau_raus + +CALL FB "None" , (Schleusen_Nr:=3131, ErrQuit:=ErrQuit, B_VorSchleuse:="BG3130", B_InSchleuse:="BG3131", B_AusSchleuse:="BG3132", B_Stau_raus:=Stau_raus, Start_Ok:=1, Antrieb_Schleuse_aktiv:="MA0142", Antrieb_plus_aktiv:="MA0142", Schleuse_geöffnet:="MB3131", RestZeit_Bereich_plus:=?, Y_Schleuse_Auf:="DHWtoVP_Zylinder".Schleuse_3131.Stat.Ast, Error:=DB708.DBW504, Antrieb_Schleuse_vor:="DHWtoVP_Antriebe".MA0142.Stat.A_vor, Antrieb_Schleuse_start:="DHWtoVP_Antriebe".MA0142.Stat.A_start, Antrieb_Schleuse_stop:="DHWtoVP_Antriebe".MA0142.Stat.Stop_vor, Antrieb_Schleuse_PS:="DHWtoVP_Antriebe".MA0142.Stat.A_PS, Antrieb_plus_vor:=?, Antrieb_plus_start:=?, hStOk:=ErrAnz) + + +--- NW 27: Schleuse 3134 (Kontrollplatz) --- + A "BG3133" + AN "BG3134" + O "BG3132" + = B_vor_Schleuse + +// Untere Anzeigen werden im Ziel-FC gesetzt: + L Schleuse_3134.Dyn.Sk.Akt_Schritt + L 12 + <>I + R "PF0136" // Trolley starten ok + +CALL FB "None" , (Schleusen_Nr:=3134, ErrQuit:=ErrQuit, B_VorSchleuse:=B_vor_Schleuse, B_InSchleuse:="BG3134", B_AusSchleuse:="BG3135", B_Stau_raus:="DHWtoVP_Sensoren".Stau_BG3135.Stat.B_Akt, Start_Ok:=1, Antrieb_Schleuse_aktiv:="MA0142", Antrieb_plus_aktiv:="MA0143", Schleuse_geöffnet:="MB3134", RestZeit_Bereich_plus:=?, Y_Schleuse_Auf:="DHWtoVP_Zylinder".Schleuse_3134.Stat.Ast, Error:=DB708.DBW506, Antrieb_Schleuse_vor:="DHWtoVP_Antriebe".MA0142.Stat.A_vor, Antrieb_Schleuse_start:="DHWtoVP_Antriebe".MA0142.Stat.A_start, Antrieb_Schleuse_stop:="DHWtoVP_Antriebe".MA0142.Stat.Stop_vor, Antrieb_Schleuse_PS:="DHWtoVP_Antriebe".MA0142.Stat.A_PS, Antrieb_plus_vor:="DHWtoVP_Antriebe".MA0143.Stat.A_vor, Antrieb_plus_start:="DHWtoVP_Antriebe".MA0143.Stat.A_start, hStOk:=ErrAnz) + + +--- NW 28: Schleuse 3136 (vor Weiche aus KontrollPlatz) --- +// Förderer nach Kontrollplatz einschalten: + A "BG3135" + A( + ON Schleuse_3136.Dyn.Error.Err_Stau_Einfahrt + ON "BG3136" + ) + S "DHWtoVP_Antriebe".MA0143.Stat.A_vor + + AN "MB3141" // Andere Quelle aktiv + = Start_ok + +CALL FB "None" , (Schleusen_Nr:=3136, ErrQuit:=ErrQuit, B_VorSchleuse:="BG3135", B_InSchleuse:="BG3136", B_Zähl:=?, B_Stau_raus:=?, Start_Ok:=Start_ok, Antrieb_Schleuse_aktiv:="MA0143", Antrieb_plus_aktiv:="MA0141", Schleuse_geöffnet:="MB3136", RestZeit_Bereich_plus:=?, Y_Schleuse_Auf:="DHWtoVP_Zylinder".Schleuse_3136.Stat.Ast, Error:=DB708.DBW508, Antrieb_Schleuse_vor:="DHWtoVP_Antriebe".MA0143.Stat.A_vor, Antrieb_Schleuse_start:="DHWtoVP_Antriebe".MA0143.Stat.A_start, Antrieb_Schleuse_stop:="DHWtoVP_Antriebe".MA0143.Stat.Stop_vor, Antrieb_Schleuse_PS:="DHWtoVP_Antriebe".MA0143.Stat.A_PS, Antrieb_plus_vor:=?, Antrieb_plus_start:=?, hStOk:=ErrAnz) // über Weiche | über Ziel-FC | über Weiche | über Weiche + + A "MB3136" + S "DHWtoVP_Zylinder".Weiche_3137.Stat.Ast // Einfahrt-Weiche von Kontrollplatz + + +--- NW 29: Störungen anzeigen UZ7101/7102 --- + A ErrAnz + R ErrAnz + S "DOutbound_Bereich".A01_UZ7101.StOk_blinken + S "DOutbound_Bereich".A01_UZ7102.StOk_blinken + S "DOutbound_Bereich".A01_UC071.StOk_blinken + S "DOutbound_Bereich".A01_UH07.StOk_blinken + + +--- NW 30: Ende --- + BE + diff --git a/=A01+UH07-KF00/Programmbausteine/Anlage/0_HWtoVP/Omnifahren_HWtoVP/HWtoVP_Ziel_FC.awl b/=A01+UH07-KF00/Programmbausteine/Anlage/0_HWtoVP/Omnifahren_HWtoVP/HWtoVP_Ziel_FC.awl new file mode 100644 index 0000000..7829d13 --- /dev/null +++ b/=A01+UH07-KF00/Programmbausteine/Anlage/0_HWtoVP/Omnifahren_HWtoVP/HWtoVP_Ziel_FC.awl @@ -0,0 +1,284 @@ +=== FC 181: HWtoVP_Ziel_FC [STL] === +INTERFACE: + Input: + Output: + InOut: + Temp: + Ziel_hex : Word + Ziel_int : Int + Zielebene : Word + Error : Byte + Position : Int + Lager_DB : Int + Lager_DW : Int + AR1Zeiger : DWord // Statt AR1 (ging nur bis DB-Länge <= 8191 Bytes) + AR1Start : DInt // Startwert mit Offset 0 + SSDW : Int + EndZiel : Word + Variante : Int + AbrufID : DInt + Fahrlisten_TrolleyID : DInt + Fahrlisten_AbrufID : DInt + Fahrlisten_Lager : Int + Trolley_unbekannt : Bool // Trolley ist nicht in DL + Express_Abruf : Bool + Error.Bit : Bool + Constant: + Return: + Ret_Val : Void + +--- NW 1: Rückmeldung --- + SET // Rückmeldungen erst mal resetten + R "M180.6" // Weiterfahrt von Ziel-FC erlaubt + + +--- NW 2: Schleuse 3731: (BST 2) --- + L "MW190" + L 3731 // Aufruf von Schleuse XXXX? + <>I // Nein! + JC X3731E + + SET + S "M180.6" // Weiterfahrt ist erlaubt + + BEU + +X3731E: NOP 0 + + +--- NW 3: Bereich 4203: Weiterfahren erlaubt ? (AFS von BST) --- + L "MW190" + L 4203 // Aufruf von Schleuse 4203 ? + <>I // Nein! + JC X4203E + + SET + S "M180.6" // Weiterfahrt ist erlaubt + + BEU + +X4203E: NOP 0 + + +--- NW 4: Schleuse 4207: (Vor BypPass von LP) --- + L "MW190" + L 4207 // Aufruf von Schleuse XXXX? + <>I // Nein! + JC X4207E + +// Quell-Steuerung: + L "DLPtoHW_OmniFahren".Weiche_4223.Dyn.Weichen_Ziel + L 16#4211 // Fahren Trolleys zu BG4211? + ==I // Ja! + O "MB4223" // Weiche ist auf Abzweig + O "DLPtoHW_OmniFahren".Weiche_4223.Dyn.Status.Reset_aktiv + BEC // Warten ! + +// Ziel-Check: + AN "MB4223" // Weiche Einfahrt ByPass + AN "MB4210" + AN "DHWtoVP_Sensoren".Stau_BG4210.Stat.B_Akt + AN "DHWtoVP_Sensoren".Stau_BG4211.Stat.B_Akt + S "M180.6" // Weiterfahrt ist erlaubt + + BEU + +X4207E: NOP 0 + + +--- NW 5: Bereich 3145: Weiterfahren erlaubt ? (AFS von 1.Ebene) --- + L "MW190" + L 3145 // Aufruf von Schleuse 3145 ? + <>I // Nein! + JC X3145E + + SET + S "M180.6" // Weiterfahrt ist erlaubt + + BEU + +X3145E: NOP 0 + + +--- NW 6: Schleuse 3143: (Anfrage KontrollPlatz) --- + L "MW190" + L 3143 // Aufruf von Schleuse XXXX? + <>I // Nein! + JC X3143E + + L "MD182" // ShopGroup + L DINT#-1 // Leer-Trolley? + ==D // Ja ! + S "M180.6" // Weiterfahrt ist erlaubt + BEC // Kein Telegramm! + + A "SGes".Ohne_PC_Fahren // Also ohne Anfrage + S "M180.6" // Weiterfahrt ist erlaubt + JC N3143 + +// GOHDReqM an Host senden: + A "DHWtoVP_OmniFahren".Schleuse_3143.Status2.Telegramm_gesendet + S "M180.6" // Weiterfahrt ist erlaubt + BEC + + L "DHWtoVP_OmniFahren".Schleuse_3143.Dyn.TrolleyID_Schleuse + L 0 // Barcode bekannt? + ==D // Nein! + BEC // Warten! + +CALL FB "Daten_in_SendFIFO_speichern" , (TelegrammKennung[1]:='G', TelegrammKennung[2]:='O', TelegrammKennung[3]:='H', TelegrammKennung[4]:='D', TelegrammKennung[5]:='R', TelegrammKennung[6]:='e', TelegrammKennung[7]:='q', TelegrammKennung[8]:='M', TelegrammKennung[9]:=?, TelegrammKennung[10]:=?, TrolleyID:="DHWtoVP_OmniFahren".Schleuse_3143.Dyn.TrolleyID_Schleuse, StationsNr:=3143, Puffer_LinienNr:=?, StoreGroup:=?, Status_1_Int:=?, Status_2_Bit[0]:=?, Status_2_Bit[1]:=?, Status_2_Bit[2]:=?, Status_2_Bit[3]:=?, Status_2_Bit[4]:=?, Status_2_Bit[5]:=?, Status_2_Bit[6]:=?, Status_2_Bit[7]:=?, Reserve[1]_Int:=?, Reserve[2]_Int:=?, Port:=2, Ret_Val_FIFO_IN:="MB199", Error:="Error.Bit") + + AN "Error.Bit" + S "DHWtoVP_OmniFahren".Schleuse_3143.Status2.Telegramm_gesendet + +// Trolleydaten neu anlegen: (Falls noch als Daten-Leiche vorhanden war) +N3143: CALL FC "Trolleydaten_neu_anlegen" (Gesamt_Trolley_DL:="DHWtoVP_OmniFahren".Schleuse_3143.Schleuse.Gesamt_Trolley_DL, TrolleyID:="DHWtoVP_OmniFahren".Schleuse_3143.Dyn.TrolleyID_Schleuse, Endziel:=16#0000, ShopGroup:=DINT#0) // Kein Ziel + + BEU + +X3143E: NOP 0 + + +--- NW 7: Schleuse 3141: (Vor Einfahrt Kontrollplatz) --- + L "MW190" + L 3141 // Aufruf von Schleuse XXXX? + <>I // Nein! + JC X3141E + +// Quell-Steuerung: + L "DHWtoVP_OmniFahren".Schleuse_3136.Dyn.Raus_Trolleys + L 0 + >I // Weiche von 2.Quelle schon belegt + O "MB3136" // Andere Quelle aktiv + BEC + +// Leerer Trolley vom Leerpuffer? + L "MD182" // ShopGroup + L DINT#-1 // Leer-Trolley? + ==D // Ja ! + O "SGes".Ohne_PC_Fahren // Also Ziel simulieren + JC G3141 // Kein Telegramm! + +// Telegramm schon gesendet? + L "MW194" // Endziel + L 16#3130 // sinnvoll? + <>I // Nein! (nochmalige Anfrage) + A( + CAC + L 16#3127 // sinnvoll? + <>I // Nein! (nochmalige Anfrage) + ) + AN "DHWtoVP_OmniFahren".Schleuse_3141.Status2.Telegramm_gesendet + JC T3141 + +// Ziel-Check: + L "MW194" // EndZiel (wurde über Host-Telegramm in Datenbank eingetragen) + L 16#3130 // Kontroll-Platz? + ==I // Ja ! + JC A3141 // Abzweig fahren + + CAC + L 16#3127 // Zum VP? + ==I // Ja ! + JC G3141 + + A "10s-Impuls" // Nach 10s + R "DHWtoVP_OmniFahren".Schleuse_3141.Status2.Telegramm_gesendet // Erneute Anfrage + + BEU + +A3141: L 16#3130 + T "MW198" // Weichenziel + + AN "DHWtoVP_Sensoren".Stau_BG3130.Stat.B_Akt + S "M180.6" // Weiterfahrt ist erlaubt + + BEU + +G3141: L 16#3127 + T "MW198" // Weichenziel + + AN "DHWtoVP_Sensoren".Stau_BG3127.Stat.B_Akt + S "M180.6" // Weiterfahrt ist erlaubt + + BEU + +// GOHDReqM an Host senden: +T3141: L "DHWtoVP_OmniFahren".Schleuse_3141.Dyn.TrolleyID_Schleuse + L 0 // Barcode bekannt? + ==D // Nein! + BEC // Warten! + +CALL FB "Daten_in_SendFIFO_speichern" , (TelegrammKennung[1]:='G', TelegrammKennung[2]:='O', TelegrammKennung[3]:='H', TelegrammKennung[4]:='D', TelegrammKennung[5]:='R', TelegrammKennung[6]:='e', TelegrammKennung[7]:='q', TelegrammKennung[8]:='M', TelegrammKennung[9]:=?, TelegrammKennung[10]:=?, TrolleyID:="DHWtoVP_OmniFahren".Schleuse_3141.Dyn.TrolleyID_Schleuse, StationsNr:=3143, Puffer_LinienNr:=?, StoreGroup:=?, Status_1_Int:=?, Status_2_Bit[0]:=?, Status_2_Bit[1]:=?, Status_2_Bit[2]:=?, Status_2_Bit[3]:=?, Status_2_Bit[4]:=?, Status_2_Bit[5]:=?, Status_2_Bit[6]:=?, Status_2_Bit[7]:=?, Reserve[1]_Int:=?, Reserve[2]_Int:=?, Port:=2, Ret_Val_FIFO_IN:="MB199", Error:="Error.Bit") // 3141 + + AN "Error.Bit" + S "DHWtoVP_OmniFahren".Schleuse_3141.Status2.Telegramm_gesendet + + BEU + +X3141E: NOP 0 + + +--- NW 8: Schleuse 3134: (Kontrollplatz) --- + L "MW190" + L 3134 // Aufruf von Schleuse XXXX? + <>I // Nein! + JC X3134E + +// Trolley kann gestartet werden: (Vorerst immer) + A "BG3134" // Trolley ist in Schleuse + A "Clock_2Hz" + = "PF0136" + +// Ausfahren mit Taste: + A "SF0136" + S "M180.6" // Weiterfahrt ist erlaubt + + BEU + +X3134E: NOP 0 + + +--- NW 9: Schleuse 3136: (Vor Ausfahrt Kontrollplatz) --- + L "MW190" + L 3136 // Aufruf von Schleuse XXXX? + <>I // Nein! + JC X3136E + +// Quell-Steuerung: + L "DHWtoVP_OmniFahren".Schleuse_3141.Dyn.Raus_Trolleys + L 0 + >I // Weiche von 2.Quelle schon belegt + O "MB3141" // Andere Quelle aktiv + BEC + +// Ziel-Check: + L EndZiel + L 16#BAAA // Kontroll-Platz? + ==I // Ja ! + JC A3136 // Abzweig fahren + + JU G3136 + +A3136: L 16#3130 + T "MW198" // Weichenziel + + AN "DHWtoVP_Sensoren".Stau_BG3130.Stat.B_Akt + S "M180.6" // Weiterfahrt ist erlaubt + + BEU + +G3136: L 16#3127 + T "MW198" // Weichenziel + + AN "DHWtoVP_Sensoren".Stau_BG3127.Stat.B_Akt + S "M180.6" // Weiterfahrt ist erlaubt + + BEU + +X3136E: NOP 0 + + +--- NW 10: Ende --- + BE + diff --git a/=A01+UH07-KF00/Programmbausteine/Anlage/1_Vollpuffer/Basics/DVP_Antriebe.awl b/=A01+UH07-KF00/Programmbausteine/Anlage/1_Vollpuffer/Basics/DVP_Antriebe.awl new file mode 100644 index 0000000..2c0b53e --- /dev/null +++ b/=A01+UH07-KF00/Programmbausteine/Anlage/1_Vollpuffer/Basics/DVP_Antriebe.awl @@ -0,0 +1,11 @@ +=== InstanceDB 1199: DVP_Antriebe [DB] === +INTERFACE: + Input: + Output: + InOut: + Static: + MA0145 : "MAntrieb_PowerSave" + MA0146 : "MAntrieb_PowerSave" + MA0147 : "MAntrieb_PowerSave" + MA0150 : "MAntrieb_PowerSave" + MA0152 : "MAntrieb_PowerSave" diff --git a/=A01+UH07-KF00/Programmbausteine/Anlage/1_Vollpuffer/Basics/DVP_Sensoren.awl b/=A01+UH07-KF00/Programmbausteine/Anlage/1_Vollpuffer/Basics/DVP_Sensoren.awl new file mode 100644 index 0000000..b875e3d --- /dev/null +++ b/=A01+UH07-KF00/Programmbausteine/Anlage/1_Vollpuffer/Basics/DVP_Sensoren.awl @@ -0,0 +1,76 @@ +=== InstanceDB 1190: DVP_Sensoren [DB] === +INTERFACE: + Input: + Output: + InOut: + Static: + Stau_VP1 : "MSensoren" + Stau_VP2 : "MSensoren" + Stau_VP3 : "MSensoren" + Stau_VP4 : "MSensoren" + Stau_VP5 : "MSensoren" + Stau_VP6 : "MSensoren" + Stau_VP7 : "MSensoren" + Stau_VP8 : "MSensoren" + Stau_VP9 : "MSensoren" + Stau_VP10 : "MSensoren" + Stau_VP11 : "MSensoren" + Stau_VP12 : "MSensoren" + Stau_VP13 : "MSensoren" + Stau_VP14 : "MSensoren" + Stau_VP15 : "MSensoren" + Stau_VP16 : "MSensoren" + Stau_VP17 : "MSensoren" + Stau_VP18 : "MSensoren" + Stau_VP19 : "MSensoren" + Stau_VP20 : "MSensoren" + Stau_VP21 : "MSensoren" + Stau_VP22 : "MSensoren" + Stau_VP23 : "MSensoren" + Stau_VP24 : "MSensoren" + Stau_VP25 : "MSensoren" + Stau_VP26 : "MSensoren" + Stau_VP27 : "MSensoren" + Stau_VP28 : "MSensoren" + Stau_VP29 : "MSensoren" + Stau_VP30 : "MSensoren" + Stau_VP31 : "MSensoren" + Stau_VP32 : "MSensoren" + Stau_VP33 : "MSensoren" + Stau_VP34 : "MSensoren" + Stau_VP35 : "MSensoren" + Stau_VP36 : "MSensoren" + Stau_VP37 : "MSensoren" + Stau_VP38 : "MSensoren" + Stau_VP39 : "MSensoren" + Stau_VP40 : "MSensoren" + Stau_VP41 : "MSensoren" + Stau_VP42 : "MSensoren" + Stau_VP43 : "MSensoren" + Stau_VP44 : "MSensoren" + Stau_VP45 : "MSensoren" + Stau_VP46 : "MSensoren" + Stau_VP47 : "MSensoren" + Stau_VP48 : "MSensoren" + Stau_VP49 : "MSensoren" + Stau_VP50 : "MSensoren" + Stau_VP51 : "MSensoren" + Stau_BG3062 : "MSensoren" + Stau_BG3061 : "MSensoren" + Stau_BG3060 : "MSensoren" + Stau_BG3003 : "MSensoren" + Stau_BG3002 : "MSensoren" + Stau_BG3001 : "MSensoren" + Stau_BG3420 : "MSensoren" + Stau_BG3481 : "MSensoren" + Stau_BG3181 : "MSensoren" + Stau_BG3182 : "MSensoren" + Stau_BG3183 : "MSensoren" + Stau_BG3184 : "MSensoren" + Stau_BG3240 : "MSensoren" + Stau_BG3241 : "MSensoren" + Stau_BG3242 : "MSensoren" + Stau_BG3243 : "MSensoren" + Stau_BG3246 : "MSensoren" + An_BG3120 : "MSensoren" + An_BG3003 : "MSensoren" diff --git a/=A01+UH07-KF00/Programmbausteine/Anlage/1_Vollpuffer/Basics/DVP_Zylinder.awl b/=A01+UH07-KF00/Programmbausteine/Anlage/1_Vollpuffer/Basics/DVP_Zylinder.awl new file mode 100644 index 0000000..f9a552f --- /dev/null +++ b/=A01+UH07-KF00/Programmbausteine/Anlage/1_Vollpuffer/Basics/DVP_Zylinder.awl @@ -0,0 +1,164 @@ +=== InstanceDB 1192: DVP_Zylinder [DB] === +INTERFACE: + Input: + Output: + InOut: + Static: + Sorter_3121 : "MZylinder" + Sorter_3123 : "MZylinder" + Weiche_3120 : "MZylinder" + Schleuse_3244 : "MZylinder" + Weiche_3245 : "MZylinder" + Weiche_VP1 : "MZylinder" + Weiche_VP2 : "MZylinder" + Weiche_VP3 : "MZylinder" + Weiche_VP4 : "MZylinder" + Weiche_VP5 : "MZylinder" + Weiche_VP6 : "MZylinder" + Weiche_VP7 : "MZylinder" + Weiche_VP8 : "MZylinder" + Weiche_VP9 : "MZylinder" + Weiche_VP10 : "MZylinder" + Weiche_VP11 : "MZylinder" + Weiche_VP12 : "MZylinder" + Weiche_VP13 : "MZylinder" + Weiche_VP14 : "MZylinder" + Weiche_VP15 : "MZylinder" + Weiche_VP16 : "MZylinder" + Weiche_VP17 : "MZylinder" + Weiche_VP18 : "MZylinder" + Weiche_VP19 : "MZylinder" + Weiche_VP20 : "MZylinder" + Weiche_VP21 : "MZylinder" + Weiche_VP22 : "MZylinder" + Weiche_VP23 : "MZylinder" + Weiche_VP24 : "MZylinder" + Weiche_VP25 : "MZylinder" + Weiche_VP26 : "MZylinder" + Weiche_VP27 : "MZylinder" + Weiche_VP28 : "MZylinder" + Weiche_VP29 : "MZylinder" + Weiche_VP30 : "MZylinder" + Weiche_VP31 : "MZylinder" + Weiche_VP32 : "MZylinder" + Weiche_VP33 : "MZylinder" + Weiche_VP34 : "MZylinder" + Weiche_VP35 : "MZylinder" + Weiche_VP36 : "MZylinder" + Weiche_VP37 : "MZylinder" + Weiche_VP38 : "MZylinder" + Weiche_VP39 : "MZylinder" + Weiche_VP40 : "MZylinder" + Weiche_VP41 : "MZylinder" + Weiche_VP42 : "MZylinder" + Weiche_VP43 : "MZylinder" + Weiche_VP44 : "MZylinder" + Weiche_VP45 : "MZylinder" + Weiche_VP46 : "MZylinder" + Weiche_VP47 : "MZylinder" + Weiche_VP48 : "MZylinder" + Weiche_VP49 : "MZylinder" + Weiche_VP50 : "MZylinder" + Weiche_VP51 : "MZylinder" + Schleuse_Mitte_VP1 : "MZylinder" + Schleuse_Mitte_VP2 : "MZylinder" + Schleuse_Mitte_VP3 : "MZylinder" + Schleuse_Mitte_VP4 : "MZylinder" + Schleuse_Mitte_VP5 : "MZylinder" + Schleuse_Mitte_VP6 : "MZylinder" + Schleuse_Mitte_VP7 : "MZylinder" + Schleuse_Mitte_VP8 : "MZylinder" + Schleuse_Mitte_VP9 : "MZylinder" + Schleuse_Mitte_VP10 : "MZylinder" + Schleuse_Mitte_VP11 : "MZylinder" + Schleuse_Mitte_VP12 : "MZylinder" + Schleuse_Mitte_VP13 : "MZylinder" + Schleuse_Mitte_VP14 : "MZylinder" + Schleuse_Mitte_VP15 : "MZylinder" + Schleuse_Mitte_VP16 : "MZylinder" + Schleuse_Mitte_VP17 : "MZylinder" + Schleuse_Mitte_VP18 : "MZylinder" + Schleuse_Mitte_VP19 : "MZylinder" + Schleuse_Mitte_VP20 : "MZylinder" + Schleuse_Mitte_VP21 : "MZylinder" + Schleuse_Mitte_VP22 : "MZylinder" + Schleuse_Mitte_VP23 : "MZylinder" + Schleuse_Mitte_VP24 : "MZylinder" + Schleuse_Mitte_VP25 : "MZylinder" + Schleuse_Mitte_VP26 : "MZylinder" + Schleuse_Mitte_VP27 : "MZylinder" + Schleuse_Mitte_VP28 : "MZylinder" + Schleuse_Mitte_VP29 : "MZylinder" + Schleuse_Mitte_VP30 : "MZylinder" + Schleuse_Mitte_VP31 : "MZylinder" + Schleuse_Mitte_VP32 : "MZylinder" + Schleuse_Mitte_VP33 : "MZylinder" + Schleuse_Mitte_VP34 : "MZylinder" + Schleuse_Mitte_VP35 : "MZylinder" + Schleuse_Mitte_VP36 : "MZylinder" + Schleuse_Mitte_VP37 : "MZylinder" + Schleuse_Mitte_VP38 : "MZylinder" + Schleuse_Mitte_VP39 : "MZylinder" + Schleuse_Mitte_VP40 : "MZylinder" + Schleuse_Mitte_VP41 : "MZylinder" + Schleuse_Mitte_VP42 : "MZylinder" + Schleuse_Mitte_VP43 : "MZylinder" + Schleuse_Mitte_VP44 : "MZylinder" + Schleuse_Mitte_VP45 : "MZylinder" + Schleuse_Mitte_VP46 : "MZylinder" + Schleuse_Mitte_VP47 : "MZylinder" + Schleuse_Mitte_VP48 : "MZylinder" + Schleuse_Mitte_VP49 : "MZylinder" + Schleuse_Mitte_VP50 : "MZylinder" + Schleuse_Mitte_VP51 : "MZylinder" + Schleuse_Ausfahrt_VP1 : "MZylinder" + Schleuse_Ausfahrt_VP2 : "MZylinder" + Schleuse_Ausfahrt_VP3 : "MZylinder" + Schleuse_Ausfahrt_VP4 : "MZylinder" + Schleuse_Ausfahrt_VP5 : "MZylinder" + Schleuse_Ausfahrt_VP6 : "MZylinder" + Schleuse_Ausfahrt_VP7 : "MZylinder" + Schleuse_Ausfahrt_VP8 : "MZylinder" + Schleuse_Ausfahrt_VP9 : "MZylinder" + Schleuse_Ausfahrt_VP10 : "MZylinder" + Schleuse_Ausfahrt_VP11 : "MZylinder" + Schleuse_Ausfahrt_VP12 : "MZylinder" + Schleuse_Ausfahrt_VP13 : "MZylinder" + Schleuse_Ausfahrt_VP14 : "MZylinder" + Schleuse_Ausfahrt_VP15 : "MZylinder" + Schleuse_Ausfahrt_VP16 : "MZylinder" + Schleuse_Ausfahrt_VP17 : "MZylinder" + Schleuse_Ausfahrt_VP18 : "MZylinder" + Schleuse_Ausfahrt_VP19 : "MZylinder" + Schleuse_Ausfahrt_VP20 : "MZylinder" + Schleuse_Ausfahrt_VP21 : "MZylinder" + Schleuse_Ausfahrt_VP22 : "MZylinder" + Schleuse_Ausfahrt_VP23 : "MZylinder" + Schleuse_Ausfahrt_VP24 : "MZylinder" + Schleuse_Ausfahrt_VP25 : "MZylinder" + Schleuse_Ausfahrt_VP26 : "MZylinder" + Schleuse_Ausfahrt_VP27 : "MZylinder" + Schleuse_Ausfahrt_VP28 : "MZylinder" + Schleuse_Ausfahrt_VP29 : "MZylinder" + Schleuse_Ausfahrt_VP30 : "MZylinder" + Schleuse_Ausfahrt_VP31 : "MZylinder" + Schleuse_Ausfahrt_VP32 : "MZylinder" + Schleuse_Ausfahrt_VP33 : "MZylinder" + Schleuse_Ausfahrt_VP34 : "MZylinder" + Schleuse_Ausfahrt_VP35 : "MZylinder" + Schleuse_Ausfahrt_VP36 : "MZylinder" + Schleuse_Ausfahrt_VP37 : "MZylinder" + Schleuse_Ausfahrt_VP38 : "MZylinder" + Schleuse_Ausfahrt_VP39 : "MZylinder" + Schleuse_Ausfahrt_VP40 : "MZylinder" + Schleuse_Ausfahrt_VP41 : "MZylinder" + Schleuse_Ausfahrt_VP42 : "MZylinder" + Schleuse_Ausfahrt_VP43 : "MZylinder" + Schleuse_Ausfahrt_VP44 : "MZylinder" + Schleuse_Ausfahrt_VP45 : "MZylinder" + Schleuse_Ausfahrt_VP46 : "MZylinder" + Schleuse_Ausfahrt_VP47 : "MZylinder" + Schleuse_Ausfahrt_VP48 : "MZylinder" + Schleuse_Ausfahrt_VP49 : "MZylinder" + Schleuse_Ausfahrt_VP50 : "MZylinder" + Schleuse_Ausfahrt_VP51 : "MZylinder" diff --git a/=A01+UH07-KF00/Programmbausteine/Anlage/1_Vollpuffer/Basics/VP_Antriebe.awl b/=A01+UH07-KF00/Programmbausteine/Anlage/1_Vollpuffer/Basics/VP_Antriebe.awl new file mode 100644 index 0000000..39d5dd4 --- /dev/null +++ b/=A01+UH07-KF00/Programmbausteine/Anlage/1_Vollpuffer/Basics/VP_Antriebe.awl @@ -0,0 +1,103 @@ +=== FB 1199: VP_Antriebe [STL] === +INTERFACE: + Input: + Output: + InOut: + Static: + MA0145 : "MAntrieb_PowerSave" + MA0146 : "MAntrieb_PowerSave" + MA0147 : "MAntrieb_PowerSave" + MA0150 : "MAntrieb_PowerSave" + MA0152 : "MAntrieb_PowerSave" + Temp: + Auto : Bool // Automatik Linie ist aktiv + Hand : Bool // Hand Linie ist aktiv + BereichErr : Bool // Bereichsstörung -> Antrieb stoppen + QKontroll : Bool // Frequenzumrichter schon 3s Netz EIN + FuKontroll : Bool // Frequenzumrichter schon 3s Netz EIN + Quit : Bool // Motorschutz-Störung quittieren + Qok : Bool // Motorschutz ok + Jog1 : Bool // Geschwindigkeit 1 + Jog2 : Bool // Geschwindigkeit 2 + Betrieb : Bool // Betriebsart aktiv + FC105_RET : Word // Returnwert von FC105 + Antrieb1 : Bool // Antrieb dazuschalten + Antrieb2 : Bool // Antrieb dazuschalten + F1 : Bool // Geschwindigkeit 1 aktiviert + F2 : Bool // Geschwindigkeit 2 aktiviert + F3 : Bool // Geschwindigkeit 3 aktiviert + BereichErr_Zusatz_7102 : Bool // Bereichsstörung -> Antrieb stoppen + BereichErr_Zusatz_7104 : Bool // Bereichsstörung -> Antrieb stoppen + BereichErr_Zusatz_7102_7104 : Bool // Bereichsstörung -> Antrieb stoppen + Constant: + +--- NW 1: Übergabe des Bereichstatus System UC071/A01 --- + A "DOutbound_Bereich".A01_UH07.Automatik + AN "DOutbound_Bereich".A01_UH07.Handbetrieb + = Auto + + CLR + = Hand + + A "DOutbound_Bereich".A01_UC071.BereichErr + = BereichErr + +// Bereichhalte: + A( + O BereichErr + O "DOutbound_Bereich".A01_UZ7102.Area_Stop + ) + AN "SGes".Simulation_ohne_HW_aktiv + = BereichErr_Zusatz_7102 + + A( + O BereichErr + O "DOutbound_Bereich".A01_UZ7104.Area_Stop + ) + AN "SGes".Simulation_ohne_HW_aktiv + = BereichErr_Zusatz_7104 + + A( + O BereichErr + O BereichErr_Zusatz_7102 + O BereichErr_Zusatz_7104 + ) + AN "SGes".Simulation_ohne_HW_aktiv + = BereichErr_Zusatz_7102_7104 + + A "T191" + = QKontroll + = FuKontroll + + A "DOutbound_Bereich".A01_UC071.StOk_aktiv + = Quit + + +--- NW 2: MA0145 --- +CALL FB "None" , (Automatik:=Auto, Handbetrieb:=Hand, BereichErr:=BereichErr_Zusatz_7102, Q:="FC0145", Ptc:=TRUE, Fu:=?, QKontroll:=QKontroll, FuKontroll:=?, ErrQuit:=Quit, Kontroll_B:=?, T_Nachlauf:=?, Antriebrueck:=?, Antriebvor:="MA0145", Jog1:=?, Jog2:=?, Analog:=?, QErr:="7_HMI_Err_UH07_OB".QErr.MA0145, PtcErr:=?, FuErr:=?, Err_Antrieb_verklemmt:=?) + + + +--- NW 3: MA0146 --- +CALL FB "None" , (Automatik:=Auto, Handbetrieb:=Hand, BereichErr:=BereichErr_Zusatz_7102, Q:="FC0146", Ptc:=TRUE, Fu:=?, QKontroll:=QKontroll, FuKontroll:=?, ErrQuit:=Quit, Kontroll_B:=?, T_Nachlauf:=?, Antriebrueck:=?, Antriebvor:="MA0146", Jog1:=?, Jog2:=?, Analog:=?, QErr:="7_HMI_Err_UH07_OB".QErr.MA0146, PtcErr:=?, FuErr:=?, Err_Antrieb_verklemmt:=?) + + + +--- NW 4: MA0147 --- +CALL FB "None" , (Automatik:=Auto, Handbetrieb:=Hand, BereichErr:=BereichErr_Zusatz_7104, Q:="FC0147", Ptc:=TRUE, Fu:=?, QKontroll:=QKontroll, FuKontroll:=?, ErrQuit:=Quit, Kontroll_B:=?, T_Nachlauf:=?, Antriebrueck:=?, Antriebvor:="MA0147", Jog1:=?, Jog2:=?, Analog:=?, QErr:="7_HMI_Err_UH07_OB".QErr.MA0147, PtcErr:=?, FuErr:=?, Err_Antrieb_verklemmt:=?) + + + +--- NW 5: MA0150 --- +CALL FB "None" , (Automatik:=Auto, Handbetrieb:=Hand, BereichErr:=BereichErr_Zusatz_7104, Q:="FC0150", Ptc:=TRUE, Fu:=?, QKontroll:=QKontroll, FuKontroll:=?, ErrQuit:=Quit, Kontroll_B:=?, T_Nachlauf:=?, Antriebrueck:=?, Antriebvor:="MA0150", Jog1:=?, Jog2:=?, Analog:=?, QErr:="7_HMI_Err_UH07_OB".QErr.MA0150, PtcErr:=?, FuErr:=?, Err_Antrieb_verklemmt:=?) + + + +--- NW 6: MA0152 --- +CALL FB "None" , (Automatik:=Auto, Handbetrieb:=Hand, BereichErr:=BereichErr_Zusatz_7102_7104, Q:="FC0152", Ptc:=TRUE, Fu:=?, QKontroll:=QKontroll, FuKontroll:=?, ErrQuit:=Quit, Kontroll_B:=?, T_Nachlauf:=?, Antriebrueck:=?, Antriebvor:="MA0152", Jog1:=?, Jog2:=?, Analog:=?, QErr:="7_HMI_Err_UH07_OB".QErr.MA0152, PtcErr:=?, FuErr:=?, Err_Antrieb_verklemmt:=?) + + + +--- NW 7: Ende --- + BE + diff --git a/=A01+UH07-KF00/Programmbausteine/Anlage/1_Vollpuffer/Basics/VP_Sensoren.awl b/=A01+UH07-KF00/Programmbausteine/Anlage/1_Vollpuffer/Basics/VP_Sensoren.awl new file mode 100644 index 0000000..3f92e6f --- /dev/null +++ b/=A01+UH07-KF00/Programmbausteine/Anlage/1_Vollpuffer/Basics/VP_Sensoren.awl @@ -0,0 +1,380 @@ +=== FB 1190: VP_Sensoren [STL] === +INTERFACE: + Input: + Output: + InOut: + Static: + Stau_VP1 : "MSensoren" + Stau_VP2 : "MSensoren" + Stau_VP3 : "MSensoren" + Stau_VP4 : "MSensoren" + Stau_VP5 : "MSensoren" + Stau_VP6 : "MSensoren" + Stau_VP7 : "MSensoren" + Stau_VP8 : "MSensoren" + Stau_VP9 : "MSensoren" + Stau_VP10 : "MSensoren" + Stau_VP11 : "MSensoren" + Stau_VP12 : "MSensoren" + Stau_VP13 : "MSensoren" + Stau_VP14 : "MSensoren" + Stau_VP15 : "MSensoren" + Stau_VP16 : "MSensoren" + Stau_VP17 : "MSensoren" + Stau_VP18 : "MSensoren" + Stau_VP19 : "MSensoren" + Stau_VP20 : "MSensoren" + Stau_VP21 : "MSensoren" + Stau_VP22 : "MSensoren" + Stau_VP23 : "MSensoren" + Stau_VP24 : "MSensoren" + Stau_VP25 : "MSensoren" + Stau_VP26 : "MSensoren" + Stau_VP27 : "MSensoren" + Stau_VP28 : "MSensoren" + Stau_VP29 : "MSensoren" + Stau_VP30 : "MSensoren" + Stau_VP31 : "MSensoren" + Stau_VP32 : "MSensoren" + Stau_VP33 : "MSensoren" + Stau_VP34 : "MSensoren" + Stau_VP35 : "MSensoren" + Stau_VP36 : "MSensoren" + Stau_VP37 : "MSensoren" + Stau_VP38 : "MSensoren" + Stau_VP39 : "MSensoren" + Stau_VP40 : "MSensoren" + Stau_VP41 : "MSensoren" + Stau_VP42 : "MSensoren" + Stau_VP43 : "MSensoren" + Stau_VP44 : "MSensoren" + Stau_VP45 : "MSensoren" + Stau_VP46 : "MSensoren" + Stau_VP47 : "MSensoren" + Stau_VP48 : "MSensoren" + Stau_VP49 : "MSensoren" + Stau_VP50 : "MSensoren" + Stau_VP51 : "MSensoren" + Stau_BG3062 : "MSensoren" + Stau_BG3061 : "MSensoren" + Stau_BG3060 : "MSensoren" + Stau_BG3003 : "MSensoren" + Stau_BG3002 : "MSensoren" + Stau_BG3001 : "MSensoren" + Stau_BG3420 : "MSensoren" + Stau_BG3481 : "MSensoren" + Stau_BG3181 : "MSensoren" + Stau_BG3182 : "MSensoren" + Stau_BG3183 : "MSensoren" + Stau_BG3184 : "MSensoren" + Stau_BG3240 : "MSensoren" + Stau_BG3241 : "MSensoren" + Stau_BG3242 : "MSensoren" + Stau_BG3243 : "MSensoren" + Stau_BG3246 : "MSensoren" + An_BG3120 : "MSensoren" + An_BG3003 : "MSensoren" + Temp: + T_Ein : Int // Vorgabe Einschaltverzögerung + T_Aus : Int // Zwischenspeicher Ausschaltverzögerung + F1 : Bool // Geschwindigkeit 1 aktiviert + F2 : Bool // Geschwindigkeit 2 aktiviert + F3 : Bool // Geschwindigkeit 3 aktiviert + ESensor : Bool // Sensoren + Antrieb : Bool + VReal : Real // GeschwindigkeitinReal + Zeit : Int // Zeit für Ausschaltverzögerung LT1100 + Aktiv : Bool // Zeit aktivieren + Constant: + +--- NW 1: Sensoren entprellen --- +CALL FB "None" , (ESensor:="BG3087", T_Ein:=01, T_Aus:=11, tein_aktiv:=TRUE, taus_aktiv:=TRUE) + + +--- NW 2: Sensoren entprellen --- +CALL FB "None" , (ESensor:="BG3086", T_Ein:=01, T_Aus:=11, tein_aktiv:=TRUE, taus_aktiv:=TRUE) + + +--- NW 3: Sensoren entprellen --- +CALL FB "None" , (ESensor:="BG3085", T_Ein:=01, T_Aus:=11, tein_aktiv:=TRUE, taus_aktiv:=TRUE) + + +--- NW 4: Sensoren entprellen --- +CALL FB "None" , (ESensor:="BG3084", T_Ein:=01, T_Aus:=11, tein_aktiv:=TRUE, taus_aktiv:=TRUE) + + +--- NW 5: Sensoren entprellen --- +CALL FB "None" , (ESensor:="BG3083", T_Ein:=01, T_Aus:=11, tein_aktiv:=TRUE, taus_aktiv:=TRUE) + + +--- NW 6: Sensoren entprellen --- +CALL FB "None" , (ESensor:="BG3082", T_Ein:=01, T_Aus:=11, tein_aktiv:=TRUE, taus_aktiv:=TRUE) + + +--- NW 7: Sensoren entprellen --- +CALL FB "None" , (ESensor:="BG3081", T_Ein:=01, T_Aus:=11, tein_aktiv:=TRUE, taus_aktiv:=TRUE) + + +--- NW 8: Sensoren entprellen --- +CALL FB "None" , (ESensor:="BG3080", T_Ein:=01, T_Aus:=11, tein_aktiv:=TRUE, taus_aktiv:=TRUE) + + +--- NW 9: Sensoren entprellen --- +CALL FB "None" , (ESensor:="BG3077", T_Ein:=01, T_Aus:=11, tein_aktiv:=TRUE, taus_aktiv:=TRUE) + + +--- NW 10: Sensoren entprellen --- +CALL FB "None" , (ESensor:="BG3076", T_Ein:=01, T_Aus:=11, tein_aktiv:=TRUE, taus_aktiv:=TRUE) + + +--- NW 11: Sensoren entprellen --- +CALL FB "None" , (ESensor:="BG3075", T_Ein:=01, T_Aus:=11, tein_aktiv:=TRUE, taus_aktiv:=TRUE) + + +--- NW 12: Sensoren entprellen --- +CALL FB "None" , (ESensor:="BG3074", T_Ein:=01, T_Aus:=11, tein_aktiv:=TRUE, taus_aktiv:=TRUE) + + +--- NW 13: Sensoren entprellen --- +CALL FB "None" , (ESensor:="BG3073", T_Ein:=01, T_Aus:=11, tein_aktiv:=TRUE, taus_aktiv:=TRUE) + + +--- NW 14: Sensoren entprellen --- +CALL FB "None" , (ESensor:="BG3072", T_Ein:=01, T_Aus:=11, tein_aktiv:=TRUE, taus_aktiv:=TRUE) + + +--- NW 15: Sensoren entprellen --- +CALL FB "None" , (ESensor:="BG3071", T_Ein:=01, T_Aus:=11, tein_aktiv:=TRUE, taus_aktiv:=TRUE) + + +--- NW 16: Sensoren entprellen --- +CALL FB "None" , (ESensor:="BG3070", T_Ein:=01, T_Aus:=11, tein_aktiv:=TRUE, taus_aktiv:=TRUE) + + +--- NW 17: Sensoren entprellen --- +CALL FB "None" , (ESensor:="BG3067", T_Ein:=01, T_Aus:=11, tein_aktiv:=TRUE, taus_aktiv:=TRUE) + + +--- NW 18: Sensoren entprellen --- +CALL FB "None" , (ESensor:="BG3066", T_Ein:=01, T_Aus:=11, tein_aktiv:=TRUE, taus_aktiv:=TRUE) + + +--- NW 19: Sensoren entprellen --- +CALL FB "None" , (ESensor:="BG3065", T_Ein:=01, T_Aus:=11, tein_aktiv:=TRUE, taus_aktiv:=TRUE) + + +--- NW 20: Sensoren entprellen --- +CALL FB "None" , (ESensor:="BG3064", T_Ein:=01, T_Aus:=11, tein_aktiv:=TRUE, taus_aktiv:=TRUE) + + +--- NW 21: Sensoren entprellen --- +CALL FB "None" , (ESensor:="BG3063", T_Ein:=01, T_Aus:=11, tein_aktiv:=TRUE, taus_aktiv:=TRUE) + + +--- NW 22: Sensoren entprellen --- +CALL FB "None" , (ESensor:="BG3027", T_Ein:=01, T_Aus:=11, tein_aktiv:=TRUE, taus_aktiv:=TRUE) + + +--- NW 23: Sensoren entprellen --- +CALL FB "None" , (ESensor:="BG3026", T_Ein:=01, T_Aus:=11, tein_aktiv:=TRUE, taus_aktiv:=TRUE) + + +--- NW 24: Sensoren entprellen --- +CALL FB "None" , (ESensor:="BG3025", T_Ein:=01, T_Aus:=11, tein_aktiv:=TRUE, taus_aktiv:=TRUE) + + +--- NW 25: Sensoren entprellen --- +CALL FB "None" , (ESensor:="BG3024", T_Ein:=01, T_Aus:=11, tein_aktiv:=TRUE, taus_aktiv:=TRUE) + + +--- NW 26: Sensoren entprellen --- +CALL FB "None" , (ESensor:="BG3023", T_Ein:=01, T_Aus:=11, tein_aktiv:=TRUE, taus_aktiv:=TRUE) + + +--- NW 27: Sensoren entprellen --- +CALL FB "None" , (ESensor:="BG3022", T_Ein:=01, T_Aus:=11, tein_aktiv:=TRUE, taus_aktiv:=TRUE) + + +--- NW 28: Sensoren entprellen --- +CALL FB "None" , (ESensor:="BG3021", T_Ein:=01, T_Aus:=11, tein_aktiv:=TRUE, taus_aktiv:=TRUE) + + +--- NW 29: Sensoren entprellen --- +CALL FB "None" , (ESensor:="BG3020", T_Ein:=01, T_Aus:=11, tein_aktiv:=TRUE, taus_aktiv:=TRUE) + + +--- NW 30: Sensoren entprellen --- +CALL FB "None" , (ESensor:="BG3017", T_Ein:=01, T_Aus:=11, tein_aktiv:=TRUE, taus_aktiv:=TRUE) + + +--- NW 31: Sensoren entprellen --- +CALL FB "None" , (ESensor:="BG3016", T_Ein:=01, T_Aus:=11, tein_aktiv:=TRUE, taus_aktiv:=TRUE) + + +--- NW 32: Sensoren entprellen --- +CALL FB "None" , (ESensor:="BG3015", T_Ein:=01, T_Aus:=11, tein_aktiv:=TRUE, taus_aktiv:=TRUE) + + +--- NW 33: Sensoren entprellen --- +CALL FB "None" , (ESensor:="BG3014", T_Ein:=01, T_Aus:=11, tein_aktiv:=TRUE, taus_aktiv:=TRUE) + + +--- NW 34: Sensoren entprellen --- +CALL FB "None" , (ESensor:="BG3013", T_Ein:=01, T_Aus:=11, tein_aktiv:=TRUE, taus_aktiv:=TRUE) + + +--- NW 35: Sensoren entprellen --- +CALL FB "None" , (ESensor:="BG3012", T_Ein:=01, T_Aus:=11, tein_aktiv:=TRUE, taus_aktiv:=TRUE) + + +--- NW 36: Sensoren entprellen --- +CALL FB "None" , (ESensor:="BG3011", T_Ein:=01, T_Aus:=11, tein_aktiv:=TRUE, taus_aktiv:=TRUE) + + +--- NW 37: Sensoren entprellen --- +CALL FB "None" , (ESensor:="BG3010", T_Ein:=01, T_Aus:=11, tein_aktiv:=TRUE, taus_aktiv:=TRUE) + + +--- NW 38: Sensoren entprellen --- +CALL FB "None" , (ESensor:="BG3007", T_Ein:=01, T_Aus:=11, tein_aktiv:=TRUE, taus_aktiv:=TRUE) + + +--- NW 39: Sensoren entprellen --- +CALL FB "None" , (ESensor:="BG3006", T_Ein:=01, T_Aus:=11, tein_aktiv:=TRUE, taus_aktiv:=TRUE) + + +--- NW 40: Sensoren entprellen --- +CALL FB "None" , (ESensor:="BG3005", T_Ein:=01, T_Aus:=11, tein_aktiv:=TRUE, taus_aktiv:=TRUE) + + +--- NW 41: Sensoren entprellen --- +CALL FB "None" , (ESensor:="BG3435", T_Ein:=01, T_Aus:=11, tein_aktiv:=TRUE, taus_aktiv:=TRUE) + + +--- NW 42: Sensoren entprellen --- +CALL FB "None" , (ESensor:="BG3434", T_Ein:=01, T_Aus:=11, tein_aktiv:=TRUE, taus_aktiv:=TRUE) + + +--- NW 43: Sensoren entprellen --- +CALL FB "None" , (ESensor:="BG3433", T_Ein:=01, T_Aus:=11, tein_aktiv:=TRUE, taus_aktiv:=TRUE) + + +--- NW 44: Sensoren entprellen --- +CALL FB "None" , (ESensor:="BG3432", T_Ein:=01, T_Aus:=11, tein_aktiv:=TRUE, taus_aktiv:=TRUE) + + +--- NW 45: Sensoren entprellen --- +CALL FB "None" , (ESensor:="BG3431", T_Ein:=01, T_Aus:=11, tein_aktiv:=TRUE, taus_aktiv:=TRUE) + + +--- NW 46: Sensoren entprellen --- +CALL FB "None" , (ESensor:="BG3430", T_Ein:=01, T_Aus:=11, tein_aktiv:=TRUE, taus_aktiv:=TRUE) + + +--- NW 47: Sensoren entprellen --- +CALL FB "None" , (ESensor:="BG3427", T_Ein:=01, T_Aus:=11, tein_aktiv:=TRUE, taus_aktiv:=TRUE) + + +--- NW 48: Sensoren entprellen --- +CALL FB "None" , (ESensor:="BG3426", T_Ein:=01, T_Aus:=11, tein_aktiv:=TRUE, taus_aktiv:=TRUE) + + +--- NW 49: Sensoren entprellen --- +CALL FB "None" , (ESensor:="BG3425", T_Ein:=01, T_Aus:=11, tein_aktiv:=TRUE, taus_aktiv:=TRUE) + + +--- NW 50: Sensoren entprellen --- +CALL FB "None" , (ESensor:="BG3424", T_Ein:=01, T_Aus:=11, tein_aktiv:=TRUE, taus_aktiv:=TRUE) + + +--- NW 51: Sensoren entprellen --- +CALL FB "None" , (ESensor:="BG3423", T_Ein:=01, T_Aus:=11, tein_aktiv:=TRUE, taus_aktiv:=TRUE) + + +--- NW 52: Stau Sorter Rein A --- +CALL FB "None" , (ESensor:="BG3062", T_Ein:=80, T_Aus:=11, tein_aktiv:="MA0145", taus_aktiv:=TRUE) + + +--- NW 53: Stau Sorter Rein A --- +CALL FB "None" , (ESensor:="BG3061", T_Ein:=80, T_Aus:=11, tein_aktiv:="MA0145", taus_aktiv:=TRUE) + + +--- NW 54: Stau Sorter Rein A --- +CALL FB "None" , (ESensor:="BG3060", T_Ein:=80, T_Aus:=11, tein_aktiv:="MA0145", taus_aktiv:=TRUE) + + +--- NW 55: Stau Sorter Rein B --- +CALL FB "None" , (ESensor:="BG3003", T_Ein:=80, T_Aus:=11, tein_aktiv:="MA0146", taus_aktiv:=TRUE) + + +--- NW 56: Stau Sorter Rein B --- +CALL FB "None" , (ESensor:="BG3002", T_Ein:=80, T_Aus:=11, tein_aktiv:="MA0146", taus_aktiv:=TRUE) + + +--- NW 57: Stau Sorter Rein B --- +CALL FB "None" , (ESensor:="BG3001", T_Ein:=80, T_Aus:=11, tein_aktiv:="MA0146", taus_aktiv:=TRUE) + + +--- NW 58: Stau Sorter Rein B --- +CALL FB "None" , (ESensor:="BG3420", T_Ein:=80, T_Aus:=11, tein_aktiv:="MA0146", taus_aktiv:=TRUE) + + +--- NW 59: Stau Puffer Raus B --- +CALL FB "None" , (ESensor:="BG3481", T_Ein:=80, T_Aus:=11, tein_aktiv:="MA0147", taus_aktiv:=TRUE) + + +--- NW 60: Stau Puffer Raus B --- +CALL FB "None" , (ESensor:="BG3181", T_Ein:=80, T_Aus:=11, tein_aktiv:="MA0147", taus_aktiv:=TRUE) + + +--- NW 61: Stau Puffer Raus B --- +CALL FB "None" , (ESensor:="BG3182", T_Ein:=80, T_Aus:=11, tein_aktiv:="MA0147", taus_aktiv:=TRUE) + + +--- NW 62: Stau Puffer Raus B --- +CALL FB "None" , (ESensor:="BG3183", T_Ein:=80, T_Aus:=11, tein_aktiv:="MA0147", taus_aktiv:=TRUE) + + +--- NW 63: Stau Puffer Raus A --- +CALL FB "None" , (ESensor:="BG3184", T_Ein:=80, T_Aus:=11, tein_aktiv:="MA0150", taus_aktiv:=TRUE) + + +--- NW 64: Stau Puffer Raus A --- +CALL FB "None" , (ESensor:="BG3184", T_Ein:=80, T_Aus:=11, tein_aktiv:="MA0150", taus_aktiv:=TRUE) + + +--- NW 65: Sensoren entprellen --- +CALL FB "None" , (ESensor:="BG3241", T_Ein:=80, T_Aus:=11, tein_aktiv:=TRUE, taus_aktiv:=TRUE) + + +--- NW 66: Sensoren entprellen --- +CALL FB "None" , (ESensor:="BG3242", T_Ein:=80, T_Aus:=11, tein_aktiv:=TRUE, taus_aktiv:=TRUE) + + +--- NW 67: Sensoren entprellen --- +CALL FB "None" , (ESensor:="BG3243", T_Ein:=80, T_Aus:=11, tein_aktiv:=TRUE, taus_aktiv:=TRUE) + + +--- NW 68: Sensoren entprellen --- +CALL FB "None" , (ESensor:="BG3246", T_Ein:=80, T_Aus:=11, tein_aktiv:=TRUE, taus_aktiv:=TRUE) + + +--- NW 69: Sensoren entprellen --- + A "MA0152" + A "MA0145" + = Antrieb + +CALL FB "None" , (ESensor:="BG3120", T_Ein:=01, T_Aus:=100, tein_aktiv:=TRUE, taus_aktiv:=Antrieb) + + +--- NW 70: Sensoren entprellen --- + A "MA0145" + A "MA0146" + = Antrieb + +CALL FB "None" , (ESensor:="BG3003", T_Ein:=01, T_Aus:=100, tein_aktiv:=TRUE, taus_aktiv:=Antrieb) + + +--- NW 71: Ende --- + BE + diff --git a/=A01+UH07-KF00/Programmbausteine/Anlage/1_Vollpuffer/Basics/VP_Zylinder.awl b/=A01+UH07-KF00/Programmbausteine/Anlage/1_Vollpuffer/Basics/VP_Zylinder.awl new file mode 100644 index 0000000..3283c55 --- /dev/null +++ b/=A01+UH07-KF00/Programmbausteine/Anlage/1_Vollpuffer/Basics/VP_Zylinder.awl @@ -0,0 +1,855 @@ +=== FB 1192: VP_Zylinder [STL] === +INTERFACE: + Input: + Output: + InOut: + Static: + Sorter_3121 : "MZylinder" // + Sorter_3123 : "MZylinder" // + Weiche_3120 : "MZylinder" // + Schleuse_3244 : "MZylinder" // + Weiche_3245 : "MZylinder" // + Weiche_VP1 : "MZylinder" // + Weiche_VP2 : "MZylinder" + Weiche_VP3 : "MZylinder" + Weiche_VP4 : "MZylinder" + Weiche_VP5 : "MZylinder" + Weiche_VP6 : "MZylinder" + Weiche_VP7 : "MZylinder" + Weiche_VP8 : "MZylinder" + Weiche_VP9 : "MZylinder" + Weiche_VP10 : "MZylinder" + Weiche_VP11 : "MZylinder" + Weiche_VP12 : "MZylinder" + Weiche_VP13 : "MZylinder" + Weiche_VP14 : "MZylinder" + Weiche_VP15 : "MZylinder" + Weiche_VP16 : "MZylinder" + Weiche_VP17 : "MZylinder" + Weiche_VP18 : "MZylinder" + Weiche_VP19 : "MZylinder" + Weiche_VP20 : "MZylinder" + Weiche_VP21 : "MZylinder" + Weiche_VP22 : "MZylinder" + Weiche_VP23 : "MZylinder" + Weiche_VP24 : "MZylinder" + Weiche_VP25 : "MZylinder" + Weiche_VP26 : "MZylinder" + Weiche_VP27 : "MZylinder" + Weiche_VP28 : "MZylinder" + Weiche_VP29 : "MZylinder" + Weiche_VP30 : "MZylinder" + Weiche_VP31 : "MZylinder" + Weiche_VP32 : "MZylinder" + Weiche_VP33 : "MZylinder" + Weiche_VP34 : "MZylinder" + Weiche_VP35 : "MZylinder" + Weiche_VP36 : "MZylinder" + Weiche_VP37 : "MZylinder" + Weiche_VP38 : "MZylinder" + Weiche_VP39 : "MZylinder" + Weiche_VP40 : "MZylinder" + Weiche_VP41 : "MZylinder" + Weiche_VP42 : "MZylinder" + Weiche_VP43 : "MZylinder" + Weiche_VP44 : "MZylinder" + Weiche_VP45 : "MZylinder" + Weiche_VP46 : "MZylinder" + Weiche_VP47 : "MZylinder" + Weiche_VP48 : "MZylinder" + Weiche_VP49 : "MZylinder" + Weiche_VP50 : "MZylinder" + Weiche_VP51 : "MZylinder" + Schleuse_Mitte_VP1 : "MZylinder" // + Schleuse_Mitte_VP2 : "MZylinder" + Schleuse_Mitte_VP3 : "MZylinder" + Schleuse_Mitte_VP4 : "MZylinder" + Schleuse_Mitte_VP5 : "MZylinder" + Schleuse_Mitte_VP6 : "MZylinder" + Schleuse_Mitte_VP7 : "MZylinder" + Schleuse_Mitte_VP8 : "MZylinder" + Schleuse_Mitte_VP9 : "MZylinder" + Schleuse_Mitte_VP10 : "MZylinder" + Schleuse_Mitte_VP11 : "MZylinder" + Schleuse_Mitte_VP12 : "MZylinder" + Schleuse_Mitte_VP13 : "MZylinder" + Schleuse_Mitte_VP14 : "MZylinder" + Schleuse_Mitte_VP15 : "MZylinder" + Schleuse_Mitte_VP16 : "MZylinder" + Schleuse_Mitte_VP17 : "MZylinder" + Schleuse_Mitte_VP18 : "MZylinder" + Schleuse_Mitte_VP19 : "MZylinder" + Schleuse_Mitte_VP20 : "MZylinder" + Schleuse_Mitte_VP21 : "MZylinder" + Schleuse_Mitte_VP22 : "MZylinder" + Schleuse_Mitte_VP23 : "MZylinder" + Schleuse_Mitte_VP24 : "MZylinder" + Schleuse_Mitte_VP25 : "MZylinder" + Schleuse_Mitte_VP26 : "MZylinder" + Schleuse_Mitte_VP27 : "MZylinder" + Schleuse_Mitte_VP28 : "MZylinder" + Schleuse_Mitte_VP29 : "MZylinder" + Schleuse_Mitte_VP30 : "MZylinder" + Schleuse_Mitte_VP31 : "MZylinder" + Schleuse_Mitte_VP32 : "MZylinder" + Schleuse_Mitte_VP33 : "MZylinder" + Schleuse_Mitte_VP34 : "MZylinder" + Schleuse_Mitte_VP35 : "MZylinder" + Schleuse_Mitte_VP36 : "MZylinder" + Schleuse_Mitte_VP37 : "MZylinder" + Schleuse_Mitte_VP38 : "MZylinder" + Schleuse_Mitte_VP39 : "MZylinder" + Schleuse_Mitte_VP40 : "MZylinder" + Schleuse_Mitte_VP41 : "MZylinder" + Schleuse_Mitte_VP42 : "MZylinder" + Schleuse_Mitte_VP43 : "MZylinder" + Schleuse_Mitte_VP44 : "MZylinder" + Schleuse_Mitte_VP45 : "MZylinder" + Schleuse_Mitte_VP46 : "MZylinder" + Schleuse_Mitte_VP47 : "MZylinder" + Schleuse_Mitte_VP48 : "MZylinder" + Schleuse_Mitte_VP49 : "MZylinder" + Schleuse_Mitte_VP50 : "MZylinder" + Schleuse_Mitte_VP51 : "MZylinder" + Schleuse_Ausfahrt_VP1 : "MZylinder" // + Schleuse_Ausfahrt_VP2 : "MZylinder" + Schleuse_Ausfahrt_VP3 : "MZylinder" + Schleuse_Ausfahrt_VP4 : "MZylinder" + Schleuse_Ausfahrt_VP5 : "MZylinder" + Schleuse_Ausfahrt_VP6 : "MZylinder" + Schleuse_Ausfahrt_VP7 : "MZylinder" + Schleuse_Ausfahrt_VP8 : "MZylinder" + Schleuse_Ausfahrt_VP9 : "MZylinder" + Schleuse_Ausfahrt_VP10 : "MZylinder" + Schleuse_Ausfahrt_VP11 : "MZylinder" + Schleuse_Ausfahrt_VP12 : "MZylinder" + Schleuse_Ausfahrt_VP13 : "MZylinder" + Schleuse_Ausfahrt_VP14 : "MZylinder" + Schleuse_Ausfahrt_VP15 : "MZylinder" + Schleuse_Ausfahrt_VP16 : "MZylinder" + Schleuse_Ausfahrt_VP17 : "MZylinder" + Schleuse_Ausfahrt_VP18 : "MZylinder" + Schleuse_Ausfahrt_VP19 : "MZylinder" + Schleuse_Ausfahrt_VP20 : "MZylinder" + Schleuse_Ausfahrt_VP21 : "MZylinder" + Schleuse_Ausfahrt_VP22 : "MZylinder" + Schleuse_Ausfahrt_VP23 : "MZylinder" + Schleuse_Ausfahrt_VP24 : "MZylinder" + Schleuse_Ausfahrt_VP25 : "MZylinder" + Schleuse_Ausfahrt_VP26 : "MZylinder" + Schleuse_Ausfahrt_VP27 : "MZylinder" + Schleuse_Ausfahrt_VP28 : "MZylinder" + Schleuse_Ausfahrt_VP29 : "MZylinder" + Schleuse_Ausfahrt_VP30 : "MZylinder" + Schleuse_Ausfahrt_VP31 : "MZylinder" + Schleuse_Ausfahrt_VP32 : "MZylinder" + Schleuse_Ausfahrt_VP33 : "MZylinder" + Schleuse_Ausfahrt_VP34 : "MZylinder" + Schleuse_Ausfahrt_VP35 : "MZylinder" + Schleuse_Ausfahrt_VP36 : "MZylinder" + Schleuse_Ausfahrt_VP37 : "MZylinder" + Schleuse_Ausfahrt_VP38 : "MZylinder" + Schleuse_Ausfahrt_VP39 : "MZylinder" + Schleuse_Ausfahrt_VP40 : "MZylinder" + Schleuse_Ausfahrt_VP41 : "MZylinder" + Schleuse_Ausfahrt_VP42 : "MZylinder" + Schleuse_Ausfahrt_VP43 : "MZylinder" + Schleuse_Ausfahrt_VP44 : "MZylinder" + Schleuse_Ausfahrt_VP45 : "MZylinder" + Schleuse_Ausfahrt_VP46 : "MZylinder" + Schleuse_Ausfahrt_VP47 : "MZylinder" + Schleuse_Ausfahrt_VP48 : "MZylinder" + Schleuse_Ausfahrt_VP49 : "MZylinder" + Schleuse_Ausfahrt_VP50 : "MZylinder" + Schleuse_Ausfahrt_VP51 : "MZylinder" + Temp: + Auto : Bool // Automatik ist aktiv + Hand : Bool // Hand ist aktiv + ZylAst : Bool // Zylinder ansteuern + BereichErr_Zusatz_7102 : Bool // Bereichsstörung -> Antrieb stoppen + BereichErr_Zusatz_7104 : Bool // Bereichsstörung -> Antrieb stoppen + BereichErr_Zusatz_7102_7104 : Bool // Bereichsstörung -> Antrieb stoppen + Constant: + +--- NW 1: Übergabe des Bereichstatus System UC071/A01 --- + A "DOutbound_Bereich".A01_UH07.Automatik + AN "DOutbound_Bereich".A01_UH07.Handbetrieb + = Auto + +// Bereichhalte: + A( + O "DOutbound_Bereich".A01_UC071.BereichErr + O "DOutbound_Bereich".A01_UZ7102.Area_Stop + ) + AN "SGes".Simulation_ohne_HW_aktiv + = BereichErr_Zusatz_7102 + + A( + O "DOutbound_Bereich".A01_UC071.BereichErr + O "DOutbound_Bereich".A01_UZ7104.Area_Stop + ) + AN "SGes".Simulation_ohne_HW_aktiv + = BereichErr_Zusatz_7104 + + A( + O "DOutbound_Bereich".A01_UC071.BereichErr + O BereichErr_Zusatz_7102 + O BereichErr_Zusatz_7104 + ) + AN "SGes".Simulation_ohne_HW_aktiv + = BereichErr_Zusatz_7102_7104 + + A "DOutbound_Bereich".A01_UC071.BereichErr + JC Next // Zylinder-Stellung nicht mehr ändern + + +--- NW 2: Übergabe Area-Stop 7102 --- + A BereichErr_Zusatz_7102 + JC Next1 // Zylinder-Stellung nicht mehr ändern + + +--- NW 3: Schleuse_3121 --- +CALL FB "None" , (Automatik:=Auto, Handbetrieb:=FALSE, T_Ast:=0, T_Gst:=5, ZylAst:="MB3121", ZylGst:=?) + + +--- NW 4: Schleuse_3123 --- +CALL FB "None" , (Automatik:=Auto, Handbetrieb:=FALSE, T_Ast:=0, T_Gst:=5, ZylAst:="MB3123", ZylGst:=?) + + +--- NW 5: Weiche_3120 --- +CALL FB "None" , (Automatik:=Auto, Handbetrieb:=FALSE, T_Ast:=0, T_Gst:=5, ZylAst:="MB3120", ZylGst:=?) + + +--- NW 6: Weiche_VP1 --- +CALL FB "None" , (Automatik:=Auto, Handbetrieb:=FALSE, T_Ast:=0, T_Gst:=5, ZylAst:="MB3087", ZylGst:=?) + + +--- NW 7: Weiche_VP2 --- +CALL FB "None" , (Automatik:=Auto, Handbetrieb:=FALSE, T_Ast:=0, T_Gst:=5, ZylAst:="MB3086", ZylGst:=?) + + +--- NW 8: Weiche_VP3 --- +CALL FB "None" , (Automatik:=Auto, Handbetrieb:=FALSE, T_Ast:=0, T_Gst:=5, ZylAst:="MB3085", ZylGst:=?) + + +--- NW 9: Weiche_VP4 --- +CALL FB "None" , (Automatik:=Auto, Handbetrieb:=FALSE, T_Ast:=0, T_Gst:=5, ZylAst:="MB3084", ZylGst:=?) + + +--- NW 10: Weiche_VP5 --- +CALL FB "None" , (Automatik:=Auto, Handbetrieb:=FALSE, T_Ast:=0, T_Gst:=5, ZylAst:="MB3083", ZylGst:=?) + + +--- NW 11: Weiche_VP6 --- +CALL FB "None" , (Automatik:=Auto, Handbetrieb:=FALSE, T_Ast:=0, T_Gst:=5, ZylAst:="MB3082", ZylGst:=?) + + +--- NW 12: Weiche_VP7 --- +CALL FB "None" , (Automatik:=Auto, Handbetrieb:=FALSE, T_Ast:=0, T_Gst:=5, ZylAst:="MB3081", ZylGst:=?) + + +--- NW 13: Weiche_VP8 --- +CALL FB "None" , (Automatik:=Auto, Handbetrieb:=FALSE, T_Ast:=0, T_Gst:=5, ZylAst:="MB3080", ZylGst:=?) + + +--- NW 14: Weiche_VP9 --- +CALL FB "None" , (Automatik:=Auto, Handbetrieb:=FALSE, T_Ast:=0, T_Gst:=5, ZylAst:="MB3077", ZylGst:=?) + + +--- NW 15: Weiche_VP10 --- +CALL FB "None" , (Automatik:=Auto, Handbetrieb:=FALSE, T_Ast:=0, T_Gst:=5, ZylAst:="MB3076", ZylGst:=?) + + +--- NW 16: Weiche_VP11 --- +CALL FB "None" , (Automatik:=Auto, Handbetrieb:=FALSE, T_Ast:=0, T_Gst:=5, ZylAst:="MB3075", ZylGst:=?) + + +--- NW 17: Weiche_VP12 --- +CALL FB "None" , (Automatik:=Auto, Handbetrieb:=FALSE, T_Ast:=0, T_Gst:=5, ZylAst:="MB3074", ZylGst:=?) + + +--- NW 18: Weiche_VP13 --- +CALL FB "None" , (Automatik:=Auto, Handbetrieb:=FALSE, T_Ast:=0, T_Gst:=5, ZylAst:="MB3073", ZylGst:=?) + + +--- NW 19: Weiche_VP14 --- +CALL FB "None" , (Automatik:=Auto, Handbetrieb:=FALSE, T_Ast:=0, T_Gst:=5, ZylAst:="MB3072", ZylGst:=?) + + +--- NW 20: Weiche_VP15 --- +CALL FB "None" , (Automatik:=Auto, Handbetrieb:=FALSE, T_Ast:=0, T_Gst:=5, ZylAst:="MB3071", ZylGst:=?) + + +--- NW 21: Weiche_VP16 --- +CALL FB "None" , (Automatik:=Auto, Handbetrieb:=FALSE, T_Ast:=0, T_Gst:=5, ZylAst:="MB3070", ZylGst:=?) + + +--- NW 22: Weiche_VP17 --- +CALL FB "None" , (Automatik:=Auto, Handbetrieb:=FALSE, T_Ast:=0, T_Gst:=5, ZylAst:="MB3067", ZylGst:=?) + + +--- NW 23: Weiche_VP18 --- +CALL FB "None" , (Automatik:=Auto, Handbetrieb:=FALSE, T_Ast:=0, T_Gst:=5, ZylAst:="MB3066", ZylGst:=?) + + +--- NW 24: Weiche_VP19 --- +CALL FB "None" , (Automatik:=Auto, Handbetrieb:=FALSE, T_Ast:=0, T_Gst:=5, ZylAst:="MB3065", ZylGst:=?) + + +--- NW 25: Weiche_VP20 --- +CALL FB "None" , (Automatik:=Auto, Handbetrieb:=FALSE, T_Ast:=0, T_Gst:=5, ZylAst:="MB3064", ZylGst:=?) + + +--- NW 26: Weiche_VP21 --- +CALL FB "None" , (Automatik:=Auto, Handbetrieb:=FALSE, T_Ast:=0, T_Gst:=5, ZylAst:="MB3063", ZylGst:=?) + + +--- NW 27: Weiche_VP22 --- +CALL FB "None" , (Automatik:=Auto, Handbetrieb:=FALSE, T_Ast:=0, T_Gst:=5, ZylAst:="MB3027", ZylGst:=?) + + +--- NW 28: Weiche_VP23 --- +CALL FB "None" , (Automatik:=Auto, Handbetrieb:=FALSE, T_Ast:=0, T_Gst:=5, ZylAst:="MB3026", ZylGst:=?) + + +--- NW 29: Weiche_VP24 --- +CALL FB "None" , (Automatik:=Auto, Handbetrieb:=FALSE, T_Ast:=0, T_Gst:=5, ZylAst:="MB3025", ZylGst:=?) + + +--- NW 30: Weiche_VP25 --- +CALL FB "None" , (Automatik:=Auto, Handbetrieb:=FALSE, T_Ast:=0, T_Gst:=5, ZylAst:="MB3024", ZylGst:=?) + + +--- NW 31: Weiche_VP26 --- +CALL FB "None" , (Automatik:=Auto, Handbetrieb:=FALSE, T_Ast:=0, T_Gst:=5, ZylAst:="MB3023", ZylGst:=?) + + +--- NW 32: Weiche_VP27 --- +CALL FB "None" , (Automatik:=Auto, Handbetrieb:=FALSE, T_Ast:=0, T_Gst:=5, ZylAst:="MB3022", ZylGst:=?) + + +--- NW 33: Weiche_VP28 --- +CALL FB "None" , (Automatik:=Auto, Handbetrieb:=FALSE, T_Ast:=0, T_Gst:=5, ZylAst:="MB3021", ZylGst:=?) + + +--- NW 34: Weiche_VP29 --- +CALL FB "None" , (Automatik:=Auto, Handbetrieb:=FALSE, T_Ast:=0, T_Gst:=5, ZylAst:="MB3020", ZylGst:=?) + + +--- NW 35: Weiche_VP30 --- +CALL FB "None" , (Automatik:=Auto, Handbetrieb:=FALSE, T_Ast:=0, T_Gst:=5, ZylAst:="MB3017", ZylGst:=?) + + +--- NW 36: Weiche_VP31 --- +CALL FB "None" , (Automatik:=Auto, Handbetrieb:=FALSE, T_Ast:=0, T_Gst:=5, ZylAst:="MB3016", ZylGst:=?) + + +--- NW 37: Weiche_VP32 --- +CALL FB "None" , (Automatik:=Auto, Handbetrieb:=FALSE, T_Ast:=0, T_Gst:=5, ZylAst:="MB3015", ZylGst:=?) + + +--- NW 38: Weiche_VP33 --- +CALL FB "None" , (Automatik:=Auto, Handbetrieb:=FALSE, T_Ast:=0, T_Gst:=5, ZylAst:="MB3014", ZylGst:=?) + + +--- NW 39: Weiche_VP34 --- +CALL FB "None" , (Automatik:=Auto, Handbetrieb:=FALSE, T_Ast:=0, T_Gst:=5, ZylAst:="MB3013", ZylGst:=?) + + +--- NW 40: Weiche_VP35 --- +CALL FB "None" , (Automatik:=Auto, Handbetrieb:=FALSE, T_Ast:=0, T_Gst:=5, ZylAst:="MB3012", ZylGst:=?) + + +--- NW 41: Weiche_VP36 --- +CALL FB "None" , (Automatik:=Auto, Handbetrieb:=FALSE, T_Ast:=0, T_Gst:=5, ZylAst:="MB3011", ZylGst:=?) + + +--- NW 42: Weiche_VP37 --- +CALL FB "None" , (Automatik:=Auto, Handbetrieb:=FALSE, T_Ast:=0, T_Gst:=5, ZylAst:="MB3010", ZylGst:=?) + + +--- NW 43: Weiche_VP38 --- +CALL FB "None" , (Automatik:=Auto, Handbetrieb:=FALSE, T_Ast:=0, T_Gst:=5, ZylAst:="MB3007", ZylGst:=?) + + +--- NW 44: Weiche_VP39 --- +CALL FB "None" , (Automatik:=Auto, Handbetrieb:=FALSE, T_Ast:=0, T_Gst:=5, ZylAst:="MB3006", ZylGst:=?) + + +--- NW 45: Weiche_VP40 --- +CALL FB "None" , (Automatik:=Auto, Handbetrieb:=FALSE, T_Ast:=0, T_Gst:=5, ZylAst:="MB3005", ZylGst:=?) + + +--- NW 46: Weiche_VP41 --- +CALL FB "None" , (Automatik:=Auto, Handbetrieb:=FALSE, T_Ast:=0, T_Gst:=5, ZylAst:="MB3435", ZylGst:=?) + + +--- NW 47: Weiche_VP42 --- +CALL FB "None" , (Automatik:=Auto, Handbetrieb:=FALSE, T_Ast:=0, T_Gst:=5, ZylAst:="MB3434", ZylGst:=?) + + +--- NW 48: Weiche_VP43 --- +CALL FB "None" , (Automatik:=Auto, Handbetrieb:=FALSE, T_Ast:=0, T_Gst:=5, ZylAst:="MB3433", ZylGst:=?) + + +--- NW 49: Weiche_VP44 --- +CALL FB "None" , (Automatik:=Auto, Handbetrieb:=FALSE, T_Ast:=0, T_Gst:=5, ZylAst:="MB3432", ZylGst:=?) + + +--- NW 50: Weiche_VP45 --- +CALL FB "None" , (Automatik:=Auto, Handbetrieb:=FALSE, T_Ast:=0, T_Gst:=5, ZylAst:="MB3431", ZylGst:=?) + + +--- NW 51: Weiche_VP46 --- +CALL FB "None" , (Automatik:=Auto, Handbetrieb:=FALSE, T_Ast:=0, T_Gst:=5, ZylAst:="MB3430", ZylGst:=?) + + +--- NW 52: Weiche_VP47 --- +CALL FB "None" , (Automatik:=Auto, Handbetrieb:=FALSE, T_Ast:=0, T_Gst:=5, ZylAst:="MB3427", ZylGst:=?) + + +--- NW 53: Weiche_VP48 --- +CALL FB "None" , (Automatik:=Auto, Handbetrieb:=FALSE, T_Ast:=0, T_Gst:=5, ZylAst:="MB3426", ZylGst:=?) + + +--- NW 54: Weiche_VP49 --- +CALL FB "None" , (Automatik:=Auto, Handbetrieb:=FALSE, T_Ast:=0, T_Gst:=5, ZylAst:="MB3425", ZylGst:=?) + + +--- NW 55: Weiche_VP50 --- +CALL FB "None" , (Automatik:=Auto, Handbetrieb:=FALSE, T_Ast:=0, T_Gst:=5, ZylAst:="MB3424", ZylGst:=?) + + +--- NW 56: Weiche_VP51 --- +CALL FB "None" , (Automatik:=Auto, Handbetrieb:=FALSE, T_Ast:=0, T_Gst:=5, ZylAst:=?, ZylGst:=?) // "MB3423" + + +--- NW 57: Übergabe Area-Stop 7102_7104 --- +Next1: A BereichErr_Zusatz_7102_7104 + JC Next2 // Zylinder-Stellung nicht mehr ändern + + +--- NW 58: Schleuse_Mitte_VP1 --- +CALL FB "None" , (Automatik:=Auto, Handbetrieb:=FALSE, T_Ast:=0, T_Gst:=5, ZylAst:="MB3114", ZylGst:=?) + + +--- NW 59: Schleuse_Mitte_VP2 --- +CALL FB "None" , (Automatik:=Auto, Handbetrieb:=FALSE, T_Ast:=0, T_Gst:=5, ZylAst:="MB3113", ZylGst:=?) + + +--- NW 60: Schleuse_Mitte_VP3 --- +CALL FB "None" , (Automatik:=Auto, Handbetrieb:=FALSE, T_Ast:=0, T_Gst:=5, ZylAst:="MB3112", ZylGst:=?) + + +--- NW 61: Schleuse_Mitte_VP4 --- +CALL FB "None" , (Automatik:=Auto, Handbetrieb:=FALSE, T_Ast:=0, T_Gst:=5, ZylAst:="MB3111", ZylGst:=?) + + +--- NW 62: Schleuse_Mitte_VP5 --- +CALL FB "None" , (Automatik:=Auto, Handbetrieb:=FALSE, T_Ast:=0, T_Gst:=5, ZylAst:="MB3110", ZylGst:=?) + + +--- NW 63: Schleuse_Mitte_VP6 --- +CALL FB "None" , (Automatik:=Auto, Handbetrieb:=FALSE, T_Ast:=0, T_Gst:=5, ZylAst:="MB3107", ZylGst:=?) + + +--- NW 64: Schleuse_Mitte_VP7 --- +CALL FB "None" , (Automatik:=Auto, Handbetrieb:=FALSE, T_Ast:=0, T_Gst:=5, ZylAst:="MB3106", ZylGst:=?) + + +--- NW 65: Schleuse_Mitte_VP8 --- +CALL FB "None" , (Automatik:=Auto, Handbetrieb:=FALSE, T_Ast:=0, T_Gst:=5, ZylAst:="MB3105", ZylGst:=?) + + +--- NW 66: Schleuse_Mitte_VP9 --- +CALL FB "None" , (Automatik:=Auto, Handbetrieb:=FALSE, T_Ast:=0, T_Gst:=5, ZylAst:="MB3104", ZylGst:=?) + + +--- NW 67: Schleuse_Mitte_VP10 --- +CALL FB "None" , (Automatik:=Auto, Handbetrieb:=FALSE, T_Ast:=0, T_Gst:=5, ZylAst:="MB3103", ZylGst:=?) + + +--- NW 68: Schleuse_Mitte_VP11 --- +CALL FB "None" , (Automatik:=Auto, Handbetrieb:=FALSE, T_Ast:=0, T_Gst:=5, ZylAst:="MB3102", ZylGst:=?) + + +--- NW 69: Schleuse_Mitte_VP12 --- +CALL FB "None" , (Automatik:=Auto, Handbetrieb:=FALSE, T_Ast:=0, T_Gst:=5, ZylAst:="MB3101", ZylGst:=?) + + +--- NW 70: Schleuse_Mitte_VP13 --- +CALL FB "None" , (Automatik:=Auto, Handbetrieb:=FALSE, T_Ast:=0, T_Gst:=5, ZylAst:="MB3100", ZylGst:=?) + + +--- NW 71: Schleuse_Mitte_VP14 --- +CALL FB "None" , (Automatik:=Auto, Handbetrieb:=FALSE, T_Ast:=0, T_Gst:=5, ZylAst:="MB3097", ZylGst:=?) + + +--- NW 72: Schleuse_Mitte_VP15 --- +CALL FB "None" , (Automatik:=Auto, Handbetrieb:=FALSE, T_Ast:=0, T_Gst:=5, ZylAst:="MB3096", ZylGst:=?) + + +--- NW 73: Schleuse_Mitte_VP16 --- +CALL FB "None" , (Automatik:=Auto, Handbetrieb:=FALSE, T_Ast:=0, T_Gst:=5, ZylAst:="MB3095", ZylGst:=?) + + +--- NW 74: Schleuse_Mitte_VP17 --- +CALL FB "None" , (Automatik:=Auto, Handbetrieb:=FALSE, T_Ast:=0, T_Gst:=5, ZylAst:="MB3094", ZylGst:=?) + + +--- NW 75: Schleuse_Mitte_VP18 --- +CALL FB "None" , (Automatik:=Auto, Handbetrieb:=FALSE, T_Ast:=0, T_Gst:=5, ZylAst:="MB3093", ZylGst:=?) + + +--- NW 76: Schleuse_Mitte_VP19 --- +CALL FB "None" , (Automatik:=Auto, Handbetrieb:=FALSE, T_Ast:=0, T_Gst:=5, ZylAst:="MB3092", ZylGst:=?) + + +--- NW 77: Schleuse_Mitte_VP20 --- +CALL FB "None" , (Automatik:=Auto, Handbetrieb:=FALSE, T_Ast:=0, T_Gst:=5, ZylAst:="MB3091", ZylGst:=?) + + +--- NW 78: Schleuse_Mitte_VP21 --- +CALL FB "None" , (Automatik:=Auto, Handbetrieb:=FALSE, T_Ast:=0, T_Gst:=5, ZylAst:="MB3090", ZylGst:=?) + + +--- NW 79: Schleuse_Mitte_VP22 --- +CALL FB "None" , (Automatik:=Auto, Handbetrieb:=FALSE, T_Ast:=0, T_Gst:=5, ZylAst:="MB3052", ZylGst:=?) + + +--- NW 80: Schleuse_Mitte_VP23 --- +CALL FB "None" , (Automatik:=Auto, Handbetrieb:=FALSE, T_Ast:=0, T_Gst:=5, ZylAst:="MB3051", ZylGst:=?) + + +--- NW 81: Schleuse_Mitte_VP24 --- +CALL FB "None" , (Automatik:=Auto, Handbetrieb:=FALSE, T_Ast:=0, T_Gst:=5, ZylAst:="MB3050", ZylGst:=?) + + +--- NW 82: Schleuse_Mitte_VP25 --- +CALL FB "None" , (Automatik:=Auto, Handbetrieb:=FALSE, T_Ast:=0, T_Gst:=5, ZylAst:="MB3047", ZylGst:=?) + + +--- NW 83: Schleuse_Mitte_VP26 --- +CALL FB "None" , (Automatik:=Auto, Handbetrieb:=FALSE, T_Ast:=0, T_Gst:=5, ZylAst:="MB3046", ZylGst:=?) + + +--- NW 84: Schleuse_Mitte_VP27 --- +CALL FB "None" , (Automatik:=Auto, Handbetrieb:=FALSE, T_Ast:=0, T_Gst:=5, ZylAst:="MB3045", ZylGst:=?) + + +--- NW 85: Schleuse_Mitte_VP28 --- +CALL FB "None" , (Automatik:=Auto, Handbetrieb:=FALSE, T_Ast:=0, T_Gst:=5, ZylAst:="MB3044", ZylGst:=?) + + +--- NW 86: Schleuse_Mitte_VP29 --- +CALL FB "None" , (Automatik:=Auto, Handbetrieb:=FALSE, T_Ast:=0, T_Gst:=5, ZylAst:="MB3043", ZylGst:=?) + + +--- NW 87: Schleuse_Mitte_VP30 --- +CALL FB "None" , (Automatik:=Auto, Handbetrieb:=FALSE, T_Ast:=0, T_Gst:=5, ZylAst:="MB3042", ZylGst:=?) + + +--- NW 88: Schleuse_Mitte_VP31 --- +CALL FB "None" , (Automatik:=Auto, Handbetrieb:=FALSE, T_Ast:=0, T_Gst:=5, ZylAst:="MB3041", ZylGst:=?) + + +--- NW 89: Schleuse_Mitte_VP32 --- +CALL FB "None" , (Automatik:=Auto, Handbetrieb:=FALSE, T_Ast:=0, T_Gst:=5, ZylAst:="MB3040", ZylGst:=?) + + +--- NW 90: Schleuse_Mitte_VP33 --- +CALL FB "None" , (Automatik:=Auto, Handbetrieb:=FALSE, T_Ast:=0, T_Gst:=5, ZylAst:="MB3037", ZylGst:=?) + + +--- NW 91: Schleuse_Mitte_VP34 --- +CALL FB "None" , (Automatik:=Auto, Handbetrieb:=FALSE, T_Ast:=0, T_Gst:=5, ZylAst:="MB3036", ZylGst:=?) + + +--- NW 92: Schleuse_Mitte_VP35 --- +CALL FB "None" , (Automatik:=Auto, Handbetrieb:=FALSE, T_Ast:=0, T_Gst:=5, ZylAst:="MB3035", ZylGst:=?) + + +--- NW 93: Schleuse_Mitte_VP36 --- +CALL FB "None" , (Automatik:=Auto, Handbetrieb:=FALSE, T_Ast:=0, T_Gst:=5, ZylAst:="MB3034", ZylGst:=?) + + +--- NW 94: Schleuse_Mitte_VP37 --- +CALL FB "None" , (Automatik:=Auto, Handbetrieb:=FALSE, T_Ast:=0, T_Gst:=5, ZylAst:="MB3033", ZylGst:=?) + + +--- NW 95: Schleuse_Mitte_VP38 --- +CALL FB "None" , (Automatik:=Auto, Handbetrieb:=FALSE, T_Ast:=0, T_Gst:=5, ZylAst:="MB3032", ZylGst:=?) + + +--- NW 96: Schleuse_Mitte_VP39 --- +CALL FB "None" , (Automatik:=Auto, Handbetrieb:=FALSE, T_Ast:=0, T_Gst:=5, ZylAst:="MB3031", ZylGst:=?) + + +--- NW 97: Schleuse_Mitte_VP40 --- +CALL FB "None" , (Automatik:=Auto, Handbetrieb:=FALSE, T_Ast:=0, T_Gst:=5, ZylAst:="MB3030", ZylGst:=?) + + +--- NW 98: Schleuse_Mitte_VP41 --- +CALL FB "None" , (Automatik:=Auto, Handbetrieb:=FALSE, T_Ast:=0, T_Gst:=5, ZylAst:="MB3462", ZylGst:=?) + + +--- NW 99: Schleuse_Mitte_VP42 --- +CALL FB "None" , (Automatik:=Auto, Handbetrieb:=FALSE, T_Ast:=0, T_Gst:=5, ZylAst:="MB3461", ZylGst:=?) + + +--- NW 100: Schleuse_Mitte_VP43 --- +CALL FB "None" , (Automatik:=Auto, Handbetrieb:=FALSE, T_Ast:=0, T_Gst:=5, ZylAst:="MB3460", ZylGst:=?) + + +--- NW 101: Schleuse_Mitte_VP44 --- +CALL FB "None" , (Automatik:=Auto, Handbetrieb:=FALSE, T_Ast:=0, T_Gst:=5, ZylAst:="MB3457", ZylGst:=?) + + +--- NW 102: Schleuse_Mitte_VP45 --- +CALL FB "None" , (Automatik:=Auto, Handbetrieb:=FALSE, T_Ast:=0, T_Gst:=5, ZylAst:="MB3456", ZylGst:=?) + + +--- NW 103: Schleuse_Mitte_VP46 --- +CALL FB "None" , (Automatik:=Auto, Handbetrieb:=FALSE, T_Ast:=0, T_Gst:=5, ZylAst:="MB3455", ZylGst:=?) + + +--- NW 104: Schleuse_Mitte_VP47 --- +CALL FB "None" , (Automatik:=Auto, Handbetrieb:=FALSE, T_Ast:=0, T_Gst:=5, ZylAst:="MB3454", ZylGst:=?) + + +--- NW 105: Schleuse_Mitte_VP48 --- +CALL FB "None" , (Automatik:=Auto, Handbetrieb:=FALSE, T_Ast:=0, T_Gst:=5, ZylAst:="MB3453", ZylGst:=?) + + +--- NW 106: Schleuse_Mitte_VP49 --- +CALL FB "None" , (Automatik:=Auto, Handbetrieb:=FALSE, T_Ast:=0, T_Gst:=5, ZylAst:="MB3452", ZylGst:=?) + + +--- NW 107: Schleuse_Mitte_VP50 --- +CALL FB "None" , (Automatik:=Auto, Handbetrieb:=FALSE, T_Ast:=0, T_Gst:=5, ZylAst:="MB3451", ZylGst:=?) + + +--- NW 108: Schleuse_Mitte_VP51 --- +CALL FB "None" , (Automatik:=Auto, Handbetrieb:=FALSE, T_Ast:=0, T_Gst:=5, ZylAst:="MB3450", ZylGst:=?) + + +--- NW 109: Übergabe Area-Stop 7104 --- +Next2: A BereichErr_Zusatz_7104 + JC Next // Zylinder-Stellung nicht mehr ändern + + +--- NW 110: Schleuse_Ausfahrt_VP1 --- +CALL FB "None" , (Automatik:=Auto, Handbetrieb:=FALSE, T_Ast:=0, T_Gst:=5, ZylAst:="MB3273", ZylGst:=?) + + +--- NW 111: Schleuse_Ausfahrt_VP2 --- +CALL FB "None" , (Automatik:=Auto, Handbetrieb:=FALSE, T_Ast:=0, T_Gst:=5, ZylAst:="MB3272", ZylGst:=?) + + +--- NW 112: Schleuse_Ausfahrt_VP3 --- +CALL FB "None" , (Automatik:=Auto, Handbetrieb:=FALSE, T_Ast:=0, T_Gst:=5, ZylAst:="MB3271", ZylGst:=?) + + +--- NW 113: Schleuse_Ausfahrt_VP4 --- +CALL FB "None" , (Automatik:=Auto, Handbetrieb:=FALSE, T_Ast:=0, T_Gst:=5, ZylAst:="MB3270", ZylGst:=?) + + +--- NW 114: Schleuse_Ausfahrt_VP5 --- +CALL FB "None" , (Automatik:=Auto, Handbetrieb:=FALSE, T_Ast:=0, T_Gst:=5, ZylAst:="MB3267", ZylGst:=?) + + +--- NW 115: Schleuse_Ausfahrt_VP6 --- +CALL FB "None" , (Automatik:=Auto, Handbetrieb:=FALSE, T_Ast:=0, T_Gst:=5, ZylAst:="MB3266", ZylGst:=?) + + +--- NW 116: Schleuse_Ausfahrt_VP7 --- +CALL FB "None" , (Automatik:=Auto, Handbetrieb:=FALSE, T_Ast:=0, T_Gst:=5, ZylAst:="MB3265", ZylGst:=?) + + +--- NW 117: Schleuse_Ausfahrt_VP8 --- +CALL FB "None" , (Automatik:=Auto, Handbetrieb:=FALSE, T_Ast:=0, T_Gst:=5, ZylAst:="MB3264", ZylGst:=?) + + +--- NW 118: Schleuse_Ausfahrt_VP9 --- +CALL FB "None" , (Automatik:=Auto, Handbetrieb:=FALSE, T_Ast:=0, T_Gst:=5, ZylAst:="MB3263", ZylGst:=?) + + +--- NW 119: Schleuse_Ausfahrt_VP10 --- +CALL FB "None" , (Automatik:=Auto, Handbetrieb:=FALSE, T_Ast:=0, T_Gst:=5, ZylAst:="MB3262", ZylGst:=?) + + +--- NW 120: Schleuse_Ausfahrt_VP11 --- +CALL FB "None" , (Automatik:=Auto, Handbetrieb:=FALSE, T_Ast:=0, T_Gst:=5, ZylAst:="MB3261", ZylGst:=?) + + +--- NW 121: Schleuse_Ausfahrt_VP12 --- +CALL FB "None" , (Automatik:=Auto, Handbetrieb:=FALSE, T_Ast:=0, T_Gst:=5, ZylAst:="MB3260", ZylGst:=?) + + +--- NW 122: Schleuse_Ausfahrt_VP13 --- +CALL FB "None" , (Automatik:=Auto, Handbetrieb:=FALSE, T_Ast:=0, T_Gst:=5, ZylAst:="MB3257", ZylGst:=?) + + +--- NW 123: Schleuse_Ausfahrt_VP14 --- +CALL FB "None" , (Automatik:=Auto, Handbetrieb:=FALSE, T_Ast:=0, T_Gst:=5, ZylAst:="MB3256", ZylGst:=?) + + +--- NW 124: Schleuse_Ausfahrt_VP15 --- +CALL FB "None" , (Automatik:=Auto, Handbetrieb:=FALSE, T_Ast:=0, T_Gst:=5, ZylAst:="MB3255", ZylGst:=?) + + +--- NW 125: Schleuse_Ausfahrt_VP16 --- +CALL FB "None" , (Automatik:=Auto, Handbetrieb:=FALSE, T_Ast:=0, T_Gst:=5, ZylAst:="MB3254", ZylGst:=?) + + +--- NW 126: Schleuse_Ausfahrt_VP17 --- +CALL FB "None" , (Automatik:=Auto, Handbetrieb:=FALSE, T_Ast:=0, T_Gst:=5, ZylAst:="MB3253", ZylGst:=?) + + +--- NW 127: Schleuse_Ausfahrt_VP18 --- +CALL FB "None" , (Automatik:=Auto, Handbetrieb:=FALSE, T_Ast:=0, T_Gst:=5, ZylAst:="MB3252", ZylGst:=?) + + +--- NW 128: Schleuse_Ausfahrt_VP19 --- +CALL FB "None" , (Automatik:=Auto, Handbetrieb:=FALSE, T_Ast:=0, T_Gst:=5, ZylAst:="MB3215", ZylGst:=?) + + +--- NW 129: Schleuse_Ausfahrt_VP20 --- +CALL FB "None" , (Automatik:=Auto, Handbetrieb:=FALSE, T_Ast:=0, T_Gst:=5, ZylAst:="MB3214", ZylGst:=?) + + +--- NW 130: Schleuse_Ausfahrt_VP21 --- +CALL FB "None" , (Automatik:=Auto, Handbetrieb:=FALSE, T_Ast:=0, T_Gst:=5, ZylAst:="MB3213", ZylGst:=?) + + +--- NW 131: Schleuse_Ausfahrt_VP22 --- +CALL FB "None" , (Automatik:=Auto, Handbetrieb:=FALSE, T_Ast:=0, T_Gst:=5, ZylAst:="MB3212", ZylGst:=?) + + +--- NW 132: Schleuse_Ausfahrt_VP23 --- +CALL FB "None" , (Automatik:=Auto, Handbetrieb:=FALSE, T_Ast:=0, T_Gst:=5, ZylAst:="MB3211", ZylGst:=?) + + +--- NW 133: Schleuse_Ausfahrt_VP24 --- +CALL FB "None" , (Automatik:=Auto, Handbetrieb:=FALSE, T_Ast:=0, T_Gst:=5, ZylAst:="MB3210", ZylGst:=?) + + +--- NW 134: Schleuse_Ausfahrt_VP25 --- +CALL FB "None" , (Automatik:=Auto, Handbetrieb:=FALSE, T_Ast:=0, T_Gst:=5, ZylAst:="MB3207", ZylGst:=?) + + +--- NW 135: Schleuse_Ausfahrt_VP26 --- +CALL FB "None" , (Automatik:=Auto, Handbetrieb:=FALSE, T_Ast:=0, T_Gst:=5, ZylAst:="MB3206", ZylGst:=?) + + +--- NW 136: Schleuse_Ausfahrt_VP27 --- +CALL FB "None" , (Automatik:=Auto, Handbetrieb:=FALSE, T_Ast:=0, T_Gst:=5, ZylAst:="MB3205", ZylGst:=?) + + +--- NW 137: Schleuse_Ausfahrt_VP28 --- +CALL FB "None" , (Automatik:=Auto, Handbetrieb:=FALSE, T_Ast:=0, T_Gst:=5, ZylAst:="MB3204", ZylGst:=?) + + +--- NW 138: Schleuse_Ausfahrt_VP29 --- +CALL FB "None" , (Automatik:=Auto, Handbetrieb:=FALSE, T_Ast:=0, T_Gst:=5, ZylAst:="MB3203", ZylGst:=?) + + +--- NW 139: Schleuse_Ausfahrt_VP30 --- +CALL FB "None" , (Automatik:=Auto, Handbetrieb:=FALSE, T_Ast:=0, T_Gst:=5, ZylAst:="MB3202", ZylGst:=?) + + +--- NW 140: Schleuse_Ausfahrt_VP31 --- +CALL FB "None" , (Automatik:=Auto, Handbetrieb:=FALSE, T_Ast:=0, T_Gst:=5, ZylAst:="MB3201", ZylGst:=?) + + +--- NW 141: Schleuse_Ausfahrt_VP32 --- +CALL FB "None" , (Automatik:=Auto, Handbetrieb:=FALSE, T_Ast:=0, T_Gst:=5, ZylAst:="MB3200", ZylGst:=?) + + +--- NW 142: Schleuse_Ausfahrt_VP33 --- +CALL FB "None" , (Automatik:=Auto, Handbetrieb:=FALSE, T_Ast:=0, T_Gst:=5, ZylAst:="MB3197", ZylGst:=?) + + +--- NW 143: Schleuse_Ausfahrt_VP34 --- +CALL FB "None" , (Automatik:=Auto, Handbetrieb:=FALSE, T_Ast:=0, T_Gst:=5, ZylAst:="MB3196", ZylGst:=?) + + +--- NW 144: Schleuse_Ausfahrt_VP35 --- +CALL FB "None" , (Automatik:=Auto, Handbetrieb:=FALSE, T_Ast:=0, T_Gst:=5, ZylAst:="MB3195", ZylGst:=?) + + +--- NW 145: Schleuse_Ausfahrt_VP36 --- +CALL FB "None" , (Automatik:=Auto, Handbetrieb:=FALSE, T_Ast:=0, T_Gst:=5, ZylAst:="MB3194", ZylGst:=?) + + +--- NW 146: Schleuse_Ausfahrt_VP37 --- +CALL FB "None" , (Automatik:=Auto, Handbetrieb:=FALSE, T_Ast:=0, T_Gst:=5, ZylAst:="MB3193", ZylGst:=?) + + +--- NW 147: Schleuse_Ausfahrt_VP38 --- +CALL FB "None" , (Automatik:=Auto, Handbetrieb:=FALSE, T_Ast:=0, T_Gst:=5, ZylAst:="MB3192", ZylGst:=?) + + +--- NW 148: Schleuse_Ausfahrt_VP39 --- +CALL FB "None" , (Automatik:=Auto, Handbetrieb:=FALSE, T_Ast:=0, T_Gst:=5, ZylAst:="MB3191", ZylGst:=?) + + +--- NW 149: Schleuse_Ausfahrt_VP40 --- +CALL FB "None" , (Automatik:=Auto, Handbetrieb:=FALSE, T_Ast:=0, T_Gst:=5, ZylAst:="MB3190", ZylGst:=?) + + +--- NW 150: Schleuse_Ausfahrt_VP41 --- +CALL FB "None" , (Automatik:=Auto, Handbetrieb:=FALSE, T_Ast:=0, T_Gst:=5, ZylAst:="MB3494", ZylGst:=?) + + +--- NW 151: Schleuse_Ausfahrt_VP42 --- +CALL FB "None" , (Automatik:=Auto, Handbetrieb:=FALSE, T_Ast:=0, T_Gst:=5, ZylAst:="MB3493", ZylGst:=?) + + +--- NW 152: Schleuse_Ausfahrt_VP43 --- +CALL FB "None" , (Automatik:=Auto, Handbetrieb:=FALSE, T_Ast:=0, T_Gst:=5, ZylAst:="MB3492", ZylGst:=?) + + +--- NW 153: Schleuse_Ausfahrt_VP44 --- +CALL FB "None" , (Automatik:=Auto, Handbetrieb:=FALSE, T_Ast:=0, T_Gst:=5, ZylAst:="MB3491", ZylGst:=?) + + +--- NW 154: Schleuse_Ausfahrt_VP45 --- +CALL FB "None" , (Automatik:=Auto, Handbetrieb:=FALSE, T_Ast:=0, T_Gst:=5, ZylAst:="MB3490", ZylGst:=?) + + +--- NW 155: Schleuse_Ausfahrt_VP46 --- +CALL FB "None" , (Automatik:=Auto, Handbetrieb:=FALSE, T_Ast:=0, T_Gst:=5, ZylAst:="MB3487", ZylGst:=?) + + +--- NW 156: Schleuse_Ausfahrt_VP47 --- +CALL FB "None" , (Automatik:=Auto, Handbetrieb:=FALSE, T_Ast:=0, T_Gst:=5, ZylAst:="MB3486", ZylGst:=?) + + +--- NW 157: Schleuse_Ausfahrt_VP48 --- +CALL FB "None" , (Automatik:=Auto, Handbetrieb:=FALSE, T_Ast:=0, T_Gst:=5, ZylAst:="MB3485", ZylGst:=?) + + +--- NW 158: Schleuse_Ausfahrt_VP49 --- +CALL FB "None" , (Automatik:=Auto, Handbetrieb:=FALSE, T_Ast:=0, T_Gst:=5, ZylAst:="MB3484", ZylGst:=?) + + +--- NW 159: Schleuse_Ausfahrt_VP50 --- +CALL FB "None" , (Automatik:=Auto, Handbetrieb:=FALSE, T_Ast:=0, T_Gst:=5, ZylAst:="MB3483", ZylGst:=?) + + +--- NW 160: Schleuse_Ausfahrt_VP51 --- +CALL FB "None" , (Automatik:=Auto, Handbetrieb:=FALSE, T_Ast:=0, T_Gst:=5, ZylAst:="MB3482", ZylGst:=?) + + +--- NW 161: Schleuse_3244 --- +CALL FB "None" , (Automatik:=Auto, Handbetrieb:=FALSE, T_Ast:=0, T_Gst:=5, ZylAst:="MB3244", ZylGst:=?) + + +--- NW 162: Weiche_3245 --- +CALL FB "None" , (Automatik:=Auto, Handbetrieb:=FALSE, T_Ast:=0, T_Gst:=5, ZylAst:="MB3245", ZylGst:=?) + + +--- NW 163: Ende --- +Next: BE + diff --git a/=A01+UH07-KF00/Programmbausteine/Anlage/1_Vollpuffer/Omnifahren_Vollpuffer/DVP_OmniFahren.awl b/=A01+UH07-KF00/Programmbausteine/Anlage/1_Vollpuffer/Omnifahren_Vollpuffer/DVP_OmniFahren.awl new file mode 100644 index 0000000..f158ff1 --- /dev/null +++ b/=A01+UH07-KF00/Programmbausteine/Anlage/1_Vollpuffer/Omnifahren_Vollpuffer/DVP_OmniFahren.awl @@ -0,0 +1,22 @@ +=== InstanceDB 1128: DVP_OmniFahren [DB] === +INTERFACE: + Input: + Output: + InOut: + Static: + Schleuse_3121 : "MHMOmniSchleuse" + Schleuse_3123 : "MHMOmniSchleuse" + Schleuse_3244 : "MHMOmniSchleuse_Plus" + Weiche_3245 : "MHMOmniWeiche_Plus" + Trolleys_starten : Struct + Flanke : Bool + Wartezeit_aktiv : Bool + Timer_Wartenzeit : Int + Einfahrt_VP : Struct + 3121_stop : Bool + 3123_stop : Bool + 3121_Ziel : Int + 3123_Ziel : Int + Ausfahrt_VP : Struct + 3244_stop : Bool + 3244_Ziel : Word diff --git a/=A01+UH07-KF00/Programmbausteine/Anlage/1_Vollpuffer/Omnifahren_Vollpuffer/VP_Draussen_FC.awl b/=A01+UH07-KF00/Programmbausteine/Anlage/1_Vollpuffer/Omnifahren_Vollpuffer/VP_Draussen_FC.awl new file mode 100644 index 0000000..c44da40 --- /dev/null +++ b/=A01+UH07-KF00/Programmbausteine/Anlage/1_Vollpuffer/Omnifahren_Vollpuffer/VP_Draussen_FC.awl @@ -0,0 +1,84 @@ +=== FC 1182: VP_Draussen_FC [STL] === +INTERFACE: + Input: + Output: + InOut: + Temp: + Constant: + Return: + Ret_Val : Void + +--- NW 1: Rückmeldung --- + SET // Rückmeldungen erst mal resetten + R "M180.6" // Weiterfahrt von Ziel-FC erlaubt + + +--- NW 2: Schleuse 3121 (Sorter VP_A von KontrollPlatz): Ausgefahren ? --- + L "MW190" + L 3121 // Aufruf von Schleuse 3121 ? + <>I // Nein! + JC X3121E + + L "MD182" // ShopGroup + + L "DVP_Sorter_A".Sorter_MB3121.Dyn.Scanner.Rec_IDX + +CALL FC "Reservierung_in_Puffer_eintragen" (TrolleyID:="DVP_Sorter_A".Sorter_MB3121.Dyn.Scanner.Rec_IDX, Ziel:="DVP_Sorter_A".Sorter_MB3121.Dyn.Scanner.Rec_DEST_Ziel, ShopGroup:="MD182", Gesamt_Trolley_DL:=1000) + +// Daten in Sep 3121 löschen: + L DINT#0 + T "DVP_Sorter_A".Sorter_MB3121.Dyn.Scanner.Rec_IDX // IDX + L 0 + T "DVP_Sorter_A".Sorter_MB3121.Dyn.Scanner.Rec_DEST_Ziel + +// Bei Partner (Schleuse 3123) wieder mit Schritt 0 beginnen (erneuter Ziel-FC-Aufruf) + L 0 + T "DVP_OmniFahren".Schleuse_3123.Dyn.Sk.Akt_Schritt + + L DINT#0 + T "DVP_Sorter_A".Sorter_MB3123.Dyn.Scanner.Rec_IDX // IDX + L 0 + T "DVP_Sorter_A".Sorter_MB3123.Dyn.Scanner.Rec_DEST_Ziel + + BEU + +X3121E: NOP 0 + + +--- NW 3: Schleuse 3123 (Sorter VP_A von RückführStrecke): Ausgefahren ? --- + L "MW190" + L 3123 // Aufruf von Schleuse 3123 ? + <>I // Nein! + JC X3123E + + SET +// / R "M83.1" + + L "MD182" // ShopGroup + L "DVP_OmniFahren".Schleuse_3123.Dyn.Trolley_ShopGroup // Shop-Gruppe + +CALL FC "Reservierung_in_Puffer_eintragen" (TrolleyID:="DVP_Sorter_A".Sorter_MB3123.Dyn.Scanner.Rec_IDX, Ziel:="DVP_Sorter_A".Sorter_MB3123.Dyn.Scanner.Rec_DEST_Ziel, ShopGroup:="MD182", Gesamt_Trolley_DL:=1000) + +// Daten in Sep 3123 löschen: + L DINT#0 + T "DVP_Sorter_A".Sorter_MB3123.Dyn.Scanner.Rec_IDX // IDX + L 0 + T "DVP_Sorter_A".Sorter_MB3123.Dyn.Scanner.Rec_DEST_Ziel + +// Bei Partner (Schleuse 3121) wieder mit Schritt 0 beginnen (erneuter Ziel-FC-Aufruf) + L 0 + T "DVP_OmniFahren".Schleuse_3121.Dyn.Sk.Akt_Schritt + + L DINT#0 + T "DVP_Sorter_A".Sorter_MB3121.Dyn.Scanner.Rec_IDX // IDX + L 0 + T "DVP_Sorter_A".Sorter_MB3121.Dyn.Scanner.Rec_DEST_Ziel + + BEU + +X3123E: NOP 0 + + +--- NW 4: Ende --- + BE + diff --git a/=A01+UH07-KF00/Programmbausteine/Anlage/1_Vollpuffer/Omnifahren_Vollpuffer/VP_Leser_FC.awl b/=A01+UH07-KF00/Programmbausteine/Anlage/1_Vollpuffer/Omnifahren_Vollpuffer/VP_Leser_FC.awl new file mode 100644 index 0000000..3d58f30 --- /dev/null +++ b/=A01+UH07-KF00/Programmbausteine/Anlage/1_Vollpuffer/Omnifahren_Vollpuffer/VP_Leser_FC.awl @@ -0,0 +1,101 @@ +=== FC 1180: VP_Leser_FC [STL] === +INTERFACE: + Input: + Output: + InOut: + Temp: + Zielebene : Word + Constant: + Return: + Ret_Val : Void + +--- NW 1: Rückmeldung --- +// Keine + L 0 // Evtl. Zwischenziel (MW196) + T "MW196" + + +--- NW 2: Schleuse 3121: (Sorter VP A / KontrollPlatz) --- + L "MW190" // Schleusen-Nr. + L 3121 // Aufruf von Schleuse ? + <>I // Nein! + JC X3121E + + AN "M180.0" // Lesefehler + JC Y3121 + + BEU + +Y3121: AN "M180.1" // unbekannt in TrolleysDL + BEC + +// Daten in Datenbank erzeugen: + L "DVP_OmniFahren".Schleuse_3121.Dyn.TrolleyID_Schleuse + L DINT#0 // ID bekannt? + ==D // Nein + BEC + +// /In Zukunft Anfrage bei Host! +CALL FC "Trolleydaten_neu_anlegen" (Gesamt_Trolley_DL:="DVP_OmniFahren".Schleuse_3121.Schleuse.Gesamt_Trolley_DL, TrolleyID:="DVP_OmniFahren".Schleuse_3121.Dyn.TrolleyID_Schleuse, Endziel:=16#0000, ShopGroup:=DINT#815) // / + + BEU + +X3121E: NOP 0 + + +--- NW 3: Schleuse 3123: (Sorter VP A / RückführStecke) --- + L "MW190" // Schleusen-Nr. + L 3123 // Aufruf von Schleuse ? + <>I // Nein! + JC X3123E + + AN "M180.0" // Lesefehler + JC Y3123 + + BEU + +Y3123: AN "M180.1" // unbekannt in TrolleysDL + BEC + +// Daten in Datenbank erzeugen: + L "DVP_OmniFahren".Schleuse_3123.Dyn.TrolleyID_Schleuse + L DINT#0 // ID bekannt? + ==D // Nein + BEC + +// /In Zukunft Anfrage bei Host! +CALL FC "Trolleydaten_neu_anlegen" (Gesamt_Trolley_DL:="DVP_OmniFahren".Schleuse_3123.Schleuse.Gesamt_Trolley_DL, TrolleyID:="DVP_OmniFahren".Schleuse_3123.Dyn.TrolleyID_Schleuse, Endziel:=16#0000, ShopGroup:=DINT#815) // / + + BEU + +X3123E: NOP 0 + + +--- NW 4: Schleuse 3244: (nach Puffer-Ausfahrt) --- + L "MW190" // Schleusen-Nr. + L 3244 // Aufruf von Schleuse ? + <>I // Nein! + JC X3244E + + AN "M180.0" // Lesefehler + JC Y3244 + + SET +// / S "DVP_OmniFahren".Schleuse_3244.Dyn.HMI.Abzweig_fahren/// + + BEU + +Y3244: AN "M180.1" // unbekannt in TrolleysDL + BEC + +// /In Zukunft Anfrage bei Host! +CALL FC "Trolleydaten_neu_anlegen" (Gesamt_Trolley_DL:="DVP_OmniFahren".Schleuse_3244.Schleuse.Gesamt_Trolley_DL, TrolleyID:="DVP_OmniFahren".Schleuse_3244.Dyn.TrolleyID_Schleuse, Endziel:=16#0000, ShopGroup:=815) // Erst mal, da kein Host! | / + + BEU + +X3244E: NOP 0 + + +--- NW 5: Ende --- + BE + diff --git a/=A01+UH07-KF00/Programmbausteine/Anlage/1_Vollpuffer/Omnifahren_Vollpuffer/VP_OmniFahren.awl b/=A01+UH07-KF00/Programmbausteine/Anlage/1_Vollpuffer/Omnifahren_Vollpuffer/VP_OmniFahren.awl new file mode 100644 index 0000000..59f05c9 --- /dev/null +++ b/=A01+UH07-KF00/Programmbausteine/Anlage/1_Vollpuffer/Omnifahren_Vollpuffer/VP_OmniFahren.awl @@ -0,0 +1,191 @@ +=== FB 1128: VP_OmniFahren [STL] === +INTERFACE: + Input: + Output: + InOut: + Static: + Schleuse_3121 : "MHMOmniSchleuse" + Schleuse_3123 : "MHMOmniSchleuse" + Schleuse_3244 : "MHMOmniSchleuse_Plus" + Weiche_3245 : "MHMOmniWeiche_Plus" + Trolleys_starten : Struct + Flanke : Bool + Wartezeit_aktiv : Bool + Timer_Wartenzeit : Int + Einfahrt_VP : Struct + 3121_stop : Bool + 3123_stop : Bool + 3121_Ziel : Int + 3123_Ziel : Int + Ausfahrt_VP : Struct + 3244_stop : Bool + 3244_Ziel : Word + Temp: + ErrQuit : Bool + ErrAnz : Bool + Stau_raus : Bool + Start_ok : Bool + B_aktiv : Bool + B_vor_Schleuse : Bool + B_nach_Schleuse : Bool + Antrieb_aktiv : Bool + Antrieb_vor : Bool + Antrieb_stop : Bool + Fahren_Ok : Bool + PS_aktivieren : Bool + Constant: + +--- NW 1: Systemzeug --- +// VollPuffer-Bereich: + A "DOutbound_Bereich".A01_UH07.AnlageEin + = Schleuse_3121.Dyn.Sk.Auto_akt + = Schleuse_3123.Dyn.Sk.Auto_akt + = Schleuse_3244.Dyn.Sk.Auto_akt + = Weiche_3245.Dyn.Status.Auto_akt + + AN "DOutbound_Bereich".A01_UC071.BereichErr + = Schleuse_3121.Dyn.Sk.Bereich_ok + = Schleuse_3123.Dyn.Sk.Bereich_ok + = Schleuse_3244.Dyn.Sk.Bereich_ok + = Weiche_3245.Dyn.Status.Bereich_ok + + +--- NW 2: Störungen quittieren UZ7102 --- + A "DOutbound_Bereich".A01_UZ7102.StOk_aktiv + O "DOutbound_Bereich".A01_UC071.StOk_aktiv + O "DOutbound_Bereich".A01_UH07.StOk_aktiv + = ErrQuit + + +--- NW 3: Schleuse 3121 --- +CALL FB "None" , (Schleusen_Nr:=3121, ErrQuit:=ErrQuit, B_VorSchleuse:="BG3127", B_InSchleuse:="BG3121", B_AusSchleuse:=?, B_Stau_raus:=?, Start_Ok:=?, Antrieb_Schleuse_aktiv:="MA0144", Antrieb_plus_aktiv:=?, Schleuse_geöffnet:="MB3121", RestZeit_Bereich_plus:=?, Y_Schleuse_Auf:=?, Error:=DB708.DBW500, Antrieb_Schleuse_vor:="DHWtoVP_Antriebe".MA0144.Stat.A_vor, Antrieb_Schleuse_start:="DHWtoVP_Antriebe".MA0144.Stat.A_start, Antrieb_Schleuse_stop:="DHWtoVP_Antriebe".MA0144.Stat.Stop_vor, Antrieb_Schleuse_PS:="DHWtoVP_Antriebe".MA0144.Stat.A_PS, Antrieb_plus_vor:=?, Antrieb_plus_start:=?, hStOk:=ErrAnz) // weiterfahrt über Sorter-Sep | weiterfahrt über Sorter-Sep + + AN Schleuse_3121.Dyn.Status.Reset_aktiv + JC NoR3121 + + L DINT#0 + T "DVP_Sorter_A".Sorter_MB3121.Dyn.Scanner.Rec_IDX // IDX + L 0 + T "DVP_Sorter_A".Sorter_MB3121.Separator.Default_Ziel + T "DVP_Sorter_A".Sorter_MB3121.Dyn.Scanner.Rec_DEST_Ziel + +NoR3121: NOP 0 + + +--- NW 4: Schleuse 3123 --- +CALL FB "None" , (Schleusen_Nr:=3123, ErrQuit:=ErrQuit, B_VorSchleuse:="BG3243", B_InSchleuse:="BG3123", B_AusSchleuse:=?, B_Stau_raus:=?, Start_Ok:=?, Antrieb_Schleuse_aktiv:="MA0152", Antrieb_plus_aktiv:=?, Schleuse_geöffnet:="MB3123", RestZeit_Bereich_plus:=?, Y_Schleuse_Auf:=?, Error:=DB708.DBW502, Antrieb_Schleuse_vor:="DVP_Antriebe".MA0152.Stat.A_vor, Antrieb_Schleuse_start:="DVP_Antriebe".MA0152.Stat.A_start, Antrieb_Schleuse_stop:="DVP_Antriebe".MA0152.Stat.Stop_vor, Antrieb_Schleuse_PS:="DVP_Antriebe".MA0152.Stat.A_PS, Antrieb_plus_vor:=?, Antrieb_plus_start:=?, hStOk:=ErrAnz) // weiterfahrt über Sorter-Sep | weiterfahrt über Sorter-Sep + + AN Schleuse_3123.Dyn.Status.Reset_aktiv + JC NoR3123 + + L DINT#0 + T "DVP_Sorter_A".Sorter_MB3123.Dyn.Scanner.Rec_IDX // IDX + L 0 + T "DVP_Sorter_A".Sorter_MB3123.Separator.Default_Ziel + T "DVP_Sorter_A".Sorter_MB3123.Dyn.Scanner.Rec_DEST_Ziel + +NoR3123: NOP 0 + + +--- NW 5: Störungen anzeigen UZ7102 --- + A ErrAnz + R ErrAnz + S "DOutbound_Bereich".A01_UZ7102.StOk_blinken + S "DOutbound_Bereich".A01_UC071.StOk_blinken + S "DOutbound_Bereich".A01_UH07.StOk_blinken + + +--- NW 6: Störungen quittieren UZ7105 --- + A "DOutbound_Bereich".A01_UZ7105.StOk_aktiv + O "DOutbound_Bereich".A01_UC071.StOk_aktiv + O "DOutbound_Bereich".A01_UH07.StOk_aktiv + = ErrQuit + + +--- NW 7: Wartezeit bis erneuter Trolleystart sinnvoll (wegen Staubildung) --- + A "MB3244" + Rise Trolleys_starten.Flanke + S Trolleys_starten.Wartezeit_aktiv + JCN Warten // Negierter Sprung + + L 15 // Wartezeit in Sekunden + T Trolleys_starten.Timer_Wartenzeit + +Warten: AN Trolleys_starten.Wartezeit_aktiv + O + A "MB3244" // Schleuse offen + AN "MA0150" // Aber Trolley fährt nicht + ON "1s-Impuls" + JC Wait + + L Trolleys_starten.Timer_Wartenzeit + + -1 + T Trolleys_starten.Timer_Wartenzeit + L 0 + >I + JC Wait + + SET + R Trolleys_starten.Wartezeit_aktiv + +Wait: NOP 0 + + +--- NW 8: Schleuse 3244 --- + SET + R PS_aktivieren + + AN Trolleys_starten.Wartezeit_aktiv + = Fahren_Ok + +CALL FB "None" , (Schleusen_Nr:=3244, ErrQuit:=ErrQuit, B_VorSchleuse:="BG3242", B_InSchleuse:="BG3244", B_Zähl:=?, B_Stau_raus:=?, Start_Ok:=Fahren_Ok, Antrieb_Schleuse_aktiv:="MA0150", Antrieb_plus_aktiv:="MA0152", Schleuse_geöffnet:="MB3244", RestZeit_Bereich_plus:=?, Y_Schleuse_Auf:="DVP_Zylinder".Schleuse_3244.Stat.Ast, Error:=DB708.DBW516, Antrieb_Schleuse_vor:="DVP_Antriebe".MA0150.Stat.A_vor, Antrieb_Schleuse_start:="DVP_Antriebe".MA0150.Stat.A_start, Antrieb_Schleuse_stop:="DVP_Antriebe".MA0150.Stat.Stop_vor, Antrieb_Schleuse_PS:=PS_aktivieren, Antrieb_plus_vor:="DVP_Antriebe".MA0152.Stat.A_vor, Antrieb_plus_start:="DVP_Antriebe".MA0152.Stat.A_start, hStOk:=ErrAnz) // Über Weiche +1 | Ziel-FC + + A PS_aktivieren + L s5t#40s + OnDelay "T28" + + A "T28" + = "DVP_Antriebe".MA0150.Stat.A_PS + + +--- NW 9: Weiche 3245 --- + A "MA0150" + A "MA0152" + = Antrieb_aktiv + SET + R Antrieb_vor + R Antrieb_stop + +CALL FB "None" , (Weichen_Nr:=3245, ErrQuit:=ErrQuit, Fahren_Ok:=1, B_Ziel_gerade:="BG3246", B_Ziel_abzweig:="BG3243", Antrieb_Weiche_aktiv:=Antrieb_aktiv, Antrieb_Gerade_aktiv:="MA0151", Antrieb_Abzweig_aktiv:="MA0152", Weiche_ist_AST:="MB3245", Y_Weiche_gerade:=?, Y_Weiche_abzweig:="DVP_Zylinder".Weiche_3245.Stat.Ast, Error:=DB708.DBW518, Antrieb_Weiche_vor:=Antrieb_vor, Antrieb_Weiche_stop:=Antrieb_stop, Antrieb_Weiche_gerade_vor:="DVPtoEP_Antriebe".MA0151.Stat.A_vor, Antrieb_Weiche_gerade_stop:="DVPtoEP_Antriebe".MA0151.Stat.Stop_vor, Antrieb_Weiche_abzweig_vor:="DVP_Antriebe".MA0152.Stat.A_vor, Antrieb_Weiche_abzweig_stop:="DVP_Antriebe".MA0152.Stat.Stop_vor, hStOk:=ErrAnz) + + A Antrieb_vor + A( + AN "MB3245" // Weiche gerade + AN "DVP_Sensoren".Stau_BG3246.Stat.B_Akt + O + A "MB3245" // Weiche auf Abzweig + AN "DVP_Sensoren".Stau_BG3243.Stat.B_Akt + ) + S "DVP_Antriebe".MA0150.Stat.A_vor + + A Antrieb_vor + S "DVP_Antriebe".MA0152.Stat.A_vor + S "DVP_Antriebe".MA0150.Stat.A_start + S "DVP_Antriebe".MA0152.Stat.A_start + + A Antrieb_stop + S "DVP_Antriebe".MA0150.Stat.Stop_vor +// / S "DVP_Antriebe".MA0152.Stat.Stop_vor //Sonst Blockade + + +--- NW 10: Störungen anzeigen UZ7105 --- + A ErrAnz + R ErrAnz + S "DOutbound_Bereich".A01_UZ7105.StOk_blinken + S "DOutbound_Bereich".A01_UC071.StOk_blinken + S "DOutbound_Bereich".A01_UH07.StOk_blinken + + +--- NW 11: Ende --- + BE + diff --git a/=A01+UH07-KF00/Programmbausteine/Anlage/1_Vollpuffer/Omnifahren_Vollpuffer/VP_Ziel_FC.awl b/=A01+UH07-KF00/Programmbausteine/Anlage/1_Vollpuffer/Omnifahren_Vollpuffer/VP_Ziel_FC.awl new file mode 100644 index 0000000..10a69b2 --- /dev/null +++ b/=A01+UH07-KF00/Programmbausteine/Anlage/1_Vollpuffer/Omnifahren_Vollpuffer/VP_Ziel_FC.awl @@ -0,0 +1,424 @@ +=== FC 1181: VP_Ziel_FC [STL] === +INTERFACE: + Input: + Output: + InOut: + Temp: + Ziel_hex : Word + Ziel_int : Int + Zielebene : Word + Error : Byte + Position : Int + Lager_DB : Int + Lager_DW : Int + AR1Zeiger : DWord // Statt AR1 (ging nur bis DB-Länge <= 8191 Bytes) + AR1Start : DInt // Startwert mit Offset 0 + SSDW : Int + EndZiel : Word + Variante : Int + AbrufID : DInt + Fahrlisten_TrolleyID : DInt + Fahrlisten_AbrufID : DInt + Fahrlisten_Lager : Int + ZielGruppe : Word + Trolley_unbekannt : Bool // Trolley ist nicht in DL + Express_Abruf : Bool + Error.Bit : Bool + Constant: + Return: + Ret_Val : Void + +--- NW 1: Rückmeldung --- + SET // Rückmeldungen erst mal resetten + R "M180.6" // Weiterfahrt von Ziel-FC erlaubt + + +--- NW 2: Schleuse 3121: Weiterfahren erlaubt ? (Sorter VP_A von KontrollPlatz) --- + L "MW190" + L 3121 // Aufruf von Schleuse 3121 ? + <>I // Nein! + JC X3121E + + L "VP_TravelFIFO_A".Travel_FIFO_BG3120.FIFO.ANZAHL + L 0 // Daten noch im Travel-FIFO? + <>I // Ja ! + O "MB3121" // Trolley fährt schon + O "DVP_OmniFahren".Einfahrt_VP."3121_stop" + BEC + + L 0 + T Ziel_hex + + A "SGes".Ohne_PC_Fahren // Also Ziel simulieren + JC Sim3121 + + AN "DVP_OmniFahren".Schleuse_3121.Status2.Telegramm_gesendet + JC T3121 + +// Shop-Group definiert ? + L "MD182" // ShopGroup + L DINT#0 // bekannt? + <>D // Ja ! + A( + CAC + L DINT#0815 // bekannt? + <>D // Ja ! + O "SGes".Ohne_PC_Fahren // 815 nur ohne PC fahren Ok! + ) + JC VP3121 + +// Erneute Anfrage bei Host! + A "10s-Impuls" + R "DVP_OmniFahren".Schleuse_3121.Status2.Telegramm_gesendet + + BEU + +// Voll-Puffer ermitteln oder Ziel schon fest? +VP3121: L Ziel_hex // Evtl. von Simulation + L 16#0 // schon angegeben? + <>I // Ja! + JC ZielFest3121 + +CALL FC "ShopGroup to Rein-Lager ermitteln" (ShopGroup:="MD182", Puffer:=Ziel_hex) + +// Ziel = Voll-Lager? +ZielFest3121: L Ziel_hex + L 16#F000 + AW + L 16#B000 // Ziel = VollLager ? + ==I // Ja! + R "7_HMI_Err_UH07_OB".Logistik.Kein_Platz_im_VollLager + JC LagerOk_3121 + + SET + S "7_HMI_Err_UH07_OB".Logistik.Kein_Platz_im_VollLager + + BEU // Nicht ins Lager fahren ! + +LagerOk_3121: L Ziel_hex + L 16#FFF + AW + BTI // Damit Int 101-151 als Ziel ! + T Ziel_int + +// Check, ob Ziel-Lager Inilauf aktiv hat: + T "MW220" + +CALL FC "DatenOut" (SSDB:=275, SSDW:=0, PARA:=16#0000, SEARCHDATEN:=P#M220.0, RE_VAL:="MB199", OUTDATEN:=P#M220.0, Position:=Position) // Eintrag lesen + + L "MB199" + L 2#1111111 // Bit 7 ausblenden + AW + L 0 // Fehler vorhanden? + <>I // Ja + BEC + + L "MW224" + T Lager_DB + L "MW226" + T Lager_DW + ITD + T AR1Start // Startwert mit Offset 0 + + L AR1Start // Startwert mit Offset 0 + + DINT#28 // Offset Status2 (Bit 7: Inilauf) + SLD 3 + L 7 // Damit DBX_Bit 7 + OD + T AR1Zeiger // Statt Dyn.Bereichsstop (ging nur bis DB-Länge <= 8191 Bytes) + + OPN DB[Lager_DB] // Lager-DB öffnen + + A DBX [AR1Zeiger] // Lager hat Inilauf aktiv + BEC // Sonst kann der Inilauf nie beendet werden! + +// Check, ob Ziel-Lager Platz hat: + L AR1Start // Startwert mit Offset 0 + + DINT#28 // Offset Status2 (Bit 1: Piuffer hat Platz_IN) + SLD 3 + L 1 // Damit DBX_Bit 1 + OD + T AR1Zeiger // Statt Dyn.Bereichsstop (ging nur bis DB-Länge <= 8191 Bytes) + + OPN DB[Lager_DB] // Lager-DB öffnen + + AN DBX [AR1Zeiger] // Lager hat keinen Platz + BEC + +// Ziel übergeben: + L Ziel_int + T "DVP_Sorter_A".Sorter_MB3121.Separator.Default_Ziel + T "DVP_Sorter_A".Sorter_MB3121.Dyn.Scanner.Rec_DEST_Ziel + +// Scanner-IDX übergeben: + L "DVP_OmniFahren".Schleuse_3121.Dyn.TrolleyID_Schleuse + T "DVP_Sorter_A".Sorter_MB3121.Dyn.Scanner.Rec_IDX // IDX + + CLR // Wird über MSorterRein (FB1423/5) gestartet! + S "M180.6" // Weiterfahrt ist erlaubt + + BEU + +// GOHDReqM an Host senden: +T3121: L "DVP_OmniFahren".Schleuse_3121.Dyn.TrolleyID_Schleuse + L 0 // Barcode bekannt? + ==D // Nein! + BEC // Warten! + +CALL FB "Daten_in_SendFIFO_speichern" , (TelegrammKennung[1]:='G', TelegrammKennung[2]:='O', TelegrammKennung[3]:='H', TelegrammKennung[4]:='D', TelegrammKennung[5]:='R', TelegrammKennung[6]:='e', TelegrammKennung[7]:='q', TelegrammKennung[8]:='M', TelegrammKennung[9]:=?, TelegrammKennung[10]:=?, TrolleyID:="DVP_OmniFahren".Schleuse_3121.Dyn.TrolleyID_Schleuse, StationsNr:=3121, Puffer_LinienNr:=?, StoreGroup:=?, Status_1_Int:=?, Status_2_Bit[0]:=?, Status_2_Bit[1]:=?, Status_2_Bit[2]:=?, Status_2_Bit[3]:=?, Status_2_Bit[4]:=?, Status_2_Bit[5]:=?, Status_2_Bit[6]:=?, Status_2_Bit[7]:=?, Reserve[1]_Int:=?, Reserve[2]_Int:=?, Port:=2, Ret_Val_FIFO_IN:="MB199", Error:="Error.Bit") + + AN "Error.Bit" + S "DVP_OmniFahren".Schleuse_3121.Status2.Telegramm_gesendet + + BEU + +// /Zum Testen bei Inbetriebnahme: +Sim3121: L "DVP_OmniFahren".Einfahrt_VP."3121_Ziel" + T Ziel_hex + +// Shop-Group definiert ? + L "MD182" // ShopGroup + L DINT#0 // bekannt? + <>D // Ja ! + JC VP3121 + +CALL FC "Trolleydaten_neu_anlegen" (Gesamt_Trolley_DL:="DVP_OmniFahren".Schleuse_3121.Schleuse.Gesamt_Trolley_DL, TrolleyID:="DVP_OmniFahren".Schleuse_3121.Dyn.TrolleyID_Schleuse, Endziel:=16#0000, ShopGroup:=DINT#815) // / + + BEU + +X3121E: NOP 0 + + +--- NW 3: Schleuse 3123: Weiterfahren erlaubt ? (Sorter VP_A von RückführStrecke) --- + L "MW190" + L 3123 // Aufruf von Schleuse 3123 ? + <>I // Nein! + JC X3123E + + L "VP_TravelFIFO_A".Travel_FIFO_BG3120.FIFO.ANZAHL + L 0 // Daten noch im Travel-FIFO? + <>I // Ja ! + O "MB3123" // Trolley fährt schon + O "DVP_OmniFahren".Einfahrt_VP."3123_stop" + BEC + + L 0 + T Ziel_hex + + A "SGes".Ohne_PC_Fahren // Also Ziel simulieren + JC Sim3123 + + AN "DVP_OmniFahren".Schleuse_3123.Status2.Telegramm_gesendet + JC T3123 + +// Shop-Group definiert ? + L "MD182" // ShopGroup + L DINT#0 // bekannt? + <>D // Ja ! + A( + CAC + L DINT#0815 // bekannt? + <>D // Ja ! + O "SGes".Ohne_PC_Fahren // 815 nur ohne PC fahren Ok! + ) + JC VP3123 + +// Erneute Anfrage bei Host! + A "10s-Impuls" + R "DVP_OmniFahren".Schleuse_3123.Status2.Telegramm_gesendet + + BEU + +// Voll-Puffer ermitteln oder Ziel schon fest? +VP3123: L Ziel_hex // Evtl. von Simulation + L 16#0 // schon angegeben? + <>I // Ja! + JC ZielFest3123 + +CALL FC "ShopGroup to Rein-Lager ermitteln" (ShopGroup:="MD182", Puffer:=Ziel_hex) + +// Ziel = Voll-Lager? +ZielFest3123: L Ziel_hex + L 16#F000 + AW + L 16#B000 // Ziel = VollLager ? + ==I // Ja! + R "7_HMI_Err_UH07_OB".Logistik.Kein_Platz_im_VollLager + JC LagerOk_3123 + + SET + S "7_HMI_Err_UH07_OB".Logistik.Kein_Platz_im_VollLager + +// Im Kreis nur fahren, falls Stau in Rückführstrecke: + AN "DVP_Sensoren".Stau_BG3243.Stat.B_Akt + BEC // Nicht ins Lager fahren ! + + L 16#B151 // /Vorerst immer Lager 51 fahren + T Ziel_hex + +LagerOk_3123: L Ziel_hex + L 16#FFF + AW + BTI // Damit Int101-151 als Ziel ! + T Ziel_int + +// Check, ob Ziel-Lager Inilauf aktiv hat: + T "MW220" + +CALL FC "DatenOut" (SSDB:=275, SSDW:=0, PARA:=16#0000, SEARCHDATEN:=P#M220.0, RE_VAL:="MB199", OUTDATEN:=P#M220.0, Position:=Position) // Eintrag lesen + + L "MB199" + L 2#1111111 // Bit 7 ausblenden + AW + L 0 // Fehler vorhanden? + <>I // Ja + BEC + + L "MW224" + T Lager_DB + L "MW226" + T Lager_DW + ITD + T AR1Start // Startwert mit Offset 0 + + L AR1Start // Startwert mit Offset 0 + + DINT#28 // Offset Status2 (Bit 7: Inilauf) + SLD 3 + L 7 // Damit DBX_Bit 7 + OD + T AR1Zeiger // Statt Dyn.Bereichsstop (ging nur bis DB-Länge <= 8191 Bytes) + + OPN DB[Lager_DB] // Lager-DB öffnen + + A DBX [AR1Zeiger] // Lager hat Inilauf aktiv + BEC // Sonst kann der Inilauf nie beendet werden! + +// Check, ob Ziel-Lager Platz hat: + L AR1Start // Startwert mit Offset 0 + + DINT#28 // Offset Status2 (Bit 1: Puffer hat Platz_IN) + SLD 3 + L 1 // Damit DBX_Bit 1 + OD + T AR1Zeiger // Statt Dyn.Bereichsstop (ging nur bis DB-Länge <= 8191 Bytes) + + OPN DB[Lager_DB] // Lager-DB öffnen + + AN DBX [AR1Zeiger] // Lager hat keinen Platz + BEC // Sonst kann der Inilauf nie beendet werden! + +// Ziel übergeben: + L Ziel_int + T "DVP_Sorter_A".Sorter_MB3123.Separator.Default_Ziel + T "DVP_Sorter_A".Sorter_MB3123.Dyn.Scanner.Rec_DEST_Ziel + +// Scanner-IDX übergeben: + L "DVP_OmniFahren".Schleuse_3123.Dyn.TrolleyID_Schleuse + T "DVP_Sorter_A".Sorter_MB3123.Dyn.Scanner.Rec_IDX // IDX + + CLR // Wird über MSorterRein (FB1423/5) gestartet! + S "M180.6" // Weiterfahrt ist erlaubt + + BEU + +// GOHDReqM an Host senden: +T3123: L "DVP_OmniFahren".Schleuse_3123.Dyn.TrolleyID_Schleuse + L 0 // Barcode bekannt? + ==D // Nein! + BEC // Warten! + +CALL FB "Daten_in_SendFIFO_speichern" , (TelegrammKennung[1]:='G', TelegrammKennung[2]:='O', TelegrammKennung[3]:='H', TelegrammKennung[4]:='D', TelegrammKennung[5]:='R', TelegrammKennung[6]:='e', TelegrammKennung[7]:='q', TelegrammKennung[8]:='M', TelegrammKennung[9]:=?, TelegrammKennung[10]:=?, TrolleyID:="DVP_OmniFahren".Schleuse_3123.Dyn.TrolleyID_Schleuse, StationsNr:=3123, Puffer_LinienNr:=?, StoreGroup:=?, Status_1_Int:=?, Status_2_Bit[0]:=?, Status_2_Bit[1]:=?, Status_2_Bit[2]:=?, Status_2_Bit[3]:=?, Status_2_Bit[4]:=?, Status_2_Bit[5]:=?, Status_2_Bit[6]:=?, Status_2_Bit[7]:=?, Reserve[1]_Int:=?, Reserve[2]_Int:=?, Port:=2, Ret_Val_FIFO_IN:="MB199", Error:="Error.Bit") + + AN "Error.Bit" + S "DVP_OmniFahren".Schleuse_3123.Status2.Telegramm_gesendet + + BEU + +// /Zum Testen bei Inbetriebnahme: +Sim3123: L "DVP_OmniFahren".Einfahrt_VP."3123_Ziel" + T Ziel_hex + +// Shop-Group definiert ? + L "MD182" // ShopGroup + L DINT#0 // bekannt? + <>D // Ja ! + JC VP3123 + +CALL FC "Trolleydaten_neu_anlegen" (Gesamt_Trolley_DL:="DVP_OmniFahren".Schleuse_3123.Schleuse.Gesamt_Trolley_DL, TrolleyID:="DVP_OmniFahren".Schleuse_3123.Dyn.TrolleyID_Schleuse, Endziel:=16#0000, ShopGroup:=DINT#815) // / + + BEU + +X3123E: NOP 0 + + +--- NW 4: Schleuse 3244: (Nach LagerAusfahrt) --- + L "MW190" + L 3244 // Aufruf von Schleuse XXXX? + <>I // Nein! + JC PS5E + + A "DVP_OmniFahren".Ausfahrt_VP."3244_stop" + BEC + + L "DVP_OmniFahren".Ausfahrt_VP."3244_Ziel" + L 16#0 // Vorgabe? + ==I // Nein! + JC N3244 + + CAC + L 16#B000 // Vollpuffer + ==I // Ja! + JC A3244 + + CAC + L 16#E000 // Entnahmepuffer + ==I // Ja! + JC G3244 + + BEU + +// Aufgrund der Daten fahren: +N3244: NOP 0 +// EndZiel = Entnahmepuffer? + L "MW194" // EndZiel + L 16#F000 + AW + T ZielGruppe + L 16#E000 // Entnahme-Puffer + ==I // Ja ! + JC G3244 // Gerade fahren + +// Leer-Trolley?: + L "DVP_OmniFahren".Schleuse_3244.Dyn.Trolley_ShopGroup + L DINT#-1 // leerer Trolley ? + ==D // Ja ! + A( + L "DLLeerPuffer_leer".Datenlistenkopf.AnzahlEintraege + L 5 // Genügend Platz vorhanden ? + >=I // Ja ! + ) + JC G3244 // Gerade fahren + + JU A3244 // Rest Abzweig fahren + +A3244: L 16#3243 + T "MW198" // Weichenziel + + AN "DVP_Sensoren".Stau_BG3243.Stat.B_Akt + S "M180.6" // Weiterfahrt ist erlaubt + + BEU + +G3244: L 16#3246 + T "MW198" // Weichenziel + + AN "DVP_Sensoren".Stau_BG3246.Stat.B_Akt + S "M180.6" // Weiterfahrt ist erlaubt + + BEU + +PS5E: NOP 0 + + +--- NW 5: Ende --- + BE + diff --git a/=A01+UH07-KF00/Programmbausteine/Anlage/1_Vollpuffer/PufferAuslagern/DVPAuslagern.awl b/=A01+UH07-KF00/Programmbausteine/Anlage/1_Vollpuffer/PufferAuslagern/DVPAuslagern.awl new file mode 100644 index 0000000..cdf3461 --- /dev/null +++ b/=A01+UH07-KF00/Programmbausteine/Anlage/1_Vollpuffer/PufferAuslagern/DVPAuslagern.awl @@ -0,0 +1,17 @@ +=== InstanceDB 1429: DVPAuslagern [DB] === +INTERFACE: + Input: + Output: + InOut: + Static: + Ausfahren_Ok_B : "MAusfahrFreigabe_neu" + Impuls_MB3480 : "MImpulsGeber" + Ausfahren_Ok_A : "MAusfahrFreigabe_neu" + Impuls_MB3185 : "MImpulsGeber" + Simulation_Auslagern : Struct + Auslagern_aktiv : Bool + Wartezeit : Int + Vollpuffer_Check : Int + Vollpuffer_Aktiv : Int + Last_Check : Int + Position : Int diff --git a/=A01+UH07-KF00/Programmbausteine/Anlage/1_Vollpuffer/PufferAuslagern/DVollPufferStreckenA.awl b/=A01+UH07-KF00/Programmbausteine/Anlage/1_Vollpuffer/PufferAuslagern/DVollPufferStreckenA.awl new file mode 100644 index 0000000..87e4626 --- /dev/null +++ b/=A01+UH07-KF00/Programmbausteine/Anlage/1_Vollpuffer/PufferAuslagern/DVollPufferStreckenA.awl @@ -0,0 +1,85 @@ +=== InstanceDB 1431: DVollPufferStreckenA [DB] === +INTERFACE: + Input: + Output: + InOut: + Static: + VollPuffer_01 : "MHMVollpuffer" + VollPuffer_02 : "MHMVollpuffer" + VollPuffer_03 : "MHMVollpuffer" + VollPuffer_04 : "MHMVollpuffer" + VollPuffer_05 : "MHMVollpuffer" + VollPuffer_06 : "MHMVollpuffer" + VollPuffer_07 : "MHMVollpuffer" + VollPuffer_08 : "MHMVollpuffer" + VollPuffer_09 : "MHMVollpuffer" + VollPuffer_10 : "MHMVollpuffer" + VollPuffer_11 : "MHMVollpuffer" + VollPuffer_12 : "MHMVollpuffer" + VollPuffer_13 : "MHMVollpuffer" + VollPuffer_14 : "MHMVollpuffer" + VollPuffer_15 : "MHMVollpuffer" + VollPuffer_16 : "MHMVollpuffer" + VollPuffer_17 : "MHMVollpuffer" + VollPuffer_18 : "MHMVollpuffer" + VollPuffer_19 : "MHMVollpuffer" + VollPuffer_20 : "MHMVollpuffer" + VollPuffer_21 : "MHMVollpuffer" + VollPuffer_22 : "MHMVollpuffer" + VollPuffer_23 : "MHMVollpuffer" + VollPuffer_24 : "MHMVollpuffer" + VollPuffer_25 : "MHMVollpuffer" + Simulation : Struct + Gefahren_1 : Bool + Gefahren_2 : Bool + Gefahren_3 : Bool + Gefahren_4 : Bool + Gefahren_5 : Bool + Gefahren_6 : Bool + Gefahren_7 : Bool + Gefahren_8 : Bool + Gefahren_9 : Bool + Gefahren_10 : Bool + Gefahren_11 : Bool + Gefahren_12 : Bool + Gefahren_13 : Bool + Gefahren_14 : Bool + Gefahren_15 : Bool + Gefahren_16 : Bool + Gefahren_17 : Bool + Gefahren_18 : Bool + Gefahren_19 : Bool + Gefahren_20 : Bool + Gefahren_21 : Bool + Gefahren_22 : Bool + Gefahren_23 : Bool + Gefahren_24 : Bool + Gefahren_25 : Bool + Gefahren_26 : Bool + Gefahren_27 : Bool + Gefahren_28 : Bool + Gefahren_29 : Bool + Gefahren_30 : Bool + Gefahren_31 : Bool + Gefahren_32 : Bool + Gefahren_33 : Bool + Gefahren_34 : Bool + Gefahren_35 : Bool + Gefahren_36 : Bool + Gefahren_37 : Bool + Gefahren_38 : Bool + Gefahren_39 : Bool + Gefahren_40 : Bool + Gefahren_41 : Bool + Gefahren_42 : Bool + Gefahren_43 : Bool + Gefahren_44 : Bool + Gefahren_45 : Bool + Gefahren_46 : Bool + Gefahren_47 : Bool + Gefahren_48 : Bool + Gefahren_49 : Bool + Gefahren_50 : Bool + Gefahren_51 : Bool + Ohne_PC_fahren : Bool + Ein_Inilauf_aktiv : Bool diff --git a/=A01+UH07-KF00/Programmbausteine/Anlage/1_Vollpuffer/PufferAuslagern/DVollPufferStreckenB.awl b/=A01+UH07-KF00/Programmbausteine/Anlage/1_Vollpuffer/PufferAuslagern/DVollPufferStreckenB.awl new file mode 100644 index 0000000..f2b129f --- /dev/null +++ b/=A01+UH07-KF00/Programmbausteine/Anlage/1_Vollpuffer/PufferAuslagern/DVollPufferStreckenB.awl @@ -0,0 +1,61 @@ +=== InstanceDB 1432: DVollPufferStreckenB [DB] === +INTERFACE: + Input: + Output: + InOut: + Static: + VollPuffer_26 : "MHMVollpuffer" + VollPuffer_27 : "MHMVollpuffer" + VollPuffer_28 : "MHMVollpuffer" + VollPuffer_29 : "MHMVollpuffer" + VollPuffer_30 : "MHMVollpuffer" + VollPuffer_31 : "MHMVollpuffer" + VollPuffer_32 : "MHMVollpuffer" + VollPuffer_33 : "MHMVollpuffer" + VollPuffer_34 : "MHMVollpuffer" + VollPuffer_35 : "MHMVollpuffer" + VollPuffer_36 : "MHMVollpuffer" + VollPuffer_37 : "MHMVollpuffer" + VollPuffer_38 : "MHMVollpuffer" + VollPuffer_39 : "MHMVollpuffer" + VollPuffer_40 : "MHMVollpuffer" + VollPuffer_41 : "MHMVollpuffer" + VollPuffer_42 : "MHMVollpuffer" + VollPuffer_43 : "MHMVollpuffer" + VollPuffer_44 : "MHMVollpuffer" + VollPuffer_45 : "MHMVollpuffer" + VollPuffer_46 : "MHMVollpuffer" + VollPuffer_47 : "MHMVollpuffer" + VollPuffer_48 : "MHMVollpuffer" + VollPuffer_49 : "MHMVollpuffer" + VollPuffer_50 : "MHMVollpuffer" + VollPuffer_51 : "MHMÜberlauf_VP" + Simulation : Struct + Gefahren_26 : Bool + Gefahren_27 : Bool + Gefahren_28 : Bool + Gefahren_29 : Bool + Gefahren_30 : Bool + Gefahren_31 : Bool + Gefahren_32 : Bool + Gefahren_33 : Bool + Gefahren_34 : Bool + Gefahren_35 : Bool + Gefahren_36 : Bool + Gefahren_37 : Bool + Gefahren_38 : Bool + Gefahren_39 : Bool + Gefahren_40 : Bool + Gefahren_41 : Bool + Gefahren_42 : Bool + Gefahren_43 : Bool + Gefahren_44 : Bool + Gefahren_45 : Bool + Gefahren_46 : Bool + Gefahren_47 : Bool + Gefahren_48 : Bool + Gefahren_49 : Bool + Gefahren_50 : Bool + Gefahren_51 : Bool + Ohne_PC_fahren : Bool + Ein_Inilauf_aktiv : Bool diff --git a/=A01+UH07-KF00/Programmbausteine/Anlage/1_Vollpuffer/PufferAuslagern/VPAuslagern.awl b/=A01+UH07-KF00/Programmbausteine/Anlage/1_Vollpuffer/PufferAuslagern/VPAuslagern.awl new file mode 100644 index 0000000..21fcc63 --- /dev/null +++ b/=A01+UH07-KF00/Programmbausteine/Anlage/1_Vollpuffer/PufferAuslagern/VPAuslagern.awl @@ -0,0 +1,103 @@ +=== FB 1429: VPAuslagern [STL] === +INTERFACE: + Input: + Output: + InOut: + Static: + Ausfahren_Ok_B : "MAusfahrFreigabe_neu" + Impuls_MB3480 : "MImpulsGeber" + Ausfahren_Ok_A : "MAusfahrFreigabe_neu" + Impuls_MB3185 : "MImpulsGeber" + Simulation_Auslagern : Struct + Auslagern_aktiv : Bool + Wartezeit : Int + Vollpuffer_Check : Int + Vollpuffer_Aktiv : Int + Last_Check : Int + Position : Int + Temp: + ErrQuit : Bool + Antrieb : Bool + Impuls : Bool + Lager_X : Int + Lager_DB : Int + Lager_DW : Int + AR1Zeiger : DWord // Statt AR1 (ging nur bis DB-Länge <= 8191 Bytes) + AR1Start : DInt // Startwert mit Offset 0 + Constant: + +--- NW 1: Inkremente B über Zahnrad-Sensor --- + A "DOutbound_Bereich".A01_UZ7107.StOk_aktiv + O "DOutbound_Bereich".A01_UZ7104.StOk_aktiv + = ErrQuit + +CALL FB "None" , (Ink_DB:=?, B_Zaehlen:="BG3480", Antrieb_aktiv:="MA0147", Quit:=ErrQuit, Zeit_Signal_zu_lang:=?, Zeit_Kein_Signal:=?, Signal:=Impuls, Err_Kein_Signal:="7_HMI_Err_UH07_OB".Impulsgeber_3480.Kein_Signal, Err_Signal_zu_lang:="7_HMI_Err_UH07_OB".Impulsgeber_3480.Signal_zu_lang) + + A( + O "7_HMI_Err_UH07_OB".Impulsgeber_3480.Kein_Signal + O "7_HMI_Err_UH07_OB".Impulsgeber_3480.Signal_zu_lang + ) + AN ErrQuit + S "DVP_Antriebe".MA0147.Stat.Stop_vor + + A( + O "7_HMI_Err_UH07_OB".Impulsgeber_3480.Kein_Signal + O "7_HMI_Err_UH07_OB".Impulsgeber_3480.Signal_zu_lang + ) + S "DOutbound_Bereich".A01_UZ7107.StOk_blinken + S "DOutbound_Bereich".A01_UZ7104.StOk_blinken + + +--- NW 2: Ausfahr-Steuerung B --- +CALL FB "None" , (Impuls:=Impuls, Vorbei_1:="BG3183", Vorbei_2:="BG3182", Vorbei_3:="BG3181", Vorbei_4:="BG3481", Vorbei_5:=?, Inks_Vorbei_1:=12, Inks_Vorbei_2:=158, Inks_Vorbei_3:=353, Inks_Vorbei_4:=509, Inks_Vorbei_5:=?, Antrieb_ein:="DVP_Antriebe".MA0147.Stat.A_start) + + +--- NW 3: Lager-Raus-Antrieb B stoppen --- + A "BG3183" + A( + O "MB3207" // Puffer 25 Ausfahren aktiv + O "MB3210" // Puffer 24 Ausfahren aktiv + O "MB3211" // Puffer 23 Ausfahren aktiv + O "MB3212" // Puffer 22 Ausfahren aktiv + O "MB3213" // Puffer 21 Ausfahren aktiv + O "MB3214" // Puffer 20 Ausfahren aktiv + O "MB3215" // Puffer 19 Ausfahren aktiv + O "DVP_Sensoren".Stau_BG3184.Stat.B_Akt // Stau in Aus-Puffer-Strecke A + O "DVP_Sensoren".Stau_BG3240.Stat.B_Akt // Stau in Aus-Puffer-Strecke A + O "DVP_Sensoren".Stau_BG3241.Stat.B_Akt // Stau in Aus-Puffer-Strecke A + O "DVP_Sensoren".Stau_BG3242.Stat.B_Akt // Stau in Aus-Puffer-Strecke A + ) + S "DVP_Antriebe".MA0147.Stat.Stop_vor + + +--- NW 4: Inkremente A über Zahnrad-Sensor --- + A "DOutbound_Bereich".A01_UZ7104.StOk_aktiv + O "DOutbound_Bereich".A01_UZ7105.StOk_aktiv + O "DOutbound_Bereich".A01_UC071.StOk_aktiv + = ErrQuit + +CALL FB "None" , (Ink_DB:=?, B_Zaehlen:="BG3185", Antrieb_aktiv:="MA0150", Quit:=ErrQuit, Zeit_Signal_zu_lang:=?, Zeit_Kein_Signal:=?, Signal:=Impuls, Err_Kein_Signal:="7_HMI_Err_UH07_OB".Impulsgeber_3185.Kein_Signal, Err_Signal_zu_lang:="7_HMI_Err_UH07_OB".Impulsgeber_3185.Signal_zu_lang) + + A( + O "7_HMI_Err_UH07_OB".Impulsgeber_3185.Kein_Signal + O "7_HMI_Err_UH07_OB".Impulsgeber_3185.Signal_zu_lang + ) + AN ErrQuit + S "DVP_Antriebe".MA0150.Stat.Stop_vor + + A( + O "7_HMI_Err_UH07_OB".Impulsgeber_3185.Kein_Signal + O "7_HMI_Err_UH07_OB".Impulsgeber_3185.Signal_zu_lang + ) + S "DOutbound_Bereich".A01_UZ7104.StOk_blinken + S "DOutbound_Bereich".A01_UZ7105.StOk_blinken + S "DOutbound_Bereich".A01_UC071.StOk_blinken + + +--- NW 5: Ausfahr-Steuerung A --- +CALL FB "None" , (Impuls:=Impuls, Vorbei_1:="BG3241", Vorbei_2:="BG3240", Vorbei_3:="BG3184", Vorbei_4:="BG3183", Vorbei_5:=?, Inks_Vorbei_1:=146, Inks_Vorbei_2:=331, Inks_Vorbei_3:=489, Inks_Vorbei_4:=482, Inks_Vorbei_5:=630, Antrieb_ein:="DVP_Antriebe".MA0150.Stat.A_start) + + +--- NW 6: Ende --- + BE + diff --git a/=A01+UH07-KF00/Programmbausteine/Anlage/1_Vollpuffer/PufferAuslagern/VollPufferStreckenA.awl b/=A01+UH07-KF00/Programmbausteine/Anlage/1_Vollpuffer/PufferAuslagern/VollPufferStreckenA.awl new file mode 100644 index 0000000..98cae9b --- /dev/null +++ b/=A01+UH07-KF00/Programmbausteine/Anlage/1_Vollpuffer/PufferAuslagern/VollPufferStreckenA.awl @@ -0,0 +1,1061 @@ +=== FB 1431: VollPufferStreckenA [STL] === +INTERFACE: + Input: + Output: + InOut: + Static: + VollPuffer_01 : "MHMVollpuffer" + VollPuffer_02 : "MHMVollpuffer" + VollPuffer_03 : "MHMVollpuffer" + VollPuffer_04 : "MHMVollpuffer" + VollPuffer_05 : "MHMVollpuffer" + VollPuffer_06 : "MHMVollpuffer" + VollPuffer_07 : "MHMVollpuffer" + VollPuffer_08 : "MHMVollpuffer" + VollPuffer_09 : "MHMVollpuffer" + VollPuffer_10 : "MHMVollpuffer" + VollPuffer_11 : "MHMVollpuffer" + VollPuffer_12 : "MHMVollpuffer" + VollPuffer_13 : "MHMVollpuffer" + VollPuffer_14 : "MHMVollpuffer" + VollPuffer_15 : "MHMVollpuffer" + VollPuffer_16 : "MHMVollpuffer" + VollPuffer_17 : "MHMVollpuffer" + VollPuffer_18 : "MHMVollpuffer" + VollPuffer_19 : "MHMVollpuffer" + VollPuffer_20 : "MHMVollpuffer" + VollPuffer_21 : "MHMVollpuffer" + VollPuffer_22 : "MHMVollpuffer" + VollPuffer_23 : "MHMVollpuffer" + VollPuffer_24 : "MHMVollpuffer" + VollPuffer_25 : "MHMVollpuffer" + Simulation : Struct + Gefahren_1 : Bool + Gefahren_2 : Bool + Gefahren_3 : Bool + Gefahren_4 : Bool + Gefahren_5 : Bool + Gefahren_6 : Bool + Gefahren_7 : Bool + Gefahren_8 : Bool + Gefahren_9 : Bool + Gefahren_10 : Bool + Gefahren_11 : Bool + Gefahren_12 : Bool + Gefahren_13 : Bool + Gefahren_14 : Bool + Gefahren_15 : Bool + Gefahren_16 : Bool + Gefahren_17 : Bool + Gefahren_18 : Bool + Gefahren_19 : Bool + Gefahren_20 : Bool + Gefahren_21 : Bool + Gefahren_22 : Bool + Gefahren_23 : Bool + Gefahren_24 : Bool + Gefahren_25 : Bool + Gefahren_26 : Bool + Gefahren_27 : Bool + Gefahren_28 : Bool + Gefahren_29 : Bool + Gefahren_30 : Bool + Gefahren_31 : Bool + Gefahren_32 : Bool + Gefahren_33 : Bool + Gefahren_34 : Bool + Gefahren_35 : Bool + Gefahren_36 : Bool + Gefahren_37 : Bool + Gefahren_38 : Bool + Gefahren_39 : Bool + Gefahren_40 : Bool + Gefahren_41 : Bool + Gefahren_42 : Bool + Gefahren_43 : Bool + Gefahren_44 : Bool + Gefahren_45 : Bool + Gefahren_46 : Bool + Gefahren_47 : Bool + Gefahren_48 : Bool + Gefahren_49 : Bool + Gefahren_50 : Bool + Gefahren_51 : Bool + Ohne_PC_fahren : Bool + Ein_Inilauf_aktiv : Bool + Input: + B_VollPufferEinfahrt : Bool // Sensor Trolley fährt in VollPuffer + Output: + InOut: + Static: + Para : Struct + VollPuffer_DL_DB : Int // Einsprung VollPuffer-Datenliste-DB + VollPuffer_DL_DW : Int // Einsprung VollPuffer-Datenliste-DW + Puffer : "UDLHMVollPuffer" // Statische VollPufferdaten (aus DL) + Dyn : Struct + Status : Struct + Puffer_initialisieren_OUT : Bool // VollPuffer initialisieren + HMI : Struct + ShopGroup_IN : Int // Variante im VollPuffer (IN:PLC, OUT:PLC) + Puffer_initialisieren : Bool // VollPuffer initialisieren (IN:HMI, Out:PLC) + Einlagern_gesperrt : Bool // EinVollPuffern gesperrt (IN:HMI, OUT:HMI) + AusLagern_gesperrt : Bool // AusVollPuffern gesperrt (IN:HMI, OUT:HMI) + Reservierungs_DL : Struct + Res_Trolley : Array[1..12] of Struct // Reservierter Trolley für VollPuffer + Trolley_DL_Einfahrt : Struct // AB DW350: Liste der Trolleys im VollPuffer + None: + VollPuffer_Nr : Int // Nummer der VollPuffer + Puffer_Typ : Int // VollPufferntyp = 276 (VollPuffer) + Puffer_Position : Word // VollPuffer-Position (für Gesamt-TrolleyDatenliste) + Puffer_Position_Inks : Int // VollPuffer-Position_Inks (für Ausfahrsteuerung) + Input: + B_VollPufferEinfahrt : Bool // Sensor Trolley fährt in VollPuffer + Output: + InOut: + Static: + Para : Struct + VollPuffer_DL_DB : Int // Einsprung VollPuffer-Datenliste-DB + VollPuffer_DL_DW : Int // Einsprung VollPuffer-Datenliste-DW + Puffer : "UDLHMVollPuffer" // Statische VollPufferdaten (aus DL) + Dyn : Struct + Status : Struct + Puffer_initialisieren_OUT : Bool // VollPuffer initialisieren + HMI : Struct + ShopGroup_IN : Int // Variante im VollPuffer (IN:PLC, OUT:PLC) + Puffer_initialisieren : Bool // VollPuffer initialisieren (IN:HMI, Out:PLC) + Einlagern_gesperrt : Bool // EinVollPuffern gesperrt (IN:HMI, OUT:HMI) + AusLagern_gesperrt : Bool // AusVollPuffern gesperrt (IN:HMI, OUT:HMI) + Reservierungs_DL : Struct + Res_Trolley : Array[1..12] of Struct // Reservierter Trolley für VollPuffer + Trolley_DL_Einfahrt : Struct // AB DW350: Liste der Trolleys im VollPuffer + None: + VollPuffer_Nr : Int // Nummer der VollPuffer + Puffer_Typ : Int // VollPufferntyp = 276 (VollPuffer) + Puffer_Position : Word // VollPuffer-Position (für Gesamt-TrolleyDatenliste) + Puffer_Position_Inks : Int // VollPuffer-Position_Inks (für Ausfahrsteuerung) + Input: + B_VollPufferEinfahrt : Bool // Sensor Trolley fährt in VollPuffer + Output: + InOut: + Static: + Para : Struct + VollPuffer_DL_DB : Int // Einsprung VollPuffer-Datenliste-DB + VollPuffer_DL_DW : Int // Einsprung VollPuffer-Datenliste-DW + Puffer : "UDLHMVollPuffer" // Statische VollPufferdaten (aus DL) + Dyn : Struct + Status : Struct + Puffer_initialisieren_OUT : Bool // VollPuffer initialisieren + HMI : Struct + ShopGroup_IN : Int // Variante im VollPuffer (IN:PLC, OUT:PLC) + Puffer_initialisieren : Bool // VollPuffer initialisieren (IN:HMI, Out:PLC) + Einlagern_gesperrt : Bool // EinVollPuffern gesperrt (IN:HMI, OUT:HMI) + AusLagern_gesperrt : Bool // AusVollPuffern gesperrt (IN:HMI, OUT:HMI) + Reservierungs_DL : Struct + Res_Trolley : Array[1..12] of Struct // Reservierter Trolley für VollPuffer + Trolley_DL_Einfahrt : Struct // AB DW350: Liste der Trolleys im VollPuffer + None: + VollPuffer_Nr : Int // Nummer der VollPuffer + Puffer_Typ : Int // VollPufferntyp = 276 (VollPuffer) + Puffer_Position : Word // VollPuffer-Position (für Gesamt-TrolleyDatenliste) + Puffer_Position_Inks : Int // VollPuffer-Position_Inks (für Ausfahrsteuerung) + Input: + B_VollPufferEinfahrt : Bool // Sensor Trolley fährt in VollPuffer + Output: + InOut: + Static: + Para : Struct + VollPuffer_DL_DB : Int // Einsprung VollPuffer-Datenliste-DB + VollPuffer_DL_DW : Int // Einsprung VollPuffer-Datenliste-DW + Puffer : "UDLHMVollPuffer" // Statische VollPufferdaten (aus DL) + Dyn : Struct + Status : Struct + Puffer_initialisieren_OUT : Bool // VollPuffer initialisieren + HMI : Struct + ShopGroup_IN : Int // Variante im VollPuffer (IN:PLC, OUT:PLC) + Puffer_initialisieren : Bool // VollPuffer initialisieren (IN:HMI, Out:PLC) + Einlagern_gesperrt : Bool // EinVollPuffern gesperrt (IN:HMI, OUT:HMI) + AusLagern_gesperrt : Bool // AusVollPuffern gesperrt (IN:HMI, OUT:HMI) + Reservierungs_DL : Struct + Res_Trolley : Array[1..12] of Struct // Reservierter Trolley für VollPuffer + Trolley_DL_Einfahrt : Struct // AB DW350: Liste der Trolleys im VollPuffer + None: + VollPuffer_Nr : Int // Nummer der VollPuffer + Puffer_Typ : Int // VollPufferntyp = 276 (VollPuffer) + Puffer_Position : Word // VollPuffer-Position (für Gesamt-TrolleyDatenliste) + Puffer_Position_Inks : Int // VollPuffer-Position_Inks (für Ausfahrsteuerung) + Input: + B_VollPufferEinfahrt : Bool // Sensor Trolley fährt in VollPuffer + Output: + InOut: + Static: + Para : Struct + VollPuffer_DL_DB : Int // Einsprung VollPuffer-Datenliste-DB + VollPuffer_DL_DW : Int // Einsprung VollPuffer-Datenliste-DW + Puffer : "UDLHMVollPuffer" // Statische VollPufferdaten (aus DL) + Dyn : Struct + Status : Struct + Puffer_initialisieren_OUT : Bool // VollPuffer initialisieren + HMI : Struct + ShopGroup_IN : Int // Variante im VollPuffer (IN:PLC, OUT:PLC) + Puffer_initialisieren : Bool // VollPuffer initialisieren (IN:HMI, Out:PLC) + Einlagern_gesperrt : Bool // EinVollPuffern gesperrt (IN:HMI, OUT:HMI) + AusLagern_gesperrt : Bool // AusVollPuffern gesperrt (IN:HMI, OUT:HMI) + Reservierungs_DL : Struct + Res_Trolley : Array[1..12] of Struct // Reservierter Trolley für VollPuffer + Trolley_DL_Einfahrt : Struct // AB DW350: Liste der Trolleys im VollPuffer + None: + VollPuffer_Nr : Int // Nummer der VollPuffer + Puffer_Typ : Int // VollPufferntyp = 276 (VollPuffer) + Puffer_Position : Word // VollPuffer-Position (für Gesamt-TrolleyDatenliste) + Puffer_Position_Inks : Int // VollPuffer-Position_Inks (für Ausfahrsteuerung) + Input: + B_VollPufferEinfahrt : Bool // Sensor Trolley fährt in VollPuffer + Output: + InOut: + Static: + Para : Struct + VollPuffer_DL_DB : Int // Einsprung VollPuffer-Datenliste-DB + VollPuffer_DL_DW : Int // Einsprung VollPuffer-Datenliste-DW + Puffer : "UDLHMVollPuffer" // Statische VollPufferdaten (aus DL) + Dyn : Struct + Status : Struct + Puffer_initialisieren_OUT : Bool // VollPuffer initialisieren + HMI : Struct + ShopGroup_IN : Int // Variante im VollPuffer (IN:PLC, OUT:PLC) + Puffer_initialisieren : Bool // VollPuffer initialisieren (IN:HMI, Out:PLC) + Einlagern_gesperrt : Bool // EinVollPuffern gesperrt (IN:HMI, OUT:HMI) + AusLagern_gesperrt : Bool // AusVollPuffern gesperrt (IN:HMI, OUT:HMI) + Reservierungs_DL : Struct + Res_Trolley : Array[1..12] of Struct // Reservierter Trolley für VollPuffer + Trolley_DL_Einfahrt : Struct // AB DW350: Liste der Trolleys im VollPuffer + None: + VollPuffer_Nr : Int // Nummer der VollPuffer + Puffer_Typ : Int // VollPufferntyp = 276 (VollPuffer) + Puffer_Position : Word // VollPuffer-Position (für Gesamt-TrolleyDatenliste) + Puffer_Position_Inks : Int // VollPuffer-Position_Inks (für Ausfahrsteuerung) + Input: + B_VollPufferEinfahrt : Bool // Sensor Trolley fährt in VollPuffer + Output: + InOut: + Static: + Para : Struct + VollPuffer_DL_DB : Int // Einsprung VollPuffer-Datenliste-DB + VollPuffer_DL_DW : Int // Einsprung VollPuffer-Datenliste-DW + Puffer : "UDLHMVollPuffer" // Statische VollPufferdaten (aus DL) + Dyn : Struct + Status : Struct + Puffer_initialisieren_OUT : Bool // VollPuffer initialisieren + HMI : Struct + ShopGroup_IN : Int // Variante im VollPuffer (IN:PLC, OUT:PLC) + Puffer_initialisieren : Bool // VollPuffer initialisieren (IN:HMI, Out:PLC) + Einlagern_gesperrt : Bool // EinVollPuffern gesperrt (IN:HMI, OUT:HMI) + AusLagern_gesperrt : Bool // AusVollPuffern gesperrt (IN:HMI, OUT:HMI) + Reservierungs_DL : Struct + Res_Trolley : Array[1..12] of Struct // Reservierter Trolley für VollPuffer + Trolley_DL_Einfahrt : Struct // AB DW350: Liste der Trolleys im VollPuffer + None: + VollPuffer_Nr : Int // Nummer der VollPuffer + Puffer_Typ : Int // VollPufferntyp = 276 (VollPuffer) + Puffer_Position : Word // VollPuffer-Position (für Gesamt-TrolleyDatenliste) + Puffer_Position_Inks : Int // VollPuffer-Position_Inks (für Ausfahrsteuerung) + Input: + B_VollPufferEinfahrt : Bool // Sensor Trolley fährt in VollPuffer + Output: + InOut: + Static: + Para : Struct + VollPuffer_DL_DB : Int // Einsprung VollPuffer-Datenliste-DB + VollPuffer_DL_DW : Int // Einsprung VollPuffer-Datenliste-DW + Puffer : "UDLHMVollPuffer" // Statische VollPufferdaten (aus DL) + Dyn : Struct + Status : Struct + Puffer_initialisieren_OUT : Bool // VollPuffer initialisieren + HMI : Struct + ShopGroup_IN : Int // Variante im VollPuffer (IN:PLC, OUT:PLC) + Puffer_initialisieren : Bool // VollPuffer initialisieren (IN:HMI, Out:PLC) + Einlagern_gesperrt : Bool // EinVollPuffern gesperrt (IN:HMI, OUT:HMI) + AusLagern_gesperrt : Bool // AusVollPuffern gesperrt (IN:HMI, OUT:HMI) + Reservierungs_DL : Struct + Res_Trolley : Array[1..12] of Struct // Reservierter Trolley für VollPuffer + Trolley_DL_Einfahrt : Struct // AB DW350: Liste der Trolleys im VollPuffer + None: + VollPuffer_Nr : Int // Nummer der VollPuffer + Puffer_Typ : Int // VollPufferntyp = 276 (VollPuffer) + Puffer_Position : Word // VollPuffer-Position (für Gesamt-TrolleyDatenliste) + Puffer_Position_Inks : Int // VollPuffer-Position_Inks (für Ausfahrsteuerung) + Input: + B_VollPufferEinfahrt : Bool // Sensor Trolley fährt in VollPuffer + Output: + InOut: + Static: + Para : Struct + VollPuffer_DL_DB : Int // Einsprung VollPuffer-Datenliste-DB + VollPuffer_DL_DW : Int // Einsprung VollPuffer-Datenliste-DW + Puffer : "UDLHMVollPuffer" // Statische VollPufferdaten (aus DL) + Dyn : Struct + Status : Struct + Puffer_initialisieren_OUT : Bool // VollPuffer initialisieren + HMI : Struct + ShopGroup_IN : Int // Variante im VollPuffer (IN:PLC, OUT:PLC) + Puffer_initialisieren : Bool // VollPuffer initialisieren (IN:HMI, Out:PLC) + Einlagern_gesperrt : Bool // EinVollPuffern gesperrt (IN:HMI, OUT:HMI) + AusLagern_gesperrt : Bool // AusVollPuffern gesperrt (IN:HMI, OUT:HMI) + Reservierungs_DL : Struct + Res_Trolley : Array[1..12] of Struct // Reservierter Trolley für VollPuffer + Trolley_DL_Einfahrt : Struct // AB DW350: Liste der Trolleys im VollPuffer + None: + VollPuffer_Nr : Int // Nummer der VollPuffer + Puffer_Typ : Int // VollPufferntyp = 276 (VollPuffer) + Puffer_Position : Word // VollPuffer-Position (für Gesamt-TrolleyDatenliste) + Puffer_Position_Inks : Int // VollPuffer-Position_Inks (für Ausfahrsteuerung) + Input: + B_VollPufferEinfahrt : Bool // Sensor Trolley fährt in VollPuffer + Output: + InOut: + Static: + Para : Struct + VollPuffer_DL_DB : Int // Einsprung VollPuffer-Datenliste-DB + VollPuffer_DL_DW : Int // Einsprung VollPuffer-Datenliste-DW + Puffer : "UDLHMVollPuffer" // Statische VollPufferdaten (aus DL) + Dyn : Struct + Status : Struct + Puffer_initialisieren_OUT : Bool // VollPuffer initialisieren + HMI : Struct + ShopGroup_IN : Int // Variante im VollPuffer (IN:PLC, OUT:PLC) + Puffer_initialisieren : Bool // VollPuffer initialisieren (IN:HMI, Out:PLC) + Einlagern_gesperrt : Bool // EinVollPuffern gesperrt (IN:HMI, OUT:HMI) + AusLagern_gesperrt : Bool // AusVollPuffern gesperrt (IN:HMI, OUT:HMI) + Reservierungs_DL : Struct + Res_Trolley : Array[1..12] of Struct // Reservierter Trolley für VollPuffer + Trolley_DL_Einfahrt : Struct // AB DW350: Liste der Trolleys im VollPuffer + None: + VollPuffer_Nr : Int // Nummer der VollPuffer + Puffer_Typ : Int // VollPufferntyp = 276 (VollPuffer) + Puffer_Position : Word // VollPuffer-Position (für Gesamt-TrolleyDatenliste) + Puffer_Position_Inks : Int // VollPuffer-Position_Inks (für Ausfahrsteuerung) + Input: + B_VollPufferEinfahrt : Bool // Sensor Trolley fährt in VollPuffer + Output: + InOut: + Static: + Para : Struct + VollPuffer_DL_DB : Int // Einsprung VollPuffer-Datenliste-DB + VollPuffer_DL_DW : Int // Einsprung VollPuffer-Datenliste-DW + Puffer : "UDLHMVollPuffer" // Statische VollPufferdaten (aus DL) + Dyn : Struct + Status : Struct + Puffer_initialisieren_OUT : Bool // VollPuffer initialisieren + HMI : Struct + ShopGroup_IN : Int // Variante im VollPuffer (IN:PLC, OUT:PLC) + Puffer_initialisieren : Bool // VollPuffer initialisieren (IN:HMI, Out:PLC) + Einlagern_gesperrt : Bool // EinVollPuffern gesperrt (IN:HMI, OUT:HMI) + AusLagern_gesperrt : Bool // AusVollPuffern gesperrt (IN:HMI, OUT:HMI) + Reservierungs_DL : Struct + Res_Trolley : Array[1..12] of Struct // Reservierter Trolley für VollPuffer + Trolley_DL_Einfahrt : Struct // AB DW350: Liste der Trolleys im VollPuffer + None: + VollPuffer_Nr : Int // Nummer der VollPuffer + Puffer_Typ : Int // VollPufferntyp = 276 (VollPuffer) + Puffer_Position : Word // VollPuffer-Position (für Gesamt-TrolleyDatenliste) + Puffer_Position_Inks : Int // VollPuffer-Position_Inks (für Ausfahrsteuerung) + Input: + B_VollPufferEinfahrt : Bool // Sensor Trolley fährt in VollPuffer + Output: + InOut: + Static: + Para : Struct + VollPuffer_DL_DB : Int // Einsprung VollPuffer-Datenliste-DB + VollPuffer_DL_DW : Int // Einsprung VollPuffer-Datenliste-DW + Puffer : "UDLHMVollPuffer" // Statische VollPufferdaten (aus DL) + Dyn : Struct + Status : Struct + Puffer_initialisieren_OUT : Bool // VollPuffer initialisieren + HMI : Struct + ShopGroup_IN : Int // Variante im VollPuffer (IN:PLC, OUT:PLC) + Puffer_initialisieren : Bool // VollPuffer initialisieren (IN:HMI, Out:PLC) + Einlagern_gesperrt : Bool // EinVollPuffern gesperrt (IN:HMI, OUT:HMI) + AusLagern_gesperrt : Bool // AusVollPuffern gesperrt (IN:HMI, OUT:HMI) + Reservierungs_DL : Struct + Res_Trolley : Array[1..12] of Struct // Reservierter Trolley für VollPuffer + Trolley_DL_Einfahrt : Struct // AB DW350: Liste der Trolleys im VollPuffer + None: + VollPuffer_Nr : Int // Nummer der VollPuffer + Puffer_Typ : Int // VollPufferntyp = 276 (VollPuffer) + Puffer_Position : Word // VollPuffer-Position (für Gesamt-TrolleyDatenliste) + Puffer_Position_Inks : Int // VollPuffer-Position_Inks (für Ausfahrsteuerung) + Input: + B_VollPufferEinfahrt : Bool // Sensor Trolley fährt in VollPuffer + Output: + InOut: + Static: + Para : Struct + VollPuffer_DL_DB : Int // Einsprung VollPuffer-Datenliste-DB + VollPuffer_DL_DW : Int // Einsprung VollPuffer-Datenliste-DW + Puffer : "UDLHMVollPuffer" // Statische VollPufferdaten (aus DL) + Dyn : Struct + Status : Struct + Puffer_initialisieren_OUT : Bool // VollPuffer initialisieren + HMI : Struct + ShopGroup_IN : Int // Variante im VollPuffer (IN:PLC, OUT:PLC) + Puffer_initialisieren : Bool // VollPuffer initialisieren (IN:HMI, Out:PLC) + Einlagern_gesperrt : Bool // EinVollPuffern gesperrt (IN:HMI, OUT:HMI) + AusLagern_gesperrt : Bool // AusVollPuffern gesperrt (IN:HMI, OUT:HMI) + Reservierungs_DL : Struct + Res_Trolley : Array[1..12] of Struct // Reservierter Trolley für VollPuffer + Trolley_DL_Einfahrt : Struct // AB DW350: Liste der Trolleys im VollPuffer + None: + VollPuffer_Nr : Int // Nummer der VollPuffer + Puffer_Typ : Int // VollPufferntyp = 276 (VollPuffer) + Puffer_Position : Word // VollPuffer-Position (für Gesamt-TrolleyDatenliste) + Puffer_Position_Inks : Int // VollPuffer-Position_Inks (für Ausfahrsteuerung) + Input: + B_VollPufferEinfahrt : Bool // Sensor Trolley fährt in VollPuffer + Output: + InOut: + Static: + Para : Struct + VollPuffer_DL_DB : Int // Einsprung VollPuffer-Datenliste-DB + VollPuffer_DL_DW : Int // Einsprung VollPuffer-Datenliste-DW + Puffer : "UDLHMVollPuffer" // Statische VollPufferdaten (aus DL) + Dyn : Struct + Status : Struct + Puffer_initialisieren_OUT : Bool // VollPuffer initialisieren + HMI : Struct + ShopGroup_IN : Int // Variante im VollPuffer (IN:PLC, OUT:PLC) + Puffer_initialisieren : Bool // VollPuffer initialisieren (IN:HMI, Out:PLC) + Einlagern_gesperrt : Bool // EinVollPuffern gesperrt (IN:HMI, OUT:HMI) + AusLagern_gesperrt : Bool // AusVollPuffern gesperrt (IN:HMI, OUT:HMI) + Reservierungs_DL : Struct + Res_Trolley : Array[1..12] of Struct // Reservierter Trolley für VollPuffer + Trolley_DL_Einfahrt : Struct // AB DW350: Liste der Trolleys im VollPuffer + None: + VollPuffer_Nr : Int // Nummer der VollPuffer + Puffer_Typ : Int // VollPufferntyp = 276 (VollPuffer) + Puffer_Position : Word // VollPuffer-Position (für Gesamt-TrolleyDatenliste) + Puffer_Position_Inks : Int // VollPuffer-Position_Inks (für Ausfahrsteuerung) + Input: + B_VollPufferEinfahrt : Bool // Sensor Trolley fährt in VollPuffer + Output: + InOut: + Static: + Para : Struct + VollPuffer_DL_DB : Int // Einsprung VollPuffer-Datenliste-DB + VollPuffer_DL_DW : Int // Einsprung VollPuffer-Datenliste-DW + Puffer : "UDLHMVollPuffer" // Statische VollPufferdaten (aus DL) + Dyn : Struct + Status : Struct + Puffer_initialisieren_OUT : Bool // VollPuffer initialisieren + HMI : Struct + ShopGroup_IN : Int // Variante im VollPuffer (IN:PLC, OUT:PLC) + Puffer_initialisieren : Bool // VollPuffer initialisieren (IN:HMI, Out:PLC) + Einlagern_gesperrt : Bool // EinVollPuffern gesperrt (IN:HMI, OUT:HMI) + AusLagern_gesperrt : Bool // AusVollPuffern gesperrt (IN:HMI, OUT:HMI) + Reservierungs_DL : Struct + Res_Trolley : Array[1..12] of Struct // Reservierter Trolley für VollPuffer + Trolley_DL_Einfahrt : Struct // AB DW350: Liste der Trolleys im VollPuffer + None: + VollPuffer_Nr : Int // Nummer der VollPuffer + Puffer_Typ : Int // VollPufferntyp = 276 (VollPuffer) + Puffer_Position : Word // VollPuffer-Position (für Gesamt-TrolleyDatenliste) + Puffer_Position_Inks : Int // VollPuffer-Position_Inks (für Ausfahrsteuerung) + Input: + B_VollPufferEinfahrt : Bool // Sensor Trolley fährt in VollPuffer + Output: + InOut: + Static: + Para : Struct + VollPuffer_DL_DB : Int // Einsprung VollPuffer-Datenliste-DB + VollPuffer_DL_DW : Int // Einsprung VollPuffer-Datenliste-DW + Puffer : "UDLHMVollPuffer" // Statische VollPufferdaten (aus DL) + Dyn : Struct + Status : Struct + Puffer_initialisieren_OUT : Bool // VollPuffer initialisieren + HMI : Struct + ShopGroup_IN : Int // Variante im VollPuffer (IN:PLC, OUT:PLC) + Puffer_initialisieren : Bool // VollPuffer initialisieren (IN:HMI, Out:PLC) + Einlagern_gesperrt : Bool // EinVollPuffern gesperrt (IN:HMI, OUT:HMI) + AusLagern_gesperrt : Bool // AusVollPuffern gesperrt (IN:HMI, OUT:HMI) + Reservierungs_DL : Struct + Res_Trolley : Array[1..12] of Struct // Reservierter Trolley für VollPuffer + Trolley_DL_Einfahrt : Struct // AB DW350: Liste der Trolleys im VollPuffer + None: + VollPuffer_Nr : Int // Nummer der VollPuffer + Puffer_Typ : Int // VollPufferntyp = 276 (VollPuffer) + Puffer_Position : Word // VollPuffer-Position (für Gesamt-TrolleyDatenliste) + Puffer_Position_Inks : Int // VollPuffer-Position_Inks (für Ausfahrsteuerung) + Input: + B_VollPufferEinfahrt : Bool // Sensor Trolley fährt in VollPuffer + Output: + InOut: + Static: + Para : Struct + VollPuffer_DL_DB : Int // Einsprung VollPuffer-Datenliste-DB + VollPuffer_DL_DW : Int // Einsprung VollPuffer-Datenliste-DW + Puffer : "UDLHMVollPuffer" // Statische VollPufferdaten (aus DL) + Dyn : Struct + Status : Struct + Puffer_initialisieren_OUT : Bool // VollPuffer initialisieren + HMI : Struct + ShopGroup_IN : Int // Variante im VollPuffer (IN:PLC, OUT:PLC) + Puffer_initialisieren : Bool // VollPuffer initialisieren (IN:HMI, Out:PLC) + Einlagern_gesperrt : Bool // EinVollPuffern gesperrt (IN:HMI, OUT:HMI) + AusLagern_gesperrt : Bool // AusVollPuffern gesperrt (IN:HMI, OUT:HMI) + Reservierungs_DL : Struct + Res_Trolley : Array[1..12] of Struct // Reservierter Trolley für VollPuffer + Trolley_DL_Einfahrt : Struct // AB DW350: Liste der Trolleys im VollPuffer + None: + VollPuffer_Nr : Int // Nummer der VollPuffer + Puffer_Typ : Int // VollPufferntyp = 276 (VollPuffer) + Puffer_Position : Word // VollPuffer-Position (für Gesamt-TrolleyDatenliste) + Puffer_Position_Inks : Int // VollPuffer-Position_Inks (für Ausfahrsteuerung) + Input: + B_VollPufferEinfahrt : Bool // Sensor Trolley fährt in VollPuffer + Output: + InOut: + Static: + Para : Struct + VollPuffer_DL_DB : Int // Einsprung VollPuffer-Datenliste-DB + VollPuffer_DL_DW : Int // Einsprung VollPuffer-Datenliste-DW + Puffer : "UDLHMVollPuffer" // Statische VollPufferdaten (aus DL) + Dyn : Struct + Status : Struct + Puffer_initialisieren_OUT : Bool // VollPuffer initialisieren + HMI : Struct + ShopGroup_IN : Int // Variante im VollPuffer (IN:PLC, OUT:PLC) + Puffer_initialisieren : Bool // VollPuffer initialisieren (IN:HMI, Out:PLC) + Einlagern_gesperrt : Bool // EinVollPuffern gesperrt (IN:HMI, OUT:HMI) + AusLagern_gesperrt : Bool // AusVollPuffern gesperrt (IN:HMI, OUT:HMI) + Reservierungs_DL : Struct + Res_Trolley : Array[1..12] of Struct // Reservierter Trolley für VollPuffer + Trolley_DL_Einfahrt : Struct // AB DW350: Liste der Trolleys im VollPuffer + None: + VollPuffer_Nr : Int // Nummer der VollPuffer + Puffer_Typ : Int // VollPufferntyp = 276 (VollPuffer) + Puffer_Position : Word // VollPuffer-Position (für Gesamt-TrolleyDatenliste) + Puffer_Position_Inks : Int // VollPuffer-Position_Inks (für Ausfahrsteuerung) + Input: + B_VollPufferEinfahrt : Bool // Sensor Trolley fährt in VollPuffer + Output: + InOut: + Static: + Para : Struct + VollPuffer_DL_DB : Int // Einsprung VollPuffer-Datenliste-DB + VollPuffer_DL_DW : Int // Einsprung VollPuffer-Datenliste-DW + Puffer : "UDLHMVollPuffer" // Statische VollPufferdaten (aus DL) + Dyn : Struct + Status : Struct + Puffer_initialisieren_OUT : Bool // VollPuffer initialisieren + HMI : Struct + ShopGroup_IN : Int // Variante im VollPuffer (IN:PLC, OUT:PLC) + Puffer_initialisieren : Bool // VollPuffer initialisieren (IN:HMI, Out:PLC) + Einlagern_gesperrt : Bool // EinVollPuffern gesperrt (IN:HMI, OUT:HMI) + AusLagern_gesperrt : Bool // AusVollPuffern gesperrt (IN:HMI, OUT:HMI) + Reservierungs_DL : Struct + Res_Trolley : Array[1..12] of Struct // Reservierter Trolley für VollPuffer + Trolley_DL_Einfahrt : Struct // AB DW350: Liste der Trolleys im VollPuffer + None: + VollPuffer_Nr : Int // Nummer der VollPuffer + Puffer_Typ : Int // VollPufferntyp = 276 (VollPuffer) + Puffer_Position : Word // VollPuffer-Position (für Gesamt-TrolleyDatenliste) + Puffer_Position_Inks : Int // VollPuffer-Position_Inks (für Ausfahrsteuerung) + Input: + B_VollPufferEinfahrt : Bool // Sensor Trolley fährt in VollPuffer + Output: + InOut: + Static: + Para : Struct + VollPuffer_DL_DB : Int // Einsprung VollPuffer-Datenliste-DB + VollPuffer_DL_DW : Int // Einsprung VollPuffer-Datenliste-DW + Puffer : "UDLHMVollPuffer" // Statische VollPufferdaten (aus DL) + Dyn : Struct + Status : Struct + Puffer_initialisieren_OUT : Bool // VollPuffer initialisieren + HMI : Struct + ShopGroup_IN : Int // Variante im VollPuffer (IN:PLC, OUT:PLC) + Puffer_initialisieren : Bool // VollPuffer initialisieren (IN:HMI, Out:PLC) + Einlagern_gesperrt : Bool // EinVollPuffern gesperrt (IN:HMI, OUT:HMI) + AusLagern_gesperrt : Bool // AusVollPuffern gesperrt (IN:HMI, OUT:HMI) + Reservierungs_DL : Struct + Res_Trolley : Array[1..12] of Struct // Reservierter Trolley für VollPuffer + Trolley_DL_Einfahrt : Struct // AB DW350: Liste der Trolleys im VollPuffer + None: + VollPuffer_Nr : Int // Nummer der VollPuffer + Puffer_Typ : Int // VollPufferntyp = 276 (VollPuffer) + Puffer_Position : Word // VollPuffer-Position (für Gesamt-TrolleyDatenliste) + Puffer_Position_Inks : Int // VollPuffer-Position_Inks (für Ausfahrsteuerung) + Temp: + ErrQuit : Bool + ErrAnz : Bool + Antrieb : Bool + Stau : Bool + Start_Ok : Bool + SorterReset : Bool + Puffer : Int + Position : Int + Lager_DB : Int + Lager_DW : Int + AR1Zeiger : DWord // Statt AR1 (ging nur bis DB-Länge <= 8191 Bytes) + AR1Start : DInt // Startwert mit Offset 0 + Constant: + +--- NW 1: Systemzeug --- + A "DOutbound_Bereich".A01_UH07.AnlageEin + = VollPuffer_01.Dyn.Sk_OUT.Auto_akt + = VollPuffer_02.Dyn.Sk_OUT.Auto_akt + = VollPuffer_03.Dyn.Sk_OUT.Auto_akt + = VollPuffer_04.Dyn.Sk_OUT.Auto_akt + = VollPuffer_05.Dyn.Sk_OUT.Auto_akt + = VollPuffer_06.Dyn.Sk_OUT.Auto_akt + = VollPuffer_07.Dyn.Sk_OUT.Auto_akt + = VollPuffer_08.Dyn.Sk_OUT.Auto_akt + = VollPuffer_09.Dyn.Sk_OUT.Auto_akt + = VollPuffer_10.Dyn.Sk_OUT.Auto_akt + = VollPuffer_11.Dyn.Sk_OUT.Auto_akt + = VollPuffer_12.Dyn.Sk_OUT.Auto_akt + = VollPuffer_13.Dyn.Sk_OUT.Auto_akt + = VollPuffer_14.Dyn.Sk_OUT.Auto_akt + = VollPuffer_15.Dyn.Sk_OUT.Auto_akt + = VollPuffer_16.Dyn.Sk_OUT.Auto_akt + = VollPuffer_17.Dyn.Sk_OUT.Auto_akt + = VollPuffer_18.Dyn.Sk_OUT.Auto_akt + = VollPuffer_19.Dyn.Sk_OUT.Auto_akt + = VollPuffer_20.Dyn.Sk_OUT.Auto_akt + = VollPuffer_21.Dyn.Sk_OUT.Auto_akt + = VollPuffer_22.Dyn.Sk_OUT.Auto_akt + = VollPuffer_23.Dyn.Sk_OUT.Auto_akt + = VollPuffer_24.Dyn.Sk_OUT.Auto_akt + = VollPuffer_25.Dyn.Sk_OUT.Auto_akt + + + AN "DOutbound_Bereich".A01_UC071.BereichErr + = VollPuffer_01.Dyn.Sk_OUT.Bereich_ok + = VollPuffer_02.Dyn.Sk_OUT.Bereich_ok + = VollPuffer_03.Dyn.Sk_OUT.Bereich_ok + = VollPuffer_04.Dyn.Sk_OUT.Bereich_ok + = VollPuffer_05.Dyn.Sk_OUT.Bereich_ok + = VollPuffer_06.Dyn.Sk_OUT.Bereich_ok + = VollPuffer_07.Dyn.Sk_OUT.Bereich_ok + = VollPuffer_08.Dyn.Sk_OUT.Bereich_ok + = VollPuffer_09.Dyn.Sk_OUT.Bereich_ok + = VollPuffer_10.Dyn.Sk_OUT.Bereich_ok + = VollPuffer_11.Dyn.Sk_OUT.Bereich_ok + = VollPuffer_12.Dyn.Sk_OUT.Bereich_ok + = VollPuffer_13.Dyn.Sk_OUT.Bereich_ok + = VollPuffer_14.Dyn.Sk_OUT.Bereich_ok + = VollPuffer_15.Dyn.Sk_OUT.Bereich_ok + = VollPuffer_16.Dyn.Sk_OUT.Bereich_ok + = VollPuffer_17.Dyn.Sk_OUT.Bereich_ok + = VollPuffer_18.Dyn.Sk_OUT.Bereich_ok + = VollPuffer_19.Dyn.Sk_OUT.Bereich_ok + = VollPuffer_20.Dyn.Sk_OUT.Bereich_ok + = VollPuffer_21.Dyn.Sk_OUT.Bereich_ok + = VollPuffer_22.Dyn.Sk_OUT.Bereich_ok + = VollPuffer_23.Dyn.Sk_OUT.Bereich_ok + = VollPuffer_24.Dyn.Sk_OUT.Bereich_ok + = VollPuffer_25.Dyn.Sk_OUT.Bereich_ok + +// Bereichshalt: + CLR // Nicht verbaut + R VollPuffer_01.Dyn.Sk_OUT.Bereich_ok + + +--- NW 2: Leer-Puffer-Liste neu erstellen --- + A "DLVollPuffer_leer".Reorganisieren + R "DLVollPuffer_leer".Reorganisieren + JCN NixReo + +CALL FC "DatenReset" (SSDB:=100, SSDW:=0, RE_VAL:="MB199") + + SET + R "DVollPufferStreckenA".VollPuffer_01.Status2.Eintrag_DL_Leerliste_erfolgt + R "DVollPufferStreckenA".VollPuffer_02.Status2.Eintrag_DL_Leerliste_erfolgt + R "DVollPufferStreckenA".VollPuffer_03.Status2.Eintrag_DL_Leerliste_erfolgt + R "DVollPufferStreckenA".VollPuffer_04.Status2.Eintrag_DL_Leerliste_erfolgt + R "DVollPufferStreckenA".VollPuffer_05.Status2.Eintrag_DL_Leerliste_erfolgt + R "DVollPufferStreckenA".VollPuffer_06.Status2.Eintrag_DL_Leerliste_erfolgt + R "DVollPufferStreckenA".VollPuffer_07.Status2.Eintrag_DL_Leerliste_erfolgt + R "DVollPufferStreckenA".VollPuffer_08.Status2.Eintrag_DL_Leerliste_erfolgt + R "DVollPufferStreckenA".VollPuffer_09.Status2.Eintrag_DL_Leerliste_erfolgt + R "DVollPufferStreckenA".VollPuffer_10.Status2.Eintrag_DL_Leerliste_erfolgt + R "DVollPufferStreckenA".VollPuffer_11.Status2.Eintrag_DL_Leerliste_erfolgt + R "DVollPufferStreckenA".VollPuffer_12.Status2.Eintrag_DL_Leerliste_erfolgt + R "DVollPufferStreckenA".VollPuffer_13.Status2.Eintrag_DL_Leerliste_erfolgt + R "DVollPufferStreckenA".VollPuffer_14.Status2.Eintrag_DL_Leerliste_erfolgt + R "DVollPufferStreckenA".VollPuffer_15.Status2.Eintrag_DL_Leerliste_erfolgt + R "DVollPufferStreckenA".VollPuffer_16.Status2.Eintrag_DL_Leerliste_erfolgt + R "DVollPufferStreckenA".VollPuffer_17.Status2.Eintrag_DL_Leerliste_erfolgt + R "DVollPufferStreckenA".VollPuffer_18.Status2.Eintrag_DL_Leerliste_erfolgt + R "DVollPufferStreckenA".VollPuffer_19.Status2.Eintrag_DL_Leerliste_erfolgt + R "DVollPufferStreckenA".VollPuffer_20.Status2.Eintrag_DL_Leerliste_erfolgt + R "DVollPufferStreckenA".VollPuffer_21.Status2.Eintrag_DL_Leerliste_erfolgt + R "DVollPufferStreckenA".VollPuffer_22.Status2.Eintrag_DL_Leerliste_erfolgt + R "DVollPufferStreckenA".VollPuffer_23.Status2.Eintrag_DL_Leerliste_erfolgt + R "DVollPufferStreckenA".VollPuffer_24.Status2.Eintrag_DL_Leerliste_erfolgt + R "DVollPufferStreckenA".VollPuffer_25.Status2.Eintrag_DL_Leerliste_erfolgt + R "DVollPufferStreckenB".VollPuffer_26.Status2.Eintrag_DL_Leerliste_erfolgt + R "DVollPufferStreckenB".VollPuffer_27.Status2.Eintrag_DL_Leerliste_erfolgt + R "DVollPufferStreckenB".VollPuffer_28.Status2.Eintrag_DL_Leerliste_erfolgt + R "DVollPufferStreckenB".VollPuffer_29.Status2.Eintrag_DL_Leerliste_erfolgt + R "DVollPufferStreckenB".VollPuffer_30.Status2.Eintrag_DL_Leerliste_erfolgt + R "DVollPufferStreckenB".VollPuffer_31.Status2.Eintrag_DL_Leerliste_erfolgt + R "DVollPufferStreckenB".VollPuffer_32.Status2.Eintrag_DL_Leerliste_erfolgt + R "DVollPufferStreckenB".VollPuffer_33.Status2.Eintrag_DL_Leerliste_erfolgt + R "DVollPufferStreckenB".VollPuffer_34.Status2.Eintrag_DL_Leerliste_erfolgt + R "DVollPufferStreckenB".VollPuffer_35.Status2.Eintrag_DL_Leerliste_erfolgt + R "DVollPufferStreckenB".VollPuffer_36.Status2.Eintrag_DL_Leerliste_erfolgt + R "DVollPufferStreckenB".VollPuffer_37.Status2.Eintrag_DL_Leerliste_erfolgt + R "DVollPufferStreckenB".VollPuffer_38.Status2.Eintrag_DL_Leerliste_erfolgt + R "DVollPufferStreckenB".VollPuffer_39.Status2.Eintrag_DL_Leerliste_erfolgt + R "DVollPufferStreckenB".VollPuffer_40.Status2.Eintrag_DL_Leerliste_erfolgt + R "DVollPufferStreckenB".VollPuffer_41.Status2.Eintrag_DL_Leerliste_erfolgt + R "DVollPufferStreckenB".VollPuffer_42.Status2.Eintrag_DL_Leerliste_erfolgt + R "DVollPufferStreckenB".VollPuffer_43.Status2.Eintrag_DL_Leerliste_erfolgt + R "DVollPufferStreckenB".VollPuffer_44.Status2.Eintrag_DL_Leerliste_erfolgt + R "DVollPufferStreckenB".VollPuffer_45.Status2.Eintrag_DL_Leerliste_erfolgt + R "DVollPufferStreckenB".VollPuffer_46.Status2.Eintrag_DL_Leerliste_erfolgt + R "DVollPufferStreckenB".VollPuffer_47.Status2.Eintrag_DL_Leerliste_erfolgt + R "DVollPufferStreckenB".VollPuffer_48.Status2.Eintrag_DL_Leerliste_erfolgt + R "DVollPufferStreckenB".VollPuffer_49.Status2.Eintrag_DL_Leerliste_erfolgt + R "DVollPufferStreckenB".VollPuffer_50.Status2.Eintrag_DL_Leerliste_erfolgt + +NixReo: NOP 0 + + +--- NW 3: Einfahr-Puffer-Liste neu erstellen --- + A "DLVollPuffer_ShopGroup_einfahren".Reorganisieren + R "DLVollPuffer_ShopGroup_einfahren".Reorganisieren + JCN NixReoRein + +CALL FC "DatenReset" (SSDB:=101, SSDW:=0, RE_VAL:="MB199") + + SET + R "DVollPufferStreckenA".VollPuffer_01.Status2.Eintrag_DL_Reinliste_erfolgt + R "DVollPufferStreckenA".VollPuffer_02.Status2.Eintrag_DL_Reinliste_erfolgt + R "DVollPufferStreckenA".VollPuffer_03.Status2.Eintrag_DL_Reinliste_erfolgt + R "DVollPufferStreckenA".VollPuffer_04.Status2.Eintrag_DL_Reinliste_erfolgt + R "DVollPufferStreckenA".VollPuffer_05.Status2.Eintrag_DL_Reinliste_erfolgt + R "DVollPufferStreckenA".VollPuffer_06.Status2.Eintrag_DL_Reinliste_erfolgt + R "DVollPufferStreckenA".VollPuffer_07.Status2.Eintrag_DL_Reinliste_erfolgt + R "DVollPufferStreckenA".VollPuffer_08.Status2.Eintrag_DL_Reinliste_erfolgt + R "DVollPufferStreckenA".VollPuffer_09.Status2.Eintrag_DL_Reinliste_erfolgt + R "DVollPufferStreckenA".VollPuffer_10.Status2.Eintrag_DL_Reinliste_erfolgt + R "DVollPufferStreckenA".VollPuffer_11.Status2.Eintrag_DL_Reinliste_erfolgt + R "DVollPufferStreckenA".VollPuffer_12.Status2.Eintrag_DL_Reinliste_erfolgt + R "DVollPufferStreckenA".VollPuffer_13.Status2.Eintrag_DL_Reinliste_erfolgt + R "DVollPufferStreckenA".VollPuffer_14.Status2.Eintrag_DL_Reinliste_erfolgt + R "DVollPufferStreckenA".VollPuffer_15.Status2.Eintrag_DL_Reinliste_erfolgt + R "DVollPufferStreckenA".VollPuffer_16.Status2.Eintrag_DL_Reinliste_erfolgt + R "DVollPufferStreckenA".VollPuffer_17.Status2.Eintrag_DL_Reinliste_erfolgt + R "DVollPufferStreckenA".VollPuffer_18.Status2.Eintrag_DL_Reinliste_erfolgt + R "DVollPufferStreckenA".VollPuffer_19.Status2.Eintrag_DL_Reinliste_erfolgt + R "DVollPufferStreckenA".VollPuffer_20.Status2.Eintrag_DL_Reinliste_erfolgt + R "DVollPufferStreckenA".VollPuffer_21.Status2.Eintrag_DL_Reinliste_erfolgt + R "DVollPufferStreckenA".VollPuffer_22.Status2.Eintrag_DL_Reinliste_erfolgt + R "DVollPufferStreckenA".VollPuffer_23.Status2.Eintrag_DL_Reinliste_erfolgt + R "DVollPufferStreckenA".VollPuffer_24.Status2.Eintrag_DL_Reinliste_erfolgt + R "DVollPufferStreckenA".VollPuffer_25.Status2.Eintrag_DL_Reinliste_erfolgt + R "DVollPufferStreckenB".VollPuffer_26.Status2.Eintrag_DL_Reinliste_erfolgt + R "DVollPufferStreckenB".VollPuffer_27.Status2.Eintrag_DL_Reinliste_erfolgt + R "DVollPufferStreckenB".VollPuffer_28.Status2.Eintrag_DL_Reinliste_erfolgt + R "DVollPufferStreckenB".VollPuffer_29.Status2.Eintrag_DL_Reinliste_erfolgt + R "DVollPufferStreckenB".VollPuffer_30.Status2.Eintrag_DL_Reinliste_erfolgt + R "DVollPufferStreckenB".VollPuffer_31.Status2.Eintrag_DL_Reinliste_erfolgt + R "DVollPufferStreckenB".VollPuffer_32.Status2.Eintrag_DL_Reinliste_erfolgt + R "DVollPufferStreckenB".VollPuffer_33.Status2.Eintrag_DL_Reinliste_erfolgt + R "DVollPufferStreckenB".VollPuffer_34.Status2.Eintrag_DL_Reinliste_erfolgt + R "DVollPufferStreckenB".VollPuffer_35.Status2.Eintrag_DL_Reinliste_erfolgt + R "DVollPufferStreckenB".VollPuffer_36.Status2.Eintrag_DL_Reinliste_erfolgt + R "DVollPufferStreckenB".VollPuffer_37.Status2.Eintrag_DL_Reinliste_erfolgt + R "DVollPufferStreckenB".VollPuffer_38.Status2.Eintrag_DL_Reinliste_erfolgt + R "DVollPufferStreckenB".VollPuffer_39.Status2.Eintrag_DL_Reinliste_erfolgt + R "DVollPufferStreckenB".VollPuffer_40.Status2.Eintrag_DL_Reinliste_erfolgt + R "DVollPufferStreckenB".VollPuffer_41.Status2.Eintrag_DL_Reinliste_erfolgt + R "DVollPufferStreckenB".VollPuffer_42.Status2.Eintrag_DL_Reinliste_erfolgt + R "DVollPufferStreckenB".VollPuffer_43.Status2.Eintrag_DL_Reinliste_erfolgt + R "DVollPufferStreckenB".VollPuffer_44.Status2.Eintrag_DL_Reinliste_erfolgt + R "DVollPufferStreckenB".VollPuffer_45.Status2.Eintrag_DL_Reinliste_erfolgt + R "DVollPufferStreckenB".VollPuffer_46.Status2.Eintrag_DL_Reinliste_erfolgt + R "DVollPufferStreckenB".VollPuffer_47.Status2.Eintrag_DL_Reinliste_erfolgt + R "DVollPufferStreckenB".VollPuffer_48.Status2.Eintrag_DL_Reinliste_erfolgt + R "DVollPufferStreckenB".VollPuffer_49.Status2.Eintrag_DL_Reinliste_erfolgt + R "DVollPufferStreckenB".VollPuffer_50.Status2.Eintrag_DL_Reinliste_erfolgt + +NixReoRein: NOP 0 + + +--- NW 4: Ausfahr-Puffer-Liste neu erstellen --- + A "DLVollPuffer_ShopGroup_abrufen".Reorganisieren + R "DLVollPuffer_ShopGroup_abrufen".Reorganisieren + JCN NixReoRaus + +CALL FC "DatenReset" (SSDB:=102, SSDW:=0, RE_VAL:="MB199") + + SET + R "DVollPufferStreckenA".VollPuffer_01.Status2.Eintrag_DL_Abrufliste_erfolgt + R "DVollPufferStreckenA".VollPuffer_02.Status2.Eintrag_DL_Abrufliste_erfolgt + R "DVollPufferStreckenA".VollPuffer_03.Status2.Eintrag_DL_Abrufliste_erfolgt + R "DVollPufferStreckenA".VollPuffer_04.Status2.Eintrag_DL_Abrufliste_erfolgt + R "DVollPufferStreckenA".VollPuffer_05.Status2.Eintrag_DL_Abrufliste_erfolgt + R "DVollPufferStreckenA".VollPuffer_06.Status2.Eintrag_DL_Abrufliste_erfolgt + R "DVollPufferStreckenA".VollPuffer_07.Status2.Eintrag_DL_Abrufliste_erfolgt + R "DVollPufferStreckenA".VollPuffer_08.Status2.Eintrag_DL_Abrufliste_erfolgt + R "DVollPufferStreckenA".VollPuffer_09.Status2.Eintrag_DL_Abrufliste_erfolgt + R "DVollPufferStreckenA".VollPuffer_10.Status2.Eintrag_DL_Abrufliste_erfolgt + R "DVollPufferStreckenA".VollPuffer_11.Status2.Eintrag_DL_Abrufliste_erfolgt + R "DVollPufferStreckenA".VollPuffer_12.Status2.Eintrag_DL_Abrufliste_erfolgt + R "DVollPufferStreckenA".VollPuffer_13.Status2.Eintrag_DL_Abrufliste_erfolgt + R "DVollPufferStreckenA".VollPuffer_14.Status2.Eintrag_DL_Abrufliste_erfolgt + R "DVollPufferStreckenA".VollPuffer_15.Status2.Eintrag_DL_Abrufliste_erfolgt + R "DVollPufferStreckenA".VollPuffer_16.Status2.Eintrag_DL_Abrufliste_erfolgt + R "DVollPufferStreckenA".VollPuffer_17.Status2.Eintrag_DL_Abrufliste_erfolgt + R "DVollPufferStreckenA".VollPuffer_18.Status2.Eintrag_DL_Abrufliste_erfolgt + R "DVollPufferStreckenA".VollPuffer_19.Status2.Eintrag_DL_Abrufliste_erfolgt + R "DVollPufferStreckenA".VollPuffer_20.Status2.Eintrag_DL_Abrufliste_erfolgt + R "DVollPufferStreckenA".VollPuffer_21.Status2.Eintrag_DL_Abrufliste_erfolgt + R "DVollPufferStreckenA".VollPuffer_22.Status2.Eintrag_DL_Abrufliste_erfolgt + R "DVollPufferStreckenA".VollPuffer_23.Status2.Eintrag_DL_Abrufliste_erfolgt + R "DVollPufferStreckenA".VollPuffer_24.Status2.Eintrag_DL_Abrufliste_erfolgt + R "DVollPufferStreckenA".VollPuffer_25.Status2.Eintrag_DL_Abrufliste_erfolgt + R "DVollPufferStreckenB".VollPuffer_26.Status2.Eintrag_DL_Abrufliste_erfolgt + R "DVollPufferStreckenB".VollPuffer_27.Status2.Eintrag_DL_Abrufliste_erfolgt + R "DVollPufferStreckenB".VollPuffer_28.Status2.Eintrag_DL_Abrufliste_erfolgt + R "DVollPufferStreckenB".VollPuffer_29.Status2.Eintrag_DL_Abrufliste_erfolgt + R "DVollPufferStreckenB".VollPuffer_30.Status2.Eintrag_DL_Abrufliste_erfolgt + R "DVollPufferStreckenB".VollPuffer_31.Status2.Eintrag_DL_Abrufliste_erfolgt + R "DVollPufferStreckenB".VollPuffer_32.Status2.Eintrag_DL_Abrufliste_erfolgt + R "DVollPufferStreckenB".VollPuffer_33.Status2.Eintrag_DL_Abrufliste_erfolgt + R "DVollPufferStreckenB".VollPuffer_34.Status2.Eintrag_DL_Abrufliste_erfolgt + R "DVollPufferStreckenB".VollPuffer_35.Status2.Eintrag_DL_Abrufliste_erfolgt + R "DVollPufferStreckenB".VollPuffer_36.Status2.Eintrag_DL_Abrufliste_erfolgt + R "DVollPufferStreckenB".VollPuffer_37.Status2.Eintrag_DL_Abrufliste_erfolgt + R "DVollPufferStreckenB".VollPuffer_38.Status2.Eintrag_DL_Abrufliste_erfolgt + R "DVollPufferStreckenB".VollPuffer_39.Status2.Eintrag_DL_Abrufliste_erfolgt + R "DVollPufferStreckenB".VollPuffer_40.Status2.Eintrag_DL_Abrufliste_erfolgt + R "DVollPufferStreckenB".VollPuffer_41.Status2.Eintrag_DL_Abrufliste_erfolgt + R "DVollPufferStreckenB".VollPuffer_42.Status2.Eintrag_DL_Abrufliste_erfolgt + R "DVollPufferStreckenB".VollPuffer_43.Status2.Eintrag_DL_Abrufliste_erfolgt + R "DVollPufferStreckenB".VollPuffer_44.Status2.Eintrag_DL_Abrufliste_erfolgt + R "DVollPufferStreckenB".VollPuffer_45.Status2.Eintrag_DL_Abrufliste_erfolgt + R "DVollPufferStreckenB".VollPuffer_46.Status2.Eintrag_DL_Abrufliste_erfolgt + R "DVollPufferStreckenB".VollPuffer_47.Status2.Eintrag_DL_Abrufliste_erfolgt + R "DVollPufferStreckenB".VollPuffer_48.Status2.Eintrag_DL_Abrufliste_erfolgt + R "DVollPufferStreckenB".VollPuffer_49.Status2.Eintrag_DL_Abrufliste_erfolgt + R "DVollPufferStreckenB".VollPuffer_50.Status2.Eintrag_DL_Abrufliste_erfolgt + +NixReoRaus: NOP 0 + + +--- NW 5: Nur 1 aktiver Inilauf möglich, falls kein Abruf aktiv! --- + A VollPuffer_01.Dyn.Status.Puffer_initialisieren_OUT // Ein aktiver Ini-Lauf + O VollPuffer_02.Dyn.Status.Puffer_initialisieren_OUT + O VollPuffer_03.Dyn.Status.Puffer_initialisieren_OUT + O VollPuffer_04.Dyn.Status.Puffer_initialisieren_OUT + O VollPuffer_05.Dyn.Status.Puffer_initialisieren_OUT + O VollPuffer_06.Dyn.Status.Puffer_initialisieren_OUT + O VollPuffer_07.Dyn.Status.Puffer_initialisieren_OUT + O VollPuffer_08.Dyn.Status.Puffer_initialisieren_OUT + O VollPuffer_09.Dyn.Status.Puffer_initialisieren_OUT + O VollPuffer_10.Dyn.Status.Puffer_initialisieren_OUT + O VollPuffer_11.Dyn.Status.Puffer_initialisieren_OUT + O VollPuffer_12.Dyn.Status.Puffer_initialisieren_OUT + O VollPuffer_13.Dyn.Status.Puffer_initialisieren_OUT + O VollPuffer_14.Dyn.Status.Puffer_initialisieren_OUT + O VollPuffer_15.Dyn.Status.Puffer_initialisieren_OUT + O VollPuffer_16.Dyn.Status.Puffer_initialisieren_OUT + O VollPuffer_17.Dyn.Status.Puffer_initialisieren_OUT + O VollPuffer_18.Dyn.Status.Puffer_initialisieren_OUT + O VollPuffer_19.Dyn.Status.Puffer_initialisieren_OUT + O VollPuffer_20.Dyn.Status.Puffer_initialisieren_OUT + O VollPuffer_21.Dyn.Status.Puffer_initialisieren_OUT + O VollPuffer_22.Dyn.Status.Puffer_initialisieren_OUT + O VollPuffer_23.Dyn.Status.Puffer_initialisieren_OUT + O VollPuffer_24.Dyn.Status.Puffer_initialisieren_OUT + O VollPuffer_25.Dyn.Status.Puffer_initialisieren_OUT + O "DVollPufferStreckenB".VollPuffer_26.Dyn.Status.Puffer_initialisieren_OUT + O "DVollPufferStreckenB".VollPuffer_27.Dyn.Status.Puffer_initialisieren_OUT + O "DVollPufferStreckenB".VollPuffer_28.Dyn.Status.Puffer_initialisieren_OUT + O "DVollPufferStreckenB".VollPuffer_29.Dyn.Status.Puffer_initialisieren_OUT + O "DVollPufferStreckenB".VollPuffer_30.Dyn.Status.Puffer_initialisieren_OUT + O "DVollPufferStreckenB".VollPuffer_31.Dyn.Status.Puffer_initialisieren_OUT + O "DVollPufferStreckenB".VollPuffer_32.Dyn.Status.Puffer_initialisieren_OUT + O "DVollPufferStreckenB".VollPuffer_33.Dyn.Status.Puffer_initialisieren_OUT + O "DVollPufferStreckenB".VollPuffer_34.Dyn.Status.Puffer_initialisieren_OUT + O "DVollPufferStreckenB".VollPuffer_35.Dyn.Status.Puffer_initialisieren_OUT + O "DVollPufferStreckenB".VollPuffer_36.Dyn.Status.Puffer_initialisieren_OUT + O "DVollPufferStreckenB".VollPuffer_37.Dyn.Status.Puffer_initialisieren_OUT + O "DVollPufferStreckenB".VollPuffer_38.Dyn.Status.Puffer_initialisieren_OUT + O "DVollPufferStreckenB".VollPuffer_39.Dyn.Status.Puffer_initialisieren_OUT + O "DVollPufferStreckenB".VollPuffer_40.Dyn.Status.Puffer_initialisieren_OUT + O "DVollPufferStreckenB".VollPuffer_41.Dyn.Status.Puffer_initialisieren_OUT + O "DVollPufferStreckenB".VollPuffer_42.Dyn.Status.Puffer_initialisieren_OUT + O "DVollPufferStreckenB".VollPuffer_43.Dyn.Status.Puffer_initialisieren_OUT + O "DVollPufferStreckenB".VollPuffer_44.Dyn.Status.Puffer_initialisieren_OUT + O "DVollPufferStreckenB".VollPuffer_45.Dyn.Status.Puffer_initialisieren_OUT + O "DVollPufferStreckenB".VollPuffer_46.Dyn.Status.Puffer_initialisieren_OUT + O "DVollPufferStreckenB".VollPuffer_47.Dyn.Status.Puffer_initialisieren_OUT + O "DVollPufferStreckenB".VollPuffer_48.Dyn.Status.Puffer_initialisieren_OUT + O "DVollPufferStreckenB".VollPuffer_49.Dyn.Status.Puffer_initialisieren_OUT + O "DVollPufferStreckenB".VollPuffer_50.Dyn.Status.Puffer_initialisieren_OUT + O "DVollPufferStreckenB".VollPuffer_51.Dyn.Status.Puffer_initialisieren_OUT + = Ein_Inilauf_aktiv + + +--- NW 6: AusVollPuffer-Strecke hat Stau --- + A "DVP_Sensoren".Stau_BG3242.Stat.B_Akt + AN "MB3244" + A "BG3241" // Damit nur einmalig + O "DVP_Sensoren".Stau_BG3241.Stat.B_Akt + O "DVP_Sensoren".Stau_BG3240.Stat.B_Akt + O "DVP_Sensoren".Stau_BG3184.Stat.B_Akt + = Stau + + +--- NW 7: Starten ist erlaubt --- +// Alle Puffer-Schleusen geschlossen? + L "AB326" + L 0 // Alle Puffer-Schleusen geschlossen? + ==I // Ja ! + AN "MB3207" + AN "MB3210" + AN "MB3211" + AN "MB3212" + AN "MB3213" + AN "MB3214" + AN "MB3215" + AN "MB3252" + AN "MB3253" + AN "MB3254" + AN "MB3255" + AN "MB3256" + AN "MB3257" + AN "MB3270" + AN "MB3271" + AN "MB3272" + AN "MB3273" + AN Stau + = Start_Ok + + +--- NW 8: Störung quittieren UZ7104/7105 --- + A "DOutbound_Bereich".A01_UZ7104.StOk_aktiv + O "DOutbound_Bereich".A01_UZ7105.StOk_aktiv + = ErrQuit + + +--- NW 9: VollPuffer 01 --- + SET + R ErrAnz + +CALL FB "None" , (VollPuffer_Nr:=101, ErrQuit:=ErrQuit, B_VollPufferEinfahrt:="BG3087", B_InSchleuse_IN:="BG3114", B_InSchleuse_OUT:="BG3273", B_AusSchleuse_OUT:=?, B_Stau_raus_Out:="DVP_Sensoren".Stau_BG3242.Stat.B_Akt, B_QuerTrolley_Out:="BG3241", Antrieb_plus_aktiv:="MA0150", Schleuse_geöffnet_IN:="MB3114", Schleuse_geöffnet_OUT:="MB3273", Y_Schleuse_Auf_IN:="DVP_Zylinder".Schleuse_Mitte_VP1.Stat.Ast, Y_Schleuse_Auf_OUT:="DVP_Zylinder".Schleuse_Ausfahrt_VP1.Stat.Ast, Error:=DB708.DBW320, Start_Ok:=Start_Ok, Antrieb_plus_start:="DVP_Antriebe".MA0150.Stat.A_vor, Antrieb_plus_stoppen:="DVP_Antriebe".MA0150.Stat.Stop_vor, hStOk:=ErrAnz, Ausfahr_Inks:="DVPAuslagern".Ausfahren_Ok_A.Dyn.Rest_Inks) + + +--- NW 10: VollPuffer 02 --- +CALL FB "None" , (VollPuffer_Nr:=102, ErrQuit:=ErrQuit, B_VollPufferEinfahrt:="BG3086", B_InSchleuse_IN:="BG3113", B_InSchleuse_OUT:="BG3272", B_AusSchleuse_OUT:="BG3242", B_Stau_raus_Out:="DVP_Sensoren".Stau_BG3242.Stat.B_Akt, B_QuerTrolley_Out:="BG3241", Antrieb_plus_aktiv:="MA0150", Schleuse_geöffnet_IN:="MB3113", Schleuse_geöffnet_OUT:="MB3272", Y_Schleuse_Auf_IN:="DVP_Zylinder".Schleuse_Mitte_VP2.Stat.Ast, Y_Schleuse_Auf_OUT:="DVP_Zylinder".Schleuse_Ausfahrt_VP2.Stat.Ast, Error:=DB708.DBW322, Start_Ok:=Start_Ok, Antrieb_plus_start:="DVP_Antriebe".MA0150.Stat.A_vor, Antrieb_plus_stoppen:="DVP_Antriebe".MA0150.Stat.Stop_vor, hStOk:=ErrAnz, Ausfahr_Inks:="DVPAuslagern".Ausfahren_Ok_A.Dyn.Rest_Inks) + + +--- NW 11: VollPuffer 03 --- +CALL FB "None" , (VollPuffer_Nr:=103, ErrQuit:=ErrQuit, B_VollPufferEinfahrt:="BG3085", B_InSchleuse_IN:="BG3112", B_InSchleuse_OUT:="BG3271", B_AusSchleuse_OUT:="BG3242", B_Stau_raus_Out:="DVP_Sensoren".Stau_BG3242.Stat.B_Akt, B_QuerTrolley_Out:="BG3241", Antrieb_plus_aktiv:="MA0150", Schleuse_geöffnet_IN:="MB3112", Schleuse_geöffnet_OUT:="MB3271", Y_Schleuse_Auf_IN:="DVP_Zylinder".Schleuse_Mitte_VP3.Stat.Ast, Y_Schleuse_Auf_OUT:="DVP_Zylinder".Schleuse_Ausfahrt_VP3.Stat.Ast, Error:=DB708.DBW324, Start_Ok:=Start_Ok, Antrieb_plus_start:="DVP_Antriebe".MA0150.Stat.A_vor, Antrieb_plus_stoppen:="DVP_Antriebe".MA0150.Stat.Stop_vor, hStOk:=ErrAnz, Ausfahr_Inks:="DVPAuslagern".Ausfahren_Ok_A.Dyn.Rest_Inks) + + +--- NW 12: VollPuffer 04 --- +CALL FB "None" , (VollPuffer_Nr:=104, ErrQuit:=ErrQuit, B_VollPufferEinfahrt:="BG3084", B_InSchleuse_IN:="BG3111", B_InSchleuse_OUT:="BG3270", B_AusSchleuse_OUT:=?, B_Stau_raus_Out:="DVP_Sensoren".Stau_BG3242.Stat.B_Akt, B_QuerTrolley_Out:="BG3241", Antrieb_plus_aktiv:="MA0150", Schleuse_geöffnet_IN:="MB3111", Schleuse_geöffnet_OUT:="MB3270", Y_Schleuse_Auf_IN:="DVP_Zylinder".Schleuse_Mitte_VP4.Stat.Ast, Y_Schleuse_Auf_OUT:="DVP_Zylinder".Schleuse_Ausfahrt_VP4.Stat.Ast, Error:=DB708.DBW326, Start_Ok:=Start_Ok, Antrieb_plus_start:="DVP_Antriebe".MA0150.Stat.A_vor, Antrieb_plus_stoppen:="DVP_Antriebe".MA0150.Stat.Stop_vor, hStOk:=ErrAnz, Ausfahr_Inks:="DVPAuslagern".Ausfahren_Ok_A.Dyn.Rest_Inks) + + +--- NW 13: VollPuffer 05 --- +CALL FB "None" , (VollPuffer_Nr:=105, ErrQuit:=ErrQuit, B_VollPufferEinfahrt:="BG3083", B_InSchleuse_IN:="BG3110", B_InSchleuse_OUT:="BG3267", B_AusSchleuse_OUT:=?, B_Stau_raus_Out:="DVP_Sensoren".Stau_BG3242.Stat.B_Akt, B_QuerTrolley_Out:="BG3241", Antrieb_plus_aktiv:="MA0150", Schleuse_geöffnet_IN:="MB3110", Schleuse_geöffnet_OUT:="MB3267", Y_Schleuse_Auf_IN:="DVP_Zylinder".Schleuse_Mitte_VP5.Stat.Ast, Y_Schleuse_Auf_OUT:="DVP_Zylinder".Schleuse_Ausfahrt_VP5.Stat.Ast, Error:=DB708.DBW328, Start_Ok:=Start_Ok, Antrieb_plus_start:="DVP_Antriebe".MA0150.Stat.A_vor, Antrieb_plus_stoppen:="DVP_Antriebe".MA0150.Stat.Stop_vor, hStOk:=ErrAnz, Ausfahr_Inks:="DVPAuslagern".Ausfahren_Ok_A.Dyn.Rest_Inks) + + +--- NW 14: VollPuffer 06 --- +CALL FB "None" , (VollPuffer_Nr:=106, ErrQuit:=ErrQuit, B_VollPufferEinfahrt:="BG3082", B_InSchleuse_IN:="BG3107", B_InSchleuse_OUT:="BG3266", B_AusSchleuse_OUT:=?, B_Stau_raus_Out:="DVP_Sensoren".Stau_BG3241.Stat.B_Akt, B_QuerTrolley_Out:="BG3240", Antrieb_plus_aktiv:="MA0150", Schleuse_geöffnet_IN:="MB3107", Schleuse_geöffnet_OUT:="MB3266", Y_Schleuse_Auf_IN:="DVP_Zylinder".Schleuse_Mitte_VP6.Stat.Ast, Y_Schleuse_Auf_OUT:="DVP_Zylinder".Schleuse_Ausfahrt_VP6.Stat.Ast, Error:=DB708.DBW330, Start_Ok:=Start_Ok, Antrieb_plus_start:="DVP_Antriebe".MA0150.Stat.A_vor, Antrieb_plus_stoppen:="DVP_Antriebe".MA0150.Stat.Stop_vor, hStOk:=ErrAnz, Ausfahr_Inks:="DVPAuslagern".Ausfahren_Ok_A.Dyn.Rest_Inks) + + +--- NW 15: VollPuffer 07 --- +CALL FB "None" , (VollPuffer_Nr:=107, ErrQuit:=ErrQuit, B_VollPufferEinfahrt:="BG3081", B_InSchleuse_IN:="BG3106", B_InSchleuse_OUT:="BG3265", B_AusSchleuse_OUT:="BG3241", B_Stau_raus_Out:="DVP_Sensoren".Stau_BG3241.Stat.B_Akt, B_QuerTrolley_Out:="BG3240", Antrieb_plus_aktiv:="MA0150", Schleuse_geöffnet_IN:="MB3106", Schleuse_geöffnet_OUT:="MB3265", Y_Schleuse_Auf_IN:="DVP_Zylinder".Schleuse_Mitte_VP7.Stat.Ast, Y_Schleuse_Auf_OUT:="DVP_Zylinder".Schleuse_Ausfahrt_VP7.Stat.Ast, Error:=DB708.DBW332, Start_Ok:=Start_Ok, Antrieb_plus_start:="DVP_Antriebe".MA0150.Stat.A_vor, Antrieb_plus_stoppen:="DVP_Antriebe".MA0150.Stat.Stop_vor, hStOk:=ErrAnz, Ausfahr_Inks:="DVPAuslagern".Ausfahren_Ok_A.Dyn.Rest_Inks) + + +--- NW 16: VollPuffer 08 --- +CALL FB "None" , (VollPuffer_Nr:=108, ErrQuit:=ErrQuit, B_VollPufferEinfahrt:="BG3080", B_InSchleuse_IN:="BG3105", B_InSchleuse_OUT:="BG3264", B_AusSchleuse_OUT:="BG3241", B_Stau_raus_Out:="DVP_Sensoren".Stau_BG3241.Stat.B_Akt, B_QuerTrolley_Out:="BG3240", Antrieb_plus_aktiv:="MA0150", Schleuse_geöffnet_IN:="MB3105", Schleuse_geöffnet_OUT:="MB3264", Y_Schleuse_Auf_IN:="DVP_Zylinder".Schleuse_Mitte_VP8.Stat.Ast, Y_Schleuse_Auf_OUT:="DVP_Zylinder".Schleuse_Ausfahrt_VP8.Stat.Ast, Error:=DB708.DBW334, Start_Ok:=Start_Ok, Antrieb_plus_start:="DVP_Antriebe".MA0150.Stat.A_vor, Antrieb_plus_stoppen:="DVP_Antriebe".MA0150.Stat.Stop_vor, hStOk:=ErrAnz, Ausfahr_Inks:="DVPAuslagern".Ausfahren_Ok_A.Dyn.Rest_Inks) + + +--- NW 17: VollPuffer 09 --- +CALL FB "None" , (VollPuffer_Nr:=109, ErrQuit:=ErrQuit, B_VollPufferEinfahrt:="BG3077", B_InSchleuse_IN:="BG3104", B_InSchleuse_OUT:="BG3263", B_AusSchleuse_OUT:=?, B_Stau_raus_Out:="DVP_Sensoren".Stau_BG3241.Stat.B_Akt, B_QuerTrolley_Out:="BG3240", Antrieb_plus_aktiv:="MA0150", Schleuse_geöffnet_IN:="MB3104", Schleuse_geöffnet_OUT:="MB3263", Y_Schleuse_Auf_IN:="DVP_Zylinder".Schleuse_Mitte_VP9.Stat.Ast, Y_Schleuse_Auf_OUT:="DVP_Zylinder".Schleuse_Ausfahrt_VP9.Stat.Ast, Error:=DB708.DBW336, Start_Ok:=Start_Ok, Antrieb_plus_start:="DVP_Antriebe".MA0150.Stat.A_vor, Antrieb_plus_stoppen:="DVP_Antriebe".MA0150.Stat.Stop_vor, hStOk:=ErrAnz, Ausfahr_Inks:="DVPAuslagern".Ausfahren_Ok_A.Dyn.Rest_Inks) + + +--- NW 18: VollPuffer 10 --- +CALL FB "None" , (VollPuffer_Nr:=110, ErrQuit:=ErrQuit, B_VollPufferEinfahrt:="BG3076", B_InSchleuse_IN:="BG3103", B_InSchleuse_OUT:="BG3262", B_AusSchleuse_OUT:=?, B_Stau_raus_Out:="DVP_Sensoren".Stau_BG3241.Stat.B_Akt, B_QuerTrolley_Out:="BG3240", Antrieb_plus_aktiv:="MA0150", Schleuse_geöffnet_IN:="MB3103", Schleuse_geöffnet_OUT:="MB3262", Y_Schleuse_Auf_IN:="DVP_Zylinder".Schleuse_Mitte_VP10.Stat.Ast, Y_Schleuse_Auf_OUT:="DVP_Zylinder".Schleuse_Ausfahrt_VP10.Stat.Ast, Error:=DB708.DBW338, Start_Ok:=Start_Ok, Antrieb_plus_start:="DVP_Antriebe".MA0150.Stat.A_vor, Antrieb_plus_stoppen:="DVP_Antriebe".MA0150.Stat.Stop_vor, hStOk:=ErrAnz, Ausfahr_Inks:="DVPAuslagern".Ausfahren_Ok_A.Dyn.Rest_Inks) + + +--- NW 19: VollPuffer 11 --- +CALL FB "None" , (VollPuffer_Nr:=111, ErrQuit:=ErrQuit, B_VollPufferEinfahrt:="BG3075", B_InSchleuse_IN:="BG3102", B_InSchleuse_OUT:="BG3261", B_AusSchleuse_OUT:=?, B_Stau_raus_Out:="DVP_Sensoren".Stau_BG3241.Stat.B_Akt, B_QuerTrolley_Out:="BG3240", Antrieb_plus_aktiv:="MA0150", Schleuse_geöffnet_IN:="MB3102", Schleuse_geöffnet_OUT:="MB3261", Y_Schleuse_Auf_IN:="DVP_Zylinder".Schleuse_Mitte_VP11.Stat.Ast, Y_Schleuse_Auf_OUT:="DVP_Zylinder".Schleuse_Ausfahrt_VP11.Stat.Ast, Error:=DB708.DBW340, Start_Ok:=Start_Ok, Antrieb_plus_start:="DVP_Antriebe".MA0150.Stat.A_vor, Antrieb_plus_stoppen:="DVP_Antriebe".MA0150.Stat.Stop_vor, hStOk:=ErrAnz, Ausfahr_Inks:="DVPAuslagern".Ausfahren_Ok_A.Dyn.Rest_Inks) + + +--- NW 20: VollPuffer 12 --- +CALL FB "None" , (VollPuffer_Nr:=112, ErrQuit:=ErrQuit, B_VollPufferEinfahrt:="BG3074", B_InSchleuse_IN:="BG3101", B_InSchleuse_OUT:="BG3260", B_AusSchleuse_OUT:=?, B_Stau_raus_Out:="DVP_Sensoren".Stau_BG3241.Stat.B_Akt, B_QuerTrolley_Out:="BG3240", Antrieb_plus_aktiv:="MA0150", Schleuse_geöffnet_IN:="MB3101", Schleuse_geöffnet_OUT:="MB3260", Y_Schleuse_Auf_IN:="DVP_Zylinder".Schleuse_Mitte_VP12.Stat.Ast, Y_Schleuse_Auf_OUT:="DVP_Zylinder".Schleuse_Ausfahrt_VP12.Stat.Ast, Error:=DB708.DBW342, Start_Ok:=Start_Ok, Antrieb_plus_start:="DVP_Antriebe".MA0150.Stat.A_vor, Antrieb_plus_stoppen:="DVP_Antriebe".MA0150.Stat.Stop_vor, hStOk:=ErrAnz, Ausfahr_Inks:="DVPAuslagern".Ausfahren_Ok_A.Dyn.Rest_Inks) + + +--- NW 21: VollPuffer 13 --- +CALL FB "None" , (VollPuffer_Nr:=113, ErrQuit:=ErrQuit, B_VollPufferEinfahrt:="BG3073", B_InSchleuse_IN:="BG3100", B_InSchleuse_OUT:="BG3257", B_AusSchleuse_OUT:="BG3240", B_Stau_raus_Out:="DVP_Sensoren".Stau_BG3240.Stat.B_Akt, B_QuerTrolley_Out:="BG3184", Antrieb_plus_aktiv:="MA0150", Schleuse_geöffnet_IN:="MB3100", Schleuse_geöffnet_OUT:="MB3257", Y_Schleuse_Auf_IN:="DVP_Zylinder".Schleuse_Mitte_VP13.Stat.Ast, Y_Schleuse_Auf_OUT:="DVP_Zylinder".Schleuse_Ausfahrt_VP13.Stat.Ast, Error:=DB708.DBW344, Start_Ok:=Start_Ok, Antrieb_plus_start:="DVP_Antriebe".MA0150.Stat.A_vor, Antrieb_plus_stoppen:="DVP_Antriebe".MA0150.Stat.Stop_vor, hStOk:=ErrAnz, Ausfahr_Inks:="DVPAuslagern".Ausfahren_Ok_A.Dyn.Rest_Inks) + + +--- NW 22: VollPuffer 14 --- +CALL FB "None" , (VollPuffer_Nr:=114, ErrQuit:=ErrQuit, B_VollPufferEinfahrt:="BG3072", B_InSchleuse_IN:="BG3097", B_InSchleuse_OUT:="BG3256", B_AusSchleuse_OUT:="BG3240", B_Stau_raus_Out:="DVP_Sensoren".Stau_BG3240.Stat.B_Akt, B_QuerTrolley_Out:="BG3184", Antrieb_plus_aktiv:="MA0150", Schleuse_geöffnet_IN:="MB3097", Schleuse_geöffnet_OUT:="MB3256", Y_Schleuse_Auf_IN:="DVP_Zylinder".Schleuse_Mitte_VP14.Stat.Ast, Y_Schleuse_Auf_OUT:="DVP_Zylinder".Schleuse_Ausfahrt_VP14.Stat.Ast, Error:=DB708.DBW346, Start_Ok:=Start_Ok, Antrieb_plus_start:="DVP_Antriebe".MA0150.Stat.A_vor, Antrieb_plus_stoppen:="DVP_Antriebe".MA0150.Stat.Stop_vor, hStOk:=ErrAnz, Ausfahr_Inks:="DVPAuslagern".Ausfahren_Ok_A.Dyn.Rest_Inks) + + +--- NW 23: VollPuffer 15 --- +CALL FB "None" , (VollPuffer_Nr:=115, ErrQuit:=ErrQuit, B_VollPufferEinfahrt:="BG3071", B_InSchleuse_IN:="BG3096", B_InSchleuse_OUT:="BG3255", B_AusSchleuse_OUT:="BG3240", B_Stau_raus_Out:="DVP_Sensoren".Stau_BG3240.Stat.B_Akt, B_QuerTrolley_Out:="BG3184", Antrieb_plus_aktiv:="MA0150", Schleuse_geöffnet_IN:="MB3096", Schleuse_geöffnet_OUT:="MB3255", Y_Schleuse_Auf_IN:="DVP_Zylinder".Schleuse_Mitte_VP15.Stat.Ast, Y_Schleuse_Auf_OUT:="DVP_Zylinder".Schleuse_Ausfahrt_VP15.Stat.Ast, Error:=DB708.DBW348, Start_Ok:=Start_Ok, Antrieb_plus_start:="DVP_Antriebe".MA0150.Stat.A_vor, Antrieb_plus_stoppen:="DVP_Antriebe".MA0150.Stat.Stop_vor, hStOk:=ErrAnz, Ausfahr_Inks:="DVPAuslagern".Ausfahren_Ok_A.Dyn.Rest_Inks) + + +--- NW 24: VollPuffer 16 --- +CALL FB "None" , (VollPuffer_Nr:=116, ErrQuit:=ErrQuit, B_VollPufferEinfahrt:="BG3070", B_InSchleuse_IN:="BG3095", B_InSchleuse_OUT:="BG3254", B_AusSchleuse_OUT:=?, B_Stau_raus_Out:="DVP_Sensoren".Stau_BG3240.Stat.B_Akt, B_QuerTrolley_Out:="BG3184", Antrieb_plus_aktiv:="MA0150", Schleuse_geöffnet_IN:="MB3095", Schleuse_geöffnet_OUT:="MB3254", Y_Schleuse_Auf_IN:="DVP_Zylinder".Schleuse_Mitte_VP16.Stat.Ast, Y_Schleuse_Auf_OUT:="DVP_Zylinder".Schleuse_Ausfahrt_VP16.Stat.Ast, Error:=DB708.DBW350, Start_Ok:=Start_Ok, Antrieb_plus_start:="DVP_Antriebe".MA0150.Stat.A_vor, Antrieb_plus_stoppen:="DVP_Antriebe".MA0150.Stat.Stop_vor, hStOk:=ErrAnz, Ausfahr_Inks:="DVPAuslagern".Ausfahren_Ok_A.Dyn.Rest_Inks) + + +--- NW 25: VollPuffer 17 --- +CALL FB "None" , (VollPuffer_Nr:=117, ErrQuit:=ErrQuit, B_VollPufferEinfahrt:="BG3067", B_InSchleuse_IN:="BG3094", B_InSchleuse_OUT:="BG3253", B_AusSchleuse_OUT:=?, B_Stau_raus_Out:="DVP_Sensoren".Stau_BG3240.Stat.B_Akt, B_QuerTrolley_Out:="BG3184", Antrieb_plus_aktiv:="MA0150", Schleuse_geöffnet_IN:="MB3094", Schleuse_geöffnet_OUT:="MB3253", Y_Schleuse_Auf_IN:="DVP_Zylinder".Schleuse_Mitte_VP17.Stat.Ast, Y_Schleuse_Auf_OUT:="DVP_Zylinder".Schleuse_Ausfahrt_VP17.Stat.Ast, Error:=DB708.DBW352, Start_Ok:=Start_Ok, Antrieb_plus_start:="DVP_Antriebe".MA0150.Stat.A_vor, Antrieb_plus_stoppen:="DVP_Antriebe".MA0150.Stat.Stop_vor, hStOk:=ErrAnz, Ausfahr_Inks:="DVPAuslagern".Ausfahren_Ok_A.Dyn.Rest_Inks) + + +--- NW 26: VollPuffer 18 --- +CALL FB "None" , (VollPuffer_Nr:=118, ErrQuit:=ErrQuit, B_VollPufferEinfahrt:="BG3066", B_InSchleuse_IN:="BG3093", B_InSchleuse_OUT:="BG3252", B_AusSchleuse_OUT:=?, B_Stau_raus_Out:="DVP_Sensoren".Stau_BG3240.Stat.B_Akt, B_QuerTrolley_Out:="BG3184", Antrieb_plus_aktiv:="MA0150", Schleuse_geöffnet_IN:="MB3093", Schleuse_geöffnet_OUT:="MB3252", Y_Schleuse_Auf_IN:="DVP_Zylinder".Schleuse_Mitte_VP18.Stat.Ast, Y_Schleuse_Auf_OUT:="DVP_Zylinder".Schleuse_Ausfahrt_VP18.Stat.Ast, Error:=DB708.DBW354, Start_Ok:=Start_Ok, Antrieb_plus_start:="DVP_Antriebe".MA0150.Stat.A_vor, Antrieb_plus_stoppen:="DVP_Antriebe".MA0150.Stat.Stop_vor, hStOk:=ErrAnz, Ausfahr_Inks:="DVPAuslagern".Ausfahren_Ok_A.Dyn.Rest_Inks) + + +--- NW 27: VollPuffer 19 --- +CALL FB "None" , (VollPuffer_Nr:=119, ErrQuit:=ErrQuit, B_VollPufferEinfahrt:="BG3065", B_InSchleuse_IN:="BG3092", B_InSchleuse_OUT:="BG3215", B_AusSchleuse_OUT:=?, B_Stau_raus_Out:="DVP_Sensoren".Stau_BG3184.Stat.B_Akt, B_QuerTrolley_Out:="BG3183", Antrieb_plus_aktiv:="MA0150", Schleuse_geöffnet_IN:="MB3092", Schleuse_geöffnet_OUT:="MB3215", Y_Schleuse_Auf_IN:="DVP_Zylinder".Schleuse_Mitte_VP19.Stat.Ast, Y_Schleuse_Auf_OUT:="DVP_Zylinder".Schleuse_Ausfahrt_VP19.Stat.Ast, Error:=DB708.DBW356, Start_Ok:=Start_Ok, Antrieb_plus_start:="DVP_Antriebe".MA0150.Stat.A_vor, Antrieb_plus_stoppen:="DVP_Antriebe".MA0150.Stat.Stop_vor, hStOk:=ErrAnz, Ausfahr_Inks:="DVPAuslagern".Ausfahren_Ok_A.Dyn.Rest_Inks) + + +--- NW 28: VollPuffer 20 --- +CALL FB "None" , (VollPuffer_Nr:=120, ErrQuit:=ErrQuit, B_VollPufferEinfahrt:="BG3064", B_InSchleuse_IN:="BG3091", B_InSchleuse_OUT:="BG3214", B_AusSchleuse_OUT:="BG3184", B_Stau_raus_Out:="DVP_Sensoren".Stau_BG3184.Stat.B_Akt, B_QuerTrolley_Out:="BG3183", Antrieb_plus_aktiv:="MA0150", Schleuse_geöffnet_IN:="MB3091", Schleuse_geöffnet_OUT:="MB3214", Y_Schleuse_Auf_IN:="DVP_Zylinder".Schleuse_Mitte_VP20.Stat.Ast, Y_Schleuse_Auf_OUT:="DVP_Zylinder".Schleuse_Ausfahrt_VP20.Stat.Ast, Error:=DB708.DBW358, Start_Ok:=Start_Ok, Antrieb_plus_start:="DVP_Antriebe".MA0150.Stat.A_vor, Antrieb_plus_stoppen:="DVP_Antriebe".MA0150.Stat.Stop_vor, hStOk:=ErrAnz, Ausfahr_Inks:="DVPAuslagern".Ausfahren_Ok_A.Dyn.Rest_Inks) + + +--- NW 29: VollPuffer 21 --- +CALL FB "None" , (VollPuffer_Nr:=121, ErrQuit:=ErrQuit, B_VollPufferEinfahrt:="BG3063", B_InSchleuse_IN:="BG3090", B_InSchleuse_OUT:="BG3213", B_AusSchleuse_OUT:="BG3184", B_Stau_raus_Out:="DVP_Sensoren".Stau_BG3184.Stat.B_Akt, B_QuerTrolley_Out:="BG3183", Antrieb_plus_aktiv:="MA0150", Schleuse_geöffnet_IN:="MB3090", Schleuse_geöffnet_OUT:="MB3213", Y_Schleuse_Auf_IN:="DVP_Zylinder".Schleuse_Mitte_VP21.Stat.Ast, Y_Schleuse_Auf_OUT:="DVP_Zylinder".Schleuse_Ausfahrt_VP21.Stat.Ast, Error:=DB708.DBW360, Start_Ok:=Start_Ok, Antrieb_plus_start:="DVP_Antriebe".MA0150.Stat.A_vor, Antrieb_plus_stoppen:="DVP_Antriebe".MA0150.Stat.Stop_vor, hStOk:=ErrAnz, Ausfahr_Inks:="DVPAuslagern".Ausfahren_Ok_A.Dyn.Rest_Inks) + + + +--- NW 30: VollPuffer 22 --- +CALL FB "None" , (VollPuffer_Nr:=122, ErrQuit:=ErrQuit, B_VollPufferEinfahrt:="BG3027", B_InSchleuse_IN:="BG3052", B_InSchleuse_OUT:="BG3212", B_AusSchleuse_OUT:=?, B_Stau_raus_Out:="DVP_Sensoren".Stau_BG3184.Stat.B_Akt, B_QuerTrolley_Out:="BG3183", Antrieb_plus_aktiv:="MA0150", Schleuse_geöffnet_IN:="MB3052", Schleuse_geöffnet_OUT:="MB3212", Y_Schleuse_Auf_IN:="DVP_Zylinder".Schleuse_Mitte_VP22.Stat.Ast, Y_Schleuse_Auf_OUT:="DVP_Zylinder".Schleuse_Ausfahrt_VP22.Stat.Ast, Error:=DB708.DBW362, Start_Ok:=Start_Ok, Antrieb_plus_start:="DVP_Antriebe".MA0150.Stat.A_vor, Antrieb_plus_stoppen:="DVP_Antriebe".MA0150.Stat.Stop_vor, hStOk:=ErrAnz, Ausfahr_Inks:="DVPAuslagern".Ausfahren_Ok_A.Dyn.Rest_Inks) + + +--- NW 31: VollPuffer 23 --- +CALL FB "None" , (VollPuffer_Nr:=123, ErrQuit:=ErrQuit, B_VollPufferEinfahrt:="BG3026", B_InSchleuse_IN:="BG3051", B_InSchleuse_OUT:="BG3211", B_AusSchleuse_OUT:=?, B_Stau_raus_Out:="DVP_Sensoren".Stau_BG3184.Stat.B_Akt, B_QuerTrolley_Out:="BG3183", Antrieb_plus_aktiv:="MA0150", Schleuse_geöffnet_IN:="MB3051", Schleuse_geöffnet_OUT:="MB3211", Y_Schleuse_Auf_IN:="DVP_Zylinder".Schleuse_Mitte_VP23.Stat.Ast, Y_Schleuse_Auf_OUT:="DVP_Zylinder".Schleuse_Ausfahrt_VP23.Stat.Ast, Error:=DB708.DBW364, Start_Ok:=Start_Ok, Antrieb_plus_start:="DVP_Antriebe".MA0150.Stat.A_vor, Antrieb_plus_stoppen:="DVP_Antriebe".MA0150.Stat.Stop_vor, hStOk:=ErrAnz, Ausfahr_Inks:="DVPAuslagern".Ausfahren_Ok_A.Dyn.Rest_Inks) + + +--- NW 32: VollPuffer 24 --- +CALL FB "None" , (VollPuffer_Nr:=124, ErrQuit:=ErrQuit, B_VollPufferEinfahrt:="BG3025", B_InSchleuse_IN:="BG3050", B_InSchleuse_OUT:="BG3210", B_AusSchleuse_OUT:=?, B_Stau_raus_Out:="DVP_Sensoren".Stau_BG3184.Stat.B_Akt, B_QuerTrolley_Out:="BG3183", Antrieb_plus_aktiv:="MA0150", Schleuse_geöffnet_IN:="MB3050", Schleuse_geöffnet_OUT:="MB3210", Y_Schleuse_Auf_IN:="DVP_Zylinder".Schleuse_Mitte_VP24.Stat.Ast, Y_Schleuse_Auf_OUT:="DVP_Zylinder".Schleuse_Ausfahrt_VP24.Stat.Ast, Error:=DB708.DBW366, Start_Ok:=Start_Ok, Antrieb_plus_start:="DVP_Antriebe".MA0150.Stat.A_vor, Antrieb_plus_stoppen:="DVP_Antriebe".MA0150.Stat.Stop_vor, hStOk:=ErrAnz, Ausfahr_Inks:="DVPAuslagern".Ausfahren_Ok_A.Dyn.Rest_Inks) + + +--- NW 33: VollPuffer 25 --- +CALL FB "None" , (VollPuffer_Nr:=125, ErrQuit:=ErrQuit, B_VollPufferEinfahrt:="BG3024", B_InSchleuse_IN:="BG3047", B_InSchleuse_OUT:="BG3207", B_AusSchleuse_OUT:=?, B_Stau_raus_Out:="DVP_Sensoren".Stau_BG3184.Stat.B_Akt, B_QuerTrolley_Out:="BG3183", Antrieb_plus_aktiv:="MA0150", Schleuse_geöffnet_IN:="MB3047", Schleuse_geöffnet_OUT:="MB3207", Y_Schleuse_Auf_IN:="DVP_Zylinder".Schleuse_Mitte_VP25.Stat.Ast, Y_Schleuse_Auf_OUT:="DVP_Zylinder".Schleuse_Ausfahrt_VP25.Stat.Ast, Error:=DB708.DBW368, Start_Ok:=Start_Ok, Antrieb_plus_start:="DVP_Antriebe".MA0150.Stat.A_vor, Antrieb_plus_stoppen:="DVP_Antriebe".MA0150.Stat.Stop_vor, hStOk:=ErrAnz, Ausfahr_Inks:="DVPAuslagern".Ausfahren_Ok_A.Dyn.Rest_Inks) + + +--- NW 34: Störungen anzeigen UZ7102/7103 --- + A ErrAnz + S "DOutbound_Bereich".A01_UZ7104.StOk_blinken + S "DOutbound_Bereich".A01_UZ7105.StOk_blinken + + +--- NW 35: AusVollPuffer-Simulation A --- +// Siehe FB1432/34 + + +--- NW 36: Ende --- + BE + diff --git a/=A01+UH07-KF00/Programmbausteine/Anlage/1_Vollpuffer/PufferAuslagern/VollPufferStreckenB.awl b/=A01+UH07-KF00/Programmbausteine/Anlage/1_Vollpuffer/PufferAuslagern/VollPufferStreckenB.awl new file mode 100644 index 0000000..9144b30 --- /dev/null +++ b/=A01+UH07-KF00/Programmbausteine/Anlage/1_Vollpuffer/PufferAuslagern/VollPufferStreckenB.awl @@ -0,0 +1,581 @@ +=== FB 1432: VollPufferStreckenB [STL] === +INTERFACE: + Input: + Output: + InOut: + Static: + VollPuffer_26 : "MHMVollpuffer" + VollPuffer_27 : "MHMVollpuffer" + VollPuffer_28 : "MHMVollpuffer" + VollPuffer_29 : "MHMVollpuffer" + VollPuffer_30 : "MHMVollpuffer" + VollPuffer_31 : "MHMVollpuffer" + VollPuffer_32 : "MHMVollpuffer" + VollPuffer_33 : "MHMVollpuffer" + VollPuffer_34 : "MHMVollpuffer" + VollPuffer_35 : "MHMVollpuffer" + VollPuffer_36 : "MHMVollpuffer" + VollPuffer_37 : "MHMVollpuffer" + VollPuffer_38 : "MHMVollpuffer" + VollPuffer_39 : "MHMVollpuffer" + VollPuffer_40 : "MHMVollpuffer" + VollPuffer_41 : "MHMVollpuffer" + VollPuffer_42 : "MHMVollpuffer" + VollPuffer_43 : "MHMVollpuffer" + VollPuffer_44 : "MHMVollpuffer" + VollPuffer_45 : "MHMVollpuffer" + VollPuffer_46 : "MHMVollpuffer" + VollPuffer_47 : "MHMVollpuffer" + VollPuffer_48 : "MHMVollpuffer" + VollPuffer_49 : "MHMVollpuffer" + VollPuffer_50 : "MHMVollpuffer" + VollPuffer_51 : "MHMÜberlauf_VP" + Simulation : Struct + Gefahren_26 : Bool + Gefahren_27 : Bool + Gefahren_28 : Bool + Gefahren_29 : Bool + Gefahren_30 : Bool + Gefahren_31 : Bool + Gefahren_32 : Bool + Gefahren_33 : Bool + Gefahren_34 : Bool + Gefahren_35 : Bool + Gefahren_36 : Bool + Gefahren_37 : Bool + Gefahren_38 : Bool + Gefahren_39 : Bool + Gefahren_40 : Bool + Gefahren_41 : Bool + Gefahren_42 : Bool + Gefahren_43 : Bool + Gefahren_44 : Bool + Gefahren_45 : Bool + Gefahren_46 : Bool + Gefahren_47 : Bool + Gefahren_48 : Bool + Gefahren_49 : Bool + Gefahren_50 : Bool + Gefahren_51 : Bool + Ohne_PC_fahren : Bool + Ein_Inilauf_aktiv : Bool + Temp: + ErrQuit : Bool + ErrAnz : Bool + Antrieb : Bool + Stau : Bool + Start_Ok : Bool + SorterReset : Bool + A_Err : Char + B_Err : Char + C_Err : Char + D_Err : Char + Constant: + +--- NW 1: Systemzeug --- + A "DOutbound_Bereich".A01_UH07.AnlageEin + = VollPuffer_26.Dyn.Sk_OUT.Auto_akt + = VollPuffer_27.Dyn.Sk_OUT.Auto_akt + = VollPuffer_28.Dyn.Sk_OUT.Auto_akt + = VollPuffer_29.Dyn.Sk_OUT.Auto_akt + = VollPuffer_30.Dyn.Sk_OUT.Auto_akt + = VollPuffer_31.Dyn.Sk_OUT.Auto_akt + = VollPuffer_32.Dyn.Sk_OUT.Auto_akt + = VollPuffer_33.Dyn.Sk_OUT.Auto_akt + = VollPuffer_34.Dyn.Sk_OUT.Auto_akt + = VollPuffer_35.Dyn.Sk_OUT.Auto_akt + = VollPuffer_36.Dyn.Sk_OUT.Auto_akt + = VollPuffer_37.Dyn.Sk_OUT.Auto_akt + = VollPuffer_38.Dyn.Sk_OUT.Auto_akt + = VollPuffer_39.Dyn.Sk_OUT.Auto_akt + = VollPuffer_40.Dyn.Sk_OUT.Auto_akt + = VollPuffer_41.Dyn.Sk_OUT.Auto_akt + = VollPuffer_42.Dyn.Sk_OUT.Auto_akt + = VollPuffer_43.Dyn.Sk_OUT.Auto_akt + = VollPuffer_44.Dyn.Sk_OUT.Auto_akt + = VollPuffer_45.Dyn.Sk_OUT.Auto_akt + = VollPuffer_46.Dyn.Sk_OUT.Auto_akt + = VollPuffer_47.Dyn.Sk_OUT.Auto_akt + = VollPuffer_48.Dyn.Sk_OUT.Auto_akt + = VollPuffer_49.Dyn.Sk_OUT.Auto_akt + = VollPuffer_50.Dyn.Sk_OUT.Auto_akt + = VollPuffer_51.Dyn.Sk_OUT.Auto_akt + + + AN "DOutbound_Bereich".A01_UC071.BereichErr + = VollPuffer_26.Dyn.Sk_OUT.Bereich_ok + = VollPuffer_27.Dyn.Sk_OUT.Bereich_ok + = VollPuffer_28.Dyn.Sk_OUT.Bereich_ok + = VollPuffer_29.Dyn.Sk_OUT.Bereich_ok + = VollPuffer_30.Dyn.Sk_OUT.Bereich_ok + = VollPuffer_31.Dyn.Sk_OUT.Bereich_ok + = VollPuffer_32.Dyn.Sk_OUT.Bereich_ok + = VollPuffer_33.Dyn.Sk_OUT.Bereich_ok + = VollPuffer_34.Dyn.Sk_OUT.Bereich_ok + = VollPuffer_35.Dyn.Sk_OUT.Bereich_ok + = VollPuffer_36.Dyn.Sk_OUT.Bereich_ok + = VollPuffer_37.Dyn.Sk_OUT.Bereich_ok + = VollPuffer_38.Dyn.Sk_OUT.Bereich_ok + = VollPuffer_39.Dyn.Sk_OUT.Bereich_ok + = VollPuffer_40.Dyn.Sk_OUT.Bereich_ok + = VollPuffer_41.Dyn.Sk_OUT.Bereich_ok + = VollPuffer_42.Dyn.Sk_OUT.Bereich_ok + = VollPuffer_43.Dyn.Sk_OUT.Bereich_ok + = VollPuffer_44.Dyn.Sk_OUT.Bereich_ok + = VollPuffer_45.Dyn.Sk_OUT.Bereich_ok + = VollPuffer_46.Dyn.Sk_OUT.Bereich_ok + = VollPuffer_47.Dyn.Sk_OUT.Bereich_ok + = VollPuffer_48.Dyn.Sk_OUT.Bereich_ok + = VollPuffer_49.Dyn.Sk_OUT.Bereich_ok + = VollPuffer_50.Dyn.Sk_OUT.Bereich_ok + = VollPuffer_51.Dyn.Sk_OUT.Bereich_ok + +// Bereichshalt: + CLR // Nicht verbaut + R VollPuffer_26.Dyn.Sk_OUT.Bereich_ok + + +--- NW 2: Nur 1 aktiver Inilauf möglich, falls kein Abruf aktiv! --- + A "DVollPufferStreckenA".VollPuffer_01.Dyn.Status.Puffer_initialisieren_OUT // Ein aktiver Ini-Lauf + O "DVollPufferStreckenA".VollPuffer_02.Dyn.Status.Puffer_initialisieren_OUT + O "DVollPufferStreckenA".VollPuffer_03.Dyn.Status.Puffer_initialisieren_OUT + O "DVollPufferStreckenA".VollPuffer_04.Dyn.Status.Puffer_initialisieren_OUT + O "DVollPufferStreckenA".VollPuffer_05.Dyn.Status.Puffer_initialisieren_OUT + O "DVollPufferStreckenA".VollPuffer_06.Dyn.Status.Puffer_initialisieren_OUT + O "DVollPufferStreckenA".VollPuffer_07.Dyn.Status.Puffer_initialisieren_OUT + O "DVollPufferStreckenA".VollPuffer_08.Dyn.Status.Puffer_initialisieren_OUT + O "DVollPufferStreckenA".VollPuffer_09.Dyn.Status.Puffer_initialisieren_OUT + O "DVollPufferStreckenA".VollPuffer_10.Dyn.Status.Puffer_initialisieren_OUT + O "DVollPufferStreckenA".VollPuffer_11.Dyn.Status.Puffer_initialisieren_OUT + O "DVollPufferStreckenA".VollPuffer_12.Dyn.Status.Puffer_initialisieren_OUT + O "DVollPufferStreckenA".VollPuffer_13.Dyn.Status.Puffer_initialisieren_OUT + O "DVollPufferStreckenA".VollPuffer_14.Dyn.Status.Puffer_initialisieren_OUT + O "DVollPufferStreckenA".VollPuffer_15.Dyn.Status.Puffer_initialisieren_OUT + O "DVollPufferStreckenA".VollPuffer_16.Dyn.Status.Puffer_initialisieren_OUT + O "DVollPufferStreckenA".VollPuffer_17.Dyn.Status.Puffer_initialisieren_OUT + O "DVollPufferStreckenA".VollPuffer_18.Dyn.Status.Puffer_initialisieren_OUT + O "DVollPufferStreckenA".VollPuffer_19.Dyn.Status.Puffer_initialisieren_OUT + O "DVollPufferStreckenA".VollPuffer_20.Dyn.Status.Puffer_initialisieren_OUT + O "DVollPufferStreckenA".VollPuffer_21.Dyn.Status.Puffer_initialisieren_OUT + O "DVollPufferStreckenA".VollPuffer_22.Dyn.Status.Puffer_initialisieren_OUT + O "DVollPufferStreckenA".VollPuffer_23.Dyn.Status.Puffer_initialisieren_OUT + O "DVollPufferStreckenA".VollPuffer_24.Dyn.Status.Puffer_initialisieren_OUT + O "DVollPufferStreckenA".VollPuffer_25.Dyn.Status.Puffer_initialisieren_OUT + O VollPuffer_26.Dyn.Status.Puffer_initialisieren_OUT + O VollPuffer_27.Dyn.Status.Puffer_initialisieren_OUT + O VollPuffer_28.Dyn.Status.Puffer_initialisieren_OUT + O VollPuffer_29.Dyn.Status.Puffer_initialisieren_OUT + O VollPuffer_30.Dyn.Status.Puffer_initialisieren_OUT + O VollPuffer_31.Dyn.Status.Puffer_initialisieren_OUT + O VollPuffer_32.Dyn.Status.Puffer_initialisieren_OUT + O VollPuffer_33.Dyn.Status.Puffer_initialisieren_OUT + O VollPuffer_34.Dyn.Status.Puffer_initialisieren_OUT + O VollPuffer_35.Dyn.Status.Puffer_initialisieren_OUT + O VollPuffer_36.Dyn.Status.Puffer_initialisieren_OUT + O VollPuffer_37.Dyn.Status.Puffer_initialisieren_OUT + O VollPuffer_38.Dyn.Status.Puffer_initialisieren_OUT + O VollPuffer_39.Dyn.Status.Puffer_initialisieren_OUT + O VollPuffer_40.Dyn.Status.Puffer_initialisieren_OUT + O VollPuffer_41.Dyn.Status.Puffer_initialisieren_OUT + O VollPuffer_42.Dyn.Status.Puffer_initialisieren_OUT + O VollPuffer_43.Dyn.Status.Puffer_initialisieren_OUT + O VollPuffer_44.Dyn.Status.Puffer_initialisieren_OUT + O VollPuffer_45.Dyn.Status.Puffer_initialisieren_OUT + O VollPuffer_46.Dyn.Status.Puffer_initialisieren_OUT + O VollPuffer_47.Dyn.Status.Puffer_initialisieren_OUT + O VollPuffer_48.Dyn.Status.Puffer_initialisieren_OUT + O VollPuffer_49.Dyn.Status.Puffer_initialisieren_OUT + O VollPuffer_50.Dyn.Status.Puffer_initialisieren_OUT + O VollPuffer_51.Dyn.Status.Puffer_initialisieren_OUT + = Ein_Inilauf_aktiv + + +--- NW 3: AusVollPuffer-Simulation B --- + JU En02_B + + A Ohne_PC_fahren + JCN En02_B + + A VollPuffer_26.Status2.Alles_ausfahren_OUT + O VollPuffer_27.Status2.Alles_ausfahren_OUT + O VollPuffer_28.Status2.Alles_ausfahren_OUT + O VollPuffer_29.Status2.Alles_ausfahren_OUT + O VollPuffer_30.Status2.Alles_ausfahren_OUT + O VollPuffer_31.Status2.Alles_ausfahren_OUT + O VollPuffer_32.Status2.Alles_ausfahren_OUT + O VollPuffer_33.Status2.Alles_ausfahren_OUT + O VollPuffer_34.Status2.Alles_ausfahren_OUT + O VollPuffer_35.Status2.Alles_ausfahren_OUT + O VollPuffer_36.Status2.Alles_ausfahren_OUT + O VollPuffer_37.Status2.Alles_ausfahren_OUT + O VollPuffer_38.Status2.Alles_ausfahren_OUT + O VollPuffer_39.Status2.Alles_ausfahren_OUT + O VollPuffer_40.Status2.Alles_ausfahren_OUT + O VollPuffer_41.Status2.Alles_ausfahren_OUT + O VollPuffer_42.Status2.Alles_ausfahren_OUT + O VollPuffer_43.Status2.Alles_ausfahren_OUT + O VollPuffer_44.Status2.Alles_ausfahren_OUT + O VollPuffer_45.Status2.Alles_ausfahren_OUT + O VollPuffer_46.Status2.Alles_ausfahren_OUT + O VollPuffer_47.Status2.Alles_ausfahren_OUT + O VollPuffer_48.Status2.Alles_ausfahren_OUT + O VollPuffer_49.Status2.Alles_ausfahren_OUT + O VollPuffer_50.Status2.Alles_ausfahren_OUT + O VollPuffer_51.Status2.Alles_ausfahren_OUT + JC En02_B + + A "BG3206" + AN Simulation.Gefahren_26 + S VollPuffer_26.Status2.Alles_ausfahren_OUT + S Simulation.Gefahren_26 + JC En02_B + + A "BG3205" + AN Simulation.Gefahren_27 + S VollPuffer_27.Status2.Alles_ausfahren_OUT + S Simulation.Gefahren_27 + JC En02_B + + A "BG3204" + AN Simulation.Gefahren_28 + S VollPuffer_28.Status2.Alles_ausfahren_OUT + S Simulation.Gefahren_28 + JC En02_B + + A "BG3203" + AN Simulation.Gefahren_29 + S VollPuffer_29.Status2.Alles_ausfahren_OUT + S Simulation.Gefahren_29 + JC En02_B + + A "BG3202" + AN Simulation.Gefahren_30 + S VollPuffer_30.Status2.Alles_ausfahren_OUT + S Simulation.Gefahren_30 + JC En02_B + + A "BG3201" + AN Simulation.Gefahren_31 + S VollPuffer_31.Status2.Alles_ausfahren_OUT + S Simulation.Gefahren_31 + JC En02_B + + A "BG3200" + AN Simulation.Gefahren_32 + S VollPuffer_32.Status2.Alles_ausfahren_OUT + S Simulation.Gefahren_32 + JC En02_B + + A "BG3197" + AN Simulation.Gefahren_33 + S VollPuffer_33.Status2.Alles_ausfahren_OUT + S Simulation.Gefahren_33 + JC En02_B + + + A "BG3196" + AN Simulation.Gefahren_34 + S VollPuffer_34.Status2.Alles_ausfahren_OUT + S Simulation.Gefahren_34 + JC En02_B + + A "BG3195" + AN Simulation.Gefahren_35 + S VollPuffer_35.Status2.Alles_ausfahren_OUT + S Simulation.Gefahren_35 + JC En02_B + + A "BG3194" + AN Simulation.Gefahren_36 + S VollPuffer_36.Status2.Alles_ausfahren_OUT + S Simulation.Gefahren_36 + JC En02_B + + A "BG3193" + AN Simulation.Gefahren_37 + S VollPuffer_37.Status2.Alles_ausfahren_OUT + S Simulation.Gefahren_37 + JC En02_B + + A "BG3192" + AN Simulation.Gefahren_38 + S VollPuffer_38.Status2.Alles_ausfahren_OUT + S Simulation.Gefahren_38 + JC En02_B + + A "BG3191" + AN Simulation.Gefahren_39 + S VollPuffer_39.Status2.Alles_ausfahren_OUT + S Simulation.Gefahren_39 + JC En02_B + + A "BG3190" + AN Simulation.Gefahren_40 + S VollPuffer_40.Status2.Alles_ausfahren_OUT + S Simulation.Gefahren_40 + JC En02_B + + A "BG3494" + AN Simulation.Gefahren_41 + S VollPuffer_41.Status2.Alles_ausfahren_OUT + S Simulation.Gefahren_41 + JC En02_B + + A "BG3493" + AN Simulation.Gefahren_42 + S VollPuffer_42.Status2.Alles_ausfahren_OUT + S Simulation.Gefahren_42 + JC En02_B + + A "BG3492" + AN Simulation.Gefahren_43 + S VollPuffer_43.Status2.Alles_ausfahren_OUT + S Simulation.Gefahren_43 + JC En02_B + + A "BG3491" + AN Simulation.Gefahren_44 + S VollPuffer_44.Status2.Alles_ausfahren_OUT + S Simulation.Gefahren_44 + JC En02_B + + A "BG3490" + AN Simulation.Gefahren_45 + S VollPuffer_45.Status2.Alles_ausfahren_OUT + S Simulation.Gefahren_45 + JC En02_B + + A "BG3487" + AN Simulation.Gefahren_46 + S VollPuffer_46.Status2.Alles_ausfahren_OUT + S Simulation.Gefahren_46 + JC En02_B + + A "BG3486" + AN Simulation.Gefahren_47 + S VollPuffer_47.Status2.Alles_ausfahren_OUT + S Simulation.Gefahren_47 + JC En02_B + + A "BG3485" + AN Simulation.Gefahren_48 + S VollPuffer_47.Status2.Alles_ausfahren_OUT + S Simulation.Gefahren_48 + JC En02_B + + A "BG3484" + AN Simulation.Gefahren_49 + S VollPuffer_49.Status2.Alles_ausfahren_OUT + S Simulation.Gefahren_49 + JC En02_B + + A "BG3483" + AN Simulation.Gefahren_50 + S VollPuffer_50.Status2.Alles_ausfahren_OUT + S Simulation.Gefahren_50 + JC En02_B + + A "BG3482" + AN Simulation.Gefahren_51 + S VollPuffer_51.Status2.Alles_ausfahren_OUT + S Simulation.Gefahren_51 + JC En02_B + + SET + R Simulation.Gefahren_26 + R Simulation.Gefahren_27 + R Simulation.Gefahren_28 + R Simulation.Gefahren_29 + R Simulation.Gefahren_30 + R Simulation.Gefahren_31 + R Simulation.Gefahren_32 + R Simulation.Gefahren_33 + R Simulation.Gefahren_34 + R Simulation.Gefahren_35 + R Simulation.Gefahren_36 + R Simulation.Gefahren_37 + R Simulation.Gefahren_38 + R Simulation.Gefahren_39 + R Simulation.Gefahren_40 + R Simulation.Gefahren_41 + R Simulation.Gefahren_42 + R Simulation.Gefahren_43 + R Simulation.Gefahren_44 + R Simulation.Gefahren_45 + R Simulation.Gefahren_46 + R Simulation.Gefahren_47 + R Simulation.Gefahren_48 + R Simulation.Gefahren_49 + R Simulation.Gefahren_50 + +En02_B: NOP 0 + + +--- NW 4: AusVollPuffer-Strecke hat Stau --- + A "DVP_Sensoren".Stau_BG3183.Stat.B_Akt + O "DVP_Sensoren".Stau_BG3182.Stat.B_Akt + O "DVP_Sensoren".Stau_BG3181.Stat.B_Akt + O "DVP_Sensoren".Stau_BG3481.Stat.B_Akt + = Stau + + +--- NW 5: Starten ist erlaubt --- +// Alle Puffer-Schleusen geschlossen? + L "AB319" + L 0 // Alle Puffer-Schleusen geschlossen? + ==I // Ja ! + AN "MB3200" + AN "MB3201" + AN "MB3202" + AN "MB3203" + AN "MB3204" + AN "MB3205" + AN "MB3206" + AN "MB3482" + AN "MB3483" + AN "MB3484" + AN "MB3485" + AN "MB3486" + AN "MB3487" + AN "MB3490" + AN "MB3491" + AN "MB3492" + AN "MB3493" + AN "MB3494" + AN Stau + = Start_Ok + + +--- NW 6: Störung quittieren UZ7104/7107 --- + A "DOutbound_Bereich".A01_UZ7104.StOk_aktiv + O "DOutbound_Bereich".A01_UZ7107.StOk_aktiv + = ErrQuit + + +--- NW 7: VollPuffer 26 --- + SET + R ErrAnz + +CALL FB "None" , (VollPuffer_Nr:=126, ErrQuit:=ErrQuit, B_VollPufferEinfahrt:="BG3023", B_InSchleuse_IN:="BG3046", B_InSchleuse_OUT:="BG3206", B_AusSchleuse_OUT:="BG3183", B_Stau_raus_Out:="DVP_Sensoren".Stau_BG3183.Stat.B_Akt, B_QuerTrolley_Out:="BG3182", Antrieb_plus_aktiv:="MA0147", Schleuse_geöffnet_IN:="MB3046", Schleuse_geöffnet_OUT:="MB3206", Y_Schleuse_Auf_IN:="DVP_Zylinder".Schleuse_Mitte_VP26.Stat.Ast, Y_Schleuse_Auf_OUT:="DVP_Zylinder".Schleuse_Ausfahrt_VP26.Stat.Ast, Error:=DB708.DBW370, Start_Ok:=Start_Ok, Antrieb_plus_start:="DVP_Antriebe".MA0147.Stat.A_vor, Antrieb_plus_stoppen:="DVP_Antriebe".MA0147.Stat.Stop_vor, hStOk:=ErrAnz, Ausfahr_Inks:="DVPAuslagern".Ausfahren_Ok_B.Dyn.Rest_Inks) + + +--- NW 8: VollPuffer 27 --- +CALL FB "None" , (VollPuffer_Nr:=127, ErrQuit:=ErrQuit, B_VollPufferEinfahrt:="BG3022", B_InSchleuse_IN:="BG3045", B_InSchleuse_OUT:="BG3205", B_AusSchleuse_OUT:="BG3183", B_Stau_raus_Out:="DVP_Sensoren".Stau_BG3183.Stat.B_Akt, B_QuerTrolley_Out:="BG3182", Antrieb_plus_aktiv:="MA0147", Schleuse_geöffnet_IN:="MB3045", Schleuse_geöffnet_OUT:="MB3205", Y_Schleuse_Auf_IN:="DVP_Zylinder".Schleuse_Mitte_VP27.Stat.Ast, Y_Schleuse_Auf_OUT:="DVP_Zylinder".Schleuse_Ausfahrt_VP27.Stat.Ast, Error:=DB708.DBW372, Start_Ok:=Start_Ok, Antrieb_plus_start:="DVP_Antriebe".MA0147.Stat.A_vor, Antrieb_plus_stoppen:="DVP_Antriebe".MA0147.Stat.Stop_vor, hStOk:=ErrAnz, Ausfahr_Inks:="DVPAuslagern".Ausfahren_Ok_B.Dyn.Rest_Inks) + + +--- NW 9: VollPuffer 28 --- +CALL FB "None" , (VollPuffer_Nr:=128, ErrQuit:=ErrQuit, B_VollPufferEinfahrt:="BG3021", B_InSchleuse_IN:="BG3044", B_InSchleuse_OUT:="BG3204", B_AusSchleuse_OUT:="BG3183", B_Stau_raus_Out:="DVP_Sensoren".Stau_BG3183.Stat.B_Akt, B_QuerTrolley_Out:="BG3182", Antrieb_plus_aktiv:="MA0147", Schleuse_geöffnet_IN:="MB3044", Schleuse_geöffnet_OUT:="MB3204", Y_Schleuse_Auf_IN:="DVP_Zylinder".Schleuse_Mitte_VP28.Stat.Ast, Y_Schleuse_Auf_OUT:="DVP_Zylinder".Schleuse_Ausfahrt_VP28.Stat.Ast, Error:=DB708.DBW374, Start_Ok:=Start_Ok, Antrieb_plus_start:="DVP_Antriebe".MA0147.Stat.A_vor, Antrieb_plus_stoppen:="DVP_Antriebe".MA0147.Stat.Stop_vor, hStOk:=ErrAnz, Ausfahr_Inks:="DVPAuslagern".Ausfahren_Ok_B.Dyn.Rest_Inks) + + +--- NW 10: VollPuffer 29 --- +CALL FB "None" , (VollPuffer_Nr:=129, ErrQuit:=ErrQuit, B_VollPufferEinfahrt:="BG3020", B_InSchleuse_IN:="BG3043", B_InSchleuse_OUT:="BG3203", B_AusSchleuse_OUT:=?, B_Stau_raus_Out:="DVP_Sensoren".Stau_BG3183.Stat.B_Akt, B_QuerTrolley_Out:="BG3182", Antrieb_plus_aktiv:="MA0147", Schleuse_geöffnet_IN:="MB3043", Schleuse_geöffnet_OUT:="MB3203", Y_Schleuse_Auf_IN:="DVP_Zylinder".Schleuse_Mitte_VP29.Stat.Ast, Y_Schleuse_Auf_OUT:="DVP_Zylinder".Schleuse_Ausfahrt_VP29.Stat.Ast, Error:=DB708.DBW376, Start_Ok:=Start_Ok, Antrieb_plus_start:="DVP_Antriebe".MA0147.Stat.A_vor, Antrieb_plus_stoppen:="DVP_Antriebe".MA0147.Stat.Stop_vor, hStOk:=ErrAnz, Ausfahr_Inks:="DVPAuslagern".Ausfahren_Ok_B.Dyn.Rest_Inks) + + +--- NW 11: VollPuffer 30 --- +CALL FB "None" , (VollPuffer_Nr:=130, ErrQuit:=ErrQuit, B_VollPufferEinfahrt:="BG3017", B_InSchleuse_IN:="BG3042", B_InSchleuse_OUT:="BG3202", B_AusSchleuse_OUT:=?, B_Stau_raus_Out:="DVP_Sensoren".Stau_BG3183.Stat.B_Akt, B_QuerTrolley_Out:="BG3182", Antrieb_plus_aktiv:="MA0147", Schleuse_geöffnet_IN:="MB3042", Schleuse_geöffnet_OUT:="MB3202", Y_Schleuse_Auf_IN:="DVP_Zylinder".Schleuse_Mitte_VP30.Stat.Ast, Y_Schleuse_Auf_OUT:="DVP_Zylinder".Schleuse_Ausfahrt_VP30.Stat.Ast, Error:=DB708.DBW378, Start_Ok:=Start_Ok, Antrieb_plus_start:="DVP_Antriebe".MA0147.Stat.A_vor, Antrieb_plus_stoppen:="DVP_Antriebe".MA0147.Stat.Stop_vor, hStOk:=ErrAnz, Ausfahr_Inks:="DVPAuslagern".Ausfahren_Ok_B.Dyn.Rest_Inks) + + +--- NW 12: VollPuffer 31 --- +CALL FB "None" , (VollPuffer_Nr:=131, ErrQuit:=ErrQuit, B_VollPufferEinfahrt:="BG3016", B_InSchleuse_IN:="BG3041", B_InSchleuse_OUT:="BG3201", B_AusSchleuse_OUT:=?, B_Stau_raus_Out:="DVP_Sensoren".Stau_BG3183.Stat.B_Akt, B_QuerTrolley_Out:="BG3182", Antrieb_plus_aktiv:="MA0147", Schleuse_geöffnet_IN:="MB3041", Schleuse_geöffnet_OUT:="MB3201", Y_Schleuse_Auf_IN:="DVP_Zylinder".Schleuse_Mitte_VP31.Stat.Ast, Y_Schleuse_Auf_OUT:="DVP_Zylinder".Schleuse_Ausfahrt_VP31.Stat.Ast, Error:=DB708.DBW380, Start_Ok:=Start_Ok, Antrieb_plus_start:="DVP_Antriebe".MA0147.Stat.A_vor, Antrieb_plus_stoppen:="DVP_Antriebe".MA0147.Stat.Stop_vor, hStOk:=ErrAnz, Ausfahr_Inks:="DVPAuslagern".Ausfahren_Ok_B.Dyn.Rest_Inks) + + +--- NW 13: VollPuffer 32 --- +CALL FB "None" , (VollPuffer_Nr:=132, ErrQuit:=ErrQuit, B_VollPufferEinfahrt:="BG3015", B_InSchleuse_IN:="BG3040", B_InSchleuse_OUT:="BG3200", B_AusSchleuse_OUT:=?, B_Stau_raus_Out:="DVP_Sensoren".Stau_BG3182.Stat.B_Akt, B_QuerTrolley_Out:="BG3181", Antrieb_plus_aktiv:="MA0147", Schleuse_geöffnet_IN:="MB3040", Schleuse_geöffnet_OUT:="MB3200", Y_Schleuse_Auf_IN:="DVP_Zylinder".Schleuse_Mitte_VP32.Stat.Ast, Y_Schleuse_Auf_OUT:="DVP_Zylinder".Schleuse_Ausfahrt_VP32.Stat.Ast, Error:=DB708.DBW382, Start_Ok:=Start_Ok, Antrieb_plus_start:="DVP_Antriebe".MA0147.Stat.A_vor, Antrieb_plus_stoppen:="DVP_Antriebe".MA0147.Stat.Stop_vor, hStOk:=ErrAnz, Ausfahr_Inks:="DVPAuslagern".Ausfahren_Ok_B.Dyn.Rest_Inks) + + +--- NW 14: VollPuffer 33 --- +CALL FB "None" , (VollPuffer_Nr:=133, ErrQuit:=ErrQuit, B_VollPufferEinfahrt:="BG3014", B_InSchleuse_IN:="BG3037", B_InSchleuse_OUT:="BG3197", B_AusSchleuse_OUT:="BG3182", B_Stau_raus_Out:="DVP_Sensoren".Stau_BG3182.Stat.B_Akt, B_QuerTrolley_Out:="BG3181", Antrieb_plus_aktiv:="MA0147", Schleuse_geöffnet_IN:="MB3037", Schleuse_geöffnet_OUT:="MB3197", Y_Schleuse_Auf_IN:="DVP_Zylinder".Schleuse_Mitte_VP33.Stat.Ast, Y_Schleuse_Auf_OUT:="DVP_Zylinder".Schleuse_Ausfahrt_VP33.Stat.Ast, Error:=DB708.DBW384, Start_Ok:=Start_Ok, Antrieb_plus_start:="DVP_Antriebe".MA0147.Stat.A_vor, Antrieb_plus_stoppen:="DVP_Antriebe".MA0147.Stat.Stop_vor, hStOk:=ErrAnz, Ausfahr_Inks:="DVPAuslagern".Ausfahren_Ok_B.Dyn.Rest_Inks) + + +--- NW 15: VollPuffer 34 --- +CALL FB "None" , (VollPuffer_Nr:=134, ErrQuit:=ErrQuit, B_VollPufferEinfahrt:="BG3013", B_InSchleuse_IN:="BG3036", B_InSchleuse_OUT:="BG3196", B_AusSchleuse_OUT:="BG3182", B_Stau_raus_Out:="DVP_Sensoren".Stau_BG3182.Stat.B_Akt, B_QuerTrolley_Out:="BG3181", Antrieb_plus_aktiv:="MA0147", Schleuse_geöffnet_IN:="MB3036", Schleuse_geöffnet_OUT:="MB3196", Y_Schleuse_Auf_IN:="DVP_Zylinder".Schleuse_Mitte_VP34.Stat.Ast, Y_Schleuse_Auf_OUT:="DVP_Zylinder".Schleuse_Ausfahrt_VP34.Stat.Ast, Error:=DB708.DBW386, Start_Ok:=Start_Ok, Antrieb_plus_start:="DVP_Antriebe".MA0147.Stat.A_vor, Antrieb_plus_stoppen:="DVP_Antriebe".MA0147.Stat.Stop_vor, hStOk:=ErrAnz, Ausfahr_Inks:="DVPAuslagern".Ausfahren_Ok_B.Dyn.Rest_Inks) + + +--- NW 16: VollPuffer 35 --- +CALL FB "None" , (VollPuffer_Nr:=135, ErrQuit:=ErrQuit, B_VollPufferEinfahrt:="BG3012", B_InSchleuse_IN:="BG3035", B_InSchleuse_OUT:="BG3195", B_AusSchleuse_OUT:=?, B_Stau_raus_Out:="DVP_Sensoren".Stau_BG3182.Stat.B_Akt, B_QuerTrolley_Out:="BG3181", Antrieb_plus_aktiv:="MA0147", Schleuse_geöffnet_IN:="MB3035", Schleuse_geöffnet_OUT:="MB3195", Y_Schleuse_Auf_IN:="DVP_Zylinder".Schleuse_Mitte_VP35.Stat.Ast, Y_Schleuse_Auf_OUT:="DVP_Zylinder".Schleuse_Ausfahrt_VP35.Stat.Ast, Error:=DB708.DBW388, Start_Ok:=Start_Ok, Antrieb_plus_start:="DVP_Antriebe".MA0147.Stat.A_vor, Antrieb_plus_stoppen:="DVP_Antriebe".MA0147.Stat.Stop_vor, hStOk:=ErrAnz, Ausfahr_Inks:="DVPAuslagern".Ausfahren_Ok_B.Dyn.Rest_Inks) + + +--- NW 17: VollPuffer 36 --- +CALL FB "None" , (VollPuffer_Nr:=136, ErrQuit:=ErrQuit, B_VollPufferEinfahrt:="BG3011", B_InSchleuse_IN:="BG3034", B_InSchleuse_OUT:="BG3194", B_AusSchleuse_OUT:=?, B_Stau_raus_Out:="DVP_Sensoren".Stau_BG3182.Stat.B_Akt, B_QuerTrolley_Out:="BG3181", Antrieb_plus_aktiv:="MA0147", Schleuse_geöffnet_IN:="MB3034", Schleuse_geöffnet_OUT:="MB3194", Y_Schleuse_Auf_IN:="DVP_Zylinder".Schleuse_Mitte_VP36.Stat.Ast, Y_Schleuse_Auf_OUT:="DVP_Zylinder".Schleuse_Ausfahrt_VP36.Stat.Ast, Error:=DB708.DBW390, Start_Ok:=Start_Ok, Antrieb_plus_start:="DVP_Antriebe".MA0147.Stat.A_vor, Antrieb_plus_stoppen:="DVP_Antriebe".MA0147.Stat.Stop_vor, hStOk:=ErrAnz, Ausfahr_Inks:="DVPAuslagern".Ausfahren_Ok_B.Dyn.Rest_Inks) + + +--- NW 18: VollPuffer 37 --- +CALL FB "None" , (VollPuffer_Nr:=137, ErrQuit:=ErrQuit, B_VollPufferEinfahrt:="BG3010", B_InSchleuse_IN:="BG3033", B_InSchleuse_OUT:="BG3193", B_AusSchleuse_OUT:=?, B_Stau_raus_Out:="DVP_Sensoren".Stau_BG3182.Stat.B_Akt, B_QuerTrolley_Out:="BG3181", Antrieb_plus_aktiv:="MA0147", Schleuse_geöffnet_IN:="MB3033", Schleuse_geöffnet_OUT:="MB3193", Y_Schleuse_Auf_IN:="DVP_Zylinder".Schleuse_Mitte_VP37.Stat.Ast, Y_Schleuse_Auf_OUT:="DVP_Zylinder".Schleuse_Ausfahrt_VP37.Stat.Ast, Error:=DB708.DBW392, Start_Ok:=Start_Ok, Antrieb_plus_start:="DVP_Antriebe".MA0147.Stat.A_vor, Antrieb_plus_stoppen:="DVP_Antriebe".MA0147.Stat.Stop_vor, hStOk:=ErrAnz, Ausfahr_Inks:="DVPAuslagern".Ausfahren_Ok_B.Dyn.Rest_Inks) + + +--- NW 19: VollPuffer 38 --- +CALL FB "None" , (VollPuffer_Nr:=138, ErrQuit:=ErrQuit, B_VollPufferEinfahrt:="BG3007", B_InSchleuse_IN:="BG3032", B_InSchleuse_OUT:="BG3192", B_AusSchleuse_OUT:=?, B_Stau_raus_Out:="DVP_Sensoren".Stau_BG3182.Stat.B_Akt, B_QuerTrolley_Out:="BG3181", Antrieb_plus_aktiv:="MA0147", Schleuse_geöffnet_IN:="MB3032", Schleuse_geöffnet_OUT:="MB3192", Y_Schleuse_Auf_IN:="DVP_Zylinder".Schleuse_Mitte_VP38.Stat.Ast, Y_Schleuse_Auf_OUT:="DVP_Zylinder".Schleuse_Ausfahrt_VP38.Stat.Ast, Error:=DB708.DBW394, Start_Ok:=Start_Ok, Antrieb_plus_start:="DVP_Antriebe".MA0147.Stat.A_vor, Antrieb_plus_stoppen:="DVP_Antriebe".MA0147.Stat.Stop_vor, hStOk:=ErrAnz, Ausfahr_Inks:="DVPAuslagern".Ausfahren_Ok_B.Dyn.Rest_Inks) + + +--- NW 20: VollPuffer 39 --- +CALL FB "None" , (VollPuffer_Nr:=139, ErrQuit:=ErrQuit, B_VollPufferEinfahrt:="BG3006", B_InSchleuse_IN:="BG3031", B_InSchleuse_OUT:="BG3191", B_AusSchleuse_OUT:="BG3181", B_Stau_raus_Out:="DVP_Sensoren".Stau_BG3181.Stat.B_Akt, B_QuerTrolley_Out:="BG3481", Antrieb_plus_aktiv:="MA0147", Schleuse_geöffnet_IN:="MB3031", Schleuse_geöffnet_OUT:="MB3191", Y_Schleuse_Auf_IN:="DVP_Zylinder".Schleuse_Mitte_VP39.Stat.Ast, Y_Schleuse_Auf_OUT:="DVP_Zylinder".Schleuse_Ausfahrt_VP39.Stat.Ast, Error:=DB708.DBW396, Start_Ok:=Start_Ok, Antrieb_plus_start:="DVP_Antriebe".MA0147.Stat.A_vor, Antrieb_plus_stoppen:="DVP_Antriebe".MA0147.Stat.Stop_vor, hStOk:=ErrAnz, Ausfahr_Inks:="DVPAuslagern".Ausfahren_Ok_B.Dyn.Rest_Inks) + + +--- NW 21: VollPuffer 40 --- +CALL FB "None" , (VollPuffer_Nr:=140, ErrQuit:=ErrQuit, B_VollPufferEinfahrt:="BG3005", B_InSchleuse_IN:="BG3030", B_InSchleuse_OUT:="BG3190", B_AusSchleuse_OUT:="BG3181", B_Stau_raus_Out:="DVP_Sensoren".Stau_BG3181.Stat.B_Akt, B_QuerTrolley_Out:="BG3481", Antrieb_plus_aktiv:="MA0147", Schleuse_geöffnet_IN:="MB3030", Schleuse_geöffnet_OUT:="MB3190", Y_Schleuse_Auf_IN:="DVP_Zylinder".Schleuse_Mitte_VP40.Stat.Ast, Y_Schleuse_Auf_OUT:="DVP_Zylinder".Schleuse_Ausfahrt_VP40.Stat.Ast, Error:=DB708.DBW398, Start_Ok:=Start_Ok, Antrieb_plus_start:="DVP_Antriebe".MA0147.Stat.A_vor, Antrieb_plus_stoppen:="DVP_Antriebe".MA0147.Stat.Stop_vor, hStOk:=ErrAnz, Ausfahr_Inks:="DVPAuslagern".Ausfahren_Ok_B.Dyn.Rest_Inks) + + +--- NW 22: VollPuffer 41 --- +CALL FB "None" , (VollPuffer_Nr:=141, ErrQuit:=ErrQuit, B_VollPufferEinfahrt:="BG3435", B_InSchleuse_IN:="BG3462", B_InSchleuse_OUT:="BG3494", B_AusSchleuse_OUT:="BG3181", B_Stau_raus_Out:="DVP_Sensoren".Stau_BG3181.Stat.B_Akt, B_QuerTrolley_Out:="BG3481", Antrieb_plus_aktiv:="MA0147", Schleuse_geöffnet_IN:="MB3462", Schleuse_geöffnet_OUT:="MB3494", Y_Schleuse_Auf_IN:="DVP_Zylinder".Schleuse_Mitte_VP41.Stat.Ast, Y_Schleuse_Auf_OUT:="DVP_Zylinder".Schleuse_Ausfahrt_VP41.Stat.Ast, Error:=DB708.DBW400, Start_Ok:=Start_Ok, Antrieb_plus_start:="DVP_Antriebe".MA0147.Stat.A_vor, Antrieb_plus_stoppen:="DVP_Antriebe".MA0147.Stat.Stop_vor, hStOk:=ErrAnz, Ausfahr_Inks:="DVPAuslagern".Ausfahren_Ok_B.Dyn.Rest_Inks) + + +--- NW 23: VollPuffer 42 --- +CALL FB "None" , (VollPuffer_Nr:=142, ErrQuit:=ErrQuit, B_VollPufferEinfahrt:="BG3434", B_InSchleuse_IN:="BG3461", B_InSchleuse_OUT:="BG3493", B_AusSchleuse_OUT:=?, B_Stau_raus_Out:="DVP_Sensoren".Stau_BG3181.Stat.B_Akt, B_QuerTrolley_Out:="BG3481", Antrieb_plus_aktiv:="MA0147", Schleuse_geöffnet_IN:="MB3461", Schleuse_geöffnet_OUT:="MB3493", Y_Schleuse_Auf_IN:="DVP_Zylinder".Schleuse_Mitte_VP42.Stat.Ast, Y_Schleuse_Auf_OUT:="DVP_Zylinder".Schleuse_Ausfahrt_VP42.Stat.Ast, Error:=DB708.DBW402, Start_Ok:=Start_Ok, Antrieb_plus_start:="DVP_Antriebe".MA0147.Stat.A_vor, Antrieb_plus_stoppen:="DVP_Antriebe".MA0147.Stat.Stop_vor, hStOk:=ErrAnz, Ausfahr_Inks:="DVPAuslagern".Ausfahren_Ok_B.Dyn.Rest_Inks) + + +--- NW 24: VollPuffer 43 --- +CALL FB "None" , (VollPuffer_Nr:=143, ErrQuit:=ErrQuit, B_VollPufferEinfahrt:="BG3433", B_InSchleuse_IN:="BG3460", B_InSchleuse_OUT:="BG3492", B_AusSchleuse_OUT:=?, B_Stau_raus_Out:="DVP_Sensoren".Stau_BG3181.Stat.B_Akt, B_QuerTrolley_Out:="BG3481", Antrieb_plus_aktiv:="MA0147", Schleuse_geöffnet_IN:="MB3460", Schleuse_geöffnet_OUT:="MB3492", Y_Schleuse_Auf_IN:="DVP_Zylinder".Schleuse_Mitte_VP43.Stat.Ast, Y_Schleuse_Auf_OUT:="DVP_Zylinder".Schleuse_Ausfahrt_VP43.Stat.Ast, Error:=DB708.DBW404, Start_Ok:=Start_Ok, Antrieb_plus_start:="DVP_Antriebe".MA0147.Stat.A_vor, Antrieb_plus_stoppen:="DVP_Antriebe".MA0147.Stat.Stop_vor, hStOk:=ErrAnz, Ausfahr_Inks:="DVPAuslagern".Ausfahren_Ok_B.Dyn.Rest_Inks) + + +--- NW 25: VollPuffer 44 --- +CALL FB "None" , (VollPuffer_Nr:=144, ErrQuit:=ErrQuit, B_VollPufferEinfahrt:="BG3432", B_InSchleuse_IN:="BG3457", B_InSchleuse_OUT:="BG3491", B_AusSchleuse_OUT:=?, B_Stau_raus_Out:="DVP_Sensoren".Stau_BG3181.Stat.B_Akt, B_QuerTrolley_Out:="BG3481", Antrieb_plus_aktiv:="MA0147", Schleuse_geöffnet_IN:="MB3457", Schleuse_geöffnet_OUT:="MB3491", Y_Schleuse_Auf_IN:="DVP_Zylinder".Schleuse_Mitte_VP44.Stat.Ast, Y_Schleuse_Auf_OUT:="DVP_Zylinder".Schleuse_Ausfahrt_VP44.Stat.Ast, Error:=DB708.DBW406, Start_Ok:=Start_Ok, Antrieb_plus_start:="DVP_Antriebe".MA0147.Stat.A_vor, Antrieb_plus_stoppen:="DVP_Antriebe".MA0147.Stat.Stop_vor, hStOk:=ErrAnz, Ausfahr_Inks:="DVPAuslagern".Ausfahren_Ok_B.Dyn.Rest_Inks) + + +--- NW 26: VollPuffer 45 --- +CALL FB "None" , (VollPuffer_Nr:=145, ErrQuit:=ErrQuit, B_VollPufferEinfahrt:="BG3431", B_InSchleuse_IN:="BG3456", B_InSchleuse_OUT:="BG3490", B_AusSchleuse_OUT:=?, B_Stau_raus_Out:="DVP_Sensoren".Stau_BG3481.Stat.B_Akt, B_QuerTrolley_Out:=?, Antrieb_plus_aktiv:="MA0147", Schleuse_geöffnet_IN:="MB3456", Schleuse_geöffnet_OUT:="MB3490", Y_Schleuse_Auf_IN:="DVP_Zylinder".Schleuse_Mitte_VP45.Stat.Ast, Y_Schleuse_Auf_OUT:="DVP_Zylinder".Schleuse_Ausfahrt_VP45.Stat.Ast, Error:=DB708.DBW408, Start_Ok:=Start_Ok, Antrieb_plus_start:="DVP_Antriebe".MA0147.Stat.A_vor, Antrieb_plus_stoppen:="DVP_Antriebe".MA0147.Stat.Stop_vor, hStOk:=ErrAnz, Ausfahr_Inks:="DVPAuslagern".Ausfahren_Ok_B.Dyn.Rest_Inks) + + +--- NW 27: VollPuffer 46 --- +CALL FB "None" , (VollPuffer_Nr:=146, ErrQuit:=ErrQuit, B_VollPufferEinfahrt:="BG3430", B_InSchleuse_IN:="BG3455", B_InSchleuse_OUT:="BG3487", B_AusSchleuse_OUT:="BG3481", B_Stau_raus_Out:="DVP_Sensoren".Stau_BG3481.Stat.B_Akt, B_QuerTrolley_Out:=?, Antrieb_plus_aktiv:="MA0147", Schleuse_geöffnet_IN:="MB3455", Schleuse_geöffnet_OUT:="MB3487", Y_Schleuse_Auf_IN:="DVP_Zylinder".Schleuse_Mitte_VP46.Stat.Ast, Y_Schleuse_Auf_OUT:="DVP_Zylinder".Schleuse_Ausfahrt_VP46.Stat.Ast, Error:=DB708.DBW410, Start_Ok:=Start_Ok, Antrieb_plus_start:="DVP_Antriebe".MA0147.Stat.A_vor, Antrieb_plus_stoppen:="DVP_Antriebe".MA0147.Stat.Stop_vor, hStOk:=ErrAnz, Ausfahr_Inks:="DVPAuslagern".Ausfahren_Ok_B.Dyn.Rest_Inks) + + +--- NW 28: VollPuffer 47 --- +CALL FB "None" , (VollPuffer_Nr:=147, ErrQuit:=ErrQuit, B_VollPufferEinfahrt:="BG3427", B_InSchleuse_IN:="BG3454", B_InSchleuse_OUT:="BG3486", B_AusSchleuse_OUT:="BG3481", B_Stau_raus_Out:="DVP_Sensoren".Stau_BG3481.Stat.B_Akt, B_QuerTrolley_Out:=?, Antrieb_plus_aktiv:="MA0147", Schleuse_geöffnet_IN:="MB3454", Schleuse_geöffnet_OUT:="MB3486", Y_Schleuse_Auf_IN:="DVP_Zylinder".Schleuse_Mitte_VP47.Stat.Ast, Y_Schleuse_Auf_OUT:="DVP_Zylinder".Schleuse_Ausfahrt_VP47.Stat.Ast, Error:=DB708.DBW412, Start_Ok:=Start_Ok, Antrieb_plus_start:="DVP_Antriebe".MA0147.Stat.A_vor, Antrieb_plus_stoppen:="DVP_Antriebe".MA0147.Stat.Stop_vor, hStOk:=ErrAnz, Ausfahr_Inks:="DVPAuslagern".Ausfahren_Ok_B.Dyn.Rest_Inks) + + +--- NW 29: VollPuffer 48 --- +CALL FB "None" , (VollPuffer_Nr:=148, ErrQuit:=ErrQuit, B_VollPufferEinfahrt:="BG3426", B_InSchleuse_IN:="BG3453", B_InSchleuse_OUT:="BG3485", B_AusSchleuse_OUT:=?, B_Stau_raus_Out:="DVP_Sensoren".Stau_BG3481.Stat.B_Akt, B_QuerTrolley_Out:=?, Antrieb_plus_aktiv:="MA0147", Schleuse_geöffnet_IN:="MB3453", Schleuse_geöffnet_OUT:="MB3485", Y_Schleuse_Auf_IN:="DVP_Zylinder".Schleuse_Mitte_VP48.Stat.Ast, Y_Schleuse_Auf_OUT:="DVP_Zylinder".Schleuse_Ausfahrt_VP48.Stat.Ast, Error:=DB708.DBW414, Start_Ok:=Start_Ok, Antrieb_plus_start:="DVP_Antriebe".MA0147.Stat.A_vor, Antrieb_plus_stoppen:="DVP_Antriebe".MA0147.Stat.Stop_vor, hStOk:=ErrAnz, Ausfahr_Inks:="DVPAuslagern".Ausfahren_Ok_B.Dyn.Rest_Inks) + + +--- NW 30: VollPuffer 49 --- +CALL FB "None" , (VollPuffer_Nr:=149, ErrQuit:=ErrQuit, B_VollPufferEinfahrt:="BG3425", B_InSchleuse_IN:="BG3452", B_InSchleuse_OUT:="BG3484", B_AusSchleuse_OUT:=?, B_Stau_raus_Out:="DVP_Sensoren".Stau_BG3481.Stat.B_Akt, B_QuerTrolley_Out:=?, Antrieb_plus_aktiv:="MA0147", Schleuse_geöffnet_IN:="MB3452", Schleuse_geöffnet_OUT:="MB3484", Y_Schleuse_Auf_IN:="DVP_Zylinder".Schleuse_Mitte_VP49.Stat.Ast, Y_Schleuse_Auf_OUT:="DVP_Zylinder".Schleuse_Ausfahrt_VP49.Stat.Ast, Error:=DB708.DBW416, Start_Ok:=Start_Ok, Antrieb_plus_start:="DVP_Antriebe".MA0147.Stat.A_vor, Antrieb_plus_stoppen:="DVP_Antriebe".MA0147.Stat.Stop_vor, hStOk:=ErrAnz, Ausfahr_Inks:="DVPAuslagern".Ausfahren_Ok_B.Dyn.Rest_Inks) + + +--- NW 31: VollPuffer 50 --- +CALL FB "None" , (VollPuffer_Nr:=150, ErrQuit:=ErrQuit, B_VollPufferEinfahrt:="BG3424", B_InSchleuse_IN:="BG3451", B_InSchleuse_OUT:="BG3483", B_AusSchleuse_OUT:=?, B_Stau_raus_Out:="DVP_Sensoren".Stau_BG3481.Stat.B_Akt, B_QuerTrolley_Out:=?, Antrieb_plus_aktiv:="MA0147", Schleuse_geöffnet_IN:="MB3451", Schleuse_geöffnet_OUT:="MB3483", Y_Schleuse_Auf_IN:="DVP_Zylinder".Schleuse_Mitte_VP50.Stat.Ast, Y_Schleuse_Auf_OUT:="DVP_Zylinder".Schleuse_Ausfahrt_VP50.Stat.Ast, Error:=DB708.DBW418, Start_Ok:=Start_Ok, Antrieb_plus_start:="DVP_Antriebe".MA0147.Stat.A_vor, Antrieb_plus_stoppen:="DVP_Antriebe".MA0147.Stat.Stop_vor, hStOk:=ErrAnz, Ausfahr_Inks:="DVPAuslagern".Ausfahren_Ok_B.Dyn.Rest_Inks) + + +--- NW 32: VollPuffer 51 --- +// Puffer 51 immer ausfahren: + A "BG3482" + S VollPuffer_51.Status2.Alles_ausfahren_OUT + +CALL FB "None" , (VollPuffer_Nr:=151, ErrQuit:=ErrQuit, B_VollPufferEinfahrt:="BG3423", B_InSchleuse_IN:="BG3450", B_InSchleuse_OUT:="BG3482", B_AusSchleuse_OUT:=?, B_Stau_raus_Out:="DVP_Sensoren".Stau_BG3481.Stat.B_Akt, B_QuerTrolley_Out:=?, Antrieb_plus_aktiv:="MA0147", Schleuse_geöffnet_IN:="MB3450", Schleuse_geöffnet_OUT:="MB3482", Y_Schleuse_Auf_IN:="DVP_Zylinder".Schleuse_Mitte_VP51.Stat.Ast, Y_Schleuse_Auf_OUT:="DVP_Zylinder".Schleuse_Ausfahrt_VP51.Stat.Ast, Error:=DB708.DBW420, Start_Ok:=Start_Ok, Antrieb_plus_start:="DVP_Antriebe".MA0147.Stat.A_vor, Antrieb_plus_stoppen:="DVP_Antriebe".MA0147.Stat.Stop_vor, hStOk:=ErrAnz, Ausfahr_Inks:="DVPAuslagern".Ausfahren_Ok_B.Dyn.Rest_Inks) + + +--- NW 33: Störungen anzeigen UZ7104/7107 --- + A ErrAnz + S "DOutbound_Bereich".A01_UZ7104.StOk_blinken + S "DOutbound_Bereich".A01_UZ7107.StOk_blinken + + +--- NW 34: AusVollPuffer-Simulation A+B --- + AN "SGes".Ohne_PC_Fahren + BEC + +CALL FC "Simulation_Aus_VP_Trolley_starten" // Ausfahren mit 3s Stau-Sensor + + +--- NW 35: Ende --- + BE + diff --git a/=A01+UH07-KF00/Programmbausteine/Anlage/1_Vollpuffer/Reihenfolge_Vollpuffer/DLVollPuffer_ShopGroup_abrufen.awl b/=A01+UH07-KF00/Programmbausteine/Anlage/1_Vollpuffer/Reihenfolge_Vollpuffer/DLVollPuffer_ShopGroup_abrufen.awl new file mode 100644 index 0000000..725f551 --- /dev/null +++ b/=A01+UH07-KF00/Programmbausteine/Anlage/1_Vollpuffer/Reihenfolge_Vollpuffer/DLVollPuffer_ShopGroup_abrufen.awl @@ -0,0 +1,19 @@ +=== GlobalDB 102: DLVollPuffer_ShopGroup_abrufen [DB] === +INTERFACE: + Static: + Datenlistenkopf : Struct // Vorhandene Varianten im Puffer (Reihenfolge) + KOPF : Word := WORD#16#DA03 // Datenliste-Kennnung (DA) / Datensatzlänge in Word (1 - 128) + LAENGE : Int := 50 // Länge der Datenliste (maximale Anzahl der Datensätze) + STAMMDATEN : Int := 1 // Stammdatenlänge in Word (1 - 9) + INDDB : Int // Indizierter DB (nur bei Stammdaten = 1 erlaubt !!!) + LAENGEINDDB : Int // Länge des indizierten DB in Word (nur bei Stammdaten = 1 erlaubt !!!) + INDDATEN_WANDEL_FC : Int // FC zum Wandeln der indizierte Daten (nur bei Stammdaten = 1 erlaubt !!!) + LETZTERZUGRIFF : Int // Speicherung des letzten Zugriffs + Belegt14 : Int // reserviert von Sort-Datenliste + AnzahlEintraege : Int // Anzahl der eingetragenen Datensätze (nicht bei ind.Zugriff!) + Reserve18 : Int // Reserve + ShopGroup_abrufen : Array[1..50] of Struct + Puffer : Int + ShopGroup : DInt + Endekennung : Word := WORD#16#DAEE // Datensort-Ende-Kennung (DBEE) + Reorganisieren : Bool := 1 // Löschen und neu erstellen diff --git a/=A01+UH07-KF00/Programmbausteine/Anlage/1_Vollpuffer/Reihenfolge_Vollpuffer/DLVollPuffer_ShopGroup_einfahren.awl b/=A01+UH07-KF00/Programmbausteine/Anlage/1_Vollpuffer/Reihenfolge_Vollpuffer/DLVollPuffer_ShopGroup_einfahren.awl new file mode 100644 index 0000000..49c4127 --- /dev/null +++ b/=A01+UH07-KF00/Programmbausteine/Anlage/1_Vollpuffer/Reihenfolge_Vollpuffer/DLVollPuffer_ShopGroup_einfahren.awl @@ -0,0 +1,19 @@ +=== GlobalDB 101: DLVollPuffer_ShopGroup_einfahren [DB] === +INTERFACE: + Static: + Datenlistenkopf : Struct // Vorhandene Varianten im Puffer (Reihenfolge) + KOPF : Word := WORD#16#DA03 // Datenliste-Kennnung (DA) / Datensatzlänge in Word (1 - 128) + LAENGE : Int := 50 // Länge der Datenliste (maximale Anzahl der Datensätze) + STAMMDATEN : Int := 1 // Stammdatenlänge in Word (1 - 9) + INDDB : Int // Indizierter DB (nur bei Stammdaten = 1 erlaubt !!!) + LAENGEINDDB : Int // Länge des indizierten DB in Word (nur bei Stammdaten = 1 erlaubt !!!) + INDDATEN_WANDEL_FC : Int // FC zum Wandeln der indizierte Daten (nur bei Stammdaten = 1 erlaubt !!!) + LETZTERZUGRIFF : Int // Speicherung des letzten Zugriffs + Belegt14 : Int // reserviert von Sort-Datenliste + AnzahlEintraege : Int // Anzahl der eingetragenen Datensätze (nicht bei ind.Zugriff!) + Reserve18 : Int // Reserve + ShopGroup_einfahren : Array[1..50] of Struct + Puffer : Int + ShopGroup : DInt + Endekennung : Word := WORD#16#DAEE // Datensort-Ende-Kennung (DBEE) + Reorganisieren : Bool := 1 // Löschen und neu erstellen diff --git a/=A01+UH07-KF00/Programmbausteine/Anlage/1_Vollpuffer/Reihenfolge_Vollpuffer/DLVollPuffer_leer.awl b/=A01+UH07-KF00/Programmbausteine/Anlage/1_Vollpuffer/Reihenfolge_Vollpuffer/DLVollPuffer_leer.awl new file mode 100644 index 0000000..cb3ef51 --- /dev/null +++ b/=A01+UH07-KF00/Programmbausteine/Anlage/1_Vollpuffer/Reihenfolge_Vollpuffer/DLVollPuffer_leer.awl @@ -0,0 +1,18 @@ +=== GlobalDB 100: DLVollPuffer_leer [DB] === +INTERFACE: + Static: + Datenlistenkopf : Struct // Reihenfolge nächster Leerpuffer + KOPF : Word := WORD#16#DA01 // Datenliste-Kennnung (DA) / Datensatzlänge in Word (1 - 128) + LAENGE : Int := 50 // Länge der Datenliste (maximale Anzahl der Datensätze) + STAMMDATEN : Int := 1 // Stammdatenlänge in Word (1 - 9) + INDDB : Int // Indizierter DB (nur bei Stammdaten = 1 erlaubt !!!) + LAENGEINDDB : Int // Länge des indizierten DB in Word (nur bei Stammdaten = 1 erlaubt !!!) + INDDATEN_WANDEL_FC : Int // FC zum Wandeln der indizierte Daten (nur bei Stammdaten = 1 erlaubt !!!) + LETZTERZUGRIFF : Int // Speicherung des letzten Zugriffs + Belegt14 : Int // reserviert von Sort-Datenliste + AnzahlEintraege : Int // Anzahl der eingetragenen Datensätze (nicht bei ind.Zugriff!) + Reserve18 : Int // Reserve + Leerer_VollPuffer : Array[1..50] of Struct + Puffer : Int + Endekennung : Word := WORD#16#DAEE // Datensort-Ende-Kennung (DBEE) + Reorganisieren : Bool := 1 // Löschen und neu erstellen diff --git a/=A01+UH07-KF00/Programmbausteine/Anlage/1_Vollpuffer/Sorter_Vollpuffer/DVP_Sorter_A.awl b/=A01+UH07-KF00/Programmbausteine/Anlage/1_Vollpuffer/Sorter_Vollpuffer/DVP_Sorter_A.awl new file mode 100644 index 0000000..50ab9f3 --- /dev/null +++ b/=A01+UH07-KF00/Programmbausteine/Anlage/1_Vollpuffer/Sorter_Vollpuffer/DVP_Sorter_A.awl @@ -0,0 +1,44 @@ +=== InstanceDB 1423: DVP_Sorter_A [DB] === +INTERFACE: + Input: + Output: + InOut: + Static: + Sorter_MB3121 : "MSepSorterRein" + Sync_BG3120 : "MStartSync" + Weiche_VP1 : "MWeiche_Sorter" + Weiche_VP2 : "MWeiche_Sorter" + Weiche_VP3 : "MWeiche_Sorter" + Weiche_VP4 : "MWeiche_Sorter" + Weiche_VP5 : "MWeiche_Sorter" + Weiche_VP6 : "MWeiche_Sorter" + Weiche_VP7 : "MWeiche_Sorter" + Weiche_VP8 : "MWeiche_Sorter" + Weiche_VP9 : "MWeiche_Sorter" + Weiche_VP10 : "MWeiche_Sorter" + Weiche_VP11 : "MWeiche_Sorter" + Weiche_VP12 : "MWeiche_Sorter" + Weiche_VP13 : "MWeiche_Sorter" + Weiche_VP14 : "MWeiche_Sorter" + Weiche_VP15 : "MWeiche_Sorter" + Weiche_VP16 : "MWeiche_Sorter" + Weiche_VP17 : "MWeiche_Sorter" + Weiche_VP18 : "MWeiche_Sorter" + Weiche_VP19 : "MWeiche_Sorter" + Weiche_VP20 : "MWeiche_Sorter" + Weiche_VP21 : "MWeiche_Sorter" + Weiche_VP22 : "MWeiche_Sorter" + Weiche_VP23 : "MWeiche_Sorter" + Weiche_VP24 : "MWeiche_Sorter" + Weiche_VP25 : "MWeiche_Sorter" + Übergabe_B3003 : "MSorter_Uebergabe" + Sorter_MB3123 : "MSepSorterRein" + Impuls_BG3125 : "MImpulsGeber" + Ohne_PC_fahren : Bool + Sorter3121_Ok : Bool + Sorter3123_Ok : Bool + Aus_Sorter_3121_gefahren : Bool + Aus_Sorter_3123_gefahren : Bool + Sorter1Reset : Bool + Sorter2Reset : Bool + Sorter_A_leer : Bool diff --git a/=A01+UH07-KF00/Programmbausteine/Anlage/1_Vollpuffer/Sorter_Vollpuffer/DVP_Sorter_B.awl b/=A01+UH07-KF00/Programmbausteine/Anlage/1_Vollpuffer/Sorter_Vollpuffer/DVP_Sorter_B.awl new file mode 100644 index 0000000..958fbaf --- /dev/null +++ b/=A01+UH07-KF00/Programmbausteine/Anlage/1_Vollpuffer/Sorter_Vollpuffer/DVP_Sorter_B.awl @@ -0,0 +1,36 @@ +=== InstanceDB 1523: DVP_Sorter_B [DB] === +INTERFACE: + Input: + Output: + InOut: + Static: + Sync_BG3003 : "MStartSync" + Frei300 : Array[1..75] of Word + Weiche_VP26 : "MWeiche_Sorter" + Weiche_VP27 : "MWeiche_Sorter" + Weiche_VP28 : "MWeiche_Sorter" + Weiche_VP29 : "MWeiche_Sorter" + Weiche_VP30 : "MWeiche_Sorter" + Weiche_VP31 : "MWeiche_Sorter" + Weiche_VP32 : "MWeiche_Sorter" + Weiche_VP33 : "MWeiche_Sorter" + Weiche_VP34 : "MWeiche_Sorter" + Weiche_VP35 : "MWeiche_Sorter" + Weiche_VP36 : "MWeiche_Sorter" + Weiche_VP37 : "MWeiche_Sorter" + Weiche_VP38 : "MWeiche_Sorter" + Weiche_VP39 : "MWeiche_Sorter" + Weiche_VP40 : "MWeiche_Sorter" + Weiche_VP41 : "MWeiche_Sorter" + Weiche_VP42 : "MWeiche_Sorter" + Weiche_VP43 : "MWeiche_Sorter" + Weiche_VP44 : "MWeiche_Sorter" + Weiche_VP45 : "MWeiche_Sorter" + Weiche_VP46 : "MWeiche_Sorter" + Weiche_VP47 : "MWeiche_Sorter" + Weiche_VP48 : "MWeiche_Sorter" + Weiche_VP49 : "MWeiche_Sorter" + Weiche_VP50 : "MWeiche_Sorter" + Weiche_VP51 : "MWeiche_Sorter" + Impuls_BG3004 : "MImpulsGeber" + Sorter_B_leer : Bool diff --git a/=A01+UH07-KF00/Programmbausteine/Anlage/1_Vollpuffer/Sorter_Vollpuffer/HS_INDaten.awl b/=A01+UH07-KF00/Programmbausteine/Anlage/1_Vollpuffer/Sorter_Vollpuffer/HS_INDaten.awl new file mode 100644 index 0000000..78f8980 --- /dev/null +++ b/=A01+UH07-KF00/Programmbausteine/Anlage/1_Vollpuffer/Sorter_Vollpuffer/HS_INDaten.awl @@ -0,0 +1,4 @@ +=== GlobalDB 1510: HS_INDaten [DB] === +INTERFACE: + Static: + INDaten : "UBT_Daten" diff --git a/=A01+UH07-KF00/Programmbausteine/Anlage/1_Vollpuffer/Sorter_Vollpuffer/HS_OutDaten.awl b/=A01+UH07-KF00/Programmbausteine/Anlage/1_Vollpuffer/Sorter_Vollpuffer/HS_OutDaten.awl new file mode 100644 index 0000000..37684aa --- /dev/null +++ b/=A01+UH07-KF00/Programmbausteine/Anlage/1_Vollpuffer/Sorter_Vollpuffer/HS_OutDaten.awl @@ -0,0 +1,4 @@ +=== GlobalDB 1511: HS_OutDaten [DB] === +INTERFACE: + Static: + OUTDaten : "UBT_Daten" diff --git a/=A01+UH07-KF00/Programmbausteine/Anlage/1_Vollpuffer/Sorter_Vollpuffer/VP_DLSeps_Sorter.awl b/=A01+UH07-KF00/Programmbausteine/Anlage/1_Vollpuffer/Sorter_Vollpuffer/VP_DLSeps_Sorter.awl new file mode 100644 index 0000000..84062dc --- /dev/null +++ b/=A01+UH07-KF00/Programmbausteine/Anlage/1_Vollpuffer/Sorter_Vollpuffer/VP_DLSeps_Sorter.awl @@ -0,0 +1,107 @@ +=== GlobalDB 1474: VP_DLSeps_Sorter [DB] === +INTERFACE: + Static: + Datenlistenkopf : Struct + KOPF : Word := WORD#16#DA14 // Datenliste-Kennnung (DA) / Datensatzlänge in Word (1 - 128) + LAENGE : Int := 2 // Länge der Datenliste (maximale Anzahl der Datensätze) + STAMMDATEN : Int := 1 // Stammdatenlänge in Word (1 - 9) + INDDB : Int // Indizierter DB (nur bei Stammdaten = 1 erlaubt !!!) + LAENGEINDDB : Int // Länge des indizierten DB in Word (nur bei Stammdaten = 1 erlaubt !!!) + OFFSETINDDATEN : Int // Offset für indizierte Daten (nur bei Stammdaten = 1 erlaubt !!!) + LETZTERZUGRIFF : Int // Speicherung des letzten Zugriffs + Belegt14 : Int // reserviert von Sort-Datenliste + Reserve16 : Int // Reserve + Reserve18 : Int // Reserve + Separator_MB3121Sorter : Struct + Separator_Nr : Int := 3121 // Nummer des Separators + Separator_Typ : Int := 176 // Separatortyp = 176 (SorterRein) + Separator_Dyn_DB : Int := 1423 // Dynamische Daten Separartor + Separator_Dyn_DW : Int // Dynamische Daten Separartor + Parameter_allg : Struct + Scanner_eingebaut : Bool := TRUE // Scanner an Separator eingebaut + Antrieb_vorhanden : Bool := TRUE // Separator an angetriebener Strecke + StopperFunktion : Bool // Separator mit Stopperfunktion + B_AusSep_vorhanden : Bool := TRUE // Sensor BT hat Separator verlassen ist eingebaut + Wechsel_bei_Travel_leer : Bool := TRUE // Zielwechsel nur, wenn Travel-FIFO leer! + MT_Bereich : Bool // An diesem Separator werden nur MT gefahren + PinSignal : Bool := TRUE // Pin-Signal bei Ausfahrt beachten + Belade_Kontrolle_im_Sep : Bool // Belade-Kontrolle vorhanden (B oder Doppelbügel-Erkennung) im Separator + Antrieb_Plus_vorhanden : Bool := TRUE // Separator an weiterem Antrieb (Weiche) + Belade_Kontrolle_nachSep : Bool // Belade-Kontrolle vorhanden nach Separator + Para12 : Bool + Para13 : Bool + Para14 : Bool + Para15 : Bool + Para16 : Bool + PC_Komm_aktiv : Bool // PC-Kommunikation aktiv + PC_Komm_SorterID : Int // ID für PC-Kommunikation + PC_Send_FIFO : Int // Send-FIFO für PC-Sendungen + Default_Betriebsart : Struct // Betriebart nach Urlöschen/Reset + Listen : Bool // [SCTL=1] Ziel über Dyn.Status.Betriebsart_Ziel + Rapidfire : Bool // [SCTL=2] Alle BTs austakten (ohne Ende) + TillEmpty : Bool // [SCTL=3] Alle BTs austakten (Ende nach zeitlang kein BT) + Job : Bool // [SCTL=4] Anzahl von BTs austakten (Ende nach Anzahl) + Job_TillEmpty : Bool // [SCTL=5] Anzahl von BTs austakten (Ende nach zeitlang kein BT) + DestFull : Bool // [SCTL=6] Alle BTs austakten (bis Stau-Sensor aktiv) + Scannen : Bool := TRUE // [SCTL=7] Ausfahren über Scanner + PC-Rückmeldung + Scannen_TillEmpty : Bool // [SCTL=8] wie oben [SCTL=7](Ende nach zeitlang kein BT) + Default_Ziel : Int // Ziel nach Urlöschen/Reset + Auslager_Ziel : Int // Bei diesem Ziel auslagern + Umlager_Ziel : Int // Bei diesem Ziel umlagern + RausWeichen_Nr : Int // Nr der vorhandenen Weiche + Weichen_Abstand : Int // Inkrement-Abstand zum Weiche schalten + Mindeszeit_Sep_geoeffnet : Int := 500 // Mindestzeit, die Separator geöffnet ist [10ms] + Wartezeit_bis_draussen : Int := 1000 // Nach dieser Zeit hat BT den Sep. verlassen [10ms] + Wartezeit_bis_leer : Int := 600 // Nach dieser Zeit wird Bereich als leer gemeldet [100ms] + Abstand_Zielwechsel : Int := 50 // Abstand bei Zielwechsel [Ink] + Parameter_SorterRein : Struct + TravelFIFO_DB : Int := 1480 // Einsprung Travel-FIFO-DB + TravelFIFO_DW : Int // Einsprung Travel-FIFO-DW + Abstand_Reset_Start : Int := 1400 // Nach diesen Abstand kann Gesamt-Reset gestartet werden [*10inc] + Separator_MB3123Sorter : Struct + Separator_Nr : Int := 3123 // Nummer des Separators + Separator_Typ : Int := 176 // Separatortyp = 176 (SorterRein) + Separator_Dyn_DB : Int := 1423 // Dynamische Daten Separartor + Separator_Dyn_DW : Int := 5450 // Dynamische Daten Separartor + Parameter_allg : Struct + Scanner_eingebaut : Bool := TRUE // Scanner an Separator eingebaut + Antrieb_vorhanden : Bool := TRUE // Separator an angetriebener Strecke + StopperFunktion : Bool // Separator mit Stopperfunktion + B_AusSep_vorhanden : Bool := TRUE // Sensor BT hat Separator verlassen ist eingebaut + Wechsel_bei_Travel_leer : Bool := TRUE // Zielwechsel nur, wenn Travel-FIFO leer! + MT_Bereich : Bool // An diesem Separator werden nur MT gefahren + PinSignal : Bool := TRUE // Pin-Signal bei Ausfahrt beachten + Belade_Kontrolle_im_Sep : Bool // Belade-Kontrolle vorhanden (B oder Doppelbügel-Erkennung) im Separator + Antrieb_Plus_vorhanden : Bool := TRUE // Separator an weiterem Antrieb (Weiche) + Belade_Kontrolle_nachSep : Bool // Belade-Kontrolle vorhanden nach Separator + Para12 : Bool + Para13 : Bool + Para14 : Bool + Para15 : Bool + Para16 : Bool + PC_Komm_aktiv : Bool // PC-Kommunikation aktiv + PC_Komm_SorterID : Int // ID für PC-Kommunikation + PC_Send_FIFO : Int // Send-FIFO für PC-Sendungen + Default_Betriebsart : Struct // Betriebart nach Urlöschen/Reset + Listen : Bool // [SCTL=1] Ziel über Dyn.Status.Betriebsart_Ziel + Rapidfire : Bool // [SCTL=2] Alle BTs austakten (ohne Ende) + TillEmpty : Bool // [SCTL=3] Alle BTs austakten (Ende nach zeitlang kein BT) + Job : Bool // [SCTL=4] Anzahl von BTs austakten (Ende nach Anzahl) + Job_TillEmpty : Bool // [SCTL=5] Anzahl von BTs austakten (Ende nach zeitlang kein BT) + DestFull : Bool // [SCTL=6] Alle BTs austakten (bis Stau-Sensor aktiv) + Scannen : Bool := TRUE // [SCTL=7] Ausfahren über Scanner + PC-Rückmeldung + Scannen_TillEmpty : Bool // [SCTL=8] wie oben [SCTL=7](Ende nach zeitlang kein BT) + Default_Ziel : Int // Ziel nach Urlöschen/Reset + Auslager_Ziel : Int // Bei diesem Ziel auslagern + Umlager_Ziel : Int // Bei diesem Ziel umlagern + RausWeichen_Nr : Int // Nr der vorhandenen Weiche + Weichen_Abstand : Int // Inkrement-Abstand zum Weiche schalten + Mindeszeit_Sep_geoeffnet : Int := 500 // Mindestzeit, die Separator geöffnet ist [10ms] + Wartezeit_bis_draussen : Int := 1000 // Nach dieser Zeit hat BT den Sep. verlassen [10ms] + Wartezeit_bis_leer : Int := 600 // Nach dieser Zeit wird Bereich als leer gemeldet [100ms] + Abstand_Zielwechsel : Int := 50 // Abstand bei Zielwechsel [Ink] + Parameter_SorterRein : Struct + TravelFIFO_DB : Int := 1480 // Einsprung Travel-FIFO-DB + TravelFIFO_DW : Int // Einsprung Travel-FIFO-DW + Abstand_Reset_Start : Int := 1400 // Nach diesen Abstand kann Gesamt-Reset gestartet werden [*10inc] + Endekennung : Word := WORD#16#DAEE // Datensort-Ende-Kennung (DBEE) diff --git a/=A01+UH07-KF00/Programmbausteine/Anlage/1_Vollpuffer/Sorter_Vollpuffer/VP_DLWeichen_Sorter_A.awl b/=A01+UH07-KF00/Programmbausteine/Anlage/1_Vollpuffer/Sorter_Vollpuffer/VP_DLWeichen_Sorter_A.awl new file mode 100644 index 0000000..1b0c6ed --- /dev/null +++ b/=A01+UH07-KF00/Programmbausteine/Anlage/1_Vollpuffer/Sorter_Vollpuffer/VP_DLWeichen_Sorter_A.awl @@ -0,0 +1,978 @@ +=== GlobalDB 1478: VP_DLWeichen_Sorter_A [DB] === +INTERFACE: + Static: + Datenlistenkopf : Struct + KOPF : Word := 16#DA14 // Datenliste-Kennnung (DA) / Datensatzlänge in Word (1 - 128) + LAENGE : Int := 27 // Länge der Datenliste (maximale Anzahl der Datensätze) + STAMMDATEN : Int := 1 // Stammdatenlänge in Word (1 - 9) + INDDB : Int := 0 // Indizierter DB (nur bei Stammdaten = 1 erlaubt !!!) + LAENGEINDDB : Int := 0 // Länge des indizierten DB in Word (nur bei Stammdaten = 1 erlaubt !!!) + OFFSETINDDATEN : Int := 0 // Offset für indizierte Daten (nur bei Stammdaten = 1 erlaubt !!!) + LETZTERZUGRIFF : Int := 1020 // Speicherung des letzten Zugriffs + Belegt14 : Int := 0 // reserviert von Sort-Datenliste + Reserve16 : Int := 0 // Reserve + Reserve18 : Int := 0 // Reserve + Synchron_BG3120 : Struct + Sync_Nr : Int := 3120 // Nummer des Synchron-Punkts + Sync_Dyn_DB : Int := 1423 // Dynamische Daten des Synchron-Punkts + Sync_Dyn_DW : Int := 150 // Dynamische Daten des Synchron-Punkts + Sync_Typ : Int := 177 // Synchron-Punkt-Typ = 177 (StartSync) + Parameter : Struct + Kein_Sync_B : Bool := FALSE + InkSim : Bool := FALSE + ET200 : Bool := FALSE + Sick_ABS_single : Bool := FALSE + Para04 : Bool := FALSE + Para05 : Bool := FALSE + Para06 : Bool := FALSE + Para07 : Bool := FALSE + Para10 : Bool := FALSE + Para11 : Bool := FALSE + Para12 : Bool := FALSE + Para13 : Bool := FALSE + Para14 : Bool := FALSE + Para15 : Bool := FALSE + Para16 : Bool := FALSE + Para17 : Bool := FALSE + Ink_DB : Int := 1483 // DB-Nr des Inkremental-Gebers (Zählerbaugruppe) Neu-Sync-Zähler + Ink_HW_Adress : Int := 0 // Hardware-Adresse des Inkrementalgebers / Zählerbaugruppe + TravelFIFO_DB : Int := 1480 // Einsprung Travel-FIFO-DB + TravelFIFO_DW : Int := 0 // Einsprung Travel-FIFO-DW + Hauptstrang_DL_DB : Int := 1481 // Hauptstrang-Datenlisten-DB + Hauptstrang_DL_DW : Int := 0 // Hauptstrang-Datenlisten-DW + Entprellung_B_Sync : DInt := 5 // Entprellung Snyc-Sensor (in Inkremente) + Abstand_StartSep : DInt := 50 // Abstand Start-Separator <-> Sync-Sensor (in Inkremente) + Reserve : Array[1..5] of Int // Reserve + Weiche_VP1 : Struct + Weichen_Nr : Int := 1 // Nummer der Weiche + Weichen_Dyn_DB : Int := 1423 // Dynamische Daten Weiche + En02_B : Int := 300 // Dynamische Daten Weiche + Weichen_Typ : Int := 178 // Weichen-Typ = 178 (Weiche) + Parameter : Struct + Letzte_Weiche : Bool := FALSE // Letzte Weiche im Verbund + Entlade_Weiche : Bool := FALSE // BT/MT wird entladen -> Leerziel übergeben + Kontroll_B_Gerade : Bool := FALSE // Kontroll-Sensor bei Weiterfahrt (gerade) + Kontroll_B_Ausfahrt : Bool := TRUE // Kontroll-Sensor bei Ausfahrt (abzweig) + Quell_Schaltung : Bool := FALSE // Weiche aufgrund der Quelle schalten (Hauptstrang = Gerade, FIFO = Abzweig) + Disable_PLC_Ziel : Bool := FALSE // Bei Zielvorgabe von PLC nicht anfahren (Disabled) + ErsatzZiel_bei_Stau : Bool := FALSE // Bei Stau Ersatz-Ziel (s.u.) anfahren + Para07 : Bool := FALSE + Weichen_GST_gerade : Bool := TRUE // Weiche wird ohne Daten auf gerade geschaltet + Weichen_GST_abzweig : Bool := FALSE // Weiche wird ohne Daten auf abzweig geschaltet + IDX_an_Puffer : Bool := TRUE // IDX an Ziel-Puffer senden + Para13 : Bool := FALSE + Para14 : Bool := FALSE + Para15 : Bool := FALSE + Para16 : Bool := FALSE + PC_Komm_aktiv : Bool := TRUE // PC-Kommunikation aktiv + LeerZiel : Int := 0 // Nach Entladen des BT/MT dieses Ziel übergeben + PC_Send_FIFO : Int := 0 // Send-FIFO für PC-Sndungen + Hauptstrang_DL_DB : Int := 1481 // Hauptstrang-Datenlisten-DB + Hauptstrang_DL_DW : Int := 0 // Hauptstrang-Datenlisten-DW + Off_Ink : DInt := 42 // Inkremente zum Weiche schalten + Ink_DB : Int := 1483 // DB-Nr des Inkremental-Geber + Position_minus : Int := 3120 // Position vorher (zwecks Datensuche) + AbzweigZiel : Int := 101 // Bei diesem Ziel Weiche auf Abzweig schalten + Carl + GeradeZiel : Int := 0 // Bei diesem Ziel Weiche auf Gerade schalten + Carl + Kontroll_Zeit_gerade : Int := 0 // Nach dieser Zeit muss BM bei Geradefahrt Weichenbereich verlassen haben [100ms] + Kontroll_Zeit_abzweigen : Int := 100 // Nach dieser Zeit muss BM bei Abzweigen Weichenbereich verlassen haben [100ms] + DraussenZeit_gerade : Int := 0 // Nach dieser neg. Zeit [100ms] Error undef.BM, falls Kontroll-Sensor aktiv + Ink_Schaltdauer : Int := 300 // Inkremente, danach wird Weiche in GST geschaltet + ErsatzZiel : Int := 0 // Dieser Ziel bei Parameter 6 und Stau anfahren + Weiche_VP2 : Struct + Weichen_Nr : Int := 2 // Nummer der Weiche + Weichen_Dyn_DB : Int := 1423 // Dynamische Daten Weiche + Weichen_Dyn_DW : Int := 500 // Dynamische Daten Weiche + Weichen_Typ : Int := 178 // Weichen-Typ = 178 (Weiche) + Parameter : Struct + Letzte_Weiche : Bool := FALSE // Letzte Weiche im Verbund + Entlade_Weiche : Bool := FALSE // BT/MT wird entladen -> Leerziel übergeben + Kontroll_B_Gerade : Bool := FALSE // Kontroll-Sensor bei Weiterfahrt (gerade) + Kontroll_B_Ausfahrt : Bool := TRUE // Kontroll-Sensor bei Ausfahrt (abzweig) + Quell_Schaltung : Bool := FALSE // Weiche aufgrund der Quelle schalten (Hauptstrang = Gerade, FIFO = Abzweig) + Disable_PLC_Ziel : Bool := FALSE // Bei Zielvorgabe von PLC nicht anfahren (Disabled) + ErsatzZiel_bei_Stau : Bool := FALSE // Bei Stau Ersatz-Ziel (s.u.) anfahren + Para07 : Bool := FALSE + Weichen_GST_gerade : Bool := TRUE // Weiche wird ohne Daten auf gerade geschaltet + Weichen_GST_abzweig : Bool := FALSE // Weiche wird ohne Daten auf abzweig geschaltet + IDX_an_Puffer : Bool := TRUE // IDX an Ziel-Puffer senden + Para13 : Bool := FALSE + Para14 : Bool := FALSE + Para15 : Bool := FALSE + Para16 : Bool := FALSE + PC_Komm_aktiv : Bool := TRUE // PC-Kommunikation aktiv + LeerZiel : Int := 0 // Nach Entladen des BT/MT dieses Ziel übergeben + PC_Send_FIFO : Int := 0 // Send-FIFO für PC-Sndungen + Hauptstrang_DL_DB : Int := 1481 // Hauptstrang-Datenlisten-DB + Hauptstrang_DL_DW : Int := 0 // Hauptstrang-Datenlisten-DW + Off_Ink : DInt := 65 // Inkremente zum Weiche schalten + Ink_DB : Int := 1483 // DB-Nr des Inkremental-Geber + Position_minus : Int := 1 // Position vorher (zwecks Datensuche) + AbzweigZiel : Int := 102 // Bei diesem Ziel Weiche auf Abzweig schalten + Carl + GeradeZiel : Int := 0 // Bei diesem Ziel Weiche auf Gerade schalten + Carl + Kontroll_Zeit_gerade : Int := 0 // Nach dieser Zeit muss BM bei Geradefahrt Weichenbereich verlassen haben [100ms] + Kontroll_Zeit_abzweigen : Int := 100 // Nach dieser Zeit muss BM bei Abzweigen Weichenbereich verlassen haben [100ms] + DraussenZeit_gerade : Int := 0 // Nach dieser neg. Zeit [100ms] Error undef.BM, falls Kontroll-Sensor aktiv + Ink_Schaltdauer : Int := 300 // Inkremente, danach wird Weiche in GST geschaltet + ErsatzZiel : Int := 0 // Dieser Ziel bei Parameter 6 und Stau anfahren + Weiche_VP3 : Struct + Weichen_Nr : Int := 3 // Nummer der Weiche + Weichen_Dyn_DB : Int := 1423 // Dynamische Daten Weiche + Weichen_Dyn_DW : Int := 700 // Dynamische Daten Weiche + Weichen_Typ : Int := 178 // Weichen-Typ = 178 (Weiche) + Parameter : Struct + Letzte_Weiche : Bool := FALSE // Letzte Weiche im Verbund + Entlade_Weiche : Bool := FALSE // BT/MT wird entladen -> Leerziel übergeben + Kontroll_B_Gerade : Bool := FALSE // Kontroll-Sensor bei Weiterfahrt (gerade) + Kontroll_B_Ausfahrt : Bool := TRUE // Kontroll-Sensor bei Ausfahrt (abzweig) + Quell_Schaltung : Bool := FALSE // Weiche aufgrund der Quelle schalten (Hauptstrang = Gerade, FIFO = Abzweig) + Disable_PLC_Ziel : Bool := FALSE // Bei Zielvorgabe von PLC nicht anfahren (Disabled) + ErsatzZiel_bei_Stau : Bool := FALSE // Bei Stau Ersatz-Ziel (s.u.) anfahren + Para07 : Bool := FALSE + Weichen_GST_gerade : Bool := TRUE // Weiche wird ohne Daten auf gerade geschaltet + Weichen_GST_abzweig : Bool := FALSE // Weiche wird ohne Daten auf abzweig geschaltet + IDX_an_Puffer : Bool := TRUE // IDX an Ziel-Puffer senden + Para13 : Bool := FALSE + Para14 : Bool := FALSE + Para15 : Bool := FALSE + Para16 : Bool := FALSE + PC_Komm_aktiv : Bool := TRUE // PC-Kommunikation aktiv + LeerZiel : Int := 0 // Nach Entladen des BT/MT dieses Ziel übergeben + PC_Send_FIFO : Int := 0 // Send-FIFO für PC-Sndungen + Hauptstrang_DL_DB : Int := 1481 // Hauptstrang-Datenlisten-DB + Hauptstrang_DL_DW : Int := 0 // Hauptstrang-Datenlisten-DW + Off_Ink : DInt := 88 // Inkremente zum Weiche schalten + Ink_DB : Int := 1483 // DB-Nr des Inkremental-Geber + Position_minus : Int := 2 // Position vorher (zwecks Datensuche) + AbzweigZiel : Int := 103 // Bei diesem Ziel Weiche auf Abzweig schalten + Carl + GeradeZiel : Int := 0 // Bei diesem Ziel Weiche auf Gerade schalten + Carl + Kontroll_Zeit_gerade : Int := 0 // Nach dieser Zeit muss BM bei Geradefahrt Weichenbereich verlassen haben [100ms] + Kontroll_Zeit_abzweigen : Int := 100 // Nach dieser Zeit muss BM bei Abzweigen Weichenbereich verlassen haben [100ms] + DraussenZeit_gerade : Int := 0 // Nach dieser neg. Zeit [100ms] Error undef.BM, falls Kontroll-Sensor aktiv + Ink_Schaltdauer : Int := 300 // Inkremente, danach wird Weiche in GST geschaltet + ErsatzZiel : Int := 0 // Dieser Ziel bei Parameter 6 und Stau anfahren + Weiche_VP4 : Struct + Weichen_Nr : Int := 4 // Nummer der Weiche + Weichen_Dyn_DB : Int := 1423 // Dynamische Daten Weiche + Weichen_Dyn_DW : Int := 900 // Dynamische Daten Weiche + Weichen_Typ : Int := 178 // Weichen-Typ = 178 (Weiche) + Parameter : Struct + Letzte_Weiche : Bool := FALSE // Letzte Weiche im Verbund + Entlade_Weiche : Bool := FALSE // BT/MT wird entladen -> Leerziel übergeben + Kontroll_B_Gerade : Bool := FALSE // Kontroll-Sensor bei Weiterfahrt (gerade) + Kontroll_B_Ausfahrt : Bool := TRUE // Kontroll-Sensor bei Ausfahrt (abzweig) + Quell_Schaltung : Bool := FALSE // Weiche aufgrund der Quelle schalten (Hauptstrang = Gerade, FIFO = Abzweig) + Disable_PLC_Ziel : Bool := FALSE // Bei Zielvorgabe von PLC nicht anfahren (Disabled) + Para06 : Bool := FALSE + Para07 : Bool := FALSE + Weichen_GST_gerade : Bool := TRUE // Weiche wird ohne Daten auf gerade geschaltet + Weichen_GST_abzweig : Bool := FALSE // Weiche wird ohne Daten auf abzweig geschaltet + IDX_an_Puffer : Bool := TRUE // IDX an Ziel-Puffer senden + Para13 : Bool := FALSE + Para14 : Bool := FALSE + Para15 : Bool := FALSE + Para16 : Bool := FALSE + PC_Komm_aktiv : Bool := TRUE // PC-Kommunikation aktiv + LeerZiel : Int := 0 // Nach Entladen des BT/MT dieses Ziel übergeben + PC_Send_FIFO : Int := 0 // Send-FIFO für PC-Sndungen + Hauptstrang_DL_DB : Int := 1481 // Hauptstrang-Datenlisten-DB + Hauptstrang_DL_DW : Int := 0 // Hauptstrang-Datenlisten-DW + Off_Ink : DInt := 109 // Inkremente zum Weiche schalten + Ink_DB : Int := 1483 // DB-Nr des Inkremental-Geber + Position_minus : Int := 3 // Position vorher (zwecks Datensuche) + AbzweigZiel : Int := 104 // Bei diesem Ziel Weiche auf Abzweig schalten + Carl + GeradeZiel : Int := 0 // Bei diesem Ziel Weiche auf Gerade schalten + Carl + Kontroll_Zeit_gerade : Int := 0 // Nach dieser Zeit muss BM bei Geradefahrt Weichenbereich verlassen haben [100ms] + Kontroll_Zeit_abzweigen : Int := 100 // Nach dieser Zeit muss BM bei Abzweigen Weichenbereich verlassen haben [100ms] + DraussenZeit_gerade : Int := 0 // Nach dieser neg. Zeit [100ms] Error undef.BM, falls Kontroll-Sensor aktiv + Ink_Schaltdauer : Int := 300 // Inkremente, danach wird Weiche in GST geschaltet + Frei38 : Int := 0 + Weiche_VP5 : Struct + Weichen_Nr : Int := 5 // Nummer der Weiche + Weichen_Dyn_DB : Int := 1423 // Dynamische Daten Weiche + Weichen_Dyn_DW : Int := 1100 // Dynamische Daten Weiche + Weichen_Typ : Int := 178 // Weichen-Typ = 178 (Weiche) + Parameter : Struct + Letzte_Weiche : Bool := FALSE // Letzte Weiche im Verbund + Entlade_Weiche : Bool := FALSE // BT/MT wird entladen -> Leerziel übergeben + Kontroll_B_Gerade : Bool := TRUE // Kontroll-Sensor bei Weiterfahrt (gerade) + Kontroll_B_Ausfahrt : Bool := TRUE // Kontroll-Sensor bei Ausfahrt (abzweig) + Quell_Schaltung : Bool := FALSE // Weiche aufgrund der Quelle schalten (Hauptstrang = Gerade, FIFO = Abzweig) + Disable_PLC_Ziel : Bool := FALSE // Bei Zielvorgabe von PLC nicht anfahren (Disabled) + Para06 : Bool := FALSE + Para07 : Bool := FALSE + Weichen_GST_gerade : Bool := TRUE // Weiche wird ohne Daten auf gerade geschaltet + Weichen_GST_abzweig : Bool := FALSE // Weiche wird ohne Daten auf abzweig geschaltet + IDX_an_Puffer : Bool := TRUE // IDX an Ziel-Puffer senden + Para13 : Bool := FALSE + Para14 : Bool := FALSE + Para15 : Bool := FALSE + Para16 : Bool := FALSE + PC_Komm_aktiv : Bool := TRUE // PC-Kommunikation aktiv + LeerZiel : Int := 0 // Nach Entladen des BT/MT dieses Ziel übergeben + PC_Send_FIFO : Int := 0 // Send-FIFO für PC-Sndungen + Hauptstrang_DL_DB : Int := 1481 // Hauptstrang-Datenlisten-DB + Hauptstrang_DL_DW : Int := 0 // Hauptstrang-Datenlisten-DW + Off_Ink : DInt := 133 // Inkremente zum Weiche schalten + Ink_DB : Int := 1483 // DB-Nr des Inkremental-Geber + Position_minus : Int := 4 // Position vorher (zwecks Datensuche) + AbzweigZiel : Int := 105 // Bei diesem Ziel Weiche auf Abzweig schalten + Carl + GeradeZiel : Int := 0 // Bei diesem Ziel Weiche auf Gerade schalten + Carl + Kontroll_Zeit_gerade : Int := 150 // Nach dieser Zeit muss BM bei Geradefahrt Weichenbereich verlassen haben [100ms] + Kontroll_Zeit_abzweigen : Int := 100 // Nach dieser Zeit muss BM bei Abzweigen Weichenbereich verlassen haben [100ms] + DraussenZeit_gerade : Int := -300 // Nach dieser neg. Zeit [100ms] Error undef.BM, falls Kontroll-Sensor aktiv + Ink_Schaltdauer : Int := 300 // Inkremente, danach wird Weiche in GST geschaltet + Frei38 : Int := 0 + Weiche_VP6 : Struct + Weichen_Nr : Int := 6 // Nummer der Weiche + Weichen_Dyn_DB : Int := 1423 // Dynamische Daten Weiche + Weichen_Dyn_DW : Int := 1300 // Dynamische Daten Weiche + Weichen_Typ : Int := 178 // Weichen-Typ = 178 (Weiche) + Parameter : Struct + Letzte_Weiche : Bool := FALSE // Letzte Weiche im Verbund + Entlade_Weiche : Bool := FALSE // BT/MT wird entladen -> Leerziel übergeben + Kontroll_B_Gerade : Bool := FALSE // Kontroll-Sensor bei Weiterfahrt (gerade) + Kontroll_B_Ausfahrt : Bool := TRUE // Kontroll-Sensor bei Ausfahrt (abzweig) + Quell_Schaltung : Bool := FALSE // Weiche aufgrund der Quelle schalten (Hauptstrang = Gerade, FIFO = Abzweig) + Disable_PLC_Ziel : Bool := FALSE // Bei Zielvorgabe von PLC nicht anfahren (Disabled) + Para06 : Bool := FALSE + Para07 : Bool := FALSE + Weichen_GST_gerade : Bool := TRUE // Weiche wird ohne Daten auf gerade geschaltet + Weichen_GST_abzweig : Bool := FALSE // Weiche wird ohne Daten auf abzweig geschaltet + IDX_an_Puffer : Bool := TRUE // IDX an Ziel-Puffer senden + Para13 : Bool := FALSE + Para14 : Bool := FALSE + Para15 : Bool := FALSE + Para16 : Bool := FALSE + PC_Komm_aktiv : Bool := TRUE // PC-Kommunikation aktiv + LeerZiel : Int := 0 // Nach Entladen des BT/MT dieses Ziel übergeben + PC_Send_FIFO : Int := 0 // Send-FIFO für PC-Sndungen + Hauptstrang_DL_DB : Int := 1481 // Hauptstrang-Datenlisten-DB + Hauptstrang_DL_DW : Int := 0 // Hauptstrang-Datenlisten-DW + Off_Ink : DInt := 166 // Inkremente zum Weiche schalten + Ink_DB : Int := 1483 // DB-Nr des Inkremental-Geber + Position_minus : Int := 5 // Position vorher (zwecks Datensuche) + AbzweigZiel : Int := 106 // Bei diesem Ziel Weiche auf Abzweig schalten + Carl + GeradeZiel : Int := 0 // Bei diesem Ziel Weiche auf Gerade schalten + Carl + Kontroll_Zeit_gerade : Int := 0 // Nach dieser Zeit muss BM bei Geradefahrt Weichenbereich verlassen haben [100ms] + Kontroll_Zeit_abzweigen : Int := 100 // Nach dieser Zeit muss BM bei Abzweigen Weichenbereich verlassen haben [100ms] + DraussenZeit_gerade : Int := 0 // Nach dieser neg. Zeit [100ms] Error undef.BM, falls Kontroll-Sensor aktiv + Ink_Schaltdauer : Int := 300 // Inkremente, danach wird Weiche in GST geschaltet + Frei38 : Int := 0 + Weiche_VP7 : Struct + Weichen_Nr : Int := 7 // Nummer der Weiche + Weichen_Dyn_DB : Int := 1423 // Dynamische Daten Weiche + Weichen_Dyn_DW : Int := 1500 // Dynamische Daten Weiche + Weichen_Typ : Int := 178 // Weichen-Typ = 178 (Weiche) + Parameter : Struct + Letzte_Weiche : Bool := FALSE // Letzte Weiche im Verbund + Entlade_Weiche : Bool := FALSE // BT/MT wird entladen -> Leerziel übergeben + Kontroll_B_Gerade : Bool := FALSE // Kontroll-Sensor bei Weiterfahrt (gerade) + Kontroll_B_Ausfahrt : Bool := TRUE // Kontroll-Sensor bei Ausfahrt (abzweig) + Quell_Schaltung : Bool := FALSE // Weiche aufgrund der Quelle schalten (Hauptstrang = Gerade, FIFO = Abzweig) + Disable_PLC_Ziel : Bool := FALSE // Bei Zielvorgabe von PLC nicht anfahren (Disabled) + Para06 : Bool := FALSE + Para07 : Bool := FALSE + Weichen_GST_gerade : Bool := TRUE // Weiche wird ohne Daten auf gerade geschaltet + Weichen_GST_abzweig : Bool := FALSE // Weiche wird ohne Daten auf abzweig geschaltet + IDX_an_Puffer : Bool := TRUE // IDX an Ziel-Puffer senden + Para13 : Bool := FALSE + Para14 : Bool := FALSE + Para15 : Bool := FALSE + Para16 : Bool := FALSE + PC_Komm_aktiv : Bool := TRUE // PC-Kommunikation aktiv + LeerZiel : Int := 0 // Nach Entladen des BT/MT dieses Ziel übergeben + PC_Send_FIFO : Int := 0 // Send-FIFO für PC-Sndungen + Hauptstrang_DL_DB : Int := 1481 // Hauptstrang-Datenlisten-DB + Hauptstrang_DL_DW : Int := 0 // Hauptstrang-Datenlisten-DW + Off_Ink : DInt := 191 // Inkremente zum Weiche schalten + Ink_DB : Int := 1483 // DB-Nr des Inkremental-Geber + Position_minus : Int := 6 // Position vorher (zwecks Datensuche) + AbzweigZiel : Int := 107 // Bei diesem Ziel Weiche auf Abzweig schalten + Carl + GeradeZiel : Int := 0 // Bei diesem Ziel Weiche auf Gerade schalten + Carl + Kontroll_Zeit_gerade : Int := 0 // Nach dieser Zeit muss BM bei Geradefahrt Weichenbereich verlassen haben [100ms] + Kontroll_Zeit_abzweigen : Int := 100 // Nach dieser Zeit muss BM bei Abzweigen Weichenbereich verlassen haben [100ms] + DraussenZeit_gerade : Int := 0 // Nach dieser neg. Zeit [100ms] Error undef.BM, falls Kontroll-Sensor aktiv + Ink_Schaltdauer : Int := 300 // Inkremente, danach wird Weiche in GST geschaltet + Frei38 : Int := 0 + Weiche_VP8 : Struct + Weichen_Nr : Int := 8 // Nummer der Weiche + Weichen_Dyn_DB : Int := 1423 // Dynamische Daten Weiche + Weichen_Dyn_DW : Int := 1700 // Dynamische Daten Weiche + Weichen_Typ : Int := 178 // Weichen-Typ = 178 (Weiche) + Parameter : Struct + Letzte_Weiche : Bool := FALSE // Letzte Weiche im Verbund + Entlade_Weiche : Bool := FALSE // BT/MT wird entladen -> Leerziel übergeben + Kontroll_B_Gerade : Bool := FALSE // Kontroll-Sensor bei Weiterfahrt (gerade) + Kontroll_B_Ausfahrt : Bool := TRUE // Kontroll-Sensor bei Ausfahrt (abzweig) + Quell_Schaltung : Bool := FALSE // Weiche aufgrund der Quelle schalten (Hauptstrang = Gerade, FIFO = Abzweig) + Disable_PLC_Ziel : Bool := FALSE // Bei Zielvorgabe von PLC nicht anfahren (Disabled) + Para06 : Bool := FALSE + Para07 : Bool := FALSE + Weichen_GST_gerade : Bool := TRUE // Weiche wird ohne Daten auf gerade geschaltet + Weichen_GST_abzweig : Bool := FALSE // Weiche wird ohne Daten auf abzweig geschaltet + IDX_an_Puffer : Bool := TRUE // IDX an Ziel-Puffer senden + Para13 : Bool := FALSE + Para14 : Bool := FALSE + Para15 : Bool := FALSE + Para16 : Bool := FALSE + PC_Komm_aktiv : Bool := TRUE // PC-Kommunikation aktiv + LeerZiel : Int := 0 // Nach Entladen des BT/MT dieses Ziel übergeben + PC_Send_FIFO : Int := 0 // Send-FIFO für PC-Sndungen + Hauptstrang_DL_DB : Int := 1481 // Hauptstrang-Datenlisten-DB + Hauptstrang_DL_DW : Int := 0 // Hauptstrang-Datenlisten-DW + Off_Ink : DInt := 214 // Inkremente zum Weiche schalten + Ink_DB : Int := 1483 // DB-Nr des Inkremental-Geber + Position_minus : Int := 7 // Position vorher (zwecks Datensuche) + AbzweigZiel : Int := 108 // Bei diesem Ziel Weiche auf Abzweig schalten + Carl + GeradeZiel : Int := 0 // Bei diesem Ziel Weiche auf Gerade schalten + Carl + Kontroll_Zeit_gerade : Int := 0 // Nach dieser Zeit muss BM bei Geradefahrt Weichenbereich verlassen haben [100ms] + Kontroll_Zeit_abzweigen : Int := 100 // Nach dieser Zeit muss BM bei Abzweigen Weichenbereich verlassen haben [100ms] + DraussenZeit_gerade : Int := 0 // Nach dieser neg. Zeit [100ms] Error undef.BM, falls Kontroll-Sensor aktiv + Ink_Schaltdauer : Int := 300 // Inkremente, danach wird Weiche in GST geschaltet + Frei38 : Int := 0 + Weiche_VP9 : Struct + Weichen_Nr : Int := 9 // Nummer der Weiche + Weichen_Dyn_DB : Int := 1423 // Dynamische Daten Weiche + Weichen_Dyn_DW : Int := 1900 // Dynamische Daten Weiche + Weichen_Typ : Int := 178 // Weichen-Typ = 178 (Weiche) + Parameter : Struct + Letzte_Weiche : Bool := FALSE // Letzte Weiche im Verbund + Entlade_Weiche : Bool := FALSE // BT/MT wird entladen -> Leerziel übergeben + Kontroll_B_Gerade : Bool := FALSE // Kontroll-Sensor bei Weiterfahrt (gerade) + Kontroll_B_Ausfahrt : Bool := TRUE // Kontroll-Sensor bei Ausfahrt (abzweig) + Quell_Schaltung : Bool := FALSE // Weiche aufgrund der Quelle schalten (Hauptstrang = Gerade, FIFO = Abzweig) + Disable_PLC_Ziel : Bool := FALSE // Bei Zielvorgabe von PLC nicht anfahren (Disabled) + Para06 : Bool := FALSE + Para07 : Bool := FALSE + Weichen_GST_gerade : Bool := TRUE // Weiche wird ohne Daten auf gerade geschaltet + Weichen_GST_abzweig : Bool := FALSE // Weiche wird ohne Daten auf abzweig geschaltet + IDX_an_Puffer : Bool := TRUE // IDX an Ziel-Puffer senden + Para13 : Bool := FALSE + Para14 : Bool := FALSE + Para15 : Bool := FALSE + Para16 : Bool := FALSE + PC_Komm_aktiv : Bool := TRUE // PC-Kommunikation aktiv + LeerZiel : Int := 0 // Nach Entladen des BT/MT dieses Ziel übergeben + PC_Send_FIFO : Int := 0 // Send-FIFO für PC-Sndungen + Hauptstrang_DL_DB : Int := 1481 // Hauptstrang-Datenlisten-DB + Hauptstrang_DL_DW : Int := 0 // Hauptstrang-Datenlisten-DW + Off_Ink : DInt := 238 // Inkremente zum Weiche schalten + Ink_DB : Int := 1483 // DB-Nr des Inkremental-Geber + Position_minus : Int := 8 // Position vorher (zwecks Datensuche) + AbzweigZiel : Int := 109 // Bei diesem Ziel Weiche auf Abzweig schalten + Carl + GeradeZiel : Int := 0 // Bei diesem Ziel Weiche auf Gerade schalten + Carl + Kontroll_Zeit_gerade : Int := 0 // Nach dieser Zeit muss BM bei Geradefahrt Weichenbereich verlassen haben [100ms] + Kontroll_Zeit_abzweigen : Int := 100 // Nach dieser Zeit muss BM bei Abzweigen Weichenbereich verlassen haben [100ms] + DraussenZeit_gerade : Int := 0 // Nach dieser neg. Zeit [100ms] Error undef.BM, falls Kontroll-Sensor aktiv + Ink_Schaltdauer : Int := 300 // Inkremente, danach wird Weiche in GST geschaltet + Frei38 : Int := 0 + Weiche_VP10 : Struct + Weichen_Nr : Int := 10 // Nummer der Weiche + Weichen_Dyn_DB : Int := 1423 // Dynamische Daten Weiche + Weichen_Dyn_DW : Int := 2100 // Dynamische Daten Weiche + Weichen_Typ : Int := 178 // Weichen-Typ = 178 (Weiche) + Parameter : Struct + Letzte_Weiche : Bool := FALSE // Letzte Weiche im Verbund + Entlade_Weiche : Bool := FALSE // BT/MT wird entladen -> Leerziel übergeben + Kontroll_B_Gerade : Bool := FALSE // Kontroll-Sensor bei Weiterfahrt (gerade) + Kontroll_B_Ausfahrt : Bool := TRUE // Kontroll-Sensor bei Ausfahrt (abzweig) + Quell_Schaltung : Bool := FALSE // Weiche aufgrund der Quelle schalten (Hauptstrang = Gerade, FIFO = Abzweig) + Disable_PLC_Ziel : Bool := FALSE // Bei Zielvorgabe von PLC nicht anfahren (Disabled) + Para06 : Bool := FALSE + Para07 : Bool := FALSE + Weichen_GST_gerade : Bool := TRUE // Weiche wird ohne Daten auf gerade geschaltet + Weichen_GST_abzweig : Bool := FALSE // Weiche wird ohne Daten auf abzweig geschaltet + IDX_an_Puffer : Bool := TRUE // IDX an Ziel-Puffer senden + Para13 : Bool := FALSE + Para14 : Bool := FALSE + Para15 : Bool := FALSE + Para16 : Bool := FALSE + PC_Komm_aktiv : Bool := TRUE // PC-Kommunikation aktiv + LeerZiel : Int := 0 // Nach Entladen des BT/MT dieses Ziel übergeben + PC_Send_FIFO : Int := 0 // Send-FIFO für PC-Sndungen + Hauptstrang_DL_DB : Int := 1481 // Hauptstrang-Datenlisten-DB + Hauptstrang_DL_DW : Int := 0 // Hauptstrang-Datenlisten-DW + Off_Ink : DInt := 260 // Inkremente zum Weiche schalten + Ink_DB : Int := 1483 // DB-Nr des Inkremental-Geber + Position_minus : Int := 9 // Position vorher (zwecks Datensuche) + AbzweigZiel : Int := 110 // Bei diesem Ziel Weiche auf Abzweig schalten + Carl + GeradeZiel : Int := 0 // Bei diesem Ziel Weiche auf Gerade schalten + Carl + Kontroll_Zeit_gerade : Int := 0 // Nach dieser Zeit muss BM bei Geradefahrt Weichenbereich verlassen haben [100ms] + Kontroll_Zeit_abzweigen : Int := 100 // Nach dieser Zeit muss BM bei Abzweigen Weichenbereich verlassen haben [100ms] + DraussenZeit_gerade : Int := 0 // Nach dieser neg. Zeit [100ms] Error undef.BM, falls Kontroll-Sensor aktiv + Ink_Schaltdauer : Int := 300 // Inkremente, danach wird Weiche in GST geschaltet + Frei38 : Int := 0 + Weiche_VP11 : Struct + Weichen_Nr : Int := 11 // Nummer der Weiche + Weichen_Dyn_DB : Int := 1423 // Dynamische Daten Weiche + Weichen_Dyn_DW : Int := 2300 // Dynamische Daten Weiche + Weichen_Typ : Int := 178 // Weichen-Typ = 178 (Weiche) + Parameter : Struct + Letzte_Weiche : Bool := FALSE // Letzte Weiche im Verbund + Entlade_Weiche : Bool := FALSE // BT/MT wird entladen -> Leerziel übergeben + Kontroll_B_Gerade : Bool := FALSE // Kontroll-Sensor bei Weiterfahrt (gerade) + Kontroll_B_Ausfahrt : Bool := TRUE // Kontroll-Sensor bei Ausfahrt (abzweig) + Quell_Schaltung : Bool := FALSE // Weiche aufgrund der Quelle schalten (Hauptstrang = Gerade, FIFO = Abzweig) + Disable_PLC_Ziel : Bool := FALSE // Bei Zielvorgabe von PLC nicht anfahren (Disabled) + Para06 : Bool := FALSE + Para07 : Bool := FALSE + Weichen_GST_gerade : Bool := TRUE // Weiche wird ohne Daten auf gerade geschaltet + Weichen_GST_abzweig : Bool := FALSE // Weiche wird ohne Daten auf abzweig geschaltet + IDX_an_Puffer : Bool := TRUE // IDX an Ziel-Puffer senden + Para13 : Bool := FALSE + Para14 : Bool := FALSE + Para15 : Bool := FALSE + Para16 : Bool := FALSE + PC_Komm_aktiv : Bool := TRUE // PC-Kommunikation aktiv + LeerZiel : Int := 0 // Nach Entladen des BT/MT dieses Ziel übergeben + PC_Send_FIFO : Int := 0 // Send-FIFO für PC-Sndungen + Hauptstrang_DL_DB : Int := 1481 // Hauptstrang-Datenlisten-DB + Hauptstrang_DL_DW : Int := 0 // Hauptstrang-Datenlisten-DW + Off_Ink : DInt := 284 // Inkremente zum Weiche schalten + Ink_DB : Int := 1483 // DB-Nr des Inkremental-Geber + Position_minus : Int := 10 // Position vorher (zwecks Datensuche) + AbzweigZiel : Int := 111 // Bei diesem Ziel Weiche auf Abzweig schalten + Carl + GeradeZiel : Int := 0 // Bei diesem Ziel Weiche auf Gerade schalten + Carl + Kontroll_Zeit_gerade : Int := 0 // Nach dieser Zeit muss BM bei Geradefahrt Weichenbereich verlassen haben [100ms] + Kontroll_Zeit_abzweigen : Int := 100 // Nach dieser Zeit muss BM bei Abzweigen Weichenbereich verlassen haben [100ms] + DraussenZeit_gerade : Int := 0 // Nach dieser neg. Zeit [100ms] Error undef.BM, falls Kontroll-Sensor aktiv + Ink_Schaltdauer : Int := 300 // Inkremente, danach wird Weiche in GST geschaltet + Frei38 : Int := 0 + Weiche_VP12 : Struct + Weichen_Nr : Int := 12 // Nummer der Weiche + Weichen_Dyn_DB : Int := 1423 // Dynamische Daten Weiche + Weichen_Dyn_DW : Int := 2500 // Dynamische Daten Weiche + Weichen_Typ : Int := 178 // Weichen-Typ = 178 (Weiche) + Parameter : Struct + Letzte_Weiche : Bool := FALSE // Letzte Weiche im Verbund + Entlade_Weiche : Bool := FALSE // BT/MT wird entladen -> Leerziel übergeben + Kontroll_B_Gerade : Bool := TRUE // Kontroll-Sensor bei Weiterfahrt (gerade) + Kontroll_B_Ausfahrt : Bool := TRUE // Kontroll-Sensor bei Ausfahrt (abzweig) + Quell_Schaltung : Bool := FALSE // Weiche aufgrund der Quelle schalten (Hauptstrang = Gerade, FIFO = Abzweig) + Disable_PLC_Ziel : Bool := FALSE // Bei Zielvorgabe von PLC nicht anfahren (Disabled) + Para06 : Bool := FALSE + Para07 : Bool := FALSE + Weichen_GST_gerade : Bool := TRUE // Weiche wird ohne Daten auf gerade geschaltet + Weichen_GST_abzweig : Bool := FALSE // Weiche wird ohne Daten auf abzweig geschaltet + IDX_an_Puffer : Bool := TRUE // IDX an Ziel-Puffer senden + Para13 : Bool := FALSE + Para14 : Bool := FALSE + Para15 : Bool := FALSE + Para16 : Bool := FALSE + PC_Komm_aktiv : Bool := TRUE // PC-Kommunikation aktiv + LeerZiel : Int := 0 // Nach Entladen des BT/MT dieses Ziel übergeben + PC_Send_FIFO : Int := 0 // Send-FIFO für PC-Sndungen + Hauptstrang_DL_DB : Int := 1481 // Hauptstrang-Datenlisten-DB + Hauptstrang_DL_DW : Int := 0 // Hauptstrang-Datenlisten-DW + Off_Ink : DInt := 303 // Inkremente zum Weiche schalten + Ink_DB : Int := 1483 // DB-Nr des Inkremental-Geber + Position_minus : Int := 11 // Position vorher (zwecks Datensuche) + AbzweigZiel : Int := 112 // Bei diesem Ziel Weiche auf Abzweig schalten + Carl + GeradeZiel : Int := 0 // Bei diesem Ziel Weiche auf Gerade schalten + Carl + Kontroll_Zeit_gerade : Int := 150 // Nach dieser Zeit muss BM bei Geradefahrt Weichenbereich verlassen haben [100ms] + Kontroll_Zeit_abzweigen : Int := 100 // Nach dieser Zeit muss BM bei Abzweigen Weichenbereich verlassen haben [100ms] + DraussenZeit_gerade : Int := -300 // Nach dieser neg. Zeit [100ms] Error undef.BM, falls Kontroll-Sensor aktiv + Ink_Schaltdauer : Int := 300 // Inkremente, danach wird Weiche in GST geschaltet + Frei38 : Int := 0 + Weiche_VP13 : Struct + Weichen_Nr : Int := 13 // Nummer der Weiche + Weichen_Dyn_DB : Int := 1423 // Dynamische Daten Weiche + Weichen_Dyn_DW : Int := 2700 // Dynamische Daten Weiche + Weichen_Typ : Int := 178 // Weichen-Typ = 178 (Weiche) + Parameter : Struct + Letzte_Weiche : Bool := FALSE // Letzte Weiche im Verbund + Entlade_Weiche : Bool := FALSE // BT/MT wird entladen -> Leerziel übergeben + Kontroll_B_Gerade : Bool := FALSE // Kontroll-Sensor bei Weiterfahrt (gerade) + Kontroll_B_Ausfahrt : Bool := TRUE // Kontroll-Sensor bei Ausfahrt (abzweig) + Quell_Schaltung : Bool := FALSE // Weiche aufgrund der Quelle schalten (Hauptstrang = Gerade, FIFO = Abzweig) + Disable_PLC_Ziel : Bool := FALSE // Bei Zielvorgabe von PLC nicht anfahren (Disabled) + Para06 : Bool := FALSE + Para07 : Bool := FALSE + Weichen_GST_gerade : Bool := TRUE // Weiche wird ohne Daten auf gerade geschaltet + Weichen_GST_abzweig : Bool := FALSE // Weiche wird ohne Daten auf abzweig geschaltet + IDX_an_Puffer : Bool := TRUE // IDX an Ziel-Puffer senden + Para13 : Bool := FALSE + Para14 : Bool := FALSE + Para15 : Bool := FALSE + Para16 : Bool := FALSE + PC_Komm_aktiv : Bool := TRUE // PC-Kommunikation aktiv + LeerZiel : Int := 0 // Nach Entladen des BT/MT dieses Ziel übergeben + PC_Send_FIFO : Int := 0 // Send-FIFO für PC-Sndungen + Hauptstrang_DL_DB : Int := 1481 // Hauptstrang-Datenlisten-DB + Hauptstrang_DL_DW : Int := 0 // Hauptstrang-Datenlisten-DW + Off_Ink : DInt := 366 // Inkremente zum Weiche schalten + Ink_DB : Int := 1483 // DB-Nr des Inkremental-Geber + Position_minus : Int := 12 // Position vorher (zwecks Datensuche) + AbzweigZiel : Int := 113 // Bei diesem Ziel Weiche auf Abzweig schalten + Carl + GeradeZiel : Int := 0 // Bei diesem Ziel Weiche auf Gerade schalten + Carl + Kontroll_Zeit_gerade : Int := 0 // Nach dieser Zeit muss BM bei Geradefahrt Weichenbereich verlassen haben [100ms] + Kontroll_Zeit_abzweigen : Int := 100 // Nach dieser Zeit muss BM bei Abzweigen Weichenbereich verlassen haben [100ms] + DraussenZeit_gerade : Int := 0 // Nach dieser neg. Zeit [100ms] Error undef.BM, falls Kontroll-Sensor aktiv + Ink_Schaltdauer : Int := 300 // Inkremente, danach wird Weiche in GST geschaltet + Frei38 : Int := 0 + Weiche_VP14 : Struct + Weichen_Nr : Int := 14 // Nummer der Weiche + Weichen_Dyn_DB : Int := 1423 // Dynamische Daten Weiche + Weichen_Dyn_DW : Int := 2900 // Dynamische Daten Weiche + Weichen_Typ : Int := 178 // Weichen-Typ = 178 (Weiche) + Parameter : Struct + Letzte_Weiche : Bool := FALSE // Letzte Weiche im Verbund + Entlade_Weiche : Bool := FALSE // BT/MT wird entladen -> Leerziel übergeben + Kontroll_B_Gerade : Bool := FALSE // Kontroll-Sensor bei Weiterfahrt (gerade) + Kontroll_B_Ausfahrt : Bool := TRUE // Kontroll-Sensor bei Ausfahrt (abzweig) + Quell_Schaltung : Bool := FALSE // Weiche aufgrund der Quelle schalten (Hauptstrang = Gerade, FIFO = Abzweig) + Disable_PLC_Ziel : Bool := FALSE // Bei Zielvorgabe von PLC nicht anfahren (Disabled) + Para06 : Bool := FALSE + Para07 : Bool := FALSE + Weichen_GST_gerade : Bool := TRUE // Weiche wird ohne Daten auf gerade geschaltet + Weichen_GST_abzweig : Bool := FALSE // Weiche wird ohne Daten auf abzweig geschaltet + IDX_an_Puffer : Bool := TRUE // IDX an Ziel-Puffer senden + Para13 : Bool := FALSE + Para14 : Bool := FALSE + Para15 : Bool := FALSE + Para16 : Bool := FALSE + PC_Komm_aktiv : Bool := TRUE // PC-Kommunikation aktiv + LeerZiel : Int := 0 // Nach Entladen des BT/MT dieses Ziel übergeben + PC_Send_FIFO : Int := 0 // Send-FIFO für PC-Sndungen + Hauptstrang_DL_DB : Int := 1481 // Hauptstrang-Datenlisten-DB + Hauptstrang_DL_DW : Int := 0 // Hauptstrang-Datenlisten-DW + Off_Ink : DInt := 393 // Inkremente zum Weiche schalten + Ink_DB : Int := 1483 // DB-Nr des Inkremental-Geber + Position_minus : Int := 13 // Position vorher (zwecks Datensuche) + AbzweigZiel : Int := 114 // Bei diesem Ziel Weiche auf Abzweig schalten + Carl + GeradeZiel : Int := 0 // Bei diesem Ziel Weiche auf Gerade schalten + Carl + Kontroll_Zeit_gerade : Int := 0 // Nach dieser Zeit muss BM bei Geradefahrt Weichenbereich verlassen haben [100ms] + Kontroll_Zeit_abzweigen : Int := 100 // Nach dieser Zeit muss BM bei Abzweigen Weichenbereich verlassen haben [100ms] + DraussenZeit_gerade : Int := 0 // Nach dieser neg. Zeit [100ms] Error undef.BM, falls Kontroll-Sensor aktiv + Ink_Schaltdauer : Int := 300 // Inkremente, danach wird Weiche in GST geschaltet + Frei38 : Int := 0 + Weiche_VP15 : Struct + Weichen_Nr : Int := 15 // Nummer der Weiche + Weichen_Dyn_DB : Int := 1423 // Dynamische Daten Weiche + Weichen_Dyn_DW : Int := 3100 // Dynamische Daten Weiche + Weichen_Typ : Int := 178 // Weichen-Typ = 178 (Weiche) + Parameter : Struct + Letzte_Weiche : Bool := FALSE // Letzte Weiche im Verbund + Entlade_Weiche : Bool := FALSE // BT/MT wird entladen -> Leerziel übergeben + Kontroll_B_Gerade : Bool := FALSE // Kontroll-Sensor bei Weiterfahrt (gerade) + Kontroll_B_Ausfahrt : Bool := TRUE // Kontroll-Sensor bei Ausfahrt (abzweig) + Quell_Schaltung : Bool := FALSE // Weiche aufgrund der Quelle schalten (Hauptstrang = Gerade, FIFO = Abzweig) + Disable_PLC_Ziel : Bool := FALSE // Bei Zielvorgabe von PLC nicht anfahren (Disabled) + Para06 : Bool := FALSE + Para07 : Bool := FALSE + Weichen_GST_gerade : Bool := TRUE // Weiche wird ohne Daten auf gerade geschaltet + Weichen_GST_abzweig : Bool := FALSE // Weiche wird ohne Daten auf abzweig geschaltet + IDX_an_Puffer : Bool := TRUE // IDX an Ziel-Puffer senden + Para13 : Bool := FALSE + Para14 : Bool := FALSE + Para15 : Bool := FALSE + Para16 : Bool := FALSE + PC_Komm_aktiv : Bool := TRUE // PC-Kommunikation aktiv + LeerZiel : Int := 0 // Nach Entladen des BT/MT dieses Ziel übergeben + PC_Send_FIFO : Int := 0 // Send-FIFO für PC-Sndungen + Hauptstrang_DL_DB : Int := 1481 // Hauptstrang-Datenlisten-DB + Hauptstrang_DL_DW : Int := 0 // Hauptstrang-Datenlisten-DW + Off_Ink : DInt := 415 // Inkremente zum Weiche schalten + Ink_DB : Int := 1483 // DB-Nr des Inkremental-Geber + Position_minus : Int := 14 // Position vorher (zwecks Datensuche) + AbzweigZiel : Int := 115 // Bei diesem Ziel Weiche auf Abzweig schalten + Carl + GeradeZiel : Int := 0 // Bei diesem Ziel Weiche auf Gerade schalten + Carl + Kontroll_Zeit_gerade : Int := 0 // Nach dieser Zeit muss BM bei Geradefahrt Weichenbereich verlassen haben [100ms] + Kontroll_Zeit_abzweigen : Int := 100 // Nach dieser Zeit muss BM bei Abzweigen Weichenbereich verlassen haben [100ms] + DraussenZeit_gerade : Int := 0 // Nach dieser neg. Zeit [100ms] Error undef.BM, falls Kontroll-Sensor aktiv + Ink_Schaltdauer : Int := 300 // Inkremente, danach wird Weiche in GST geschaltet + Frei38 : Int := 0 + Weiche_VP16 : Struct + Weichen_Nr : Int := 16 // Nummer der Weiche + Weichen_Dyn_DB : Int := 1423 // Dynamische Daten Weiche + Weichen_Dyn_DW : Int := 3300 // Dynamische Daten Weiche + Weichen_Typ : Int := 178 // Weichen-Typ = 178 (Weiche) + Parameter : Struct + Letzte_Weiche : Bool := FALSE // Letzte Weiche im Verbund + Entlade_Weiche : Bool := FALSE // BT/MT wird entladen -> Leerziel übergeben + Kontroll_B_Gerade : Bool := FALSE // Kontroll-Sensor bei Weiterfahrt (gerade) + Kontroll_B_Ausfahrt : Bool := TRUE // Kontroll-Sensor bei Ausfahrt (abzweig) + Quell_Schaltung : Bool := FALSE // Weiche aufgrund der Quelle schalten (Hauptstrang = Gerade, FIFO = Abzweig) + Disable_PLC_Ziel : Bool := FALSE // Bei Zielvorgabe von PLC nicht anfahren (Disabled) + Para06 : Bool := FALSE + Para07 : Bool := FALSE + Weichen_GST_gerade : Bool := TRUE // Weiche wird ohne Daten auf gerade geschaltet + Weichen_GST_abzweig : Bool := FALSE // Weiche wird ohne Daten auf abzweig geschaltet + IDX_an_Puffer : Bool := TRUE // IDX an Ziel-Puffer senden + Para13 : Bool := FALSE + Para14 : Bool := FALSE + Para15 : Bool := FALSE + Para16 : Bool := FALSE + PC_Komm_aktiv : Bool := TRUE // PC-Kommunikation aktiv + LeerZiel : Int := 0 // Nach Entladen des BT/MT dieses Ziel übergeben + PC_Send_FIFO : Int := 0 // Send-FIFO für PC-Sndungen + Hauptstrang_DL_DB : Int := 1481 // Hauptstrang-Datenlisten-DB + Hauptstrang_DL_DW : Int := 0 // Hauptstrang-Datenlisten-DW + Off_Ink : DInt := 439 // Inkremente zum Weiche schalten + Ink_DB : Int := 1483 // DB-Nr des Inkremental-Geber + Position_minus : Int := 15 // Position vorher (zwecks Datensuche) + AbzweigZiel : Int := 116 // Bei diesem Ziel Weiche auf Abzweig schalten + Carl + GeradeZiel : Int := 0 // Bei diesem Ziel Weiche auf Gerade schalten + Carl + Kontroll_Zeit_gerade : Int := 0 // Nach dieser Zeit muss BM bei Geradefahrt Weichenbereich verlassen haben [100ms] + Kontroll_Zeit_abzweigen : Int := 100 // Nach dieser Zeit muss BM bei Abzweigen Weichenbereich verlassen haben [100ms] + DraussenZeit_gerade : Int := 0 // Nach dieser neg. Zeit [100ms] Error undef.BM, falls Kontroll-Sensor aktiv + Ink_Schaltdauer : Int := 300 // Inkremente, danach wird Weiche in GST geschaltet + Frei38 : Int := 0 + Weiche_VP17 : Struct + Weichen_Nr : Int := 17 // Nummer der Weiche + Weichen_Dyn_DB : Int := 1423 // Dynamische Daten Weiche + Weichen_Dyn_DW : Int := 3500 // Dynamische Daten Weiche + Weichen_Typ : Int := 178 // Weichen-Typ = 178 (Weiche) + Parameter : Struct + Letzte_Weiche : Bool := FALSE // Letzte Weiche im Verbund + Entlade_Weiche : Bool := FALSE // BT/MT wird entladen -> Leerziel übergeben + Kontroll_B_Gerade : Bool := FALSE // Kontroll-Sensor bei Weiterfahrt (gerade) + Kontroll_B_Ausfahrt : Bool := TRUE // Kontroll-Sensor bei Ausfahrt (abzweig) + Quell_Schaltung : Bool := FALSE // Weiche aufgrund der Quelle schalten (Hauptstrang = Gerade, FIFO = Abzweig) + Disable_PLC_Ziel : Bool := FALSE // Bei Zielvorgabe von PLC nicht anfahren (Disabled) + Para06 : Bool := FALSE + Para07 : Bool := FALSE + Weichen_GST_gerade : Bool := TRUE // Weiche wird ohne Daten auf gerade geschaltet + Weichen_GST_abzweig : Bool := FALSE // Weiche wird ohne Daten auf abzweig geschaltet + IDX_an_Puffer : Bool := TRUE // IDX an Ziel-Puffer senden + Para13 : Bool := FALSE + Para14 : Bool := FALSE + Para15 : Bool := FALSE + Para16 : Bool := FALSE + PC_Komm_aktiv : Bool := TRUE // PC-Kommunikation aktiv + LeerZiel : Int := 0 // Nach Entladen des BT/MT dieses Ziel übergeben + PC_Send_FIFO : Int := 0 // Send-FIFO für PC-Sndungen + Hauptstrang_DL_DB : Int := 1481 // Hauptstrang-Datenlisten-DB + Hauptstrang_DL_DW : Int := 0 // Hauptstrang-Datenlisten-DW + Off_Ink : DInt := 461 // Inkremente zum Weiche schalten + Ink_DB : Int := 1483 // DB-Nr des Inkremental-Geber + Position_minus : Int := 16 // Position vorher (zwecks Datensuche) + AbzweigZiel : Int := 117 // Bei diesem Ziel Weiche auf Abzweig schalten + Carl + GeradeZiel : Int := 0 // Bei diesem Ziel Weiche auf Gerade schalten + Carl + Kontroll_Zeit_gerade : Int := 0 // Nach dieser Zeit muss BM bei Geradefahrt Weichenbereich verlassen haben [100ms] + Kontroll_Zeit_abzweigen : Int := 100 // Nach dieser Zeit muss BM bei Abzweigen Weichenbereich verlassen haben [100ms] + DraussenZeit_gerade : Int := 0 // Nach dieser neg. Zeit [100ms] Error undef.BM, falls Kontroll-Sensor aktiv + Ink_Schaltdauer : Int := 300 // Inkremente, danach wird Weiche in GST geschaltet + Frei38 : Int := 0 + Weiche_VP18 : Struct + Weichen_Nr : Int := 18 // Nummer der Weiche + Weichen_Dyn_DB : Int := 1423 // Dynamische Daten Weiche + Weichen_Dyn_DW : Int := 3700 // Dynamische Daten Weiche + Weichen_Typ : Int := 178 // Weichen-Typ = 178 (Weiche) + Parameter : Struct + Letzte_Weiche : Bool := FALSE // Letzte Weiche im Verbund + Entlade_Weiche : Bool := FALSE // BT/MT wird entladen -> Leerziel übergeben + Kontroll_B_Gerade : Bool := TRUE // Kontroll-Sensor bei Weiterfahrt (gerade) + Kontroll_B_Ausfahrt : Bool := TRUE // Kontroll-Sensor bei Ausfahrt (abzweig) + Quell_Schaltung : Bool := FALSE // Weiche aufgrund der Quelle schalten (Hauptstrang = Gerade, FIFO = Abzweig) + Disable_PLC_Ziel : Bool := FALSE // Bei Zielvorgabe von PLC nicht anfahren (Disabled) + Para06 : Bool := FALSE + Para07 : Bool := FALSE + Weichen_GST_gerade : Bool := TRUE // Weiche wird ohne Daten auf gerade geschaltet + Weichen_GST_abzweig : Bool := FALSE // Weiche wird ohne Daten auf abzweig geschaltet + IDX_an_Puffer : Bool := TRUE // IDX an Ziel-Puffer senden + Para13 : Bool := FALSE + Para14 : Bool := FALSE + Para15 : Bool := FALSE + Para16 : Bool := FALSE + PC_Komm_aktiv : Bool := TRUE // PC-Kommunikation aktiv + LeerZiel : Int := 0 // Nach Entladen des BT/MT dieses Ziel übergeben + PC_Send_FIFO : Int := 0 // Send-FIFO für PC-Sndungen + Hauptstrang_DL_DB : Int := 1481 // Hauptstrang-Datenlisten-DB + Hauptstrang_DL_DW : Int := 0 // Hauptstrang-Datenlisten-DW + Off_Ink : DInt := 483 // Inkremente zum Weiche schalten + Ink_DB : Int := 1483 // DB-Nr des Inkremental-Geber + Position_minus : Int := 17 // Position vorher (zwecks Datensuche) + AbzweigZiel : Int := 118 // Bei diesem Ziel Weiche auf Abzweig schalten + Carl + GeradeZiel : Int := 0 // Bei diesem Ziel Weiche auf Gerade schalten + Carl + Kontroll_Zeit_gerade : Int := 150 // Nach dieser Zeit muss BM bei Geradefahrt Weichenbereich verlassen haben [100ms] + Kontroll_Zeit_abzweigen : Int := 100 // Nach dieser Zeit muss BM bei Abzweigen Weichenbereich verlassen haben [100ms] + DraussenZeit_gerade : Int := -300 // Nach dieser neg. Zeit [100ms] Error undef.BM, falls Kontroll-Sensor aktiv + Ink_Schaltdauer : Int := 300 // Inkremente, danach wird Weiche in GST geschaltet + Frei38 : Int := 0 + Weiche_VP19 : Struct + Weichen_Nr : Int := 19 // Nummer der Weiche + Weichen_Dyn_DB : Int := 1423 // Dynamische Daten Weiche + Weichen_Dyn_DW : Int := 3900 // Dynamische Daten Weiche + Weichen_Typ : Int := 178 // Weichen-Typ = 178 (Weiche) + Parameter : Struct + Letzte_Weiche : Bool := FALSE // Letzte Weiche im Verbund + Entlade_Weiche : Bool := FALSE // BT/MT wird entladen -> Leerziel übergeben + Kontroll_B_Gerade : Bool := FALSE // Kontroll-Sensor bei Weiterfahrt (gerade) + Kontroll_B_Ausfahrt : Bool := TRUE // Kontroll-Sensor bei Ausfahrt (abzweig) + Quell_Schaltung : Bool := FALSE // Weiche aufgrund der Quelle schalten (Hauptstrang = Gerade, FIFO = Abzweig) + Disable_PLC_Ziel : Bool := FALSE // Bei Zielvorgabe von PLC nicht anfahren (Disabled) + Para06 : Bool := FALSE + Para07 : Bool := FALSE + Weichen_GST_gerade : Bool := TRUE // Weiche wird ohne Daten auf gerade geschaltet + Weichen_GST_abzweig : Bool := FALSE // Weiche wird ohne Daten auf abzweig geschaltet + IDX_an_Puffer : Bool := TRUE // IDX an Ziel-Puffer senden + Para13 : Bool := FALSE + Para14 : Bool := FALSE + Para15 : Bool := FALSE + Para16 : Bool := FALSE + PC_Komm_aktiv : Bool := TRUE // PC-Kommunikation aktiv + LeerZiel : Int := 0 // Nach Entladen des BT/MT dieses Ziel übergeben + PC_Send_FIFO : Int := 0 // Send-FIFO für PC-Sndungen + Hauptstrang_DL_DB : Int := 1481 // Hauptstrang-Datenlisten-DB + Hauptstrang_DL_DW : Int := 0 // Hauptstrang-Datenlisten-DW + Off_Ink : DInt := 519 // Inkremente zum Weiche schalten + Ink_DB : Int := 1483 // DB-Nr des Inkremental-Geber + Position_minus : Int := 18 // Position vorher (zwecks Datensuche) + AbzweigZiel : Int := 119 // Bei diesem Ziel Weiche auf Abzweig schalten + Carl + GeradeZiel : Int := 0 // Bei diesem Ziel Weiche auf Gerade schalten + Carl + Kontroll_Zeit_gerade : Int := 0 // Nach dieser Zeit muss BM bei Geradefahrt Weichenbereich verlassen haben [100ms] + Kontroll_Zeit_abzweigen : Int := 100 // Nach dieser Zeit muss BM bei Abzweigen Weichenbereich verlassen haben [100ms] + DraussenZeit_gerade : Int := 0 // Nach dieser neg. Zeit [100ms] Error undef.BM, falls Kontroll-Sensor aktiv + Ink_Schaltdauer : Int := 300 // Inkremente, danach wird Weiche in GST geschaltet + Frei38 : Int := 0 + Weiche_VP20 : Struct + Weichen_Nr : Int := 20 // Nummer der Weiche + Weichen_Dyn_DB : Int := 1423 // Dynamische Daten Weiche + Weichen_Dyn_DW : Int := 4100 // Dynamische Daten Weiche + Weichen_Typ : Int := 178 // Weichen-Typ = 178 (Weiche) + Parameter : Struct + Letzte_Weiche : Bool := FALSE // Letzte Weiche im Verbund + Entlade_Weiche : Bool := FALSE // BT/MT wird entladen -> Leerziel übergeben + Kontroll_B_Gerade : Bool := FALSE // Kontroll-Sensor bei Weiterfahrt (gerade) + Kontroll_B_Ausfahrt : Bool := TRUE // Kontroll-Sensor bei Ausfahrt (abzweig) + Quell_Schaltung : Bool := FALSE // Weiche aufgrund der Quelle schalten (Hauptstrang = Gerade, FIFO = Abzweig) + Disable_PLC_Ziel : Bool := FALSE // Bei Zielvorgabe von PLC nicht anfahren (Disabled) + Para06 : Bool := FALSE + Para07 : Bool := FALSE + Weichen_GST_gerade : Bool := TRUE // Weiche wird ohne Daten auf gerade geschaltet + Weichen_GST_abzweig : Bool := FALSE // Weiche wird ohne Daten auf abzweig geschaltet + IDX_an_Puffer : Bool := TRUE // IDX an Ziel-Puffer senden + Para13 : Bool := FALSE + Para14 : Bool := FALSE + Para15 : Bool := FALSE + Para16 : Bool := FALSE + PC_Komm_aktiv : Bool := TRUE // PC-Kommunikation aktiv + LeerZiel : Int := 0 // Nach Entladen des BT/MT dieses Ziel übergeben + PC_Send_FIFO : Int := 0 // Send-FIFO für PC-Sndungen + Hauptstrang_DL_DB : Int := 1481 // Hauptstrang-Datenlisten-DB + Hauptstrang_DL_DW : Int := 0 // Hauptstrang-Datenlisten-DW + Off_Ink : DInt := 545 // Inkremente zum Weiche schalten + Ink_DB : Int := 1483 // DB-Nr des Inkremental-Geber + Position_minus : Int := 19 // Position vorher (zwecks Datensuche) + AbzweigZiel : Int := 120 // Bei diesem Ziel Weiche auf Abzweig schalten + Carl + GeradeZiel : Int := 0 // Bei diesem Ziel Weiche auf Gerade schalten + Carl + Kontroll_Zeit_gerade : Int := 0 // Nach dieser Zeit muss BM bei Geradefahrt Weichenbereich verlassen haben [100ms] + Kontroll_Zeit_abzweigen : Int := 100 // Nach dieser Zeit muss BM bei Abzweigen Weichenbereich verlassen haben [100ms] + DraussenZeit_gerade : Int := 0 // Nach dieser neg. Zeit [100ms] Error undef.BM, falls Kontroll-Sensor aktiv + Ink_Schaltdauer : Int := 300 // Inkremente, danach wird Weiche in GST geschaltet + Frei38 : Int := 0 + Weiche_VP21 : Struct + Weichen_Nr : Int := 21 // Nummer der Weiche + Weichen_Dyn_DB : Int := 1423 // Dynamische Daten Weiche + Weichen_Dyn_DW : Int := 4300 // Dynamische Daten Weiche + Weichen_Typ : Int := 178 // Weichen-Typ = 178 (Weiche) + Parameter : Struct + Letzte_Weiche : Bool := FALSE // Letzte Weiche im Verbund + Entlade_Weiche : Bool := FALSE // BT/MT wird entladen -> Leerziel übergeben + Kontroll_B_Gerade : Bool := FALSE // Kontroll-Sensor bei Weiterfahrt (gerade) + Kontroll_B_Ausfahrt : Bool := TRUE // Kontroll-Sensor bei Ausfahrt (abzweig) + Quell_Schaltung : Bool := FALSE // Weiche aufgrund der Quelle schalten (Hauptstrang = Gerade, FIFO = Abzweig) + Disable_PLC_Ziel : Bool := FALSE // Bei Zielvorgabe von PLC nicht anfahren (Disabled) + Para06 : Bool := FALSE + Para07 : Bool := FALSE + Weichen_GST_gerade : Bool := TRUE // Weiche wird ohne Daten auf gerade geschaltet + Weichen_GST_abzweig : Bool := FALSE // Weiche wird ohne Daten auf abzweig geschaltet + IDX_an_Puffer : Bool := TRUE // IDX an Ziel-Puffer senden + Para13 : Bool := FALSE + Para14 : Bool := FALSE + Para15 : Bool := FALSE + Para16 : Bool := FALSE + PC_Komm_aktiv : Bool := TRUE // PC-Kommunikation aktiv + LeerZiel : Int := 0 // Nach Entladen des BT/MT dieses Ziel übergeben + PC_Send_FIFO : Int := 0 // Send-FIFO für PC-Sndungen + Hauptstrang_DL_DB : Int := 1481 // Hauptstrang-Datenlisten-DB + Hauptstrang_DL_DW : Int := 0 // Hauptstrang-Datenlisten-DW + Off_Ink : DInt := 567 // Inkremente zum Weiche schalten + Ink_DB : Int := 1483 // DB-Nr des Inkremental-Geber + Position_minus : Int := 20 // Position vorher (zwecks Datensuche) + AbzweigZiel : Int := 121 // Bei diesem Ziel Weiche auf Abzweig schalten + Carl + GeradeZiel : Int := 0 // Bei diesem Ziel Weiche auf Gerade schalten + Carl + Kontroll_Zeit_gerade : Int := 0 // Nach dieser Zeit muss BM bei Geradefahrt Weichenbereich verlassen haben [100ms] + Kontroll_Zeit_abzweigen : Int := 100 // Nach dieser Zeit muss BM bei Abzweigen Weichenbereich verlassen haben [100ms] + DraussenZeit_gerade : Int := 0 // Nach dieser neg. Zeit [100ms] Error undef.BM, falls Kontroll-Sensor aktiv + Ink_Schaltdauer : Int := 300 // Inkremente, danach wird Weiche in GST geschaltet + Frei38 : Int := 0 + Weiche_VP22 : Struct + Weichen_Nr : Int := 22 // Nummer der Weiche + Weichen_Dyn_DB : Int := 1423 // Dynamische Daten Weiche + Weichen_Dyn_DW : Int := 4500 // Dynamische Daten Weiche + Weichen_Typ : Int := 178 // Weichen-Typ = 178 (Weiche) + Parameter : Struct + Letzte_Weiche : Bool := FALSE // Letzte Weiche im Verbund + Entlade_Weiche : Bool := FALSE // BT/MT wird entladen -> Leerziel übergeben + Kontroll_B_Gerade : Bool := FALSE // Kontroll-Sensor bei Weiterfahrt (gerade) + Kontroll_B_Ausfahrt : Bool := TRUE // Kontroll-Sensor bei Ausfahrt (abzweig) + Quell_Schaltung : Bool := FALSE // Weiche aufgrund der Quelle schalten (Hauptstrang = Gerade, FIFO = Abzweig) + Disable_PLC_Ziel : Bool := FALSE // Bei Zielvorgabe von PLC nicht anfahren (Disabled) + Para06 : Bool := FALSE + Para07 : Bool := FALSE + Weichen_GST_gerade : Bool := TRUE // Weiche wird ohne Daten auf gerade geschaltet + Weichen_GST_abzweig : Bool := FALSE // Weiche wird ohne Daten auf abzweig geschaltet + IDX_an_Puffer : Bool := TRUE // IDX an Ziel-Puffer senden + Para13 : Bool := FALSE + Para14 : Bool := FALSE + Para15 : Bool := FALSE + Para16 : Bool := FALSE + PC_Komm_aktiv : Bool := TRUE // PC-Kommunikation aktiv + LeerZiel : Int := 0 // Nach Entladen des BT/MT dieses Ziel übergeben + PC_Send_FIFO : Int := 0 // Send-FIFO für PC-Sndungen + Hauptstrang_DL_DB : Int := 1481 // Hauptstrang-Datenlisten-DB + Hauptstrang_DL_DW : Int := 0 // Hauptstrang-Datenlisten-DW + Off_Ink : DInt := 590 // Inkremente zum Weiche schalten + Ink_DB : Int := 1483 // DB-Nr des Inkremental-Geber + Position_minus : Int := 21 // Position vorher (zwecks Datensuche) + AbzweigZiel : Int := 122 // Bei diesem Ziel Weiche auf Abzweig schalten + Carl + GeradeZiel : Int := 0 // Bei diesem Ziel Weiche auf Gerade schalten + Carl + Kontroll_Zeit_gerade : Int := 0 // Nach dieser Zeit muss BM bei Geradefahrt Weichenbereich verlassen haben [100ms] + Kontroll_Zeit_abzweigen : Int := 100 // Nach dieser Zeit muss BM bei Abzweigen Weichenbereich verlassen haben [100ms] + DraussenZeit_gerade : Int := 0 // Nach dieser neg. Zeit [100ms] Error undef.BM, falls Kontroll-Sensor aktiv + Ink_Schaltdauer : Int := 300 // Inkremente, danach wird Weiche in GST geschaltet + Frei38 : Int := 0 + Weiche_VP23 : Struct + Weichen_Nr : Int := 23 // Nummer der Weiche + Weichen_Dyn_DB : Int := 1423 // Dynamische Daten Weiche + Weichen_Dyn_DW : Int := 4700 // Dynamische Daten Weiche + Weichen_Typ : Int := 178 // Weichen-Typ = 178 (Weiche) + Parameter : Struct + Letzte_Weiche : Bool := FALSE // Letzte Weiche im Verbund + Entlade_Weiche : Bool := FALSE // BT/MT wird entladen -> Leerziel übergeben + Kontroll_B_Gerade : Bool := FALSE // Kontroll-Sensor bei Weiterfahrt (gerade) + Kontroll_B_Ausfahrt : Bool := TRUE // Kontroll-Sensor bei Ausfahrt (abzweig) + Quell_Schaltung : Bool := FALSE // Weiche aufgrund der Quelle schalten (Hauptstrang = Gerade, FIFO = Abzweig) + Disable_PLC_Ziel : Bool := FALSE // Bei Zielvorgabe von PLC nicht anfahren (Disabled) + Para06 : Bool := FALSE + Para07 : Bool := FALSE + Weichen_GST_gerade : Bool := TRUE // Weiche wird ohne Daten auf gerade geschaltet + Weichen_GST_abzweig : Bool := FALSE // Weiche wird ohne Daten auf abzweig geschaltet + IDX_an_Puffer : Bool := TRUE // IDX an Ziel-Puffer senden + Para13 : Bool := FALSE + Para14 : Bool := FALSE + Para15 : Bool := FALSE + Para16 : Bool := FALSE + PC_Komm_aktiv : Bool := TRUE // PC-Kommunikation aktiv + LeerZiel : Int := 0 // Nach Entladen des BT/MT dieses Ziel übergeben + PC_Send_FIFO : Int := 0 // Send-FIFO für PC-Sndungen + Hauptstrang_DL_DB : Int := 1481 // Hauptstrang-Datenlisten-DB + Hauptstrang_DL_DW : Int := 0 // Hauptstrang-Datenlisten-DW + Off_Ink : DInt := 613 // Inkremente zum Weiche schalten + Ink_DB : Int := 1483 // DB-Nr des Inkremental-Geber + Position_minus : Int := 22 // Position vorher (zwecks Datensuche) + AbzweigZiel : Int := 123 // Bei diesem Ziel Weiche auf Abzweig schalten + Carl + GeradeZiel : Int := 0 // Bei diesem Ziel Weiche auf Gerade schalten + Carl + Kontroll_Zeit_gerade : Int := 0 // Nach dieser Zeit muss BM bei Geradefahrt Weichenbereich verlassen haben [100ms] + Kontroll_Zeit_abzweigen : Int := 100 // Nach dieser Zeit muss BM bei Abzweigen Weichenbereich verlassen haben [100ms] + DraussenZeit_gerade : Int := 0 // Nach dieser neg. Zeit [100ms] Error undef.BM, falls Kontroll-Sensor aktiv + Ink_Schaltdauer : Int := 300 // Inkremente, danach wird Weiche in GST geschaltet + Frei38 : Int := 0 + Weiche_VP24 : Struct + Weichen_Nr : Int := 24 // Nummer der Weiche + Weichen_Dyn_DB : Int := 1423 // Dynamische Daten Weiche + Weichen_Dyn_DW : Int := 4900 // Dynamische Daten Weiche + Weichen_Typ : Int := 178 // Weichen-Typ = 178 (Weiche) + Parameter : Struct + Letzte_Weiche : Bool := FALSE // Letzte Weiche im Verbund + Entlade_Weiche : Bool := FALSE // BT/MT wird entladen -> Leerziel übergeben + Kontroll_B_Gerade : Bool := FALSE // Kontroll-Sensor bei Weiterfahrt (gerade) + Kontroll_B_Ausfahrt : Bool := TRUE // Kontroll-Sensor bei Ausfahrt (abzweig) + Quell_Schaltung : Bool := FALSE // Weiche aufgrund der Quelle schalten (Hauptstrang = Gerade, FIFO = Abzweig) + Disable_PLC_Ziel : Bool := FALSE // Bei Zielvorgabe von PLC nicht anfahren (Disabled) + Para06 : Bool := FALSE + Para07 : Bool := FALSE + Weichen_GST_gerade : Bool := TRUE // Weiche wird ohne Daten auf gerade geschaltet + Weichen_GST_abzweig : Bool := FALSE // Weiche wird ohne Daten auf abzweig geschaltet + IDX_an_Puffer : Bool := TRUE // IDX an Ziel-Puffer senden + Para13 : Bool := FALSE + Para14 : Bool := FALSE + Para15 : Bool := FALSE + Para16 : Bool := FALSE + PC_Komm_aktiv : Bool := TRUE // PC-Kommunikation aktiv + LeerZiel : Int := 0 // Nach Entladen des BT/MT dieses Ziel übergeben + PC_Send_FIFO : Int := 0 // Send-FIFO für PC-Sndungen + Hauptstrang_DL_DB : Int := 1481 // Hauptstrang-Datenlisten-DB + Hauptstrang_DL_DW : Int := 0 // Hauptstrang-Datenlisten-DW + Off_Ink : DInt := 638 // Inkremente zum Weiche schalten + Ink_DB : Int := 1483 // DB-Nr des Inkremental-Geber + Position_minus : Int := 23 // Position vorher (zwecks Datensuche) + AbzweigZiel : Int := 124 // Bei diesem Ziel Weiche auf Abzweig schalten + Carl + GeradeZiel : Int := 0 // Bei diesem Ziel Weiche auf Gerade schalten + Carl + Kontroll_Zeit_gerade : Int := 0 // Nach dieser Zeit muss BM bei Geradefahrt Weichenbereich verlassen haben [100ms] + Kontroll_Zeit_abzweigen : Int := 100 // Nach dieser Zeit muss BM bei Abzweigen Weichenbereich verlassen haben [100ms] + DraussenZeit_gerade : Int := 0 // Nach dieser neg. Zeit [100ms] Error undef.BM, falls Kontroll-Sensor aktiv + Ink_Schaltdauer : Int := 300 // Inkremente, danach wird Weiche in GST geschaltet + Frei38 : Int := 0 + Weiche_VP25 : Struct + Weichen_Nr : Int := 25 // Nummer der Weiche + Weichen_Dyn_DB : Int := 1423 // Dynamische Daten Weiche + Weichen_Dyn_DW : Int := 5100 // Dynamische Daten Weiche + Weichen_Typ : Int := 178 // Weichen-Typ = 178 (Weiche) + Parameter : Struct + Letzte_Weiche : Bool := FALSE // Letzte Weiche im Verbund + Entlade_Weiche : Bool := FALSE // BT/MT wird entladen -> Leerziel übergeben + Kontroll_B_Gerade : Bool := TRUE // Kontroll-Sensor bei Weiterfahrt (gerade) + Kontroll_B_Ausfahrt : Bool := TRUE // Kontroll-Sensor bei Ausfahrt (abzweig) + Quell_Schaltung : Bool := FALSE // Weiche aufgrund der Quelle schalten (Hauptstrang = Gerade, FIFO = Abzweig) + Disable_PLC_Ziel : Bool := FALSE // Bei Zielvorgabe von PLC nicht anfahren (Disabled) + Para06 : Bool := FALSE + Para07 : Bool := FALSE + Weichen_GST_gerade : Bool := TRUE // Weiche wird ohne Daten auf gerade geschaltet + Weichen_GST_abzweig : Bool := FALSE // Weiche wird ohne Daten auf abzweig geschaltet + IDX_an_Puffer : Bool := TRUE // IDX an Ziel-Puffer senden + Para13 : Bool := FALSE + Para14 : Bool := FALSE + Para15 : Bool := FALSE + Para16 : Bool := FALSE + PC_Komm_aktiv : Bool := TRUE // PC-Kommunikation aktiv + LeerZiel : Int := 0 // Nach Entladen des BT/MT dieses Ziel übergeben + PC_Send_FIFO : Int := 0 // Send-FIFO für PC-Sndungen + Hauptstrang_DL_DB : Int := 1481 // Hauptstrang-Datenlisten-DB + Hauptstrang_DL_DW : Int := 0 // Hauptstrang-Datenlisten-DW + Off_Ink : DInt := 660 // Inkremente zum Weiche schalten + Ink_DB : Int := 1483 // DB-Nr des Inkremental-Geber + Position_minus : Int := 24 // Position vorher (zwecks Datensuche) + AbzweigZiel : Int := 125 // Bei diesem Ziel Weiche auf Abzweig schalten + Carl + GeradeZiel : Int := 0 // Bei diesem Ziel Weiche auf Gerade schalten + Carl + Kontroll_Zeit_gerade : Int := 600 // Nach dieser Zeit muss BM bei Geradefahrt Weichenbereich verlassen haben [100ms] + Kontroll_Zeit_abzweigen : Int := 100 // Nach dieser Zeit muss BM bei Abzweigen Weichenbereich verlassen haben [100ms] + DraussenZeit_gerade : Int := 150 // Nach dieser neg. Zeit [100ms] Error undef.BM, falls Kontroll-Sensor aktiv + Ink_Schaltdauer : Int := 300 // Inkremente, danach wird Weiche in GST geschaltet + Frei38 : Int := -300 + Übergabe_B3003 : Struct + Uebergabe_Nr : Int := 3003 // Nummer der Übergabestelle + Uebergabe_Dyn_DB : Int := 1423 // Dynamische Daten Übergabe + Uebergabe_Dyn_DW : Int := 5300 // Dynamische Daten Übergabe + Uebergabe_Typ : Int := 180 // Uebergabe-Typ (180 = Übergabe an Travel-FIFO) + Parameter : Struct + Para00 : Bool := FALSE + Para01 : Bool := FALSE + Para02 : Bool := FALSE + Para03 : Bool := FALSE + Para04 : Bool := FALSE + Para05 : Bool := FALSE + Para06 : Bool := FALSE + Para07 : Bool := FALSE + Para10 : Bool := FALSE + Para11 : Bool := FALSE + Para12 : Bool := FALSE + Para13 : Bool := FALSE + Para14 : Bool := FALSE + Para15 : Bool := FALSE + Para16 : Bool := FALSE + Para17 : Bool := FALSE + Frei10 : Int := 0 + PC_Send_FIFO : Int := 0 // Send-FIFO für PC-Sendungen + Hauptstrang_DL_DB : Int := 1481 // Hauptstrang-Datenlisten-DB + Hauptstrang_DL_DW : Int := 0 // Hauptstrang-Datenlisten-DW + Off_Ink : DInt := 675 // Inkremente zum Weiche schalten + Ink_DB : Int := 1483 // DB-Nr des Inkremental-Geber + Travel_FIFO_DB_plus : Int := 1580 // Travel-FIFO-DB +1 + Travel_FIFO_DW_plus : Int := 0 // Travel-FIFO-DW +1 + Position_minus : Int := 25 // Position vorher (zwecks Datensuche) + Frei40 : Array[0..4] of Int // Entprellung Uebergabe-Sensor (in Inkremente) + Endekennung : Word := 16#DAEE // Datensort-Ende-Kennung (DBEE) diff --git a/=A01+UH07-KF00/Programmbausteine/Anlage/1_Vollpuffer/Sorter_Vollpuffer/VP_DLWeichen_Sorter_B.awl b/=A01+UH07-KF00/Programmbausteine/Anlage/1_Vollpuffer/Sorter_Vollpuffer/VP_DLWeichen_Sorter_B.awl new file mode 100644 index 0000000..2015199 --- /dev/null +++ b/=A01+UH07-KF00/Programmbausteine/Anlage/1_Vollpuffer/Sorter_Vollpuffer/VP_DLWeichen_Sorter_B.awl @@ -0,0 +1,982 @@ +=== GlobalDB 1578: VP_DLWeichen_Sorter_B [DB] === +INTERFACE: + Static: + Datenlistenkopf : Struct + KOPF : Word := 16#DA14 // Datenliste-Kennnung (DA) / Datensatzlänge in Word (1 - 128) + LAENGE : Int := 27 // Länge der Datenliste (maximale Anzahl der Datensätze) + STAMMDATEN : Int := 1 // Stammdatenlänge in Word (1 - 9) + INDDB : Int := 0 // Indizierter DB (nur bei Stammdaten = 1 erlaubt !!!) + LAENGEINDDB : Int := 0 // Länge des indizierten DB in Word (nur bei Stammdaten = 1 erlaubt !!!) + OFFSETINDDATEN : Int := 0 // Offset für indizierte Daten (nur bei Stammdaten = 1 erlaubt !!!) + LETZTERZUGRIFF : Int := 1060 // Speicherung des letzten Zugriffs + Belegt14 : Int := 0 // reserviert von Sort-Datenliste + Reserve16 : Int := 0 // Reserve + Reserve18 : Int := 0 // Reserve + Synchron_BG3003 : Struct + Sync_Nr : Int := 3003 // Nummer des Synchron-Punkts + Sync_Dyn_DB : Int := 1523 // Dynamische Daten des Synchron-Punkts + Sync_Dyn_DW : Int := 0 // Dynamische Daten des Synchron-Punkts + Sync_Typ : Int := 177 // Synchron-Punkt-Typ = 177 (StartSync) + Parameter : Struct + Kein_Sync_B : Bool := FALSE + InkSim : Bool := FALSE + ET200 : Bool := FALSE + Sick_ABS_single : Bool := FALSE + Para04 : Bool := FALSE + Para05 : Bool := FALSE + Para06 : Bool := FALSE + Para07 : Bool := FALSE + Para10 : Bool := FALSE + Para11 : Bool := FALSE + Para12 : Bool := FALSE + Para13 : Bool := FALSE + Para14 : Bool := FALSE + Para15 : Bool := FALSE + Para16 : Bool := FALSE + Para17 : Bool := FALSE + Ink_DB : Int := 1583 // DB-Nr des Inkremental-Gebers (Zählerbaugruppe) Neu-Sync-Zähler + Ink_HW_Adress : Int := 0 // Hardware-Adresse des Inkrementalgebers / Zählerbaugruppe + TravelFIFO_DB : Int := 1580 // Einsprung Travel-FIFO-DB + TravelFIFO_DW : Int := 0 // Einsprung Travel-FIFO-DW + Hauptstrang_DL_DB : Int := 1581 // Hauptstrang-Datenlisten-DB + Hauptstrang_DL_DW : Int := 0 // Hauptstrang-Datenlisten-DW + Entprellung_B_Sync : DInt := 5 // Entprellung Snyc-Sensor (in Inkremente) + Abstand_StartSep : DInt := 50 // Abstand Start-Separator <-> Sync-Sensor (in Inkremente) + Reserve : Array[1..5] of Int // Reserve + Weiche_VP26 : Struct + Weichen_Nr : Int := 26 // Nummer der Weiche + Weichen_Dyn_DB : Int := 1523 // Dynamische Daten Weiche + Weichen_Dyn_DW : Int := 300 // Dynamische Daten Weiche + Weichen_Typ : Int := 178 // Weichen-Typ = 178 (Weiche) + Parameter : Struct + Letzte_Weiche : Bool := FALSE // Letzte Weiche im Verbund + Entlade_Weiche : Bool := FALSE // BT/MT wird entladen -> Leerziel übergeben + Kontroll_B_Gerade : Bool := FALSE // Kontroll-Sensor bei Weiterfahrt (gerade) + Kontroll_B_Ausfahrt : Bool := TRUE // Kontroll-Sensor bei Ausfahrt (abzweig) + Quell_Schaltung : Bool := FALSE // Weiche aufgrund der Quelle schalten (Hauptstrang = Gerade, FIFO = Abzweig) + Disable_PLC_Ziel : Bool := FALSE // Bei Zielvorgabe von PLC nicht anfahren (Disabled) + Para06 : Bool := FALSE + Para07 : Bool := FALSE + Weichen_GST_gerade : Bool := TRUE // Weiche wird ohne Daten auf gerade geschaltet + Weichen_GST_abzweig : Bool := FALSE // Weiche wird ohne Daten auf abzweig geschaltet + IDX_an_Puffer : Bool := TRUE // IDX an Ziel-Puffer senden + Para13 : Bool := FALSE + Para14 : Bool := FALSE + Para15 : Bool := FALSE + Para16 : Bool := FALSE + PC_Komm_aktiv : Bool := TRUE // PC-Kommunikation aktiv + LeerZiel : Int := 0 // Nach Entladen des BT/MT dieses Ziel übergeben + PC_Send_FIFO : Int := 0 // Send-FIFO für PC-Sndungen + Hauptstrang_DL_DB : Int := 1581 // Hauptstrang-Datenlisten-DB + Hauptstrang_DL_DW : Int := 0 // Hauptstrang-Datenlisten-DW + Off_Ink : DInt := 23 // Inkremente zum Weiche schalten + Ink_DB : Int := 1583 // DB-Nr des Inkremental-Geber + Position_minus : Int := 3003 // Position vorher (zwecks Datensuche) + AbzweigZiel : Int := 126 // Bei diesem Ziel Weiche auf Abzweig schalten + Carl + GeradeZiel : Int := 0 // Bei diesem Ziel Weiche auf Gerade schalten + Carl + Kontroll_Zeit_gerade : Int := 0 // Nach dieser Zeit muss BM bei Geradefahrt Weichenbereich verlassen haben [100ms] + Kontroll_Zeit_abzweigen : Int := 100 // Nach dieser Zeit muss BM bei Abzweigen Weichenbereich verlassen haben [100ms] + DraussenZeit_gerade : Int := 0 // Nach dieser neg. Zeit [100ms] Error undef.BM, falls Kontroll-Sensor aktiv + Ink_Schaltdauer : Int := 300 // Inkremente, danach wird Weiche in GST geschaltet + Frei38 : Int := 0 + Weiche_VP27 : Struct + Weichen_Nr : Int := 27 // Nummer der Weiche + Weichen_Dyn_DB : Int := 1523 // Dynamische Daten Weiche + Weichen_Dyn_DW : Int := 500 // Dynamische Daten Weiche + Weichen_Typ : Int := 178 // Weichen-Typ = 178 (Weiche) + Parameter : Struct + Letzte_Weiche : Bool := FALSE // Letzte Weiche im Verbund + Entlade_Weiche : Bool := FALSE // BT/MT wird entladen -> Leerziel übergeben + Kontroll_B_Gerade : Bool := FALSE // Kontroll-Sensor bei Weiterfahrt (gerade) + Kontroll_B_Ausfahrt : Bool := TRUE // Kontroll-Sensor bei Ausfahrt (abzweig) + Quell_Schaltung : Bool := FALSE // Weiche aufgrund der Quelle schalten (Hauptstrang = Gerade, FIFO = Abzweig) + Disable_PLC_Ziel : Bool := FALSE // Bei Zielvorgabe von PLC nicht anfahren (Disabled) + Para06 : Bool := FALSE + Para07 : Bool := FALSE + Weichen_GST_gerade : Bool := TRUE // Weiche wird ohne Daten auf gerade geschaltet + Weichen_GST_abzweig : Bool := FALSE // Weiche wird ohne Daten auf abzweig geschaltet + IDX_an_Puffer : Bool := TRUE // IDX an Ziel-Puffer senden + Para13 : Bool := FALSE + Para14 : Bool := FALSE + Para15 : Bool := FALSE + Para16 : Bool := FALSE + PC_Komm_aktiv : Bool := TRUE // PC-Kommunikation aktiv + LeerZiel : Int := 0 // Nach Entladen des BT/MT dieses Ziel übergeben + PC_Send_FIFO : Int := 0 // Send-FIFO für PC-Sndungen + Hauptstrang_DL_DB : Int := 1581 // Hauptstrang-Datenlisten-DB + Hauptstrang_DL_DW : Int := 0 // Hauptstrang-Datenlisten-DW + Off_Ink : DInt := 46 // Inkremente zum Weiche schalten + Ink_DB : Int := 1583 // DB-Nr des Inkremental-Geber + Position_minus : Int := 26 // Position vorher (zwecks Datensuche) + AbzweigZiel : Int := 127 // Bei diesem Ziel Weiche auf Abzweig schalten + Carl + GeradeZiel : Int := 0 // Bei diesem Ziel Weiche auf Gerade schalten + Carl + Kontroll_Zeit_gerade : Int := 0 // Nach dieser Zeit muss BM bei Geradefahrt Weichenbereich verlassen haben [100ms] + Kontroll_Zeit_abzweigen : Int := 100 // Nach dieser Zeit muss BM bei Abzweigen Weichenbereich verlassen haben [100ms] + DraussenZeit_gerade : Int := 0 // Nach dieser neg. Zeit [100ms] Error undef.BM, falls Kontroll-Sensor aktiv + Ink_Schaltdauer : Int := 300 // Inkremente, danach wird Weiche in GST geschaltet + Frei38 : Int := 0 + Weiche_VP28 : Struct + Weichen_Nr : Int := 28 // Nummer der Weiche + Weichen_Dyn_DB : Int := 1523 // Dynamische Daten Weiche + Weichen_Dyn_DW : Int := 700 // Dynamische Daten Weiche + Weichen_Typ : Int := 178 // Weichen-Typ = 178 (Weiche) + Parameter : Struct + Letzte_Weiche : Bool := FALSE // Letzte Weiche im Verbund + Entlade_Weiche : Bool := FALSE // BT/MT wird entladen -> Leerziel übergeben + Kontroll_B_Gerade : Bool := FALSE // Kontroll-Sensor bei Weiterfahrt (gerade) + Kontroll_B_Ausfahrt : Bool := TRUE // Kontroll-Sensor bei Ausfahrt (abzweig) + Quell_Schaltung : Bool := FALSE // Weiche aufgrund der Quelle schalten (Hauptstrang = Gerade, FIFO = Abzweig) + Disable_PLC_Ziel : Bool := FALSE // Bei Zielvorgabe von PLC nicht anfahren (Disabled) + Para06 : Bool := FALSE + Para07 : Bool := FALSE + Weichen_GST_gerade : Bool := TRUE // Weiche wird ohne Daten auf gerade geschaltet + Weichen_GST_abzweig : Bool := FALSE // Weiche wird ohne Daten auf abzweig geschaltet + IDX_an_Puffer : Bool := TRUE // IDX an Ziel-Puffer senden + Para13 : Bool := FALSE + Para14 : Bool := FALSE + Para15 : Bool := FALSE + Para16 : Bool := FALSE + PC_Komm_aktiv : Bool := TRUE // PC-Kommunikation aktiv + LeerZiel : Int := 0 // Nach Entladen des BT/MT dieses Ziel übergeben + PC_Send_FIFO : Int := 0 // Send-FIFO für PC-Sndungen + Hauptstrang_DL_DB : Int := 1581 // Hauptstrang-Datenlisten-DB + Hauptstrang_DL_DW : Int := 0 // Hauptstrang-Datenlisten-DW + Off_Ink : DInt := 70 // Inkremente zum Weiche schalten + Ink_DB : Int := 1583 // DB-Nr des Inkremental-Geber + Position_minus : Int := 27 // Position vorher (zwecks Datensuche) + AbzweigZiel : Int := 128 // Bei diesem Ziel Weiche auf Abzweig schalten + Carl + GeradeZiel : Int := 0 // Bei diesem Ziel Weiche auf Gerade schalten + Carl + Kontroll_Zeit_gerade : Int := 0 // Nach dieser Zeit muss BM bei Geradefahrt Weichenbereich verlassen haben [100ms] + Kontroll_Zeit_abzweigen : Int := 100 // Nach dieser Zeit muss BM bei Abzweigen Weichenbereich verlassen haben [100ms] + DraussenZeit_gerade : Int := 0 // Nach dieser neg. Zeit [100ms] Error undef.BM, falls Kontroll-Sensor aktiv + Ink_Schaltdauer : Int := 300 // Inkremente, danach wird Weiche in GST geschaltet + Frei38 : Int := 0 + Weiche_VP29 : Struct + Weichen_Nr : Int := 29 // Nummer der Weiche + Weichen_Dyn_DB : Int := 1523 // Dynamische Daten Weiche + Weichen_Dyn_DW : Int := 900 // Dynamische Daten Weiche + Weichen_Typ : Int := 178 // Weichen-Typ = 178 (Weiche) + Parameter : Struct + Letzte_Weiche : Bool := FALSE // Letzte Weiche im Verbund + Entlade_Weiche : Bool := FALSE // BT/MT wird entladen -> Leerziel übergeben + Kontroll_B_Gerade : Bool := FALSE // Kontroll-Sensor bei Weiterfahrt (gerade) + Kontroll_B_Ausfahrt : Bool := TRUE // Kontroll-Sensor bei Ausfahrt (abzweig) + Quell_Schaltung : Bool := FALSE // Weiche aufgrund der Quelle schalten (Hauptstrang = Gerade, FIFO = Abzweig) + Disable_PLC_Ziel : Bool := FALSE // Bei Zielvorgabe von PLC nicht anfahren (Disabled) + Para06 : Bool := FALSE + Para07 : Bool := FALSE + Weichen_GST_gerade : Bool := TRUE // Weiche wird ohne Daten auf gerade geschaltet + Weichen_GST_abzweig : Bool := FALSE // Weiche wird ohne Daten auf abzweig geschaltet + IDX_an_Puffer : Bool := TRUE // IDX an Ziel-Puffer senden + Para13 : Bool := FALSE + Para14 : Bool := FALSE + Para15 : Bool := FALSE + Para16 : Bool := FALSE + PC_Komm_aktiv : Bool := TRUE // PC-Kommunikation aktiv + LeerZiel : Int := 0 // Nach Entladen des BT/MT dieses Ziel übergeben + PC_Send_FIFO : Int := 0 // Send-FIFO für PC-Sndungen + Hauptstrang_DL_DB : Int := 1581 // Hauptstrang-Datenlisten-DB + Hauptstrang_DL_DW : Int := 0 // Hauptstrang-Datenlisten-DW + Off_Ink : DInt := 94 // Inkremente zum Weiche schalten + Ink_DB : Int := 1583 // DB-Nr des Inkremental-Geber + Position_minus : Int := 28 // Position vorher (zwecks Datensuche) + AbzweigZiel : Int := 129 // Bei diesem Ziel Weiche auf Abzweig schalten + Carl + GeradeZiel : Int := 0 // Bei diesem Ziel Weiche auf Gerade schalten + Carl + Kontroll_Zeit_gerade : Int := 0 // Nach dieser Zeit muss BM bei Geradefahrt Weichenbereich verlassen haben [100ms] + Kontroll_Zeit_abzweigen : Int := 100 // Nach dieser Zeit muss BM bei Abzweigen Weichenbereich verlassen haben [100ms] + DraussenZeit_gerade : Int := 0 // Nach dieser neg. Zeit [100ms] Error undef.BM, falls Kontroll-Sensor aktiv + Ink_Schaltdauer : Int := 300 // Inkremente, danach wird Weiche in GST geschaltet + Frei38 : Int := 0 + Weiche_VP30 : Struct + Weichen_Nr : Int := 30 // Nummer der Weiche + Weichen_Dyn_DB : Int := 1523 // Dynamische Daten Weiche + Weichen_Dyn_DW : Int := 1100 // Dynamische Daten Weiche + Weichen_Typ : Int := 178 // Weichen-Typ = 178 (Weiche) + Parameter : Struct + Letzte_Weiche : Bool := FALSE // Letzte Weiche im Verbund + Entlade_Weiche : Bool := FALSE // BT/MT wird entladen -> Leerziel übergeben + Kontroll_B_Gerade : Bool := FALSE // Kontroll-Sensor bei Weiterfahrt (gerade) + Kontroll_B_Ausfahrt : Bool := TRUE // Kontroll-Sensor bei Ausfahrt (abzweig) + Quell_Schaltung : Bool := FALSE // Weiche aufgrund der Quelle schalten (Hauptstrang = Gerade, FIFO = Abzweig) + Disable_PLC_Ziel : Bool := FALSE // Bei Zielvorgabe von PLC nicht anfahren (Disabled) + Para06 : Bool := FALSE + Para07 : Bool := FALSE + Weichen_GST_gerade : Bool := TRUE // Weiche wird ohne Daten auf gerade geschaltet + Weichen_GST_abzweig : Bool := FALSE // Weiche wird ohne Daten auf abzweig geschaltet + IDX_an_Puffer : Bool := TRUE // IDX an Ziel-Puffer senden + Para13 : Bool := FALSE + Para14 : Bool := FALSE + Para15 : Bool := FALSE + Para16 : Bool := FALSE + PC_Komm_aktiv : Bool := TRUE // PC-Kommunikation aktiv + LeerZiel : Int := 0 // Nach Entladen des BT/MT dieses Ziel übergeben + PC_Send_FIFO : Int := 0 // Send-FIFO für PC-Sndungen + Hauptstrang_DL_DB : Int := 1581 // Hauptstrang-Datenlisten-DB + Hauptstrang_DL_DW : Int := 0 // Hauptstrang-Datenlisten-DW + Off_Ink : DInt := 117 // Inkremente zum Weiche schalten + Ink_DB : Int := 1583 // DB-Nr des Inkremental-Geber + Position_minus : Int := 29 // Position vorher (zwecks Datensuche) + AbzweigZiel : Int := 130 // Bei diesem Ziel Weiche auf Abzweig schalten + Carl + GeradeZiel : Int := 0 // Bei diesem Ziel Weiche auf Gerade schalten + Carl + Kontroll_Zeit_gerade : Int := 0 // Nach dieser Zeit muss BM bei Geradefahrt Weichenbereich verlassen haben [100ms] + Kontroll_Zeit_abzweigen : Int := 100 // Nach dieser Zeit muss BM bei Abzweigen Weichenbereich verlassen haben [100ms] + DraussenZeit_gerade : Int := 0 // Nach dieser neg. Zeit [100ms] Error undef.BM, falls Kontroll-Sensor aktiv + Ink_Schaltdauer : Int := 300 // Inkremente, danach wird Weiche in GST geschaltet + Frei38 : Int := 0 + Weiche_VP31 : Struct + Weichen_Nr : Int := 31 // Nummer der Weiche + Weichen_Dyn_DB : Int := 1523 // Dynamische Daten Weiche + Weichen_Dyn_DW : Int := 1300 // Dynamische Daten Weiche + Weichen_Typ : Int := 178 // Weichen-Typ = 178 (Weiche) + Parameter : Struct + Letzte_Weiche : Bool := FALSE // Letzte Weiche im Verbund + Entlade_Weiche : Bool := FALSE // BT/MT wird entladen -> Leerziel übergeben + Kontroll_B_Gerade : Bool := TRUE // Kontroll-Sensor bei Weiterfahrt (gerade) + Kontroll_B_Ausfahrt : Bool := TRUE // Kontroll-Sensor bei Ausfahrt (abzweig) + Quell_Schaltung : Bool := FALSE // Weiche aufgrund der Quelle schalten (Hauptstrang = Gerade, FIFO = Abzweig) + Disable_PLC_Ziel : Bool := FALSE // Bei Zielvorgabe von PLC nicht anfahren (Disabled) + Para06 : Bool := FALSE + Para07 : Bool := FALSE + Weichen_GST_gerade : Bool := TRUE // Weiche wird ohne Daten auf gerade geschaltet + Weichen_GST_abzweig : Bool := FALSE // Weiche wird ohne Daten auf abzweig geschaltet + IDX_an_Puffer : Bool := TRUE // IDX an Ziel-Puffer senden + Para13 : Bool := FALSE + Para14 : Bool := FALSE + Para15 : Bool := FALSE + Para16 : Bool := FALSE + PC_Komm_aktiv : Bool := TRUE // PC-Kommunikation aktiv + LeerZiel : Int := 0 // Nach Entladen des BT/MT dieses Ziel übergeben + PC_Send_FIFO : Int := 0 // Send-FIFO für PC-Sndungen + Hauptstrang_DL_DB : Int := 1581 // Hauptstrang-Datenlisten-DB + Hauptstrang_DL_DW : Int := 0 // Hauptstrang-Datenlisten-DW + Off_Ink : DInt := 143 // Inkremente zum Weiche schalten + Ink_DB : Int := 1583 // DB-Nr des Inkremental-Geber + Position_minus : Int := 30 // Position vorher (zwecks Datensuche) + AbzweigZiel : Int := 131 // Bei diesem Ziel Weiche auf Abzweig schalten + Carl + GeradeZiel : Int := 0 // Bei diesem Ziel Weiche auf Gerade schalten + Carl + Kontroll_Zeit_gerade : Int := 150 // Nach dieser Zeit muss BM bei Geradefahrt Weichenbereich verlassen haben [100ms] + Kontroll_Zeit_abzweigen : Int := 100 // Nach dieser Zeit muss BM bei Abzweigen Weichenbereich verlassen haben [100ms] + DraussenZeit_gerade : Int := -300 // Nach dieser neg. Zeit [100ms] Error undef.BM, falls Kontroll-Sensor aktiv + Ink_Schaltdauer : Int := 300 // Inkremente, danach wird Weiche in GST geschaltet + Frei38 : Int := 0 + Weiche_VP32 : Struct + Weichen_Nr : Int := 32 // Nummer der Weiche + Weichen_Dyn_DB : Int := 1523 // Dynamische Daten Weiche + Weichen_Dyn_DW : Int := 1500 // Dynamische Daten Weiche + Weichen_Typ : Int := 178 // Weichen-Typ = 178 (Weiche) + Parameter : Struct + Letzte_Weiche : Bool := FALSE // Letzte Weiche im Verbund + Entlade_Weiche : Bool := FALSE // BT/MT wird entladen -> Leerziel übergeben + Kontroll_B_Gerade : Bool := FALSE // Kontroll-Sensor bei Weiterfahrt (gerade) + Kontroll_B_Ausfahrt : Bool := TRUE // Kontroll-Sensor bei Ausfahrt (abzweig) + Quell_Schaltung : Bool := FALSE // Weiche aufgrund der Quelle schalten (Hauptstrang = Gerade, FIFO = Abzweig) + Disable_PLC_Ziel : Bool := FALSE // Bei Zielvorgabe von PLC nicht anfahren (Disabled) + Para06 : Bool := FALSE + Para07 : Bool := FALSE + Weichen_GST_gerade : Bool := TRUE // Weiche wird ohne Daten auf gerade geschaltet + Weichen_GST_abzweig : Bool := FALSE // Weiche wird ohne Daten auf abzweig geschaltet + IDX_an_Puffer : Bool := TRUE // IDX an Ziel-Puffer senden + Para13 : Bool := FALSE + Para14 : Bool := FALSE + Para15 : Bool := FALSE + Para16 : Bool := FALSE + PC_Komm_aktiv : Bool := TRUE // PC-Kommunikation aktiv + LeerZiel : Int := 0 // Nach Entladen des BT/MT dieses Ziel übergeben + PC_Send_FIFO : Int := 0 // Send-FIFO für PC-Sndungen + Hauptstrang_DL_DB : Int := 1581 // Hauptstrang-Datenlisten-DB + Hauptstrang_DL_DW : Int := 0 // Hauptstrang-Datenlisten-DW + Off_Ink : DInt := 178 // Inkremente zum Weiche schalten + Ink_DB : Int := 1583 // DB-Nr des Inkremental-Geber + Position_minus : Int := 31 // Position vorher (zwecks Datensuche) + AbzweigZiel : Int := 132 // Bei diesem Ziel Weiche auf Abzweig schalten + Carl + GeradeZiel : Int := 0 // Bei diesem Ziel Weiche auf Gerade schalten + Carl + Kontroll_Zeit_gerade : Int := 0 // Nach dieser Zeit muss BM bei Geradefahrt Weichenbereich verlassen haben [100ms] + Kontroll_Zeit_abzweigen : Int := 100 // Nach dieser Zeit muss BM bei Abzweigen Weichenbereich verlassen haben [100ms] + DraussenZeit_gerade : Int := 0 // Nach dieser neg. Zeit [100ms] Error undef.BM, falls Kontroll-Sensor aktiv + Ink_Schaltdauer : Int := 300 // Inkremente, danach wird Weiche in GST geschaltet + Frei38 : Int := 0 + Weiche_VP33 : Struct + Weichen_Nr : Int := 33 // Nummer der Weiche + Weichen_Dyn_DB : Int := 1523 // Dynamische Daten Weiche + Weichen_Dyn_DW : Int := 1700 // Dynamische Daten Weiche + Weichen_Typ : Int := 178 // Weichen-Typ = 178 (Weiche) + Parameter : Struct + Letzte_Weiche : Bool := FALSE // Letzte Weiche im Verbund + Entlade_Weiche : Bool := FALSE // BT/MT wird entladen -> Leerziel übergeben + Kontroll_B_Gerade : Bool := FALSE // Kontroll-Sensor bei Weiterfahrt (gerade) + Kontroll_B_Ausfahrt : Bool := TRUE // Kontroll-Sensor bei Ausfahrt (abzweig) + Quell_Schaltung : Bool := FALSE // Weiche aufgrund der Quelle schalten (Hauptstrang = Gerade, FIFO = Abzweig) + Disable_PLC_Ziel : Bool := FALSE // Bei Zielvorgabe von PLC nicht anfahren (Disabled) + Para06 : Bool := FALSE + Para07 : Bool := FALSE + Weichen_GST_gerade : Bool := TRUE // Weiche wird ohne Daten auf gerade geschaltet + Weichen_GST_abzweig : Bool := FALSE // Weiche wird ohne Daten auf abzweig geschaltet + IDX_an_Puffer : Bool := TRUE // IDX an Ziel-Puffer senden + Para13 : Bool := FALSE + Para14 : Bool := FALSE + Para15 : Bool := FALSE + Para16 : Bool := FALSE + PC_Komm_aktiv : Bool := TRUE // PC-Kommunikation aktiv + LeerZiel : Int := 0 // Nach Entladen des BT/MT dieses Ziel übergeben + PC_Send_FIFO : Int := 0 // Send-FIFO für PC-Sndungen + Hauptstrang_DL_DB : Int := 1581 // Hauptstrang-Datenlisten-DB + Hauptstrang_DL_DW : Int := 0 // Hauptstrang-Datenlisten-DW + Off_Ink : DInt := 201 // Inkremente zum Weiche schalten + Ink_DB : Int := 1583 // DB-Nr des Inkremental-Geber + Position_minus : Int := 32 // Position vorher (zwecks Datensuche) + AbzweigZiel : Int := 133 // Bei diesem Ziel Weiche auf Abzweig schalten + Carl + GeradeZiel : Int := 0 // Bei diesem Ziel Weiche auf Gerade schalten + Carl + Kontroll_Zeit_gerade : Int := 0 // Nach dieser Zeit muss BM bei Geradefahrt Weichenbereich verlassen haben [100ms] + Kontroll_Zeit_abzweigen : Int := 100 // Nach dieser Zeit muss BM bei Abzweigen Weichenbereich verlassen haben [100ms] + DraussenZeit_gerade : Int := 0 // Nach dieser neg. Zeit [100ms] Error undef.BM, falls Kontroll-Sensor aktiv + Ink_Schaltdauer : Int := 300 // Inkremente, danach wird Weiche in GST geschaltet + Frei38 : Int := 0 + Weiche_VP34 : Struct + Weichen_Nr : Int := 34 // Nummer der Weiche + Weichen_Dyn_DB : Int := 1523 // Dynamische Daten Weiche + Weichen_Dyn_DW : Int := 1900 // Dynamische Daten Weiche + Weichen_Typ : Int := 178 // Weichen-Typ = 178 (Weiche) + Parameter : Struct + Letzte_Weiche : Bool := FALSE // Letzte Weiche im Verbund + Entlade_Weiche : Bool := FALSE // BT/MT wird entladen -> Leerziel übergeben + Kontroll_B_Gerade : Bool := FALSE // Kontroll-Sensor bei Weiterfahrt (gerade) + Kontroll_B_Ausfahrt : Bool := TRUE // Kontroll-Sensor bei Ausfahrt (abzweig) + Quell_Schaltung : Bool := FALSE // Weiche aufgrund der Quelle schalten (Hauptstrang = Gerade, FIFO = Abzweig) + Disable_PLC_Ziel : Bool := FALSE // Bei Zielvorgabe von PLC nicht anfahren (Disabled) + Para06 : Bool := FALSE + Para07 : Bool := FALSE + Weichen_GST_gerade : Bool := TRUE // Weiche wird ohne Daten auf gerade geschaltet + Weichen_GST_abzweig : Bool := FALSE // Weiche wird ohne Daten auf abzweig geschaltet + IDX_an_Puffer : Bool := TRUE // IDX an Ziel-Puffer senden + Para13 : Bool := FALSE + Para14 : Bool := FALSE + Para15 : Bool := FALSE + Para16 : Bool := FALSE + PC_Komm_aktiv : Bool := TRUE // PC-Kommunikation aktiv + LeerZiel : Int := 0 // Nach Entladen des BT/MT dieses Ziel übergeben + PC_Send_FIFO : Int := 0 // Send-FIFO für PC-Sndungen + Hauptstrang_DL_DB : Int := 1581 // Hauptstrang-Datenlisten-DB + Hauptstrang_DL_DW : Int := 0 // Hauptstrang-Datenlisten-DW + Off_Ink : DInt := 223 // Inkremente zum Weiche schalten + Ink_DB : Int := 1583 // DB-Nr des Inkremental-Geber + Position_minus : Int := 33 // Position vorher (zwecks Datensuche) + AbzweigZiel : Int := 134 // Bei diesem Ziel Weiche auf Abzweig schalten + Carl + GeradeZiel : Int := 0 // Bei diesem Ziel Weiche auf Gerade schalten + Carl + Kontroll_Zeit_gerade : Int := 0 // Nach dieser Zeit muss BM bei Geradefahrt Weichenbereich verlassen haben [100ms] + Kontroll_Zeit_abzweigen : Int := 100 // Nach dieser Zeit muss BM bei Abzweigen Weichenbereich verlassen haben [100ms] + DraussenZeit_gerade : Int := 0 // Nach dieser neg. Zeit [100ms] Error undef.BM, falls Kontroll-Sensor aktiv + Ink_Schaltdauer : Int := 300 // Inkremente, danach wird Weiche in GST geschaltet + Frei38 : Int := 0 + Weiche_VP35 : Struct + Weichen_Nr : Int := 35 // Nummer der Weiche + Weichen_Dyn_DB : Int := 1523 // Dynamische Daten Weiche + Weichen_Dyn_DW : Int := 2100 // Dynamische Daten Weiche + Weichen_Typ : Int := 178 // Weichen-Typ = 178 (Weiche) + Parameter : Struct + Letzte_Weiche : Bool := FALSE // Letzte Weiche im Verbund + Entlade_Weiche : Bool := FALSE // BT/MT wird entladen -> Leerziel übergeben + Kontroll_B_Gerade : Bool := FALSE // Kontroll-Sensor bei Weiterfahrt (gerade) + Kontroll_B_Ausfahrt : Bool := TRUE // Kontroll-Sensor bei Ausfahrt (abzweig) + Quell_Schaltung : Bool := FALSE // Weiche aufgrund der Quelle schalten (Hauptstrang = Gerade, FIFO = Abzweig) + Disable_PLC_Ziel : Bool := FALSE // Bei Zielvorgabe von PLC nicht anfahren (Disabled) + Para06 : Bool := FALSE + Para07 : Bool := FALSE + Weichen_GST_gerade : Bool := TRUE // Weiche wird ohne Daten auf gerade geschaltet + Weichen_GST_abzweig : Bool := FALSE // Weiche wird ohne Daten auf abzweig geschaltet + IDX_an_Puffer : Bool := TRUE // IDX an Ziel-Puffer senden + Para13 : Bool := FALSE + Para14 : Bool := FALSE + Para15 : Bool := FALSE + Para16 : Bool := FALSE + PC_Komm_aktiv : Bool := TRUE // PC-Kommunikation aktiv + LeerZiel : Int := 0 // Nach Entladen des BT/MT dieses Ziel übergeben + PC_Send_FIFO : Int := 0 // Send-FIFO für PC-Sndungen + Hauptstrang_DL_DB : Int := 1581 // Hauptstrang-Datenlisten-DB + Hauptstrang_DL_DW : Int := 0 // Hauptstrang-Datenlisten-DW + Off_Ink : DInt := 248 // Inkremente zum Weiche schalten + Ink_DB : Int := 1583 // DB-Nr des Inkremental-Geber + Position_minus : Int := 34 // Position vorher (zwecks Datensuche) + AbzweigZiel : Int := 135 // Bei diesem Ziel Weiche auf Abzweig schalten + Carl + GeradeZiel : Int := 0 // Bei diesem Ziel Weiche auf Gerade schalten + Carl + Kontroll_Zeit_gerade : Int := 0 // Nach dieser Zeit muss BM bei Geradefahrt Weichenbereich verlassen haben [100ms] + Kontroll_Zeit_abzweigen : Int := 100 // Nach dieser Zeit muss BM bei Abzweigen Weichenbereich verlassen haben [100ms] + DraussenZeit_gerade : Int := 0 // Nach dieser neg. Zeit [100ms] Error undef.BM, falls Kontroll-Sensor aktiv + Ink_Schaltdauer : Int := 300 // Inkremente, danach wird Weiche in GST geschaltet + Frei38 : Int := 0 + Weiche_VP36 : Struct + Weichen_Nr : Int := 36 // Nummer der Weiche + Weichen_Dyn_DB : Int := 1523 // Dynamische Daten Weiche + Weichen_Dyn_DW : Int := 2300 // Dynamische Daten Weiche + Weichen_Typ : Int := 178 // Weichen-Typ = 178 (Weiche) + Parameter : Struct + Letzte_Weiche : Bool := FALSE // Letzte Weiche im Verbund + Entlade_Weiche : Bool := FALSE // BT/MT wird entladen -> Leerziel übergeben + Kontroll_B_Gerade : Bool := FALSE // Kontroll-Sensor bei Weiterfahrt (gerade) + Kontroll_B_Ausfahrt : Bool := TRUE // Kontroll-Sensor bei Ausfahrt (abzweig) + Quell_Schaltung : Bool := FALSE // Weiche aufgrund der Quelle schalten (Hauptstrang = Gerade, FIFO = Abzweig) + Disable_PLC_Ziel : Bool := FALSE // Bei Zielvorgabe von PLC nicht anfahren (Disabled) + Para06 : Bool := FALSE + Para07 : Bool := FALSE + Weichen_GST_gerade : Bool := TRUE // Weiche wird ohne Daten auf gerade geschaltet + Weichen_GST_abzweig : Bool := FALSE // Weiche wird ohne Daten auf abzweig geschaltet + IDX_an_Puffer : Bool := TRUE // IDX an Ziel-Puffer senden + Para13 : Bool := FALSE + Para14 : Bool := FALSE + Para15 : Bool := FALSE + Para16 : Bool := FALSE + PC_Komm_aktiv : Bool := TRUE // PC-Kommunikation aktiv + LeerZiel : Int := 0 // Nach Entladen des BT/MT dieses Ziel übergeben + PC_Send_FIFO : Int := 0 // Send-FIFO für PC-Sndungen + Hauptstrang_DL_DB : Int := 1581 // Hauptstrang-Datenlisten-DB + Hauptstrang_DL_DW : Int := 0 // Hauptstrang-Datenlisten-DW + Off_Ink : DInt := 270 // Inkremente zum Weiche schalten + Ink_DB : Int := 1583 // DB-Nr des Inkremental-Geber + Position_minus : Int := 35 // Position vorher (zwecks Datensuche) + AbzweigZiel : Int := 136 // Bei diesem Ziel Weiche auf Abzweig schalten + Carl + GeradeZiel : Int := 0 // Bei diesem Ziel Weiche auf Gerade schalten + Carl + Kontroll_Zeit_gerade : Int := 0 // Nach dieser Zeit muss BM bei Geradefahrt Weichenbereich verlassen haben [100ms] + Kontroll_Zeit_abzweigen : Int := 100 // Nach dieser Zeit muss BM bei Abzweigen Weichenbereich verlassen haben [100ms] + DraussenZeit_gerade : Int := 0 // Nach dieser neg. Zeit [100ms] Error undef.BM, falls Kontroll-Sensor aktiv + Ink_Schaltdauer : Int := 300 // Inkremente, danach wird Weiche in GST geschaltet + Frei38 : Int := 0 + Weiche_VP37 : Struct + Weichen_Nr : Int := 37 // Nummer der Weiche + Weichen_Dyn_DB : Int := 1523 // Dynamische Daten Weiche + Weichen_Dyn_DW : Int := 2500 // Dynamische Daten Weiche + Weichen_Typ : Int := 178 // Weichen-Typ = 178 (Weiche) + Parameter : Struct + Letzte_Weiche : Bool := FALSE // Letzte Weiche im Verbund + Entlade_Weiche : Bool := FALSE // BT/MT wird entladen -> Leerziel übergeben + Kontroll_B_Gerade : Bool := FALSE // Kontroll-Sensor bei Weiterfahrt (gerade) + Kontroll_B_Ausfahrt : Bool := TRUE // Kontroll-Sensor bei Ausfahrt (abzweig) + Quell_Schaltung : Bool := FALSE // Weiche aufgrund der Quelle schalten (Hauptstrang = Gerade, FIFO = Abzweig) + Disable_PLC_Ziel : Bool := FALSE // Bei Zielvorgabe von PLC nicht anfahren (Disabled) + Para06 : Bool := FALSE + Para07 : Bool := FALSE + Weichen_GST_gerade : Bool := TRUE // Weiche wird ohne Daten auf gerade geschaltet + Weichen_GST_abzweig : Bool := FALSE // Weiche wird ohne Daten auf abzweig geschaltet + IDX_an_Puffer : Bool := TRUE // IDX an Ziel-Puffer senden + Para13 : Bool := FALSE + Para14 : Bool := FALSE + Para15 : Bool := FALSE + Para16 : Bool := FALSE + PC_Komm_aktiv : Bool := TRUE // PC-Kommunikation aktiv + LeerZiel : Int := 0 // Nach Entladen des BT/MT dieses Ziel übergeben + PC_Send_FIFO : Int := 0 // Send-FIFO für PC-Sndungen + Hauptstrang_DL_DB : Int := 1581 // Hauptstrang-Datenlisten-DB + Hauptstrang_DL_DW : Int := 0 // Hauptstrang-Datenlisten-DW + Off_Ink : DInt := 293 // Inkremente zum Weiche schalten + Ink_DB : Int := 1583 // DB-Nr des Inkremental-Geber + Position_minus : Int := 36 // Position vorher (zwecks Datensuche) + AbzweigZiel : Int := 137 // Bei diesem Ziel Weiche auf Abzweig schalten + Carl + GeradeZiel : Int := 0 // Bei diesem Ziel Weiche auf Gerade schalten + Carl + Kontroll_Zeit_gerade : Int := 0 // Nach dieser Zeit muss BM bei Geradefahrt Weichenbereich verlassen haben [100ms] + Kontroll_Zeit_abzweigen : Int := 100 // Nach dieser Zeit muss BM bei Abzweigen Weichenbereich verlassen haben [100ms] + DraussenZeit_gerade : Int := 0 // Nach dieser neg. Zeit [100ms] Error undef.BM, falls Kontroll-Sensor aktiv + Ink_Schaltdauer : Int := 300 // Inkremente, danach wird Weiche in GST geschaltet + Frei38 : Int := 0 + Weiche_VP38 : Struct + Weichen_Nr : Int := 38 // Nummer der Weiche + Weichen_Dyn_DB : Int := 1523 // Dynamische Daten Weiche + Weichen_Dyn_DW : Int := 2700 // Dynamische Daten Weiche + Weichen_Typ : Int := 178 // Weichen-Typ = 178 (Weiche) + Parameter : Struct + Letzte_Weiche : Bool := FALSE // Letzte Weiche im Verbund + Entlade_Weiche : Bool := FALSE // BT/MT wird entladen -> Leerziel übergeben + Kontroll_B_Gerade : Bool := TRUE // Kontroll-Sensor bei Weiterfahrt (gerade) + Kontroll_B_Ausfahrt : Bool := TRUE // Kontroll-Sensor bei Ausfahrt (abzweig) + Quell_Schaltung : Bool := FALSE // Weiche aufgrund der Quelle schalten (Hauptstrang = Gerade, FIFO = Abzweig) + Disable_PLC_Ziel : Bool := FALSE // Bei Zielvorgabe von PLC nicht anfahren (Disabled) + Para06 : Bool := FALSE + Para07 : Bool := FALSE + Weichen_GST_gerade : Bool := TRUE // Weiche wird ohne Daten auf gerade geschaltet + Weichen_GST_abzweig : Bool := FALSE // Weiche wird ohne Daten auf abzweig geschaltet + IDX_an_Puffer : Bool := TRUE // IDX an Ziel-Puffer senden + Para13 : Bool := FALSE + Para14 : Bool := FALSE + Para15 : Bool := FALSE + Para16 : Bool := FALSE + PC_Komm_aktiv : Bool := TRUE // PC-Kommunikation aktiv + LeerZiel : Int := 0 // Nach Entladen des BT/MT dieses Ziel übergeben + PC_Send_FIFO : Int := 0 // Send-FIFO für PC-Sndungen + Hauptstrang_DL_DB : Int := 1581 // Hauptstrang-Datenlisten-DB + Hauptstrang_DL_DW : Int := 0 // Hauptstrang-Datenlisten-DW + Off_Ink : DInt := 316 // Inkremente zum Weiche schalten + Ink_DB : Int := 1583 // DB-Nr des Inkremental-Geber + Position_minus : Int := 37 // Position vorher (zwecks Datensuche) + AbzweigZiel : Int := 138 // Bei diesem Ziel Weiche auf Abzweig schalten + Carl + GeradeZiel : Int := 0 // Bei diesem Ziel Weiche auf Gerade schalten + Carl + Kontroll_Zeit_gerade : Int := 150 // Nach dieser Zeit muss BM bei Geradefahrt Weichenbereich verlassen haben [100ms] + Kontroll_Zeit_abzweigen : Int := 100 // Nach dieser Zeit muss BM bei Abzweigen Weichenbereich verlassen haben [100ms] + DraussenZeit_gerade : Int := -300 // Nach dieser neg. Zeit [100ms] Error undef.BM, falls Kontroll-Sensor aktiv + Ink_Schaltdauer : Int := 300 // Inkremente, danach wird Weiche in GST geschaltet + Frei38 : Int := 0 + Weiche_VP39 : Struct + Weichen_Nr : Int := 39 // Nummer der Weiche + Weichen_Dyn_DB : Int := 1523 // Dynamische Daten Weiche + Weichen_Dyn_DW : Int := 2900 // Dynamische Daten Weiche + Weichen_Typ : Int := 178 // Weichen-Typ = 178 (Weiche) + Parameter : Struct + Letzte_Weiche : Bool := FALSE // Letzte Weiche im Verbund + Entlade_Weiche : Bool := FALSE // BT/MT wird entladen -> Leerziel übergeben + Kontroll_B_Gerade : Bool := FALSE // Kontroll-Sensor bei Weiterfahrt (gerade) + Kontroll_B_Ausfahrt : Bool := TRUE // Kontroll-Sensor bei Ausfahrt (abzweig) + Quell_Schaltung : Bool := FALSE // Weiche aufgrund der Quelle schalten (Hauptstrang = Gerade, FIFO = Abzweig) + Disable_PLC_Ziel : Bool := FALSE // Bei Zielvorgabe von PLC nicht anfahren (Disabled) + Para06 : Bool := FALSE + Para07 : Bool := FALSE + Weichen_GST_gerade : Bool := TRUE // Weiche wird ohne Daten auf gerade geschaltet + Weichen_GST_abzweig : Bool := FALSE // Weiche wird ohne Daten auf abzweig geschaltet + IDX_an_Puffer : Bool := TRUE // IDX an Ziel-Puffer senden + Para13 : Bool := FALSE + Para14 : Bool := FALSE + Para15 : Bool := FALSE + Para16 : Bool := FALSE + PC_Komm_aktiv : Bool := TRUE // PC-Kommunikation aktiv + LeerZiel : Int := 0 // Nach Entladen des BT/MT dieses Ziel übergeben + PC_Send_FIFO : Int := 0 // Send-FIFO für PC-Sndungen + Hauptstrang_DL_DB : Int := 1581 // Hauptstrang-Datenlisten-DB + Hauptstrang_DL_DW : Int := 0 // Hauptstrang-Datenlisten-DW + Off_Ink : DInt := 373 // Inkremente zum Weiche schalten + Ink_DB : Int := 1583 // DB-Nr des Inkremental-Geber + Position_minus : Int := 38 // Position vorher (zwecks Datensuche) + AbzweigZiel : Int := 139 // Bei diesem Ziel Weiche auf Abzweig schalten + Carl + GeradeZiel : Int := 0 // Bei diesem Ziel Weiche auf Gerade schalten + Carl + Kontroll_Zeit_gerade : Int := 0 // Nach dieser Zeit muss BM bei Geradefahrt Weichenbereich verlassen haben [100ms] + Kontroll_Zeit_abzweigen : Int := 100 // Nach dieser Zeit muss BM bei Abzweigen Weichenbereich verlassen haben [100ms] + DraussenZeit_gerade : Int := 0 // Nach dieser neg. Zeit [100ms] Error undef.BM, falls Kontroll-Sensor aktiv + Ink_Schaltdauer : Int := 300 // Inkremente, danach wird Weiche in GST geschaltet + Frei38 : Int := 0 + Weiche_VP40 : Struct + Weichen_Nr : Int := 40 // Nummer der Weiche + Weichen_Dyn_DB : Int := 1523 // Dynamische Daten Weiche + Weichen_Dyn_DW : Int := 3100 // Dynamische Daten Weiche + Weichen_Typ : Int := 178 // Weichen-Typ = 178 (Weiche) + Parameter : Struct + Letzte_Weiche : Bool := FALSE // Letzte Weiche im Verbund + Entlade_Weiche : Bool := FALSE // BT/MT wird entladen -> Leerziel übergeben + Kontroll_B_Gerade : Bool := FALSE // Kontroll-Sensor bei Weiterfahrt (gerade) + Kontroll_B_Ausfahrt : Bool := TRUE // Kontroll-Sensor bei Ausfahrt (abzweig) + Quell_Schaltung : Bool := FALSE // Weiche aufgrund der Quelle schalten (Hauptstrang = Gerade, FIFO = Abzweig) + Disable_PLC_Ziel : Bool := FALSE // Bei Zielvorgabe von PLC nicht anfahren (Disabled) + Para06 : Bool := FALSE + Para07 : Bool := FALSE + Weichen_GST_gerade : Bool := TRUE // Weiche wird ohne Daten auf gerade geschaltet + Weichen_GST_abzweig : Bool := FALSE // Weiche wird ohne Daten auf abzweig geschaltet + IDX_an_Puffer : Bool := TRUE // IDX an Ziel-Puffer senden + Para13 : Bool := FALSE + Para14 : Bool := FALSE + Para15 : Bool := FALSE + Para16 : Bool := FALSE + PC_Komm_aktiv : Bool := TRUE // PC-Kommunikation aktiv + LeerZiel : Int := 0 // Nach Entladen des BT/MT dieses Ziel übergeben + PC_Send_FIFO : Int := 0 // Send-FIFO für PC-Sndungen + Hauptstrang_DL_DB : Int := 1581 // Hauptstrang-Datenlisten-DB + Hauptstrang_DL_DW : Int := 0 // Hauptstrang-Datenlisten-DW + Off_Ink : DInt := 395 // Inkremente zum Weiche schalten + Ink_DB : Int := 1583 // DB-Nr des Inkremental-Geber + Position_minus : Int := 39 // Position vorher (zwecks Datensuche) + AbzweigZiel : Int := 140 // Bei diesem Ziel Weiche auf Abzweig schalten + Carl + GeradeZiel : Int := 0 // Bei diesem Ziel Weiche auf Gerade schalten + Carl + Kontroll_Zeit_gerade : Int := 0 // Nach dieser Zeit muss BM bei Geradefahrt Weichenbereich verlassen haben [100ms] + Kontroll_Zeit_abzweigen : Int := 100 // Nach dieser Zeit muss BM bei Abzweigen Weichenbereich verlassen haben [100ms] + DraussenZeit_gerade : Int := 0 // Nach dieser neg. Zeit [100ms] Error undef.BM, falls Kontroll-Sensor aktiv + Ink_Schaltdauer : Int := 300 // Inkremente, danach wird Weiche in GST geschaltet + Frei38 : Int := 0 + Weiche_VP41 : Struct + Weichen_Nr : Int := 41 // Nummer der Weiche + Weichen_Dyn_DB : Int := 1523 // Dynamische Daten Weiche + Weichen_Dyn_DW : Int := 3300 // Dynamische Daten Weiche + Weichen_Typ : Int := 178 // Weichen-Typ = 178 (Weiche) + Parameter : Struct + Letzte_Weiche : Bool := FALSE // Letzte Weiche im Verbund + Entlade_Weiche : Bool := FALSE // BT/MT wird entladen -> Leerziel übergeben + Kontroll_B_Gerade : Bool := FALSE // Kontroll-Sensor bei Weiterfahrt (gerade) + Kontroll_B_Ausfahrt : Bool := TRUE // Kontroll-Sensor bei Ausfahrt (abzweig) + Quell_Schaltung : Bool := FALSE // Weiche aufgrund der Quelle schalten (Hauptstrang = Gerade, FIFO = Abzweig) + Disable_PLC_Ziel : Bool := FALSE // Bei Zielvorgabe von PLC nicht anfahren (Disabled) + Para06 : Bool := FALSE + Para07 : Bool := FALSE + Weichen_GST_gerade : Bool := TRUE // Weiche wird ohne Daten auf gerade geschaltet + Weichen_GST_abzweig : Bool := FALSE // Weiche wird ohne Daten auf abzweig geschaltet + IDX_an_Puffer : Bool := TRUE // IDX an Ziel-Puffer senden + Para13 : Bool := FALSE + Para14 : Bool := FALSE + Para15 : Bool := FALSE + Para16 : Bool := FALSE + PC_Komm_aktiv : Bool := TRUE // PC-Kommunikation aktiv + LeerZiel : Int := 0 // Nach Entladen des BT/MT dieses Ziel übergeben + PC_Send_FIFO : Int := 0 // Send-FIFO für PC-Sndungen + Hauptstrang_DL_DB : Int := 1581 // Hauptstrang-Datenlisten-DB + Hauptstrang_DL_DW : Int := 0 // Hauptstrang-Datenlisten-DW + Off_Ink : DInt := 420 // Inkremente zum Weiche schalten + Ink_DB : Int := 1583 // DB-Nr des Inkremental-Geber + Position_minus : Int := 40 // Position vorher (zwecks Datensuche) + AbzweigZiel : Int := 141 // Bei diesem Ziel Weiche auf Abzweig schalten + Carl + GeradeZiel : Int := 0 // Bei diesem Ziel Weiche auf Gerade schalten + Carl + Kontroll_Zeit_gerade : Int := 0 // Nach dieser Zeit muss BM bei Geradefahrt Weichenbereich verlassen haben [100ms] + Kontroll_Zeit_abzweigen : Int := 100 // Nach dieser Zeit muss BM bei Abzweigen Weichenbereich verlassen haben [100ms] + DraussenZeit_gerade : Int := 0 // Nach dieser neg. Zeit [100ms] Error undef.BM, falls Kontroll-Sensor aktiv + Ink_Schaltdauer : Int := 300 // Inkremente, danach wird Weiche in GST geschaltet + Frei38 : Int := 0 + Weiche_VP42 : Struct + Weichen_Nr : Int := 42 // Nummer der Weiche + Weichen_Dyn_DB : Int := 1523 // Dynamische Daten Weiche + Weichen_Dyn_DW : Int := 3500 // Dynamische Daten Weiche + Weichen_Typ : Int := 178 // Weichen-Typ = 178 (Weiche) + Parameter : Struct + Letzte_Weiche : Bool := FALSE // Letzte Weiche im Verbund + Entlade_Weiche : Bool := FALSE // BT/MT wird entladen -> Leerziel übergeben + Kontroll_B_Gerade : Bool := FALSE // Kontroll-Sensor bei Weiterfahrt (gerade) + Kontroll_B_Ausfahrt : Bool := TRUE // Kontroll-Sensor bei Ausfahrt (abzweig) + Quell_Schaltung : Bool := FALSE // Weiche aufgrund der Quelle schalten (Hauptstrang = Gerade, FIFO = Abzweig) + Disable_PLC_Ziel : Bool := FALSE // Bei Zielvorgabe von PLC nicht anfahren (Disabled) + Para06 : Bool := FALSE + Para07 : Bool := FALSE + Weichen_GST_gerade : Bool := TRUE // Weiche wird ohne Daten auf gerade geschaltet + Weichen_GST_abzweig : Bool := FALSE // Weiche wird ohne Daten auf abzweig geschaltet + IDX_an_Puffer : Bool := TRUE // IDX an Ziel-Puffer senden + Para13 : Bool := FALSE + Para14 : Bool := FALSE + Para15 : Bool := FALSE + Para16 : Bool := FALSE + PC_Komm_aktiv : Bool := TRUE // PC-Kommunikation aktiv + LeerZiel : Int := 0 // Nach Entladen des BT/MT dieses Ziel übergeben + PC_Send_FIFO : Int := 0 // Send-FIFO für PC-Sndungen + Hauptstrang_DL_DB : Int := 1581 // Hauptstrang-Datenlisten-DB + Hauptstrang_DL_DW : Int := 0 // Hauptstrang-Datenlisten-DW + Off_Ink : DInt := 446 // Inkremente zum Weiche schalten + Ink_DB : Int := 1583 // DB-Nr des Inkremental-Geber + Position_minus : Int := 41 // Position vorher (zwecks Datensuche) + AbzweigZiel : Int := 142 // Bei diesem Ziel Weiche auf Abzweig schalten + Carl + GeradeZiel : Int := 0 // Bei diesem Ziel Weiche auf Gerade schalten + Carl + Kontroll_Zeit_gerade : Int := 0 // Nach dieser Zeit muss BM bei Geradefahrt Weichenbereich verlassen haben [100ms] + Kontroll_Zeit_abzweigen : Int := 100 // Nach dieser Zeit muss BM bei Abzweigen Weichenbereich verlassen haben [100ms] + DraussenZeit_gerade : Int := 0 // Nach dieser neg. Zeit [100ms] Error undef.BM, falls Kontroll-Sensor aktiv + Ink_Schaltdauer : Int := 300 // Inkremente, danach wird Weiche in GST geschaltet + Frei38 : Int := 0 + Weiche_VP43 : Struct + Weichen_Nr : Int := 43 // Nummer der Weiche + Weichen_Dyn_DB : Int := 1523 // Dynamische Daten Weiche + Weichen_Dyn_DW : Int := 3700 // Dynamische Daten Weiche + Weichen_Typ : Int := 178 // Weichen-Typ = 178 (Weiche) + Parameter : Struct + Letzte_Weiche : Bool := FALSE // Letzte Weiche im Verbund + Entlade_Weiche : Bool := FALSE // BT/MT wird entladen -> Leerziel übergeben + Kontroll_B_Gerade : Bool := FALSE // Kontroll-Sensor bei Weiterfahrt (gerade) + Kontroll_B_Ausfahrt : Bool := TRUE // Kontroll-Sensor bei Ausfahrt (abzweig) + Quell_Schaltung : Bool := FALSE // Weiche aufgrund der Quelle schalten (Hauptstrang = Gerade, FIFO = Abzweig) + Disable_PLC_Ziel : Bool := FALSE // Bei Zielvorgabe von PLC nicht anfahren (Disabled) + Para06 : Bool := FALSE + Para07 : Bool := FALSE + Weichen_GST_gerade : Bool := TRUE // Weiche wird ohne Daten auf gerade geschaltet + Weichen_GST_abzweig : Bool := FALSE // Weiche wird ohne Daten auf abzweig geschaltet + IDX_an_Puffer : Bool := TRUE // IDX an Ziel-Puffer senden + Para13 : Bool := FALSE + Para14 : Bool := FALSE + Para15 : Bool := FALSE + Para16 : Bool := FALSE + PC_Komm_aktiv : Bool := TRUE // PC-Kommunikation aktiv + LeerZiel : Int := 0 // Nach Entladen des BT/MT dieses Ziel übergeben + PC_Send_FIFO : Int := 0 // Send-FIFO für PC-Sndungen + Hauptstrang_DL_DB : Int := 1581 // Hauptstrang-Datenlisten-DB + Hauptstrang_DL_DW : Int := 0 // Hauptstrang-Datenlisten-DW + Off_Ink : DInt := 469 // Inkremente zum Weiche schalten + Ink_DB : Int := 1583 // DB-Nr des Inkremental-Geber + Position_minus : Int := 42 // Position vorher (zwecks Datensuche) + AbzweigZiel : Int := 143 // Bei diesem Ziel Weiche auf Abzweig schalten + Carl + GeradeZiel : Int := 0 // Bei diesem Ziel Weiche auf Gerade schalten + Carl + Kontroll_Zeit_gerade : Int := 0 // Nach dieser Zeit muss BM bei Geradefahrt Weichenbereich verlassen haben [100ms] + Kontroll_Zeit_abzweigen : Int := 100 // Nach dieser Zeit muss BM bei Abzweigen Weichenbereich verlassen haben [100ms] + DraussenZeit_gerade : Int := 0 // Nach dieser neg. Zeit [100ms] Error undef.BM, falls Kontroll-Sensor aktiv + Ink_Schaltdauer : Int := 300 // Inkremente, danach wird Weiche in GST geschaltet + Frei38 : Int := 0 + Weiche_VP44 : Struct + Weichen_Nr : Int := 44 // Nummer der Weiche + Weichen_Dyn_DB : Int := 1523 // Dynamische Daten Weiche + Weichen_Dyn_DW : Int := 3900 // Dynamische Daten Weiche + Weichen_Typ : Int := 178 // Weichen-Typ = 178 (Weiche) + Parameter : Struct + Letzte_Weiche : Bool := FALSE // Letzte Weiche im Verbund + Entlade_Weiche : Bool := FALSE // BT/MT wird entladen -> Leerziel übergeben + Kontroll_B_Gerade : Bool := TRUE // Kontroll-Sensor bei Weiterfahrt (gerade) + Kontroll_B_Ausfahrt : Bool := TRUE // Kontroll-Sensor bei Ausfahrt (abzweig) + Quell_Schaltung : Bool := FALSE // Weiche aufgrund der Quelle schalten (Hauptstrang = Gerade, FIFO = Abzweig) + Disable_PLC_Ziel : Bool := FALSE // Bei Zielvorgabe von PLC nicht anfahren (Disabled) + Para06 : Bool := FALSE + Para07 : Bool := FALSE + Weichen_GST_gerade : Bool := TRUE // Weiche wird ohne Daten auf gerade geschaltet + Weichen_GST_abzweig : Bool := FALSE // Weiche wird ohne Daten auf abzweig geschaltet + IDX_an_Puffer : Bool := TRUE // IDX an Ziel-Puffer senden + Para13 : Bool := FALSE + Para14 : Bool := FALSE + Para15 : Bool := FALSE + Para16 : Bool := FALSE + PC_Komm_aktiv : Bool := TRUE // PC-Kommunikation aktiv + LeerZiel : Int := 0 // Nach Entladen des BT/MT dieses Ziel übergeben + PC_Send_FIFO : Int := 0 // Send-FIFO für PC-Sndungen + Hauptstrang_DL_DB : Int := 1581 // Hauptstrang-Datenlisten-DB + Hauptstrang_DL_DW : Int := 0 // Hauptstrang-Datenlisten-DW + Off_Ink : DInt := 491 // Inkremente zum Weiche schalten + Ink_DB : Int := 1583 // DB-Nr des Inkremental-Geber + Position_minus : Int := 43 // Position vorher (zwecks Datensuche) + AbzweigZiel : Int := 144 // Bei diesem Ziel Weiche auf Abzweig schalten + Carl + GeradeZiel : Int := 0 // Bei diesem Ziel Weiche auf Gerade schalten + Carl + Kontroll_Zeit_gerade : Int := 150 // Nach dieser Zeit muss BM bei Geradefahrt Weichenbereich verlassen haben [100ms] + Kontroll_Zeit_abzweigen : Int := 100 // Nach dieser Zeit muss BM bei Abzweigen Weichenbereich verlassen haben [100ms] + DraussenZeit_gerade : Int := -300 // Nach dieser neg. Zeit [100ms] Error undef.BM, falls Kontroll-Sensor aktiv + Ink_Schaltdauer : Int := 300 // Inkremente, danach wird Weiche in GST geschaltet + Frei38 : Int := 0 + Weiche_VP45 : Struct + Weichen_Nr : Int := 45 // Nummer der Weiche + Weichen_Dyn_DB : Int := 1523 // Dynamische Daten Weiche + Weichen_Dyn_DW : Int := 4100 // Dynamische Daten Weiche + Weichen_Typ : Int := 178 // Weichen-Typ = 178 (Weiche) + Parameter : Struct + Letzte_Weiche : Bool := FALSE // Letzte Weiche im Verbund + Entlade_Weiche : Bool := FALSE // BT/MT wird entladen -> Leerziel übergeben + Kontroll_B_Gerade : Bool := FALSE // Kontroll-Sensor bei Weiterfahrt (gerade) + Kontroll_B_Ausfahrt : Bool := TRUE // Kontroll-Sensor bei Ausfahrt (abzweig) + Quell_Schaltung : Bool := FALSE // Weiche aufgrund der Quelle schalten (Hauptstrang = Gerade, FIFO = Abzweig) + Disable_PLC_Ziel : Bool := FALSE // Bei Zielvorgabe von PLC nicht anfahren (Disabled) + Para06 : Bool := FALSE + Para07 : Bool := FALSE + Weichen_GST_gerade : Bool := TRUE // Weiche wird ohne Daten auf gerade geschaltet + Weichen_GST_abzweig : Bool := FALSE // Weiche wird ohne Daten auf abzweig geschaltet + IDX_an_Puffer : Bool := TRUE // IDX an Ziel-Puffer senden + Para13 : Bool := FALSE + Para14 : Bool := FALSE + Para15 : Bool := FALSE + Para16 : Bool := FALSE + PC_Komm_aktiv : Bool := TRUE // PC-Kommunikation aktiv + LeerZiel : Int := 0 // Nach Entladen des BT/MT dieses Ziel übergeben + PC_Send_FIFO : Int := 0 // Send-FIFO für PC-Sndungen + Hauptstrang_DL_DB : Int := 1581 // Hauptstrang-Datenlisten-DB + Hauptstrang_DL_DW : Int := 0 // Hauptstrang-Datenlisten-DW + Off_Ink : DInt := 529 // Inkremente zum Weiche schalten + Ink_DB : Int := 1583 // DB-Nr des Inkremental-Geber + Position_minus : Int := 44 // Position vorher (zwecks Datensuche) + AbzweigZiel : Int := 145 // Bei diesem Ziel Weiche auf Abzweig schalten + Carl + GeradeZiel : Int := 0 // Bei diesem Ziel Weiche auf Gerade schalten + Carl + Kontroll_Zeit_gerade : Int := 0 // Nach dieser Zeit muss BM bei Geradefahrt Weichenbereich verlassen haben [100ms] + Kontroll_Zeit_abzweigen : Int := 100 // Nach dieser Zeit muss BM bei Abzweigen Weichenbereich verlassen haben [100ms] + DraussenZeit_gerade : Int := 0 // Nach dieser neg. Zeit [100ms] Error undef.BM, falls Kontroll-Sensor aktiv + Ink_Schaltdauer : Int := 300 // Inkremente, danach wird Weiche in GST geschaltet + Frei38 : Int := 0 + Weiche_VP46 : Struct + Weichen_Nr : Int := 46 // Nummer der Weiche + Weichen_Dyn_DB : Int := 1523 // Dynamische Daten Weiche + Weichen_Dyn_DW : Int := 4300 // Dynamische Daten Weiche + Weichen_Typ : Int := 178 // Weichen-Typ = 178 (Weiche) + Parameter : Struct + Letzte_Weiche : Bool := FALSE // Letzte Weiche im Verbund + Entlade_Weiche : Bool := FALSE // BT/MT wird entladen -> Leerziel übergeben + Kontroll_B_Gerade : Bool := FALSE // Kontroll-Sensor bei Weiterfahrt (gerade) + Kontroll_B_Ausfahrt : Bool := TRUE // Kontroll-Sensor bei Ausfahrt (abzweig) + Quell_Schaltung : Bool := FALSE // Weiche aufgrund der Quelle schalten (Hauptstrang = Gerade, FIFO = Abzweig) + Disable_PLC_Ziel : Bool := FALSE // Bei Zielvorgabe von PLC nicht anfahren (Disabled) + Para06 : Bool := FALSE + Para07 : Bool := FALSE + Weichen_GST_gerade : Bool := TRUE // Weiche wird ohne Daten auf gerade geschaltet + Weichen_GST_abzweig : Bool := FALSE // Weiche wird ohne Daten auf abzweig geschaltet + IDX_an_Puffer : Bool := TRUE // IDX an Ziel-Puffer senden + Para13 : Bool := FALSE + Para14 : Bool := FALSE + Para15 : Bool := FALSE + Para16 : Bool := FALSE + PC_Komm_aktiv : Bool := TRUE // PC-Kommunikation aktiv + LeerZiel : Int := 0 // Nach Entladen des BT/MT dieses Ziel übergeben + PC_Send_FIFO : Int := 0 // Send-FIFO für PC-Sndungen + Hauptstrang_DL_DB : Int := 1581 // Hauptstrang-Datenlisten-DB + Hauptstrang_DL_DW : Int := 0 // Hauptstrang-Datenlisten-DW + Off_Ink : DInt := 551 // Inkremente zum Weiche schalten + Ink_DB : Int := 1583 // DB-Nr des Inkremental-Geber + Position_minus : Int := 45 // Position vorher (zwecks Datensuche) + AbzweigZiel : Int := 146 // Bei diesem Ziel Weiche auf Abzweig schalten + Carl + GeradeZiel : Int := 0 // Bei diesem Ziel Weiche auf Gerade schalten + Carl + Kontroll_Zeit_gerade : Int := 0 // Nach dieser Zeit muss BM bei Geradefahrt Weichenbereich verlassen haben [100ms] + Kontroll_Zeit_abzweigen : Int := 100 // Nach dieser Zeit muss BM bei Abzweigen Weichenbereich verlassen haben [100ms] + DraussenZeit_gerade : Int := 0 // Nach dieser neg. Zeit [100ms] Error undef.BM, falls Kontroll-Sensor aktiv + Ink_Schaltdauer : Int := 300 // Inkremente, danach wird Weiche in GST geschaltet + Frei38 : Int := 0 + Weiche_VP47 : Struct + Weichen_Nr : Int := 47 // Nummer der Weiche + Weichen_Dyn_DB : Int := 1523 // Dynamische Daten Weiche + Weichen_Dyn_DW : Int := 4500 // Dynamische Daten Weiche + Weichen_Typ : Int := 178 // Weichen-Typ = 178 (Weiche) + Parameter : Struct + Letzte_Weiche : Bool := FALSE // Letzte Weiche im Verbund + Entlade_Weiche : Bool := FALSE // BT/MT wird entladen -> Leerziel übergeben + Kontroll_B_Gerade : Bool := FALSE // Kontroll-Sensor bei Weiterfahrt (gerade) + Kontroll_B_Ausfahrt : Bool := TRUE // Kontroll-Sensor bei Ausfahrt (abzweig) + Quell_Schaltung : Bool := FALSE // Weiche aufgrund der Quelle schalten (Hauptstrang = Gerade, FIFO = Abzweig) + Disable_PLC_Ziel : Bool := FALSE // Bei Zielvorgabe von PLC nicht anfahren (Disabled) + Para06 : Bool := FALSE + Para07 : Bool := FALSE + Weichen_GST_gerade : Bool := TRUE // Weiche wird ohne Daten auf gerade geschaltet + Weichen_GST_abzweig : Bool := FALSE // Weiche wird ohne Daten auf abzweig geschaltet + IDX_an_Puffer : Bool := TRUE // IDX an Ziel-Puffer senden + Para13 : Bool := FALSE + Para14 : Bool := FALSE + Para15 : Bool := FALSE + Para16 : Bool := FALSE + PC_Komm_aktiv : Bool := TRUE // PC-Kommunikation aktiv + LeerZiel : Int := 0 // Nach Entladen des BT/MT dieses Ziel übergeben + PC_Send_FIFO : Int := 0 // Send-FIFO für PC-Sndungen + Hauptstrang_DL_DB : Int := 1581 // Hauptstrang-Datenlisten-DB + Hauptstrang_DL_DW : Int := 0 // Hauptstrang-Datenlisten-DW + Off_Ink : DInt := 573 // Inkremente zum Weiche schalten + Ink_DB : Int := 1583 // DB-Nr des Inkremental-Geber + Position_minus : Int := 46 // Position vorher (zwecks Datensuche) + AbzweigZiel : Int := 147 // Bei diesem Ziel Weiche auf Abzweig schalten + Carl + GeradeZiel : Int := 0 // Bei diesem Ziel Weiche auf Gerade schalten + Carl + Kontroll_Zeit_gerade : Int := 0 // Nach dieser Zeit muss BM bei Geradefahrt Weichenbereich verlassen haben [100ms] + Kontroll_Zeit_abzweigen : Int := 100 // Nach dieser Zeit muss BM bei Abzweigen Weichenbereich verlassen haben [100ms] + DraussenZeit_gerade : Int := 0 // Nach dieser neg. Zeit [100ms] Error undef.BM, falls Kontroll-Sensor aktiv + Ink_Schaltdauer : Int := 300 // Inkremente, danach wird Weiche in GST geschaltet + Frei38 : Int := 0 + Weiche_VP48 : Struct + Weichen_Nr : Int := 48 // Nummer der Weiche + Weichen_Dyn_DB : Int := 1523 // Dynamische Daten Weiche + Weichen_Dyn_DW : Int := 4700 // Dynamische Daten Weiche + Weichen_Typ : Int := 178 // Weichen-Typ = 178 (Weiche) + Parameter : Struct + Letzte_Weiche : Bool := FALSE // Letzte Weiche im Verbund + Entlade_Weiche : Bool := FALSE // BT/MT wird entladen -> Leerziel übergeben + Kontroll_B_Gerade : Bool := FALSE // Kontroll-Sensor bei Weiterfahrt (gerade) + Kontroll_B_Ausfahrt : Bool := TRUE // Kontroll-Sensor bei Ausfahrt (abzweig) + Quell_Schaltung : Bool := FALSE // Weiche aufgrund der Quelle schalten (Hauptstrang = Gerade, FIFO = Abzweig) + Disable_PLC_Ziel : Bool := FALSE // Bei Zielvorgabe von PLC nicht anfahren (Disabled) + Para06 : Bool := FALSE + Para07 : Bool := FALSE + Weichen_GST_gerade : Bool := TRUE // Weiche wird ohne Daten auf gerade geschaltet + Weichen_GST_abzweig : Bool := FALSE // Weiche wird ohne Daten auf abzweig geschaltet + IDX_an_Puffer : Bool := TRUE // IDX an Ziel-Puffer senden + Para13 : Bool := FALSE + Para14 : Bool := FALSE + Para15 : Bool := FALSE + Para16 : Bool := FALSE + PC_Komm_aktiv : Bool := TRUE // PC-Kommunikation aktiv + LeerZiel : Int := 0 // Nach Entladen des BT/MT dieses Ziel übergeben + PC_Send_FIFO : Int := 0 // Send-FIFO für PC-Sndungen + Hauptstrang_DL_DB : Int := 1581 // Hauptstrang-Datenlisten-DB + Hauptstrang_DL_DW : Int := 0 // Hauptstrang-Datenlisten-DW + Off_Ink : DInt := 595 // Inkremente zum Weiche schalten + Ink_DB : Int := 1583 // DB-Nr des Inkremental-Geber + Position_minus : Int := 47 // Position vorher (zwecks Datensuche) + AbzweigZiel : Int := 148 // Bei diesem Ziel Weiche auf Abzweig schalten + Carl + GeradeZiel : Int := 0 // Bei diesem Ziel Weiche auf Gerade schalten + Carl + Kontroll_Zeit_gerade : Int := 0 // Nach dieser Zeit muss BM bei Geradefahrt Weichenbereich verlassen haben [100ms] + Kontroll_Zeit_abzweigen : Int := 100 // Nach dieser Zeit muss BM bei Abzweigen Weichenbereich verlassen haben [100ms] + DraussenZeit_gerade : Int := 0 // Nach dieser neg. Zeit [100ms] Error undef.BM, falls Kontroll-Sensor aktiv + Ink_Schaltdauer : Int := 300 // Inkremente, danach wird Weiche in GST geschaltet + Frei38 : Int := 0 + Weiche_VP49 : Struct + Weichen_Nr : Int := 49 // Nummer der Weiche + Weichen_Dyn_DB : Int := 1523 // Dynamische Daten Weiche + Weichen_Dyn_DW : Int := 4900 // Dynamische Daten Weiche + Weichen_Typ : Int := 178 // Weichen-Typ = 178 (Weiche) + Parameter : Struct + Letzte_Weiche : Bool := FALSE // Letzte Weiche im Verbund + Entlade_Weiche : Bool := FALSE // BT/MT wird entladen -> Leerziel übergeben + Kontroll_B_Gerade : Bool := FALSE // Kontroll-Sensor bei Weiterfahrt (gerade) + Kontroll_B_Ausfahrt : Bool := TRUE // Kontroll-Sensor bei Ausfahrt (abzweig) + Quell_Schaltung : Bool := FALSE // Weiche aufgrund der Quelle schalten (Hauptstrang = Gerade, FIFO = Abzweig) + Disable_PLC_Ziel : Bool := FALSE // Bei Zielvorgabe von PLC nicht anfahren (Disabled) + Para06 : Bool := FALSE + Para07 : Bool := FALSE + Weichen_GST_gerade : Bool := TRUE // Weiche wird ohne Daten auf gerade geschaltet + Weichen_GST_abzweig : Bool := FALSE // Weiche wird ohne Daten auf abzweig geschaltet + IDX_an_Puffer : Bool := TRUE // IDX an Ziel-Puffer senden + Para13 : Bool := FALSE + Para14 : Bool := FALSE + Para15 : Bool := FALSE + Para16 : Bool := FALSE + PC_Komm_aktiv : Bool := TRUE // PC-Kommunikation aktiv + LeerZiel : Int := 0 // Nach Entladen des BT/MT dieses Ziel übergeben + PC_Send_FIFO : Int := 0 // Send-FIFO für PC-Sndungen + Hauptstrang_DL_DB : Int := 1581 // Hauptstrang-Datenlisten-DB + Hauptstrang_DL_DW : Int := 0 // Hauptstrang-Datenlisten-DW + Off_Ink : DInt := 616 // Inkremente zum Weiche schalten + Ink_DB : Int := 1583 // DB-Nr des Inkremental-Geber + Position_minus : Int := 48 // Position vorher (zwecks Datensuche) + AbzweigZiel : Int := 149 // Bei diesem Ziel Weiche auf Abzweig schalten + Carl + GeradeZiel : Int := 0 // Bei diesem Ziel Weiche auf Gerade schalten + Carl + Kontroll_Zeit_gerade : Int := 0 // Nach dieser Zeit muss BM bei Geradefahrt Weichenbereich verlassen haben [100ms] + Kontroll_Zeit_abzweigen : Int := 100 // Nach dieser Zeit muss BM bei Abzweigen Weichenbereich verlassen haben [100ms] + DraussenZeit_gerade : Int := 0 // Nach dieser neg. Zeit [100ms] Error undef.BM, falls Kontroll-Sensor aktiv + Ink_Schaltdauer : Int := 300 // Inkremente, danach wird Weiche in GST geschaltet + Frei38 : Int := 0 + Weiche_VP50 : Struct + Weichen_Nr : Int := 50 // Nummer der Weiche + Weichen_Dyn_DB : Int := 1523 // Dynamische Daten Weiche + Weichen_Dyn_DW : Int := 5100 // Dynamische Daten Weiche + Weichen_Typ : Int := 178 // Weichen-Typ = 178 (Weiche) + Parameter : Struct + Letzte_Weiche : Bool := FALSE // Letzte Weiche im Verbund + Entlade_Weiche : Bool := FALSE // BT/MT wird entladen -> Leerziel übergeben + Kontroll_B_Gerade : Bool := FALSE // Kontroll-Sensor bei Weiterfahrt (gerade) + Kontroll_B_Ausfahrt : Bool := TRUE // Kontroll-Sensor bei Ausfahrt (abzweig) + Quell_Schaltung : Bool := FALSE // Weiche aufgrund der Quelle schalten (Hauptstrang = Gerade, FIFO = Abzweig) + Disable_PLC_Ziel : Bool := FALSE // Bei Zielvorgabe von PLC nicht anfahren (Disabled) + Para06 : Bool := FALSE + Para07 : Bool := FALSE + Weichen_GST_gerade : Bool := TRUE // Weiche wird ohne Daten auf gerade geschaltet + Weichen_GST_abzweig : Bool := FALSE // Weiche wird ohne Daten auf abzweig geschaltet + IDX_an_Puffer : Bool := TRUE // IDX an Ziel-Puffer senden + Para13 : Bool := FALSE + Para14 : Bool := FALSE + Para15 : Bool := FALSE + Para16 : Bool := FALSE + PC_Komm_aktiv : Bool := TRUE // PC-Kommunikation aktiv + LeerZiel : Int := 0 // Nach Entladen des BT/MT dieses Ziel übergeben + PC_Send_FIFO : Int := 0 // Send-FIFO für PC-Sndungen + Hauptstrang_DL_DB : Int := 1581 // Hauptstrang-Datenlisten-DB + Hauptstrang_DL_DW : Int := 0 // Hauptstrang-Datenlisten-DW + Off_Ink : DInt := 640 // Inkremente zum Weiche schalten + Ink_DB : Int := 1583 // DB-Nr des Inkremental-Geber + Position_minus : Int := 49 // Position vorher (zwecks Datensuche) + AbzweigZiel : Int := 150 // Bei diesem Ziel Weiche auf Abzweig schalten + Carl + GeradeZiel : Int := 0 // Bei diesem Ziel Weiche auf Gerade schalten + Carl + Kontroll_Zeit_gerade : Int := 0 // Nach dieser Zeit muss BM bei Geradefahrt Weichenbereich verlassen haben [100ms] + Kontroll_Zeit_abzweigen : Int := 100 // Nach dieser Zeit muss BM bei Abzweigen Weichenbereich verlassen haben [100ms] + DraussenZeit_gerade : Int := 0 // Nach dieser neg. Zeit [100ms] Error undef.BM, falls Kontroll-Sensor aktiv + Ink_Schaltdauer : Int := 300 // Inkremente, danach wird Weiche in GST geschaltet + Frei38 : Int := 0 + Weiche_VP51 : Struct + Weichen_Nr : Int := 51 // Nummer der Weiche + Weichen_Dyn_DB : Int := 1523 // Dynamische Daten Weiche + Weichen_Dyn_DW : Int := 5300 // Dynamische Daten Weiche + Weichen_Typ : Int := 178 // Weichen-Typ = 178 (Weiche) + Parameter : Struct + Letzte_Weiche : Bool := TRUE // Letzte Weiche im Verbund + Entlade_Weiche : Bool := FALSE // BT/MT wird entladen -> Leerziel übergeben + Kontroll_B_Gerade : Bool := FALSE // Kontroll-Sensor bei Weiterfahrt (gerade) + Kontroll_B_Ausfahrt : Bool := TRUE // Kontroll-Sensor bei Ausfahrt (abzweig) + Quell_Schaltung : Bool := FALSE // Weiche aufgrund der Quelle schalten (Hauptstrang = Gerade, FIFO = Abzweig) + Disable_PLC_Ziel : Bool := FALSE // Bei Zielvorgabe von PLC nicht anfahren (Disabled) + Para06 : Bool := FALSE + Para07 : Bool := FALSE + Weichen_GST_gerade : Bool := TRUE // Weiche wird ohne Daten auf gerade geschaltet + Weichen_GST_abzweig : Bool := FALSE // Weiche wird ohne Daten auf abzweig geschaltet + IDX_an_Puffer : Bool := TRUE // IDX an Ziel-Puffer senden + Para13 : Bool := FALSE + Para14 : Bool := FALSE + Para15 : Bool := FALSE + Para16 : Bool := FALSE + PC_Komm_aktiv : Bool := FALSE // PC-Kommunikation aktiv + LeerZiel : Int := 0 // Nach Entladen des BT/MT dieses Ziel übergeben + PC_Send_FIFO : Int := 0 // Send-FIFO für PC-Sndungen + Hauptstrang_DL_DB : Int := 1581 // Hauptstrang-Datenlisten-DB + Hauptstrang_DL_DW : Int := 0 // Hauptstrang-Datenlisten-DW + Off_Ink : DInt := 713 // Inkremente zum Weiche schalten + Ink_DB : Int := 1583 // DB-Nr des Inkremental-Geber + Position_minus : Int := 50 // Position vorher (zwecks Datensuche) + AbzweigZiel : Int := 151 // Bei diesem Ziel Weiche auf Abzweig schalten + Carl + GeradeZiel : Int := 0 // Bei diesem Ziel Weiche auf Gerade schalten + Carl + Kontroll_Zeit_gerade : Int := 0 // Nach dieser Zeit muss BM bei Geradefahrt Weichenbereich verlassen haben [100ms] + Kontroll_Zeit_abzweigen : Int := 100 // Nach dieser Zeit muss BM bei Abzweigen Weichenbereich verlassen haben [100ms] + DraussenZeit_gerade : Int := 0 // Nach dieser neg. Zeit [100ms] Error undef.BM, falls Kontroll-Sensor aktiv + Ink_Schaltdauer : Int := 300 // Inkremente, danach wird Weiche in GST geschaltet + Frei38 : Int := 0 + Endekennung : Word := 16#DAEE // Datensort-Ende-Kennung (DBEE) diff --git a/=A01+UH07-KF00/Programmbausteine/Anlage/1_Vollpuffer/Sorter_Vollpuffer/VP_HS_A_mF.awl b/=A01+UH07-KF00/Programmbausteine/Anlage/1_Vollpuffer/Sorter_Vollpuffer/VP_HS_A_mF.awl new file mode 100644 index 0000000..b3573b6 --- /dev/null +++ b/=A01+UH07-KF00/Programmbausteine/Anlage/1_Vollpuffer/Sorter_Vollpuffer/VP_HS_A_mF.awl @@ -0,0 +1,17 @@ +=== GlobalDB 1482: VP_HS_A_mF [DB] === +INTERFACE: + Static: + Datensortkopf : Struct + KOPF : Word := WORD#16#DB0B // Datenliste-Kennnung (DA) / Datensatzlänge in Word (1 - 128) + LAENGE : Int := 100 // Länge der Datenliste (maximale Anzahl der Datensätze) + STAMMDATEN : Int := 2 // Stammdatenlänge in Word (1 - 9) + Belegt06 : Int // reserviert von Datenliste + Belegt08 : Int // reserviert von Datenliste + Belegt10 : Int // reserviert von Datenliste + Belegt12 : Int // reserviert von Datenliste + AnzahlEintraege : Int // Anzahl der eingetragenen Datensätze + Reserve16 : Int // DBX 16.0 = Korrektur-Modus aktiv + Reserve18 : Int // DW 18 = Neues Ziel bei Korrektur-Modus + Teil : Array[1..100] of Struct + Daten : "UBT_Daten" + Endekennung : Word := WORD#16#DBEE // Datensort-Ende-Kennung (DBEE) diff --git a/=A01+UH07-KF00/Programmbausteine/Anlage/1_Vollpuffer/Sorter_Vollpuffer/VP_HS_A_oF.awl b/=A01+UH07-KF00/Programmbausteine/Anlage/1_Vollpuffer/Sorter_Vollpuffer/VP_HS_A_oF.awl new file mode 100644 index 0000000..705de0c --- /dev/null +++ b/=A01+UH07-KF00/Programmbausteine/Anlage/1_Vollpuffer/Sorter_Vollpuffer/VP_HS_A_oF.awl @@ -0,0 +1,17 @@ +=== GlobalDB 1481: VP_HS_A_oF [DB] === +INTERFACE: + Static: + Datensortkopf : Struct + KOPF : Word := WORD#16#DB0B // Datenliste-Kennnung (DA) / Datensatzlänge in Word (1 - 128) + LAENGE : Int := 100 // Länge der Datenliste (maximale Anzahl der Datensätze) + STAMMDATEN : Int := 2 // Stammdatenlänge in Word (1 - 9) + Belegt06 : Int // reserviert von Datenliste + Belegt08 : Int // reserviert von Datenliste + Belegt10 : Int // reserviert von Datenliste + Belegt12 : Int // reserviert von Datenliste + AnzahlEintraege : Int // Anzahl der eingetragenen Datensätze + Reserve16 : Int // DBX 16.0 = Korrektur-Modus aktiv + Reserve18 : Int // DW 18 = Neues Ziel bei Korrektur-Modus + Teil : Array[1..100] of Struct + Daten : "UBT_Daten" + Endekennung : Word := WORD#16#DBEE // Datensort-Ende-Kennung (DBEE) diff --git a/=A01+UH07-KF00/Programmbausteine/Anlage/1_Vollpuffer/Sorter_Vollpuffer/VP_HS_B_mF.awl b/=A01+UH07-KF00/Programmbausteine/Anlage/1_Vollpuffer/Sorter_Vollpuffer/VP_HS_B_mF.awl new file mode 100644 index 0000000..48e2b77 --- /dev/null +++ b/=A01+UH07-KF00/Programmbausteine/Anlage/1_Vollpuffer/Sorter_Vollpuffer/VP_HS_B_mF.awl @@ -0,0 +1,17 @@ +=== GlobalDB 1582: VP_HS_B_mF [DB] === +INTERFACE: + Static: + Datensortkopf : Struct + KOPF : Word := WORD#16#DB0B // Datenliste-Kennnung (DA) / Datensatzlänge in Word (1 - 128) + LAENGE : Int := 100 // Länge der Datenliste (maximale Anzahl der Datensätze) + STAMMDATEN : Int := 2 // Stammdatenlänge in Word (1 - 9) + Belegt06 : Int // reserviert von Datenliste + Belegt08 : Int // reserviert von Datenliste + Belegt10 : Int // reserviert von Datenliste + Belegt12 : Int // reserviert von Datenliste + AnzahlEintraege : Int // Anzahl der eingetragenen Datensätze + Reserve16 : Int // DBX 16.0 = Korrektur-Modus aktiv + Reserve18 : Int // DW 18 = Neues Ziel bei Korrektur-Modus + Teil : Array[1..100] of Struct + Daten : "UBT_Daten" + Endekennung : Word := WORD#16#DBEE // Datensort-Ende-Kennung (DBEE) diff --git a/=A01+UH07-KF00/Programmbausteine/Anlage/1_Vollpuffer/Sorter_Vollpuffer/VP_HS_B_oF.awl b/=A01+UH07-KF00/Programmbausteine/Anlage/1_Vollpuffer/Sorter_Vollpuffer/VP_HS_B_oF.awl new file mode 100644 index 0000000..44e6078 --- /dev/null +++ b/=A01+UH07-KF00/Programmbausteine/Anlage/1_Vollpuffer/Sorter_Vollpuffer/VP_HS_B_oF.awl @@ -0,0 +1,17 @@ +=== GlobalDB 1581: VP_HS_B_oF [DB] === +INTERFACE: + Static: + Datensortkopf : Struct + KOPF : Word := WORD#16#DB0B // Datenliste-Kennnung (DA) / Datensatzlänge in Word (1 - 128) + LAENGE : Int := 100 // Länge der Datenliste (maximale Anzahl der Datensätze) + STAMMDATEN : Int := 2 // Stammdatenlänge in Word (1 - 9) + Belegt06 : Int // reserviert von Datenliste + Belegt08 : Int // reserviert von Datenliste + Belegt10 : Int // reserviert von Datenliste + Belegt12 : Int // reserviert von Datenliste + AnzahlEintraege : Int // Anzahl der eingetragenen Datensätze + Reserve16 : Int // DBX 16.0 = Korrektur-Modus aktiv + Reserve18 : Int // DW 18 = Neues Ziel bei Korrektur-Modus + Teil : Array[1..100] of Struct + Daten : "UBT_Daten" + Endekennung : Word := WORD#16#DBEE // Datensort-Ende-Kennung (DBEE) diff --git a/=A01+UH07-KF00/Programmbausteine/Anlage/1_Vollpuffer/Sorter_Vollpuffer/VP_Sorter_A.awl b/=A01+UH07-KF00/Programmbausteine/Anlage/1_Vollpuffer/Sorter_Vollpuffer/VP_Sorter_A.awl new file mode 100644 index 0000000..96784b4 --- /dev/null +++ b/=A01+UH07-KF00/Programmbausteine/Anlage/1_Vollpuffer/Sorter_Vollpuffer/VP_Sorter_A.awl @@ -0,0 +1,645 @@ +=== FB 1423: VP_Sorter_A [STL] === +INTERFACE: + Input: + Output: + InOut: + Static: + Sorter_MB3121 : "MSepSorterRein" + Sync_BG3120 : "MStartSync" + Weiche_VP1 : "MWeiche_Sorter" + Weiche_VP2 : "MWeiche_Sorter" + Weiche_VP3 : "MWeiche_Sorter" + Weiche_VP4 : "MWeiche_Sorter" + Weiche_VP5 : "MWeiche_Sorter" + Weiche_VP6 : "MWeiche_Sorter" + Weiche_VP7 : "MWeiche_Sorter" + Weiche_VP8 : "MWeiche_Sorter" + Weiche_VP9 : "MWeiche_Sorter" + Weiche_VP10 : "MWeiche_Sorter" + Weiche_VP11 : "MWeiche_Sorter" + Weiche_VP12 : "MWeiche_Sorter" + Weiche_VP13 : "MWeiche_Sorter" + Weiche_VP14 : "MWeiche_Sorter" + Weiche_VP15 : "MWeiche_Sorter" + Weiche_VP16 : "MWeiche_Sorter" + Weiche_VP17 : "MWeiche_Sorter" + Weiche_VP18 : "MWeiche_Sorter" + Weiche_VP19 : "MWeiche_Sorter" + Weiche_VP20 : "MWeiche_Sorter" + Weiche_VP21 : "MWeiche_Sorter" + Weiche_VP22 : "MWeiche_Sorter" + Weiche_VP23 : "MWeiche_Sorter" + Weiche_VP24 : "MWeiche_Sorter" + Weiche_VP25 : "MWeiche_Sorter" + Übergabe_B3003 : "MSorter_Uebergabe" + Sorter_MB3123 : "MSepSorterRein" + Impuls_BG3125 : "MImpulsGeber" + Ohne_PC_fahren : Bool + Sorter3121_Ok : Bool // Sorter darf starten + Sorter3123_Ok : Bool // Sorter darf starten + Aus_Sorter_3121_gefahren : Bool // Sorter von Heber war gefahren + Aus_Sorter_3123_gefahren : Bool // Sorter von Heber war gefahren + Sorter1Reset : Bool + Sorter2Reset : Bool + Sorter_A_leer : Bool + Input: + Output: + InOut: + Static: + Dyn : Struct + GesamtSorterReset : Bool := 1 + Temp: + ErrQuit : Bool + ErrAnz : Bool + Antrieb : Bool + Stau : Bool + Start_Ok : Bool + Error_aktiv : Bool + Leer : Bool + Sorter_3121_startbereit : Bool + Sorter_3123_startbereit : Bool + Trolley_dazwischen : Bool + Err_DW : DInt + Err_Bits : Int + Constant: + +--- NW 1: Systemzeug --- + A "DOutbound_Bereich".A01_UH07.AnlageEin + = Sorter_MB3121.Dyn.Sk.Auto_akt + = Sorter_MB3123.Dyn.Sk.Auto_akt + + AN "DOutbound_Bereich".A01_UC071.BereichErr + = Sorter_MB3121.Dyn.Sk.Bereich_ok + = Sorter_MB3123.Dyn.Sk.Bereich_ok + +// Bereichshalt: + CLR // nicht verbaut + R Sorter_MB3121.Dyn.Sk.Bereich_ok + +// Sonderbetriebsarten Weichen: + CLR + = Weiche_VP1.Dyn.Status.Weichentest_aktiv + = Weiche_VP2.Dyn.Status.Weichentest_aktiv + = Weiche_VP3.Dyn.Status.Weichentest_aktiv + = Weiche_VP4.Dyn.Status.Weichentest_aktiv + = Weiche_VP5.Dyn.Status.Weichentest_aktiv + = Weiche_VP6.Dyn.Status.Weichentest_aktiv + = Weiche_VP7.Dyn.Status.Weichentest_aktiv + = Weiche_VP8.Dyn.Status.Weichentest_aktiv + = Weiche_VP9.Dyn.Status.Weichentest_aktiv + = Weiche_VP10.Dyn.Status.Weichentest_aktiv + = Weiche_VP11.Dyn.Status.Weichentest_aktiv + = Weiche_VP12.Dyn.Status.Weichentest_aktiv + = Weiche_VP13.Dyn.Status.Weichentest_aktiv + = Weiche_VP14.Dyn.Status.Weichentest_aktiv + = Weiche_VP15.Dyn.Status.Weichentest_aktiv + = Weiche_VP16.Dyn.Status.Weichentest_aktiv + = Weiche_VP17.Dyn.Status.Weichentest_aktiv + = Weiche_VP18.Dyn.Status.Weichentest_aktiv + = Weiche_VP19.Dyn.Status.Weichentest_aktiv + = Weiche_VP20.Dyn.Status.Weichentest_aktiv + = Weiche_VP21.Dyn.Status.Weichentest_aktiv + = Weiche_VP22.Dyn.Status.Weichentest_aktiv + = Weiche_VP23.Dyn.Status.Weichentest_aktiv + = Weiche_VP24.Dyn.Status.Weichentest_aktiv + = Weiche_VP25.Dyn.Status.Weichentest_aktiv + + A Sync_BG3120.Dyn.Status.TeachModus_Aktiv + = Weiche_VP1.Dyn.Status.TeachModus_aktiv + = Weiche_VP2.Dyn.Status.TeachModus_aktiv + = Weiche_VP3.Dyn.Status.TeachModus_aktiv + = Weiche_VP4.Dyn.Status.TeachModus_aktiv + = Weiche_VP5.Dyn.Status.TeachModus_aktiv + = Weiche_VP6.Dyn.Status.TeachModus_aktiv + = Weiche_VP7.Dyn.Status.TeachModus_aktiv + = Weiche_VP8.Dyn.Status.TeachModus_aktiv + = Weiche_VP9.Dyn.Status.TeachModus_aktiv + = Weiche_VP10.Dyn.Status.TeachModus_aktiv + = Weiche_VP11.Dyn.Status.TeachModus_aktiv + = Weiche_VP12.Dyn.Status.TeachModus_aktiv + = Weiche_VP13.Dyn.Status.TeachModus_aktiv + = Weiche_VP14.Dyn.Status.TeachModus_aktiv + = Weiche_VP15.Dyn.Status.TeachModus_aktiv + = Weiche_VP16.Dyn.Status.TeachModus_aktiv + = Weiche_VP17.Dyn.Status.TeachModus_aktiv + = Weiche_VP18.Dyn.Status.TeachModus_aktiv + = Weiche_VP19.Dyn.Status.TeachModus_aktiv + = Weiche_VP20.Dyn.Status.TeachModus_aktiv + = Weiche_VP21.Dyn.Status.TeachModus_aktiv + = Weiche_VP22.Dyn.Status.TeachModus_aktiv + = Weiche_VP23.Dyn.Status.TeachModus_aktiv + = Weiche_VP24.Dyn.Status.TeachModus_aktiv + = Weiche_VP25.Dyn.Status.TeachModus_aktiv + + CLR + = Sorter_MB3121.Dyn.Error.Korrektur_Modus_aktiv + + L 1474 // DLSeps + T "MW174" + L 1478 // DLWeichen + T "MW178" + +// Nach neuen Daten suchen: + A "1s-Impuls" + = "Weiche_NewData" + + +--- NW 2: Linien mit PLC_Ziel anfahren --- + A Ohne_PC_fahren + JCN En03 + + A "MB3121" + O "MB3123" + CU "Z101" + + L "Z101" + L 1 + I // Ja ! + ) + JC En03 + + SET + R "Z101" + + L Sorter_MB3121.Separator.Default_Ziel + L 0 // unbekannt ? + ==I + L 101 // Beginn mit Ausfahrziel 1.Puffer + JC X399 + +// Nächste Weiche suchen: + L Sorter_MB3121.Separator.Default_Ziel + T "MW200" + +CALL FC "DatenOut" (SSDB:="MW178", SSDW:=0, PARA:=WORD#16#0E00, SEARCHDATEN:=P#M200.0, RE_VAL:="MB199", OUTDATEN:=P#M200.0, Position:="MW196") // Nach angegeben Datenbyte suchen (Abzweig-Ziel) + + AN "M199.7" // Datensatz ist nicht vorhanden + O "M208.0" // Letzte Weiche + L 0 // Neubeginn + JC X400 + +X398: CALL FC "DatenOut" (SSDB:="MW178", SSDW:=0, PARA:=WORD#16#FF00, SEARCHDATEN:=P#M200.0, RE_VAL:="MB199", OUTDATEN:=P#M200.0, Position:="MW196") // Nächsten Datensatz lesen + + L "MW206" // Weichentyp + L 178 // Sorterweiche ? + <>I // Nein! + O "M199.2" // Ende erreicht + L 0 + JC X400 + + A "M208.5" // Weiche für PLC-Ziel disabled ! + JC X398 + + L "MW226" + T Sorter_MB3121.Separator.Default_Ziel + + JU En03 + +// 1.Weiche checken: +X399: T "MW200" + +CALL FC "DatenOut" (SSDB:="MW178", SSDW:=0, PARA:=WORD#16#0E00, SEARCHDATEN:=P#M200.0, RE_VAL:="MB199", OUTDATEN:=P#M200.0, Position:="MW196") // Nach angegeben Datenbyte suchen (Abzweig-Ziel) + + AN "M199.7" // Datensatz ist nicht vorhanden + JC En03 + + A "M208.5" // Weiche für PLC-Ziel disabled ! + JC X398 + + L "MW226" +X400: T Sorter_MB3121.Separator.Default_Ziel + +En03: NOP 0 + + +--- NW 3: Störungen --- +CALL FC "Err_vorhanden" (Check_DB:=708, Anfangs_DW:=DINT#206, Ende_DW:=DINT#314, Stoerung:=Error_aktiv, ErrDW:=Err_DW, ErrBits:=Err_Bits) // Störungsanzeige + A Error_aktiv // s.o. + = Error_aktiv // Sorter Lager Weichen-Störung (Sorter-Antrieb gestoppt!) + + A "BG3120" // Verlassen-Sensor + L S5T#250MS + OffDelay "T140" + + +--- NW 4: Störung quittieren UZ7102/7103 --- + A "DOutbound_Bereich".A01_UZ7102.StOk_aktiv + O "DOutbound_Bereich".A01_UZ7103.StOk_aktiv + = ErrQuit + + +--- NW 5: Umschaltung Sorter 3121 / Sorter3123 --- + A "MB3121" + S Aus_Sorter_3121_gefahren + AN "BG3121" + R Sorter3121_Ok + A "MB3123" + S Aus_Sorter_3123_gefahren + AN "BG3123" + R Sorter3123_Ok + + L Sorter_MB3121.Dyn.Stop_Ursache + L 16#B116 + ==I + = Sorter_3121_startbereit + A Sorter_3121_startbereit + AN Aus_Sorter_3121_gefahren + S Sorter3121_Ok + JC En05 + + L Sorter_MB3123.Dyn.Stop_Ursache + L 16#B116 + ==I + = Sorter_3123_startbereit + A Sorter_3123_startbereit + AN Aus_Sorter_3123_gefahren + S Sorter3123_Ok + JC En05 + + SET // Es kann keiner fahren + A( + O Sorter_3121_startbereit + O Sorter_3123_startbereit + ) + AN "BG3120" // Sync-Sensor + AN "MB3121" // Keiner mehr offen + AN "MB3123" + L s5t#1s + OnDelay "T11" + A "T11" + R Aus_Sorter_3121_gefahren + R Aus_Sorter_3123_gefahren + +En05: NOP 0 + + +--- NW 6: Sorter-GesamtReset --- +// Sorter-Reset starten: + A "DVP_OmniFahren".Schleuse_3121.Dyn.Status.Reset_aktiv // Bei Schleusen-Reset -> Sorter mit resetten! + AN "DVP_Sorter_A".Sorter_MB3121.Dyn.GesamtSorterReset_aktiv + S "DVP_Sorter_A".Sorter_MB3121.Dyn.GesamtSorterReset + + A "DVP_OmniFahren".Schleuse_3123.Dyn.Status.Reset_aktiv // Bei Schleusen-Reset -> Sorter mit resetten! + AN "DVP_Sorter_A".Sorter_MB3123.Dyn.GesamtSorterReset_aktiv + S "DVP_Sorter_A".Sorter_MB3123.Dyn.GesamtSorterReset + + +--- NW 7: Separator 3121 vor Sorter (Von Kontrollplatz) --- + L DB708.DBW204 // Err beim Synchronisieren + L 0 // Störung vorhanden ? + ==I // Nein ! + AN Sync_BG3120.Dyn.Stop // Rein-Separator stoppen + AN Error_aktiv // Sorter Batch Weichen-Störung (Sorter-Antrieb gestoppt!) +// Aufteilung Sep 1 <> Sep 2 + AN "MB3123" + A Sorter3121_Ok + AN Sorter_MB3121.Dyn.GesamtSorterReset_aktiv + AN Sorter_MB3123.Dyn.GesamtSorterReset_aktiv + A "SF0122" +// / U "M83.1" /// + = Start_Ok + + SET // Da Leiste im Sep und Zusatz-Zylinder im Separator -> BT steht sofort sauber im Sep + S Sorter_MB3121.Dyn.BT_beruhigt // 1. einfahrender BügelTräger ist im Sep + + A "T140" + = Sorter_MB3121.B_AusSep // Entprellung Verlassen-Sensor + +// Triggern / Scanner-Auswertung über HW>VP_Omnifahren (FC128/27) +// Ziel über Default-Ziel (HW>VP_Ziel_FC, FC181) + SET + R ErrAnz + +CALL FB "None" , (Separator_Nr:=3121, ErrQuit:=ErrQuit, B_VorSep:=?, B_ImSep:="BG3121", B_AusSep:=?, B_Beladen_im_Sep:=?, B_Pinsensor:="BG3125", B_Beladen_nach_Sep:=?, Start_Ok:=Start_Ok, Antrieb_aktiv:="MA0145", Antrieb_plus_aktiv:="MA0145", Y_Sep_Auf:="DVP_Zylinder".Sorter_3121.Stat.Ast, K_Sanner_triggern:=?, Sorter_Reset:=Sorter1Reset, Error:=DB708.DBW200, Antrieb_start:="DHWtoVP_Antriebe".MA0144.Stat.A_vor, Antrieb_plus_start:="DVP_Antriebe".MA0145.Stat.A_start, Antrieb_stoppen:="DVP_Antriebe".MA0145.Stat.Stop_vor, hStOk:=ErrAnz) + +// Default-Ziel jeden Zyklus neu!: + L 0 + T Sorter_MB3121.Separator.Default_Ziel + +// Dieser Sorter-Rein-Sep ist aktiv: + A "DVP_Zylinder".Sorter_3121.Stat.Ast + R "DVP_Zylinder".Weiche_3120.Stat.Ast // Weiche vor Sorter-Strang + +// Quer-Antrieb einschalten: + A "MB3121" + S "DVP_Antriebe".MA0152.Stat.A_vor + + +--- NW 8: Separator 3123 vor Sorter (Von Rückführstrecke) --- + L DB708.DBW204 // Err beim Synchronisieren + L 0 // Störung vorhanden ? + ==I // Nein ! + AN Sync_BG3120.Dyn.Stop // Rein-Separator stoppen + AN Error_aktiv // Sorter Batch Weichen-Störung (Sorter-Antrieb gestoppt!) +// Aufteilung Sep 1 <> Sep 2 + AN "MB3121" + A Sorter3123_Ok + AN Sorter_MB3121.Dyn.GesamtSorterReset_aktiv + AN Sorter_MB3123.Dyn.GesamtSorterReset_aktiv + = Start_Ok + + SET // Da Leiste im Sep und Zusatz-Zylinder im Separator -> BT steht sofort sauber im Sep + S Sorter_MB3123.Dyn.BT_beruhigt // 1. einfahrender BügelTräger ist im Sep + + A "T140" + = Sorter_MB3123.B_AusSep // Entprellung Verlassen-Sensor + +// Triggern / Scanner-Auswertung über MOmniSchleuse(FB274) +// Ziel über Default-Ziel (ZG_Ziel_FC, FC2181) + +CALL FB "None" , (Separator_Nr:=3123, ErrQuit:=ErrQuit, B_VorSep:=?, B_ImSep:="BG3123", B_AusSep:=?, B_Beladen_im_Sep:=?, B_Pinsensor:="BG3125", B_Beladen_nach_Sep:=?, Start_Ok:=Start_Ok, Antrieb_aktiv:="MA0152", Antrieb_plus_aktiv:="MA0145", Y_Sep_Auf:="DVP_Zylinder".Sorter_3123.Stat.Ast, K_Sanner_triggern:=?, Sorter_Reset:=Sorter2Reset, Error:=DB708.DBW202, Antrieb_start:="DVP_Antriebe".MA0152.Stat.A_vor, Antrieb_plus_start:="DVP_Antriebe".MA0145.Stat.A_start, Antrieb_stoppen:="DVP_Antriebe".MA0152.Stat.Stop_vor, hStOk:=ErrAnz) + +// Default-Ziel jeden Zyklus neu!: + L 0 + T Sorter_MB3123.Separator.Default_Ziel // /wird pro Zyklus vom Ziel-FC übergeben! + +// Dieser Sorter-Rein-Sep ist aktiv: + A "DVP_Zylinder".Sorter_3123.Stat.Ast + S "DVP_Zylinder".Weiche_3120.Stat.Ast // Weiche vor Sorter-Strang + + +--- NW 9: Reset ist aktiv --- + A Sorter_MB3121.Dyn.GesamtSorterReset_aktiv + = "7_HMI_Err_UH07_OB".Sorter_MB3121.Reset_aktiv + A Sorter_MB3123.Dyn.GesamtSorterReset_aktiv + = "7_HMI_Err_UH07_OB".Sorter_MB3123.Reset_aktiv + + A Sorter_MB3121.Dyn.GesamtSorterReset_aktiv + O Sorter_MB3123.Dyn.GesamtSorterReset_aktiv + = Weiche_VP1.Dyn.Ohne_VerklemmKontrolle + = Weiche_VP2.Dyn.Ohne_VerklemmKontrolle + = Weiche_VP3.Dyn.Ohne_VerklemmKontrolle + = Weiche_VP4.Dyn.Ohne_VerklemmKontrolle + = Weiche_VP5.Dyn.Ohne_VerklemmKontrolle + = Weiche_VP6.Dyn.Ohne_VerklemmKontrolle + = Weiche_VP7.Dyn.Ohne_VerklemmKontrolle + = Weiche_VP8.Dyn.Ohne_VerklemmKontrolle + = Weiche_VP9.Dyn.Ohne_VerklemmKontrolle + = Weiche_VP10.Dyn.Ohne_VerklemmKontrolle + = Weiche_VP11.Dyn.Ohne_VerklemmKontrolle + = Weiche_VP12.Dyn.Ohne_VerklemmKontrolle + = Weiche_VP13.Dyn.Ohne_VerklemmKontrolle + = Weiche_VP14.Dyn.Ohne_VerklemmKontrolle + = Weiche_VP15.Dyn.Ohne_VerklemmKontrolle + = Weiche_VP16.Dyn.Ohne_VerklemmKontrolle + = Weiche_VP17.Dyn.Ohne_VerklemmKontrolle + = Weiche_VP18.Dyn.Ohne_VerklemmKontrolle + = Weiche_VP19.Dyn.Ohne_VerklemmKontrolle + = Weiche_VP20.Dyn.Ohne_VerklemmKontrolle + = Weiche_VP21.Dyn.Ohne_VerklemmKontrolle + = Weiche_VP22.Dyn.Ohne_VerklemmKontrolle + = Weiche_VP23.Dyn.Ohne_VerklemmKontrolle + = Weiche_VP24.Dyn.Ohne_VerklemmKontrolle + = Weiche_VP25.Dyn.Ohne_VerklemmKontrolle + +// Diesen Sorterbereich zurücksetzen: + A Sorter1Reset // Ein Zyklus + O Sorter2Reset // Ein Zyklus + S Sync_BG3120.Dyn.Reset + S Weiche_VP1.Dyn.Status.Reset + S Weiche_VP2.Dyn.Status.Reset + S Weiche_VP3.Dyn.Status.Reset + S Weiche_VP4.Dyn.Status.Reset + S Weiche_VP5.Dyn.Status.Reset + S Weiche_VP6.Dyn.Status.Reset + S Weiche_VP7.Dyn.Status.Reset + S Weiche_VP8.Dyn.Status.Reset + S Weiche_VP9.Dyn.Status.Reset + S Weiche_VP10.Dyn.Status.Reset + S Weiche_VP11.Dyn.Status.Reset + S Weiche_VP12.Dyn.Status.Reset + S Weiche_VP13.Dyn.Status.Reset + S Weiche_VP14.Dyn.Status.Reset + S Weiche_VP15.Dyn.Status.Reset + S Weiche_VP16.Dyn.Status.Reset + S Weiche_VP17.Dyn.Status.Reset + S Weiche_VP18.Dyn.Status.Reset + S Weiche_VP19.Dyn.Status.Reset + S Weiche_VP20.Dyn.Status.Reset + S Weiche_VP21.Dyn.Status.Reset + S Weiche_VP22.Dyn.Status.Reset + S Weiche_VP23.Dyn.Status.Reset + S Weiche_VP24.Dyn.Status.Reset + S Weiche_VP25.Dyn.Status.Reset + + +--- NW 10: Inkremente über Zahnrad-Sensor --- +CALL FB "None" , (Ink_DB:=1483, B_Zaehlen:="BG3125", Antrieb_aktiv:="MA0145", Quit:=ErrQuit, Zeit_Signal_zu_lang:=?, Zeit_Kein_Signal:=?, Signal:=?, Err_Kein_Signal:="7_HMI_Err_UH07_OB".Impulsgeber_3004.Kein_Signal, Err_Signal_zu_lang:="7_HMI_Err_UH07_OB".Impulsgeber_3004.Signal_zu_lang) + + A( + O "7_HMI_Err_UH07_OB".Impulsgeber_3004.Kein_Signal + O "7_HMI_Err_UH07_OB".Impulsgeber_3004.Signal_zu_lang + ) + AN ErrQuit + S "DVP_Antriebe".MA0145.Stat.Stop_vor + + A( + O "7_HMI_Err_UH07_OB".Impulsgeber_3004.Kein_Signal + O "7_HMI_Err_UH07_OB".Impulsgeber_3004.Signal_zu_lang + ) + S ErrAnz + + +--- NW 11: Sorter A-Antrieb nicht aktiv beim/nach Synchronisieren --- +// Antriebe Sorter A starten: + A "DVP_Sensoren".An_BG3120.Stat.B_Akt // damit Zeit ablaufen kann + S "DVP_Antriebe".MA0152.Stat.A_vor // Quer-Zuführung an + S "DVP_Antriebe".MA0145.Stat.A_start // Sorter A starten + +// Antrieb M0152 stoppen, da sonst Lücke zwischen 2 Trolleys kleiner wird + A "DVP_Sensoren".An_BG3120.Stat.B_Akt // Mit Zeitverzögerung! + AN "MA0145" // Aber Antrieb Sorter A nicht aktiv + S "DVP_Antriebe".MA0152.Stat.A_PS // Nicht stoppen, da sonst Lager-Ausfahrt blockiert + + +--- NW 12: Trolley synchronisieren BG3120 --- +// Teachen: Ref-Sensor ueber Sync-Sensor + A "BG3120" + AN Sync_BG3120.Dyn.Refpunkt_ok // Nur eimalige Auswertung + = Sync_BG3120.B_RefPunkt // uebergabe fuer unten + + A "MA0145" + L S5T#500ms + OffDelay "T143" + A "T143" + AN Sync_BG3120.Dyn.Status.TeachModus_Aktiv // sonst Probleme bei Doppelimpuls + O + A "MA0145" + A Sync_BG3120.Dyn.Status.TeachModus_Aktiv // sonst Probleme bei Doppelimpuls + = Antrieb + +// Keine Hauptstrangdaten vorhanden ? (Fuer Sync-Pkt): + L "VP_HS_A_oF".Datensortkopf.AnzahlEintraege + L "VP_HS_A_mF".Datensortkopf.AnzahlEintraege + +I + L 0 // Daten vorhanden ? + ==I // Nein ! + = "Hauptstrang_leer" // Keine Haupstrangdaten vorhanden -> Verklemm-Errors löschen + + A "BG3120" + L s5t#500ms // Da trotz Entprellung Doppel-Impulse + OffDelay "T144" + A "T144" + = Sync_BG3120.B_BT_da + +CALL FB "None" , (Sync_Nr:=3120, ErrQuit:=ErrQuit, B_BT_da:=?, B_RefPunkt:=?, B_TeachPunk:="BG3074", Antrieb_aktiv:=Antrieb, Error:=DB708.DBW204, Antrieb_start:="DVP_Antriebe".MA0145.Stat.A_start, hStOk:=ErrAnz) // Teach-Sensor + + A Sync_BG3120.Dyn.Error.Inkrementalgeber + S "DVP_Antriebe".MA0145.Stat.Stop_vor + +// Keine Hauptstrangdaten vorhanden ?: + L "VP_HS_A_oF".Datensortkopf.AnzahlEintraege + L "VP_HS_A_mF".Datensortkopf.AnzahlEintraege + +I + L 0 // Daten vorhanden ? + ==I // Nein ! + = "Hauptstrang_leer" // Keine Haupstrangdaten vorhanden -> Verklemm-Errors löschen + +// Reservierungen können gelöscht werden: + L "VP_TravelFIFO_A".Travel_FIFO_BG3120.FIFO.ANZAHL + L 0 // Daten vorhanden ? + ==I // Nein ! + A "Hauptstrang_leer" // Keine Haupstrangdaten vorhanden -> Verklemm-Errors löschen + = Sorter_A_leer + + +--- NW 13: Weiche 3087 / Vollpuffer VP1 --- +CALL FB "None" , (Weichen_Nr:=1, KorrekturFaktor:=?, ErrQuit:=ErrQuit, Stau_Ausfahrtbereich:="DVP_Sensoren".Stau_VP1.Stat.B_Akt, B_Gerade:=?, B_Ausfahrt:="BG3087", Antrieb_aktiv:=Antrieb, Y_Weiche_abzweigen:="DVP_Zylinder".Weiche_VP1.Stat.Ast, Y_Weiche_geradeaus:=?, Error:=DB708.DBW210, Antrieb_start:="DVP_Antriebe".MA0145.Stat.A_start, Antrieb_stoppen:="DVP_Antriebe".MA0145.Stat.Stop_vor, hStOk:=ErrAnz) + + +--- NW 14: Weiche 3086 / Vollpuffer VP2 --- +CALL FB "None" , (Weichen_Nr:=2, KorrekturFaktor:=?, ErrQuit:=ErrQuit, Stau_Ausfahrtbereich:="DVP_Sensoren".Stau_VP2.Stat.B_Akt, B_Gerade:=?, B_Ausfahrt:="BG3086", Antrieb_aktiv:=Antrieb, Y_Weiche_abzweigen:="DVP_Zylinder".Weiche_VP2.Stat.Ast, Y_Weiche_geradeaus:=?, Error:=DB708.DBW212, Antrieb_start:="DVP_Antriebe".MA0145.Stat.A_start, Antrieb_stoppen:="DVP_Antriebe".MA0145.Stat.Stop_vor, hStOk:=ErrAnz) + + +--- NW 15: Weiche 3085 / Vollpuffer VP3 --- +CALL FB "None" , (Weichen_Nr:=3, KorrekturFaktor:=?, ErrQuit:=ErrQuit, Stau_Ausfahrtbereich:="DVP_Sensoren".Stau_VP3.Stat.B_Akt, B_Gerade:=?, B_Ausfahrt:="BG3085", Antrieb_aktiv:=Antrieb, Y_Weiche_abzweigen:="DVP_Zylinder".Weiche_VP3.Stat.Ast, Y_Weiche_geradeaus:=?, Error:=DB708.DBW214, Antrieb_start:="DVP_Antriebe".MA0145.Stat.A_start, Antrieb_stoppen:="DVP_Antriebe".MA0145.Stat.Stop_vor, hStOk:=ErrAnz) + + +--- NW 16: Weiche 3084 / Vollpuffer VP4 --- +CALL FB "None" , (Weichen_Nr:=4, KorrekturFaktor:=?, ErrQuit:=ErrQuit, Stau_Ausfahrtbereich:="DVP_Sensoren".Stau_VP4.Stat.B_Akt, B_Gerade:=?, B_Ausfahrt:="BG3084", Antrieb_aktiv:=Antrieb, Y_Weiche_abzweigen:="DVP_Zylinder".Weiche_VP4.Stat.Ast, Y_Weiche_geradeaus:=?, Error:=DB708.DBW216, Antrieb_start:="DVP_Antriebe".MA0145.Stat.A_start, Antrieb_stoppen:="DVP_Antriebe".MA0145.Stat.Stop_vor, hStOk:=ErrAnz) + + +--- NW 17: Weiche 3083 / Vollpuffer VP5 --- +CALL FB "None" , (Weichen_Nr:=5, KorrekturFaktor:=?, ErrQuit:=ErrQuit, Stau_Ausfahrtbereich:="DVP_Sensoren".Stau_VP5.Stat.B_Akt, B_Gerade:="BG3062", B_Ausfahrt:="BG3083", Antrieb_aktiv:=Antrieb, Y_Weiche_abzweigen:="DVP_Zylinder".Weiche_VP5.Stat.Ast, Y_Weiche_geradeaus:=?, Error:=DB708.DBW218, Antrieb_start:="DVP_Antriebe".MA0145.Stat.A_start, Antrieb_stoppen:="DVP_Antriebe".MA0145.Stat.Stop_vor, hStOk:=ErrAnz) + + +--- NW 18: Weiche 3082 / Vollpuffer VP6 --- +CALL FB "None" , (Weichen_Nr:=6, KorrekturFaktor:=?, ErrQuit:=ErrQuit, Stau_Ausfahrtbereich:="DVP_Sensoren".Stau_VP6.Stat.B_Akt, B_Gerade:=?, B_Ausfahrt:="BG3082", Antrieb_aktiv:=Antrieb, Y_Weiche_abzweigen:="DVP_Zylinder".Weiche_VP6.Stat.Ast, Y_Weiche_geradeaus:=?, Error:=DB708.DBW220, Antrieb_start:="DVP_Antriebe".MA0145.Stat.A_start, Antrieb_stoppen:="DVP_Antriebe".MA0145.Stat.Stop_vor, hStOk:=ErrAnz) + + +--- NW 19: Weiche 3081 / Vollpuffer VP7 --- +CALL FB "None" , (Weichen_Nr:=7, KorrekturFaktor:=?, ErrQuit:=ErrQuit, Stau_Ausfahrtbereich:="DVP_Sensoren".Stau_VP7.Stat.B_Akt, B_Gerade:=?, B_Ausfahrt:="BG3081", Antrieb_aktiv:=Antrieb, Y_Weiche_abzweigen:="DVP_Zylinder".Weiche_VP7.Stat.Ast, Y_Weiche_geradeaus:=?, Error:=DB708.DBW222, Antrieb_start:="DVP_Antriebe".MA0145.Stat.A_start, Antrieb_stoppen:="DVP_Antriebe".MA0145.Stat.Stop_vor, hStOk:=ErrAnz) + + +--- NW 20: Weiche 3080 / Vollpuffer VP8 --- +CALL FB "None" , (Weichen_Nr:=8, KorrekturFaktor:=?, ErrQuit:=ErrQuit, Stau_Ausfahrtbereich:="DVP_Sensoren".Stau_VP8.Stat.B_Akt, B_Gerade:=?, B_Ausfahrt:="BG3080", Antrieb_aktiv:=Antrieb, Y_Weiche_abzweigen:="DVP_Zylinder".Weiche_VP8.Stat.Ast, Y_Weiche_geradeaus:=?, Error:=DB708.DBW224, Antrieb_start:="DVP_Antriebe".MA0145.Stat.A_start, Antrieb_stoppen:="DVP_Antriebe".MA0145.Stat.Stop_vor, hStOk:=ErrAnz) + + +--- NW 21: Weiche 3077 / Vollpuffer VP9 --- +CALL FB "None" , (Weichen_Nr:=9, KorrekturFaktor:=?, ErrQuit:=ErrQuit, Stau_Ausfahrtbereich:="DVP_Sensoren".Stau_VP9.Stat.B_Akt, B_Gerade:=?, B_Ausfahrt:="BG3077", Antrieb_aktiv:=Antrieb, Y_Weiche_abzweigen:="DVP_Zylinder".Weiche_VP9.Stat.Ast, Y_Weiche_geradeaus:=?, Error:=DB708.DBW226, Antrieb_start:="DVP_Antriebe".MA0145.Stat.A_start, Antrieb_stoppen:="DVP_Antriebe".MA0145.Stat.Stop_vor, hStOk:=ErrAnz) + + +--- NW 22: Weiche 3076 / Vollpuffer VP10 --- +CALL FB "None" , (Weichen_Nr:=10, KorrekturFaktor:=?, ErrQuit:=ErrQuit, Stau_Ausfahrtbereich:="DVP_Sensoren".Stau_VP10.Stat.B_Akt, B_Gerade:=?, B_Ausfahrt:="BG3076", Antrieb_aktiv:=Antrieb, Y_Weiche_abzweigen:="DVP_Zylinder".Weiche_VP10.Stat.Ast, Y_Weiche_geradeaus:=?, Error:=DB708.DBW228, Antrieb_start:="DVP_Antriebe".MA0145.Stat.A_start, Antrieb_stoppen:="DVP_Antriebe".MA0145.Stat.Stop_vor, hStOk:=ErrAnz) + + +--- NW 23: Weiche 3075 / Vollpuffer VP11 --- +CALL FB "None" , (Weichen_Nr:=11, KorrekturFaktor:=?, ErrQuit:=ErrQuit, Stau_Ausfahrtbereich:="DVP_Sensoren".Stau_VP11.Stat.B_Akt, B_Gerade:=?, B_Ausfahrt:="BG3075", Antrieb_aktiv:=Antrieb, Y_Weiche_abzweigen:="DVP_Zylinder".Weiche_VP11.Stat.Ast, Y_Weiche_geradeaus:=?, Error:=DB708.DBW230, Antrieb_start:="DVP_Antriebe".MA0145.Stat.A_start, Antrieb_stoppen:="DVP_Antriebe".MA0145.Stat.Stop_vor, hStOk:=ErrAnz) + + +--- NW 24: Weiche 3074 / Vollpuffer VP12 --- +CALL FB "None" , (Weichen_Nr:=12, KorrekturFaktor:=?, ErrQuit:=ErrQuit, Stau_Ausfahrtbereich:="DVP_Sensoren".Stau_VP12.Stat.B_Akt, B_Gerade:="BG3061", B_Ausfahrt:="BG3074", Antrieb_aktiv:=Antrieb, Y_Weiche_abzweigen:="DVP_Zylinder".Weiche_VP12.Stat.Ast, Y_Weiche_geradeaus:=?, Error:=DB708.DBW232, Antrieb_start:="DVP_Antriebe".MA0145.Stat.A_start, Antrieb_stoppen:="DVP_Antriebe".MA0145.Stat.Stop_vor, hStOk:=ErrAnz) + + +--- NW 25: Weiche 3073 / Vollpuffer VP13 --- +CALL FB "None" , (Weichen_Nr:=13, KorrekturFaktor:=?, ErrQuit:=ErrQuit, Stau_Ausfahrtbereich:="DVP_Sensoren".Stau_VP13.Stat.B_Akt, B_Gerade:=?, B_Ausfahrt:="BG3073", Antrieb_aktiv:=Antrieb, Y_Weiche_abzweigen:="DVP_Zylinder".Weiche_VP13.Stat.Ast, Y_Weiche_geradeaus:=?, Error:=DB708.DBW234, Antrieb_start:="DVP_Antriebe".MA0145.Stat.A_start, Antrieb_stoppen:="DVP_Antriebe".MA0145.Stat.Stop_vor, hStOk:=ErrAnz) + + +--- NW 26: Weiche 3072 / Vollpuffer VP14 --- +CALL FB "None" , (Weichen_Nr:=14, KorrekturFaktor:=?, ErrQuit:=ErrQuit, Stau_Ausfahrtbereich:="DVP_Sensoren".Stau_VP14.Stat.B_Akt, B_Gerade:=?, B_Ausfahrt:="BG3072", Antrieb_aktiv:=Antrieb, Y_Weiche_abzweigen:="DVP_Zylinder".Weiche_VP14.Stat.Ast, Y_Weiche_geradeaus:=?, Error:=DB708.DBW236, Antrieb_start:="DVP_Antriebe".MA0145.Stat.A_start, Antrieb_stoppen:="DVP_Antriebe".MA0145.Stat.Stop_vor, hStOk:=ErrAnz) + + +--- NW 27: Weiche 3071 / Vollpuffer VP15 --- +CALL FB "None" , (Weichen_Nr:=15, KorrekturFaktor:=?, ErrQuit:=ErrQuit, Stau_Ausfahrtbereich:="DVP_Sensoren".Stau_VP15.Stat.B_Akt, B_Gerade:=?, B_Ausfahrt:="BG3071", Antrieb_aktiv:=Antrieb, Y_Weiche_abzweigen:="DVP_Zylinder".Weiche_VP15.Stat.Ast, Y_Weiche_geradeaus:=?, Error:=DB708.DBW238, Antrieb_start:="DVP_Antriebe".MA0145.Stat.A_start, Antrieb_stoppen:="DVP_Antriebe".MA0145.Stat.Stop_vor, hStOk:=ErrAnz) + + +--- NW 28: Weiche 3070 / Vollpuffer VP16 --- +CALL FB "None" , (Weichen_Nr:=16, KorrekturFaktor:=?, ErrQuit:=ErrQuit, Stau_Ausfahrtbereich:="DVP_Sensoren".Stau_VP16.Stat.B_Akt, B_Gerade:=?, B_Ausfahrt:="BG3070", Antrieb_aktiv:=Antrieb, Y_Weiche_abzweigen:="DVP_Zylinder".Weiche_VP16.Stat.Ast, Y_Weiche_geradeaus:=?, Error:=DB708.DBW240, Antrieb_start:="DVP_Antriebe".MA0145.Stat.A_start, Antrieb_stoppen:="DVP_Antriebe".MA0145.Stat.Stop_vor, hStOk:=ErrAnz) + + +--- NW 29: Weiche 3067 / Vollpuffer VP17 --- +CALL FB "None" , (Weichen_Nr:=17, KorrekturFaktor:=?, ErrQuit:=ErrQuit, Stau_Ausfahrtbereich:="DVP_Sensoren".Stau_VP17.Stat.B_Akt, B_Gerade:=?, B_Ausfahrt:="BG3067", Antrieb_aktiv:=Antrieb, Y_Weiche_abzweigen:="DVP_Zylinder".Weiche_VP17.Stat.Ast, Y_Weiche_geradeaus:=?, Error:=DB708.DBW242, Antrieb_start:="DVP_Antriebe".MA0145.Stat.A_start, Antrieb_stoppen:="DVP_Antriebe".MA0145.Stat.Stop_vor, hStOk:=ErrAnz) + + +--- NW 30: Weiche 3066 / Vollpuffer VP18 --- +CALL FB "None" , (Weichen_Nr:=18, KorrekturFaktor:=?, ErrQuit:=ErrQuit, Stau_Ausfahrtbereich:="DVP_Sensoren".Stau_VP18.Stat.B_Akt, B_Gerade:="BG3060", B_Ausfahrt:="BG3066", Antrieb_aktiv:=Antrieb, Y_Weiche_abzweigen:="DVP_Zylinder".Weiche_VP18.Stat.Ast, Y_Weiche_geradeaus:=?, Error:=DB708.DBW244, Antrieb_start:="DVP_Antriebe".MA0145.Stat.A_start, Antrieb_stoppen:="DVP_Antriebe".MA0145.Stat.Stop_vor, hStOk:=ErrAnz) + + +--- NW 31: Weiche 3065 / Vollpuffer VP19 --- +CALL FB "None" , (Weichen_Nr:=19, KorrekturFaktor:=?, ErrQuit:=ErrQuit, Stau_Ausfahrtbereich:="DVP_Sensoren".Stau_VP19.Stat.B_Akt, B_Gerade:=?, B_Ausfahrt:="BG3065", Antrieb_aktiv:=Antrieb, Y_Weiche_abzweigen:="DVP_Zylinder".Weiche_VP19.Stat.Ast, Y_Weiche_geradeaus:=?, Error:=DB708.DBW246, Antrieb_start:="DVP_Antriebe".MA0145.Stat.A_start, Antrieb_stoppen:="DVP_Antriebe".MA0145.Stat.Stop_vor, hStOk:=ErrAnz) + + +--- NW 32: Weiche 3064 / Vollpuffer VP20 --- +CALL FB "None" , (Weichen_Nr:=20, KorrekturFaktor:=?, ErrQuit:=ErrQuit, Stau_Ausfahrtbereich:="DVP_Sensoren".Stau_VP20.Stat.B_Akt, B_Gerade:=?, B_Ausfahrt:="BG3064", Antrieb_aktiv:=Antrieb, Y_Weiche_abzweigen:="DVP_Zylinder".Weiche_VP20.Stat.Ast, Y_Weiche_geradeaus:=?, Error:=DB708.DBW248, Antrieb_start:="DVP_Antriebe".MA0145.Stat.A_start, Antrieb_stoppen:="DVP_Antriebe".MA0145.Stat.Stop_vor, hStOk:=ErrAnz) + + +--- NW 33: Weiche 3063 / Vollpuffer VP21 --- +CALL FB "None" , (Weichen_Nr:=21, KorrekturFaktor:=?, ErrQuit:=ErrQuit, Stau_Ausfahrtbereich:="DVP_Sensoren".Stau_VP21.Stat.B_Akt, B_Gerade:=?, B_Ausfahrt:="BG3063", Antrieb_aktiv:=Antrieb, Y_Weiche_abzweigen:="DVP_Zylinder".Weiche_VP21.Stat.Ast, Y_Weiche_geradeaus:=?, Error:=DB708.DBW250, Antrieb_start:="DVP_Antriebe".MA0145.Stat.A_start, Antrieb_stoppen:="DVP_Antriebe".MA0145.Stat.Stop_vor, hStOk:=ErrAnz) + + +--- NW 34: Weiche 3027 / Vollpuffer VP22 --- +CALL FB "None" , (Weichen_Nr:=22, KorrekturFaktor:=?, ErrQuit:=ErrQuit, Stau_Ausfahrtbereich:="DVP_Sensoren".Stau_VP22.Stat.B_Akt, B_Gerade:=?, B_Ausfahrt:="BG3027", Antrieb_aktiv:=Antrieb, Y_Weiche_abzweigen:="DVP_Zylinder".Weiche_VP22.Stat.Ast, Y_Weiche_geradeaus:=?, Error:=DB708.DBW252, Antrieb_start:="DVP_Antriebe".MA0145.Stat.A_start, Antrieb_stoppen:="DVP_Antriebe".MA0145.Stat.Stop_vor, hStOk:=ErrAnz) + + +--- NW 35: Weiche 3026 / Vollpuffer VP23 --- +CALL FB "None" , (Weichen_Nr:=23, KorrekturFaktor:=?, ErrQuit:=ErrQuit, Stau_Ausfahrtbereich:="DVP_Sensoren".Stau_VP23.Stat.B_Akt, B_Gerade:=?, B_Ausfahrt:="BG3026", Antrieb_aktiv:=Antrieb, Y_Weiche_abzweigen:="DVP_Zylinder".Weiche_VP23.Stat.Ast, Y_Weiche_geradeaus:=?, Error:=DB708.DBW254, Antrieb_start:="DVP_Antriebe".MA0145.Stat.A_start, Antrieb_stoppen:="DVP_Antriebe".MA0145.Stat.Stop_vor, hStOk:=ErrAnz) + + +--- NW 36: Weiche 3025 / Vollpuffer VP24 --- +CALL FB "None" , (Weichen_Nr:=24, KorrekturFaktor:=?, ErrQuit:=ErrQuit, Stau_Ausfahrtbereich:="DVP_Sensoren".Stau_VP24.Stat.B_Akt, B_Gerade:=?, B_Ausfahrt:="BG3025", Antrieb_aktiv:=Antrieb, Y_Weiche_abzweigen:="DVP_Zylinder".Weiche_VP24.Stat.Ast, Y_Weiche_geradeaus:=?, Error:=DB708.DBW256, Antrieb_start:="DVP_Antriebe".MA0145.Stat.A_start, Antrieb_stoppen:="DVP_Antriebe".MA0145.Stat.Stop_vor, hStOk:=ErrAnz) + + +--- NW 37: Weiche 3024 / Vollpuffer VP25 --- +CALL FB "None" , (Weichen_Nr:=25, KorrekturFaktor:=?, ErrQuit:=ErrQuit, Stau_Ausfahrtbereich:="DVP_Sensoren".Stau_VP25.Stat.B_Akt, B_Gerade:="BG3003", B_Ausfahrt:="BG3024", Antrieb_aktiv:=Antrieb, Y_Weiche_abzweigen:="DVP_Zylinder".Weiche_VP25.Stat.Ast, Y_Weiche_geradeaus:=?, Error:=DB708.DBW258, Antrieb_start:="DVP_Antriebe".MA0145.Stat.A_start, Antrieb_stoppen:="DVP_Antriebe".MA0145.Stat.Stop_vor, hStOk:=ErrAnz) + + +--- NW 38: Übergabe BG3003 --- +CALL FB "None" , (Uebergabe_Nr:=3003, KorrekturFaktor:=1.0, ErrQuit:=ErrQuit, Antrieb_aktiv:=Antrieb, Error:=DB708.DBW206, Antrieb_start:="DVP_Antriebe".MA0145.Stat.A_start, Antrieb_stoppen:="DVP_Antriebe".MA0145.Stat.Stop_vor, hStOk:=ErrAnz) + + +--- NW 39: Sorter B-Antrieb nicht aktiv bei Übergabe (Daten in Travel-FIFO B) --- + L "VP_TravelFIFO_B".Travel_FIFO_BG3003.FIFO.ANZAHL + L 0 // Daten vorhanden ? + >I // Ja ! + O "DVP_Sensoren".An_BG3003.Stat.B_Akt // Mit Zeitverzögerung! + = Trolley_dazwischen + +// Antrieb Sorter B starten: + L "DVP_Sorter_B".Weiche_VP26.Dyn.Hauptstrang_Ink // Inkremente zum Weiche schalten (vom Hauptstrang) + L DINT#0 // schon bekannt ? + >D // Ja ! + A "DVP_Sorter_B".Weiche_VP26.Y_Weiche_geradeaus + O Trolley_dazwischen + S "DVP_Antriebe".MA0145.Stat.A_vor // Sorter A an + S "DVP_Antriebe".MA0146.Stat.A_start // Sorter B starten + +// Antrieb Sorter A stoppen: + A Trolley_dazwischen + AN "MA0146" // Aber Antrieb Sorter B nicht aktiv + S "DVP_Antriebe".MA0145.Stat.Stop_vor + = "7_HMI_Err_UH07_OB".Sorter_Vollpuffer."Sorter A stop" + + +--- NW 40: Störungen anzeigen UZ7102/7103 --- + A ErrAnz + S "DOutbound_Bereich".A01_UZ7102.StOk_blinken + S "DOutbound_Bereich".A01_UZ7103.StOk_blinken + + +--- NW 41: Ende --- + BE + diff --git a/=A01+UH07-KF00/Programmbausteine/Anlage/1_Vollpuffer/Sorter_Vollpuffer/VP_Sorter_B.awl b/=A01+UH07-KF00/Programmbausteine/Anlage/1_Vollpuffer/Sorter_Vollpuffer/VP_Sorter_B.awl new file mode 100644 index 0000000..a6e86f0 --- /dev/null +++ b/=A01+UH07-KF00/Programmbausteine/Anlage/1_Vollpuffer/Sorter_Vollpuffer/VP_Sorter_B.awl @@ -0,0 +1,377 @@ +=== FB 1523: VP_Sorter_B [STL] === +INTERFACE: + Input: + Output: + InOut: + Static: + Sync_BG3003 : "MStartSync" + Frei300 : Array[1..75] of Word + Weiche_VP26 : "MWeiche_Sorter" + Weiche_VP27 : "MWeiche_Sorter" + Weiche_VP28 : "MWeiche_Sorter" + Weiche_VP29 : "MWeiche_Sorter" + Weiche_VP30 : "MWeiche_Sorter" + Weiche_VP31 : "MWeiche_Sorter" + Weiche_VP32 : "MWeiche_Sorter" + Weiche_VP33 : "MWeiche_Sorter" + Weiche_VP34 : "MWeiche_Sorter" + Weiche_VP35 : "MWeiche_Sorter" + Weiche_VP36 : "MWeiche_Sorter" + Weiche_VP37 : "MWeiche_Sorter" + Weiche_VP38 : "MWeiche_Sorter" + Weiche_VP39 : "MWeiche_Sorter" + Weiche_VP40 : "MWeiche_Sorter" + Weiche_VP41 : "MWeiche_Sorter" + Weiche_VP42 : "MWeiche_Sorter" + Weiche_VP43 : "MWeiche_Sorter" + Weiche_VP44 : "MWeiche_Sorter" + Weiche_VP45 : "MWeiche_Sorter" + Weiche_VP46 : "MWeiche_Sorter" + Weiche_VP47 : "MWeiche_Sorter" + Weiche_VP48 : "MWeiche_Sorter" + Weiche_VP49 : "MWeiche_Sorter" + Weiche_VP50 : "MWeiche_Sorter" + Weiche_VP51 : "MWeiche_Sorter" + Impuls_BG3004 : "MImpulsGeber" + Sorter_B_leer : Bool + Temp: + ErrQuit : Bool + ErrAnz : Bool + Antrieb : Bool + Stau : Bool + Start_Ok : Bool + Error_aktiv : Bool + Leer : Bool + Err_DW : DInt + Err_Bits : Int + Constant: + +--- NW 1: Systemzeug --- +// Kein Sorterbeginn, nur Weichen + +// Sonderbetriebsarten Weichen: + CLR + = Weiche_VP26.Dyn.Status.Weichentest_aktiv + = Weiche_VP27.Dyn.Status.Weichentest_aktiv + = Weiche_VP28.Dyn.Status.Weichentest_aktiv + = Weiche_VP29.Dyn.Status.Weichentest_aktiv + = Weiche_VP30.Dyn.Status.Weichentest_aktiv + = Weiche_VP31.Dyn.Status.Weichentest_aktiv + = Weiche_VP32.Dyn.Status.Weichentest_aktiv + = Weiche_VP33.Dyn.Status.Weichentest_aktiv + = Weiche_VP34.Dyn.Status.Weichentest_aktiv + = Weiche_VP35.Dyn.Status.Weichentest_aktiv + = Weiche_VP36.Dyn.Status.Weichentest_aktiv + = Weiche_VP37.Dyn.Status.Weichentest_aktiv + = Weiche_VP38.Dyn.Status.Weichentest_aktiv + = Weiche_VP39.Dyn.Status.Weichentest_aktiv + = Weiche_VP40.Dyn.Status.Weichentest_aktiv + = Weiche_VP41.Dyn.Status.Weichentest_aktiv + = Weiche_VP42.Dyn.Status.Weichentest_aktiv + = Weiche_VP43.Dyn.Status.Weichentest_aktiv + = Weiche_VP44.Dyn.Status.Weichentest_aktiv + = Weiche_VP45.Dyn.Status.Weichentest_aktiv + = Weiche_VP46.Dyn.Status.Weichentest_aktiv + = Weiche_VP47.Dyn.Status.Weichentest_aktiv + = Weiche_VP48.Dyn.Status.Weichentest_aktiv + = Weiche_VP49.Dyn.Status.Weichentest_aktiv + = Weiche_VP50.Dyn.Status.Weichentest_aktiv + = Weiche_VP51.Dyn.Status.Weichentest_aktiv + + A Sync_BG3003.Dyn.Status.TeachModus_Aktiv + = Weiche_VP26.Dyn.Status.TeachModus_aktiv + = Weiche_VP27.Dyn.Status.TeachModus_aktiv + = Weiche_VP28.Dyn.Status.TeachModus_aktiv + = Weiche_VP29.Dyn.Status.TeachModus_aktiv + = Weiche_VP30.Dyn.Status.TeachModus_aktiv + = Weiche_VP31.Dyn.Status.TeachModus_aktiv + = Weiche_VP32.Dyn.Status.TeachModus_aktiv + = Weiche_VP33.Dyn.Status.TeachModus_aktiv + = Weiche_VP34.Dyn.Status.TeachModus_aktiv + = Weiche_VP35.Dyn.Status.TeachModus_aktiv + = Weiche_VP36.Dyn.Status.TeachModus_aktiv + = Weiche_VP37.Dyn.Status.TeachModus_aktiv + = Weiche_VP38.Dyn.Status.TeachModus_aktiv + = Weiche_VP39.Dyn.Status.TeachModus_aktiv + = Weiche_VP40.Dyn.Status.TeachModus_aktiv + = Weiche_VP41.Dyn.Status.TeachModus_aktiv + = Weiche_VP42.Dyn.Status.TeachModus_aktiv + = Weiche_VP43.Dyn.Status.TeachModus_aktiv + = Weiche_VP44.Dyn.Status.TeachModus_aktiv + = Weiche_VP45.Dyn.Status.TeachModus_aktiv + = Weiche_VP46.Dyn.Status.TeachModus_aktiv + = Weiche_VP47.Dyn.Status.TeachModus_aktiv + = Weiche_VP48.Dyn.Status.TeachModus_aktiv + = Weiche_VP49.Dyn.Status.TeachModus_aktiv + = Weiche_VP50.Dyn.Status.TeachModus_aktiv + = Weiche_VP51.Dyn.Status.TeachModus_aktiv + + L 1474 // DLSeps + T "MW174" + L 1578 // DLWeichen + T "MW178" + +// Nach neuen Daten suchen: + A "1s-Impuls" + = "Weiche_NewData" + + +--- NW 2: Störung quittieren UZ7103/7106 --- + A "DOutbound_Bereich".A01_UZ7103.StOk_aktiv + O "DOutbound_Bereich".A01_UZ7106.StOk_aktiv + = ErrQuit + + +--- NW 3: Reset ist aktiv --- + A "DVP_Sorter_A".Sorter_MB3121.Dyn.GesamtSorterReset_aktiv + O "DVP_Sorter_A".Sorter_MB3123.Dyn.GesamtSorterReset_aktiv + = Weiche_VP26.Dyn.Ohne_VerklemmKontrolle + = Weiche_VP27.Dyn.Ohne_VerklemmKontrolle + = Weiche_VP28.Dyn.Ohne_VerklemmKontrolle + = Weiche_VP29.Dyn.Ohne_VerklemmKontrolle + = Weiche_VP30.Dyn.Ohne_VerklemmKontrolle + = Weiche_VP31.Dyn.Ohne_VerklemmKontrolle + = Weiche_VP32.Dyn.Ohne_VerklemmKontrolle + = Weiche_VP33.Dyn.Ohne_VerklemmKontrolle + = Weiche_VP34.Dyn.Ohne_VerklemmKontrolle + = Weiche_VP35.Dyn.Ohne_VerklemmKontrolle + = Weiche_VP36.Dyn.Ohne_VerklemmKontrolle + = Weiche_VP37.Dyn.Ohne_VerklemmKontrolle + = Weiche_VP38.Dyn.Ohne_VerklemmKontrolle + = Weiche_VP39.Dyn.Ohne_VerklemmKontrolle + = Weiche_VP40.Dyn.Ohne_VerklemmKontrolle + = Weiche_VP41.Dyn.Ohne_VerklemmKontrolle + = Weiche_VP42.Dyn.Ohne_VerklemmKontrolle + = Weiche_VP43.Dyn.Ohne_VerklemmKontrolle + = Weiche_VP44.Dyn.Ohne_VerklemmKontrolle + = Weiche_VP45.Dyn.Ohne_VerklemmKontrolle + = Weiche_VP46.Dyn.Ohne_VerklemmKontrolle + = Weiche_VP47.Dyn.Ohne_VerklemmKontrolle + = Weiche_VP48.Dyn.Ohne_VerklemmKontrolle + = Weiche_VP49.Dyn.Ohne_VerklemmKontrolle + = Weiche_VP50.Dyn.Ohne_VerklemmKontrolle + = Weiche_VP51.Dyn.Ohne_VerklemmKontrolle + +// Diesen Sorterbereich zurücksetzen: + A "DVP_Sorter_A".Sorter1Reset // Ein Zyklus + O "DVP_Sorter_A".Sorter2Reset // Ein Zyklus + S Sync_BG3003.Dyn.Reset + S Weiche_VP26.Dyn.Status.Reset + S Weiche_VP27.Dyn.Status.Reset + S Weiche_VP28.Dyn.Status.Reset + S Weiche_VP29.Dyn.Status.Reset + S Weiche_VP30.Dyn.Status.Reset + S Weiche_VP31.Dyn.Status.Reset + S Weiche_VP32.Dyn.Status.Reset + S Weiche_VP33.Dyn.Status.Reset + S Weiche_VP34.Dyn.Status.Reset + S Weiche_VP35.Dyn.Status.Reset + S Weiche_VP36.Dyn.Status.Reset + S Weiche_VP37.Dyn.Status.Reset + S Weiche_VP38.Dyn.Status.Reset + S Weiche_VP39.Dyn.Status.Reset + S Weiche_VP40.Dyn.Status.Reset + S Weiche_VP41.Dyn.Status.Reset + S Weiche_VP42.Dyn.Status.Reset + S Weiche_VP43.Dyn.Status.Reset + S Weiche_VP44.Dyn.Status.Reset + S Weiche_VP45.Dyn.Status.Reset + S Weiche_VP46.Dyn.Status.Reset + S Weiche_VP47.Dyn.Status.Reset + S Weiche_VP48.Dyn.Status.Reset + S Weiche_VP49.Dyn.Status.Reset + S Weiche_VP50.Dyn.Status.Reset + S Weiche_VP51.Dyn.Status.Reset + + +--- NW 4: Inkremente über Zahnrad-Sensor --- +CALL FB "None" , (Ink_DB:=1583, B_Zaehlen:="BG3004", Antrieb_aktiv:="MA0146", Quit:=ErrQuit, Zeit_Signal_zu_lang:=?, Zeit_Kein_Signal:=?, Signal:=?, Err_Kein_Signal:="7_HMI_Err_UH07_OB".Impulsgeber_3004.Kein_Signal, Err_Signal_zu_lang:="7_HMI_Err_UH07_OB".Impulsgeber_3004.Signal_zu_lang) + + A( + O "7_HMI_Err_UH07_OB".Impulsgeber_3004.Kein_Signal + O "7_HMI_Err_UH07_OB".Impulsgeber_3004.Signal_zu_lang + ) + AN ErrQuit + S "DVP_Antriebe".MA0146.Stat.Stop_vor + + A( + O "7_HMI_Err_UH07_OB".Impulsgeber_3004.Kein_Signal + O "7_HMI_Err_UH07_OB".Impulsgeber_3004.Signal_zu_lang + ) + = ErrAnz + + +--- NW 5: Trolley synchronisieren BG3003 --- +// Teachen: Ref-Sensor ueber Sync-Sensor + A "BG3003" + AN Sync_BG3003.Dyn.Refpunkt_ok // Nur eimalige Auswertung + = Sync_BG3003.B_RefPunkt // uebergabe fuer unten + + A "MA0146" + L S5T#500ms + OffDelay "T153" + A "T153" + AN Sync_BG3003.Dyn.Status.TeachModus_Aktiv // sonst Probleme bei Doppelimpuls + O + A "MA0146" + A Sync_BG3003.Dyn.Status.TeachModus_Aktiv // sonst Probleme bei Doppelimpuls + = Antrieb + +// Keine Hauptstrangdaten vorhanden ? (Fuer Sync-Pkt): + L "VP_HS_B_oF".Datensortkopf.AnzahlEintraege + L "VP_HS_B_mF".Datensortkopf.AnzahlEintraege + +I + L 0 // Daten vorhanden ? + ==I // Nein ! + = "Hauptstrang_leer" // Keine Haupstrangdaten vorhanden -> Verklemm-Errors löschen + + A "BG3003" + L s5t#500ms // Da trotz Entprellung Doppel-Impulse + OffDelay "T154" + A "T154" + = Sync_BG3003.B_BT_da + +CALL FB "None" , (Sync_Nr:=3003, ErrQuit:=ErrQuit, B_BT_da:=?, B_RefPunkt:=?, B_TeachPunk:="BG3007", Antrieb_aktiv:=Antrieb, Error:=DB708.DBW208, Antrieb_start:="DVP_Antriebe".MA0146.Stat.A_start, hStOk:=ErrAnz) // Teach-Sensor + + A Sync_BG3003.Dyn.Error.Inkrementalgeber + S "DVP_Antriebe".MA0146.Stat.Stop_vor + +// Keine Hauptstrangdaten vorhanden ?: + L "VP_HS_B_oF".Datensortkopf.AnzahlEintraege + L "VP_HS_B_mF".Datensortkopf.AnzahlEintraege + +I + L 0 // Daten vorhanden ? + ==I // Nein ! + = "Hauptstrang_leer" // Keine Haupstrangdaten vorhanden -> Verklemm-Errors löschen + +// Reservierungen können gelöscht werden: + L "VP_TravelFIFO_B".Travel_FIFO_BG3003.FIFO.ANZAHL + L 0 // Daten vorhanden ? + ==I // Nein ! + A "Hauptstrang_leer" // Keine Haupstrangdaten vorhanden -> Verklemm-Errors löschen + = Sorter_B_leer + + +--- NW 6: Weiche 3023 / Vollpuffer VP26 --- +CALL FB "None" , (Weichen_Nr:=26, KorrekturFaktor:=?, ErrQuit:=ErrQuit, Stau_Ausfahrtbereich:="DVP_Sensoren".Stau_VP26.Stat.B_Akt, B_Gerade:=?, B_Ausfahrt:="BG3023", Antrieb_aktiv:=Antrieb, Y_Weiche_abzweigen:="DVP_Zylinder".Weiche_VP26.Stat.Ast, Y_Weiche_geradeaus:=?, Error:=DB708.DBW260, Antrieb_start:="DVP_Antriebe".MA0146.Stat.A_start, Antrieb_stoppen:="DVP_Antriebe".MA0146.Stat.Stop_vor, hStOk:=ErrAnz) + + +--- NW 7: Weiche 3022/ Vollpuffer VP27 --- +CALL FB "None" , (Weichen_Nr:=27, KorrekturFaktor:=?, ErrQuit:=ErrQuit, Stau_Ausfahrtbereich:="DVP_Sensoren".Stau_VP27.Stat.B_Akt, B_Gerade:=?, B_Ausfahrt:="BG3022", Antrieb_aktiv:=Antrieb, Y_Weiche_abzweigen:="DVP_Zylinder".Weiche_VP27.Stat.Ast, Y_Weiche_geradeaus:=?, Error:=DB708.DBW262, Antrieb_start:="DVP_Antriebe".MA0146.Stat.A_start, Antrieb_stoppen:="DVP_Antriebe".MA0146.Stat.Stop_vor, hStOk:=ErrAnz) + + +--- NW 8: Weiche 3021 / Vollpuffer VP28 --- +CALL FB "None" , (Weichen_Nr:=28, KorrekturFaktor:=?, ErrQuit:=ErrQuit, Stau_Ausfahrtbereich:="DVP_Sensoren".Stau_VP28.Stat.B_Akt, B_Gerade:=?, B_Ausfahrt:="BG3021", Antrieb_aktiv:=Antrieb, Y_Weiche_abzweigen:="DVP_Zylinder".Weiche_VP28.Stat.Ast, Y_Weiche_geradeaus:=?, Error:=DB708.DBW264, Antrieb_start:="DVP_Antriebe".MA0146.Stat.A_start, Antrieb_stoppen:="DVP_Antriebe".MA0146.Stat.Stop_vor, hStOk:=ErrAnz) + + +--- NW 9: Weiche 3020/ Vollpuffer VP29 --- +CALL FB "None" , (Weichen_Nr:=29, KorrekturFaktor:=?, ErrQuit:=ErrQuit, Stau_Ausfahrtbereich:="DVP_Sensoren".Stau_VP29.Stat.B_Akt, B_Gerade:=?, B_Ausfahrt:="BG3020", Antrieb_aktiv:=Antrieb, Y_Weiche_abzweigen:="DVP_Zylinder".Weiche_VP29.Stat.Ast, Y_Weiche_geradeaus:=?, Error:=DB708.DBW266, Antrieb_start:="DVP_Antriebe".MA0146.Stat.A_start, Antrieb_stoppen:="DVP_Antriebe".MA0146.Stat.Stop_vor, hStOk:=ErrAnz) + + +--- NW 10: Weiche 3017 / Vollpuffer VP30 --- +CALL FB "None" , (Weichen_Nr:=30, KorrekturFaktor:=?, ErrQuit:=ErrQuit, Stau_Ausfahrtbereich:="DVP_Sensoren".Stau_VP30.Stat.B_Akt, B_Gerade:=?, B_Ausfahrt:="BG3017", Antrieb_aktiv:=Antrieb, Y_Weiche_abzweigen:="DVP_Zylinder".Weiche_VP30.Stat.Ast, Y_Weiche_geradeaus:=?, Error:=DB708.DBW268, Antrieb_start:="DVP_Antriebe".MA0146.Stat.A_start, Antrieb_stoppen:="DVP_Antriebe".MA0146.Stat.Stop_vor, hStOk:=ErrAnz) + + +--- NW 11: Weiche 3016 / Vollpuffer VP31 --- +CALL FB "None" , (Weichen_Nr:=31, KorrekturFaktor:=?, ErrQuit:=ErrQuit, Stau_Ausfahrtbereich:="DVP_Sensoren".Stau_VP31.Stat.B_Akt, B_Gerade:="BG3002", B_Ausfahrt:="BG3016", Antrieb_aktiv:=Antrieb, Y_Weiche_abzweigen:="DVP_Zylinder".Weiche_VP31.Stat.Ast, Y_Weiche_geradeaus:=?, Error:=DB708.DBW270, Antrieb_start:="DVP_Antriebe".MA0146.Stat.A_start, Antrieb_stoppen:="DVP_Antriebe".MA0146.Stat.Stop_vor, hStOk:=ErrAnz) + + +--- NW 12: Weiche 3015 / Vollpuffer VP32 --- +CALL FB "None" , (Weichen_Nr:=32, KorrekturFaktor:=?, ErrQuit:=ErrQuit, Stau_Ausfahrtbereich:="DVP_Sensoren".Stau_VP32.Stat.B_Akt, B_Gerade:=?, B_Ausfahrt:="BG3015", Antrieb_aktiv:=Antrieb, Y_Weiche_abzweigen:="DVP_Zylinder".Weiche_VP32.Stat.Ast, Y_Weiche_geradeaus:=?, Error:=DB708.DBW272, Antrieb_start:="DVP_Antriebe".MA0146.Stat.A_start, Antrieb_stoppen:="DVP_Antriebe".MA0146.Stat.Stop_vor, hStOk:=ErrAnz) + + +--- NW 13: Weiche 3014 / Vollpuffer VP33 --- +CALL FB "None" , (Weichen_Nr:=33, KorrekturFaktor:=?, ErrQuit:=ErrQuit, Stau_Ausfahrtbereich:="DVP_Sensoren".Stau_VP33.Stat.B_Akt, B_Gerade:=?, B_Ausfahrt:="BG3014", Antrieb_aktiv:=Antrieb, Y_Weiche_abzweigen:="DVP_Zylinder".Weiche_VP33.Stat.Ast, Y_Weiche_geradeaus:=?, Error:=DB708.DBW274, Antrieb_start:="DVP_Antriebe".MA0146.Stat.A_start, Antrieb_stoppen:="DVP_Antriebe".MA0146.Stat.Stop_vor, hStOk:=ErrAnz) + + +--- NW 14: Weiche 3013 / Vollpuffer VP34 --- +CALL FB "None" , (Weichen_Nr:=34, KorrekturFaktor:=?, ErrQuit:=ErrQuit, Stau_Ausfahrtbereich:="DVP_Sensoren".Stau_VP34.Stat.B_Akt, B_Gerade:=?, B_Ausfahrt:="BG3013", Antrieb_aktiv:=Antrieb, Y_Weiche_abzweigen:="DVP_Zylinder".Weiche_VP34.Stat.Ast, Y_Weiche_geradeaus:=?, Error:=DB708.DBW276, Antrieb_start:="DVP_Antriebe".MA0146.Stat.A_start, Antrieb_stoppen:="DVP_Antriebe".MA0146.Stat.Stop_vor, hStOk:=ErrAnz) + + +--- NW 15: Weiche 3012 / Vollpuffer VP35 --- +CALL FB "None" , (Weichen_Nr:=35, KorrekturFaktor:=?, ErrQuit:=ErrQuit, Stau_Ausfahrtbereich:="DVP_Sensoren".Stau_VP35.Stat.B_Akt, B_Gerade:=?, B_Ausfahrt:="BG3012", Antrieb_aktiv:=Antrieb, Y_Weiche_abzweigen:="DVP_Zylinder".Weiche_VP35.Stat.Ast, Y_Weiche_geradeaus:=?, Error:=DB708.DBW278, Antrieb_start:="DVP_Antriebe".MA0146.Stat.A_start, Antrieb_stoppen:="DVP_Antriebe".MA0146.Stat.Stop_vor, hStOk:=ErrAnz) + + +--- NW 16: Weiche 3011/ Vollpuffer VP36 --- +CALL FB "None" , (Weichen_Nr:=36, KorrekturFaktor:=?, ErrQuit:=ErrQuit, Stau_Ausfahrtbereich:="DVP_Sensoren".Stau_VP36.Stat.B_Akt, B_Gerade:=?, B_Ausfahrt:="BG3011", Antrieb_aktiv:=Antrieb, Y_Weiche_abzweigen:="DVP_Zylinder".Weiche_VP36.Stat.Ast, Y_Weiche_geradeaus:=?, Error:=DB708.DBW280, Antrieb_start:="DVP_Antriebe".MA0146.Stat.A_start, Antrieb_stoppen:="DVP_Antriebe".MA0146.Stat.Stop_vor, hStOk:=ErrAnz) + + +--- NW 17: Weiche 3010 / Vollpuffer VP37 --- +CALL FB "None" , (Weichen_Nr:=37, KorrekturFaktor:=?, ErrQuit:=ErrQuit, Stau_Ausfahrtbereich:="DVP_Sensoren".Stau_VP37.Stat.B_Akt, B_Gerade:=?, B_Ausfahrt:="BG3010", Antrieb_aktiv:=Antrieb, Y_Weiche_abzweigen:="DVP_Zylinder".Weiche_VP37.Stat.Ast, Y_Weiche_geradeaus:=?, Error:=DB708.DBW282, Antrieb_start:="DVP_Antriebe".MA0146.Stat.A_start, Antrieb_stoppen:="DVP_Antriebe".MA0146.Stat.Stop_vor, hStOk:=ErrAnz) + + +--- NW 18: Weiche 3007 / Vollpuffer VP38 --- +CALL FB "None" , (Weichen_Nr:=38, KorrekturFaktor:=?, ErrQuit:=ErrQuit, Stau_Ausfahrtbereich:="DVP_Sensoren".Stau_VP38.Stat.B_Akt, B_Gerade:="BG3001", B_Ausfahrt:="BG3007", Antrieb_aktiv:=Antrieb, Y_Weiche_abzweigen:="DVP_Zylinder".Weiche_VP38.Stat.Ast, Y_Weiche_geradeaus:=?, Error:=DB708.DBW284, Antrieb_start:="DVP_Antriebe".MA0146.Stat.A_start, Antrieb_stoppen:="DVP_Antriebe".MA0146.Stat.Stop_vor, hStOk:=ErrAnz) + + +--- NW 19: Weiche 3006 / Vollpuffer VP39 --- +CALL FB "None" , (Weichen_Nr:=39, KorrekturFaktor:=?, ErrQuit:=ErrQuit, Stau_Ausfahrtbereich:="DVP_Sensoren".Stau_VP39.Stat.B_Akt, B_Gerade:=?, B_Ausfahrt:="BG3006", Antrieb_aktiv:=Antrieb, Y_Weiche_abzweigen:="DVP_Zylinder".Weiche_VP39.Stat.Ast, Y_Weiche_geradeaus:=?, Error:=DB708.DBW286, Antrieb_start:="DVP_Antriebe".MA0146.Stat.A_start, Antrieb_stoppen:="DVP_Antriebe".MA0146.Stat.Stop_vor, hStOk:=ErrAnz) + + +--- NW 20: Weiche 3005 / Vollpuffer VP40 --- +CALL FB "None" , (Weichen_Nr:=40, KorrekturFaktor:=?, ErrQuit:=ErrQuit, Stau_Ausfahrtbereich:="DVP_Sensoren".Stau_VP40.Stat.B_Akt, B_Gerade:=?, B_Ausfahrt:="BG3005", Antrieb_aktiv:=Antrieb, Y_Weiche_abzweigen:="DVP_Zylinder".Weiche_VP40.Stat.Ast, Y_Weiche_geradeaus:=?, Error:=DB708.DBW288, Antrieb_start:="DVP_Antriebe".MA0146.Stat.A_start, Antrieb_stoppen:="DVP_Antriebe".MA0146.Stat.Stop_vor, hStOk:=ErrAnz) + + +--- NW 21: Weiche 3435 / Vollpuffer VP41 --- +CALL FB "None" , (Weichen_Nr:=41, KorrekturFaktor:=?, ErrQuit:=ErrQuit, Stau_Ausfahrtbereich:="DVP_Sensoren".Stau_VP41.Stat.B_Akt, B_Gerade:=?, B_Ausfahrt:="BG3435", Antrieb_aktiv:=Antrieb, Y_Weiche_abzweigen:="DVP_Zylinder".Weiche_VP41.Stat.Ast, Y_Weiche_geradeaus:=?, Error:=DB708.DBW290, Antrieb_start:="DVP_Antriebe".MA0146.Stat.A_start, Antrieb_stoppen:="DVP_Antriebe".MA0146.Stat.Stop_vor, hStOk:=ErrAnz) + + +--- NW 22: Weiche 3434 / Vollpuffer VP42 --- +CALL FB "None" , (Weichen_Nr:=42, KorrekturFaktor:=?, ErrQuit:=ErrQuit, Stau_Ausfahrtbereich:="DVP_Sensoren".Stau_VP42.Stat.B_Akt, B_Gerade:=?, B_Ausfahrt:="BG3434", Antrieb_aktiv:=Antrieb, Y_Weiche_abzweigen:="DVP_Zylinder".Weiche_VP42.Stat.Ast, Y_Weiche_geradeaus:=?, Error:=DB708.DBW292, Antrieb_start:="DVP_Antriebe".MA0146.Stat.A_start, Antrieb_stoppen:="DVP_Antriebe".MA0146.Stat.Stop_vor, hStOk:=ErrAnz) + + +--- NW 23: Weiche 3433 / Vollpuffer VP43 --- +CALL FB "None" , (Weichen_Nr:=43, KorrekturFaktor:=?, ErrQuit:=ErrQuit, Stau_Ausfahrtbereich:="DVP_Sensoren".Stau_VP43.Stat.B_Akt, B_Gerade:=?, B_Ausfahrt:="BG3433", Antrieb_aktiv:=Antrieb, Y_Weiche_abzweigen:="DVP_Zylinder".Weiche_VP43.Stat.Ast, Y_Weiche_geradeaus:=?, Error:=DB708.DBW294, Antrieb_start:="DVP_Antriebe".MA0146.Stat.A_start, Antrieb_stoppen:="DVP_Antriebe".MA0146.Stat.Stop_vor, hStOk:=ErrAnz) + + +--- NW 24: Weiche 3432 / Vollpuffer VP44 --- +CALL FB "None" , (Weichen_Nr:=44, KorrekturFaktor:=?, ErrQuit:=ErrQuit, Stau_Ausfahrtbereich:="DVP_Sensoren".Stau_VP44.Stat.B_Akt, B_Gerade:="BG3420", B_Ausfahrt:="BG3432", Antrieb_aktiv:=Antrieb, Y_Weiche_abzweigen:="DVP_Zylinder".Weiche_VP44.Stat.Ast, Y_Weiche_geradeaus:=?, Error:=DB708.DBW296, Antrieb_start:="DVP_Antriebe".MA0146.Stat.A_start, Antrieb_stoppen:="DVP_Antriebe".MA0146.Stat.Stop_vor, hStOk:=ErrAnz) + + +--- NW 25: Weiche 3431 / Vollpuffer VP45 --- +CALL FB "None" , (Weichen_Nr:=45, KorrekturFaktor:=?, ErrQuit:=ErrQuit, Stau_Ausfahrtbereich:="DVP_Sensoren".Stau_VP45.Stat.B_Akt, B_Gerade:=?, B_Ausfahrt:="BG3431", Antrieb_aktiv:=Antrieb, Y_Weiche_abzweigen:="DVP_Zylinder".Weiche_VP45.Stat.Ast, Y_Weiche_geradeaus:=?, Error:=DB708.DBW298, Antrieb_start:="DVP_Antriebe".MA0146.Stat.A_start, Antrieb_stoppen:="DVP_Antriebe".MA0146.Stat.Stop_vor, hStOk:=ErrAnz) + + +--- NW 26: Weiche 3430 / Vollpuffer VP46 --- +CALL FB "None" , (Weichen_Nr:=46, KorrekturFaktor:=?, ErrQuit:=ErrQuit, Stau_Ausfahrtbereich:="DVP_Sensoren".Stau_VP46.Stat.B_Akt, B_Gerade:=?, B_Ausfahrt:="BG3430", Antrieb_aktiv:=Antrieb, Y_Weiche_abzweigen:="DVP_Zylinder".Weiche_VP46.Stat.Ast, Y_Weiche_geradeaus:=?, Error:=DB708.DBW300, Antrieb_start:="DVP_Antriebe".MA0146.Stat.A_start, Antrieb_stoppen:="DVP_Antriebe".MA0146.Stat.Stop_vor, hStOk:=ErrAnz) + + +--- NW 27: Weiche 3427 / Vollpuffer VP47 --- +CALL FB "None" , (Weichen_Nr:=47, KorrekturFaktor:=?, ErrQuit:=ErrQuit, Stau_Ausfahrtbereich:="DVP_Sensoren".Stau_VP47.Stat.B_Akt, B_Gerade:=?, B_Ausfahrt:="BG3427", Antrieb_aktiv:=Antrieb, Y_Weiche_abzweigen:="DVP_Zylinder".Weiche_VP47.Stat.Ast, Y_Weiche_geradeaus:=?, Error:=DB708.DBW302, Antrieb_start:="DVP_Antriebe".MA0146.Stat.A_start, Antrieb_stoppen:="DVP_Antriebe".MA0146.Stat.Stop_vor, hStOk:=ErrAnz) + + +--- NW 28: Weiche 3426 / Vollpuffer VP48 --- +CALL FB "None" , (Weichen_Nr:=48, KorrekturFaktor:=?, ErrQuit:=ErrQuit, Stau_Ausfahrtbereich:="DVP_Sensoren".Stau_VP48.Stat.B_Akt, B_Gerade:=?, B_Ausfahrt:="BG3426", Antrieb_aktiv:=Antrieb, Y_Weiche_abzweigen:="DVP_Zylinder".Weiche_VP48.Stat.Ast, Y_Weiche_geradeaus:=?, Error:=DB708.DBW304, Antrieb_start:="DVP_Antriebe".MA0146.Stat.A_start, Antrieb_stoppen:="DVP_Antriebe".MA0146.Stat.Stop_vor, hStOk:=ErrAnz) + + +--- NW 29: Weiche 3425 / Vollpuffer VP49 --- +CALL FB "None" , (Weichen_Nr:=49, KorrekturFaktor:=?, ErrQuit:=ErrQuit, Stau_Ausfahrtbereich:="DVP_Sensoren".Stau_VP49.Stat.B_Akt, B_Gerade:=?, B_Ausfahrt:="BG3425", Antrieb_aktiv:=Antrieb, Y_Weiche_abzweigen:="DVP_Zylinder".Weiche_VP49.Stat.Ast, Y_Weiche_geradeaus:=?, Error:=DB708.DBW306, Antrieb_start:="DVP_Antriebe".MA0146.Stat.A_start, Antrieb_stoppen:="DVP_Antriebe".MA0146.Stat.Stop_vor, hStOk:=ErrAnz) + + +--- NW 30: Weiche 3424 / Vollpuffer VP50 --- +CALL FB "None" , (Weichen_Nr:=50, KorrekturFaktor:=?, ErrQuit:=ErrQuit, Stau_Ausfahrtbereich:="DVP_Sensoren".Stau_VP50.Stat.B_Akt, B_Gerade:=?, B_Ausfahrt:="BG3424", Antrieb_aktiv:=Antrieb, Y_Weiche_abzweigen:="DVP_Zylinder".Weiche_VP50.Stat.Ast, Y_Weiche_geradeaus:=?, Error:=DB708.DBW308, Antrieb_start:="DVP_Antriebe".MA0146.Stat.A_start, Antrieb_stoppen:="DVP_Antriebe".MA0146.Stat.Stop_vor, hStOk:=ErrAnz) + + +--- NW 31: Pseudo-Weiche 3423 / Vollpuffer VP51 --- +CALL FB "None" , (Weichen_Nr:=51, KorrekturFaktor:=?, ErrQuit:=ErrQuit, Stau_Ausfahrtbereich:="DVP_Sensoren".Stau_VP51.Stat.B_Akt, B_Gerade:=?, B_Ausfahrt:="BG3423", Antrieb_aktiv:=Antrieb, Y_Weiche_abzweigen:="DVP_Zylinder".Weiche_VP51.Stat.Ast, Y_Weiche_geradeaus:=?, Error:=DB708.DBW310, Antrieb_start:="DVP_Antriebe".MA0146.Stat.A_start, Antrieb_stoppen:="DVP_Antriebe".MA0146.Stat.Stop_vor, hStOk:=ErrAnz) + +// Unbekannter Trolley kommt + Stau: + A "BG3422" + A "DVP_Sensoren".Stau_VP51.Stat.B_Akt + S "DVP_Antriebe".MA0146.Stat.Stop_vor + = "7_HMI_Err_UH07_OB".Sorter_Vollpuffer."Sorter B stop" + + + + + + +--- NW 32: Störungen anzeigen UZ7103/7106 --- + A ErrAnz + S "DOutbound_Bereich".A01_UZ7103.StOk_blinken + S "DOutbound_Bereich".A01_UZ7106.StOk_blinken + + +--- NW 33: Ende --- + BE + diff --git a/=A01+UH07-KF00/Programmbausteine/Anlage/1_Vollpuffer/Sorter_Vollpuffer/VP_TravelFIFO_A.awl b/=A01+UH07-KF00/Programmbausteine/Anlage/1_Vollpuffer/Sorter_Vollpuffer/VP_TravelFIFO_A.awl new file mode 100644 index 0000000..98be28f --- /dev/null +++ b/=A01+UH07-KF00/Programmbausteine/Anlage/1_Vollpuffer/Sorter_Vollpuffer/VP_TravelFIFO_A.awl @@ -0,0 +1,33 @@ +=== GlobalDB 1480: VP_TravelFIFO_A [DB] === +INTERFACE: + Static: + Travel_FIFO_BG3120 : Struct + FIFO : Struct + KOPF : Word := WORD#16#FF0B // Fifo-Kennung (FF) / Datensatzlänge in Word (1 - 128) + LAENGE : Int := 1 // Länge des Fifo (maximale Anzahl der Datensätze) + BRINGZEIGER : Int // Zeiger, wohin nächster Eintrag gespeichert wird + HOLZEIGER : Int // Zeiger, woher nächste Daten geholt werden + ANZAHL : Int // Anzahl der Datensätze (eingetragene) + STATUS : Word // Status des Fifo + ZUSATZDW1 : Int // Speicherzelle für 1.Zusatzdaten + ZUSATZDW2 : Int // Speicherzelle für 2.Zusatzdaten + ZUSATZDW3 : Int // Speicherzelle für 3.Zusatzdaten + ZUSATZDW4 : Int // Speicherzelle für 4.Zusatzdaten + RE_VAL_IN : Byte // Rückmeldung nach FC80-Aufruf + RE_VAL_OUT : Byte // Rückmeldung nach FC81-Aufruf + RE_VAL_SEARCH : Byte // Rückmeldung nach FC82-Aufruf + RE_VAL_CHANGE : Byte // Rückmeldung nach FC83-Aufruf + Frei3 : Int + Frei4 : Int + Frei5 : Int + OP_Anzeige_Datensatz : Int // Bei Ringspeicher -1,-2,...-Datensatz anzeigen + Datensatz : Int // Zu lesender Datenstatz (OP-Zeug)********************************* + Taste_Daten_minus : Bool // Taste Datensatz -1 lesen + Taste_Daten_plus : Bool // Taste Datensatz +1 lesen + Taste_FIFO_Del : Bool // Taste Fifo löschen + Zustand : Int // Zustand + Error : Int // Error + Teil : Array[1..1] of Struct + Daten : "UBT_Daten" + Endekennung : Word := WORD#16#FFEE // Fifo-Ende-Kennung (FFEE) + Res : Array[1..18] of Int diff --git a/=A01+UH07-KF00/Programmbausteine/Anlage/1_Vollpuffer/Sorter_Vollpuffer/VP_TravelFIFO_B.awl b/=A01+UH07-KF00/Programmbausteine/Anlage/1_Vollpuffer/Sorter_Vollpuffer/VP_TravelFIFO_B.awl new file mode 100644 index 0000000..a8d17af --- /dev/null +++ b/=A01+UH07-KF00/Programmbausteine/Anlage/1_Vollpuffer/Sorter_Vollpuffer/VP_TravelFIFO_B.awl @@ -0,0 +1,33 @@ +=== GlobalDB 1580: VP_TravelFIFO_B [DB] === +INTERFACE: + Static: + Travel_FIFO_BG3003 : Struct + FIFO : Struct + KOPF : Word := WORD#16#FF0B // Fifo-Kennung (FF) / Datensatzlänge in Word (1 - 128) + LAENGE : Int := 1 // Länge des Fifo (maximale Anzahl der Datensätze) + BRINGZEIGER : Int // Zeiger, wohin nächster Eintrag gespeichert wird + HOLZEIGER : Int // Zeiger, woher nächste Daten geholt werden + ANZAHL : Int // Anzahl der Datensätze (eingetragene) + STATUS : Word // Status des Fifo + ZUSATZDW1 : Int // Speicherzelle für 1.Zusatzdaten + ZUSATZDW2 : Int // Speicherzelle für 2.Zusatzdaten + ZUSATZDW3 : Int // Speicherzelle für 3.Zusatzdaten + ZUSATZDW4 : Int // Speicherzelle für 4.Zusatzdaten + RE_VAL_IN : Byte // Rückmeldung nach FC80-Aufruf + RE_VAL_OUT : Byte // Rückmeldung nach FC81-Aufruf + RE_VAL_SEARCH : Byte // Rückmeldung nach FC82-Aufruf + RE_VAL_CHANGE : Byte // Rückmeldung nach FC83-Aufruf + Frei3 : Int + Frei4 : Int + Frei5 : Int + OP_Anzeige_Datensatz : Int // Bei Ringspeicher -1,-2,...-Datensatz anzeigen + Datensatz : Int // Zu lesender Datenstatz (OP-Zeug)********************************* + Taste_Daten_minus : Bool // Taste Datensatz -1 lesen + Taste_Daten_plus : Bool // Taste Datensatz +1 lesen + Taste_FIFO_Del : Bool // Taste Fifo löschen + Zustand : Int // Zustand + Error : Int // Error + Teil : Array[1..1] of Struct + Daten : "UBT_Daten" + Endekennung : Word := WORD#16#FFEE // Fifo-Ende-Kennung (FFEE) + Res : Array[1..18] of Int diff --git a/=A01+UH07-KF00/Programmbausteine/Anlage/1_Vollpuffer/Sorter_Vollpuffer/VP_Zaehler_A.awl b/=A01+UH07-KF00/Programmbausteine/Anlage/1_Vollpuffer/Sorter_Vollpuffer/VP_Zaehler_A.awl new file mode 100644 index 0000000..b2c7650 --- /dev/null +++ b/=A01+UH07-KF00/Programmbausteine/Anlage/1_Vollpuffer/Sorter_Vollpuffer/VP_Zaehler_A.awl @@ -0,0 +1,20 @@ +=== GlobalDB 1483: VP_Zaehler_A [DB] === +INTERFACE: + Static: + Sick_ABS_single : Struct + Encoder : "GeberST81" + LastSingelturn_Wert : DInt // Speicherung des letzten Singelturn_Wert + Resolution : DInt := 2400 // Auflösung Inc pro Umgrehung + Frei bis DW70 : Array[1..23] of Int + Speicherung : DInt // Speicherung des aktuellen Zählerwerts (für Neustart) + Neustart : Bool // Neustart: Zählerwert neu laden + Ueberlauf : Bool // Überlauf: Zählerwert zurücksetzen + Zaehler_setzen : Bool // Zähler neu setzen + Lauf_Flag : Bool // Zähl-Lauf mit Flag ist aktiv + Flag_Lauf_fertig : Bool // Flag-Lauf wurde beendet + Ohne_Lauf_fertig : Bool // Ohne Flag-Lauf wurde beendet + Null_laden : Bool // Zähler mit 0000 laden + Laden_aktiv : Bool // Zähler laden ist aktiv + No_Save : Bool // Zählerspeicherung einfrieren + Max_Wert : DInt := 2000000 // Maximal erlaubter Zählwert + Ink_Wert : DInt := DINT#1 // Aktueller Zählerwert diff --git a/=A01+UH07-KF00/Programmbausteine/Anlage/1_Vollpuffer/Sorter_Vollpuffer/VP_Zaehler_B.awl b/=A01+UH07-KF00/Programmbausteine/Anlage/1_Vollpuffer/Sorter_Vollpuffer/VP_Zaehler_B.awl new file mode 100644 index 0000000..5adb3bf --- /dev/null +++ b/=A01+UH07-KF00/Programmbausteine/Anlage/1_Vollpuffer/Sorter_Vollpuffer/VP_Zaehler_B.awl @@ -0,0 +1,20 @@ +=== GlobalDB 1583: VP_Zaehler_B [DB] === +INTERFACE: + Static: + Sick_ABS_single : Struct + Encoder : "GeberST81" + LastSingelturn_Wert : DInt // Speicherung des letzten Singelturn_Wert + Resolution : DInt := 2400 // Auflösung Inc pro Umgrehung + Frei bis DW70 : Array[1..23] of Int + Speicherung : DInt // Speicherung des aktuellen Zählerwerts (für Neustart) + Neustart : Bool // Neustart: Zählerwert neu laden + Ueberlauf : Bool // Überlauf: Zählerwert zurücksetzen + Zaehler_setzen : Bool // Zähler neu setzen + Lauf_Flag : Bool // Zähl-Lauf mit Flag ist aktiv + Flag_Lauf_fertig : Bool // Flag-Lauf wurde beendet + Ohne_Lauf_fertig : Bool // Ohne Flag-Lauf wurde beendet + Null_laden : Bool // Zähler mit 0000 laden + Laden_aktiv : Bool // Zähler laden ist aktiv + No_Save : Bool // Zählerspeicherung einfrieren + Max_Wert : DInt := 2000000 // Maximal erlaubter Zählwert + Ink_Wert : DInt := DINT#1 // Aktueller Zählerwert diff --git a/=A01+UH07-KF00/Programmbausteine/Anlage/1_Vollpuffer/VP_Bereich.awl b/=A01+UH07-KF00/Programmbausteine/Anlage/1_Vollpuffer/VP_Bereich.awl new file mode 100644 index 0000000..8150dbc --- /dev/null +++ b/=A01+UH07-KF00/Programmbausteine/Anlage/1_Vollpuffer/VP_Bereich.awl @@ -0,0 +1,33 @@ +=== FC 1100: VP_Bereich [STL] === +INTERFACE: + Input: + Output: + InOut: + Temp: + Constant: + Return: + Ret_Val : Void + +--- NW 1: Baustein-Aufrufe --- +CALL FB "VP_Sensoren" , + +CALL FB "VP_OmniFahren" , + +CALL FB "VollPufferStreckenA" , + +CALL FB "VollPufferStreckenB" , + +CALL FB "VP_Sorter_A" , + +CALL FB "VP_Sorter_B" , + +CALL FB "VPAuslagern" , + +CALL FB "VP_Zylinder" , + +CALL FB "VP_Antriebe" , + + +--- NW 2: Ende --- + BE + diff --git a/=A01+UH07-KF00/Programmbausteine/Anlage/2_VPtoEP/Basics/DVPtoEP_Antriebe.awl b/=A01+UH07-KF00/Programmbausteine/Anlage/2_VPtoEP/Basics/DVPtoEP_Antriebe.awl new file mode 100644 index 0000000..b961c9d --- /dev/null +++ b/=A01+UH07-KF00/Programmbausteine/Anlage/2_VPtoEP/Basics/DVPtoEP_Antriebe.awl @@ -0,0 +1,15 @@ +=== InstanceDB 2199: DVPtoEP_Antriebe [DB] === +INTERFACE: + Input: + Output: + InOut: + Static: + MA0151 : "MAntrieb_PowerSave" + MA0060 : "MAntrieb_PowerSave" + MA0061 : "MAntrieb_PowerSave" + MA0320 : "MAntrieb_PowerSave" + MA0321 : "MAntrieb_PowerSave" + MA0322 : "MAntrieb_PowerSave" + MA0323 : "MAntrieb_PowerSave" + MA0324 : "MAntrieb_PowerSave" + MA0325 : "MAntrieb_PowerSave" diff --git a/=A01+UH07-KF00/Programmbausteine/Anlage/2_VPtoEP/Basics/DVPtoEP_Sensoren.awl b/=A01+UH07-KF00/Programmbausteine/Anlage/2_VPtoEP/Basics/DVPtoEP_Sensoren.awl new file mode 100644 index 0000000..0b20275 --- /dev/null +++ b/=A01+UH07-KF00/Programmbausteine/Anlage/2_VPtoEP/Basics/DVPtoEP_Sensoren.awl @@ -0,0 +1,21 @@ +=== InstanceDB 2190: DVPtoEP_Sensoren [DB] === +INTERFACE: + Input: + Output: + InOut: + Static: + Stau_BG3246 : "MSensoren" + Stau_BG3251 : "MSensoren" + Stau_BG3274 : "MSensoren" + Stau_BG3362 : "MSensoren" + Stau_BG3364 : "MSensoren" + Stau_BG4440 : "MSensoren" + Stau_BG4442 : "MSensoren" + Sack_BG4444 : "MSensoren" + Stau_BG4445 : "MSensoren" + Stau_BG4447 : "MSensoren" + Stau_BG4451 : "MSensoren" + Stau_BG4453 : "MSensoren" + Stau_BG4500 : "MSensoren" + Stau_BG4530 : "MSensoren" + Stau_BG4502 : "MSensoren" diff --git a/=A01+UH07-KF00/Programmbausteine/Anlage/2_VPtoEP/Basics/DVPtoEP_Zylinder.awl b/=A01+UH07-KF00/Programmbausteine/Anlage/2_VPtoEP/Basics/DVPtoEP_Zylinder.awl new file mode 100644 index 0000000..ec92a3d --- /dev/null +++ b/=A01+UH07-KF00/Programmbausteine/Anlage/2_VPtoEP/Basics/DVPtoEP_Zylinder.awl @@ -0,0 +1,13 @@ +=== InstanceDB 2192: DVPtoEP_Zylinder [DB] === +INTERFACE: + Input: + Output: + InOut: + Static: + Schleuse_3247 : "MZylinder" + Schleuse_3275 : "MZylinder" + Schleuse_3363 : "MZylinder" + Schleuse_3366 : "MZylinder" + Schleuse_4443 : "MZylinder" + Weiche_4445 : "MZylinder" + Schleuse_4450 : "MZylinder" diff --git a/=A01+UH07-KF00/Programmbausteine/Anlage/2_VPtoEP/Basics/VPtoEP_Antriebe.awl b/=A01+UH07-KF00/Programmbausteine/Anlage/2_VPtoEP/Basics/VPtoEP_Antriebe.awl new file mode 100644 index 0000000..7394394 --- /dev/null +++ b/=A01+UH07-KF00/Programmbausteine/Anlage/2_VPtoEP/Basics/VPtoEP_Antriebe.awl @@ -0,0 +1,156 @@ +=== FB 2199: VPtoEP_Antriebe [STL] === +INTERFACE: + Input: + Output: + InOut: + Static: + MA0151 : "MAntrieb_PowerSave" + MA0060 : "MAntrieb_PowerSave" + MA0061 : "MAntrieb_PowerSave" + MA0320 : "MAntrieb_PowerSave" + MA0321 : "MAntrieb_PowerSave" + MA0322 : "MAntrieb_PowerSave" + MA0323 : "MAntrieb_PowerSave" + MA0324 : "MAntrieb_PowerSave" + MA0325 : "MAntrieb_PowerSave" + Temp: + Auto : Bool // Automatik Linie ist aktiv + Hand : Bool // Hand Linie ist aktiv + BereichErr : Bool // Bereichsstörung -> Antrieb stoppen + QKontroll : Bool // Frequenzumrichter schon 3s Netz EIN + FuKontroll : Bool // Frequenzumrichter schon 3s Netz EIN + Quit : Bool // Motorschutz-Störung quittieren + Qok : Bool // Motorschutz ok + Jog1 : Bool // Geschwindigkeit 1 + Jog2 : Bool // Geschwindigkeit 2 + Betrieb : Bool // Betriebsart aktiv + FC105_RET : Word // Returnwert von FC105 + Antrieb1 : Bool // Antrieb dazuschalten + Antrieb2 : Bool // Antrieb dazuschalten + F1 : Bool // Geschwindigkeit 1 aktiviert + F2 : Bool // Geschwindigkeit 2 aktiviert + F3 : Bool // Geschwindigkeit 3 aktiviert + Constant: + +--- NW 1: Übergabe des Bereichstatus System UC071/A01 --- + A "DOutbound_Bereich".A01_UH07.Automatik + AN "DOutbound_Bereich".A01_UH07.Handbetrieb + = Auto + + CLR + = Hand + + A( + O "DOutbound_Bereich".A01_UC071.BereichErr + O "DOutbound_Bereich".A01_UZ7104.Area_Stop + ) + AN "SGes".Simulation_ohne_HW_aktiv + = BereichErr + + A "T191" + = QKontroll + = FuKontroll + + A "DOutbound_Bereich".A01_UC071.StOk_aktiv + = Quit + + +--- NW 2: MA0151 --- +CALL FB "None" , (Automatik:=Auto, Handbetrieb:=Hand, BereichErr:=BereichErr, Q:="FC0151", Ptc:=TRUE, Fu:=?, QKontroll:=QKontroll, FuKontroll:=?, ErrQuit:=Quit, Kontroll_B:=?, T_Nachlauf:=120, Antriebrueck:=?, Antriebvor:="MA0151", Jog1:=?, Jog2:=?, Analog:=?, QErr:="7_HMI_Err_UH07_OB".QErr.MA0151, PtcErr:=?, FuErr:=?, Err_Antrieb_verklemmt:=?) + + + +--- NW 3: Übergabe des Bereichstatus System UH07/A01 --- + A "DOutbound_Bereich".A01_UH07.Automatik + AN "DOutbound_Bereich".A01_UH07.Handbetrieb + = Auto + + CLR + = Hand + + A "DOutbound_Bereich".A01_UH07.BereichErr + AN "SGes".Simulation_ohne_HW_aktiv + = BereichErr + + AN BereichErr + L S5T#1S + OnDelay "T197" + + A "T197" + = QKontroll + = FuKontroll + + A "DOutbound_Bereich".A01_UH07.StOk_aktiv + = Quit + + +--- NW 4: MA0060 --- +CALL FB "None" , (Automatik:=Auto, Handbetrieb:=Hand, BereichErr:=BereichErr, Q:="FC0060", Ptc:=TRUE, Fu:=?, QKontroll:=QKontroll, FuKontroll:=?, ErrQuit:=Quit, Kontroll_B:=?, T_Nachlauf:=?, Antriebrueck:=?, Antriebvor:="MA0060", Jog1:=?, Jog2:=?, Analog:=?, QErr:="7_HMI_Err_UH07_OB".QErr.MA0060, PtcErr:=?, FuErr:=?, Err_Antrieb_verklemmt:=?) + + + +--- NW 5: MA0061 --- +CALL FB "None" , (Automatik:=Auto, Handbetrieb:=Hand, BereichErr:=BereichErr, Q:="FC0061", Ptc:=TRUE, Fu:=?, QKontroll:=QKontroll, FuKontroll:=?, ErrQuit:=Quit, Kontroll_B:=?, T_Nachlauf:=?, Antriebrueck:=?, Antriebvor:="MA0061", Jog1:=?, Jog2:=?, Analog:=?, QErr:="7_HMI_Err_UH07_OB".QErr.MA0061, PtcErr:=?, FuErr:=?, Err_Antrieb_verklemmt:=?) + + + +--- NW 6: Übergabe des Bereichstatus System UC074/A01 --- + A "DOutbound_Bereich".A01_UH07.Automatik + AN "DOutbound_Bereich".A01_UH07.Handbetrieb + = Auto + + CLR + = Hand + + A "DOutbound_Bereich".A01_UC074.BereichErr + AN "SGes".Simulation_ohne_HW_aktiv + = BereichErr + + AN BereichErr + L S5T#1S + OnDelay "T194" + + A "T194" + = QKontroll + = FuKontroll + + A "DOutbound_Bereich".A01_UC074.StOk_aktiv + = Quit + + +--- NW 7: MA0320 --- +CALL FB "None" , (Automatik:=Auto, Handbetrieb:=Hand, BereichErr:=BereichErr, Q:="FC0320", Ptc:=TRUE, Fu:=?, QKontroll:=QKontroll, FuKontroll:=?, ErrQuit:=Quit, Kontroll_B:=?, T_Nachlauf:=?, Antriebrueck:=?, Antriebvor:="MA0320", Jog1:=?, Jog2:=?, Analog:=?, QErr:="7_HMI_Err_UH07_OB".QErr.MA0320, PtcErr:=?, FuErr:=?, Err_Antrieb_verklemmt:=?) + + + +--- NW 8: MA0321 --- +CALL FB "None" , (Automatik:=Auto, Handbetrieb:=Hand, BereichErr:=BereichErr, Q:="FC0321", Ptc:=TRUE, Fu:=?, QKontroll:=QKontroll, FuKontroll:=?, ErrQuit:=Quit, Kontroll_B:=?, T_Nachlauf:=?, Antriebrueck:=?, Antriebvor:="MA0321", Jog1:=?, Jog2:=?, Analog:=?, QErr:="7_HMI_Err_UH07_OB".QErr.MA0321, PtcErr:=?, FuErr:=?, Err_Antrieb_verklemmt:=?) + + + +--- NW 9: MA0322 --- +CALL FB "None" , (Automatik:=Auto, Handbetrieb:=Hand, BereichErr:=BereichErr, Q:="FC0322", Ptc:=TRUE, Fu:=?, QKontroll:=QKontroll, FuKontroll:=?, ErrQuit:=Quit, Kontroll_B:=?, T_Nachlauf:=90, Antriebrueck:=?, Antriebvor:="MA0322", Jog1:=?, Jog2:=?, Analog:=?, QErr:="7_HMI_Err_UH07_OB".QErr.MA0322, PtcErr:=?, FuErr:=?, Err_Antrieb_verklemmt:=?) + + + +--- NW 10: MA0323 --- +CALL FB "None" , (Automatik:=Auto, Handbetrieb:=Hand, BereichErr:=BereichErr, Q:="FC0323", Ptc:=TRUE, Fu:=?, QKontroll:=QKontroll, FuKontroll:=?, ErrQuit:=Quit, Kontroll_B:=?, T_Nachlauf:=?, Antriebrueck:=?, Antriebvor:="MA0323", Jog1:=?, Jog2:=?, Analog:=?, QErr:="7_HMI_Err_UH07_OB".QErr.MA0323, PtcErr:=?, FuErr:=?, Err_Antrieb_verklemmt:=?) + + + +--- NW 11: MA0324 --- +CALL FB "None" , (Automatik:=Auto, Handbetrieb:=Hand, BereichErr:=BereichErr, Q:="FC0324", Ptc:=TRUE, Fu:=?, QKontroll:=QKontroll, FuKontroll:=?, ErrQuit:=Quit, Kontroll_B:=?, T_Nachlauf:=?, Antriebrueck:=?, Antriebvor:="MA0324", Jog1:=?, Jog2:=?, Analog:=?, QErr:="7_HMI_Err_UH07_OB".QErr.MA0324, PtcErr:=?, FuErr:=?, Err_Antrieb_verklemmt:=?) + + + +--- NW 12: MA0325 --- +CALL FB "None" , (Automatik:=Auto, Handbetrieb:=Hand, BereichErr:=BereichErr, Q:="FC0325", Ptc:=TRUE, Fu:=?, QKontroll:=QKontroll, FuKontroll:=?, ErrQuit:=Quit, Kontroll_B:=?, T_Nachlauf:=?, Antriebrueck:=?, Antriebvor:="MA0325", Jog1:=?, Jog2:=?, Analog:=?, QErr:="7_HMI_Err_UH07_OB".QErr.MA0325, PtcErr:=?, FuErr:=?, Err_Antrieb_verklemmt:=?) + +// / U "M902.0" +// / UN "DEP_Sorter".Sync_BG4527.Dyn.Error.Keine_TeachPktdaten +// / S "MA0325" //Zusätzlich im Lastbaustein VP>EP_Antriebe, da Aufruf vor Sorter-FB + + +--- NW 13: Ende --- + BE + diff --git a/=A01+UH07-KF00/Programmbausteine/Anlage/2_VPtoEP/Basics/VPtoEP_Sensoren.awl b/=A01+UH07-KF00/Programmbausteine/Anlage/2_VPtoEP/Basics/VPtoEP_Sensoren.awl new file mode 100644 index 0000000..3c34a6d --- /dev/null +++ b/=A01+UH07-KF00/Programmbausteine/Anlage/2_VPtoEP/Basics/VPtoEP_Sensoren.awl @@ -0,0 +1,104 @@ +=== FB 2190: VPtoEP_Sensoren [STL] === +INTERFACE: + Input: + Output: + InOut: + Static: + Stau_BG3246 : "MSensoren" // Stau am Sensor Einfahrt MA0151 + Stau_BG3251 : "MSensoren" // Stau am Sensor Mitte MA0151 + Stau_BG3274 : "MSensoren" // Stau am Sensor Einfahrt MA0060 + Stau_BG3362 : "MSensoren" // Stau am Sensor Einfahrt MA0061 + Stau_BG3364 : "MSensoren" // Stau am Sensor Mitte MA0061 + Stau_BG4440 : "MSensoren" // Stau am Sensor nach BST1 + Stau_BG4442 : "MSensoren" // Stau am Sensor Einfahrt MA321 + Sack_BG4444 : "MSensoren" // Sack erkannt + Stau_BG4445 : "MSensoren" // Stau am Sensor Mitte MA321 + Stau_BG4447 : "MSensoren" // Stau am Sensor hinter Weiche4445 + Stau_BG4451 : "MSensoren" // Stau am Sensor Ausfahrt Schleuse4450 + Stau_BG4453 : "MSensoren" // Stau am Sensor Einfahrt MA0323 + Stau_BG4500 : "MSensoren" // Stau am Sensor Einfahrt MA0324 + Stau_BG4530 : "MSensoren" // Stau am Sensor Mitte MA0324 + Stau_BG4502 : "MSensoren" // Stau am Sensor Einfahrt MA0325 + Temp: + T_Ein : Int // Vorgabe Einschaltverzögerung + T_Aus : Int // Zwischenspeicher Ausschaltverzögerung + F1 : Bool // Geschwindigkeit 1 aktiviert + F2 : Bool // Geschwindigkeit 2 aktiviert + F3 : Bool // Geschwindigkeit 3 aktiviert + ESensor : Bool // Sensoren + Antrieb : Bool + VReal : Real // GeschwindigkeitinReal + Zeit : Int // Zeit für Ausschaltverzögerung LT1100 + Aktiv : Bool // Zeit aktivieren + Constant: + +--- NW 1: Sensoren entprellen --- +CALL FB "None" , (ESensor:="BG3246", T_Ein:=80, T_Aus:=11, tein_aktiv:=TRUE, taus_aktiv:=TRUE) + + +--- NW 2: Sensoren entprellen --- +CALL FB "None" , (ESensor:="BG3251", T_Ein:=80, T_Aus:=11, tein_aktiv:=TRUE, taus_aktiv:=TRUE) + + +--- NW 3: Sensoren entprellen --- +CALL FB "None" , (ESensor:="BG3274", T_Ein:=1, T_Aus:=11, tein_aktiv:=TRUE, taus_aktiv:=TRUE) + + +--- NW 4: Sensoren entprellen --- +CALL FB "None" , (ESensor:="BG3362", T_Ein:=1, T_Aus:=11, tein_aktiv:=TRUE, taus_aktiv:=TRUE) + + +--- NW 5: Sensoren entprellen --- +CALL FB "None" , (ESensor:="BG3364", T_Ein:=80, T_Aus:=21, tein_aktiv:=TRUE, taus_aktiv:=TRUE) + + +--- NW 6: Sensoren entprellen --- +CALL FB "None" , (ESensor:="BG4440", T_Ein:=1, T_Aus:=30, tein_aktiv:=TRUE, taus_aktiv:=TRUE) + + +--- NW 7: Sensoren entprellen --- +CALL FB "None" , (ESensor:="BG4442", T_Ein:=80, T_Aus:=11, tein_aktiv:=TRUE, taus_aktiv:=TRUE) + + +--- NW 8: Sensoren entprellen --- + AN "MB4443" // Alt-Trolley noch beim Ausfahren + A( + O "MA0321" + O "BG4443" + ) + = Aktiv + +CALL FB "None" , (ESensor:="BG4444", T_Ein:=1, T_Aus:=11, tein_aktiv:=Aktiv, taus_aktiv:="MB4443") + + +--- NW 9: Sensoren entprellen --- +CALL FB "None" , (ESensor:="BG4445", T_Ein:=1, T_Aus:=11, tein_aktiv:=TRUE, taus_aktiv:=TRUE) + + +--- NW 10: Sensoren entprellen --- +CALL FB "None" , (ESensor:="BG4447", T_Ein:=80, T_Aus:=11, tein_aktiv:=TRUE, taus_aktiv:=TRUE) + + +--- NW 11: Sensoren entprellen --- +CALL FB "None" , (ESensor:="BG4451", T_Ein:=1, T_Aus:=11, tein_aktiv:=TRUE, taus_aktiv:=TRUE) + + +--- NW 12: Sensoren entprellen --- +CALL FB "None" , (ESensor:="BG4453", T_Ein:=1, T_Aus:=11, tein_aktiv:=TRUE, taus_aktiv:=TRUE) + + +--- NW 13: Sensoren entprellen --- +CALL FB "None" , (ESensor:="BG4500", T_Ein:=1, T_Aus:=11, tein_aktiv:=TRUE, taus_aktiv:=TRUE) + + +--- NW 14: Sensoren entprellen --- +CALL FB "None" , (ESensor:="BG4530", T_Ein:=80, T_Aus:=11, tein_aktiv:=TRUE, taus_aktiv:=TRUE) + + +--- NW 15: Sensoren entprellen --- +CALL FB "None" , (ESensor:="BG4502", T_Ein:=80, T_Aus:=11, tein_aktiv:=TRUE, taus_aktiv:=TRUE) + + +--- NW 16: Ende --- + BE + diff --git a/=A01+UH07-KF00/Programmbausteine/Anlage/2_VPtoEP/Basics/VPtoEP_Zylinder.awl b/=A01+UH07-KF00/Programmbausteine/Anlage/2_VPtoEP/Basics/VPtoEP_Zylinder.awl new file mode 100644 index 0000000..7ed0ab3 --- /dev/null +++ b/=A01+UH07-KF00/Programmbausteine/Anlage/2_VPtoEP/Basics/VPtoEP_Zylinder.awl @@ -0,0 +1,86 @@ +=== FB 2192: VPtoEP_Zylinder [STL] === +INTERFACE: + Input: + Output: + InOut: + Static: + Schleuse_3247 : "MZylinder" // + Schleuse_3275 : "MZylinder" // + Schleuse_3363 : "MZylinder" + Schleuse_3366 : "MZylinder" + Schleuse_4443 : "MZylinder" + Weiche_4445 : "MZylinder" // + Schleuse_4450 : "MZylinder" // + Temp: + Auto : Bool // Automatik ist aktiv + Hand : Bool // Hand ist aktiv + ZylAst : Bool // Zylinder ansteuern + Constant: + +--- NW 1: Übergabe des Bereichstatus System UC071/A01 --- + A "DOutbound_Bereich".A01_UH07.Automatik + AN "DOutbound_Bereich".A01_UH07.Handbetrieb + = Auto + + A( + O "DOutbound_Bereich".A01_UC071.BereichErr + O "DOutbound_Bereich".A01_UZ7104.Area_Stop + ) + AN "SGes".Simulation_ohne_HW_aktiv + JC Next // Zylinder-Stellung nicht mehr ändern + + +--- NW 2: Schleuse_3247 --- +CALL FB "None" , (Automatik:=Auto, Handbetrieb:=FALSE, T_Ast:=0, T_Gst:=5, ZylAst:="MB3247", ZylGst:=?) + + +--- NW 3: Schleuse_3275 --- +CALL FB "None" , (Automatik:=Auto, Handbetrieb:=FALSE, T_Ast:=0, T_Gst:=5, ZylAst:="MB3275", ZylGst:=?) + + +--- NW 4: Übergabe des Bereichstatus System UH07/A01 --- +Next: A "DOutbound_Bereich".A01_UH07.Automatik + AN "DOutbound_Bereich".A01_UH07.Handbetrieb + = Auto + + A "DOutbound_Bereich".A01_UH07.BereichErr + AN "SGes".Simulation_ohne_HW_aktiv + JC Next1 // Zylinder-Stellung nicht mehr ändern + + +--- NW 5: Schleuse_3363 --- +CALL FB "None" , (Automatik:=Auto, Handbetrieb:=FALSE, T_Ast:=0, T_Gst:=5, ZylAst:="MB3363", ZylGst:=?) + + +--- NW 6: Schleuse_3366 --- +CALL FB "None" , (Automatik:=Auto, Handbetrieb:=FALSE, T_Ast:=0, T_Gst:=5, ZylAst:="MB3366", ZylGst:=?) + + +--- NW 7: Übergabe des Bereichstatus System UC074/A01 --- +Next1: A "DOutbound_Bereich".A01_UH07.Automatik + AN "DOutbound_Bereich".A01_UH07.Handbetrieb + = Auto + + A "DOutbound_Bereich".A01_UC074.BereichErr + AN "SGes".Simulation_ohne_HW_aktiv + JC Next2 // Zylinder-Stellung nicht mehr ändern + + +--- NW 8: Schleuse_4443 --- +CALL FB "None" , (Automatik:=Auto, Handbetrieb:=FALSE, T_Ast:=0, T_Gst:=5, ZylAst:="MB4443", ZylGst:=?) + + +--- NW 9: Weiche_4445 --- +CALL FB "None" , (Automatik:=Auto, Handbetrieb:=FALSE, T_Ast:=0, T_Gst:=5, ZylAst:="MB4445", ZylGst:=?) + + A "MB4445" + = "MB4457" + + +--- NW 10: Schleuse_4450 --- +CALL FB "None" , (Automatik:=Auto, Handbetrieb:=FALSE, T_Ast:=0, T_Gst:=5, ZylAst:="MB4450", ZylGst:=?) + + +--- NW 11: Ende --- +Next2: BE + diff --git a/=A01+UH07-KF00/Programmbausteine/Anlage/2_VPtoEP/Omnifahren_VPtoEP/DVPtoEP_OmniFahren.awl b/=A01+UH07-KF00/Programmbausteine/Anlage/2_VPtoEP/Omnifahren_VPtoEP/DVPtoEP_OmniFahren.awl new file mode 100644 index 0000000..091d793 --- /dev/null +++ b/=A01+UH07-KF00/Programmbausteine/Anlage/2_VPtoEP/Omnifahren_VPtoEP/DVPtoEP_OmniFahren.awl @@ -0,0 +1,17 @@ +=== InstanceDB 2128: DVPtoEP_OmniFahren [DB] === +INTERFACE: + Input: + Output: + InOut: + Static: + Schleuse_3247 : "MHMOmniSchleuse_Plus" + Schleuse_3275 : "MHMOmniSchleuse" + Bereich_3361 : "MHMOmniBereich_Plus" + Schleuse_3363 : "MHMOmniSchleuse" + Schleuse_3366 : "MHMOmniSchleuse" + Bereich_4441 : "MHMOmniBereich_Plus" + Schleuse_4443 : "MHMOmniSchleuse_Plus" + Weiche_4445 : "MHMOmniWeiche_Plus" + Schleuse_4450 : "MHMOmniSchleuse_Plus" + Bereich_4454 : "MHMOmniBereich_Plus" + Übergang_4501 : "MHMÜbergang_ohne_Schleuse" diff --git a/=A01+UH07-KF00/Programmbausteine/Anlage/2_VPtoEP/Omnifahren_VPtoEP/VPtoEP_Draussen_FC.awl b/=A01+UH07-KF00/Programmbausteine/Anlage/2_VPtoEP/Omnifahren_VPtoEP/VPtoEP_Draussen_FC.awl new file mode 100644 index 0000000..1d2a1ca --- /dev/null +++ b/=A01+UH07-KF00/Programmbausteine/Anlage/2_VPtoEP/Omnifahren_VPtoEP/VPtoEP_Draussen_FC.awl @@ -0,0 +1,49 @@ +=== FC 2182: VPtoEP_Draussen_FC [STL] === +INTERFACE: + Input: + Output: + InOut: + Temp: + Constant: + Return: + Ret_Val : Void + +--- NW 1: Rückmeldung --- + SET // Rückmeldungen erst mal resetten + R "M180.6" // Weiterfahrt von Ziel-FC erlaubt + + +--- NW 2: Schleuse 4443 (Vor ByPass zum LP): Ausgefahren ? --- + L "MW190" + L 4443 // Aufruf von Schleuse 4443 ? + <>I // Nein! + JC X4443E + +// Evtl. erkannten Sack löschen: + SET + R "DVPtoEP_Sensoren".Sack_BG4444.Stat.B_Akt + + L "DVPtoEP_OmniFahren".Schleuse_4443.Dyn.Weichen_Ziel + L 16#4461 // Abzweig ? + <>I // Nein ! + JC EP + +// Trolley fährt zum LP: +// Trolleydaten in DB1000 löschen, da zum LP fährt und danach kein Leser mehr! +CALL FC "Trolleydaten_löschen" (Gesamt_Trolley_DL:=1000, TrolleyID:="DVPtoEP_OmniFahren".Schleuse_4443.Dyn.TrolleyID_Schleuse) // IDX"DLP>HW_OmniFahren".Schleuse_4221.Dyn.TrolleyID_Schleuse + +// Bei Partner (Schleuse 4466) wieder mit Schritt 0 beginnen (erneuter Ziel-FC-Aufruf) + L 0 + T "DEPtoLP_OmniFahren".Schleuse_4466.Dyn.Sk.Akt_Schritt + + BEU + +// Trolleydaten in DB1000 ändern: +EP: CALL FC "Trolleydaten_ändern" (Gesamt_Trolley_DL:=1000, TrolleyID:="DVPtoEP_OmniFahren".Schleuse_4443.Dyn.TrolleyID_Schleuse, Endziel:=16#E000, ShopGroup:=DINT#0) // IDX | Entnahmepuffer + +X4443E: NOP 0 + + +--- NW 3: Ende --- + BE + diff --git a/=A01+UH07-KF00/Programmbausteine/Anlage/2_VPtoEP/Omnifahren_VPtoEP/VPtoEP_Leser_FC.awl b/=A01+UH07-KF00/Programmbausteine/Anlage/2_VPtoEP/Omnifahren_VPtoEP/VPtoEP_Leser_FC.awl new file mode 100644 index 0000000..dd383bb --- /dev/null +++ b/=A01+UH07-KF00/Programmbausteine/Anlage/2_VPtoEP/Omnifahren_VPtoEP/VPtoEP_Leser_FC.awl @@ -0,0 +1,47 @@ +=== FC 2180: VPtoEP_Leser_FC [STL] === +INTERFACE: + Input: + Output: + InOut: + Temp: + Zielebene : Word + Constant: + Return: + Ret_Val : Void + +--- NW 1: Rückmeldung --- +// Keine + L 0 // Evtl. Zwischenziel (MW196) + T "MW196" + + +--- NW 2: Schleuse 4443: (Vor ByPass zurück zu LP) --- + L "MW190" // Schleusen-Nr. + L 4443 // Aufruf von Schleuse ? + <>I // Nein! + JC X4443E + + AN "M180.0" // Lesefehler + JC Y4443 + + BEU + +Y4443: AN "M180.1" // unbekannt in TrolleysDL + BEC + +// Daten in Datenbank erzeugen: + L "DVPtoEP_OmniFahren".Schleuse_4443.Dyn.TrolleyID_Schleuse + L DINT#0 // ID bekannt? + ==D // Nein + BEC + +CALL FC "Trolleydaten_neu_anlegen" (Gesamt_Trolley_DL:="DVPtoEP_OmniFahren".Schleuse_4443.Schleuse.Gesamt_Trolley_DL, TrolleyID:="DVPtoEP_OmniFahren".Schleuse_4443.Dyn.TrolleyID_Schleuse, Endziel:=16#C000, ShopGroup:=DINT#0) // Entnahme-Puffer-Bereich + + BEU + +X4443E: NOP 0 + + +--- NW 3: Ende --- + BE + diff --git a/=A01+UH07-KF00/Programmbausteine/Anlage/2_VPtoEP/Omnifahren_VPtoEP/VPtoEP_OmniFahren.awl b/=A01+UH07-KF00/Programmbausteine/Anlage/2_VPtoEP/Omnifahren_VPtoEP/VPtoEP_OmniFahren.awl new file mode 100644 index 0000000..ecf7170 --- /dev/null +++ b/=A01+UH07-KF00/Programmbausteine/Anlage/2_VPtoEP/Omnifahren_VPtoEP/VPtoEP_OmniFahren.awl @@ -0,0 +1,251 @@ +=== FB 2128: VPtoEP_OmniFahren [STL] === +INTERFACE: + Input: + Output: + InOut: + Static: + Schleuse_3247 : "MHMOmniSchleuse_Plus" + Schleuse_3275 : "MHMOmniSchleuse" + Bereich_3361 : "MHMOmniBereich_Plus" + Schleuse_3363 : "MHMOmniSchleuse" + Schleuse_3366 : "MHMOmniSchleuse" + Bereich_4441 : "MHMOmniBereich_Plus" + Schleuse_4443 : "MHMOmniSchleuse_Plus" + Weiche_4445 : "MHMOmniWeiche_Plus" + Schleuse_4450 : "MHMOmniSchleuse_Plus" + Bereich_4454 : "MHMOmniBereich_Plus" + Übergang_4501 : "MHMÜbergang_ohne_Schleuse" + Temp: + ErrQuit : Bool + ErrAnz : Bool + Stau_raus : Bool + Start_ok : Bool + B_aktiv : Bool + B_vor_Schleuse : Bool + B_nach_Schleuse : Bool + Antrieb_aktiv : Bool + Antrieb_vor : Bool + Antrieb_stop : Bool + Fahren_Ok : Bool + Antrieb_nicht_stoppen : Bool + Constant: + +--- NW 1: Systemzeug --- +// Verschiedene Bereiche: + A "DOutbound_Bereich".A01_UH07.AnlageEin + = Schleuse_3247.Dyn.Sk.Auto_akt + = Schleuse_3275.Dyn.Sk.Auto_akt + = Bereich_3361.Dyn.Sk.Auto_akt + = Schleuse_3363.Dyn.Sk.Auto_akt + = Schleuse_3366.Dyn.Sk.Auto_akt + = Bereich_4441.Dyn.Sk.Auto_akt + = Schleuse_4443.Dyn.Sk.Auto_akt + = Weiche_4445.Dyn.Status.Auto_akt + = Schleuse_4450.Dyn.Sk.Auto_akt + = Bereich_4454.Dyn.Sk.Auto_akt + + AN "DOutbound_Bereich".A01_UC071.BereichErr + = Schleuse_3247.Dyn.Sk.Bereich_ok + = Schleuse_3275.Dyn.Sk.Bereich_ok + AN "DOutbound_Bereich".A01_UH07.BereichErr + = Bereich_3361.Dyn.Sk.Bereich_ok + = Schleuse_3363.Dyn.Sk.Bereich_ok + = Schleuse_3366.Dyn.Sk.Bereich_ok + AN "DOutbound_Bereich".A01_UC074.BereichErr + = Bereich_4441.Dyn.Sk.Bereich_ok + = Schleuse_4443.Dyn.Sk.Bereich_ok + = Weiche_4445.Dyn.Status.Bereich_ok + = Schleuse_4450.Dyn.Sk.Bereich_ok + = Bereich_4454.Dyn.Sk.Bereich_ok + + +--- NW 2: Störungen quittieren UZ7105 --- + A "DOutbound_Bereich".A01_UZ7105.StOk_aktiv + O "DOutbound_Bereich".A01_UC071.StOk_aktiv + O "DOutbound_Bereich".A01_UH07.StOk_aktiv + = ErrQuit + + +--- NW 3: Schleuse 3247 --- +CALL FB "None" , (Schleusen_Nr:=3247, ErrQuit:=ErrQuit, B_VorSchleuse:="BG3246", B_InSchleuse:="BG3247", B_Zähl:="BG3251", B_Stau_raus:="DVPtoEP_Sensoren".Stau_BG3251.Stat.B_Akt, Start_Ok:=1, Antrieb_Schleuse_aktiv:="MA0151", Antrieb_plus_aktiv:="MA0151", Schleuse_geöffnet:="MB3247", RestZeit_Bereich_plus:=?, Y_Schleuse_Auf:="DVPtoEP_Zylinder".Schleuse_3247.Stat.Ast, Error:=DB708.DBW520, Antrieb_Schleuse_vor:="DVPtoEP_Antriebe".MA0151.Stat.A_vor, Antrieb_Schleuse_start:="DVPtoEP_Antriebe".MA0151.Stat.A_start, Antrieb_Schleuse_stop:="DVPtoEP_Antriebe".MA0151.Stat.Stop_vor, Antrieb_Schleuse_PS:="DVPtoEP_Antriebe".MA0151.Stat.A_PS, Antrieb_plus_vor:=?, Antrieb_plus_start:=?, hStOk:=ErrAnz) // Identisch + + +--- NW 4: Schleuse 3275 --- +CALL FB "None" , (Schleusen_Nr:=3275, ErrQuit:=ErrQuit, B_VorSchleuse:="BG3251", B_InSchleuse:="BG3275", B_AusSchleuse:="BG3274", B_Stau_raus:="DVPtoEP_Sensoren".Stau_BG3274.Stat.B_Akt, Start_Ok:=Bereich_3361.Dyn.Sk.Bereich_ok, Antrieb_Schleuse_aktiv:="MA0151", Antrieb_plus_aktiv:="MA0060", Schleuse_geöffnet:="MB3275", RestZeit_Bereich_plus:=Bereich_3361.Dyn.Restzeit, Y_Schleuse_Auf:="DVPtoEP_Zylinder".Schleuse_3275.Stat.Ast, Error:=DB708.DBW570, Antrieb_Schleuse_vor:="DVPtoEP_Antriebe".MA0151.Stat.A_vor, Antrieb_Schleuse_start:="DVPtoEP_Antriebe".MA0151.Stat.A_start, Antrieb_Schleuse_stop:="DVPtoEP_Antriebe".MA0151.Stat.Stop_vor, Antrieb_Schleuse_PS:="DVPtoEP_Antriebe".MA0151.Stat.A_PS, Antrieb_plus_vor:=Bereich_3361.Dyn.Status.Trolley_kommt_in_Bereich, Antrieb_plus_start:=?, hStOk:=ErrAnz) + + +--- NW 5: Störungen anzeigen UZ7105 --- + A ErrAnz + R ErrAnz + S "DOutbound_Bereich".A01_UZ7105.StOk_blinken + S "DOutbound_Bereich".A01_UC071.StOk_blinken + S "DOutbound_Bereich".A01_UH07.StOk_blinken + + +--- NW 6: Störungen quittieren UZ7105/0701 --- + A "DOutbound_Bereich".A01_UZ7105.StOk_aktiv + O "DOutbound_Bereich".A01_UZ0701.StOk_aktiv + O "DOutbound_Bereich".A01_UC071.StOk_aktiv + O "DOutbound_Bereich".A01_UH07.StOk_aktiv + = ErrQuit + + +--- NW 7: Bereich 3361 --- + A "BG3274" + A "MB3275" + = B_vor_Schleuse + +CALL FB "None" , (Bereichs_Nr:=3361, ErrQuit:=ErrQuit, B_BereichsAnfang:=B_vor_Schleuse, B_BereichsEnde:="BG3361", B_Zähl:="BG3362", B_Stau_raus:="DVPtoEP_Sensoren".Stau_BG3362.Stat.B_Akt, Start_Ok:=1, Antrieb_Bereich_aktiv:="MA0060", Antrieb_plus_aktiv:="MA0061", RestZeit_Bereich_plus:=?, Antrieb_Bereich_vor:="DVPtoEP_Antriebe".MA0060.Stat.A_vor, Antrieb_Bereich_stop:="DVPtoEP_Antriebe".MA0060.Stat.Stop_vor, Error:=DB708.DBW454, Antrieb_Bereich_start:="DVPtoEP_Antriebe".MA0060.Stat.A_start, Antrieb_plus_vor:="DVPtoEP_Antriebe".MA0061.Stat.A_vor, Antrieb_plus_start:="DVPtoEP_Antriebe".MA0061.Stat.A_start, Antrieb_minus_vor:="DVPtoEP_Antriebe".MA0151.Stat.A_vor, hStOk:=ErrAnz) + + +--- NW 8: Störungen anzeigen UZ7105/0701 --- + A ErrAnz + R ErrAnz + S "DOutbound_Bereich".A01_UZ7105.StOk_blinken + S "DOutbound_Bereich".A01_UZ0701.StOk_blinken + S "DOutbound_Bereich".A01_UC071.StOk_blinken + S "DOutbound_Bereich".A01_UH07.StOk_blinken + + +--- NW 9: Störungen quittieren UZ0701 --- + A "DOutbound_Bereich".A01_UZ0701.StOk_aktiv + O "DOutbound_Bereich".A01_UH07.StOk_aktiv + = ErrQuit + + +--- NW 10: Schleuse 3363 --- +CALL FB "None" , (Schleusen_Nr:=3363, ErrQuit:=ErrQuit, B_VorSchleuse:="BG3362", B_InSchleuse:="BG3363", B_AusSchleuse:="BG3364", B_Stau_raus:="DVPtoEP_Sensoren".Stau_BG3364.Stat.B_Akt, Start_Ok:=1, Antrieb_Schleuse_aktiv:="MA0061", Antrieb_plus_aktiv:="MA0061", Schleuse_geöffnet:="MB3363", RestZeit_Bereich_plus:=?, Y_Schleuse_Auf:="DVPtoEP_Zylinder".Schleuse_3363.Stat.Ast, Error:=DB708.DBW528, Antrieb_Schleuse_vor:="DVPtoEP_Antriebe".MA0061.Stat.A_vor, Antrieb_Schleuse_start:="DVPtoEP_Antriebe".MA0061.Stat.A_start, Antrieb_Schleuse_stop:="DVPtoEP_Antriebe".MA0061.Stat.Stop_vor, Antrieb_Schleuse_PS:="DVPtoEP_Antriebe".MA0061.Stat.A_PS, Antrieb_plus_vor:=?, Antrieb_plus_start:=?, hStOk:=ErrAnz) // Identisch + + + +--- NW 11: Schleuse 3366 (vor BST 1) --- + AN "7_HMI_Err_UH07_OB".System.Gesamt_Feueralarm_Halle3 + AN "7_HMI_Err_UH07_OB".System.Gesamt_Feueralarm_Halle4 + AN "7_HMI_Err_UH07_OB".System.BST1_Feueralarm + AN "7_HMI_Err_UH07_OB".System.BST1_Geschlossen + AN "7_HMI_Err_UH07_OB".System."BST1_Störung" + A Bereich_4441.Dyn.Sk.Bereich_ok + = Fahren_Ok + +CALL FB "None" , (Schleusen_Nr:=3366, ErrQuit:=ErrQuit, B_VorSchleuse:="BG3364", B_InSchleuse:="BG3366", B_AusSchleuse:="BG4440", B_Stau_raus:="DVPtoEP_Sensoren".Stau_BG4440.Stat.B_Akt, Start_Ok:=Fahren_Ok, Antrieb_Schleuse_aktiv:="MA0061", Antrieb_plus_aktiv:="MA0320", Schleuse_geöffnet:="MB3366", RestZeit_Bereich_plus:=Bereich_4441.Dyn.Restzeit, Y_Schleuse_Auf:="DVPtoEP_Zylinder".Schleuse_3366.Stat.Ast, Error:=DB708.DBW530, Antrieb_Schleuse_vor:="DVPtoEP_Antriebe".MA0061.Stat.A_vor, Antrieb_Schleuse_start:="DVPtoEP_Antriebe".MA0061.Stat.A_start, Antrieb_Schleuse_stop:="DVPtoEP_Antriebe".MA0061.Stat.Stop_vor, Antrieb_Schleuse_PS:="DVPtoEP_Antriebe".MA0061.Stat.A_PS, Antrieb_plus_vor:=Bereich_4441.Dyn.Status.Trolley_kommt_in_Bereich, Antrieb_plus_start:=?, hStOk:=ErrAnz) + + +--- NW 12: Störungen anzeigen UZ0701 --- + A ErrAnz + R ErrAnz + S "DOutbound_Bereich".A01_UZ0701.StOk_blinken + S "DOutbound_Bereich".A01_UH07.StOk_blinken + + +--- NW 13: Störungen quittieren UZ7401 --- + A "DOutbound_Bereich".A01_UZ7401.StOk_aktiv + O "DOutbound_Bereich".A01_UC074.StOk_aktiv + O "DOutbound_Bereich".A01_UH07.StOk_aktiv + = ErrQuit + + +--- NW 14: Bereich 4441 (hinter BST 1) --- +// Falls Trolley hinter BST noch gespeichert + A "DVPtoEP_Sensoren".Stau_BG4440.Stat.B_Akt + S "DVPtoEP_Antriebe".MA0320.Stat.A_start + + A "BG4440" + A "MB3366" + = B_vor_Schleuse + +CALL FB "None" , (Bereichs_Nr:=4441, ErrQuit:=ErrQuit, B_BereichsAnfang:=B_vor_Schleuse, B_BereichsEnde:="BG4441", B_Zähl:="BG4442", B_Stau_raus:="DVPtoEP_Sensoren".Stau_BG4442.Stat.B_Akt, Start_Ok:=1, Antrieb_Bereich_aktiv:="MA0320", Antrieb_plus_aktiv:="MA0321", RestZeit_Bereich_plus:=?, Antrieb_Bereich_vor:="DVPtoEP_Antriebe".MA0320.Stat.A_vor, Antrieb_Bereich_stop:="DVPtoEP_Antriebe".MA0320.Stat.Stop_vor, Error:=DB708.DBW474, Antrieb_Bereich_start:="DVPtoEP_Antriebe".MA0320.Stat.A_start, Antrieb_plus_vor:="DVPtoEP_Antriebe".MA0321.Stat.A_vor, Antrieb_plus_start:="DVPtoEP_Antriebe".MA0321.Stat.A_start, Antrieb_minus_vor:=?, hStOk:=ErrAnz) + + +--- NW 15: Schleuse 4443 --- +CALL FB "None" , (Schleusen_Nr:=4443, ErrQuit:=ErrQuit, B_VorSchleuse:="BG4442", B_InSchleuse:="BG4443", B_Zähl:=?, B_Stau_raus:="DVPtoEP_Sensoren".Stau_BG4445.Stat.B_Akt, Start_Ok:=1, Antrieb_Schleuse_aktiv:="MA0321", Antrieb_plus_aktiv:=?, Schleuse_geöffnet:="MB4443", RestZeit_Bereich_plus:=?, Y_Schleuse_Auf:="DVPtoEP_Zylinder".Schleuse_4443.Stat.Ast, Error:=DB708.DBW554, Antrieb_Schleuse_vor:="DVPtoEP_Antriebe".MA0321.Stat.A_vor, Antrieb_Schleuse_start:="DVPtoEP_Antriebe".MA0321.Stat.A_start, Antrieb_Schleuse_stop:="DVPtoEP_Antriebe".MA0321.Stat.Stop_vor, Antrieb_Schleuse_PS:="DVPtoEP_Antriebe".MA0321.Stat.A_PS, Antrieb_plus_vor:=?, Antrieb_plus_start:=?, hStOk:=ErrAnz) // über Weiche | über Weiche | über Weiche + + +--- NW 16: Weiche 4445 --- + A "MA0321" + A "MA0332" + = Antrieb_aktiv + + SET + R Antrieb_vor + R Antrieb_stop + +CALL FB "None" , (Weichen_Nr:=4445, ErrQuit:=ErrQuit, Fahren_Ok:=1, B_Ziel_gerade:="BG4447", B_Ziel_abzweig:="BG4461", Antrieb_Weiche_aktiv:=Antrieb_aktiv, Antrieb_Gerade_aktiv:="MA0322", Antrieb_Abzweig_aktiv:="MA0331", Weiche_ist_AST:="MB4445", Y_Weiche_gerade:=?, Y_Weiche_abzweig:="DVPtoEP_Zylinder".Weiche_4445.Stat.Ast, Error:=DB708.DBW556, Antrieb_Weiche_vor:=Antrieb_vor, Antrieb_Weiche_stop:=Antrieb_stop, Antrieb_Weiche_gerade_vor:="DVPtoEP_Antriebe".MA0322.Stat.A_vor, Antrieb_Weiche_gerade_stop:="DVPtoEP_Antriebe".MA0322.Stat.Stop_vor, Antrieb_Weiche_abzweig_vor:="DEPtoLP_Antriebe".MA0331.Stat.A_vor, Antrieb_Weiche_abzweig_stop:="DEPtoLP_Antriebe".MA0331.Stat.Stop_vor, hStOk:=ErrAnz) // da 2 Antriebe notwendig + + A Antrieb_vor + S "DVPtoEP_Antriebe".MA0321.Stat.A_vor + S "DEPtoLP_Antriebe".MA0332.Stat.A_vor + S "DVPtoEP_Antriebe".MA0321.Stat.A_start + S "DEPtoLP_Antriebe".MA0332.Stat.A_start + + A Antrieb_stop + S "DVPtoEP_Antriebe".MA0321.Stat.Stop_vor + + A Antrieb_stop + A "MB4445" // Nur bei Abzweig + S "DEPtoLP_Antriebe".MA0332.Stat.Stop_vor + +// Damit Partner fahren kann: + A Weiche_4445.Dyn.Status.Weiche_frei + R "DVPtoEP_Zylinder".Weiche_4445.Stat.Ast + + +--- NW 17: Schleuse 4450 --- + SET + R Antrieb_vor + +CALL FB "None" , (Schleusen_Nr:=4450, ErrQuit:=ErrQuit, B_VorSchleuse:="BG4447", B_InSchleuse:="BG4450", B_Zähl:="BG4451", B_Stau_raus:="DVPtoEP_Sensoren".Stau_BG4451.Stat.B_Akt, Start_Ok:=1, Antrieb_Schleuse_aktiv:="MA0322", Antrieb_plus_aktiv:="MA0323", Schleuse_geöffnet:="MB4450", RestZeit_Bereich_plus:=Bereich_4454.Dyn.Restzeit, Y_Schleuse_Auf:="DVPtoEP_Zylinder".Schleuse_4450.Stat.Ast, Error:=DB708.DBW558, Antrieb_Schleuse_vor:="DVPtoEP_Antriebe".MA0322.Stat.A_vor, Antrieb_Schleuse_start:="DVPtoEP_Antriebe".MA0322.Stat.A_start, Antrieb_Schleuse_stop:="DVPtoEP_Antriebe".MA0322.Stat.Stop_vor, Antrieb_Schleuse_PS:="DVPtoEP_Antriebe".MA0322.Stat.A_PS, Antrieb_plus_vor:=Antrieb_vor, Antrieb_plus_start:=?, hStOk:=ErrAnz) + + A Antrieb_vor + S "DVPtoEP_Antriebe".MA0322.Stat.A_vor + S Bereich_4454.Dyn.Status.Trolley_kommt_in_Bereich + + +--- NW 18: Störungen anzeigen UZ7401 --- + A ErrAnz + R ErrAnz + S "DOutbound_Bereich".A01_UZ7401.StOk_blinken + S "DOutbound_Bereich".A01_UC074.StOk_blinken + S "DOutbound_Bereich".A01_UH07.StOk_blinken + + +--- NW 19: Störungen quittieren UZ7401/7402 --- + A "DOutbound_Bereich".A01_UZ7401.StOk_aktiv + O "DOutbound_Bereich".A01_UZ7402.StOk_aktiv + O "DOutbound_Bereich".A01_UC074.StOk_aktiv + O "DOutbound_Bereich".A01_UH07.StOk_aktiv + = ErrQuit + + +--- NW 20: Bereich 4454 --- + A "BG4453" + A "MB4450" + = B_vor_Schleuse + + A "DVPtoEP_Sensoren".Stau_BG4500.Stat.B_Akt + O "DVPtoEP_Sensoren".Stau_BG4530.Stat.B_Akt + O "DVPtoEP_Sensoren".Stau_BG4502.Stat.B_Akt + = Stau_raus + +CALL FB "None" , (Bereichs_Nr:=4454, ErrQuit:=ErrQuit, B_BereichsAnfang:=B_vor_Schleuse, B_BereichsEnde:="BG4454", B_Zähl:="BG4500", B_Stau_raus:=Stau_raus, Start_Ok:=1, Antrieb_Bereich_aktiv:="MA0323", Antrieb_plus_aktiv:="MA0324", RestZeit_Bereich_plus:=?, Antrieb_Bereich_vor:="DVPtoEP_Antriebe".MA0323.Stat.A_vor, Antrieb_Bereich_stop:="DVPtoEP_Antriebe".MA0323.Stat.Stop_vor, Error:=DB708.DBW476, Antrieb_Bereich_start:="DVPtoEP_Antriebe".MA0323.Stat.A_start, Antrieb_plus_vor:="DVPtoEP_Antriebe".MA0324.Stat.A_vor, Antrieb_plus_start:="DVPtoEP_Antriebe".MA0324.Stat.A_start, Antrieb_minus_vor:="DVPtoEP_Antriebe".MA0322.Stat.A_vor, hStOk:=ErrAnz) + + +--- NW 21: MA0324 / Übergang 4501 --- + A "BG4500" + O "BG4530" + = B_vor_Schleuse + +CALL FB "None" , (ErrQuit:=ErrQuit, B_Anfang:=B_vor_Schleuse, B_Am_Übergang:="BG4501", B_Stau_Antrieb_plus:="BG4502", Antrieb_aktiv:="MA0324", Antrieb_plus_aktiv:="MA0325", Antrieb_vor:="DVPtoEP_Antriebe".MA0324.Stat.A_vor, Antrieb_start:="DVPtoEP_Antriebe".MA0324.Stat.A_start, Antrieb_stop:="DVPtoEP_Antriebe".MA0324.Stat.A_PS, Antrieb_plus_vor:="DVPtoEP_Antriebe".MA0325.Stat.A_vor, Antrieb_plus_start:="DVPtoEP_Antriebe".MA0325.Stat.A_start) + + +--- NW 22: Störungen anzeigen UZ7401/7402 --- + A ErrAnz + R ErrAnz + S "DOutbound_Bereich".A01_UZ7401.StOk_blinken + S "DOutbound_Bereich".A01_UZ7402.StOk_blinken + S "DOutbound_Bereich".A01_UC074.StOk_blinken + S "DOutbound_Bereich".A01_UH07.StOk_blinken + + +--- NW 23: Ende --- + BE + diff --git a/=A01+UH07-KF00/Programmbausteine/Anlage/2_VPtoEP/Omnifahren_VPtoEP/VPtoEP_Ziel_FC.awl b/=A01+UH07-KF00/Programmbausteine/Anlage/2_VPtoEP/Omnifahren_VPtoEP/VPtoEP_Ziel_FC.awl new file mode 100644 index 0000000..8e92871 --- /dev/null +++ b/=A01+UH07-KF00/Programmbausteine/Anlage/2_VPtoEP/Omnifahren_VPtoEP/VPtoEP_Ziel_FC.awl @@ -0,0 +1,120 @@ +=== FC 2181: VPtoEP_Ziel_FC [STL] === +INTERFACE: + Input: + Output: + InOut: + Temp: + Ziel_hex : Word + Ziel_int : Int + Zielebene : Word + Error : Byte + Position : Int + Lager_DB : Int + Lager_DW : Int + AR1Zeiger : DWord // Statt AR1 (ging nur bis DB-Länge <= 8191 Bytes) + AR1Start : DInt // Startwert mit Offset 0 + SSDW : Int + EndZiel : Word + Variante : Int + AbrufID : DInt + Fahrlisten_TrolleyID : DInt + Fahrlisten_AbrufID : DInt + Fahrlisten_Lager : Int + Trolley_unbekannt : Bool // Trolley ist nicht in DL + Express_Abruf : Bool + Constant: + Return: + Ret_Val : Void + +--- NW 1: Rückmeldung --- + SET // Rückmeldungen erst mal resetten + R "M180.6" // Weiterfahrt von Ziel-FC erlaubt + + +--- NW 2: Bereich 3361: Weiterfahren erlaubt ? (Ende MA0060) --- + L "MW190" + L 3361 // Aufruf von Schleuse 3361 ? + <>I // Nein! + JC X3361E + + AN "DVPtoEP_Sensoren".Stau_BG3362.Stat.B_Akt + S "M180.6" // Weiterfahrt ist erlaubt + + BEU + +X3361E: NOP 0 + + +--- NW 3: Schleuse 3366: (BST 1) --- + L "MW190" + L 3366 // Aufruf von Schleuse XXXX? + <>I // Nein! + JC X3366E + + SET + S "M180.6" // Weiterfahrt ist erlaubt + + BEU + +X3366E: NOP 0 + + +--- NW 4: Bereich 4441: Weiterfahren erlaubt ? (Ende MA0320) --- + L "MW190" + L 4441 // Aufruf von Schleuse 4441 ? + <>I // Nein! + JC X4441E + + AN "DVPtoEP_Sensoren".Stau_BG4442.Stat.B_Akt + S "M180.6" // Weiterfahrt ist erlaubt + + BEU + +X4441E: NOP 0 + + +--- NW 5: Schleuse 4443: (Vor ByPass zurück zu LP) --- + L "MW190" + L 4443 // Aufruf von Schleuse XXXX? + <>I // Nein! + JC PS5E + +// Ziel-Check: + L "DVPtoEP_OmniFahren".Schleuse_4443.Dyn.Trolley_ShopGroup + L DINT#-1 // leerer Trolley ? + ==D // Ja ! + AN "DVPtoEP_Sensoren".Sack_BG4444.Stat.B_Akt // Kein Sack erkannt + JC A4443 // Abzweig fahren + + JU G4443 // Rest Gerade fahren + +A4443: L 16#4461 + T "MW198" // Weichenziel + +// Quell-Steuerung: + L "DEPtoLP_OmniFahren".Schleuse_4466.Dyn.Raus_Trolleys + L 0 // Sind Trolleys zur Weiche MB4210 unterwegs? + >I // Ja! + O "DEPtoLP_OmniFahren".Schleuse_4466.Dyn.Status.Reset_aktiv + O "MB4466" // Andere Quelle aktiv + BEC + + AN "DEPtoLP_Sensoren".Stau_BG4461.Stat.B_Akt + S "M180.6" // Weiterfahrt ist erlaubt + + BEU + +G4443: L 16#4447 + T "MW198" // Weichenziel + + AN "DVPtoEP_Sensoren".Stau_BG4447.Stat.B_Akt + S "M180.6" // Weiterfahrt ist erlaubt + + BEU + +PS5E: NOP 0 + + +--- NW 6: Ende --- + BE + diff --git a/=A01+UH07-KF00/Programmbausteine/Anlage/2_VPtoEP/VPtoEP_Bereich.awl b/=A01+UH07-KF00/Programmbausteine/Anlage/2_VPtoEP/VPtoEP_Bereich.awl new file mode 100644 index 0000000..86d8593 --- /dev/null +++ b/=A01+UH07-KF00/Programmbausteine/Anlage/2_VPtoEP/VPtoEP_Bereich.awl @@ -0,0 +1,23 @@ +=== FC 2100: VPtoEP_Bereich [STL] === +INTERFACE: + Input: + Output: + InOut: + Temp: + Constant: + Return: + Ret_Val : Void + +--- NW 1: Baustein-Aufrufe --- +CALL FB "VPtoEP_Sensoren" , + +CALL FB "VPtoEP_OmniFahren" , + +CALL FB "VPtoEP_Zylinder" , + +CALL FB "VPtoEP_Antriebe" , + + +--- NW 2: Ende --- + BE + diff --git a/=A01+UH07-KF00/Programmbausteine/Anlage/3_Entnahmepuffer/Basics/DEP_Sensoren.awl b/=A01+UH07-KF00/Programmbausteine/Anlage/3_Entnahmepuffer/Basics/DEP_Sensoren.awl new file mode 100644 index 0000000..b781ffe --- /dev/null +++ b/=A01+UH07-KF00/Programmbausteine/Anlage/3_Entnahmepuffer/Basics/DEP_Sensoren.awl @@ -0,0 +1,10 @@ +=== InstanceDB 3190: DEP_Sensoren [DB] === +INTERFACE: + Input: + Output: + InOut: + Static: + Stau_EP1 : "MSensoren" + Stau_EP2 : "MSensoren" + Stau_EP3 : "MSensoren" + Stau_EP4 : "MSensoren" diff --git a/=A01+UH07-KF00/Programmbausteine/Anlage/3_Entnahmepuffer/Basics/DEP_Zylinder.awl b/=A01+UH07-KF00/Programmbausteine/Anlage/3_Entnahmepuffer/Basics/DEP_Zylinder.awl new file mode 100644 index 0000000..c720bcf --- /dev/null +++ b/=A01+UH07-KF00/Programmbausteine/Anlage/3_Entnahmepuffer/Basics/DEP_Zylinder.awl @@ -0,0 +1,11 @@ +=== InstanceDB 3192: DEP_Zylinder [DB] === +INTERFACE: + Input: + Output: + InOut: + Static: + Sorter_4503 : "MZylinder" + Weiche_EP1 : "MZylinder" + Weiche_EP2 : "MZylinder" + Weiche_EP3 : "MZylinder" + Weiche_EP4 : "MZylinder" diff --git a/=A01+UH07-KF00/Programmbausteine/Anlage/3_Entnahmepuffer/Basics/EP_Sensoren.awl b/=A01+UH07-KF00/Programmbausteine/Anlage/3_Entnahmepuffer/Basics/EP_Sensoren.awl new file mode 100644 index 0000000..701a7c2 --- /dev/null +++ b/=A01+UH07-KF00/Programmbausteine/Anlage/3_Entnahmepuffer/Basics/EP_Sensoren.awl @@ -0,0 +1,42 @@ +=== FB 3190: EP_Sensoren [STL] === +INTERFACE: + Input: + Output: + InOut: + Static: + Stau_EP1 : "MSensoren" + Stau_EP2 : "MSensoren" + Stau_EP3 : "MSensoren" + Stau_EP4 : "MSensoren" + Temp: + T_Ein : Int // Vorgabe Einschaltverzögerung + T_Aus : Int // Zwischenspeicher Ausschaltverzögerung + F1 : Bool // Geschwindigkeit 1 aktiviert + F2 : Bool // Geschwindigkeit 2 aktiviert + F3 : Bool // Geschwindigkeit 3 aktiviert + ESensor : Bool // Sensoren + Antrieb : Bool + VReal : Real // GeschwindigkeitinReal + Zeit : Int // Zeit für Ausschaltverzögerung LT1100 + Aktiv : Bool // Zeit aktivieren + Constant: + +--- NW 1: Sensoren entprellen --- +CALL FB "None" , (ESensor:="BG4504", T_Ein:=100, T_Aus:=11, tein_aktiv:=TRUE, taus_aktiv:=TRUE) + + +--- NW 2: Sensoren entprellen --- +CALL FB "None" , (ESensor:="BG4505", T_Ein:=100, T_Aus:=11, tein_aktiv:=TRUE, taus_aktiv:=TRUE) + + +--- NW 3: Sensoren entprellen --- +CALL FB "None" , (ESensor:="BG4506", T_Ein:=100, T_Aus:=11, tein_aktiv:=TRUE, taus_aktiv:=TRUE) + + +--- NW 4: Sensoren entprellen --- +CALL FB "None" , (ESensor:="BG4507", T_Ein:=100, T_Aus:=11, tein_aktiv:=TRUE, taus_aktiv:=TRUE) + + +--- NW 5: Ende --- + BE + diff --git a/=A01+UH07-KF00/Programmbausteine/Anlage/3_Entnahmepuffer/Basics/EP_Zylinder.awl b/=A01+UH07-KF00/Programmbausteine/Anlage/3_Entnahmepuffer/Basics/EP_Zylinder.awl new file mode 100644 index 0000000..740ac87 --- /dev/null +++ b/=A01+UH07-KF00/Programmbausteine/Anlage/3_Entnahmepuffer/Basics/EP_Zylinder.awl @@ -0,0 +1,50 @@ +=== FB 3192: EP_Zylinder [STL] === +INTERFACE: + Input: + Output: + InOut: + Static: + Sorter_4503 : "MZylinder" // + Weiche_EP1 : "MZylinder" // + Weiche_EP2 : "MZylinder" + Weiche_EP3 : "MZylinder" + Weiche_EP4 : "MZylinder" + Temp: + Auto : Bool // Automatik ist aktiv + Hand : Bool // Hand ist aktiv + ZylAst : Bool // Zylinder ansteuern + Constant: + +--- NW 1: Übergabe des Bereichstatus System UC074/A01 --- + A "DOutbound_Bereich".A01_UH07.Automatik + AN "DOutbound_Bereich".A01_UH07.Handbetrieb + = Auto + + A "DOutbound_Bereich".A01_UC074.BereichErr + AN "SGes".Simulation_ohne_HW_aktiv + JC Next // Zylinder-Stellung nicht mehr ändern + + +--- NW 2: Schleuse_4503 --- +CALL FB "None" , (Automatik:=Auto, Handbetrieb:=FALSE, T_Ast:=0, T_Gst:=5, ZylAst:="MB4503", ZylGst:=?) + + +--- NW 3: Weiche_EP1 --- +CALL FB "None" , (Automatik:=Auto, Handbetrieb:=FALSE, T_Ast:=0, T_Gst:=5, ZylAst:="MB4504", ZylGst:=?) + + +--- NW 4: Weiche_EP2 --- +CALL FB "None" , (Automatik:=Auto, Handbetrieb:=FALSE, T_Ast:=0, T_Gst:=5, ZylAst:="MB4505", ZylGst:=?) + + +--- NW 5: Weiche_EP3 --- +CALL FB "None" , (Automatik:=Auto, Handbetrieb:=FALSE, T_Ast:=0, T_Gst:=5, ZylAst:="MB4506", ZylGst:=?) + + +--- NW 6: Weiche_EP4 --- +CALL FB "None" , (Automatik:=Auto, Handbetrieb:=FALSE, T_Ast:=0, T_Gst:=5, ZylAst:=?, ZylGst:=?) + + +--- NW 7: Ende --- +Next: BE + diff --git a/=A01+UH07-KF00/Programmbausteine/Anlage/3_Entnahmepuffer/EP_Bereich.awl b/=A01+UH07-KF00/Programmbausteine/Anlage/3_Entnahmepuffer/EP_Bereich.awl new file mode 100644 index 0000000..ac1c50d --- /dev/null +++ b/=A01+UH07-KF00/Programmbausteine/Anlage/3_Entnahmepuffer/EP_Bereich.awl @@ -0,0 +1,25 @@ +=== FC 3100: EP_Bereich [STL] === +INTERFACE: + Input: + Output: + InOut: + Temp: + Constant: + Return: + Ret_Val : Void + +--- NW 1: Baustein-Aufrufe --- +CALL FB "EP_Sensoren" , + +CALL FB "EP_OmniFahren" , + +CALL FB "EntnahmePufferStrecken" , + +CALL FB "EP_Sorter" , + +CALL FB "EP_Zylinder" , + + +--- NW 2: Ende --- + BE + diff --git a/=A01+UH07-KF00/Programmbausteine/Anlage/3_Entnahmepuffer/Omnifahren_Entnahmepuffer/DEP_OmniFahren.awl b/=A01+UH07-KF00/Programmbausteine/Anlage/3_Entnahmepuffer/Omnifahren_Entnahmepuffer/DEP_OmniFahren.awl new file mode 100644 index 0000000..86a7252 --- /dev/null +++ b/=A01+UH07-KF00/Programmbausteine/Anlage/3_Entnahmepuffer/Omnifahren_Entnahmepuffer/DEP_OmniFahren.awl @@ -0,0 +1,11 @@ +=== InstanceDB 3128: DEP_OmniFahren [DB] === +INTERFACE: + Input: + Output: + InOut: + Static: + Schleuse_4503 : "MHMOmniSchleuse" + EP_1_voll : Bool + EP_2_voll : Bool + EP_3_voll : Bool + EP_4_voll : Bool diff --git a/=A01+UH07-KF00/Programmbausteine/Anlage/3_Entnahmepuffer/Omnifahren_Entnahmepuffer/EP_Draussen_FC.awl b/=A01+UH07-KF00/Programmbausteine/Anlage/3_Entnahmepuffer/Omnifahren_Entnahmepuffer/EP_Draussen_FC.awl new file mode 100644 index 0000000..ce264d6 --- /dev/null +++ b/=A01+UH07-KF00/Programmbausteine/Anlage/3_Entnahmepuffer/Omnifahren_Entnahmepuffer/EP_Draussen_FC.awl @@ -0,0 +1,38 @@ +=== FC 3182: EP_Draussen_FC [STL] === +INTERFACE: + Input: + Output: + InOut: + Temp: + Constant: + Return: + Ret_Val : Void + +--- NW 1: Rückmeldung --- + SET // Rückmeldungen erst mal resetten + R "M180.6" // Weiterfahrt von Ziel-FC erlaubt + + +--- NW 2: Schleuse 4503 (Sorter EP): Ausgefahren ? --- + L "MW190" + L 4503 // Aufruf von Schleuse 4503 ? + <>I // Nein! + JC X4503E + +// Trolleydaten in DB1000 löschen, da danach zum LP fährt und dann kein Leser mehr! +CALL FC "Trolleydaten_löschen" (Gesamt_Trolley_DL:=1000, TrolleyID:="DEP_Sorter".Sorter_MB4503.Dyn.Scanner.Rec_IDX) // IDX + +// Daten in Sep 4503 löschen: + L DINT#0 + T "DEP_Sorter".Sorter_MB4503.Dyn.Scanner.Rec_IDX // IDX + L 0 + T "DEP_Sorter".Sorter_MB4503.Dyn.Scanner.Rec_DEST_Ziel + + BEU + +X4503E: NOP 0 + + +--- NW 3: Ende --- + BE + diff --git a/=A01+UH07-KF00/Programmbausteine/Anlage/3_Entnahmepuffer/Omnifahren_Entnahmepuffer/EP_Leser_FC.awl b/=A01+UH07-KF00/Programmbausteine/Anlage/3_Entnahmepuffer/Omnifahren_Entnahmepuffer/EP_Leser_FC.awl new file mode 100644 index 0000000..3a71b30 --- /dev/null +++ b/=A01+UH07-KF00/Programmbausteine/Anlage/3_Entnahmepuffer/Omnifahren_Entnahmepuffer/EP_Leser_FC.awl @@ -0,0 +1,42 @@ +=== FC 3180: EP_Leser_FC [STL] === +INTERFACE: + Input: + Output: + InOut: + Temp: + Zielebene : Word + Constant: + Return: + Ret_Val : Void + +--- NW 1: Rückmeldung --- +// Keine + L 0 // Evtl. Zwischenziel (MW196) + T "MW196" + + +--- NW 2: Schleuse 4503: (Sorter EP) --- + L "MW190" // Schleusen-Nr. + L 4503 // Aufruf von Schleuse ? + <>I // Nein! + JC X4503E + + AN "M180.0" // Lesefehler + JC Y4503 + + BEU + +Y4503: AN "M180.1" // unbekannt in TrolleysDL + BEC + +// /In Zukunft Anfrage bei Host! +CALL FC "Trolleydaten_neu_anlegen" (Gesamt_Trolley_DL:="DEP_OmniFahren".Schleuse_4503.Schleuse.Gesamt_Trolley_DL, TrolleyID:="DEP_OmniFahren".Schleuse_4503.Dyn.TrolleyID_Schleuse, Endziel:=16#E201, ShopGroup:=0) // Erst mal, da kein Host! | Entnahme-Puffer 1 + + BEU + +X4503E: NOP 0 + + +--- NW 3: Ende --- + BE + diff --git a/=A01+UH07-KF00/Programmbausteine/Anlage/3_Entnahmepuffer/Omnifahren_Entnahmepuffer/EP_OmniFahren.awl b/=A01+UH07-KF00/Programmbausteine/Anlage/3_Entnahmepuffer/Omnifahren_Entnahmepuffer/EP_OmniFahren.awl new file mode 100644 index 0000000..ef57184 --- /dev/null +++ b/=A01+UH07-KF00/Programmbausteine/Anlage/3_Entnahmepuffer/Omnifahren_Entnahmepuffer/EP_OmniFahren.awl @@ -0,0 +1,68 @@ +=== FB 3128: EP_OmniFahren [STL] === +INTERFACE: + Input: + Output: + InOut: + Static: + Schleuse_4503 : "MHMOmniSchleuse" + EP_1_voll : Bool + EP_2_voll : Bool + EP_3_voll : Bool + EP_4_voll : Bool + Temp: + ErrQuit : Bool + ErrAnz : Bool + Stau_raus : Bool + Start_ok : Bool + B_aktiv : Bool + B_vor_Schleuse : Bool + B_nach_Schleuse : Bool + Antrieb_aktiv : Bool + Antrieb_start : Bool + Antrieb_stop : Bool + Fahren_Ok : Bool + Antrieb_nicht_stoppen : Bool + Constant: + +--- NW 1: Systemzeug --- +// VollPuffer-Bereich: + A "DOutbound_Bereich".A01_UH07.AnlageEin + = Schleuse_4503.Dyn.Sk.Auto_akt + + AN "DOutbound_Bereich".A01_UC074.BereichErr + = Schleuse_4503.Dyn.Sk.Bereich_ok + + +--- NW 2: Störungen quittieren UZ7402 --- + A "DOutbound_Bereich".A01_UZ7402.StOk_aktiv + O "DOutbound_Bereich".A01_UC074.StOk_aktiv + O "DOutbound_Bereich".A01_UH07.StOk_aktiv + = ErrQuit + + +--- NW 3: Schleuse 4503 --- +CALL FB "None" , (Schleusen_Nr:=4503, ErrQuit:=ErrQuit, B_VorSchleuse:="BG4502", B_InSchleuse:="BG4503", B_AusSchleuse:=?, B_Stau_raus:=?, Start_Ok:=?, Antrieb_Schleuse_aktiv:="MA0325", Antrieb_plus_aktiv:=?, Schleuse_geöffnet:="MB4503", RestZeit_Bereich_plus:=?, Y_Schleuse_Auf:=?, Error:=DB708.DBW564, Antrieb_Schleuse_vor:="DVPtoEP_Antriebe".MA0325.Stat.A_vor, Antrieb_Schleuse_start:="DVPtoEP_Antriebe".MA0325.Stat.A_start, Antrieb_Schleuse_stop:="DVPtoEP_Antriebe".MA0325.Stat.Stop_vor, Antrieb_Schleuse_PS:="DVPtoEP_Antriebe".MA0325.Stat.A_PS, Antrieb_plus_vor:=?, Antrieb_plus_start:=?, hStOk:=ErrAnz) // weiterfahrt über Sorter-Sep + + AN Schleuse_4503.Dyn.Status.Reset_aktiv + JC NoR4503 + + L DINT#0 + T "DEP_Sorter".Sorter_MB4503.Dyn.Scanner.Rec_IDX // IDX + L 0 + T "DEP_Sorter".Sorter_MB4503.Separator.Default_Ziel + T "DEP_Sorter".Sorter_MB4503.Dyn.Scanner.Rec_DEST_Ziel + +NoR4503: NOP 0 + + +--- NW 4: Störungen anzeigen UZ7402 --- + A ErrAnz + R ErrAnz + S "DOutbound_Bereich".A01_UZ7402.StOk_blinken + S "DOutbound_Bereich".A01_UC074.StOk_blinken + S "DOutbound_Bereich".A01_UH07.StOk_blinken + + +--- NW 5: Ende --- + BE + diff --git a/=A01+UH07-KF00/Programmbausteine/Anlage/3_Entnahmepuffer/Omnifahren_Entnahmepuffer/EP_Ziel_FC.awl b/=A01+UH07-KF00/Programmbausteine/Anlage/3_Entnahmepuffer/Omnifahren_Entnahmepuffer/EP_Ziel_FC.awl new file mode 100644 index 0000000..021d7b4 --- /dev/null +++ b/=A01+UH07-KF00/Programmbausteine/Anlage/3_Entnahmepuffer/Omnifahren_Entnahmepuffer/EP_Ziel_FC.awl @@ -0,0 +1,165 @@ +=== FC 3181: EP_Ziel_FC [STL] === +INTERFACE: + Input: + Output: + InOut: + Temp: + Ziel_hex : Word + Ziel_int : Int + Zielebene : Word + Error : Byte + Position : Int + Lager_DB : Int + Lager_DW : Int + AR1Zeiger : DWord // Statt AR1 (ging nur bis DB-Länge <= 8191 Bytes) + AR1Start : DInt // Startwert mit Offset 0 + SSDW : Int + EndZiel : Word + Variante : Int + AbrufID : DInt + Fahrlisten_TrolleyID : DInt + Fahrlisten_AbrufID : DInt + Fahrlisten_Lager : Int + Trolley_unbekannt : Bool // Trolley ist nicht in DL + Express_Abruf : Bool + Error.Bit : Bool + Constant: + Return: + Ret_Val : Void + +--- NW 1: Rückmeldung --- + SET // Rückmeldungen erst mal resetten + R "M180.6" // Weiterfahrt von Ziel-FC erlaubt + + +--- NW 2: Schleuse 4503: Weiterfahren erlaubt ? (Sorter EP) --- + L "MW190" + L 4503 // Aufruf von Schleuse 4503 ? + <>I // Nein! + JC X4503E + + L "EP_TravelFIFO".Travel_FIFO_BG4527.FIFO.ANZAHL + L 0 // Daten noch im Travel-FIFO? + <>I // Ja ! + O "MB4503" // Trolley fährt schon + BEC + + A "SGes".Ohne_PC_Fahren // Also Ziel simulieren + JC Sim + +// Telegramm schon gesendet? + AN "DEP_OmniFahren".Schleuse_4503.Status2.Telegramm_gesendet + JC T4503 + +SimOk: CALL FC "BCD (4stellig)_to_INT" (BCD_Wert:="MW194", Int_Wert:=Ziel_int) + +// Ziel-Überprüfung auf voll: + L Ziel_int + L 1 + ==I + AN "DEP_Sensoren".Stau_EP1.Stat.B_Akt + JC ZielOk + + CAC + L 2 + ==I + AN "DEP_Sensoren".Stau_EP2.Stat.B_Akt + JC ZielOk + + CAC + L 3 + ==I + AN "DEP_Sensoren".Stau_EP3.Stat.B_Akt + JC ZielOk + + CAC + L 4 + ==I + AN "DEP_Sensoren".Stau_EP4.Stat.B_Akt + JC ZielOk + + A "10s-Impuls" // Nach 10s + R "DEP_OmniFahren".Schleuse_4503.Status2.Telegramm_gesendet // Erneute Anfrage + + BEU // Warten, da Ziel unklar oder voll + +ZielOk: L Ziel_int + + 200 + T "DEP_Sorter".Sorter_MB4503.Separator.Default_Ziel + T "DEP_Sorter".Sorter_MB4503.Dyn.Scanner.Rec_DEST_Ziel + +// Scanner-IDX übergeben: + L "DEP_OmniFahren".Schleuse_4503.Dyn.TrolleyID_Schleuse + T "DEP_Sorter".Sorter_MB4503.Dyn.Scanner.Rec_IDX // IDX + + CLR // Wird über MSorterRein (FB1423/5) gestartet! + S "M180.6" // Weiterfahrt ist erlaubt + + BEU + +// GOHDReqM an Host senden: +T4503: L "DEP_OmniFahren".Schleuse_4503.Dyn.TrolleyID_Schleuse + L 0 // Barcode bekannt? + ==D // Nein! + BEC // Warten! + +// Pufferstatus (Stau) ermitteln: + A "DEP_Sensoren".Stau_EP1.Stat.B_Akt + = "Daten_für_SendFIFO"."Status_2_Bit[0]" + A "DEP_Sensoren".Stau_EP2.Stat.B_Akt + = "Daten_für_SendFIFO"."Status_2_Bit[1]" + A "DEP_Sensoren".Stau_EP3.Stat.B_Akt + = "Daten_für_SendFIFO"."Status_2_Bit[2]" + A "DEP_Sensoren".Stau_EP4.Stat.B_Akt + = "Daten_für_SendFIFO"."Status_2_Bit[3]" + +CALL FB "Daten_in_SendFIFO_speichern" , (TelegrammKennung[1]:='G', TelegrammKennung[2]:='O', TelegrammKennung[3]:='H', TelegrammKennung[4]:='D', TelegrammKennung[5]:='R', TelegrammKennung[6]:='e', TelegrammKennung[7]:='q', TelegrammKennung[8]:='M', TelegrammKennung[9]:=?, TelegrammKennung[10]:=?, TrolleyID:="DEP_OmniFahren".Schleuse_4503.Dyn.TrolleyID_Schleuse, StationsNr:=4503, Puffer_LinienNr:=?, StoreGroup:=?, Status_1_Int:=?, Status_2_Bit[0]:=?, Status_2_Bit[1]:=?, Status_2_Bit[2]:=?, Status_2_Bit[3]:=?, Status_2_Bit[4]:=?, Status_2_Bit[5]:=?, Status_2_Bit[6]:=?, Status_2_Bit[7]:=?, Reserve[1]_Int:=?, Reserve[2]_Int:=?, Port:=2, Ret_Val_FIFO_IN:="MB199", Error:="Error.Bit") + + AN "Error.Bit" + S "DEP_OmniFahren".Schleuse_4503.Status2.Telegramm_gesendet + + BEU + +// /Zum Testen bei Inbetriebnahme ohne PC: +Sim: A "DEP_Sensoren".Stau_EP1.Stat.B_Akt + S "DEP_OmniFahren".EP_1_voll + L 16#1 // /Tests mit Puffer 1 + AN "DEP_OmniFahren".EP_1_voll + JC StartSim + + A "DEP_Sensoren".Stau_EP2.Stat.B_Akt + S "DEP_OmniFahren".EP_2_voll + L 16#2 // /Tests mit Puffer 2 + AN "DEP_OmniFahren".EP_2_voll + JC StartSim + + A "DEP_Sensoren".Stau_EP3.Stat.B_Akt + S "DEP_OmniFahren".EP_3_voll + L 16#3 // /Tests mit Puffer 3 + AN "DEP_OmniFahren".EP_3_voll + JC StartSim + + A "DEP_Sensoren".Stau_EP4.Stat.B_Akt + S "DEP_OmniFahren".EP_4_voll + L 16#4 // /Tests mit Puffer 4 + AN "DEP_OmniFahren".EP_4_voll + JC StartSim + + SET + R "DEP_OmniFahren".EP_1_voll + R "DEP_OmniFahren".EP_2_voll + R "DEP_OmniFahren".EP_3_voll + R "DEP_OmniFahren".EP_4_voll + + BEU + +StartSim: T "MW194" + + JU SimOk + +X4503E: NOP 0 + + +--- NW 3: Ende --- + BE + diff --git a/=A01+UH07-KF00/Programmbausteine/Anlage/3_Entnahmepuffer/PufferAuslagern/DEntnahmePufferStrecken.awl b/=A01+UH07-KF00/Programmbausteine/Anlage/3_Entnahmepuffer/PufferAuslagern/DEntnahmePufferStrecken.awl new file mode 100644 index 0000000..a3b2ae7 --- /dev/null +++ b/=A01+UH07-KF00/Programmbausteine/Anlage/3_Entnahmepuffer/PufferAuslagern/DEntnahmePufferStrecken.awl @@ -0,0 +1,10 @@ +=== InstanceDB 3431: DEntnahmePufferStrecken [DB] === +INTERFACE: + Input: + Output: + InOut: + Static: + EntnahmePuffer_01 : "MHMEntnahmepuffer" + EntnahmePuffer_02 : "MHMEntnahmepuffer" + EntnahmePuffer_03 : "MHMEntnahmepuffer" + EntnahmePuffer_04 : "MHMEntnahmepuffer" diff --git a/=A01+UH07-KF00/Programmbausteine/Anlage/3_Entnahmepuffer/PufferAuslagern/EntnahmePufferStrecken.awl b/=A01+UH07-KF00/Programmbausteine/Anlage/3_Entnahmepuffer/PufferAuslagern/EntnahmePufferStrecken.awl new file mode 100644 index 0000000..f734efa --- /dev/null +++ b/=A01+UH07-KF00/Programmbausteine/Anlage/3_Entnahmepuffer/PufferAuslagern/EntnahmePufferStrecken.awl @@ -0,0 +1,155 @@ +=== FB 3431: EntnahmePufferStrecken [STL] === +INTERFACE: + Input: + Output: + InOut: + Static: + EntnahmePuffer_01 : "MHMEntnahmepuffer" // COPYRIGHT by Ingenieurbüro A.EmmertOrtsstr.33, D-869925 Fuchstal (Germany)Tel.: 0049(0)8243-960629Version: H&M Entnahmepuffer / 10.2025Version: Omniflow 2100 / 10.2024Schritt 0: Warten auf TrolleySchritt 1: Betriebsart ok/angegeben?Schritt 5: Mit Scanner fahren: Defaultziel ?Schritt 6: Scanner triggernSchritt 7: "DREQ" an PC sendenSchritt 8: Warten auf PC-Antwort Schritt 9: PC-Antwort auswerten Schritt 10: Fahrtrichtung ermittelnSchritt 11: Ausfahren ok ?Schritt 12: Warten auf Pin-Signal Schritt 13: Weichenbereich raus bereit ? Schritt 14: Daten an Rausweiche übergebenSchritt 15: Schleuse Mindestzeit öffnen Schritt 16: Trolley ausgefahren ? Schritt 17: Trolley ist draussen Schritt 18: BM wurde vereinzeltSchritt 19: Beladezustand checkenSchritt 20: Schleuse resettenSchritt 21: Reset ist zu Ende + EntnahmePuffer_02 : "MHMEntnahmepuffer" // COPYRIGHT by Ingenieurbüro A.EmmertOrtsstr.33, D-869925 Fuchstal (Germany)Tel.: 0049(0)8243-960629Version: H&M Entnahmepuffer / 10.2025Version: Omniflow 2100 / 10.2024Schritt 0: Warten auf TrolleySchritt 1: Betriebsart ok/angegeben?Schritt 5: Mit Scanner fahren: Defaultziel ?Schritt 6: Scanner triggernSchritt 7: "DREQ" an PC sendenSchritt 8: Warten auf PC-Antwort Schritt 9: PC-Antwort auswerten Schritt 10: Fahrtrichtung ermittelnSchritt 11: Ausfahren ok ?Schritt 12: Warten auf Pin-Signal Schritt 13: Weichenbereich raus bereit ? Schritt 14: Daten an Rausweiche übergebenSchritt 15: Schleuse Mindestzeit öffnen Schritt 16: Trolley ausgefahren ? Schritt 17: Trolley ist draussen Schritt 18: BM wurde vereinzeltSchritt 19: Beladezustand checkenSchritt 20: Schleuse resettenSchritt 21: Reset ist zu Ende + EntnahmePuffer_03 : "MHMEntnahmepuffer" // COPYRIGHT by Ingenieurbüro A.EmmertOrtsstr.33, D-869925 Fuchstal (Germany)Tel.: 0049(0)8243-960629Version: H&M Entnahmepuffer / 10.2025Version: Omniflow 2100 / 10.2024Schritt 0: Warten auf TrolleySchritt 1: Betriebsart ok/angegeben?Schritt 5: Mit Scanner fahren: Defaultziel ?Schritt 6: Scanner triggernSchritt 7: "DREQ" an PC sendenSchritt 8: Warten auf PC-Antwort Schritt 9: PC-Antwort auswerten Schritt 10: Fahrtrichtung ermittelnSchritt 11: Ausfahren ok ?Schritt 12: Warten auf Pin-Signal Schritt 13: Weichenbereich raus bereit ? Schritt 14: Daten an Rausweiche übergebenSchritt 15: Schleuse Mindestzeit öffnen Schritt 16: Trolley ausgefahren ? Schritt 17: Trolley ist draussen Schritt 18: BM wurde vereinzeltSchritt 19: Beladezustand checkenSchritt 20: Schleuse resettenSchritt 21: Reset ist zu Ende + EntnahmePuffer_04 : "MHMEntnahmepuffer" // COPYRIGHT by Ingenieurbüro A.EmmertOrtsstr.33, D-869925 Fuchstal (Germany)Tel.: 0049(0)8243-960629Version: H&M Entnahmepuffer / 10.2025Version: Omniflow 2100 / 10.2024Schritt 0: Warten auf TrolleySchritt 1: Betriebsart ok/angegeben?Schritt 5: Mit Scanner fahren: Defaultziel ?Schritt 6: Scanner triggernSchritt 7: "DREQ" an PC sendenSchritt 8: Warten auf PC-Antwort Schritt 9: PC-Antwort auswerten Schritt 10: Fahrtrichtung ermittelnSchritt 11: Ausfahren ok ?Schritt 12: Warten auf Pin-Signal Schritt 13: Weichenbereich raus bereit ? Schritt 14: Daten an Rausweiche übergebenSchritt 15: Schleuse Mindestzeit öffnen Schritt 16: Trolley ausgefahren ? Schritt 17: Trolley ist draussen Schritt 18: BM wurde vereinzeltSchritt 19: Beladezustand checkenSchritt 20: Schleuse resettenSchritt 21: Reset ist zu Ende + Input: + EntnahmePuffer_Nr : Int // Aufruf für Entnahme-Puffer + B_LeerpufferEinfahrt : Bool // Sensor Trolley fährt in Entnahmepuffer + Output: + InOut: + Static: + Para : Struct + Entnahmepuffer_DL_DB : Int // Einsprung Entnahmepuffer-Datenliste-DB + Entnahmepuffer_DL_DW : Int // Einsprung Entnahmepuffer-Datenliste-DW + Status2 : Struct + Eintrag_DL_Leerliste_erfolgt : Bool // Eintrag in DLLPPuffer_Entnahme (DB500) erfolgt + Puffer : "UDLHMEntnahmePuffer" // Statische Entnahmepufferdaten (aus DL) + Dyn : Struct + Status : Struct + Puffer_OUT_leer : Bool // Puffer ist Entnahme + Leer_Check_OUT : Bool // Entnahmepuffer wird auf Entnahme gecheckt + Leerpuffer_initialisieren : Bool // Entnahmepuffer initialisieren + Error : "UErrHMEntnahmePuffer" + None: + MaxAnzahl_LeerPuffer : Int // Maximale Anzahl im EntnahmePuffer Bereich erlaubt + Wartezeit_bis_Puffer_leer : Int // Nach dieser Zeit wird Puffer als Entnahme gesetzt [1s] + None: + Entnahmepuffer_DL : Bool // Entnahmepuffer-Datenliste fehlerhaft + Undef_Entnahmepuffer : Bool // undefinierter Entnahmepuffer + Err_Stau_Einfahrt : Bool // Stau am Entnahmepuffer-Eingang + Input: + EntnahmePuffer_Nr : Int // Aufruf für Entnahme-Puffer + B_LeerpufferEinfahrt : Bool // Sensor Trolley fährt in Entnahmepuffer + Output: + InOut: + Static: + Para : Struct + Entnahmepuffer_DL_DB : Int // Einsprung Entnahmepuffer-Datenliste-DB + Entnahmepuffer_DL_DW : Int // Einsprung Entnahmepuffer-Datenliste-DW + Status2 : Struct + Eintrag_DL_Leerliste_erfolgt : Bool // Eintrag in DLLPPuffer_Entnahme (DB500) erfolgt + Puffer : "UDLHMEntnahmePuffer" // Statische Entnahmepufferdaten (aus DL) + Dyn : Struct + Status : Struct + Puffer_OUT_leer : Bool // Puffer ist Entnahme + Leer_Check_OUT : Bool // Entnahmepuffer wird auf Entnahme gecheckt + Leerpuffer_initialisieren : Bool // Entnahmepuffer initialisieren + Error : "UErrHMEntnahmePuffer" + None: + MaxAnzahl_LeerPuffer : Int // Maximale Anzahl im EntnahmePuffer Bereich erlaubt + Wartezeit_bis_Puffer_leer : Int // Nach dieser Zeit wird Puffer als Entnahme gesetzt [1s] + None: + Entnahmepuffer_DL : Bool // Entnahmepuffer-Datenliste fehlerhaft + Undef_Entnahmepuffer : Bool // undefinierter Entnahmepuffer + Err_Stau_Einfahrt : Bool // Stau am Entnahmepuffer-Eingang + Input: + EntnahmePuffer_Nr : Int // Aufruf für Entnahme-Puffer + B_LeerpufferEinfahrt : Bool // Sensor Trolley fährt in Entnahmepuffer + Output: + InOut: + Static: + Para : Struct + Entnahmepuffer_DL_DB : Int // Einsprung Entnahmepuffer-Datenliste-DB + Entnahmepuffer_DL_DW : Int // Einsprung Entnahmepuffer-Datenliste-DW + Status2 : Struct + Eintrag_DL_Leerliste_erfolgt : Bool // Eintrag in DLLPPuffer_Entnahme (DB500) erfolgt + Puffer : "UDLHMEntnahmePuffer" // Statische Entnahmepufferdaten (aus DL) + Dyn : Struct + Status : Struct + Puffer_OUT_leer : Bool // Puffer ist Entnahme + Leer_Check_OUT : Bool // Entnahmepuffer wird auf Entnahme gecheckt + Leerpuffer_initialisieren : Bool // Entnahmepuffer initialisieren + Error : "UErrHMEntnahmePuffer" + None: + MaxAnzahl_LeerPuffer : Int // Maximale Anzahl im EntnahmePuffer Bereich erlaubt + Wartezeit_bis_Puffer_leer : Int // Nach dieser Zeit wird Puffer als Entnahme gesetzt [1s] + None: + Entnahmepuffer_DL : Bool // Entnahmepuffer-Datenliste fehlerhaft + Undef_Entnahmepuffer : Bool // undefinierter Entnahmepuffer + Err_Stau_Einfahrt : Bool // Stau am Entnahmepuffer-Eingang + Input: + EntnahmePuffer_Nr : Int // Aufruf für Entnahme-Puffer + B_LeerpufferEinfahrt : Bool // Sensor Trolley fährt in Entnahmepuffer + Output: + InOut: + Static: + Para : Struct + Entnahmepuffer_DL_DB : Int // Einsprung Entnahmepuffer-Datenliste-DB + Entnahmepuffer_DL_DW : Int // Einsprung Entnahmepuffer-Datenliste-DW + Status2 : Struct + Eintrag_DL_Leerliste_erfolgt : Bool // Eintrag in DLLPPuffer_Entnahme (DB500) erfolgt + Puffer : "UDLHMEntnahmePuffer" // Statische Entnahmepufferdaten (aus DL) + Dyn : Struct + Status : Struct + Puffer_OUT_leer : Bool // Puffer ist Entnahme + Leer_Check_OUT : Bool // Entnahmepuffer wird auf Entnahme gecheckt + Leerpuffer_initialisieren : Bool // Entnahmepuffer initialisieren + Error : "UErrHMEntnahmePuffer" + None: + MaxAnzahl_LeerPuffer : Int // Maximale Anzahl im EntnahmePuffer Bereich erlaubt + Wartezeit_bis_Puffer_leer : Int // Nach dieser Zeit wird Puffer als Entnahme gesetzt [1s] + None: + Entnahmepuffer_DL : Bool // Entnahmepuffer-Datenliste fehlerhaft + Undef_Entnahmepuffer : Bool // undefinierter Entnahmepuffer + Err_Stau_Einfahrt : Bool // Stau am Entnahmepuffer-Eingang + Temp: + ErrQuit : Bool + ErrAnz : Bool + Antrieb : Bool + Stau : Bool + Start_Ok : Bool + SorterReset : Bool + A_Err : Char + B_Err : Char + C_Err : Char + D_Err : Char + Constant: + +--- NW 1: Störung quittieren UZ7402 --- + A "DOutbound_Bereich".A01_UZ7402.StOk_aktiv + = ErrQuit + + +--- NW 2: EntnahmePuffer 01 --- + SET + R ErrAnz + +CALL FB "None" , (EntnahmePuffer_Nr:=201, B_LeerpufferEinfahrt:="BG4504", Error:=DB708.DBW164, hStOk:=ErrAnz) + + +--- NW 3: EntnahmePuffer 02 --- +CALL FB "None" , (EntnahmePuffer_Nr:=202, B_LeerpufferEinfahrt:="BG4505", Error:=DB708.DBW166, hStOk:=ErrAnz) + + +--- NW 4: EntnahmePuffer 03 --- +CALL FB "None" , (EntnahmePuffer_Nr:=203, B_LeerpufferEinfahrt:="BG4506", Error:=DB708.DBW168, hStOk:=ErrAnz) + + +--- NW 5: EntnahmePuffer 04 --- +CALL FB "None" , (EntnahmePuffer_Nr:=204, B_LeerpufferEinfahrt:="BG4507", Error:=DB708.DBW170, hStOk:=ErrAnz) + + +--- NW 6: Störungen anzeigen UZ7402 --- + A ErrAnz + S "DOutbound_Bereich".A01_UZ7402.StOk_blinken + + +--- NW 7: Ende --- + BE + diff --git a/=A01+UH07-KF00/Programmbausteine/Anlage/3_Entnahmepuffer/Sorter_Entnahmepuffer/DEP_Sorter.awl b/=A01+UH07-KF00/Programmbausteine/Anlage/3_Entnahmepuffer/Sorter_Entnahmepuffer/DEP_Sorter.awl new file mode 100644 index 0000000..a053596 --- /dev/null +++ b/=A01+UH07-KF00/Programmbausteine/Anlage/3_Entnahmepuffer/Sorter_Entnahmepuffer/DEP_Sorter.awl @@ -0,0 +1,15 @@ +=== InstanceDB 3423: DEP_Sorter [DB] === +INTERFACE: + Input: + Output: + InOut: + Static: + Sorter_MB4503 : "MSepSorterRein" + Sync_BG4527 : "MStartSync" + Weiche_EP1 : "MWeiche_Sorter_EP" + Weiche_EP2 : "MWeiche_Sorter_EP" + Weiche_EP3 : "MWeiche_Sorter_EP" + Weiche_EP4 : "MWeiche_Sorter_EP" + Impuls_BG4526 : "MImpulsGeber" + Ohne_PC_fahren : Bool + SorterReset : Bool diff --git a/=A01+UH07-KF00/Programmbausteine/Anlage/3_Entnahmepuffer/Sorter_Entnahmepuffer/EP_DLSeps_Sorter.awl b/=A01+UH07-KF00/Programmbausteine/Anlage/3_Entnahmepuffer/Sorter_Entnahmepuffer/EP_DLSeps_Sorter.awl new file mode 100644 index 0000000..7ada432 --- /dev/null +++ b/=A01+UH07-KF00/Programmbausteine/Anlage/3_Entnahmepuffer/Sorter_Entnahmepuffer/EP_DLSeps_Sorter.awl @@ -0,0 +1,61 @@ +=== GlobalDB 3474: EP_DLSeps_Sorter [DB] === +INTERFACE: + Static: + Datenlistenkopf : Struct + KOPF : Word := WORD#16#DA14 // Datenliste-Kennnung (DA) / Datensatzlänge in Word (1 - 128) + LAENGE : Int := 1 // Länge der Datenliste (maximale Anzahl der Datensätze) + STAMMDATEN : Int := 1 // Stammdatenlänge in Word (1 - 9) + INDDB : Int // Indizierter DB (nur bei Stammdaten = 1 erlaubt !!!) + LAENGEINDDB : Int // Länge des indizierten DB in Word (nur bei Stammdaten = 1 erlaubt !!!) + OFFSETINDDATEN : Int // Offset für indizierte Daten (nur bei Stammdaten = 1 erlaubt !!!) + LETZTERZUGRIFF : Int // Speicherung des letzten Zugriffs + Belegt14 : Int // reserviert von Sort-Datenliste + Reserve16 : Int // Reserve + Reserve18 : Int // Reserve + Separator_MB4503Sorter : Struct + Separator_Nr : Int := 4503 // Nummer des Separators + Separator_Typ : Int := 176 // Separatortyp = 176 (SorterRein) + Separator_Dyn_DB : Int := 3423 // Dynamische Daten Separartor + Separator_Dyn_DW : Int // Dynamische Daten Separartor + Parameter_allg : Struct + Scanner_eingebaut : Bool := TRUE // Scanner an Separator eingebaut + Antrieb_vorhanden : Bool := TRUE // Separator an angetriebener Strecke + StopperFunktion : Bool // Separator mit Stopperfunktion + B_AusSep_vorhanden : Bool := TRUE // Sensor BT hat Separator verlassen ist eingebaut + Wechsel_bei_Travel_leer : Bool := TRUE // Zielwechsel nur, wenn Travel-FIFO leer! + MT_Bereich : Bool // An diesem Separator werden nur MT gefahren + PinSignal : Bool := TRUE // Pin-Signal bei Ausfahrt beachten + Belade_Kontrolle_im_Sep : Bool // Belade-Kontrolle vorhanden (B oder Doppelbügel-Erkennung) im Separator + Antrieb_Plus_vorhanden : Bool // Separator an weiterem Antrieb (Weiche) + Belade_Kontrolle_nachSep : Bool // Belade-Kontrolle vorhanden nach Separator + Para12 : Bool + Para13 : Bool + Para14 : Bool + Para15 : Bool + Para16 : Bool + PC_Komm_aktiv : Bool // PC-Kommunikation aktiv + PC_Komm_SorterID : Int // ID für PC-Kommunikation + PC_Send_FIFO : Int // Send-FIFO für PC-Sendungen + Default_Betriebsart : Struct // Betriebart nach Urlöschen/Reset + Listen : Bool // [SCTL=1] Ziel über Dyn.Status.Betriebsart_Ziel + Rapidfire : Bool // [SCTL=2] Alle BTs austakten (ohne Ende) + TillEmpty : Bool // [SCTL=3] Alle BTs austakten (Ende nach zeitlang kein BT) + Job : Bool // [SCTL=4] Anzahl von BTs austakten (Ende nach Anzahl) + Job_TillEmpty : Bool // [SCTL=5] Anzahl von BTs austakten (Ende nach zeitlang kein BT) + DestFull : Bool // [SCTL=6] Alle BTs austakten (bis Stau-Sensor aktiv) + Scannen : Bool := TRUE // [SCTL=7] Ausfahren über Scanner + PC-Rückmeldung + Scannen_TillEmpty : Bool // [SCTL=8] wie oben [SCTL=7](Ende nach zeitlang kein BT) + Default_Ziel : Int // Ziel nach Urlöschen/Reset + Auslager_Ziel : Int // Bei diesem Ziel auslagern + Umlager_Ziel : Int // Bei diesem Ziel umlagern + RausWeichen_Nr : Int // Nr der vorhandenen Weiche + Weichen_Abstand : Int // Inkrement-Abstand zum Weiche schalten + Mindeszeit_Sep_geoeffnet : Int := 500 // Mindestzeit, die Separator geöffnet ist [10ms] + Wartezeit_bis_draussen : Int := 1000 // Nach dieser Zeit hat BT den Sep. verlassen [10ms] + Wartezeit_bis_leer : Int := 600 // Nach dieser Zeit wird Bereich als leer gemeldet [100ms] + Abstand_Zielwechsel : Int := 50 // Abstand bei Zielwechsel [Ink] + Parameter_SorterRein : Struct + TravelFIFO_DB : Int := 3480 // Einsprung Travel-FIFO-DB + TravelFIFO_DW : Int // Einsprung Travel-FIFO-DW + Abstand_Reset_Start : Int := 160 // Nach diesen Abstand kann Gesamt-Reset gestartet werden [*10inc] + Endekennung : Word := WORD#16#DAEE // Datensort-Ende-Kennung (DBEE) diff --git a/=A01+UH07-KF00/Programmbausteine/Anlage/3_Entnahmepuffer/Sorter_Entnahmepuffer/EP_DLWeichen_Sorter.awl b/=A01+UH07-KF00/Programmbausteine/Anlage/3_Entnahmepuffer/Sorter_Entnahmepuffer/EP_DLWeichen_Sorter.awl new file mode 100644 index 0000000..ca3cb0b --- /dev/null +++ b/=A01+UH07-KF00/Programmbausteine/Anlage/3_Entnahmepuffer/Sorter_Entnahmepuffer/EP_DLWeichen_Sorter.awl @@ -0,0 +1,190 @@ +=== GlobalDB 3478: EP_DLWeichen_Sorter [DB] === +INTERFACE: + Static: + Datenlistenkopf : Struct + KOPF : Word := 16#DA14 // Datenliste-Kennnung (DA) / Datensatzlänge in Word (1 - 128) + LAENGE : Int := 5 // Länge der Datenliste (maximale Anzahl der Datensätze) + STAMMDATEN : Int := 1 // Stammdatenlänge in Word (1 - 9) + INDDB : Int := 0 // Indizierter DB (nur bei Stammdaten = 1 erlaubt !!!) + LAENGEINDDB : Int := 0 // Länge des indizierten DB in Word (nur bei Stammdaten = 1 erlaubt !!!) + OFFSETINDDATEN : Int := 0 // Offset für indizierte Daten (nur bei Stammdaten = 1 erlaubt !!!) + LETZTERZUGRIFF : Int := 180 // Speicherung des letzten Zugriffs + Belegt14 : Int := 0 // reserviert von Sort-Datenliste + Reserve16 : Int := 0 // Reserve + Reserve18 : Int := 0 // Reserve + Synchron_BG4527 : Struct + Sync_Nr : Int := 4527 // Nummer des Synchron-Punkts + Sync_Dyn_DB : Int := 3423 // Dynamische Daten des Synchron-Punkts + Sync_Dyn_DW : Int := 150 // Dynamische Daten des Synchron-Punkts + Sync_Typ : Int := 177 // Synchron-Punkt-Typ = 177 (StartSync) + Parameter : Struct + Kein_Sync_B : Bool := FALSE + InkSim : Bool := FALSE + ET200 : Bool := FALSE + Sick_ABS_single : Bool := FALSE + Para04 : Bool := FALSE + Para05 : Bool := FALSE + Para06 : Bool := FALSE + Para07 : Bool := FALSE + Para10 : Bool := FALSE + Para11 : Bool := FALSE + Para12 : Bool := FALSE + Para13 : Bool := FALSE + Para14 : Bool := FALSE + Para15 : Bool := FALSE + Para16 : Bool := FALSE + Para17 : Bool := FALSE + Ink_DB : Int := 3483 // DB-Nr des Inkremental-Gebers (Zählerbaugruppe) Neu-Sync-Zähler + Ink_HW_Adress : Int := 0 // Hardware-Adresse des Inkrementalgebers / Zählerbaugruppe + TravelFIFO_DB : Int := 3480 // Einsprung Travel-FIFO-DB + TravelFIFO_DW : Int := 0 // Einsprung Travel-FIFO-DW + Hauptstrang_DL_DB : Int := 3481 // Hauptstrang-Datenlisten-DB + Hauptstrang_DL_DW : Int := 0 // Hauptstrang-Datenlisten-DW + Entprellung_B_Sync : DInt := 5 // Entprellung Snyc-Sensor (in Inkremente) + Abstand_StartSep : DInt := 50 // Abstand Start-Separator <-> Sync-Sensor (in Inkremente) + Reserve : Array[1..5] of Int // Reserve + Weiche_EP1 : Struct + Weichen_Nr : Int := 1 // Nummer der Weiche + Weichen_Dyn_DB : Int := 3423 // Dynamische Daten Weiche + En02_B : Int := 300 // Dynamische Daten Weiche + Weichen_Typ : Int := 178 // Weichen-Typ = 178 (Weiche) + Parameter : Struct + Letzte_Weiche : Bool := FALSE // Letzte Weiche im Verbund + Entlade_Weiche : Bool := FALSE // BT/MT wird entladen -> Leerziel übergeben + Kontroll_B_Gerade : Bool := FALSE // Kontroll-Sensor bei Weiterfahrt (gerade) + Kontroll_B_Ausfahrt : Bool := TRUE // Kontroll-Sensor bei Ausfahrt (abzweig) + Quell_Schaltung : Bool := FALSE // Weiche aufgrund der Quelle schalten (Hauptstrang = Gerade, FIFO = Abzweig) + Disable_PLC_Ziel : Bool := FALSE // Bei Zielvorgabe von PLC nicht anfahren (Disabled) + ErsatzZiel_bei_Stau : Bool := FALSE // Bei Stau Ersatz-Ziel (s.u.) anfahren + Para07 : Bool := FALSE + Weichen_GST_gerade : Bool := TRUE // Weiche wird ohne Daten auf gerade geschaltet + Weichen_GST_abzweig : Bool := FALSE // Weiche wird ohne Daten auf abzweig geschaltet + IDX_an_Puffer : Bool := TRUE // IDX an Ziel-Puffer senden + Para13 : Bool := FALSE + Para14 : Bool := FALSE + Para15 : Bool := FALSE + Para16 : Bool := FALSE + PC_Komm_aktiv : Bool := 1 // PC-Kommunikation aktiv + LeerZiel : Int := 0 // Nach Entladen des BT/MT dieses Ziel übergeben + PC_Send_FIFO : Int := 0 // Send-FIFO für PC-Sndungen + Hauptstrang_DL_DB : Int := 3481 // Hauptstrang-Datenlisten-DB + Hauptstrang_DL_DW : Int := 0 // Hauptstrang-Datenlisten-DW + Off_Ink : DInt := 1 // Inkremente zum Weiche schalten + Ink_DB : Int := 3483 // DB-Nr des Inkremental-Geber + Position_minus : Int := 4527 // Position vorher (zwecks Datensuche) + AbzweigZiel : Int := 201 // Bei diesem Ziel Weiche auf Abzweig schalten + Carl + GeradeZiel : Int := 0 // Bei diesem Ziel Weiche auf Gerade schalten + Carl + Kontroll_Zeit_gerade : Int := 0 // Nach dieser Zeit muss BM bei Geradefahrt Weichenbereich verlassen haben [100ms] + Kontroll_Zeit_abzweigen : Int := 200 // Nach dieser Zeit muss BM bei Abzweigen Weichenbereich verlassen haben [100ms] + DraussenZeit_gerade : Int := 0 // Nach dieser neg. Zeit [100ms] Error undef.BM, falls Kontroll-Sensor aktiv + Ink_Schaltdauer : Int := 2000 // Inkremente, danach wird Weiche in GST geschaltet + ErsatzZiel : Int := 0 // Dieser Ziel bei Parameter 6 und Stau anfahren + Weiche_EP2 : Struct + Weichen_Nr : Int := 2 // Nummer der Weiche + Weichen_Dyn_DB : Int := 3423 // Dynamische Daten Weiche + Weichen_Dyn_DW : Int := 500 // Dynamische Daten Weiche + Weichen_Typ : Int := 178 // Weichen-Typ = 178 (Weiche) + Parameter : Struct + Letzte_Weiche : Bool := FALSE // Letzte Weiche im Verbund + Entlade_Weiche : Bool := FALSE // BT/MT wird entladen -> Leerziel übergeben + Kontroll_B_Gerade : Bool := FALSE // Kontroll-Sensor bei Weiterfahrt (gerade) + Kontroll_B_Ausfahrt : Bool := TRUE // Kontroll-Sensor bei Ausfahrt (abzweig) + Quell_Schaltung : Bool := FALSE // Weiche aufgrund der Quelle schalten (Hauptstrang = Gerade, FIFO = Abzweig) + Disable_PLC_Ziel : Bool := FALSE // Bei Zielvorgabe von PLC nicht anfahren (Disabled) + ErsatzZiel_bei_Stau : Bool := FALSE // Bei Stau Ersatz-Ziel (s.u.) anfahren + Para07 : Bool := FALSE + Weichen_GST_gerade : Bool := TRUE // Weiche wird ohne Daten auf gerade geschaltet + Weichen_GST_abzweig : Bool := FALSE // Weiche wird ohne Daten auf abzweig geschaltet + IDX_an_Puffer : Bool := TRUE // IDX an Ziel-Puffer senden + Para13 : Bool := FALSE + Para14 : Bool := FALSE + Para15 : Bool := FALSE + Para16 : Bool := FALSE + PC_Komm_aktiv : Bool := 1 // PC-Kommunikation aktiv + LeerZiel : Int := 0 // Nach Entladen des BT/MT dieses Ziel übergeben + PC_Send_FIFO : Int := 0 // Send-FIFO für PC-Sndungen + Hauptstrang_DL_DB : Int := 3481 // Hauptstrang-Datenlisten-DB + Hauptstrang_DL_DW : Int := 0 // Hauptstrang-Datenlisten-DW + Off_Ink : DInt := 50 // Inkremente zum Weiche schalten + Ink_DB : Int := 3483 // DB-Nr des Inkremental-Geber + Position_minus : Int := 1 // Position vorher (zwecks Datensuche) + AbzweigZiel : Int := 202 // Bei diesem Ziel Weiche auf Abzweig schalten + Carl + GeradeZiel : Int := 0 // Bei diesem Ziel Weiche auf Gerade schalten + Carl + Kontroll_Zeit_gerade : Int := 0 // Nach dieser Zeit muss BM bei Geradefahrt Weichenbereich verlassen haben [100ms] + Kontroll_Zeit_abzweigen : Int := 200 // Nach dieser Zeit muss BM bei Abzweigen Weichenbereich verlassen haben [100ms] + DraussenZeit_gerade : Int := 0 // Nach dieser neg. Zeit [100ms] Error undef.BM, falls Kontroll-Sensor aktiv + Ink_Schaltdauer : Int := 2000 // Inkremente, danach wird Weiche in GST geschaltet + ErsatzZiel : Int := 0 // Dieser Ziel bei Parameter 6 und Stau anfahren + Weiche_EP3 : Struct + Weichen_Nr : Int := 3 // Nummer der Weiche + Weichen_Dyn_DB : Int := 3423 // Dynamische Daten Weiche + Weichen_Dyn_DW : Int := 700 // Dynamische Daten Weiche + Weichen_Typ : Int := 178 // Weichen-Typ = 178 (Weiche) + Parameter : Struct + Letzte_Weiche : Bool := FALSE // Letzte Weiche im Verbund + Entlade_Weiche : Bool := FALSE // BT/MT wird entladen -> Leerziel übergeben + Kontroll_B_Gerade : Bool := FALSE // Kontroll-Sensor bei Weiterfahrt (gerade) + Kontroll_B_Ausfahrt : Bool := TRUE // Kontroll-Sensor bei Ausfahrt (abzweig) + Quell_Schaltung : Bool := FALSE // Weiche aufgrund der Quelle schalten (Hauptstrang = Gerade, FIFO = Abzweig) + Disable_PLC_Ziel : Bool := FALSE // Bei Zielvorgabe von PLC nicht anfahren (Disabled) + ErsatzZiel_bei_Stau : Bool := FALSE // Bei Stau Ersatz-Ziel (s.u.) anfahren + Para07 : Bool := FALSE + Weichen_GST_gerade : Bool := TRUE // Weiche wird ohne Daten auf gerade geschaltet + Weichen_GST_abzweig : Bool := FALSE // Weiche wird ohne Daten auf abzweig geschaltet + IDX_an_Puffer : Bool := TRUE // IDX an Ziel-Puffer senden + Para13 : Bool := FALSE + Para14 : Bool := FALSE + Para15 : Bool := FALSE + Para16 : Bool := FALSE + PC_Komm_aktiv : Bool := 1 // PC-Kommunikation aktiv + LeerZiel : Int := 0 // Nach Entladen des BT/MT dieses Ziel übergeben + PC_Send_FIFO : Int := 0 // Send-FIFO für PC-Sndungen + Hauptstrang_DL_DB : Int := 3481 // Hauptstrang-Datenlisten-DB + Hauptstrang_DL_DW : Int := 0 // Hauptstrang-Datenlisten-DW + Off_Ink : DInt := 89 // Inkremente zum Weiche schalten + Ink_DB : Int := 3483 // DB-Nr des Inkremental-Geber + Position_minus : Int := 2 // Position vorher (zwecks Datensuche) + AbzweigZiel : Int := 203 // Bei diesem Ziel Weiche auf Abzweig schalten + Carl + GeradeZiel : Int := 0 // Bei diesem Ziel Weiche auf Gerade schalten + Carl + Kontroll_Zeit_gerade : Int := 0 // Nach dieser Zeit muss BM bei Geradefahrt Weichenbereich verlassen haben [100ms] + Kontroll_Zeit_abzweigen : Int := 200 // Nach dieser Zeit muss BM bei Abzweigen Weichenbereich verlassen haben [100ms] + DraussenZeit_gerade : Int := 0 // Nach dieser neg. Zeit [100ms] Error undef.BM, falls Kontroll-Sensor aktiv + Ink_Schaltdauer : Int := 2000 // Inkremente, danach wird Weiche in GST geschaltet + ErsatzZiel : Int := 0 // Dieser Ziel bei Parameter 6 und Stau anfahren + Weiche_EP4 : Struct + Weichen_Nr : Int := 4 // Nummer der Weiche + Weichen_Dyn_DB : Int := 3423 // Dynamische Daten Weiche + Weichen_Dyn_DW : Int := 900 // Dynamische Daten Weiche + Weichen_Typ : Int := 178 // Weichen-Typ = 178 (Weiche) + Parameter : Struct + Letzte_Weiche : Bool := TRUE // Letzte Weiche im Verbund + Entlade_Weiche : Bool := FALSE // BT/MT wird entladen -> Leerziel übergeben + Kontroll_B_Gerade : Bool := FALSE // Kontroll-Sensor bei Weiterfahrt (gerade) + Kontroll_B_Ausfahrt : Bool := TRUE // Kontroll-Sensor bei Ausfahrt (abzweig) + Quell_Schaltung : Bool := FALSE // Weiche aufgrund der Quelle schalten (Hauptstrang = Gerade, FIFO = Abzweig) + Disable_PLC_Ziel : Bool := FALSE // Bei Zielvorgabe von PLC nicht anfahren (Disabled) + Para06 : Bool := FALSE + Para07 : Bool := FALSE + Weichen_GST_gerade : Bool := TRUE // Weiche wird ohne Daten auf gerade geschaltet + Weichen_GST_abzweig : Bool := FALSE // Weiche wird ohne Daten auf abzweig geschaltet + IDX_an_Puffer : Bool := TRUE // IDX an Ziel-Puffer senden + Para13 : Bool := FALSE + Para14 : Bool := FALSE + Para15 : Bool := FALSE + Para16 : Bool := FALSE + PC_Komm_aktiv : Bool := 1 // PC-Kommunikation aktiv + LeerZiel : Int := 0 // Nach Entladen des BT/MT dieses Ziel übergeben + PC_Send_FIFO : Int := 0 // Send-FIFO für PC-Sndungen + Hauptstrang_DL_DB : Int := 3481 // Hauptstrang-Datenlisten-DB + Hauptstrang_DL_DW : Int := 0 // Hauptstrang-Datenlisten-DW + Off_Ink : DInt := 132 // Inkremente zum Weiche schalten + Ink_DB : Int := 3483 // DB-Nr des Inkremental-Geber + Position_minus : Int := 3 // Position vorher (zwecks Datensuche) + AbzweigZiel : Int := 204 // Bei diesem Ziel Weiche auf Abzweig schalten + Carl + GeradeZiel : Int := 0 // Bei diesem Ziel Weiche auf Gerade schalten + Carl + Kontroll_Zeit_gerade : Int := 0 // Nach dieser Zeit muss BM bei Geradefahrt Weichenbereich verlassen haben [100ms] + Kontroll_Zeit_abzweigen : Int := 200 // Nach dieser Zeit muss BM bei Abzweigen Weichenbereich verlassen haben [100ms] + DraussenZeit_gerade : Int := 0 // Nach dieser neg. Zeit [100ms] Error undef.BM, falls Kontroll-Sensor aktiv + Ink_Schaltdauer : Int := 2000 // Inkremente, danach wird Weiche in GST geschaltet + Frei38 : Int := 0 + Endekennung : Word := 16#DAEE // Datensort-Ende-Kennung (DBEE) diff --git a/=A01+UH07-KF00/Programmbausteine/Anlage/3_Entnahmepuffer/Sorter_Entnahmepuffer/EP_HS_mF.awl b/=A01+UH07-KF00/Programmbausteine/Anlage/3_Entnahmepuffer/Sorter_Entnahmepuffer/EP_HS_mF.awl new file mode 100644 index 0000000..5e0cb58 --- /dev/null +++ b/=A01+UH07-KF00/Programmbausteine/Anlage/3_Entnahmepuffer/Sorter_Entnahmepuffer/EP_HS_mF.awl @@ -0,0 +1,17 @@ +=== GlobalDB 3482: EP_HS_mF [DB] === +INTERFACE: + Static: + Datensortkopf : Struct + KOPF : Word := WORD#16#DB0B // Datenliste-Kennnung (DA) / Datensatzlänge in Word (1 - 128) + LAENGE : Int := 10 // Länge der Datenliste (maximale Anzahl der Datensätze) + STAMMDATEN : Int := 2 // Stammdatenlänge in Word (1 - 9) + Belegt06 : Int // reserviert von Datenliste + Belegt08 : Int // reserviert von Datenliste + Belegt10 : Int // reserviert von Datenliste + Belegt12 : Int // reserviert von Datenliste + AnzahlEintraege : Int // Anzahl der eingetragenen Datensätze + Reserve16 : Int // DBX 16.0 = Korrektur-Modus aktiv + Reserve18 : Int // DW 18 = Neues Ziel bei Korrektur-Modus + Teil : Array[1..10] of Struct + Daten : "UBT_Daten" + Endekennung : Word := WORD#16#DBEE // Datensort-Ende-Kennung (DBEE) diff --git a/=A01+UH07-KF00/Programmbausteine/Anlage/3_Entnahmepuffer/Sorter_Entnahmepuffer/EP_HS_oF.awl b/=A01+UH07-KF00/Programmbausteine/Anlage/3_Entnahmepuffer/Sorter_Entnahmepuffer/EP_HS_oF.awl new file mode 100644 index 0000000..41f72e4 --- /dev/null +++ b/=A01+UH07-KF00/Programmbausteine/Anlage/3_Entnahmepuffer/Sorter_Entnahmepuffer/EP_HS_oF.awl @@ -0,0 +1,17 @@ +=== GlobalDB 3481: EP_HS_oF [DB] === +INTERFACE: + Static: + Datensortkopf : Struct + KOPF : Word := WORD#16#DB0B // Datenliste-Kennnung (DA) / Datensatzlänge in Word (1 - 128) + LAENGE : Int := 10 // Länge der Datenliste (maximale Anzahl der Datensätze) + STAMMDATEN : Int := 2 // Stammdatenlänge in Word (1 - 9) + Belegt06 : Int // reserviert von Datenliste + Belegt08 : Int // reserviert von Datenliste + Belegt10 : Int // reserviert von Datenliste + Belegt12 : Int // reserviert von Datenliste + AnzahlEintraege : Int // Anzahl der eingetragenen Datensätze + Reserve16 : Int // DBX 16.0 = Korrektur-Modus aktiv + Reserve18 : Int // DW 18 = Neues Ziel bei Korrektur-Modus + Teil : Array[1..10] of Struct + Daten : "UBT_Daten" + Endekennung : Word := WORD#16#DBEE // Datensort-Ende-Kennung (DBEE) diff --git a/=A01+UH07-KF00/Programmbausteine/Anlage/3_Entnahmepuffer/Sorter_Entnahmepuffer/EP_Sorter.awl b/=A01+UH07-KF00/Programmbausteine/Anlage/3_Entnahmepuffer/Sorter_Entnahmepuffer/EP_Sorter.awl new file mode 100644 index 0000000..7676bad --- /dev/null +++ b/=A01+UH07-KF00/Programmbausteine/Anlage/3_Entnahmepuffer/Sorter_Entnahmepuffer/EP_Sorter.awl @@ -0,0 +1,296 @@ +=== FB 3423: EP_Sorter [STL] === +INTERFACE: + Input: + Output: + InOut: + Static: + Sorter_MB4503 : "MSepSorterRein" + Sync_BG4527 : "MStartSync" + Weiche_EP1 : "MWeiche_Sorter_EP" + Weiche_EP2 : "MWeiche_Sorter_EP" + Weiche_EP3 : "MWeiche_Sorter_EP" + Weiche_EP4 : "MWeiche_Sorter_EP" + Impuls_BG4526 : "MImpulsGeber" + Ohne_PC_fahren : Bool + SorterReset : Bool + Temp: + ErrQuit : Bool + ErrAnz : Bool + Antrieb : Bool + Stau : Bool + Start_Ok : Bool + Error_aktiv : Bool + Leer : Bool + Err_DW : DInt + Err_Bits : Int + Constant: + +--- NW 1: Systemzeug --- + A "DOutbound_Bereich".A01_UH07.AnlageEin + = Sorter_MB4503.Dyn.Sk.Auto_akt + + AN "DOutbound_Bereich".A01_UC074.BereichErr + = Sorter_MB4503.Dyn.Sk.Bereich_ok + +// Bereichshalt: + CLR // nicht verbaut + R Sorter_MB4503.Dyn.Sk.Bereich_ok + +// Sonderbetriebsarten Weichen: + CLR + = Weiche_EP1.Dyn.Status.Weichentest_aktiv + = Weiche_EP2.Dyn.Status.Weichentest_aktiv + = Weiche_EP3.Dyn.Status.Weichentest_aktiv + = Weiche_EP4.Dyn.Status.Weichentest_aktiv + + A Sync_BG4527.Dyn.Status.TeachModus_Aktiv + = Weiche_EP1.Dyn.Status.TeachModus_aktiv + = Weiche_EP2.Dyn.Status.TeachModus_aktiv + = Weiche_EP3.Dyn.Status.TeachModus_aktiv + = Weiche_EP4.Dyn.Status.TeachModus_aktiv + + CLR + = Sorter_MB4503.Dyn.Error.Korrektur_Modus_aktiv + + L 3474 // DLSeps + T "MW174" + L 3478 // DLWeichen + T "MW178" + +// Nach neuen Daten suchen: + A "1s-Impuls" + = "Weiche_NewData" + + +--- NW 2: Linien mit PLC_Ziel anfahren --- + A Ohne_PC_fahren + JCN En03 + + A "MB4503" + CU "Z102" + + L "Z102" + L 1 + I // Ja ! + ) + JC En03 + + SET + R "Z102" + + L Sorter_MB4503.Separator.Default_Ziel + L 0 // unbekannt ? + ==I + L 101 // Beginn mit Ausfahrziel 1.Puffer + JC X399 + +// Nächste Weiche suchen: + L Sorter_MB4503.Separator.Default_Ziel + T "MW200" + +CALL FC "DatenOut" (SSDB:="MW178", SSDW:=0, PARA:=WORD#16#0E00, SEARCHDATEN:=P#M200.0, RE_VAL:="MB199", OUTDATEN:=P#M200.0, Position:="MW196") // Nach angegeben Datenbyte suchen (Abzweig-Ziel) + + AN "M199.7" // Datensatz ist nicht vorhanden + O "M208.0" // Letzte Weiche + L 0 // Neubeginn + JC X400 + +X398: CALL FC "DatenOut" (SSDB:="MW178", SSDW:=0, PARA:=WORD#16#FF00, SEARCHDATEN:=P#M200.0, RE_VAL:="MB199", OUTDATEN:=P#M200.0, Position:="MW196") // Nächsten Datensatz lesen + + L "MW206" // Weichentyp + L 178 // Sorterweiche ? + <>I // Nein! + O "M199.2" // Ende erreicht + L 0 + JC X400 + + A "M208.5" // Weiche für PLC-Ziel disabled ! + JC X398 + + L "MW226" + T Sorter_MB4503.Separator.Default_Ziel + + JU En03 + +// 1.Weiche checken: +X399: T "MW200" + +CALL FC "DatenOut" (SSDB:="MW178", SSDW:=0, PARA:=WORD#16#0E00, SEARCHDATEN:=P#M200.0, RE_VAL:="MB199", OUTDATEN:=P#M200.0, Position:="MW196") // Nach angegeben Datenbyte suchen (Abzweig-Ziel) + + AN "M199.7" // Datensatz ist nicht vorhanden + JC En03 + + A "M208.5" // Weiche für PLC-Ziel disabled ! + JC X398 + + L "MW226" +X400: T Sorter_MB4503.Separator.Default_Ziel + +En03: NOP 0 + + +--- NW 3: Störung aktiv? --- +CALL FC "Err_vorhanden" (Check_DB:=708, Anfangs_DW:=DINT#154, Ende_DW:=DINT#162, Stoerung:=Error_aktiv, ErrDW:=Err_DW, ErrBits:=Err_Bits) // Störungsanzeige + A Error_aktiv // s.o. + = Error_aktiv // Sorter Lager Weichen-Störung (Sorter-Antrieb gestoppt!) + + A "BG4527" // Verlassen-Sensor + L S5T#250MS + OffDelay "T340" + + +--- NW 4: Störung quittieren UZ7402 --- + A "DOutbound_Bereich".A01_UZ7402.StOk_aktiv + = ErrQuit + + +--- NW 5: Sorter-GesamtReset --- +// Sorter-Reset starten: + A "DEP_OmniFahren".Schleuse_4503.Dyn.Status.Reset_aktiv // Bei Schleusen-Reset -> Sorter mit resetten! + S "DEP_Sorter".Sorter_MB4503.Dyn.GesamtSorterReset + + +--- NW 6: Separator 4503 vor Sorter --- + L DB708.DBW152 // Err beim Synchronisieren + L 0 // Störung vorhanden ? + ==I // Nein ! + AN Sync_BG4527.Dyn.Stop // Rein-Separator stoppen + AN Error_aktiv // Sorter Batch Weichen-Störung (Sorter-Antrieb gestoppt!) + AN Sorter_MB4503.Dyn.GesamtSorterReset_aktiv + = Start_Ok + + SET // Da Leiste im Sep und Zusatz-Zylinder im Separator -> BT steht sofort sauber im Sep + S Sorter_MB4503.Dyn.BT_beruhigt // 1. einfahrender BügelTräger ist im Sep + + A "T340" + = Sorter_MB4503.B_AusSep // Entprellung Verlassen-Sensor + +// Triggern / Scanner-Auswertung über EP_Omnifahren (FC3128/3) +// Ziel über Default-Ziel (EP_Ziel_FC, FC3181) + +CALL FB "None" , (Separator_Nr:=4503, ErrQuit:=ErrQuit, B_VorSep:=?, B_ImSep:="BG4503", B_AusSep:=?, B_Beladen_im_Sep:=?, B_Pinsensor:="BG4526", B_Beladen_nach_Sep:=?, Start_Ok:=Start_Ok, Antrieb_aktiv:="MA0325", Antrieb_plus_aktiv:="MA0325", Y_Sep_Auf:="DEP_Zylinder".Sorter_4503.Stat.Ast, K_Sanner_triggern:=?, Sorter_Reset:=SorterReset, Error:=DB708.DBW150, Antrieb_start:="DVPtoEP_Antriebe".MA0325.Stat.A_vor, Antrieb_plus_start:=?, Antrieb_stoppen:="DVPtoEP_Antriebe".MA0325.Stat.Stop_vor, hStOk:=ErrAnz) + +// Default-Ziel jeden Zyklus neu!: + L 0 + T Sorter_MB4503.Separator.Default_Ziel + + +--- NW 7: Reset ist aktiv --- + A Sorter_MB4503.Dyn.GesamtSorterReset_aktiv + = "7_HMI_Err_UH07_OB".Sorter_MB4503.Reset_aktiv + + A Sorter_MB4503.Dyn.GesamtSorterReset_aktiv + = Weiche_EP1.Dyn.Ohne_VerklemmKontrolle + = Weiche_EP2.Dyn.Ohne_VerklemmKontrolle + = Weiche_EP3.Dyn.Ohne_VerklemmKontrolle + = Weiche_EP4.Dyn.Ohne_VerklemmKontrolle + +// Diesen Sorterbereich zurücksetzen: + A SorterReset // Ein Zyklus + S Sync_BG4527.Dyn.Reset + S Weiche_EP1.Dyn.Status.Reset + S Weiche_EP2.Dyn.Status.Reset + S Weiche_EP3.Dyn.Status.Reset + S Weiche_EP4.Dyn.Status.Reset + + +--- NW 8: Inkremente über Zahnrad-Sensor --- +CALL FB "None" , (Ink_DB:=3483, B_Zaehlen:="BG4526", Antrieb_aktiv:="MA0325", Quit:=ErrQuit, Zeit_Signal_zu_lang:=?, Zeit_Kein_Signal:=?, Signal:=?, Err_Kein_Signal:="7_HMI_Err_UH07_OB".Impulsgeber_4526.Kein_Signal, Err_Signal_zu_lang:="7_HMI_Err_UH07_OB".Impulsgeber_4526.Signal_zu_lang) + + A( + O "7_HMI_Err_UH07_OB".Impulsgeber_4526.Kein_Signal + O "7_HMI_Err_UH07_OB".Impulsgeber_4526.Signal_zu_lang + ) + AN ErrQuit + S "DVPtoEP_Antriebe".MA0325.Stat.Stop_vor + + A( + O "7_HMI_Err_UH07_OB".Impulsgeber_4526.Kein_Signal + O "7_HMI_Err_UH07_OB".Impulsgeber_4526.Signal_zu_lang + ) + S ErrAnz + + +--- NW 9: Trolley synchronisieren BG4527 --- +// Teachen: Ref-Sensor ueber Sync-Sensor + A "BG4527" + AN Sync_BG4527.Dyn.Refpunkt_ok // Nur eimalige Auswertung + = Sync_BG4527.B_RefPunkt // uebergabe fuer unten + + A "MA0325" + L S5T#500ms + OffDelay "T343" + A "T343" + AN Sync_BG4527.Dyn.Status.TeachModus_Aktiv // sonst Probleme bei Doppelimpuls + O + A "MA0325" + A Sync_BG4527.Dyn.Status.TeachModus_Aktiv // sonst Probleme bei Doppelimpuls + = Antrieb + +// Keine Hauptstrangdaten vorhanden ? (Fuer Sync-Pkt): + L "EP_HS_oF".Datensortkopf.AnzahlEintraege + L "EP_HS_mF".Datensortkopf.AnzahlEintraege + +I + L 0 // Daten vorhanden ? + ==I // Nein ! + = "Hauptstrang_leer" // Keine Haupstrangdaten vorhanden -> Verklemm-Errors löschen + + A "BG4527" + L s5t#500ms // Da trotz Entprellung Doppel-Impulse + OffDelay "T344" + A "T344" + = Sync_BG4527.B_BT_da + +CALL FB "None" , (Sync_Nr:=4527, ErrQuit:=ErrQuit, B_BT_da:=?, B_RefPunkt:=?, B_TeachPunk:="BG4504", Antrieb_aktiv:=Antrieb, Error:=DB708.DBW152, Antrieb_start:="DVPtoEP_Antriebe".MA0325.Stat.A_start, hStOk:=ErrAnz) // Teach-Sensor + + A Sync_BG4527.Dyn.Error.Inkrementalgeber + S "DVPtoEP_Antriebe".MA0325.Stat.Stop_vor + +// Keine Hauptstrangdaten vorhanden ?: + L "EP_HS_oF".Datensortkopf.AnzahlEintraege + L "EP_HS_mF".Datensortkopf.AnzahlEintraege + +I + L 0 // Daten vorhanden ? + ==I // Nein ! + = "Hauptstrang_leer" // Keine Haupstrangdaten vorhanden -> Verklemm-Errors löschen + +// Spezial, da Sorter-Antrieb über SorterRein-Sep geht!: (Sonst Antriebs-Stop wegen PS) + AN "Hauptstrang_leer" // Keine Haupstrangdaten vorhanden -> Verklemm-Errors löschen + O "MB4503" // Neuer Sort-Trolley kommt + O "BG4527" + L s5t#20s + OffDelay "T341" + + A "T341" // Alle Sort-Trolleys sind ins Puffer ausgefahren + S "DVPtoEP_Antriebe".MA0325.Stat.A_vor + + +--- NW 10: Weiche 4504 / EntnahmePuffer EP1 --- +CALL FB "None" , (Weichen_Nr:=1, KorrekturFaktor:=?, ErrQuit:=ErrQuit, Stau_Ausfahrtbereich:=0, B_Gerade:=?, B_Ausfahrt:="BG4504", Antrieb_aktiv:=Antrieb, Y_Weiche_abzweigen:="DEP_Zylinder".Weiche_EP1.Stat.Ast, Y_Weiche_geradeaus:=?, Error:=DB708.DBW154, Antrieb_start:="DVPtoEP_Antriebe".MA0325.Stat.A_start, Antrieb_stoppen:="DVPtoEP_Antriebe".MA0325.Stat.Stop_vor, hStOk:=ErrAnz) // "DEP_Sensoren".Stau_EP1.Stat.B_Akt + + +--- NW 11: Weiche 4505 / EntnahmePuffer EP2 --- +CALL FB "None" , (Weichen_Nr:=2, KorrekturFaktor:=?, ErrQuit:=ErrQuit, Stau_Ausfahrtbereich:=0, B_Gerade:=?, B_Ausfahrt:="BG4505", Antrieb_aktiv:=Antrieb, Y_Weiche_abzweigen:="DEP_Zylinder".Weiche_EP2.Stat.Ast, Y_Weiche_geradeaus:=?, Error:=DB708.DBW156, Antrieb_start:="DVPtoEP_Antriebe".MA0325.Stat.A_start, Antrieb_stoppen:="DVPtoEP_Antriebe".MA0325.Stat.Stop_vor, hStOk:=ErrAnz) // "DEP_Sensoren".Stau_EP2.Stat.B_Akt + + +--- NW 12: Weiche 4506 / EntnahmePuffer EP3 --- +CALL FB "None" , (Weichen_Nr:=3, KorrekturFaktor:=?, ErrQuit:=ErrQuit, Stau_Ausfahrtbereich:=0, B_Gerade:=?, B_Ausfahrt:="BG4506", Antrieb_aktiv:=Antrieb, Y_Weiche_abzweigen:="DEP_Zylinder".Weiche_EP3.Stat.Ast, Y_Weiche_geradeaus:=?, Error:=DB708.DBW158, Antrieb_start:="DVPtoEP_Antriebe".MA0325.Stat.A_start, Antrieb_stoppen:="DVPtoEP_Antriebe".MA0325.Stat.Stop_vor, hStOk:=ErrAnz) // "DEP_Sensoren".Stau_EP3.Stat.B_Akt + + +--- NW 13: Pseudo-Weiche / EntnahmePuffer EP4 --- +CALL FB "None" , (Weichen_Nr:=4, KorrekturFaktor:=?, ErrQuit:=ErrQuit, Stau_Ausfahrtbereich:=0, B_Gerade:=?, B_Ausfahrt:="BG4507", Antrieb_aktiv:=Antrieb, Y_Weiche_abzweigen:="DEP_Zylinder".Weiche_EP4.Stat.Ast, Y_Weiche_geradeaus:=?, Error:=DB708.DBW160, Antrieb_start:="DVPtoEP_Antriebe".MA0325.Stat.A_start, Antrieb_stoppen:="DVPtoEP_Antriebe".MA0325.Stat.Stop_vor, hStOk:=ErrAnz) // "DEP_Sensoren".Stau_EP4.Stat.B_Akt + + +--- NW 14: Störungen anzeigen UZ7102/7103 --- + A ErrAnz + S "DOutbound_Bereich".A01_UZ7102.StOk_blinken + S "DOutbound_Bereich".A01_UZ7103.StOk_blinken + + +--- NW 15: Ende --- + BE + diff --git a/=A01+UH07-KF00/Programmbausteine/Anlage/3_Entnahmepuffer/Sorter_Entnahmepuffer/EP_TravelFIFO.awl b/=A01+UH07-KF00/Programmbausteine/Anlage/3_Entnahmepuffer/Sorter_Entnahmepuffer/EP_TravelFIFO.awl new file mode 100644 index 0000000..98caab7 --- /dev/null +++ b/=A01+UH07-KF00/Programmbausteine/Anlage/3_Entnahmepuffer/Sorter_Entnahmepuffer/EP_TravelFIFO.awl @@ -0,0 +1,33 @@ +=== GlobalDB 3480: EP_TravelFIFO [DB] === +INTERFACE: + Static: + Travel_FIFO_BG4527 : Struct + FIFO : Struct + KOPF : Word := WORD#16#FF0B // Fifo-Kennung (FF) / Datensatzlänge in Word (1 - 128) + LAENGE : Int := 1 // Länge des Fifo (maximale Anzahl der Datensätze) + BRINGZEIGER : Int // Zeiger, wohin nächster Eintrag gespeichert wird + HOLZEIGER : Int // Zeiger, woher nächste Daten geholt werden + ANZAHL : Int // Anzahl der Datensätze (eingetragene) + STATUS : Word // Status des Fifo + ZUSATZDW1 : Int // Speicherzelle für 1.Zusatzdaten + ZUSATZDW2 : Int // Speicherzelle für 2.Zusatzdaten + ZUSATZDW3 : Int // Speicherzelle für 3.Zusatzdaten + ZUSATZDW4 : Int // Speicherzelle für 4.Zusatzdaten + RE_VAL_IN : Byte // Rückmeldung nach FC80-Aufruf + RE_VAL_OUT : Byte // Rückmeldung nach FC81-Aufruf + RE_VAL_SEARCH : Byte // Rückmeldung nach FC82-Aufruf + RE_VAL_CHANGE : Byte // Rückmeldung nach FC83-Aufruf + Frei3 : Int + Frei4 : Int + Frei5 : Int + OP_Anzeige_Datensatz : Int // Bei Ringspeicher -1,-2,...-Datensatz anzeigen + Datensatz : Int // Zu lesender Datenstatz (OP-Zeug)********************************* + Taste_Daten_minus : Bool // Taste Datensatz -1 lesen + Taste_Daten_plus : Bool // Taste Datensatz +1 lesen + Taste_FIFO_Del : Bool // Taste Fifo löschen + Zustand : Int // Zustand + Error : Int // Error + Teil : Array[1..1] of Struct + Daten : "UBT_Daten" + Endekennung : Word := WORD#16#FFEE // Fifo-Ende-Kennung (FFEE) + Res : Array[1..18] of Int diff --git a/=A01+UH07-KF00/Programmbausteine/Anlage/3_Entnahmepuffer/Sorter_Entnahmepuffer/EP_Zaehler.awl b/=A01+UH07-KF00/Programmbausteine/Anlage/3_Entnahmepuffer/Sorter_Entnahmepuffer/EP_Zaehler.awl new file mode 100644 index 0000000..17f5cb6 --- /dev/null +++ b/=A01+UH07-KF00/Programmbausteine/Anlage/3_Entnahmepuffer/Sorter_Entnahmepuffer/EP_Zaehler.awl @@ -0,0 +1,20 @@ +=== GlobalDB 3483: EP_Zaehler [DB] === +INTERFACE: + Static: + Sick_ABS_single : Struct + Encoder : "GeberST81" + LastSingelturn_Wert : DInt // Speicherung des letzten Singelturn_Wert + Resolution : DInt := 2400 // Auflösung Inc pro Umgrehung + Frei bis DW70 : Array[1..23] of Int + Speicherung : DInt // Speicherung des aktuellen Zählerwerts (für Neustart) + Neustart : Bool // Neustart: Zählerwert neu laden + Ueberlauf : Bool // Überlauf: Zählerwert zurücksetzen + Zaehler_setzen : Bool // Zähler neu setzen + Lauf_Flag : Bool // Zähl-Lauf mit Flag ist aktiv + Flag_Lauf_fertig : Bool // Flag-Lauf wurde beendet + Ohne_Lauf_fertig : Bool // Ohne Flag-Lauf wurde beendet + Null_laden : Bool // Zähler mit 0000 laden + Laden_aktiv : Bool // Zähler laden ist aktiv + No_Save : Bool // Zählerspeicherung einfrieren + Max_Wert : DInt := 2000000 // Maximal erlaubter Zählwert + Ink_Wert : DInt := DINT#1 // Aktueller Zählerwert diff --git a/=A01+UH07-KF00/Programmbausteine/Anlage/4_EPtoLP/Basics/DEPtoLP_Antriebe.awl b/=A01+UH07-KF00/Programmbausteine/Anlage/4_EPtoLP/Basics/DEPtoLP_Antriebe.awl new file mode 100644 index 0000000..a7ed14c --- /dev/null +++ b/=A01+UH07-KF00/Programmbausteine/Anlage/4_EPtoLP/Basics/DEPtoLP_Antriebe.awl @@ -0,0 +1,15 @@ +=== InstanceDB 4199: DEPtoLP_Antriebe [DB] === +INTERFACE: + Input: + Output: + InOut: + Static: + MA0326 : "MAntrieb_PowerSave" + MA0327 : "MAntrieb_PowerSave" + MA0330 : "MAntrieb_PowerSave" + MA0331 : "MAntrieb_PowerSave" + MA0332 : "MAntrieb_PowerSave" + MA0333 : "MAntrieb_PowerSave" + MA0062 : "MAntrieb_PowerSave" + MA0063 : "MAntrieb_PowerSave" + MA0064 : "MAntrieb_PowerSave" diff --git a/=A01+UH07-KF00/Programmbausteine/Anlage/4_EPtoLP/Basics/DEPtoLP_Sensoren.awl b/=A01+UH07-KF00/Programmbausteine/Anlage/4_EPtoLP/Basics/DEPtoLP_Sensoren.awl new file mode 100644 index 0000000..bea4a87 --- /dev/null +++ b/=A01+UH07-KF00/Programmbausteine/Anlage/4_EPtoLP/Basics/DEPtoLP_Sensoren.awl @@ -0,0 +1,23 @@ +=== InstanceDB 4190: DEPtoLP_Sensoren [DB] === +INTERFACE: + Input: + Output: + InOut: + Static: + Stau_BG4531 : "MSensoren" + Stau_BG4513 : "MSensoren" + Stau_BG4515 : "MSensoren" + Stau_BG4517 : "MSensoren" + Stau_BG4521 : "MSensoren" + Stau_BG4455 : "MSensoren" + Stau_BG4457 : "MSensoren" + Stau_BG4467 : "MSensoren" + Stau_BG4461 : "MSensoren" + Stau_BG4460 : "MSensoren" + Stau_BG4464 : "MSensoren" + Stau_BG3367 : "MSensoren" + Stau_BG3371 : "MSensoren" + Stau_BG3372 : "MSensoren" + Stau_BG3376 : "MSensoren" + Stau_BG3377 : "MSensoren" + Stau_BG3304 : "MSensoren" diff --git a/=A01+UH07-KF00/Programmbausteine/Anlage/4_EPtoLP/Basics/DEPtoLP_Zylinder.awl b/=A01+UH07-KF00/Programmbausteine/Anlage/4_EPtoLP/Basics/DEPtoLP_Zylinder.awl new file mode 100644 index 0000000..e9db1a2 --- /dev/null +++ b/=A01+UH07-KF00/Programmbausteine/Anlage/4_EPtoLP/Basics/DEPtoLP_Zylinder.awl @@ -0,0 +1,16 @@ +=== InstanceDB 4192: DEPtoLP_Zylinder [DB] === +INTERFACE: + Input: + Output: + InOut: + Static: + Schleuse_4512 : "MZylinder" + Schleuse_4532 : "MZylinder" + Schleuse_4516 : "MZylinder" + Schleuse_4522 : "MZylinder" + Schleuse_4520 : "MZylinder" + Schleuse_4466 : "MZylinder" + Schleuse_4462 : "MZylinder" + Schleuse_4463 : "MZylinder" + Schleuse_3370 : "MZylinder" + Schleuse_3303 : "MZylinder" diff --git a/=A01+UH07-KF00/Programmbausteine/Anlage/4_EPtoLP/Basics/EPtoLP_Antriebe.awl b/=A01+UH07-KF00/Programmbausteine/Anlage/4_EPtoLP/Basics/EPtoLP_Antriebe.awl new file mode 100644 index 0000000..b154979 --- /dev/null +++ b/=A01+UH07-KF00/Programmbausteine/Anlage/4_EPtoLP/Basics/EPtoLP_Antriebe.awl @@ -0,0 +1,125 @@ +=== FB 4199: EPtoLP_Antriebe [STL] === +INTERFACE: + Input: + Output: + InOut: + Static: + MA0326 : "MAntrieb_PowerSave" + MA0327 : "MAntrieb_PowerSave" + MA0330 : "MAntrieb_PowerSave" + MA0331 : "MAntrieb_PowerSave" + MA0332 : "MAntrieb_PowerSave" + MA0333 : "MAntrieb_PowerSave" + MA0062 : "MAntrieb_PowerSave" + MA0063 : "MAntrieb_PowerSave" + MA0064 : "MAntrieb_PowerSave" + Temp: + Auto : Bool // Automatik Linie ist aktiv + Hand : Bool // Hand Linie ist aktiv + BereichErr : Bool // Bereichsstörung -> Antrieb stoppen + QKontroll : Bool // Frequenzumrichter schon 3s Netz EIN + FuKontroll : Bool // Frequenzumrichter schon 3s Netz EIN + Quit : Bool // Motorschutz-Störung quittieren + Qok : Bool // Motorschutz ok + Jog1 : Bool // Geschwindigkeit 1 + Jog2 : Bool // Geschwindigkeit 2 + Betrieb : Bool // Betriebsart aktiv + FC105_RET : Word // Returnwert von FC105 + Antrieb1 : Bool // Antrieb dazuschalten + Antrieb2 : Bool // Antrieb dazuschalten + F1 : Bool // Geschwindigkeit 1 aktiviert + F2 : Bool // Geschwindigkeit 2 aktiviert + F3 : Bool // Geschwindigkeit 3 aktiviert + Constant: + +--- NW 1: Übergabe des Bereichstatus System UC074/A01 --- + A "DOutbound_Bereich".A01_UH07.Automatik + AN "DOutbound_Bereich".A01_UH07.Handbetrieb + = Auto + + CLR + = Hand + + A "DOutbound_Bereich".A01_UC074.BereichErr + AN "SGes".Simulation_ohne_HW_aktiv + = BereichErr + + A "T194" + = QKontroll + = FuKontroll + + A "DOutbound_Bereich".A01_UC074.StOk_aktiv + = Quit + + +--- NW 2: MA0326 --- +CALL FB "None" , (Automatik:=Auto, Handbetrieb:=Hand, BereichErr:=BereichErr, Q:="FC0326", Ptc:=TRUE, Fu:=?, QKontroll:=QKontroll, FuKontroll:=?, ErrQuit:=Quit, Kontroll_B:=?, T_Nachlauf:=?, Antriebrueck:=?, Antriebvor:="MA0326", Jog1:=?, Jog2:=?, Analog:=?, QErr:="7_HMI_Err_UH07_OB".QErr.MA0326, PtcErr:=?, FuErr:=?, Err_Antrieb_verklemmt:=?) + + + +--- NW 3: MA0327 --- +CALL FB "None" , (Automatik:=Auto, Handbetrieb:=Hand, BereichErr:=BereichErr, Q:="FC0327", Ptc:=TRUE, Fu:=?, QKontroll:=QKontroll, FuKontroll:=?, ErrQuit:=Quit, Kontroll_B:=?, T_Nachlauf:=?, Antriebrueck:=?, Antriebvor:="MA0327", Jog1:=?, Jog2:=?, Analog:=?, QErr:="7_HMI_Err_UH07_OB".QErr.MA0327, PtcErr:=?, FuErr:=?, Err_Antrieb_verklemmt:=?) + + + +--- NW 4: MA0330 --- +CALL FB "None" , (Automatik:=Auto, Handbetrieb:=Hand, BereichErr:=BereichErr, Q:="FC0330", Ptc:=TRUE, Fu:=?, QKontroll:=QKontroll, FuKontroll:=?, ErrQuit:=Quit, Kontroll_B:=?, T_Nachlauf:=?, Antriebrueck:=?, Antriebvor:="MA0330", Jog1:=?, Jog2:=?, Analog:=?, QErr:="7_HMI_Err_UH07_OB".QErr.MA0330, PtcErr:=?, FuErr:=?, Err_Antrieb_verklemmt:=?) + + + +--- NW 5: MA0331 --- +CALL FB "None" , (Automatik:=Auto, Handbetrieb:=Hand, BereichErr:=BereichErr, Q:="FC0331", Ptc:=TRUE, Fu:=?, QKontroll:=QKontroll, FuKontroll:=?, ErrQuit:=Quit, Kontroll_B:=?, T_Nachlauf:=?, Antriebrueck:=?, Antriebvor:="MA0331", Jog1:=?, Jog2:=?, Analog:=?, QErr:="7_HMI_Err_UH07_OB".QErr.MA0331, PtcErr:=?, FuErr:=?, Err_Antrieb_verklemmt:=?) + + + +--- NW 6: MA0332 --- +CALL FB "None" , (Automatik:=Auto, Handbetrieb:=Hand, BereichErr:=BereichErr, Q:="FC0332", Ptc:=TRUE, Fu:=?, QKontroll:=QKontroll, FuKontroll:=?, ErrQuit:=Quit, Kontroll_B:=?, T_Nachlauf:=?, Antriebrueck:=?, Antriebvor:="MA0332", Jog1:=?, Jog2:=?, Analog:=?, QErr:="7_HMI_Err_UH07_OB".QErr.MA0332, PtcErr:=?, FuErr:=?, Err_Antrieb_verklemmt:=?) + + + +--- NW 7: MA0333 --- +CALL FB "None" , (Automatik:=Auto, Handbetrieb:=Hand, BereichErr:=BereichErr, Q:="FC0333", Ptc:=TRUE, Fu:=?, QKontroll:=QKontroll, FuKontroll:=?, ErrQuit:=Quit, Kontroll_B:=?, T_Nachlauf:=?, Antriebrueck:=?, Antriebvor:="MA0333", Jog1:=?, Jog2:=?, Analog:=?, QErr:="7_HMI_Err_UH07_OB".QErr.MA0333, PtcErr:=?, FuErr:=?, Err_Antrieb_verklemmt:=?) + + + +--- NW 8: Übergabe des Bereichstatus System UH07/A01 --- + A "DOutbound_Bereich".A01_UH07.Automatik + AN "DOutbound_Bereich".A01_UH07.Handbetrieb + = Auto + + CLR + = Hand + + A "DOutbound_Bereich".A01_UH07.BereichErr + AN "SGes".Simulation_ohne_HW_aktiv + = BereichErr + + A "T197" + = QKontroll + = FuKontroll + + A "DOutbound_Bereich".A01_UH07.StOk_aktiv + = Quit + + +--- NW 9: MA0062 --- +CALL FB "None" , (Automatik:=Auto, Handbetrieb:=Hand, BereichErr:=BereichErr, Q:="FC0062", Ptc:=TRUE, Fu:=?, QKontroll:=QKontroll, FuKontroll:=?, ErrQuit:=Quit, Kontroll_B:=?, T_Nachlauf:=?, Antriebrueck:=?, Antriebvor:="MA0062", Jog1:=?, Jog2:=?, Analog:=?, QErr:="7_HMI_Err_UH07_OB".QErr.MA0062, PtcErr:=?, FuErr:=?, Err_Antrieb_verklemmt:=?) + + + +--- NW 10: MA0063 --- +CALL FB "None" , (Automatik:=Auto, Handbetrieb:=Hand, BereichErr:=BereichErr, Q:="FC0063", Ptc:=TRUE, Fu:=?, QKontroll:=QKontroll, FuKontroll:=?, ErrQuit:=Quit, Kontroll_B:=?, T_Nachlauf:=?, Antriebrueck:=?, Antriebvor:="MA0063", Jog1:=?, Jog2:=?, Analog:=?, QErr:="7_HMI_Err_UH07_OB".QErr.MA0063, PtcErr:=?, FuErr:=?, Err_Antrieb_verklemmt:=?) + + + +--- NW 11: MA0064 --- +CALL FB "None" , (Automatik:=Auto, Handbetrieb:=Hand, BereichErr:=BereichErr, Q:="FC0064", Ptc:=TRUE, Fu:=?, QKontroll:=QKontroll, FuKontroll:=?, ErrQuit:=Quit, Kontroll_B:=?, T_Nachlauf:=?, Antriebrueck:=?, Antriebvor:="MA0064", Jog1:=?, Jog2:=?, Analog:=?, QErr:="7_HMI_Err_UH07_OB".QErr.MA0064, PtcErr:=?, FuErr:=?, Err_Antrieb_verklemmt:=?) + +// / U "M900.0" +// / UN "DLP_Sorter".Sync_BG3306.Dyn.Error.Keine_TeachPktdaten +// / S "MA0064" + + +--- NW 12: Ende --- + BE + diff --git a/=A01+UH07-KF00/Programmbausteine/Anlage/4_EPtoLP/Basics/EPtoLP_Sensoren.awl b/=A01+UH07-KF00/Programmbausteine/Anlage/4_EPtoLP/Basics/EPtoLP_Sensoren.awl new file mode 100644 index 0000000..40cf1ac --- /dev/null +++ b/=A01+UH07-KF00/Programmbausteine/Anlage/4_EPtoLP/Basics/EPtoLP_Sensoren.awl @@ -0,0 +1,107 @@ +=== FB 4190: EPtoLP_Sensoren [STL] === +INTERFACE: + Input: + Output: + InOut: + Static: + Stau_BG4531 : "MSensoren" // Stau am Sensor Einfahrt MA0326 + Stau_BG4513 : "MSensoren" // Stau am Sensor Mitte MA0326 + Stau_BG4515 : "MSensoren" // Stau am Sensor Einfahrt MA0327 + Stau_BG4517 : "MSensoren" // Stau am Sensor Mitte MA0327 + Stau_BG4521 : "MSensoren" // Stau am Sensor Ende MA0327 + Stau_BG4455 : "MSensoren" // Stau am Sensor Einfahrt MA0330 + Stau_BG4457 : "MSensoren" // Stau am Sensor Einfahrt MA0331 + Stau_BG4467 : "MSensoren" // Stau am Sensor Mitte MA0331 + Stau_BG4461 : "MSensoren" // Stau am Sensor Einfahrt MA0332 + Stau_BG4460 : "MSensoren" // Stau am Sensor Mitte MA0332 + Stau_BG4464 : "MSensoren" // Stau am Sensor Einfahrt MA0330 + Stau_BG3367 : "MSensoren" // Stau am hinter BST 1 + Stau_BG3371 : "MSensoren" // Stau am Sensor Einfahrt MA0063 + Stau_BG3372 : "MSensoren" // Stau am Sensor Einfahrt MA0063 + Stau_BG3376 : "MSensoren" // Stau am Sensor Einfahrt MA0064 + Stau_BG3377 : "MSensoren" // Stau am Sensor Mitte MA0064 + Stau_BG3304 : "MSensoren" // Stau am Sensor vor Schleuse MB3305 + Temp: + T_Ein : Int // Vorgabe Einschaltverzögerung + T_Aus : Int // Zwischenspeicher Ausschaltverzögerung + F1 : Bool // Geschwindigkeit 1 aktiviert + F2 : Bool // Geschwindigkeit 2 aktiviert + F3 : Bool // Geschwindigkeit 3 aktiviert + ESensor : Bool // Sensoren + Antrieb : Bool + VReal : Real // GeschwindigkeitinReal + Zeit : Int // Zeit für Ausschaltverzögerung LT1100 + Aktiv : Bool // Zeit aktivieren + Constant: + +--- NW 1: Sensoren entprellen --- +CALL FB "None" , (ESensor:="BG4531", T_Ein:=80, T_Aus:=11, tein_aktiv:=TRUE, taus_aktiv:=TRUE) + + +--- NW 2: Sensoren entprellen --- +CALL FB "None" , (ESensor:="BG4513", T_Ein:=80, T_Aus:=11, tein_aktiv:=TRUE, taus_aktiv:=TRUE) + + +--- NW 3: Sensoren entprellen --- +CALL FB "None" , (ESensor:="BG4515", T_Ein:=80, T_Aus:=11, tein_aktiv:=TRUE, taus_aktiv:=TRUE) + + +--- NW 4: Sensoren entprellen --- +CALL FB "None" , (ESensor:="BG4517", T_Ein:=80, T_Aus:=11, tein_aktiv:=TRUE, taus_aktiv:=TRUE) + + +--- NW 5: Sensoren entprellen --- +CALL FB "None" , (ESensor:="BG4521", T_Ein:=80, T_Aus:=11, tein_aktiv:=TRUE, taus_aktiv:=TRUE) + + +--- NW 6: Sensoren entprellen --- +CALL FB "None" , (ESensor:="BG4455", T_Ein:=1, T_Aus:=11, tein_aktiv:=TRUE, taus_aktiv:=TRUE) + + +--- NW 7: Sensoren entprellen --- +CALL FB "None" , (ESensor:="BG4457", T_Ein:=1, T_Aus:=11, tein_aktiv:=TRUE, taus_aktiv:=TRUE) + + +--- NW 8: Sensoren entprellen --- +CALL FB "None" , (ESensor:="BG4467", T_Ein:=80, T_Aus:=11, tein_aktiv:=TRUE, taus_aktiv:=TRUE) + + +--- NW 9: Sensoren entprellen --- +CALL FB "None" , (ESensor:="BG4461", T_Ein:=80, T_Aus:=11, tein_aktiv:=TRUE, taus_aktiv:=TRUE) + + +--- NW 10: Sensoren entprellen --- +CALL FB "None" , (ESensor:="BG4460", T_Ein:=1, T_Aus:=11, tein_aktiv:=TRUE, taus_aktiv:=TRUE) + + +--- NW 11: Sensoren entprellen --- +CALL FB "None" , (ESensor:="BG4464", T_Ein:=1, T_Aus:=11, tein_aktiv:=TRUE, taus_aktiv:=TRUE) + + +--- NW 12: Sensoren entprellen --- +CALL FB "None" , (ESensor:="BG3367", T_Ein:=1, T_Aus:=30, tein_aktiv:=TRUE, taus_aktiv:=TRUE) + + +--- NW 13: Sensoren entprellen --- +CALL FB "None" , (ESensor:="BG3371", T_Ein:=1, T_Aus:=11, tein_aktiv:=TRUE, taus_aktiv:=TRUE) + + +--- NW 14: Sensoren entprellen --- +CALL FB "None" , (ESensor:="BG3372", T_Ein:=1, T_Aus:=11, tein_aktiv:=TRUE, taus_aktiv:=TRUE) + + +--- NW 15: Sensoren entprellen --- +CALL FB "None" , (ESensor:="BG3376", T_Ein:=80, T_Aus:=11, tein_aktiv:=TRUE, taus_aktiv:=TRUE) + + +--- NW 16: Sensoren entprellen --- +CALL FB "None" , (ESensor:="BG3377", T_Ein:=80, T_Aus:=11, tein_aktiv:=TRUE, taus_aktiv:=TRUE) + + +--- NW 17: Sensoren entprellen --- +CALL FB "None" , (ESensor:="BG3304", T_Ein:=1, T_Aus:=11, tein_aktiv:=TRUE, taus_aktiv:=TRUE) + + +--- NW 18: Ende --- + BE + diff --git a/=A01+UH07-KF00/Programmbausteine/Anlage/4_EPtoLP/Basics/EPtoLP_Zylinder.awl b/=A01+UH07-KF00/Programmbausteine/Anlage/4_EPtoLP/Basics/EPtoLP_Zylinder.awl new file mode 100644 index 0000000..4bb3a7c --- /dev/null +++ b/=A01+UH07-KF00/Programmbausteine/Anlage/4_EPtoLP/Basics/EPtoLP_Zylinder.awl @@ -0,0 +1,85 @@ +=== FB 4192: EPtoLP_Zylinder [STL] === +INTERFACE: + Input: + Output: + InOut: + Static: + Schleuse_4512 : "MZylinder" // + Schleuse_4532 : "MZylinder" + Schleuse_4516 : "MZylinder" // + Schleuse_4522 : "MZylinder" // + Schleuse_4520 : "MZylinder" + Schleuse_4466 : "MZylinder" + Schleuse_4462 : "MZylinder" + Schleuse_4463 : "MZylinder" + Schleuse_3370 : "MZylinder" + Schleuse_3303 : "MZylinder" + Temp: + Auto : Bool // Automatik ist aktiv + Hand : Bool // Hand ist aktiv + ZylAst : Bool // Zylinder ansteuern + Constant: + +--- NW 1: Übergabe des Bereichstatus System UC074/A01 --- + A "DOutbound_Bereich".A01_UH07.Automatik + AN "DOutbound_Bereich".A01_UH07.Handbetrieb + = Auto + + A "DOutbound_Bereich".A01_UC074.BereichErr + AN "SGes".Simulation_ohne_HW_aktiv + JC Next // Zylinder-Stellung nicht mehr ändern + + +--- NW 2: Schleuse_4512 --- +CALL FB "None" , (Automatik:=Auto, Handbetrieb:=FALSE, T_Ast:=0, T_Gst:=5, ZylAst:="MB4512", ZylGst:=?) + + +--- NW 3: Schleuse_4532 --- +CALL FB "None" , (Automatik:=Auto, Handbetrieb:=FALSE, T_Ast:=0, T_Gst:=5, ZylAst:="MB4532", ZylGst:=?) + + +--- NW 4: Schleuse_4516 --- +CALL FB "None" , (Automatik:=Auto, Handbetrieb:=FALSE, T_Ast:=0, T_Gst:=5, ZylAst:="MB4516", ZylGst:=?) + + +--- NW 5: Schleuse_4522 --- +CALL FB "None" , (Automatik:=Auto, Handbetrieb:=FALSE, T_Ast:=0, T_Gst:=5, ZylAst:="MB4522", ZylGst:=?) + + +--- NW 6: Schleuse_4520 --- +CALL FB "None" , (Automatik:=Auto, Handbetrieb:=FALSE, T_Ast:=0, T_Gst:=5, ZylAst:="MB4520", ZylGst:=?) + + +--- NW 7: Schleuse_4466 --- +CALL FB "None" , (Automatik:=Auto, Handbetrieb:=FALSE, T_Ast:=0, T_Gst:=5, ZylAst:="MB4466", ZylGst:=?) + + +--- NW 8: Schleuse_4462 --- +CALL FB "None" , (Automatik:=Auto, Handbetrieb:=FALSE, T_Ast:=0, T_Gst:=5, ZylAst:="MB4462", ZylGst:=?) + + +--- NW 9: Übergabe des Bereichstatus System UH07/A01 --- +Next: A "DOutbound_Bereich".A01_UH07.Automatik + AN "DOutbound_Bereich".A01_UH07.Handbetrieb + = Auto + + A "DOutbound_Bereich".A01_UH07.BereichErr + AN "SGes".Simulation_ohne_HW_aktiv + JC Next1 // Zylinder-Stellung nicht mehr ändern + + +--- NW 10: Schleuse_4463 --- +CALL FB "None" , (Automatik:=Auto, Handbetrieb:=FALSE, T_Ast:=0, T_Gst:=5, ZylAst:="MB4463", ZylGst:=?) + + +--- NW 11: Schleuse_3370 --- +CALL FB "None" , (Automatik:=Auto, Handbetrieb:=FALSE, T_Ast:=0, T_Gst:=5, ZylAst:="MB3370", ZylGst:=?) + + +--- NW 12: Schleuse_3303 --- +CALL FB "None" , (Automatik:=Auto, Handbetrieb:=FALSE, T_Ast:=0, T_Gst:=5, ZylAst:="MB3303", ZylGst:=?) + + +--- NW 13: Ende --- +Next1: BE + diff --git a/=A01+UH07-KF00/Programmbausteine/Anlage/4_EPtoLP/EPtoLP_Bereich.awl b/=A01+UH07-KF00/Programmbausteine/Anlage/4_EPtoLP/EPtoLP_Bereich.awl new file mode 100644 index 0000000..3bdc015 --- /dev/null +++ b/=A01+UH07-KF00/Programmbausteine/Anlage/4_EPtoLP/EPtoLP_Bereich.awl @@ -0,0 +1,23 @@ +=== FC 4100: EPtoLP_Bereich [STL] === +INTERFACE: + Input: + Output: + InOut: + Temp: + Constant: + Return: + Ret_Val : Void + +--- NW 1: Baustein-Aufrufe --- +CALL FB "EPtoLP_Sensoren" , + +CALL FB "EPtoLP_OmniFahren" , + +CALL FB "EPtoLP_Zylinder" , + +CALL FB "EPtoLP_Antriebe" , + + +--- NW 2: Ende --- + BE + diff --git a/=A01+UH07-KF00/Programmbausteine/Anlage/4_EPtoLP/Omnifahren_EPtoLP/DEPtoLP_OmniFahren.awl b/=A01+UH07-KF00/Programmbausteine/Anlage/4_EPtoLP/Omnifahren_EPtoLP/DEPtoLP_OmniFahren.awl new file mode 100644 index 0000000..3d6ab57 --- /dev/null +++ b/=A01+UH07-KF00/Programmbausteine/Anlage/4_EPtoLP/Omnifahren_EPtoLP/DEPtoLP_OmniFahren.awl @@ -0,0 +1,24 @@ +=== InstanceDB 4128: DEPtoLP_OmniFahren [DB] === +INTERFACE: + Input: + Output: + InOut: + Static: + Schleuse_4512 : "MHMOmniSchleuse_Plus" + Schleuse_4532 : "MHMOmniSchleuse_Plus" + Schleuse_4516 : "MHMOmniSchleuse" + Schleuse_4520 : "MHMOmniSchleuse" + Bereich_4456 : "MHMOmniBereich_Plus" + Schleuse_4466 : "MHMOmniSchleuse_Plus" + Schleuse_4462 : "MHMOmniSchleuse_Plus" + Bereich_4465 : "MHMOmniBereich_Plus" + Schleuse_3370 : "MHMOmniSchleuse" + Bereich_3373 : "MHMOmniBereich_Plus" + Schleuse_3303 : "MHMOmniSchleuse" + Schleuse_4522 : "MHMOmniSchleuse" + Schleuse_4463 : "MHMOmniSchleuse" + Übergang_4514 : "MHMÜbergang_ohne_Schleuse" + Trolleys_starten : Struct + Flanke : Bool + Wartezeit_aktiv : Bool + Timer_Wartenzeit : Int diff --git a/=A01+UH07-KF00/Programmbausteine/Anlage/4_EPtoLP/Omnifahren_EPtoLP/EPtoLP_Draussen.awl b/=A01+UH07-KF00/Programmbausteine/Anlage/4_EPtoLP/Omnifahren_EPtoLP/EPtoLP_Draussen.awl new file mode 100644 index 0000000..67de5a7 --- /dev/null +++ b/=A01+UH07-KF00/Programmbausteine/Anlage/4_EPtoLP/Omnifahren_EPtoLP/EPtoLP_Draussen.awl @@ -0,0 +1,38 @@ +=== FC 4182: EPtoLP_Draussen [STL] === +INTERFACE: + Input: + Output: + InOut: + Temp: + Error.Bit : Bool + Constant: + Return: + Ret_Val : Void + +--- NW 1: Rückmeldung --- + SET // Rückmeldungen erst mal resetten + R "M180.6" // Weiterfahrt von Ziel-FC erlaubt + + +--- NW 2: Schleuse 4466 (Vor ByPass vom VP): Ausgefahren ? --- + L "MW190" + L 4466 // Aufruf von Schleuse 4466? + <>I // Nein! + JC X4466E + + L "DVPtoEP_OmniFahren".Schleuse_4443.Dyn.Weichen_Ziel + L 16#4461 // Abzweig ? + <>I // Nein ! + BEC + +// Partner-Trolley will zu LP fahren: +// Bei Partner (Schleuse 4443) wieder mit Schritt 0 beginnen (erneuter Ziel-FC-Aufruf) + L 0 + T "DVPtoEP_OmniFahren".Schleuse_4443.Dyn.Sk.Akt_Schritt + +X4466E: NOP 0 + + +--- NW 3: Ende --- + BE + diff --git a/=A01+UH07-KF00/Programmbausteine/Anlage/4_EPtoLP/Omnifahren_EPtoLP/EPtoLP_OmniFahren.awl b/=A01+UH07-KF00/Programmbausteine/Anlage/4_EPtoLP/Omnifahren_EPtoLP/EPtoLP_OmniFahren.awl new file mode 100644 index 0000000..278f1e0 --- /dev/null +++ b/=A01+UH07-KF00/Programmbausteine/Anlage/4_EPtoLP/Omnifahren_EPtoLP/EPtoLP_OmniFahren.awl @@ -0,0 +1,303 @@ +=== FB 4128: EPtoLP_OmniFahren [STL] === +INTERFACE: + Input: + Output: + InOut: + Static: + Schleuse_4512 : "MHMOmniSchleuse_Plus" + Schleuse_4532 : "MHMOmniSchleuse_Plus" + Schleuse_4516 : "MHMOmniSchleuse" + Schleuse_4520 : "MHMOmniSchleuse" + Bereich_4456 : "MHMOmniBereich_Plus" + Schleuse_4466 : "MHMOmniSchleuse_Plus" + Schleuse_4462 : "MHMOmniSchleuse_Plus" + Bereich_4465 : "MHMOmniBereich_Plus" + Schleuse_3370 : "MHMOmniSchleuse" + Bereich_3373 : "MHMOmniBereich_Plus" + Schleuse_3303 : "MHMOmniSchleuse" + Schleuse_4522 : "MHMOmniSchleuse" + Schleuse_4463 : "MHMOmniSchleuse" + Übergang_4514 : "MHMÜbergang_ohne_Schleuse" + Trolleys_starten : Struct + Flanke : Bool + Wartezeit_aktiv : Bool + Timer_Wartenzeit : Int + Temp: + ErrQuit : Bool + ErrAnz : Bool + Stau_raus : Bool + Start_ok : Bool + B_aktiv : Bool + B_vor_Schleuse : Bool + B_nach_Schleuse : Bool + Antrieb_aktiv : Bool + Antrieb_start : Bool + Antrieb_stop : Bool + Fahren_Ok : Bool + Antrieb_nicht_stoppen : Bool + Constant: + +--- NW 1: Systemzeug --- +// Verschiedene Bereiche: + A "DOutbound_Bereich".A01_UH07.AnlageEin + = Schleuse_4512.Dyn.Sk.Auto_akt + = Schleuse_4532.Dyn.Sk.Auto_akt + = Schleuse_4516.Dyn.Sk.Auto_akt + = Schleuse_4522.Dyn.Sk.Auto_akt + = Schleuse_4520.Dyn.Sk.Auto_akt + = Bereich_4456.Dyn.Sk.Auto_akt + = Schleuse_4466.Dyn.Sk.Auto_akt + = Schleuse_4462.Dyn.Sk.Auto_akt + = Schleuse_4463.Dyn.Sk.Auto_akt + = Bereich_4465.Dyn.Sk.Auto_akt + = Schleuse_3370.Dyn.Sk.Auto_akt + = Bereich_3373.Dyn.Sk.Auto_akt + = Schleuse_3303.Dyn.Sk.Auto_akt + + AN "DOutbound_Bereich".A01_UC074.BereichErr + = Schleuse_4512.Dyn.Sk.Bereich_ok + = Schleuse_4532.Dyn.Sk.Bereich_ok + = Schleuse_4516.Dyn.Sk.Bereich_ok + = Schleuse_4522.Dyn.Sk.Bereich_ok + = Schleuse_4520.Dyn.Sk.Bereich_ok + = Bereich_4456.Dyn.Sk.Bereich_ok + = Schleuse_4466.Dyn.Sk.Bereich_ok + = Schleuse_4462.Dyn.Sk.Bereich_ok + = Schleuse_4463.Dyn.Sk.Bereich_ok + = Bereich_4465.Dyn.Sk.Bereich_ok + AN "DOutbound_Bereich".A01_UH07.BereichErr + = Schleuse_3370.Dyn.Sk.Bereich_ok + = Bereich_3373.Dyn.Sk.Bereich_ok + = Schleuse_3303.Dyn.Sk.Bereich_ok + + +--- NW 2: Störungen quittieren UZ7402/7403 --- + A "DOutbound_Bereich".A01_UZ7402.StOk_aktiv + O "DOutbound_Bereich".A01_UZ7403.StOk_aktiv + O "DOutbound_Bereich".A01_UC074.StOk_aktiv + O "DOutbound_Bereich".A01_UH07.StOk_aktiv + = ErrQuit + + +--- NW 3: Schleuse 4512 --- +CALL FB "None" , (Schleusen_Nr:=4512, ErrQuit:=ErrQuit, B_VorSchleuse:="BG4511", B_InSchleuse:="BG4512", B_Zähl:="BG4531", B_Stau_raus:="DEPtoLP_Sensoren".Stau_BG4531.Stat.B_Akt, Start_Ok:=1, Antrieb_Schleuse_aktiv:="MA0326", Antrieb_plus_aktiv:=?, Schleuse_geöffnet:="MB4512", RestZeit_Bereich_plus:=?, Y_Schleuse_Auf:="DEPtoLP_Zylinder".Schleuse_4512.Stat.Ast, Error:=DB708.DBW576, Antrieb_Schleuse_vor:="DEPtoLP_Antriebe".MA0326.Stat.A_vor, Antrieb_Schleuse_start:="DEPtoLP_Antriebe".MA0326.Stat.A_start, Antrieb_Schleuse_stop:="DEPtoLP_Antriebe".MA0326.Stat.Stop_vor, Antrieb_Schleuse_PS:="DEPtoLP_Antriebe".MA0326.Stat.A_PS, Antrieb_plus_vor:=?, Antrieb_plus_start:=?, hStOk:=ErrAnz) // Identisch + + +--- NW 4: Schleuse 4532 --- + A "DEPtoLP_Sensoren".Stau_BG4513.Stat.B_Akt +// / O "DEP>LP_Sensoren".Stau_BG4515.Stat.B_Akt + = Stau_raus + +CALL FB "None" , (Schleusen_Nr:=4532, ErrQuit:=ErrQuit, B_VorSchleuse:="BG4531", B_InSchleuse:="BG4532", B_Zähl:="BG4513", B_Stau_raus:=Stau_raus, Start_Ok:=1, Antrieb_Schleuse_aktiv:="MA0326", Antrieb_plus_aktiv:="MA0326", Schleuse_geöffnet:="MB4532", RestZeit_Bereich_plus:=?, Y_Schleuse_Auf:="DEPtoLP_Zylinder".Schleuse_4532.Stat.Ast, Error:=DB708.DBW578, Antrieb_Schleuse_vor:="DEPtoLP_Antriebe".MA0326.Stat.A_vor, Antrieb_Schleuse_start:="DEPtoLP_Antriebe".MA0326.Stat.A_start, Antrieb_Schleuse_stop:="DEPtoLP_Antriebe".MA0326.Stat.Stop_vor, Antrieb_Schleuse_PS:="DEPtoLP_Antriebe".MA0326.Stat.A_PS, Antrieb_plus_vor:=?, Antrieb_plus_start:=?, hStOk:=ErrAnz) + + +--- NW 5: MA0326 / Übergang 4514 --- +CALL FB "None" , (ErrQuit:=ErrQuit, B_Anfang:="BG4513", B_Am_Übergang:="BG4514", B_Stau_Antrieb_plus:="BG4515", Antrieb_aktiv:="MA0326", Antrieb_plus_aktiv:="MA0327", Antrieb_vor:="DEPtoLP_Antriebe".MA0326.Stat.A_vor, Antrieb_start:="DEPtoLP_Antriebe".MA0326.Stat.A_start, Antrieb_stop:="DEPtoLP_Antriebe".MA0326.Stat.A_PS, Antrieb_plus_vor:="DEPtoLP_Antriebe".MA0327.Stat.A_vor, Antrieb_plus_start:="DEPtoLP_Antriebe".MA0327.Stat.A_start) + + +--- NW 6: Schleuse 4516 --- +CALL FB "None" , (Schleusen_Nr:=4516, ErrQuit:=ErrQuit, B_VorSchleuse:="BG4515", B_InSchleuse:="BG4516", B_AusSchleuse:="BG4517", B_Stau_raus:="DEPtoLP_Sensoren".Stau_BG4517.Stat.B_Akt, Start_Ok:=1, Antrieb_Schleuse_aktiv:="MA0327", Antrieb_plus_aktiv:="MA0327", Schleuse_geöffnet:="MB4516", RestZeit_Bereich_plus:=?, Y_Schleuse_Auf:="DEPtoLP_Zylinder".Schleuse_4516.Stat.Ast, Error:=DB708.DBW566, Antrieb_Schleuse_vor:="DEPtoLP_Antriebe".MA0327.Stat.A_vor, Antrieb_Schleuse_start:="DEPtoLP_Antriebe".MA0327.Stat.A_start, Antrieb_Schleuse_stop:="DEPtoLP_Antriebe".MA0327.Stat.Stop_vor, Antrieb_Schleuse_PS:="DEPtoLP_Antriebe".MA0327.Stat.A_PS, Antrieb_plus_vor:=?, Antrieb_plus_start:=?, hStOk:=ErrAnz) // Identisch + + +--- NW 7: Schleuse 4522 --- +CALL FB "None" , (Schleusen_Nr:=4522, ErrQuit:=ErrQuit, B_VorSchleuse:="BG4517", B_InSchleuse:="BG4522", B_AusSchleuse:="BG4521", B_Stau_raus:="DEPtoLP_Sensoren".Stau_BG4521.Stat.B_Akt, Start_Ok:=1, Antrieb_Schleuse_aktiv:="MA0327", Antrieb_plus_aktiv:="MA0327", Schleuse_geöffnet:="MB4522", RestZeit_Bereich_plus:=?, Y_Schleuse_Auf:="DEPtoLP_Zylinder".Schleuse_4522.Stat.Ast, Error:=DB708.DBW582, Antrieb_Schleuse_vor:="DEPtoLP_Antriebe".MA0327.Stat.A_vor, Antrieb_Schleuse_start:="DEPtoLP_Antriebe".MA0327.Stat.A_start, Antrieb_Schleuse_stop:="DEPtoLP_Antriebe".MA0327.Stat.Stop_vor, Antrieb_Schleuse_PS:="DEPtoLP_Antriebe".MA0327.Stat.A_PS, Antrieb_plus_vor:=?, Antrieb_plus_start:=?, hStOk:=ErrAnz) // Identisch + + +--- NW 8: Wartezeit bis erneuter Trolleystart sinnvoll (wegen Staubildung) --- + A "MB4520" + Rise Trolleys_starten.Flanke + S Trolleys_starten.Wartezeit_aktiv + JCN Warten // Negierter Sprung + + L 15 // Wartezeit in Sekunden + T Trolleys_starten.Timer_Wartenzeit + +Warten: AN Trolleys_starten.Wartezeit_aktiv + O + A "MB4520" // Schleuse offen + AN "MA0327" // Aber Trolley fährt nicht + ON "1s-Impuls" + JC Wait + + L Trolleys_starten.Timer_Wartenzeit + + -1 + T Trolleys_starten.Timer_Wartenzeit + L 0 + >I + JC Wait + + SET + R Trolleys_starten.Wartezeit_aktiv + +Wait: NOP 0 + + +--- NW 9: Schleuse 4520 --- + AN Trolleys_starten.Wartezeit_aktiv + = Fahren_Ok + + A "BG4517" + O "BG4521" + = B_vor_Schleuse + +CALL FB "None" , (Schleusen_Nr:=4520, ErrQuit:=ErrQuit, B_VorSchleuse:=B_vor_Schleuse, B_InSchleuse:="BG4520", B_AusSchleuse:="BG4455", B_Stau_raus:="DEPtoLP_Sensoren".Stau_BG4455.Stat.B_Akt, Start_Ok:=Fahren_Ok, Antrieb_Schleuse_aktiv:="MA0327", Antrieb_plus_aktiv:="MA0330", Schleuse_geöffnet:="MB4520", RestZeit_Bereich_plus:=Bereich_4456.Dyn.Restzeit, Y_Schleuse_Auf:="DEPtoLP_Zylinder".Schleuse_4520.Stat.Ast, Error:=DB708.DBW568, Antrieb_Schleuse_vor:="DEPtoLP_Antriebe".MA0327.Stat.A_vor, Antrieb_Schleuse_start:="DEPtoLP_Antriebe".MA0327.Stat.A_start, Antrieb_Schleuse_stop:="DEPtoLP_Antriebe".MA0327.Stat.Stop_vor, Antrieb_Schleuse_PS:="DEPtoLP_Antriebe".MA0327.Stat.A_PS, Antrieb_plus_vor:=Bereich_4456.Dyn.Status.Trolley_kommt_in_Bereich, Antrieb_plus_start:=?, hStOk:=ErrAnz) + + +--- NW 10: Störungen anzeigen UZ7402/7403 --- + A ErrAnz + R ErrAnz + S "DOutbound_Bereich".A01_UZ7402.StOk_blinken + S "DOutbound_Bereich".A01_UZ7403.StOk_blinken + S "DOutbound_Bereich".A01_UC074.StOk_blinken + S "DOutbound_Bereich".A01_UH07.StOk_blinken + + +--- NW 11: Störungen quittieren UZ7402/7401 --- + A "DOutbound_Bereich".A01_UZ7402.StOk_aktiv + O "DOutbound_Bereich".A01_UZ7401.StOk_aktiv + O "DOutbound_Bereich".A01_UC074.StOk_aktiv + O "DOutbound_Bereich".A01_UH07.StOk_aktiv + = ErrQuit + + +--- NW 12: Bereich 4456 --- + A "MB4520" + A "BG4455" + = B_vor_Schleuse + + A "DEPtoLP_Sensoren".Stau_BG4457.Stat.B_Akt + O "DEPtoLP_Sensoren".Stau_BG4467.Stat.B_Akt + = Stau_raus + +CALL FB "None" , (Bereichs_Nr:=4456, ErrQuit:=ErrQuit, B_BereichsAnfang:=B_vor_Schleuse, B_BereichsEnde:="BG4456", B_Zähl:="BG4467", B_Stau_raus:=Stau_raus, Start_Ok:=1, Antrieb_Bereich_aktiv:="MA0330", Antrieb_plus_aktiv:="MA0331", RestZeit_Bereich_plus:=?, Antrieb_Bereich_vor:="DEPtoLP_Antriebe".MA0330.Stat.A_vor, Antrieb_Bereich_stop:="DEPtoLP_Antriebe".MA0330.Stat.Stop_vor, Error:=DB708.DBW478, Antrieb_Bereich_start:="DEPtoLP_Antriebe".MA0330.Stat.A_start, Antrieb_plus_vor:="DEPtoLP_Antriebe".MA0331.Stat.A_vor, Antrieb_plus_start:="DEPtoLP_Antriebe".MA0331.Stat.A_start, Antrieb_minus_vor:="DEPtoLP_Antriebe".MA0327.Stat.A_vor, hStOk:=ErrAnz) + + +--- NW 13: Störungen anzeigen UZ7402/7401 --- + A ErrAnz + R ErrAnz + S "DOutbound_Bereich".A01_UZ7402.StOk_blinken + S "DOutbound_Bereich".A01_UZ7401.StOk_blinken + S "DOutbound_Bereich".A01_UC074.StOk_blinken + S "DOutbound_Bereich".A01_UH07.StOk_blinken + + +--- NW 14: Störungen quittieren UZ7401 --- + A "DOutbound_Bereich".A01_UZ7401.StOk_aktiv + O "DOutbound_Bereich".A01_UC074.StOk_aktiv + O "DOutbound_Bereich".A01_UH07.StOk_aktiv + = ErrQuit + + +--- NW 15: Schleuse 4466 --- + AN "MB4445" // Weiche Einfahrt ByPass + AN "MB4457" + = Start_ok + +CALL FB "None" , (Schleusen_Nr:=4466, ErrQuit:=ErrQuit, B_VorSchleuse:="BG4457", B_InSchleuse:="BG4466", B_Zähl:="BG4461", B_Stau_raus:="DEPtoLP_Sensoren".Stau_BG4461.Stat.B_Akt, Start_Ok:=Start_ok, Antrieb_Schleuse_aktiv:="MA0331", Antrieb_plus_aktiv:="MA0332", Schleuse_geöffnet:="MB4466", RestZeit_Bereich_plus:=?, Y_Schleuse_Auf:="DEPtoLP_Zylinder".Schleuse_4466.Stat.Ast, Error:=DB708.DBW562, Antrieb_Schleuse_vor:="DEPtoLP_Antriebe".MA0331.Stat.A_vor, Antrieb_Schleuse_start:="DEPtoLP_Antriebe".MA0331.Stat.A_start, Antrieb_Schleuse_stop:="DEPtoLP_Antriebe".MA0331.Stat.Stop_vor, Antrieb_Schleuse_PS:="DEPtoLP_Antriebe".MA0331.Stat.A_PS, Antrieb_plus_vor:="DEPtoLP_Antriebe".MA0332.Stat.A_vor, Antrieb_plus_start:="DEPtoLP_Antriebe".MA0332.Stat.A_start, hStOk:=ErrAnz) + + + +--- NW 16: Schleuse 4462 --- +CALL FB "None" , (Schleusen_Nr:=4462, ErrQuit:=ErrQuit, B_VorSchleuse:="BG4461", B_InSchleuse:="BG4462", B_Zähl:="BG4460", B_Stau_raus:="DEPtoLP_Sensoren".Stau_BG4460.Stat.B_Akt, Start_Ok:=1, Antrieb_Schleuse_aktiv:="MA0332", Antrieb_plus_aktiv:=?, Schleuse_geöffnet:="MB4462", RestZeit_Bereich_plus:=?, Y_Schleuse_Auf:="DEPtoLP_Zylinder".Schleuse_4462.Stat.Ast, Error:=DB708.DBW560, Antrieb_Schleuse_vor:="DEPtoLP_Antriebe".MA0332.Stat.A_vor, Antrieb_Schleuse_start:="DEPtoLP_Antriebe".MA0332.Stat.A_start, Antrieb_Schleuse_stop:="DEPtoLP_Antriebe".MA0332.Stat.Stop_vor, Antrieb_Schleuse_PS:="DEPtoLP_Antriebe".MA0332.Stat.A_PS, Antrieb_plus_vor:=?, Antrieb_plus_start:=?, hStOk:=ErrAnz) + + +--- NW 17: Schleuse 4463 --- +CALL FB "None" , (Schleusen_Nr:=4463, ErrQuit:=ErrQuit, B_VorSchleuse:="BG4460", B_InSchleuse:="BG4463", B_AusSchleuse:="BG4464", B_Stau_raus:="DEPtoLP_Sensoren".Stau_BG4464.Stat.B_Akt, Start_Ok:=1, Antrieb_Schleuse_aktiv:="MA0332", Antrieb_plus_aktiv:="MA0333", Schleuse_geöffnet:="MB4463", RestZeit_Bereich_plus:=Bereich_4465.Dyn.Restzeit, Y_Schleuse_Auf:="DEPtoLP_Zylinder".Schleuse_4463.Stat.Ast, Error:=DB708.DBW584, Antrieb_Schleuse_vor:="DEPtoLP_Antriebe".MA0332.Stat.A_vor, Antrieb_Schleuse_start:="DEPtoLP_Antriebe".MA0332.Stat.A_start, Antrieb_Schleuse_stop:="DEPtoLP_Antriebe".MA0332.Stat.Stop_vor, Antrieb_Schleuse_PS:="DEPtoLP_Antriebe".MA0332.Stat.A_PS, Antrieb_plus_vor:=Bereich_4465.Dyn.Status.Trolley_kommt_in_Bereich, Antrieb_plus_start:=?, hStOk:=ErrAnz) + + +--- NW 18: Bereich 4465 (vor BST 1) --- + AN "7_HMI_Err_UH07_OB".System.Gesamt_Feueralarm_Halle3 + AN "7_HMI_Err_UH07_OB".System.Gesamt_Feueralarm_Halle4 + AN "7_HMI_Err_UH07_OB".System.BST1_Feueralarm + AN "7_HMI_Err_UH07_OB".System.BST1_Geschlossen + AN "7_HMI_Err_UH07_OB".System."BST1_Störung" + A Schleuse_3370.Dyn.Sk.Bereich_ok + = Fahren_Ok + +CALL FB "None" , (Bereichs_Nr:=4465, ErrQuit:=ErrQuit, B_BereichsAnfang:="BG4464", B_BereichsEnde:="BG4465", B_Zähl:="BG3367", B_Stau_raus:="DEPtoLP_Sensoren".Stau_BG3367.Stat.B_Akt, Start_Ok:=Fahren_Ok, Antrieb_Bereich_aktiv:="MA0333", Antrieb_plus_aktiv:="MA0062", RestZeit_Bereich_plus:=?, Antrieb_Bereich_vor:="DEPtoLP_Antriebe".MA0333.Stat.A_vor, Antrieb_Bereich_stop:="DEPtoLP_Antriebe".MA0333.Stat.Stop_vor, Error:=DB708.DBW480, Antrieb_Bereich_start:="DEPtoLP_Antriebe".MA0333.Stat.A_start, Antrieb_plus_vor:="DEPtoLP_Antriebe".MA0062.Stat.A_vor, Antrieb_plus_start:="DEPtoLP_Antriebe".MA0062.Stat.A_start, Antrieb_minus_vor:="DEPtoLP_Antriebe".MA0332.Stat.A_vor, hStOk:=ErrAnz) + + +--- NW 19: Störungen anzeigen UZ7401 --- + A ErrAnz + R ErrAnz + S "DOutbound_Bereich".A01_UZ7401.StOk_blinken + S "DOutbound_Bereich".A01_UC074.StOk_blinken + S "DOutbound_Bereich".A01_UH07.StOk_blinken + + +--- NW 20: Störungen quittieren UZ0701 --- + A "DOutbound_Bereich".A01_UZ0701.StOk_aktiv + O "DOutbound_Bereich".A01_UH07.StOk_aktiv + = ErrQuit + + +--- NW 21: Schleuse 3370 (hinter BST 1) --- +// Hinter BST freiräumen: + A Bereich_4465.Dyn.Status."Trolley_fährt_aus" + O + A "DEPtoLP_Sensoren".Stau_BG3367.Stat.B_Akt + AN "BG3370" + S "DEPtoLP_Antriebe".MA0062.Stat.A_vor + + A "DEPtoLP_Sensoren".Stau_BG3371.Stat.B_Akt + O "DEPtoLP_Sensoren".Stau_BG3372.Stat.B_Akt + O "DEPtoLP_Sensoren".Stau_BG3377.Stat.B_Akt // Stau hinter ASF im EG + = Stau_raus + +CALL FB "None" , (Schleusen_Nr:=3370, ErrQuit:=ErrQuit, B_VorSchleuse:="DEPtoLP_Sensoren".Stau_BG3367.Stat.B_Akt, B_InSchleuse:="BG3370", B_AusSchleuse:="BG3372", B_Stau_raus:=Stau_raus, Start_Ok:=1, Antrieb_Schleuse_aktiv:="MA0062", Antrieb_plus_aktiv:="MA0063", Schleuse_geöffnet:="MB3370", RestZeit_Bereich_plus:=Bereich_3373.Dyn.Restzeit, Y_Schleuse_Auf:="DEPtoLP_Zylinder".Schleuse_3370.Stat.Ast, Error:=DB708.DBW532, Antrieb_Schleuse_vor:="DEPtoLP_Antriebe".MA0062.Stat.A_vor, Antrieb_Schleuse_start:="DEPtoLP_Antriebe".MA0062.Stat.A_start, Antrieb_Schleuse_stop:="DEPtoLP_Antriebe".MA0062.Stat.Stop_vor, Antrieb_Schleuse_PS:="DEPtoLP_Antriebe".MA0062.Stat.A_PS, Antrieb_plus_vor:=Bereich_3373.Dyn.Status.Trolley_kommt_in_Bereich, Antrieb_plus_start:=?, hStOk:=ErrAnz) + + +--- NW 22: Störungen anzeigen UZ0701 --- + A ErrAnz + R ErrAnz + S "DOutbound_Bereich".A01_UZ0701.StOk_blinken + S "DOutbound_Bereich".A01_UH07.StOk_blinken + + +--- NW 23: Störungen quittieren UZ0701/0702 --- + A "DOutbound_Bereich".A01_UZ0701.StOk_aktiv + O "DOutbound_Bereich".A01_UZ0702.StOk_aktiv + O "DOutbound_Bereich".A01_UH07.StOk_aktiv + = ErrQuit + + +--- NW 24: Bereich 3373 (Runter ins EG) --- + A "MB3370" + A "BG3372" + = B_vor_Schleuse + + A "DEPtoLP_Sensoren".Stau_BG3376.Stat.B_Akt + O "DEPtoLP_Sensoren".Stau_BG3377.Stat.B_Akt + = Stau_raus + +CALL FB "None" , (Bereichs_Nr:=3373, ErrQuit:=ErrQuit, B_BereichsAnfang:=B_vor_Schleuse, B_BereichsEnde:="BG3373", B_Zähl:="BG3377", B_Stau_raus:=Stau_raus, Start_Ok:=1, Antrieb_Bereich_aktiv:="MA0063", Antrieb_plus_aktiv:="MA0064", RestZeit_Bereich_plus:=?, Antrieb_Bereich_vor:="DEPtoLP_Antriebe".MA0063.Stat.A_vor, Antrieb_Bereich_stop:="DEPtoLP_Antriebe".MA0063.Stat.Stop_vor, Error:=DB708.DBW456, Antrieb_Bereich_start:="DEPtoLP_Antriebe".MA0063.Stat.A_start, Antrieb_plus_vor:="DEPtoLP_Antriebe".MA0064.Stat.A_vor, Antrieb_plus_start:="DEPtoLP_Antriebe".MA0064.Stat.A_start, Antrieb_minus_vor:="DEPtoLP_Antriebe".MA0062.Stat.A_vor, hStOk:=ErrAnz) + + +--- NW 25: Störungen anzeigen UZ0701/0702 --- + A ErrAnz + R ErrAnz + S "DOutbound_Bereich".A01_UZ0701.StOk_blinken + S "DOutbound_Bereich".A01_UZ0702.StOk_blinken + S "DOutbound_Bereich".A01_UH07.StOk_blinken + + +--- NW 26: Störungen quittieren UZ0702 --- + A "DOutbound_Bereich".A01_UZ0702.StOk_aktiv + O "DOutbound_Bereich".A01_UH07.StOk_aktiv + = ErrQuit + + +--- NW 27: Schleuse 3303 --- +CALL FB "None" , (Schleusen_Nr:=3303, ErrQuit:=ErrQuit, B_VorSchleuse:="BG3377", B_InSchleuse:="BG3303", B_AusSchleuse:="BG3304", B_Stau_raus:="DEPtoLP_Sensoren".Stau_BG3304.Stat.B_Akt, Start_Ok:=1, Antrieb_Schleuse_aktiv:="MA0064", Antrieb_plus_aktiv:="MA0064", Schleuse_geöffnet:="MB3303", RestZeit_Bereich_plus:=?, Y_Schleuse_Auf:="DEPtoLP_Zylinder".Schleuse_3303.Stat.Ast, Error:=DB708.DBW522, Antrieb_Schleuse_vor:="DEPtoLP_Antriebe".MA0064.Stat.A_vor, Antrieb_Schleuse_start:="DEPtoLP_Antriebe".MA0064.Stat.A_start, Antrieb_Schleuse_stop:="DEPtoLP_Antriebe".MA0064.Stat.Stop_vor, Antrieb_Schleuse_PS:="DEPtoLP_Antriebe".MA0064.Stat.A_PS, Antrieb_plus_vor:=?, Antrieb_plus_start:=?, hStOk:=ErrAnz) // wie oben + + +--- NW 28: Störungen anzeigen UZ0702 --- + A ErrAnz + R ErrAnz + S "DOutbound_Bereich".A01_UZ0702.StOk_blinken + S "DOutbound_Bereich".A01_UH07.StOk_blinken + + +--- NW 29: Ende --- + BE + diff --git a/=A01+UH07-KF00/Programmbausteine/Anlage/4_EPtoLP/Omnifahren_EPtoLP/EPtoLP_Ziel_FC.awl b/=A01+UH07-KF00/Programmbausteine/Anlage/4_EPtoLP/Omnifahren_EPtoLP/EPtoLP_Ziel_FC.awl new file mode 100644 index 0000000..c858397 --- /dev/null +++ b/=A01+UH07-KF00/Programmbausteine/Anlage/4_EPtoLP/Omnifahren_EPtoLP/EPtoLP_Ziel_FC.awl @@ -0,0 +1,74 @@ +=== FC 4181: EPtoLP_Ziel_FC [STL] === +INTERFACE: + Input: + Output: + InOut: + Temp: + Ziel_hex : Word + Ziel_int : Int + Zielebene : Word + Error : Byte + Position : Int + Lager_DB : Int + Lager_DW : Int + AR1Zeiger : DWord // Statt AR1 (ging nur bis DB-Länge <= 8191 Bytes) + AR1Start : DInt // Startwert mit Offset 0 + SSDW : Int + EndZiel : Word + Variante : Int + AbrufID : DInt + Fahrlisten_TrolleyID : DInt + Fahrlisten_AbrufID : DInt + Fahrlisten_Lager : Int + Trolley_unbekannt : Bool // Trolley ist nicht in DL + Express_Abruf : Bool + Constant: + Return: + Ret_Val : Void + +--- NW 1: Rückmeldung --- + SET // Rückmeldungen erst mal resetten + R "M180.6" // Weiterfahrt von Ziel-FC erlaubt + + +--- NW 2: Bereich 4465: (BST 1) --- + L "MW190" + L 4465 // Aufruf von Schleuse XXXX? + <>I // Nein! + JC X4465E + + SET + S "M180.6" // Weiterfahrt ist erlaubt + + BEU + +X4465E: NOP 0 + + +--- NW 3: Schleuse 4466: (Vor Einfahrt ByPass) --- + L "MW190" + L 4466 // Aufruf von Schleuse XXXX? + <>I // Nein! + JC X4466E + +// Quell-Steuerung: + L "DVPtoEP_OmniFahren".Weiche_4445.Dyn.Weichen_Ziel + L 16#4461 // Fahren Trolleys zu BG4461? + ==I // Ja! + O "MB4445" // Weiche ist auf Abzweig + O "DVPtoEP_OmniFahren".Weiche_4445.Dyn.Status.Reset_aktiv + BEC // Warten ! + + AN "MB4445" // Weiche Einfahrt ByPass + AN "MB4457" + AN "DEPtoLP_Sensoren".Stau_BG4461.Stat.B_Akt + S "M180.6" // Weiterfahrt ist erlaubt + + BEU + +X4466E: NOP 0 + + +--- NW 4: Ende --- + BE + diff --git a/=A01+UH07-KF00/Programmbausteine/Anlage/5_Leerpuffer/Basics/DLP_Sensoren.awl b/=A01+UH07-KF00/Programmbausteine/Anlage/5_Leerpuffer/Basics/DLP_Sensoren.awl new file mode 100644 index 0000000..73649ac --- /dev/null +++ b/=A01+UH07-KF00/Programmbausteine/Anlage/5_Leerpuffer/Basics/DLP_Sensoren.awl @@ -0,0 +1,18 @@ +=== InstanceDB 5190: DLP_Sensoren [DB] === +INTERFACE: + Input: + Output: + InOut: + Static: + Stau_LP1 : "MSensoren" + Stau_LP2 : "MSensoren" + Stau_LP3 : "MSensoren" + Stau_LP4 : "MSensoren" + Stau_LP5 : "MSensoren" + Stau_LP6 : "MSensoren" + Stau_LP7 : "MSensoren" + Stau_LP8 : "MSensoren" + Stau_LP9 : "MSensoren" + Stau_LP10 : "MSensoren" + Stau_BG3322 : "MSensoren" + Stau_BG3327 : "MSensoren" diff --git a/=A01+UH07-KF00/Programmbausteine/Anlage/5_Leerpuffer/Basics/DLP_Zylinder.awl b/=A01+UH07-KF00/Programmbausteine/Anlage/5_Leerpuffer/Basics/DLP_Zylinder.awl new file mode 100644 index 0000000..1761350 --- /dev/null +++ b/=A01+UH07-KF00/Programmbausteine/Anlage/5_Leerpuffer/Basics/DLP_Zylinder.awl @@ -0,0 +1,27 @@ +=== InstanceDB 5192: DLP_Zylinder [DB] === +INTERFACE: + Input: + Output: + InOut: + Static: + Sorter_3305 : "MZylinder" + Weiche_LP1 : "MZylinder" + Weiche_LP2 : "MZylinder" + Weiche_LP3 : "MZylinder" + Weiche_LP4 : "MZylinder" + Weiche_LP5 : "MZylinder" + Weiche_LP6 : "MZylinder" + Weiche_LP7 : "MZylinder" + Weiche_LP8 : "MZylinder" + Weiche_LP9 : "MZylinder" + Weiche_LP10 : "MZylinder" + Schleuse_Ausfahrt_LP1 : "MZylinder" + Schleuse_Ausfahrt_LP2 : "MZylinder" + Schleuse_Ausfahrt_LP3 : "MZylinder" + Schleuse_Ausfahrt_LP4 : "MZylinder" + Schleuse_Ausfahrt_LP5 : "MZylinder" + Schleuse_Ausfahrt_LP6 : "MZylinder" + Schleuse_Ausfahrt_LP7 : "MZylinder" + Schleuse_Ausfahrt_LP8 : "MZylinder" + Schleuse_Ausfahrt_LP9 : "MZylinder" + Schleuse_Ausfahrt_LP10 : "MZylinder" diff --git a/=A01+UH07-KF00/Programmbausteine/Anlage/5_Leerpuffer/Basics/LP_Sensoren.awl b/=A01+UH07-KF00/Programmbausteine/Anlage/5_Leerpuffer/Basics/LP_Sensoren.awl new file mode 100644 index 0000000..86db5d0 --- /dev/null +++ b/=A01+UH07-KF00/Programmbausteine/Anlage/5_Leerpuffer/Basics/LP_Sensoren.awl @@ -0,0 +1,82 @@ +=== FB 5190: LP_Sensoren [STL] === +INTERFACE: + Input: + Output: + InOut: + Static: + Stau_LP1 : "MSensoren" + Stau_LP2 : "MSensoren" + Stau_LP3 : "MSensoren" + Stau_LP4 : "MSensoren" + Stau_LP5 : "MSensoren" + Stau_LP6 : "MSensoren" + Stau_LP7 : "MSensoren" + Stau_LP8 : "MSensoren" + Stau_LP9 : "MSensoren" + Stau_LP10 : "MSensoren" + Stau_BG3322 : "MSensoren" // Stau am Sensor Einfahrt MA0065 + Stau_BG3327 : "MSensoren" // Stau am Sensor Einfahrt MA0065 + Temp: + T_Ein : Int // Vorgabe Einschaltverzögerung + T_Aus : Int // Zwischenspeicher Ausschaltverzögerung + F1 : Bool // Geschwindigkeit 1 aktiviert + F2 : Bool // Geschwindigkeit 2 aktiviert + F3 : Bool // Geschwindigkeit 3 aktiviert + ESensor : Bool // Sensoren + Antrieb : Bool + VReal : Real // GeschwindigkeitinReal + Zeit : Int // Zeit für Ausschaltverzögerung LT1100 + Aktiv : Bool // Zeit aktivieren + Constant: + +--- NW 1: Sensoren entprellen --- +CALL FB "None" , (ESensor:="BG3320", T_Ein:=01, T_Aus:=11, tein_aktiv:=TRUE, taus_aktiv:=TRUE) + + +--- NW 2: Sensoren entprellen --- +CALL FB "None" , (ESensor:="BG3317", T_Ein:=01, T_Aus:=11, tein_aktiv:=TRUE, taus_aktiv:=TRUE) + + +--- NW 3: Sensoren entprellen --- +CALL FB "None" , (ESensor:="BG3316", T_Ein:=01, T_Aus:=11, tein_aktiv:=TRUE, taus_aktiv:=TRUE) + + +--- NW 4: Sensoren entprellen --- +CALL FB "None" , (ESensor:="BG3315", T_Ein:=01, T_Aus:=11, tein_aktiv:=TRUE, taus_aktiv:=TRUE) + + +--- NW 5: Sensoren entprellen --- +CALL FB "None" , (ESensor:="BG3314", T_Ein:=01, T_Aus:=11, tein_aktiv:=TRUE, taus_aktiv:=TRUE) + + +--- NW 6: Sensoren entprellen --- +CALL FB "None" , (ESensor:="BG3313", T_Ein:=01, T_Aus:=11, tein_aktiv:=TRUE, taus_aktiv:=TRUE) + + +--- NW 7: Sensoren entprellen --- +CALL FB "None" , (ESensor:="BG3312", T_Ein:=01, T_Aus:=11, tein_aktiv:=TRUE, taus_aktiv:=TRUE) + + +--- NW 8: Sensoren entprellen --- +CALL FB "None" , (ESensor:="BG3311", T_Ein:=01, T_Aus:=11, tein_aktiv:=TRUE, taus_aktiv:=TRUE) + + +--- NW 9: Sensoren entprellen --- +CALL FB "None" , (ESensor:="BG3310", T_Ein:=01, T_Aus:=11, tein_aktiv:=TRUE, taus_aktiv:=TRUE) + + +--- NW 10: Sensoren entprellen --- +CALL FB "None" , (ESensor:="BG3307", T_Ein:=01, T_Aus:=11, tein_aktiv:=TRUE, taus_aktiv:=TRUE) + + +--- NW 11: Sensoren entprellen --- +CALL FB "None" , (ESensor:="BG3322", T_Ein:=80, T_Aus:=11, tein_aktiv:=TRUE, taus_aktiv:=TRUE) + + +--- NW 12: Sensoren entprellen --- +CALL FB "None" , (ESensor:="BG3327", T_Ein:=1, T_Aus:=11, tein_aktiv:=TRUE, taus_aktiv:=TRUE) + + +--- NW 13: Ende --- + BE + diff --git a/=A01+UH07-KF00/Programmbausteine/Anlage/5_Leerpuffer/Basics/LP_Zylinder.awl b/=A01+UH07-KF00/Programmbausteine/Anlage/5_Leerpuffer/Basics/LP_Zylinder.awl new file mode 100644 index 0000000..a68dc2e --- /dev/null +++ b/=A01+UH07-KF00/Programmbausteine/Anlage/5_Leerpuffer/Basics/LP_Zylinder.awl @@ -0,0 +1,130 @@ +=== FB 5192: LP_Zylinder [STL] === +INTERFACE: + Input: + Output: + InOut: + Static: + Sorter_3305 : "MZylinder" // + Weiche_LP1 : "MZylinder" // + Weiche_LP2 : "MZylinder" + Weiche_LP3 : "MZylinder" + Weiche_LP4 : "MZylinder" + Weiche_LP5 : "MZylinder" + Weiche_LP6 : "MZylinder" + Weiche_LP7 : "MZylinder" + Weiche_LP8 : "MZylinder" + Weiche_LP9 : "MZylinder" + Weiche_LP10 : "MZylinder" + Schleuse_Ausfahrt_LP1 : "MZylinder" // + Schleuse_Ausfahrt_LP2 : "MZylinder" + Schleuse_Ausfahrt_LP3 : "MZylinder" + Schleuse_Ausfahrt_LP4 : "MZylinder" + Schleuse_Ausfahrt_LP5 : "MZylinder" + Schleuse_Ausfahrt_LP6 : "MZylinder" + Schleuse_Ausfahrt_LP7 : "MZylinder" + Schleuse_Ausfahrt_LP8 : "MZylinder" + Schleuse_Ausfahrt_LP9 : "MZylinder" + Schleuse_Ausfahrt_LP10 : "MZylinder" + Temp: + Auto : Bool // Automatik ist aktiv + Hand : Bool // Hand ist aktiv + ZylAst : Bool // Zylinder ansteuern + Constant: + +--- NW 1: Übergabe des Bereichstatus System UH07/A01 --- + A "DOutbound_Bereich".A01_UH07.Automatik + AN "DOutbound_Bereich".A01_UH07.Handbetrieb + = Auto + + A "DOutbound_Bereich".A01_UH07.BereichErr + AN "SGes".Simulation_ohne_HW_aktiv + JC Next // Zylinder-Stellung nicht mehr ändern + + +--- NW 2: Schleuse_3305 --- +CALL FB "None" , (Automatik:=Auto, Handbetrieb:=FALSE, T_Ast:=0, T_Gst:=5, ZylAst:="MB3305", ZylGst:=?) + + +--- NW 3: Weiche_LP1 --- +CALL FB "None" , (Automatik:=Auto, Handbetrieb:=FALSE, T_Ast:=0, T_Gst:=5, ZylAst:="MB3320", ZylGst:=?) + + +--- NW 4: Weiche_LP2 --- +CALL FB "None" , (Automatik:=Auto, Handbetrieb:=FALSE, T_Ast:=0, T_Gst:=5, ZylAst:="MB3317", ZylGst:=?) + + +--- NW 5: Weiche_LP3 --- +CALL FB "None" , (Automatik:=Auto, Handbetrieb:=FALSE, T_Ast:=0, T_Gst:=5, ZylAst:="MB3316", ZylGst:=?) + + +--- NW 6: Weiche_LP4 --- +CALL FB "None" , (Automatik:=Auto, Handbetrieb:=FALSE, T_Ast:=0, T_Gst:=5, ZylAst:="MB3315", ZylGst:=?) + + +--- NW 7: Weiche_LP5 --- +CALL FB "None" , (Automatik:=Auto, Handbetrieb:=FALSE, T_Ast:=0, T_Gst:=5, ZylAst:="MB3314", ZylGst:=?) + + +--- NW 8: Weiche_LP6 --- +CALL FB "None" , (Automatik:=Auto, Handbetrieb:=FALSE, T_Ast:=0, T_Gst:=5, ZylAst:="MB3313", ZylGst:=?) + + +--- NW 9: Weiche_LP7 --- +CALL FB "None" , (Automatik:=Auto, Handbetrieb:=FALSE, T_Ast:=0, T_Gst:=5, ZylAst:="MB3312", ZylGst:=?) + + +--- NW 10: Weiche_LP8 --- +CALL FB "None" , (Automatik:=Auto, Handbetrieb:=FALSE, T_Ast:=0, T_Gst:=5, ZylAst:="MB3311", ZylGst:=?) + + +--- NW 11: Weiche_LP9 --- +CALL FB "None" , (Automatik:=Auto, Handbetrieb:=FALSE, T_Ast:=0, T_Gst:=5, ZylAst:="MB3310", ZylGst:=?) + + +--- NW 12: Weiche_LP10 --- +CALL FB "None" , (Automatik:=Auto, Handbetrieb:=FALSE, T_Ast:=0, T_Gst:=5, ZylAst:=?, ZylGst:=?) + + +--- NW 13: Schleuse_Ausfahrt_LP1 --- +CALL FB "None" , (Automatik:=Auto, Handbetrieb:=FALSE, T_Ast:=0, T_Gst:=5, ZylAst:="MB3341", ZylGst:=?) + + +--- NW 14: Schleuse_Ausfahrt_LP2 --- +CALL FB "None" , (Automatik:=Auto, Handbetrieb:=FALSE, T_Ast:=0, T_Gst:=5, ZylAst:="MB3340", ZylGst:=?) + + +--- NW 15: Schleuse_Ausfahrt_LP3 --- +CALL FB "None" , (Automatik:=Auto, Handbetrieb:=FALSE, T_Ast:=0, T_Gst:=5, ZylAst:="MB3337", ZylGst:=?) + + +--- NW 16: Schleuse_Ausfahrt_LP4 --- +CALL FB "None" , (Automatik:=Auto, Handbetrieb:=FALSE, T_Ast:=0, T_Gst:=5, ZylAst:="MB3336", ZylGst:=?) + + +--- NW 17: Schleuse_Ausfahrt_LP5 --- +CALL FB "None" , (Automatik:=Auto, Handbetrieb:=FALSE, T_Ast:=0, T_Gst:=5, ZylAst:="MB3335", ZylGst:=?) + + +--- NW 18: Schleuse_Ausfahrt_LP6 --- +CALL FB "None" , (Automatik:=Auto, Handbetrieb:=FALSE, T_Ast:=0, T_Gst:=5, ZylAst:="MB3334", ZylGst:=?) + + +--- NW 19: Schleuse_Ausfahrt_LP7 --- +CALL FB "None" , (Automatik:=Auto, Handbetrieb:=FALSE, T_Ast:=0, T_Gst:=5, ZylAst:="MB3333", ZylGst:=?) + + +--- NW 20: Schleuse_Ausfahrt_LP8 --- +CALL FB "None" , (Automatik:=Auto, Handbetrieb:=FALSE, T_Ast:=0, T_Gst:=5, ZylAst:="MB3332", ZylGst:=?) + + +--- NW 21: Schleuse_Ausfahrt_LP9 --- +CALL FB "None" , (Automatik:=Auto, Handbetrieb:=FALSE, T_Ast:=0, T_Gst:=5, ZylAst:="MB3331", ZylGst:=?) + + +--- NW 22: Schleuse_Ausfahrt_LP10 --- +CALL FB "None" , (Automatik:=Auto, Handbetrieb:=FALSE, T_Ast:=0, T_Gst:=5, ZylAst:="MB3330", ZylGst:=?) + + +--- NW 23: Ende --- +Next: BE + diff --git a/=A01+UH07-KF00/Programmbausteine/Anlage/5_Leerpuffer/LP_Bereich.awl b/=A01+UH07-KF00/Programmbausteine/Anlage/5_Leerpuffer/LP_Bereich.awl new file mode 100644 index 0000000..13e7403 --- /dev/null +++ b/=A01+UH07-KF00/Programmbausteine/Anlage/5_Leerpuffer/LP_Bereich.awl @@ -0,0 +1,30 @@ +=== FC 5100: LP_Bereich [STL] === +INTERFACE: + Input: + Output: + InOut: + Temp: + Constant: + Return: + Ret_Val : Void + +--- NW 1: Durchfahr- / Saugmodus --- +// In LeerPufferStrecken [FB5431] /Nw8ff + +--- NW 2: Baustein-Aufrufe --- +CALL FB "LP_Sensoren" , + +CALL FB "LP_OmniFahren" , + +CALL FB "LeerPufferStrecken" , + +CALL FB "LP_Sorter" , + +CALL FB "LP_Auslagern" , + +CALL FB "LP_Zylinder" , + + +--- NW 3: Ende --- + BE + diff --git a/=A01+UH07-KF00/Programmbausteine/Anlage/5_Leerpuffer/Omnifahren_Leerpuffer/DLP_OmniFahren.awl b/=A01+UH07-KF00/Programmbausteine/Anlage/5_Leerpuffer/Omnifahren_Leerpuffer/DLP_OmniFahren.awl new file mode 100644 index 0000000..795407f --- /dev/null +++ b/=A01+UH07-KF00/Programmbausteine/Anlage/5_Leerpuffer/Omnifahren_Leerpuffer/DLP_OmniFahren.awl @@ -0,0 +1,7 @@ +=== InstanceDB 5128: DLP_OmniFahren [DB] === +INTERFACE: + Input: + Output: + InOut: + Static: + Schleuse_3305 : "MHMOmniSchleuse" diff --git a/=A01+UH07-KF00/Programmbausteine/Anlage/5_Leerpuffer/Omnifahren_Leerpuffer/LP_Draussen_FC.awl b/=A01+UH07-KF00/Programmbausteine/Anlage/5_Leerpuffer/Omnifahren_Leerpuffer/LP_Draussen_FC.awl new file mode 100644 index 0000000..e9e7a6a --- /dev/null +++ b/=A01+UH07-KF00/Programmbausteine/Anlage/5_Leerpuffer/Omnifahren_Leerpuffer/LP_Draussen_FC.awl @@ -0,0 +1,37 @@ +=== FC 5182: LP_Draussen_FC [STL] === +INTERFACE: + Input: + Output: + InOut: + Temp: + Constant: + Return: + Ret_Val : Void + +--- NW 1: Rückmeldung --- + SET // Rückmeldungen erst mal resetten + R "M180.6" // Weiterfahrt von Ziel-FC erlaubt + + +--- NW 2: Schleuse 3305 (vor Sorter LP): Ausgefahren ? --- + L "MW190" + L 3305 // Aufruf von Schleuse 3305 ? + <>I // Nein! + JC X3305E + +CALL FC "Reservierung_in_Puffer_eintragen" (TrolleyID:="DLP_Sorter".Sorter_MB3305.Dyn.Scanner.Rec_IDX, Ziel:="DLP_Sorter".Sorter_MB3305.Dyn.Scanner.Rec_DEST_Ziel, ShopGroup:=DINT#0, Gesamt_Trolley_DL:=0) + +// Daten in Sep 3305 löschen: + L DINT#0 + T "DLP_Sorter".Sorter_MB3305.Dyn.Scanner.Rec_IDX // IDX + L 0 + T "DLP_Sorter".Sorter_MB3305.Dyn.Scanner.Rec_DEST_Ziel + + BEU + +X3305E: NOP 0 + + +--- NW 3: Ende --- + BE + diff --git a/=A01+UH07-KF00/Programmbausteine/Anlage/5_Leerpuffer/Omnifahren_Leerpuffer/LP_OmniFahren.awl b/=A01+UH07-KF00/Programmbausteine/Anlage/5_Leerpuffer/Omnifahren_Leerpuffer/LP_OmniFahren.awl new file mode 100644 index 0000000..436dfb2 --- /dev/null +++ b/=A01+UH07-KF00/Programmbausteine/Anlage/5_Leerpuffer/Omnifahren_Leerpuffer/LP_OmniFahren.awl @@ -0,0 +1,62 @@ +=== FB 5128: LP_OmniFahren [STL] === +INTERFACE: + Input: + Output: + InOut: + Static: + Schleuse_3305 : "MHMOmniSchleuse" + Temp: + ErrQuit : Bool + ErrAnz : Bool + Stau_raus : Bool + Start_ok : Bool + B_aktiv : Bool + B_vor_Schleuse : Bool + B_nach_Schleuse : Bool + Antrieb_aktiv : Bool + Antrieb_start : Bool + Antrieb_stop : Bool + Fahren_Ok : Bool + Antrieb_nicht_stoppen : Bool + Constant: + +--- NW 1: Systemzeug --- +// Verschiedene Bereiche: + A "DOutbound_Bereich".A01_UH07.AnlageEin + = Schleuse_3305.Dyn.Sk.Auto_akt + + AN "DOutbound_Bereich".A01_UH07.BereichErr + = Schleuse_3305.Dyn.Sk.Bereich_ok + + +--- NW 2: Störungen quittieren UZ0702 --- + A "DOutbound_Bereich".A01_UZ0702.StOk_aktiv + O "DOutbound_Bereich".A01_UH07.StOk_aktiv + = ErrQuit + + +--- NW 3: Schleuse 3305 --- +CALL FB "None" , (Schleusen_Nr:=3305, ErrQuit:=ErrQuit, B_VorSchleuse:="BG3304", B_InSchleuse:="BG3305", B_AusSchleuse:=?, B_Stau_raus:=?, Start_Ok:=?, Antrieb_Schleuse_aktiv:="MA0064", Antrieb_plus_aktiv:=?, Schleuse_geöffnet:="MB3305", RestZeit_Bereich_plus:=?, Y_Schleuse_Auf:=?, Error:=DB708.DBW524, Antrieb_Schleuse_vor:="DEPtoLP_Antriebe".MA0064.Stat.A_vor, Antrieb_Schleuse_start:="DEPtoLP_Antriebe".MA0064.Stat.A_start, Antrieb_Schleuse_stop:="DEPtoLP_Antriebe".MA0064.Stat.Stop_vor, Antrieb_Schleuse_PS:="DEPtoLP_Antriebe".MA0064.Stat.A_PS, Antrieb_plus_vor:=?, Antrieb_plus_start:=?, hStOk:=ErrAnz) // weiterfahrt über Sorter-Sep + + AN Schleuse_3305.Dyn.Status.Reset_aktiv + JC NoR3305 + + L DINT#0 + T "DLP_Sorter".Sorter_MB3305.Dyn.Scanner.Rec_IDX // IDX + L 0 + T "DLP_Sorter".Sorter_MB3305.Separator.Default_Ziel + T "DLP_Sorter".Sorter_MB3305.Dyn.Scanner.Rec_DEST_Ziel + +NoR3305: NOP 0 + + +--- NW 4: Störungen anzeigen UZ0702 --- + A ErrAnz + R ErrAnz + S "DOutbound_Bereich".A01_UZ0702.StOk_blinken + S "DOutbound_Bereich".A01_UH07.StOk_blinken + + +--- NW 5: Ende --- + BE + diff --git a/=A01+UH07-KF00/Programmbausteine/Anlage/5_Leerpuffer/Omnifahren_Leerpuffer/LP_Ziel_FC.awl b/=A01+UH07-KF00/Programmbausteine/Anlage/5_Leerpuffer/Omnifahren_Leerpuffer/LP_Ziel_FC.awl new file mode 100644 index 0000000..89a163c --- /dev/null +++ b/=A01+UH07-KF00/Programmbausteine/Anlage/5_Leerpuffer/Omnifahren_Leerpuffer/LP_Ziel_FC.awl @@ -0,0 +1,119 @@ +=== FC 5181: LP_Ziel_FC [STL] === +INTERFACE: + Input: + Output: + InOut: + Temp: + Ziel_hex : Word + Ziel_int : Int + Zielebene : Word + Error : Byte + Position : Int + Lager_DB : Int + Lager_DW : Int + AR1Zeiger : DWord // Statt AR1 (ging nur bis DB-Länge <= 8191 Bytes) + AR1Start : DInt // Startwert mit Offset 0 + SSDW : Int + EndZiel : Word + Variante : Int + AbrufID : DInt + Fahrlisten_TrolleyID : DInt + Fahrlisten_AbrufID : DInt + Fahrlisten_Lager : Int + Trolley_unbekannt : Bool // Trolley ist nicht in DL + Express_Abruf : Bool + Constant: + Return: + Ret_Val : Void + +--- NW 1: Rückmeldung --- + SET // Rückmeldungen erst mal resetten + R "M180.6" // Weiterfahrt von Ziel-FC erlaubt + + +--- NW 2: Schleuse 3305: Weiterfahren erlaubt ? (Sorter LP) --- + L "MW190" + L 3305 // Aufruf von Schleuse 3305 ? + <>I // Nein! + JC X3305E + + A "MB3305" + BEC + +// Leer-Puffer ermitteln: +CALL FC "Leerpuffer to Rein-Lager ermitteln" (Puffer:=Ziel_hex) + +// Ziel = Leer-Lager? + L Ziel_hex + L 16#f000 + AW + L 16#A000 // Ziel = Leer-Lager ? + ==I // Ja! + JC LagerOk_3305 + + BEU // Kein Lager frei! + +LagerOk_3305: L Ziel_hex + L 16#FF + AW + BTI // Damit Int 1-10 als Ziel ! + T Ziel_int + +// Check, ob Ziel-Lager Inilauf aktiv hat: + T "MW220" + +CALL FC "DatenOut" (SSDB:=275, SSDW:=0, PARA:=16#0000, SEARCHDATEN:=P#M220.0, RE_VAL:="MB199", OUTDATEN:=P#M220.0, Position:=Position) // Eintrag lesen + + L "MB199" + L 2#1111111 // Bit 7 ausblenden + AW + L 0 // Fehler vorhanden? + <>I // Ja + JC Egal + + L "MW224" + T Lager_DB + L "MW226" + T Lager_DW + ITD + T AR1Start // Startwert mit Offset 0 + + L AR1Start // Startwert mit Offset 0 + + DINT#70 // Offset Status (Bit 7: Inilauf) + SLD 3 + L 7 // Damit DBX_Bit 7 + OD + T AR1Zeiger // Statt Dyn.Bereichsstop (ging nur bis DB-Länge <= 8191 Bytes) + + OPN DB[Lager_DB] // Lager-DB öffnen + + A DBX [AR1Zeiger] // Lager hat Inilauf aktiv + BEC // Sonst kann der Inilauf nie beendet werden! + +Egal: L Ziel_int + T "DLP_Sorter".Sorter_MB3305.Separator.Default_Ziel + T "DLP_Sorter".Sorter_MB3305.Dyn.Scanner.Rec_DEST_Ziel + +// Pseudo-IDX übergeben: + L "DLP_Sorter".Sorter_MB3305.Dyn.Scanner.Rec_IDX // IDX + L DINT#0 // Daten schon erzeugt? + <>D // Ja! + BEC + + L "DLP_Sorter".Pseudo_IDX // Da kein Leser verbaut + L dint#1 + +D + T "DLP_Sorter".Pseudo_IDX + T "DLP_Sorter".Sorter_MB3305.Dyn.Scanner.Rec_IDX // IDX + + CLR // Wird über MSorterRein (FB5423/5) gestartet! + S "M180.6" // Weiterfahrt ist erlaubt + + BEU + +X3305E: NOP 0 + + +--- NW 3: Ende --- + BE + diff --git a/=A01+UH07-KF00/Programmbausteine/Anlage/5_Leerpuffer/PufferAuslagern/DLP_Auslagern.awl b/=A01+UH07-KF00/Programmbausteine/Anlage/5_Leerpuffer/PufferAuslagern/DLP_Auslagern.awl new file mode 100644 index 0000000..2406737 --- /dev/null +++ b/=A01+UH07-KF00/Programmbausteine/Anlage/5_Leerpuffer/PufferAuslagern/DLP_Auslagern.awl @@ -0,0 +1,11 @@ +=== InstanceDB 5429: DLP_Auslagern [DB] === +INTERFACE: + Input: + Output: + InOut: + Static: + Ausfahren_Ok : "MAusfahrFreigabe_neu" + Impuls_MB3321 : "MImpulsGeber" + Auslagern : Struct + Auslager_Puffer : Int + Trolley_markiert : Bool diff --git a/=A01+UH07-KF00/Programmbausteine/Anlage/5_Leerpuffer/PufferAuslagern/DLeerPufferStrecken.awl b/=A01+UH07-KF00/Programmbausteine/Anlage/5_Leerpuffer/PufferAuslagern/DLeerPufferStrecken.awl new file mode 100644 index 0000000..6c63a2d --- /dev/null +++ b/=A01+UH07-KF00/Programmbausteine/Anlage/5_Leerpuffer/PufferAuslagern/DLeerPufferStrecken.awl @@ -0,0 +1,40 @@ +=== InstanceDB 5431: DLeerPufferStrecken [DB] === +INTERFACE: + Input: + Output: + InOut: + Static: + LeerPuffer_01 : "MHMLeerpuffer" + LeerPuffer_02 : "MHMLeerpuffer" + LeerPuffer_03 : "MHMLeerpuffer" + LeerPuffer_04 : "MHMLeerpuffer" + LeerPuffer_05 : "MHMLeerpuffer" + LeerPuffer_06 : "MHMLeerpuffer" + LeerPuffer_07 : "MHMLeerpuffer" + LeerPuffer_08 : "MHMLeerpuffer" + LeerPuffer_09 : "MHMLeerpuffer" + LeerPuffer_10 : "MHMLeerpuffer" + Simulation : Struct + Gefahren_1 : Bool + Gefahren_2 : Bool + Gefahren_3 : Bool + Gefahren_4 : Bool + Gefahren_5 : Bool + Gefahren_6 : Bool + Gefahren_7 : Bool + Gefahren_8 : Bool + Gefahren_9 : Bool + Gefahren_10 : Bool + Ohne_PC_fahren : Bool + Ein_Leercheck_aktiv : Bool + DurchfahrModus : Struct + Anmelden : Bool + Aktiv : Bool + RestTrolleys : Int + Ok_Anzahl : Int + SaugModus : Struct + Flanke_Wartezeit : Bool + Wartezeit_aktiv : Bool + Timer_Wartenzeit : Int + Abruf_Puffer : Int + Ok_Anzahl : Int diff --git a/=A01+UH07-KF00/Programmbausteine/Anlage/5_Leerpuffer/PufferAuslagern/LP_Auslagern.awl b/=A01+UH07-KF00/Programmbausteine/Anlage/5_Leerpuffer/PufferAuslagern/LP_Auslagern.awl new file mode 100644 index 0000000..289d708 --- /dev/null +++ b/=A01+UH07-KF00/Programmbausteine/Anlage/5_Leerpuffer/PufferAuslagern/LP_Auslagern.awl @@ -0,0 +1,150 @@ +=== FB 5429: LP_Auslagern [STL] === +INTERFACE: + Input: + Output: + InOut: + Static: + Ausfahren_Ok : "MAusfahrFreigabe_neu" + Impuls_MB3321 : "MImpulsGeber" + Auslagern : Struct + Auslager_Puffer : Int + Trolley_markiert : Bool + Temp: + ErrQuit : Bool + Antrieb : Bool + Impuls : Bool + Error : Bool + Trolley_starten_ok : Bool + Puffer_DB : Int + Puffer_DW : Int + AR1Zeiger : DWord // Statt AR1 (ging nur bis DB-Länge <= 8191 Bytes) + AR1Start : DInt // Startwert mit Offset 0 + Constant: + +--- NW 1: Trolley aus Leerpuffer starten ok? --- + AN "DLP_Sensoren".Stau_BG3327.Stat.B_Akt // Stau in Steigung + A( + ON "DLP_Sensoren".Stau_BG3322.Stat.B_Akt + O "MB3342" + ) + = Trolley_starten_ok + + +--- NW 2: Trolleys aus Leerpuffer zur Sack-Beladung fahren --- + L Auslagern.Auslager_Puffer + L 0 // Bekannt ? + <>I // Ja ! + JC Ausgelagert + +// Puffer hat Inilauf und Trolley vorhanden -> Dieser Puffer fährst selbst aus + A "DLeerPufferStrecken".LeerPuffer_01.Dyn.Status.Leerpuffer_initialisieren + A "DLeerPufferStrecken".LeerPuffer_01.B_InSchleuse + O + A "DLeerPufferStrecken".LeerPuffer_02.Dyn.Status.Leerpuffer_initialisieren + A "DLeerPufferStrecken".LeerPuffer_02.B_InSchleuse + O + A "DLeerPufferStrecken".LeerPuffer_03.Dyn.Status.Leerpuffer_initialisieren + A "DLeerPufferStrecken".LeerPuffer_03.B_InSchleuse + O + A "DLeerPufferStrecken".LeerPuffer_04.Dyn.Status.Leerpuffer_initialisieren + A "DLeerPufferStrecken".LeerPuffer_04.B_InSchleuse + O + A "DLeerPufferStrecken".LeerPuffer_05.Dyn.Status.Leerpuffer_initialisieren + A "DLeerPufferStrecken".LeerPuffer_05.B_InSchleuse + O + A "DLeerPufferStrecken".LeerPuffer_06.Dyn.Status.Leerpuffer_initialisieren + A "DLeerPufferStrecken".LeerPuffer_06.B_InSchleuse + O + A "DLeerPufferStrecken".LeerPuffer_07.Dyn.Status.Leerpuffer_initialisieren + A "DLeerPufferStrecken".LeerPuffer_07.B_InSchleuse + O + A "DLeerPufferStrecken".LeerPuffer_08.Dyn.Status.Leerpuffer_initialisieren + A "DLeerPufferStrecken".LeerPuffer_08.B_InSchleuse + O + A "DLeerPufferStrecken".LeerPuffer_09.Dyn.Status.Leerpuffer_initialisieren + A "DLeerPufferStrecken".LeerPuffer_09.B_InSchleuse + O + A "DLeerPufferStrecken".LeerPuffer_10.Dyn.Status.Leerpuffer_initialisieren + A "DLeerPufferStrecken".LeerPuffer_10.B_InSchleuse + JC En01 + +CALL FC "Leerpuffer to Raus-Lager ermitteln" (Puffer:=Auslagern.Auslager_Puffer) + +Ausgelagert: CALL FC "PufferZeiger_ermitteln" (Puffer_X:=Auslagern.Auslager_Puffer, Puffer_DB:=Puffer_DB, Puffer_DW:=Puffer_DW, Error:=Error) + + A Error + R Auslagern.Trolley_markiert + JC En01 + +// Zeiger "Einen Leer-Trolley ausfahren" (71.4) ermitteln: + L Puffer_DW + ITD + T AR1Start // Startwert mit Offset 0 + + L AR1Start // Startwert mit Offset 0 + + DINT#71 // Offset für Status (2.Byte) + SLD 3 + L 4 // Damit DBX_Bit 71.4 + OD + T AR1Zeiger // Statt Dyn.Bereichsstop (ging nur bis DB-Länge <= 8191 Bytes) + +// Trolley zum Ausfahren schon markiert ?: + A Auslagern.Trolley_markiert + JCN Markieren // Negierter Sprung + + OPN DB[Puffer_DB] // Puffer-DB öffnen + + A DBX [AR1Zeiger] // Einen Trolley starten (71.4)/ Trolley noch nicht gestartet! + JC En01 + + SET + R Auslagern.Trolley_markiert + + L 0 // Nächsten Ausfahr-Puffer ermitteln + T Auslagern.Auslager_Puffer + + JU En01 + +// Platz vor Sack-Beladung frei?: +Markieren: AN Trolley_starten_ok + JC En01 + +// Trolley im Puffer zum Auslagern markieren: + OPN DB[Puffer_DB] // Puffer-DB öffnen + + SET + S DBX [AR1Zeiger] // Einen Trolley starten (70.2)/ Trolley noch nicht gestartet + S Auslagern.Trolley_markiert + +En01: NOP 0 + + +--- NW 3: Inkremente B über Zahnrad-Sensor --- + A "DOutbound_Bereich".A01_UZ0703.StOk_aktiv + O "DOutbound_Bereich".A01_UH07.StOk_aktiv + = ErrQuit + +CALL FB "None" , (Ink_DB:=?, B_Zaehlen:="BG3321", Antrieb_aktiv:="MA0065", Quit:=ErrQuit, Zeit_Signal_zu_lang:=?, Zeit_Kein_Signal:=?, Signal:=Impuls, Err_Kein_Signal:="7_HMI_Err_UH07_OB".Auslagerbereich_LeerPuffer.BG3321_Kein_Signal, Err_Signal_zu_lang:="7_HMI_Err_UH07_OB".Auslagerbereich_LeerPuffer.BG3321_Signal_zu_lang) + + A( + O "7_HMI_Err_UH07_OB".Auslagerbereich_LeerPuffer.BG3321_Kein_Signal + O "7_HMI_Err_UH07_OB".Auslagerbereich_LeerPuffer.BG3321_Signal_zu_lang + ) + AN ErrQuit + S "DLPtoHW_Antriebe".MA0065.Stat.Stop_vor + + A( + O "7_HMI_Err_UH07_OB".Auslagerbereich_LeerPuffer.BG3321_Kein_Signal + O "7_HMI_Err_UH07_OB".Auslagerbereich_LeerPuffer.BG3321_Signal_zu_lang + ) + S "DOutbound_Bereich".A01_UZ0703.StOk_blinken + S "DOutbound_Bereich".A01_UH07.StOk_blinken + + +--- NW 4: Ausfahr-Steuerung --- +CALL FB "None" , (Impuls:=Impuls, Vorbei_1:=?, Vorbei_2:=?, Vorbei_3:=?, Vorbei_4:=?, Vorbei_5:=?, Inks_Vorbei_1:=?, Inks_Vorbei_2:=?, Inks_Vorbei_3:=?, Inks_Vorbei_4:=?, Inks_Vorbei_5:=?, Antrieb_ein:="DLPtoHW_Antriebe".MA0065.Stat.A_start) + + +--- NW 5: Ende --- + BE + diff --git a/=A01+UH07-KF00/Programmbausteine/Anlage/5_Leerpuffer/PufferAuslagern/LeerPufferStrecken.awl b/=A01+UH07-KF00/Programmbausteine/Anlage/5_Leerpuffer/PufferAuslagern/LeerPufferStrecken.awl new file mode 100644 index 0000000..1191bb9 --- /dev/null +++ b/=A01+UH07-KF00/Programmbausteine/Anlage/5_Leerpuffer/PufferAuslagern/LeerPufferStrecken.awl @@ -0,0 +1,404 @@ +=== FB 5431: LeerPufferStrecken [STL] === +INTERFACE: + Input: + Output: + InOut: + Static: + LeerPuffer_01 : "MHMLeerpuffer" + LeerPuffer_02 : "MHMLeerpuffer" + LeerPuffer_03 : "MHMLeerpuffer" + LeerPuffer_04 : "MHMLeerpuffer" + LeerPuffer_05 : "MHMLeerpuffer" + LeerPuffer_06 : "MHMLeerpuffer" + LeerPuffer_07 : "MHMLeerpuffer" + LeerPuffer_08 : "MHMLeerpuffer" + LeerPuffer_09 : "MHMLeerpuffer" + LeerPuffer_10 : "MHMLeerpuffer" + Simulation : Struct + Gefahren_1 : Bool + Gefahren_2 : Bool + Gefahren_3 : Bool + Gefahren_4 : Bool + Gefahren_5 : Bool + Gefahren_6 : Bool + Gefahren_7 : Bool + Gefahren_8 : Bool + Gefahren_9 : Bool + Gefahren_10 : Bool + Ohne_PC_fahren : Bool + Ein_Leercheck_aktiv : Bool + DurchfahrModus : Struct + Anmelden : Bool + Aktiv : Bool + RestTrolleys : Int + Ok_Anzahl : Int := 3 // Bis zu dieser Anzahl von leeren Leerpuffern kein Pressen starten + SaugModus : Struct + Flanke_Wartezeit : Bool + Wartezeit_aktiv : Bool + Timer_Wartenzeit : Int + Abruf_Puffer : Int + Ok_Anzahl : Int := 5 // Bis zu dieser Anzahl von vollen Leerpuffern kein Saugen starten + Temp: + ErrQuit : Bool + ErrAnz : Bool + Antrieb : Bool + Stau : Bool + Start_Ok : Bool + SorterReset : Bool + A_Err : Char + B_Err : Char + C_Err : Char + D_Err : Char + Error : Byte + Position : Int + Lager_DB : Int + Lager_DW : Int + AR1Zeiger : DWord // Statt AR1 (ging nur bis DB-Länge <= 8191 Bytes) + AR1Start : DInt // Startwert mit Offset 0 + Quell_Puffer : Int + Constant: + +--- NW 1: Systemzeug --- + A "DOutbound_Bereich".A01_UH07.AnlageEin + = LeerPuffer_01.Dyn.Sk.Auto_akt + = LeerPuffer_02.Dyn.Sk.Auto_akt + = LeerPuffer_03.Dyn.Sk.Auto_akt + = LeerPuffer_04.Dyn.Sk.Auto_akt + = LeerPuffer_05.Dyn.Sk.Auto_akt + = LeerPuffer_06.Dyn.Sk.Auto_akt + = LeerPuffer_07.Dyn.Sk.Auto_akt + = LeerPuffer_08.Dyn.Sk.Auto_akt + = LeerPuffer_09.Dyn.Sk.Auto_akt + = LeerPuffer_10.Dyn.Sk.Auto_akt + + AN "DOutbound_Bereich".A01_UH07.BereichErr + = LeerPuffer_01.Dyn.Sk.Bereich_ok + = LeerPuffer_02.Dyn.Sk.Bereich_ok + = LeerPuffer_03.Dyn.Sk.Bereich_ok + = LeerPuffer_04.Dyn.Sk.Bereich_ok + = LeerPuffer_05.Dyn.Sk.Bereich_ok + = LeerPuffer_06.Dyn.Sk.Bereich_ok + = LeerPuffer_07.Dyn.Sk.Bereich_ok + = LeerPuffer_08.Dyn.Sk.Bereich_ok + = LeerPuffer_09.Dyn.Sk.Bereich_ok + = LeerPuffer_10.Dyn.Sk.Bereich_ok + +// Bereichshalt: + CLR // Nicht verbaut + R LeerPuffer_01.Dyn.Sk.Bereich_ok + + +--- NW 2: Puffer-Leer-Liste neu erstellen --- + A "DLLeerPuffer_leer".Reorganisieren + R "DLLeerPuffer_leer".Reorganisieren + JCN NixReoLL + +CALL FC "DatenReset" (SSDB:=500, SSDW:=0, RE_VAL:="MB199") + + SET + R "DLeerPufferStrecken".LeerPuffer_01.Status2.Eintrag_DL_Leerliste_erfolgt + R "DLeerPufferStrecken".LeerPuffer_02.Status2.Eintrag_DL_Leerliste_erfolgt + R "DLeerPufferStrecken".LeerPuffer_03.Status2.Eintrag_DL_Leerliste_erfolgt + R "DLeerPufferStrecken".LeerPuffer_04.Status2.Eintrag_DL_Leerliste_erfolgt + R "DLeerPufferStrecken".LeerPuffer_05.Status2.Eintrag_DL_Leerliste_erfolgt + R "DLeerPufferStrecken".LeerPuffer_06.Status2.Eintrag_DL_Leerliste_erfolgt + R "DLeerPufferStrecken".LeerPuffer_07.Status2.Eintrag_DL_Leerliste_erfolgt + R "DLeerPufferStrecken".LeerPuffer_08.Status2.Eintrag_DL_Leerliste_erfolgt + R "DLeerPufferStrecken".LeerPuffer_09.Status2.Eintrag_DL_Leerliste_erfolgt + R "DLeerPufferStrecken".LeerPuffer_10.Status2.Eintrag_DL_Leerliste_erfolgt + + JU Puffer + +NixReoLL: NOP 0 + + +--- NW 3: Puffer-Einfahr-Liste neu erstellen --- + A "DLLeerPuffer_einfahren".Reorganisieren + R "DLLeerPuffer_einfahren".Reorganisieren + JCN NixReoEL + +CALL FC "DatenReset" (SSDB:=501, SSDW:=0, RE_VAL:="MB199") + + SET + R "DLeerPufferStrecken".LeerPuffer_01.Status2.Eintrag_DL_Reinliste_erfolgt + R "DLeerPufferStrecken".LeerPuffer_02.Status2.Eintrag_DL_Reinliste_erfolgt + R "DLeerPufferStrecken".LeerPuffer_03.Status2.Eintrag_DL_Reinliste_erfolgt + R "DLeerPufferStrecken".LeerPuffer_04.Status2.Eintrag_DL_Reinliste_erfolgt + R "DLeerPufferStrecken".LeerPuffer_05.Status2.Eintrag_DL_Reinliste_erfolgt + R "DLeerPufferStrecken".LeerPuffer_06.Status2.Eintrag_DL_Reinliste_erfolgt + R "DLeerPufferStrecken".LeerPuffer_07.Status2.Eintrag_DL_Reinliste_erfolgt + R "DLeerPufferStrecken".LeerPuffer_08.Status2.Eintrag_DL_Reinliste_erfolgt + R "DLeerPufferStrecken".LeerPuffer_09.Status2.Eintrag_DL_Reinliste_erfolgt + R "DLeerPufferStrecken".LeerPuffer_10.Status2.Eintrag_DL_Reinliste_erfolgt + R "DLeerPufferStrecken".LeerPuffer_01.Status2.Auslagern_ist_aktiv + R "DLeerPufferStrecken".LeerPuffer_02.Status2.Auslagern_ist_aktiv + R "DLeerPufferStrecken".LeerPuffer_03.Status2.Auslagern_ist_aktiv + R "DLeerPufferStrecken".LeerPuffer_04.Status2.Auslagern_ist_aktiv + R "DLeerPufferStrecken".LeerPuffer_05.Status2.Auslagern_ist_aktiv + R "DLeerPufferStrecken".LeerPuffer_06.Status2.Auslagern_ist_aktiv + R "DLeerPufferStrecken".LeerPuffer_07.Status2.Auslagern_ist_aktiv + R "DLeerPufferStrecken".LeerPuffer_08.Status2.Auslagern_ist_aktiv + R "DLeerPufferStrecken".LeerPuffer_09.Status2.Auslagern_ist_aktiv + R "DLeerPufferStrecken".LeerPuffer_10.Status2.Auslagern_ist_aktiv + + JU Puffer + +NixReoEL: NOP 0 + + +--- NW 4: Puffer-Ausfahr-Liste neu erstellen --- + A "DLLeerPuffer_ausfahren".Reorganisieren + R "DLLeerPuffer_ausfahren".Reorganisieren + JCN NixReoAL + +CALL FC "DatenReset" (SSDB:=502, SSDW:=0, RE_VAL:="MB199") + + SET + R "DLeerPufferStrecken".LeerPuffer_01.Status2.Eintrag_Abrufliste_erfolgt + R "DLeerPufferStrecken".LeerPuffer_02.Status2.Eintrag_Abrufliste_erfolgt + R "DLeerPufferStrecken".LeerPuffer_03.Status2.Eintrag_Abrufliste_erfolgt + R "DLeerPufferStrecken".LeerPuffer_04.Status2.Eintrag_Abrufliste_erfolgt + R "DLeerPufferStrecken".LeerPuffer_05.Status2.Eintrag_Abrufliste_erfolgt + R "DLeerPufferStrecken".LeerPuffer_06.Status2.Eintrag_Abrufliste_erfolgt + R "DLeerPufferStrecken".LeerPuffer_07.Status2.Eintrag_Abrufliste_erfolgt + R "DLeerPufferStrecken".LeerPuffer_08.Status2.Eintrag_Abrufliste_erfolgt + R "DLeerPufferStrecken".LeerPuffer_09.Status2.Eintrag_Abrufliste_erfolgt + R "DLeerPufferStrecken".LeerPuffer_10.Status2.Eintrag_Abrufliste_erfolgt + + JU Puffer + +NixReoAL: NOP 0 + + +--- NW 5: AusLeerPuffer-Strecke hat Stau --- + A "DLP_Sensoren".Stau_BG3322.Stat.B_Akt + A "DLP_Sensoren".Stau_BG3327.Stat.B_Akt + = Stau + + +--- NW 6: Alle Puffer-Schleusen geschlossen --- +// Alle Puffer-Schleusen geschlossen? + L "AB333" + L 0 // Alle Puffer-Schleusen geschlossen? + ==I // Ja ! + AN "MB3340" + AN "MB3341" + = Start_Ok + + +--- NW 7: Ein Leercheck aktiv ? --- + A LeerPuffer_01.Dyn.Status.Leer_Check_aktiv + O LeerPuffer_02.Dyn.Status.Leer_Check_aktiv + O LeerPuffer_03.Dyn.Status.Leer_Check_aktiv + O LeerPuffer_04.Dyn.Status.Leer_Check_aktiv + O LeerPuffer_05.Dyn.Status.Leer_Check_aktiv + O LeerPuffer_06.Dyn.Status.Leer_Check_aktiv + O LeerPuffer_07.Dyn.Status.Leer_Check_aktiv + O LeerPuffer_08.Dyn.Status.Leer_Check_aktiv + O LeerPuffer_09.Dyn.Status.Leer_Check_aktiv + O LeerPuffer_10.Dyn.Status.Leer_Check_aktiv + = Ein_Leercheck_aktiv + + +--- NW 8: Leertrolleys ins Vollpuffer pressen --- + L "DLLeerPuffer_leer".Datenlistenkopf.AnzahlEintraege + L DurchfahrModus.Ok_Anzahl // bis zu dieser Anzahl kein Durchfahren starten + >=I + O Ein_Leercheck_aktiv + JC Platz_ok + + L DurchfahrModus.RestTrolleys + L 0 + >I + A( + O DurchfahrModus.Anmelden + O DurchfahrModus.Aktiv + ) + JC En04 + +// Trolleys zum Vollpuffer fahren: + L 18 + T DurchfahrModus.RestTrolleys + + SET + S DurchfahrModus.Anmelden + + JU En04 + +// Durchfahrmodus beenden: +Platz_ok: L DurchfahrModus.RestTrolleys + L 0 + ==I + ON DurchfahrModus.Aktiv + R DurchfahrModus.Anmelden + R DurchfahrModus.Aktiv + +En04: NOP 0 + + +--- NW 9: Wartezeit bis erneutes Trolley-Saugen sinnvoll (wegen Entfernung) --- + AN SaugModus.Wartezeit_aktiv + ON "1s-Impuls" + JC Wait + + L SaugModus.Timer_Wartenzeit + + -1 + T SaugModus.Timer_Wartenzeit + L 0 + >I + JC Wait + + SET + R SaugModus.Wartezeit_aktiv + + L 0 + T SaugModus.Abruf_Puffer + +Wait: NOP 0 + + +--- NW 10: Leertrolleys aus Vollpuffer saugen --- + L "DLLeerPuffer_ausfahren".Datenlistenkopf.AnzahlEintraege + L SaugModus.Ok_Anzahl // bis zu dieser Anzahl kein Saugen starten + >=I + O SaugModus.Wartezeit_aktiv + JC Trolleys_ok + +// DLShopGroup_abrufen auf leere Trolleys durchsuchen: + L DINT#-1 // ShopGroup -1 == Leerer Trolley + T "MD200" + +CALL FC "DatenOut" (SSDB:=102, SSDW:=0, PARA:=WORD#16#0202, SEARCHDATEN:=P#M200.0, RE_VAL:="MB199", OUTDATEN:=P#M220.0, Position:="MW196") + + L "MW220" // Puffer + L 101 // sinnvoll ? + I // Nein ! + ) + ON "M199.7" // Datensatz vorhanden + JC Trolleys_ok + + L "MW220" + T Quell_Puffer + +// Check, ob Quell-Lager bereit ist: +CALL FC "DatenOut" (SSDB:=275, SSDW:=0, PARA:=16#0000, SEARCHDATEN:=P#M220.0, RE_VAL:="MB199", OUTDATEN:=P#M220.0, Position:=Position) // Eintrag lesen + + L "MB199" + L 2#1111111 // Bit 7 ausblenden + AW + L 0 // Fehler vorhanden? + <>I // Ja + JC Trolleys_ok + + L "MW224" + T Lager_DB + L "MW226" + T Lager_DW + ITD + T AR1Start // Startwert mit Offset 0 + + L AR1Start // Startwert mit Offset 0 + + DINT#88 // Offset ShopGroup_OUT + SLD 3 + T AR1Zeiger // Statt Dyn.Bereichsstop (ging nur bis DB-Länge <= 8191 Bytes) + + OPN DB[Lager_DB] // Lager-DB öffnen + + L DBD [AR1Zeiger] // ShopGroup_OUT + L DINT#-1 // ShopGroup -1 == Leerer Trolley ? + <>D // Nein ! + JC Trolleys_ok + +// Im Quell-Puffer unten "Alles Ausfahren" setzen: + L AR1Start // Startwert mit Offset 0 + + DINT#29 // Offset Status2 (Highbyte 29) + SLD 3 + L 4 // Damit DBX_Bit 4 + OD + T AR1Zeiger // Statt Dyn.Bereichsstop (ging nur bis DB-Länge <= 8191 Bytes) + + OPN DB[Lager_DB] // Lager-DB öffnen + + SET + S DBX [AR1Zeiger] // Alles ausfahren_OUT + + L Quell_Puffer + T SaugModus.Abruf_Puffer + +// Wartezeit starten: + SET + S SaugModus.Wartezeit_aktiv + + L 360 // Wartezeit in Sekunden (6 Minuten) + T SaugModus.Timer_Wartenzeit + +Trolleys_ok: NOP 0 + + +--- NW 11: Störung quittieren UZ0703/UH07 --- +Puffer: A "DOutbound_Bereich".A01_UZ0703.StOk_aktiv + O "DOutbound_Bereich".A01_UH07.StOk_aktiv + = ErrQuit + + +--- NW 12: LeerPuffer 01 --- + SET + R ErrAnz + +CALL FB "None" , (LeerPuffer_Nr:=1, ErrQuit:=ErrQuit, B_LeerpufferEinfahrt:="BG3320", B_InSchleuse:="BG3341", B_AusSchleuse:="BG3322", B_Stau_raus_Out:=Stau, B_QuerTrolley_Out:=?, Antrieb_plus_aktiv:="MA0065", Schleuse_geöffnet:="MB3341", Y_Schleuse_Auf:="DLP_Zylinder".Schleuse_Ausfahrt_LP1.Stat.Ast, Error:=DB708.DBW126, Start_Ok:=Start_Ok, Antrieb_plus_vor:="DLPtoHW_Antriebe".MA0065.Stat.A_vor, Antrieb_plus_stoppen:="DLPtoHW_Antriebe".MA0065.Stat.Stop_vor, hStOk:=ErrAnz, Ausfahr_Inks:="DLP_Auslagern".Ausfahren_Ok.Dyn.Rest_Inks) + + +--- NW 13: LeerPuffer 02 --- +CALL FB "None" , (LeerPuffer_Nr:=2, ErrQuit:=ErrQuit, B_LeerpufferEinfahrt:="BG3317", B_InSchleuse:="BG3340", B_AusSchleuse:="BG3322", B_Stau_raus_Out:=Stau, B_QuerTrolley_Out:=?, Antrieb_plus_aktiv:="MA0065", Schleuse_geöffnet:="MB3340", Y_Schleuse_Auf:="DLP_Zylinder".Schleuse_Ausfahrt_LP2.Stat.Ast, Error:=DB708.DBW128, Start_Ok:=Start_Ok, Antrieb_plus_vor:="DLPtoHW_Antriebe".MA0065.Stat.A_vor, Antrieb_plus_stoppen:="DLPtoHW_Antriebe".MA0065.Stat.Stop_vor, hStOk:=ErrAnz, Ausfahr_Inks:="DLP_Auslagern".Ausfahren_Ok.Dyn.Rest_Inks) + + +--- NW 14: LeerPuffer 03 --- +CALL FB "None" , (LeerPuffer_Nr:=3, ErrQuit:=ErrQuit, B_LeerpufferEinfahrt:="BG3316", B_InSchleuse:="BG3337", B_AusSchleuse:="BG3322", B_Stau_raus_Out:=Stau, B_QuerTrolley_Out:=?, Antrieb_plus_aktiv:="MA0065", Schleuse_geöffnet:="MB3337", Y_Schleuse_Auf:="DLP_Zylinder".Schleuse_Ausfahrt_LP3.Stat.Ast, Error:=DB708.DBW130, Start_Ok:=Start_Ok, Antrieb_plus_vor:="DLPtoHW_Antriebe".MA0065.Stat.A_vor, Antrieb_plus_stoppen:="DLPtoHW_Antriebe".MA0065.Stat.Stop_vor, hStOk:=ErrAnz, Ausfahr_Inks:="DLP_Auslagern".Ausfahren_Ok.Dyn.Rest_Inks) + + +--- NW 15: LeerPuffer 04 --- +CALL FB "None" , (LeerPuffer_Nr:=4, ErrQuit:=ErrQuit, B_LeerpufferEinfahrt:="BG3315", B_InSchleuse:="BG3336", B_AusSchleuse:="BG3322", B_Stau_raus_Out:=Stau, B_QuerTrolley_Out:=?, Antrieb_plus_aktiv:="MA0065", Schleuse_geöffnet:="MB3336", Y_Schleuse_Auf:="DLP_Zylinder".Schleuse_Ausfahrt_LP4.Stat.Ast, Error:=DB708.DBW132, Start_Ok:=Start_Ok, Antrieb_plus_vor:="DLPtoHW_Antriebe".MA0065.Stat.A_vor, Antrieb_plus_stoppen:="DLPtoHW_Antriebe".MA0065.Stat.Stop_vor, hStOk:=ErrAnz, Ausfahr_Inks:="DLP_Auslagern".Ausfahren_Ok.Dyn.Rest_Inks) + + +--- NW 16: LeerPuffer 05 --- +CALL FB "None" , (LeerPuffer_Nr:=5, ErrQuit:=ErrQuit, B_LeerpufferEinfahrt:="BG3314", B_InSchleuse:="BG3335", B_AusSchleuse:=?, B_Stau_raus_Out:=Stau, B_QuerTrolley_Out:=?, Antrieb_plus_aktiv:="MA0065", Schleuse_geöffnet:="MB3335", Y_Schleuse_Auf:="DLP_Zylinder".Schleuse_Ausfahrt_LP5.Stat.Ast, Error:=DB708.DBW134, Start_Ok:=Start_Ok, Antrieb_plus_vor:="DLPtoHW_Antriebe".MA0065.Stat.A_vor, Antrieb_plus_stoppen:="DLPtoHW_Antriebe".MA0065.Stat.Stop_vor, hStOk:=ErrAnz, Ausfahr_Inks:="DLP_Auslagern".Ausfahren_Ok.Dyn.Rest_Inks) + + +--- NW 17: LeerPuffer 06 --- +CALL FB "None" , (LeerPuffer_Nr:=6, ErrQuit:=ErrQuit, B_LeerpufferEinfahrt:="BG3313", B_InSchleuse:="BG3334", B_AusSchleuse:=?, B_Stau_raus_Out:=Stau, B_QuerTrolley_Out:=?, Antrieb_plus_aktiv:="MA0065", Schleuse_geöffnet:="MB3334", Y_Schleuse_Auf:="DLP_Zylinder".Schleuse_Ausfahrt_LP6.Stat.Ast, Error:=DB708.DBW136, Start_Ok:=Start_Ok, Antrieb_plus_vor:="DLPtoHW_Antriebe".MA0065.Stat.A_vor, Antrieb_plus_stoppen:="DLPtoHW_Antriebe".MA0065.Stat.Stop_vor, hStOk:=ErrAnz, Ausfahr_Inks:="DLP_Auslagern".Ausfahren_Ok.Dyn.Rest_Inks) + + +--- NW 18: LeerPuffer 07 --- +CALL FB "None" , (LeerPuffer_Nr:=7, ErrQuit:=ErrQuit, B_LeerpufferEinfahrt:="BG3312", B_InSchleuse:="BG3333", B_AusSchleuse:=?, B_Stau_raus_Out:=Stau, B_QuerTrolley_Out:=?, Antrieb_plus_aktiv:="MA0065", Schleuse_geöffnet:="MB3333", Y_Schleuse_Auf:="DLP_Zylinder".Schleuse_Ausfahrt_LP7.Stat.Ast, Error:=DB708.DBW138, Start_Ok:=Start_Ok, Antrieb_plus_vor:="DLPtoHW_Antriebe".MA0065.Stat.A_vor, Antrieb_plus_stoppen:="DLPtoHW_Antriebe".MA0065.Stat.Stop_vor, hStOk:=ErrAnz, Ausfahr_Inks:="DLP_Auslagern".Ausfahren_Ok.Dyn.Rest_Inks) + + +--- NW 19: LeerPuffer 08 --- +CALL FB "None" , (LeerPuffer_Nr:=8, ErrQuit:=ErrQuit, B_LeerpufferEinfahrt:="BG3311", B_InSchleuse:="BG3332", B_AusSchleuse:=?, B_Stau_raus_Out:=Stau, B_QuerTrolley_Out:=?, Antrieb_plus_aktiv:="MA0065", Schleuse_geöffnet:="MB3332", Y_Schleuse_Auf:="DLP_Zylinder".Schleuse_Ausfahrt_LP8.Stat.Ast, Error:=DB708.DBW140, Start_Ok:=Start_Ok, Antrieb_plus_vor:="DLPtoHW_Antriebe".MA0065.Stat.A_vor, Antrieb_plus_stoppen:="DLPtoHW_Antriebe".MA0065.Stat.Stop_vor, hStOk:=ErrAnz, Ausfahr_Inks:="DLP_Auslagern".Ausfahren_Ok.Dyn.Rest_Inks) + + +--- NW 20: LeerPuffer 09 --- +CALL FB "None" , (LeerPuffer_Nr:=9, ErrQuit:=ErrQuit, B_LeerpufferEinfahrt:="BG3310", B_InSchleuse:="BG3331", B_AusSchleuse:=?, B_Stau_raus_Out:=Stau, B_QuerTrolley_Out:=?, Antrieb_plus_aktiv:="MA0065", Schleuse_geöffnet:="MB3331", Y_Schleuse_Auf:="DLP_Zylinder".Schleuse_Ausfahrt_LP9.Stat.Ast, Error:=DB708.DBW142, Start_Ok:=Start_Ok, Antrieb_plus_vor:="DLPtoHW_Antriebe".MA0065.Stat.A_vor, Antrieb_plus_stoppen:="DLPtoHW_Antriebe".MA0065.Stat.Stop_vor, hStOk:=ErrAnz, Ausfahr_Inks:="DLP_Auslagern".Ausfahren_Ok.Dyn.Rest_Inks) + + +--- NW 21: LeerPuffer 10 --- + L "DLeerPufferStrecken".LeerPuffer_10.Dyn.Anzahl_LeerTrolleys + +CALL FB "None" , (LeerPuffer_Nr:=10, ErrQuit:=ErrQuit, B_LeerpufferEinfahrt:="BG3307", B_InSchleuse:="BG3330", B_AusSchleuse:=?, B_Stau_raus_Out:=Stau, B_QuerTrolley_Out:=?, Antrieb_plus_aktiv:="MA0065", Schleuse_geöffnet:="MB3330", Y_Schleuse_Auf:="DLP_Zylinder".Schleuse_Ausfahrt_LP10.Stat.Ast, Error:=DB708.DBW144, Start_Ok:=Start_Ok, Antrieb_plus_vor:="DLPtoHW_Antriebe".MA0065.Stat.A_vor, Antrieb_plus_stoppen:="DLPtoHW_Antriebe".MA0065.Stat.Stop_vor, hStOk:=ErrAnz, Ausfahr_Inks:="DLP_Auslagern".Ausfahren_Ok.Dyn.Rest_Inks) + + A "DLPtoHW_Antriebe".MA0065.Stat.A_vor + S "DLPtoHW_Antriebe".MA0065.Stat.A_start + + +--- NW 22: Störungen anzeigen UZ0703/UH07 --- + A ErrAnz + S "DOutbound_Bereich".A01_UZ0703.StOk_blinken + S "DOutbound_Bereich".A01_UH07.StOk_blinken + + +--- NW 23: Ende --- + BE + diff --git a/=A01+UH07-KF00/Programmbausteine/Anlage/5_Leerpuffer/Reihenfolge_Leerpuffer/DLLeerPuffer_ausfahren.awl b/=A01+UH07-KF00/Programmbausteine/Anlage/5_Leerpuffer/Reihenfolge_Leerpuffer/DLLeerPuffer_ausfahren.awl new file mode 100644 index 0000000..c23b950 --- /dev/null +++ b/=A01+UH07-KF00/Programmbausteine/Anlage/5_Leerpuffer/Reihenfolge_Leerpuffer/DLLeerPuffer_ausfahren.awl @@ -0,0 +1,18 @@ +=== GlobalDB 502: DLLeerPuffer_ausfahren [DB] === +INTERFACE: + Static: + Datenlistenkopf : Struct // Vorhandene Varianten im Puffer (Reihenfolge) + KOPF : Word := WORD#16#DA01 // Datenliste-Kennnung (DA) / Datensatzlänge in Word (1 - 128) + LAENGE : Int := 10 // Länge der Datenliste (maximale Anzahl der Datensätze) + STAMMDATEN : Int := 1 // Stammdatenlänge in Word (1 - 9) + INDDB : Int // Indizierter DB (nur bei Stammdaten = 1 erlaubt !!!) + LAENGEINDDB : Int // Länge des indizierten DB in Word (nur bei Stammdaten = 1 erlaubt !!!) + INDDATEN_WANDEL_FC : Int // FC zum Wandeln der indizierte Daten (nur bei Stammdaten = 1 erlaubt !!!) + LETZTERZUGRIFF : Int // Speicherung des letzten Zugriffs + Belegt14 : Int // reserviert von Sort-Datenliste + AnzahlEintraege : Int // Anzahl der eingetragenen Datensätze (nicht bei ind.Zugriff!) + Reserve18 : Int // Reserve + LeerPuffer_ausfahren : Array[1..10] of Struct + Puffer : Int + Endekennung : Word := WORD#16#DAEE // Datensort-Ende-Kennung (DBEE) + Reorganisieren : Bool := 1 // Löschen und neu erstellen diff --git a/=A01+UH07-KF00/Programmbausteine/Anlage/5_Leerpuffer/Reihenfolge_Leerpuffer/DLLeerPuffer_einfahren.awl b/=A01+UH07-KF00/Programmbausteine/Anlage/5_Leerpuffer/Reihenfolge_Leerpuffer/DLLeerPuffer_einfahren.awl new file mode 100644 index 0000000..c205aa8 --- /dev/null +++ b/=A01+UH07-KF00/Programmbausteine/Anlage/5_Leerpuffer/Reihenfolge_Leerpuffer/DLLeerPuffer_einfahren.awl @@ -0,0 +1,18 @@ +=== GlobalDB 501: DLLeerPuffer_einfahren [DB] === +INTERFACE: + Static: + Datenlistenkopf : Struct // Vorhandene Varianten im Puffer (Reihenfolge) + KOPF : Word := WORD#16#DA01 // Datenliste-Kennnung (DA) / Datensatzlänge in Word (1 - 128) + LAENGE : Int := 10 // Länge der Datenliste (maximale Anzahl der Datensätze) + STAMMDATEN : Int := 1 // Stammdatenlänge in Word (1 - 9) + INDDB : Int // Indizierter DB (nur bei Stammdaten = 1 erlaubt !!!) + LAENGEINDDB : Int // Länge des indizierten DB in Word (nur bei Stammdaten = 1 erlaubt !!!) + INDDATEN_WANDEL_FC : Int // FC zum Wandeln der indizierte Daten (nur bei Stammdaten = 1 erlaubt !!!) + LETZTERZUGRIFF : Int // Speicherung des letzten Zugriffs + Belegt14 : Int // reserviert von Sort-Datenliste + AnzahlEintraege : Int // Anzahl der eingetragenen Datensätze (nicht bei ind.Zugriff!) + Reserve18 : Int // Reserve + LeerPuffer_einfahren : Array[1..10] of Struct + Puffer : Int + Endekennung : Word := WORD#16#DAEE // Datensort-Ende-Kennung (DBEE) + Reorganisieren : Bool := 1 // Löschen und neu erstellen diff --git a/=A01+UH07-KF00/Programmbausteine/Anlage/5_Leerpuffer/Reihenfolge_Leerpuffer/DLLeerPuffer_leer.awl b/=A01+UH07-KF00/Programmbausteine/Anlage/5_Leerpuffer/Reihenfolge_Leerpuffer/DLLeerPuffer_leer.awl new file mode 100644 index 0000000..2826443 --- /dev/null +++ b/=A01+UH07-KF00/Programmbausteine/Anlage/5_Leerpuffer/Reihenfolge_Leerpuffer/DLLeerPuffer_leer.awl @@ -0,0 +1,18 @@ +=== GlobalDB 500: DLLeerPuffer_leer [DB] === +INTERFACE: + Static: + Datenlistenkopf : Struct // Reihenfolge nächster Leerpuffer + KOPF : Word := WORD#16#DA01 // Datenliste-Kennnung (DA) / Datensatzlänge in Word (1 - 128) + LAENGE : Int := 10 // Länge der Datenliste (maximale Anzahl der Datensätze) + STAMMDATEN : Int := 1 // Stammdatenlänge in Word (1 - 9) + INDDB : Int // Indizierter DB (nur bei Stammdaten = 1 erlaubt !!!) + LAENGEINDDB : Int // Länge des indizierten DB in Word (nur bei Stammdaten = 1 erlaubt !!!) + INDDATEN_WANDEL_FC : Int // FC zum Wandeln der indizierte Daten (nur bei Stammdaten = 1 erlaubt !!!) + LETZTERZUGRIFF : Int // Speicherung des letzten Zugriffs + Belegt14 : Int // reserviert von Sort-Datenliste + AnzahlEintraege : Int // Anzahl der eingetragenen Datensätze (nicht bei ind.Zugriff!) + Reserve18 : Int // Reserve + LeerPuffer_Ist_leer : Array[1..10] of Struct + Puffer : Int + Endekennung : Word := WORD#16#DAEE // Datensort-Ende-Kennung (DBEE) + Reorganisieren : Bool := 1 // Löschen und neu erstellen diff --git a/=A01+UH07-KF00/Programmbausteine/Anlage/5_Leerpuffer/Sorter_Leerpuffer/DLP_Sorter.awl b/=A01+UH07-KF00/Programmbausteine/Anlage/5_Leerpuffer/Sorter_Leerpuffer/DLP_Sorter.awl new file mode 100644 index 0000000..8f1bddf --- /dev/null +++ b/=A01+UH07-KF00/Programmbausteine/Anlage/5_Leerpuffer/Sorter_Leerpuffer/DLP_Sorter.awl @@ -0,0 +1,21 @@ +=== InstanceDB 5423: DLP_Sorter [DB] === +INTERFACE: + Input: + Output: + InOut: + Static: + Sorter_MB3305 : "MSepSorterRein" + Sync_BG3306 : "MStartSync" + Weiche_LP1 : "MWeiche_Sorter" + Weiche_LP2 : "MWeiche_Sorter" + Weiche_LP3 : "MWeiche_Sorter" + Weiche_LP4 : "MWeiche_Sorter" + Weiche_LP5 : "MWeiche_Sorter" + Weiche_LP6 : "MWeiche_Sorter" + Weiche_LP7 : "MWeiche_Sorter" + Weiche_LP8 : "MWeiche_Sorter" + Weiche_LP9 : "MWeiche_Sorter" + Weiche_LP10 : "MWeiche_Sorter" + Impuls_BG3374 : "MImpulsGeber" + Pseudo_IDX : DInt + Ohne_PC_fahren : Bool diff --git a/=A01+UH07-KF00/Programmbausteine/Anlage/5_Leerpuffer/Sorter_Leerpuffer/LP_DLSeps_Sorter.awl b/=A01+UH07-KF00/Programmbausteine/Anlage/5_Leerpuffer/Sorter_Leerpuffer/LP_DLSeps_Sorter.awl new file mode 100644 index 0000000..5126efd --- /dev/null +++ b/=A01+UH07-KF00/Programmbausteine/Anlage/5_Leerpuffer/Sorter_Leerpuffer/LP_DLSeps_Sorter.awl @@ -0,0 +1,61 @@ +=== GlobalDB 5474: LP_DLSeps_Sorter [DB] === +INTERFACE: + Static: + Datenlistenkopf : Struct + KOPF : Word := WORD#16#DA14 // Datenliste-Kennnung (DA) / Datensatzlänge in Word (1 - 128) + LAENGE : Int := 1 // Länge der Datenliste (maximale Anzahl der Datensätze) + STAMMDATEN : Int := 1 // Stammdatenlänge in Word (1 - 9) + INDDB : Int // Indizierter DB (nur bei Stammdaten = 1 erlaubt !!!) + LAENGEINDDB : Int // Länge des indizierten DB in Word (nur bei Stammdaten = 1 erlaubt !!!) + OFFSETINDDATEN : Int // Offset für indizierte Daten (nur bei Stammdaten = 1 erlaubt !!!) + LETZTERZUGRIFF : Int // Speicherung des letzten Zugriffs + Belegt14 : Int // reserviert von Sort-Datenliste + Reserve16 : Int // Reserve + Reserve18 : Int // Reserve + Separator_MB3305Sorter : Struct + Separator_Nr : Int := 3305 // Nummer des Separators + Separator_Typ : Int := 176 // Separatortyp = 176 (SorterRein) + Separator_Dyn_DB : Int := 5423 // Dynamische Daten Separartor + Separator_Dyn_DW : Int // Dynamische Daten Separartor + Parameter_allg : Struct + Scanner_eingebaut : Bool := TRUE // Scanner an Separator eingebaut + Antrieb_vorhanden : Bool := TRUE // Separator an angetriebener Strecke + StopperFunktion : Bool // Separator mit Stopperfunktion + B_AusSep_vorhanden : Bool := TRUE // Sensor BT hat Separator verlassen ist eingebaut + Wechsel_bei_Travel_leer : Bool := TRUE // Zielwechsel nur, wenn Travel-FIFO leer! + MT_Bereich : Bool // An diesem Separator werden nur MT gefahren + PinSignal : Bool := TRUE // Pin-Signal bei Ausfahrt beachten + Belade_Kontrolle_im_Sep : Bool // Belade-Kontrolle vorhanden (B oder Doppelbügel-Erkennung) im Separator + Antrieb_Plus_vorhanden : Bool := TRUE // Separator an weiterem Antrieb (Weiche) + Belade_Kontrolle_nachSep : Bool // Belade-Kontrolle vorhanden nach Separator + Para12 : Bool + Para13 : Bool + Para14 : Bool + Para15 : Bool + Para16 : Bool + PC_Komm_aktiv : Bool // PC-Kommunikation aktiv + PC_Komm_SorterID : Int // ID für PC-Kommunikation + PC_Send_FIFO : Int // Send-FIFO für PC-Sendungen + Default_Betriebsart : Struct // Betriebart nach Urlöschen/Reset + Listen : Bool // [SCTL=1] Ziel über Dyn.Status.Betriebsart_Ziel + Rapidfire : Bool // [SCTL=2] Alle BTs austakten (ohne Ende) + TillEmpty : Bool // [SCTL=3] Alle BTs austakten (Ende nach zeitlang kein BT) + Job : Bool // [SCTL=4] Anzahl von BTs austakten (Ende nach Anzahl) + Job_TillEmpty : Bool // [SCTL=5] Anzahl von BTs austakten (Ende nach zeitlang kein BT) + DestFull : Bool // [SCTL=6] Alle BTs austakten (bis Stau-Sensor aktiv) + Scannen : Bool := TRUE // [SCTL=7] Ausfahren über Scanner + PC-Rückmeldung + Scannen_TillEmpty : Bool // [SCTL=8] wie oben [SCTL=7](Ende nach zeitlang kein BT) + Default_Ziel : Int // Ziel nach Urlöschen/Reset + Auslager_Ziel : Int // Bei diesem Ziel auslagern + Umlager_Ziel : Int // Bei diesem Ziel umlagern + RausWeichen_Nr : Int // Nr der vorhandenen Weiche + Weichen_Abstand : Int // Inkrement-Abstand zum Weiche schalten + Mindeszeit_Sep_geoeffnet : Int := 500 // Mindestzeit, die Separator geöffnet ist [10ms] + Wartezeit_bis_draussen : Int := 1000 // Nach dieser Zeit hat BT den Sep. verlassen [10ms] + Wartezeit_bis_leer : Int := 600 // Nach dieser Zeit wird Bereich als leer gemeldet [100ms] + Abstand_Zielwechsel : Int := 50 // Abstand bei Zielwechsel [Ink] + Parameter_SorterRein : Struct + TravelFIFO_DB : Int := 5480 // Einsprung Travel-FIFO-DB + TravelFIFO_DW : Int // Einsprung Travel-FIFO-DW + Abstand_Reset_Start : Int := 180 // Nach diesen Abstand kann Gesamt-Reset gestartet werden [*10inc] + Endekennung : Word := WORD#16#DAEE // Datensort-Ende-Kennung (DBEE) diff --git a/=A01+UH07-KF00/Programmbausteine/Anlage/5_Leerpuffer/Sorter_Leerpuffer/LP_DLWeichen_Sorter.awl b/=A01+UH07-KF00/Programmbausteine/Anlage/5_Leerpuffer/Sorter_Leerpuffer/LP_DLWeichen_Sorter.awl new file mode 100644 index 0000000..f9e49ef --- /dev/null +++ b/=A01+UH07-KF00/Programmbausteine/Anlage/5_Leerpuffer/Sorter_Leerpuffer/LP_DLWeichen_Sorter.awl @@ -0,0 +1,406 @@ +=== GlobalDB 5478: LP_DLWeichen_Sorter [DB] === +INTERFACE: + Static: + Datenlistenkopf : Struct + KOPF : Word := 16#DA14 // Datenliste-Kennnung (DA) / Datensatzlänge in Word (1 - 128) + LAENGE : Int := 11 // Länge der Datenliste (maximale Anzahl der Datensätze) + STAMMDATEN : Int := 1 // Stammdatenlänge in Word (1 - 9) + INDDB : Int := 0 // Indizierter DB (nur bei Stammdaten = 1 erlaubt !!!) + LAENGEINDDB : Int := 0 // Länge des indizierten DB in Word (nur bei Stammdaten = 1 erlaubt !!!) + OFFSETINDDATEN : Int := 0 // Offset für indizierte Daten (nur bei Stammdaten = 1 erlaubt !!!) + LETZTERZUGRIFF : Int := 420 // Speicherung des letzten Zugriffs + Belegt14 : Int := 0 // reserviert von Sort-Datenliste + Reserve16 : Int := 0 // Reserve + Reserve18 : Int := 0 // Reserve + Synchron_BG3306 : Struct + Sync_Nr : Int := 3306 // Nummer des Synchron-Punkts + Sync_Dyn_DB : Int := 5423 // Dynamische Daten des Synchron-Punkts + Sync_Dyn_DW : Int := 150 // Dynamische Daten des Synchron-Punkts + Sync_Typ : Int := 177 // Synchron-Punkt-Typ = 177 (StartSync) + Parameter : Struct + Kein_Sync_B : Bool := FALSE + InkSim : Bool := FALSE + ET200 : Bool := FALSE + Sick_ABS_single : Bool := FALSE + Para04 : Bool := FALSE + Para05 : Bool := FALSE + Para06 : Bool := FALSE + Para07 : Bool := FALSE + Para10 : Bool := FALSE + Para11 : Bool := FALSE + Para12 : Bool := FALSE + Para13 : Bool := FALSE + Para14 : Bool := FALSE + Para15 : Bool := FALSE + Para16 : Bool := FALSE + Para17 : Bool := FALSE + Ink_DB : Int := 5483 // DB-Nr des Inkremental-Gebers (Zählerbaugruppe) Neu-Sync-Zähler + Ink_HW_Adress : Int := 0 // Hardware-Adresse des Inkrementalgebers / Zählerbaugruppe + TravelFIFO_DB : Int := 5480 // Einsprung Travel-FIFO-DB + TravelFIFO_DW : Int := 0 // Einsprung Travel-FIFO-DW + Hauptstrang_DL_DB : Int := 5481 // Hauptstrang-Datenlisten-DB + Hauptstrang_DL_DW : Int := 0 // Hauptstrang-Datenlisten-DW + Entprellung_B_Sync : DInt := 5 // Entprellung Snyc-Sensor (in Inkremente) + Abstand_StartSep : DInt := 50 // Abstand Start-Separator <-> Sync-Sensor (in Inkremente) + Reserve : Array[1..5] of Int // Reserve + Weiche_LP1 : Struct + Weichen_Nr : Int := 1 // Nummer der Weiche + Weichen_Dyn_DB : Int := 5423 // Dynamische Daten Weiche + Weichen_Dyn_DW : Int := 300 // Dynamische Daten Weiche + Weichen_Typ : Int := 178 // Weichen-Typ = 178 (Weiche) + Parameter : Struct + Letzte_Weiche : Bool := FALSE // Letzte Weiche im Verbund + Entlade_Weiche : Bool := FALSE // BT/MT wird entladen -> Leerziel übergeben + Kontroll_B_Gerade : Bool := FALSE // Kontroll-Sensor bei Weiterfahrt (gerade) + Kontroll_B_Ausfahrt : Bool := TRUE // Kontroll-Sensor bei Ausfahrt (abzweig) + Quell_Schaltung : Bool := FALSE // Weiche aufgrund der Quelle schalten (Hauptstrang = Gerade, FIFO = Abzweig) + Disable_PLC_Ziel : Bool := FALSE // Bei Zielvorgabe von PLC nicht anfahren (Disabled) + ErsatzZiel_bei_Stau : Bool := FALSE // Bei Stau Ersatz-Ziel (s.u.) anfahren + Para07 : Bool := FALSE + Weichen_GST_gerade : Bool := TRUE // Weiche wird ohne Daten auf gerade geschaltet + Weichen_GST_abzweig : Bool := FALSE // Weiche wird ohne Daten auf abzweig geschaltet + IDX_an_Puffer : Bool := TRUE // IDX an Ziel-Puffer senden + Para13 : Bool := FALSE + Para14 : Bool := FALSE + Para15 : Bool := FALSE + Para16 : Bool := FALSE + PC_Komm_aktiv : Bool := FALSE // PC-Kommunikation aktiv + LeerZiel : Int := 0 // Nach Entladen des BT/MT dieses Ziel übergeben + PC_Send_FIFO : Int := 0 // Send-FIFO für PC-Sndungen + Hauptstrang_DL_DB : Int := 5481 // Hauptstrang-Datenlisten-DB + Hauptstrang_DL_DW : Int := 0 // Hauptstrang-Datenlisten-DW + Off_Ink : DInt := 10 // Inkremente zum Weiche schalten + Ink_DB : Int := 5483 // DB-Nr des Inkremental-Geber + Position_minus : Int := 3306 // Position vorher (zwecks Datensuche) + AbzweigZiel : Int := 1 // Bei diesem Ziel Weiche auf Abzweig schalten + Carl + GeradeZiel : Int := 0 // Bei diesem Ziel Weiche auf Gerade schalten + Carl + Kontroll_Zeit_gerade : Int := 0 // Nach dieser Zeit muss BM bei Geradefahrt Weichenbereich verlassen haben [100ms] + Kontroll_Zeit_abzweigen : Int := 200 // Nach dieser Zeit muss BM bei Abzweigen Weichenbereich verlassen haben [100ms] + DraussenZeit_gerade : Int := 0 // Nach dieser neg. Zeit [100ms] Error undef.BM, falls Kontroll-Sensor aktiv + Ink_Schaltdauer : Int := 100 // Inkremente, danach wird Weiche in GST geschaltet + ErsatzZiel : Int := 0 // Dieser Ziel bei Parameter 6 und Stau anfahren + Weiche_LP2 : Struct + Weichen_Nr : Int := 2 // Nummer der Weiche + Weichen_Dyn_DB : Int := 5423 // Dynamische Daten Weiche + Weichen_Dyn_DW : Int := 500 // Dynamische Daten Weiche + Weichen_Typ : Int := 178 // Weichen-Typ = 178 (Weiche) + Parameter : Struct + Letzte_Weiche : Bool := FALSE // Letzte Weiche im Verbund + Entlade_Weiche : Bool := FALSE // BT/MT wird entladen -> Leerziel übergeben + Kontroll_B_Gerade : Bool := FALSE // Kontroll-Sensor bei Weiterfahrt (gerade) + Kontroll_B_Ausfahrt : Bool := TRUE // Kontroll-Sensor bei Ausfahrt (abzweig) + Quell_Schaltung : Bool := FALSE // Weiche aufgrund der Quelle schalten (Hauptstrang = Gerade, FIFO = Abzweig) + Disable_PLC_Ziel : Bool := FALSE // Bei Zielvorgabe von PLC nicht anfahren (Disabled) + ErsatzZiel_bei_Stau : Bool := FALSE // Bei Stau Ersatz-Ziel (s.u.) anfahren + Para07 : Bool := FALSE + Weichen_GST_gerade : Bool := TRUE // Weiche wird ohne Daten auf gerade geschaltet + Weichen_GST_abzweig : Bool := FALSE // Weiche wird ohne Daten auf abzweig geschaltet + IDX_an_Puffer : Bool := TRUE // IDX an Ziel-Puffer senden + Para13 : Bool := FALSE + Para14 : Bool := FALSE + Para15 : Bool := FALSE + Para16 : Bool := FALSE + PC_Komm_aktiv : Bool := FALSE // PC-Kommunikation aktiv + LeerZiel : Int := 0 // Nach Entladen des BT/MT dieses Ziel übergeben + PC_Send_FIFO : Int := 0 // Send-FIFO für PC-Sndungen + Hauptstrang_DL_DB : Int := 5481 // Hauptstrang-Datenlisten-DB + Hauptstrang_DL_DW : Int := 0 // Hauptstrang-Datenlisten-DW + Off_Ink : DInt := 25 // Inkremente zum Weiche schalten + Ink_DB : Int := 5483 // DB-Nr des Inkremental-Geber + Position_minus : Int := 1 // Position vorher (zwecks Datensuche) + AbzweigZiel : Int := 2 // Bei diesem Ziel Weiche auf Abzweig schalten + Carl + GeradeZiel : Int := 0 // Bei diesem Ziel Weiche auf Gerade schalten + Carl + Kontroll_Zeit_gerade : Int := 0 // Nach dieser Zeit muss BM bei Geradefahrt Weichenbereich verlassen haben [100ms] + Kontroll_Zeit_abzweigen : Int := 200 // Nach dieser Zeit muss BM bei Abzweigen Weichenbereich verlassen haben [100ms] + DraussenZeit_gerade : Int := 0 // Nach dieser neg. Zeit [100ms] Error undef.BM, falls Kontroll-Sensor aktiv + Ink_Schaltdauer : Int := 100 // Inkremente, danach wird Weiche in GST geschaltet + ErsatzZiel : Int := 0 // Dieser Ziel bei Parameter 6 und Stau anfahren + Weiche_LP3 : Struct + Weichen_Nr : Int := 3 // Nummer der Weiche + Weichen_Dyn_DB : Int := 5423 // Dynamische Daten Weiche + Weichen_Dyn_DW : Int := 700 // Dynamische Daten Weiche + Weichen_Typ : Int := 178 // Weichen-Typ = 178 (Weiche) + Parameter : Struct + Letzte_Weiche : Bool := FALSE // Letzte Weiche im Verbund + Entlade_Weiche : Bool := FALSE // BT/MT wird entladen -> Leerziel übergeben + Kontroll_B_Gerade : Bool := FALSE // Kontroll-Sensor bei Weiterfahrt (gerade) + Kontroll_B_Ausfahrt : Bool := TRUE // Kontroll-Sensor bei Ausfahrt (abzweig) + Quell_Schaltung : Bool := FALSE // Weiche aufgrund der Quelle schalten (Hauptstrang = Gerade, FIFO = Abzweig) + Disable_PLC_Ziel : Bool := FALSE // Bei Zielvorgabe von PLC nicht anfahren (Disabled) + ErsatzZiel_bei_Stau : Bool := FALSE // Bei Stau Ersatz-Ziel (s.u.) anfahren + Para07 : Bool := FALSE + Weichen_GST_gerade : Bool := TRUE // Weiche wird ohne Daten auf gerade geschaltet + Weichen_GST_abzweig : Bool := FALSE // Weiche wird ohne Daten auf abzweig geschaltet + IDX_an_Puffer : Bool := TRUE // IDX an Ziel-Puffer senden + Para13 : Bool := FALSE + Para14 : Bool := FALSE + Para15 : Bool := FALSE + Para16 : Bool := FALSE + PC_Komm_aktiv : Bool := FALSE // PC-Kommunikation aktiv + LeerZiel : Int := 0 // Nach Entladen des BT/MT dieses Ziel übergeben + PC_Send_FIFO : Int := 0 // Send-FIFO für PC-Sndungen + Hauptstrang_DL_DB : Int := 5481 // Hauptstrang-Datenlisten-DB + Hauptstrang_DL_DW : Int := 0 // Hauptstrang-Datenlisten-DW + Off_Ink : DInt := 42 // Inkremente zum Weiche schalten + Ink_DB : Int := 5483 // DB-Nr des Inkremental-Geber + Position_minus : Int := 2 // Position vorher (zwecks Datensuche) + AbzweigZiel : Int := 3 // Bei diesem Ziel Weiche auf Abzweig schalten + Carl + GeradeZiel : Int := 0 // Bei diesem Ziel Weiche auf Gerade schalten + Carl + Kontroll_Zeit_gerade : Int := 0 // Nach dieser Zeit muss BM bei Geradefahrt Weichenbereich verlassen haben [100ms] + Kontroll_Zeit_abzweigen : Int := 200 // Nach dieser Zeit muss BM bei Abzweigen Weichenbereich verlassen haben [100ms] + DraussenZeit_gerade : Int := 0 // Nach dieser neg. Zeit [100ms] Error undef.BM, falls Kontroll-Sensor aktiv + Ink_Schaltdauer : Int := 100 // Inkremente, danach wird Weiche in GST geschaltet + ErsatzZiel : Int := 0 // Dieser Ziel bei Parameter 6 und Stau anfahren + Weiche_LP4 : Struct + Weichen_Nr : Int := 4 // Nummer der Weiche + Weichen_Dyn_DB : Int := 5423 // Dynamische Daten Weiche + Weichen_Dyn_DW : Int := 900 // Dynamische Daten Weiche + Weichen_Typ : Int := 178 // Weichen-Typ = 178 (Weiche) + Parameter : Struct + Letzte_Weiche : Bool := FALSE // Letzte Weiche im Verbund + Entlade_Weiche : Bool := FALSE // BT/MT wird entladen -> Leerziel übergeben + Kontroll_B_Gerade : Bool := FALSE // Kontroll-Sensor bei Weiterfahrt (gerade) + Kontroll_B_Ausfahrt : Bool := TRUE // Kontroll-Sensor bei Ausfahrt (abzweig) + Quell_Schaltung : Bool := FALSE // Weiche aufgrund der Quelle schalten (Hauptstrang = Gerade, FIFO = Abzweig) + Disable_PLC_Ziel : Bool := FALSE // Bei Zielvorgabe von PLC nicht anfahren (Disabled) + Para06 : Bool := FALSE + Para07 : Bool := FALSE + Weichen_GST_gerade : Bool := TRUE // Weiche wird ohne Daten auf gerade geschaltet + Weichen_GST_abzweig : Bool := FALSE // Weiche wird ohne Daten auf abzweig geschaltet + IDX_an_Puffer : Bool := TRUE // IDX an Ziel-Puffer senden + Para13 : Bool := FALSE + Para14 : Bool := FALSE + Para15 : Bool := FALSE + Para16 : Bool := FALSE + PC_Komm_aktiv : Bool := FALSE // PC-Kommunikation aktiv + LeerZiel : Int := 0 // Nach Entladen des BT/MT dieses Ziel übergeben + PC_Send_FIFO : Int := 0 // Send-FIFO für PC-Sndungen + Hauptstrang_DL_DB : Int := 5481 // Hauptstrang-Datenlisten-DB + Hauptstrang_DL_DW : Int := 0 // Hauptstrang-Datenlisten-DW + Off_Ink : DInt := 60 // Inkremente zum Weiche schalten + Ink_DB : Int := 5483 // DB-Nr des Inkremental-Geber + Position_minus : Int := 3 // Position vorher (zwecks Datensuche) + AbzweigZiel : Int := 4 // Bei diesem Ziel Weiche auf Abzweig schalten + Carl + GeradeZiel : Int := 0 // Bei diesem Ziel Weiche auf Gerade schalten + Carl + Kontroll_Zeit_gerade : Int := 150 // Nach dieser Zeit muss BM bei Geradefahrt Weichenbereich verlassen haben [100ms] + Kontroll_Zeit_abzweigen : Int := 200 // Nach dieser Zeit muss BM bei Abzweigen Weichenbereich verlassen haben [100ms] + DraussenZeit_gerade : Int := -300 // Nach dieser neg. Zeit [100ms] Error undef.BM, falls Kontroll-Sensor aktiv + Ink_Schaltdauer : Int := 100 // Inkremente, danach wird Weiche in GST geschaltet + Frei38 : Int := 0 + Weiche_LP5 : Struct + Weichen_Nr : Int := 5 // Nummer der Weiche + Weichen_Dyn_DB : Int := 5423 // Dynamische Daten Weiche + Weichen_Dyn_DW : Int := 1100 // Dynamische Daten Weiche + Weichen_Typ : Int := 178 // Weichen-Typ = 178 (Weiche) + Parameter : Struct + Letzte_Weiche : Bool := FALSE // Letzte Weiche im Verbund + Entlade_Weiche : Bool := FALSE // BT/MT wird entladen -> Leerziel übergeben + Kontroll_B_Gerade : Bool := FALSE // Kontroll-Sensor bei Weiterfahrt (gerade) + Kontroll_B_Ausfahrt : Bool := TRUE // Kontroll-Sensor bei Ausfahrt (abzweig) + Quell_Schaltung : Bool := FALSE // Weiche aufgrund der Quelle schalten (Hauptstrang = Gerade, FIFO = Abzweig) + Disable_PLC_Ziel : Bool := FALSE // Bei Zielvorgabe von PLC nicht anfahren (Disabled) + Para06 : Bool := FALSE + Para07 : Bool := FALSE + Weichen_GST_gerade : Bool := TRUE // Weiche wird ohne Daten auf gerade geschaltet + Weichen_GST_abzweig : Bool := FALSE // Weiche wird ohne Daten auf abzweig geschaltet + IDX_an_Puffer : Bool := TRUE // IDX an Ziel-Puffer senden + Para13 : Bool := FALSE + Para14 : Bool := FALSE + Para15 : Bool := FALSE + Para16 : Bool := FALSE + PC_Komm_aktiv : Bool := FALSE // PC-Kommunikation aktiv + LeerZiel : Int := 0 // Nach Entladen des BT/MT dieses Ziel übergeben + PC_Send_FIFO : Int := 0 // Send-FIFO für PC-Sndungen + Hauptstrang_DL_DB : Int := 5481 // Hauptstrang-Datenlisten-DB + Hauptstrang_DL_DW : Int := 0 // Hauptstrang-Datenlisten-DW + Off_Ink : DInt := 75 // Inkremente zum Weiche schalten + Ink_DB : Int := 5483 // DB-Nr des Inkremental-Geber + Position_minus : Int := 4 // Position vorher (zwecks Datensuche) + AbzweigZiel : Int := 5 // Bei diesem Ziel Weiche auf Abzweig schalten + Carl + GeradeZiel : Int := 0 // Bei diesem Ziel Weiche auf Gerade schalten + Carl + Kontroll_Zeit_gerade : Int := 0 // Nach dieser Zeit muss BM bei Geradefahrt Weichenbereich verlassen haben [100ms] + Kontroll_Zeit_abzweigen : Int := 200 // Nach dieser Zeit muss BM bei Abzweigen Weichenbereich verlassen haben [100ms] + DraussenZeit_gerade : Int := 0 // Nach dieser neg. Zeit [100ms] Error undef.BM, falls Kontroll-Sensor aktiv + Ink_Schaltdauer : Int := 100 // Inkremente, danach wird Weiche in GST geschaltet + Frei38 : Int := 0 + Weiche_LP6 : Struct + Weichen_Nr : Int := 6 // Nummer der Weiche + Weichen_Dyn_DB : Int := 5423 // Dynamische Daten Weiche + Weichen_Dyn_DW : Int := 1300 // Dynamische Daten Weiche + Weichen_Typ : Int := 178 // Weichen-Typ = 178 (Weiche) + Parameter : Struct + Letzte_Weiche : Bool := FALSE // Letzte Weiche im Verbund + Entlade_Weiche : Bool := FALSE // BT/MT wird entladen -> Leerziel übergeben + Kontroll_B_Gerade : Bool := FALSE // Kontroll-Sensor bei Weiterfahrt (gerade) + Kontroll_B_Ausfahrt : Bool := TRUE // Kontroll-Sensor bei Ausfahrt (abzweig) + Quell_Schaltung : Bool := FALSE // Weiche aufgrund der Quelle schalten (Hauptstrang = Gerade, FIFO = Abzweig) + Disable_PLC_Ziel : Bool := FALSE // Bei Zielvorgabe von PLC nicht anfahren (Disabled) + Para06 : Bool := FALSE + Para07 : Bool := FALSE + Weichen_GST_gerade : Bool := TRUE // Weiche wird ohne Daten auf gerade geschaltet + Weichen_GST_abzweig : Bool := FALSE // Weiche wird ohne Daten auf abzweig geschaltet + IDX_an_Puffer : Bool := TRUE // IDX an Ziel-Puffer senden + Para13 : Bool := FALSE + Para14 : Bool := FALSE + Para15 : Bool := FALSE + Para16 : Bool := FALSE + PC_Komm_aktiv : Bool := FALSE // PC-Kommunikation aktiv + LeerZiel : Int := 0 // Nach Entladen des BT/MT dieses Ziel übergeben + PC_Send_FIFO : Int := 0 // Send-FIFO für PC-Sndungen + Hauptstrang_DL_DB : Int := 5481 // Hauptstrang-Datenlisten-DB + Hauptstrang_DL_DW : Int := 0 // Hauptstrang-Datenlisten-DW + Off_Ink : DInt := 93 // Inkremente zum Weiche schalten + Ink_DB : Int := 5483 // DB-Nr des Inkremental-Geber + Position_minus : Int := 5 // Position vorher (zwecks Datensuche) + AbzweigZiel : Int := 6 // Bei diesem Ziel Weiche auf Abzweig schalten + Carl + GeradeZiel : Int := 0 // Bei diesem Ziel Weiche auf Gerade schalten + Carl + Kontroll_Zeit_gerade : Int := 0 // Nach dieser Zeit muss BM bei Geradefahrt Weichenbereich verlassen haben [100ms] + Kontroll_Zeit_abzweigen : Int := 200 // Nach dieser Zeit muss BM bei Abzweigen Weichenbereich verlassen haben [100ms] + DraussenZeit_gerade : Int := 0 // Nach dieser neg. Zeit [100ms] Error undef.BM, falls Kontroll-Sensor aktiv + Ink_Schaltdauer : Int := 100 // Inkremente, danach wird Weiche in GST geschaltet + Frei38 : Int := 0 + Weiche_LP7 : Struct + Weichen_Nr : Int := 7 // Nummer der Weiche + Weichen_Dyn_DB : Int := 5423 // Dynamische Daten Weiche + Weichen_Dyn_DW : Int := 1500 // Dynamische Daten Weiche + Weichen_Typ : Int := 178 // Weichen-Typ = 178 (Weiche) + Parameter : Struct + Letzte_Weiche : Bool := FALSE // Letzte Weiche im Verbund + Entlade_Weiche : Bool := FALSE // BT/MT wird entladen -> Leerziel übergeben + Kontroll_B_Gerade : Bool := FALSE // Kontroll-Sensor bei Weiterfahrt (gerade) + Kontroll_B_Ausfahrt : Bool := TRUE // Kontroll-Sensor bei Ausfahrt (abzweig) + Quell_Schaltung : Bool := FALSE // Weiche aufgrund der Quelle schalten (Hauptstrang = Gerade, FIFO = Abzweig) + Disable_PLC_Ziel : Bool := FALSE // Bei Zielvorgabe von PLC nicht anfahren (Disabled) + Para06 : Bool := FALSE + Para07 : Bool := FALSE + Weichen_GST_gerade : Bool := TRUE // Weiche wird ohne Daten auf gerade geschaltet + Weichen_GST_abzweig : Bool := FALSE // Weiche wird ohne Daten auf abzweig geschaltet + IDX_an_Puffer : Bool := TRUE // IDX an Ziel-Puffer senden + Para13 : Bool := FALSE + Para14 : Bool := FALSE + Para15 : Bool := FALSE + Para16 : Bool := FALSE + PC_Komm_aktiv : Bool := FALSE // PC-Kommunikation aktiv + LeerZiel : Int := 0 // Nach Entladen des BT/MT dieses Ziel übergeben + PC_Send_FIFO : Int := 0 // Send-FIFO für PC-Sndungen + Hauptstrang_DL_DB : Int := 5481 // Hauptstrang-Datenlisten-DB + Hauptstrang_DL_DW : Int := 0 // Hauptstrang-Datenlisten-DW + Off_Ink : DInt := 109 // Inkremente zum Weiche schalten + Ink_DB : Int := 5483 // DB-Nr des Inkremental-Geber + Position_minus : Int := 6 // Position vorher (zwecks Datensuche) + AbzweigZiel : Int := 7 // Bei diesem Ziel Weiche auf Abzweig schalten + Carl + GeradeZiel : Int := 0 // Bei diesem Ziel Weiche auf Gerade schalten + Carl + Kontroll_Zeit_gerade : Int := 0 // Nach dieser Zeit muss BM bei Geradefahrt Weichenbereich verlassen haben [100ms] + Kontroll_Zeit_abzweigen : Int := 200 // Nach dieser Zeit muss BM bei Abzweigen Weichenbereich verlassen haben [100ms] + DraussenZeit_gerade : Int := 0 // Nach dieser neg. Zeit [100ms] Error undef.BM, falls Kontroll-Sensor aktiv + Ink_Schaltdauer : Int := 100 // Inkremente, danach wird Weiche in GST geschaltet + Frei38 : Int := 0 + Weiche_LP8 : Struct + Weichen_Nr : Int := 8 // Nummer der Weiche + Weichen_Dyn_DB : Int := 5423 // Dynamische Daten Weiche + Weichen_Dyn_DW : Int := 1700 // Dynamische Daten Weiche + Weichen_Typ : Int := 178 // Weichen-Typ = 178 (Weiche) + Parameter : Struct + Letzte_Weiche : Bool := FALSE // Letzte Weiche im Verbund + Entlade_Weiche : Bool := FALSE // BT/MT wird entladen -> Leerziel übergeben + Kontroll_B_Gerade : Bool := FALSE // Kontroll-Sensor bei Weiterfahrt (gerade) + Kontroll_B_Ausfahrt : Bool := TRUE // Kontroll-Sensor bei Ausfahrt (abzweig) + Quell_Schaltung : Bool := FALSE // Weiche aufgrund der Quelle schalten (Hauptstrang = Gerade, FIFO = Abzweig) + Disable_PLC_Ziel : Bool := FALSE // Bei Zielvorgabe von PLC nicht anfahren (Disabled) + Para06 : Bool := FALSE + Para07 : Bool := FALSE + Weichen_GST_gerade : Bool := TRUE // Weiche wird ohne Daten auf gerade geschaltet + Weichen_GST_abzweig : Bool := FALSE // Weiche wird ohne Daten auf abzweig geschaltet + IDX_an_Puffer : Bool := TRUE // IDX an Ziel-Puffer senden + Para13 : Bool := FALSE + Para14 : Bool := FALSE + Para15 : Bool := FALSE + Para16 : Bool := FALSE + PC_Komm_aktiv : Bool := FALSE // PC-Kommunikation aktiv + LeerZiel : Int := 0 // Nach Entladen des BT/MT dieses Ziel übergeben + PC_Send_FIFO : Int := 0 // Send-FIFO für PC-Sndungen + Hauptstrang_DL_DB : Int := 5481 // Hauptstrang-Datenlisten-DB + Hauptstrang_DL_DW : Int := 0 // Hauptstrang-Datenlisten-DW + Off_Ink : DInt := 128 // Inkremente zum Weiche schalten + Ink_DB : Int := 5483 // DB-Nr des Inkremental-Geber + Position_minus : Int := 7 // Position vorher (zwecks Datensuche) + AbzweigZiel : Int := 8 // Bei diesem Ziel Weiche auf Abzweig schalten + Carl + GeradeZiel : Int := 0 // Bei diesem Ziel Weiche auf Gerade schalten + Carl + Kontroll_Zeit_gerade : Int := 150 // Nach dieser Zeit muss BM bei Geradefahrt Weichenbereich verlassen haben [100ms] + Kontroll_Zeit_abzweigen : Int := 200 // Nach dieser Zeit muss BM bei Abzweigen Weichenbereich verlassen haben [100ms] + DraussenZeit_gerade : Int := -300 // Nach dieser neg. Zeit [100ms] Error undef.BM, falls Kontroll-Sensor aktiv + Ink_Schaltdauer : Int := 100 // Inkremente, danach wird Weiche in GST geschaltet + Frei38 : Int := 0 + Weiche_LP9 : Struct + Weichen_Nr : Int := 9 // Nummer der Weiche + Weichen_Dyn_DB : Int := 5423 // Dynamische Daten Weiche + Weichen_Dyn_DW : Int := 1900 // Dynamische Daten Weiche + Weichen_Typ : Int := 178 // Weichen-Typ = 178 (Weiche) + Parameter : Struct + Letzte_Weiche : Bool := FALSE // Letzte Weiche im Verbund + Entlade_Weiche : Bool := FALSE // BT/MT wird entladen -> Leerziel übergeben + Kontroll_B_Gerade : Bool := FALSE // Kontroll-Sensor bei Weiterfahrt (gerade) + Kontroll_B_Ausfahrt : Bool := TRUE // Kontroll-Sensor bei Ausfahrt (abzweig) + Quell_Schaltung : Bool := FALSE // Weiche aufgrund der Quelle schalten (Hauptstrang = Gerade, FIFO = Abzweig) + Disable_PLC_Ziel : Bool := FALSE // Bei Zielvorgabe von PLC nicht anfahren (Disabled) + Para06 : Bool := FALSE + Para07 : Bool := FALSE + Weichen_GST_gerade : Bool := TRUE // Weiche wird ohne Daten auf gerade geschaltet + Weichen_GST_abzweig : Bool := FALSE // Weiche wird ohne Daten auf abzweig geschaltet + IDX_an_Puffer : Bool := TRUE // IDX an Ziel-Puffer senden + Para13 : Bool := FALSE + Para14 : Bool := FALSE + Para15 : Bool := FALSE + Para16 : Bool := FALSE + PC_Komm_aktiv : Bool := FALSE // PC-Kommunikation aktiv + LeerZiel : Int := 0 // Nach Entladen des BT/MT dieses Ziel übergeben + PC_Send_FIFO : Int := 0 // Send-FIFO für PC-Sndungen + Hauptstrang_DL_DB : Int := 5481 // Hauptstrang-Datenlisten-DB + Hauptstrang_DL_DW : Int := 0 // Hauptstrang-Datenlisten-DW + Off_Ink : DInt := 146 // Inkremente zum Weiche schalten + Ink_DB : Int := 5483 // DB-Nr des Inkremental-Geber + Position_minus : Int := 8 // Position vorher (zwecks Datensuche) + AbzweigZiel : Int := 9 // Bei diesem Ziel Weiche auf Abzweig schalten + Carl + GeradeZiel : Int := 0 // Bei diesem Ziel Weiche auf Gerade schalten + Carl + Kontroll_Zeit_gerade : Int := 0 // Nach dieser Zeit muss BM bei Geradefahrt Weichenbereich verlassen haben [100ms] + Kontroll_Zeit_abzweigen : Int := 200 // Nach dieser Zeit muss BM bei Abzweigen Weichenbereich verlassen haben [100ms] + DraussenZeit_gerade : Int := 0 // Nach dieser neg. Zeit [100ms] Error undef.BM, falls Kontroll-Sensor aktiv + Ink_Schaltdauer : Int := 100 // Inkremente, danach wird Weiche in GST geschaltet + Frei38 : Int := 0 + Weiche_LP10 : Struct + Weichen_Nr : Int := 10 // Nummer der Weiche + Weichen_Dyn_DB : Int := 5423 // Dynamische Daten Weiche + Weichen_Dyn_DW : Int := 2100 // Dynamische Daten Weiche + Weichen_Typ : Int := 178 // Weichen-Typ = 178 (Weiche) + Parameter : Struct + Letzte_Weiche : Bool := TRUE // Letzte Weiche im Verbund + Entlade_Weiche : Bool := FALSE // BT/MT wird entladen -> Leerziel übergeben + Kontroll_B_Gerade : Bool := FALSE // Kontroll-Sensor bei Weiterfahrt (gerade) + Kontroll_B_Ausfahrt : Bool := TRUE // Kontroll-Sensor bei Ausfahrt (abzweig) + Quell_Schaltung : Bool := FALSE // Weiche aufgrund der Quelle schalten (Hauptstrang = Gerade, FIFO = Abzweig) + Disable_PLC_Ziel : Bool := FALSE // Bei Zielvorgabe von PLC nicht anfahren (Disabled) + Para06 : Bool := FALSE + Para07 : Bool := FALSE + Weichen_GST_gerade : Bool := TRUE // Weiche wird ohne Daten auf gerade geschaltet + Weichen_GST_abzweig : Bool := FALSE // Weiche wird ohne Daten auf abzweig geschaltet + IDX_an_Puffer : Bool := TRUE // IDX an Ziel-Puffer senden + Para13 : Bool := FALSE + Para14 : Bool := FALSE + Para15 : Bool := FALSE + Para16 : Bool := FALSE + PC_Komm_aktiv : Bool := FALSE // PC-Kommunikation aktiv + LeerZiel : Int := 0 // Nach Entladen des BT/MT dieses Ziel übergeben + PC_Send_FIFO : Int := 0 // Send-FIFO für PC-Sndungen + Hauptstrang_DL_DB : Int := 5481 // Hauptstrang-Datenlisten-DB + Hauptstrang_DL_DW : Int := 0 // Hauptstrang-Datenlisten-DW + Off_Ink : DInt := 163 // Inkremente zum Weiche schalten + Ink_DB : Int := 5483 // DB-Nr des Inkremental-Geber + Position_minus : Int := 9 // Position vorher (zwecks Datensuche) + AbzweigZiel : Int := 10 // Bei diesem Ziel Weiche auf Abzweig schalten + Carl + GeradeZiel : Int := 0 // Bei diesem Ziel Weiche auf Gerade schalten + Carl + Kontroll_Zeit_gerade : Int := 0 // Nach dieser Zeit muss BM bei Geradefahrt Weichenbereich verlassen haben [100ms] + Kontroll_Zeit_abzweigen : Int := 200 // Nach dieser Zeit muss BM bei Abzweigen Weichenbereich verlassen haben [100ms] + DraussenZeit_gerade : Int := 0 // Nach dieser neg. Zeit [100ms] Error undef.BM, falls Kontroll-Sensor aktiv + Ink_Schaltdauer : Int := 100 // Inkremente, danach wird Weiche in GST geschaltet + Frei38 : Int := 0 + Endekennung : Word := 16#DAEE // Datensort-Ende-Kennung (DBEE) diff --git a/=A01+UH07-KF00/Programmbausteine/Anlage/5_Leerpuffer/Sorter_Leerpuffer/LP_HS_mF.awl b/=A01+UH07-KF00/Programmbausteine/Anlage/5_Leerpuffer/Sorter_Leerpuffer/LP_HS_mF.awl new file mode 100644 index 0000000..f4a0c58 --- /dev/null +++ b/=A01+UH07-KF00/Programmbausteine/Anlage/5_Leerpuffer/Sorter_Leerpuffer/LP_HS_mF.awl @@ -0,0 +1,17 @@ +=== GlobalDB 5482: LP_HS_mF [DB] === +INTERFACE: + Static: + Datensortkopf : Struct + KOPF : Word := WORD#16#DB0B // Datenliste-Kennnung (DA) / Datensatzlänge in Word (1 - 128) + LAENGE : Int := 10 // Länge der Datenliste (maximale Anzahl der Datensätze) + STAMMDATEN : Int := 2 // Stammdatenlänge in Word (1 - 9) + Belegt06 : Int // reserviert von Datenliste + Belegt08 : Int // reserviert von Datenliste + Belegt10 : Int // reserviert von Datenliste + Belegt12 : Int // reserviert von Datenliste + AnzahlEintraege : Int // Anzahl der eingetragenen Datensätze + Reserve16 : Int // DBX 16.0 = Korrektur-Modus aktiv + Reserve18 : Int // DW 18 = Neues Ziel bei Korrektur-Modus + Teil : Array[1..10] of Struct + Daten : "UBT_Daten" + Endekennung : Word := WORD#16#DBEE // Datensort-Ende-Kennung (DBEE) diff --git a/=A01+UH07-KF00/Programmbausteine/Anlage/5_Leerpuffer/Sorter_Leerpuffer/LP_HS_oF.awl b/=A01+UH07-KF00/Programmbausteine/Anlage/5_Leerpuffer/Sorter_Leerpuffer/LP_HS_oF.awl new file mode 100644 index 0000000..c75d75e --- /dev/null +++ b/=A01+UH07-KF00/Programmbausteine/Anlage/5_Leerpuffer/Sorter_Leerpuffer/LP_HS_oF.awl @@ -0,0 +1,17 @@ +=== GlobalDB 5481: LP_HS_oF [DB] === +INTERFACE: + Static: + Datensortkopf : Struct + KOPF : Word := WORD#16#DB0B // Datenliste-Kennnung (DA) / Datensatzlänge in Word (1 - 128) + LAENGE : Int := 10 // Länge der Datenliste (maximale Anzahl der Datensätze) + STAMMDATEN : Int := 2 // Stammdatenlänge in Word (1 - 9) + Belegt06 : Int // reserviert von Datenliste + Belegt08 : Int // reserviert von Datenliste + Belegt10 : Int // reserviert von Datenliste + Belegt12 : Int // reserviert von Datenliste + AnzahlEintraege : Int // Anzahl der eingetragenen Datensätze + Reserve16 : Int // DBX 16.0 = Korrektur-Modus aktiv + Reserve18 : Int // DW 18 = Neues Ziel bei Korrektur-Modus + Teil : Array[1..10] of Struct + Daten : "UBT_Daten" + Endekennung : Word := WORD#16#DBEE // Datensort-Ende-Kennung (DBEE) diff --git a/=A01+UH07-KF00/Programmbausteine/Anlage/5_Leerpuffer/Sorter_Leerpuffer/LP_Sorter.awl b/=A01+UH07-KF00/Programmbausteine/Anlage/5_Leerpuffer/Sorter_Leerpuffer/LP_Sorter.awl new file mode 100644 index 0000000..d4ffc2b --- /dev/null +++ b/=A01+UH07-KF00/Programmbausteine/Anlage/5_Leerpuffer/Sorter_Leerpuffer/LP_Sorter.awl @@ -0,0 +1,358 @@ +=== FB 5423: LP_Sorter [STL] === +INTERFACE: + Input: + Output: + InOut: + Static: + Sorter_MB3305 : "MSepSorterRein" + Sync_BG3306 : "MStartSync" + Weiche_LP1 : "MWeiche_Sorter" + Weiche_LP2 : "MWeiche_Sorter" + Weiche_LP3 : "MWeiche_Sorter" + Weiche_LP4 : "MWeiche_Sorter" + Weiche_LP5 : "MWeiche_Sorter" + Weiche_LP6 : "MWeiche_Sorter" + Weiche_LP7 : "MWeiche_Sorter" + Weiche_LP8 : "MWeiche_Sorter" + Weiche_LP9 : "MWeiche_Sorter" + Weiche_LP10 : "MWeiche_Sorter" + Impuls_BG3374 : "MImpulsGeber" + Pseudo_IDX : DInt // Pseudo-Trolley-Nr. da kein Leser vor Sorter + Ohne_PC_fahren : Bool + Input: + Output: + InOut: + Static: + Dyn : Struct + GesamtSorterReset : Bool := 1 + Temp: + ErrQuit : Bool + ErrAnz : Bool + Antrieb : Bool + Stau : Bool + Start_Ok : Bool + SorterReset : Bool + Error_aktiv : Bool + Leer : Bool + Err_DW : DInt + Err_Bits : Int + Constant: + +--- NW 1: Systemzeug --- + A "DOutbound_Bereich".A01_UH07.AnlageEin + = Sorter_MB3305.Dyn.Sk.Auto_akt + + AN "DOutbound_Bereich".A01_UH07.BereichErr + = Sorter_MB3305.Dyn.Sk.Bereich_ok + +// Bereichshalt: + CLR // nicht verbaut + R Sorter_MB3305.Dyn.Sk.Bereich_ok + +// Sonderbetriebsarten Weichen: + CLR + = Weiche_LP1.Dyn.Status.Weichentest_aktiv + = Weiche_LP2.Dyn.Status.Weichentest_aktiv + = Weiche_LP3.Dyn.Status.Weichentest_aktiv + = Weiche_LP4.Dyn.Status.Weichentest_aktiv + = Weiche_LP5.Dyn.Status.Weichentest_aktiv + = Weiche_LP6.Dyn.Status.Weichentest_aktiv + = Weiche_LP7.Dyn.Status.Weichentest_aktiv + = Weiche_LP8.Dyn.Status.Weichentest_aktiv + = Weiche_LP9.Dyn.Status.Weichentest_aktiv + = Weiche_LP10.Dyn.Status.Weichentest_aktiv + + A Sync_BG3306.Dyn.Status.TeachModus_Aktiv + = Weiche_LP1.Dyn.Status.TeachModus_aktiv + = Weiche_LP2.Dyn.Status.TeachModus_aktiv + = Weiche_LP3.Dyn.Status.TeachModus_aktiv + = Weiche_LP4.Dyn.Status.TeachModus_aktiv + = Weiche_LP5.Dyn.Status.TeachModus_aktiv + = Weiche_LP6.Dyn.Status.TeachModus_aktiv + = Weiche_LP7.Dyn.Status.TeachModus_aktiv + = Weiche_LP8.Dyn.Status.TeachModus_aktiv + = Weiche_LP9.Dyn.Status.TeachModus_aktiv + = Weiche_LP10.Dyn.Status.TeachModus_aktiv + + CLR + = Sorter_MB3305.Dyn.Error.Korrektur_Modus_aktiv + + L 5474 // DLSeps + T "MW174" + L 5478 // DLWeichen + T "MW178" + +// Nach neuen Daten suchen: + A "1s-Impuls" + = "Weiche_NewData" + + +--- NW 2: Linien mit PLC_Ziel anfahren --- + A Ohne_PC_fahren + JCN En03 + + A "MB3121" + O "MB3123" + CU "Z102" + + L "Z102" + L 1 + I // Ja ! + ) + JC En03 + + SET + R "Z102" + + L Sorter_MB3305.Separator.Default_Ziel + L 0 // unbekannt ? + ==I + L 5030 // Beginn mit Ausfahrziel 1.Puffer + JC X399 + +// Nächste Weiche suchen: + L Sorter_MB3305.Separator.Default_Ziel + T "MW200" + +CALL FC "DatenOut" (SSDB:="MW178", SSDW:=0, PARA:=WORD#16#0E00, SEARCHDATEN:=P#M200.0, RE_VAL:="MB199", OUTDATEN:=P#M200.0, Position:="MW196") // Nach angegeben Datenbyte suchen (Abzweig-Ziel) + + AN "M199.7" // Datensatz ist nicht vorhanden + O "M208.0" // Letzte Weiche + L 0 // Neubeginn + JC X400 + +X398: CALL FC "DatenOut" (SSDB:="MW178", SSDW:=0, PARA:=WORD#16#FF00, SEARCHDATEN:=P#M200.0, RE_VAL:="MB199", OUTDATEN:=P#M200.0, Position:="MW196") // Nächsten Datensatz lesen + + L "MW206" // Weichentyp + L 178 // Sorterweiche ? + <>I // Nein! + O "M199.2" // Ende erreicht + L 0 + JC X400 + + A "M208.5" // Weiche für PLC-Ziel disabled ! + JC X398 + + L "MW226" + T Sorter_MB3305.Separator.Default_Ziel + + JU En03 + +// 1.Weiche checken: +X399: T "MW200" + +CALL FC "DatenOut" (SSDB:="MW178", SSDW:=0, PARA:=WORD#16#0E00, SEARCHDATEN:=P#M200.0, RE_VAL:="MB199", OUTDATEN:=P#M200.0, Position:="MW196") // Nach angegeben Datenbyte suchen (Abzweig-Ziel) + + AN "M199.7" // Datensatz ist nicht vorhanden + JC En03 + + A "M208.5" // Weiche für PLC-Ziel disabled ! + JC X398 + + L "MW226" +X400: T Sorter_MB3305.Separator.Default_Ziel + +En03: NOP 0 + + +--- NW 3: Störung vorhanden ? --- +CALL FC "Err_vorhanden" (Check_DB:=708, Anfangs_DW:=DINT#100, Ende_DW:=DINT#122, Stoerung:=Error_aktiv, ErrDW:=Err_DW, ErrBits:=Err_Bits) // Störungsanzeige + A Error_aktiv // s.o. + = Error_aktiv // Sorter Lager Weichen-Störung (Sorter-Antrieb gestoppt!) + + A "BG3306" // Verlassen-Sensor + L S5T#250MS + OffDelay "T540" + + +--- NW 4: Störung quittieren UH07 --- + A "DOutbound_Bereich".A01_UH07.StOk_aktiv + = ErrQuit + + +--- NW 5: Sorter-GesamtReset --- +// Sorter-Reset starten: + A "DLP_OmniFahren".Schleuse_3305.Dyn.Status.Reset_aktiv // Bei Schleusen-Reset -> Sorter mit resetten! + AN "DLP_Sorter".Sorter_MB3305.Dyn.GesamtSorterReset_aktiv + S "DLP_Sorter".Sorter_MB3305.Dyn.GesamtSorterReset + + +--- NW 6: Separator 3305 vor Sorter --- + L DB708.DBW102 // Err beim Synchronisieren + L 0 // Störung vorhanden ? + ==I // Nein ! + AN Sync_BG3306.Dyn.Stop // Rein-Separator stoppen + AN Error_aktiv // Sorter Batch Weichen-Störung (Sorter-Antrieb gestoppt!) + AN Sorter_MB3305.Dyn.GesamtSorterReset_aktiv + = Start_Ok + + SET // Da Leiste im Sep und Zusatz-Zylinder im Separator -> BT steht sofort sauber im Sep + S Sorter_MB3305.Dyn.BT_beruhigt // 1. einfahrender BügelTräger ist im Sep + + A "T540" + = Sorter_MB3305.B_AusSep // Entprellung Verlassen-Sensor + +// Triggern / Scanner-Auswertung über HW>VP_Omnifahren (FC128/27) +// Ziel über Default-Ziel (HW>VP_Ziel_FC, FC181) + +CALL FB "None" , (Separator_Nr:=3305, ErrQuit:=ErrQuit, B_VorSep:=?, B_ImSep:="BG3305", B_AusSep:=?, B_Beladen_im_Sep:=?, B_Pinsensor:="BG3374", B_Beladen_nach_Sep:=?, Start_Ok:=Start_Ok, Antrieb_aktiv:="MA0064", Antrieb_plus_aktiv:="MA0064", Y_Sep_Auf:="DLP_Zylinder".Sorter_3305.Stat.Ast, K_Sanner_triggern:=?, Sorter_Reset:=SorterReset, Error:=DB708.DBW100, Antrieb_start:="DEPtoLP_Antriebe".MA0064.Stat.A_start, Antrieb_plus_start:="DEPtoLP_Antriebe".MA0064.Stat.A_vor, Antrieb_stoppen:="DEPtoLP_Antriebe".MA0064.Stat.Stop_vor, hStOk:=ErrAnz) + +// Default-Ziel jeden Zyklus neu!: + L 0 + T Sorter_MB3305.Separator.Default_Ziel + + +--- NW 7: Reset ist aktiv --- + A Sorter_MB3305.Dyn.GesamtSorterReset_aktiv + = "7_HMI_Err_UH07_OB".Sorter_MB3305.Reset_aktiv + + A Sorter_MB3305.Dyn.GesamtSorterReset_aktiv + = Weiche_LP1.Dyn.Ohne_VerklemmKontrolle + = Weiche_LP2.Dyn.Ohne_VerklemmKontrolle + = Weiche_LP3.Dyn.Ohne_VerklemmKontrolle + = Weiche_LP4.Dyn.Ohne_VerklemmKontrolle + = Weiche_LP5.Dyn.Ohne_VerklemmKontrolle + = Weiche_LP6.Dyn.Ohne_VerklemmKontrolle + = Weiche_LP7.Dyn.Ohne_VerklemmKontrolle + = Weiche_LP8.Dyn.Ohne_VerklemmKontrolle + = Weiche_LP9.Dyn.Ohne_VerklemmKontrolle + = Weiche_LP10.Dyn.Ohne_VerklemmKontrolle + +// Diesen Sorterbereich zurücksetzen: + A SorterReset // Ein Zyklus + S Sync_BG3306.Dyn.Reset + S Weiche_LP1.Dyn.Status.Reset + S Weiche_LP2.Dyn.Status.Reset + S Weiche_LP3.Dyn.Status.Reset + S Weiche_LP4.Dyn.Status.Reset + S Weiche_LP5.Dyn.Status.Reset + S Weiche_LP6.Dyn.Status.Reset + S Weiche_LP7.Dyn.Status.Reset + S Weiche_LP8.Dyn.Status.Reset + S Weiche_LP9.Dyn.Status.Reset + S Weiche_LP10.Dyn.Status.Reset + + +--- NW 8: Inkremente über Zahnrad-Sensor --- +CALL FB "None" , (Ink_DB:=5483, B_Zaehlen:="BG3374", Antrieb_aktiv:="MA0064", Quit:=ErrQuit, Zeit_Signal_zu_lang:=?, Zeit_Kein_Signal:=?, Signal:=?, Err_Kein_Signal:="7_HMI_Err_UH07_OB".Impulsgeber_3374.Kein_Signal, Err_Signal_zu_lang:="7_HMI_Err_UH07_OB".Impulsgeber_3374.Signal_zu_lang) + + A( + O "7_HMI_Err_UH07_OB".Impulsgeber_3374.Kein_Signal + O "7_HMI_Err_UH07_OB".Impulsgeber_3374.Signal_zu_lang + ) + AN ErrQuit + S "DEPtoLP_Antriebe".MA0064.Stat.Stop_vor + + A( + O "7_HMI_Err_UH07_OB".Impulsgeber_3374.Kein_Signal + O "7_HMI_Err_UH07_OB".Impulsgeber_3374.Signal_zu_lang + ) + S ErrAnz + + +--- NW 9: Trolley synchronisieren BG3306 --- +// Teachen: Ref-Sensor ueber Sync-Sensor + A "BG3306" + AN Sync_BG3306.Dyn.Refpunkt_ok // Nur eimalige Auswertung + = Sync_BG3306.B_RefPunkt // uebergabe fuer unten + + A "MA0064" + L S5T#500ms + OffDelay "T543" + A "T543" + AN Sync_BG3306.Dyn.Status.TeachModus_Aktiv // sonst Probleme bei Doppelimpuls + O + A "MA0064" + A Sync_BG3306.Dyn.Status.TeachModus_Aktiv // sonst Probleme bei Doppelimpuls + = Antrieb + +// Keine Hauptstrangdaten vorhanden ? (Fuer Sync-Pkt): + L "LP_HS_oF".Datensortkopf.AnzahlEintraege + L "LP_HS_mF".Datensortkopf.AnzahlEintraege + +I + L 0 // Daten vorhanden ? + ==I // Nein ! + = "Hauptstrang_leer" // Keine Haupstrangdaten vorhanden -> Verklemm-Errors löschen + + A "BG3306" + L s5t#500ms // Da trotz Entprellung Doppel-Impulse + OffDelay "T544" + A "T544" + = Sync_BG3306.B_BT_da + +CALL FB "None" , (Sync_Nr:=3306, ErrQuit:=ErrQuit, B_BT_da:=?, B_RefPunkt:=?, B_TeachPunk:=?, Antrieb_aktiv:=Antrieb, Error:=DB708.DBW102, Antrieb_start:="DEPtoLP_Antriebe".MA0064.Stat.A_start, hStOk:=ErrAnz) // Teach-Sensor + + A Sync_BG3306.Dyn.Error.Inkrementalgeber + S "DEPtoLP_Antriebe".MA0064.Stat.Stop_vor + +// Keine Hauptstrangdaten vorhanden ?: + L "LP_HS_oF".Datensortkopf.AnzahlEintraege + L "LP_HS_mF".Datensortkopf.AnzahlEintraege + +I + L 0 // Daten vorhanden ? + ==I // Nein ! + = "Hauptstrang_leer" // Keine Haupstrangdaten vorhanden -> Verklemm-Errors löschen + +// Spezial, da Sorter-Antrieb über SorterRein-Sep geht!: (Sonst Antriebs-Stop wegen PS) + AN "Hauptstrang_leer" // Keine Haupstrangdaten vorhanden -> Verklemm-Errors löschen + O "MB3305" // Neuer Sort-Trolley kommt + O "BG3306" + L s5t#20s + OffDelay "T541" + + A "T541" // Alle Sort-Trolleys sind ins Puffer ausgefahren + S "DEPtoLP_Antriebe".MA0064.Stat.A_vor + + +--- NW 10: Weiche 3320 / Leerpuffer LP1 --- +CALL FB "None" , (Weichen_Nr:=1, KorrekturFaktor:=?, ErrQuit:=ErrQuit, Stau_Ausfahrtbereich:="DLP_Sensoren".Stau_LP1.Stat.B_Akt, B_Gerade:=?, B_Ausfahrt:="BG3320", Antrieb_aktiv:=Antrieb, Y_Weiche_abzweigen:="DLP_Zylinder".Weiche_LP1.Stat.Ast, Y_Weiche_geradeaus:=?, Error:=DB708.DBW104, Antrieb_start:="DEPtoLP_Antriebe".MA0064.Stat.A_start, Antrieb_stoppen:="DEPtoLP_Antriebe".MA0064.Stat.Stop_vor, hStOk:=ErrAnz) + + +--- NW 11: Weiche 3317 / Leerpuffer LP2 --- +CALL FB "None" , (Weichen_Nr:=2, KorrekturFaktor:=?, ErrQuit:=ErrQuit, Stau_Ausfahrtbereich:="DLP_Sensoren".Stau_LP2.Stat.B_Akt, B_Gerade:=?, B_Ausfahrt:="BG3317", Antrieb_aktiv:=Antrieb, Y_Weiche_abzweigen:="DLP_Zylinder".Weiche_LP2.Stat.Ast, Y_Weiche_geradeaus:=?, Error:=DB708.DBW106, Antrieb_start:="DEPtoLP_Antriebe".MA0064.Stat.A_start, Antrieb_stoppen:="DEPtoLP_Antriebe".MA0064.Stat.Stop_vor, hStOk:=ErrAnz) + + +--- NW 12: Weiche 3316 / Leerpuffer LP3 --- +CALL FB "None" , (Weichen_Nr:=3, KorrekturFaktor:=?, ErrQuit:=ErrQuit, Stau_Ausfahrtbereich:="DLP_Sensoren".Stau_LP3.Stat.B_Akt, B_Gerade:=?, B_Ausfahrt:="BG3316", Antrieb_aktiv:=Antrieb, Y_Weiche_abzweigen:="DLP_Zylinder".Weiche_LP3.Stat.Ast, Y_Weiche_geradeaus:=?, Error:=DB708.DBW108, Antrieb_start:="DEPtoLP_Antriebe".MA0064.Stat.A_start, Antrieb_stoppen:="DEPtoLP_Antriebe".MA0064.Stat.Stop_vor, hStOk:=ErrAnz) + + +--- NW 13: Weiche 3315 / Leerpuffer LP4 --- +CALL FB "None" , (Weichen_Nr:=4, KorrekturFaktor:=?, ErrQuit:=ErrQuit, Stau_Ausfahrtbereich:="DLP_Sensoren".Stau_LP4.Stat.B_Akt, B_Gerade:=?, B_Ausfahrt:="BG3315", Antrieb_aktiv:=Antrieb, Y_Weiche_abzweigen:="DLP_Zylinder".Weiche_LP4.Stat.Ast, Y_Weiche_geradeaus:=?, Error:=DB708.DBW110, Antrieb_start:="DEPtoLP_Antriebe".MA0064.Stat.A_start, Antrieb_stoppen:="DEPtoLP_Antriebe".MA0064.Stat.Stop_vor, hStOk:=ErrAnz) + + +--- NW 14: Weiche 3314 / Leerpuffer LP5 --- +CALL FB "None" , (Weichen_Nr:=5, KorrekturFaktor:=?, ErrQuit:=ErrQuit, Stau_Ausfahrtbereich:="DLP_Sensoren".Stau_LP5.Stat.B_Akt, B_Gerade:=?, B_Ausfahrt:="BG3314", Antrieb_aktiv:=Antrieb, Y_Weiche_abzweigen:="DLP_Zylinder".Weiche_LP5.Stat.Ast, Y_Weiche_geradeaus:=?, Error:=DB708.DBW112, Antrieb_start:="DEPtoLP_Antriebe".MA0064.Stat.A_start, Antrieb_stoppen:="DEPtoLP_Antriebe".MA0064.Stat.Stop_vor, hStOk:=ErrAnz) + + +--- NW 15: Weiche 3313 / Leerpuffer LP6 --- +CALL FB "None" , (Weichen_Nr:=6, KorrekturFaktor:=?, ErrQuit:=ErrQuit, Stau_Ausfahrtbereich:="DLP_Sensoren".Stau_LP6.Stat.B_Akt, B_Gerade:=?, B_Ausfahrt:="BG3313", Antrieb_aktiv:=Antrieb, Y_Weiche_abzweigen:="DLP_Zylinder".Weiche_LP6.Stat.Ast, Y_Weiche_geradeaus:=?, Error:=DB708.DBW114, Antrieb_start:="DEPtoLP_Antriebe".MA0064.Stat.A_start, Antrieb_stoppen:="DEPtoLP_Antriebe".MA0064.Stat.Stop_vor, hStOk:=ErrAnz) + + +--- NW 16: Weiche 3312 / Leerpuffer LP7 --- +CALL FB "None" , (Weichen_Nr:=7, KorrekturFaktor:=?, ErrQuit:=ErrQuit, Stau_Ausfahrtbereich:="DLP_Sensoren".Stau_LP7.Stat.B_Akt, B_Gerade:=?, B_Ausfahrt:="BG3312", Antrieb_aktiv:=Antrieb, Y_Weiche_abzweigen:="DLP_Zylinder".Weiche_LP7.Stat.Ast, Y_Weiche_geradeaus:=?, Error:=DB708.DBW116, Antrieb_start:="DEPtoLP_Antriebe".MA0064.Stat.A_start, Antrieb_stoppen:="DEPtoLP_Antriebe".MA0064.Stat.Stop_vor, hStOk:=ErrAnz) + + +--- NW 17: Weiche 3311 / Leerpuffer LP8 --- +CALL FB "None" , (Weichen_Nr:=8, KorrekturFaktor:=?, ErrQuit:=ErrQuit, Stau_Ausfahrtbereich:="DLP_Sensoren".Stau_LP8.Stat.B_Akt, B_Gerade:=?, B_Ausfahrt:="BG3311", Antrieb_aktiv:=Antrieb, Y_Weiche_abzweigen:="DLP_Zylinder".Weiche_LP8.Stat.Ast, Y_Weiche_geradeaus:=?, Error:=DB708.DBW118, Antrieb_start:="DEPtoLP_Antriebe".MA0064.Stat.A_start, Antrieb_stoppen:="DEPtoLP_Antriebe".MA0064.Stat.Stop_vor, hStOk:=ErrAnz) + + +--- NW 18: Weiche 3310 / Leerpuffer LP9 --- +CALL FB "None" , (Weichen_Nr:=9, KorrekturFaktor:=?, ErrQuit:=ErrQuit, Stau_Ausfahrtbereich:="DLP_Sensoren".Stau_LP9.Stat.B_Akt, B_Gerade:=?, B_Ausfahrt:="BG3310", Antrieb_aktiv:=Antrieb, Y_Weiche_abzweigen:="DLP_Zylinder".Weiche_LP9.Stat.Ast, Y_Weiche_geradeaus:=?, Error:=DB708.DBW120, Antrieb_start:="DEPtoLP_Antriebe".MA0064.Stat.A_start, Antrieb_stoppen:="DEPtoLP_Antriebe".MA0064.Stat.Stop_vor, hStOk:=ErrAnz) + + +--- NW 19: Pseudo-Weiche / Leerpuffer LP10 --- +CALL FB "None" , (Weichen_Nr:=10, KorrekturFaktor:=?, ErrQuit:=ErrQuit, Stau_Ausfahrtbereich:="DLP_Sensoren".Stau_LP10.Stat.B_Akt, B_Gerade:=?, B_Ausfahrt:="BG3307", Antrieb_aktiv:=Antrieb, Y_Weiche_abzweigen:="DLP_Zylinder".Weiche_LP10.Stat.Ast, Y_Weiche_geradeaus:=?, Error:=DB708.DBW122, Antrieb_start:="DEPtoLP_Antriebe".MA0064.Stat.A_start, Antrieb_stoppen:="DEPtoLP_Antriebe".MA0064.Stat.Stop_vor, hStOk:=ErrAnz) + + +--- NW 20: Störungen anzeigen UH07 --- + A ErrAnz + S "DOutbound_Bereich".A01_UH07.StOk_blinken + + +--- NW 21: Ende --- + BE + diff --git a/=A01+UH07-KF00/Programmbausteine/Anlage/5_Leerpuffer/Sorter_Leerpuffer/LP_TravelFIFO.awl b/=A01+UH07-KF00/Programmbausteine/Anlage/5_Leerpuffer/Sorter_Leerpuffer/LP_TravelFIFO.awl new file mode 100644 index 0000000..31432e0 --- /dev/null +++ b/=A01+UH07-KF00/Programmbausteine/Anlage/5_Leerpuffer/Sorter_Leerpuffer/LP_TravelFIFO.awl @@ -0,0 +1,33 @@ +=== GlobalDB 5480: LP_TravelFIFO [DB] === +INTERFACE: + Static: + Travel_FIFO_BG3306 : Struct + FIFO : Struct + KOPF : Word := WORD#16#FF0B // Fifo-Kennung (FF) / Datensatzlänge in Word (1 - 128) + LAENGE : Int := 1 // Länge des Fifo (maximale Anzahl der Datensätze) + BRINGZEIGER : Int // Zeiger, wohin nächster Eintrag gespeichert wird + HOLZEIGER : Int // Zeiger, woher nächste Daten geholt werden + ANZAHL : Int // Anzahl der Datensätze (eingetragene) + STATUS : Word // Status des Fifo + ZUSATZDW1 : Int // Speicherzelle für 1.Zusatzdaten + ZUSATZDW2 : Int // Speicherzelle für 2.Zusatzdaten + ZUSATZDW3 : Int // Speicherzelle für 3.Zusatzdaten + ZUSATZDW4 : Int // Speicherzelle für 4.Zusatzdaten + RE_VAL_IN : Byte // Rückmeldung nach FC80-Aufruf + RE_VAL_OUT : Byte // Rückmeldung nach FC81-Aufruf + RE_VAL_SEARCH : Byte // Rückmeldung nach FC82-Aufruf + RE_VAL_CHANGE : Byte // Rückmeldung nach FC83-Aufruf + Frei3 : Int + Frei4 : Int + Frei5 : Int + OP_Anzeige_Datensatz : Int // Bei Ringspeicher -1,-2,...-Datensatz anzeigen + Datensatz : Int // Zu lesender Datenstatz (OP-Zeug)********************************* + Taste_Daten_minus : Bool // Taste Datensatz -1 lesen + Taste_Daten_plus : Bool // Taste Datensatz +1 lesen + Taste_FIFO_Del : Bool // Taste Fifo löschen + Zustand : Int // Zustand + Error : Int // Error + Teil : Array[1..1] of Struct + Daten : "UBT_Daten" + Endekennung : Word := WORD#16#FFEE // Fifo-Ende-Kennung (FFEE) + Res : Array[1..18] of Int diff --git a/=A01+UH07-KF00/Programmbausteine/Anlage/5_Leerpuffer/Sorter_Leerpuffer/LP_Zaehler.awl b/=A01+UH07-KF00/Programmbausteine/Anlage/5_Leerpuffer/Sorter_Leerpuffer/LP_Zaehler.awl new file mode 100644 index 0000000..e22c997 --- /dev/null +++ b/=A01+UH07-KF00/Programmbausteine/Anlage/5_Leerpuffer/Sorter_Leerpuffer/LP_Zaehler.awl @@ -0,0 +1,20 @@ +=== GlobalDB 5483: LP_Zaehler [DB] === +INTERFACE: + Static: + Sick_ABS_single : Struct + Encoder : "GeberST81" + LastSingelturn_Wert : DInt // Speicherung des letzten Singelturn_Wert + Resolution : DInt := 2400 // Auflösung Inc pro Umgrehung + Frei bis DW70 : Array[1..23] of Int + Speicherung : DInt // Speicherung des aktuellen Zählerwerts (für Neustart) + Neustart : Bool // Neustart: Zählerwert neu laden + Ueberlauf : Bool // Überlauf: Zählerwert zurücksetzen + Zaehler_setzen : Bool // Zähler neu setzen + Lauf_Flag : Bool // Zähl-Lauf mit Flag ist aktiv + Flag_Lauf_fertig : Bool // Flag-Lauf wurde beendet + Ohne_Lauf_fertig : Bool // Ohne Flag-Lauf wurde beendet + Null_laden : Bool // Zähler mit 0000 laden + Laden_aktiv : Bool // Zähler laden ist aktiv + No_Save : Bool // Zählerspeicherung einfrieren + Max_Wert : DInt := 2000000 // Maximal erlaubter Zählwert + Ink_Wert : DInt := DINT#1 // Aktueller Zählerwert diff --git a/=A01+UH07-KF00/Programmbausteine/Anlage/6_LPtoHW/Basics/DLPtoHW_Antriebe.awl b/=A01+UH07-KF00/Programmbausteine/Anlage/6_LPtoHW/Basics/DLPtoHW_Antriebe.awl new file mode 100644 index 0000000..6c12b8d --- /dev/null +++ b/=A01+UH07-KF00/Programmbausteine/Anlage/6_LPtoHW/Basics/DLPtoHW_Antriebe.awl @@ -0,0 +1,15 @@ +=== InstanceDB 6199: DLPtoHW_Antriebe [DB] === +INTERFACE: + Input: + Output: + InOut: + Static: + MA0065 : "MAntrieb_PowerSave" + MA0066 : "MAntrieb_PowerSave" + MA0264 : "MAntrieb_PowerSave" + MA0265 : "MAntrieb_PowerSave" + MA0266 : "MAntrieb_PowerSave" + MA0267 : "MAntrieb_PowerSave" + MA0270 : "MAntrieb_PowerSave" + MA0202 : "MAntrieb_PowerSave" + MA0203 : "MAntrieb_PowerSave" diff --git a/=A01+UH07-KF00/Programmbausteine/Anlage/6_LPtoHW/Basics/DLPtoHW_Sensoren.awl b/=A01+UH07-KF00/Programmbausteine/Anlage/6_LPtoHW/Basics/DLPtoHW_Sensoren.awl new file mode 100644 index 0000000..c5c802f --- /dev/null +++ b/=A01+UH07-KF00/Programmbausteine/Anlage/6_LPtoHW/Basics/DLPtoHW_Sensoren.awl @@ -0,0 +1,24 @@ +=== InstanceDB 6190: DLPtoHW_Sensoren [DB] === +INTERFACE: + Input: + Output: + InOut: + Static: + An_BG3323 : "MSensoren" + Sack_BG3324 : "MSensoren" + Stau_BG3343 : "MSensoren" + An_BG3343 : "MSensoren" + Stau_BG3344 : "MSensoren" + An_BG3344 : "MSensoren" + Stau_BG3326 : "MSensoren" + Stau_BG4220 : "MSensoren" + Sack_BG4222 : "MSensoren" + Stau_BG4224 : "MSensoren" + Stau_BG4226 : "MSensoren" + Stau_BG4231 : "MSensoren" + Stau_BG4233 : "MSensoren" + Stau_BG4234 : "MSensoren" + Stau_BG3720 : "MSensoren" + Stau_BG3721 : "MSensoren" + Stau_BG3723 : "MSensoren" + Fährt_zu_UH06 : "MSensoren" diff --git a/=A01+UH07-KF00/Programmbausteine/Anlage/6_LPtoHW/Basics/DLPtoHW_Zylinder.awl b/=A01+UH07-KF00/Programmbausteine/Anlage/6_LPtoHW/Basics/DLPtoHW_Zylinder.awl new file mode 100644 index 0000000..5ec5344 --- /dev/null +++ b/=A01+UH07-KF00/Programmbausteine/Anlage/6_LPtoHW/Basics/DLPtoHW_Zylinder.awl @@ -0,0 +1,16 @@ +=== InstanceDB 6192: DLPtoHW_Zylinder [DB] === +INTERFACE: + Input: + Output: + InOut: + Static: + Schleuse_3342 : "MZylinder" + Schleuse_3323 : "MZylinder" + Schleuse_3345 : "MZylinder" + Schleuse_3325 : "MZylinder" + Schleuse_4221 : "MZylinder" + Weiche_4223 : "MZylinder" + Schleuse_4227 : "MZylinder" + Schleuse_4235 : "MZylinder" + Schleuse_3722 : "MZylinder" + Stopper_3324 : "MZylinder" diff --git a/=A01+UH07-KF00/Programmbausteine/Anlage/6_LPtoHW/Basics/LPtoHW_Antriebe.awl b/=A01+UH07-KF00/Programmbausteine/Anlage/6_LPtoHW/Basics/LPtoHW_Antriebe.awl new file mode 100644 index 0000000..93821ae --- /dev/null +++ b/=A01+UH07-KF00/Programmbausteine/Anlage/6_LPtoHW/Basics/LPtoHW_Antriebe.awl @@ -0,0 +1,146 @@ +=== FB 6199: LPtoHW_Antriebe [STL] === +INTERFACE: + Input: + Output: + InOut: + Static: + MA0065 : "MAntrieb_PowerSave" + MA0066 : "MAntrieb_PowerSave" + MA0264 : "MAntrieb_PowerSave" + MA0265 : "MAntrieb_PowerSave" + MA0266 : "MAntrieb_PowerSave" + MA0267 : "MAntrieb_PowerSave" + MA0270 : "MAntrieb_PowerSave" + MA0202 : "MAntrieb_PowerSave" + MA0203 : "MAntrieb_PowerSave" + Temp: + Auto : Bool // Automatik Linie ist aktiv + Hand : Bool // Hand Linie ist aktiv + BereichErr : Bool // Bereichsstörung -> Antrieb stoppen + QKontroll : Bool // Frequenzumrichter schon 3s Netz EIN + FuKontroll : Bool // Frequenzumrichter schon 3s Netz EIN + Quit : Bool // Motorschutz-Störung quittieren + Qok : Bool // Motorschutz ok + Jog1 : Bool // Geschwindigkeit 1 + Jog2 : Bool // Geschwindigkeit 2 + Betrieb : Bool // Betriebsart aktiv + FC105_RET : Word // Returnwert von FC105 + Antrieb1 : Bool // Antrieb dazuschalten + Antrieb2 : Bool // Antrieb dazuschalten + F1 : Bool // Geschwindigkeit 1 aktiviert + F2 : Bool // Geschwindigkeit 2 aktiviert + F3 : Bool // Geschwindigkeit 3 aktiviert + Constant: + +--- NW 1: Übergabe des Bereichstatus System UH07/A01 --- + A "DOutbound_Bereich".A01_UH07.Automatik + AN "DOutbound_Bereich".A01_UH07.Handbetrieb + = Auto + + CLR + = Hand + + A "DOutbound_Bereich".A01_UH07.BereichErr + AN "SGes".Simulation_ohne_HW_aktiv + = BereichErr + + A "T197" + = QKontroll + = FuKontroll + + A "DOutbound_Bereich".A01_UH07.StOk_aktiv + = Quit + + +--- NW 2: MA0065 --- +CALL FB "None" , (Automatik:=Auto, Handbetrieb:=Hand, BereichErr:=BereichErr, Q:="FC0065", Ptc:=TRUE, Fu:=?, QKontroll:=QKontroll, FuKontroll:=?, ErrQuit:=Quit, Kontroll_B:=?, T_Nachlauf:=?, Antriebrueck:=?, Antriebvor:="MA0065", Jog1:=?, Jog2:=?, Analog:=?, QErr:="7_HMI_Err_UH07_OB".QErr.MA0065, PtcErr:=?, FuErr:=?, Err_Antrieb_verklemmt:=?) + + + +--- NW 3: MA0066 --- +CALL FB "None" , (Automatik:=Auto, Handbetrieb:=Hand, BereichErr:=BereichErr, Q:="FC0066", Ptc:=TRUE, Fu:=?, QKontroll:=QKontroll, FuKontroll:=?, ErrQuit:=Quit, Kontroll_B:=?, T_Nachlauf:=?, Antriebrueck:=?, Antriebvor:="MA0066", Jog1:=?, Jog2:=?, Analog:=?, QErr:="7_HMI_Err_UH07_OB".QErr.MA0066, PtcErr:=?, FuErr:=?, Err_Antrieb_verklemmt:=?) + + + +--- NW 4: Übergabe des Bereichstatus System UC073/A01 --- + A "DOutbound_Bereich".A01_UH07.Automatik + AN "DOutbound_Bereich".A01_UH07.Handbetrieb + = Auto + + CLR + = Hand + + A "DOutbound_Bereich".A01_UC073.BereichErr + AN "SGes".Simulation_ohne_HW_aktiv + = BereichErr + + A "T193" + = QKontroll + = FuKontroll + + A "DOutbound_Bereich".A01_UC073.StOk_aktiv + = Quit + + +--- NW 5: MA0264 --- +CALL FB "None" , (Automatik:=Auto, Handbetrieb:=Hand, BereichErr:=BereichErr, Q:="FC0264", Ptc:=TRUE, Fu:=?, QKontroll:=QKontroll, FuKontroll:=?, ErrQuit:=Quit, Kontroll_B:=?, T_Nachlauf:=?, Antriebrueck:=?, Antriebvor:="MA0264", Jog1:=?, Jog2:=?, Analog:=?, QErr:="7_HMI_Err_UH07_OB".QErr.MA0264, PtcErr:=?, FuErr:=?, Err_Antrieb_verklemmt:=?) + + + +--- NW 6: MA0265 --- +CALL FB "None" , (Automatik:=Auto, Handbetrieb:=Hand, BereichErr:=BereichErr, Q:="FC0265", Ptc:=TRUE, Fu:=?, QKontroll:=QKontroll, FuKontroll:=?, ErrQuit:=Quit, Kontroll_B:=?, T_Nachlauf:=90, Antriebrueck:=?, Antriebvor:="MA0265", Jog1:=?, Jog2:=?, Analog:=?, QErr:="7_HMI_Err_UH07_OB".QErr.MA0265, PtcErr:=?, FuErr:=?, Err_Antrieb_verklemmt:=?) + + + +--- NW 7: MA0266 --- +CALL FB "None" , (Automatik:=Auto, Handbetrieb:=Hand, BereichErr:=BereichErr, Q:="FC0266", Ptc:=TRUE, Fu:=?, QKontroll:=QKontroll, FuKontroll:=?, ErrQuit:=Quit, Kontroll_B:=?, T_Nachlauf:=?, Antriebrueck:=?, Antriebvor:="MA0266", Jog1:=?, Jog2:=?, Analog:=?, QErr:="7_HMI_Err_UH07_OB".QErr.MA0266, PtcErr:=?, FuErr:=?, Err_Antrieb_verklemmt:=?) + + + +--- NW 8: MA0267 --- +CALL FB "None" , (Automatik:=Auto, Handbetrieb:=Hand, BereichErr:=BereichErr, Q:="FC0267", Ptc:=TRUE, Fu:=?, QKontroll:=QKontroll, FuKontroll:=?, ErrQuit:=Quit, Kontroll_B:=?, T_Nachlauf:=?, Antriebrueck:=?, Antriebvor:="MA0267", Jog1:=?, Jog2:=?, Analog:=?, QErr:="7_HMI_Err_UH07_OB".QErr.MA0267, PtcErr:=?, FuErr:=?, Err_Antrieb_verklemmt:=?) + + + +--- NW 9: MA0270 --- +CALL FB "None" , (Automatik:=Auto, Handbetrieb:=Hand, BereichErr:=BereichErr, Q:="FC0270", Ptc:=TRUE, Fu:=?, QKontroll:=QKontroll, FuKontroll:=?, ErrQuit:=Quit, Kontroll_B:=?, T_Nachlauf:=?, Antriebrueck:=?, Antriebvor:="MA0270", Jog1:=?, Jog2:=?, Analog:=?, QErr:="7_HMI_Err_UH07_OB".QErr.MA0270, PtcErr:=?, FuErr:=?, Err_Antrieb_verklemmt:=?) + + + +--- NW 10: Übergabe des Bereichstatus System UC072/A01 --- + A "DOutbound_Bereich".A01_UH07.Automatik + AN "DOutbound_Bereich".A01_UH07.Handbetrieb + = Auto + + CLR + = Hand + + A( + O "DOutbound_Bereich".A01_UC072.BereichErr + O "DOutbound_Bereich".A01_UZ7201.Area_Stop + O "DOutbound_Bereich".A01_UZ7202.Area_Stop + ) + AN "SGes".Simulation_ohne_HW_aktiv + = BereichErr + + A "T192" + = QKontroll + = FuKontroll + + A "DOutbound_Bereich".A01_UC072.StOk_aktiv + = Quit + + +--- NW 11: MA0202 --- +CALL FB "None" , (Automatik:=Auto, Handbetrieb:=Hand, BereichErr:=BereichErr, Q:="FC0202", Ptc:=TRUE, Fu:=?, QKontroll:=QKontroll, FuKontroll:=?, ErrQuit:=Quit, Kontroll_B:=?, T_Nachlauf:=?, Antriebrueck:=?, Antriebvor:="MA0202", Jog1:=?, Jog2:=?, Analog:=?, QErr:="7_HMI_Err_UH07_OB".QErr.MA0202, PtcErr:=?, FuErr:=?, Err_Antrieb_verklemmt:=?) + + + +--- NW 12: MA0203 --- +CALL FB "None" , (Automatik:=Auto, Handbetrieb:=Hand, BereichErr:=BereichErr, Q:="FC0203", Ptc:=TRUE, Fu:=?, QKontroll:=QKontroll, FuKontroll:=?, ErrQuit:=Quit, Kontroll_B:=?, T_Nachlauf:=?, Antriebrueck:=?, Antriebvor:="MA0203", Jog1:=?, Jog2:=?, Analog:=?, QErr:="7_HMI_Err_UH07_OB".QErr.MA0203, PtcErr:=?, FuErr:=?, Err_Antrieb_verklemmt:=?) + + + +--- NW 13: Ende --- + BE + diff --git a/=A01+UH07-KF00/Programmbausteine/Anlage/6_LPtoHW/Basics/LPtoHW_Sensoren.awl b/=A01+UH07-KF00/Programmbausteine/Anlage/6_LPtoHW/Basics/LPtoHW_Sensoren.awl new file mode 100644 index 0000000..50de7af --- /dev/null +++ b/=A01+UH07-KF00/Programmbausteine/Anlage/6_LPtoHW/Basics/LPtoHW_Sensoren.awl @@ -0,0 +1,145 @@ +=== FB 6190: LPtoHW_Sensoren [STL] === +INTERFACE: + Input: + Output: + InOut: + Static: + An_BG3323 : "MSensoren" // Trolley am Sensor BG3323 + Sack_BG3324 : "MSensoren" // Sack erkannt + Stau_BG3343 : "MSensoren" // Stau am Sensor Einfahrt MA0065 + An_BG3343 : "MSensoren" // Stau am Sensor Einfahrt MA0065 + Stau_BG3344 : "MSensoren" // Stau am Sensor Einfahrt MA0065 + An_BG3344 : "MSensoren" // Stau am Sensor Einfahrt MA0065 + Stau_BG3326 : "MSensoren" // Stau am Sensor Einfahrt MA0066 + Stau_BG4220 : "MSensoren" // Stau am Sensor Einfahrt MA0264 + Sack_BG4222 : "MSensoren" // Sack erkannt + Stau_BG4224 : "MSensoren" // Stau am Sensor Einfahrt MA0265 + Stau_BG4226 : "MSensoren" // Stau am Sensor Einfahrt MA0266 + Stau_BG4231 : "MSensoren" // Stau am Sensor Einfahrt MA0267 + Stau_BG4233 : "MSensoren" // Stau am Sensor Einfahrt MA0270 + Stau_BG4234 : "MSensoren" // Stau am Sensor Mitte MA0270 + Stau_BG3720 : "MSensoren" // Stau am Sensor hinter BST2 + Stau_BG3721 : "MSensoren" // Stau am Sensor Einfahrt MA0203 + Stau_BG3723 : "MSensoren" // Stau am Sensor Ausfahrt MB3722 + Fährt_zu_UH06 : "MSensoren" + Temp: + T_Ein : Int // Vorgabe Einschaltverzögerung + T_Aus : Int // Zwischenspeicher Ausschaltverzögerung + F1 : Bool // Geschwindigkeit 1 aktiviert + F2 : Bool // Geschwindigkeit 2 aktiviert + F3 : Bool // Geschwindigkeit 3 aktiviert + ESensor : Bool // Sensoren + Antrieb : Bool + VReal : Real // GeschwindigkeitinReal + Zeit : Int // Zeit für Ausschaltverzögerung LT1100 + Aktiv : Bool // Zeit aktivieren + Constant: + +--- NW 1: Sensoren entprellen --- + A "BG3323" + AN "MB3323" + = ESensor + +CALL FB "None" , (ESensor:=ESensor, T_Ein:=1, T_Aus:=300, tein_aktiv:=1, taus_aktiv:=1) // Falls Trolley entnommen wurde + + A "MB3323" // Beim Öffnen löschen + A "MA0065" + R "DLPtoHW_Sensoren".An_BG3323.Stat.B_Akt + + +--- NW 2: Sensoren entprellen --- + AN "MB3323" // Alt-Trolley noch beim Ausfahren + A( + O "MA0065" + O "BG3323" + ) + = Aktiv + +CALL FB "None" , (ESensor:="BG3324", T_Ein:=10, T_Aus:=0, tein_aktiv:=Aktiv, taus_aktiv:=1) + + +--- NW 3: Sensoren entprellen --- +CALL FB "None" , (ESensor:="BG3343", T_Ein:=80, T_Aus:=11, tein_aktiv:=TRUE, taus_aktiv:=TRUE) + + +--- NW 4: Sensoren entprellen --- +CALL FB "None" , (ESensor:="BG3343", T_Ein:=1, T_Aus:=200, tein_aktiv:=TRUE, taus_aktiv:="MA0065") + + +--- NW 5: Sensoren entprellen --- +CALL FB "None" , (ESensor:="BG3344", T_Ein:=80, T_Aus:=11, tein_aktiv:=TRUE, taus_aktiv:=TRUE) + + +--- NW 6: Sensoren entprellen --- +CALL FB "None" , (ESensor:="BG3344", T_Ein:=1, T_Aus:=200, tein_aktiv:=TRUE, taus_aktiv:="MA0065") + + +--- NW 7: Sensoren entprellen --- +CALL FB "None" , (ESensor:="BG3326", T_Ein:=1, T_Aus:=11, tein_aktiv:=TRUE, taus_aktiv:=TRUE) + + +--- NW 8: Sensoren entprellen --- + AN "BG4221" + = Aktiv + +CALL FB "None" , (ESensor:="BG4220", T_Ein:=80, T_Aus:=11, tein_aktiv:=TRUE, taus_aktiv:=Aktiv) // Trolley wieder aus Schleuse 4221 + + +--- NW 9: Sensoren entprellen --- + AN "MB4221" // Alt-Trolley noch beim Ausfahren + A( + O "MA0264" + O "BG4221" + ) + = Aktiv + +CALL FB "None" , (ESensor:="BG4222", T_Ein:=1, T_Aus:=11, tein_aktiv:=Aktiv, taus_aktiv:="MB4221") + + +--- NW 10: Sensoren entprellen --- +CALL FB "None" , (ESensor:="BG4224", T_Ein:=80, T_Aus:=11, tein_aktiv:=TRUE, taus_aktiv:=TRUE) + + +--- NW 11: Sensoren entprellen --- +CALL FB "None" , (ESensor:="BG4226", T_Ein:=80, T_Aus:=11, tein_aktiv:=TRUE, taus_aktiv:=TRUE) + + +--- NW 12: Sensoren entprellen --- +CALL FB "None" , (ESensor:="BG4231", T_Ein:=1, T_Aus:=11, tein_aktiv:=TRUE, taus_aktiv:=TRUE) + + +--- NW 13: Sensoren entprellen --- +CALL FB "None" , (ESensor:="BG4233", T_Ein:=1, T_Aus:=11, tein_aktiv:=TRUE, taus_aktiv:=TRUE) + + +--- NW 14: Sensoren entprellen --- +CALL FB "None" , (ESensor:="BG4234", T_Ein:=1, T_Aus:=11, tein_aktiv:=TRUE, taus_aktiv:=TRUE) + + +--- NW 15: Sensoren entprellen --- +CALL FB "None" , (ESensor:="BG3720", T_Ein:=1, T_Aus:=30, tein_aktiv:=TRUE, taus_aktiv:=TRUE) + + +--- NW 16: Sensoren entprellen --- +CALL FB "None" , (ESensor:="BG3721", T_Ein:=80, T_Aus:=11, tein_aktiv:=TRUE, taus_aktiv:=TRUE) + + +--- NW 17: Sensoren entprellen --- +CALL FB "None" , (ESensor:="BG3723", T_Ein:=80, T_Aus:=11, tein_aktiv:=TRUE, taus_aktiv:=TRUE) + + +--- NW 18: Sensoren entprellen --- + A "MB3722" + O "BG3723" + = ESensor + + A "MA0203" + A "DSchnittstelle_zu_AMR".From_UH06.MA0203_aktiv + = Aktiv + +CALL FB "None" , (ESensor:=ESensor, T_Ein:=1, T_Aus:=300, tein_aktiv:=TRUE, taus_aktiv:=Aktiv) // 30s Nachlauf + + +--- NW 19: Ende --- + BE + diff --git a/=A01+UH07-KF00/Programmbausteine/Anlage/6_LPtoHW/Basics/LPtoHW_Zylinder.awl b/=A01+UH07-KF00/Programmbausteine/Anlage/6_LPtoHW/Basics/LPtoHW_Zylinder.awl new file mode 100644 index 0000000..b45a20d --- /dev/null +++ b/=A01+UH07-KF00/Programmbausteine/Anlage/6_LPtoHW/Basics/LPtoHW_Zylinder.awl @@ -0,0 +1,102 @@ +=== FB 6192: LPtoHW_Zylinder [STL] === +INTERFACE: + Input: + Output: + InOut: + Static: + Schleuse_3342 : "MZylinder" // + Schleuse_3323 : "MZylinder" // + Schleuse_3345 : "MZylinder" // + Schleuse_3325 : "MZylinder" // + Schleuse_4221 : "MZylinder" + Weiche_4223 : "MZylinder" // + Schleuse_4227 : "MZylinder" // + Schleuse_4235 : "MZylinder" // + Schleuse_3722 : "MZylinder" // + Stopper_3324 : "MZylinder" // + Temp: + Auto : Bool // Automatik ist aktiv + Hand : Bool // Hand ist aktiv + ZylAst : Bool // Zylinder ansteuern + Constant: + +--- NW 1: Übergabe des Bereichstatus System UH07/A01 --- + A "DOutbound_Bereich".A01_UH07.Automatik + AN "DOutbound_Bereich".A01_UH07.Handbetrieb + = Auto + + A "DOutbound_Bereich".A01_UH07.BereichErr + AN "SGes".Simulation_ohne_HW_aktiv + JC Next // Zylinder-Stellung nicht mehr ändern + + +--- NW 2: Schleuse_3342 --- +CALL FB "None" , (Automatik:=Auto, Handbetrieb:=FALSE, T_Ast:=0, T_Gst:=5, ZylAst:="MB3342", ZylGst:=?) + + +--- NW 3: Schleuse_3323 --- +CALL FB "None" , (Automatik:=Auto, Handbetrieb:=FALSE, T_Ast:=0, T_Gst:=5, ZylAst:="MB3323", ZylGst:=?) + + +--- NW 4: Schleuse_3345 --- +CALL FB "None" , (Automatik:=Auto, Handbetrieb:=FALSE, T_Ast:=0, T_Gst:=5, ZylAst:="MB3345", ZylGst:=?) + + +--- NW 5: Schleuse_3325 --- +CALL FB "None" , (Automatik:=Auto, Handbetrieb:=FALSE, T_Ast:=0, T_Gst:=5, ZylAst:="MB3325", ZylGst:=?) + + +--- NW 6: Stopper 3324 --- +CALL FB "None" , (Automatik:=Auto, Handbetrieb:=FALSE, T_Ast:=0, T_Gst:=5, ZylAst:="MB3324", ZylGst:=?) + + +--- NW 7: Übergabe des Bereichstatus System UC073/A01 --- +Next: A "DOutbound_Bereich".A01_UH07.Automatik + AN "DOutbound_Bereich".A01_UH07.Handbetrieb + = Auto + + A "DOutbound_Bereich".A01_UC073.BereichErr + AN "SGes".Simulation_ohne_HW_aktiv + JC Next1 // Zylinder-Stellung nicht mehr ändern + + +--- NW 8: Schleuse_4221 --- +CALL FB "None" , (Automatik:=Auto, Handbetrieb:=FALSE, T_Ast:=0, T_Gst:=5, ZylAst:="MB4221", ZylGst:=?) + + +--- NW 9: Weiche_4223 --- +CALL FB "None" , (Automatik:=Auto, Handbetrieb:=FALSE, T_Ast:=0, T_Gst:=5, ZylAst:="MB4223", ZylGst:=?) + + A "MB4223" + = "MB4210" + + +--- NW 10: Schleuse_4227 --- +CALL FB "None" , (Automatik:=Auto, Handbetrieb:=FALSE, T_Ast:=0, T_Gst:=5, ZylAst:="MB4227", ZylGst:=?) + + +--- NW 11: Schleuse_4235 --- +CALL FB "None" , (Automatik:=Auto, Handbetrieb:=FALSE, T_Ast:=0, T_Gst:=5, ZylAst:="MB4235", ZylGst:=?) + + +--- NW 12: Übergabe des Bereichstatus System UC072/A01 --- +Next1: A "DOutbound_Bereich".A01_UH07.Automatik + AN "DOutbound_Bereich".A01_UH07.Handbetrieb + = Auto + + A( + O "DOutbound_Bereich".A01_UC072.BereichErr + O "DOutbound_Bereich".A01_UZ7201.Area_Stop + O "DOutbound_Bereich".A01_UZ7202.Area_Stop + ) + AN "SGes".Simulation_ohne_HW_aktiv + JC Next2 // Zylinder-Stellung nicht mehr ändern + + +--- NW 13: Schleuse_3722 --- +CALL FB "None" , (Automatik:=Auto, Handbetrieb:=FALSE, T_Ast:=0, T_Gst:=5, ZylAst:="MB3722", ZylGst:=?) + + +--- NW 14: Ende --- +Next2: BE + diff --git a/=A01+UH07-KF00/Programmbausteine/Anlage/6_LPtoHW/LPtoHW_Bereich.awl b/=A01+UH07-KF00/Programmbausteine/Anlage/6_LPtoHW/LPtoHW_Bereich.awl new file mode 100644 index 0000000..cdd6055 --- /dev/null +++ b/=A01+UH07-KF00/Programmbausteine/Anlage/6_LPtoHW/LPtoHW_Bereich.awl @@ -0,0 +1,24 @@ +=== FC 6100: LPtoHW_Bereich [STL] === +INTERFACE: + Input: + Output: + InOut: + Temp: + Constant: + Return: + Ret_Val : Void + +--- NW 1: Baustein-Aufrufe --- +CALL FB "LPtoHW_Sensoren" , + +CALL FB "LPtoHW_OmniFahren" , + +CALL FB "LPtoHW_Zylinder" , + +CALL FB "LPtoHW_Antriebe" , + + + +--- NW 2: Ende --- + BE + diff --git a/=A01+UH07-KF00/Programmbausteine/Anlage/6_LPtoHW/Omnifahren_LPtoHW/DLPtoHW_OmniFahren.awl b/=A01+UH07-KF00/Programmbausteine/Anlage/6_LPtoHW/Omnifahren_LPtoHW/DLPtoHW_OmniFahren.awl new file mode 100644 index 0000000..ac391f8 --- /dev/null +++ b/=A01+UH07-KF00/Programmbausteine/Anlage/6_LPtoHW/Omnifahren_LPtoHW/DLPtoHW_OmniFahren.awl @@ -0,0 +1,23 @@ +=== InstanceDB 6128: DLPtoHW_OmniFahren [DB] === +INTERFACE: + Input: + Output: + InOut: + Static: + Schleuse_3342 : "MHMOmniSchleuse" + Schleuse_3323 : "MHMOmniSchleuse" + Schleuse_3325 : "MHMOmniSchleuse_Plus" + Bereich_4236 : "MHMOmniBereich_Plus" + Schleuse_4221 : "MHMOmniSchleuse_Plus" + Weiche_4223 : "MHMOmniWeiche_Plus" + Schleuse_4227 : "MHMOmniSchleuse" + Bereich_4232 : "MHMOmniBereich_Plus" + Schleuse_4235 : "MHMOmniSchleuse" + Bereich_3732 : "MHMOmniBereich_Plus" + Schleuse_3722 : "MHMOmniSchleuse_Plus" + Schleuse_3345 : "MHMOmniSchleuse" + Übergang_4225 : "MHMÜbergang_ohne_Schleuse" + Trolleys_starten : Struct + Flanke : Bool + Wartezeit_aktiv : Bool + Timer_Wartenzeit : Int diff --git a/=A01+UH07-KF00/Programmbausteine/Anlage/6_LPtoHW/Omnifahren_LPtoHW/LPtoHW_Draussen_FC.awl b/=A01+UH07-KF00/Programmbausteine/Anlage/6_LPtoHW/Omnifahren_LPtoHW/LPtoHW_Draussen_FC.awl new file mode 100644 index 0000000..a5fefe7 --- /dev/null +++ b/=A01+UH07-KF00/Programmbausteine/Anlage/6_LPtoHW/Omnifahren_LPtoHW/LPtoHW_Draussen_FC.awl @@ -0,0 +1,96 @@ +=== FC 6182: LPtoHW_Draussen_FC [STL] === +INTERFACE: + Input: + Output: + InOut: + Temp: + Constant: + Return: + Ret_Val : Void + +--- NW 1: Rückmeldung --- + SET // Rückmeldungen erst mal resetten + R "M180.6" // Weiterfahrt von Ziel-FC erlaubt + + +--- NW 2: Schleuse 3323 (Trolley-Beladung): Ausgefahren ? --- + L "MW190" + L 3323 // Aufruf von Schleuse 3323 ? + <>I // Nein! + JC X3323E + +// Evtl. erkannten Sack löschen: + SET + R "DLPtoHW_Sensoren".Sack_BG3324.Stat.B_Akt + +// Trolleydaten ändern: + AN "DLeerPufferStrecken".DurchfahrModus.Aktiv + JC SackTrolley // Sack-Trolleydaten erzeugen + +// Leer-Trolley für VP-Daten: +CALL FC "Trolleydaten_neu_anlegen" (Gesamt_Trolley_DL:=1000, TrolleyID:="DLPtoHW_OmniFahren".Schleuse_3323.Dyn.TrolleyID_Schleuse, Endziel:=16#B000, ShopGroup:=DINT#-1) // Vollpuffer | ShopGroup = -1 bei Leertrolly für Vollpuffer! + +// Standort übermitteln: +CALL FC "Trolley_DL_Neue_Pos" (Gesamt_Trolley_DL:=1000, TrolleyID:="DLPtoHW_OmniFahren".Schleuse_3323.Dyn.TrolleyID_Schleuse, Position:=16#7108, ShopGroup:=Dint#0, Err:="M199.0") // Leser 7108 + + L "DLeerPufferStrecken".DurchfahrModus.RestTrolleys + + -1 + T "DLeerPufferStrecken".DurchfahrModus.RestTrolleys + + L 0 // Noch Rest-Trolleys vorhanden ? + >I // Ja! + BEC + + SET + R "DLeerPufferStrecken".DurchfahrModus.Aktiv // Erst mal beenden + + BEU + +SackTrolley: CALL FC "Trolleydaten_neu_anlegen" (Gesamt_Trolley_DL:=1000, TrolleyID:="DLPtoHW_OmniFahren".Schleuse_3323.Dyn.TrolleyID_Schleuse, Endziel:=16#AAAA, ShopGroup:=DINT#0) // AMR-Bereich + +// Standort übermitteln: +CALL FC "Trolley_DL_Neue_Pos" (Gesamt_Trolley_DL:=1000, TrolleyID:="DLPtoHW_OmniFahren".Schleuse_3323.Dyn.TrolleyID_Schleuse, Position:=16#7108, ShopGroup:=Dint#0, Err:="M199.0") // Leser 7108 + +// Umschalten auf Durchfahr-Modus: + A "DLeerPufferStrecken".DurchfahrModus.Anmelden + R "DLeerPufferStrecken".DurchfahrModus.Anmelden + S "DLeerPufferStrecken".DurchfahrModus.Aktiv + + BEU + +X3323E: NOP 0 + + +--- NW 3: Schleuse 4221 (Vor ByPass zum VP): Ausgefahren ? --- + L "MW190" + L 4221 // Aufruf von Schleuse 4221? + <>I // Nein! + JC X4221E + +// Evtl. erkannten Sack löschen: + SET + R "DLPtoHW_Sensoren".Sack_BG4222.Stat.B_Akt + + L "DLPtoHW_OmniFahren".Schleuse_4221.Dyn.Weichen_Ziel + L 16#4224 // Gerade ? Also zum AMR-Bereich? + ==I // Ja ! + JCN X4221 // Negierter Sprung + +// Trolley fährt zum AMR: +// Trolleydaten in DB1000 löschen, da zum AMR fährt und danach kein Leser mehr! +CALL FC "Trolleydaten_löschen" (Gesamt_Trolley_DL:=1000, TrolleyID:="DLPtoHW_OmniFahren".Schleuse_4221.Dyn.TrolleyID_Schleuse) + + BEU + +X4221: NOP 0 +// Trolley fährt zu VP: +// Bei Partner (Schleuse 4207) wieder mit Schritt 0 beginnen (erneuter Ziel-FC-Aufruf) + L 0 + T "DHWtoVP_OmniFahren".Schleuse_4207.Dyn.Sk.Akt_Schritt + +X4221E: NOP 0 + + +--- NW 4: Ende --- + BE + diff --git a/=A01+UH07-KF00/Programmbausteine/Anlage/6_LPtoHW/Omnifahren_LPtoHW/LPtoHW_Leser_FC.awl b/=A01+UH07-KF00/Programmbausteine/Anlage/6_LPtoHW/Omnifahren_LPtoHW/LPtoHW_Leser_FC.awl new file mode 100644 index 0000000..96a57cb --- /dev/null +++ b/=A01+UH07-KF00/Programmbausteine/Anlage/6_LPtoHW/Omnifahren_LPtoHW/LPtoHW_Leser_FC.awl @@ -0,0 +1,74 @@ +=== FC 6180: LPtoHW_Leser_FC [STL] === +INTERFACE: + Input: + Output: + InOut: + Temp: + Zielebene : Word + Constant: + Return: + Ret_Val : Void + +--- NW 1: Rückmeldung --- +// Keine + L 0 // Evtl. Zwischenziel (MW196) + T "MW196" + + +--- NW 2: Schleuse 3323: (Trolley-Beladung) --- + L "MW190" // Schleusen-Nr. + L 3323 // Aufruf von Schleuse ? + <>I // Nein! + JC X3323E + + AN "M180.0" // Lesefehler + JC Y3323 + + BEU + +Y3323: AN "M180.1" // unbekannt in TrolleysDL + BEC + +// Daten in Datenbank erzeugen: + L "DLPtoHW_OmniFahren".Schleuse_3323.Dyn.TrolleyID_Schleuse + L DINT#0 // ID bekannt? + ==D // Nein + BEC + +CALL FC "Trolleydaten_neu_anlegen" (Gesamt_Trolley_DL:="DLPtoHW_OmniFahren".Schleuse_3323.Schleuse.Gesamt_Trolley_DL, TrolleyID:="DLPtoHW_OmniFahren".Schleuse_3323.Dyn.TrolleyID_Schleuse, Endziel:=16#A000, ShopGroup:=DINT#0) // Leerpuffer-Bereich + + BEU + +X3323E: NOP 0 + + +--- NW 3: Schleuse 4221: (Vor ByPass zurück zum VP) --- + L "MW190" // Schleusen-Nr. + L 4221 // Aufruf von Schleuse ? + <>I // Nein! + JC X4221E + + AN "M180.0" // Lesefehler + JC Y4221 + + BEU + +Y4221: AN "M180.1" // unbekannt in TrolleysDL + BEC + +// Daten in Datenbank erzeugen: + L "DLPtoHW_OmniFahren".Schleuse_4221.Dyn.TrolleyID_Schleuse + L DINT#0 // ID bekannt? + ==D // Nein + BEC + +CALL FC "Trolleydaten_neu_anlegen" (Gesamt_Trolley_DL:="DLPtoHW_OmniFahren".Schleuse_4221.Schleuse.Gesamt_Trolley_DL, TrolleyID:="DLPtoHW_OmniFahren".Schleuse_4221.Dyn.TrolleyID_Schleuse, Endziel:=16#AAAA, ShopGroup:=DINT#0) // AMR-Bereich-Bereich + + BEU + +X4221E: NOP 0 + + +--- NW 4: Ende --- + BE + diff --git a/=A01+UH07-KF00/Programmbausteine/Anlage/6_LPtoHW/Omnifahren_LPtoHW/LPtoHW_OmniFahren.awl b/=A01+UH07-KF00/Programmbausteine/Anlage/6_LPtoHW/Omnifahren_LPtoHW/LPtoHW_OmniFahren.awl new file mode 100644 index 0000000..e045627 --- /dev/null +++ b/=A01+UH07-KF00/Programmbausteine/Anlage/6_LPtoHW/Omnifahren_LPtoHW/LPtoHW_OmniFahren.awl @@ -0,0 +1,353 @@ +=== FB 6128: LPtoHW_OmniFahren [STL] === +INTERFACE: + Input: + Output: + InOut: + Static: + Schleuse_3342 : "MHMOmniSchleuse" + Schleuse_3323 : "MHMOmniSchleuse" + Schleuse_3325 : "MHMOmniSchleuse_Plus" + Bereich_4236 : "MHMOmniBereich_Plus" + Schleuse_4221 : "MHMOmniSchleuse_Plus" + Weiche_4223 : "MHMOmniWeiche_Plus" + Schleuse_4227 : "MHMOmniSchleuse" + Bereich_4232 : "MHMOmniBereich_Plus" + Schleuse_4235 : "MHMOmniSchleuse" + Bereich_3732 : "MHMOmniBereich_Plus" + Schleuse_3722 : "MHMOmniSchleuse_Plus" + Schleuse_3345 : "MHMOmniSchleuse" + Übergang_4225 : "MHMÜbergang_ohne_Schleuse" + Trolleys_starten : Struct + Flanke : Bool + Wartezeit_aktiv : Bool + Timer_Wartenzeit : Int + Temp: + ErrQuit : Bool + ErrAnz : Bool + Stau_raus : Bool + Start_ok : Bool + B_aktiv : Bool + B_vor_Schleuse : Bool + B_nach_Schleuse : Bool + Antrieb_aktiv : Bool + Antrieb_vor : Bool + Antrieb_stop : Bool + Fahren_Ok : Bool + Antrieb_nicht_stoppen : Bool + Constant: + +--- NW 1: Systemzeug --- +// Verschiedene Bereiche: + A "DOutbound_Bereich".A01_UH07.AnlageEin + = Schleuse_3342.Dyn.Sk.Auto_akt + = Schleuse_3323.Dyn.Sk.Auto_akt + = Schleuse_3345.Dyn.Sk.Auto_akt + = Schleuse_3325.Dyn.Sk.Auto_akt + = Bereich_4236.Dyn.Sk.Auto_akt + = Schleuse_4221.Dyn.Sk.Auto_akt + = Weiche_4223.Dyn.Status.Auto_akt + = Schleuse_4227.Dyn.Sk.Auto_akt + = Bereich_4232.Dyn.Sk.Auto_akt + = Schleuse_4235.Dyn.Sk.Auto_akt + = Bereich_3732.Dyn.Sk.Auto_akt + = Schleuse_3722.Dyn.Sk.Auto_akt + + AN "DOutbound_Bereich".A01_UH07.BereichErr + = Schleuse_3342.Dyn.Sk.Bereich_ok + = Schleuse_3323.Dyn.Sk.Bereich_ok + = Schleuse_3345.Dyn.Sk.Bereich_ok + = Schleuse_3325.Dyn.Sk.Bereich_ok + = Bereich_4236.Dyn.Sk.Bereich_ok + AN "DOutbound_Bereich".A01_UC073.BereichErr + = Schleuse_4221.Dyn.Sk.Bereich_ok + = Weiche_4223.Dyn.Status.Bereich_ok + = Schleuse_4227.Dyn.Sk.Bereich_ok + = Bereich_4232.Dyn.Sk.Bereich_ok + = Schleuse_4235.Dyn.Sk.Bereich_ok + AN "DOutbound_Bereich".A01_UC072.BereichErr + = Bereich_3732.Dyn.Sk.Bereich_ok + = Schleuse_3722.Dyn.Sk.Bereich_ok + + +--- NW 2: Störungen quittieren UZ0703 --- + A "DOutbound_Bereich".A01_UZ0703.StOk_aktiv + O "DOutbound_Bereich".A01_UH07.StOk_aktiv + = ErrQuit + + +--- NW 3: Schleuse 3342 (Vor BeladePlatz) --- + A "DLPtoHW_Sensoren".An_BG3323.Stat.B_Akt + = Stau_raus + = B_nach_Schleuse + +CALL FB "None" , (Schleusen_Nr:=3342, ErrQuit:=ErrQuit, B_VorSchleuse:="BG3322", B_InSchleuse:="BG3342", B_AusSchleuse:=B_nach_Schleuse, B_Stau_raus:=Stau_raus, Start_Ok:=1, Antrieb_Schleuse_aktiv:="MA0065", Antrieb_plus_aktiv:="MA0065", Schleuse_geöffnet:="MB3342", RestZeit_Bereich_plus:=?, Y_Schleuse_Auf:="DLPtoHW_Zylinder".Schleuse_3342.Stat.Ast, Error:=DB708.DBW572, Antrieb_Schleuse_vor:="DLPtoHW_Antriebe".MA0065.Stat.A_vor, Antrieb_Schleuse_start:="DLPtoHW_Antriebe".MA0065.Stat.A_start, Antrieb_Schleuse_stop:="DLPtoHW_Antriebe".MA0065.Stat.Stop_vor, Antrieb_Schleuse_PS:="DLPtoHW_Antriebe".MA0065.Stat.A_PS, Antrieb_plus_vor:=?, Antrieb_plus_start:=?, hStOk:=ErrAnz) // Identisch + + +--- NW 4: Schleuse 3323 (BeladePlatz) --- +// Beladen erlaubt: + A "DOutbound_Bereich".A01_UH07.AnlageEin + A( + A "DLeerPufferStrecken".DurchfahrModus.Aktiv + A "Clock_5Hz" // Bei Durchfahrmodus blinken + ON "DLeerPufferStrecken".DurchfahrModus.Aktiv + ) + = "PF0046" // Beladung bereit bei Dauerlicht + +// Untere Anzeigen werden im Ziel-FC gesetzt: + L Schleuse_3323.Dyn.Sk.Akt_Schritt + L 12 + <>I + R "PF0033" // Signalsäule blau + R "PF0044" // Trolley starten ok + +CALL FB "None" , (Schleusen_Nr:=3323, ErrQuit:=ErrQuit, B_VorSchleuse:="MB3342", B_InSchleuse:="BG3323", B_AusSchleuse:="BG3343", B_Stau_raus:="DLPtoHW_Sensoren".Stau_BG3343.Stat.B_Akt, Start_Ok:=1, Antrieb_Schleuse_aktiv:="MA0065", Antrieb_plus_aktiv:=?, Schleuse_geöffnet:="MB3323", RestZeit_Bereich_plus:=?, Y_Schleuse_Auf:="DLPtoHW_Zylinder".Schleuse_3323.Stat.Ast, Error:=DB708.DBW526, Antrieb_Schleuse_vor:="DLPtoHW_Antriebe".MA0065.Stat.A_vor, Antrieb_Schleuse_start:="DLPtoHW_Antriebe".MA0065.Stat.A_start, Antrieb_Schleuse_stop:="DLPtoHW_Antriebe".MA0065.Stat.Stop_vor, Antrieb_Schleuse_PS:="DLPtoHW_Antriebe".MA0065.Stat.A_PS, Antrieb_plus_vor:=?, Antrieb_plus_start:=?, hStOk:=ErrAnz) + + +--- NW 5: Schleuse 3345 (Hinter BeladePlatz) --- +CALL FB "None" , (Schleusen_Nr:=3345, ErrQuit:=ErrQuit, B_VorSchleuse:="BG3343", B_InSchleuse:="BG3345", B_AusSchleuse:="BG3344", B_Stau_raus:="DLPtoHW_Sensoren".Stau_BG3344.Stat.B_Akt, Start_Ok:=1, Antrieb_Schleuse_aktiv:="MA0065", Antrieb_plus_aktiv:=?, Schleuse_geöffnet:="MB3345", RestZeit_Bereich_plus:=?, Y_Schleuse_Auf:="DLPtoHW_Zylinder".Schleuse_3345.Stat.Ast, Error:=DB708.DBW586, Antrieb_Schleuse_vor:="DLPtoHW_Antriebe".MA0065.Stat.A_vor, Antrieb_Schleuse_start:="DLPtoHW_Antriebe".MA0065.Stat.A_start, Antrieb_Schleuse_stop:="DLPtoHW_Antriebe".MA0065.Stat.Stop_vor, Antrieb_Schleuse_PS:="DLPtoHW_Antriebe".MA0065.Stat.A_PS, Antrieb_plus_vor:=?, Antrieb_plus_start:=?, hStOk:=ErrAnz) + + +--- NW 6: Wartezeit bis erneuter Trolleystart sinnvoll (wegen Staubildung) --- + A "MB3325" + Rise Trolleys_starten.Flanke + S Trolleys_starten.Wartezeit_aktiv + JCN Warten // Negierter Sprung + + L 15 // Wartezeit in Sekunden + T Trolleys_starten.Timer_Wartenzeit + +Warten: AN Trolleys_starten.Wartezeit_aktiv + O + A "MB3325" // Schleuse offen + AN "MA0065" // Aber Trolley fährt nicht + ON "1s-Impuls" + JC Wait + + L Trolleys_starten.Timer_Wartenzeit + + -1 + T Trolleys_starten.Timer_Wartenzeit + L 0 + >I + JC Wait + + SET + R Trolleys_starten.Wartezeit_aktiv + +Wait: NOP 0 + + +--- NW 7: Schleuse 3325 --- + AN Trolleys_starten.Wartezeit_aktiv + = Fahren_Ok + + A "BG3343" + O "BG3344" + = B_vor_Schleuse + +CALL FB "None" , (Schleusen_Nr:=3325, ErrQuit:=ErrQuit, B_VorSchleuse:=B_vor_Schleuse, B_InSchleuse:="BG3325", B_Zähl:="BG3326", B_Stau_raus:="DLPtoHW_Sensoren".Stau_BG3326.Stat.B_Akt, Start_Ok:=1, Antrieb_Schleuse_aktiv:="MA0065", Antrieb_plus_aktiv:="MA0066", Schleuse_geöffnet:="MB3325", RestZeit_Bereich_plus:=Bereich_4236.Dyn.Restzeit, Y_Schleuse_Auf:="DLPtoHW_Zylinder".Schleuse_3325.Stat.Ast, Error:=DB708.DBW574, Antrieb_Schleuse_vor:="DLPtoHW_Antriebe".MA0065.Stat.A_vor, Antrieb_Schleuse_start:="DLPtoHW_Antriebe".MA0065.Stat.A_start, Antrieb_Schleuse_stop:="DLPtoHW_Antriebe".MA0065.Stat.Stop_vor, Antrieb_Schleuse_PS:="DLPtoHW_Antriebe".MA0065.Stat.A_PS, Antrieb_plus_vor:=Bereich_4236.Dyn.Status.Trolley_kommt_in_Bereich, Antrieb_plus_start:=?, hStOk:=ErrAnz) + + +--- NW 8: Störungen anzeigen UZ0703 --- + A ErrAnz + R ErrAnz + S "DOutbound_Bereich".A01_UZ0703.StOk_blinken + S "DOutbound_Bereich".A01_UH07.StOk_blinken + + +--- NW 9: Störungen quittieren UZ0703/7303 --- + A "DOutbound_Bereich".A01_UZ0703.StOk_aktiv + O "DOutbound_Bereich".A01_UZ7303.StOk_aktiv + O "DOutbound_Bereich".A01_UH07.StOk_aktiv + = ErrQuit + + +--- NW 10: Bereich 4236 --- + A "BG3326" + A "MB3325" + = B_vor_Schleuse + + A Schleuse_4221.Dyn.Sk.Bereich_ok + AN "BG4221" // Da kein Platz für 2.Trolley wegen Kurve + = Fahren_Ok + +CALL FB "None" , (Bereichs_Nr:=4236, ErrQuit:=ErrQuit, B_BereichsAnfang:=B_vor_Schleuse, B_BereichsEnde:="BG4236", B_Zähl:="BG4220", B_Stau_raus:="DLPtoHW_Sensoren".Stau_BG4220.Stat.B_Akt, Start_Ok:=Schleuse_4221.Dyn.Sk.Bereich_ok, Antrieb_Bereich_aktiv:="MA0066", Antrieb_plus_aktiv:="MA0264", RestZeit_Bereich_plus:=?, Antrieb_Bereich_vor:="DLPtoHW_Antriebe".MA0066.Stat.A_vor, Antrieb_Bereich_stop:="DLPtoHW_Antriebe".MA0066.Stat.Stop_vor, Error:=DB708.DBW472, Antrieb_Bereich_start:="DLPtoHW_Antriebe".MA0066.Stat.A_start, Antrieb_plus_vor:="DLPtoHW_Antriebe".MA0264.Stat.A_vor, Antrieb_plus_start:="DLPtoHW_Antriebe".MA0264.Stat.A_start, Antrieb_minus_vor:="DLPtoHW_Antriebe".MA0065.Stat.A_vor, hStOk:=ErrAnz) + + +--- NW 11: Störungen anzeigen UZ0703/7303 --- + A ErrAnz + R ErrAnz + S "DOutbound_Bereich".A01_UZ0703.StOk_blinken + S "DOutbound_Bereich".A01_UZ7303.StOk_blinken + S "DOutbound_Bereich".A01_UH07.StOk_blinken + + +--- NW 12: Störungen quittieren UZ7303 --- + A "DOutbound_Bereich".A01_UZ7303.StOk_aktiv + O "DOutbound_Bereich".A01_UC073.StOk_aktiv + O "DOutbound_Bereich".A01_UH07.StOk_aktiv + = ErrQuit + + +--- NW 13: Schleuse 4221 (vor ByPass) --- +CALL FB "None" , (Schleusen_Nr:=4221, ErrQuit:=ErrQuit, B_VorSchleuse:="BG4220", B_InSchleuse:="BG4221", B_Zähl:=?, B_Stau_raus:=?, Start_Ok:=1, Antrieb_Schleuse_aktiv:="MA0264", Antrieb_plus_aktiv:=1, Schleuse_geöffnet:="MB4221", RestZeit_Bereich_plus:=?, Y_Schleuse_Auf:="DLPtoHW_Zylinder".Schleuse_4221.Stat.Ast, Error:=DB708.DBW550, Antrieb_Schleuse_vor:="DLPtoHW_Antriebe".MA0264.Stat.A_vor, Antrieb_Schleuse_start:="DLPtoHW_Antriebe".MA0264.Stat.A_start, Antrieb_Schleuse_stop:="DLPtoHW_Antriebe".MA0264.Stat.Stop_vor, Antrieb_Schleuse_PS:="DLPtoHW_Antriebe".MA0264.Stat.A_PS, Antrieb_plus_vor:=?, Antrieb_plus_start:=?, hStOk:=ErrAnz) // über Weiche | über Weiche | über Weiche | über Weiche + + + +--- NW 14: Weiche 4223 (ByPass zu VP) --- + SET + R Antrieb_vor + R Antrieb_stop + + A "MA0264" + A "MA0265" + = Antrieb_aktiv + +CALL FB "None" , (Weichen_Nr:=4223, ErrQuit:=ErrQuit, Fahren_Ok:=1, B_Ziel_gerade:="BG4224", B_Ziel_abzweig:="BG4211", Antrieb_Weiche_aktiv:=Antrieb_aktiv, Antrieb_Gerade_aktiv:="MA0265", Antrieb_Abzweig_aktiv:="MA0263", Weiche_ist_AST:="MB4223", Y_Weiche_gerade:=?, Y_Weiche_abzweig:="DLPtoHW_Zylinder".Weiche_4223.Stat.Ast, Error:=DB708.DBW546, Antrieb_Weiche_vor:=Antrieb_vor, Antrieb_Weiche_stop:=Antrieb_stop, Antrieb_Weiche_gerade_vor:=?, Antrieb_Weiche_gerade_stop:=?, Antrieb_Weiche_abzweig_vor:="DHWtoVP_Antriebe".MA0263.Stat.A_vor, Antrieb_Weiche_abzweig_stop:="DHWtoVP_Antriebe".MA0263.Stat.Stop_vor, hStOk:=ErrAnz) // schon gesetzt | schon gesetzt + + A Antrieb_vor + S "DLPtoHW_Antriebe".MA0264.Stat.A_vor + S "DLPtoHW_Antriebe".MA0265.Stat.A_vor + A Antrieb_stop + S "DLPtoHW_Antriebe".MA0264.Stat.Stop_vor + S "DLPtoHW_Antriebe".MA0265.Stat.Stop_vor + +// Damit Partner fahren kann: + A Weiche_4223.Dyn.Status.Weiche_frei + R "DLPtoHW_Zylinder".Weiche_4223.Stat.Ast + + +--- NW 15: Störungen anzeigen UZ7303 --- + A ErrAnz + R ErrAnz + S "DOutbound_Bereich".A01_UZ7303.StOk_blinken + S "DOutbound_Bereich".A01_UC073.StOk_blinken + S "DOutbound_Bereich".A01_UH07.StOk_blinken + + +--- NW 16: Störungen quittieren UZ7303/7302 --- + A "DOutbound_Bereich".A01_UZ7303.StOk_aktiv + O "DOutbound_Bereich".A01_UZ7302.StOk_aktiv + O "DOutbound_Bereich".A01_UC073.StOk_aktiv + O "DOutbound_Bereich".A01_UH07.StOk_aktiv + = ErrQuit + + +--- NW 17: MA0265 / Übergang 4225 --- +CALL FB "None" , (ErrQuit:=ErrQuit, B_Anfang:="BG4224", B_Am_Übergang:="BG4225", B_Stau_Antrieb_plus:="BG4226", Antrieb_aktiv:="MA0265", Antrieb_plus_aktiv:="MA0266", Antrieb_vor:="DLPtoHW_Antriebe".MA0265.Stat.A_vor, Antrieb_start:="DLPtoHW_Antriebe".MA0265.Stat.A_start, Antrieb_stop:="DLPtoHW_Antriebe".MA0265.Stat.A_PS, Antrieb_plus_vor:="DLPtoHW_Antriebe".MA0266.Stat.A_vor, Antrieb_plus_start:="DLPtoHW_Antriebe".MA0266.Stat.A_start) + + +--- NW 18: Schleuse 4227 --- +CALL FB "None" , (Schleusen_Nr:=4227, ErrQuit:=ErrQuit, B_VorSchleuse:="BG4225", B_InSchleuse:="BG4227", B_AusSchleuse:="BG4231", B_Stau_raus:="DLPtoHW_Sensoren".Stau_BG4231.Stat.B_Akt, Start_Ok:=1, Antrieb_Schleuse_aktiv:="MA0266", Antrieb_plus_aktiv:="MA0267", Schleuse_geöffnet:="MB4227", RestZeit_Bereich_plus:=Bereich_4232.Dyn.Restzeit, Y_Schleuse_Auf:="DLPtoHW_Zylinder".Schleuse_4227.Stat.Ast, Error:=DB708.DBW548, Antrieb_Schleuse_vor:="DLPtoHW_Antriebe".MA0266.Stat.A_vor, Antrieb_Schleuse_start:="DLPtoHW_Antriebe".MA0266.Stat.A_start, Antrieb_Schleuse_stop:="DLPtoHW_Antriebe".MA0266.Stat.Stop_vor, Antrieb_Schleuse_PS:="DLPtoHW_Antriebe".MA0266.Stat.A_PS, Antrieb_plus_vor:=Bereich_4232.Dyn.Status.Trolley_kommt_in_Bereich, Antrieb_plus_start:=?, hStOk:=ErrAnz) + + +--- NW 19: Störungen anzeigen UZ7303/7302 --- + A ErrAnz + R ErrAnz + S "DOutbound_Bereich".A01_UZ7303.StOk_blinken + S "DOutbound_Bereich".A01_UZ7302.StOk_blinken + S "DOutbound_Bereich".A01_UC073.StOk_blinken + S "DOutbound_Bereich".A01_UH07.StOk_blinken + + +--- NW 20: Störungen quittieren UZ7302 --- + A "DOutbound_Bereich".A01_UZ7302.StOk_aktiv + O "DOutbound_Bereich".A01_UC073.StOk_aktiv + O "DOutbound_Bereich".A01_UH07.StOk_aktiv + = ErrQuit + + +--- NW 21: Bereich 4232 --- + A "BG4231" + A "MB4227" + = B_vor_Schleuse + + A "DLPtoHW_Sensoren".Stau_BG4233.Stat.B_Akt + O "DLPtoHW_Sensoren".Stau_BG4234.Stat.B_Akt + = Stau_raus + +CALL FB "None" , (Bereichs_Nr:=4232, ErrQuit:=ErrQuit, B_BereichsAnfang:=B_vor_Schleuse, B_BereichsEnde:="BG4232", B_Zähl:="BG4233", B_Stau_raus:=Stau_raus, Start_Ok:=1, Antrieb_Bereich_aktiv:="MA0267", Antrieb_plus_aktiv:="MA0270", RestZeit_Bereich_plus:=?, Antrieb_Bereich_vor:="DLPtoHW_Antriebe".MA0267.Stat.A_vor, Antrieb_Bereich_stop:="DLPtoHW_Antriebe".MA0267.Stat.Stop_vor, Error:=DB708.DBW470, Antrieb_Bereich_start:="DLPtoHW_Antriebe".MA0267.Stat.A_start, Antrieb_plus_vor:="DLPtoHW_Antriebe".MA0270.Stat.A_vor, Antrieb_plus_start:="DLPtoHW_Antriebe".MA0270.Stat.A_start, Antrieb_minus_vor:="DLPtoHW_Antriebe".MA0266.Stat.A_vor, hStOk:=ErrAnz) + + +--- NW 22: Schleuse 4235 (vor BST 2) --- + AN "7_HMI_Err_UH07_OB".System.Gesamt_Feueralarm_Halle3 + AN "7_HMI_Err_UH07_OB".System.Gesamt_Feueralarm_Halle4 + AN "7_HMI_Err_UH07_OB".System.BST2_Feueralarm + AN "7_HMI_Err_UH07_OB".System.BST2_Geschlossen + AN "7_HMI_Err_UH07_OB".System."BST2_Störung" + A Bereich_3732.Dyn.Sk.Bereich_ok + = Fahren_Ok + +CALL FB "None" , (Schleusen_Nr:=4235, ErrQuit:=ErrQuit, B_VorSchleuse:="BG4233", B_InSchleuse:="BG4235", B_AusSchleuse:="BG3720", B_Stau_raus:="DLPtoHW_Sensoren".Stau_BG3720.Stat.B_Akt, Start_Ok:=Fahren_Ok, Antrieb_Schleuse_aktiv:="MA0270", Antrieb_plus_aktiv:="MA0202", Schleuse_geöffnet:="MB4235", RestZeit_Bereich_plus:=Bereich_3732.Dyn.Restzeit, Y_Schleuse_Auf:="DLPtoHW_Zylinder".Schleuse_4235.Stat.Ast, Error:=DB708.DBW552, Antrieb_Schleuse_vor:="DLPtoHW_Antriebe".MA0270.Stat.A_vor, Antrieb_Schleuse_start:="DLPtoHW_Antriebe".MA0270.Stat.A_start, Antrieb_Schleuse_stop:="DLPtoHW_Antriebe".MA0270.Stat.Stop_vor, Antrieb_Schleuse_PS:="DLPtoHW_Antriebe".MA0270.Stat.A_PS, Antrieb_plus_vor:=Bereich_3732.Dyn.Status.Trolley_kommt_in_Bereich, Antrieb_plus_start:=?, hStOk:=ErrAnz) + + +--- NW 23: Störungen anzeigen UZ7302 --- + A ErrAnz + R ErrAnz + S "DOutbound_Bereich".A01_UZ7302.StOk_blinken + S "DOutbound_Bereich".A01_UC073.StOk_blinken + S "DOutbound_Bereich".A01_UH07.StOk_blinken + + +--- NW 24: Störungen quittieren UZ7202 --- + A "DOutbound_Bereich".A01_UZ7202.StOk_aktiv + O "DOutbound_Bereich".A01_UC072.StOk_aktiv + O "DOutbound_Bereich".A01_UH07.StOk_aktiv + = ErrQuit + + +--- NW 25: Bereich 3732 (hinter BST 2) --- + A "BG3720" + A "MB4235" + = B_vor_Schleuse + +CALL FB "None" , (Bereichs_Nr:=3732, ErrQuit:=ErrQuit, B_BereichsAnfang:=B_vor_Schleuse, B_BereichsEnde:="BG3732", B_Zähl:="BG3721", B_Stau_raus:="DLPtoHW_Sensoren".Stau_BG3721.Stat.B_Akt, Start_Ok:=1, Antrieb_Bereich_aktiv:="MA0202", Antrieb_plus_aktiv:="MA0203", RestZeit_Bereich_plus:=?, Antrieb_Bereich_vor:="DLPtoHW_Antriebe".MA0202.Stat.A_vor, Antrieb_Bereich_stop:="DLPtoHW_Antriebe".MA0202.Stat.Stop_vor, Error:=DB708.DBW460, Antrieb_Bereich_start:="DLPtoHW_Antriebe".MA0202.Stat.A_start, Antrieb_plus_vor:="DLPtoHW_Antriebe".MA0203.Stat.A_vor, Antrieb_plus_start:="DLPtoHW_Antriebe".MA0203.Stat.A_start, Antrieb_minus_vor:=?, hStOk:=ErrAnz) + + +--- NW 26: Störungen anzeigen UZ7202 --- + A ErrAnz + R ErrAnz + S "DOutbound_Bereich".A01_UZ7202.StOk_blinken + S "DOutbound_Bereich".A01_UC072.StOk_blinken + S "DOutbound_Bereich".A01_UH07.StOk_blinken + + +--- NW 27: Störungen quittieren UZ7202/7201 --- + A "DOutbound_Bereich".A01_UZ7202.StOk_aktiv + O "DOutbound_Bereich".A01_UZ7201.StOk_aktiv + O "DOutbound_Bereich".A01_UC072.StOk_aktiv + O "DOutbound_Bereich".A01_UH07.StOk_aktiv + = ErrQuit + + +--- NW 28: Schleuse 3722 (Übergabe an AMR / UH06) --- +// Schnittstelle von Outbound: (Verarbeitung s.u.) + A "DSchnittstelle_zu_AMR".From_UH06.MA0203_aktiv + + A "DSchnittstelle_zu_AMR".From_UH06.MA0203_kein_Stau + +// Pro Zyklus neu erzeugen: + SET + R "DSchnittstelle_zu_AMR".To_UH06.MA0203_A_vor + R "DSchnittstelle_zu_AMR".To_UH06.MA0203_A_start + +CALL FB "None" , (Schleusen_Nr:=3722, ErrQuit:=ErrQuit, B_VorSchleuse:="BG3721", B_InSchleuse:="BG3722", B_Zähl:="BG3723", B_Stau_raus:="DLPtoHW_Sensoren".Stau_BG3723.Stat.B_Akt, Start_Ok:="DSchnittstelle_zu_AMR".From_UH06.MA0203_kein_Stau, Antrieb_Schleuse_aktiv:="MA0203", Antrieb_plus_aktiv:="DSchnittstelle_zu_AMR".From_UH06.MA0203_aktiv, Schleuse_geöffnet:="MB3722", RestZeit_Bereich_plus:=?, Y_Schleuse_Auf:="DLPtoHW_Zylinder".Schleuse_3722.Stat.Ast, Error:=DB708.DBW534, Antrieb_Schleuse_vor:="DLPtoHW_Antriebe".MA0203.Stat.A_vor, Antrieb_Schleuse_start:="DLPtoHW_Antriebe".MA0203.Stat.A_start, Antrieb_Schleuse_stop:="DLPtoHW_Antriebe".MA0203.Stat.Stop_vor, Antrieb_Schleuse_PS:="DLPtoHW_Antriebe".MA0203.Stat.A_PS, Antrieb_plus_vor:="DSchnittstelle_zu_AMR".To_UH06.MA0203_A_vor, Antrieb_plus_start:="DSchnittstelle_zu_AMR".To_UH06.MA0203_A_start, hStOk:=ErrAnz) + +// Schnittstelle zu Outbound: (Verarbeitung s.o.) + A "DLPtoHW_Sensoren"."Fährt_zu_UH06".Stat.B_Akt + S "DSchnittstelle_zu_AMR".To_UH06.MA0203_A_vor + S "DSchnittstelle_zu_AMR".To_UH06.MA0203_A_start + S "DLPtoHW_Antriebe".MA0203.Stat.A_vor + + +--- NW 29: Störungen anzeigen UZ7202/7201 --- + A ErrAnz + R ErrAnz + S "DOutbound_Bereich".A01_UZ7202.StOk_blinken + S "DOutbound_Bereich".A01_UZ7201.StOk_blinken + S "DOutbound_Bereich".A01_UC072.StOk_blinken + S "DOutbound_Bereich".A01_UH07.StOk_blinken + + +--- NW 30: Ende --- + BE + diff --git a/=A01+UH07-KF00/Programmbausteine/Anlage/6_LPtoHW/Omnifahren_LPtoHW/LPtoHW_Ziel_FC.awl b/=A01+UH07-KF00/Programmbausteine/Anlage/6_LPtoHW/Omnifahren_LPtoHW/LPtoHW_Ziel_FC.awl new file mode 100644 index 0000000..4b63040 --- /dev/null +++ b/=A01+UH07-KF00/Programmbausteine/Anlage/6_LPtoHW/Omnifahren_LPtoHW/LPtoHW_Ziel_FC.awl @@ -0,0 +1,173 @@ +=== FC 6181: LPtoHW_Ziel_FC [STL] === +INTERFACE: + Input: + Output: + InOut: + Temp: + Ziel_hex : Word + Ziel_int : Int + Zielebene : Word + Error : Byte + Position : Int + Lager_DB : Int + Lager_DW : Int + AR1Zeiger : DWord // Statt AR1 (ging nur bis DB-Länge <= 8191 Bytes) + AR1Start : DInt // Startwert mit Offset 0 + SSDW : Int + EndZiel : Word + Variante : Int + AbrufID : DInt + Fahrlisten_TrolleyID : DInt + Fahrlisten_AbrufID : DInt + Fahrlisten_Lager : Int + Trolley_unbekannt : Bool // Trolley ist nicht in DL + Express_Abruf : Bool + Constant: + Return: + Ret_Val : Void + +--- NW 1: Rückmeldung --- + SET // Rückmeldungen erst mal resetten + R "M180.6" // Weiterfahrt von Ziel-FC erlaubt + + +--- NW 2: Schleuse 3342: Weiterfahren erlaubt ? (Vor Trolley-Beladung) --- + L "MW190" + L 3342 // Aufruf von Schleuse 3342 ? + <>I // Nein! + JC X3342E + + SET + S "M180.6" // Weiterfahrt ist erlaubt + + BEU + +X3342E: NOP 0 + + +--- NW 3: Schleuse 3323: Weiterfahren erlaubt ? (Trolley-Beladung) --- + L "MW190" + L 3323 // Aufruf von Schleuse 3323 ? + <>I // Nein! + JC X3323E + +// Umschalten auf Durchfahr-Modus: + A "DLeerPufferStrecken".DurchfahrModus.Anmelden + AN "DLPtoHW_Sensoren".Sack_BG3324.Stat.B_Akt // Noch kein Sack behängt + R "DLeerPufferStrecken".DurchfahrModus.Anmelden + S "DLeerPufferStrecken".DurchfahrModus.Aktiv + +// Trolley-Err-Anzeige (blau): + A "BG3323" // Trolley ist in Schleuse + A( + A "DLeerPufferStrecken".DurchfahrModus.Aktiv + A "DLPtoHW_Sensoren".Sack_BG3324.Stat.B_Akt // Aber Sack behängt + O + AN "DLeerPufferStrecken".DurchfahrModus.Aktiv + AN "DLPtoHW_Sensoren".Sack_BG3324.Stat.B_Akt // Noch kein Sack behängt + ) + = "PF0033" + +// Trolley kann gestartet werden: + A "BG3323" // Trolley ist in Schleuse + AN "DLeerPufferStrecken".DurchfahrModus.Aktiv + A "DLPtoHW_Sensoren".Sack_BG3324.Stat.B_Akt // Sack behängt + A "Clock_2Hz" + = "PF0044" + +// Bestätigung durch Bediener: + A "BG3323" // Trolley ist in Schleuse + A( + A "SF0044" // Bestätigung mit Taster + AN "DLeerPufferStrecken".DurchfahrModus.Aktiv + A "DLPtoHW_Sensoren".Sack_BG3324.Stat.B_Akt // Sack behängt + O +// Durchfahr-Modus aktiv: + A "DLeerPufferStrecken".DurchfahrModus.Aktiv + AN "DLPtoHW_Sensoren".Sack_BG3324.Stat.B_Akt // Aber Sack behängt + ) + S "M180.6" // Weiterfahrt ist erlaubt + + BEU + +X3323E: NOP 0 + + +--- NW 4: Schleuse 4221: (Vor ByPass zum VP) --- + L "MW190" + L 4221 // Aufruf von Schleuse XXXX? + <>I // Nein! + JC PS5E + +// Ziel-Check: + L "DLPtoHW_OmniFahren".Schleuse_4221.Dyn.Trolley_EndZiel + L 16#B000 // Vollpuffer ? + ==I // Ja ! + AN "DLPtoHW_Sensoren".Sack_BG4222.Stat.B_Akt // Kein Sack erkannt + JC A4221 // Abzweig fahren + + JC G4221 + + JU G4221 // Rest Gerade fahren + +// Abzweig fahren: +A4221: L 16#4211 + T "MW198" // Weichenziel + +// Quell-Steuerung: + L "DHWtoVP_OmniFahren".Schleuse_4207.Dyn.Raus_Trolleys + L 0 // Sind Trolleys zur Weiche MB4210 unterwegs? + >I // Ja! + O "DHWtoVP_OmniFahren".Schleuse_4207.Dyn.Status.Reset_aktiv + O "MB4207" // Andere Quelle aktiv + BEC + + AN "DHWtoVP_Sensoren".Stau_BG4210.Stat.B_Akt + AN "DHWtoVP_Sensoren".Stau_BG4211.Stat.B_Akt + S "M180.6" // Weiterfahrt ist erlaubt + + BEU + +// Gerade fahren: +G4221: L 16#4224 + T "MW198" // Weichenziel + + AN "DLPtoHW_Sensoren".Stau_BG4224.Stat.B_Akt + S "M180.6" // Weiterfahrt ist erlaubt + + BEU + +PS5E: NOP 0 + + +--- NW 5: Schleuse 4235: (BST 2) --- + L "MW190" + L 4235 // Aufruf von Schleuse XXXX? + <>I // Nein! + JC X4235E + + SET + S "M180.6" // Weiterfahrt ist erlaubt + + BEU + +X4235E: NOP 0 + + +--- NW 6: Schleuse 3722: Übergabe an UH06/AMR --- + L "MW190" + L 3722 // Aufruf von Schleuse 3722 ? + <>I // Nein! + JC X3722E + + SET + S "M180.6" // Weiterfahrt ist erlaubt + + BEU + +X3722E: NOP 0 + + +--- NW 7: Ende --- + BE + diff --git a/=A01+UH07-KF00/Programmbausteine/Anlage/DOutbound_Bereich.awl b/=A01+UH07-KF00/Programmbausteine/Anlage/DOutbound_Bereich.awl new file mode 100644 index 0000000..32e2fe4 --- /dev/null +++ b/=A01+UH07-KF00/Programmbausteine/Anlage/DOutbound_Bereich.awl @@ -0,0 +1,184 @@ +=== InstanceDB 1001: DOutbound_Bereich [DB] === +INTERFACE: + Input: + Output: + InOut: + Static: + A01_UH07 : Struct + Anlauf : Bool + AnlageEin : Bool + Not_Aus : Struct + ausgeloest : Bool + UH07 : Bool + UC071 : Bool + UC073 : Bool + UZ0701 : Bool + UZ0702 : Bool + UZ0703 : Bool + UZ7101 : Bool + UZ7102 : Bool + UZ7103 : Bool + UZ7104 : Bool + UZ7105 : Bool + UZ7106 : Bool + UZ7107 : Bool + UZ7301 : Bool + UZ7302 : Bool + UZ7303 : Bool + NotErr : Bool + PnErr : Bool + SiErr : Bool + MotErr : Bool + Phasen : Bool + K10Err : Bool + Brandfall : Bool + Automatik : Bool + Handbetrieb : Bool + BereichErr : Bool + StOk_blinken : Bool + StOk_Flanke : Bool + BereichErr_old : Bool + StOk_aktiv : Bool + Anfahrwarnung : Bool + A01_UC071 : Struct + PnErr : Bool + SiErr : Bool + MotErr : Bool + K10Err : Bool + BereichErr : Bool + StOk_blinken : Bool + StOk_Flanke : Bool + StOk_aktiv : Bool + BereichErr_old : Bool + Anfahrwarnung : Bool + A01_UC072 : Struct + Not_Aus : Struct + ausgeloest : Bool + UC072 : Bool + UZ7201 : Bool + UZ7202 : Bool + NotErr : Bool + PnErr : Bool + SiErr : Bool + MotErr : Bool + K10Err : Bool + BereichErr : Bool + StOk_blinken : Bool + StOk_Flanke : Bool + StOk_aktiv : Bool + BereichErr_old : Bool + Anfahrwarnung : Bool + A01_UC073 : Struct + PnErr : Bool + SiErr : Bool + MotErr : Bool + K10Err : Bool + BereichErr : Bool + StOk_blinken : Bool + StOk_Flanke : Bool + StOk_aktiv : Bool + BereichErr_old : Bool + Anfahrwarnung : Bool + A01_UC074 : Struct + Not_Aus : Struct + ausgeloest : Bool + UC074 : Bool + UZ7401 : Bool + UZ7402 : Bool + UZ7403 : Bool + NotErr : Bool + PnErr : Bool + SiErr : Bool + MotErr : Bool + K10Err : Bool + BereichErr : Bool + StOk_blinken : Bool + StOk_Flanke : Bool + StOk_aktiv : Bool + BereichErr_old : Bool + Anfahrwarnung : Bool + A01_UZ0701 : Struct + StOk_blinken : Bool + StOk_Flanke : Bool + StOk_aktiv : Bool + A01_UZ0702 : Struct + StOk_blinken : Bool + StOk_Flanke : Bool + StOk_aktiv : Bool + A01_UZ0703 : Struct + StOk_blinken : Bool + StOk_Flanke : Bool + StOk_aktiv : Bool + A01_UZ7101 : Struct + StOk_blinken : Bool + StOk_Flanke : Bool + StOk_aktiv : Bool + A01_UZ7102 : Struct + StOk_blinken : Bool + StOk_Flanke : Bool + StOk_aktiv : Bool + Area_Stop : Bool + A01_UZ7103 : Struct + StOk_blinken : Bool + StOk_Flanke : Bool + StOk_aktiv : Bool + A01_UZ7104 : Struct + StOk_blinken : Bool + StOk_Flanke : Bool + StOk_aktiv : Bool + Area_Stop : Bool + A01_UZ7105 : Struct + StOk_blinken : Bool + StOk_Flanke : Bool + StOk_aktiv : Bool + A01_UZ7106 : Struct + StOk_blinken : Bool + StOk_Flanke : Bool + StOk_aktiv : Bool + A01_UZ7107 : Struct + StOk_blinken : Bool + StOk_Flanke : Bool + StOk_aktiv : Bool + A01_UZ7201 : Struct + StOk_blinken : Bool + StOk_Flanke : Bool + StOk_aktiv : Bool + Area_Stop : Bool + A01_UZ7202 : Struct + StOk_blinken : Bool + StOk_Flanke : Bool + StOk_aktiv : Bool + Area_Stop : Bool + A01_UZ7301 : Struct + StOk_blinken : Bool + StOk_Flanke : Bool + StOk_aktiv : Bool + A01_UZ7302 : Struct + StOk_blinken : Bool + StOk_Flanke : Bool + StOk_aktiv : Bool + A01_UZ7303 : Struct + StOk_blinken : Bool + StOk_Flanke : Bool + StOk_aktiv : Bool + A01_UZ7401 : Struct + StOk_blinken : Bool + StOk_Flanke : Bool + StOk_aktiv : Bool + A01_UZ7402 : Struct + StOk_blinken : Bool + StOk_Flanke : Bool + StOk_aktiv : Bool + A01_UZ7403 : Struct + StOk_blinken : Bool + StOk_Flanke : Bool + StOk_aktiv : Bool + ErrDD : DInt + ErrBits : Int + Fast-Sensors : Struct + B1123 : Bool + B1203 : Bool + B1291 : Bool + B1132 : Bool + B0381 : Bool + B0792 : Bool diff --git a/=A01+UH07-KF00/Programmbausteine/Anlage/DSchnittstelle_zu_AMR.awl b/=A01+UH07-KF00/Programmbausteine/Anlage/DSchnittstelle_zu_AMR.awl new file mode 100644 index 0000000..5e81805 --- /dev/null +++ b/=A01+UH07-KF00/Programmbausteine/Anlage/DSchnittstelle_zu_AMR.awl @@ -0,0 +1,14 @@ +=== GlobalDB 6: DSchnittstelle_zu_AMR [DB] === +INTERFACE: + Static: + From_UH06 : Struct + MA0200_A_vor : Bool + MA0200_A_start : Bool + MA0203_kein_Stau : Bool + MA0203_aktiv : Bool + To_UH06 : Struct + MA0203_A_vor : Bool + MA0203_A_start : Bool + MA0200_kein_Stau : Bool + MA0200_aktiv : Bool // + BG3724_aktiv : Bool diff --git a/=A01+UH07-KF00/Programmbausteine/Anlage/DSchnittstelle_zu_Safety.awl b/=A01+UH07-KF00/Programmbausteine/Anlage/DSchnittstelle_zu_Safety.awl new file mode 100644 index 0000000..c712d3a --- /dev/null +++ b/=A01+UH07-KF00/Programmbausteine/Anlage/DSchnittstelle_zu_Safety.awl @@ -0,0 +1,34 @@ +=== GlobalDB 3: DSchnittstelle_zu_Safety [DB] === +INTERFACE: + Static: + ToSafety : Struct + StOk_HSS : Bool + ACK_A01_UH07 : Bool // Quittierung Bereich + ACK_A01_UC071 : Bool // Quittierung Bereich + ACK_A01_UC072 : Bool // Quittierung Bereich + ACK_A01_UC073 : Bool // Quittierung Bereich + ACK_A01_UC074 : Bool // Quittierung Bereich + Ohne_Partner : Bool // Nur eigener Not-AUS! + FromSafety : Struct + ACK_REQ_A01_UH07_1 : Bool // Quittierung benötigt Bereich + ACK_REQ_A01_UH07_2 : Bool // Quittierung benötigt Bereich + ACK_A01_UH07_fertig : Bool // Quittierung abgearbeitet + ACK_REQ_A01_UC071_1 : Bool // Quittierung benötigt Bereich + ACK_REQ_A01_UC071_2 : Bool // Quittierung benötigt Bereich + ACK_A01_UC071_fertig : Bool // Quittierung abgearbeitet + ACK_REQ_A01_UC072_1 : Bool // Quittierung benötigt Bereich + ACK_REQ_A01_UC072_2 : Bool // Quittierung benötigt Bereich + ACK_A01_UC072_fertig : Bool // Quittierung abgearbeitet + ACK_REQ_A01_UC073_1 : Bool // Quittierung benötigt Bereich + ACK_REQ_A01_UC073_2 : Bool // Quittierung benötigt Bereich + ACK_A01_UC073_fertig : Bool // Quittierung abgearbeitet + ACK_REQ_A01_UC074_1 : Bool // Quittierung benötigt Bereich + ACK_REQ_A01_UC074_2 : Bool // Quittierung benötigt Bereich + ACK_A01_UC074_fertig : Bool // Quittierung abgearbeitet + Feedback : Struct // Rückführkreisüberwachung Hauptschütze (NH-Kreis geschlossen und Fdback ok) + FDBACK_UH07_QA0610_QA0611 : Bool // Hauptschütze UH07 + FDBACK_UC071_QA0920_QA0921 : Bool // Hauptschütze UC071 + FDBACK_UC072_QA1230_QA1231 : Bool // Hauptschütze UC072 + FDBACK_UC073_QA1540_QA1541 : Bool // Hauptschütze UC073 + FDBACK_UC074_QA1850_QA1851 : Bool // Hauptschütze UC074 + FDBACK_UC074_QA1900_QA1901 : Bool // Hauptschütze UC074 diff --git a/=A01+UH07-KF00/Programmbausteine/Anlage/OutBound_Bereich.awl b/=A01+UH07-KF00/Programmbausteine/Anlage/OutBound_Bereich.awl new file mode 100644 index 0000000..69800cf --- /dev/null +++ b/=A01+UH07-KF00/Programmbausteine/Anlage/OutBound_Bereich.awl @@ -0,0 +1,2274 @@ +=== FB 1001: OutBound_Bereich [STL] === +INTERFACE: + Input: + Output: + InOut: + Static: + A01_UH07 : Struct // Outbound: Hauptschrank + Anlauf : Bool // Anlauf, Wartezeit wegen Bussystem + AnlageEin : Bool // Anlage ist Ein***************************************************************** + Not_Aus : Struct // Not-Aus-Störungen + ausgeloest : Bool // Not-Aus hat ausgelöst + UH07 : Bool // Outbound: Not-Aus am Schaltschrank UH07 betätigt + UC071 : Bool // Outbound: Not-Aus am Schaltschrank UC071 betätigt + UC073 : Bool // Outbound: Not-Aus am Schaltschrank UC073 betätigt + UZ0701 : Bool // Outbound: Not-Aus BST 1 betätigt + UZ0702 : Bool // Outbound: Not-Aus vor Leer-Puffer betätigt + UZ0703 : Bool // Outbound: Not-Aus nach Leer-Puffer betätigt + UZ7101 : Bool // Outbound: Not-Aus am Kontrollplatz betätigt + UZ7102 : Bool // Outbound: Not-Aus an Voll-Puffer-Einfahrt betätigt + UZ7103 : Bool // Outbound: Not-Aus Mitte Voll-Puffer-Einfahrt betätigt + UZ7104 : Bool // Outbound: Not-Aus Mitte Voll-Puffer-Ausfahrt betätigt + UZ7105 : Bool // Outbound: Not-Aus an Voll-Puffer-Ausfahrt betätigt + UZ7106 : Bool // Outbound: Not-Aus Ende Voll-Puffer-Einfahrt betätigt + UZ7107 : Bool // Outbound: Not-Aus Ende Voll-Puffer-Ausfahrt betätigt + UZ7301 : Bool // Outbound: Not-Aus an Highway BST 2/OB betätigt + UZ7302 : Bool // Outbound: Not-Aus an Highway BST 2/Bypass betätigt + UZ7303 : Bool // Outbound: Not-Aus an Bypass LP>VP betätigt + NotErr : Bool // Not-Aus ist betätigt (Kreis) + PnErr : Bool // Pneumatik-Versorgung fehlt + SiErr : Bool // Sicherungsfall + MotErr : Bool // Motorschutz hat ausgelöst + Phasen : Bool // Phasenwächter + K10Err : Bool // Hauptschütz unklar + Brandfall : Bool // Brandmeldung + Automatik : Bool // Automatik + Handbetrieb : Bool // Handbetrieb aktiv + BereichErr : Bool // Bereich hat eine Systemstörung -> Antriebe stoppen + StOk_blinken : Bool // Start n. Störung-Anzeige blinken lassen + StOk_Flanke : Bool // Flankenmerker + BereichErr_old : Bool // Bereich hatte eine Systemstörung -> Anfahrwarnung + StOk_aktiv : Bool // Impuls + Anfahrwarnung : Bool // Anfahrwarnung in Signal-Tower + A01_UC071 : Struct // Outbound: Unterverteiler UC071 + PnErr : Bool // Pneumatik-Versorgung fehlt + SiErr : Bool // Sicherungsfall + MotErr : Bool // Motorschutz hat ausgelöst + K10Err : Bool // Hauptschütz unklar + BereichErr : Bool // Bereich hat eine Systemstörung -> Antriebe stoppen + StOk_blinken : Bool // Start n. Störung-Anzeige blinken lassen + StOk_Flanke : Bool // Flankenmerker + StOk_aktiv : Bool // Impuls + BereichErr_old : Bool // Bereich hatte eine Systemstörung -> Anfahrwarnung + Anfahrwarnung : Bool // Anfahrwarnung in Signal-Tower + A01_UC072 : Struct // Outbound: Unterverteiler UC072 + Not_Aus : Struct // Not-Aus-Störungen + ausgeloest : Bool // Not-Aus hat ausgelöst + UC072 : Bool // Outbound: Not-Aus am Schaltschrank UC072 betätigt + UZ7201 : Bool // Outbound: Not-Aus an Highway Nähe AMR betätigt + UZ7202 : Bool // Outbound: Not-Aus an Highway BST 2/AMR betätigt + NotErr : Bool // Not-Aus ist betätigt (Kreis) + PnErr : Bool // Pneumatik-Versorgung fehlt + SiErr : Bool // Sicherungsfall + MotErr : Bool // Motorschutz hat ausgelöst + K10Err : Bool // Hauptschütz unklar + BereichErr : Bool // Bereich hat eine Systemstörung -> Antriebe stoppen + StOk_blinken : Bool // Start n. Störung-Anzeige blinken lassen + StOk_Flanke : Bool // Flankenmerker + StOk_aktiv : Bool // Impuls + BereichErr_old : Bool // Bereich hatte eine Systemstörung -> Anfahrwarnung + Anfahrwarnung : Bool // Anfahrwarnung in Signal-Tower + A01_UC073 : Struct // Outbound: Unterverteiler UC073 + PnErr : Bool // Pneumatik-Versorgung fehlt + SiErr : Bool // Sicherungsfall + MotErr : Bool // Motorschutz hat ausgelöst + K10Err : Bool // Hauptschütz unklar + BereichErr : Bool // Bereich hat eine Systemstörung -> Antriebe stoppen + StOk_blinken : Bool // Start n. Störung-Anzeige blinken lassen + StOk_Flanke : Bool // Flankenmerker + StOk_aktiv : Bool // Impuls + BereichErr_old : Bool // Bereich hatte eine Systemstörung -> Anfahrwarnung + Anfahrwarnung : Bool // Anfahrwarnung in Signal-Tower + A01_UC074 : Struct // Outbound: Unterverteiler UC074 + Not_Aus : Struct // Not-Aus-Störungen + ausgeloest : Bool // Not-Aus hat ausgelöst + UC074 : Bool // Outbound: Not-Aus am Schaltschrank UC074 betätigt + UZ7401 : Bool // Outbound: Not-Aus an Bypass VP>LP betätigt + UZ7402 : Bool // Outbound: Not-Aus an Entnahme-Puffer betätigt + UZ7403 : Bool // Outbound: Not-Aus an Entnahme-Puffer betätigt + NotErr : Bool // Not-Aus ist betätigt (Kreis) + PnErr : Bool // Pneumatik-Versorgung fehlt + SiErr : Bool // Sicherungsfall + MotErr : Bool // Motorschutz hat ausgelöst + K10Err : Bool // Hauptschütz unklar + BereichErr : Bool // Bereich hat eine Systemstörung -> Antriebe stoppen + StOk_blinken : Bool // Start n. Störung-Anzeige blinken lassen + StOk_Flanke : Bool // Flankenmerker + StOk_aktiv : Bool // Impuls + BereichErr_old : Bool // Bereich hatte eine Systemstörung -> Anfahrwarnung + Anfahrwarnung : Bool // Anfahrwarnung in Signal-Tower + A01_UZ0701 : Struct // Outbound: UZ0701 + StOk_blinken : Bool // Start n. Störung-Anzeige blinken lassen + StOk_Flanke : Bool // Flankenmerker + StOk_aktiv : Bool // Impuls + A01_UZ0702 : Struct // Outbound: UZ0702 + StOk_blinken : Bool // Start n. Störung-Anzeige blinken lassen + StOk_Flanke : Bool // Flankenmerker + StOk_aktiv : Bool // Impuls + A01_UZ0703 : Struct // Outbound: UZ0703 + StOk_blinken : Bool // Start n. Störung-Anzeige blinken lassen + StOk_Flanke : Bool // Flankenmerker + StOk_aktiv : Bool // Impuls + A01_UZ7101 : Struct // Outbound: UZ7101 + StOk_blinken : Bool // Start n. Störung-Anzeige blinken lassen + StOk_Flanke : Bool // Flankenmerker + StOk_aktiv : Bool // Impuls + A01_UZ7102 : Struct // Outbound: UZ7102 + StOk_blinken : Bool // Start n. Störung-Anzeige blinken lassen + StOk_Flanke : Bool // Flankenmerker + StOk_aktiv : Bool // Impuls + Area_Stop : Bool + A01_UZ7103 : Struct // Outbound: UZ7103 + StOk_blinken : Bool // Start n. Störung-Anzeige blinken lassen + StOk_Flanke : Bool // Flankenmerker + StOk_aktiv : Bool // Impuls + A01_UZ7104 : Struct // Outbound: UZ7104 + StOk_blinken : Bool // Start n. Störung-Anzeige blinken lassen + StOk_Flanke : Bool // Flankenmerker + StOk_aktiv : Bool // Impuls + Area_Stop : Bool + A01_UZ7105 : Struct // Outbound: UZ7105 + StOk_blinken : Bool // Start n. Störung-Anzeige blinken lassen + StOk_Flanke : Bool // Flankenmerker + StOk_aktiv : Bool // Impuls + A01_UZ7106 : Struct // Outbound: UZ7106 + StOk_blinken : Bool // Start n. Störung-Anzeige blinken lassen + StOk_Flanke : Bool // Flankenmerker + StOk_aktiv : Bool // Impuls + A01_UZ7107 : Struct // Outbound: UZ7107 + StOk_blinken : Bool // Start n. Störung-Anzeige blinken lassen + StOk_Flanke : Bool // Flankenmerker + StOk_aktiv : Bool // Impuls + A01_UZ7201 : Struct // Outbound: UZ7201 + StOk_blinken : Bool // Start n. Störung-Anzeige blinken lassen + StOk_Flanke : Bool // Flankenmerker + StOk_aktiv : Bool // Impuls + Area_Stop : Bool + A01_UZ7202 : Struct // Outbound: UZ7202 + StOk_blinken : Bool // Start n. Störung-Anzeige blinken lassen + StOk_Flanke : Bool // Flankenmerker + StOk_aktiv : Bool // Impuls + Area_Stop : Bool + A01_UZ7301 : Struct // Outbound: UZ7301 + StOk_blinken : Bool // Start n. Störung-Anzeige blinken lassen + StOk_Flanke : Bool // Flankenmerker + StOk_aktiv : Bool // Impuls + A01_UZ7302 : Struct // Outbound: UZ7302 + StOk_blinken : Bool // Start n. Störung-Anzeige blinken lassen + StOk_Flanke : Bool // Flankenmerker + StOk_aktiv : Bool // Impuls + A01_UZ7303 : Struct // Outbound: UZ7303 + StOk_blinken : Bool // Start n. Störung-Anzeige blinken lassen + StOk_Flanke : Bool // Flankenmerker + StOk_aktiv : Bool // Impuls + A01_UZ7401 : Struct // Outbound: UZ7401 + StOk_blinken : Bool // Start n. Störung-Anzeige blinken lassen + StOk_Flanke : Bool // Flankenmerker + StOk_aktiv : Bool // Impuls + A01_UZ7402 : Struct // Outbound: UZ7402 + StOk_blinken : Bool // Start n. Störung-Anzeige blinken lassen + StOk_Flanke : Bool // Flankenmerker + StOk_aktiv : Bool // Impuls + A01_UZ7403 : Struct // Outbound: UZ7403 + StOk_blinken : Bool // Start n. Störung-Anzeige blinken lassen + StOk_Flanke : Bool // Flankenmerker + StOk_aktiv : Bool // Impuls + ErrDD : DInt + ErrBits : Int + Fast-Sensors : Struct + B1123 : Bool + B1203 : Bool + B1291 : Bool + B1132 : Bool + B0381 : Bool + B0792 : Bool + Temp: + Quit_aktiv : Bool + Not_Err : Bool // Ein Not-Aus-Taster noch betätigt + Not_Akt : Bool // Ein Not-Aus-Störung noch nicht quittiert + Stoerung : Bool + Meldung : Bool + ProfibusError : Bool + Störung_vorhanden : Bool + Constant: + +--- NW 1: Anlage ein/aus, Anzeigen --- + A "SF0001" + A "SF0000" + AN A01_UH07.AnlageEin + AN "7_HMI_Err_UH07_OB".System.Gesamt_Feueralarm_Halle3 + S A01_UH07.AnlageEin + S A01_UH07.Anfahrwarnung + + AN "SF0000" + O "7_HMI_Err_UH07_OB".System.Gesamt_Feueralarm_Halle3 + O "7_HMI_Err_UH07_OB".System.Gesamt_Feueralarm_Halle4 + O "7_HMI_Err_UH07_OB".Kommunikation.SendFIFO_Port1 + O "7_HMI_Err_UH07_OB".Kommunikation.SendFIFO_Port2 + R A01_UH07.AnlageEin + + A A01_UH07.AnlageEin + = "PF0001" + = A01_UH07.Automatik + + AN A01_UH07.Automatik + = "7_HMI_Err_UH07_OB".System.Anlage_aus + + +--- NW 2: Störungen quittieren --- + A "SF0002" + Rise A01_UH07.StOk_Flanke + = A01_UH07.StOk_aktiv // Impuls Störungen quittieren + + A "SF0117" + Rise A01_UC071.StOk_Flanke + = A01_UC071.StOk_aktiv // Impuls Störungen quittieren + + A "SF0177" + Rise A01_UC072.StOk_Flanke + = A01_UC072.StOk_aktiv // Impuls Störungen quittieren + + A "SF0237" + Rise A01_UC073.StOk_Flanke + = A01_UC073.StOk_aktiv // Impuls Störungen quittieren + + A "SF0297" + Rise A01_UC074.StOk_Flanke + = A01_UC074.StOk_aktiv // Impuls Störungen quittieren + + A "SF0041" + Rise A01_UZ0701.StOk_Flanke + = A01_UZ0701.StOk_aktiv // Impuls Störungen quittieren + + A "SF0043" + Rise A01_UZ0702.StOk_Flanke + = A01_UZ0702.StOk_aktiv // Impuls Störungen quittieren + + A "SF0045" + Rise A01_UZ0703.StOk_Flanke + = A01_UZ0703.StOk_aktiv // Impuls Störungen quittieren + + A "SF0121" + Rise A01_UZ7101.StOk_Flanke + = A01_UZ7101.StOk_aktiv // Impuls Störungen quittieren + + A "SF0123" + Rise A01_UZ7102.StOk_Flanke + = A01_UZ7102.StOk_aktiv // Impuls Störungen quittieren + + A "SF0125" + Rise A01_UZ7103.StOk_Flanke + = A01_UZ7103.StOk_aktiv // Impuls Störungen quittieren + + A "SF0127" + Rise A01_UZ7104.StOk_Flanke + = A01_UZ7104.StOk_aktiv // Impuls Störungen quittieren + + A "SF0131" + Rise A01_UZ7105.StOk_Flanke + = A01_UZ7105.StOk_aktiv // Impuls Störungen quittieren + + A "SF0133" + Rise A01_UZ7106.StOk_Flanke + = A01_UZ7106.StOk_aktiv // Impuls Störungen quittieren + + A "SF0135" + Rise A01_UZ7107.StOk_Flanke + = A01_UZ7107.StOk_aktiv // Impuls Störungen quittieren + + A "SF0181" + Rise A01_UZ7201.StOk_Flanke + = A01_UZ7201.StOk_aktiv // Impuls Störungen quittieren + + A "SF0183" + Rise A01_UZ7202.StOk_Flanke + = A01_UZ7202.StOk_aktiv // Impuls Störungen quittieren + + A "SF0241" + Rise A01_UZ7301.StOk_Flanke + = A01_UZ7301.StOk_aktiv // Impuls Störungen quittieren + + A "SF0243" + Rise A01_UZ7302.StOk_Flanke + = A01_UZ7302.StOk_aktiv // Impuls Störungen quittieren + + A "SF0245" + Rise A01_UZ7303.StOk_Flanke + = A01_UZ7303.StOk_aktiv // Impuls Störungen quittieren + + A "SF0301" + Rise A01_UZ7401.StOk_Flanke + = A01_UZ7401.StOk_aktiv // Impuls Störungen quittieren + + A "SF0303" + Rise A01_UZ7402.StOk_Flanke + = A01_UZ7402.StOk_aktiv // Impuls Störungen quittieren + + A "SF0305" + Rise A01_UZ7403.StOk_Flanke + = A01_UZ7403.StOk_aktiv // Impuls Störungen quittieren + + +--- NW 3: UH07: Pneumatik-Störung --- + A "BP0004" + L S5T#10S // Damit Druck aufgebaut werden kann ! + OnDelay "T200" + +// Störung kann quittiert werden: + A "T200" + A "7_HMI_Err_UH07_OB".VErr.Pn_UH07 + S A01_UH07.StOk_blinken + +// Störung quittieren: + A A01_UH07.StOk_aktiv // Impuls Störungen quittieren //Störungen quittieren + A "T200" + R "7_HMI_Err_UH07_OB".VErr.Pn_UH07 + +// Störung aktiv: + AN "T200" + S "7_HMI_Err_UH07_OB".VErr.Pn_UH07 + + A "7_HMI_Err_UH07_OB".VErr.Pn_UH07 + = A01_UH07.PnErr + +// Anzeige: + A "7_HMI_Err_UH07_OB".VErr.Pn_UH07 + = "PF0003" + + +--- NW 4: UC071: Pneumatik-Störung --- + A "BP0107" + L S5T#10S // Damit Druck aufgebaut werden kann ! + OnDelay "T201" + +// Störung kann quittiert werden: + A "T201" + A "7_HMI_Err_UH07_OB".VErr.Pn_UC071 + S A01_UC071.StOk_blinken + +// Störung quittieren: + A A01_UC071.StOk_aktiv // Impuls Störungen quittieren //Störungen quittieren + A "T201" + R "7_HMI_Err_UH07_OB".VErr.Pn_UC071 + +// Störung aktiv: + AN "T201" + S "7_HMI_Err_UH07_OB".VErr.Pn_UC071 + +// Anzeige: + A "7_HMI_Err_UH07_OB".VErr.Pn_UC071 + = "PF0100" + +// Pneumatik-Störung: + A "7_HMI_Err_UH07_OB".VErr.Pn_UC071 + = A01_UC071.PnErr + + +--- NW 5: UC072: Pneumatik-Störung --- + A "BP0167" + L S5T#10S // Damit Druck aufgebaut werden kann ! + OnDelay "T202" + +// Störung kann quittiert werden: + A "T202" + A "7_HMI_Err_UH07_OB".VErr.Pn_UC072 + S A01_UC072.StOk_blinken + +// Störung quittieren: + A A01_UC072.StOk_aktiv // Impuls Störungen quittieren //Störungen quittieren + A "T202" + R "7_HMI_Err_UH07_OB".VErr.Pn_UC072 + +// Störung aktiv: + AN "T202" + S "7_HMI_Err_UH07_OB".VErr.Pn_UC072 + +// Anzeige: + A "7_HMI_Err_UH07_OB".VErr.Pn_UC072 + = "PF0160" + +// Pneumatik-Störung: + A "7_HMI_Err_UH07_OB".VErr.Pn_UC072 + = A01_UC072.PnErr + + +--- NW 6: UC073: Pneumatik-Störung --- + A "BP0227" + L S5T#10S // Damit Druck aufgebaut werden kann ! + OnDelay "T203" + +// Störung kann quittiert werden: + A "T203" + A "7_HMI_Err_UH07_OB".VErr.Pn_UC073 + S A01_UC073.StOk_blinken + +// Störung quittieren: + A A01_UC073.StOk_aktiv // Impuls Störungen quittieren //Störungen quittieren + A "T203" + R "7_HMI_Err_UH07_OB".VErr.Pn_UC073 + +// Störung aktiv: + AN "T203" + S "7_HMI_Err_UH07_OB".VErr.Pn_UC073 + +// Anzeige: + A "7_HMI_Err_UH07_OB".VErr.Pn_UC073 + = "PF0220" + +// Pneumatik-Störung: + A "7_HMI_Err_UH07_OB".VErr.Pn_UC073 + = A01_UC073.PnErr + + +--- NW 7: UC074: Pneumatik-Störung --- + A "BP0287" + L S5T#10S // Damit Druck aufgebaut werden kann ! + OnDelay "T204" + +// Störung kann quittiert werden: + A "T204" + A "7_HMI_Err_UH07_OB".VErr.Pn_UC074 + S A01_UC074.StOk_blinken + +// Störung quittieren: + A A01_UC074.StOk_aktiv // Impuls Störungen quittieren //Störungen quittieren + A "T204" + R "7_HMI_Err_UH07_OB".VErr.Pn_UC074 + +// Störung aktiv: + AN "T204" + S "7_HMI_Err_UH07_OB".VErr.Pn_UC074 + +// Anzeige: + A "7_HMI_Err_UH07_OB".VErr.Pn_UC074 + = "PF0280" + +// Pneumatik-Störung: + A "7_HMI_Err_UH07_OB".VErr.Pn_UC074 + = A01_UC074.PnErr + + +--- NW 8: UH07: Phasenausfall --- +// Störung kann quittiert werden: + A "7_HMI_Err_UH07_OB".VErr.Phasen + A "DI0005" + S A01_UH07.StOk_blinken + +// Impuls Störungen quittieren + A A01_UH07.StOk_aktiv + A "DI0005" + R "7_HMI_Err_UH07_OB".VErr.Phasen + +// Störung aktiv: + AN "DI0005" + S "7_HMI_Err_UH07_OB".VErr.Phasen + + +--- NW 9: UH07: Sicherungsfall --- +// Störung kann quittiert werden: + A "DI0006" + A "7_HMI_Err_UH07_OB".VErr.FC0006 + O + A "DI0007" + A "7_HMI_Err_UH07_OB".VErr.FC0007 + O + A "DI0010" + A "7_HMI_Err_UH07_OB".VErr.FC0010 + O + A "DI0011" + A "7_HMI_Err_UH07_OB".VErr.FC0011 + O + A "DI0021" + A "7_HMI_Err_UH07_OB".VErr.FC0021 + O + A "DI0022" + A "7_HMI_Err_UH07_OB".VErr.FC0022 + O + A "DI0023" + A "7_HMI_Err_UH07_OB".VErr.FC0023 + S A01_UH07.StOk_blinken + +// Störung quittieren: + A A01_UH07.StOk_aktiv // Impuls Störungen quittieren + R "7_HMI_Err_UH07_OB".VErr.FC0006 + R "7_HMI_Err_UH07_OB".VErr.FC0007 + R "7_HMI_Err_UH07_OB".VErr.FC0010 + R "7_HMI_Err_UH07_OB".VErr.FC0011 + R "7_HMI_Err_UH07_OB".VErr.FC0012 + R "7_HMI_Err_UH07_OB".VErr.FC0021 + R "7_HMI_Err_UH07_OB".VErr.FC0022 + R "7_HMI_Err_UH07_OB".VErr.FC0023 + +// Störung aktiv: + AN "DI0006" + S "7_HMI_Err_UH07_OB".VErr.FC0006 + + AN "DI0007" + S "7_HMI_Err_UH07_OB".VErr.FC0007 + + AN "DI0010" + S "7_HMI_Err_UH07_OB".VErr.FC0010 + + AN "DI0011" + S "7_HMI_Err_UH07_OB".VErr.FC0011 + + AN "DI0021" + S "7_HMI_Err_UH07_OB".VErr.FC0021 + + AN "DI0022" + S "7_HMI_Err_UH07_OB".VErr.FC0022 + + AN "DI0023" + S "7_HMI_Err_UH07_OB".VErr.FC0023 + +// Sicherungs-Störung gesamt: + A "7_HMI_Err_UH07_OB".VErr.FC0006 + O "7_HMI_Err_UH07_OB".VErr.FC0007 + O "7_HMI_Err_UH07_OB".VErr.FC0010 + O "7_HMI_Err_UH07_OB".VErr.FC0011 + O "7_HMI_Err_UH07_OB".VErr.FC0012 + O "7_HMI_Err_UH07_OB".VErr.FC0021 + O "7_HMI_Err_UH07_OB".VErr.FC0022 + O "7_HMI_Err_UH07_OB".VErr.FC0023 + O "7_HMI_Err_UH07_OB".VErr.Frei131 + O "7_HMI_Err_UH07_OB".VErr.Frei132 + O "7_HMI_Err_UH07_OB".VErr.Frei133 + = A01_UH07.SiErr + +// Anzeige: + A "7_HMI_Err_UH07_OB".VErr.Phasen + A "Clock_1Hz" + O A01_UH07.SiErr + = "PF0005" + + +--- NW 10: UC071: Sicherungsfall --- +// Störung kann quittiert werden: + A "DI0100" + A "7_HMI_Err_UH07_OB".VErr.FC0100 + O + A "DI0101" + A "7_HMI_Err_UH07_OB".VErr.FC0101 + O + A "DI0102" + A "7_HMI_Err_UH07_OB".VErr.FC0102 + O + A "DI0103" + A "7_HMI_Err_UH07_OB".VErr.FC0103 + S A01_UC071.StOk_blinken + +// Störung quittieren: + A A01_UC071.StOk_aktiv // Impuls Störungen quittieren + R "7_HMI_Err_UH07_OB".VErr.FC0100 + R "7_HMI_Err_UH07_OB".VErr.FC0101 + R "7_HMI_Err_UH07_OB".VErr.FC0102 + R "7_HMI_Err_UH07_OB".VErr.FC0103 + +// Störung aktiv: + AN "DI0100" + S "7_HMI_Err_UH07_OB".VErr.FC0100 + + AN "DI0101" + S "7_HMI_Err_UH07_OB".VErr.FC0101 + + AN "DI0102" + S "7_HMI_Err_UH07_OB".VErr.FC0102 + + AN "DI0103" + S "7_HMI_Err_UH07_OB".VErr.FC0103 + +// Sicherungs-Störung gesamt: + A "7_HMI_Err_UH07_OB".VErr.FC0100 + O "7_HMI_Err_UH07_OB".VErr.FC0101 + O "7_HMI_Err_UH07_OB".VErr.FC0102 + O "7_HMI_Err_UH07_OB".VErr.FC0103 + = A01_UC071.SiErr + +// Anzeige: + A A01_UC071.SiErr + = "PF0102" + + +--- NW 11: UC072: Sicherungsfall --- +// Störung kann quittiert werden: + A "DI0160" + A "7_HMI_Err_UH07_OB".VErr.FC0160 + O + A "DI0161" + A "7_HMI_Err_UH07_OB".VErr.FC0161 + O + A "DI0162" + A "7_HMI_Err_UH07_OB".VErr.FC0162 + S A01_UC072.StOk_blinken + +// Störung quittieren: + A A01_UC072.StOk_aktiv // Impuls Störungen quittieren + R "7_HMI_Err_UH07_OB".VErr.FC0160 + R "7_HMI_Err_UH07_OB".VErr.FC0161 + R "7_HMI_Err_UH07_OB".VErr.FC0162 + +// Störung aktiv: + AN "DI0160" + S "7_HMI_Err_UH07_OB".VErr.FC0160 + + AN "DI0161" + S "7_HMI_Err_UH07_OB".VErr.FC0161 + + AN "DI0162" + S "7_HMI_Err_UH07_OB".VErr.FC0162 + +// Sicherungs-Störung gesamt: + A "7_HMI_Err_UH07_OB".VErr.FC0160 + O "7_HMI_Err_UH07_OB".VErr.FC0161 + O "7_HMI_Err_UH07_OB".VErr.FC0162 + = A01_UC072.SiErr + +// Anzeige: + A A01_UC072.SiErr + = "PF0162" + + +--- NW 12: UC073: Sicherungsfall --- +// Störung kann quittiert werden: + A "DI0220" + A "7_HMI_Err_UH07_OB".VErr.FC0220 + O + A "DI0221" + A "7_HMI_Err_UH07_OB".VErr.FC0221 + O + A "DI0222" + A "7_HMI_Err_UH07_OB".VErr.FC0222 + O + A "DI0223" + A "7_HMI_Err_UH07_OB".VErr.FC0223 + S A01_UC073.StOk_blinken + +// Störung quittieren: + A A01_UC073.StOk_aktiv // Impuls Störungen quittieren + R "7_HMI_Err_UH07_OB".VErr.FC0220 + R "7_HMI_Err_UH07_OB".VErr.FC0221 + R "7_HMI_Err_UH07_OB".VErr.FC0222 + R "7_HMI_Err_UH07_OB".VErr.FC0223 + +// Störung aktiv: + AN "DI0220" + S "7_HMI_Err_UH07_OB".VErr.FC0220 + + AN "DI0221" + S "7_HMI_Err_UH07_OB".VErr.FC0221 + + AN "DI0222" + S "7_HMI_Err_UH07_OB".VErr.FC0222 + + AN "DI0223" + S "7_HMI_Err_UH07_OB".VErr.FC0223 + +// Sicherungs-Störung gesamt: + A "7_HMI_Err_UH07_OB".VErr.FC0220 + O "7_HMI_Err_UH07_OB".VErr.FC0221 + O "7_HMI_Err_UH07_OB".VErr.FC0222 + O "7_HMI_Err_UH07_OB".VErr.FC0223 + = A01_UC073.SiErr + +// Anzeige: + A A01_UC073.SiErr + = "PF0222" + + +--- NW 13: UC074: Sicherungsfall --- +// Störung kann quittiert werden: + A "DI0280" + A "7_HMI_Err_UH07_OB".VErr.FC0280 + O + A "DI0281" + A "7_HMI_Err_UH07_OB".VErr.FC0281 + O + A "DI0282" + A "7_HMI_Err_UH07_OB".VErr.FC0282 + O + A "DI0283" + A "7_HMI_Err_UH07_OB".VErr.FC0283 + S A01_UC074.StOk_blinken + +// Störung quittieren: + A A01_UC074.StOk_aktiv // Impuls Störungen quittieren + R "7_HMI_Err_UH07_OB".VErr.FC0280 + R "7_HMI_Err_UH07_OB".VErr.FC0281 + R "7_HMI_Err_UH07_OB".VErr.FC0282 + R "7_HMI_Err_UH07_OB".VErr.FC0283 + +// Störung aktiv: + AN "DI0280" + S "7_HMI_Err_UH07_OB".VErr.FC0280 + + AN "DI0281" + S "7_HMI_Err_UH07_OB".VErr.FC0281 + + AN "DI0282" + S "7_HMI_Err_UH07_OB".VErr.FC0282 + + AN "DI0283" + S "7_HMI_Err_UH07_OB".VErr.FC0283 + +// Sicherungs-Störung gesamt: + A "7_HMI_Err_UH07_OB".VErr.FC0280 + O "7_HMI_Err_UH07_OB".VErr.FC0281 + O "7_HMI_Err_UH07_OB".VErr.FC0282 + O "7_HMI_Err_UH07_OB".VErr.FC0283 + = A01_UC074.SiErr + +// Anzeige: + A A01_UC074.SiErr + = "PF0282" + + +--- NW 14: UH07: Motorschutz-Störung ist aktiv --- +// Störung kann quittiert werden: + A "7_HMI_Err_UH07_OB".QErr.MA0060 + A "FC0060" + O + A "7_HMI_Err_UH07_OB".QErr.MA0061 + A "FC0061" + O + A "7_HMI_Err_UH07_OB".QErr.MA0062 + A "FC0062" + O + A "7_HMI_Err_UH07_OB".QErr.MA0063 + A "FC0063" + O + A "7_HMI_Err_UH07_OB".QErr.MA0064 + A "FC0064" + O + A "7_HMI_Err_UH07_OB".QErr.MA0065 + A "FC0065" + O + A "7_HMI_Err_UH07_OB".QErr.MA0066 + A "FC0066" + S A01_UH07.StOk_blinken + +// Störung quittieren: +// wird im Lastbaustein gemacht + +// Störung aktiv: +// wird im Lastbaustein gemacht + +// Motorschutz-Störung gesamt: + A "7_HMI_Err_UH07_OB".QErr.MA0060 + O "7_HMI_Err_UH07_OB".QErr.MA0061 + O "7_HMI_Err_UH07_OB".QErr.MA0062 + O "7_HMI_Err_UH07_OB".QErr.MA0063 + O "7_HMI_Err_UH07_OB".QErr.MA0064 + O "7_HMI_Err_UH07_OB".QErr.MA0065 + O "7_HMI_Err_UH07_OB".QErr.MA0066 + = A01_UH07.MotErr + +// Anzeige: + A A01_UH07.MotErr + = "PF0004" + + +--- NW 15: UC071: Motorschutz-Störung ist aktiv --- +// Störung kann quittiert werden: + A "7_HMI_Err_UH07_OB".QErr.MA0140 + A "FC0140" + O + A "7_HMI_Err_UH07_OB".QErr.MA0141 + A "FC0141" + O + A "7_HMI_Err_UH07_OB".QErr.MA0142 + A "FC0142" + O + A "7_HMI_Err_UH07_OB".QErr.MA0143 + A "FC0143" + O + A "7_HMI_Err_UH07_OB".QErr.MA0144 + A "FC0144" + O + A "7_HMI_Err_UH07_OB".QErr.MA0145 + A "FC0145" + O + A "7_HMI_Err_UH07_OB".QErr.MA0146 + A "FC0146" + O + A "7_HMI_Err_UH07_OB".QErr.MA0147 + A "FC0147" + O + A "7_HMI_Err_UH07_OB".QErr.MA0150 + A "FC0150" + O + A "7_HMI_Err_UH07_OB".QErr.MA0151 + A "FC0151" + O + A "7_HMI_Err_UH07_OB".QErr.MA0152 + A "FC0152" + S A01_UC071.StOk_blinken + +// Störung quittieren: +// wird im Lastbaustein gemacht + +// Störung aktiv: +// wird im Lastbaustein gemacht + +// Motorschutz-Störung gesamt: + A "7_HMI_Err_UH07_OB".QErr.MA0140 + O "7_HMI_Err_UH07_OB".QErr.MA0141 + O "7_HMI_Err_UH07_OB".QErr.MA0142 + O "7_HMI_Err_UH07_OB".QErr.MA0143 + O "7_HMI_Err_UH07_OB".QErr.MA0144 + O "7_HMI_Err_UH07_OB".QErr.MA0145 + O "7_HMI_Err_UH07_OB".QErr.MA0146 + O "7_HMI_Err_UH07_OB".QErr.MA0147 + O "7_HMI_Err_UH07_OB".QErr.MA0150 + O "7_HMI_Err_UH07_OB".QErr.MA0151 + O "7_HMI_Err_UH07_OB".QErr.MA0152 + = A01_UC071.MotErr + +// Anzeige: + A A01_UC071.MotErr + = "PF0101" + + +--- NW 16: UC072: Motorschutz-Störung ist aktiv --- +// Störung kann quittiert werden: + A "7_HMI_Err_UH07_OB".QErr.MA0200 + A "FC0200" + O + A "7_HMI_Err_UH07_OB".QErr.MA0201 + A "FC0201" + O + A "7_HMI_Err_UH07_OB".QErr.MA0202 + A "FC0202" + O + A "7_HMI_Err_UH07_OB".QErr.MA0203 + A "FC0203" + S A01_UC072.StOk_blinken + +// Störung quittieren: +// wird im Lastbaustein gemacht + +// Störung aktiv: +// wird im Lastbaustein gemacht + +// Motorschutz-Störung gesamt: + A "7_HMI_Err_UH07_OB".QErr.MA0200 + O "7_HMI_Err_UH07_OB".QErr.MA0201 + O "7_HMI_Err_UH07_OB".QErr.MA0202 + O "7_HMI_Err_UH07_OB".QErr.MA0203 + = A01_UC072.MotErr + +// Anzeige: + A A01_UC072.MotErr + = "PF0161" + + +--- NW 17: UC073: Motorschutz-Störung ist aktiv --- +// Störung kann quittiert werden: + A "7_HMI_Err_UH07_OB".QErr.MA0260 + A "FC0260" + O + A "7_HMI_Err_UH07_OB".QErr.MA0261 + A "FC0261" + O + A "7_HMI_Err_UH07_OB".QErr.MA0262 + A "FC0262" + O + A "7_HMI_Err_UH07_OB".QErr.MA0263 + A "FC0263" + O + A "7_HMI_Err_UH07_OB".QErr.MA0264 + A "FC0264" + O + A "7_HMI_Err_UH07_OB".QErr.MA0265 + A "FC0265" + O + A "7_HMI_Err_UH07_OB".QErr.MA0266 + A "FC0266" + O + A "7_HMI_Err_UH07_OB".QErr.MA0267 + A "FC0267" + O + A "7_HMI_Err_UH07_OB".QErr.MA0270 + A "FC0270" + S A01_UC073.StOk_blinken + +// Störung quittieren: +// wird im Lastbaustein gemacht + +// Störung aktiv: +// wird im Lastbaustein gemacht + +// Motorschutz-Störung gesamt: + A "7_HMI_Err_UH07_OB".QErr.MA0260 + O "7_HMI_Err_UH07_OB".QErr.MA0261 + O "7_HMI_Err_UH07_OB".QErr.MA0262 + O "7_HMI_Err_UH07_OB".QErr.MA0263 + O "7_HMI_Err_UH07_OB".QErr.MA0264 + O "7_HMI_Err_UH07_OB".QErr.MA0265 + O "7_HMI_Err_UH07_OB".QErr.MA0266 + O "7_HMI_Err_UH07_OB".QErr.MA0267 + O "7_HMI_Err_UH07_OB".QErr.MA0270 + = A01_UC073.MotErr + +// Anzeige: + A A01_UC073.MotErr + = "PF0221" + + +--- NW 18: UC074: Motorschutz-Störung ist aktiv --- +// Störung kann quittiert werden: + A "7_HMI_Err_UH07_OB".QErr.MA0320 + A "FC0320" + O + A "7_HMI_Err_UH07_OB".QErr.MA0321 + A "FC0321" + O + A "7_HMI_Err_UH07_OB".QErr.MA0322 + A "FC0322" + O + A "7_HMI_Err_UH07_OB".QErr.MA0323 + A "FC0323" + O + A "7_HMI_Err_UH07_OB".QErr.MA0324 + A "FC0324" + O + A "7_HMI_Err_UH07_OB".QErr.MA0325 + A "FC0325" + O + A "7_HMI_Err_UH07_OB".QErr.MA0326 + A "FC0326" + O + A "7_HMI_Err_UH07_OB".QErr.MA0327 + A "FC0327" + O + A "7_HMI_Err_UH07_OB".QErr.MA0330 + A "FC0330" + O + A "7_HMI_Err_UH07_OB".QErr.MA0331 + A "FC0331" + O + A "7_HMI_Err_UH07_OB".QErr.MA0332 + A "FC0332" + O + A "7_HMI_Err_UH07_OB".QErr.MA0333 + A "FC0333" + S A01_UC074.StOk_blinken + +// Störung quittieren: +// wird im Lastbaustein gemacht + +// Störung aktiv: +// wird im Lastbaustein gemacht + +// Motorschutz-Störung gesamt: + A "7_HMI_Err_UH07_OB".QErr.MA0320 + O "7_HMI_Err_UH07_OB".QErr.MA0321 + O "7_HMI_Err_UH07_OB".QErr.MA0322 + O "7_HMI_Err_UH07_OB".QErr.MA0323 + O "7_HMI_Err_UH07_OB".QErr.MA0324 + O "7_HMI_Err_UH07_OB".QErr.MA0325 + O "7_HMI_Err_UH07_OB".QErr.MA0326 + O "7_HMI_Err_UH07_OB".QErr.MA0327 + O "7_HMI_Err_UH07_OB".QErr.MA0330 + O "7_HMI_Err_UH07_OB".QErr.MA0331 + O "7_HMI_Err_UH07_OB".QErr.MA0332 + O "7_HMI_Err_UH07_OB".QErr.MA0333 + = A01_UC074.MotErr + +// Anzeige: + A A01_UC074.MotErr + = "PF0281" + + +--- NW 19: UH07: Feueralarm --- +// Störung kann quittiert werden: + A "7_HMI_Err_UH07_OB".System.Gesamt_Feueralarm_Halle3 + A "DI0034" + O + A "7_HMI_Err_UH07_OB".System.Gesamt_Feueralarm_Halle4 + A "DI0033" + O + A "7_HMI_Err_UH07_OB".System.BST1_Feueralarm + A "DI0035" + O + A "7_HMI_Err_UH07_OB".System."BST1_Störung" + A "DI0036" + O + A "7_HMI_Err_UH07_OB".System.BST1_Geschlossen + A "DI0037" + O + A "7_HMI_Err_UH07_OB".System.BST2_Feueralarm + A "DI0170" + O + A "7_HMI_Err_UH07_OB".System."BST2_Störung" + A "DI0171" + O + A "7_HMI_Err_UH07_OB".System.BST2_Geschlossen + A "DI0172" + S A01_UH07.StOk_blinken + +// Impuls Störungen quittieren + A A01_UH07.StOk_aktiv + R "7_HMI_Err_UH07_OB".System.Gesamt_Feueralarm_Halle3 + R "7_HMI_Err_UH07_OB".System.Gesamt_Feueralarm_Halle4 + R "7_HMI_Err_UH07_OB".System.BST1_Feueralarm + R "7_HMI_Err_UH07_OB".System."BST1_Störung" + R "7_HMI_Err_UH07_OB".System.BST1_Geschlossen + R "7_HMI_Err_UH07_OB".System.BST2_Feueralarm + R "7_HMI_Err_UH07_OB".System."BST2_Störung" + R "7_HMI_Err_UH07_OB".System.BST2_Geschlossen + +// Störung aktiv: + AN "DI0033" + S "7_HMI_Err_UH07_OB".System.Gesamt_Feueralarm_Halle3 + AN "DI0034" + S "7_HMI_Err_UH07_OB".System.Gesamt_Feueralarm_Halle4 + + AN "DI0035" + S "7_HMI_Err_UH07_OB".System.BST1_Feueralarm + + AN "DI0036" + S "7_HMI_Err_UH07_OB".System."BST1_Störung" + + AN "DI0037" + S "7_HMI_Err_UH07_OB".System.BST1_Geschlossen + + AN "DI0170" + S "7_HMI_Err_UH07_OB".System.BST2_Feueralarm + + AN "DI0171" + S "7_HMI_Err_UH07_OB".System."BST2_Störung" + + AN "DI0172" + S "7_HMI_Err_UH07_OB".System.BST2_Geschlossen + +// Brandschutztür gesamt: + A "7_HMI_Err_UH07_OB".System.Gesamt_Feueralarm_Halle3 + O "7_HMI_Err_UH07_OB".System.Gesamt_Feueralarm_Halle4 + O "7_HMI_Err_UH07_OB".System.BST1_Feueralarm + O "7_HMI_Err_UH07_OB".System."BST1_Störung" + O "7_HMI_Err_UH07_OB".System.BST1_Geschlossen + O "7_HMI_Err_UH07_OB".System.BST2_Feueralarm + O "7_HMI_Err_UH07_OB".System."BST2_Störung" + O "7_HMI_Err_UH07_OB".System.BST2_Geschlossen + = A01_UH07.Brandfall + +// Anzeige: + A A01_UH07.Brandfall + = "PF0006" + + +--- NW 20: UH07: Not-Aus-Störung erzeugen / quittierbar / quittieren (+UC071 +UC073) --- +// Quittierung wurd abgearbeitet: + A "DSchnittstelle_zu_Safety".FromSafety.ACK_A01_UH07_fertig + R "DSchnittstelle_zu_Safety".FromSafety.ACK_A01_UH07_fertig + R "DSchnittstelle_zu_Safety".ToSafety.ACK_A01_UH07 + + A "DSchnittstelle_zu_Safety".FromSafety.ACK_A01_UC071_fertig + R "DSchnittstelle_zu_Safety".FromSafety.ACK_A01_UC071_fertig + R "DSchnittstelle_zu_Safety".ToSafety.ACK_A01_UC071 + + A "DSchnittstelle_zu_Safety".FromSafety.ACK_A01_UC073_fertig + R "DSchnittstelle_zu_Safety".FromSafety.ACK_A01_UC073_fertig + R "DSchnittstelle_zu_Safety".ToSafety.ACK_A01_UC073 + +// Not-Aus nach Haupschalter ein quittieren: + A A01_UH07.StOk_aktiv // Impuls Störungen quittieren + A A01_UH07.Not_Aus.ausgeloest + S "DSchnittstelle_zu_Safety".ToSafety.ACK_A01_UH07 // Not-Aus quittieren + +// Not-Aus an UH07: + A "SF0400" + A A01_UH07.Not_Aus.UH07 + S A01_UH07.StOk_blinken // Störung quittierbar + + A A01_UH07.StOk_aktiv // Impuls Störungen quittieren //Störungen quittieren + A "SF0400" + A A01_UH07.Not_Aus.UH07 + R A01_UH07.Not_Aus.UH07 + S "DSchnittstelle_zu_Safety".ToSafety.ACK_A01_UH07 // Not-Aus quittieren + + AN "SF0400" + S A01_UH07.Not_Aus.UH07 // Störung vorhanden + + A A01_UH07.Not_Aus.UH07 // Störung vorhanden + = "7_HMI_Err_UH07_OB".Not.UH07 // Störung an OP übergeben + +// Not-Aus an UC071: + A "SF0710" + A A01_UH07.Not_Aus.UC071 + S A01_UC071.StOk_blinken // Störung quittierbar + + A A01_UC071.StOk_aktiv // Impuls Störungen quittieren //Störungen quittieren + A "SF0710" + A A01_UH07.Not_Aus.UC071 + R A01_UH07.Not_Aus.UC071 + S "DSchnittstelle_zu_Safety".ToSafety.ACK_A01_UC071 // Not-Aus quittieren + + AN "SF0710" + S A01_UH07.Not_Aus.UC071 // Störung vorhanden + + A A01_UH07.Not_Aus.UC071 // Störung vorhanden + = "7_HMI_Err_UH07_OB".Not.UC071 // Störung an OP übergeben + +// Not-Aus an UC073: + A "SF1330" + A A01_UH07.Not_Aus.UC073 + S A01_UC073.StOk_blinken // Störung quittierbar + + A A01_UC073.StOk_aktiv // Impuls Störungen quittieren //Störungen quittieren + A "SF1330" + A A01_UH07.Not_Aus.UC073 + R A01_UH07.Not_Aus.UC073 + S "DSchnittstelle_zu_Safety".ToSafety.ACK_A01_UC073 // Not-Aus quittieren + + AN "SF1330" + S A01_UH07.Not_Aus.UC073 // Störung vorhanden + + A A01_UH07.Not_Aus.UC073 // Störung vorhanden + = "7_HMI_Err_UH07_OB".Not.UC073 // Störung an OP übergeben + +// Not-Aus an UZ0701: + A "SF0401" + A A01_UH07.Not_Aus.UZ0701 + S A01_UZ0701.StOk_blinken // Störung quittierbar + + A A01_UZ0701.StOk_aktiv // Impuls Störungen quittieren //Störungen quittieren + A "SF0401" + A A01_UH07.Not_Aus.UZ0701 + R A01_UH07.Not_Aus.UZ0701 + S "DSchnittstelle_zu_Safety".ToSafety.ACK_A01_UH07 // Not-Aus quittieren + + AN "SF0401" + S A01_UH07.Not_Aus.UZ0701 // Störung vorhanden + + A A01_UH07.Not_Aus.UZ0701 // Störung vorhanden + = "7_HMI_Err_UH07_OB".Not.UZ0701 // Störung an OP übergeben + +// Not-Aus an UZ0702: + A "SF0402" + A A01_UH07.Not_Aus.UZ0702 + S A01_UZ0702.StOk_blinken // Störung quittierbar + + A A01_UZ0702.StOk_aktiv // Impuls Störungen quittieren //Störungen quittieren + A "SF0402" + A A01_UH07.Not_Aus.UZ0702 + R A01_UH07.Not_Aus.UZ0702 + S "DSchnittstelle_zu_Safety".ToSafety.ACK_A01_UH07 // Not-Aus quittieren + + AN "SF0402" + S A01_UH07.Not_Aus.UZ0702 // Störung vorhanden + + A A01_UH07.Not_Aus.UZ0702 // Störung vorhanden + = "7_HMI_Err_UH07_OB".Not.UZ0702 // Störung an OP übergeben + +// Not-Aus an UZ0703: + A "SF0403" + A A01_UH07.Not_Aus.UZ0703 + S A01_UZ0703.StOk_blinken // Störung quittierbar + + A A01_UZ0703.StOk_aktiv // Impuls Störungen quittieren //Störungen quittieren + A "SF0403" + A A01_UH07.Not_Aus.UZ0703 + R A01_UH07.Not_Aus.UZ0703 + S "DSchnittstelle_zu_Safety".ToSafety.ACK_A01_UH07 // Not-Aus quittieren + + AN "SF0403" + S A01_UH07.Not_Aus.UZ0703 // Störung vorhanden + + A A01_UH07.Not_Aus.UZ0703 // Störung vorhanden + = "7_HMI_Err_UH07_OB".Not.UZ0703 // Störung an OP übergeben + +// Not-Aus an UZ7101: + A "SF0711" + A A01_UH07.Not_Aus.UZ7101 + S A01_UZ7101.StOk_blinken // Störung quittierbar + + A A01_UZ7101.StOk_aktiv // Impuls Störungen quittieren //Störungen quittieren + A "SF0711" + A A01_UH07.Not_Aus.UZ7101 + R A01_UH07.Not_Aus.UZ7101 + S "DSchnittstelle_zu_Safety".ToSafety.ACK_A01_UH07 // Not-Aus quittieren + + AN "SF0711" + S A01_UH07.Not_Aus.UZ7101 // Störung vorhanden + + A A01_UH07.Not_Aus.UZ7101 // Störung vorhanden + = "7_HMI_Err_UH07_OB".Not.UZ7101 // Störung an OP übergeben + +// Not-Aus an UZ7102: + A "SF0712" + A A01_UH07.Not_Aus.UZ7102 + S A01_UZ7102.StOk_blinken // Störung quittierbar + + A A01_UZ7102.StOk_aktiv // Impuls Störungen quittieren //Störungen quittieren + A "SF0712" + A A01_UH07.Not_Aus.UZ7102 + R A01_UH07.Not_Aus.UZ7102 + S "DSchnittstelle_zu_Safety".ToSafety.ACK_A01_UH07 // Not-Aus quittieren + + AN "SF0712" + S A01_UH07.Not_Aus.UZ7102 // Störung vorhanden + + A A01_UH07.Not_Aus.UZ7102 // Störung vorhanden + = "7_HMI_Err_UH07_OB".Not.UZ7102 // Störung an OP übergeben + +// Not-Aus an UZ7103: + A "SF0713" + A A01_UH07.Not_Aus.UZ7103 + S A01_UZ7103.StOk_blinken // Störung quittierbar + + A A01_UZ7103.StOk_aktiv // Impuls Störungen quittieren //Störungen quittieren + A "SF0713" + A A01_UH07.Not_Aus.UZ7103 + R A01_UH07.Not_Aus.UZ7103 + S "DSchnittstelle_zu_Safety".ToSafety.ACK_A01_UH07 // Not-Aus quittieren + + AN "SF0713" + S A01_UH07.Not_Aus.UZ7103 // Störung vorhanden + + A A01_UH07.Not_Aus.UZ7103 // Störung vorhanden + = "7_HMI_Err_UH07_OB".Not.UZ7103 // Störung an OP übergeben + +// Not-Aus an UZ7104: + A "SF0780" + A A01_UH07.Not_Aus.UZ7104 + S A01_UZ7104.StOk_blinken // Störung quittierbar + + A A01_UZ7104.StOk_aktiv // Impuls Störungen quittieren //Störungen quittieren + A "SF0780" + A A01_UH07.Not_Aus.UZ7104 + R A01_UH07.Not_Aus.UZ7104 + S "DSchnittstelle_zu_Safety".ToSafety.ACK_A01_UH07 // Not-Aus quittieren + + AN "SF0780" + S A01_UH07.Not_Aus.UZ7104 // Störung vorhanden + + A A01_UH07.Not_Aus.UZ7104 // Störung vorhanden + = "7_HMI_Err_UH07_OB".Not.UZ7104 // Störung an OP übergeben + +// Not-Aus an UZ7105: + A "SF0782" + A A01_UH07.Not_Aus.UZ7105 + S A01_UZ7105.StOk_blinken // Störung quittierbar + + A A01_UZ7105.StOk_aktiv // Impuls Störungen quittieren //Störungen quittieren + A "SF0782" + A A01_UH07.Not_Aus.UZ7105 + R A01_UH07.Not_Aus.UZ7105 + S "DSchnittstelle_zu_Safety".ToSafety.ACK_A01_UH07 // Not-Aus quittieren + + AN "SF0782" + S A01_UH07.Not_Aus.UZ7105 // Störung vorhanden + + A A01_UH07.Not_Aus.UZ7105 // Störung vorhanden + = "7_HMI_Err_UH07_OB".Not.UZ7105 // Störung an OP übergeben + +// Not-Aus an UZ7106: + A "SF0783" + A A01_UH07.Not_Aus.UZ7106 + S A01_UZ7106.StOk_blinken // Störung quittierbar + + A A01_UZ7106.StOk_aktiv // Impuls Störungen quittieren //Störungen quittieren + A "SF0783" + A A01_UH07.Not_Aus.UZ7106 + R A01_UH07.Not_Aus.UZ7106 + S "DSchnittstelle_zu_Safety".ToSafety.ACK_A01_UH07 // Not-Aus quittieren + + AN "SF0783" + S A01_UH07.Not_Aus.UZ7106 // Störung vorhanden + + A A01_UH07.Not_Aus.UZ7106 // Störung vorhanden + = "7_HMI_Err_UH07_OB".Not.UZ7106 // Störung an OP übergeben + +// Not-Aus an UZ7107: + A "SF0850" + A A01_UH07.Not_Aus.UZ7107 + S A01_UZ7107.StOk_blinken // Störung quittierbar + + A A01_UZ7107.StOk_aktiv // Impuls Störungen quittieren //Störungen quittieren + A "SF0850" + A A01_UH07.Not_Aus.UZ7107 + R A01_UH07.Not_Aus.UZ7107 + S "DSchnittstelle_zu_Safety".ToSafety.ACK_A01_UH07 // Not-Aus quittieren + + AN "SF0850" + S A01_UH07.Not_Aus.UZ7107 // Störung vorhanden + + A A01_UH07.Not_Aus.UZ7107 // Störung vorhanden + = "7_HMI_Err_UH07_OB".Not.UZ7107 // Störung an OP übergeben + +// Not-Aus an UZ7301: + A "SF1331" + A A01_UH07.Not_Aus.UZ7301 + S A01_UZ7301.StOk_blinken // Störung quittierbar + + A A01_UZ7301.StOk_aktiv // Impuls Störungen quittieren //Störungen quittieren + A "SF1331" + A A01_UH07.Not_Aus.UZ7301 + R A01_UH07.Not_Aus.UZ7301 + S "DSchnittstelle_zu_Safety".ToSafety.ACK_A01_UH07 // Not-Aus quittieren + + AN "SF1331" + S A01_UH07.Not_Aus.UZ7301 // Störung vorhanden + + A A01_UH07.Not_Aus.UZ7301 // Störung vorhanden + = "7_HMI_Err_UH07_OB".Not.UZ7301 // Störung an OP übergeben + +// Not-Aus an UZ7302: + A "SF1332" + A A01_UH07.Not_Aus.UZ7302 + S A01_UZ7302.StOk_blinken // Störung quittierbar + + A A01_UZ7302.StOk_aktiv // Impuls Störungen quittieren //Störungen quittieren + A "SF1332" + A A01_UH07.Not_Aus.UZ7302 + R A01_UH07.Not_Aus.UZ7302 + S "DSchnittstelle_zu_Safety".ToSafety.ACK_A01_UH07 // Not-Aus quittieren + + AN "SF1332" + S A01_UH07.Not_Aus.UZ7302 // Störung vorhanden + + A A01_UH07.Not_Aus.UZ7302 // Störung vorhanden + = "7_HMI_Err_UH07_OB".Not.UZ7302 // Störung an OP übergeben + +// Not-Aus an UZ7303: + A "SF1333" + A A01_UH07.Not_Aus.UZ7303 + S A01_UZ7303.StOk_blinken // Störung quittierbar + + A A01_UZ7303.StOk_aktiv // Impuls Störungen quittieren //Störungen quittieren + A "SF1333" + A A01_UH07.Not_Aus.UZ7303 + R A01_UH07.Not_Aus.UZ7303 + S "DSchnittstelle_zu_Safety".ToSafety.ACK_A01_UH07 // Not-Aus quittieren + + AN "SF1333" + S A01_UH07.Not_Aus.UZ7303 // Störung vorhanden + + A A01_UH07.Not_Aus.UZ7303 // Störung vorhanden + = "7_HMI_Err_UH07_OB".Not.UZ7303 // Störung an OP übergeben + +// Not-Aus ILS (UH05): + AN "DI0541" // von UH05 ILS + AN "DSchnittstelle_zu_Safety".ToSafety.Ohne_Partner + = "7_HMI_Err_UH07_OB".Not.von_UH05 + + +--- NW 21: UH07: Not-Aus-Störungen / Anzeigen --- + AN "SF0400" // Taster noch betätigt + ON "SF0710" + ON "SF1330" + ON "SF0401" + ON "SF0402" + ON "SF0403" + ON "SF0711" + ON "SF0712" + ON "SF0713" + ON "SF0780" + ON "SF0782" + ON "SF0783" + ON "SF0850" + ON "SF1331" + ON "SF1332" + ON "SF1333" + = Not_Err // Ein Not-Aus-Taster noch betätigt + + A A01_UH07.Not_Aus.UH07 // Störung noch aktiv + O A01_UH07.Not_Aus.UC071 + O A01_UH07.Not_Aus.UC073 + O A01_UH07.Not_Aus.UZ0701 + O A01_UH07.Not_Aus.UZ0702 + O A01_UH07.Not_Aus.UZ0703 + O A01_UH07.Not_Aus.UZ7101 + O A01_UH07.Not_Aus.UZ7102 + O A01_UH07.Not_Aus.UZ7103 + O A01_UH07.Not_Aus.UZ7104 + O A01_UH07.Not_Aus.UZ7105 + O A01_UH07.Not_Aus.UZ7106 + O A01_UH07.Not_Aus.UZ7107 + O A01_UH07.Not_Aus.UZ7301 + O A01_UH07.Not_Aus.UZ7302 + O A01_UH07.Not_Aus.UZ7303 + = Not_Akt // Ein Not-Aus-Störung noch nicht quittiert + + A "DSchnittstelle_zu_Safety".FromSafety.Feedback.FDBACK_UH07_QA0610_QA0611 // Not-Aus-Kreis geschlossen + AN Not_Err + AN Not_Akt + R A01_UH07.NotErr + +// Not-Aus hat ausgelöst: + AN Not_Akt // Ein Not-Aus-Störung noch nicht quittiert + AN Not_Err // Ein Not-Aus-Taster noch betätigt + AN "DSchnittstelle_zu_Safety".FromSafety.Feedback.FDBACK_UH07_QA0610_QA0611 // Not-Aus-Kreis geschlossen + = A01_UH07.Not_Aus.ausgeloest + + A A01_UH07.Not_Aus.ausgeloest + = "7_HMI_Err_UH07_OB".Not.ausgeloest_UH07_UC71_UC73 // Störung an OP übergeben + S A01_UH07.StOk_blinken // Störung quittierbar + + A "SF0002" + A "7_HMI_Err_UH07_OB".Not.ausgeloest_UH07_UC71_UC73 // Störung an OP übergeben + S "DSchnittstelle_zu_Safety".ToSafety.ACK_A01_UH07 // Not-Aus quittieren + +// Störung aktiv: + AN "DSchnittstelle_zu_Safety".FromSafety.Feedback.FDBACK_UH07_QA0610_QA0611 // Not-Aus-Kreis geschlossen + O Not_Err // Ein Not-Aus-Taster noch betätigt + O Not_Akt // Ein Not-Aus-Störung noch nicht quittiert + O + AN "DI0541" // von UH05 ILS + AN "DSchnittstelle_zu_Safety".ToSafety.Ohne_Partner + S A01_UH07.NotErr + +// Not-Aus quittieren nicht erlaubt: + A Not_Err // Ein Not-Aus-Taster noch betätigt + O Not_Akt // Ein Not-Aus-Störung noch nicht quittiert + R "DSchnittstelle_zu_Safety".ToSafety.ACK_A01_UH07 // Not-Aus quittieren + +// UC071 und UC72 mit Quittieren: + A "DSchnittstelle_zu_Safety".ToSafety.ACK_A01_UH07 // Not-Aus quittieren + S "DSchnittstelle_zu_Safety".ToSafety.ACK_A01_UC071 // Not-Aus quittieren + S "DSchnittstelle_zu_Safety".ToSafety.ACK_A01_UC073 // Not-Aus quittieren + +// Anzeige: + A A01_UH07.NotErr + CLR // Keine verbaut +// / = "PF1004" + + +--- NW 22: UH07: Bereichs-Störung --- + AN A01_UH07.AnlageEin + O A01_UH07.NotErr +// /Da einzeln überwacht! O #A01_UH07.MotErr + O A01_UH07.PnErr + O A01_UH07.SiErr + O "7_HMI_Err_UH07_OB".System.Gesamt_Feueralarm_Halle3 + O "7_HMI_Err_UH07_OB".System.Gesamt_Feueralarm_Halle4 + = A01_UH07.BereichErr + + A A01_UH07.BereichErr + A A01_UH07.AnlageEin + A "Clock_1Hz" + = "PF0000" + + +--- NW 23: UH07: Anfahrwarnung --- +// Anfahrwarnung erzeugen: + AN A01_UH07.BereichErr + A A01_UH07.BereichErr_old // Letzter Zyklus war noch System-Err + S A01_UH07.Anfahrwarnung + + A A01_UH07.BereichErr + = A01_UH07.BereichErr_old // Aktuellen Status sepichern + R A01_UH07.Anfahrwarnung + +// Anfahrwarnung: + A "T1" + R A01_UH07.Anfahrwarnung + A( + O A01_UH07.Anfahrwarnung + O A01_UC071.Anfahrwarnung + O A01_UC072.Anfahrwarnung + O A01_UC073.Anfahrwarnung + O A01_UC074.Anfahrwarnung + ) + A "Clock_1Hz" + = "PF0034" // Anfahr-Warnung + A A01_UH07.Anfahrwarnung + L s5t#5s + OnDelay "T1" + + A A01_UH07.Anfahrwarnung + S A01_UH07.BereichErr + + +--- NW 24: UH07: Haupschütz nicht aktiv --- + A "DSchnittstelle_zu_Safety".FromSafety.Feedback.FDBACK_UH07_QA0610_QA0611 // Not-Aus-Kreis geschlossen + L s5t#3s + OnDelay "T110" + + A "T110" + A( + O "DI0013" + O "DI0014" + ) + O + AN A01_UH07.BereichErr + AN "DSchnittstelle_zu_Safety".FromSafety.Feedback.FDBACK_UH07_QA0610_QA0611 // Not-Aus-Kreis geschlossen + = A01_UH07.K10Err + + A A01_UH07.K10Err + O "DSchnittstelle_zu_Safety".FromSafety.ACK_REQ_A01_UH07_1 + O "DSchnittstelle_zu_Safety".FromSafety.ACK_REQ_A01_UH07_2 + S A01_UH07.StOk_blinken // Störung quittierbar + + A A01_UH07.StOk_aktiv // Impuls Störungen quittieren //Störungen quittieren + A( + O A01_UH07.K10Err + O "DSchnittstelle_zu_Safety".FromSafety.ACK_REQ_A01_UH07_1 + O "DSchnittstelle_zu_Safety".FromSafety.ACK_REQ_A01_UH07_2 + ) + S "DSchnittstelle_zu_Safety".ToSafety.StOk_HSS + S "DSchnittstelle_zu_Safety".ToSafety.ACK_A01_UH07 // Not-Aus quittieren + + A A01_UH07.K10Err + = "7_HMI_Err_UH07_OB".Schutz."Hauptschütz UH07" + + +--- NW 25: UC071: Bereichs-Störung --- + AN A01_UH07.AnlageEin // UH07 ist Master + O A01_UH07.NotErr + O "7_HMI_Err_UH07_OB".VErr.Pn_UC071 +// /Da einzeln überwacht! O #A01_UC071.MotErr + O A01_UC071.SiErr + O "7_HMI_Err_UH07_OB".System.Gesamt_Feueralarm_Halle3 + O "7_HMI_Err_UH07_OB".System.Gesamt_Feueralarm_Halle4 + = A01_UC071.BereichErr + +// Keine Anzeige verbaut + + +--- NW 26: UC071: Anfahrwarnung --- +// Anfahrwarnung erzeugen: + AN A01_UC071.BereichErr + A A01_UC071.BereichErr_old // Letzter Zyklus war noch System-Err + S A01_UC071.Anfahrwarnung + + A A01_UC071.BereichErr + = A01_UC071.BereichErr_old // Aktuellen Status sepichern + R A01_UC071.Anfahrwarnung + +// Anfahrwarnung: + A "T12" + R A01_UC071.Anfahrwarnung + A A01_UC071.Anfahrwarnung + A "Clock_1Hz" +// = "PF0034" //Anfahr-Warnung (nur an UH07/Nw23) + CLR + A A01_UC071.Anfahrwarnung + L s5t#5s + OnDelay "T12" + + A A01_UC071.Anfahrwarnung + S A01_UC071.BereichErr + + +--- NW 27: UC071: Haupschütz nicht aktiv --- + A "DSchnittstelle_zu_Safety".FromSafety.Feedback.FDBACK_UC071_QA0920_QA0921 // Not-Aus-Kreis geschlossen + L s5t#3s + OnDelay "T211" + + A "T211" + A "DI0106" + O + AN A01_UC071.BereichErr + AN "DSchnittstelle_zu_Safety".FromSafety.Feedback.FDBACK_UC071_QA0920_QA0921 // Not-Aus-Kreis geschlossen + = A01_UC071.K10Err + + A A01_UC071.K10Err + O "DSchnittstelle_zu_Safety".FromSafety.ACK_REQ_A01_UC071_1 + O "DSchnittstelle_zu_Safety".FromSafety.ACK_REQ_A01_UC071_2 + S A01_UC071.StOk_blinken // Störung quittierbar + + A A01_UC071.StOk_aktiv // Impuls Störungen quittieren //Störungen quittieren + A( + O A01_UC071.K10Err + O "DSchnittstelle_zu_Safety".FromSafety.ACK_REQ_A01_UC071_1 + O "DSchnittstelle_zu_Safety".FromSafety.ACK_REQ_A01_UC071_2 + ) + S "DSchnittstelle_zu_Safety".ToSafety.StOk_HSS + S "DSchnittstelle_zu_Safety".ToSafety.ACK_A01_UC071 // Not-Aus quittieren + + A A01_UC071.K10Err + = "7_HMI_Err_UH07_OB".Schutz."Hauptschütz UC071" + + +--- NW 28: UC072: Not-Aus-Störung erzeugen / quittierbar / quittieren --- +// Quittierung wurd abgearbeitet: + A "DSchnittstelle_zu_Safety".FromSafety.ACK_A01_UC072_fertig + R "DSchnittstelle_zu_Safety".FromSafety.ACK_A01_UC072_fertig + R "DSchnittstelle_zu_Safety".ToSafety.ACK_A01_UC072 + +// Not-Aus nach Haupschalter ein quittieren: + A A01_UC072.StOk_aktiv // Impuls Störungen quittieren + A A01_UC072.Not_Aus.ausgeloest + S "DSchnittstelle_zu_Safety".ToSafety.ACK_A01_UC072 // Not-Aus quittieren + +// Not-Aus an UC072: + A "SF1020" + A A01_UC072.Not_Aus.UC072 + S A01_UC072.StOk_blinken // Störung quittierbar + + A A01_UC072.StOk_aktiv // Impuls Störungen quittieren //Störungen quittieren + A "SF1020" + A A01_UC072.Not_Aus.UC072 + R A01_UC072.Not_Aus.UC072 + S "DSchnittstelle_zu_Safety".ToSafety.ACK_A01_UC072 // Not-Aus quittieren + + AN "SF1020" + S A01_UC072.Not_Aus.UC072 // Störung vorhanden + + A A01_UC072.Not_Aus.UC072 // Störung vorhanden + = "7_HMI_Err_UH07_OB".Not.UC072 // Störung an OP übergeben + +// Not-Aus an UZ7201: + A "SF1021" + A A01_UC072.Not_Aus.UZ7201 + S A01_UZ7201.StOk_blinken // Störung quittierbar + + A A01_UZ7201.StOk_aktiv // Impuls Störungen quittieren //Störungen quittieren + A "SF1021" + A A01_UC072.Not_Aus.UZ7201 + R A01_UC072.Not_Aus.UZ7201 + S "DSchnittstelle_zu_Safety".ToSafety.ACK_A01_UC072 // Not-Aus quittieren + + AN "SF1021" + S A01_UC072.Not_Aus.UZ7201 // Störung vorhanden + + A A01_UC072.Not_Aus.UZ7201 // Störung vorhanden + = "7_HMI_Err_UH07_OB".Not.UZ7201 // Störung an OP übergeben + +// Not-Aus an UZ7202: + A "SF1022" + A A01_UC072.Not_Aus.UZ7202 + S A01_UZ7202.StOk_blinken // Störung quittierbar + + A A01_UZ7202.StOk_aktiv // Impuls Störungen quittieren //Störungen quittieren + A "SF1022" + A A01_UC072.Not_Aus.UZ7202 + R A01_UC072.Not_Aus.UZ7202 + S "DSchnittstelle_zu_Safety".ToSafety.ACK_A01_UC072 // Not-Aus quittieren + + AN "SF1022" + S A01_UC072.Not_Aus.UZ7202 // Störung vorhanden + + A A01_UC072.Not_Aus.UZ7202 // Störung vorhanden + = "7_HMI_Err_UH07_OB".Not.UZ7202 // Störung an OP übergeben + +// Not-Aus ILS (UH03): + AN "DI1091" // von UH03 ILS + AN "DSchnittstelle_zu_Safety".ToSafety.Ohne_Partner + = "7_HMI_Err_UH07_OB".Not.von_UH03 + +// Not-Aus UH07 (UC072): + AN "DI1092" // von UC061 Outbound + AN "DSchnittstelle_zu_Safety".ToSafety.Ohne_Partner + = "7_HMI_Err_UH07_OB".Not.von_UC061 + + +--- NW 29: UC072: Not-Aus-Störungen / Anzeigen --- + AN "SF1020" // Taster noch betätigt + ON "SF1021" + ON "SF1022" + = Not_Err // Ein Not-Aus-Taster noch betätigt + + A A01_UC072.Not_Aus.UC072 // Störung noch aktiv + O A01_UC072.Not_Aus.UZ7201 + O A01_UC072.Not_Aus.UZ7202 + = Not_Akt // Ein Not-Aus-Störung noch nicht quittiert + + A "DSchnittstelle_zu_Safety".FromSafety.Feedback.FDBACK_UC072_QA1230_QA1231 // Not-Aus-Kreis geschlossen + AN Not_Err + AN Not_Akt + R A01_UC072.NotErr + +// Not-Aus hat ausgelöst: + AN Not_Akt // Ein Not-Aus-Störung noch nicht quittiert + AN Not_Err // Ein Not-Aus-Taster noch betätigt + AN "DSchnittstelle_zu_Safety".FromSafety.Feedback.FDBACK_UC072_QA1230_QA1231 // Not-Aus-Kreis geschlossen + = A01_UC072.Not_Aus.ausgeloest + + A A01_UC072.Not_Aus.ausgeloest + = "7_HMI_Err_UH07_OB".Not.ausgeloest_UC072 // Störung an OP übergeben + S A01_UC072.StOk_blinken // Störung quittierbar + + A "SF0177" + A "7_HMI_Err_UH07_OB".Not.ausgeloest_UC072 // Störung an OP übergeben + S "DSchnittstelle_zu_Safety".ToSafety.ACK_A01_UC072 // Not-Aus quittieren + +// Störung aktiv: + AN "DSchnittstelle_zu_Safety".FromSafety.Feedback.FDBACK_UC072_QA1230_QA1231 // Not-Aus-Kreis geschlossen + O Not_Err // Ein Not-Aus-Taster noch betätigt + O Not_Akt // Ein Not-Aus-Störung noch nicht quittiert + O + AN "DI1091" // von UH03 ILS + AN "DSchnittstelle_zu_Safety".ToSafety.Ohne_Partner + O + AN "DI1092" // von UC61 AMR + AN "DSchnittstelle_zu_Safety".ToSafety.Ohne_Partner + S A01_UC072.NotErr + +// Not-Aus quittieren nicht erlaubt: + A Not_Err // Ein Not-Aus-Taster noch betätigt + O Not_Akt // Ein Not-Aus-Störung noch nicht quittiert + R "DSchnittstelle_zu_Safety".ToSafety.ACK_A01_UC072 // Not-Aus quittieren + +// Anzeige: + A A01_UC072.NotErr + CLR // Keine verbaut +// / = "PF1004" + + +--- NW 30: UC072: Bereichs-Störung --- + AN A01_UH07.AnlageEin // UH07 ist Master + O A01_UC072.NotErr + O "7_HMI_Err_UH07_OB".VErr.Pn_UC072 +// /Da einzeln überwacht! O #A01_UC072.MotErr + O A01_UC072.SiErr + O "7_HMI_Err_UH07_OB".System.Gesamt_Feueralarm_Halle3 + O "7_HMI_Err_UH07_OB".System.Gesamt_Feueralarm_Halle4 + = A01_UC072.BereichErr + +// Keine Anzeige verbaut + + +--- NW 31: UC072: Anfahrwarnung --- +// Anfahrwarnung erzeugen: + AN A01_UC072.BereichErr + A A01_UC072.BereichErr_old // Letzter Zyklus war noch System-Err + S A01_UC072.Anfahrwarnung + + A A01_UC072.BereichErr + = A01_UC072.BereichErr_old // Aktuellen Status sepichern + R A01_UC072.Anfahrwarnung + +// Anfahrwarnung: + A "T13" + R A01_UC072.Anfahrwarnung + A A01_UC072.Anfahrwarnung + A "Clock_1Hz" +// = "PF0034" //Anfahr-Warnung (nur an UH07/Nw23) + CLR + A A01_UC072.Anfahrwarnung + L s5t#5s + OnDelay "T13" + + A A01_UC072.Anfahrwarnung + S A01_UC072.BereichErr + + +--- NW 32: UC072: Haupschütz nicht aktiv --- + A "DSchnittstelle_zu_Safety".FromSafety.Feedback.FDBACK_UC072_QA1230_QA1231 // Not-Aus-Kreis geschlossen + L s5t#3s + OnDelay "T212" + + A "T212" + A "DI0166" + O + AN A01_UC072.BereichErr + AN "DSchnittstelle_zu_Safety".FromSafety.Feedback.FDBACK_UC072_QA1230_QA1231 // Not-Aus-Kreis geschlossen + = A01_UC072.K10Err + + A A01_UC072.K10Err + O "DSchnittstelle_zu_Safety".FromSafety.ACK_REQ_A01_UC072_1 + O "DSchnittstelle_zu_Safety".FromSafety.ACK_REQ_A01_UC072_2 + S A01_UC072.StOk_blinken // Störung quittierbar + + A A01_UC072.StOk_aktiv // Impuls Störungen quittieren //Störungen quittieren + A( + O A01_UC072.K10Err + O "DSchnittstelle_zu_Safety".FromSafety.ACK_REQ_A01_UC072_1 + O "DSchnittstelle_zu_Safety".FromSafety.ACK_REQ_A01_UC072_2 + ) + S "DSchnittstelle_zu_Safety".ToSafety.StOk_HSS + S "DSchnittstelle_zu_Safety".ToSafety.ACK_A01_UC072 // Not-Aus quittieren + + A A01_UC072.K10Err + = "7_HMI_Err_UH07_OB".Schutz."Hauptschütz UC072" + + +--- NW 33: UC073: Bereichs-Störung --- + AN A01_UH07.AnlageEin // UH07 ist Master + O A01_UH07.NotErr + O "7_HMI_Err_UH07_OB".VErr.Pn_UC073 +// /Da einzeln überwacht! O #A01_UC073.MotErr + O A01_UC073.SiErr + O "7_HMI_Err_UH07_OB".System.Gesamt_Feueralarm_Halle3 + O "7_HMI_Err_UH07_OB".System.Gesamt_Feueralarm_Halle4 + = A01_UC073.BereichErr + +// Keine Anzeige verbaut + + +--- NW 34: UC073: Anfahrwarnung --- +// Anfahrwarnung erzeugen: + AN A01_UC073.BereichErr + A A01_UC073.BereichErr_old // Letzter Zyklus war noch System-Err + S A01_UC073.Anfahrwarnung + + A A01_UC073.BereichErr + = A01_UC073.BereichErr_old // Aktuellen Status sepichern + R A01_UC073.Anfahrwarnung + +// Anfahrwarnung: + A "T14" + R A01_UC073.Anfahrwarnung + A A01_UC073.Anfahrwarnung + A "Clock_1Hz" +// = "PF0034" //Anfahr-Warnung (nur an UH07/Nw23) + CLR + A A01_UC073.Anfahrwarnung + L s5t#5s + OnDelay "T14" + + A A01_UC073.Anfahrwarnung + S A01_UC073.BereichErr + + +--- NW 35: UC073: Haupschütz nicht aktiv --- + A "DSchnittstelle_zu_Safety".FromSafety.Feedback.FDBACK_UC073_QA1540_QA1541 // Not-Aus-Kreis geschlossen + L s5t#3s + OnDelay "T213" + + A "T213" + A "DI0226" + O + AN A01_UC073.BereichErr + AN "DSchnittstelle_zu_Safety".FromSafety.Feedback.FDBACK_UC073_QA1540_QA1541 // Not-Aus-Kreis geschlossen + = A01_UC073.K10Err + + A A01_UC073.K10Err + O "DSchnittstelle_zu_Safety".FromSafety.ACK_REQ_A01_UC073_1 + O "DSchnittstelle_zu_Safety".FromSafety.ACK_REQ_A01_UC073_2 + S A01_UC073.StOk_blinken // Störung quittierbar + + A A01_UC073.StOk_aktiv // Impuls Störungen quittieren //Störungen quittieren + A( + O A01_UC073.K10Err + O "DSchnittstelle_zu_Safety".FromSafety.ACK_REQ_A01_UC073_1 + O "DSchnittstelle_zu_Safety".FromSafety.ACK_REQ_A01_UC073_2 + ) + S "DSchnittstelle_zu_Safety".ToSafety.StOk_HSS + S "DSchnittstelle_zu_Safety".ToSafety.ACK_A01_UC073 // Not-Aus quittieren + + A A01_UC073.K10Err + = "7_HMI_Err_UH07_OB".Schutz."Hauptschütz UC073" + + +--- NW 36: UC074: Not-Aus-Störung erzeugen / quittierbar / quittieren --- +// Quittierung wurd abgearbeitet: + A "DSchnittstelle_zu_Safety".FromSafety.ACK_A01_UC074_fertig + R "DSchnittstelle_zu_Safety".FromSafety.ACK_A01_UC074_fertig + R "DSchnittstelle_zu_Safety".ToSafety.ACK_A01_UC074 + +// Not-Aus nach Haupschalter ein quittieren: + A A01_UC074.StOk_aktiv // Impuls Störungen quittieren + A A01_UC074.Not_Aus.ausgeloest + S "DSchnittstelle_zu_Safety".ToSafety.ACK_A01_UC074 // Not-Aus quittieren + +// Not-Aus an UC074: + A "SF1640" + A A01_UC074.Not_Aus.UC074 + S A01_UC074.StOk_blinken // Störung quittierbar + + A A01_UC074.StOk_aktiv // Impuls Störungen quittieren //Störungen quittieren + A "SF1640" + A A01_UC074.Not_Aus.UC074 + R A01_UC074.Not_Aus.UC074 + S "DSchnittstelle_zu_Safety".ToSafety.ACK_A01_UC074 // Not-Aus quittieren + + AN "SF1640" + S A01_UC074.Not_Aus.UC074 // Störung vorhanden + + A A01_UC074.Not_Aus.UC074 // Störung vorhanden + = "7_HMI_Err_UH07_OB".Not.UC074 // Störung an OP übergeben + +// Not-Aus an UZ7401: + A "SF1641" + A A01_UC074.Not_Aus.UZ7401 + S A01_UZ7401.StOk_blinken // Störung quittierbar + + A A01_UZ7401.StOk_aktiv // Impuls Störungen quittieren //Störungen quittieren + A "SF1641" + A A01_UC074.Not_Aus.UZ7401 + R A01_UC074.Not_Aus.UZ7401 + S "DSchnittstelle_zu_Safety".ToSafety.ACK_A01_UC074 // Not-Aus quittieren + + AN "SF1641" + S A01_UC074.Not_Aus.UZ7401 // Störung vorhanden + + A A01_UC074.Not_Aus.UZ7401 // Störung vorhanden + = "7_HMI_Err_UH07_OB".Not.UZ7401 // Störung an OP übergeben + +// Not-Aus an UZ7402: + A "SF1642" + A A01_UC074.Not_Aus.UZ7402 + S A01_UZ7402.StOk_blinken // Störung quittierbar + + A A01_UZ7402.StOk_aktiv // Impuls Störungen quittieren //Störungen quittieren + A "SF1642" + A A01_UC074.Not_Aus.UZ7402 + R A01_UC074.Not_Aus.UZ7402 + S "DSchnittstelle_zu_Safety".ToSafety.ACK_A01_UC074 // Not-Aus quittieren + + AN "SF1642" + S A01_UC074.Not_Aus.UZ7402 // Störung vorhanden + + A A01_UC074.Not_Aus.UZ7402 // Störung vorhanden + = "7_HMI_Err_UH07_OB".Not.UZ7402 // Störung an OP übergeben + +// Not-Aus an UZ7403: + A "SF1643" + A A01_UC074.Not_Aus.UZ7403 + S A01_UZ7403.StOk_blinken // Störung quittierbar + + A A01_UZ7403.StOk_aktiv // Impuls Störungen quittieren //Störungen quittieren + A "SF1643" + A A01_UC074.Not_Aus.UZ7403 + R A01_UC074.Not_Aus.UZ7403 + S "DSchnittstelle_zu_Safety".ToSafety.ACK_A01_UC074 // Not-Aus quittieren + + AN "SF1643" + S A01_UC074.Not_Aus.UZ7403 // Störung vorhanden + + A A01_UC074.Not_Aus.UZ7403 // Störung vorhanden + = "7_HMI_Err_UH07_OB".Not.UZ7403 // Störung an OP übergeben + + +--- NW 37: UC074: Not-Aus-Störungen / Anzeigen --- + AN "SF1640" // Taster noch betätigt + ON "SF1641" + ON "SF1642" + ON "SF1643" + = Not_Err // Ein Not-Aus-Taster noch betätigt + + A A01_UC074.Not_Aus.UC074 // Störung noch aktiv + O A01_UC074.Not_Aus.UZ7401 + O A01_UC074.Not_Aus.UZ7402 + O A01_UC074.Not_Aus.UZ7403 + = Not_Akt // Ein Not-Aus-Störung noch nicht quittiert + + A "DSchnittstelle_zu_Safety".FromSafety.Feedback.FDBACK_UC074_QA1850_QA1851 // Not-Aus-Kreis geschlossen + A "DSchnittstelle_zu_Safety".FromSafety.Feedback.FDBACK_UC074_QA1900_QA1901 + AN Not_Err + AN Not_Akt + R A01_UC074.NotErr + +// Not-Aus hat ausgelöst: + AN Not_Akt // Ein Not-Aus-Störung noch nicht quittiert + AN Not_Err // Ein Not-Aus-Taster noch betätigt + A( + ON "DSchnittstelle_zu_Safety".FromSafety.Feedback.FDBACK_UC074_QA1850_QA1851 // Not-Aus-Kreis geschlossen + ON "DSchnittstelle_zu_Safety".FromSafety.Feedback.FDBACK_UC074_QA1900_QA1901 + ) + = A01_UC074.Not_Aus.ausgeloest + + A A01_UC074.Not_Aus.ausgeloest + = "7_HMI_Err_UH07_OB".Not.ausgeloest_UC074 // Störung an OP übergeben + S A01_UC074.StOk_blinken // Störung quittierbar + + A "SF0297" + A "7_HMI_Err_UH07_OB".Not.ausgeloest_UC074 // Störung an OP übergeben + S "DSchnittstelle_zu_Safety".ToSafety.ACK_A01_UC074 // Not-Aus quittieren + +// Störung aktiv: + AN "DSchnittstelle_zu_Safety".FromSafety.Feedback.FDBACK_UC074_QA1850_QA1851 // Not-Aus-Kreis geschlossen + ON "DSchnittstelle_zu_Safety".FromSafety.Feedback.FDBACK_UC074_QA1900_QA1901 + O Not_Err // Ein Not-Aus-Taster noch betätigt + O Not_Akt // Ein Not-Aus-Störung noch nicht quittiert + S A01_UC074.NotErr + +// Not-Aus quittieren nicht erlaubt: + A Not_Err // Ein Not-Aus-Taster noch betätigt + O Not_Akt // Ein Not-Aus-Störung noch nicht quittiert + R "DSchnittstelle_zu_Safety".ToSafety.ACK_A01_UC074 // Not-Aus quittieren + +// Anzeige: + A A01_UC074.NotErr + CLR // Keine verbaut +// / = "PF1004" + + +--- NW 38: UC074: Bereichs-Störung --- + AN A01_UH07.AnlageEin // UH07 ist Master + O A01_UC074.NotErr + O "7_HMI_Err_UH07_OB".VErr.Pn_UC074 + O A01_UH07.PnErr +// /Da einzeln überwacht! O #A01_UC074.MotErr + O A01_UC074.SiErr + O "7_HMI_Err_UH07_OB".System.Gesamt_Feueralarm_Halle3 + O "7_HMI_Err_UH07_OB".System.Gesamt_Feueralarm_Halle4 + = A01_UC074.BereichErr + +// Keine Anzeige verbaut + + +--- NW 39: UC074: Anfahrwarnung --- +// Anfahrwarnung erzeugen: + AN A01_UC074.BereichErr + A A01_UC074.BereichErr_old // Letzter Zyklus war noch System-Err + S A01_UC074.Anfahrwarnung + + A A01_UC074.BereichErr + = A01_UC074.BereichErr_old // Aktuellen Status sepichern + R A01_UC074.Anfahrwarnung + +// Anfahrwarnung: + A "T15" + R A01_UC074.Anfahrwarnung + A A01_UC074.Anfahrwarnung + A "Clock_1Hz" +// = "PF0034" //Anfahr-Warnung (nur an UH07/Nw23) + CLR + A A01_UC074.Anfahrwarnung + L s5t#5s + OnDelay "T15" + + A A01_UC074.Anfahrwarnung + S A01_UC074.BereichErr + + +--- NW 40: UC074: Haupschütz nicht aktiv --- + A "DSchnittstelle_zu_Safety".FromSafety.Feedback.FDBACK_UC074_QA1850_QA1851 // Not-Aus-Kreis geschlossen + A "DSchnittstelle_zu_Safety".FromSafety.Feedback.FDBACK_UC074_QA1900_QA1901 // Not-Aus-Kreis geschlossen + L s5t#3s + OnDelay "T214" + + A "T214" + A "DI0286" + O + AN A01_UC074.BereichErr + A( + ON "DSchnittstelle_zu_Safety".FromSafety.Feedback.FDBACK_UC074_QA1850_QA1851 // Not-Aus-Kreis geschlossen + ON "DSchnittstelle_zu_Safety".FromSafety.Feedback.FDBACK_UC074_QA1900_QA1901 // Not-Aus-Kreis geschlossen + ) + = A01_UC074.K10Err + + A A01_UC074.K10Err + O "DSchnittstelle_zu_Safety".FromSafety.ACK_REQ_A01_UC074_1 + O "DSchnittstelle_zu_Safety".FromSafety.ACK_REQ_A01_UC074_2 + S A01_UC074.StOk_blinken // Störung quittierbar + + A A01_UC074.StOk_aktiv // Impuls Störungen quittieren //Störungen quittieren + A( + O A01_UC074.K10Err + O "DSchnittstelle_zu_Safety".FromSafety.ACK_REQ_A01_UC074_1 + O "DSchnittstelle_zu_Safety".FromSafety.ACK_REQ_A01_UC074_2 + ) + S "DSchnittstelle_zu_Safety".ToSafety.StOk_HSS + S "DSchnittstelle_zu_Safety".ToSafety.ACK_A01_UC074 // Not-Aus quittieren + + A A01_UC074.K10Err + = "7_HMI_Err_UH07_OB".Schutz."Hauptschütz UC074" + + +--- NW 41: Bereichshalte --- + AN "SF0122" + = A01_UZ7102.Area_Stop + = "7_HMI_Err_UH07_OB".Halt.UZ7102 + + AN "SF0126" + = A01_UZ7104.Area_Stop + = "7_HMI_Err_UH07_OB".Halt.UZ7104 + + AN "SF0180" + = A01_UZ7201.Area_Stop + = "7_HMI_Err_UH07_OB".Halt.UZ7201 + + AN "SF0182" + = A01_UZ7202.Area_Stop + = "7_HMI_Err_UH07_OB".Halt.UZ7202 + + +--- NW 42: Anzeigen zum Quittieren --- +// Start nach Störung blinken lassen: + A A01_UH07.StOk_blinken + A "Clock_1Hz" + ON "SF0400" + = "PF0002" + + A A01_UC071.StOk_blinken + A "Clock_1Hz" + ON "SF0710" + = "PF0117" + + A A01_UC072.StOk_blinken + A "Clock_1Hz" + ON "SF1020" + = "PF0177" + + A A01_UC073.StOk_blinken + A "Clock_1Hz" + ON "SF1330" + = "PF0237" + + A A01_UC074.StOk_blinken + A "Clock_1Hz" + ON "SF1640" + = "PF0297" + + A A01_UZ0701.StOk_blinken + A "Clock_1Hz" + ON "SF0401" + = "PF0041" + + A A01_UZ0702.StOk_blinken + A "Clock_1Hz" + ON "SF0402" + = "PF0043" + + A A01_UZ0703.StOk_blinken + A "Clock_1Hz" + ON "SF0403" + = "PF0045" + + A A01_UZ7101.StOk_blinken + A "Clock_1Hz" + ON "SF0711" + = "PF0121" + + A A01_UZ7102.StOk_blinken + A "Clock_1Hz" + ON "SF0712" + = "PF0123" + + A A01_UZ7103.StOk_blinken + A "Clock_1Hz" + ON "SF0713" + = "PF0125" + + A A01_UZ7104.StOk_blinken + A "Clock_1Hz" + ON "SF0780" + = "PF0127" + + A A01_UZ7105.StOk_blinken + A "Clock_1Hz" + ON "SF0782" + = "PF0131" + + A A01_UZ7106.StOk_blinken + A "Clock_1Hz" + ON "SF0783" + = "PF0133" + + A A01_UZ7107.StOk_blinken + A "Clock_1Hz" + ON "SF0850" + = "PF0135" + + A A01_UZ7201.StOk_blinken + A "Clock_1Hz" + ON "SF1021" + = "PF0181" + + A A01_UZ7202.StOk_blinken + A "Clock_1Hz" + ON "SF1022" + = "PF0183" + + A A01_UZ7301.StOk_blinken + A "Clock_1Hz" + ON "SF1331" + = "PF0241" + + A A01_UZ7302.StOk_blinken + A "Clock_1Hz" + ON "SF1332" + = "PF0243" + + A A01_UZ7303.StOk_blinken + A "Clock_1Hz" + ON "SF1333" + = "PF0245" + + A A01_UZ7401.StOk_blinken + A "Clock_1Hz" + ON "SF1641" + = "PF0301" + + A A01_UZ7402.StOk_blinken + A "Clock_1Hz" + ON "SF1642" + = "PF0303" + + A A01_UZ7403.StOk_blinken + A "Clock_1Hz" + ON "SF1643" + = "PF0305" + + SET + R A01_UH07.StOk_blinken + R A01_UC071.StOk_blinken + R A01_UC072.StOk_blinken + R A01_UC073.StOk_blinken + R A01_UC074.StOk_blinken + R A01_UZ0701.StOk_blinken + R A01_UZ0702.StOk_blinken + R A01_UZ0703.StOk_blinken + R A01_UZ7101.StOk_blinken + R A01_UZ7102.StOk_blinken + R A01_UZ7103.StOk_blinken + R A01_UZ7104.StOk_blinken + R A01_UZ7105.StOk_blinken + R A01_UZ7106.StOk_blinken + R A01_UZ7107.StOk_blinken + R A01_UZ7201.StOk_blinken + R A01_UZ7202.StOk_blinken + R A01_UZ7301.StOk_blinken + R A01_UZ7302.StOk_blinken + R A01_UZ7303.StOk_blinken + R A01_UZ7401.StOk_blinken + R A01_UZ7402.StOk_blinken + R A01_UZ7403.StOk_blinken + + +--- NW 43: Betriebsbereit-Anzeigen --- + A A01_UH07.AnlageEin + = "PF0040" + = "PF0042" + = "PF0120" + = "PF0122" + = "PF0124" + = "PF0126" + = "PF0130" + = "PF0132" + = "PF0134" + = "PF0180" + = "PF0182" + = "PF0240" + = "PF0242" + = "PF0244" + = "PF0300" + = "PF0302" + = "PF0304" + + +--- NW 44: Störungen vorhanden? / Anzeige: --- +CALL FC "Err_vorhanden" (Check_DB:=708, Anfangs_DW:=DINT#0, Ende_DW:=DINT#746, Stoerung:=Stoerung, ErrDW:=ErrDD, ErrBits:=ErrBits) // Störungsanzeige + + A( + O Stoerung + O "PF0000" // Da schon oben gesetzt + ) + A "Clock_1Hz" + = "PF0000" + + L ErrDD + T "MD9100" + L ErrBits + T "MW9200" + + L "MD9100" + L DINT#0 // Störung vorhanden + >D // Ja! + = "Störung_vorhanden" + + +--- NW 45: Signal-Tower UH07 --- +// Anfahrwarnung siehe Nw23 + + A "DOutbound_Bereich".A01_UH07.AnlageEin + = "PF0032" // System ready + + A "Störung_vorhanden" + = "PF0031" // Fault + + A A01_UH07.NotErr + O A01_UC072.NotErr + O A01_UC074.NotErr + = "PF0030" // Not-Aus + + +--- NW 46: Ende --- + BE + diff --git a/=A01+UH07-KF00/Programmbausteine/Barcode-Reader/FB_BarcodeReader_DB.awl b/=A01+UH07-KF00/Programmbausteine/Barcode-Reader/FB_BarcodeReader_DB.awl new file mode 100644 index 0000000..5dd84a8 --- /dev/null +++ b/=A01+UH07-KF00/Programmbausteine/Barcode-Reader/FB_BarcodeReader_DB.awl @@ -0,0 +1,43 @@ +=== InstanceDB 4711: FB_BarcodeReader_DB [DB] === +INTERFACE: + Input: + Output: + InOut: + Static: + fbBarcodeReaderBX7100 : "FB_BarcodeReaderCognex" + fbBarcodeReaderBX7101 : "FB_BarcodeReaderCognex" + fbBarcodeReaderBX7102 : "FB_BarcodeReaderCognex" + fbBarcodeReaderBX7103 : "FB_BarcodeReaderCognex" + fbBarcodeReaderBX7104 : "FB_BarcodeReaderCognex" + fbBarcodeReaderBX7105 : "FB_BarcodeReaderCognex" + fbBarcodeReaderBX7106 : "FB_BarcodeReaderCognex" + fbBarcodeReaderBX7107 : "FB_BarcodeReaderCognex" + fbBarcodeReaderBX7108 : "FB_BarcodeReaderCognex" + fbBarcodeReaderBX7109 : "FB_BarcodeReaderCognex" + fbBarcodeReaderBX7112 : "FB_BarcodeReaderCognex" + stCognexInterface : Struct + BX7100 : "stCognexInterface" + BX7101 : "stCognexInterface" + BX7102 : "stCognexInterface" + BX7103 : "stCognexInterface" + BX7104 : "stCognexInterface" + BX7105 : "stCognexInterface" + BX7106 : "stCognexInterface" + BX7107 : "stCognexInterface" + BX7108 : "stCognexInterface" + BX7109 : "stCognexInterface" + BX7112 : "stCognexInterface" + stHMI : Struct + stBarcodeReader : Struct + BX7100 : "UDT_BarcodeReader" + BX7101 : "UDT_BarcodeReader" + BX7102 : "UDT_BarcodeReader" + BX7103 : "UDT_BarcodeReader" + BX7104 : "UDT_BarcodeReader" + BX7105 : "UDT_BarcodeReader" + BX7106 : "UDT_BarcodeReader" + BX7107 : "UDT_BarcodeReader" + BX7108 : "UDT_BarcodeReader" + BX7109 : "UDT_BarcodeReader" + BX7112 : "UDT_BarcodeReader" + stMainState : "IntfMainState" diff --git a/=A01+UH07-KF00/Programmbausteine/Datenlisten/DLCognexLeser.awl b/=A01+UH07-KF00/Programmbausteine/Datenlisten/DLCognexLeser.awl new file mode 100644 index 0000000..b841cce --- /dev/null +++ b/=A01+UH07-KF00/Programmbausteine/Datenlisten/DLCognexLeser.awl @@ -0,0 +1,69 @@ +=== GlobalDB 273: DLCognexLeser [DB] === +INTERFACE: + Static: + Datenlistenkopf : Struct + KOPF : Word := WORD#16#DA04 // Datenliste-Kennnung (DA) / Datensatzlänge in Word (1 - 128) + LAENGE : Int := 11 // Länge der Datenliste (maximale Anzahl der Datensätze) + STAMMDATEN : Int := 1 // Stammdatenlänge in Word (1 - 9) + INDDB : Int // Indizierter DB (nur bei Stammdaten = 1 erlaubt !!!) + LAENGEINDDB : Int // Länge des indizierten DB in Word (nur bei Stammdaten = 1 erlaubt !!!) + OFFSETINDDATEN : Int // Offset für indizierte Daten (nur bei Stammdaten = 1 erlaubt !!!) + LETZTERZUGRIFF : Int // Speicherung des letzten Zugriffs + Belegt14 : Int // reserviert von Sort-Datenliste + Reserve16 : Int // Reserve + Reserve18 : Int // Reserve + Leser_7100 : "UDLCognexLeser" // AMR: vor 180 Grad Turn + Leser_7101 : "UDLCognexLeser" // AMR: vor Einfahrt PS5 + Leser_7102 : "UDLCognexLeser" // AMR: PS5/1 + Leser_7103 : "UDLCognexLeser" // AMR: PS5/2 + Leser_7104 : "UDLCognexLeser" // AMR: PS5/3 + Leser_7105 : "UDLCognexLeser" // AMR: vor Einfahrt PS4 + Leser_7106 : "UDLCognexLeser" // AMR: PS4/1 + Leser_7107 : "UDLCognexLeser" // AMR: PS4/2 + Leser_7108 : "UDLCognexLeser" // AMR: PS4/3 + Leser_7109 : "UDLCognexLeser" // AMR: vor Einfahrt PS3 + Leser_7112 : "UDLCognexLeser" // Ausfahrt PickControl + Endekennung : Word := WORD#16#DAEE // Datensort-Ende-Kennung (DBEE) + None: + Leser_ID : Word := 16#7100 + Leser_Dyn_DB : Int := 4711 + None: + Leser_ID : Word := 16#7101 + Leser_Dyn_DB : Int := 4711 + Leser_Dyn_DD : DInt := 1414 + None: + Leser_ID : Word := 16#7102 + Leser_Dyn_DB : Int := 4711 + Leser_Dyn_DD : DInt := 2828 + None: + Leser_ID : Word := 16#7103 + Leser_Dyn_DB : Int := 4711 + Leser_Dyn_DD : DInt := 4242 + None: + Leser_ID : Word := 16#7104 + Leser_Dyn_DB : Int := 4711 + Leser_Dyn_DD : DInt := 5656 + None: + Leser_ID : Word := 16#7105 + Leser_Dyn_DB : Int := 4711 + Leser_Dyn_DD : DInt := 7070 + None: + Leser_ID : Word := 16#7106 + Leser_Dyn_DB : Int := 4711 + Leser_Dyn_DD : DInt := 8484 + None: + Leser_ID : Word := 16#7107 + Leser_Dyn_DB : Int := 4711 + Leser_Dyn_DD : DInt := 9898 + None: + Leser_ID : Word := 16#7108 + Leser_Dyn_DB : Int := 4711 + Leser_Dyn_DD : DInt := 11312 + None: + Leser_ID : Word := 16#7109 + Leser_Dyn_DB : Int := 4711 + Leser_Dyn_DD : DInt := 12726 + None: + Leser_ID : Word := 16#7112 + Leser_Dyn_DB : Int := 4711 + Leser_Dyn_DD : DInt := 14140 diff --git a/=A01+UH07-KF00/Programmbausteine/Datenlisten/DLOmniPuffer.awl b/=A01+UH07-KF00/Programmbausteine/Datenlisten/DLOmniPuffer.awl new file mode 100644 index 0000000..43effce --- /dev/null +++ b/=A01+UH07-KF00/Programmbausteine/Datenlisten/DLOmniPuffer.awl @@ -0,0 +1,568 @@ +=== GlobalDB 275: DLOmniPuffer [DB] === +INTERFACE: + Static: + Datenlistenkopf : Struct + KOPF : Word := WORD#16#DA14 // Datenliste-Kennnung (DA) / Datensatzlänge in Word (1 - 128) + LAENGE : Int := 65 // Länge der Datenliste (maximale Anzahl der Datensätze) + STAMMDATEN : Int := 1 // Stammdatenlänge in Word (1 - 9) + INDDB : Int // Indizierter DB (nur bei Stammdaten = 1 erlaubt !!!) + LAENGEINDDB : Int // Länge des indizierten DB in Word (nur bei Stammdaten = 1 erlaubt !!!) + OFFSETINDDATEN : Int // Offset für indizierte Daten (nur bei Stammdaten = 1 erlaubt !!!) + LETZTERZUGRIFF : Int // Speicherung des letzten Zugriffs + Belegt14 : Int // reserviert von Sort-Datenliste + Reserve16 : Int // Reserve + Reserve18 : Int // Reserve + LeerPuffer_1 : "UDLHMLeerPuffer" + LeerPuffer_2 : "UDLHMLeerPuffer" + LeerPuffer_3 : "UDLHMLeerPuffer" + LeerPuffer_4 : "UDLHMLeerPuffer" + LeerPuffer_5 : "UDLHMLeerPuffer" + LeerPuffer_6 : "UDLHMLeerPuffer" + LeerPuffer_7 : "UDLHMLeerPuffer" + LeerPuffer_8 : "UDLHMLeerPuffer" + LeerPuffer_9 : "UDLHMLeerPuffer" + LeerPuffer_10 : "UDLHMLeerPuffer" + VollPuffer_1 : "UDLHMVollPuffer" + VollPuffer_2 : "UDLHMVollPuffer" + VollPuffer_3 : "UDLHMVollPuffer" + VollPuffer_4 : "UDLHMVollPuffer" + VollPuffer_5 : "UDLHMVollPuffer" + VollPuffer_6 : "UDLHMVollPuffer" + VollPuffer_7 : "UDLHMVollPuffer" + VollPuffer_8 : "UDLHMVollPuffer" + VollPuffer_9 : "UDLHMVollPuffer" + VollPuffer_10 : "UDLHMVollPuffer" + VollPuffer_11 : "UDLHMVollPuffer" + VollPuffer_12 : "UDLHMVollPuffer" + VollPuffer_13 : "UDLHMVollPuffer" + VollPuffer_14 : "UDLHMVollPuffer" + VollPuffer_15 : "UDLHMVollPuffer" + VollPuffer_16 : "UDLHMVollPuffer" + VollPuffer_17 : "UDLHMVollPuffer" + VollPuffer_18 : "UDLHMVollPuffer" + VollPuffer_19 : "UDLHMVollPuffer" + VollPuffer_20 : "UDLHMVollPuffer" + VollPuffer_21 : "UDLHMVollPuffer" + VollPuffer_22 : "UDLHMVollPuffer" + VollPuffer_23 : "UDLHMVollPuffer" + VollPuffer_24 : "UDLHMVollPuffer" + VollPuffer_25 : "UDLHMVollPuffer" + VollPuffer_26 : "UDLHMVollPuffer" + VollPuffer_27 : "UDLHMVollPuffer" + VollPuffer_28 : "UDLHMVollPuffer" + VollPuffer_29 : "UDLHMVollPuffer" + VollPuffer_30 : "UDLHMVollPuffer" + VollPuffer_31 : "UDLHMVollPuffer" + VollPuffer_32 : "UDLHMVollPuffer" + VollPuffer_33 : "UDLHMVollPuffer" + VollPuffer_34 : "UDLHMVollPuffer" + VollPuffer_35 : "UDLHMVollPuffer" + VollPuffer_36 : "UDLHMVollPuffer" + VollPuffer_37 : "UDLHMVollPuffer" + VollPuffer_38 : "UDLHMVollPuffer" + VollPuffer_39 : "UDLHMVollPuffer" + VollPuffer_40 : "UDLHMVollPuffer" + VollPuffer_41 : "UDLHMVollPuffer" + VollPuffer_42 : "UDLHMVollPuffer" + VollPuffer_43 : "UDLHMVollPuffer" + VollPuffer_44 : "UDLHMVollPuffer" + VollPuffer_45 : "UDLHMVollPuffer" + VollPuffer_46 : "UDLHMVollPuffer" + VollPuffer_47 : "UDLHMVollPuffer" + VollPuffer_48 : "UDLHMVollPuffer" + VollPuffer_49 : "UDLHMVollPuffer" + VollPuffer_50 : "UDLHMVollPuffer" + VollPuffer_51 : "UDLHMVollPuffer" + EntnahmePuffer_1 : "UDLHMEntnahmePuffer" + EntnahmePuffer_2 : "UDLHMEntnahmePuffer" + EntnahmePuffer_3 : "UDLHMEntnahmePuffer" + EntnahmePuffer_4 : "UDLHMEntnahmePuffer" + Endekennung : Word := WORD#16#DAEE // Datensort-Ende-Kennung (DBEE) + None: + LeerPuffer_Nr : Int := 1 + Puffer_Dyn_DB : Int := 5431 + Puffer_Position : Word := 16#A001 + MaxAnzahl_LeerPuffer : Int := 18 + Puffer_Position_Inks : Int := 10 + Mindeszeit_Schleuse_geoeffnet : Int := 10 + None: + LeerPuffer_Nr : Int := 2 + Puffer_Dyn_DB : Int := 5431 + Puffer_Dyn_DW : Int := 500 + Puffer_Position : Word := 16#A002 + MaxAnzahl_LeerPuffer : Int := 18 + Puffer_Position_Inks : Int := 25 + Mindeszeit_Schleuse_geoeffnet : Int := 10 + None: + LeerPuffer_Nr : Int := 3 + Puffer_Dyn_DB : Int := 5431 + Puffer_Dyn_DW : Int := 1000 + Puffer_Position : Word := 16#A003 + MaxAnzahl_LeerPuffer : Int := 18 + Puffer_Position_Inks : Int := 42 + Mindeszeit_Schleuse_geoeffnet : Int := 10 + None: + LeerPuffer_Nr : Int := 4 + Puffer_Dyn_DB : Int := 5431 + Puffer_Dyn_DW : Int := 1500 + Puffer_Position : Word := 16#A004 + MaxAnzahl_LeerPuffer : Int := 18 + Puffer_Position_Inks : Int := 60 + Mindeszeit_Schleuse_geoeffnet : Int := 10 + None: + LeerPuffer_Nr : Int := 5 + Puffer_Dyn_DB : Int := 5431 + Puffer_Dyn_DW : Int := 2000 + Puffer_Position : Word := 16#A005 + MaxAnzahl_LeerPuffer : Int := 18 + Puffer_Position_Inks : Int := 75 + Mindeszeit_Schleuse_geoeffnet : Int := 10 + None: + LeerPuffer_Nr : Int := 6 + Puffer_Dyn_DB : Int := 5431 + Puffer_Dyn_DW : Int := 2500 + Puffer_Position : Word := 16#A006 + MaxAnzahl_LeerPuffer : Int := 18 + Puffer_Position_Inks : Int := 93 + Mindeszeit_Schleuse_geoeffnet : Int := 10 + None: + LeerPuffer_Nr : Int := 7 + Puffer_Dyn_DB : Int := 5431 + Puffer_Dyn_DW : Int := 3000 + Puffer_Position : Word := 16#A007 + MaxAnzahl_LeerPuffer : Int := 18 + Puffer_Position_Inks : Int := 109 + Mindeszeit_Schleuse_geoeffnet : Int := 10 + None: + LeerPuffer_Nr : Int := 8 + Puffer_Dyn_DB : Int := 5431 + Puffer_Dyn_DW : Int := 3500 + Puffer_Position : Word := 16#A008 + MaxAnzahl_LeerPuffer : Int := 18 + Puffer_Position_Inks : Int := 128 + Mindeszeit_Schleuse_geoeffnet : Int := 10 + None: + LeerPuffer_Nr : Int := 9 + Puffer_Dyn_DB : Int := 5431 + Puffer_Dyn_DW : Int := 4000 + Puffer_Position : Word := 16#A009 + MaxAnzahl_LeerPuffer : Int := 18 + Puffer_Position_Inks : Int := 146 + Mindeszeit_Schleuse_geoeffnet : Int := 10 + None: + LeerPuffer_Nr : Int := 10 + Puffer_Dyn_DB : Int := 5431 + Puffer_Dyn_DW : Int := 4500 + Puffer_Position : Word := 16#A010 + MaxAnzahl_LeerPuffer : Int := 16 + Puffer_Position_Inks : Int := 163 + Mindeszeit_Schleuse_geoeffnet : Int := 10 + None: + VollPuffer_Nr : Int := 101 + Puffer_Dyn_DB : Int := 1431 + Puffer_Position : Word := 16#B101 + Puffer_Position_Inks : Int := 12 + Mindeszeit_Schleuse_geoeffnet : Int := 12 + None: + VollPuffer_Nr : Int := 102 + Puffer_Dyn_DB : Int := 1431 + Puffer_Dyn_DW : Int := 700 + Parameter_allg : Struct + B_AusSep_vorhanden : Bool := 1 + Puffer_Position : Word := 16#B102 + Puffer_Position_Inks : Int := 35 + Mindeszeit_Schleuse_geoeffnet : Int := 12 + None: + VollPuffer_Nr : Int := 103 + Puffer_Dyn_DB : Int := 1431 + Puffer_Dyn_DW : Int := 1400 + Parameter_allg : Struct + B_AusSep_vorhanden : Bool := 1 + Puffer_Position : Word := 16#B103 + Puffer_Position_Inks : Int := 58 + Mindeszeit_Schleuse_geoeffnet : Int := 12 + None: + VollPuffer_Nr : Int := 104 + Puffer_Dyn_DB : Int := 1431 + Puffer_Dyn_DW : Int := 2100 + Puffer_Position : Word := 16#B104 + Puffer_Position_Inks : Int := 79 + Mindeszeit_Schleuse_geoeffnet : Int := 12 + None: + VollPuffer_Nr : Int := 105 + Puffer_Dyn_DB : Int := 1431 + Puffer_Dyn_DW : Int := 2800 + Puffer_Position : Word := 16#B105 + Puffer_Position_Inks : Int := 103 + Mindeszeit_Schleuse_geoeffnet : Int := 12 + None: + VollPuffer_Nr : Int := 106 + Puffer_Dyn_DB : Int := 1431 + Puffer_Dyn_DW : Int := 3500 + Puffer_Position : Word := 16#B106 + Puffer_Position_Inks : Int := 136 + Mindeszeit_Schleuse_geoeffnet : Int := 12 + None: + VollPuffer_Nr : Int := 107 + Puffer_Dyn_DB : Int := 1431 + Puffer_Dyn_DW : Int := 4200 + Parameter_allg : Struct + B_AusSep_vorhanden : Bool := 1 + Puffer_Position : Word := 16#B107 + Puffer_Position_Inks : Int := 161 + Mindeszeit_Schleuse_geoeffnet : Int := 12 + None: + VollPuffer_Nr : Int := 108 + Puffer_Dyn_DB : Int := 1431 + Puffer_Dyn_DW : Int := 4900 + Parameter_allg : Struct + B_AusSep_vorhanden : Bool := 1 + Puffer_Position : Word := 16#B108 + Puffer_Position_Inks : Int := 184 + Mindeszeit_Schleuse_geoeffnet : Int := 12 + None: + VollPuffer_Nr : Int := 109 + Puffer_Dyn_DB : Int := 1431 + Puffer_Dyn_DW : Int := 5600 + Puffer_Position : Word := 16#B109 + Puffer_Position_Inks : Int := 208 + Mindeszeit_Schleuse_geoeffnet : Int := 12 + None: + VollPuffer_Nr : Int := 110 + Puffer_Dyn_DB : Int := 1431 + Puffer_Dyn_DW : Int := 6300 + Puffer_Position : Word := 16#B110 + Puffer_Position_Inks : Int := 230 + Mindeszeit_Schleuse_geoeffnet : Int := 12 + None: + VollPuffer_Nr : Int := 111 + Puffer_Dyn_DB : Int := 1431 + Puffer_Dyn_DW : Int := 7000 + Puffer_Position : Word := 16#B111 + Puffer_Position_Inks : Int := 254 + Mindeszeit_Schleuse_geoeffnet : Int := 12 + None: + VollPuffer_Nr : Int := 112 + Puffer_Dyn_DB : Int := 1431 + Puffer_Dyn_DW : Int := 7700 + Puffer_Position : Word := 16#B112 + Puffer_Position_Inks : Int := 273 + Mindeszeit_Schleuse_geoeffnet : Int := 12 + None: + VollPuffer_Nr : Int := 113 + Puffer_Dyn_DB : Int := 1431 + Puffer_Dyn_DW : Int := 8400 + Parameter_allg : Struct + B_AusSep_vorhanden : Bool := 1 + Puffer_Position : Word := 16#B113 + Puffer_Position_Inks : Int := 331 + Mindeszeit_Schleuse_geoeffnet : Int := 12 + None: + VollPuffer_Nr : Int := 114 + Puffer_Dyn_DB : Int := 1431 + Puffer_Dyn_DW : Int := 9100 + Parameter_allg : Struct + B_AusSep_vorhanden : Bool := 1 + Puffer_Position : Word := 16#B114 + Puffer_Position_Inks : Int := 358 + Mindeszeit_Schleuse_geoeffnet : Int := 12 + None: + VollPuffer_Nr : Int := 115 + Puffer_Dyn_DB : Int := 1431 + Puffer_Dyn_DW : Int := 9800 + Parameter_allg : Struct + B_AusSep_vorhanden : Bool := 1 + Puffer_Position : Word := 16#B115 + Puffer_Position_Inks : Int := 380 + Mindeszeit_Schleuse_geoeffnet : Int := 12 + None: + VollPuffer_Nr : Int := 116 + Puffer_Dyn_DB : Int := 1431 + Puffer_Dyn_DW : Int := 10500 + Puffer_Position : Word := 16#B116 + Puffer_Position_Inks : Int := 404 + Mindeszeit_Schleuse_geoeffnet : Int := 12 + None: + VollPuffer_Nr : Int := 117 + Puffer_Dyn_DB : Int := 1431 + Puffer_Dyn_DW : Int := 11200 + Puffer_Position : Word := 16#B117 + Puffer_Position_Inks : Int := 426 + Mindeszeit_Schleuse_geoeffnet : Int := 12 + None: + VollPuffer_Nr : Int := 118 + Puffer_Dyn_DB : Int := 1431 + Puffer_Dyn_DW : Int := 11900 + Puffer_Position : Word := 16#B118 + Puffer_Position_Inks : Int := 448 + Mindeszeit_Schleuse_geoeffnet : Int := 12 + None: + VollPuffer_Nr : Int := 119 + Puffer_Dyn_DB : Int := 1431 + Puffer_Dyn_DW : Int := 12600 + Puffer_Position : Word := 16#B119 + Puffer_Position_Inks : Int := 479 + Mindeszeit_Schleuse_geoeffnet : Int := 12 + None: + VollPuffer_Nr : Int := 120 + Puffer_Dyn_DB : Int := 1431 + Puffer_Dyn_DW : Int := 13300 + Parameter_allg : Struct + B_AusSep_vorhanden : Bool := 1 + Puffer_Position : Word := 16#B120 + Puffer_Position_Inks : Int := 505 + Mindeszeit_Schleuse_geoeffnet : Int := 12 + None: + VollPuffer_Nr : Int := 121 + Puffer_Dyn_DB : Int := 1431 + Puffer_Dyn_DW : Int := 14000 + Parameter_allg : Struct + B_AusSep_vorhanden : Bool := 1 + Puffer_Position : Word := 16#B121 + Puffer_Position_Inks : Int := 527 + Mindeszeit_Schleuse_geoeffnet : Int := 12 + None: + VollPuffer_Nr : Int := 122 + Puffer_Dyn_DB : Int := 1431 + Puffer_Dyn_DW : Int := 14700 + Puffer_Position : Word := 16#B122 + Puffer_Position_Inks : Int := 550 + Mindeszeit_Schleuse_geoeffnet : Int := 12 + None: + VollPuffer_Nr : Int := 123 + Puffer_Dyn_DB : Int := 1431 + Puffer_Dyn_DW : Int := 15400 + Puffer_Position : Word := 16#B123 + Puffer_Position_Inks : Int := 573 + Mindeszeit_Schleuse_geoeffnet : Int := 12 + None: + VollPuffer_Nr : Int := 124 + Puffer_Dyn_DB : Int := 1431 + Puffer_Dyn_DW : Int := 16100 + Puffer_Position : Word := 16#B124 + Puffer_Position_Inks : Int := 598 + Mindeszeit_Schleuse_geoeffnet : Int := 12 + None: + VollPuffer_Nr : Int := 125 + Puffer_Dyn_DB : Int := 1431 + Puffer_Dyn_DW : Int := 16800 + Puffer_Position : Word := 16#B125 + Puffer_Position_Inks : Int := 620 + Mindeszeit_Schleuse_geoeffnet : Int := 12 + None: + VollPuffer_Nr : Int := 126 + Puffer_Dyn_DB : Int := 1432 + Puffer_Dyn_DW : Int := 0 + Puffer_Position : Word := 16#B126 + Puffer_Position_Inks : Int := 12 + Mindeszeit_Schleuse_geoeffnet : Int := 12 + None: + VollPuffer_Nr : Int := 127 + Puffer_Dyn_DB : Int := 1432 + Puffer_Dyn_DW : Int := 700 + Parameter_allg : Struct + B_AusSep_vorhanden : Bool := 1 + Puffer_Position : Word := 16#B127 + Puffer_Position_Inks : Int := 35 + Mindeszeit_Schleuse_geoeffnet : Int := 12 + None: + VollPuffer_Nr : Int := 128 + Puffer_Dyn_DB : Int := 1432 + Puffer_Dyn_DW : Int := 1400 + Parameter_allg : Struct + B_AusSep_vorhanden : Bool := 1 + Puffer_Position : Word := 16#B128 + Puffer_Position_Inks : Int := 55 + Mindeszeit_Schleuse_geoeffnet : Int := 12 + None: + VollPuffer_Nr : Int := 129 + Puffer_Dyn_DB : Int := 1432 + Puffer_Dyn_DW : Int := 2100 + Puffer_Position : Word := 16#B129 + Puffer_Position_Inks : Int := 79 + Mindeszeit_Schleuse_geoeffnet : Int := 12 + None: + VollPuffer_Nr : Int := 130 + Puffer_Dyn_DB : Int := 1432 + Puffer_Dyn_DW : Int := 2800 + Puffer_Position : Word := 16#B130 + Puffer_Position_Inks : Int := 102 + Mindeszeit_Schleuse_geoeffnet : Int := 12 + None: + VollPuffer_Nr : Int := 131 + Puffer_Dyn_DB : Int := 1432 + Puffer_Dyn_DW : Int := 3500 + Puffer_Position : Word := 16#B131 + Puffer_Position_Inks : Int := 123 + Mindeszeit_Schleuse_geoeffnet : Int := 12 + None: + VollPuffer_Nr : Int := 132 + Puffer_Dyn_DB : Int := 1432 + Puffer_Dyn_DW : Int := 4200 + Puffer_Position : Word := 16#B132 + Puffer_Position_Inks : Int := 158 + Mindeszeit_Schleuse_geoeffnet : Int := 12 + None: + VollPuffer_Nr : Int := 133 + Puffer_Dyn_DB : Int := 1432 + Puffer_Dyn_DW : Int := 4900 + Parameter_allg : Struct + B_AusSep_vorhanden : Bool := 1 + Puffer_Position : Word := 16#B133 + Puffer_Position_Inks : Int := 181 + Mindeszeit_Schleuse_geoeffnet : Int := 12 + None: + VollPuffer_Nr : Int := 134 + Puffer_Dyn_DB : Int := 1432 + Puffer_Dyn_DW : Int := 5600 + Parameter_allg : Struct + B_AusSep_vorhanden : Bool := 1 + Puffer_Position : Word := 16#B134 + Puffer_Position_Inks : Int := 203 + Mindeszeit_Schleuse_geoeffnet : Int := 12 + None: + VollPuffer_Nr : Int := 135 + Puffer_Dyn_DB : Int := 1432 + Puffer_Dyn_DW : Int := 6300 + Puffer_Position : Word := 16#B135 + Puffer_Position_Inks : Int := 228 + Mindeszeit_Schleuse_geoeffnet : Int := 12 + None: + VollPuffer_Nr : Int := 136 + Puffer_Dyn_DB : Int := 1432 + Puffer_Dyn_DW : Int := 7000 + Puffer_Position : Word := 16#B136 + Puffer_Position_Inks : Int := 250 + Mindeszeit_Schleuse_geoeffnet : Int := 12 + None: + VollPuffer_Nr : Int := 137 + Puffer_Dyn_DB : Int := 1432 + Puffer_Dyn_DW : Int := 7700 + Puffer_Position : Word := 16#B137 + Puffer_Position_Inks : Int := 273 + Mindeszeit_Schleuse_geoeffnet : Int := 12 + None: + VollPuffer_Nr : Int := 138 + Puffer_Dyn_DB : Int := 1432 + Puffer_Dyn_DW : Int := 8400 + Puffer_Position : Word := 16#B138 + Puffer_Position_Inks : Int := 296 + Mindeszeit_Schleuse_geoeffnet : Int := 12 + None: + VollPuffer_Nr : Int := 139 + Puffer_Dyn_DB : Int := 1432 + Puffer_Dyn_DW : Int := 9100 + Parameter_allg : Struct + B_AusSep_vorhanden : Bool := 1 + Puffer_Position : Word := 16#B139 + Puffer_Position_Inks : Int := 353 + Mindeszeit_Schleuse_geoeffnet : Int := 12 + None: + VollPuffer_Nr : Int := 140 + Puffer_Dyn_DB : Int := 1432 + Puffer_Dyn_DW : Int := 9800 + Parameter_allg : Struct + B_AusSep_vorhanden : Bool := 1 + Puffer_Position : Word := 16#B140 + Puffer_Position_Inks : Int := 375 + Mindeszeit_Schleuse_geoeffnet : Int := 12 + None: + VollPuffer_Nr : Int := 141 + Puffer_Dyn_DB : Int := 1432 + Puffer_Dyn_DW : Int := 10500 + Parameter_allg : Struct + B_AusSep_vorhanden : Bool := 1 + Puffer_Position : Word := 16#B141 + Puffer_Position_Inks : Int := 400 + Mindeszeit_Schleuse_geoeffnet : Int := 12 + None: + VollPuffer_Nr : Int := 142 + Puffer_Dyn_DB : Int := 1432 + Puffer_Dyn_DW : Int := 11200 + Puffer_Position : Word := 16#B142 + Puffer_Position_Inks : Int := 421 + Mindeszeit_Schleuse_geoeffnet : Int := 12 + None: + VollPuffer_Nr : Int := 143 + Puffer_Dyn_DB : Int := 1432 + Puffer_Dyn_DW : Int := 11900 + Puffer_Position : Word := 16#B143 + Puffer_Position_Inks : Int := 444 + Mindeszeit_Schleuse_geoeffnet : Int := 12 + None: + VollPuffer_Nr : Int := 144 + Puffer_Dyn_DB : Int := 1432 + Puffer_Dyn_DW : Int := 12600 + Puffer_Position : Word := 16#B144 + Puffer_Position_Inks : Int := 466 + Mindeszeit_Schleuse_geoeffnet : Int := 12 + None: + VollPuffer_Nr : Int := 145 + Puffer_Dyn_DB : Int := 1432 + Puffer_Dyn_DW : Int := 13300 + Puffer_Position : Word := 16#B145 + Puffer_Position_Inks : Int := 499 + Mindeszeit_Schleuse_geoeffnet : Int := 12 + None: + VollPuffer_Nr : Int := 146 + Puffer_Dyn_DB : Int := 1432 + Puffer_Dyn_DW : Int := 14000 + Parameter_allg : Struct + B_AusSep_vorhanden : Bool := 1 + Puffer_Position : Word := 16#B146 + Puffer_Position_Inks : Int := 521 + Mindeszeit_Schleuse_geoeffnet : Int := 12 + None: + VollPuffer_Nr : Int := 147 + Puffer_Dyn_DB : Int := 1432 + Puffer_Dyn_DW : Int := 14700 + Parameter_allg : Struct + B_AusSep_vorhanden : Bool := 1 + Puffer_Position : Word := 16#B147 + Puffer_Position_Inks : Int := 543 + Mindeszeit_Schleuse_geoeffnet : Int := 12 + None: + VollPuffer_Nr : Int := 148 + Puffer_Dyn_DB : Int := 1432 + Puffer_Dyn_DW : Int := 15400 + Puffer_Position : Word := 16#B148 + Puffer_Position_Inks : Int := 565 + Mindeszeit_Schleuse_geoeffnet : Int := 12 + None: + VollPuffer_Nr : Int := 149 + Puffer_Dyn_DB : Int := 1432 + Puffer_Dyn_DW : Int := 16100 + Puffer_Position : Word := 16#B149 + Puffer_Position_Inks : Int := 586 + Mindeszeit_Schleuse_geoeffnet : Int := 12 + None: + VollPuffer_Nr : Int := 150 + Puffer_Dyn_DB : Int := 1432 + Puffer_Dyn_DW : Int := 16800 + Puffer_Position : Word := 16#B150 + Puffer_Position_Inks : Int := 610 + Mindeszeit_Schleuse_geoeffnet : Int := 12 + None: + VollPuffer_Nr : Int := 151 + Puffer_Dyn_DB : Int := 1432 + Puffer_Dyn_DW : Int := 17500 + Parameter_allg : Struct + Kein_Lager : Bool := 1 + Puffer_Position : Word := 16#B151 + Puffer_Position_Inks : Int := 635 + Mindeszeit_Schleuse_geoeffnet : Int := 12 + None: + EntnahmePuffer_Nr : Int := 201 + Puffer_Dyn_DB : Int := 3431 + None: + EntnahmePuffer_Nr : Int := 202 + Puffer_Dyn_DB : Int := 3431 + Puffer_Dyn_DW : Int := 500 + None: + EntnahmePuffer_Nr : Int := 203 + Puffer_Dyn_DB : Int := 3431 + Puffer_Dyn_DW : Int := 1000 + None: + EntnahmePuffer_Nr : Int := 204 + Puffer_Dyn_DB : Int := 3431 + Puffer_Dyn_DW : Int := 1500 diff --git a/=A01+UH07-KF00/Programmbausteine/Datenlisten/DLOmniSchleuse.awl b/=A01+UH07-KF00/Programmbausteine/Datenlisten/DLOmniSchleuse.awl new file mode 100644 index 0000000..158675e --- /dev/null +++ b/=A01+UH07-KF00/Programmbausteine/Datenlisten/DLOmniSchleuse.awl @@ -0,0 +1,1090 @@ +=== GlobalDB 274: DLOmniSchleuse [DB] === +INTERFACE: + Static: + Datenlistenkopf : Struct + KOPF : Word := WORD#16#DA14 // Datenliste-Kennnung (DA) / Datensatzlänge in Word (1 - 128) + LAENGE : Int := 52 // Länge der Datenliste (maximale Anzahl der Datensätze) + STAMMDATEN : Int := 1 // Stammdatenlänge in Word (1 - 9) + INDDB : Int := 0 // Indizierter DB (nur bei Stammdaten = 1 erlaubt !!!) + LAENGEINDDB : Int := 0 // Länge des indizierten DB in Word (nur bei Stammdaten = 1 erlaubt !!!) + OFFSETINDDATEN : Int := 0 // Offset für indizierte Daten (nur bei Stammdaten = 1 erlaubt !!!) + LETZTERZUGRIFF : Int := 0 // Speicherung des letzten Zugriffs + Belegt14 : Int := 0 // reserviert von Sort-Datenliste + Reserve16 : Int := 0 // Reserve + Reserve18 : Int := 0 // Reserve + Schleuse_MB3725 : "UDLHMOmniSchleuse" // HW>VP: M7001 + Bereich_3731_Plus : "UDLHMOmniBereich_Plus" // VP>EP: hinter BST 1 + Schleuse_MB4200 : "UDLHMOmniSchleuse" // HW>VP: Hinter BST 2 / vor M7003 + Bereich_4203_Plus : "UDLHMOmniBereich_Plus" // VP>EP: hinter BST 1 + Schleuse_MB4217_Plus : "UDLHMOmniSchleuse_Plus" + Schleuse_MB4207_Plus : "UDLHMOmniSchleuse_Plus" + Schleuse_MB4212 : "UDLHMOmniSchleuse" // HW>VP: M7006 / hinter ByPass + Schleuse_MB4214 : "UDLHMOmniSchleuse" // HW>VP: M7006 / vor M7007 + Bereich_3145_Plus : "UDLHMOmniBereich_Plus" // VP>EP: hinter BST 1 + Schleuse_MB3143_Plus : "UDLHMOmniSchleuse_Plus" + Schleuse_MB3141_Plus : "UDLHMOmniSchleuse_Plus" + Schleuse_MB3131 : "UDLHMOmniSchleuse" // HW>VP: M7009 / Zuführung KontrollPlatz + Schleuse_MB3134 : "UDLHMOmniSchleuse" // HW>VP: M7009 / Kontrollplatz + Schleuse_MB3136_Plus : "UDLHMOmniSchleuse_Plus" + Schleuse_MB3121 : "UDLHMOmniSchleuse" // VP: Vor Sorter VP A / Kontrollplatz + Schleuse_MB3123 : "UDLHMOmniSchleuse" // VP: Vor Sorter VP A / Rückführstrecke + Schleuse_MB3244_Plus : "UDLHMOmniSchleuse_Plus" + Schleuse_MB3247_Plus : "UDLHMOmniSchleuse_Plus" + Schleuse_MB3275 : "UDLHMOmniSchleuse" // VP>EP: vor AFS + Bereich_3361_Plus : "UDLHMOmniBereich_Plus" // VP>EP: hinter BST 1 + Schleuse_MB3363 : "UDLHMOmniSchleuse" // VP>EP: hinter M7018 + Schleuse_MB3366 : "UDLHMOmniSchleuse" // VP>EP: vor BST 1 + Bereich_4441_Plus : "UDLHMOmniBereich_Plus" // VP>EP: hinter BST 1 + Schleuse_MB4443_Plus : "UDLHMOmniSchleuse_Plus" + Schleuse_MB4450_Plus : "UDLHMOmniSchleuse_Plus" + Bereich_4454_Plus : "UDLHMOmniBereich_Plus" // VP>EP: hinter BST 1 + Schleuse_MB4503 : "UDLHMOmniSchleuse" // EP: Vor Sorter EP + Schleuse_MB4512_Plus : "UDLHMOmniSchleuse_Plus" + Schleuse_MB4532_Plus : "UDLHMOmniSchleuse_Plus" + Schleuse_MB4516 : "UDLHMOmniSchleuse" // EP>LP: EG: Nach Einschleusung + Schleuse_MB4522 : "UDLHMOmniSchleuse" // EP>LP: EG: Nach Einschleusung + Schleuse_MB4520 : "UDLHMOmniSchleuse" // EP>LP: EG: Nach Einschleusung / Vor AFS + Bereich_4456_Plus : "UDLHMOmniBereich_Plus" // VP>EP: hinter BST 1 + Schleuse_MB4466_Plus : "UDLHMOmniSchleuse_Plus" + Schleuse_MB4462_Plus : "UDLHMOmniSchleuse_Plus" + Schleuse_MB4463 : "UDLHMOmniSchleuse" // EP>LP: Vor AFS BST 1 + Bereich_4465_Plus : "UDLHMOmniBereich_Plus" // VP>EP: hinter BST 1 + Schleuse_MB3370 : "UDLHMOmniSchleuse" // EP>LP: Hinter BST 1 + Bereich_3373_Plus : "UDLHMOmniBereich_Plus" // VP>EP: hinter BST 1 + Schleuse_MB3303 : "UDLHMOmniSchleuse" // EP>LP: EG: Zuführung LP + Schleuse_MB3305 : "UDLHMOmniSchleuse" // LP: Vor Sorter LP + Schleuse_MB3342 : "UDLHMOmniSchleuse" // LP>HW: Vor Trolley-Beladung + Schleuse_MB3323 : "UDLHMOmniSchleuse" // LP>HW: Trolley-Beladung + Schleuse_MB3345 : "UDLHMOmniSchleuse" // LP>HW: Trolley-Beladung + Schleuse_MB3325_Plus : "UDLHMOmniSchleuse_Plus" + Bereich_4236_Plus : "UDLHMOmniBereich_Plus" // VP>EP: hinter BST 1 + Schleuse_MB4221_Plus : "UDLHMOmniSchleuse_Plus" + Schleuse_MB4227 : "UDLHMOmniSchleuse" // LP>HW: Hinter Bypass (VP) + Bereich_4232_Plus : "UDLHMOmniBereich_Plus" // VP>EP: hinter BST 1 + Schleuse_MB4235 : "UDLHMOmniSchleuse" // LP>HW: Vor BST 2 + Bereich_3732_Plus : "UDLHMOmniBereich_Plus" // VP>EP: hinter BST 1 + Schleuse_MB3722_Plus : "UDLHMOmniSchleuse_Plus" + Endekennung : Word := WORD#16#DAEE // Datensort-Ende-Kennung (DBEE) + None: + Schleusen_Nr : Int := 3725 + Schleusen_Typ : Int := 1274 // Schleusentyp = 11274 (H&Ml) + Schleuse_Dyn_DB : Int := 128 + Schleuse_Dyn_DW : Int := 0 + Parameter_allg : Struct + Leser_eingebaut : Bool := false + Antrieb_vorhanden : Bool := 1 + Para02 : Bool := false + Antrieb_Plus_vorhanden : Bool := 1 + Para06 : Bool := false + Para07 : Bool := false + Para10 : Bool := false + Para11 : Bool := false + Para12 : Bool := false + Para13 : Bool := false + Para14 : Bool := false + Para15 : Bool := false + Para16 : Bool := false + Position in DL : Bool := false + Leser_ID : Word := 16#0 + Leser_FC : Int := 0 + Ziel_FC : Int := 0 + Draussen_FC : Int := 0 + RausWeichen_Nr : Int := 0 + Mindeszeit_Schleuse_geoeffnet : Int := 5 + Wartezeit_bis_leer : Int := 150 + Übzeit_in_Schleuse : Int := 150 + Übzeit_aus_Schleuse : Int := 30 + Gesamt_Trolley_DL : Int := 1000 + AusfahrZeit : Int := 5 + EinfahrZeit : Int := 121 + Reserve : Array[1..3] of Int + None: + Bereichs_Nr : Int := 3731 + Bereich_Dyn_DB : Int := 128 + Bereich_Dyn_DW : Int := 200 + Fahrzeit : Int := 16 + Wartezeit_bis_leer : Int := 30 + Übzeit_in_Bereich : Int := 30 + Übzeit_aus_Bereich : Int := 30 + MaxRausTrolleys : Int := 1 + None: + Schleusen_Nr : Int := 4200 + Schleusen_Typ : Int := 1274 + Schleuse_Dyn_DB : Int := 128 + Schleuse_Dyn_DW : Int := 400 + Parameter_allg : Struct + Leser_eingebaut : Bool := false + Antrieb_vorhanden : Bool := 1 + Para02 : Bool := false + Antrieb_Plus_vorhanden : Bool := 1 + Para06 : Bool := false + Para07 : Bool := false + Para10 : Bool := false + Para11 : Bool := false + Para12 : Bool := false + Para13 : Bool := false + Para14 : Bool := false + Para15 : Bool := false + Para16 : Bool := false + Position in DL : Bool := false + Leser_ID : Word := 16#0 + Leser_FC : Int := 0 + Ziel_FC : Int := 0 + Draussen_FC : Int := 0 + RausWeichen_Nr : Int := 0 + Mindeszeit_Schleuse_geoeffnet : Int := 5 + Wartezeit_bis_leer : Int := 150 + Übzeit_in_Schleuse : Int := 150 + Übzeit_aus_Schleuse : Int := 30 + Gesamt_Trolley_DL : Int := 1000 + AusfahrZeit : Int := 5 + Reserve : Array[1..3] of Int + None: + Bereichs_Nr : Int := 4203 + Bereich_Dyn_DB : Int := 128 + Bereich_Dyn_DW : Int := 600 + Ziel_FC : Int := 181 + Fahrzeit : Int := 35 + Wartezeit_bis_leer : Int := 60 + Übzeit_in_Bereich : Int := 60 + Übzeit_aus_Bereich : Int := 30 + MaxRausTrolleys : Int := 1 + None: + Schleusen_Nr : Int := 4217 + Schleuse_Dyn_DB : Int := 128 + Schleuse_Dyn_DW : Int := 2800 + Mindeszeit_Schleuse_geoeffnet : Int := 15 + Wartezeit_bis_leer : Int := 150 + Übzeit_in_Schleuse : Int := 150 + Übzeit_aus_Schleuse : Int := 30 + MaxRausTrolleys : Int := 2 + EinfahrZeit : Int := 58 + None: + Schleusen_Nr : Int := 4207 + Schleuse_Dyn_DB : Int := 128 + Schleuse_Dyn_DW : Int := 800 + Ziel_FC : Int := 181 + Draussen_FC : Int := 182 + Mindeszeit_Schleuse_geoeffnet : Int := 5 + Wartezeit_bis_leer : Int := 150 + Übzeit_in_Schleuse : Int := 150 + MaxRausTrolleys : Int := 3 + EinfahrZeit : Int := 7 + None: + Schleusen_Nr : Int := 4212 + Schleusen_Typ : Int := 1274 + Schleuse_Dyn_DB : Int := 128 + Schleuse_Dyn_DW : Int := 1000 + Parameter_allg : Struct + Leser_eingebaut : Bool := false + Antrieb_vorhanden : Bool := 1 + Para02 : Bool := false + Antrieb_Plus_vorhanden : Bool := false + Para06 : Bool := false + Para07 : Bool := false + Para10 : Bool := false + Para11 : Bool := false + Para12 : Bool := false + Para13 : Bool := false + Para14 : Bool := false + Para15 : Bool := false + Para16 : Bool := false + Position in DL : Bool := false + Leser_ID : Word := 16#0 + Leser_FC : Int := 0 + Ziel_FC : Int := 0 + Draussen_FC : Int := 0 + RausWeichen_Nr : Int := 0 + Mindeszeit_Schleuse_geoeffnet : Int := 5 + Wartezeit_bis_leer : Int := 150 + Übzeit_in_Schleuse : Int := 150 + Übzeit_aus_Schleuse : Int := 30 + Gesamt_Trolley_DL : Int := 1000 + EinfahrZeit : Int := 12 + Reserve : Array[1..3] of Int + None: + Schleusen_Nr : Int := 4214 + Schleusen_Typ : Int := 1274 + Schleuse_Dyn_DB : Int := 128 + Schleuse_Dyn_DW : Int := 1200 + Parameter_allg : Struct + Leser_eingebaut : Bool := false + Antrieb_vorhanden : Bool := 1 + Para02 : Bool := false + Antrieb_Plus_vorhanden : Bool := 1 + Para06 : Bool := false + Para07 : Bool := false + Para10 : Bool := false + Para11 : Bool := false + Para12 : Bool := false + Para13 : Bool := false + Para14 : Bool := false + Para15 : Bool := false + Para16 : Bool := false + Position in DL : Bool := false + Leser_ID : Word := 16#0 + Leser_FC : Int := 0 + Ziel_FC : Int := 0 + Draussen_FC : Int := 0 + RausWeichen_Nr : Int := 0 + Mindeszeit_Schleuse_geoeffnet : Int := 5 + Wartezeit_bis_leer : Int := 150 + Übzeit_in_Schleuse : Int := 150 + Übzeit_aus_Schleuse : Int := 30 + Gesamt_Trolley_DL : Int := 1000 + AusfahrZeit : Int := 5 + EinfahrZeit : Int := 10 + Reserve : Array[1..3] of Int + None: + Bereichs_Nr : Int := 3145 + Bereich_Dyn_DB : Int := 128 + Bereich_Dyn_DW : Int := 1400 + Ziel_FC : Int := 181 + Fahrzeit : Int := 35 + Wartezeit_bis_leer : Int := 60 + Übzeit_in_Bereich : Int := 60 + Übzeit_aus_Bereich : Int := 30 + MaxRausTrolleys : Int := 1 + None: + Schleusen_Nr : Int := 3143 + Schleuse_Dyn_DB : Int := 128 + Schleuse_Dyn_DW : Int := 1600 + Parameter_allg : Struct + Leser_eingebaut : Bool := 1 + Leser_ID : Word := 16#7100 + Leser_FC : Int := 180 + Ziel_FC : Int := 181 + Mindeszeit_Schleuse_geoeffnet : Int := 5 + Wartezeit_bis_leer : Int := 150 + Übzeit_in_Schleuse : Int := 150 + Übzeit_aus_Schleuse : Int := 30 + MaxRausTrolleys : Int := 2 + EinfahrZeit : Int := 16 + None: + Schleusen_Nr : Int := 3141 + Schleuse_Dyn_DB : Int := 128 + Schleuse_Dyn_DW : Int := 1800 + Parameter_allg : Struct + Leser_eingebaut : Bool := 1 + Leser_ID : Word := 16#7101 + Leser_FC : Int := 180 + Ziel_FC : Int := 181 + Draussen_FC : Int := 182 + RausWeichen_Nr : Int := 3140 + Mindeszeit_Schleuse_geoeffnet : Int := 5 + MaxRausTrolleys : Int := 2 + EinfahrZeit : Int := 19 + None: + Schleusen_Nr : Int := 3131 + Schleusen_Typ : Int := 1274 + Schleuse_Dyn_DB : Int := 128 + Schleuse_Dyn_DW : Int := 2200 + Parameter_allg : Struct + Leser_eingebaut : Bool := false + Antrieb_vorhanden : Bool := 1 + Para02 : Bool := false + Antrieb_Plus_vorhanden : Bool := false + Para06 : Bool := false + Para07 : Bool := false + Para10 : Bool := false + Para11 : Bool := false + Para12 : Bool := false + Para13 : Bool := false + Para14 : Bool := false + Para15 : Bool := false + Para16 : Bool := false + Position in DL : Bool := false + Leser_ID : Word := 16#0 + Leser_FC : Int := 0 + Ziel_FC : Int := 0 + Draussen_FC : Int := 0 + RausWeichen_Nr : Int := 0 + Mindeszeit_Schleuse_geoeffnet : Int := 5 + Wartezeit_bis_leer : Int := 150 + Übzeit_in_Schleuse : Int := 150 + Übzeit_aus_Schleuse : Int := 30 + Gesamt_Trolley_DL : Int := 1000 + Reserve : Array[1..3] of Int + None: + Schleusen_Nr : Int := 3134 + Schleusen_Typ : Int := 1274 + Schleuse_Dyn_DB : Int := 128 + Schleuse_Dyn_DW : Int := 2400 + Parameter_allg : Struct + Leser_eingebaut : Bool := 1 + Antrieb_vorhanden : Bool := 1 + Para02 : Bool := false + Antrieb_Plus_vorhanden : Bool := 1 + Para06 : Bool := false + Para07 : Bool := false + Para10 : Bool := false + Para11 : Bool := false + Para12 : Bool := false + Para13 : Bool := false + Para14 : Bool := false + Para15 : Bool := false + Para16 : Bool := false + Position in DL : Bool := 1 + Leser_ID : Word := 16#7102 + Leser_FC : Int := 180 + Ziel_FC : Int := 181 + Draussen_FC : Int := 0 + RausWeichen_Nr : Int := 0 + Mindeszeit_Schleuse_geoeffnet : Int := 5 + Wartezeit_bis_leer : Int := 150 + Übzeit_in_Schleuse : Int := 150 + Übzeit_aus_Schleuse : Int := 30 + Gesamt_Trolley_DL : Int := 1000 + EinfahrZeit : Int := 2 + Reserve : Array[1..3] of Int + None: + Schleusen_Nr : Int := 3136 + Schleuse_Dyn_DB : Int := 128 + Schleuse_Dyn_DW : Int := 2600 + Ziel_FC : Int := 181 + Draussen_FC : Int := 182 + RausWeichen_Nr : Int := 3140 + Mindeszeit_Schleuse_geoeffnet : Int := 5 + MaxRausTrolleys : Int := 2 + EinfahrZeit : Int := 32 + None: + Schleusen_Nr : Int := 3121 + Schleusen_Typ : Int := 1274 + Schleuse_Dyn_DB : Int := 1128 + Schleuse_Dyn_DW : Int := 0 + Parameter_allg : Struct + Leser_eingebaut : Bool := 1 + Antrieb_vorhanden : Bool := 1 + Para02 : Bool := false + Antrieb_Plus_vorhanden : Bool := false + Para06 : Bool := false + Para07 : Bool := false + Para10 : Bool := false + Para11 : Bool := false + Para12 : Bool := false + Para13 : Bool := false + Para14 : Bool := false + Para15 : Bool := false + Para16 : Bool := false + Position in DL : Bool := 1 + Leser_ID : Word := 16#7103 + Leser_FC : Int := 1180 + Ziel_FC : Int := 1181 + Draussen_FC : Int := 1182 + RausWeichen_Nr : Int := 0 + Mindeszeit_Schleuse_geoeffnet : Int := 5 + Wartezeit_bis_leer : Int := 150 + Übzeit_in_Schleuse : Int := 150 + Übzeit_aus_Schleuse : Int := 30 + Gesamt_Trolley_DL : Int := 1000 + EinfahrZeit : Int := 27 + Reserve : Array[1..3] of Int + None: + Schleusen_Nr : Int := 3123 + Schleusen_Typ : Int := 1274 + Schleuse_Dyn_DB : Int := 1128 + Schleuse_Dyn_DW : Int := 200 + Parameter_allg : Struct + Leser_eingebaut : Bool := 1 + Antrieb_vorhanden : Bool := 1 + Para02 : Bool := false + Antrieb_Plus_vorhanden : Bool := false + Para06 : Bool := false + Para07 : Bool := false + Para10 : Bool := false + Para11 : Bool := false + Para12 : Bool := false + Para13 : Bool := false + Para14 : Bool := false + Para15 : Bool := false + Para16 : Bool := false + Position in DL : Bool := false + Leser_ID : Word := 16#7105 + Leser_FC : Int := 1180 + Ziel_FC : Int := 1181 + Draussen_FC : Int := 1182 + RausWeichen_Nr : Int := 0 + Mindeszeit_Schleuse_geoeffnet : Int := 5 + Wartezeit_bis_leer : Int := 150 + Übzeit_in_Schleuse : Int := 150 + Übzeit_aus_Schleuse : Int := 30 + Gesamt_Trolley_DL : Int := 1000 + EinfahrZeit : Int := 56 + Reserve : Array[1..3] of Int + None: + Schleusen_Nr : Int := 3244 + Schleuse_Dyn_DB : Int := 1128 + Schleuse_Dyn_DW : Int := 400 + Parameter_allg : Struct + Leser_eingebaut : Bool := 1 + Leser_ID : Word := 16#7104 + Leser_FC : Int := 1180 + Ziel_FC : Int := 1181 + RausWeichen_Nr : Int := 3245 + Mindeszeit_Schleuse_geoeffnet : Int := 5 + Wartezeit_bis_leer : Int := 15 + MaxRausTrolleys : Int := 2 + EinfahrZeit : Int := 8 + None: + Schleusen_Nr : Int := 3247 + Schleuse_Dyn_DB : Int := 2128 + Schleuse_Dyn_DW : Int := 0 + Mindeszeit_Schleuse_geoeffnet : Int := 5 + Wartezeit_bis_leer : Int := 15 + Übzeit_in_Schleuse : Int := 120 + MaxRausTrolleys : Int := 2 + EinfahrZeit : Int := 62 + None: + Schleusen_Nr : Int := 3275 + Schleusen_Typ : Int := 1274 + Schleuse_Dyn_DB : Int := 2128 + Schleuse_Dyn_DW : Int := 200 + Parameter_allg : Struct + Leser_eingebaut : Bool := false + Antrieb_vorhanden : Bool := 1 + Para02 : Bool := false + Antrieb_Plus_vorhanden : Bool := 1 + Para06 : Bool := false + Para07 : Bool := false + Para10 : Bool := false + Para11 : Bool := false + Para12 : Bool := false + Para13 : Bool := false + Para14 : Bool := false + Para15 : Bool := false + Para16 : Bool := false + Position in DL : Bool := false + Leser_ID : Word := 16#0 + Leser_FC : Int := 0 + Ziel_FC : Int := 0 + Draussen_FC : Int := 0 + RausWeichen_Nr : Int := 0 + Mindeszeit_Schleuse_geoeffnet : Int := 5 + Wartezeit_bis_leer : Int := 60 + Übzeit_in_Schleuse : Int := 60 + Übzeit_aus_Schleuse : Int := 10 + Gesamt_Trolley_DL : Int := 1000 + AusfahrZeit : Int := 5 + EinfahrZeit : Int := 25 + Reserve : Array[1..3] of Int + None: + Bereichs_Nr : Int := 3361 + Bereich_Dyn_DB : Int := 2128 + Bereich_Dyn_DW : Int := 400 + Fahrzeit : Int := 76 + Wartezeit_bis_leer : Int := 100 + Übzeit_in_Bereich : Int := 100 + MaxRausTrolleys : Int := 1 + None: + Schleusen_Nr : Int := 3363 + Schleusen_Typ : Int := 1274 + Schleuse_Dyn_DB : Int := 2128 + Schleuse_Dyn_DW : Int := 600 + Parameter_allg : Struct + Leser_eingebaut : Bool := false + Antrieb_vorhanden : Bool := 1 + Para02 : Bool := false + Antrieb_Plus_vorhanden : Bool := false + Para06 : Bool := false + Para07 : Bool := false + Para10 : Bool := false + Para11 : Bool := false + Para12 : Bool := false + Para13 : Bool := false + Para14 : Bool := false + Para15 : Bool := false + Para16 : Bool := false + Position in DL : Bool := false + Leser_ID : Word := 16#0 + Leser_FC : Int := 0 + Ziel_FC : Int := 0 + Draussen_FC : Int := 0 + RausWeichen_Nr : Int := 0 + Mindeszeit_Schleuse_geoeffnet : Int := 5 + Wartezeit_bis_leer : Int := 15 + Übzeit_in_Schleuse : Int := 30 + Übzeit_aus_Schleuse : Int := 30 + Gesamt_Trolley_DL : Int := 1000 + EinfahrZeit : Int := 8 + Reserve : Array[1..3] of Int + None: + Schleusen_Nr : Int := 3366 + Schleusen_Typ : Int := 1274 + Schleuse_Dyn_DB : Int := 2128 + Schleuse_Dyn_DW : Int := 800 + Parameter_allg : Struct + Leser_eingebaut : Bool := false + Antrieb_vorhanden : Bool := 1 + Para02 : Bool := false + Antrieb_Plus_vorhanden : Bool := 1 + Para06 : Bool := false + Para07 : Bool := false + Para10 : Bool := false + Para11 : Bool := false + Para12 : Bool := false + Para13 : Bool := false + Para14 : Bool := false + Para15 : Bool := false + Para16 : Bool := false + Position in DL : Bool := false + Leser_ID : Word := 16#0 + Leser_FC : Int := 0 + Ziel_FC : Int := 2181 + Draussen_FC : Int := 0 + RausWeichen_Nr : Int := 0 + Mindeszeit_Schleuse_geoeffnet : Int := 5 + Wartezeit_bis_leer : Int := 15 + Übzeit_in_Schleuse : Int := 30 + Übzeit_aus_Schleuse : Int := 30 + Gesamt_Trolley_DL : Int := 1000 + AusfahrZeit : Int := 5 + EinfahrZeit : Int := 28 + Reserve : Array[1..3] of Int + None: + Bereichs_Nr : Int := 4441 + Bereich_Dyn_DB : Int := 2128 + Bereich_Dyn_DW : Int := 1000 + Fahrzeit : Int := 18 + Wartezeit_bis_leer : Int := 30 + Übzeit_in_Bereich : Int := 30 + None: + Schleusen_Nr : Int := 4443 + Schleuse_Dyn_DB : Int := 2128 + Schleuse_Dyn_DW : Int := 1200 + Parameter_allg : Struct + Leser_eingebaut : Bool := 1 + Leser_ID : Word := 16#7106 + Leser_FC : Int := 2180 + Ziel_FC : Int := 2181 + Draussen_FC : Int := 2182 + RausWeichen_Nr : Int := 4445 + Mindeszeit_Schleuse_geoeffnet : Int := 5 + Wartezeit_bis_leer : Int := 15 + MaxRausTrolleys : Int := 2 + EinfahrZeit : Int := 32 + None: + Schleusen_Nr : Int := 4450 + Schleuse_Dyn_DB : Int := 2128 + Schleuse_Dyn_DW : Int := 1600 + Parameter_allg : Struct + Antrieb_Plus_vorhanden : Bool := 1 + Mindeszeit_Schleuse_geoeffnet : Int := 5 + Wartezeit_bis_leer : Int := 15 + MaxRausTrolleys : Int := 2 + EinfahrZeit : Int := 15 + None: + Bereichs_Nr : Int := 4454 + Bereich_Dyn_DB : Int := 2128 + Bereich_Dyn_DW : Int := 1800 + Fahrzeit : Int := 75 + Wartezeit_bis_leer : Int := 100 + Übzeit_in_Bereich : Int := 100 + MaxRausTrolleys : Int := 2 + None: + Schleusen_Nr : Int := 4503 + Schleusen_Typ : Int := 1274 + Schleuse_Dyn_DB : Int := 3128 + Schleuse_Dyn_DW : Int := 0 + Parameter_allg : Struct + Leser_eingebaut : Bool := 1 + Antrieb_vorhanden : Bool := 1 + Para02 : Bool := false + Antrieb_Plus_vorhanden : Bool := false + Para06 : Bool := false + Para07 : Bool := false + Para10 : Bool := false + Para11 : Bool := false + Para12 : Bool := false + Para13 : Bool := false + Para14 : Bool := false + Para15 : Bool := false + Para16 : Bool := false + Position in DL : Bool := 1 + Leser_ID : Word := 16#7107 + Leser_FC : Int := 3180 + Ziel_FC : Int := 3181 + Draussen_FC : Int := 3182 + RausWeichen_Nr : Int := 0 + Mindeszeit_Schleuse_geoeffnet : Int := 5 + Wartezeit_bis_leer : Int := 150 + Übzeit_in_Schleuse : Int := 150 + Übzeit_aus_Schleuse : Int := 30 + Gesamt_Trolley_DL : Int := 1000 + EinfahrZeit : Int := 19 + Reserve : Array[1..3] of Int + None: + Schleusen_Nr : Int := 4512 + Schleuse_Dyn_DB : Int := 4128 + Mindeszeit_Schleuse_geoeffnet : Int := 5 + Übzeit_aus_Schleuse : Int := 30 + MaxRausTrolleys : Int := 2 + EinfahrZeit : Int := 40 + None: + Schleusen_Nr : Int := 4532 + Schleuse_Dyn_DB : Int := 4128 + Schleuse_Dyn_DW : Int := 200 + Mindeszeit_Schleuse_geoeffnet : Int := 5 + Übzeit_aus_Schleuse : Int := 30 + MaxRausTrolleys : Int := 2 + EinfahrZeit : Int := 26 + None: + Schleusen_Nr : Int := 4516 + Schleusen_Typ : Int := 1274 + Schleuse_Dyn_DB : Int := 4128 + Schleuse_Dyn_DW : Int := 400 + Parameter_allg : Struct + Leser_eingebaut : Bool := false + Antrieb_vorhanden : Bool := 1 + Para02 : Bool := false + Antrieb_Plus_vorhanden : Bool := false + Para06 : Bool := false + Para07 : Bool := false + Para10 : Bool := false + Para11 : Bool := false + Para12 : Bool := false + Para13 : Bool := false + Para14 : Bool := false + Para15 : Bool := false + Para16 : Bool := false + Position in DL : Bool := false + Leser_ID : Word := 16#0 + Leser_FC : Int := 0 + Ziel_FC : Int := 0 + Draussen_FC : Int := 0 + RausWeichen_Nr : Int := 0 + Mindeszeit_Schleuse_geoeffnet : Int := 5 + Wartezeit_bis_leer : Int := 150 + Übzeit_in_Schleuse : Int := 150 + Übzeit_aus_Schleuse : Int := 30 + Gesamt_Trolley_DL : Int := 1000 + EinfahrZeit : Int := 12 + Reserve : Array[1..3] of Int + None: + Schleusen_Nr : Int := 4522 + Schleusen_Typ : Int := 1274 + Schleuse_Dyn_DB : Int := 4128 + Schleuse_Dyn_DW : Int := 2200 + Parameter_allg : Struct + Leser_eingebaut : Bool := false + Antrieb_vorhanden : Bool := 1 + Para02 : Bool := false + Antrieb_Plus_vorhanden : Bool := false + Para06 : Bool := false + Para07 : Bool := false + Para10 : Bool := false + Para11 : Bool := false + Para12 : Bool := false + Para13 : Bool := false + Para14 : Bool := false + Para15 : Bool := false + Para16 : Bool := false + Position in DL : Bool := false + Mindeszeit_Schleuse_geoeffnet : Int := 5 + EinfahrZeit : Int := 13 + Reserve : Array[1..3] of Int + None: + Schleusen_Nr : Int := 4520 + Schleusen_Typ : Int := 1274 + Schleuse_Dyn_DB : Int := 4128 + Schleuse_Dyn_DW : Int := 600 + Parameter_allg : Struct + Leser_eingebaut : Bool := false + Antrieb_vorhanden : Bool := 1 + Para02 : Bool := false + Antrieb_Plus_vorhanden : Bool := 1 + Para06 : Bool := false + Para07 : Bool := false + Para10 : Bool := false + Para11 : Bool := false + Para12 : Bool := false + Para13 : Bool := false + Para14 : Bool := false + Para15 : Bool := false + Para16 : Bool := false + Position in DL : Bool := false + Leser_ID : Word := 16#0 + Leser_FC : Int := 0 + Ziel_FC : Int := 0 + Draussen_FC : Int := 0 + RausWeichen_Nr : Int := 0 + Mindeszeit_Schleuse_geoeffnet : Int := 5 + Wartezeit_bis_leer : Int := 150 + Übzeit_in_Schleuse : Int := 150 + Übzeit_aus_Schleuse : Int := 30 + Gesamt_Trolley_DL : Int := 1000 + AusfahrZeit : Int := 5 + EinfahrZeit : Int := 30 + Reserve : Array[1..3] of Int + None: + Bereichs_Nr : Int := 4456 + Bereich_Dyn_DB : Int := 4128 + Bereich_Dyn_DW : Int := 800 + Fahrzeit : Int := 75 + Wartezeit_bis_leer : Int := 100 + Übzeit_in_Bereich : Int := 100 + MaxRausTrolleys : Int := 2 + None: + Schleusen_Nr : Int := 4466 + Schleuse_Dyn_DB : Int := 4128 + Schleuse_Dyn_DW : Int := 1000 + Parameter_allg : Struct + Antrieb_Plus_vorhanden : Bool := 1 + Ziel_FC : Int := 4181 + Draussen_FC : Int := 4182 + Mindeszeit_Schleuse_geoeffnet : Int := 5 + Wartezeit_bis_leer : Int := 15 + Übzeit_in_Schleuse : Int := 150 + MaxRausTrolleys : Int := 2 + EinfahrZeit : Int := 20 + None: + Schleusen_Nr : Int := 4462 + Schleuse_Dyn_DB : Int := 4128 + Schleuse_Dyn_DW : Int := 1200 + Mindeszeit_Schleuse_geoeffnet : Int := 5 + MaxRausTrolleys : Int := 2 + EinfahrZeit : Int := 30 + None: + Schleusen_Nr : Int := 4463 + Schleusen_Typ : Int := 1274 + Schleuse_Dyn_DB : Int := 4128 + Schleuse_Dyn_DW : Int := 2400 + Parameter_allg : Struct + Leser_eingebaut : Bool := false + Antrieb_vorhanden : Bool := 1 + Para02 : Bool := false + Antrieb_Plus_vorhanden : Bool := 1 + Para06 : Bool := false + Para07 : Bool := false + Para10 : Bool := false + Para11 : Bool := false + Para12 : Bool := false + Para13 : Bool := false + Para14 : Bool := false + Para15 : Bool := false + Para16 : Bool := false + Position in DL : Bool := false + Leser_ID : Word := 16#0 + Leser_FC : Int := 0 + Ziel_FC : Int := 0 + Draussen_FC : Int := 0 + RausWeichen_Nr : Int := 0 + Mindeszeit_Schleuse_geoeffnet : Int := 5 + EinfahrZeit : Int := 11 + Reserve : Array[1..3] of Int + None: + Bereichs_Nr : Int := 4465 + Bereich_Dyn_DB : Int := 4128 + Bereich_Dyn_DW : Int := 1400 + Fahrzeit : Int := 17 + Wartezeit_bis_leer : Int := 30 + Übzeit_in_Bereich : Int := 30 + Übzeit_aus_Bereich : Int := 10 + MaxRausTrolleys : Int := 1 + None: + Schleusen_Nr : Int := 3370 + Schleusen_Typ : Int := 1274 + Schleuse_Dyn_DB : Int := 4128 + Schleuse_Dyn_DW : Int := 1600 + Parameter_allg : Struct + Leser_eingebaut : Bool := false + Antrieb_vorhanden : Bool := 1 + Para02 : Bool := false + Antrieb_Plus_vorhanden : Bool := 1 + Para06 : Bool := false + Para07 : Bool := false + Para10 : Bool := false + Para11 : Bool := false + Para12 : Bool := false + Para13 : Bool := false + Para14 : Bool := false + Para15 : Bool := false + Para16 : Bool := false + Position in DL : Bool := false + Leser_ID : Word := 16#0 + Leser_FC : Int := 0 + Ziel_FC : Int := 0 + Draussen_FC : Int := 0 + RausWeichen_Nr : Int := 0 + Mindeszeit_Schleuse_geoeffnet : Int := 5 + Wartezeit_bis_leer : Int := 150 + Übzeit_in_Schleuse : Int := 150 + Übzeit_aus_Schleuse : Int := 30 + Gesamt_Trolley_DL : Int := 1000 + AusfahrZeit : Int := 5 + EinfahrZeit : Int := 29 + Reserve : Array[1..3] of Int + None: + Bereichs_Nr : Int := 3373 + Bereich_Dyn_DB : Int := 4128 + Bereich_Dyn_DW : Int := 1800 + Fahrzeit : Int := 81 + Wartezeit_bis_leer : Int := 100 + Übzeit_in_Bereich : Int := 100 + MaxRausTrolleys : Int := 3 + None: + Schleusen_Nr : Int := 3303 + Schleusen_Typ : Int := 1274 + Schleuse_Dyn_DB : Int := 4128 + Schleuse_Dyn_DW : Int := 2000 + Parameter_allg : Struct + Leser_eingebaut : Bool := false + Antrieb_vorhanden : Bool := 1 + Para02 : Bool := false + Antrieb_Plus_vorhanden : Bool := false + Para06 : Bool := false + Para07 : Bool := false + Para10 : Bool := false + Para11 : Bool := false + Para12 : Bool := false + Para13 : Bool := false + Para14 : Bool := false + Para15 : Bool := false + Para16 : Bool := false + Position in DL : Bool := 1 + Leser_ID : Word := 16#0 + Leser_FC : Int := 0 + Ziel_FC : Int := 0 + Draussen_FC : Int := 0 + RausWeichen_Nr : Int := 0 + Mindeszeit_Schleuse_geoeffnet : Int := 5 + Wartezeit_bis_leer : Int := 150 + Übzeit_in_Schleuse : Int := 150 + Übzeit_aus_Schleuse : Int := 30 + Gesamt_Trolley_DL : Int := 1000 + EinfahrZeit : Int := 48 + Reserve : Array[1..3] of Int + None: + Schleusen_Nr : Int := 3305 + Schleusen_Typ : Int := 1274 + Schleuse_Dyn_DB : Int := 5128 + Schleuse_Dyn_DW : Int := 0 + Parameter_allg : Struct + Leser_eingebaut : Bool := false + Antrieb_vorhanden : Bool := 1 + Para02 : Bool := false + Antrieb_Plus_vorhanden : Bool := false + Para06 : Bool := false + Para07 : Bool := false + Para10 : Bool := false + Para11 : Bool := false + Para12 : Bool := false + Para13 : Bool := false + Para14 : Bool := false + Para15 : Bool := false + Para16 : Bool := false + Position in DL : Bool := false + Leser_ID : Word := 16#0 + Leser_FC : Int := 0 + Ziel_FC : Int := 5181 + Draussen_FC : Int := 5182 + RausWeichen_Nr : Int := 0 + Mindeszeit_Schleuse_geoeffnet : Int := 5 + Wartezeit_bis_leer : Int := 150 + Übzeit_in_Schleuse : Int := 150 + Übzeit_aus_Schleuse : Int := 30 + Gesamt_Trolley_DL : Int := 0 + EinfahrZeit : Int := 25 + Reserve : Array[1..3] of Int + None: + Schleusen_Nr : Int := 3342 + Schleusen_Typ : Int := 1274 + Schleuse_Dyn_DB : Int := 6128 + Schleuse_Dyn_DW : Int := 0 + Parameter_allg : Struct + Leser_eingebaut : Bool := false + Antrieb_vorhanden : Bool := 1 + Para02 : Bool := false + Antrieb_Plus_vorhanden : Bool := false + Para06 : Bool := false + Para07 : Bool := false + Para10 : Bool := false + Para11 : Bool := false + Para12 : Bool := false + Para13 : Bool := false + Para14 : Bool := false + Para15 : Bool := false + Para16 : Bool := false + Position in DL : Bool := false + Leser_ID : Word := 16#0 + Leser_FC : Int := 0 + Ziel_FC : Int := 6181 + Draussen_FC : Int := 0 + RausWeichen_Nr : Int := 0 + Mindeszeit_Schleuse_geoeffnet : Int := 5 + Wartezeit_bis_leer : Int := 150 + Übzeit_in_Schleuse : Int := 150 + Übzeit_aus_Schleuse : Int := 30 + Gesamt_Trolley_DL : Int := 1000 + Reserve : Array[1..3] of Int + None: + Schleusen_Nr : Int := 3323 + Schleusen_Typ : Int := 1274 + Schleuse_Dyn_DB : Int := 6128 + Schleuse_Dyn_DW : Int := 200 + Parameter_allg : Struct + Leser_eingebaut : Bool := 1 + Para02 : Bool := false + Antrieb_Plus_vorhanden : Bool := false + Para06 : Bool := false + Para07 : Bool := false + Para10 : Bool := false + Para11 : Bool := false + Para12 : Bool := false + Para13 : Bool := false + Para14 : Bool := false + Para15 : Bool := false + Para16 : Bool := false + Position in DL : Bool := false + Leser_ID : Word := 16#7108 + Leser_FC : Int := 6180 + Ziel_FC : Int := 6181 + Draussen_FC : Int := 6182 + RausWeichen_Nr : Int := 0 + Mindeszeit_Schleuse_geoeffnet : Int := 5 + Wartezeit_bis_leer : Int := 150 + Übzeit_in_Schleuse : Int := 150 + Übzeit_aus_Schleuse : Int := 30 + Gesamt_Trolley_DL : Int := 1000 + Reserve : Array[1..3] of Int + None: + Schleusen_Nr : Int := 3345 + Schleusen_Typ : Int := 1274 + Schleuse_Dyn_DB : Int := 6128 + Schleuse_Dyn_DW : Int := 2200 + Parameter_allg : Struct + Para02 : Bool := false + Antrieb_Plus_vorhanden : Bool := false + Para06 : Bool := false + Para07 : Bool := false + Para10 : Bool := false + Para11 : Bool := false + Para12 : Bool := false + Para13 : Bool := false + Para14 : Bool := false + Para15 : Bool := false + Para16 : Bool := false + Position in DL : Bool := false + Mindeszeit_Schleuse_geoeffnet : Int := 5 + EinfahrZeit : Int := 8 + Reserve : Array[1..3] of Int + None: + Schleusen_Nr : Int := 3325 + Schleuse_Dyn_DB : Int := 6128 + Schleuse_Dyn_DW : Int := 400 + Parameter_allg : Struct + Antrieb_Plus_vorhanden : Bool := 1 + MaxRausTrolleys : Int := 1 + EinfahrZeit : Int := 25 + None: + Bereichs_Nr : Int := 4236 + Bereich_Dyn_DB : Int := 6128 + Bereich_Dyn_DW : Int := 600 + Fahrzeit : Int := 42 + Wartezeit_bis_leer : Int := 60 + Übzeit_in_Bereich : Int := 60 + Übzeit_aus_Bereich : Int := 30 + MaxRausTrolleys : Int := 2 + None: + Schleusen_Nr : Int := 4221 + Schleuse_Dyn_DB : Int := 6128 + Schleuse_Dyn_DW : Int := 800 + Parameter_allg : Struct + Leser_eingebaut : Bool := 1 + Antrieb_Plus_vorhanden : Bool := 1 + Leser_ID : Word := 16#7109 + Leser_FC : Int := 6180 + Ziel_FC : Int := 6181 + Draussen_FC : Int := 6182 + RausWeichen_Nr : Int := 4223 + Mindeszeit_Schleuse_geoeffnet : Int := 5 + Wartezeit_bis_leer : Int := 150 + Übzeit_in_Schleuse : Int := 150 + MaxRausTrolleys : Int := 3 + EinfahrZeit : Int := 9 + None: + Schleusen_Nr : Int := 4227 + Schleusen_Typ : Int := 1274 + Schleuse_Dyn_DB : Int := 6128 + Schleuse_Dyn_DW : Int := 1200 + Parameter_allg : Struct + Antrieb_vorhanden : Bool := 1 + Para02 : Bool := false + Antrieb_Plus_vorhanden : Bool := 1 + Para06 : Bool := false + Para07 : Bool := false + Para10 : Bool := false + Para11 : Bool := false + Para12 : Bool := false + Para13 : Bool := false + Para14 : Bool := false + Para15 : Bool := false + Para16 : Bool := false + Position in DL : Bool := false + Draussen_FC : Int := 0 + RausWeichen_Nr : Int := 0 + Mindeszeit_Schleuse_geoeffnet : Int := 5 + Wartezeit_bis_leer : Int := 150 + Übzeit_in_Schleuse : Int := 150 + Übzeit_aus_Schleuse : Int := 30 + Gesamt_Trolley_DL : Int := 1000 + AusfahrZeit : Int := 5 + EinfahrZeit : Int := 34 + Reserve : Array[1..3] of Int + None: + Bereichs_Nr : Int := 4232 + Bereich_Dyn_DB : Int := 6128 + Bereich_Dyn_DW : Int := 1400 + Fahrzeit : Int := 35 + Wartezeit_bis_leer : Int := 60 + Übzeit_in_Bereich : Int := 60 + Übzeit_aus_Bereich : Int := 30 + MaxRausTrolleys : Int := 1 + None: + Schleusen_Nr : Int := 4235 + Schleusen_Typ : Int := 1274 + Schleuse_Dyn_DB : Int := 6128 + Schleuse_Dyn_DW : Int := 1600 + Parameter_allg : Struct + Antrieb_vorhanden : Bool := 1 + Para02 : Bool := false + Antrieb_Plus_vorhanden : Bool := 1 + Para06 : Bool := false + Para07 : Bool := false + Para10 : Bool := false + Para11 : Bool := false + Para12 : Bool := false + Para13 : Bool := false + Para14 : Bool := false + Para15 : Bool := false + Para16 : Bool := false + Position in DL : Bool := false + Ziel_FC : Int := 6181 + Draussen_FC : Int := 0 + RausWeichen_Nr : Int := 0 + Mindeszeit_Schleuse_geoeffnet : Int := 5 + Wartezeit_bis_leer : Int := 150 + Übzeit_in_Schleuse : Int := 150 + Übzeit_aus_Schleuse : Int := 30 + Gesamt_Trolley_DL : Int := 1000 + AusfahrZeit : Int := 5 + EinfahrZeit : Int := 21 + Reserve : Array[1..3] of Int + None: + Bereichs_Nr : Int := 3732 + Bereich_Dyn_DB : Int := 6128 + Bereich_Dyn_DW : Int := 1800 + Fahrzeit : Int := 15 + Wartezeit_bis_leer : Int := 30 + Übzeit_in_Bereich : Int := 30 + Übzeit_aus_Bereich : Int := 30 + MaxRausTrolleys : Int := 1 + None: + Schleusen_Nr : Int := 3722 + Schleuse_Dyn_DB : Int := 6128 + Schleuse_Dyn_DW : Int := 2000 + Ziel_FC : Int := 6181 + Mindeszeit_Schleuse_geoeffnet : Int := 5 + Wartezeit_bis_leer : Int := 150 + Übzeit_in_Schleuse : Int := 150 + MaxRausTrolleys : Int := 2 + EinfahrZeit : Int := 114 diff --git a/=A01+UH07-KF00/Programmbausteine/Datenlisten/DLOmniWeichen.awl b/=A01+UH07-KF00/Programmbausteine/Datenlisten/DLOmniWeichen.awl new file mode 100644 index 0000000..e2deafc --- /dev/null +++ b/=A01+UH07-KF00/Programmbausteine/Datenlisten/DLOmniWeichen.awl @@ -0,0 +1,63 @@ +=== GlobalDB 279: DLOmniWeichen [DB] === +INTERFACE: + Static: + Datenlistenkopf : Struct + KOPF : Word := WORD#16#DA14 // Datenliste-Kennnung (DA) / Datensatzlänge in Word (1 - 128) + LAENGE : Int := 4 // Länge der Datenliste (maximale Anzahl der Datensätze) + STAMMDATEN : Int := 1 // Stammdatenlänge in Word (1 - 9) + INDDB : Int // Indizierter DB (nur bei Stammdaten = 1 erlaubt !!!) + LAENGEINDDB : Int // Länge des indizierten DB in Word (nur bei Stammdaten = 1 erlaubt !!!) + OFFSETINDDATEN : Int // Offset für indizierte Daten (nur bei Stammdaten = 1 erlaubt !!!) + LETZTERZUGRIFF : Int // Speicherung des letzten Zugriffs + Belegt14 : Int // reserviert von Sort-Datenliste + Reserve16 : Int // Reserve + Reserve18 : Int // Reserve + Weiche_3140_Plus : "UDLHMOmniWeiche_2fach_Plus" + Weiche_3245_Plus : "UDLHMOmniWeiche_2fach_Plus" + Weiche_4445_Plus : "UDLHMOmniWeiche_2fach_Plus" + Weiche_4223_Plus : "UDLHMOmniWeiche_2fach_Plus" + Endekennung : Word := WORD#16#DAEE // Datensort-Ende-Kennung (DBEE) + None: + Weichen_Nr : Int := 3140 + Weichen_Dyn_DB : Int := 128 + Weichen_Dyn_DW : Int := 2000 + Wartezeit_bis_Weiche_leer : Int := 30 + Gerade : Struct + Ziel : Word := 16#3127 + Mindestzeit : Int := 10 + Überwachungszeit : Int := 30 + Abzweig : Struct + Ziel : Word := 16#3130 + Mindestzeit : Int := 10 + Überwachungszeit : Int := 30 + None: + Weichen_Nr : Int := 3245 + Weichen_Dyn_DB : Int := 1128 + Weichen_Dyn_DW : Int := 600 + Wartezeit_bis_Weiche_leer : Int := 30 + Gerade : Struct + Ziel : Word := 16#3246 + Mindestzeit : Int := 10 + Überwachungszeit : Int := 30 + Abzweig : Struct + Ziel : Word := 16#3243 + Mindestzeit : Int := 10 + Überwachungszeit : Int := 30 + None: + Weichen_Nr : Int := 4445 + Weichen_Dyn_DB : Int := 2128 + Weichen_Dyn_DW : Int := 1400 + Gerade : Struct + Ziel : Word := 16#4447 + Mindestzeit : Int := 20 + Abzweig : Struct + Ziel : Word := 16#4461 + Mindestzeit : Int := 30 + None: + Weichen_Nr : Int := 4223 + Weichen_Dyn_DB : Int := 6128 + Weichen_Dyn_DW : Int := 1000 + Gerade : Struct + Ziel : Word := 16#4224 + Abzweig : Struct + Ziel : Word := 16#4211 diff --git a/=A01+UH07-KF00/Programmbausteine/Datenlisten/LagerDL_OutDaten.awl b/=A01+UH07-KF00/Programmbausteine/Datenlisten/LagerDL_OutDaten.awl new file mode 100644 index 0000000..20f9c2d --- /dev/null +++ b/=A01+UH07-KF00/Programmbausteine/Datenlisten/LagerDL_OutDaten.awl @@ -0,0 +1,4 @@ +=== GlobalDB 1275: LagerDL_OutDaten [DB] === +INTERFACE: + Static: + OUTDaten : "UDLHMVollPuffer" diff --git a/=A01+UH07-KF00/Programmbausteine/IBN.awl b/=A01+UH07-KF00/Programmbausteine/IBN.awl new file mode 100644 index 0000000..bb44982 --- /dev/null +++ b/=A01+UH07-KF00/Programmbausteine/IBN.awl @@ -0,0 +1,4 @@ +=== GlobalDB 2: IBN [DB] === +INTERFACE: + Static: + xQuitGlobal : Bool diff --git a/=A01+UH07-KF00/Programmbausteine/Logistik/DLTrolleys.awl b/=A01+UH07-KF00/Programmbausteine/Logistik/DLTrolleys.awl new file mode 100644 index 0000000..9affecb --- /dev/null +++ b/=A01+UH07-KF00/Programmbausteine/Logistik/DLTrolleys.awl @@ -0,0 +1,16 @@ +=== GlobalDB 1000: DLTrolleys [DB] === +INTERFACE: + Static: + Datenlistenkopf : Struct + KOPF : Word := WORD#16#DA0A // Datenliste-Kennnung (DA) / Datensatzlänge in Word (1 - 128) + LAENGE : Int := 1635 // Länge der Datenliste (maximale Anzahl der Datensätze) + STAMMDATEN : Int := 2 // Stammdatenlänge in Word (1 - 9) + INDDB : Int := 1080 // Indizierter DB (nur bei Stammdaten = 1 erlaubt !!!) + LAENGEINDDB : Int := 20000 // Länge des indizierten DB in Word (nur bei Stammdaten = 1 erlaubt !!!) + INDDATEN_WANDEL_FC : Int := 1000 // FC zum Wandeln der indizierte Daten (nur bei Stammdaten = 1 erlaubt !!!) + LETZTERZUGRIFF : Int // Speicherung des letzten Zugriffs + Belegt14 : Int // reserviert von Sort-Datenliste + AnzahlEintraege : Int // Anzahl der eingetragenen Datensätze (nicht bei ind.Zugriff!) + Reserve18 : Int // Reserve + Trolley : Array[1..1635] of "UTrolley" + Endekennung : Word := WORD#16#DAEE // Datensort-Ende-Kennung (DBEE) diff --git a/=A01+UH07-KF00/Programmbausteine/Logistik/IndexDB1000.awl b/=A01+UH07-KF00/Programmbausteine/Logistik/IndexDB1000.awl new file mode 100644 index 0000000..d212201 --- /dev/null +++ b/=A01+UH07-KF00/Programmbausteine/Logistik/IndexDB1000.awl @@ -0,0 +1,4 @@ +=== GlobalDB 1080: IndexDB1000 [DB] === +INTERFACE: + Static: + Index : Array[6040000..6060000, 1..1] of Int // vorläufige Platzhaltervariable diff --git a/=A01+UH07-KF00/Programmbausteine/Logistik/Leerpuffer to Raus-Lager ermitteln.awl b/=A01+UH07-KF00/Programmbausteine/Logistik/Leerpuffer to Raus-Lager ermitteln.awl new file mode 100644 index 0000000..d29594f --- /dev/null +++ b/=A01+UH07-KF00/Programmbausteine/Logistik/Leerpuffer to Raus-Lager ermitteln.awl @@ -0,0 +1,36 @@ +=== FC 57: Leerpuffer to Raus-Lager ermitteln [STL] === +INTERFACE: + Input: + Output: + Puffer : Int // Puffer ermitteln + InOut: + Temp: + Puffer_ShopGroup : Int + Position : Int + Schleife : Int // Loopzähler + Puffer_Zähler : Int + Puffer_DW : Int + AR1Zeiger : DWord // Statt AR1 (ging nur bis DB-Länge <= 8191 Bytes) + AR1Start : DInt // Startwert mit Offset 0 + Constant: + Return: + Ret_Val : Void + +--- NW 1: Aktiver Puffer zum Ausfahren --- + L 0 + T Puffer + + +--- NW 2: Aktiven Puffer zum Auslagern suchen ? --- +CALL FC "DatenOut" (SSDB:=502, SSDW:=0, PARA:=16#F100, SEARCHDATEN:=P#M220.0, RE_VAL:="MB199", OUTDATEN:=P#M220.0, Position:=Position) // DL Puffer Leerpuffer ausfahren | 1.Eintrag lesen + + AN "M199.7" // Eintrag vorhanden + BEC + + L "MW220" // 1.AusfahrPuffer speichern + T Puffer + + +--- NW 3: Ende --- + BE + diff --git a/=A01+UH07-KF00/Programmbausteine/Logistik/Leerpuffer to Rein-Lager ermitteln.awl b/=A01+UH07-KF00/Programmbausteine/Logistik/Leerpuffer to Rein-Lager ermitteln.awl new file mode 100644 index 0000000..3edb522 --- /dev/null +++ b/=A01+UH07-KF00/Programmbausteine/Logistik/Leerpuffer to Rein-Lager ermitteln.awl @@ -0,0 +1,46 @@ +=== FC 54: Leerpuffer to Rein-Lager ermitteln [STL] === +INTERFACE: + Input: + Output: + Puffer : Word // Puffer ermitteln + InOut: + Temp: + Position : Int + Constant: + Return: + Ret_Val : Void + +--- NW 1: Aktiver Puffer zum Einfahren --- + L 16#0 + T Puffer + + +--- NW 2: Aktiven Puffer zum Einlagern suchen ? --- + +CALL FC "DatenOut" (SSDB:=501, SSDW:=0, PARA:=16#F100, SEARCHDATEN:=P#M220.0, RE_VAL:="MB199", OUTDATEN:=P#M220.0, Position:=Position) // DL Puffer Leerpuffer einfahren | 1.Eintrag lesen + + A "M199.7" // Eintrag vorhanden + JC Puffer + + +--- NW 3: Leerer Puffer vorhanden? --- + +CALL FC "DatenOut" (SSDB:=500, SSDW:=0, PARA:=16#F100, SEARCHDATEN:=P#M220.0, RE_VAL:="MB199", OUTDATEN:=P#M220.0, Position:=Position) // DL Puffer leer | 1.Eintrag lesen + + A "M199.7" // Eintrag vorhanden + JC Puffer + + BEU + + +--- NW 4: Puffer aufbereiten --- +Puffer: L "MW220" + ITB + L 16#A000 + OW + T Puffer + + +--- NW 5: Ende --- + BE + diff --git a/=A01+UH07-KF00/Programmbausteine/Logistik/PufferZeiger_ermitteln.awl b/=A01+UH07-KF00/Programmbausteine/Logistik/PufferZeiger_ermitteln.awl new file mode 100644 index 0000000..2c43a3e --- /dev/null +++ b/=A01+UH07-KF00/Programmbausteine/Logistik/PufferZeiger_ermitteln.awl @@ -0,0 +1,44 @@ +=== FC 9: PufferZeiger_ermitteln [STL] === +INTERFACE: + Input: + Puffer_X : Int // Puffer zum Auslagern + Output: + Puffer_DB : Int + Puffer_DW : Int + Error : Bool + InOut: + Temp: + Position : Int + Constant: + Return: + Ret_Val : Void + +--- NW 1: Zeiger für Puffer_X ermitteln --- + L Puffer_X + T "MW200" + L 0 // sinnvolle Angabe? + ==I // Nein! + = Error + BEC + +// Einsprung Puffer ermitteln: +CALL FC "DatenOut" (SSDB:=275, SSDW:=0, PARA:=16#0000, SEARCHDATEN:=P#M200.0, RE_VAL:="MB199", OUTDATEN:=P#M220.0, Position:=Position) // Eintrag lesen + + L "MB199" + L 2#1111111 // Bit 7 ausblenden + AW + L 0 // Fehler vorhanden? + <>I // Ja + = "7_HMI_Err_UH07_OB".Logistik.DB275_Err + = Error + BEC + + L "MW224" + T Puffer_DB + L "MW226" + T Puffer_DW + + +--- NW 2: Ende --- + BE + diff --git a/=A01+UH07-KF00/Programmbausteine/Logistik/Reservierung_in_Puffer_eintragen.awl b/=A01+UH07-KF00/Programmbausteine/Logistik/Reservierung_in_Puffer_eintragen.awl new file mode 100644 index 0000000..eec7cc8 --- /dev/null +++ b/=A01+UH07-KF00/Programmbausteine/Logistik/Reservierung_in_Puffer_eintragen.awl @@ -0,0 +1,130 @@ +=== FC 5: Reservierung_in_Puffer_eintragen [STL] === +INTERFACE: + Input: + TrolleyID : DInt + Ziel : Int + ShopGroup : DInt + Gesamt_Trolley_DL : Int + Output: + InOut: + Temp: + Lager_DB : Int + Lager_DW : Int + SSDW : Int + Position : Int + LeerPuffer : Bool + VollPuffer : Bool + Constant: + Return: + Ret_Val : Void + +--- NW 1: TrolleyID + Ziel bekannt -> Reservierung im Puffer --- + L TrolleyID + L 0 + ==I + BEC + + L Ziel + L 0 + ==I + BEC + +// Ziel checken: + L 1 + >=I + A( + CAC + L 10 + <=I + ) + = LeerPuffer + + CAC + L 101 + >=I + A( + CAC + L 151 + <=I + ) + = VollPuffer + +// Puffer checken: + L Ziel + T "MW220" + +CALL FC "DatenOut" (SSDB:=275, SSDW:=0, PARA:=16#0000, SEARCHDATEN:=P#M220.0, RE_VAL:="MB199", OUTDATEN:=P#M220.0, Position:=Position) // Eintrag lesen + + L "MB199" + L 2#1111111 // Bit 7 ausblenden + AW + L 0 // Fehler vorhanden? + <>I // Ja + BEC + + L "MW224" + T Lager_DB + L "MW226" + T Lager_DW + +// Eintrag in Trolley-Reservierungsliste + L TrolleyID + T "MD220" + L ShopGroup + T "MD224" + + L Lager_DW + L 200 + +I + T SSDW + +CALL FC "DatenIn" (SSDB:=Lager_DB, SSDW:=SSDW, INDATEN:=P#M220.0, RE_VAL:="MB198") + + +--- NW 2: BC in Trolley-DL eintragen --- + L Gesamt_Trolley_DL + L 0 // Liste angegeben? + ==I // Nein! + BEC + + L TrolleyID + T "TrolleyDL_INDaten".INDaten.TrolleyID + L Ziel + T "TrolleyDL_INDaten".INDaten.EndZiel + L ShopGroup + T "TrolleyDL_INDaten".INDaten.ShopGroup + +// Standort: + L 16#A000 + A LeerPuffer + JC Standort + + L 16#B000 + A VollPuffer + JC Standort + + L 16#0 + +Standort: T "TrolleyDL_INDaten".INDaten.Standort + +// Startzeit: + L "SGes".DATE_TIME.Jahr + T "TrolleyDL_INDaten".INDaten.LastTime.Jahr + L "SGes".DATE_TIME.Monat + T "TrolleyDL_INDaten".INDaten.LastTime.Monat + L "SGes".DATE_TIME.Tag + T "TrolleyDL_INDaten".INDaten.LastTime.Tag + L "SGes".DATE_TIME.Stunde + T "TrolleyDL_INDaten".INDaten.LastTime.Stunde + L "SGes".DATE_TIME.Minute + T "TrolleyDL_INDaten".INDaten.LastTime.Minute + L "SGes".DATE_TIME.Sekunde + T "TrolleyDL_INDaten".INDaten.LastTime.Sekunde + +// Daten in Datenbank schreiben: +CALL FC "DatenIn" (SSDB:=Gesamt_Trolley_DL, SSDW:=0, INDATEN:=DB1010.DBX0.0, RE_VAL:="MB198") + + +--- NW 3: Ende --- + BE + diff --git a/=A01+UH07-KF00/Programmbausteine/Logistik/SchleusenZeiger_ermitteln.awl b/=A01+UH07-KF00/Programmbausteine/Logistik/SchleusenZeiger_ermitteln.awl new file mode 100644 index 0000000..4d14fa8 --- /dev/null +++ b/=A01+UH07-KF00/Programmbausteine/Logistik/SchleusenZeiger_ermitteln.awl @@ -0,0 +1,39 @@ +=== FC 20: SchleusenZeiger_ermitteln [STL] === +INTERFACE: + Input: + Schleuse_X : Int // Schleuse zum Beeinflussen + Output: + Schleusen_DB : Int + Schleusen_DW : Int + Error : Bool + InOut: + Temp: + Position : Int + Constant: + Return: + Ret_Val : Void + +--- NW 1: Zeiger für Schleuse_X ermitteln --- + L Schleuse_X + T "MW200" + +// Einsprung Schleuse ermitteln: +CALL FC "DatenOut" (SSDB:=274, SSDW:=0, PARA:=16#0000, SEARCHDATEN:=P#M200.0, RE_VAL:="MB199", OUTDATEN:=P#M220.0, Position:=Position) // Eintrag lesen + + L "MB199" + L 2#1111111 // Bit 7 ausblenden + AW + L 0 // Fehler vorhanden? + <>I // Ja + = Error + BEC + + L "MW224" + T Schleusen_DB + L "MW226" + T Schleusen_DW + + +--- NW 2: Ende --- + BE + diff --git a/=A01+UH07-KF00/Programmbausteine/Logistik/ShopGroup to Raus-Lager ermitteln.awl b/=A01+UH07-KF00/Programmbausteine/Logistik/ShopGroup to Raus-Lager ermitteln.awl new file mode 100644 index 0000000..e6f7551 --- /dev/null +++ b/=A01+UH07-KF00/Programmbausteine/Logistik/ShopGroup to Raus-Lager ermitteln.awl @@ -0,0 +1,43 @@ +=== FC 7: ShopGroup to Raus-Lager ermitteln [STL] === +INTERFACE: + Input: + ShopGroup : DInt // Aufgrunf dieser ShopGroup + Output: + Puffer : Int // Puffer ermitteln + InOut: + Temp: + Puffer_ShopGroup : Int + Position : Int + Schleife : Int // Loopzähler + Puffer_Zähler : Int + Puffer_DW : Int + AR1Zeiger : DWord // Statt AR1 (ging nur bis DB-Länge <= 8191 Bytes) + AR1Start : DInt // Startwert mit Offset 0 + Constant: + Return: + Ret_Val : Void + +--- NW 1: Aktiver Puffer für diese ShopGroup zum Abrufen --- + L 0 + T Puffer + + L ShopGroup + T "MD220" // Sinvoller Wert ? + L DINT#0 + ==D // Nein ! + BEC + + +--- NW 2: Puffer mit dieser ShopGroup zum Abrufen aktiv? --- +CALL FC "DatenOut" (SSDB:=102, SSDW:=0, PARA:=16#0202, SEARCHDATEN:=P#M220.0, RE_VAL:="MB199", OUTDATEN:=P#M220.0, Position:=Position) // DL Puffer ShopGroupn abrufen | Eintrag lesen (ab 2.DW) + + AN "M199.7" // Eintrag vorhanden + BEC + + L "MW220" // 1.AusfahrPuffer speichern + T Puffer + + +--- NW 3: Ende --- + BE + diff --git a/=A01+UH07-KF00/Programmbausteine/Logistik/ShopGroup to Rein-Lager ermitteln.awl b/=A01+UH07-KF00/Programmbausteine/Logistik/ShopGroup to Rein-Lager ermitteln.awl new file mode 100644 index 0000000..f3a4af3 --- /dev/null +++ b/=A01+UH07-KF00/Programmbausteine/Logistik/ShopGroup to Rein-Lager ermitteln.awl @@ -0,0 +1,58 @@ +=== FC 4: ShopGroup to Rein-Lager ermitteln [STL] === +INTERFACE: + Input: + ShopGroup : DInt // Aufgrunf dieser ShopGroup + Output: + Puffer : Word // Puffer ermitteln + InOut: + Temp: + Position : Int + Constant: + Return: + Ret_Val : Void + +--- NW 1: Aktives Puffer für diese ShopGroup zum Einfahren --- + L 16#0 + T Puffer + + L ShopGroup + T "MD220" // Sinvoller Wert ? + L DINT#0 + D // Nein ! + ) + BEC + + +--- NW 2: Puffer mit dieser ShopGroup schon zum Einlagern aktiv? --- + +CALL FC "DatenOut" (SSDB:=101, SSDW:=0, PARA:=16#0202, SEARCHDATEN:=P#M220.0, RE_VAL:="MB199", OUTDATEN:=P#M220.0, Position:=Position) // DL Puffer ShopGroup einfahren | Eintrag lesen (ab 2.DW) + + A "M199.7" // Eintrag vorhanden + JC Puffer + + +--- NW 3: Leeres Puffer vorhanden? --- + +CALL FC "DatenOut" (SSDB:=100, SSDW:=0, PARA:=16#F100, SEARCHDATEN:=P#M220.0, RE_VAL:="MB199", OUTDATEN:=P#M220.0, Position:=Position) // DL Puffer leer | 1.Eintrag lesen + + A "M199.7" // Eintrag vorhanden + JC Puffer + + BEU + + +--- NW 4: Puffer aufbereiten --- +Puffer: L "MW220" + ITB + L 16#B000 + OW + T Puffer + + +--- NW 5: Ende --- + BE + diff --git a/=A01+UH07-KF00/Programmbausteine/Logistik/Simulation_Aus_VP_Trolley_starten.awl b/=A01+UH07-KF00/Programmbausteine/Logistik/Simulation_Aus_VP_Trolley_starten.awl new file mode 100644 index 0000000..dd22d5a --- /dev/null +++ b/=A01+UH07-KF00/Programmbausteine/Logistik/Simulation_Aus_VP_Trolley_starten.awl @@ -0,0 +1,212 @@ +=== FC 29: Simulation_Aus_VP_Trolley_starten [STL] === +INTERFACE: + Input: + Output: + InOut: + Temp: + VollPuffer : Int + VP_DB : Int + VP_DW : Int + AR1Zeiger : DWord // Statt AR1 (ging nur bis DB-Länge <= 8191 Bytes) + AR1Start : DInt // Startwert mit Offset 0 + PARA : Word + Position : Int + Schleife1 : Word // Loopzähler 1 + Constant: + Return: + Ret_Val : Void + +--- NW 1: Ausfahrt schon aktiv ? --- + A "DVollPufferStreckenA".VollPuffer_01.Status2.Alles_ausfahren_OUT + O "DVollPufferStreckenA".VollPuffer_02.Status2.Alles_ausfahren_OUT + O "DVollPufferStreckenA".VollPuffer_03.Status2.Alles_ausfahren_OUT + O "DVollPufferStreckenA".VollPuffer_04.Status2.Alles_ausfahren_OUT + O "DVollPufferStreckenA".VollPuffer_05.Status2.Alles_ausfahren_OUT + O "DVollPufferStreckenA".VollPuffer_06.Status2.Alles_ausfahren_OUT + O "DVollPufferStreckenA".VollPuffer_07.Status2.Alles_ausfahren_OUT + O "DVollPufferStreckenA".VollPuffer_08.Status2.Alles_ausfahren_OUT + O "DVollPufferStreckenA".VollPuffer_09.Status2.Alles_ausfahren_OUT + O "DVollPufferStreckenA".VollPuffer_10.Status2.Alles_ausfahren_OUT + O "DVollPufferStreckenA".VollPuffer_11.Status2.Alles_ausfahren_OUT + O "DVollPufferStreckenA".VollPuffer_12.Status2.Alles_ausfahren_OUT + O "DVollPufferStreckenA".VollPuffer_13.Status2.Alles_ausfahren_OUT + O "DVollPufferStreckenA".VollPuffer_14.Status2.Alles_ausfahren_OUT + O "DVollPufferStreckenA".VollPuffer_15.Status2.Alles_ausfahren_OUT + O "DVollPufferStreckenA".VollPuffer_16.Status2.Alles_ausfahren_OUT + O "DVollPufferStreckenA".VollPuffer_17.Status2.Alles_ausfahren_OUT + O "DVollPufferStreckenA".VollPuffer_18.Status2.Alles_ausfahren_OUT + O "DVollPufferStreckenA".VollPuffer_19.Status2.Alles_ausfahren_OUT + O "DVollPufferStreckenA".VollPuffer_20.Status2.Alles_ausfahren_OUT + O "DVollPufferStreckenA".VollPuffer_21.Status2.Alles_ausfahren_OUT + O "DVollPufferStreckenA".VollPuffer_22.Status2.Alles_ausfahren_OUT + O "DVollPufferStreckenA".VollPuffer_23.Status2.Alles_ausfahren_OUT + O "DVollPufferStreckenA".VollPuffer_24.Status2.Alles_ausfahren_OUT + O "DVollPufferStreckenA".VollPuffer_25.Status2.Alles_ausfahren_OUT + O "DVollPufferStreckenB".VollPuffer_26.Status2.Alles_ausfahren_OUT + O "DVollPufferStreckenB".VollPuffer_27.Status2.Alles_ausfahren_OUT + O "DVollPufferStreckenB".VollPuffer_28.Status2.Alles_ausfahren_OUT + O "DVollPufferStreckenB".VollPuffer_29.Status2.Alles_ausfahren_OUT + O "DVollPufferStreckenB".VollPuffer_30.Status2.Alles_ausfahren_OUT + O "DVollPufferStreckenB".VollPuffer_31.Status2.Alles_ausfahren_OUT + O "DVollPufferStreckenB".VollPuffer_32.Status2.Alles_ausfahren_OUT + O "DVollPufferStreckenB".VollPuffer_33.Status2.Alles_ausfahren_OUT + O "DVollPufferStreckenB".VollPuffer_34.Status2.Alles_ausfahren_OUT + O "DVollPufferStreckenB".VollPuffer_35.Status2.Alles_ausfahren_OUT + O "DVollPufferStreckenB".VollPuffer_36.Status2.Alles_ausfahren_OUT + O "DVollPufferStreckenB".VollPuffer_37.Status2.Alles_ausfahren_OUT + O "DVollPufferStreckenB".VollPuffer_38.Status2.Alles_ausfahren_OUT + O "DVollPufferStreckenB".VollPuffer_39.Status2.Alles_ausfahren_OUT + O "DVollPufferStreckenB".VollPuffer_40.Status2.Alles_ausfahren_OUT + O "DVollPufferStreckenB".VollPuffer_41.Status2.Alles_ausfahren_OUT + O "DVollPufferStreckenB".VollPuffer_42.Status2.Alles_ausfahren_OUT + O "DVollPufferStreckenB".VollPuffer_43.Status2.Alles_ausfahren_OUT + O "DVollPufferStreckenB".VollPuffer_44.Status2.Alles_ausfahren_OUT + O "DVollPufferStreckenB".VollPuffer_45.Status2.Alles_ausfahren_OUT + O "DVollPufferStreckenB".VollPuffer_46.Status2.Alles_ausfahren_OUT + O "DVollPufferStreckenB".VollPuffer_47.Status2.Alles_ausfahren_OUT + O "DVollPufferStreckenB".VollPuffer_48.Status2.Alles_ausfahren_OUT + O "DVollPufferStreckenB".VollPuffer_49.Status2.Alles_ausfahren_OUT + O "DVollPufferStreckenB".VollPuffer_50.Status2.Alles_ausfahren_OUT + = "DVPAuslagern".Simulation_Auslagern.Auslagern_aktiv + BEC + + L 0 + T "DVPAuslagern".Simulation_Auslagern.Vollpuffer_Aktiv + + +--- NW 2: Puffer aus Ausfahrliste holen --- + L "DVPAuslagern".Simulation_Auslagern.Vollpuffer_Check + T VollPuffer + L 0 + <>I + JC Check + + L 16#F100 // 1.Eintrag lesen !!! (da noch 2.Suche erforderlich!) + T PARA + + L "DLVollPuffer_ShopGroup_abrufen".Datenlistenkopf.AnzahlEintraege + L 0 + ==I + BEC + + CAC +L100: T Schleife1 + +// Einträge lesen: +CALL FC "DatenOut" (SSDB:=102, SSDW:=0, PARA:=PARA, SEARCHDATEN:=P#M200.0, RE_VAL:="MB219", OUTDATEN:=P#M220.0, Position:="DVPAuslagern".Simulation_Auslagern.Position) // Reihenfolge abrufen + + L 16#FF00 // Nächsten Eintrag lesen !!! (Vergleich ausserhalb s.u.) + T PARA + + JBI OkVP + + BEU + +OkVP: L "MW220" + T VollPuffer + T "DVPAuslagern".Simulation_Auslagern.Last_Check + + +--- NW 3: VP mit 0815-ShopGroup, 5 Daten und Sensor in Schleuse ? --- +Check: CALL FC "PufferZeiger_ermitteln" (Puffer_X:=VollPuffer, Puffer_DB:=VP_DB, Puffer_DW:=VP_DW, Error:="M199.0") + + A "M199.0" + BEC + +// Ziel-Pointer erzeugen: (PLC-Daten) + L VP_DW + ITD + T AR1Start // Startwert mit Offset 0 + +// Hat Lager Shopgroup 815 ?: + L AR1Start // Startwert mit Offset 0 + + DINT#88 // Offset für ShopGroup_Out + SLD 3 + T AR1Zeiger // Statt Dyn.Bereichsstop (ging nur bis DB-Länge <= 8191 Bytes) + OPN DB[VP_DB] // AMR-DB öffnen + + L DBD [AR1Zeiger] + L DINT#815 + <>D + JC next + +// Hat Lager unten 5 Trolleys ?: + L AR1Start // Startwert mit Offset 0 + + DINT#516 // Offset für Anzahl OUT-DL + SLD 3 + T AR1Zeiger // Statt Dyn.Bereichsstop (ging nur bis DB-Länge <= 8191 Bytes) + OPN DB[VP_DB] // AMR-DB öffnen + + L DBW [AR1Zeiger] + L 0 + ==I + JC next + +// Sensor BSchleuse_Out: + L AR1Start // Startwert mit Offset 0 + + DINT#2 // Offset für B-Schleuse out + SLD 3 + L 3 // Damit DBX_Bit 3 + OD + T AR1Zeiger // Statt Dyn.Bereichsstop (ging nur bis DB-Länge <= 8191 Bytes) + OPN DB[VP_DB] // AMR-DB öffnen + AN DBX [AR1Zeiger] // Trolley in Schleuse + JC next + +// Sensor BVollpuffer-Einfahrt: + L AR1Start // Startwert mit Offset 0 + + DINT#2 // BVollpuffer-Einfahrt + SLD 3 + L 1 // Damit DBX_Bit 1 + OD + T AR1Zeiger // Statt Dyn.Bereichsstop (ging nur bis DB-Länge <= 8191 Bytes) + OPN DB[VP_DB] // AMR-DB öffnen + AN DBX [AR1Zeiger] // Stau simuliert + JC next + + L VollPuffer + T "DVPAuslagern".Simulation_Auslagern.Vollpuffer_Check + + AN "100ms-Impuls" + BEC + + L "DVPAuslagern".Simulation_Auslagern.Wartezeit + + +1 + T "DVPAuslagern".Simulation_Auslagern.Wartezeit + + L 30 // 3s rum + I // Ja + = Err + BEC + + +--- NW 3: Relevante Daten übergeben --- + L "TrolleyDL_OutDaten".OUTDaten.EndZiel + T Check_EndZiel + + L "TrolleyDL_OutDaten".OUTDaten.ZwischenZiel + T Check_ZwischenZiel + + L "TrolleyDL_OutDaten".OUTDaten.ShopGroup + T Check_ShopGroup + + L "TrolleyDL_OutDaten".OUTDaten.Standort + T Check_Standort + + +--- NW 4: Ende --- + BE + diff --git a/=A01+UH07-KF00/Programmbausteine/Logistik/Trolley_DL_Neue_Pos.awl b/=A01+UH07-KF00/Programmbausteine/Logistik/Trolley_DL_Neue_Pos.awl new file mode 100644 index 0000000..b585a77 --- /dev/null +++ b/=A01+UH07-KF00/Programmbausteine/Logistik/Trolley_DL_Neue_Pos.awl @@ -0,0 +1,86 @@ +=== FC 1002: Trolley_DL_Neue_Pos [STL] === +INTERFACE: + Input: + Gesamt_Trolley_DL : Int + TrolleyID : DInt + Position : Word + ShopGroup : DInt + Output: + Err : Bool + InOut: + Temp: + Constant: + Return: + Ret_Val : Void + +--- NW 1: GesamtTrolly-DL angegeben? --- + L Gesamt_Trolley_DL + L 0 // sinnvolle Angabe? + <=I // Nein! + BEC // Abbruch + + +--- NW 2: Trolley auslesen --- + L TrolleyID + T "MD220" + +CALL FC "DatenOut" (SSDB:=Gesamt_Trolley_DL, SSDW:=0, PARA:=16#0000, SEARCHDATEN:=P#M220.0, RE_VAL:="MB199", OUTDATEN:=DB1011.DBX0.0, Position:="MW196") // Eintrag lesen + + L "MB199" + L 2#1111111 // Bit 7 ausblenden + AW + L 0 // Fehler vorhanden? + <>I // Ja + = Err + BEC + + +--- NW 3: Zeit übegeben --- + L TrolleyID + T "TrolleyDL_OutDaten".OUTDaten.TrolleyID + L "SGes".DATE_TIME.Jahr + T "TrolleyDL_OutDaten".OUTDaten.LastTime.Jahr + L "SGes".DATE_TIME.Monat + T "TrolleyDL_OutDaten".OUTDaten.LastTime.Monat + L "SGes".DATE_TIME.Tag + T "TrolleyDL_OutDaten".OUTDaten.LastTime.Tag + L "SGes".DATE_TIME.Stunde + T "TrolleyDL_OutDaten".OUTDaten.LastTime.Stunde + L "SGes".DATE_TIME.Minute + T "TrolleyDL_OutDaten".OUTDaten.LastTime.Minute + L "SGes".DATE_TIME.Sekunde + T "TrolleyDL_OutDaten".OUTDaten.LastTime.Sekunde + + +--- NW 4: Neue Position übergeben --- + L Position + L 0 + ==I + JC NoNewPos + + CAC + T "TrolleyDL_OutDaten".OUTDaten.Standort + +NoNewPos: NOP 0 + + +--- NW 5: ShopGroup übergeben ? (bei 0 nichts ändern!) --- + L ShopGroup + L DINT#0 + ==D + JC NoShopGroup + + CAC + T "TrolleyDL_OutDaten".OUTDaten.ShopGroup + +NoShopGroup: NOP 0 + + +--- NW 6: Daten schreiben --- +CALL FC "DatenIn" (SSDB:=Gesamt_Trolley_DL, SSDW:=0, INDATEN:=DB1011.DBX0.0, RE_VAL:="MB199") + + + +--- NW 7: Ende --- + BE + diff --git a/=A01+UH07-KF00/Programmbausteine/Logistik/Trolleydaten_löschen.awl b/=A01+UH07-KF00/Programmbausteine/Logistik/Trolleydaten_löschen.awl new file mode 100644 index 0000000..86635d2 --- /dev/null +++ b/=A01+UH07-KF00/Programmbausteine/Logistik/Trolleydaten_löschen.awl @@ -0,0 +1,34 @@ +=== FC 1: Trolleydaten_löschen [STL] === +INTERFACE: + Input: + Gesamt_Trolley_DL : Int + TrolleyID : DInt + Output: + InOut: + Temp: + Constant: + Return: + Ret_Val : Void + +--- NW 1: GesamtTrolly-DL angegeben? --- + L Gesamt_Trolley_DL + L 0 // sinnvolle Angabe? + <=I // Nein! + BEC // Abbruch + + +--- NW 2: Trolleydaten auslesen und verändern --- +// Trolleydaten manipulieren: + L TrolleyID + T "TrolleyDL_SearchDaten".SEARCHDaten.TrolleyID + +CALL FC "DatenOut" (SSDB:=Gesamt_Trolley_DL, SSDW:=0, PARA:=16#E100, SEARCHDATEN:=DB1012.DBX0.0, RE_VAL:="MB198", OUTDATEN:=DB1011.DBX0.0, Position:="MW200") // Eintrag lesen + austragen + + L "MB198" + + BEU + + +--- NW 3: Ende --- + BE + diff --git a/=A01+UH07-KF00/Programmbausteine/Logistik/Trolleydaten_neu_anlegen.awl b/=A01+UH07-KF00/Programmbausteine/Logistik/Trolleydaten_neu_anlegen.awl new file mode 100644 index 0000000..1372318 --- /dev/null +++ b/=A01+UH07-KF00/Programmbausteine/Logistik/Trolleydaten_neu_anlegen.awl @@ -0,0 +1,53 @@ +=== FC 3: Trolleydaten_neu_anlegen [STL] === +INTERFACE: + Input: + Gesamt_Trolley_DL : Int + TrolleyID : DInt + Endziel : Word + ShopGroup : DInt + Output: + InOut: + Temp: + Lager_DB : Int + Lager_DW : Int + SSDW : Int + Position : Int + Constant: + Return: + Ret_Val : Void + +--- NW 1: GesamtTrolly-DL angegeben? --- + L Gesamt_Trolley_DL + L 0 // sinnvolle Angabe? + <=I // Nein! + BEC // Abbruch + + +--- NW 2: Erst mal alte Daten löschen --- +CALL FC "Trolleydaten_löschen" (Gesamt_Trolley_DL:=Gesamt_Trolley_DL, TrolleyID:=TrolleyID) + + +--- NW 3: Trolleydaten speichern --- +// Trolleydaten manipulieren: + L TrolleyID + T "TrolleyDL_INDaten".INDaten.TrolleyID + + L Endziel // Eingabe über Beobachtungstabelle (Tests) + T "TrolleyDL_INDaten".INDaten.EndZiel + L ShopGroup + T "TrolleyDL_INDaten".INDaten.ShopGroup + +// Rest nullen + L 0 + T "TrolleyDL_INDaten".INDaten.ZwischenZiel + T "TrolleyDL_INDaten".INDaten.Standort + +// Daten in Datenbank schreiben: +CALL FC "DatenIn" (SSDB:=Gesamt_Trolley_DL, SSDW:=0, INDATEN:=DB1010.DBX0.0, RE_VAL:="MB198") + + L "TrolleyDL_INDaten".INDaten.TrolleyID + + +--- NW 4: Ende --- + BE + diff --git a/=A01+UH07-KF00/Programmbausteine/Logistik/Trolleydaten_ändern.awl b/=A01+UH07-KF00/Programmbausteine/Logistik/Trolleydaten_ändern.awl new file mode 100644 index 0000000..01d1e05 --- /dev/null +++ b/=A01+UH07-KF00/Programmbausteine/Logistik/Trolleydaten_ändern.awl @@ -0,0 +1,59 @@ +=== FC 2: Trolleydaten_ändern [STL] === +INTERFACE: + Input: + Gesamt_Trolley_DL : Int + TrolleyID : DInt + Endziel : Word + ShopGroup : DInt + Output: + InOut: + Temp: + Constant: + Return: + Ret_Val : Void + +--- NW 1: GesamtTrolly-DL angegeben? --- + L Gesamt_Trolley_DL + L 0 // sinnvolle Angabe? + <=I // Nein! + BEC // Abbruch + + +--- NW 2: Trolleydaten auslesen und verändern --- +// Trolleydaten manipulieren: + L TrolleyID + T "TrolleyDL_SearchDaten".SEARCHDaten.TrolleyID + +CALL FC "DatenOut" (SSDB:=Gesamt_Trolley_DL, SSDW:=0, PARA:=16#0000, SEARCHDATEN:=DB1012.DBX0.0, RE_VAL:="MB198", OUTDATEN:=DB1011.DBX0.0, Position:="MW200") // Eintrag lesen + + L "MB198" + L 2#10000000 // Datensatz vorhanden? + <>I // Nein! + BEC + + L "TrolleyDL_OutDaten".OUTDaten.TrolleyID // Zum Beobachten + + L Endziel + L -1 // Keine Änderung ? + ==I // Ja ! + JC Variante // Nichts überschreiben + + CAC + T "TrolleyDL_OutDaten".OUTDaten.EndZiel + +Variante: L ShopGroup + L DINT#-1 // Keine Änderung ? + ==D // Ja ! + JC Save // Nichts überschreiben + + CAC + T "TrolleyDL_OutDaten".OUTDaten.ShopGroup + +Save: CALL FC "DatenIn" (SSDB:=Gesamt_Trolley_DL, SSDW:=0, INDATEN:=DB1011.DBX0.0, RE_VAL:="MB198") + + BEU + + +--- NW 3: Ende --- + BE + diff --git a/=A01+UH07-KF00/Programmbausteine/Logistik/Wandel_FC_für_DB1000.awl b/=A01+UH07-KF00/Programmbausteine/Logistik/Wandel_FC_für_DB1000.awl new file mode 100644 index 0000000..5f0f258 --- /dev/null +++ b/=A01+UH07-KF00/Programmbausteine/Logistik/Wandel_FC_für_DB1000.awl @@ -0,0 +1,19 @@ +=== FC 1000: Wandel_FC_für_DB1000 [STL] === +INTERFACE: + Input: + Output: + InOut: + Temp: + Constant: + Return: + Ret_Val : Void + +--- NW 1: Wandeln der Daten --- + L "MD94" + + DINT#-6040000 // Funktioniert bis max: 6072767 (Wert + 32767) + T "MW92" // Funktioniert bis max: 32767, danach negativ + + +--- NW 2: Ende --- + BE + diff --git a/=A01+UH07-KF00/Programmbausteine/Module/BCD (4stellig)_to_INT.awl b/=A01+UH07-KF00/Programmbausteine/Module/BCD (4stellig)_to_INT.awl new file mode 100644 index 0000000..2eab780 --- /dev/null +++ b/=A01+UH07-KF00/Programmbausteine/Module/BCD (4stellig)_to_INT.awl @@ -0,0 +1,87 @@ +=== FC 78: BCD (4stellig)_to_INT [STL] === +INTERFACE: + Input: + BCD_Wert : Word + Output: + Int_Wert : Int + InOut: + Temp: + BCD_Vergleich : Word + Multiplikator : Int + Constant: + Return: + Ret_Val : Void + +--- NW 1: Rückmeldung --- + L 0 // erst mal köschen + T Int_Wert + + L 1 + T Multiplikator + +--- NW 2: BCD-Wert wandeln --- + L BCD_Wert + T BCD_Vergleich + L 16#000F + AW + L Multiplikator + *I + L Int_Wert + +I + T Int_Wert + + L Multiplikator + L 16 + *I + T Multiplikator + + L BCD_Vergleich + SRW 4 + T BCD_Vergleich + + L 16#000F + AW + L Multiplikator + *I + L Int_Wert + +I + T Int_Wert + + L Multiplikator + L 16 + *I + T Multiplikator + + L BCD_Vergleich + SRW 4 + T BCD_Vergleich + + L 16#000F + AW + L Multiplikator + *I + L Int_Wert + +I + T Int_Wert + + L Multiplikator + L 16 + *I + T Multiplikator + + L BCD_Vergleich + SRW 4 + T BCD_Vergleich + + L 16#000F + AW + L Multiplikator + *I + L Int_Wert + +I + T Int_Wert + + +--- NW 3: Ende --- + BE + diff --git a/=A01+UH07-KF00/Programmbausteine/Module/DBMOV.awl b/=A01+UH07-KF00/Programmbausteine/Module/DBMOV.awl new file mode 100644 index 0000000..9376ec2 --- /dev/null +++ b/=A01+UH07-KF00/Programmbausteine/Module/DBMOV.awl @@ -0,0 +1,50 @@ +=== FC 99: DBMOV [STL] === +INTERFACE: + Input: + QuellDB : Int // Quell-DB + QuellDW : Int // Quell-1.DW + ZielDB : Int // Ziel-DB + ZielDW : Int // Ziel-1.DW + Anzahl_DW : Int // Anzahl der zu kopierenden DWs + Output: + RE_VAL : Int // Rückmeldung + InOut: + Temp: + Quelle : Any // Zeiger, wo Rein-Daten sind + Ziel : Any // Zeiger, FIFO-Stelle + Constant: + Return: + Ret_Val : Void + +--- NW 1: --- +// Kennung + Datenbytes + L 16#1004 // Kennung 10 + Word=04 + T LW0 + T LW10 // Any-Kennung, Datentyp + L Anzahl_DW // Datenwords speichern + T LW2 + T LW12 // Wiederholungen + +// Quelle-Pointer erzeugen: + L QuellDB + T LW4 // DB_Nummer + L QuellDW // Adresse + SLD 3 + L 16#8400_0000 // Kennung: Daten + OD + T LD6 // Kennung, Adresse + +// Ziel-Pointer erzeugen: + L ZielDB + T LW14 // DB_Nummer + L ZielDW // Adresse + SLD 3 + L 16#8400_0000 // Kennung: Daten + OD + T LD16 // Kennung, Adresse + +CALL SYS "BLKMOV" (SRCBLK:=Quelle, RET_VAL:=RE_VAL, DSTBLK:=Ziel) // Datenliste-Daten speichern + + +--- NW 2: Ende --- + BE diff --git a/=A01+UH07-KF00/Programmbausteine/Module/DL_Einsprung.awl b/=A01+UH07-KF00/Programmbausteine/Module/DL_Einsprung.awl new file mode 100644 index 0000000..371618c --- /dev/null +++ b/=A01+UH07-KF00/Programmbausteine/Module/DL_Einsprung.awl @@ -0,0 +1,55 @@ +=== FC 1004: DL_Einsprung [STL] === +INTERFACE: + Input: + Bereich_DL : Int // Nur für Stammdaten =1! + ID : Int + Output: + Dyn.DB : Int + AR_Start : DInt + Error : Bool + InOut: + Temp: + Constant: + Return: + Ret_Val : Void + +--- NW 1: Inittialisierung --- + L 0 + T "Dyn.DB" + L DINT#0 + T AR_Start + SET + S Error + + +--- NW 2: ID suchen --- + L ID + T "MW200" + +CALL FC "DatenOut" (SSDB:=Bereich_DL, SSDW:=0, PARA:=16#0000, SEARCHDATEN:=P#M200.0, RE_VAL:="MB199", OUTDATEN:=P#M220.0, Position:="MW196") // Eintrag lesen + + L "MB199" + L 2#1111111 // Bit 7 ausblenden + AW + L 0 // Fehler vorhanden? + <>I // Ja + = Error + BEC + + +--- NW 3: Daten übergeben --- + L "MW224" + T "Dyn.DB" // Dyn.DB + L 0 // sinnvoller Wert ? + <=I // Nein ! + S Error + BEC + + L "MW226" + ITD + T AR_Start + + +--- NW 4: Ende --- + BE + diff --git a/=A01+UH07-KF00/Programmbausteine/Module/DatenFindOffsetSort.awl b/=A01+UH07-KF00/Programmbausteine/Module/DatenFindOffsetSort.awl new file mode 100644 index 0000000..7e51039 --- /dev/null +++ b/=A01+UH07-KF00/Programmbausteine/Module/DatenFindOffsetSort.awl @@ -0,0 +1,627 @@ +=== FC 91: DatenFindOffsetSort [STL] === +INTERFACE: + Input: + SSDB : Int // Datenlisten-DB + SSDW : Int // Datenlisten-1.DW + PARA : Word // Aufrufparameter (Auftrag / Anzahl Zusatzdaten) + SEARCHDATEN : Pointer // Such-Daten-Schnittstelle + Output: + RE_VAL : Byte // Rückmeldung + OUTDATEN : Pointer // OutDaten-Schnittstelle + Position : Int // Daten stehen an angegebener Position in Datenbank + InOut: + Temp: + Quelle : Any // Zeiger, wo Rein-Daten sind + Ziel : Any // Zeiger, FIFO-Stelle + Kopf : Byte // Datenliste-Kennnung (DA) + Datensatzlaenge : Byte // Datensatzlänge in Word (01 - F0) F0=128 + Listenlaenge : Int // Länge der Datenliste (maximale Anzahl der Datensätze) + Stammdaten : Int // Stammdatenlänge in Word (1 - 9) + Belegt06 : Int // reserviert von Datenliste + Belegt08 : Int // reserviert von Datenliste + Belegt10 : Int // reserviert von Datenliste + Belegt12 : Int // reserviert von Datenliste + AnzahlEintraege : Int // Anzahl der eingetragenen Datensätze + Reserve16 : Int // Reserve + Reserve18 : Int // Reserve + Para1 : Byte // 1.Aufrufparameter + Para2 : Byte // 2.Aufrufparameter + Suchzeiger : Int // Suchzeiger + DBDatenliste : Word // Datenlisten-DB + OffsetDaten_1 : Int // Stammdaten beginnen ab hier + SFC_RET_VAL : Int // Rückmeldung SFC-Aufruf + SFC_DB_LENGTH : Word // Rückmeldung SFC-Aufruf + Datenlisten_Ende : Word // Ende der Datenliste + AR2_Speicher : DWord // Adress-Register 2 zwischenspeichern + Schleife : Word // Loopzähler + DBSuchDaten : Word // Such-Daten-DB, falls angegeben + SuchDaten_Pointer : DWord // Such-Daten-Pointer: Kennung, Adresse + SuchDaten_Startpunkt : Word // Such-Daten-Startpunkt: Adresse + DBOutDaten : Word // Out-Daten-DB, falls angegeben + OutDaten_Pointer : DWord // Out-Daten-Pointer: Kennung, Adresse + OutDaten_Startpunkt : Word // Out-Daten-Startpunkt: Adresse + IndPointer : DWord // Zeiger für IndDB + Daten_1 : Word // 1.Datenwort der Indaten + Datenblock_inBytes : Word // Datenblocklänge in Bytes + Suchstelle : Word // Bei angegebenen Datensatz suchen + SFC_WRITE_PROT : Bool // Rückmeldung SFC-Aufruf + Weitersuchen : Bool // Weitersuchen ist aktiv + Offsetsuchen : Bool // Offsetsuchen ist aktiv + AR1Zeiger : DWord // Statt AR1 (ging nur bis DB-Länge <= 8191 Bytes) + tRE_VAL : Byte // Rückmeldung + Constant: + Return: + Ret_Val : Void + +--- NW 1: Schnittstellen-DB sinnvoll ? --- + TAR2 + T AR2_Speicher // AR2 zwischenspeichern + + L SSDB + T DBDatenliste + +// CALL TEST_DB +// DB_NUMBER :=#DBDatenliste +// RET_VAL :=#SFC_RET_VAL +// DB_LENGTH :=#SFC_DB_LENGTH +// WRITE_PROT :=#SFC_WRITE_PROT + +CALL FC "TEST_DB_TO_ATTR_DB" (DB_Number:=DBDatenliste, RetVal:=SFC_RET_VAL, DB_Length:=SFC_DB_LENGTH, Write_Prot:=SFC_WRITE_PROT) + + L SFC_RET_VAL + L 2#0000_0000_0000_0000 + <>I + O SFC_WRITE_PROT // schreibgeschützt + JC Err0 // kein Datenlisten-Bereich + + +--- NW 2: Quelle-Pointer erzeugen: --- + L 16#1004 // Kennung 10 + Word=04 + T LW0 // Any-Kennung, Datentyp + L 16#000A // 10 Dw´s holen + T LW2 // Wiederholungen + L SSDB + T LW4 // DB_Nummer + L SSDW // Adresse + SLD 3 + L 16#8400_0000 // Kennung: Daten + OD + T LD6 // Kennung, Adresse + +CALL SYS "BLKMOV" (SRCBLK:=Quelle, RET_VAL:=SFC_RET_VAL, DSTBLK:=P#L20.0 WORD 10) // 1.-10.DW Datenliste holen + + L SFC_RET_VAL + L 2#0000_0000_0000_0000 + <>I + JC Err1 + + +--- NW 3: Zeigerüberprüfung --- + L Kopf // Datenliste-Kopf + L 16#DB // = Sort-Datenlistekennung ? + <>I // Nein ! + JC Err0 // kein Datenlistebereich + + L 1 + L Datensatzlaenge // Datenblocklänge + >I + JC Err0 // kein Datenlistebereich + + L 128 + >I + JC Err0 // kein Datenlistebereich + + L 1 + L Listenlaenge // Max.Anzahl von Datenblöcken + >I + JC Err0 // kein Datenlistebereich + + L 1 + L Stammdaten // Anzahl der Stammdaten + >I + JC Err0 // kein Datenlistebereich + + L 9 + >I + JC Err0 // kein Datenlistebereich + + L Stammdaten // Anzahl der Stammdaten + L Datensatzlaenge // Datenblocklänge + >I + JC Err0 // kein Datenlistebereich + + L Listenlaenge // Länge der Datenliste + L Datensatzlaenge // Datenblocklänge + *I + L 2 // DB byteorientiert + *I + + 20 // Speichern ab 10.DW + L SSDW + +I + T Datenlisten_Ende + ITD + SLD 3 + T AR1Zeiger // /Statt AR1 (ging nur bis DB-Länge <= 8191 Bytes) + + OPN DB[DBDatenliste] + + L Datenlisten_Ende + L SFC_DB_LENGTH + >I // Datenlisten-DB ist zu kurz! + JC Err0 // kein Datenlisten-Bereich + + L DBW [AR1Zeiger] + L 16#DAEE // Datenliste-Endekennung ? + <>I // Nein ! + A( + CAC + L 16#DBEE // Sort-Datenliste-Endekennung ? + <>I // Nein ! + ) + JC Err0 // kein Datenlisten-Bereich + + L Datensatzlaenge // Datenblocklänge + L 2 + *I + T Datenblock_inBytes // Datenblocklänge in Bytes + + +--- NW 4: Auftrag kontrollieren --- + SET + R Weitersuchen // Weitersuchen ist aktiv + R Offsetsuchen // Offsetsuchen ist aktiv + L 0 // Vorerst kein Offset + T OffsetDaten_1 + + L PARA + T LW40 // Aufrufparameter zwischenspeichern + + L 16#00 // XX = 00 ? + L Para1 + ==I // Ja! + JC W401 + + L 16#E1 // XX = E1 ? + ==I // Ja! + JC Err3 // Falscher Aufrufparameter + + L 16#F1 // XX = F1 ? + L Para1 + <>I // Nein ! + JC W400 + + L Para2 + L 16#00 + <>I + JC Err3 // Falscher Aufrufparameter + + SET + S Weitersuchen + + L SSDW + + 20 + T Suchzeiger + + JU Nw08 // OutDaten ok ? + +W400: L 16#FF // XX = FF ? + <>I // Nein ! + JC W403 + + L Para2 + L 16#00 + <>I + JC Err3 // Falscher Aufrufparameter + + SET + S Weitersuchen + + L Suchzeiger // Alter Suchzeiger + L Datenblock_inBytes // Datenblocklänge in bytes + +I // Nächsten Datensatz suchen + T Suchzeiger // Neuer Suchzeiger + + L Datenblock_inBytes // Datenblocklänge in bytes + L Listenlaenge // Alle möglichen Einträge + *I // Gesamtlänge + L SSDW // Startpunkt + +I + + 20 // Offset 1.Daten + L Suchzeiger // Schreibzeiger + >I // Noch nicht am Ende ! + JC Nw08 // OutDaten ok ? + + JU Err2 // Listenende erreicht + +W403: L 16#02 // XX < 02 ? + L Para1 + >I // Ja! + JC Err3 // Falscher Aufrufparameter + + L 16#80 // XX > 80 ? + >I // Ja! + JC Err3 // Falscher Aufrufparameter + + CAC + L Datensatzlaenge // XX > Datensatzlänge + >I // Ja! + JC Err3 // Falscher Aufrufparameter + + CAC + + -1 // Angegebener Offset -1 + L 2 // DB byteorientiert + *I + T OffsetDaten_1 // Richtiger Offset der 1.Stammdaten + + L 0 + T Suchzeiger // Suche ab Anfang + + SET + S Offsetsuchen + +W401: L 16#00 // =0 ? + L Para2 // 2.Aufrufparameter + ==I // Ja ! + JC W402 + + T Stammdaten // Anzahl der Stammdaten + L Datensatzlaenge // Datenblocklänge + >I + JC Err3 // Falscher Aufrufparameter + + L 1 + L Stammdaten // Anzahl der Stammdaten + >I + JC Err3 // Falscher Aufrufparameter + + L 9 + >I + JC Err3 // Falscher Aufrufparameter + +W402: AN Offsetsuchen + JC Nw05 + + L Para1 // Offset + + -1 + L Stammdaten + +I // Letzte Stammdaten zu groß ? + L Datensatzlaenge + >I // Ja! + JC Err3 // Falscher Aufrufparameter + + +--- NW 5: Such-DATEN-Pointer übernehmen: --- +Nw05: L AnzahlEintraege // Anzahl der eingetragenen Datensätze + L 0 // Eintrag vorhanden ? + ==I // Nein ! + JC Err6 // Datensatz ist nicht vorhanden + + L 0 + T Suchzeiger // Suchzeiger + + L P# + LAR2 + + L NoneW [AR2,] + T DBSuchDaten // Suchdaten-DB + L NoneD [AR2,] // Kennung, Adresse + T SuchDaten_Pointer + + L DBSuchDaten // Suchdaten-DB + L 0 // Angegeben ? + ==I // Nein + JC W501 + +// CALL TEST_DB +// DB_NUMBER :=#DBSuchDaten +// RET_VAL :=#SFC_RET_VAL +// DB_LENGTH :=#SFC_DB_LENGTH +// WRITE_PROT :=#SFC_WRITE_PROT + +CALL FC "TEST_DB_TO_ATTR_DB" (DB_Number:=DBSuchDaten, RetVal:=SFC_RET_VAL, DB_Length:=SFC_DB_LENGTH, Write_Prot:=SFC_WRITE_PROT) + + + L SFC_RET_VAL + L 2#0000_0000_0000_0000 // Fehler vorhanden ? + <>I // Ja ! + JC Err4 // Undefinierte Stammdaten + + L NoneD [AR2,] // Kennung, Adresse + L 16#00FF_FFFF // Ohne Kennung + AW + SRW 3 // Ohne Bit + T SuchDaten_Startpunkt + + L Datensatzlaenge // Datenblocklänge + L 2 // DB byteorientiert + *I + L SuchDaten_Startpunkt + +I + L SFC_DB_LENGTH + >I // Suchdaten-DB ist zu kurz + JC Err4 // Undefinierte Stammdaten + +W501: L SuchDaten_Pointer + LAR2 + + L DBSuchDaten // Suchdaten-DB + L 0 // Angegeben ? + ==I // Nein + JC W502 + + OPN DB[DBSuchDaten] + +W502: L NoneW [AR2,] // Suchdaten überprüfen + T Daten_1 // 1.Suchdaten speichern + + L Stammdaten +L500: T Schleife + + L DBSuchDaten // Suchdaten-DB + L 0 // Angegeben ? + ==I // Nein + JC W503 + + OPN DB[DBSuchDaten] + +W503: L NoneW [AR2,] // Suchdaten überprüfen + L 0 // Etwas angegeben ? + <>I // Ja ! + JC Nw07 // Weiter + + ADDAR2 P#2.0 + + L Schleife + LOOP L500 + + JU Err4 // Undefinierte Stammdaten + + +--- NW 6: Kontrolle auf gleiche Stammdaten --- +Nw07: L Suchzeiger // Suchzeiger + L 0 // Angegeben ? + ==I // Nein ! + JC W700 // Suche bei 1.Datensatz beginnen + + L Suchzeiger // Suchzeiger + + -20 // Zeiger 1.Daten + L Datenblock_inBytes // Datenblocklänge in Bytes + /I // Ermittlung der wievielten Daten -1 + SRD 16 // Rest ermitteln + L 0 // = 0 ? + <>I // Suchzeiger nicht im Raster ! + JC W700 // Suche bei 1.Datensatz beginnen + + L 0 // Bei angegebener Stelle suchen + T Suchstelle // Such bei X-ten Datensatz + + JU W701 + +W700: L 1 // Suche bei 1.Datensatz beginnen + T Suchstelle // Such bei X-ten Datensatz + L SSDW + + 20 // Offset für 1.Daten + T Suchzeiger // Suchzeiger + +W701: L Suchzeiger // Suchzeiger + L OffsetDaten_1 // Richtiger Offset der 1.Stammdaten + +I + ITD + SLD 3 + T AR1Zeiger // /Statt AR1 (ging nur bis DB-Länge <= 8191 Bytes) + + L SuchDaten_Pointer + LAR2 + + L Stammdaten // Anzahl der Stammdaten +L700: T Schleife + + L DBSuchDaten // Suchdaten-DB + L 0 // Angegeben ? + ==I // Nein + JC W702 + + OPN DB[DBSuchDaten] + +W702: L NoneW [AR2,] // Suchdaten überprüfen mit + OPN DB[DBDatenliste] + L DBW [AR1Zeiger] // Datenliste-Daten lesen + <>I // nicht identisch ! + JC W703 + + L AR1Zeiger + SRD 3 + L 2 + +D + SLD 3 + T AR1Zeiger + + ADDAR2 P#2.0 + + L Schleife + LOOP L700 + + L 2#0000_0000_1000_0000 // Daten sind vorhanden + T tRE_VAL // Ok-Status + + JU Nw08 // Datensatz ist in Liste enthalten + +W703: L 0 // Suche bei 1.Datensatz begonnen + L Suchstelle // Such bei X-ten Datensatz + ==I // Nein ! + JC W700 + + L Suchstelle // Such bei X-ten Datensatz + + 1 + T Suchstelle // Such bei X-ten Datensatz + L AnzahlEintraege // Anzahl der eingetragenen Datensätze + <=I // Alle Datensätze sind durchsucht + JC W705 // Nein ! + + JU Err6 // Datensatz ist nicht vorhanden + +W705: L Datenblock_inBytes // Datenblocklänge in bytes + L Suchzeiger // Suchzeiger + +I + T Suchzeiger // Suchzeiger + JU W701 + + +--- NW 7: Out-DATEN-Pointer übernehmen: --- +Nw08: L P# + LAR2 + + L NoneW [AR2,] + T DBOutDaten // Outdaten-DB + L NoneD [AR2,] // Kennung, Adresse + T OutDaten_Pointer + + L DBOutDaten // Outdaten-DB + L 0 // Angegeben ? + ==I // Nein + JC Nw09 + +// CALL TEST_DB +// DB_NUMBER :=#DBOutDaten +// RET_VAL :=#SFC_RET_VAL +// DB_LENGTH :=#SFC_DB_LENGTH +// WRITE_PROT :=#SFC_WRITE_PROT + +CALL FC "TEST_DB_TO_ATTR_DB" (DB_Number:=DBOutDaten, RetVal:=SFC_RET_VAL, DB_Length:=SFC_DB_LENGTH, Write_Prot:=SFC_WRITE_PROT) + + + L SFC_RET_VAL + L 2#0000_0000_0000_0000 // Fehler vorhanden ? + <>I // Ja ! + JC Err5 // Undefinierte Outdaten + + L NoneD [AR2,] // Kennung, Adresse + L 16#00FF_FFFF // Ohne Kennung + AW + SRW 3 // Ohne Bit + T OutDaten_Startpunkt + + L OutDaten_Startpunkt + L SFC_DB_LENGTH + >I // Outdaten-DB ist zu kurz + JC Err5 // Undefinierte Outdaten + + +--- NW 8: Quelle-Pointer erzeugen: --- +Nw09: L 16#1004 // Kennung 10 + Word=04 + T LW0 + T LW10 // Any-Kennung, Datentyp + L Datensatzlaenge // Datenwords speichern + T LW2 + T LW12 // Wiederholungen + +// DATEN-Pointer übernehmen: + L SSDB + T LW4 // DB_Nummer + L Suchzeiger // Adresse + SLD 3 + L 16#8400_0000 // Kennung: Daten + OD + T LD6 // Kennung, Adresse + +// Ziel-Pointer erzeugen: +// Kennung + Datenbytes s.o. + + L DBOutDaten + T LW14 // DB_Nummer + L OutDaten_Pointer + T LD16 // Kennung, Adresse + +CALL SYS "BLKMOV" (SRCBLK:=Quelle, RET_VAL:=SFC_RET_VAL, DSTBLK:=Ziel) // Datenliste-Daten speichern + + L SFC_RET_VAL + L 2#0000_0000_0000_0000 + <>I + JC Err1 + + L SSDW + + 12 // im 12.DW speichern + ITD + SLD 3 + T AR1Zeiger // /Statt AR1 (ging nur bis DB-Länge <= 8191 Bytes) + + L Suchzeiger // Suchzeiger + OPN DB[DBDatenliste] + T DBW [AR1Zeiger] // Speicherung letzter Zugriff + + L Suchzeiger // Suchzeiger + + -20 // Offeset 1.DS + L Datenblock_inBytes // Datenblocklänge in Bytes + /I + + 1 // Position errechnen + T Position // Daten stehen an angegebener Position in Datenbank + + +--- NW 9: Weitersuchen aktiv ? Datensatz vorhanden oder 0 ? --- + AN Weitersuchen + JC Ende + + L OutDaten_Pointer + LAR2 + + L Datensatzlaenge +L110: T Schleife + + L DBOutDaten // Outdaten-DB + L 0 // Angegeben ? + ==I // Nein + JC W111 + + OPN DB[DBOutDaten] + +W111: L NoneW [AR2,] // Outdaten überprüfen + L 0 // Etwas angegeben ? + <>I // Ja ! + JC W112 // Ok + + ADDAR2 P#2.0 + + L Schleife + LOOP L110 + + L 2#0000_0000_0100_0000 // Daten sind nicht vorhanden + T tRE_VAL // Ok-Status + JU Ende + +W112: L 2#0000_0000_1000_0000 // Daten sind vorhanden + T tRE_VAL // Ok-Status + JU Ende + + +--- NW 10: Fehlerausgabe / RET_VAL --- +Ende: SET // VKE = 1 ohne Fehler !!! + L tRE_VAL // Ok-Status + JU Ok +Err0: L 2#0000_0000_0000_0001 // Kein Datenlistebereich + JU Err +Err1: L 2#0000_0000_0000_0010 // SFC20-Aufruf mit Fehler + JU Err +Err2: L 2#0000_0000_0000_0100 // Listenende ist erreicht + JU Err +Err3: L 2#0000_0000_0000_1000 // Falscher Parameter bei Aufruf + JU Err +Err4: L 2#0000_0000_0001_0000 // Undefinierte Suchdaten + JU Err +Err5: L 2#0000_0000_0010_0000 // Undefinierte OUTDaten + JU Err +Err6: L 2#0000_0000_0100_0000 // Datensatz nicht vorhanden + +Err: CLR // VKE = 0 bei Fehler !!! + +Ok: T tRE_VAL + SAVE // VKE in BIE-Bit speichern + + L AR2_Speicher // AR2 zurückspeichern + LAR2 + + +--- NW 11: --- + L tRE_VAL + T RE_VAL + + diff --git a/=A01+UH07-KF00/Programmbausteine/Module/DatenIn.awl b/=A01+UH07-KF00/Programmbausteine/Module/DatenIn.awl new file mode 100644 index 0000000..e1268c1 --- /dev/null +++ b/=A01+UH07-KF00/Programmbausteine/Module/DatenIn.awl @@ -0,0 +1,552 @@ +=== FC 85: DatenIn [STL] === +INTERFACE: + Input: + SSDB : Int // Datenlisten-DB + SSDW : Int // Datenlisten-1.DW + INDATEN : Pointer // InDaten-Schnittstelle + Output: + RE_VAL : Byte + InOut: + Temp: + Quelle : Any // Zeiger, wo Rein-Daten sind + Ziel : Any // Zeiger, FIFO-Stelle + Kopf : Byte // Datenliste-Kennnung (DA) + Datensatzlaenge : Byte // Datensatzlänge in Word (01 - F0) F0=128 + Listenlaenge : Int // Länge der Datenliste (maximale Anzahl der Datensätze) + Stammdaten : Int // Stammdatenlänge in Word (1 - 9) + IndDB : Word // Indizierter DB (nur bei Stammdaten = 1 erlaubt !!!) + IndDB_Laenge : Int // Länge des indizierten DB in Einträge (nur bei Stammdaten = 1 erlaubt !!!) + IndDaten_FC : Int // FC zum Wandeln der indizierte Daten (nur bei Stammdaten = 1 erlaubt !!!) + Schreibzeiger : Int // Speicherung des letzten Zugriffs / Schreibzeiger + Belegt14 : Int // reserviert von Sort-Datenliste + AnzahlEintraege : Int // Anzahl der eingetragenen Datensätze (nicht bei ind.Zugriff!) + Reserve18 : Int // Reserve + DBDatenliste : Word // Datenlisten-DB + SFC_RET_VAL : Int // Rückmeldung SFC-Aufruf + SFC_DB_LENGTH : Word // Rückmeldung SFC-Aufruf + Datenlisten_Ende : Word // Ende der Datenliste + AR2_Speicher : DWord // Adress-Register 2 zwischenspeichern + Schleife : Word // Loopzähler + DBInDaten : Word // Indaten-DB, falls angegeben + InDaten_Pointer : DWord // In-Daten-Pointer: Kennung, Adresse + InDaten_Startpunkt : Word // In-Daten-Startpunkt: Adresse + IndPointer : DWord // Zeiger für IndDB + Daten_1 : Word // 1.Datenwort der Indaten + Daten_2 : DWord // 1+2.Datenwort der Indaten (falls ind.Suchen mit Stammdaten 2) + LeerZeiger : Word // Zeiger für Leerzelle + Datenblock_inBytes : Word // Datenblocklänge in Bytes + Suchstelle : Word // Bei angegebenen Datensatz suchen + SFC_WRITE_PROT : Bool // Rückmeldung SFC-Aufruf + Indok : Bool // Indizierung möglich + IndZeiger_ok : Bool // Indizier-Zeiger angegeben + Sortliste : Bool // Sortliste wird durchsucht + tRE_VAL : Byte // Rückmeldung + AR1Zeiger : DWord // Statt AR1 (ging nur bis DB-Länge <= 8191 Bytes) + DB_Länge : Int + Wandel_FC : Word // Wandel-FC + Constant: + Return: + Ret_Val : Void + +--- NW 1: Schnittstellen-DB sinnvoll ? --- + TAR2 + T AR2_Speicher // AR2 zwischenspeichern + + L SSDB + T DBDatenliste + +CALL FC "TEST_DB_TO_ATTR_DB" (DB_Number:=DBDatenliste, RetVal:=SFC_RET_VAL, DB_Length:=SFC_DB_LENGTH, Write_Prot:=SFC_WRITE_PROT) + +CALL FC "BCD (4stellig)_to_INT" (BCD_Wert:=SFC_DB_LENGTH, Int_Wert:="DB_Länge") + + L SFC_RET_VAL + L 2#0000_0000_0000_0000 + <>I + O SFC_WRITE_PROT + JC Err0 // kein Datenlisten-Bereich + + +--- NW 2: Quelle-Pointer erzeugen: --- + L 16#1004 // Kennung 10 + Word=04 + T LW0 // Any-Kennung, Datentyp + L 16#000A // 10 Dw´s holen + T LW2 // Wiederholungen + L SSDB + T LW4 // DB_Nummer + L SSDW // Adresse + SLD 3 + L 16#8400_0000 // Kennung: Daten + OD + T LD6 // Kennung, Adresse + +CALL SYS "BLKMOV" (SRCBLK:=Quelle, RET_VAL:=SFC_RET_VAL, DSTBLK:=P#L20.0 WORD 10) // 1.-10.DW Datenliste holen + + L SFC_RET_VAL + L 2#0000_0000_0000_0000 + <>I + JC Err1 + + +--- NW 3: Zeigerüberprüfung --- + L Kopf // Datenliste-Kopf + L 16#DB // = Sort-Datenlistekennung ? + ==I // Ja ! + = Sortliste // Sortliste wird durchsucht + JC w030 + + CAC + L 16#DA // = Datenlistekennung ? + <>I // Nein ! + JC Err0 // kein Datenlistebereich + +w030: L 1 + L Datensatzlaenge // Datenblocklänge + >I + JC Err0 // kein Datenlistebereich + + L 128 + >I + JC Err0 // kein Datenlistebereich + + L 1 + L Listenlaenge // Max.Anzahl von Datenblöcken + >I + JC Err0 // kein Datenlistebereich + + L 1 + L Stammdaten // Anzahl der Stammdaten + >I + JC Err0 // kein Datenlistebereich + + L 9 + >I + JC Err0 // kein Datenlistebereich + + L Stammdaten // Anzahl der Stammdaten + L Datensatzlaenge // Datenblocklänge + >I + JC Err0 // kein Datenlistebereich + + L Listenlaenge // Länge der Datenliste + L Datensatzlaenge // Datenblocklänge + *I + L 2 // DB byteorientiert + *I + + 20 // Speichern ab 10.DW + L SSDW + +I + T Datenlisten_Ende + ITD + SLD 3 + T AR1Zeiger // /Statt AR1 (ging nur bis DB-Länge <= 8191 Bytes) + + OPN DB[DBDatenliste] + + L Datenlisten_Ende + L "DB_Länge" + >I // Datenlisten-DB ist zu kurz! + JC Err0 // kein Datenlisten-Bereich + + L DBW [AR1Zeiger] + L 16#DAEE // Datenliste-Endekennung ? + <>I // Nein ! + A( + CAC + L 16#DBEE // Sort-Datenliste-Endekennung ? + <>I // Nein ! + ) + JC Err0 // kein Datenlisten-Bereich + + L Datensatzlaenge // Datenblocklänge + L 2 + *I + T Datenblock_inBytes // Datenblocklänge in Bytes + + +--- NW 4: In-DATEN-Pointer übernehmen: --- + L P# + LAR2 + + L NoneW [AR2,] + T DBInDaten // Indaten-DB + + L DBInDaten // Indaten-DB + L 0 // Angegeben ? + ==I // Nein + JC W401 + +CALL FC "TEST_DB_TO_ATTR_DB" (DB_Number:=DBInDaten, RetVal:=SFC_RET_VAL, DB_Length:=SFC_DB_LENGTH, Write_Prot:=SFC_WRITE_PROT) + +CALL FC "BCD (4stellig)_to_INT" (BCD_Wert:=SFC_DB_LENGTH, Int_Wert:="DB_Länge") + + L SFC_RET_VAL + L 2#0000_0000_0000_0000 // Fehler vorhanden ? + <>I // Ja ! + JC Err4 // Undefinierte Indaten + + L NoneD [AR2,] // Kennung, Adresse + L 16#00FF_FFFF // Ohne Kennung + AW + SRW 3 // Ohne Bit + T InDaten_Startpunkt + + L Datensatzlaenge // Datenblocklänge + L 2 // DB byteorientiert + *I + L InDaten_Startpunkt + +I + L "DB_Länge" + >I // Indaten-DB ist zu kurz + JC Err4 // Undefinierte Indaten + +W401: L NoneD [AR2,] // Kennung, Adresse + T InDaten_Pointer + LAR2 + + L DBInDaten // Indaten-DB + L 0 // Angegeben ? + ==I // Nein + JC W402 + + OPN DB[DBInDaten] + +W402: L NoneW [AR2,] // Indaten überprüfen + T Daten_1 // 1.Indaten speichern + L NoneD [AR2,] // Suchdaten überprüfen + T Daten_2 // 1.Suchdaten speichern + + L Stammdaten +L400: T Schleife + + L DBInDaten // Indaten-DB + L 0 // Angegeben ? + ==I // Nein + JC W403 + + OPN DB[DBInDaten] + +W403: L NoneW [AR2,] // Indaten überprüfen + L 0 // Etwas angegeben ? + <>I // Ja ! + JC Nw05 // Weiter + + ADDAR2 P#2.0 + + L Schleife + LOOP L400 + + JU Err4 // Undefinierte Indaten + + +--- NW 5: Indiziert speichern ? --- +Nw05: SET + R Indok // Indizierung möglich + R IndZeiger_ok // Indizier-Zeiger angegeben + + L IndDB // Indizierter DB + L 0 // Angegeben ? + ==I // Nein ! + O Sortliste // Sortliste wird durchsucht + JC Nw06 + +CALL FC "TEST_DB_TO_ATTR_DB" (DB_Number:=IndDB, RetVal:=SFC_RET_VAL, DB_Length:=SFC_DB_LENGTH, Write_Prot:=SFC_WRITE_PROT) + +CALL FC "BCD (4stellig)_to_INT" (BCD_Wert:=SFC_DB_LENGTH, Int_Wert:="DB_Länge") + + L SFC_RET_VAL + L 2#0000_0000_0000_0000 + <>I + O SFC_WRITE_PROT + JC Nw06 // kein Indizier-DB vorhanden + + + L IndDB_Laenge // Länge des Indizierten DB überschritten ? + L 2 // DB byteorientiert + *I + L "DB_Länge" + >I // Indizier-DB ist zu kurz + JC Nw06 // Zeiger ausserhalb Ind.DB + + L Stammdaten // Stammdaten + L 3 // zu viele Stammdaten ? + >=I // Ja ! + JC Nw06 // ohne Indizierung weiter + + L IndDaten_FC // Offset zum Abziehen + T Wandel_FC + L 0 // Parameter vorhanden ? + <=I // Nein + JC NoFC // Bei diesem Schritt weiter + + L Daten_1 // Stammdaten (1.DW) + T "MW90" // übergeben + L Daten_2 // Stammdaten (2.DW) + T "MD94" // übergeben + + UC DB[Wandel_FC] // Beeinflussung der Weiterfahrt + + L "MW92" // Rückwert von FC + + JU Ret + +NoFC: L Daten_1 // Stammdaten +Ret: T IndPointer // Stelle, wo Zeiger hinterlegt ist + L 0 + I // Schreibzeiger nicht im Raster ! + JC W600 // Suche bei 1.Datensatz beginnen + + L 0 // Bei angegebener Stelle suchen + T Suchstelle // Such bei X-ten Datensatz + + JU W601 + +W600: L 1 // Suche bei 1.Datensatz beginnen + T Suchstelle // Such bei X-ten Datensatz + SET + R IndZeiger_ok // Indizier-Zeiger angegeben + L SSDW + + 20 // Offset für 1.Daten + T Schreibzeiger // Schreibzeiger + +W601: L Schreibzeiger // Schreibzeiger + ITD + SLD 3 + T AR1Zeiger // /Statt AR1 (ging nur bis DB-Länge <= 8191 Bytes) + + L InDaten_Pointer + LAR2 + + L Stammdaten // Anzahl der Stammdaten +L600: T Schleife + + L DBInDaten // Indaten-DB + L 0 // Angegeben ? + ==I // Nein + JC W602 + + OPN DB[DBInDaten] + +W602: L NoneW [AR2,] // Indaten überprüfen mit + OPN DB[DBDatenliste] + L DBW [AR1Zeiger] // Datenliste-Daten lesen + <>I // nicht identisch ! + JC W603 + + L AR1Zeiger + SRD 3 + L DINT#2 + +D + SLD 3 + T AR1Zeiger + + ADDAR2 P#2.0 + + L Schleife + LOOP L600 + + L 2#0000_0000_1100_0000 // Daten werden gespeichert + überschrieben + T tRE_VAL // Ok-Status + + JU Nw07 // Datensatz ist in Liste enthalten + +W603: L 0 // Suche bei 1.Datensatz begonnen + L Suchstelle // Such bei X-ten Datensatz + ==I // Nein ! + JC W600 + + L LeerZeiger // Zeiger Leerzelle + L 0 // Gespeichert ? + <>I // Ja ! + JC W604 + + L Schreibzeiger // Schreibzeiger + ITD + SLD 3 + T AR1Zeiger // /Statt AR1 (ging nur bis DB-Länge <= 8191 Bytes) + + L Datensatzlaenge +L601: T Schleife + L DBW [AR1Zeiger] // Daten lesen + L 0 // Leerzelle ? + <>I // Nein ! + JC W604 + + L AR1Zeiger + SRD 3 + L DINT#2 + +D + SLD 3 + T AR1Zeiger + + L Schleife + LOOP L601 + + L Schreibzeiger // Schreibzeiger + T LeerZeiger // Zeiger Leerzelle + +W604: L Suchstelle // Such bei X-ten Datensatz + + 1 + T Suchstelle // Such bei X-ten Datensatz + L Listenlaenge // Anzahl aller Daten in Datenliste + <=I // Alle Datensätze sind durchsucht + JC W605 // Nein ! + + L 0 // Gefunden ? + L LeerZeiger // Zeiger Leerzelle + ==I // Nein ! + JC Err2 // Datenliste ist voll + + T Schreibzeiger // Schreibzeiger + L 2#0000_0000_1000_0000 // Daten werden gespeichert + T tRE_VAL // Ok-Status + + JU Nw07 + +W605: L Datenblock_inBytes // Datenblocklänge in bytes + L Schreibzeiger // Schreibzeiger + +I + T Schreibzeiger // Schreibzeiger + JU W601 + + +--- NW 7: Quelle-Pointer erzeugen: --- +Nw07: L 16#1004 // Kennung 10 + Word=04 + T LW0 + T LW10 // Any-Kennung, Datentyp + L Datensatzlaenge // Datenwords speichern + T LW2 + T LW12 // Wiederholungen + +// DATEN-Pointer übernehmen: + L DBInDaten + T LW4 // DB_Nummer + L InDaten_Pointer + T LD6 // Kennung, Adresse + +// Ziel-Pointer erzeugen: +// Kennung + Datenbytes s.o. + + L SSDB + T LW14 // DB_Nummer + L Schreibzeiger // Adresse + SLD 3 + L 16#8400_0000 // Kennung: Daten + OD + T LD16 // Kennung, Adresse + +CALL SYS "BLKMOV" (SRCBLK:=Quelle, RET_VAL:=SFC_RET_VAL, DSTBLK:=Ziel) // Datenliste-Daten speichern + + L SFC_RET_VAL + L 2#0000_0000_0000_0000 + <>I + JC Err1 + + A Sortliste // Sortliste wird durchsucht + JC Nw8 + + L SSDW + + 12 + ITD + SLD 3 + T AR1Zeiger // /Statt AR1 (ging nur bis DB-Länge <= 8191 Bytes) + + L Schreibzeiger // Schreibzeiger + OPN DB[DBDatenliste] + T DBW [AR1Zeiger] // Speicherung letzter Zugriff + + L tRE_VAL // Ok-Status + L 2#0000_0000_1100_0000 // Daten werden gespeichert + überschrieben ? + ==I // Ja ! + O Indok // Indizierung möglich ((Dann nicht!) + JC Nw8 // Kein Neueintrag ! + + L SSDW + + 16 // Offset Anzahl Einträge + ITD + SLD 3 + T AR1Zeiger // /Statt AR1 (ging nur bis DB-Länge <= 8191 Bytes) + + OPN DB[DBDatenliste] + L DBW [AR1Zeiger] // Anzahl der Einträge + + 1 // Einträge +1 + T DBW [AR1Zeiger] // Anzahl der Einträge + + +--- NW 8: Indizierung ok ? --- +Nw8: AN Indok // Indizierung möglich + O IndZeiger_ok // Indizier-Zeiger angegeben + JC Ende + + OPN DB[IndDB] // Indizierter DB + + L Schreibzeiger // Schreibzeiger + T DBW [IndPointer] + + OPN DB[DBDatenliste] // Datenliste DB + + +--- NW 9: Fehlerausgabe / RET_VAL --- +Ende: SET // VKE = 1 ohne Fehler !!! + L tRE_VAL // Ok-Status + JU Ok +Err0: L 2#0000_0000_0000_0001 // Kein Datenlistebereich + JU Err +Err1: L 2#0000_0000_0000_0010 // SFC20-Aufruf mit Fehler + JU Err +Err2: L 2#0000_0000_0000_0100 // Datenliste ist voll + JU Err +Err4: L 2#0000_0000_0001_0000 // Undefinierte Indaten + +Err: CLR // VKE = 0 bei Fehler !!! + +Ok: T tRE_VAL + SAVE // VKE in BIE-Bit speichern + + L AR2_Speicher // AR2 zurückspeichern + LAR2 + + +--- NW 10: Ausgangsvariablen schreiben --- + L tRE_VAL + T RE_VAL + + diff --git a/=A01+UH07-KF00/Programmbausteine/Module/DatenInSort.awl b/=A01+UH07-KF00/Programmbausteine/Module/DatenInSort.awl new file mode 100644 index 0000000..8943c60 --- /dev/null +++ b/=A01+UH07-KF00/Programmbausteine/Module/DatenInSort.awl @@ -0,0 +1,488 @@ +=== FC 88: DatenInSort [STL] === +INTERFACE: + Input: + SSDB : Int // Datenlisten-DB + SSDW : Int // Datenlisten-1.DW + INDATEN : Pointer // InDaten-Schnittstelle + Output: + RE_VAL : Byte // Rückmeldung + InOut: + Temp: + Quelle : Any // Zeiger, wo Rein-Daten sind + Ziel : Any // Zeiger, FIFO-Stelle + Kopf : Byte // Datenliste-Kennnung (DA) + Datensatzlaenge : Byte // Datensatzlänge in Word (01 - F0) F0=128 + Listenlaenge : Int // Länge der Datenliste (maximale Anzahl der Datensätze) + Stammdaten : Int // Stammdatenlänge in Word (1 - 9) + Belegt06 : Int // reserviert von Datenliste + Belegt08 : Int // reserviert von Datenliste + Belegt10 : Int // reserviert von Datenliste + Belegt12 : Int // reserviert von Datenliste + AnzahlEintraege : Int // Anzahl der eingetragenen Datensätze + Reserve16 : Int // Reserve + Reserve18 : Int // Reserve + DBDatenliste : Word // Datenlisten-DB + SFC_RET_VAL : Int // Rückmeldung SFC-Aufruf + SFC_DB_LENGTH : Word // Rückmeldung SFC-Aufruf + Datenlisten_Ende : Word // Ende der Datenliste + AR2_Speicher : DWord // Adress-Register 2 zwischenspeichern + Schleife : Word // Loopzähler + DBInDaten : Word // Indaten-DB, falls angegeben + InDaten_Pointer : DWord // In-Daten-Pointer: Kennung, Adresse + InDaten_Startpunkt : Word // In-Daten-Startpunkt: Adresse + Sort_Daten : DInt // Einzusortierende Daten (DWord) + Datenblock_inBytes : Word // Datenblocklänge in Bytes + SFC_WRITE_PROT : Bool // Rückmeldung SFC-Aufruf + Lesestelle : Int // An dieser Stelle Datensatz lesen + Min_Lesestelle : Int // Minimal sinnvolle Lesestelle + Max_Lesestelle : Int // Maximal sinnvolle Lesestelle + Savestelle : Int // An dieser Stelle wird In-Datensatz gespeichert + Lese_Daten : DInt // In Tabelle gelesenen Daten + Holstelle : Int // Freiraum schaffen: Stelle zum Daten holen + Bringstelle : Int // Freiraum schaffen: Stelle zum Daten schreiben + Holzeiger : DWord // Freiraum schaffen: Zeiger zum Daten holen + Bringzeiger : DWord // Freiraum schaffen: Zeiger zum Daten schreiben + AR1Zeiger : DWord // Statt AR1 (ging nur bis DB-Länge <= 8191 Bytes) + Constant: + Return: + Ret_Val : Void + +--- NW 1: Schnittstellen-DB sinnvoll ? --- + TAR2 + T AR2_Speicher // AR2 zwischenspeichern + + L SSDB + T DBDatenliste + +// CALL TEST_DB +// DB_NUMBER :=#DBDatenliste +// RET_VAL :=#SFC_RET_VAL +// DB_LENGTH :=#SFC_DB_LENGTH +// WRITE_PROT :=#SFC_WRITE_PROT + +CALL FC "TEST_DB_TO_ATTR_DB" (DB_Number:=DBDatenliste, RetVal:=SFC_RET_VAL, DB_Length:=SFC_DB_LENGTH, Write_Prot:=SFC_WRITE_PROT) + + L SFC_RET_VAL + L 2#0000_0000_0000_0000 + <>I + O SFC_WRITE_PROT + JC Err0 // kein Datenlisten-Bereich + + +--- NW 2: Quelle-Pointer erzeugen: --- + L 16#1004 // Kennung 10 + Word=04 + T LW0 // Any-Kennung, Datentyp + L 16#000A // 10 Dw´s holen + T LW2 // Wiederholungen + L SSDB + T LW4 // DB_Nummer + L SSDW // Adresse + SLD 3 + L 16#8400_0000 // Kennung: Daten + OD + T LD6 // Kennung, Adresse + +CALL SYS "BLKMOV" (SRCBLK:=Quelle, RET_VAL:=SFC_RET_VAL, DSTBLK:=P#L20.0 WORD 10) // 1.-10.DW Datenliste holen + + L SFC_RET_VAL + L 2#0000_0000_0000_0000 + <>I + JC Err1 + + +--- NW 3: Zeigerüberprüfung --- + L Kopf // Datenliste-Kopf + L 16#DB // = Datenlistekennung ? + <>I // Nein ! + JC Err0 // kein Datenlistebereich + + L 1 + L Datensatzlaenge // Datenblocklänge + >I + JC Err0 // kein Datenlistebereich + + L 128 + >I + JC Err0 // kein Datenlistebereich + + L 1 + L Listenlaenge // Max.Anzahl von Datenblöcken + >I + JC Err0 // kein Datenlistebereich + + L 1 + L Stammdaten // Anzahl der Stammdaten + >I + JC Err0 // kein Datenlistebereich + + L 9 + >I + JC Err0 // kein Datenlistebereich + + L Stammdaten // Anzahl der Stammdaten + L Datensatzlaenge // Datenblocklänge + >I + JC Err0 // kein Datenlistebereich + + L Listenlaenge // Länge der Datenliste + L Datensatzlaenge // Datenblocklänge + *I + L 2 // DB byteorientiert + *I + + 20 // Speichern ab 10.DW + L SSDW + +I + T Datenlisten_Ende + ITD + SLD 3 + T AR1Zeiger // /Statt AR1 (ging nur bis DB-Länge <= 8191 Bytes) + + OPN DB[DBDatenliste] + + L Datenlisten_Ende + L SFC_DB_LENGTH + >I // Datenlisten-DB ist zu kurz! + JC Err0 // kein Datenlisten-Bereich + + L DBW [AR1Zeiger] + L 16#DBEE // Datenliste-Endekennung ? + <>I // Nein ! + JC Err0 // kein Datenlisten-Bereich + + L Datensatzlaenge // Datenblocklänge + L 2 + *I + T Datenblock_inBytes // Datenblocklänge in Bytes + + L AnzahlEintraege // Anzahl der eingetragenen Datensätze + L Listenlaenge // Max.Anzahl von Datenblöcken + >=I // Nein ! + JC Err2 // Datenliste ist voll + + +--- NW 4: Indaten definiert ? --- + +// In-DATEN-Pointer übernehmen: + L P# + LAR2 + + L NoneW [AR2,] + T DBInDaten // Indaten-DB + + L DBInDaten // Indaten-DB + L 0 // Angegeben ? + ==I // Nein + JC W401 + +// CALL TEST_DB +// DB_NUMBER :=#DBInDaten +// RET_VAL :=#SFC_RET_VAL +// DB_LENGTH :=#SFC_DB_LENGTH +// WRITE_PROT :=#SFC_WRITE_PROT + +CALL FC "TEST_DB_TO_ATTR_DB" (DB_Number:=DBInDaten, RetVal:=SFC_RET_VAL, DB_Length:=SFC_DB_LENGTH, Write_Prot:=SFC_WRITE_PROT) + + + L SFC_RET_VAL + L 2#0000_0000_0000_0000 // Fehler vorhanden ? + <>I // Ja ! + JC Err4 // Undefinierte Indaten + + L NoneD [AR2,] // Kennung, Adresse + L 16#00FF_FFFF // Ohne Kennung + AW + SRW 3 // Ohne Bit + T InDaten_Startpunkt + + L Datensatzlaenge // Datenblocklänge + L 2 // DB byteorientiert + *I + L InDaten_Startpunkt + +I + L SFC_DB_LENGTH + >I // Indaten-DB ist zu kurz + JC Err4 // Undefinierte Indaten + +W401: L NoneD [AR2,] // Kennung, Adresse + T InDaten_Pointer + LAR2 + + L DBInDaten // Indaten-DB + L 0 // Angegeben ? + ==I // Nein + JC W402 + + OPN DB[DBInDaten] + +W402: L NoneD [AR2,] // Indaten überprüfen + T Sort_Daten // 1.Indaten speichern + + L Stammdaten +L400: T Schleife + + L DBInDaten // Indaten-DB + L 0 // Angegeben ? + ==I // Nein + JC W403 + + OPN DB[DBInDaten] + +W403: L NoneW [AR2,] // Indaten überprüfen + L 0 // Etwas angegeben ? + <>I // Ja ! + JC Nw05 // Weiter + + ADDAR2 P#2.0 + + L Schleife + LOOP L400 + + JU Err4 // Undefinierte Indaten + +Nw05: NOP 0 + + +--- NW 5: Minimale + maximale Lesestelle am Anfang --- + L 1 + T Min_Lesestelle // Minimal sinnvolle Lesestelle + + L AnzahlEintraege // Anzahl der eingetragenen Datensätze + T Max_Lesestelle // Maximal sinnvolle Lesestelle + +// Sonderfall: noch kein Eintrag: + L 0 // Eintrag schon vorhanden ? + >I // Ja ! + JC en05 + + L 1 // An 1.Stelle speichern + T Savestelle // Adresse + + JU Save + +en05: NOP 0 + + +--- NW 6: Aktuelle Lesestelle errechnen --- +New: L Max_Lesestelle // Maximal sinnvolle Lesestelle + + 1 + L Min_Lesestelle // Minimal sinnvolle Lesestelle + -I + L 2 + /I + L Min_Lesestelle // Minimal sinnvolle Lesestelle + +I + T Lesestelle // An dieser Stelle Datensatz lesen + + +--- NW 7: Daten an Lesestelle auslesen --- + L Lesestelle // An dieser Stelle Datensatz lesen + + -1 + L Datenblock_inBytes // Datenblocklänge in Bytes + *I + L SSDW + +I + + 20 // Offset für 1.Daten + ITD + SLD 3 + T AR1Zeiger // /Statt AR1 (ging nur bis DB-Länge <= 8191 Bytes) + + OPN DB[DBDatenliste] + L DBD [AR1Zeiger] // Datenliste-Daten lesen + T Lese_Daten // In Tabelle gelesenen Daten + L 0 // Nichts gespeicher oder negativ ? + <=D // Ja ! + JC Err5 + + +--- NW 8: Suche fertig ? --- + L Max_Lesestelle // Maximal sinnvolle Lesestelle + L Min_Lesestelle // Minimal sinnvolle Lesestelle + -I + L 0 // Suche fertig ? + D // Sort > Tabelle + JC MinP + + L Sort_Daten // Einzusortierende Daten + >D // Tabelle > Sort + JC MaxM + + L Lesestelle // An dieser Stelle Datensatz lesen + T Savestelle // An dieser Stelle wird In-Datensatz gespeichert + + JC Frei // Freiplatz schaffen + +MinP: L Lesestelle // An dieser Stelle Datensatz lesen + + 1 + T Min_Lesestelle // Minimal sinnvolle Lesestelle + + L Max_Lesestelle // Maximal sinnvolle Lesestelle + >I // Suche ist fertig + JC ok + + JU New + +MaxM: L Lesestelle // An dieser Stelle Datensatz lesen + + -1 + T Max_Lesestelle // Maximal sinnvolle Lesestelle + + L Min_Lesestelle // Minimal sinnvolle Lesestelle + D // Sort > Tabelle + JC Plus + + L Lesestelle // An dieser Stelle Datensatz lesen + T Savestelle // An dieser Stelle wird In-Datensatz gespeichert + + JU Frei // Freiplatz schaffen + +Plus: L Lesestelle // An dieser Stelle Datensatz lesen + + 1 + T Savestelle // An dieser Stelle wird In-Datensatz gespeichert + + +--- NW 11: Freiraum für Speicherung schaffen --- +Frei: L Savestelle // An dieser Stelle wird In-Datensatz gespeichert + T "MW240" + L AnzahlEintraege // Anzahl der eingetragenen Datensätze + >I // Eintrag ans Ende ! + JC Save + + L AnzahlEintraege // Anzahl der eingetragenen Datensätze + L Datenblock_inBytes // Datenblocklänge in Bytes + *I + L SSDW + +I + + 20 // Offset für 1.Daten + + -2 // Letzte Daten letzter Eintrag + T Holstelle // Freiraum schaffen: Stelle zum Daten holen + + L Holstelle // Freiraum schaffen: Stelle zum Daten holen + L Datenblock_inBytes // Datenblocklänge in Bytes + +I + T Bringstelle // Freiraum schaffen: Zeiger zum Daten schreiben + + L AnzahlEintraege // Anzahl der eingetragenen Datensätze + L Savestelle // An dieser Stelle wird In-Datensatz gespeichert + -I + + 1 + L Datenblock_inBytes // Datenblocklänge in Bytes + *I + L 2 // da DW-Zugriff (2Byte) + /I +L110: T Schleife + + L Holstelle // Freiraum schaffen: Stelle zum Daten holen + ITD + SLD 3 + T Holzeiger // Freiraum schaffen: Zeiger zum Daten holen + L Bringstelle // Freiraum schaffen: Zeiger zum Daten schreiben + ITD + SLD 3 + T Bringzeiger // Freiraum schaffen: Zeiger zum Daten schreiben + + OPN DB[DBDatenliste] + + L DBW [Holzeiger] // Datenliste-Daten lesen + T DBW [Bringzeiger] // Datenliste-Daten verschieben + + L Holstelle + + -2 // 2 Byte wegen DW-Zugriff + T Holstelle // Freiraum schaffen: Stelle zum Daten holen + + L Bringstelle + + -2 // 2 Byte wegen DW-Zugriff + T Bringstelle // Freiraum schaffen: Zeiger zum Daten schreiben + + L Schleife + LOOP L110 + + +--- NW 12: Daten in Datenliste schreiben --- +// Quelle-Pointer erzeugen: + +Save: L 16#1004 // Kennung 10 + Word=04 + T LW0 + T LW10 // Any-Kennung, Datentyp + L Datensatzlaenge // Datenwords speichern + T LW2 + T LW12 // Wiederholungen + +// DATEN-Pointer übernehmen: + L DBInDaten + T LW4 // DB_Nummer + L InDaten_Pointer + T LD6 // Kennung, Adresse + +// Ziel-Pointer erzeugen: +// Kennung + Datenbytes s.o. + + L SSDB + T LW14 // DB_Nummer + L Savestelle // Adresse + + -1 + L Datenblock_inBytes // Datenblocklänge in Bytes + *I + L SSDW + +I + + 20 // Offset für 1.Daten + SLD 3 + L 16#8400_0000 // Kennung: Daten + OD + T LD16 // Kennung, Adresse + +CALL SYS "BLKMOV" (SRCBLK:=Quelle, RET_VAL:=SFC_RET_VAL, DSTBLK:=Ziel) // Datenliste-Daten speichern + + L SFC_RET_VAL + L 2#0000_0000_0000_0000 + <>I + JC Err1 + + L SSDW + + 14 // Anzahl der Einträge + ITD + SLD 3 + T AR1Zeiger // /Statt AR1 (ging nur bis DB-Länge <= 8191 Bytes) + + OPN DB[DBDatenliste] + L DBW [AR1Zeiger] // Anzahl der Einträge + + 1 // Einträge +1 + T DBW [AR1Zeiger] // Anzahl der Einträge + + +--- NW 13: Fehlerausgabe / RET_VAL --- + SET // VKE = 1 ohne Fehler !!! + L 2#0000_0000_1000_0000 // Daten wurden gespeichert + JU Ok_Mig +Err0: L 2#0000_0000_0000_0001 // Kein Datenlistebereich + JU Err +Err1: L 2#0000_0000_0000_0010 // SFC20-Aufruf mit Fehler + JU Err +Err2: L 2#0000_0000_0000_0100 // Datenliste ist voll + JU Err +Err4: L 2#0000_0000_0001_0000 // Undefinierte Indaten + JU Err +Err5: L 2#0000_0000_0010_0000 // Gespeicherte Daten <= 0 (Inhalt ungültig) + +Err: CLR // VKE = 0 bei Fehler !!! + +Ok_Mig: T RE_VAL + SAVE // VKE in BIE-Bit speichern + + L AR2_Speicher // AR2 zurückspeichern + LAR2 + diff --git a/=A01+UH07-KF00/Programmbausteine/Module/DatenOut.awl b/=A01+UH07-KF00/Programmbausteine/Module/DatenOut.awl new file mode 100644 index 0000000..e9bf550 --- /dev/null +++ b/=A01+UH07-KF00/Programmbausteine/Module/DatenOut.awl @@ -0,0 +1,894 @@ +=== FC 86: DatenOut [STL] === +INTERFACE: + Input: + SSDB : Int // Datenlisten-DB + SSDW : Int // Datenlisten-1.DW + PARA : Word // Aufrufparameter (Auftrag / Anzahl Zusatzdaten) + SEARCHDATEN : Pointer // Such-Daten-Schnittstelle + Output: + RE_VAL : Byte // Rückmeldung + OUTDATEN : Pointer // OutDaten-Schnittstelle + Position : Int // Daten stehen an angegebener Position in Datenbank + InOut: + Temp: + Quelle : Any // Zeiger, wo Rein-Daten sind + Ziel : Any // Zeiger, FIFO-Stelle + Kopf : Byte // Datenliste-Kennnung (DA) + Datensatzlaenge : Byte // Datensatzlänge in Word (01 - F0) F0=128 + Listenlaenge : Int // Länge der Datenliste (maximale Anzahl der Datensätze) + Stammdaten : Int // Stammdatenlänge in Word (1 - 9) + IndDB : Word // Indizierter DB (nur bei Stammdaten = 1 erlaubt !!!) + IndDB_Laenge : Int // Länge des indizierten DB in Einträge (nur bei Stammdaten = 1 erlaubt !!!) + IndDaten_FC : Int // FC zum Wandeln der indizierte Daten (nur bei Stammdaten = 1 erlaubt !!!) + Suchzeiger : Int // Speicherung des letzten Zugriffs / Suchzeiger + Belegt14 : Int // reserviert von Sort-Datenliste + AnzahlEintraege : Int // Anzahl der eingetragenen Datensätze (nicht bei ind.Zugriff!) + Reserve18 : Int // Reserve + Para1 : Byte // 1.Aufrufparameter + Para2 : Byte // 2.Aufrufparameter + DBDatenliste : Word // Datenlisten-DB + OffsetDaten_1 : Int // Stammdaten beginnen ab hier + SFC_RET_VAL : Int // Rückmeldung SFC-Aufruf + SFC_DB_LENGTH : Word // Rückmeldung SFC-Aufruf + Datenlisten_Ende : Int // Ende der Datenliste + AR2_Speicher : DWord // Adress-Register 2 zwischenspeichern + Schleife : Word // Loopzähler + DBSuchDaten : Word // Such-Daten-DB, falls angegeben + SuchDaten_Pointer : DWord // Such-Daten-Pointer: Kennung, Adresse + SuchDaten_Startpunkt : Word // Such-Daten-Startpunkt: Adresse + DBOutDaten : Word // Out-Daten-DB, falls angegeben + OutDaten_Pointer : DWord // Out-Daten-Pointer: Kennung, Adresse + OutDaten_Startpunkt : Word // Out-Daten-Startpunkt: Adresse + IndPointer : DWord // Zeiger für IndDB + Daten_1 : Word // 1.Datenwort der Indaten + Daten_2 : DWord // 1+2.Datenwort der Indaten (falls ind.Suchen mit Stammdaten 2) + Datenblock_inBytes : Word // Datenblocklänge in Bytes + Suchstelle : Word // Bei angegebenen Datensatz suchen + SFC_WRITE_PROT : Bool // Rückmeldung SFC-Aufruf + Indok : Bool // Indizierung möglich + IndZeiger_ok : Bool // Indizier-Zeiger angegeben + Weitersuchen : Bool // Weitersuchen ist aktiv + Offsetsuchen : Bool // Offsetsuchen ist aktiv + Sortliste : Bool // Sortliste wird durchsucht + WandelFC : Bool // Wnadel-FC für ind.Suchen vorhanden + tRE_VAL : Byte // Rückmeldung + AR1Zeiger : DWord // Statt AR1 (ging nur bis DB-Länge <= 8191 Bytes) + DB_Länge : Int + NichtCopy : Int // Datenmenge, die nicht vorschoben wird + LoeschPos : Word // Lösch-Position + Wandel_FC : Word // Wandel-FC + Constant: + Return: + Ret_Val : Void + +--- NW 1: Schnittstellen-DB sinnvoll ? --- + TAR2 + T AR2_Speicher // AR2 zwischenspeichern + + L SSDB + T DBDatenliste + +CALL FC "TEST_DB_TO_ATTR_DB" (DB_Number:=DBDatenliste, RetVal:=SFC_RET_VAL, DB_Length:=SFC_DB_LENGTH, Write_Prot:=SFC_WRITE_PROT) + +CALL FC "BCD (4stellig)_to_INT" (BCD_Wert:=SFC_DB_LENGTH, Int_Wert:="DB_Länge") + + L SFC_RET_VAL + L 2#0000_0000_0000_0000 + <>I + O SFC_WRITE_PROT // schreibgeschützt + JC Err0 // kein Datenlisten-Bereich + + +--- NW 2: Quelle-Pointer erzeugen: --- + L 16#1004 // Kennung 10 + Word=04 + T LW0 // Any-Kennung, Datentyp + L 16#000A // 10 Dw´s holen + T LW2 // Wiederholungen + L SSDB + T LW4 // DB_Nummer + L SSDW // Adresse + SLD 3 + L 16#8400_0000 // Kennung: Daten + OD + T LD6 // Kennung, Adresse + +CALL SYS "BLKMOV" (SRCBLK:=Quelle, RET_VAL:=SFC_RET_VAL, DSTBLK:=P#L20.0 WORD 10) // 1.-10.DW Datenliste holen + + L SFC_RET_VAL + L 2#0000_0000_0000_0000 + <>I + JC Err1 + + +--- NW 3: Zeigerüberprüfung --- + L Kopf // Datenliste-Kopf + L 16#DB // = Sort-Datenlistekennung ? + ==I // Ja ! + = Sortliste // Sortliste wird durchsucht + JC w030 + + CAC + L 16#DA // = Datenlistekennung ? + <>I // Nein ! + JC Err0 // kein Datenlistebereich + +w030: L 1 + L Datensatzlaenge // Datenblocklänge + >I + JC Err0 // kein Datenlistebereich + + L 128 + >I + JC Err0 // kein Datenlistebereich + + L 1 + L Listenlaenge // Max.Anzahl von Datenblöcken + >I + JC Err0 // kein Datenlistebereich + + L 1 + L Stammdaten // Anzahl der Stammdaten + >I + JC Err0 // kein Datenlistebereich + + L 9 + >I + JC Err0 // kein Datenlistebereich + + L Stammdaten // Anzahl der Stammdaten + L Datensatzlaenge // Datenblocklänge + >I + JC Err0 // kein Datenlistebereich + + L Listenlaenge // Länge der Datenliste + L Datensatzlaenge // Datenblocklänge + *I + L 2 // DB byteorientiert + *I + + 20 // Speichern ab 10.DW + L SSDW + +I + T Datenlisten_Ende + ITD + SLD 3 + T AR1Zeiger // /Statt AR1 (ging nur bis DB-Länge <= 8191 Bytes) + + OPN DB[DBDatenliste] + + L Datenlisten_Ende + L "DB_Länge" + >I // Datenlisten-DB ist zu kurz! + JC Err0 // kein Datenlisten-Bereich + + L DBW [AR1Zeiger] + L 16#DAEE // Datenliste-Endekennung ? + <>I // Nein ! + A( + CAC + L 16#DBEE // Sort-Datenliste-Endekennung ? + <>I // Nein ! + ) + JC Err0 // kein Datenlisten-Bereich + + L Datensatzlaenge // Datenblocklänge + L 2 + *I + T Datenblock_inBytes // Datenblocklänge in Bytes + + +--- NW 4: Auftrag kontrollieren --- + SET + R Indok // Indizierung möglich + R IndZeiger_ok // Indizier-Zeiger angegeben + R Weitersuchen // Weitersuchen ist aktiv + R Offsetsuchen // Offsetsuchen ist aktiv + L 0 // Vorerst kein Offset + T OffsetDaten_1 + + L PARA + T LW40 // Aufrufparameter zwischenspeichern + + L 16#00 // XX = 00 ? + L Para1 + ==I // Ja! + JC W401 + + L 16#E1 // XX = E1 ? + ==I // Ja! + A Sortliste // Sortliste wird durchsucht + JC Err3 // Falscher Aufrufparameter (austragen nicht erlaubt !) + + CAC + L 16#E1 // XX = E1 ? + ==I // Ja! + JC W401 + + L 16#F1 // XX = F1 ? + L Para1 + <>I // Nein ! + JC W400 + + L Para2 + L 16#00 + <>I + O Sortliste // Sortliste wird durchsucht + JC Err3 // Falscher Aufrufparameter + + SET + S Weitersuchen + + L SSDW + + 20 + T Suchzeiger + + JU Nw08 // OutDaten ok ? + +W400: L 16#FF // XX = FF ? + <>I // Nein ! + JC W403 + + L Para2 + L 16#00 + <>I + O Sortliste // Sortliste wird durchsucht + JC Err3 // Falscher Aufrufparameter + + SET + S Weitersuchen + + L Suchzeiger // Alter Suchzeiger + L Datenblock_inBytes // Datenblocklänge in bytes + +I // Nächsten Datensatz suchen + T Suchzeiger // Neuer Suchzeiger + + L Datenblock_inBytes // Datenblocklänge in bytes + L Listenlaenge // Alle möglichen Einträge + *I // Gesamtlänge + L SSDW // Startpunkt + +I + + 20 // Offset 1.Daten + L Suchzeiger // Schreibzeiger + >I // Noch nicht am Ende ! + JC Nw08 // OutDaten ok ? + + JU Err2 // Listenende erreicht + +W403: L 16#02 // XX < 02 ? + L Para1 + >I // Ja! + JC Err3 // Falscher Aufrufparameter + + L 16#80 // XX > 80 ? + >I // Ja! + JC Err3 // Falscher Aufrufparameter + + CAC + L Datensatzlaenge // XX > Datensatzlänge + >I // Ja! + JC Err3 // Falscher Aufrufparameter + + CAC + + -1 // Angegebener Offset -1 + L 2 // DB byteorientiert + *I + T OffsetDaten_1 // Richtiger Offset der 1.Stammdaten + + L 0 + T Suchzeiger // Suche ab Anfang + + SET + S Offsetsuchen + +W401: L 16#00 // =0 ? + L Para2 // 2.Aufrufparameter + ==I // Ja ! + JC W402 + + T Stammdaten // Anzahl der Stammdaten + L Datensatzlaenge // Datenblocklänge + >I + JC Err3 // Falscher Aufrufparameter + + L 1 + L Stammdaten // Anzahl der Stammdaten + >I + JC Err3 // Falscher Aufrufparameter + + L 9 + >I + JC Err3 // Falscher Aufrufparameter + +W402: AN Offsetsuchen + JC Nw05 + + L Para1 // Offset + + -1 + L Stammdaten + +I // Letzte Stammdaten zu groß ? + L Datensatzlaenge + >I // Ja! + JC Err3 // Falscher Aufrufparameter + + +--- NW 5: Such-DATEN-Pointer übernehmen: --- +Nw05: L 0 + T Suchzeiger // Suchzeiger + + L P# + LAR2 + + L NoneW [AR2,] + T DBSuchDaten // Suchdaten-DB + L NoneD [AR2,] // Kennung, Adresse + T SuchDaten_Pointer + + L DBSuchDaten // Suchdaten-DB + L 0 // Angegeben ? + ==I // Nein + JC W501 + +CALL FC "TEST_DB_TO_ATTR_DB" (DB_Number:=DBSuchDaten, RetVal:=SFC_RET_VAL, DB_Length:=SFC_DB_LENGTH, Write_Prot:=SFC_WRITE_PROT) + +CALL FC "BCD (4stellig)_to_INT" (BCD_Wert:=SFC_DB_LENGTH, Int_Wert:="DB_Länge") + + L SFC_RET_VAL + L 2#0000_0000_0000_0000 // Fehler vorhanden ? + <>I // Ja ! + JC Err4 // Undefinierte Stammdaten + + L NoneD [AR2,] // Kennung, Adresse + L 16#00FF_FFFF // Ohne Kennung + AW + SRW 3 // Ohne Bit + T SuchDaten_Startpunkt + + L Datensatzlaenge // Datenblocklänge + L 2 // DB byteorientiert + *I + L SuchDaten_Startpunkt + +I + L "DB_Länge" + >I // Suchdaten-DB ist zu kurz + JC Err4 // Undefinierte Stammdaten + +W501: L SuchDaten_Pointer + LAR2 + + L DBSuchDaten // Suchdaten-DB + L 0 // Angegeben ? + ==I // Nein + JC W502 + + OPN DB[DBSuchDaten] + +W502: L NoneW [AR2,] // Suchdaten überprüfen + T Daten_1 // 1.Suchdaten speichern + L NoneD [AR2,] // Suchdaten überprüfen + T Daten_2 // 1.Suchdaten speichern + + L Stammdaten +L500: T Schleife + + L DBSuchDaten // Suchdaten-DB + L 0 // Angegeben ? + ==I // Nein + JC W503 + + OPN DB[DBSuchDaten] + +W503: L NoneW [AR2,] // Suchdaten überprüfen + L 0 // Etwas angegeben ? + <>I // Ja ! + JC Nw06 // Weiter + + ADDAR2 P#2.0 + + L Schleife + LOOP L500 + + JU Err4 // Undefinierte Stammdaten + + +--- NW 6: Indiziert suchen ? --- +Nw06: L IndDB // Indizierter DB + L 0 // =0 ? + ==I // Kein indizierter DB ! + O Offsetsuchen + O Sortliste // Sortliste wird durchsucht + JC Nw07 + +CALL FC "TEST_DB_TO_ATTR_DB" (DB_Number:=IndDB, RetVal:=SFC_RET_VAL, DB_Length:=SFC_DB_LENGTH, Write_Prot:=SFC_WRITE_PROT) + +CALL FC "BCD (4stellig)_to_INT" (BCD_Wert:=SFC_DB_LENGTH, Int_Wert:="DB_Länge") + + L SFC_RET_VAL + L 2#0000_0000_0000_0000 + <>I + O SFC_WRITE_PROT + JC Nw07 // kein Indizier-DB vorhanden + + L IndDB_Laenge // Länge des Indizierten DB überschritten ? + L DINT#2 // DB byteorientiert + *D + L "DB_Länge" + >I // Indizier-DB ist zu kurz + JC Nw07 // Zeiger ausserhalb Ind.DB + + L Stammdaten // Stammdaten + L 3 // zu viele Stammdaten ? + >=I // Ja ! + JC Nw07 // ohne Indizierung weiter + + L IndDaten_FC // Offset zum Abziehen + T Wandel_FC + L 0 // Parameter vorhanden ? + <=I // Nein + JC NoFC // Bei diesem Schritt weiter + + L Daten_1 // Stammdaten (1.DW) + T "MW90" // übergeben + L Daten_2 // Stammdaten (2.DW) + T "MD94" // übergeben + + UC DB[Wandel_FC] // Beeinflussung der Weiterfahrt + + L "MW92" // Rückwert von FC + + JU Ret + +NoFC: L Daten_1 // Stammdaten +Ret: T IndPointer // Stelle, wo Zeiger hinterlegt ist + L 0 + I // Suchzeiger nicht im Raster ! + JC W700 // Suche bei 1.Datensatz beginnen + + L 0 // Bei angegebener Stelle suchen + T Suchstelle // Such bei X-ten Datensatz + + JU W701 + +W700: L 1 // Suche bei 1.Datensatz beginnen + T Suchstelle // Such bei X-ten Datensatz + SET + R IndZeiger_ok // Indizier-Zeiger angegeben + L SSDW + + 20 // Offset für 1.Daten + T Suchzeiger // Suchzeiger + +W701: L Suchzeiger // Suchzeiger + L OffsetDaten_1 // Richtiger Offset der 1.Stammdaten + +I + ITD + SLD 3 + T AR1Zeiger // /Statt AR1 (ging nur bis DB-Länge <= 8191 Bytes) + + L SuchDaten_Pointer + LAR2 + + L Stammdaten // Anzahl der Stammdaten +L700: T Schleife + + L DBSuchDaten // Suchdaten-DB + L 0 // Angegeben ? + ==I // Nein + JC W702 + + OPN DB[DBSuchDaten] + +W702: L NoneW [AR2,] // Suchdaten überprüfen mit + OPN DB[DBDatenliste] + L DBW [AR1Zeiger] // Datenliste-Daten lesen + <>I // nicht identisch ! + JC W703 + + L AR1Zeiger + SRD 3 + L DINT#2 + +D + SLD 3 + T AR1Zeiger + + ADDAR2 P#2.0 + + L Schleife + LOOP L700 + + L 2#0000_0000_1000_0000 // Daten sind vorhanden + T tRE_VAL // Ok-Status + + JU Nw08 // Datensatz ist in Liste enthalten + +W703: L 0 // Suche bei 1.Datensatz begonnen + L Suchstelle // Such bei X-ten Datensatz + ==I // Nein ! + JC W700 + + L Suchstelle // Such bei X-ten Datensatz + + 1 + T Suchstelle // Such bei X-ten Datensatz + L Listenlaenge // Anzahl aller Daten in Datenliste + <=I // Alle Datensätze sind durchsucht + JC W705 // Nein ! + + JU Err6 // Datensatz ist nicht vorhanden + +W705: L Datenblock_inBytes // Datenblocklänge in bytes + L Suchzeiger // Suchzeiger + +I + T Suchzeiger // Suchzeiger + JU W701 + + +--- NW 8: Out-DATEN-Pointer übernehmen: --- +Nw08: L P# + LAR2 + + L NoneW [AR2,] + T DBOutDaten // Outdaten-DB + L NoneD [AR2,] // Kennung, Adresse + T OutDaten_Pointer + + L DBOutDaten // Outdaten-DB + L 0 // Angegeben ? + ==I // Nein + JC Nw09 + +CALL FC "TEST_DB_TO_ATTR_DB" (DB_Number:=DBOutDaten, RetVal:=SFC_RET_VAL, DB_Length:=SFC_DB_LENGTH, Write_Prot:=SFC_WRITE_PROT) + +CALL FC "BCD (4stellig)_to_INT" (BCD_Wert:=SFC_DB_LENGTH, Int_Wert:="DB_Länge") + + L SFC_RET_VAL + L 2#0000_0000_0000_0000 // Fehler vorhanden ? + <>I // Ja ! + JC Err5 // Undefinierte Outdaten + + L NoneD [AR2,] // Kennung, Adresse + L 16#00FF_FFFF // Ohne Kennung + AW + SRW 3 // Ohne Bit + T OutDaten_Startpunkt + + L OutDaten_Startpunkt + L "DB_Länge" + >I // Outdaten-DB ist zu kurz + JC Err5 // Undefinierte Outdaten + + +--- NW 9: Quelle-Pointer erzeugen: --- +Nw09: L 16#1004 // Kennung 10 + Word=04 + T LW0 + T LW10 // Any-Kennung, Datentyp + L Datensatzlaenge // Datenwords speichern + T LW2 + T LW12 // Wiederholungen + +// DATEN-Pointer übernehmen: + L SSDB + T LW4 // DB_Nummer + L Suchzeiger // Adresse + SLD 3 + L 16#8400_0000 // Kennung: Daten + OD + T LD6 // Kennung, Adresse + +// Ziel-Pointer erzeugen: +// Kennung + Datenbytes s.o. + + L DBOutDaten + T LW14 // DB_Nummer + L OutDaten_Pointer + T LD16 // Kennung, Adresse + +CALL SYS "BLKMOV" (SRCBLK:=Quelle, RET_VAL:=SFC_RET_VAL, DSTBLK:=Ziel) // Datenliste-Daten speichern + + L SFC_RET_VAL + L 2#0000_0000_0000_0000 + <>I + JC Err1 + + A SFC_WRITE_PROT // Datenliste kann nicht beschrieben werden + JC Nw10 + + L SSDW + + 12 // Offset letzter Zugriff + ITD + SLD 3 // Pointer erzeugen + T AR1Zeiger // /Statt AR1 (ging nur bis DB-Länge <= 8191 Bytes) + + L Suchzeiger // Suchzeiger + OPN DB[DBDatenliste] + T DBW [AR1Zeiger] // Speicherung letzter Zugriff + + L Suchstelle // Such bei X-ten Datensatz + T Position // Übergabe nach außen + + +--- NW 10: Daten aus Datenliste löschen ? (nicht indiziert!) --- +Nw10: L 16#E1 // Daten löschen ? + L Para1 // 1.Aufrufparameter + <>I // Nein ! + O SFC_WRITE_PROT // Datenliste kann nicht beschrieben werden + JC Nw11 + + A Indok // Indizierung möglich + JC X010 // Bei ind.Zugriff nur löschen, nicht verschieben, keine Anzahl! + +// Gemeinsame Daten für Pointer erzeugen: + L 16#1004 // Kennung 10 + Word=04 + T LW0 + T LW10 // Any-Kennung, Datentyp + + L Suchzeiger // Stelle, wo gelöscht werden soll + + -20 + L SSDW + -I + L Datenblock_inBytes // Datenblocklänge in bytes + /I + + 1 // Stelle, die gelöscht werden soll + T LoeschPos // Lösch-Position + L Listenlaenge // Länge der Datenliste (Letzter Eintrag zum Löschen ?) + ==I // Ja ! + JC Last // Ohne Verschieben letzten Eintrag löschen + + L LoeschPos // Lösch-Position + L Datensatzlaenge // Datenblocklänge + *I // Gesamtdatenlänge in Words + T NichtCopy // Datenmenge, die nicht vorschoben wird + + L Listenlaenge // Länge der Datenliste + L Datensatzlaenge // Datenblocklänge + *I // Gesamtdatenlänge in Words + L NichtCopy // Datenmenge, die nicht vorschoben wird + -I // abziehen + T LW2 + T LW12 // Wiederholungen + + L SSDB + T LW4 + T LW14 // DB_Nummer + +// Quelle-Pointer erzeugen: + L Suchzeiger // Stelle, wo gelöscht werden soll + L Datenblock_inBytes // Datenblocklänge in Bytes + +I + SLD 3 + L 16#8400_0000 // Kennung: Daten + OD + T LD6 // Kennung, Adresse + +// Ziel-Pointer erzeugen: + L Suchzeiger // Stelle, wo gelöscht werden soll + SLD 3 + L 16#8400_0000 // Kennung: Daten + OD + T LD16 // Kennung, Adresse + +// Daten verschieben: +CALL SYS "BLKMOV" (SRCBLK:=Quelle, RET_VAL:=SFC_RET_VAL, DSTBLK:=Ziel) // DatenSortliste-Daten verschieben + + L SFC_RET_VAL + L 2#0000_0000_0000_0000 + <>I + JC Err1 + +// Letzte Daten löschen: +Last: L Datenlisten_Ende // Ende des Datenbereichs + L Datenblock_inBytes // Datenblocklänge in Bytes + -I // Ab hier löschen ! + ITD + SLD 3 + T AR1Zeiger // /Statt AR1 (ging nur bis DB-Länge <= 8191 Bytes) + + L Datensatzlaenge // Datensatzlänge +L080: T Schleife + + OPN DB[DBDatenliste] + + L 0 // Daten löschen + T DBW [AR1Zeiger] + + L AR1Zeiger + SRD 3 + L 2 // nächstes DW + +D + SLD 3 + T AR1Zeiger + + L Schleife + LOOP L080 + +// Speicherung letzter Zugriff: + L SSDW + + 12 // Offset letzter Zugriff + ITD + SLD 3 + T AR1Zeiger // /Statt AR1 (ging nur bis DB-Länge <= 8191 Bytes) + + OPN DB[DBDatenliste] + L 0 // löschen + T DBW [AR1Zeiger] // Speicherung letzter Zugriff + T Suchzeiger // Suchzeiger + + SET + R IndZeiger_ok // Indizier-Zeiger angegeben + +// Anzahl Einträge: + L SSDW + + 16 // Offset Anzahl Einträge + ITD + SLD 3 + T AR1Zeiger // /Statt AR1 (ging nur bis DB-Länge <= 8191 Bytes) + + OPN DB[DBDatenliste] + L DBW [AR1Zeiger] // Anzahl der Einträge + + -1 // -1 + T DBW [AR1Zeiger] // Anzahl der Einträge + + L 0 + >=I + JC w080 + + T DBW [AR1Zeiger] // Minimum übergeben + +w080: JU Nw11 + + +--- NW 11: Daten aus Datenliste löschen ? (indiziert) --- +X010: L 16#E1 // Daten löschen ? + L Para1 // 1.Aufrufparameter + <>I // Nein ! + JC Nw11 + + L Suchzeiger // Suchzeiger + ITD + SLD 3 + T AR1Zeiger // /Statt AR1 (ging nur bis DB-Länge <= 8191 Bytes) + + OPN DB[DBDatenliste] + + L Datensatzlaenge +LA00: T Schleife + + L 0 + T DBW [AR1Zeiger] + + L AR1Zeiger + SRD 3 + L DINT#2 + +D + SLD 3 + T AR1Zeiger + + L Schleife + LOOP LA00 + + L SSDW + + 12 + ITD + SLD 3 + T AR1Zeiger // /Statt AR1 (ging nur bis DB-Länge <= 8191 Bytes) + + L 0 // Löschen + T Suchzeiger // Suchzeiger + T DBW [AR1Zeiger] + + SET + R IndZeiger_ok // Indizier-Zeiger angegeben + + +--- NW 12: Weitersuchen aktiv ? Datensatz vorhanden oder 0 ? --- +Nw11: AN Weitersuchen + JC Nw12 + + L OutDaten_Pointer + LAR2 + + L Datensatzlaenge +L110: T Schleife + + L DBOutDaten // Outdaten-DB + L 0 // Angegeben ? + ==I // Nein + JC W111 + + OPN DB[DBOutDaten] + +W111: L NoneW [AR2,] // Outdaten überprüfen + L 0 // Etwas angegeben ? + <>I // Ja ! + JC W112 // Ok + + ADDAR2 P#2.0 + + L Schleife + LOOP L110 + + L 2#0000_0000_0100_0000 // Daten sind nicht vorhanden + T tRE_VAL // Ok-Status + JU Ende + +W112: L 2#0000_0000_1000_0000 // Daten sind vorhanden + T tRE_VAL // Ok-Status + JU Ende + + +--- NW 13: Indizierung ok ? --- +Nw12: AN Indok // Indizierung möglich + O IndZeiger_ok // Indizier-Zeiger angegeben + JC Ende + + OPN DB[IndDB] // Indizierter DB + + L Suchzeiger // Suchzeiger + T DBW [IndPointer] + + OPN DB[DBDatenliste] // Datenliste DB + + +--- NW 14: Fehlerausgabe / RET_VAL --- +Ende: SET // VKE = 1 ohne Fehler !!! + L tRE_VAL // Ok-Status + JU Ok +Err0: L 2#0000_0000_0000_0001 // Kein Datenlistebereich + JU Err +Err1: L 2#0000_0000_0000_0010 // SFC20-Aufruf mit Fehler + JU Err +Err2: L 2#0000_0000_0000_0100 // Listenende ist erreicht + JU Err +Err3: L 2#0000_0000_0000_1000 // Falscher Parameter bei Aufruf + JU Err +Err4: L 2#0000_0000_0001_0000 // Undefinierte Suchdaten + JU Err +Err5: L 2#0000_0000_0010_0000 // Undefinierte OUTDaten + JU Err +Err6: L 2#0000_0000_0100_0000 // Datensatz nicht vorhanden + +Err: CLR // VKE = 0 bei Fehler !!! + +Ok: T tRE_VAL + SAVE // VKE in BIE-Bit speichern + + L AR2_Speicher // AR2 zurückspeichern + LAR2 + + +--- NW 15: Ende --- + L tRE_VAL + T RE_VAL diff --git a/=A01+UH07-KF00/Programmbausteine/Module/DatenOutSort.awl b/=A01+UH07-KF00/Programmbausteine/Module/DatenOutSort.awl new file mode 100644 index 0000000..76d164d --- /dev/null +++ b/=A01+UH07-KF00/Programmbausteine/Module/DatenOutSort.awl @@ -0,0 +1,532 @@ +=== FC 89: DatenOutSort [STL] === +INTERFACE: + Input: + SSDB : Int // Datenlisten-DB + SSDW : Int // Datenlisten-1.DW + PARA : Word // Aufrufparameter (Auftrag , Offset/Anzahl Daten) + Output: + OUTDATEN : Pointer // OutDaten-Schnittstelle + RE_VAL : Byte // Rückmeldung + InOut: + Temp: + Quelle : Any // Zeiger, wo Rein-Daten sind + Ziel : Any // Zeiger, FIFO-Stelle + Kopf : Byte // Datenliste-Kennnung (DA) + Datensatzlaenge : Byte // Datensatzlänge in Word (01 - F0) F0=128 + Listenlaenge : Int // Länge der Datenliste (maximale Anzahl der Datensätze) + Stammdaten : Int // Stammdatenlänge in Word (1 - 9) + Belegt06 : Int // reserviert von Datenliste + Belegt08 : Int // reserviert von Datenliste + Belegt10 : Int // reserviert von Datenliste + Belegt12 : Int // reserviert von Datenliste + AnzahlEintraege : Int // Anzahl der eingetragenen Datensätze + Reserve16 : Int // Reserve + Reserve18 : Int // Reserve + Para1 : Byte // 1.Aufrufparameter + Para2 : Byte // 2.Aufrufparameter + SFC_RET_VAL : Int // Rückmeldung SFC-Aufruf + SFC_DB_LENGTH : Word // Rückmeldung SFC-Aufruf + LeseStelle : Int // Stelle, wo gelesen werden soll + EraseStelle : Int // Stelle, wo gelöscht werden soll + FirstStelle : Int // Stelle, wo 1. zu bleibende Daten sind + DBDatenliste : Word // Datenlisten-DB + Datenlisten_Ende : Word // Ende der Datenliste + AR2_Speicher : DWord // Adress-Register 2 zwischenspeichern + DBOutDaten : Word // Out-Daten-DB, falls angegeben + OutDaten_Pointer : DWord // Out-Daten-Pointer: Kennung, Adresse + OutDaten_Startpunkt : Word // Out-Daten-Startpunkt: Adresse + Datenblock_inBytes : Word // Datenblocklänge in Bytes + Suchstelle : Word // Bei angegebenen Datensatz suchen + SFC_WRITE_PROT : Bool // Rückmeldung SFC-Aufruf + NichtCopy : Int // Datenmenge, die nicht vorschoben wird + Schleife : Word // Loopzähler + AR1Zeiger : DWord // Statt AR1 (ging nur bis DB-Länge <= 8191 Bytes) + Constant: + Return: + Ret_Val : Void + +--- NW 1: Schnittstellen-DB sinnvoll ? --- + TAR2 + T AR2_Speicher // AR2 zwischenspeichern + + L SSDB + T DBDatenliste + +// CALL TEST_DB +// DB_NUMBER :=#DBDatenliste +// RET_VAL :=#SFC_RET_VAL +// DB_LENGTH :=#SFC_DB_LENGTH +// WRITE_PROT :=#SFC_WRITE_PROT + +CALL FC "TEST_DB_TO_ATTR_DB" (DB_Number:=DBDatenliste, RetVal:=SFC_RET_VAL, DB_Length:=SFC_DB_LENGTH, Write_Prot:=SFC_WRITE_PROT) + + L SFC_RET_VAL + L 2#0000_0000_0000_0000 + <>I + O SFC_WRITE_PROT // schreibgeschützt + JC Err0 // kein Datenlisten-Bereich + + +--- NW 2: Quelle-Pointer erzeugen: --- + L 16#1004 // Kennung 10 + Word=04 + T LW0 // Any-Kennung, Datentyp + L 16#000A // 10 Dw´s holen + T LW2 // Wiederholungen + L SSDB + T LW4 // DB_Nummer + L SSDW // Adresse + SLD 3 + L 16#8400_0000 // Kennung: Daten + OD + T LD6 // Kennung, Adresse + +CALL SYS "BLKMOV" (SRCBLK:=Quelle, RET_VAL:=SFC_RET_VAL, DSTBLK:=P#L20.0 WORD 10) // 1.-10.DW Datenliste holen + + L SFC_RET_VAL + L 2#0000_0000_0000_0000 + <>I + JC Err1 + + +--- NW 3: Zeigerüberprüfung --- + L Kopf // Datenliste-Kopf + L 16#DB // = Datenlistekennung ? + <>I // Nein ! + JC Err0 // kein Datenlistebereich + + L 1 + L Datensatzlaenge // Datenblocklänge + >I + JC Err0 // kein Datenlistebereich + + L 128 + >I + JC Err0 // kein Datenlistebereich + + L 1 + L Listenlaenge // Max.Anzahl von Datenblöcken + >I + JC Err0 // kein Datenlistebereich + + L 1 + L Stammdaten // Anzahl der Stammdaten + >I + JC Err0 // kein Datenlistebereich + + L 9 + >I + JC Err0 // kein Datenlistebereich + + L Stammdaten // Anzahl der Stammdaten + L Datensatzlaenge // Datenblocklänge + >I + JC Err0 // kein Datenlistebereich + + L Listenlaenge // Länge der Datenliste + L Datensatzlaenge // Datenblocklänge + *I + L 2 // DB byteorientiert + *I + + 20 // Speichern ab 10.DW + L SSDW + +I + T Datenlisten_Ende + ITD + SLD 3 + T AR1Zeiger // /Statt AR1 (ging nur bis DB-Länge <= 8191 Bytes) + + OPN DB[DBDatenliste] + + L Datenlisten_Ende + L SFC_DB_LENGTH + >I // Datenlisten-DB ist zu kurz! + JC Err0 // kein Datenlisten-Bereich + + L DBW [AR1Zeiger] + L 16#DBEE // Datenliste-Endekennung ? + <>I // Nein ! + JC Err0 // kein Datenlisten-Bereich + + L Datensatzlaenge // Datenblocklänge + L 2 + *I + T Datenblock_inBytes // Datenblocklänge in Bytes + + +--- NW 4: Auftrag kontrollieren --- + L PARA + T LW40 // Aufrufparameter zwischenspeichern + + L Para2 + L 16#00 + <=I + JC Err3 // Falscher Aufrufparameter + + CAC + L Listenlaenge // Länge der Datenliste (maximale Anzahl der Datensätze) + >I + JC Err3 // Falscher Aufrufparameter + + L 16#0A // XX = 0A ? (Datensatz YY lesen) + L Para1 + <>I // Nein ! + JC W400 + +// Eintrag lesen: + L Para2 // Datensatz YY + + -1 // 1.Datensatz ohne Offset + L Datenblock_inBytes // Datenblocklänge in bytes + *I + + 20 + L SSDW + +I + T LeseStelle // Stelle, wo gelesen werden soll + + JU Nw06 // OutDaten ok ? + +W400: L 16#0E // XX = 0E ? (Datensatz YY löschen) + <>I // Nein ! + JC W401 + +// Datensatz löschen: + L AnzahlEintraege + L 0 + ==I + JC Err2 // Liste ist leer + + L Para2 // Datensatz YY + L AnzahlEintraege // zu löschender Datensatz ist grösser als Einträge ? + >I // Ja ! + JC Ende // Keine Aktion + + L Para2 // Datensatz YY + + -1 // 1.Datensatz ohne Offset + L Datenblock_inBytes // Datenblocklänge in bytes + *I + + 20 + L SSDW + +I + T EraseStelle // Stelle, wo gelöscht werden soll + + JU Nw08 // Daten löschen + +W401: L 16#0D // XX = 0D ? (Datensätze YY löschen, ab 1.DS) + L Para1 + <>I // Nein ! + JC W402 + +// Datenblock löschen: + L AnzahlEintraege + L 0 + ==I + JC Err2 // Liste ist leer + + L Para2 // Anzahl Datensätze YY + L Datenblock_inBytes // Datenblocklänge in bytes + *I + + 20 + L SSDW + +I + T FirstStelle // Stelle, wo 1. zu bleibende Daten sind + + JU Nw09 + + BEU + +W402: JU Err3 // Falscher Aufrufparameter + + +--- NW 5: Outdaten ok ? --- + +// Out-DATEN-Pointer übernehmen: +Nw06: L P# + LAR2 + + L NoneW [AR2,] + T DBOutDaten // Outdaten-DB + L NoneD [AR2,] // Kennung, Adresse + T OutDaten_Pointer + + L DBOutDaten // Outdaten-DB + L 0 // Angegeben ? + ==I // Nein + JC Nw07 + +// CALL TEST_DB +// DB_NUMBER :=#DBOutDaten +// RET_VAL :=#SFC_RET_VAL +// DB_LENGTH :=#SFC_DB_LENGTH +// WRITE_PROT :=#SFC_WRITE_PROT + +CALL FC "TEST_DB_TO_ATTR_DB" (DB_Number:=DBOutDaten, RetVal:=SFC_RET_VAL, DB_Length:=SFC_DB_LENGTH, Write_Prot:=SFC_WRITE_PROT) + + + L SFC_RET_VAL + L 2#0000_0000_0000_0000 // Fehler vorhanden ? + <>I // Ja ! + JC Err5 // Undefinierte Outdaten + + L NoneD [AR2,] // Kennung, Adresse + L 16#00FF_FFFF // Ohne Kennung + AW + SRW 3 // Ohne Bit + T OutDaten_Startpunkt + + L OutDaten_Startpunkt + L SFC_DB_LENGTH + >I // Outdaten-DB ist zu kurz + JC Err5 // Undefinierte Outdaten + + +--- NW 6: Daten aus Datenliste lesen (in OUTDaten übergeben) --- +// Quelle-Pointer erzeugen: +Nw07: L 16#1004 // Kennung 10 + Word=04 + T LW0 + T LW10 // Any-Kennung, Datentyp + L Datensatzlaenge // Datenwords speichern + T LW2 + T LW12 // Wiederholungen + +// DATEN-Pointer übernehmen: + L SSDB + T LW4 // DB_Nummer + L LeseStelle // Adresse + SLD 3 + L 16#8400_0000 // Kennung: Daten + OD + T LD6 // Kennung, Adresse + +// Ziel-Pointer erzeugen: +// Kennung + Datenbytes s.o. + + L DBOutDaten + T LW14 // DB_Nummer + L OutDaten_Pointer + T LD16 // Kennung, Adresse + +CALL SYS "BLKMOV" (SRCBLK:=Quelle, RET_VAL:=SFC_RET_VAL, DSTBLK:=Ziel) // DatenSortliste-Daten speichern + + L SFC_RET_VAL + L 2#0000_0000_0000_0000 + <>I + JC Err1 + + JU Ende + + +--- NW 7: Daten aus Datenliste löschen ? --- +// Gemeinsame Daten für Pointer erzeugen: +Nw08: L 16#1004 // Kennung 10 + Word=04 + T LW0 + T LW10 // Any-Kennung, Datentyp + + L Datensatzlaenge // Datensatzlänge + L Para2 // Datensatz YY + *I + T NichtCopy // Datenmenge, die nicht vorschoben wird + + L Listenlaenge // Länge der Datenliste + L Datensatzlaenge // Datenblocklänge + *I // Gesamtdatenlänge in Words + L NichtCopy // Datenmenge, die nicht vorschoben wird + -I // abziehen + T LW2 + T LW12 // Wiederholungen + + L SSDB + T LW4 + T LW14 // DB_Nummer + +// Quelle-Pointer erzeugen: + L EraseStelle // Stelle, wo gelöscht werden soll + L Datenblock_inBytes // Datenblocklänge in Bytes + +I + SLD 3 + L 16#8400_0000 // Kennung: Daten + OD + T LD6 // Kennung, Adresse + +// Ziel-Pointer erzeugen: + L EraseStelle // Stelle, wo gelöscht werden soll + SLD 3 + L 16#8400_0000 // Kennung: Daten + OD + T LD16 // Kennung, Adresse + +// Daten verschieben: +CALL SYS "BLKMOV" (SRCBLK:=Quelle, RET_VAL:=SFC_RET_VAL, DSTBLK:=Ziel) // DatenSortliste-Daten verschieben + + L SFC_RET_VAL + L 2#0000_0000_0000_0000 + <>I + JC Err1 + +// Letzte Daten löschen: + L Datenlisten_Ende // Ende des Datenbereichs + L Datenblock_inBytes // Datenblocklänge in Bytes + -I // Ab hier löschen ! + ITD + SLD 3 + T AR1Zeiger // /Statt AR1 (ging nur bis DB-Länge <= 8191 Bytes) + + L Datensatzlaenge // Datensatzlänge +L080: T Schleife + + OPN DB[DBDatenliste] + + L 0 // Daten löschen + T DBW [AR1Zeiger] + + L AR1Zeiger + SRD 3 + L 2 + +D + SLD 3 + T AR1Zeiger + + L Schleife + LOOP L080 + + L AnzahlEintraege // Anzahl der eingetragenen Datensätze + + -1 + T AnzahlEintraege + + L 0 + >=I + JC w080 + + T AnzahlEintraege // Minimum übergeben + +w080: L SSDW + + 14 // Anzahl der Einträge + ITD + SLD 3 + T AR1Zeiger // /Statt AR1 (ging nur bis DB-Länge <= 8191 Bytes) + + OPN DB[DBDatenliste] + L AnzahlEintraege // Anzahl der eingetragenen Datensätze + T DBW [AR1Zeiger] // Anzahl der Einträge + + JU Ende + + +--- NW 8: Datensätze aus Datenliste löschen ? --- +// Gemeinsame Daten für Pointer erzeugen: +Nw09: L 16#1004 // Kennung 10 + Word=04 + T LW0 + T LW10 // Any-Kennung, Datentyp + + L Datensatzlaenge // Datensatzlänge + L Para2 // Anzahl Datensätze YY + *I + T NichtCopy // Datenmenge, die nicht vorschoben wird + + L Listenlaenge // Länge der Datenliste + L Datensatzlaenge // Datenblocklänge + *I // Gesamtdatenlänge in Words + L NichtCopy // Datenmenge, die nicht vorschoben wird + -I // abziehen + T LW2 + T LW12 // Wiederholungen + + L SSDB + T LW4 + T LW14 // DB_Nummer + +// Quelle-Pointer erzeugen: + L FirstStelle // Stelle, wo 1. zu bleibende Daten sind + SLD 3 + L 16#8400_0000 // Kennung: Daten + OD + T LD6 // Kennung, Adresse + +// Ziel-Pointer erzeugen: + L SSDW + + 20 // 1.DS + SLD 3 + L 16#8400_0000 // Kennung: Daten + OD + T LD16 // Kennung, Adresse + +// Daten verschieben: +CALL SYS "BLKMOV" (SRCBLK:=Quelle, RET_VAL:=SFC_RET_VAL, DSTBLK:=Ziel) // DatenSortliste-Daten verschieben + + L SFC_RET_VAL + L 2#0000_0000_0000_0000 + <>I + JC Err1 + +// Letzte Daten löschen: + L Datenlisten_Ende // Ende des Datenbereichs + L NichtCopy // Datenmenge, die nicht vorschoben wird + -I + L NichtCopy // 2 mal, da Angabe in Word (Angabe in Byte benötigt!) + -I // Ab hier löschen ! + ITD + SLD 3 + T AR1Zeiger // /Statt AR1 (ging nur bis DB-Länge <= 8191 Bytes) + + L NichtCopy // Datenmenge, die nicht vorschoben wird +L090: T Schleife + + OPN DB[DBDatenliste] + + L 0 // Daten löschen + T DBW [AR1Zeiger] + + L AR1Zeiger + SRD 3 + L 2 + +D + SLD 3 + T AR1Zeiger + + L Schleife + LOOP L090 + + L AnzahlEintraege // Anzahl der eingetragenen Datensätze + L Para2 // Anzahl Datensätze YY + -I + T AnzahlEintraege + + L 0 + >=I + JC w090 + + T AnzahlEintraege // Minimum übergeben + +w090: L SSDW + + 14 // Anzahl der Einträge + ITD + SLD 3 + T AR1Zeiger // /Statt AR1 (ging nur bis DB-Länge <= 8191 Bytes) + + OPN DB[DBDatenliste] + L AnzahlEintraege // Anzahl der eingetragenen Datensätze + T DBW [AR1Zeiger] // Anzahl der Einträge + + JU Ende + + +--- NW 9: Fehlerausgabe / RET_VAL --- +Ende: SET // VKE = 1 ohne Fehler !!! + L 2#0000_0000_0000_0000 // Ok-Status + JU Ok +Err0: L 2#0000_0000_0000_0001 // Kein Datenlistebereich + JU Err +Err1: L 2#0000_0000_0000_0010 // SFC20-Aufruf mit Fehler + JU Err +Err2: L 2#0000_0000_0000_0100 // Sortliste ist leer + JU Err +Err3: L 2#0000_0000_0000_1000 // Falscher Parameter bei Aufruf + JU Err +Err5: L 2#0000_0000_0010_0000 // Undefinierte OUTDaten + +Err: CLR // VKE = 0 bei Fehler !!! + +Ok: T RE_VAL + SAVE // VKE in BIE-Bit speichern + + L AR2_Speicher // AR2 zurückspeichern + LAR2 + diff --git a/=A01+UH07-KF00/Programmbausteine/Module/DatenReset.awl b/=A01+UH07-KF00/Programmbausteine/Module/DatenReset.awl new file mode 100644 index 0000000..9f935f4 --- /dev/null +++ b/=A01+UH07-KF00/Programmbausteine/Module/DatenReset.awl @@ -0,0 +1,234 @@ +=== FC 87: DatenReset [STL] === +INTERFACE: + Input: + SSDB : Int // Datenlisten-DB + SSDW : Int // Datenlisten-1.DW + Output: + RE_VAL : Byte // Rückmeldung + InOut: + Temp: + Quelle : Any // Zeiger, wo Rein-Daten sind + Ziel : Any // Zeiger, FIFO-Stelle + Kopf : Byte // Datenliste-Kennnung (DA) + Datensatzlaenge : Byte // Datensatzlänge in Word (01 - F0) F0=128 + Listenlaenge : Int // Länge der Datenliste (maximale Anzahl der Datensätze) + Stammdaten : Int // Stammdatenlänge in Word (1 - 9) + IndDB : Word // Indizierter DB (nur bei Stammdaten = 1 erlaubt !!!) + IndDB_Laenge : Int // Länge des indizierten DB in Einträge (nur bei Stammdaten = 1 erlaubt !!!) + IndDaten_FC : Int // FC zum Wandeln der indizierte Daten (nur bei Stammdaten = 1 erlaubt !!!) + Suchzeiger : Int // Speicherung des letzten Zugriffs / Suchzeiger + Belegt14 : Int // reserviert von Sort-Datenliste + Reserve16 : Int // Reserve + Reserve18 : Int // Reserve + DBDatenliste : Word // Datenlisten-DB + SFC_RET_VAL : Int // Rückmeldung SFC-Aufruf + SFC_DB_LENGTH : Word // Rückmeldung SFC-Aufruf + Datenlisten_Ende : Word // Ende der Datenliste + Schleife : Word // Loopzähler + SFC_WRITE_PROT : Bool // Rückmeldung SFC-Aufruf + AR1Zeiger : DWord // Statt AR1 (ging nur bis DB-Länge <= 8191 Bytes) + DB_Länge : Int + Constant: + Return: + Ret_Val : Void + +--- NW 1: Schnittstellen-DB sinnvoll ? --- + L SSDB + T DBDatenliste + +CALL FC "TEST_DB_TO_ATTR_DB" (DB_Number:=DBDatenliste, RetVal:=SFC_RET_VAL, DB_Length:=SFC_DB_LENGTH, Write_Prot:=SFC_WRITE_PROT) + +CALL FC "BCD (4stellig)_to_INT" (BCD_Wert:=SFC_DB_LENGTH, Int_Wert:="DB_Länge") + + L SFC_RET_VAL + L 2#0000_0000_0000_0000 + <>I + O SFC_WRITE_PROT + JC Err0 // kein Datenlisten-Bereich + + +--- NW 2: Quelle-Pointer erzeugen: --- + L 16#1004 // Kennung 10 + Word=04 + T LW0 // Any-Kennung, Datentyp + L 16#000A // 10 Dw´s holen + T LW2 // Wiederholungen + L SSDB + T LW4 // DB_Nummer + L SSDW // Adresse + SLD 3 + L 16#8400_0000 // Kennung: Daten + OD + T LD6 // Kennung, Adresse + +CALL SYS "BLKMOV" (SRCBLK:=Quelle, RET_VAL:=SFC_RET_VAL, DSTBLK:=P#L20.0 WORD 10) // 1.-10.DW Datenliste holen + + L SFC_RET_VAL + L 2#0000_0000_0000_0000 + <>I + JC Err1 + + +--- NW 3: Zeigerüberprüfung --- + L Kopf // Datenliste-Kopf + L 16#DA // = Datenlistekennung ? + <>I // Nein ! + JC Err0 // kein Datenlistebereich + + L 1 + L Datensatzlaenge // Datenblocklänge + >I + JC Err0 // kein Datenlistebereich + + L 128 + >I + JC Err0 // kein Datenlistebereich + + L 1 + L Listenlaenge // Max.Anzahl von Datenblöcken + >I + JC Err0 // kein Datenlistebereich + + L 1 + L Stammdaten // Anzahl der Stammdaten + >I + JC Err0 // kein Datenlistebereich + + L 9 + >I + JC Err0 // kein Datenlistebereich + + L Stammdaten // Anzahl der Stammdaten + L Datensatzlaenge // Datenblocklänge + >I + JC Err0 // kein Datenlistebereich + + L Listenlaenge // Länge der Datenliste + L Datensatzlaenge // Datenblocklänge + *I + L 2 // DB byteorientiert + *I + + 20 // Speichern ab 10.DW + L SSDW + +I + T Datenlisten_Ende + ITD + SLD 3 + T AR1Zeiger // /Statt AR1 (ging nur bis DB-Länge <= 8191 Bytes) + + OPN DB[DBDatenliste] + + L Datenlisten_Ende + L "DB_Länge" + >I // Datenlisten-DB ist zu kurz! + JC Err0 // kein Datenlisten-Bereich + + L DBW [AR1Zeiger] + L 16#DAEE // Datenliste-Endekennung ? + <>I // Nein ! + JC Err0 // kein Datenlisten-Bereich + + +--- NW 4: Indizierung löschen ? --- + L IndDB // Indizierter DB + L 0 // =0 ? + ==I // Kein indizierter DB ! + JC Nw05 + +CALL FC "TEST_DB_TO_ATTR_DB" (DB_Number:=IndDB, RetVal:=SFC_RET_VAL, DB_Length:=SFC_DB_LENGTH, Write_Prot:=SFC_WRITE_PROT) + +CALL FC "BCD (4stellig)_to_INT" (BCD_Wert:=SFC_DB_LENGTH, Int_Wert:="DB_Länge") + + L SFC_RET_VAL + L 2#0000_0000_0000_0000 + <>I + O SFC_WRITE_PROT + JC Nw05 // kein Indizier-DB vorhanden + + L 0 + ITD + SLD 3 + T AR1Zeiger // /Statt AR1 (ging nur bis DB-Länge <= 8191 Bytes) + + OPN DB[IndDB] + + L "DB_Länge" // In Bytes angegeben +L400: T Schleife + + L 0 + T DBB [AR1Zeiger] // Inhalte löschen + + L AR1Zeiger + SRD 3 + L DINT#1 + +D + SLD 3 + T AR1Zeiger + + L Schleife + LOOP L400 + + + +--- NW 5: Datenliste löschen --- +Nw05: L SSDW + + 12 // 12.Dw + ITD + SLD 3 + T AR1Zeiger // /Statt AR1 (ging nur bis DB-Länge <= 8191 Bytes) + + OPN DB[DBDatenliste] + + L 0 + T DBW [AR1Zeiger] // Letzte Speicherung löschen + + L SSDW + + 16 // 16.Dw + ITD + SLD 3 + T AR1Zeiger // /Statt AR1 (ging nur bis DB-Länge <= 8191 Bytes) + + OPN DB[DBDatenliste] + + L 0 + T DBW [AR1Zeiger] // Anzahl Einträge löschen + + L SSDW + + 20 // Daten ab 20.Dw + ITD + SLD 3 + T AR1Zeiger // /Statt AR1 (ging nur bis DB-Länge <= 8191 Bytes) + + L Datensatzlaenge + L Listenlaenge + *I +L500: T Schleife + + OPN DB[DBDatenliste] + + L 0 + T DBW [AR1Zeiger] // Inhalte löschen + + L AR1Zeiger + SRD 3 + L DINT#2 + +D + SLD 3 + T AR1Zeiger + + L Schleife + LOOP L500 + + + +--- NW 6: Fehlerausgabe / RET_VAL --- + SET // VKE = 1 ohne Fehler !!! + JU Ok +Err0: L 2#0000_0000_0000_0001 // Kein Fifobereich + JU Err +Err1: L 2#0000_0000_0000_0010 // SFC20-Aufruf mit Fehler + +Err: CLR // VKE = 0 bei Fehler !!! +Ok: T RE_VAL + + SAVE // VKE in BIE-Bit speichern + diff --git a/=A01+UH07-KF00/Programmbausteine/Module/DatenResetSort.awl b/=A01+UH07-KF00/Programmbausteine/Module/DatenResetSort.awl new file mode 100644 index 0000000..d894185 --- /dev/null +++ b/=A01+UH07-KF00/Programmbausteine/Module/DatenResetSort.awl @@ -0,0 +1,183 @@ +=== FC 90: DatenResetSort [STL] === +INTERFACE: + Input: + SSDB : Int // Datenlisten-DB + SSDW : Int // Datenlisten-1.DW + Output: + RE_VAL : Byte // Rückmeldung + InOut: + Temp: + Quelle : Any // Zeiger, wo Rein-Daten sind + Ziel : Any // Zeiger, FIFO-Stelle + Kopf : Byte // Datenliste-Kennnung (DA) + Datensatzlaenge : Byte // Datensatzlänge in Word (01 - F0) F0=128 + Listenlaenge : Int // Länge der Datenliste (maximale Anzahl der Datensätze) + Stammdaten : Int // Stammdatenlänge in Word (1 - 9) + Belegt06 : Int // reserviert von Datenliste + Belegt08 : Int // reserviert von Datenliste + Belegt10 : Int // reserviert von Datenliste + Belegt12 : Int // reserviert von Datenliste + AnzahlEintraege : Int // Anzahl der eingetragenen Datensätze + Reserve16 : Int // Reserve + Reserve18 : Int // Reserve + Suchzeiger : Int // Speicherung des letzten Zugriffs / Suchzeiger + DBDatenliste : Word // Datenlisten-DB + SFC_RET_VAL : Int // Rückmeldung SFC-Aufruf + SFC_DB_LENGTH : Word // Rückmeldung SFC-Aufruf + Datenlisten_Ende : Word // Ende der Datenliste + Schleife : Word // Loopzähler + SFC_WRITE_PROT : Bool // Rückmeldung SFC-Aufruf + AR1Zeiger : DWord // Statt AR1 (ging nur bis DB-Länge <= 8191 Bytes) + Constant: + Return: + Ret_Val : Void + +--- NW 1: Schnittstellen-DB sinnvoll ? --- + L SSDB + T DBDatenliste + +// CALL TEST_DB +// DB_NUMBER :=#DBDatenliste +// RET_VAL :=#SFC_RET_VAL +// DB_LENGTH :=#SFC_DB_LENGTH +// WRITE_PROT :=#SFC_WRITE_PROT + +CALL FC "TEST_DB_TO_ATTR_DB" (DB_Number:=DBDatenliste, RetVal:=SFC_RET_VAL, DB_Length:=SFC_DB_LENGTH, Write_Prot:=SFC_WRITE_PROT) + + L SFC_RET_VAL + L 2#0000_0000_0000_0000 + <>I + O SFC_WRITE_PROT + JC Err0 // kein Datenlisten-Bereich + + +--- NW 2: Quelle-Pointer erzeugen: --- + L 16#1004 // Kennung 10 + Word=04 + T LW0 // Any-Kennung, Datentyp + L 16#000A // 10 Dw´s holen + T LW2 // Wiederholungen + L SSDB + T LW4 // DB_Nummer + L SSDW // Adresse + SLD 3 + L 16#8400_0000 // Kennung: Daten + OD + T LD6 // Kennung, Adresse + +CALL SYS "BLKMOV" (SRCBLK:=Quelle, RET_VAL:=SFC_RET_VAL, DSTBLK:=P#L20.0 WORD 10) // 1.-10.DW Datenliste holen + + L SFC_RET_VAL + L 2#0000_0000_0000_0000 + <>I + JC Err1 + + +--- NW 3: Zeigerüberprüfung --- + L Kopf // Datenliste-Kopf + L 16#DB // = DatenSortlistekennung ? + <>I // Nein ! + JC Err0 // kein Datenlistebereich + + L 1 + L Datensatzlaenge // Datenblocklänge + >I + JC Err0 // kein Datenlistebereich + + L 128 + >I + JC Err0 // kein Datenlistebereich + + L 1 + L Listenlaenge // Max.Anzahl von Datenblöcken + >I + JC Err0 // kein Datenlistebereich + + L 1 + L Stammdaten // Anzahl der Stammdaten + >I + JC Err0 // kein Datenlistebereich + + L 9 + >I + JC Err0 // kein Datenlistebereich + + L Stammdaten // Anzahl der Stammdaten + L Datensatzlaenge // Datenblocklänge + >I + JC Err0 // kein Datenlistebereich + + L Listenlaenge // Länge der Datenliste + L Datensatzlaenge // Datenblocklänge + *I + L 2 // DB byteorientiert + *I + + 20 // Speichern ab 10.DW + L SSDW + +I + T Datenlisten_Ende + ITD + SLD 3 + T AR1Zeiger // /Statt AR1 (ging nur bis DB-Länge <= 8191 Bytes) + + OPN DB[DBDatenliste] + + L Datenlisten_Ende + L SFC_DB_LENGTH + >I // Datenlisten-DB ist zu kurz! + JC Err0 // kein Datenlisten-Bereich + + L DBW [AR1Zeiger] + L 16#DBEE // DatenSortliste-Endekennung ? + <>I // Nein ! + JC Err0 // kein Datenlisten-Bereich + + +--- NW 4: Datenliste löschen --- + L SSDW + + 14 // 14.Dw + ITD + SLD 3 + T AR1Zeiger // /Statt AR1 (ging nur bis DB-Länge <= 8191 Bytes) + + OPN DB[DBDatenliste] + + L 0 + T DBW [AR1Zeiger] // Anzahl Einträge löschen + + L SSDW + + 20 // 20.Dw + ITD + SLD 3 + T AR1Zeiger // /Statt AR1 (ging nur bis DB-Länge <= 8191 Bytes) + + L Datensatzlaenge + L Listenlaenge + *I +L500: T Schleife + + L 0 // Daten löschen + T DBW [AR1Zeiger] + + L AR1Zeiger + SRD 3 + L 2 + +D + SLD 3 + T AR1Zeiger + + L Schleife + LOOP L500 + + +--- NW 5: Fehlerausgabe / RET_VAL --- + SET // VKE = 1 ohne Fehler !!! + JU Ok +Err0: L 2#0000_0000_0000_0001 // Kein Fifobereich + JU Err +Err1: L 2#0000_0000_0000_0010 // SFC20-Aufruf mit Fehler + +Err: CLR // VKE = 0 bei Fehler !!! +Ok: T RE_VAL + + SAVE // VKE in BIE-Bit speichern + diff --git a/=A01+UH07-KF00/Programmbausteine/Module/Err_vorhanden.awl b/=A01+UH07-KF00/Programmbausteine/Module/Err_vorhanden.awl new file mode 100644 index 0000000..0414324 --- /dev/null +++ b/=A01+UH07-KF00/Programmbausteine/Module/Err_vorhanden.awl @@ -0,0 +1,65 @@ +=== FC 125: Err_vorhanden [STL] === +INTERFACE: + Input: + Check_DB : Int + Anfangs_DW : DInt + Ende_DW : DInt + Output: + Stoerung : Bool // Störung vorhanden + ErrDW : DInt + ErrBits : Int + InOut: + Temp: + Anzeige_DB : Int + Zeiger : DInt // Startwert mit Offset 0 + AR1Zeiger : DWord // Statt AR1 (ging nur bis DB-Länge <= 8191 Bytes) + Constant: + Return: + Ret_Val : Void + +--- NW 1: Check-DB von "Abfangs_DW" bis "Ende_DW" checken --- + SET // GST + R Stoerung + L DINT#-1 // Sonst Störung in DBD0 nicht erkennbar + T ErrDW + L 0 + T ErrBits + + L Check_DB + T Anzeige_DB + + L Anfangs_DW // Mit diesem DW beginnen + T Zeiger // Zeiger + +Loop: L Zeiger // Zeiger + SLD 3 + T AR1Zeiger // Statt Dyn.Bereichsstop (ging nur bis DB-Länge <= 8191 Bytes) + + OPN DB[Anzeige_DB] + + L DBW [AR1Zeiger] // Störungsbits + T ErrBits + L 0 // aktiv ? + <>I // Ja ! + JC Err + + L Zeiger // Startwert mit Offset 0 + L 2 + +D + T Zeiger // Zeiger + L Ende_DW // Letztes DW überschritten? + <=D // Nein ! + JC Loop + + BEU + +Err: SET + S Stoerung + + L Zeiger // Zeiger + T ErrDW + + +--- NW 2: Ende --- + BE + diff --git a/=A01+UH07-KF00/Programmbausteine/Module/FIFOChange.awl b/=A01+UH07-KF00/Programmbausteine/Module/FIFOChange.awl new file mode 100644 index 0000000..54cf02d --- /dev/null +++ b/=A01+UH07-KF00/Programmbausteine/Module/FIFOChange.awl @@ -0,0 +1,327 @@ +=== FC 84: FIFOChange [STL] === +INTERFACE: + Input: + SSDB : Int // Schnittstellen-DB + SSDW : Int // Schnittstellen-1.DW + CH_POS : Int // Position des Eintrags, der zu ändernden Daten + CHANGEDATEN : Pointer // Wechsel-Daten-Schnittstelle + Output: + RE_VAL : Byte // Rückmeldung + InOut: + Temp: + Quelle : Any // Zeiger, wo Rein-Daten sind + Ziel : Any // Zeiger, FIFO-Stelle + Kopf : Byte // Fifo-Kennung (FF) + Datensatzlaenge : Byte // Datensatzlänge in Word (1 - 128) + FifoLaenge : Int // Länge des Fifo (maximale Anzahl der Datensätze) + Bringzeiger : Int // Zeiger, wohin nächster Eintrag gespeichert wird + Holzeiger : Int // Zeiger, woher nächste Daten geholt werden + Anzahl : Int // Anzahl der Datensätze (eingetragene) + Status : Word // Status des Fifo + Err : Byte // Fehlerbits + MinHolzeiger : Int // Minimum Holzeiger + MaxHolzeiger : Int // Maximum Holzeiger + DBFifo : Word // FIFO-DB + SFC_RET_VAL : Int // Rückmeldung SFC-Aufruf + SFC_DB_LENGTH : Word // Rückmeldung SFC-Aufruf + Fifo_Ende : Word // Ende des Fifo + AlleDaten : Word // Anzahl der bytes für alle Daten + Offset : Word // Offset zu überschreibender Datensatz + NixSave : Bool // Status nicht speichern + SFC_WRITE_PROT : Bool // Rückmeldung SFC-Aufruf + AR1Zeiger : DWord // Statt AR1 (ging nur bis DB-Länge <= 8191 Bytes) + AR1Start : DInt // Startwert mit Offset 0 + Constant: + Return: + Ret_Val : Void + +--- NW 1: Schnittstellen-DB sinnvoll ? --- + L SSDB + T DBFifo + +// CALL TEST_DB +// DB_NUMBER :=#DBFifo +// RET_VAL :=#SFC_RET_VAL +// DB_LENGTH :=#SFC_DB_LENGTH +// WRITE_PROT :=#SFC_WRITE_PROT + +CALL FC "TEST_DB_TO_ATTR_DB" (DB_Number:=DBFifo, RetVal:=SFC_RET_VAL, DB_Length:=SFC_DB_LENGTH, Write_Prot:=SFC_WRITE_PROT) + + + L SFC_RET_VAL + L 2#0000_0000_0000_0000 + <>I + O SFC_WRITE_PROT + = NixSave // Status nicht speichern + JC Err0 // kein Fifobereich + + +--- NW 2: Quelle-Pointer erzeugen: --- + L 16#1004 // Kennung 10 + Word=04 + T LW0 // Any-Kennung, Datentyp + L 16#0006 // 6 Dw´s holen + T LW2 // Wiederholungen + L SSDB + T LW4 // DB_Nummer + L SSDW // Adresse + SLD 3 + L 16#8400_0000 // Kennung: Daten + OD + T LD6 // Kennung, Adresse + +CALL SYS "BLKMOV" (SRCBLK:=Quelle, RET_VAL:=SFC_RET_VAL, DSTBLK:=P#L20.0 WORD 6) // 1.-6.DW FIFO holen + + L Status + L 2#0000_0000_1110_0000 + AW + T Err + JP Err // Kapitalfehler vorhanden + + L SFC_RET_VAL + L 2#0000_0000_0000_0000 + <>I + JC Err1 + + +--- NW 3: Zeigerüberprüfung --- + L Kopf // Fifo-Kopf + L 16#FF // = Fifokennung ? + <>I // Nein ! + = NixSave // Status nicht speichern + JC Err0 // kein Fifobereich + + L 1 + L Datensatzlaenge // Datenblocklänge + >I + JC Err0 // kein Fifobereich + + L 128 + >I + JC Err0 // kein Fifobereich + + L 1 + L FifoLaenge // Max.Anzahl von Datenblöcken + >I + JC Err0 // kein Fifobereich + + L SSDW + + 40 // Speichern ab 20.DW + T MinHolzeiger // Minimum Bringzeiger + + L FifoLaenge // Länge FIFO (in Word) + + -1 + L Datensatzlaenge // Datenblocklänge + *I + L 2 // DB byteorientiert + *I + + 40 // Speichern ab 20.DW + L SSDW + +I + T MaxHolzeiger // Maximum Bringzeiger + + L Datensatzlaenge // Datenblocklänge + L 2 // DB byteorientiert + *I + L MaxHolzeiger // Maximum Holzeiger + +I // Zeiger Endekennung + T Fifo_Ende + ITD + T AR1Start // Startwert mit Offset 0 + SLD 3 + T AR1Zeiger // /Statt Dyn.Bereichsstop (ging nur bis DB-Länge <= 8191 Bytes) + + OPN DB[DBFifo] + + L Fifo_Ende + L SFC_DB_LENGTH + >I // Fifo-DB ist zu kurz! + JC Err0 // kein Fifo-Bereich + + L DBW [AR1Zeiger] + L 16#FFEE // Fifo-Endekennung ? + <>I // Nein ! + JC Err0 // kein Fifobereich + + L MinHolzeiger // Minimum Holzeiger + L Holzeiger // Holzeiger + <=I // Ok ? + JC W300 // Ja! + + L 0 // Grundstellung ? + <>I // Nein ! + JC Err6 // Holzeiger ist ausserhalb + + L Holzeiger // Holzeiger Grundstellung ? + <>I // Nein ! + JC Err6 // Holzeiger ist ausserhalb + + L Anzahl // Anzahl Datensätze + L 0 // Grundstellung ? + <>I // Nein ! + JC Err6 // Holzeiger ist ausserhalb + + L MinHolzeiger // Minimum Holzeiger + T Bringzeiger // Bringzeiger + T Holzeiger // Holzeiger + +W300: L MaxHolzeiger // Maximum Holzeiger + <=I // Ok ? + JC W301 // Ja! + JU Err6 // Holzeiger ist ausserhalb + + +W301: L Bringzeiger // Bringzeiger + L Holzeiger // Holzeiger + ==I // Identisch ! + A( + L FifoLaenge + L Anzahl // Anzahl der gespeicherten Datensätze + <>I // Fifo noch nicht voll ! + ) + A( + L 0 + <>I // Datensätze aber noch vorhanden ! + ) + JC Err7 // Versatz Bring-/Holzeiger + + L Bringzeiger // Bringzeiger + L Holzeiger // Holzeiger + <>I // Ungleich ! + A( + L FifoLaenge + L Anzahl // Anzahl der gespeicherten Datensätze + ==I // Aber Fifo ist voll ! + O( + L 0 + ==I // Aber keine Datensätze vorhanden ! + ) + ) + JC Err7 // Versatz Bring-/Holzeiger + + L Anzahl // Anzahl der gespeicherten Datensätze + L 0 + ==I // Keine Datensätze vorhanden ! + JC Err2 // Fifo ist leer + + +--- NW 4: Offset bilden --- + L 0 + L CH_POS + >=I + JC Err3 // falscher Parameter bei Aufruf + + L FifoLaenge // Max.Anzahl von Datenblöcken + >I + JC Err3 // falscher Parameter bei Aufruf + + L Anzahl // Anzahl der Datensätze + L CH_POS + I + JC Err1 + + +--- NW 6: Fehlerausgabe / RET_VAL --- + SET // VKE = 1 ohne Fehler !!! + JU Ok +Err0: L 2#0000_0000_0000_0001 // Kein Fifobereich + T Err + JU Err +Err1: S L32.1 // SFC20-Aufruf mit Fehler + JU Err +Err2: S L32.2 // Fifo ist voll + JU Err +Err3: S L32.3 // Falscher Parameter + JU Err +Err4: S L32.4 // Position nicht belegt + JU Err +Err6: S L32.6 // Holzeiger außerhalb + JU Err +Err7: S L32.7 // Versatz Bring-/Holzeiger + +Err: CLR // VKE = 0 bei Fehler !!! +Ok: L Err + T RE_VAL + L Status + OW + T Status + + SAVE // VKE in BIE-Bit speichern + + +--- NW 7: Fifokopfdaten speichern --- + A L32.0 // Falscher Parameter + A NixSave // Status nicht speichern + BEC + + L SSDW + + 10 // Status + ITD + T AR1Start // Startwert mit Offset 0 + SLD 3 + T AR1Zeiger // /Statt Dyn.Bereichsstop (ging nur bis DB-Länge <= 8191 Bytes) + + OPN DB[DBFifo] + + L Err + T DBW [AR1Zeiger] + diff --git a/=A01+UH07-KF00/Programmbausteine/Module/FIFOSearch.awl b/=A01+UH07-KF00/Programmbausteine/Module/FIFOSearch.awl new file mode 100644 index 0000000..fda4b1f --- /dev/null +++ b/=A01+UH07-KF00/Programmbausteine/Module/FIFOSearch.awl @@ -0,0 +1,376 @@ +=== FC 83: FIFOSearch [STL] === +INTERFACE: + Input: + SSDB : Int // Schnittstellen-DB + SSDW : Int // Schnittstellen-1.DW + SEARCHDATEN : Pointer // SuchDaten-Schnittstelle + Laenge : Int // Anzahl der DWs zum Vergleichen im Datensatz + Output: + RE_POS : Int // Position des Eintrags, der gesuchten Daten + RE_VAL : Byte // Rückmeldungen + InOut: + Temp: + Quelle : Any // Zeiger, wo Rein-Daten sind + Ziel : Any // Zeiger, FIFO-Stelle + Kopf : Byte // Fifo-Kennung (FF) + Datensatzlaenge : Byte // Datensatzlänge in Word (1 - 128) + FifoLaenge : Int // Länge des Fifo (maximale Anzahl der Datensätze) + Bringzeiger : Int // Zeiger, wohin nächster Eintrag gespeichert wird + Holzeiger : Int // Zeiger, woher nächste Daten geholt werden + Anzahl : Int // Anzahl der Datensätze (eingetragene) + Status : Word // Status des Fifo + Err : Byte // Fehlerbits + MinHolzeiger : Int // Minimum Holzeiger + MaxHolzeiger : Int // Maximum Holzeiger + DBFifo : Word // FIFO-DB + SFC_RET_VAL : Int // Rückmeldung SFC-Aufruf + SFC_DB_LENGTH : Word // Rückmeldung SFC-Aufruf + Fifo_Ende : Word // Ende des Fifo + AR2_Speicher : DWord // Adress-Register 2 zwischenspeichern + DBSuchdaten : Word // Solldaten-DB, falls angegeben + SuchDaten_Startpunkt : Word // SuchDaten-Startpunkt: Adresse + SuchZeiger : Word // Suchzeiger + Schleife : Word // Loopzähler + NixSave : Bool // Status nicht speichern + SFC_WRITE_PROT : Bool // Rückmeldung SFC-Aufruf + AR1Zeiger : DWord // Statt AR1 (ging nur bis DB-Länge <= 8191 Bytes) + AR1Start : DInt // Startwert mit Offset 0 + sRE_POS : Int // Position des Eintrags, der gesuchten Daten + Constant: + Return: + Ret_Val : Void + +--- NW 1: Schnittstellen-DB sinnvoll ? --- + TAR2 + T AR2_Speicher // AR2 zwischenspeichern + + L SSDB + T DBFifo + +// CALL TEST_DB +// DB_NUMBER :=#DBFifo +// RET_VAL :=#SFC_RET_VAL +// DB_LENGTH :=#SFC_DB_LENGTH +// WRITE_PROT :=#SFC_WRITE_PROT + +CALL FC "TEST_DB_TO_ATTR_DB" (DB_Number:=DBFifo, RetVal:=SFC_RET_VAL, DB_Length:=SFC_DB_LENGTH, Write_Prot:=SFC_WRITE_PROT) + + + L SFC_RET_VAL + L 2#0000_0000_0000_0000 + <>I + = NixSave // Status nicht speichern + O SFC_WRITE_PROT + JC Err0 // kein Fifobereich + + +--- NW 2: Quelle-Pointer erzeugen: --- + L 16#1004 // Kennung 10 + Word=04 + T sRE_POS // Any-Kennung, Datentyp + L 16#0006 // 6 Dw´s holen + T LW2 // Wiederholungen + L SSDB + T LW4 // DB_Nummer + L SSDW // Adresse + SLD 3 + L 16#8400_0000 // Kennung: Daten + OD + T LD6 // Kennung, Adresse + +CALL SYS "BLKMOV" (SRCBLK:=Quelle, RET_VAL:=SFC_RET_VAL, DSTBLK:=P#L20.0 WORD 6) // 1.-6.DW FIFO holen + + L Status + L 2#0000_0000_1110_0000 + AW + T Err + JP Err // Kapitalfehler vorhanden + + L SFC_RET_VAL + L 2#0000_0000_0000_0000 + <>I + JC Err1 + + +--- NW 3: Zeigerüberprüfung --- + L Kopf // Fifo-Kopf + L 16#FF // = Fifokennung ? + <>I // Nein ! + = NixSave // Status nicht speichern + JC Err0 // kein Fifobereich + + L 1 + L Datensatzlaenge // Datenblocklänge + >I + JC Err0 // kein Fifobereich + + L 128 + >I + JC Err0 // kein Fifobereich + + L 1 + L FifoLaenge // Max.Anzahl von Datenblöcken + >I + JC Err0 // kein Fifobereich + + L SSDW + + 40 // Speichern ab 20.DW + T MinHolzeiger // Minimum Holzeiger + + L FifoLaenge // Länge FIFO (in Word) + + -1 + L Datensatzlaenge // Datenblocklänge + *I + L 2 // DB byteorientiert + *I + + 40 // Speichern ab 20.DW + L SSDW + +I + T MaxHolzeiger // Maximum Holzeiger + + L Datensatzlaenge // Datenblocklänge + L 2 // DB byteorientiert + *I + L MaxHolzeiger // Maximum Holzeiger + +I // Zeiger Endekennung + T Fifo_Ende + ITD + T AR1Start // Startwert mit Offset 0 + SLD 3 + T AR1Zeiger // /Statt Dyn.Bereichsstop (ging nur bis DB-Länge <= 8191 Bytes) + + OPN DB[DBFifo] + + L Fifo_Ende + L SFC_DB_LENGTH + >I // Fifo-DB ist zu kurz! + JC Err0 // kein Fifo-Bereich + + L DBW [AR1Zeiger] + L 16#FFEE // Fifo-Endekennung ? + <>I // Nein ! + JC Err0 // kein Fifobereich + + L MinHolzeiger // Minimum Holzeiger + L Holzeiger // Holzeiger + <=I // Ok ? + JC W300 // Ja! + + L 0 // Grundstellung ? + <>I // Nein ! + JC Err6 // Holzeiger ist ausserhalb + + L Bringzeiger // Bringzeiger Grundstellung ? + <>I // Nein ! + JC Err6 // Holzeiger ist ausserhalb + + L Anzahl // Anzahl Datensätze + L 0 // Grundstellung ? + <>I // Nein ! + JC Err6 // Holzeiger ist ausserhalb + + L MinHolzeiger // Minimum Holzeiger + T Bringzeiger // Bringzeiger + T Holzeiger // Holzeiger + + JU Err2 // Fifo ist leer + +W300: L MaxHolzeiger // Maximum Holzeiger + <=I // Ok ? + JC W301 // Ja! + JU Err6 // Holzeiger ist ausserhalb + + +W301: L Bringzeiger // Bringzeiger + L Holzeiger // Holzeiger + ==I // Identisch ! + A( + L FifoLaenge + L Anzahl // Anzahl der gespeicherten Datensätze + <>I // Fifo noch nicht voll ! + ) + A( + L 0 + <>I // Datensätze aber noch vorhanden ! + ) + JC Err7 // Versatz Bring-/Holzeiger + + L Bringzeiger // Bringzeiger + L Holzeiger // Holzeiger + <>I // Ungleich ! + A( + L FifoLaenge + L Anzahl // Anzahl der gespeicherten Datensätze + ==I // Aber Fifo ist voll ! + O( + L 0 + ==I // Aber keine Datensätze vorhanden ! + ) + ) + JC Err7 // Versatz Bring-/Holzeiger + + L Anzahl // Anzahl der gespeicherten Datensätze + L 0 + ==I // Keine Datensätze vorhanden ! + JC Err2 // Fifo ist leer + + +--- NW 4: Fifodaten suchen --- + L 1 + T sRE_POS // RET-POS + + L Holzeiger // Holzeiger + T SuchZeiger // Suchzeiger +W400: ITD + T AR1Start // Startwert mit Offset 0 + SLD 3 + T AR1Zeiger // /Statt Dyn.Bereichsstop (ging nur bis DB-Länge <= 8191 Bytes) + +// DATEN-Pointer übernehmen: + L P# + LAR2 + + L NoneW [AR2,] + T DBSuchdaten // Solldaten-DB + + L DBSuchdaten // Solldaten-DB + L 0 // Angegeben ? + ==I // Nein + JC W401 + +// CALL TEST_DB +// DB_NUMBER :=#DBSuchdaten +// RET_VAL :=#SFC_RET_VAL +// DB_LENGTH :=#SFC_DB_LENGTH +// WRITE_PROT :=#SFC_WRITE_PROT + +CALL FC "TEST_DB_TO_ATTR_DB" (DB_Number:=DBSuchdaten, RetVal:=SFC_RET_VAL, DB_Length:=SFC_DB_LENGTH, Write_Prot:=SFC_WRITE_PROT) + + + L SFC_RET_VAL + L 2#0000_0000_0000_0000 // Fehler vorhanden ? + <>I // Ja ! + JC Err1 // SFC20-Aufruf mit Fehler + + L NoneD [AR2,] // Kennung, Adresse + L 16#00FF_FFFF // Ohne Kennung + AW + SRW 3 // Ohne Bit + T SuchDaten_Startpunkt + + L Datensatzlaenge // Datenblocklänge + L 2 // DB byteorientiert + *I + L SuchDaten_Startpunkt + +I + L SFC_DB_LENGTH + >I // Indaten-DB ist zu kurz + JC Err1 // SFC20-Aufruf mit Fehler + +W401: L NoneD [AR2,] // Kennung, Adresse + LAR2 + + L Laenge // Anzahl der DWs zum Vergleichen im Datensatz +L400: T Schleife + + L DBSuchdaten // Solldaten-DB + L 0 // Angegeben ? + ==I // Nein + JC W402 + + OPN DB[DBSuchdaten] + +W402: L NoneW [AR2,] // Mit Solldaten überprüfen + OPN DB[DBFifo] + L DBW [AR1Zeiger] // Fifo-Daten lesen + <>I // nicht identisch ! + JC W403 + + L AR1Start // Startwert mit Offset 0 + + DINT#2 + T AR1Start // Startwert mit nächstem Offset + SLD 3 + T AR1Zeiger // /Statt Dyn.Bereichsstop (ging nur bis DB-Länge <= 8191 Bytes) + + ADDAR2 P#2.0 + + L Schleife + LOOP L400 + + JU Ende // Datensatz ist in Fifo enthalten + +W403: L sRE_POS // RET-POS + + 1 + T sRE_POS // RET-POS + L Anzahl // Anzahl der Daten im Fifo + >I // Alle Datensätze sind durchsucht + JC Err2 + + L Datensatzlaenge // Datenblocklänge + L 2 // DB byteorientiert + *I + L SuchZeiger // Suchzeiger + +I + T SuchZeiger // Suchzeiger + L MaxHolzeiger // Maximum Holzeiger + <=I // Ende erreicht? Nein! + JC W404 + + L MinHolzeiger // Minimum Holzeiger + T SuchZeiger + +W404: L SuchZeiger // Suchzeiger + JU W400 + + +--- NW 5: Fehlerausgabe / RET_VAL --- +Ende: SET // VKE = 1 ohne Fehler !!! + JU Ok +Err0: L 2#0000_0000_0000_0001 // Kein Fifobereich + T Err + JU Err +Err1: S L32.1 // SFC20-Aufruf mit Fehler + JU Err +Err2: S L32.2 // Fifo ist leer + JU Err +Err6: S L32.6 // Holzeiger außerhalb + JU Err +Err7: S L32.7 // Versatz Bring-/Holzeiger + +Err: L 0 + T sRE_POS // RET-POS = 0 + + CLR // VKE = 0 bei Fehler !!! + +Ok: L Err + T RE_VAL + L Status + OW + T Status + + SAVE // VKE in BIE-Bit speichern + + +--- NW 6: Fifokopfdaten speichern --- + L AR2_Speicher // AR2 zurückspeichern + LAR2 + + A L32.0 // Falscher Parameter + A NixSave // Status nicht speichern + BEC + + L SSDW + + 10 // Status + ITD + T AR1Start // Startwert mit Offset 0 + SLD 3 + T AR1Zeiger // /Statt Dyn.Bereichsstop (ging nur bis DB-Länge <= 8191 Bytes) + + OPN DB[DBFifo] + + L Err + T DBW [AR1Zeiger] + + +--- NW 7: --- + L sRE_POS + T RE_POS diff --git a/=A01+UH07-KF00/Programmbausteine/Module/FifoIn.awl b/=A01+UH07-KF00/Programmbausteine/Module/FifoIn.awl new file mode 100644 index 0000000..daddada --- /dev/null +++ b/=A01+UH07-KF00/Programmbausteine/Module/FifoIn.awl @@ -0,0 +1,500 @@ +=== FC 80: FifoIn [STL] === +INTERFACE: + Input: + SSDB : Int // Schnittstellen-DB + SSDW : Int // Schnittstellen-1.DW + PARA : Word // Aufrufparameter (Auftrag / Anzahl Zusatzdaten) + INDATEN : Pointer // InDaten-Schnittstelle + Output: + RE_VAL : Byte // Rückmeldung + InOut: + Temp: + Quelle : Any // Zeiger, wo Rein-Daten sind + Ziel : Any // Zeiger, FIFO-Stelle + Kopf : Byte // Fifo-Kennung (FF) + Datensatzlaenge : Byte // Datensatzlänge in Word (1 - 128) + FifoLaenge : Int // Länge des Fifo (maximale Anzahl der Datensätze) + Bringzeiger : Int // Zeiger, wohin nächster Eintrag gespeichert wird + Holzeiger : Int // Zeiger, woher nächste Daten geholt werden + Anzahl : Int // Anzahl der Datensätze (eingetragene) + Status : Word // Status des Fifo + Err : Byte // Fehlerbits + Para1 : Byte // 1.Aufrufparameter + Para2 : Byte // 2.Aufrufparameter + Para21 : Byte // 2.Aufrufparameter 1.Stelle + Para22 : Byte // 2.Aufrufparameter 2.Stelle + MinBringzeiger : Int // Minimum Bringzeiger + MaxBringzeiger : Int // Maximum Bringzeiger + DBFifo : Word // FIFO-DB + SFC_RET_VAL : Int // Rückmeldung SFC-Aufruf + SFC_DB_LENGTH : Word // Rückmeldung SFC-Aufruf + Fifo_Ende : Word // Ende des Fifo + Schleife : Word // Loopzähler + Offset : Byte // Offset 1. zu speicherndes Zusatzwort + SFC_WRITE_PROT : Bool // Rückmeldung SFC-Aufruf + NixSave : Bool // Status nicht speichern + BieSpeicher : Bool // Bie-Bit zwischenspeichern + Constant: + Return: + Ret_Val : Void + +--- NW 1: Schnittstellen-DB sinnvoll ? --- + L SSDB + T DBFifo + +// CALL TEST_DB +// DB_NUMBER :=#DBFifo +// RET_VAL :=#SFC_RET_VAL +// DB_LENGTH :=#SFC_DB_LENGTH +// WRITE_PROT :=#SFC_WRITE_PROT + +CALL FC "TEST_DB_TO_ATTR_DB" (DB_Number:=DBFifo, RetVal:=SFC_RET_VAL, DB_Length:=SFC_DB_LENGTH, Write_Prot:=SFC_WRITE_PROT) + + L SFC_RET_VAL + L 2#0000_0000_0000_0000 + <>I + O SFC_WRITE_PROT + = NixSave // Status nicht speichern + JC Err0 // kein Fifobereich + + +--- NW 2: Quelle-Pointer erzeugen: --- + L 16#1004 // Kennung 10 + Word=04 + T LW0 // Any-Kennung, Datentyp + L 16#0006 // 6 Dw´s holen + T LW2 // Wiederholungen + L SSDB + T LW4 // DB_Nummer + L SSDW // Adresse + SLD 3 + L 16#8400_0000 // Kennung: Daten + OD + T LD6 // Kennung, Adresse + +CALL SYS "BLKMOV" (SRCBLK:=Quelle, RET_VAL:=SFC_RET_VAL, DSTBLK:=P#L20.0 WORD 6) // 1.-6.DW FIFO holen + + L Status + L 2#0000_0000_1110_0000 + AW + T Err + JP Err // Kapitalfehler vorhanden + + L SFC_RET_VAL + L 2#0000_0000_0000_0000 + <>I + JC Err1 + + +--- NW 3: Zeigerüberprüfung --- + L Kopf // Fifo-Kopf + L 16#FF // = Fifokennung ? + <>I // Nein ! + = NixSave // Status nicht speichern + JC Err0 // kein Fifobereich + + L 1 + L Datensatzlaenge // Datenblocklänge + >I + JC Err0 // kein Fifobereich + + L 128 + >I + JC Err0 // kein Fifobereich + + L 1 + L FifoLaenge // Max.Anzahl von Datenblöcken + >I + JC Err0 // kein Fifobereich + + L SSDW + + 40 // Speichern ab 20.DW + T MinBringzeiger // Minimum Bringzeiger + + L FifoLaenge // Länge FIFO (in Word) + + -1 + L Datensatzlaenge // Datenblocklänge + *I + L 2 // DB byteorientiert + *I + + 40 // Speichern ab 20.DW + L SSDW + +I + T MaxBringzeiger // Maximum Bringzeiger + + L Datensatzlaenge // Datenblocklänge + L 2 // DB byteorientiert + *I + L MaxBringzeiger // Maximum Bringzeiger + +I // Zeiger Endekennung + T Fifo_Ende + SLW 3 // Pointer erzeugen + LAR1 + + OPN DB[DBFifo] + + L Fifo_Ende + L SFC_DB_LENGTH + >I // Fifo-DB ist zu kurz! + JC Err0 // kein Fifo-Bereich + + L DBW [AR1,] + L 16#FFEE // Fifo-Endekennung ? + <>I // Nein ! + JC Err0 // kein Fifobereich + + L MinBringzeiger // Minimum Bringzeiger + L Bringzeiger // Bringzeiger + <=I // Ok ? + JC W300 // Ja! + + L 0 // Grundstellung ? + <>I // Nein ! + JC Err5 // Bringzeiger ist ausserhalb + + L Holzeiger // Holzeiger Grundstellung ? + <>I // Nein ! + JC Err5 // Bringzeiger ist ausserhalb + + L Anzahl // Anzahl Datensätze + L 0 // Grundstellung ? + <>I // Nein ! + JC Err5 // Bringzeiger ist ausserhalb + + L MinBringzeiger // Minimum Bringzeiger + T Bringzeiger // Bringzeiger + T Holzeiger // Holzeiger + +W300: L MaxBringzeiger // Maximum Bringzeiger + <=I // Ok ? + JC W301 // Ja! + JU Err5 // Bringzeiger ist ausserhalb + + +W301: L Bringzeiger // Bringzeiger + L Holzeiger // Holzeiger + ==I // Identisch ! + A( + L FifoLaenge + L Anzahl // Anzahl der gespeicherten Datensätze + <>I // Fifo noch nicht voll ! + ) + A( + L 0 + <>I // Datensätze aber noch vorhanden ! + ) + JC Err7 // Versatz Bring-/Holzeiger + + L Bringzeiger // Bringzeiger + L Holzeiger // Holzeiger + <>I // Ungleich ! + A( + L FifoLaenge + L Anzahl // Anzahl der gespeicherten Datensätze + ==I // Aber Fifo ist voll ! + O( + L 0 + ==I // Aber keine Datensätze vorhanden ! + ) + ) + JC Err7 // Versatz Bring-/Holzeiger + + +--- NW 4: Nur Zusatzdaten / als 1.Datensatz speichern ? --- + L PARA + T LW33 // Aufrufparameter zwischenspeichern + + L 16#02 // Nur Zusatzdaten speichern ? + L Para1 // 1.Aufrufparameter + <>I // Nein ! + JC W400 + + L Para2 // 2.Aufrufparameter + L 16#00 // =0 ? + ==I // Ja ! + JC Err3 // Falscher Aufrufparameter + + JU Nw06 // Zusatzdaten speichern + +W400: L 16#01 // Als 1.Datensatz speichern ? + <>I // Nein ! + JC Nw05 + + L MinBringzeiger // Minimum Bringzeiger + T Bringzeiger // Bringzeiger + T Holzeiger // Holzeiger + L 0 + T Anzahl // Anzahl Datensätze + + JU Nw06 // Zusatz-Daten speichern? + + +--- NW 5: Hat Fifo Platz / Datenbereich leer ? --- +Nw05: L Anzahl // Anzahl der gespeicherten Datensätze + L FifoLaenge // Max. Anzahl von Datenblöcken + I + JC Err4 // Speicherzelle ist belegt + + ADDAR1 P#2.0 + + L Schleife + LOOP L500 + + +--- NW 6: Zusatzdaten schreiben --- +Nw06: L 16#00 // =0 ? + L Para2 // 2.Aufrufparameter + ==I // Ja ! + JC Nw07 + + L 16#00F0 + AW + SRW 4 + T Para21 // 1.Stelle isolieren + + L Para2 // 2.Aufrufparameter + L 16#000F + AW + T Para22 // 2.Stelle isolieren + + L Para21 + L Para22 + >I // 1.Stelle > 2.Stelle ! + JC Err3 // Falscher Aufrufparameter + + L 16#04 + >I // 2.Stelle > 4 ! + JC Err3 // Falscher Aufrufparameter + + L Para21 + L 16#00 + ==I // 1.Stelle = 0 ! + JC Err3 // Falscher Aufrufparameter + +// Quelle-Pointer erzeugen: + L 16#1004 // Kennung 10 + Word=04 + T LW0 // Any-Kennung, Datentyp + T LW10 // Any-Kennung, Datentyp + L Para22 // bis + L Para21 // von + -I + + 1 + T LW2 // Wiederholungen + T LW12 // Wiederholungen + L 0 + T LW4 // DB_Nummer + + L Para21 // Beginn ab X.Zusatzwort + + -1 + L 2 // byteorientiert + *I + T Offset // Offset 1. zu speicherndes Zusatzwort + + L 16#00F0 // Adresse (ab MW240) + L Offset // falls nicht ab 1.Zusatzwort + +I + SLD 3 + L 16#8300_0000 // Kennung: Merker + OD + T LD6 // Kennung, Adresse + +// Ziel-Pointer erzeugen: +// Kennung + Datenbytes s.o. + L SSDB + T LW14 // DB_Nummer + L SSDW + + 12 // ab 6.Dw speichern + L Offset // falls nicht ab 1.Zusatzwort + +I + SLD 3 + L 16#8400_0000 // Kennung: Daten + OD + T LD16 // Kennung, Adresse + +CALL SYS "BLKMOV" (SRCBLK:=Quelle, RET_VAL:=SFC_RET_VAL, DSTBLK:=Ziel) // Zusatz-Daten speichern + + L SFC_RET_VAL + L 2#0000_0000_0000_0000 + <>I + JC Err1 + + +--- NW 7: Fifodaten schreiben --- +Nw07: L 16#FF // Testsendung ? + L Para1 // 1.Aufrufparameter + ==I // Ja ! + JC Nw08 // Zeiger testweise verändern + + L 16#02 // Nur Zusatzdaten speichern ? + ==I // Ja ! + JC Ende // Fertig ! + +// Quelle-Pointer erzeugen: + + L 16#1004 // Kennung 10 + Word=04 + T LW0 + T LW10 // Any-Kennung, Datentyp + L Datensatzlaenge // Datenbytes speichern + T LW2 + T LW12 // Wiederholungen + +// DATEN-Pointer übernehmen: + L P# + LAR1 + + L NoneW [AR1,] + T LW4 // DB_Nummer + L NoneD [AR1,] + T LD6 // Kennung, Adresse + +// Ziel-Pointer erzeugen: +// Kennung + Datenbytes s.o. + + L SSDB + T LW14 // DB_Nummer + L Bringzeiger // Adresse + SLD 3 + L 16#8400_0000 // Kennung: Daten + OD + T LD16 // Kennung, Adresse + +CALL SYS "BLKMOV" (SRCBLK:=Quelle, RET_VAL:=SFC_RET_VAL, DSTBLK:=Ziel) // FIFO-Daten speichern + + L SFC_RET_VAL + L 2#0000_0000_0000_0000 + <>I + JC Err1 + + +--- NW 8: Bringzeiger, Anzahl erhöhen --- +Nw08: L Datensatzlaenge // Datenblocklänge + L 2 // 1 word = 2 bytes + *I + L Bringzeiger // Bringzeiger + +I + T Bringzeiger // Bringzeiger + L MaxBringzeiger // Maximum Bringzeiger + <=I // Erreicht ? + JC W800 // Nein ! + + L MinBringzeiger // Minimum Bringzeiger + T Bringzeiger // Bringzeiger + +W800: L Anzahl // Anzahl der gespeicherten Datensätze + + 1 + T Anzahl // Anzahl der gespeicherten Datensätze + + +--- NW 9: Versatz Bring-/Holzeiger --- + L Bringzeiger // Bringzeiger + L Holzeiger // Holzeiger + ==I // Identisch ! + A( + L FifoLaenge + L Anzahl // Anzahl der gespeicherten Datensätze + <>I // Fifo noch nicht voll ! + ) + JC Err7 // Versatz Bring-/Holzeiger + + L Bringzeiger // Bringzeiger + L Holzeiger // Holzeiger + <>I // Ungleich ! + A( + L FifoLaenge + L Anzahl // Anzahl der gespeicherten Datensätze + ==I // Aber Fifo ist voll ! + ) + JC Err7 // Versatz Bring-/Holzeiger + + +--- NW 10: Fehlerausgabe / RET_VAL --- +Ende: SET // VKE = 1 ohne Fehler !!! + JU Ok +Err0: L 2#0000_0000_0000_0001 // Kein Fifobereich + T Err + JU Err +Err1: S L32.1 // SFC20-Aufruf mit Fehler + JU Err +Err2: S L32.2 // Fifo ist voll + JU Err +Err3: S L32.3 // Falscher Parameter + JU Err +Err4: S L32.4 // Speicherzelle ist belegt + JU Err +Err5: S L32.5 // Bringzeiger außerhalb + JU Err +Err7: S L32.7 // Versatz Bring-/Holzeiger + +Err: CLR // VKE = 0 bei Fehler !!! +Ok: L Err + T RE_VAL + L Status + OW + T Status + + SAVE // VKE in BIE-Bit speichern + A ?SW? + = BieSpeicher + +--- NW 11: Fifokopfdaten speichern --- + A L32.0 // Falscher Parameter + A NixSave // Status nicht speichern + BEC + + L Anzahl // Anzahl der Datensätze (eingetragene) + + -1 // da vorher zum Test erhöht wurde + T "MW254" // Übergabe an FC+1 (für FIFO-FÖBE) + + L 16#FF // Testsendung ? + L Para1 // 1.Aufrufparameter + ==I // Ja ! + BEC // Weil Zeiger testweise geändert! + +// Ziel-Pointer erzeugen: + + L 16#1004 // Kennung 10 + Word=04 + T LW10 // Any-Kennung, Datentyp + L 16#0004 // 4Dw´s speichern + T LW12 // Wiederholungen + L SSDB + T LW14 // DB_Nummer + L SSDW // Adresse + L 4 + +I + SLD 3 + L 16#8400_0000 // Kennung: Daten + OD + T LD16 // Kennung, Adresse + +CALL SYS "BLKMOV" (SRCBLK:=P#L24.0 WORD 4, RET_VAL:=SFC_RET_VAL, DSTBLK:=Ziel) // Ab Bringzeiger sichern! + + A BieSpeicher + SAVE // VKE in BIE-Bit speichern + + L FifoLaenge // Länge des Fifo (maximale Anzahl der Datensätze) + T "MW248" // Übergabe an FC+1 (für Durchlaufspeicher) + L Bringzeiger // Zeiger, wohin nächster Eintrag gespeichert wird + T "MW250" // Übergabe an FC+1 (für Durchlaufspeicher) + L Holzeiger // Zeiger, woher nächste Daten geholt werden + T "MW252" // Übergabe an FC+1 (für Durchlaufspeicher) + L Anzahl // Anzahl der Datensätze (eingetragene) + T "MW254" // Übergabe an FC+1 (für Durchlaufspeicher) + diff --git a/=A01+UH07-KF00/Programmbausteine/Module/FifoOut.awl b/=A01+UH07-KF00/Programmbausteine/Module/FifoOut.awl new file mode 100644 index 0000000..e72d629 --- /dev/null +++ b/=A01+UH07-KF00/Programmbausteine/Module/FifoOut.awl @@ -0,0 +1,502 @@ +=== FC 81: FifoOut [STL] === +INTERFACE: + Input: + SSDB : Int // Schnittstellen-DB + SSDW : Int // Schnittstellen-1.DW + PARA : Word // Aufrufparameter (Auftrag / Anzahl Zusatzdaten) + Output: + OUTDATEN : Pointer // OutDaten-Schnittstelle + RE_VAL : Byte // Rückmeldung + InOut: + Temp: + Quelle : Any // Zeiger, wo Rein-Daten sind + Ziel : Any // Zeiger, FIFO-Stelle + Kopf : Byte // Fifo-Kennung (FF) + Datensatzlaenge : Byte // Datensatzlänge in Word (1 - 128) + FifoLaenge : Int // Länge des Fifo (maximale Anzahl der Datensätze) + Bringzeiger : Int // Zeiger, wohin nächster Eintrag gespeichert wird + Holzeiger : Int // Zeiger, woher nächste Daten geholt werden + Anzahl : Int // Anzahl der Datensätze (eingetragene) + Status : Word // Status des Fifo + Err : Byte // Fehlerbits + Para1 : Byte // 1.Aufrufparameter + Para2 : Byte // 2.Aufrufparameter + Para21 : Byte // 2.Aufrufparameter 1.Stelle + Para22 : Byte // 2.Aufrufparameter 2.Stelle + MinHolzeiger : Int // Minimum Holzeiger + MaxHolzeiger : Int // Maximum Holzeiger + DBFifo : Word // FIFO-DB + SFC_RET_VAL : Int // Rückmeldung SFC-Aufruf + SFC_DB_LENGTH : Word // Rückmeldung SFC-Aufruf + Fifo_Ende : Word // Ende des Fifo + Schleife : Word // Loopzähler + Offset : Byte // Offset 1. zu lesendes Zusatzwort + SFC_WRITE_PROT : Bool // Rückmeldung SFC-Aufruf + NixSave : Bool // Status nicht speichern + BieSpeicher : Bool // Bie-Bit zwischenspeichern + Lesezeiger : Int // Lesezeiger + Diff : Int // Differenz + Constant: + Return: + Ret_Val : Void + +--- NW 1: Schnittstellen-DB sinnvoll ? --- + L SSDB + T DBFifo + +// CALL TEST_DB +// DB_NUMBER :=#DBFifo +// RET_VAL :=#SFC_RET_VAL +// DB_LENGTH :=#SFC_DB_LENGTH +// WRITE_PROT :=#SFC_WRITE_PROT + +CALL FC "TEST_DB_TO_ATTR_DB" (DB_Number:=DBFifo, RetVal:=SFC_RET_VAL, DB_Length:=SFC_DB_LENGTH, Write_Prot:=SFC_WRITE_PROT) + + L SFC_RET_VAL + L 2#0000_0000_0000_0000 + <>I + O SFC_WRITE_PROT + = NixSave // Status nicht speichern + JC Err0 // kein Fifobereich + + +--- NW 2: Quelle-Pointer erzeugen: --- + L 16#1004 // Kennung 10 + Word=04 + T LW0 // Any-Kennung, Datentyp + L 16#0006 // 6 Dw´s holen + T LW2 // Wiederholungen + L SSDB + T LW4 // DB_Nummer + L SSDW // Adresse + SLD 3 + L 16#8400_0000 // Kennung: Daten + OD + T LD6 // Kennung, Adresse + +CALL SYS "BLKMOV" (SRCBLK:=Quelle, RET_VAL:=SFC_RET_VAL, DSTBLK:=P#L20.0 WORD 6) // 1.-6.DW FIFO holen + + L Status + L 2#0000_0000_1110_0000 + AW + T Err + JP Err // Kapitalfehler vorhanden + + L SFC_RET_VAL + L 2#0000_0000_0000_0000 + <>I + JC Err1 + + +--- NW 3: Zeigerüberprüfung --- + L Kopf // Fifo-Kopf + L 16#FF // = Fifokennung ? + <>I // Nein ! + = NixSave // Status nicht speichern + JC Err0 // kein Fifobereich + + L 1 + L Datensatzlaenge // Datenblocklänge + >I + JC Err0 // kein Fifobereich + + L 128 + >I + JC Err0 // kein Fifobereich + + L 1 + L FifoLaenge // Max.Anzahl von Datenblöcken + >I + JC Err0 // kein Fifobereich + + L SSDW + + 40 // Speichern ab 20.DW + T MinHolzeiger // Minimum Holzeiger + + L FifoLaenge // Länge FIFO (in Word) + + -1 + L Datensatzlaenge // Datenblocklänge + *I + L 2 // DB byteorientiert + *I + + 40 // Speichern ab 20.DW + L SSDW + +I + T MaxHolzeiger // Maximum Holzeiger + + L Datensatzlaenge // Datenblocklänge + L 2 // DB byteorientiert + *I + L MaxHolzeiger // Maximum Holzeiger + +I // Zeiger Endekennung + T Fifo_Ende + SLW 3 // Pointer erzeugen + LAR1 + + OPN DB[DBFifo] + + L Fifo_Ende + L SFC_DB_LENGTH + >I // Fifo-DB ist zu kurz! + JC Err0 // kein Fifo-Bereich + + L DBW [AR1,] + L 16#FFEE // Fifo-Endekennung ? + <>I // Nein ! + JC Err0 // kein Fifobereich + + L MinHolzeiger // Minimum Holzeiger + L Holzeiger // Holzeiger + <=I // Ok ? + JC W300 // Ja! + + L 0 // Grundstellung ? + <>I // Nein ! + JC Err6 // Holzeiger ist ausserhalb + + L Bringzeiger // Bringzeiger Grundstellung ? + <>I // Nein ! + JC Err6 // Holzeiger ist ausserhalb + + L Anzahl // Anzahl Datensätze + L 0 // Grundstellung ? + <>I // Nein ! + JC Err6 // Holzeiger ist ausserhalb + + L MinHolzeiger // Minimum Holzeiger + T Bringzeiger // Bringzeiger + T Holzeiger // Holzeiger + + JU Zus // Zusatzdaten lesen ? + +W300: L MaxHolzeiger // Maximum Holzeiger + <=I // Ok ? + JC W301 // Ja! + JU Err6 // Holzeiger ist ausserhalb + + +W301: L Bringzeiger // Bringzeiger + L Holzeiger // Holzeiger + ==I // Identisch ! + A( + L FifoLaenge + L Anzahl // Anzahl der gespeicherten Datensätze + <>I // Fifo noch nicht voll ! + ) + A( + L 0 + <>I // Datensätze aber noch vorhanden ! + ) + JC Err7 // Versatz Bring-/Holzeiger + + L Bringzeiger // Bringzeiger + L Holzeiger // Holzeiger + <>I // Ungleich ! + A( + L FifoLaenge + L Anzahl // Anzahl der gespeicherten Datensätze + ==I // Aber Fifo ist voll ! + O( + L 0 + ==I // Aber keine Datensätze vorhanden ! + ) + ) + JC Err7 // Versatz Bring-/Holzeiger + + +--- NW 4: Zusatzdaten lesen ? --- +Zus: L PARA + T LW33 // Aufrufparameter zwischenspeichern + + L 16#E2 // Nur Zusatzdaten lesen ? + L Para1 // 1.Aufrufparameter + ==I // Ja ! + A( + L Para2 // 2.Aufrufparameter + L 16#00 // =0 ? + ==I // Ja ! + ) + JC Err3 // Falscher Aufrufparameter + + L 16#00 // =0 ? + L Para2 // 2.Aufrufparameter + ==I // Ja ! + JC Nw05 // Keine Zusatzdaten lesen + + L 16#00F0 + AW + SRW 4 + T Para21 // 1.Stelle isolieren + + L Para2 // 2.Aufrufparameter + L 16#000F + AW + T Para22 // 2.Stelle isolieren + + L Para21 + L Para22 + >I // 1.Stelle > 2.Stelle ! + JC Err3 // Falscher Aufrufparameter + + L 16#04 + >I // 2.Stelle > 4 ! + JC Err3 // Falscher Aufrufparameter + + L Para21 + L 16#00 + ==I // 1.Stelle = 0 ! + JC Err3 // Falscher Aufrufparameter + +// Quelle-Pointer erzeugen: + L 16#1004 // Kennung 10 + Word=04 + T LW0 // Any-Kennung, Datentyp + T LW10 // Any-Kennung, Datentyp + L Para22 // bis + L Para21 // von + -I + + 1 + T LW2 // Wiederholungen + T LW12 // Wiederholungen + + L Para21 // Beginn ab X.Zusatzwort + + -1 + L 2 // byteorientiert + *I + T Offset // Offset 1. zu speicherndes Zusatzwort + + L SSDB + T LW4 // DB_Nummer + L SSDW + + 12 // ab 6.Dw lesen + L Offset // falls nicht ab 1.Zusatzwort + +I + SLD 3 + L 16#8400_0000 // Kennung: Daten + OD + T LD6 // Kennung, Adresse + +// Ziel-Pointer erzeugen: +// Kennung + Datenbytes s.o. + + L 0 + T LW14 // DB_Nummer + + L 16#00F0 // Adresse (MW240) + L Offset // falls nicht ab 1.Zusatzwort + +I + SLD 3 + L 16#8300_0000 // Kennung: Merker + OD + T LD16 // Kennung, Adresse + +CALL SYS "BLKMOV" (SRCBLK:=Quelle, RET_VAL:=SFC_RET_VAL, DSTBLK:=Ziel) // Zusatz-Daten speichern + + L SFC_RET_VAL + L 2#0000_0000_0000_0000 + <>I + JC Err1 + + +--- NW 5: Fifodaten lesen --- +Nw05: L Para1 // 1.Aufrufparameter + L 16#E2 // Nur Zusatzdaten lesen ? + ==I // Ja ! + JC Ende // Fertig ! + + L Anzahl // Anzahl der gespeicherten Datensätze + L 0 + ==I // Keine Datensätze vorhanden ! + JC Err2 // Fifo ist leer + +// Quelle-Pointer erzeugen: + + L 16#1004 // Kennung 10 + Word=04 + T LW0 + T LW10 // Any-Kennung, Datentyp + L Datensatzlaenge // Datenbytes speichern + T LW2 + T LW12 // Wiederholungen + + L SSDB + T LW4 // DB_Nummer + + L Holzeiger // Adresse (erstmal !, falls Para 2=0) + T Lesezeiger // Lesezeiger + L Para1 // 1.Aufrufparameter + L 16#00 // =0 ? + ==I + O( + CAC + L 16#E1 // Datensatz löschen ? + ==I // Ja ! + ) + JC w050 + + CAC // X-te Stelle lesen + + -1 // -1, da 1.ohne Offeset + L Datensatzlaenge // Datenblocklänge + *I + L 2 // DB byteorientiert + *I + L Holzeiger // Adresse + +I + T Lesezeiger // Lesezeiger + L MaxHolzeiger // Maximum Holzeiger + <=I // Ist nicht über Maximum ! + JC w050 + + L FifoLaenge // Länge FIFO (in Word) + L Datensatzlaenge // Datenblocklänge + *I + L 2 // DB byteorientiert + *I + T Diff + + L Lesezeiger // Differenz subtrahieren: + L Diff + -I + T Lesezeiger // Lesezeiger + +w050: L Lesezeiger // Lesezeiger + SLD 3 + L 16#8400_0000 // Kennung: Daten + OD + T LD6 // Kennung, Adresse + +// Ziel-Pointer erzeugen: +// Kennung + Datenbytes s.o. + +// DATEN-Pointer übernehmen: + L P# + LAR1 + + L NoneW [AR1,] + T LW14 // DB_Nummer + L NoneD [AR1,] + T LD16 // Kennung, Adresse + +CALL SYS "BLKMOV" (SRCBLK:=Quelle, RET_VAL:=SFC_RET_VAL, DSTBLK:=Ziel) // FIFO-Daten speichern + + L SFC_RET_VAL + L 2#0000_0000_0000_0000 + <>I + JC Err1 + + +--- NW 6: Daten aus Fifo austragen ? --- + L 16#E1 // Daten löschen ? + L Para1 // 1.Aufrufparameter + <>I // Nein ! + JC Ende // Fertig ! + + L Holzeiger // Holzeiger + SLW 3 // Pointer erzeugen + LAR1 + + OPN DB[DBFifo] + + L Datensatzlaenge +L600: T Schleife + + L 0 + T DBW [AR1,] + + ADDAR1 P#2.0 + + L Schleife + LOOP L600 + + +--- NW 7: Holzeiger, Anzahl erniedrigen --- + L Datensatzlaenge // Datenblocklänge + L 2 // 1 word = 2 bytes + *I + L Holzeiger // Holzeiger + +I + T Holzeiger // Holzeiger + L MaxHolzeiger // Maximum Holzeiger + <=I // Erreicht ? + JC W700 // Nein ! + + L MinHolzeiger // Minimum Holzeiger + T Holzeiger // Holzeiger + +W700: L Anzahl // Anzahl der gespeicherten Datensätze + + -1 + T Anzahl // Anzahl der gespeicherten Datensätze + + +--- NW 8: Versatz Bring-/Holzeiger --- + L Bringzeiger // Bringzeiger + L Holzeiger // Holzeiger + ==I // Identisch ! + A( + L Anzahl // Anzahl der gespeicherten Datensätze + L 0 + <>I // Datensätze aber noch vorhanden ! + ) + JC Err7 // Versatz Bring-/Holzeiger + + L Bringzeiger // Bringzeiger + L Holzeiger // Holzeiger + <>I // Ungleich ! + A( + L Anzahl // Anzahl der gespeicherten Datensätze + L 0 + ==I // Aber keine Datensätze vorhanden ! + ) + JC Err7 // Versatz Bring-/Holzeiger + + +--- NW 9: Fehlerausgabe / RET_VAL --- +Ende: SET // VKE = 1 ohne Fehler !!! + JU Ok +Err0: L 2#0000_0000_0000_0001 // Kein Fifobereich + T Err + JU Err +Err1: S L32.1 // SFC20-Aufruf mit Fehler + JU Err +Err2: S L32.2 // Fifo ist leer + JU Err +Err3: S L32.3 // Falscher Parameter + JU Err +Err6: S L32.6 // Holzeiger außerhalb + JU Err +Err7: S L32.7 // Versatz Bring-/Holzeiger + +Err: CLR // VKE = 0 bei Fehler !!! +Ok: L Err + T RE_VAL + L Status + OW + T Status + + SAVE // VKE in BIE-Bit speichern + A ?SW? + = BieSpeicher + +--- NW 10: Fifokopfdaten speichern --- + A L32.0 // Falscher Parameter + A NixSave // Status nicht speichern + BEC + +// Ziel-Pointer erzeugen: + + L 16#1004 // Kennung 10 + Word=04 + T LW10 // Any-Kennung, Datentyp + L 16#0004 // 4Dw´s speichern + T LW12 // Wiederholungen + L SSDB + T LW14 // DB_Nummer + L SSDW // Adresse + L 4 + +I + SLD 3 + L 16#8400_0000 // Kennung: Daten + OD + T LD16 // Kennung, Adresse + +CALL SYS "BLKMOV" (SRCBLK:=P#L24.0 WORD 4, RET_VAL:=SFC_RET_VAL, DSTBLK:=Ziel) // Ab Bringzeiger sichern! + + A BieSpeicher + SAVE // VKE in BIE-Bit speichern + diff --git a/=A01+UH07-KF00/Programmbausteine/Module/FifoReset.awl b/=A01+UH07-KF00/Programmbausteine/Module/FifoReset.awl new file mode 100644 index 0000000..2468496 --- /dev/null +++ b/=A01+UH07-KF00/Programmbausteine/Module/FifoReset.awl @@ -0,0 +1,204 @@ +=== FC 82: FifoReset [STL] === +INTERFACE: + Input: + SSDB : Int // Schnittstellen-DB + SSDW : Int // Schnittstellen-1.DW + PARA : Word // Aufrufparameter (Durchlaufspeicher?) + Output: + RE_VAL : Byte // Rückmeldung + InOut: + Temp: + Quelle : Any // Zeiger, wo Rein-Daten sind + Kopf : Byte // Fifo-Kennung (FF) + Datensatzlaenge : Byte // Datensatzlänge in Word (1 - 128) + FifoLaenge : Int // Länge des Fifo (maximale Anzahl der Datensätze) + Bringzeiger : Int // Zeiger, wohin nächster Eintrag gespeichert wird + Holzeiger : Int // Zeiger, woher nächste Daten geholt werden + Anzahl : Int // Anzahl der Datensätze (eingetragene) + Status : Word // Status des Fifo + DBFifo : Word // FIFO-DB + SFC_RET_VAL : Int // Rückmeldung SFC-Aufruf + SFC_DB_LENGTH : Word // Rückmeldung SFC-Aufruf + Fifo_Ende : Word // Ende des Fifo + Schleife : Word // Loopzähler + SFC_WRITE_PROT : Bool // Rückmeldung SFC-Aufruf + Constant: + Return: + Ret_Val : Void + +--- NW 1: Schnittstellen-DB sinnvoll ? --- + L SSDB + T DBFifo + +// CALL TEST_DB +// DB_NUMBER :=#DBFifo +// RET_VAL :=#SFC_RET_VAL +// DB_LENGTH :=#SFC_DB_LENGTH +// WRITE_PROT :=#SFC_WRITE_PROT + +CALL FC "TEST_DB_TO_ATTR_DB" (DB_Number:=DBFifo, RetVal:=SFC_RET_VAL, DB_Length:=SFC_DB_LENGTH, Write_Prot:=SFC_WRITE_PROT) + + L SFC_RET_VAL + L 2#0000_0000_0000_0000 + <>I + O SFC_WRITE_PROT + JC Err0 // kein Fifobereich + + +--- NW 2: Quelle-Pointer erzeugen: --- + L 16#1004 // Kennung 10 + Word=04 + T LW0 // Any-Kennung, Datentyp + L 16#0006 // 6 Dw´s holen + T LW2 // Wiederholungen + L SSDB + T LW4 // DB_Nummer + L SSDW // Adresse + SLD 3 + L 16#8400_0000 // Kennung: Daten + OD + T LD6 // Kennung, Adresse + +CALL SYS "BLKMOV" (SRCBLK:=Quelle, RET_VAL:=SFC_RET_VAL, DSTBLK:=P#L10.0 WORD 6) // 1.-6.DW FIFO holen + + L SFC_RET_VAL + L 2#0000_0000_0000_0000 + <>I + JC Err1 + + +--- NW 3: Zeigerüberprüfung --- + L Kopf // Fifo-Kopf + L 16#FF // = Fifokennung ? + <>I // Nein ! + JC Err0 // kein Fifobereich + + L 1 + L Datensatzlaenge // Datenblocklänge + >I + JC Err0 // kein Fifobereich + + L 128 + >I + JC Err0 // kein Fifobereich + + L 1 + L FifoLaenge // Max.Anzahl von Datenblöcken + >I + JC Err0 // kein Fifobereich + + L FifoLaenge // Länge FIFO (in Word) + L Datensatzlaenge // Datenblocklänge + *I + L 2 // DB byteorientiert + *I + + 40 // Speichern ab 20.DW + L SSDW + +I + T Fifo_Ende + SLW 3 // Pointer erzeugen + LAR1 + + OPN DB[DBFifo] + + L Fifo_Ende + L SFC_DB_LENGTH + >I // Fifo-DB ist zu kurz! + JC Err0 // kein Fifo-Bereich + + L DBW [AR1,] + L 16#FFEE // Fifo-Endekennung ? + <>I // Nein ! + JC Err0 // kein Fifobereich + + +--- NW 4: Fifo-Daten löschen --- + L SSDW + + 4 // Ab 2.Dw + SLW 3 // Pointer erzeugen + LAR1 + + OPN DB[DBFifo] + + L Datensatzlaenge + L FifoLaenge + *I + + 18 // 18 Datenwörter (wortorientiert) +L400: T Schleife + + L 0 + T DBW [AR1,] + + ADDAR1 P#2.0 + + L Schleife + LOOP L400 + + + +--- NW 5: Durchlaufspeicher ? --- + L PARA // Aufrufparameter + SRW 4 + L 16#000D // Durchlaufspeicher ? + <>I // Nein ! + JC N006 + + L SSDW + + 4 // Speichern ab 4.DW + SLW 3 // Pointer erzeugen + LAR1 + + OPN DB[DBFifo] + + L SSDW + + 40 // 1.Speicherzelle + T DBW [AR1,] // Bringzeiger + T DBW [AR1,] // Holzeiger + + L FifoLaenge // Fifo ist voll + T DBW [AR1,] // Anzahl + + L PARA // Aufrufparameter + L 16#00D1 // Durchlaufspeicher mit FFFF füllen + <>I // Nein ! + JC N006 + + L FifoLaenge // Fifo ist voll + T DBW [AR1,] // 1.Zusatz-Dw (Anzahl der Daten) + + L 2#0000_0000_0000_0011 // Daten vorhanden/kommen raus + T DBW [AR1,] // 4.Zusatz-Dw (Status) + + L SSDW + + 40 // Ab 20.Dw + SLW 3 // Pointer erzeugen + LAR1 + + OPN DB[DBFifo] + + L Datensatzlaenge + L FifoLaenge + *I +L500: T Schleife + + L 16#FFFF + T DBW [AR1,] + + ADDAR1 P#2.0 + + L Schleife + LOOP L500 + + +--- NW 6: Fehlerausgabe / RET_VAL --- +N006: SET // VKE = 1 ohne Fehler !!! + L 2#0000_0000_0000_0000 + JU Ok +Err0: L 2#0000_0000_0000_0001 // Kein Fifobereich + JU Err +Err1: L 2#0000_0000_0000_0010 // SFC20-Aufruf mit Fehler + +Err: CLR // VKE = 0 bei Fehler !!! +Ok: T RE_VAL + + SAVE // VKE in BIE-Bit speichern + diff --git a/=A01+UH07-KF00/Programmbausteine/Module/INT_to_BCD (4stellig).awl b/=A01+UH07-KF00/Programmbausteine/Module/INT_to_BCD (4stellig).awl new file mode 100644 index 0000000..fa20b46 --- /dev/null +++ b/=A01+UH07-KF00/Programmbausteine/Module/INT_to_BCD (4stellig).awl @@ -0,0 +1,52 @@ +=== FC 79: INT_to_BCD (4stellig) [STL] === +INTERFACE: + Input: + Int_Wert : Int + Output: + BCD_Wert : Word + InOut: + Temp: + Rest : Int + Ergebnis : Int + Constant: + Return: + Ret_Val : Void + +--- NW 1: Rückmeldung --- + L 0 // erst mal köschen + T BCD_Wert + + +--- NW 2: Int-Wert ok ? --- + L Int_Wert + L 0 + I + BEC + + +--- NW 3: INT-Wert wandeln --- + L Int_Wert + L 10 // Damit die linken 3 Stellen + /I + T LD0 // temporär speichen (s.o.) + + L Ergebnis // linken 3 Stellen + ITB // wandeln + SLW 4 // Wieder nach links schieben + T BCD_Wert // zwischen speichern + + L Rest // rechte Stelle + ITB // wandeln + L BCD_Wert // Zwischenergebis + OW // rechte Stelle dazu + T BCD_Wert // BDC-Ergebnis + + +--- NW 4: Ende --- + BE + diff --git a/=A01+UH07-KF00/Programmbausteine/Module/MAntrieb_PowerSave.awl b/=A01+UH07-KF00/Programmbausteine/Module/MAntrieb_PowerSave.awl new file mode 100644 index 0000000..6845456 --- /dev/null +++ b/=A01+UH07-KF00/Programmbausteine/Module/MAntrieb_PowerSave.awl @@ -0,0 +1,496 @@ +=== FB 95: MAntrieb_PowerSave [STL] === +INTERFACE: + Input: + Automatik : Bool // Automatikbetrieb ist aktiv + Handbetrieb : Bool // Handbetrieb ist aktiv + BereichErr : Bool := 1 // Bereichsstörung -> Antrieb stoppen + Q : Bool // Eingang Motorschutz ok + Ptc : Bool // Eingang Motortemperatur ok + Fu : Bool // Eingang Frequenzumrichter ok + QKontroll : Bool // Jetzt Q-Ok-Meldung von Frequenzumrichter (nach Netz EIN) kontrollieren + FuKontroll : Bool // Jetzt Fu-Ok-Meldung von Frequenzumrichter (nach Netz EIN) kontrollieren + ErrQuit : Bool // Motorschutzstörung quittieren + Kontroll_B : Bool // Kontroll-Sensor für Bewegung + T_Nachlauf : Int := 60 // Nachlaufzeit (*1s) + Output: + Antriebrueck : Bool // Rückwärts-Ausgang des Antriebs + Antriebvor : Bool // Vorwärts-Ausgang des Antriebs + Jog1 : Bool // Frequenz 1/3 aktivieren + Jog2 : Bool // Frequenz 2/3 aktivieren + Analog : Int // Ausgangswort für Analogwandler + InOut: + QErr : Bool // Motorschutzstörung + PtcErr : Bool // Temperaturstörung + FuErr : Bool // Frequenzumrichter ist gestört + Err_Antrieb_verklemmt : Bool // Antrieb ist verklemmt (kein Kontroll_B oder dauernd aktiv) + Static: + sJog1 : Bool // Frequenz 1/3 aktivieren + sJog2 : Bool // Frequenz 2/3 aktivieren + sAntriebrueck : Bool // Rückwärts-Ausgang des Antriebs + sAntriebvor : Bool // Vorwärts-Ausgang des Antriebs + Stat : "UAntrieb_PowerSave" // Status des Antriebs + Temp: + Antriebaktiv : Bool // Antrieb ist aktiv + Neustart : Bool // Antrieb wurde erneut gestartet + Frequenz : Real // Frequenz für FC106 + Constant: + +--- NW 1: Zeitwert laden --- + AN Automatik + ON Stat.A_start + JC Nw02 + + L T_Nachlauf // Zeitwert laden + T Stat.T_Zelle + + +--- NW 2: Zeitwert löschen --- +Nw02: AN Automatik + O Stat.A_vor + O Stat.A_rueck + O BereichErr + O QErr + O FuErr + JCN Nw03 + + L 0 // Zeitwert löschen +// // T #Stat.T_Zelle + + +--- NW 3: Motorschutzstörung / Temperaturüberwachung --- +Nw03: A ErrQuit + R QErr + AN Q + A QKontroll + S QErr + + A ErrQuit + R PtcErr + AN Ptc + S PtcErr + + +--- NW 4: Frequenzumrichterstörung --- + AN Stat.Frequenz + AN Stat.Analog + JC en05 + + A ErrQuit + ON FuKontroll + R FuErr + AN Fu + A FuKontroll + S FuErr + +en05: NOP 0 + +--- NW 5: Undefinierte Zustände / Befehle (alle Antriebe) --- + A Automatik // Automatik + Hand aktiv + A Handbetrieb + O + AN Automatik // keine Betriebsart + AN Handbetrieb + O + A Stat.A_vor // Vorwärts + Rückwärts aktiv + A Stat.A_rueck + O + A Stat.H_vor + A Stat.H_rueck + O + A BereichErr // Bereichsstörung + A Automatik // Automatik aktiv + O + AN Stat.Normal // Antrieb nicht eindeutig + AN Stat.Frequenz + AN Stat.Analog + O + A Stat.Normal + A( + O Stat.Frequenz + O Stat.Analog + ) + O + A Stat.Frequenz + A Stat.Analog + O QErr // Motorschutzstörung + O + A Automatik // Automatik aktiv + A PtcErr // Temperaturstörung + JCN en06 + +Stop: SET + R sAntriebvor + R sAntriebrueck + R Stat.T_Ausfertig + R sJog1 + R sJog2 + + L 0.0 // Zeitwert/Frequenz löschen +// // T #Stat.T_Zelle + T Frequenz // Frequenz für FC106 + + JU RET + +en06: NOP 0 + +--- NW 6: Undefinierte Zustände / Befehle (Fu-Zusatz) --- + A Stat.Frequenz + A( + AN Stat.F1 // Keine Frequenz angegeben + AN Stat.F2 + AN Stat.F3 + O + A Stat.F1 // Mehrere Frequenzen angegeben + A( + O Stat.F2 + O Stat.F3 + ) + O + A Stat.F2 // Mehrere Frequenzen angegeben + A Stat.F3 + O FuErr // Frequenzumrichterstörung + ON FuKontroll // Frequenzumrichter ist eingeschaltet + ) + JC Stop + +--- NW 7: Undefinierte Zustände / Befehle (Analog-Zusatz) --- + A Stat.Analog + A( + L Stat.F // Keine Frequenz angegeben + L 0.0 + ==R + AN Stat.F1 // Keine Frequenz angegeben + AN Stat.F2 + AN Stat.F3 + O FuErr // Frequenzumrichterstörung + ON FuKontroll // Frequenzumrichter ist eingeschaltet + ) + JC Stop + + +--- NW 8: Antrieb vorwärts starten --- + A( + A Automatik // Automatik ist aktiv + AN Stat.A_rueck + A( + L Stat.T_Zelle + L 0 // Nachlaufzeit vorhanden ? + <>I // Ja ! + AN Stat.A_PS // PowerSave-Mode: Bei Ausschaltverzögerung anhalten + O Stat.A_vor // Einschalten + ) + O + A Handbetrieb // Handbetrieb aktiv + A Stat.H_vor // Handtaste vorwärts + ) + AN Stat.Stop_vor // Stoppen + A Q // Motorschutz ok + AN QErr // Motorschutzstörung noch aktiv + = sAntriebvor + R Stat.T_Ausfertig + +--- NW 9: Antrieb rückwärts starten --- + A( + A Automatik // Automatik ist aktiv + A Stat.A_rueck // Einschalten + O + A Handbetrieb // Handbetrieb aktiv + A Stat.H_rueck // Handtaste rückwärts + ) + AN Stat.Stop_rueck // Stoppen + A Q // Motorschutz ok + AN QErr // Motorschutzstörung noch aktiv + AN sAntriebvor + = sAntriebrueck + R Stat.T_Ausfertig + +--- NW 10: Frequenz übergeben (Fu-Zusatz) --- + AN Stat.Frequenz + AN Stat.Analog + JC en11 + + A sAntriebvor + AN sAntriebrueck + O + AN sAntriebvor + A sAntriebrueck + = Antriebaktiv + + A Antriebaktiv + A( + O Stat.F1 + O Stat.F3 + ) + = sJog1 + + A Antriebaktiv + A( + O Stat.F2 + O Stat.F3 + ) + = sJog2 + + AN sJog1 // Keine Geschwindigtkeit aktiv + AN sJog2 + AN Stat.Analog // falls analoge Übergabe erfolgt + R sAntriebvor + R sAntriebrueck + +en11: NOP 0 + +--- NW 11: Frequenz übergeben (Analog-Zusatz) --- + AN Stat.Analog + JC en12 + + A sAntriebvor + AN sAntriebrueck + O + AN sAntriebvor + A sAntriebrueck + = Antriebaktiv + + L 0.0 // Falls Stop erwünscht + + AN Antriebaktiv + JC w090 + + L Stat.F +w090: T Frequenz // Frequenz für FC106 + + L 3000.0 // Maximal 3000 U/min ? + <=R // Ja ! + JC w091 + + T Frequenz // Frequenz für FC106 + +w091: L Frequenz + L 0.0 // Keine Geschwindigtkeit aktiv ? + ==R // Ja ! + AN sJog1 // Aber schon Jog-Geschwindigtkeit aktiv + AN sJog2 + R sAntriebvor + R sAntriebrueck + +en12: NOP 0 + +--- NW 12: Steuersignale zurücksetzen --- +RET: A Stat.A_vor // Übergabe an OP + = Stat.OP_A_vor + + A Stat.A_start + = Stat.OP_A_start + + A Stat.A_PS + = Stat.OP_A_PS + + A Stat.Stop_vor + = Stat.OP_Stop_vor + + A Stat.Stop_rueck + = Stat.OP_Stop_rueck + + L Stat.F + T Stat.OP_F + + A Stat.F1 + = Stat.OP_F1 + + A Stat.F2 + = Stat.OP_F2 + + A Stat.F3 + = Stat.OP_F3 + + L 0.0 + T Stat.F + + SET + R Stat.F1 + R Stat.F2 + R Stat.F3 + R Stat.Stop_vor + R Stat.Stop_rueck + R Stat.Stop_intern + R Stat.A_vor + R Stat.A_rueck + R Stat.A_start + R Stat.A_PS + R Stat.H_vor + R Stat.H_rueck + + +--- NW 13: Nachlaufzeit läuft --- + AN "1s-Impuls" // 1s-Impuls + ON sAntriebvor // Antrieb steht + JC Nw14 + + L Stat.T_Zelle + L 0 // Zeit steht ? + ==I // Ja ! + JC Nw14 + + L Stat.T_Zelle + + -1 + T Stat.T_Zelle + + L 0 // Zeit gerade abgelaufen ? + <=I // Ja ! + S Stat.T_Ausfertig + JCN Nw14 + + T Stat.T_Zelle + + +--- NW 14: Analog-Signal wandeln --- +Nw14: AN Stat.Analog + JC en14 + +CALL SYS "UNSCALE" (IN:=Frequenz, HI_LIM:=200.0, LO_LIM:=0.0, BIPOLAR:=FALSE, RET_VAL:=Stat.RET_VAL_FC106, OUT:=Analog) + + L Stat.RET_VAL_FC106 + L 0 // Fehler vorhanden ? + <>I // Ja ! + R sAntriebvor // Antrieb stoppen + R sAntriebrueck + +en14: NOP 0 + + +--- NW 15: Ausgänge an OP übergeben --- + A sAntriebvor + AN Stat.OP_Out_Mvor // beim letzten Zyklus war Motor nicht eingeschaltet + O + A sAntriebrueck + AN Stat.OP_Out_Mrueck // beim letzten Zyklus war Motor nicht eingeschaltet + = Neustart // Antrieb wurde erneut gestartet + + A sAntriebvor + = Stat.OP_Out_Mvor + + A sAntriebrueck + = Stat.OP_Out_Mrueck + + +--- NW 16: Verklemm-Kontrolle --- + AN Stat.Kontroll_B_verbaut // Parameter 4: Kontroll-Sensor für Bewegung ist eingebaut + R Err_Antrieb_verklemmt // Antrieb ist verklemmt (kein Kontroll_B oder dauernd aktiv) + JC en16 + + A ErrQuit + A Err_Antrieb_verklemmt // Antrieb ist verklemmt (kein Kontroll_B oder dauernd aktiv) + JC w161 + + + A Err_Antrieb_verklemmt // Antrieb ist verklemmt (kein Kontroll_B oder dauernd aktiv) + R sAntriebvor // Antrieb anhalten + R sAntriebrueck + JC en16 + + AN Kontroll_B // Sensor ist nicht aktiv + JC w160 + +// Also Sensor aktiv: + L 0 // Inaktiv-Zeit nullen + T Stat.Raster_B_inaktiv + + AN sAntriebvor // Antrieb steht + AN sAntriebrueck + ON "100ms-Impuls" // 0,1s-Impuls + JC en16 + + L Stat.Raster_B_aktiv + L "MW2" // Anzahl der 100ms-Takte + +I + T Stat.Raster_B_aktiv + L 20 // 2s erreicht ? + >=I // Ja ! + S Err_Antrieb_verklemmt // Antrieb ist verklemmt (kein Kontroll_B oder dauernd aktiv) + + JU en16 + +// Sensor inaktiv: +w160: L 0 // Aktiv-Zeit nullen + T Stat.Raster_B_aktiv + + AN sAntriebvor // Antrieb steht + AN sAntriebrueck + ON "100ms-Impuls" // 0,1s-Impuls + JC en16 + + L Stat.Raster_B_inaktiv + L "MW2" // Anzahl der 100ms-Takte + +I + T Stat.Raster_B_inaktiv + L 20 // 2s erreicht ? + >=I // Ja ! + S Err_Antrieb_verklemmt // Antrieb ist verklemmt (kein Kontroll_B oder dauernd aktiv) + + JU en16 + +w161: L 0 + T Stat.Raster_B_aktiv // Aktiv-Zeit nullen + T Stat.Raster_B_inaktiv // Inaktiv-Zeit nullen + + SET + R Err_Antrieb_verklemmt // Antrieb ist verklemmt (kein Kontroll_B oder dauernd aktiv) + +en16: NOP 0 + + +--- NW 17: Anzahl der Einschaltungen speichern --- + AN Neustart // Antrieb wurde erneut gestartet + JC en17 + + L Stat.Statistik.Einschaltungen + + DINT#1 // Anzahl der Einschaltungen +1 + T Stat.Statistik.Einschaltungen + +en17: NOP 0 + + +--- NW 18: Ausgangsvariablen schreiben --- + A sAntriebvor + = Antriebvor + + A sAntriebrueck + = Antriebrueck + + A sJog1 + = Jog1 + + A sJog2 + = Jog2 + + +--- NW 19: Gesamt-Laufzeit aufaddieren --- + AN sAntriebvor // Antrieb steht + AN sAntriebrueck + ON "1s-Impuls" // 1s-Impuls + BEC + + L Stat.Statistik.Laufzeit_s + + 1 // Laufzeit des Antriebs in Sekunden+1 + T Stat.Statistik.Laufzeit_s + L 60 // Eine Minte erreicht ? + Antrieb stoppen + Q : Bool // Eingang Motorschutz ok + Ptc : Bool // Eingang Motortemperatur ok + Fu : Bool // Eingang Frequenzumrichter ok + QKontroll : Bool // Jetzt Q-Ok-Meldung von Frequenzumrichter (nach Netz EIN) kontrollieren + FuKontroll : Bool // Jetzt Fu-Ok-Meldung von Frequenzumrichter (nach Netz EIN) kontrollieren + ErrQuit : Bool // Motorschutzstörung quittieren + Kontroll_B : Bool // Kontroll-Sensor für Bewegung + Output: + Antriebrueck : Bool // Rückwärts-Ausgang des Antriebs + Antriebvor : Bool // Vorwärts-Ausgang des Antriebs + Jog1 : Bool // Frequenz 1/3 aktivieren + Jog2 : Bool // Frequenz 2/3 aktivieren + Analog : Int // Ausgangswort für Analogwandler + InOut: + QErr : Bool // Motorschutzstörung + PtcErr : Bool // Temperaturstörung + FuErr : Bool // Frequenzumrichter ist gestört + Err_Antrieb_verklemmt : Bool // Antrieb ist verklemmt (kein Kontroll_B oder dauernd aktiv) + hStOk : Bool // Anzeige Start n. Störung aktivieren + Static: + sJog1 : Bool // Frequenz 1/3 aktivieren + sJog2 : Bool // Frequenz 2/3 aktivieren + sAntriebrueck : Bool // Rückwärts-Ausgang des Antriebs + sAntriebvor : Bool // Vorwärts-Ausgang des Antriebs + Stat : "UAntrieb_all" // Status des Antriebs + Temp: + Antriebaktiv : Bool // Antrieb ist aktiv + Neustart : Bool // Antrieb wurde erneut gestartet + Frequenz : Real // Frequenz für FC106 + Constant: + +--- NW 1: Zeitwert laden --- + AN Automatik + ON Stat.A_start + JC Nw02 + + L Stat.T_Nachlauf // Zeitwert laden + T Stat.T_Zelle + + +--- NW 2: Zeitwert löschen --- +Nw02: AN Automatik + O Stat.A_vor + O Stat.A_rueck + O BereichErr + O QErr + O FuErr + JCN Nw03 + + L 0 // Zeitwert löschen +// // T #Stat.T_Zelle + + +--- NW 3: Motorschutzstörung / Temperaturüberwachung --- +Nw03: A ErrQuit + R QErr + AN Q + A QKontroll + S QErr + + A ErrQuit + R PtcErr + AN Ptc + S PtcErr + +// Störung ist quittierbar: + A Q + A QErr + O + A Ptc + A PtcErr + S hStOk + + +--- NW 4: Frequenzumrichterstörung --- + AN Stat.Frequenz + AN Stat.Analog + JC en05 + + A ErrQuit + ON FuKontroll + R FuErr + AN Fu + A FuKontroll + S FuErr + +en05: NOP 0 + +--- NW 5: Undefinierte Zustände / Befehle (alle Antriebe) --- + A Automatik // Automatik + Hand aktiv + A Handbetrieb + O + AN Automatik // keine Betriebsart + AN Handbetrieb + O + A Stat.A_vor // Vorwärts + Rückwärts aktiv + A Stat.A_rueck + O + A Stat.H_vor + A Stat.H_rueck + O + A BereichErr // Bereichsstörung + A Automatik // Automatik aktiv + O + AN Stat.Normal // Antrieb nicht eindeutig + AN Stat.Frequenz + AN Stat.Analog + O + A Stat.Normal + A( + O Stat.Frequenz + O Stat.Analog + ) + O + A Stat.Frequenz + A Stat.Analog + O QErr // Motorschutzstörung + O + A Automatik // Automatik aktiv + A PtcErr // Temperaturstörung + JCN en06 + +Stop: SET + R sAntriebvor + R sAntriebrueck + R Stat.T_Ausfertig + R sJog1 + R sJog2 + + L 0.0 // Zeitwert/Frequenz löschen +// // T #Stat.T_Zelle + T Frequenz // Frequenz für FC106 + + JU RET + +en06: NOP 0 + +--- NW 6: Undefinierte Zustände / Befehle (Fu-Zusatz) --- + A Stat.Frequenz + A( + AN Stat.F1 // Keine Frequenz angegeben + AN Stat.F2 + AN Stat.F3 + O + A Stat.F1 // Mehrere Frequenzen angegeben + A( + O Stat.F2 + O Stat.F3 + ) + O + A Stat.F2 // Mehrere Frequenzen angegeben + A Stat.F3 + O FuErr // Frequenzumrichterstörung + ON FuKontroll // Frequenzumrichter ist eingeschaltet + ) + JC Stop + +--- NW 7: Undefinierte Zustände / Befehle (Analog-Zusatz) --- + A Stat.Analog + A( + L Stat.F // Keine Frequenz angegeben + L 0.0 + ==R + AN Stat.F1 // Keine Frequenz angegeben + AN Stat.F2 + AN Stat.F3 + O FuErr // Frequenzumrichterstörung + ON FuKontroll // Frequenzumrichter ist eingeschaltet + ) + JC Stop + + +--- NW 8: Antrieb vorwärts starten --- + A( + A Automatik // Automatik ist aktiv + AN Stat.A_rueck + A( + L Stat.T_Zelle + L 0 // Nachlaufzeit vorhanden ? + <>I // Ja ! + O Stat.A_start + O Stat.A_vor // Einschalten + ) + O + A Handbetrieb // Handbetrieb aktiv + A Stat.H_vor // Handtaste vorwärts + ) + AN Stat.Stop_vor // Stoppen + A Q // Motorschutz ok + AN QErr // Motorschutzstörung noch aktiv + = sAntriebvor + R Stat.T_Ausfertig + +--- NW 9: Antrieb rückwärts starten --- + A( + A Automatik // Automatik ist aktiv + A Stat.A_rueck // Einschalten + O + A Handbetrieb // Handbetrieb aktiv + A Stat.H_rueck // Handtaste rückwärts + ) + AN Stat.Stop_rueck // Stoppen + A Q // Motorschutz ok + AN QErr // Motorschutzstörung noch aktiv + AN sAntriebvor + = sAntriebrueck + R Stat.T_Ausfertig + +--- NW 10: Frequenz übergeben (Fu-Zusatz) --- + AN Stat.Frequenz + AN Stat.Analog + JC en11 + + A sAntriebvor + AN sAntriebrueck + O + AN sAntriebvor + A sAntriebrueck + = Antriebaktiv + + A Antriebaktiv + A( + O Stat.F1 + O Stat.F3 + ) + = sJog1 + + A Antriebaktiv + A( + O Stat.F2 + O Stat.F3 + ) + = sJog2 + + AN sJog1 // Keine Geschwindigtkeit aktiv + AN sJog2 + AN Stat.Analog // falls analoge Übergabe erfolgt + R sAntriebvor + R sAntriebrueck + +en11: NOP 0 + +--- NW 11: Frequenz übergeben (Analog-Zusatz) --- + AN Stat.Analog + JC en12 + + A sAntriebvor + AN sAntriebrueck + O + AN sAntriebvor + A sAntriebrueck + = Antriebaktiv + + L 0.0 // Falls Stop erwünscht + + AN Antriebaktiv + JC w090 + + L Stat.F +w090: T Frequenz // Frequenz für FC106 + + L 3000.0 // Maximal 3000 U/min ? + <=R // Ja ! + JC w091 + + T Frequenz // Frequenz für FC106 + +w091: L Frequenz + L 0.0 // Keine Geschwindigtkeit aktiv ? + ==R // Ja ! + AN sJog1 // Aber schon Jog-Geschwindigtkeit aktiv + AN sJog2 + R sAntriebvor + R sAntriebrueck + +en12: NOP 0 + +--- NW 12: Steuersignale zurücksetzen --- +RET: A Stat.Stop_vor // Übergabe an OP + = Stat.OP_Stop_vor + + A Stat.Stop_rueck + = Stat.OP_Stop_rueck + + L Stat.F + T Stat.OP_F + + A Stat.F1 + = Stat.OP_F1 + + A Stat.F2 + = Stat.OP_F2 + + A Stat.F3 + = Stat.OP_F3 + + + L 0.0 + T Stat.F + + SET + R Stat.F1 + R Stat.F2 + R Stat.F3 + R Stat.Stop_vor + R Stat.Stop_rueck + R Stat.Stop_intern + R Stat.A_vor + R Stat.A_rueck + R Stat.A_start + R Stat.H_vor + R Stat.H_rueck + + +--- NW 13: Nachlaufzeit läuft --- + AN "100ms-Impuls" // 0,1s-Impuls + ON sAntriebvor // Antrieb steht + JC Nw14 + + L Stat.T_Zelle + L 0 // Zeit steht ? + ==I // Ja ! + JC Nw14 + + L Stat.T_Zelle + L "MW2" // minus 0,1-Takte + -I + T Stat.T_Zelle + + L 0.0 // Zeit gerade abgelaufen ? + <=I // Ja ! + S Stat.T_Ausfertig + JCN Nw14 + + T Stat.T_Zelle + + +--- NW 14: Analog-Signal wandeln --- +Nw14: AN Stat.Analog + JC en14 + +CALL SYS "UNSCALE" (IN:=Frequenz, HI_LIM:=200.0, LO_LIM:=0.0, BIPOLAR:=FALSE, RET_VAL:=Stat.RET_VAL_FC106, OUT:=Analog) + + L Stat.RET_VAL_FC106 + L 0 // Fehler vorhanden ? + <>I // Ja ! + R sAntriebvor // Antrieb stoppen + R sAntriebrueck + +en14: NOP 0 + + +--- NW 15: Ausgänge an OP übergeben --- + A sAntriebvor + AN Stat.OP_Out_Mvor // beim letzten Zyklus war Motor nicht eingeschaltet + O + A sAntriebrueck + AN Stat.OP_Out_Mrueck // beim letzten Zyklus war Motor nicht eingeschaltet + = Neustart // Antrieb wurde erneut gestartet + + A sAntriebvor + = Stat.OP_Out_Mvor + + A sAntriebrueck + = Stat.OP_Out_Mrueck + + +--- NW 16: Verklemm-Kontrolle --- + AN Stat.Kontroll_B_verbaut // Parameter 4: Kontroll-Sensor für Bewegung ist eingebaut + R Err_Antrieb_verklemmt // Antrieb ist verklemmt (kein Kontroll_B oder dauernd aktiv) + JC en16 + + A ErrQuit + A Err_Antrieb_verklemmt // Antrieb ist verklemmt (kein Kontroll_B oder dauernd aktiv) + JC w161 + + + A Err_Antrieb_verklemmt // Antrieb ist verklemmt (kein Kontroll_B oder dauernd aktiv) + R sAntriebvor // Antrieb anhalten + R sAntriebrueck + JC en16 + + AN Kontroll_B // Sensor ist nicht aktiv + JC w160 + +// Also Sensor aktiv: + L 0 // Inaktiv-Zeit nullen + T Stat.Raster_B_inaktiv + + AN sAntriebvor // Antrieb steht + AN sAntriebrueck + ON "100ms-Impuls" // 0,1s-Impuls + JC en16 + + L Stat.Raster_B_aktiv + L "MW2" // Anzahl der 100ms-Takte + +I + T Stat.Raster_B_aktiv + L 20 // 2s erreicht ? + >=I // Ja ! + S Err_Antrieb_verklemmt // Antrieb ist verklemmt (kein Kontroll_B oder dauernd aktiv) + + JU en16 + +// Sensor inaktiv: +w160: L 0 // Aktiv-Zeit nullen + T Stat.Raster_B_aktiv + + AN sAntriebvor // Antrieb steht + AN sAntriebrueck + ON "100ms-Impuls" // 0,1s-Impuls + JC en16 + + L Stat.Raster_B_inaktiv + L "MW2" // Anzahl der 100ms-Takte + +I + T Stat.Raster_B_inaktiv + L 20 // 2s erreicht ? + >=I // Ja ! + S Err_Antrieb_verklemmt // Antrieb ist verklemmt (kein Kontroll_B oder dauernd aktiv) + + JU en16 + +w161: L 0 + T Stat.Raster_B_aktiv // Aktiv-Zeit nullen + T Stat.Raster_B_inaktiv // Inaktiv-Zeit nullen + + SET + R Err_Antrieb_verklemmt // Antrieb ist verklemmt (kein Kontroll_B oder dauernd aktiv) + +en16: NOP 0 + + +--- NW 17: Anzahl der Einschaltungen speichern --- + AN Neustart // Antrieb wurde erneut gestartet + JC en17 + + L Stat.Statistik.Einschaltungen + + DINT#1 // Anzahl der Einschaltungen +1 + T Stat.Statistik.Einschaltungen + +en17: NOP 0 + + +--- NW 18: Ausgangsvariablen schreiben --- + A sAntriebvor + = Antriebvor + + A sAntriebrueck + = Antriebrueck + + A sJog1 + = Jog1 + + A sJog2 + = Jog2 + + +--- NW 19: Gesamt-Laufzeit aufaddieren --- + AN sAntriebvor // Antrieb steht + AN sAntriebrueck + ON "1s-Impuls" // 1s-Impuls + BEC + + L Stat.Statistik.Laufzeit_s + + 1 // Laufzeit des Antriebs in Sekunden+1 + T Stat.Statistik.Laufzeit_s + L 60 // Eine Minte erreicht ? + Aktivzeit speichern --- + L 25 + A Kommt_25 + JC Save + L 24 + A Kommt_24 + JC Save + L 23 + A Kommt_23 + JC Save + L 22 + A Kommt_22 + JC Save + L 21 + A Kommt_21 + JC Save + L 20 + A Kommt_20 + JC Save + L 19 + A Kommt_19 + JC Save + L 18 + A Kommt_18 + JC Save + L 17 + A Kommt_17 + JC Save + L 16 + A Kommt_16 + JC Save + L 15 + A Kommt_15 + JC Save + L 14 + A Kommt_14 + JC Save + L 13 + A Kommt_13 + JC Save + L 12 + A Kommt_12 + JC Save + L 11 + A Kommt_11 + JC Save + L 10 + A Kommt_10 + JC Save + L 9 + A Kommt_9 + JC Save + L 8 + A Kommt_8 + JC Save + L 7 + A Kommt_7 + JC Save + L 6 + A Kommt_6 + JC Save + L 5 + A Kommt_5 + JC Save + L 4 + A Kommt_4 + JC Save + L 3 + A Kommt_3 + JC Save + L 2 + A Kommt_2 + JC Save + L 1 + A Kommt_1 + JC Save + + JU Zeit + +Save: T Dyn.Aktiv_Line // Aktive Linie speichern + + L Para.Abstand_Lines + *I + L Para.Sicherheit + +I // RestZeit ermitteln + L Dyn.RestZeit // Neuer Wert größer? + >=I // Ja ! + JC Ok + +// Ausgefahrene Stelle ist kleiner: + L 0 // Löschen + T Dyn.Aktiv_Line // Aktive Linie + T Dyn.Nachtrigger_Freigabe // Nachtriggern der Freigabe der ausfahrenden Linie + + BEU + +Ok: CAC // Neuen Wert übernehmen + T Dyn.RestZeit // Wert speichern + +// Freigabe aus aktiver Linie verlängern aktivieren: + L Para.Sicherheit + L Para.Abstand_Lines + +I + L 10 + /I + L 2 // /Nach 2 Sekunden + T Dyn.Nachtrigger_Freigabe // Nachtriggern der Freigabe der ausfahrenden Linie + + +--- NW 4: Aktiv-/Nachtrigger-Zeit verändern --- +Zeit: AN Antrieb_aktiv // Antrieb aktiv + ON "1s-Impuls" // 1s-Impuls + JC Chk + +// BM ist unterwegs: + L Dyn.RestZeit + + -10 // 10*100ms = 1s + T Dyn.RestZeit + + L 0 // Minimum erreicht? + >I // Nein ! + JC Trig + + T Dyn.RestZeit // Minimum übergeben + +// Freigabe nachtriggern: +Trig: L Dyn.Nachtrigger_Freigabe // Nachtriggern der Freigabe der ausfahrenden Linie + + -1 + T Dyn.Nachtrigger_Freigabe // Nachtriggern der Freigabe der ausfahrenden Linie + + L 0 // Minimum erreicht? + >I // Nein ! + JC Chk + + T Dyn.Nachtrigger_Freigabe // Minimum übergeben + T Dyn.Aktiv_Line + T Dyn.Last_Line + + +--- NW 5: Nachtriggern der Freigabe der ausfahrenden Linie --- +Chk: L Dyn.Aktiv_Line // Aktive Linie + L Dyn.Last_Line + <>I // Unterschiedlich ! + JC More + + CAC + JL ENDE_Mig + JU ENDE_Mig // Bei 0 + JU Li01 // Linie 1 war aktiv + JU Li02 + JU Li03 + JU Li04 + JU Li05 + JU Li06 + JU Li07 + JU Li08 + JU Li09 + JU Li10 + JU Li11 + JU Li12 + JU Li13 + JU Li14 + JU Li15 + JU Li16 + JU Li17 + JU Li18 + JU Li19 + JU Li20 + JU Li21 + JU Li22 + JU Li23 + JU Li24 + JU Li25 // Linie 25 war aktiv +ENDE_Mig: JU More + +Li01: SET + S Out.Line_1_Ok + BEU +Li02: SET + S Out.Line_2_Ok + BEU +Li03: SET + S Out.Line_3_Ok + BEU +Li04: SET + S Out.Line_4_Ok + BEU +Li05: SET + S Out.Line_5_Ok + BEU +Li06: SET + S Out.Line_6_Ok + BEU +Li07: SET + S Out.Line_7_Ok + BEU +Li08: SET + S Out.Line_8_Ok + BEU +Li09: SET + S Out.Line_9_Ok + BEU +Li10: SET + S Out.Line_10_Ok + BEU +Li11: SET + S Out.Line_11_Ok + BEU +Li12: SET + S Out.Line_12_Ok + BEU +Li13: SET + S Out.Line_13_Ok + BEU +Li14: SET + S Out.Line_14_Ok + BEU +Li15: SET + S Out.Line_15_Ok + BEU +Li16: SET + S Out.Line_16_Ok + BEU +Li17: SET + S Out.Line_17_Ok + BEU +Li18: SET + S Out.Line_18_Ok + BEU +Li19: SET + S Out.Line_19_Ok + BEU +Li20: SET + S Out.Line_20_Ok + BEU +Li21: SET + S Out.Line_21_Ok + BEU +Li22: SET + S Out.Line_22_Ok + BEU +Li23: SET + S Out.Line_23_Ok + BEU +Li24: SET + S Out.Line_24_Ok + BEU +Li25: SET + S Out.Line_25_Ok + BEU + +More: NOP 0 + + +--- NW 6: Freigaben an Pufferstrecken aufgrund der fahrenden BM --- + L Dyn.RestZeit + L 10 + /I + JL Ende + JU Ok01 // Restzeit in 0 Sekunden + JU Ok01 // Restzeit in 1 Sekunden + JU Ok02 // Restzeit in 2 Sekunden + JU Ok02 // Restzeit in 3 Sekunden + JU Ok03 // Restzeit in 4 Sekunden + JU Ok03 // Restzeit in 5 Sekunden + JU Ok04 // Restzeit in 6 Sekunden + JU Ok04 // Restzeit in 7 Sekunden + JU Ok05 // Restzeit in 8 Sekunden + JU Ok05 // Restzeit in 9 Sekunden + JU Ok06 // Restzeit in 10 Sekunden + JU Ok06 // Restzeit in 11 Sekunden + JU Ok07 // Restzeit in 12 Sekunden + JU Ok07 // Restzeit in 13 Sekunden + JU Ok08 // Restzeit in 14 Sekunden + JU Ok08 // Restzeit in 15 Sekunden + JU Ok09 // Restzeit in 16 Sekunden + JU Ok09 // Restzeit in 17 Sekunden + JU Ok10 // Restzeit in 18 Sekunden + JU Ok10 // Restzeit in 19 Sekunden + JU Ok11 // Restzeit in 20 Sekunden + JU Ok11 // Restzeit in 21 Sekunden + JU Ok12 // Restzeit in 22 Sekunden + JU Ok12 // Restzeit in 23 Sekunden + JU Ok13 // Restzeit in 24 Sekunden + JU Ok13 // Restzeit in 25 Sekunden + JU Ok14 // Restzeit in 26 Sekunden + JU Ok14 // Restzeit in 27 Sekunden + JU Ok15 // Restzeit in 28 Sekunden + JU Ok15 // Restzeit in 29 Sekunden + JU Ok16 // Restzeit in 30 Sekunden + JU Ok16 // Restzeit in 31 Sekunden + JU Ok17 // Restzeit in 32 Sekunden + JU Ok17 // Restzeit in 33 Sekunden + JU Ok18 // Restzeit in 34 Sekunden + JU Ok18 // Restzeit in 35 Sekunden + JU Ok19 // Restzeit in 36 Sekunden + JU Ok19 // Restzeit in 33 Sekunden + JU Ok20 // Restzeit in 38 Sekunden + JU Ok20 // Restzeit in 39 Sekunden + JU Ok21 // Restzeit in 40 Sekunden + JU Ok21 // Restzeit in 41 Sekunden + JU Ok22 // Restzeit in 42 Sekunden + JU Ok22 // Restzeit in 43 Sekunden + JU Ok23 // Restzeit in 44 Sekunden + JU Ok23 // Restzeit in 45 Sekunden + JU Ok24 // Restzeit in 46 Sekunden + JU Ok24 // Restzeit in 43 Sekunden + JU Ok25 // Restzeit in 48 Sekunden + JU Ok25 // Restzeit in 49 Sekunden +Ende: JU En04 + +Ok01: SET + S Out.Line_1_Ok +Ok02: SET + S Out.Line_2_Ok +Ok03: SET + S Out.Line_3_Ok +Ok04: SET + S Out.Line_4_Ok +Ok05: SET + S Out.Line_5_Ok +Ok06: SET + S Out.Line_6_Ok +Ok07: SET + S Out.Line_7_Ok +Ok08: SET + S Out.Line_8_Ok +Ok09: SET + S Out.Line_9_Ok +Ok10: SET + S Out.Line_10_Ok +Ok11: SET + S Out.Line_11_Ok +Ok12: SET + S Out.Line_12_Ok +Ok13: SET + S Out.Line_13_Ok +Ok14: SET + S Out.Line_14_Ok +Ok15: SET + S Out.Line_15_Ok +Ok16: SET + S Out.Line_16_Ok +Ok17: SET + S Out.Line_17_Ok +Ok18: SET + S Out.Line_18_Ok +Ok19: SET + S Out.Line_19_Ok +Ok20: SET + S Out.Line_20_Ok +Ok21: SET + S Out.Line_21_Ok +Ok22: SET + S Out.Line_22_Ok +Ok23: SET + S Out.Line_23_Ok +Ok24: SET + S Out.Line_24_Ok +Ok25: SET + S Out.Line_25_Ok + +En04: NOP 0 + + +--- NW 7: Letzten aktiven Puffer speichern --- + L Dyn.Aktiv_Line // Aktive Linie + T Dyn.Last_Line // speichern + + +--- NW 8: Ende --- + BE + diff --git a/=A01+UH07-KF00/Programmbausteine/Module/MAusfahrFreigabe_neu.awl b/=A01+UH07-KF00/Programmbausteine/Module/MAusfahrFreigabe_neu.awl new file mode 100644 index 0000000..32f722f --- /dev/null +++ b/=A01+UH07-KF00/Programmbausteine/Module/MAusfahrFreigabe_neu.awl @@ -0,0 +1,82 @@ +=== FB 182: MAusfahrFreigabe_neu [STL] === +INTERFACE: + Input: + Impuls : Bool // Zähl-Impuls + Vorbei_1 : Bool // BM ist an Sensor vorbeigefahren + Vorbei_2 : Bool // BM ist an Sensor vorbeigefahren + Vorbei_3 : Bool // BM ist an Sensor vorbeigefahren + Vorbei_4 : Bool // BM ist an Sensor vorbeigefahren + Vorbei_5 : Bool // BM ist an Sensor vorbeigefahren + Inks_Vorbei_1 : Int // Rest-Inks für diese Position + Inks_Vorbei_2 : Int // Rest-Inks für diese Position + Inks_Vorbei_3 : Int // Rest-Inks für diese Position + Inks_Vorbei_4 : Int // Rest-Inks für diese Position + Inks_Vorbei_5 : Int // Rest-Inks für diese Position + Output: + InOut: + Antrieb_ein : Bool // Antrieb einschalten + Static: + Dyn : Struct + Rest_Inks : Int := 1 // BM noch unterwegs [Inks] + Temp: + tAktiv : Int + Constant: + +--- NW 1: Vorbei-Sensoren auswerten --- + L Inks_Vorbei_5 + A Vorbei_5 + JC Chek + L Inks_Vorbei_4 + A Vorbei_4 + JC Chek + L Inks_Vorbei_3 + A Vorbei_3 + JC Chek + L Inks_Vorbei_2 + A Vorbei_2 + JC Chek + L Inks_Vorbei_1 + A Vorbei_1 + JC Chek + + JU En02 + +Chek: L Dyn.Rest_Inks // Neuer Wert kleiner? + I // Nein ! + JC En04 + + L 1 + T Dyn.Rest_Inks // Minimum übergeben + +En04: NOP 0 + + +--- NW 3: Antrieb einschalten --- + L Dyn.Rest_Inks + L 1 // vorhanden ? + >I // Ja ! + S Antrieb_ein + + +--- NW 4: Ende --- + BE + diff --git a/=A01+UH07-KF00/Programmbausteine/Module/MBlinken.awl b/=A01+UH07-KF00/Programmbausteine/Module/MBlinken.awl new file mode 100644 index 0000000..5aee705 --- /dev/null +++ b/=A01+UH07-KF00/Programmbausteine/Module/MBlinken.awl @@ -0,0 +1,153 @@ +=== FB 94: MBlinken [STL] === +INTERFACE: + Input: + Impulsdauer : Bool // Impulsdauer + Error_1 : Bool + Error_2 : Bool + Error_3 : Bool + Error_4 : Bool + Error_5 : Bool + Error_6 : Bool + Error_7 : Bool + Error_8 : Bool + Error_9 : Bool + Error_10 : Bool + Output: + hAnzeige : Bool // Anzeige + InOut: + Static: + Flanke_Ausschalttakt : Bool + Kein_Blinken : Bool + Ausschalttakte : Int // Betriebsbereit ist ausgeschaltet + Temp: + Constant: + +--- NW 1: Anzeige bei Error 1-10 1-10 mal blinken lassen --- +// Anzeige ausschalten: + AN Error_1 + AN Error_2 + AN Error_3 + AN Error_4 + AN Error_5 + AN Error_6 + AN Error_7 + AN Error_8 + AN Error_9 + AN Error_10 + R hAnzeige + R Flanke_Ausschalttakt + R Kein_Blinken + JC NoAn + +// Anzeige aktivieren + A Impulsdauer + AN Kein_Blinken + = hAnzeige + + A Impulsdauer + Fall Flanke_Ausschalttakt + JCN mHu + + L Ausschalttakte + + 1 + T Ausschalttakte + + +mHu: L Ausschalttakte + L 2 + >=I + A Kein_Blinken + R Kein_Blinken + JC NoAn + + A Kein_Blinken + JC En01 + + CAC + L 1 + >=I + A Error_1 + S Kein_Blinken + JC NoAn + + CAC + L 2 + >=I + A Error_2 + S Kein_Blinken + JC NoAn + + CAC + L 3 + >=I + A Error_3 + S Kein_Blinken + JC NoAn + + CAC + L 4 + >=I + A Error_4 + S Kein_Blinken + JC NoAn + + CAC + L 5 + >=I + A Error_5 + S Kein_Blinken + JC NoAn + + CAC + L 6 + >=I + A Error_6 + S Kein_Blinken + JC NoAn + + CAC + L 7 + >=I + A Error_7 + S Kein_Blinken + JC NoAn + + CAC + L 8 + >=I + A Error_8 + S Kein_Blinken + JC NoAn + + CAC + L 9 + >=I + A Error_9 + S Kein_Blinken + JC NoAn + + CAC + L 10 + >=I + A Error_10 + S Kein_Blinken + JC NoAn + + CAC + L 10 + >I + S Kein_Blinken + JC NoAn + + JU En01 + +NoAn: L 0 + T Ausschalttakte + +En01: NOP 0 + + +--- NW 2: Ende --- + BE + + diff --git a/=A01+UH07-KF00/Programmbausteine/Module/MHMEntnahmepuffer.awl b/=A01+UH07-KF00/Programmbausteine/Module/MHMEntnahmepuffer.awl new file mode 100644 index 0000000..e4f05b8 --- /dev/null +++ b/=A01+UH07-KF00/Programmbausteine/Module/MHMEntnahmepuffer.awl @@ -0,0 +1,208 @@ +=== FB 1278: MHMEntnahmepuffer [STL] === +INTERFACE: + Input: + EntnahmePuffer_Nr : Int // Aufruf für Leer-Puffer + B_LeerpufferEinfahrt : Bool // Sensor Trolley fährt in Leerpuffer + Output: + Error : Word // Störungen übergeben + InOut: + hStOk : Bool // Anzeige Start n. Störung aktivieren + Static: + Res16 : Array[1..4] of Int // Reserve + SAVE : Struct + Weichen_DB : Int // Weichen-FIFO-DB + Weichen_DW : Int // Weichen-FIFO-DW + Para : Struct // Parameter + Entnahmepuffer_DL_DB : Int // Einsprung Leerpuffer-Datenliste-DB + Entnahmepuffer_DL_DW : Int // Einsprung Leerpuffer-Datenliste-DW + Res1 : Array[1..2] of Int // Reserve + Status2 : Struct + Abruf_ist_möglich : Bool // Abruf ist möglich + Kein_Stop_mehr : Bool + Eintrag_DL_Leerliste_erfolgt : Bool // Eintrag in DLLPPuffer_leer (DB500) erfolgt + Eintrag_DL_Reinliste_erfolgt : Bool // Eintrag in DLLPPuffer_Einfahren (DB501) erfolgt + Eintrag_Abrufliste_erfolgt : Bool // Eintrag in DLLPPuffer_Ausfahren (DB502) erfolgt + Puffer : "UDLHMEntnahmePuffer" // Statische Leerpufferdaten (aus DL) + Dyn : Struct // Dynamische Daten + Status : Struct + Puffer_OUT_leer : Bool // Puffer ist leer + Puffer_OUT_hat Platz : Bool // Puffer hat noch Kapazität + Undef.Trolley_in_Schleuse_OUT : Bool // Undefinierter Trolley in Schleuse unten erkannt + Trolley_fährt_in_Schleuse_OUT : Bool // Trolley fährt in Schleuse (unten) + Trolley_wartet_Auftrag : Bool // Trolley wartet auf Auftrag (unten) + Trolley_wartet_Bereich+1 : Bool // Trolley wartet auf Bereich +1 (unten) + Trolley_fährt_aus_OUT : Bool // Trolley fährt aus (unten) + MindestZeit_ok_OUT : Bool // Schleuse ist MindestZeit geöffnet + Trolley_draussen_Out : Bool // Trolley ist ausgefahren + Trolley_OUT_nicht_in_Schleuse : Bool // Trolley fährt nicht in Schleuse + Leer_Check_OUT : Bool // Leerpuffer wird auf leer gecheckt + Alles_ausfahren : Bool // Alle Trolleys ausfahren + Leerpuffer_initialisieren : Bool // Leerpuffer initialisieren + Error_aktiv : Bool // Störung vorhanden + Reset_aktiv_OUT : Bool // Reset aktiv + TrolleyID_Einfahrt : DInt // Trolley-Nr ist eingefahren + Rueckmld : Struct + RET_VAL_BLKMOV_EntnahmePuffer : Int // Rückmeldung nach BLKMOV-Aufruf + RET_VAL_DL_EntnahmePuffer : Byte // Rückmeldung nach DatenOut-Aufruf + RET_VAL_DL_Res_OUT : Byte // Rückmeldung nach DatenOut-Aufruf + RET_VAL_DL_EntnahmePufferTrolley_IN : Byte // Rückmeldung nach DatenIN-Aufruf + RET_VAL_DL_EntnahmePufferTrolley_OUT : Byte // Rückmeldung nach DatenOut-Aufruf + Error : "UErrHMEntnahmePuffer" + Stau_Zeit : Int // Sensor B_Einfahrt ist belegt [1s] + Stop_Ursache : Word // Stop-Stelle: Nw + Position + Res500 : Array[1..206] of Int + Temp: + Quelle : Any // Zeiger, wo Rein-Daten sind + Ziel : Any // Zeiger, FIFO-Stelle + Ueb_akt : Bool // Überwachungszeit aktivieren + Weiter : Bool // Weiterschaltbedingung ist erfüllt + Warte_neu : Bool // Wartezeit neu triggern + Warte_stop : Bool // Wartezeit stoppen + Inks_Ok : Bool // Starten aufgrund der Inks erlaubt + Puffer_ist_leer : Bool // Leerpuffer zeitlang ohne Sensor + Abruf_Trolley_vorne : Bool // Abruf-Trolley ist in Schleuse + Oberen_Puffer_Freigeben : Bool + GesamtAnzahl : Int + SSDW : Int + Schleife : Word // Loopzähler + Trolley : Int + Position : Int + Constant: + +--- NW 1: Parameter-Übergabe --- + L EntnahmePuffer_Nr + + L 275 // Einsprung Puffer-DL + T Para.Entnahmepuffer_DL_DB // vor Aufruf übergeben! + L 0 + T Para.Entnahmepuffer_DL_DW + + +--- NW 2: Statische Entnahmepuffer-Parameter holen --- + L Puffer.EntnahmePuffer_Nr // Nummer des EntnahmePuffers + L EntnahmePuffer_Nr // Aufruf-Parameter + ==I // Identisch ? + R Dyn.Error.Entnahmepuffer_DL // EntnahmePufferdatenbank fehlerhaft + R Dyn.Error.Undef_Entnahmepuffer // undefiniertes EntnahmePuffer + JC en06 // Ja ! + + T "MW200" // Search-Daten + +CALL FC "DatenOut" (SSDB:=Para.Entnahmepuffer_DL_DB, SSDW:=Para.Entnahmepuffer_DL_DW, PARA:=WORD#16#0000, SEARCHDATEN:=P#M200.0, RE_VAL:=Dyn.Rueckmld.RET_VAL_DL_EntnahmePuffer, OUTDATEN:=P#M220.0, Position:="MW196") + + JBI G_Ok + + A "M199.0" + JCN w060 + + SET + = Dyn.Error.Entnahmepuffer_DL // EntnahmePufferdatenbank fehlerhaft + + L 16#A061 + T Dyn.Stop_Ursache + + BEU + +w060: SET + S Dyn.Error.Undef_Entnahmepuffer // undefinierter EntnahmePuffer + + L 16#0062 + T Dyn.Stop_Ursache + + BEU + +// Kennung + Datenbytes +G_Ok: SET + R Dyn.Error.Entnahmepuffer_DL // Gefälledatenbank fehlerhaft + R Dyn.Error.Undef_Entnahmepuffer // undefinierte Gefällestrecke + + L 16#1004 // Kennung 10 + Word=04 + T LW0 // Any-Kennung, Datentyp + L 20 // Datenwords speichern + T LW2 // Wiederholungen + +// Quelle-Pointer erzeugen: + L 0 // Bei Merker = 0 ! + T LW4 // DB_Nummer + L 220 // Adresse + SLD 3 + L 16#8300_0000 // Kennung: Merker + OD + T LD6 // Kennung, Adresse + +CALL SYS "BLKMOV" (SRCBLK:=Quelle, RET_VAL:=Dyn.Rueckmld.RET_VAL_BLKMOV_EntnahmePuffer, DSTBLK:=Puffer) // Datenliste-Daten speichern | #Ziel + + L 16#0063 + T Dyn.Stop_Ursache + + L Dyn.Rueckmld.RET_VAL_BLKMOV_EntnahmePuffer // Rückmeldung + L 0 // Fehler vorhanden ? + <>I // Ja ! + = Dyn.Error.Err_BLKMov // Error bei Block kopieren + BEC + + L Puffer.Puffer_Typ // Puffertyp = 1278 (EntnahmePuffer) + L 1278 // Dieser Aufruf-FB ? + ==I // Ja ! + JC w061 + + SET + S Dyn.Error.Undef_Entnahmepuffer // undefinierter EntnahmePuffer + + L 0 // EntnahmePuffer ungültig ! + T Puffer.EntnahmePuffer_Nr // Nummer des EntnahmePuffers + + L 16#0064 + T Dyn.Stop_Ursache + + BEU + +// Defaultwerte übergeben: +w061: NOP 0 + + BEU + +en06: NOP 0 + + +--- NW 3: Einfahrenden Trolley verarbeiten --- + L Dyn.TrolleyID_Einfahrt + T "MD220" + L DINT#0 + ==I + JC NoNewT + +// Neue Position an Gesamt-Trolley-DL übergeben: +CALL FC "Trolley_DL_Neue_Pos" (Gesamt_Trolley_DL:=Puffer.Gesamt_Trolley_DL, TrolleyID:=Dyn.TrolleyID_Einfahrt, Position:=Puffer.Puffer_Position, ShopGroup:=Dint#0, Err:="M199.0") + +NoNewT: NOP 0 + + +--- NW 4: Error: Stau Bereich-Eingang --- +// Sensor bei Bereichs-Einfahrt bleibt belegt?: + AN B_LeerpufferEinfahrt // Sensor Trolley fährt in Bereich (kein Stau !) + R Dyn.Error.Err_Stau_Einfahrt // Stau bei Einfahrt + JC X090 // StauZeit neu aufziehen + + AN "1s-Impuls" + O Dyn.Error.Err_Stau_Einfahrt // Zeit bereits abgelaufen + JC Xn09 + + L Dyn.Stau_Zeit // Sensor B_VorSep ist belegt [1s] + + +1 + T Dyn.Stau_Zeit // Sensor B_VorSep ist belegt [1s] + + L 25 // Stau-Zeit erreicht ? + >=I // Ja ! + S Dyn.Error.Err_Stau_Einfahrt // Stau bei Einfahrt (Quittierung oder Sensor=0, wegen Bürstenantrieb + JCN Xn09 + +X090: L 0 // Zeiten löschen + T Dyn.Stau_Zeit // Sensor B_VorSep ist belegt [1s] + +Xn09: NOP 0 + + +--- NW 5: Ende --- + BE + diff --git a/=A01+UH07-KF00/Programmbausteine/Module/MHMLeerpuffer.awl b/=A01+UH07-KF00/Programmbausteine/Module/MHMLeerpuffer.awl new file mode 100644 index 0000000..472c144 --- /dev/null +++ b/=A01+UH07-KF00/Programmbausteine/Module/MHMLeerpuffer.awl @@ -0,0 +1,1420 @@ +=== FB 1277: MHMLeerpuffer [STL] === +INTERFACE: + Input: + LeerPuffer_Nr : Int // Aufruf für Leer-Puffer + ErrQuit : Bool // Ablaufstörung quittieren + B_LeerpufferEinfahrt : Bool // Sensor Trolley fährt in Leerpuffer + B_InSchleuse : Bool // Sensor Trolley ist in Schleuse unten + B_AusSchleuse : Bool // Sensor Trolley hat Schleuse unten verlassen + B_Stau_raus_Out : Bool // Sensor Stau im Bereich unten rausfahren + B_QuerTrolley_Out : Bool // Crash-Trolley auf Crashkurs erkannt + Antrieb_plus_aktiv : Bool // Kreisel-Antrieb plus aktiv + Schleuse_geöffnet : Bool // Schleuse unten hat geöffnet + Output: + Y_Schleuse_Auf : Bool // Schleuse unten öffnen + Error : Word // Störungen übergeben + InOut: + Start_Ok : Bool // Starten von ausserhalb ist erlaubt + Antrieb_plus_vor : Bool // Antrieb plus vorfahren + Antrieb_plus_stoppen : Bool // Antrieb plus stoppen + hStOk : Bool // Anzeige Start n. Störung aktivieren + Ausfahr_Inks : Int // Rest-Inks, wo sich Trolley befindet + Static: + Res16 : Array[1..2] of Int // Reserve + SAVE : Struct + Weichen_DB : Int // Weichen-FIFO-DB + Weichen_DW : Int // Weichen-FIFO-DW + Para : Struct // Parameter + Leerpuffer_DL_DB : Int // Einsprung Leerpuffer-Datenliste-DB + Leerpuffer_DL_DW : Int // Einsprung Leerpuffer-Datenliste-DW + Res1 : Array[1..2] of Int // Reserve + Status2 : Struct + Einlagern_ist_aktiv : Bool // Puffer mit Einlagern aktiv + Auslagern_ist_aktiv : Bool // Puffer mit Auslagern aktiv + Eintrag_DL_Leerliste_erfolgt : Bool // Eintrag in DLLPPuffer_leer (DB500) erfolgt + Eintrag_DL_Reinliste_erfolgt : Bool // Eintrag in DLLPPuffer_Einfahren (DB501) erfolgt + Eintrag_Abrufliste_erfolgt : Bool // Eintrag in DLLPPuffer_Ausfahren (DB502) erfolgt + Puffer : "UDLHMLeerPuffer" // Statische Leerpufferdaten (aus DL) + Dyn : Struct // Dynamische Daten + Status : Struct + Puffer_leer : Bool // Puffer ist leer + Puffer_hat Platz : Bool // Puffer hat noch Kapazität + Kein_neuer_Trolley_kommt : Bool // Leerpuffer zeitlang ohne neuen Trolley + Leer_Check_aktiv : Bool // Leerpuffer wird auf leer gecheckt + Reset_aktiv : Bool // Reset aktiv + Trolley_nicht_in_Schleuse : Bool // Trolley fährt nicht in Schleuse > Inilauf gestartet + Puffer_nicht_leer : Bool // Puffer nicht leer > Inilauf gestartet + Leerpuffer_initialisieren : Bool // Leerpuffer initialisieren + MindestZeit_ok : Bool // Schleuse ist MindestZeit geöffnet + Res711 : Bool + Res712 : Bool + Trolley_wartet_Bereich+1 : Bool // Auslagerstrecke noch belegt + Einen_LeerTrolley_ausfahren : Bool // Einen Leer-Trolley ausfahren + Trolley_fährt_aus : Bool // Trolley fährt aus Puffer + Trolley_draussen : Bool // Trolley ist ausgefahren (1 Zyklus) + Error_aktiv : Bool // Störung vorhanden + TrolleyID_Einfahrt : DInt // Trolley-Nr ist eingefahren + HMI : Struct + Trolleys_LeerPuffer : Int // Anzahl Trolleys unten (IN:PLC, OUT:PLC) + Res_Trolleys_LeerPuffer : Int // Anzahl reservierte Trolleys oben (IN:PLC, OUT:PLC) + Frei_Plätze_LeerPuffer : Int // Freiplätze für Trolleys (IN:PLC, OUT:PLC) + Schleuse_resetten_Leerpuffer : Bool // Schleuse resetten unten (IN:HMI, Out:PLC) + LeerPuffer_initialisieren : Bool := 1 // Leerpuffer initialisieren (IN:HMI, Out:PLC) + Einlagern_gesperrt : Bool // Einlagern gesperrt (IN:HMI, OUT:HMI) + AusLagern_gesperrt : Bool // AusLagern gesperrt (IN:HMI, OUT:HMI) + Sk : "USk_Omni" // Status der Schrittkette Schleuse OUT (unten) + Rueckmld : Struct + RET_VAL_BLKMOV_Leerpuffer : Int // Rückmeldung nach BLKMOV-Aufruf + RET_VAL_DL_Leerpuffer : Byte // Rückmeldung nach DatenOut-Aufruf + RET_VAL_DL_Res : Byte // Rückmeldung nach DatenOut-Aufruf + RET_VAL_DL_LeerpufferTrolley_IN : Byte // Rückmeldung nach DatenIN-Aufruf + RET_VAL_DL_LeerpufferTrolley : Byte // Rückmeldung nach DatenOut-Aufruf + Error : "UErrHMLeerPuffer" + Stau_Zeit : Int // Sensor B_Einfahrt ist belegt [1s] + Mindest_Zeit : Int // Sensor B_in_Schleuse unten ist frei [1s] + Leer_Zeit : Int // Puffer unten ist frei [1s] + Stop_Ursache : Word // Stop-Stelle: Nw + Position + Vereinzelungstakte : DInt // Anzahl der getätigten Vereinzelungstakte + TrolleyID_ausgefahren : DInt // TrolleyID des ausgefahrenen Trolleys + Res200 : Array[1..38] of Int + Reservierungs_DL : Struct // AB DW200: Liste der resevierter Trolleys + Datenlistenkopf : Struct + KOPF : Word := WORD#16#DA02 // Datenliste-Kennnung (DA) / Datensatzlänge in Word (1 - 128) + LAENGE : Int := 24 // Länge der Datenliste (maximale Anzahl der Datensätze) + STAMMDATEN : Int := 2 // Stammdatenlänge in Word (1 - 9) + INDDB : Int // Indizierter DB (nur bei Stammdaten = 1 erlaubt !!!) + LAENGEINDDB : Int // Länge des indizierten DB in Word (nur bei Stammdaten = 1 erlaubt !!!) + INDDATEN_WANDEL_FC : Int // FC zum Wandeln der indizierte Daten (nur bei Stammdaten = 1 erlaubt !!!) + LETZTERZUGRIFF : Int // Speicherung des letzten Zugriffs + Belegt14 : Int // reserviert von Sort-Datenliste + AnzahlEintraege : Int // Anzahl der eingetragenen Datensätze (nicht bei ind.Zugriff!) + Reserve18 : Int // Reserve + Res_Trolley : Array[1..24] of Struct // Reservierter Trolley für Leerpuffer + Trolley_ID : DInt // Trolley_ID + Endekennung : Word := WORD#16#DAEE // Datensort-Ende-Kennung (DBEE) + Res350 : Array[1..16] of Int + Anzahl_LeerTrolleys : Int // AB DW350: Liste der Trolleys im Leerpuffer + Res500 : Array[1..74] of Int + None: + Reset : Bool := 1 + Temp: + Quelle : Any // Zeiger, wo Rein-Daten sind + Ziel : Any // Zeiger, FIFO-Stelle + Ueb_akt : Bool // Überwachungszeit aktivieren + Weiter : Bool // Weiterschaltbedingung ist erfüllt + Warte_neu : Bool // Wartezeit neu triggern + Warte_stop : Bool // Wartezeit stoppen + Neu_Trolley_in_Puffer : Bool // Neuer Trolley in Puffer eingefahren + Inks_Ok : Bool // Starten aufgrund der Inks erlaubt + GesamtAnzahl : Int + SSDW : Int + Constant: + +--- NW 1: Parameter-Übergabe --- + L LeerPuffer_Nr + + L 275 // Einsprung Puffer-DL + T Para.Leerpuffer_DL_DB // vor Aufruf übergeben! + L 0 + T Para.Leerpuffer_DL_DW + + +--- NW 2: Anzeige OP --- + L 252 // Bereichsstop aktiv + AN Dyn.Sk.Bereich_ok // Also: Bereichsstop / Not-Aus + JC w010 + + L 253 + AN Dyn.Sk.Auto_akt // Keine Betriebsart + AN Dyn.Sk.Hand_akt + JC w010 + + L 255 // Handbetrieb aktiv + A Dyn.Sk.Hand_akt + JC w010 + + L Dyn.Sk.Akt_Schritt // Aktiver Schritt + T Dyn.Sk.OP_Schritt + + JU OP_Ok + +w010: T Dyn.Sk.OP_Schritt + +OP_Ok: NOP 0 + + +--- NW 3: Out-Bits zum Zurücksetzen / Antrieb plus starten --- + SET // Jeden Zyklus neu + R Y_Schleuse_Auf + R Neu_Trolley_in_Puffer + R Dyn.Status."Trolley_wartet_Bereich+1" + R Dyn.Status."Trolley_fährt_aus" + R Dyn.Status.Trolley_draussen + + A Dyn.Sk.Reset + O Dyn.Sk.Reset_Akt + = Dyn.Status.Reset_aktiv + + SET + R Inks_Ok + +// Antrieb zusätlich starten: + A ErrQuit // Überwachungszeit abgelaufen quittieren + S Antrieb_plus_vor // Kreisel-Antrieb plus starten + + +--- NW 4: HMI-Zeug --- +// Von HMI: + A Dyn.HMI.Schleuse_resetten_Leerpuffer + R Dyn.HMI.Schleuse_resetten_Leerpuffer + S Dyn.Sk.Reset // SK zurücksetzen + + A Dyn.HMI.LeerPuffer_initialisieren + S Dyn.Status.Leerpuffer_initialisieren + R Dyn.HMI.LeerPuffer_initialisieren + + A Dyn.HMI.Einlagern_gesperrt // Wird unten direkt verarbeitet + + A Dyn.HMI.AusLagern_gesperrt // Wird unten direkt verarbeitet + + CLR + +// An HMI: + + L Dyn.Anzahl_LeerTrolleys + T Dyn.HMI.Trolleys_LeerPuffer + + L Dyn.Reservierungs_DL.Datenlistenkopf.AnzahlEintraege + T Dyn.HMI.Res_Trolleys_LeerPuffer + + L Puffer.MaxAnzahl_LeerPuffer + L Dyn.Reservierungs_DL.Datenlistenkopf.AnzahlEintraege + -I + L Dyn.Anzahl_LeerTrolleys + -I + T Dyn.HMI."Frei_Plätze_LeerPuffer" + + +--- NW 5: Schrittkette OUT zurücksetzen --- + AN Dyn.Sk.Reset // SK zurücksetzen + JC en04 + +// Schrittkette zurücksetzen: + L 0 // Schritt 0: Warten + T Dyn.Sk.Akt_Schritt + + L 0 // Zeitwert löschen + T Dyn.Sk.Terr_Zelle + T Dyn.Sk.Tok_Zelle + T Dyn.Leer_Zeit // Zeit für LeerCheck [1s] + + SET + R Dyn.Status.Einen_LeerTrolley_ausfahren + R Dyn.Error.Err_BLKMov // Error bei Block kopieren + R Dyn.Sk.Reset // SK zurücksetzen + R Dyn.Sk.Err_Schritt // Undefinierter Schritt + R Dyn.Sk.Err_Uebzeit // Sofort weiter ! + S Dyn.Sk.Reset_Akt // Reset ist aktiv + + SET + R Dyn.Error.Leerpuffer_DL // Leerpuffer-Datenliste fehlerhaft + R Dyn.Error.Undef_Leerpuffer // undefiniertes Leerpuffer + R Dyn.Error.Err_Uebzeit // Überwachungzeit ist abgelaufen + R Dyn.Error.Err_Schritt // Schritt-Nummer ist nicht definiert + R Dyn.Error.Err_Stau_Einfahrt // Stau am Leerpuffer-Eingang + R Dyn.Error.Err_BLKMov + R Dyn.Error.Err_Trolley_raus // Trolley fährt nicht aus + + L 0 + T Dyn.Stau_Zeit // Sensor B_VorSep ist belegt [1s] + T Dyn.Mindest_Zeit // Sensor B_VorSep ist frei [1s] + T SAVE.Weichen_DB + T SAVE.Weichen_DW + +// Defaultwerte übergeben: + L 0 // Damit statische Werte neu aus Datenbank geholt werden ! + T Puffer.LeerPuffer_Nr // Nummer des Leerpuffers + + BEU + +en04: NOP 0 + + +--- NW 6: Störungen nach Außen übergeben --- + L 0 + T "MW200" + + A Dyn.Error.Leerpuffer_DL // Leerpuffer-Datenliste fehlerhaft + = "M200.0" + A Dyn.Error.Undef_Leerpuffer // undefinierter Leerpuffer + = "M200.1" + A Dyn.Error.Err_Trolley_nicht_in_Schleuse // Trolley fährt nicht in Schleuse + AN Dyn.Status.Leerpuffer_initialisieren + = "M200.2" + A Dyn.Sk.Err_Uebzeit + AN Dyn.Error.Err_Trolley_nicht_in_Schleuse // Trolley fährt nicht in Schleuse + AN Dyn.Error.Err_Trolley_raus // Trolley fährt nicht aus + = Dyn.Error.Err_Uebzeit // Überwachungzeit ist abgelaufen + = "M200.3" + NEG + R Dyn.Sk.Err_Uebzeit_AnzOk + A Dyn.Sk.Err_Schritt + = Dyn.Error.Err_Schritt // Schritt-Nummer ist nicht definiert + = "M200.4" + A Dyn.Error.Err_Stau_Einfahrt // Stau am Leerpuffer-Eingang + = "M200.5" + A Dyn.Error.Err_BLKMov // Error bei Block kopieren + = "M200.6" + A Dyn.Error.Err_Trolley_raus // Trolley fährt nicht aus + = "M200.7" + A Dyn.Error.Err_Leerpuffer_nicht_leer + AN Dyn.Status.Leerpuffer_initialisieren + = "M201.0" + CLR + = "M201.1" + = "M201.2" + = "M201.3" + = "M201.4" + A Dyn.Error.Err_Raus_Sensor + = "M201.5" + CLR + = "M201.6" + A Dyn.Sk.Reset_Akt // Reset ist aktiv + = Dyn.Error.Reset_aktiv + = "M201.7" + +// Andere Meldung als Überwachungszeit aktiv ?: + L "MW200" + L 2#1111_0111_1111_1111 + AW + L 2#0000_0000_0000_0000 // Andere Meldung als Üb.zeit aktiv ? + <>I // Ja ! + ON Dyn.Sk.Err_Uebzeit_AnzOk // Störung anzeigen ok, da 2.Zyklus aktiv ! + R "M200.3" // Üb.Zeit-Meldung nicht an PC senden + + A Dyn.Sk.Err_Uebzeit + S Dyn.Sk.Err_Uebzeit_AnzOk // Störung anzeigen ok, da 2.Zyklus aktiv ! + + L "MW200" + T Error // Schnittstelle nach Außen + +// Störung vorhanden: + L 0 + <>I // Ja ! + = Dyn.Status.Error_aktiv + CLR // Es gibt keine Quittier-Störung! + A Dyn.Sk.Err_Uebzeit + S hStOk + +// Störungen pro Zyklus neu erzeugen: + SET + R Dyn.Error.Leerpuffer_DL // Leerpuffer-Datenliste fehlerhaft + R Dyn.Error.Undef_Leerpuffer // undefiniertes Leerpuffer +// / R #Dyn.Error.Err_Trolley_nicht_in_Schleuse//Trolley fährt nicht in Schleuse +// / R #Dyn.Error.Err_Uebzeit //Überwachungzeit ist abgelaufen + R Dyn.Error.Err_Schritt // Schritt-Nummer ist nicht definiert +// / R #Dyn.Error.Err_Stau_Einfahrt//Stau am Leerpuffer-Eingang + R Dyn.Error.Err_BLKMov +// / R #Dyn.Error.Err_Trolley_raus//Trolley fährt nicht aus +// / R #Dyn.Error.Err_Leerpuffer_nicht_leer//Trolley ohne Daten vorhanden + R Dyn.Error.Err_Raus_Sensor + + AN Dyn.Sk.Err_Uebzeit + R Dyn.Error.Err_Trolley_nicht_in_Schleuse // Trolley fährt nicht in Schleuse + R Dyn.Error.Err_Trolley_raus // Trolley fährt nicht aus + + +--- NW 7: Statische Leerpuffer-Parameter holen --- + L Puffer.LeerPuffer_Nr // Nummer des Leerpuffers + L LeerPuffer_Nr // Aufruf-Parameter + ==I // Identisch ? + R Dyn.Error.Leerpuffer_DL // Leerpufferdatenbank fehlerhaft + R Dyn.Error.Undef_Leerpuffer // undefiniertes Leerpuffer + JC en06 // Ja ! + + T "MW200" // Search-Daten + +CALL FC "DatenOut" (SSDB:=Para.Leerpuffer_DL_DB, SSDW:=Para.Leerpuffer_DL_DW, PARA:=WORD#16#0000, SEARCHDATEN:=P#M200.0, RE_VAL:=Dyn.Rueckmld.RET_VAL_DL_Leerpuffer, OUTDATEN:=P#M220.0, Position:="MW196") + + JBI G_Ok + + A "M199.0" + JCN w060 + + SET + = Dyn.Error.Leerpuffer_DL // Leerpufferdatenbank fehlerhaft + + L 16#A071 + T Dyn.Stop_Ursache + + BEU + +w060: SET + S Dyn.Error.Undef_Leerpuffer // undefinierter Leerpuffer + + L 16#0072 + T Dyn.Stop_Ursache + + BEU + +// Kennung + Datenbytes +G_Ok: SET + R Dyn.Error.Leerpuffer_DL // Gefälledatenbank fehlerhaft + R Dyn.Error.Undef_Leerpuffer // undefinierte Gefällestrecke + + L 16#1004 // Kennung 10 + Word=04 + T LW0 // Any-Kennung, Datentyp + L 20 // Datenwords speichern + T LW2 // Wiederholungen + +// Quelle-Pointer erzeugen: + L 0 // Bei Merker = 0 ! + T LW4 // DB_Nummer + L 220 // Adresse + SLD 3 + L 16#8300_0000 // Kennung: Merker + OD + T LD6 // Kennung, Adresse + +CALL SYS "BLKMOV" (SRCBLK:=Quelle, RET_VAL:=Dyn.Rueckmld.RET_VAL_BLKMOV_Leerpuffer, DSTBLK:=Puffer) // Datenliste-Daten speichern | #Ziel + + L 16#0073 + T Dyn.Stop_Ursache + + L Dyn.Rueckmld.RET_VAL_BLKMOV_Leerpuffer // Rückmeldung + L 0 // Fehler vorhanden ? + <>I // Ja ! + = Dyn.Error.Err_BLKMov // Error bei Block kopieren + BEC + + L Puffer.Puffer_Typ // Puffertyp = 1277 (Leerpuffer) + L 1277 // Dieser Aufruf-FB ? + ==I // Ja ! + JC w061 + + SET + S Dyn.Error.Undef_Leerpuffer // undefinierter Leerpuffer + + L 0 // Leerpuffer ungültig ! + T Puffer.LeerPuffer_Nr // Nummer des Leerpuffers + + L 16#0074 + T Dyn.Stop_Ursache + + BEU + +// Defaultwerte übergeben: +w061: NOP 0 + + BEU + +en06: NOP 0 + + +--- NW 8: Störungen quittieren --- + A ErrQuit // Überwachungszeit abgelaufen quittieren + R Dyn.Sk.Err_Uebzeit + + +--- NW 9: Einfahrenden Trolley in Puffer eintragen --- + L Dyn.TrolleyID_Einfahrt + T "MD220" + L DINT#0 + ==I + JC NoNewT + + SET + S Neu_Trolley_in_Puffer + +// Neue Position an Gesamt-Trolley-DL übergeben: +CALL FC "Trolley_DL_Neue_Pos" (Gesamt_Trolley_DL:=Puffer.Gesamt_Trolley_DL, TrolleyID:=Dyn.TrolleyID_Einfahrt, Position:=Puffer.Puffer_Position, ShopGroup:=Dint#0, Err:="M199.0") + +// Daten Puffer eintragen checken: + L Dyn.Anzahl_LeerTrolleys + + 1 + T Dyn.Anzahl_LeerTrolleys + +// Austrag aus Trolley-Reservierungsliste + L Dyn.TrolleyID_Einfahrt // Eintrag ist erfolgt + T "MD220" + +ResOut: L Puffer.Puffer_Dyn_DW + L Puffer.PufferReservierungsliste_DW + +I + T SSDW + +CALL FC "DatenOut" (SSDB:=Puffer.Puffer_Dyn_DB, SSDW:=SSDW, PARA:=16#E100, SEARCHDATEN:=P#M220.0, RE_VAL:=Dyn.Rueckmld.RET_VAL_DL_Res, OUTDATEN:=P#M220.0, Position:="MW196") // Eintrag löschen | Nicht relevant + + L DINT#0 + T Dyn.TrolleyID_Einfahrt + +NoNewT: NOP 0 + + +--- NW 10: Error: Stau Bereich-Eingang --- +// Sensor bei Bereichs-Einfahrt bleibt belegt?: + AN B_LeerpufferEinfahrt // Sensor Trolley fährt in Bereich (kein Stau !) + R Dyn.Error.Err_Stau_Einfahrt // Stau bei Einfahrt + JC X090 // StauZeit neu aufziehen + + AN "1s-Impuls" + O Dyn.Error.Err_Stau_Einfahrt // Zeit bereits abgelaufen + JC Xn09 + + L Dyn.Stau_Zeit // Sensor B_VorSep ist belegt [1s] + + +1 + T Dyn.Stau_Zeit // Sensor B_VorSep ist belegt [1s] + + L 25 // Stau-Zeit erreicht ? + >=I // Ja ! + S Dyn.Error.Err_Stau_Einfahrt // Stau bei Einfahrt (Quittierung oder Sensor=0, wegen Bürstenantrieb + JCN Xn09 + +X090: L 0 // Zeiten löschen + T Dyn.Stau_Zeit // Sensor B_VorSep ist belegt [1s] + +Xn09: NOP 0 + + +--- NW 11: Schleuse: Mindestzeit geöffnet/frei, Position-Inks übergeben --- + L Dyn.Sk.Akt_Schritt + L 6 // Mindestzeit ok? + <>I // Nein! + O B_InSchleuse // Sensor Trolley in Schleuse vorhanden + ON "Schleuse_geöffnet" // Schleuse hat geöffnet + R Dyn.Status.MindestZeit_ok + JC X100 // FreiZeit neu aufziehen + + AN "1s-Impuls" + O + A Puffer.Parameter_allg.Antrieb_Plus_vorhanden + AN Antrieb_plus_aktiv + O Dyn.Status.MindestZeit_ok // Zeit bereits abgelaufen + JC Xn10 + + L Dyn.Mindest_Zeit // Sensor B_im_Sep ist frei [1s] + + +1 + T Dyn.Mindest_Zeit // Sensor B_im_Sep ist frei [1s] + + L Puffer.Mindeszeit_Schleuse_geoeffnet // Mindest-Zeit erreicht ? + >=I // Ja ! + S Dyn.Status.MindestZeit_ok + JCN Xn10 + +X100: L 0 // Zeiten löschen + T Dyn.Mindest_Zeit // Sensor B_im_Sep ist frei [1s] + +// Schleuse geöffnet: (Position-Inks übergeben) +Xn10: AN "Schleuse_geöffnet" // Schleuse hat geöffnet + JC X10E + + L Ausfahr_Inks + L Puffer.Puffer_Position_Inks + >I // Rest-Inks-Wert ist größer! + JC X10E + + L Puffer.Puffer_Position_Inks + T Ausfahr_Inks + +X10E: NOP 0 + + +--- NW 12: Keine neue Trolley-Einfahrt ? --- +// Neu-Trolley ist im Puffer: + A Neu_Trolley_in_Puffer // s.o. + O B_LeerpufferEinfahrt // Stauklappe + JC X110 + + AN "1s-Impuls" + O Dyn.Status.Kein_neuer_Trolley_kommt + JC Xn11 + + L Dyn.Leer_Zeit // Zeit für LeerCheck [1s] + + +1 + T Dyn.Leer_Zeit // Zeit für LeerCheck [1s] + + L Puffer.Wartezeit_bis_Puffer_leer // Leer-Zeit erreicht ? + >=I // Ja ! + JCN Xn11 + + T Dyn.Leer_Zeit // Zeit für LeerCheck einfrieren + + SET + S Dyn.Status.Kein_neuer_Trolley_kommt + + JU Xn11 + +X110: L 0 // Zeiten löschen + T Dyn.Leer_Zeit + + SET + R Dyn.Status.Kein_neuer_Trolley_kommt + +Xn11: NOP 0 + + +--- NW 13: Reservierungs-Check --- + L Dyn.Reservierungs_DL.Datenlistenkopf.AnzahlEintraege + L 0 + ==I + O "MB3305" // Trolley wird gerade vereinzelt + O "BG3306" // Synchron-Sensor aktiv + JC NoResCheck // Später -> Hauptstrangdaten checken! + +// Trolleys noch unterwegs ? + L "LP_TravelFIFO".Travel_FIFO_BG3306.FIFO.ANZAHL + L "LP_HS_oF".Datensortkopf.AnzahlEintraege + +I + L "LP_HS_mF".Datensortkopf.AnzahlEintraege + +I + L 0 // Es sind noch Trolleys unterwegs + <>I + JC NoResCheck + + L Dyn.Reservierungs_DL.Res_Trolley[1].Trolley_ID + T "MD220" + + JU ResOut + +NoResCheck: NOP 0 + + +--- NW 14: Leer-Check aktiv --- +// Falls Inilauf aktiv: + A Dyn.Status.Leerpuffer_initialisieren + AN Dyn.Status.Leer_Check_aktiv + S Dyn.Status.Leer_Check_aktiv + JCN Check // Negierter Sprung + + L 0 // Zeiten neu aufziehen + T Dyn.Leer_Zeit + + SET + R Dyn.Status.Kein_neuer_Trolley_kommt + +Check: NOP 0 +// Inilauf, kein Daten aber Trolley ist in Schleuse: + A Dyn.Status.Leerpuffer_initialisieren + A B_InSchleuse + A( + L Dyn.Anzahl_LeerTrolleys + L 0 + ==I + ) + AN Dyn.Status.Einen_LeerTrolley_ausfahren + S Dyn.Status.Einen_LeerTrolley_ausfahren // Trolley zwingend ausfahren + +// Abbruch, da Trolley ist doch noch in Schleuse gefahren: + A Dyn.Status.Leerpuffer_initialisieren + A B_InSchleuse + A( + L Dyn.Anzahl_LeerTrolleys // Anzahl wurde eingetragen + L 0 + >I + O Dyn.Status.Trolley_nicht_in_Schleuse + ) + R Dyn.Status.Leerpuffer_initialisieren + R Dyn.Status.Trolley_nicht_in_Schleuse + R Dyn.Status.Leer_Check_aktiv + + AN Dyn.Status.Leer_Check_aktiv + JC Xn12 + +// Trolley während Check erkannt: + AN Dyn.Status.Kein_neuer_Trolley_kommt // nichts mehr eingefahren, + JC Xn12 + +// Aber: + A "Schleuse_geöffnet" // aber Schleuse noch geöffnet + O B_InSchleuse // aber Trolley noch in Schleuse + JCN Fertig // Negierter Sprung + + L 0 // Zeit neu aufziehen + T Dyn.Leer_Zeit + + SET + R Dyn.Status.Kein_neuer_Trolley_kommt + + JU Xn12 + +Fertig: SET + R Dyn.Status.Leer_Check_aktiv + R Dyn.Status.Trolley_nicht_in_Schleuse + + A Dyn.Status.Leerpuffer_initialisieren + R Dyn.Status.Leerpuffer_initialisieren + JCN Reset // Negierter Sprung + + L 0 + T Dyn.Anzahl_LeerTrolleys // Minimum übergeben + + JU Xn12 // Nicht mehr wegen Gefahr der Überfüllung, besser Reservierungen checken + +// Reservierungs-Liste löschen: + L Puffer.Puffer_Dyn_DW + L Puffer.PufferReservierungsliste_DW + +I + T SSDW + +CALL FC "DatenReset" (SSDB:=Puffer.Puffer_Dyn_DB, SSDW:=SSDW, RE_VAL:="MB198") + + JU Reset + +Xn12: NOP 0 + + +--- NW 15: Reset aktiv --- + JU En14 + +Reset: SET + R Dyn.HMI.LeerPuffer_initialisieren // Button-Anzeige wieder normal + R Dyn.Status.Trolley_nicht_in_Schleuse + R Dyn.Status.Puffer_nicht_leer + R Status2.Eintrag_DL_Leerliste_erfolgt + R Status2.Eintrag_DL_Reinliste_erfolgt + R Status2.Eintrag_Abrufliste_erfolgt + R Dyn.Error.Err_Raus_Sensor + + L 0 + T Dyn.Leer_Zeit + T Puffer.LeerPuffer_Nr // Nummer des Leerpuffers (damit Leerpufferdaten neu geholt werden!) + +En14: NOP 0 + + +--- NW 16: Puffer hat Platz / ist frei / Einlagern aktiv --- +// Puffer hat Platz: + L Dyn.Reservierungs_DL.Datenlistenkopf.AnzahlEintraege + L Dyn.Anzahl_LeerTrolleys + +I + T GesamtAnzahl + L Puffer.MaxAnzahl_LeerPuffer + I + A Dyn.Status."Puffer_hat Platz" + AN Status2.Auslagern_ist_aktiv + S Status2.Einlagern_ist_aktiv + + A Status2.Auslagern_ist_aktiv // Wegen FIFO + O Dyn.HMI.Einlagern_gesperrt + R Status2.Einlagern_ist_aktiv + + +--- NW 17: Starten aus Leerpuffer aufgrund von Ausfahrsituation ok --- + L Puffer.Puffer_Position_Inks + L 0 // Undefiniert ? + ==I // Ja! + JC X14E + + L Ausfahr_Inks // Trolles auf Förderer vorbei? + L 0 // Undefiniert ? + ==I // Ja! + JC X14E + + L Puffer.Puffer_Position_Inks + L 20 // damit vorbeifahrender Trolley größeren Abstand bekommt + -I + L Ausfahr_Inks // Trolleys auf Förderer vorbei? + >I // Ja! + O( + L 1 // Minimalwert ? + ==I // Ja ! + ) + = Inks_Ok + +X14E: NOP 0 + + +--- NW 18: DLPuffer_leer: Ein-/Austrag --- + AN Dyn.Status.Puffer_leer // Kann mit neuen Leertrolleys bestückt werden! + O Dyn.HMI.Einlagern_gesperrt + O Dyn.Status.Leerpuffer_initialisieren + JC Austrag_Leerliste + +// Eintrag aus Leerliste: + L LeerPuffer_Nr + T "MW220" // Puffer, der leer ist + +CALL FC "DatenIn" (SSDB:=500, SSDW:=0, INDATEN:=P#M220.0, RE_VAL:="MB219") // Anforderung in Datenliste eintragen + + AN "M219.6" // Daten wurden überschrieben + AN "M219.7" // Eintrag ist richtig erfolgt + JC NoChange_Leerliste + + SET + S Status2.Eintrag_DL_Leerliste_erfolgt + + JU NoChange_Leerliste + +Austrag_Leerliste: NOP 0 +// Austrag aus Leerliste: + L LeerPuffer_Nr + T "MW220" // Puffer, der leer ist + +CALL FC "DatenOut" (SSDB:=500, SSDW:=0, PARA:=WORD#16#E100, SEARCHDATEN:=P#M220.0, RE_VAL:="MB219", OUTDATEN:=P#M230.0, Position:="MW196") // Anforderung aus Datenliste löschen + + SET + R Status2.Eintrag_DL_Leerliste_erfolgt + +NoChange_Leerliste: NOP 0 + + +--- NW 19: DLPuffer_einfahren: Ein-/Austrag --- + AN Dyn.Status."Puffer_hat Platz" // Puffer hat kein Platz mehr + ON Status2.Einlagern_ist_aktiv + O Dyn.HMI.Einlagern_gesperrt + O Dyn.Status.Leerpuffer_initialisieren + R Status2.Einlagern_ist_aktiv + JC Austrag_Reinliste + +// Eintrag in Reinliste: + A( + L Dyn.Reservierungs_DL.Datenlistenkopf.AnzahlEintraege + L 0 // Reservierung schon erfolgt ? + >I // Ja! + O Status2.Einlagern_ist_aktiv + ) + JCN NoChange_Reinliste // Negierter Sprung + + L LeerPuffer_Nr // angefahrener Puffer + T "MW220" + +CALL FC "DatenIn" (SSDB:=501, SSDW:=0, INDATEN:=P#M220.0, RE_VAL:="MB219") // Anforderung in Datenliste eintragen + + AN "M219.6" // Daten wurden überschrieben + AN "M219.7" // Eintrag ist richtig erfolgt + JC NoChange_Reinliste + + SET + S Status2.Eintrag_DL_Reinliste_erfolgt + + JU NoChange_Reinliste + +Austrag_Reinliste: NOP 0 +// Austrag aus Reinliste: + L LeerPuffer_Nr + T "MW220" + +CALL FC "DatenOut" (SSDB:=501, SSDW:=0, PARA:=WORD#16#E100, SEARCHDATEN:=P#M220.0, RE_VAL:="MB219", OUTDATEN:=P#M230.0, Position:="MW196") // Anforderung aus Datenliste löschen + + SET + R Status2.Eintrag_DL_Reinliste_erfolgt + +NoChange_Reinliste: NOP 0 + + +--- NW 20: DLPuffer_ausfahren: Ein-/Austrag --- + A Dyn.Status.Puffer_leer // Kann mit neuen Leertrolleys bestückt werden! + AN Dyn.Error.Err_Leerpuffer_nicht_leer // Damit Trolley ausgefahren werden kann! + O Dyn.HMI.AusLagern_gesperrt + R Dyn.Status.Einen_LeerTrolley_ausfahren + JC Austrag_Abrufliste + +// Eintrag aus Abrufliste: + A B_InSchleuse // Sobald Trolley in Ausfahrschleuse + JCN NoChange_Abrufliste // Negierter Sprung + + L LeerPuffer_Nr // angefahrener Puffer + T "MW220" + +CALL FC "DatenIn" (SSDB:=502, SSDW:=0, INDATEN:=P#M220.0, RE_VAL:="MB219") // Anforderung in Datenliste eintragen + + AN "M219.6" // Daten wurden überschrieben + AN "M219.7" // Eintrag ist richtig erfolgt + JC NoChange_Abrufliste + + SET + S Status2.Eintrag_Abrufliste_erfolgt + + JU NoChange_Abrufliste + +Austrag_Abrufliste: NOP 0 +// Austrag aus Abrufliste: +Austrag: L LeerPuffer_Nr // angefahrener Puffer + T "MW220" + +CALL FC "DatenOut" (SSDB:=502, SSDW:=0, PARA:=WORD#16#E100, SEARCHDATEN:=P#M220.0, RE_VAL:="MB219", OUTDATEN:=P#M230.0, Position:="MW196") // Anforderung aus Datenliste löschen + + SET + R Status2.Eintrag_Abrufliste_erfolgt + +NoChange_Abrufliste: NOP 0 + + +--- NW 21: Schrittkette anhalten --- + A Dyn.Sk.Auto_akt // Automatik ist aktiv + A Dyn.Sk.Bereich_ok + JU en08_Mig // Schrittkette nicht anhalten ! + + SET // Störungen löschen + R Dyn.Sk.Err_Uebzeit + R Dyn.Sk.Err_Schritt + + L 0 // Zeitwerte löschen + T Dyn.Sk.Terr_Zelle + T Dyn.Sk.Tok_Zelle + + BEU + +en08_Mig: NOP 0 + + +--- NW 22: Sprungverteiler --- +OUT_Sk: L Dyn.Sk.Neu_Schritt // Schritt, der im nächsten Zyklus aktiv werden soll + L -1 // angegeben ? + ==I // Nein ! + JC NEU + + CAC // Neuen Schritt übergeben + T Dyn.Sk.Akt_Schritt + + L -1 // Urzustand + T Dyn.Sk.Neu_Schritt // Schritt, der im nächsten Zyklus aktiv werden soll + +NEU: SET + R Ueb_akt // Überwachungszeit aktivieren + R Warte_neu // Wartezeit neutriggern + R Warte_stop // Wartezeit stoppen + + L Dyn.Sk.Akt_Schritt + JL Ende + JU s000 // Schritt 0 + JU s001 // Schritt 1 + JU s002 // Schritt 2 + JU s003 // Schritt 3 + JU s004 // Schritt 4 + JU s005 // Schritt 5 + JU s006 // Schritt 6 + JU s007 // Schritt 7 + JU s008 // Schritt 8 + JU s009 // Schritt 9 + JU s010 // Schritt 10 + JU s011 // Schritt 11 + JU s012 // Schritt 12 + JU s013 // Schritt 13 + JU s014 // Schritt 14 + JU s015 // Schritt 15 + JU s016 // Schritt 16 + JU s017 // Schritt 17 + JU s018 // Schritt 18 + JU s019 // Schritt 19 + JU s020 // Schritt 20 + JU s021 // Schritt 21 + JU s022 // Schritt 22 + JU s023 // Schritt 23 + JU s024 // Schritt 24 + JU s025 // Schritt 25 + JU s026 // Schritt 26 + JU s027 // Schritt 27 + JU s028 // Schritt 28 + JU s029 // Schritt 29 + JU s030 // Schritt 30 +Ende: S Dyn.Sk.Err_Schritt // Undefinierter Schritt + + L 16#A231 + T Dyn.Stop_Ursache + + BEU + +Neu_Mig: A Dyn.Sk.Err_Uebzeit + JCN Sk + + L 16#A232 + T Dyn.Stop_Ursache + + BEU + +Sk: T Dyn.Sk.Akt_Schritt + + L 0 // Zeitwerte löschen + T Dyn.Sk.Terr_Zelle + T Dyn.Sk.Tok_Zelle + + JU NEU + +// Nicht programmierte Schritte: +// s000: SPA Ende +// s001: SPA Ende +// s002: SPA Ende +s003: JU Ende +s004: JU Ende +// s005: SPA Ende +// s006: SPA Ende +// s007: SPA Ende +s008: JU Ende +s009: JU Ende +s010: JU Ende +s011: JU Ende +s012: JU Ende +s013: JU Ende +s014: JU Ende +s015: JU Ende +s016: JU Ende +s017: JU Ende +s018: JU Ende +s019: JU Ende +// s020: SPA Ende +// s021: SPA Ende +s022: JU Ende +s023: JU Ende +s024: JU Ende +s025: JU Ende +s026: JU Ende +s027: JU Ende +s028: JU Ende +s029: JU Ende +s030: JU Ende + + +--- NW 23: Schritt X: Reserve --- + SET // Weiterschaltbedingung + = Weiter + +// Schrittaktionen: + SET + + L 16#B001 + T Dyn.Stop_Ursache + + A Dyn.Sk.Reset_Akt // Reset ist aktiv + L 20 // Weiter mit Schritt 20 + JC Neu_Mig // Bei diesem Schritt weiter + + A Weiter // Weiterschaltbedingung ist erfüllt + R Dyn.Sk.Err_Uebzeit // Sofort weiter ! + L 0 // Angabe der Wartezeit (*10ms) + JC Plus // Nächsten Schritt starten + + L 1 // Weiter mit Schritt 1 + JC Neu_Mig // Bei diesem Schritt weiter + + T Dyn.Sk.Neu_Schritt // Schritt, der im nächsten Zyklus aktiv werden soll + + SET + A Dyn.Sk.Auto_akt // Automatik ist aktiv + A Dyn.Sk.Bereich_ok + = Ueb_akt // Überwachungszeit aktivieren + L 50 // Angabe der Überwachungszeit (*1s) + JU tueb // Überwachungszeit + + BEU + + +--- NW 24: Schritt 0: Warten auf Trolley --- +s000: SET // Weiterschaltbedingung + A B_InSchleuse // Trolley im Schleuse erkannt + A Dyn.Sk.Auto_akt // Automatik ist aktiv + A Dyn.Sk.Bereich_ok + = Weiter + +// Schrittaktionen: + SET + R Dyn.Error.Err_Leerpuffer_nicht_leer + + A Dyn.Sk.Reset_Akt // Reset ist aktiv + L 20 // Weiter mit Schritt 20 + JC Neu_Mig // Bei diesem Schritt weiter + + A Weiter // Weiterschaltbedingung ist erfüllt + R Dyn.Sk.Err_Uebzeit // Sofort weiter ! + L 100 // Angabe der Wartezeit (*10ms) + JC Plus // Nächsten Schritt starten + + L 16#B001 + T Dyn.Stop_Ursache + +// Trolley soll gestartet werden: + A Dyn.Status.Einen_LeerTrolley_ausfahren // Von FB5429/2 + A( + A Dyn.Sk.Err_Uebzeit + AN B_InSchleuse // Trolley im Schleuse erkannt + O Dyn.Status.Leerpuffer_initialisieren // Damit Einfahren blockiert wird + ) + R Dyn.Status.Einen_LeerTrolley_ausfahren // Von FB5429/2 + JCN ÜbStart + + L "DLP_Auslagern".Auslagern.Auslager_Puffer + L LeerPuffer_Nr + <>I + JC ENDE_Mig + + L 0 + T "DLP_Auslagern".Auslagern.Auslager_Puffer + + JU Austrag // Puffer aus Ausfahr-Liste löschen + +// Überwachungszeit starten: +ÜbStart: AN B_InSchleuse // Trolley im Schleuse erkannt + A Dyn.Status.Einen_LeerTrolley_ausfahren // Von FB5429/2 + = Ueb_akt // Überwachungszeit aktivieren + +// Trolley kommt nicht!: + L Dyn.Anzahl_LeerTrolleys + L 0 // Trolleydaten vorhanden ? + >I // Ja ! + A Dyn.Sk.Err_Uebzeit + AN B_InSchleuse // Trolley im Schleuse erkannt + AN Dyn.Status.Trolley_nicht_in_Schleuse + S Dyn.Status.Trolley_nicht_in_Schleuse + S Dyn.Status.Leerpuffer_initialisieren // Damit Einfahren blockiert wird + + L 15 // 15s + A Dyn.Status.Einen_LeerTrolley_ausfahren // Bei Ausfahrwunsch -> Kurze Zeit + JC tueb // Überwachungszeit + + L Puffer."Übzeit_in_Schleuse" + + JU tueb // Überwachungszeit + + +--- NW 25: Schritt 1: Trolley ist in Schleuse / Warten auf Bit "Einen Trolley ausfahren" --- +s001: NOP 0 + +// Schrittaktionen: + AN B_InSchleuse // Trolley im Schleuse erkannt + L 0 // Weiter mit Schritt 0 + JC Neu_Mig // Bei diesem Schritt weiter + + SET + R Dyn.Error.Err_Trolley_nicht_in_Schleuse + +// Puffer leer ?: + A Dyn.Status.Puffer_leer + AN Dyn.Status.Puffer_nicht_leer + S Dyn.Status.Puffer_nicht_leer + S Dyn.Status.Leerpuffer_initialisieren // Damit Einfahren blockiert wird + +// Spezial-Betriebsarten: + A Dyn.Status.Einen_LeerTrolley_ausfahren + L 2 // Weiter mit Schritt 2 + JC Neu_Mig // Bei diesem Schritt weiter + + L 16#B011 + T Dyn.Stop_Ursache + + BEU + + +--- NW 26: Schritt 2: Ausfahren ok ? --- +s002: NOP 0 + +// Schrittaktionen: + AN B_InSchleuse // Trolley im Schleuse erkannt + L 0 // Weiter mit Schritt 0 + JC Neu_Mig // Bei diesem Schritt weiter + + SET + S Dyn.Status."Trolley_wartet_Bereich+1" + +// Anlage aus oder Störung: + L 16#B020 + T Dyn.Stop_Ursache + + AN Dyn.Sk.Auto_akt // Automatik ist aktiv + ON Dyn.Sk.Bereich_ok // Bereich ist gestört + JC X002 + +// Trolley starten erlaubt ?: + L 16#B021 + T Dyn.Stop_Ursache + + AN Start_Ok // Starten ist erlaubt + JC X002 + +// Stau im Bereich +1: + L 16#B022 + T Dyn.Stop_Ursache + + A B_Stau_raus_Out + JC X002 // Stau + +// B_Aus_Schleuse aktiv: + L 16#B023 + T Dyn.Stop_Ursache + + A Puffer.Parameter_allg.B_AusSep_vorhanden + A B_AusSchleuse + = Dyn.Error.Err_Raus_Sensor // Raus-Sensor wird nicht erreicht (oder dauernd aktiv)! + JC X002 + +// Inks ok ?: + L 16#B024 + T Dyn.Stop_Ursache + + SET + S Antrieb_plus_vor + + AN Inks_Ok // Starten ist erlaubt + JC X002 + +// Antriebe aktivieren / aktiv ?: + A Puffer.Parameter_allg.Antrieb_Plus_vorhanden // Schleuse an weiterem Antrieb (Weiche) + S Antrieb_plus_vor // Kreisel-Antrieb plus starten + + L 16#B025 + T Dyn.Stop_Ursache + + AN Antrieb_plus_aktiv // Kreisel-Antrieb plus aktiv + A Puffer.Parameter_allg.Antrieb_Plus_vorhanden // Schleuse an weiterem Antrieb (Weiche) + BEC + + L 5 // Nur 1 langes Signal! + JU Neu_Mig // Bei diesem Schritt weiter + +X002: L 1 // Auftrag checken + T Dyn.Sk.Neu_Schritt // Schritt, der im nächsten Zyklus aktiv werden soll + + BEU + + +--- NW 27: Schritt 5: Trolley fährt aus/ausgefahren ? --- +s005: SET // Weiterschaltbedingung + AN B_InSchleuse // Sensor Trolley ist in Schleuse + A "Schleuse_geöffnet" + A Antrieb_plus_aktiv + = Weiter + +// Schrittaktionen: + SET + S Y_Schleuse_Auf // Schleuse öffnen + R Start_Ok // Damit kein weiterer Puffer ausfährt + S Dyn.Status."Trolley_fährt_aus" + S Antrieb_plus_vor // Kreisel-Antrieb plus starten + S Status2.Auslagern_ist_aktiv + +// Trolley ist draussen: + A( + O B_AusSchleuse // Sensor Trolley aus Schleuse gefahren + ON Puffer.Parameter_allg.B_AusSep_vorhanden + ) + AN B_InSchleuse // Sensor Trolley ist in Schleuse + R Dyn.Error.Err_Trolley_raus // Trolley fährt nicht aus + L 0 + JC Plus // Nächsten Schritt starten + + A Weiter // Weiterschaltbedingung ist erfüllt + R Dyn.Error.Err_Trolley_raus // Trolley fährt nicht aus + L 50 // Falls nur mit Sensor gefahren wird, dann Wartezeit! + JC Plus // Nächsten Schritt starten + +// Trolley fährt nicht raus!: + A Weiter // Weiterschaltbedingung ist erfüllt + R Dyn.Sk.Err_Uebzeit // Sofort weiter ! + R Dyn.Error.Err_Trolley_raus // Trolley fährt nicht aus + L 0 + JC Plus // Nächsten Schritt starten + + A Dyn.Sk.Err_Uebzeit + O B_QuerTrolley_Out // QuerTrolley auf Crashkurs + S Dyn.Error.Err_Trolley_raus // Trolley fährt nicht aus + + L 16#B051 + T Dyn.Stop_Ursache + + AN B_AusSchleuse // Sensor Trolley aus Schleuse gefahren + JC x052 + + L 16#B052 + T Dyn.Stop_Ursache + +x052: A Antrieb_plus_aktiv + = Ueb_akt // Überwachungszeit aktivieren + L Puffer."Übzeit_aus_Schleuse" // Angabe der Überwachungszeit (*1s) + JU tueb // Überwachungszeit + + +--- NW 28: Schritt 6: Schleuse Mindestzeit geöffnet ? --- +s006: SET // Weiterschaltbedingung + A Dyn.Status.MindestZeit_ok + O + A Puffer.Parameter_allg.B_AusSep_vorhanden + A B_AusSchleuse // Sensor Trolley aus Schleuse gefahren + = Weiter + +// Schrittaktionen: + A B_QuerTrolley_Out // QuerTrolley auf Crashkurs + S Dyn.Error.Err_Trolley_raus // Trolley fährt nicht aus + + SET + R Start_Ok // Damit kein weiterer Puffer ausfährt + S Y_Schleuse_Auf // Schleuse öffnen + S Antrieb_plus_vor // Kreisel-Antrieb plus starten + S Dyn.Status."Trolley_fährt_aus" + + A B_InSchleuse // Trolley wieder erkannt + L 5 // Weiter mit Schritt 5 + JC Neu_Mig // Bei diesem Schritt weiter + + A Weiter + L 0 + JC Plus // Nächsten Schritt starten + + L 16#B061 + T Dyn.Stop_Ursache + + BEU + +--- NW 29: Schritt 7: Trolleydaten ändern --- +s007: SET // Weiterschaltbedingung + = Weiter + +// Schrittaktionen: + SET + S Dyn.Status.Trolley_draussen // 1 Zyklus + R Dyn.Status.Einen_LeerTrolley_ausfahren + + L Dyn.Vereinzelungstakte + + DINT#1 // Vereinzelungen +1 + T Dyn.Vereinzelungstakte + + L Dyn.Anzahl_LeerTrolleys + + -1 + T Dyn.Anzahl_LeerTrolleys + + L 0 // sinnvoller Wert? + >I // Ja! + JC ENDE_Mig + + T Dyn.Anzahl_LeerTrolleys // Minimum übergeben + + JU ENDE_Mig + + +--- NW 30: Schritt 20: Schleuse resetten --- +s020: SET // Weiterschaltbedingung + = Weiter // Weiterschaltbedingung ist erfüllt + +// Schrittaktionen: + A "Schleuse_geöffnet" + R Start_Ok // Damit kein weiterer Puffer ausfährt + + L 16#B201 + T Dyn.Stop_Ursache + + A Weiter // Weiterschaltbedingung ist erfüllt + L 300 // Angabe der Wartezeit (*10ms) + JC Plus // Nächsten Schritt starten + + SET + = Ueb_akt // Überwachungszeit aktivieren + L 30 // Angabe der Überwachungszeit (*100ms) + JU tueb // Überwachungszeit + + +--- NW 31: Schritt 21: Reset ist zu Ende --- +s021: SET + R Dyn.Sk.Reset_Akt // Reset ist aktiv + R Dyn.HMI.Schleuse_resetten_Leerpuffer + R Dyn.Status.Einen_LeerTrolley_ausfahren + + JU ENDE_Mig // Neubeginn + + +--- NW 32: Schrittkette beenden --- +ENDE_Mig: L 0 // Schritt 0: Warten + T Dyn.Sk.Akt_Schritt + + L 0 // Zeitwert löschen + T Dyn.Sk.Terr_Zelle + T Dyn.Sk.Tok_Zelle + + SET + R Dyn.Sk.Err_Uebzeit + + BEU + + +--- NW 33: Nächsten Schritt aktivieren --- +Plus: T Dyn.Sk.T_ok // Wartezeit übergeben + + A Dyn.Sk.Err_Uebzeit // Störung noch nicht quittiert + BEC + + L 0 // keine Wartezeit ? + ==I // Ja ! -> sofort weiter + JC w220 + + AN Warte_neu // Wartezeit neutriggern + JC W220_Mig + + L 0 + T Dyn.Sk.Tok_Zelle // Wartezeit + +W220_Mig: A Warte_stop // Wartezeit stoppen + BEC + + L Dyn.Sk.Tok_Zelle + L "MW4" // Wartezeit +10ms + +I + T Dyn.Sk.Tok_Zelle // Wartezeit + L Dyn.Sk.T_ok // abgelaufen ? + I // abgelaufen ? + AN Dyn.Sk.Err_Uebzeit + JC en24 // Nein ! + + A Ueb_akt // Überwachungszeit aktivieren + S Dyn.Sk.Err_Uebzeit + + L 0 // Zeitwert löschen + T Dyn.Sk.Terr_Zelle + + BEU + +en24: NOP 0 + +--- NW 35: Überwachungszeit +1 --- + AN Dyn.Sk.Ueb_akt // Schrittaktion ist aktiv + ON "1s-Impuls" + BEC + + L Dyn.Sk.Terr_Zelle + + 1 // Üb.zeit +1s + T Dyn.Sk.Terr_Zelle + + BEU + + +--- NW 36: Ende --- + BE + diff --git a/=A01+UH07-KF00/Programmbausteine/Module/MHMOmniBereich_Plus.awl b/=A01+UH07-KF00/Programmbausteine/Module/MHMOmniBereich_Plus.awl new file mode 100644 index 0000000..f841c4a --- /dev/null +++ b/=A01+UH07-KF00/Programmbausteine/Module/MHMOmniBereich_Plus.awl @@ -0,0 +1,1317 @@ +=== FB 2275: MHMOmniBereich_Plus [STL] === +INTERFACE: + Input: + Bereichs_Nr : Int // Aufruf für Bereich + ErrQuit : Bool // Ablaufstörung quittieren + B_BereichsAnfang : Bool // Sensor Trolley fährt in Bereich + B_BereichsEnde : Bool // Sensor Trolley istam BereichsEnde + B_Zähl : Bool // Sensor Trolley hat Bereich verlassen + B_Stau_raus : Bool // Sensor Stau im Bereich rausfahren + Start_Ok : Bool // Starten ist erlauTrolley + Antrieb_Bereich_aktiv : Bool // Bereichs-Antrieb aktiv + Antrieb_plus_aktiv : Bool // Antrieb plus aktiv + RestZeit_Bereich_plus : Int := 999 // Bereich +1: Restzeit bis AFS stoppt (s) + Output: + Antrieb_Bereich_vor : Bool // Bereichs-Antrieb einschalten + Antrieb_Bereich_stop : Bool // Bereichs-Antrieb stoppen + Error : Word // Störungen übergeben + InOut: + Antrieb_Bereich_start : Bool // Bereichs-Antrieb mit Zeit starten + Antrieb_plus_vor : Bool // Antrieb plus einschalten + Antrieb_plus_start : Bool // Antrieb plus mit Zeit starten + Antrieb_minus_vor : Bool // Antrieb minus einschalten + hStOk : Bool // Anzeige Start n. Störung aktivieren + Static: + Res20 : Array[1..4] of Int // Reserve + Para : Struct // Parameter + Bereich_DL_DB : Int // Einsprung Bereich-Datenliste-DB + Frei22 : Int + Frei24 : Int + Res30 : Array[1..2] of Int // Reserve + Bereich : "UDLHMOmniBereich_Plus" // Statische Bereichdaten (aus DL) + Dyn : Struct // Dynamische Daten + Status : Struct + Trolley_kommt_in_Bereich : Bool // Trolley kommt in Bereich (Signal von Bereich-1) + Trolley_ist_im_Bereich : Bool // Trolley fährt in Bereich + Trolley_am_BereichsEnde : Bool // Trolley ist am BereichsEnde + Trolley_wartet_auf_Ziel-FC : Bool + Trolley_wartet_Bereich+1 : Bool // Trolley wartet auf Bereich +1 + Trolley_fährt_aus : Bool // Trolley fährt aus + Trolley_draussen : Bool // Trolley ist ausgefahren + Error_aktiv : Bool // Störung vorhanden + Reset_aktiv : Bool := TRUE // Reset aktiv + Anfangs-Sensor_ausgewertet : Bool + Ende-Sensor_ausgewertet : Bool + Inilauf_aktiv : Bool + Trolley an Raus-Sensor : Bool // Trolley ist am Raus-Sensor + Stau_an_Raus-Sensor : Bool // Stau an Raus-Sensor (kein Zählen mehr) + HMI : Struct + Bereich_resetten : Bool // Bereich resetten (IN:HMI, Out:PLC) + Sk : "USk_ILS" // Status der Schrittkette + Rueckmld : Struct + RET_VAL_BLKMOV_Bereich : Int // Rückmeldung nach BLKMOV-Aufruf + RET_VAL_DL_Bereich : Byte + Error : "UErrHMOmniBereich" + Stau_Zeit : Int // Sensor B_VorSep ist belegt [100ms] + Leer_Zeit : Int + Stop_Ursache : Word // Stop-Stelle: Nw + Position + Gefahrene_Trolleys : DInt // Anzahl der getätigten Vereinzelungstakte + Laufzähler : Int // Laufzähler + Wartezeit : Int // Wartezeit (kein EInfahren erlaubt) [s] + Trolley_DL : Struct // AB DW350: Liste der Trolleys im Lager + Datenlistenkopf : Struct + KOPF : Word := WORD#16#DA01 // Datenliste-Kennnung (DA) / Datensatzlänge in Word (1 - 128) + LAENGE : Int := 10 // Länge der Datenliste (maximale Anzahl der Datensätze) + STAMMDATEN : Int := 1 // Stammdatenlänge in Word (1 - 9) + INDDB : Int // Indizierter DB (nur bei Stammdaten = 1 erlaubt !!!) + LAENGEINDDB : Int // Länge des indizierten DB in Word (nur bei Stammdaten = 1 erlaubt !!!) + INDDATEN_WANDEL_FC : Int // FC zum Wandeln der indizierte Daten (nur bei Stammdaten = 1 erlaubt !!!) + LETZTERZUGRIFF : Int // Speicherung des letzten Zugriffs + Belegt14 : Int // reserviert von Sort-Datenliste + AnzahlEintraege : Int // Anzahl der eingetragenen Datensätze (nicht bei ind.Zugriff!) + Reserve18 : Int // Reserve + Trolley : Array[1..10] of Int // TrolleyZeit bis Ende (s) + Endekennung : Word := WORD#16#DAEE // Datensort-Ende-Kennung (DBEE) + Restzeit : Int // Diese Zeit hat Trolley noch zum Fahren (s) + Timer_Rein : TON_TIME + Timer_Raus : TON_TIME + Zeit_Ohne_B_In_Schleuse : Int // Trolley nicht an B_In_Schleuse + Zeit_Ohne_B_Zähl : Int // Trolley nicht an B_Zähl + Zeit_Ausfahren_Ohne_B_Zähl : Int // Trolley fährt nicht zu B_Zähl + Raus_Trolleys : Int // Anzahl der Trolleys zwischen Schleuse und Raus-Sensor + Stau_Zeit_RausSensor : Int // Sensor B_AusSep ist belegt [1s] + Res200 : Array[1..2] of Int // Reserve + Temp: + Quelle : Any // Zeiger, wo Rein-Daten sind + Ziel : Any // Zeiger, FIFO-Stelle + Ueb_akt : Bool // Überwachungszeit aktivieren + Weiter : Bool // Weiterschaltbedingung ist erfüllt + Warte_neu : Bool // Wartezeit neu triggern + Warte_stop : Bool // Wartezeit stoppen + ZielFC_vorhanden : Bool + DraussenFC_vorhanden : Bool + Trolley_draussen : Bool // Signal: Trolley ist draussen + Antriebe_starten : Bool + ZielFC : Word // Ziel-FC + DraussenFC : Word // Draussen-FC + AR1Start : DInt // Startwert mit Offset 0 + AR1Zeiger : DWord // Statt AR1 (ging nur bis DB-Länge <= 8191 Bytes) + SSDW : Int + SSDB : Int + Restzeit_errechnet : Int + Constant: + +--- NW 1: Parameter-Übergabe --- + L Bereichs_Nr + + L 274 // Einsprung Bereich-DL + T Para.Bereich_DL_DB // vor Aufruf übergeben! + + +--- NW 2: Anzeige OP --- + L 252 // Bereichsstop aktiv + AN Dyn.Sk.Bereich_ok // Also: Bereichsstop / Not-Aus + JC w010 + + L 253 + AN Dyn.Sk.Auto_akt // Keine Betriebsart + AN Dyn.Sk.Hand_akt + JC w010 + + L 255 // Handbetrieb aktiv + A Dyn.Sk.Hand_akt + JC w010 + + L Dyn.Sk.Akt_Schritt // Aktiver Schritt +w010: T Dyn.Sk.OP_Schritt + + +--- NW 3: Out-Bits zum Zurücksetzen --- + SET // Jeden Zyklus neu + R Dyn.Status."Trolley_wartet_auf_Ziel-FC" + R Dyn.Status."Trolley_wartet_Bereich+1" + R Dyn.Status.Trolley_draussen + R Antrieb_Bereich_vor + R Antrieb_Bereich_stop + + L 0 + T Restzeit_errechnet + + +--- NW 4: HMI-Zeug --- +// Von HMI: + A Dyn.HMI.Bereich_resetten + R Dyn.HMI.Bereich_resetten // von HMI + S Dyn.Sk.Reset // SK zurücksetzen + + +--- NW 5: Sensoren entprellen --- +// Rein-Sensor entprellen: + AN B_BereichsAnfang + A Dyn.Status."Anfangs-Sensor_ausgewertet" + A Antrieb_Bereich_aktiv + = "M200.0" + +CALL SYS "TON" (IN:="M200.0", PT:=t#7s, Q:=?, ET:=?) + + A Dyn.Timer_Rein.Q + R Dyn.Status."Anfangs-Sensor_ausgewertet" + +// Ende-Sensor entprellen: + AN B_BereichsEnde + A Dyn.Status."Ende-Sensor_ausgewertet" + A Antrieb_Bereich_aktiv + A Antrieb_plus_aktiv + = "M200.0" + +CALL SYS "TON" (IN:="M200.0", PT:=t#6s, Q:=?, ET:=?) + + A Dyn.Timer_Raus.Q + R Dyn.Status."Ende-Sensor_ausgewertet" + + +--- NW 6: Schrittkette zurücksetzen --- + A ErrQuit // Überwachungszeit abgelaufen quittieren + R Dyn.Sk.Err_Uebzeit + R Dyn.Error.Err_Trolley_raus // Trolley fährt nicht aus + R Dyn.Error.Err_Raus_Sensor // Raus-Sensor wird nicht erreicht (oder dauernd aktiv)! + +// Reset oder Trolley kommt am Ende nicht an: + A ErrQuit // Überwachungszeit abgelaufen quittieren + A( + A Dyn.Status.Trolley_am_BereichsEnde + AN B_BereichsEnde // Aber kein Trolley mehr am Sensor + O Dyn.Error.Err_Trolley_nicht_am_Ende // Trolley fährt nicht in Bereich + ) + O Dyn.Sk.Reset // SK zurücksetzen + JCN en04 // Negierter Sprung! + +// Schrittkette zurücksetzen: + L 0 // Schritt 0: Warten + T Dyn.Sk.Akt_Schritt + T Dyn.Raus_Trolleys + + L 0 // Zeitwert löschen + T Dyn.Sk.Terr_Zelle + T Dyn.Sk.Tok_Zelle + + SET + R Dyn.Error.Err_BLKMov // Error bei Block kopieren + R Dyn.Sk.Reset // SK zurücksetzen + R Dyn.Sk.Err_Schritt // Undefinierter Schritt + R Dyn.Sk.Err_Uebzeit // Sofort weiter ! + R Dyn.Sk.Reset_Akt // Reset ist aktiv + R Dyn.Status.Trolley_am_BereichsEnde + R Dyn.Status."Trolley_wartet_auf_Ziel-FC" + R Dyn.Status."Trolley_wartet_Bereich+1" + R Dyn.Status."Trolley_fährt_aus" + R Dyn.Status.Inilauf_aktiv + S Dyn.Status.Reset_aktiv + + SET + R Dyn.Error.Bereich_DL // Bereich-Datenliste fehlerhaft + R Dyn.Error.Undef_Bereich // undefinierter Bereich + R Dyn.Error.Err_Trolley_nicht_am_Ende // Trolley fährt nicht in Bereich + R Dyn.Error.Err_Uebzeit // Überwachungzeit ist abgelaufen + R Dyn.Error.Err_Schritt // Schritt-Nummer ist nicht definiert + R Dyn.Error.Err_Stau_Eingang + R Dyn.Error.Err_BLKMov + R Dyn.Error.Err_Trolley_raus // Trolley fährt nicht aus + R Dyn.Error.Err_Raus_Sensor // Raus-/Belade-Sensor wird nicht erreicht (oder dauernd aktiv)! + R Dyn.Error.Err11 // kein Ziel angegeben + R Dyn.Error.Err12 // Weichen-Datenliste fehlerhaft + R Dyn.Error.Err13 // undefinierte Weiche + R Dyn.Error.Err14 // Weiche bleibt belegt + R Dyn.Error.Err15 + R Dyn.Error.Err16 + + L 0 + T Dyn.Stau_Zeit // Sensor B_VorSep ist belegt [10ms] + +// Defaultwerte übergeben: + L 0 // Damit statische Werte neu aus Datenbank geholt werden ! + T Bereich.Bereichs_Nr // Nummer des Bereichs + + JU RET + +en04: NOP 0 + + +--- NW 7: Störungen nach Außen übergeben --- + L 0 + T "MW200" + + A Dyn.Error.Bereich_DL // Bereich-Datenliste fehlerhaft + = "M200.0" + A Dyn.Error.Undef_Bereich // undefinierter Bereich + = "M200.1" + A Dyn.Error.Err_Trolley_nicht_am_Ende // Trolley fährt nicht in Bereich + = "M200.2" + A Dyn.Sk.Err_Uebzeit + = Dyn.Error.Err_Uebzeit // Überwachungzeit ist abgelaufen + = "M200.3" + NEG + R Dyn.Sk.Err_Uebzeit_AnzOk + A Dyn.Sk.Err_Schritt + = Dyn.Error.Err_Schritt // Schritt-Nummer ist nicht definiert + = "M200.4" + A Dyn.Error.Err_Stau_Eingang + = "M200.5" + A Dyn.Error.Err_BLKMov // Error bei Block kopieren + = "M200.6" + A Dyn.Error.Err_Trolley_raus // Trolley fährt nicht aus + = "M200.7" + A Dyn.Error.Err_Raus_Sensor // Raus-/Belade-Sensor wird nicht erreicht (oder dauernd aktiv)! + = "M201.0" + A Dyn.Error.Err11 // Trolley-Ziel nicht bekannt + = "M201.1" + A Dyn.Error.Err12 // Weichen-Datenliste fehlerhaft + = "M201.2" + A Dyn.Error.Err13 // undefinierte Weiche + = "M201.3" + A Dyn.Error.Err14 // Weiche bleibt belegt + = "M201.4" + A Dyn.Error.Err15 + = "M201.5" + A Dyn.Error.Err16 + = "M201.6" + A Dyn.Error.Err17 + = "M201.7" + +// Andere Meldung als Überwachungszeit aktiv ?: + L "MW200" + L 2#1111_0111_1111_1111 + AW + L 2#0000_0000_0000_0000 // Andere Meldung als Üb.zeit aktiv ? + <>I // Ja ! + ON Dyn.Sk.Err_Uebzeit_AnzOk // Störung anzeigen ok, da 2.Zyklus aktiv ! + R "M200.3" // Üb.Zeit-Meldung nicht an PC senden + + A Dyn.Sk.Err_Uebzeit + S Dyn.Sk.Err_Uebzeit_AnzOk // Störung anzeigen ok, da 2.Zyklus aktiv ! + + L "MW200" + T Error // Schnittstelle nach Außen + +// Störung vorhanden: + L 0 + <>I // Ja ! + = Dyn.Status.Error_aktiv + S hStOk + +// Antrieb stoppen: + A( + ON Dyn.Sk.Auto_akt // SystemVoraussetzungen fehlen + O Dyn.Sk.Hand_akt + ON Dyn.Sk.Bereich_ok + ) + S Antrieb_Bereich_stop // Antrieb stoppen + +// Störungen pro Zyklus neu erzeugen: + SET + R Dyn.Error.Bereich_DL // Bereich-Datenliste fehlerhaft + R Dyn.Error.Undef_Bereich // undefinierter Bereich +// / R #Dyn.Error.Err_Trolley_nicht_in_Bereich//Trolley fährt nicht in Bereich +// / R #Dyn.Error.Err_Uebzeit //Überwachungzeit ist abgelaufen + R Dyn.Error.Err_Schritt // Schritt-Nummer ist nicht definiert +// / R #Dyn.Error.Err_Stau_Einfahrt//Betriebsart ist nicht möglich + R Dyn.Error.Err_BLKMov +// / R #Dyn.Error.Err_Trolley_raus//Trolley fährt nicht aus +// / R #Dyn.Error.Err_Raus_Sensor//Raus-/Belade-Sensor wird nicht erreicht (oder dauernd aktiv)! + R Dyn.Error.Err11 // Trolley-Ziel nicht bekannt + R Dyn.Error.Err12 // Weichen-Datenliste fehlerhaft + R Dyn.Error.Err13 // undefinierte Weiche + R Dyn.Error.Err14 // Weiche bleibt belegt + R Dyn.Error.Err15 // undefinierte Weiche + R Dyn.Error.Err16 // Weiche bleibt belegt + R Dyn.Error.Err17 + + +--- NW 8: Statische Bereich-Parameter holen --- + L Bereich.Bereichs_Nr // Nummer des Bereichs + L Bereichs_Nr // Aufruf-Parameter + ==I // Identisch ? + R Dyn.Error.Bereich_DL // Bereichdatenbank fehlerhaft + R Dyn.Error.Undef_Bereich // undefinierter Bereich + JC en06 // Ja ! + + T "MW200" // Search-Daten + +CALL FC "DatenOut" (SSDB:=Para.Bereich_DL_DB, SSDW:=0, PARA:=WORD#16#0000, SEARCHDATEN:=P#M200.0, RE_VAL:="MB199", OUTDATEN:=P#M220.0, Position:="MW196") + + L "MB199" + T Dyn.Rueckmld.RET_VAL_DL_Bereich // Rückmeldung bei Datenbank-Zugriff (Gefälle-DL) + + JBI G_Ok + + A "M199.0" + JCN w060 + + SET + = Dyn.Error.Bereich_DL // Bereichdatenbank fehlerhaft + + L 16#A061 + T Dyn.Stop_Ursache + + JU RET + +w060: SET + S Dyn.Error.Undef_Bereich // undefinierter Bereich + + L 16#A062 + T Dyn.Stop_Ursache + + JU RET + +// Kennung + Datenbytes +G_Ok: SET + R Dyn.Error.Bereich_DL // Gefälledatenbank fehlerhaft + R Dyn.Error.Undef_Bereich // undefinierte Gefällestrecke + + L 16#1004 // Kennung 10 + Word=04 + T LW0 // Any-Kennung, Datentyp + L 20 // Datenwords speichern + T LW2 // Wiederholungen + +// Quelle-Pointer erzeugen: + L 0 // Bei Merker = 0 ! + T LW4 // DB_Nummer + L 220 // Adresse + SLD 3 + L 16#8300_0000 // Kennung: Merker + OD + T LD6 // Kennung, Adresse + +CALL SYS "BLKMOV" (SRCBLK:=Quelle, RET_VAL:=Dyn.Rueckmld.RET_VAL_BLKMOV_Bereich, DSTBLK:=Bereich) // Datenliste-Daten speichern | #Ziel + + L 16#A063 + T Dyn.Stop_Ursache + + L Dyn.Rueckmld.RET_VAL_BLKMOV_Bereich // Rückmeldung + L 0 // Fehler vorhanden ? + <>I // Ja ! + = Dyn.Error.Err_BLKMov // Error bei Block kopieren + JC RET + + L Bereich.Bereichs_Typ // Bereichtyp = 174 (Normal) + L 2275 // Dieser Aufruf-FB ? + ==I // Ja ! + JC w061 + + SET + S Dyn.Error.Undef_Bereich // undefinierter Bereich + + L 0 // Bereich ungültig ! + T Bereich.Bereichs_Nr // Nummer des Bereichs + + L 16#A064 + T Dyn.Stop_Ursache + + JU RET + +// Defaultwerte übergeben: +w061: NOP 0 + + JU RET + +en06: NOP 0 + + +--- NW 9: Trolleydaten auf Förderer vorhanden --- + L Dyn.Trolley_DL.Datenlistenkopf.AnzahlEintraege + L 0 // Trolleys im Bereich? + >I // Ja! + O Dyn.Status.Inilauf_aktiv + O Dyn.Status.Reset_aktiv // Reset ist aktiv + = Dyn.Status.Trolley_ist_im_Bereich + + +--- NW 10: Antrieb zusätzlich starten / stoppen --- +// Antrieb -1: + A( + O Dyn.Error.Err_Stau_Eingang // Stau bei Einfahrt + O Dyn.Status."Anfangs-Sensor_ausgewertet" + ) + A Antrieb_Bereich_aktiv + S Antrieb_minus_vor + +// Bereichs-Antrieb starten: + A ErrQuit // Überwachungszeit abgelaufen quittieren + O + A B_BereichsAnfang + AN Dyn.Error.Err_Stau_Eingang // Stau bei Einfahrt (Quittierung oder Sensor=0, wegen Bürstenantrieb + O Dyn.Status.Trolley_kommt_in_Bereich // Signal von Bereich-1 + O Dyn.Status.Trolley_ist_im_Bereich + O Dyn.Status."Trolley_fährt_aus" + O Dyn.Status."Anfangs-Sensor_ausgewertet" + O Dyn.Status."Ende-Sensor_ausgewertet" + O Dyn.Status.Inilauf_aktiv + O Dyn.Status.Reset_aktiv + S Antrieb_Bereich_start // Antrieb starten + +// Bereichsantrieb vor: + A Dyn.Status.Trolley_kommt_in_Bereich // Signal von Bereich-1 + O B_BereichsAnfang + O Dyn.Status."Trolley_fährt_aus" + S Antrieb_Bereich_vor + R Dyn.Status.Trolley_kommt_in_Bereich // Signal von Bereich-1 (Zyklus) + +// Bereichs-Antrieb stoppen: + A Dyn.Error.Err_Trolley_nicht_am_Ende + O + A Dyn.Status.Trolley_am_BereichsEnde + AN Dyn.Status."Trolley_fährt_aus" + O + A Dyn.Status."Trolley_fährt_aus" + A Bereich.Parameter_allg.Antrieb_Plus_vorhanden // Bereich an weiterem Antrieb (Weiche) + AN Antrieb_plus_aktiv // //Antrieb plus aktiv + S Antrieb_Bereich_stop // Antrieb stoppen + +// Antrieb +1: + L Dyn.Raus_Trolleys + L 0 // Trolles unterwegs? + >I // Ja! + AN Dyn.Status."Stau_an_Raus-Sensor" // Stau an Raus-Sensor + O Dyn.Status."Trolley_fährt_aus" + S Antrieb_plus_start // Antrieb plus starten + S Antrieb_plus_vor // Antrieb plus einschalten + + +--- NW 11: Plus: Trolley ist an Zähl-/Stau-Sensor --- + A "B_Zähl" + = Trolley_draussen + + A Trolley_draussen + JC B_Raus + + AN Dyn.Status."Trolley an Raus-Sensor" + AN Dyn.Status."Stau_an_Raus-Sensor" + ON "100ms-Impuls" + ON Dyn.Sk.Bereich_ok + JC En10 + + L Dyn."Zeit_Ohne_B_Zähl" + + 1 // Zeit ohne Sensor +100ms + T Dyn."Zeit_Ohne_B_Zähl" + +// B-Raus lange genug frei?: + L 10 // Nach ca. 1s + >=I + AN Dyn.Status."Stau_an_Raus-Sensor" + JC RDel + + CAC + L 200 // Nach ca. 20s + >=I + JC RDel + + JU En10 + +RDel: SET + R Dyn.Status."Trolley an Raus-Sensor" + L 0 + T Dyn."Zeit_Ohne_B_Zähl" + T Dyn.Stau_Zeit_RausSensor + +// War Stau?: + A Dyn.Status."Stau_an_Raus-Sensor" + R Dyn.Status."Stau_an_Raus-Sensor" + JCN En10 + + L 0 // Bisher gefahrene Trolleys löschen + T Dyn.Raus_Trolleys + T Dyn."Zeit_Ohne_B_Zähl" + T Dyn.Stau_Zeit_RausSensor + + JU En10 + +B_Raus: L 0 + T Dyn."Zeit_Ohne_B_Zähl" + T Dyn."Zeit_Ausfahren_Ohne_B_Zähl" + +// Einmalig: + AN Dyn.Status."Trolley an Raus-Sensor" + S Dyn.Status."Trolley an Raus-Sensor" // Raus-Sensor ausgewertet + JCN Xn10 // Negierter Sprung + + L Dyn.Raus_Trolleys + + -1 // Ausgefahrene Trolleys -1 + T Dyn.Raus_Trolleys + + L 0 + >=I + JC Xn10 + + T Dyn.Raus_Trolleys // Minimum übergeben + +// Stau an B_Raus: +Xn10: AN "100ms-Impuls" + O Dyn.Status."Stau_an_Raus-Sensor" + JC En10 + + L Dyn.Stau_Zeit_RausSensor + + 1 // StauZeit +1 + T Dyn.Stau_Zeit_RausSensor + + L 90 // Nach ca. 9s + >=I + JCN En10 // Negierter Sprung + + L 0 // Zeit löschen + T Dyn.Stau_Zeit_RausSensor + + SET + S Dyn.Status."Stau_an_Raus-Sensor" + +En10: NOP 0 + + +--- NW 12: Plus: Trolley fährt nicht bis Zähl-Sensor --- + L Dyn.Raus_Trolleys + L 0 // Trolles unterwegs? + ==I // Nein! + O Trolley_draussen // Sensor wurde erreicht + O Dyn.Status.Reset_aktiv + JC RTTD + + AN Antrieb_plus_aktiv + A Bereich.Parameter_allg.Antrieb_Plus_vorhanden + ON "1s-Impuls" + O Dyn.Error.Err_Raus_Sensor // Trolley fährt nicht aus + JC En12 + + L Dyn."Zeit_Ausfahren_Ohne_B_Zähl" + + 1 + T Dyn."Zeit_Ausfahren_Ohne_B_Zähl" + +// Trolley fährt nicht bis Zähl-Sensor!: + L Bereich."Übzeit_aus_Bereich" + >=I + S Dyn.Error.Err_Raus_Sensor // Trolley fährt nicht aus + JCN En12 // Negierter Sprung! + + L Dyn.Raus_Trolleys + + -1 + T Dyn.Raus_Trolleys + + JU En12 + +RTTD: L 0 + T Dyn."Zeit_Ausfahren_Ohne_B_Zähl" + + SET + R Dyn.Error.Err_Raus_Sensor // Trolley fährt nicht aus + +En12: NOP 0 + + +--- NW 13: Laufzähler --- + AN Antrieb_Bereich_aktiv + ON "1s-Impuls" + JC X900 + + L Dyn."Laufzähler" + + +1 + T Dyn."Laufzähler" + +// Laufzähler rücksetzen?: + A Dyn.Status.Trolley_ist_im_Bereich + JC Warte + + L 1 // Rücksetzen + T Dyn."Laufzähler" + +Warte: L Dyn.Wartezeit + + -1 + T Dyn.Wartezeit + + L 0 // Minimum unterschritten? + >=I // Nein! + JC X900 + + T Dyn.Wartezeit // Minimum übergeben + +X900: NOP 0 + + +--- NW 14: Anfangs-Sensor auswerten --- + L Bereich.Bereich_Dyn_DB + T SSDB + + L Bereich.Bereich_Dyn_DW + L 110 + +I + T SSDW + + A B_BereichsAnfang + A Antrieb_Bereich_aktiv + AN Dyn.Status."Anfangs-Sensor_ausgewertet" + S Dyn.Status."Anfangs-Sensor_ausgewertet" + JCN ReinEn // Negierter Sprung + +// Abstand schon gespeichert?: + L Bereich.Fahrzeit + L 1 // Sinnvoller Wert? + <=I // Nein ! + L 999 // Bei Inilauf + T "MW220" + S Dyn.Status.Inilauf_aktiv + JC Save + + L Bereich.Fahrzeit + L Dyn."Laufzähler" + +I // Abstand dazu addieren + T "MW220" + +// Eintrag in Trolley-Bereichsliste +Save: CALL FC "DatenIn" (SSDB:=SSDB, SSDW:=SSDW, INDATEN:=P#M220.0, RE_VAL:="MB199") + +// Wartezeit (Einlagern blöckieren) speichern: + L 6 // 6s wegen nach 5s draussen + T Dyn.Wartezeit // Damit genügend Abstand zwischen 2 Trolleys + +ReinEn: NOP 0 + + +--- NW 15: Ende-Sensor auswerten --- + A ErrQuit // Überwachungszeit abgelaufen quittieren + A Dyn.Error.Err_Trolley_nicht_am_Ende // Trolley fährt nicht in Bereich + R Dyn.Error.Err_Trolley_nicht_am_Ende // Trolley fährt nicht in Bereich + S Antrieb_Bereich_start + JC Delete + + A B_BereichsEnde + A( + O Antrieb_Bereich_aktiv + O Dyn.Error.Err_Trolley_nicht_am_Ende + ) + AN Dyn.Status."Ende-Sensor_ausgewertet" + S Dyn.Status."Ende-Sensor_ausgewertet" + JCN EndeEn // Negierter Sprung + + A Dyn.Status.Inilauf_aktiv + R Dyn.Status.Inilauf_aktiv + JCN Delete // Negierter Sprung + + L Dyn."Laufzähler" + + -3 // damit mehr Sicherheit! + T Bereich.Fahrzeit // Abstand speichern + +// /Austrag aus Trolley-Bereichsliste +Delete: CALL FC "DatenOut" (SSDB:=SSDB, SSDW:=SSDW, PARA:=16#F100, SEARCHDATEN:="MW220", RE_VAL:="MB199", OUTDATEN:="MW220", Position:="MW196") // 1.Datensatz lesen + +CALL FC "DatenOut" (SSDB:=SSDB, SSDW:=SSDW, PARA:=16#E100, SEARCHDATEN:="MW220", RE_VAL:="MB199", OUTDATEN:="MW220", Position:="MW196") // Angegebenen Datensatz austragen + +EndeEn: NOP 0 + + +--- NW 16: Restzeit ermitteln --- +// Keine Daten gespeichert?: + AN Dyn.Status.Trolley_ist_im_Bereich + L 999 // Einfahren erlaubt + JU Rest // Aktuell ohne Berechnung + +// Auswertung des nächsten Trolleys: +CALL FC "DatenOut" (SSDB:=SSDB, SSDW:=SSDW, PARA:=16#F100, SEARCHDATEN:="MW220", RE_VAL:="MB199", OUTDATEN:="MW220", Position:="MW196") // 1.Datensatz lesen + + L "MW220" // Bei dieser Zeit wird Trolley am B_BereichsEnde erwartet + L Dyn."Laufzähler" + -I + T Restzeit_errechnet +Rest: T Dyn.Restzeit + +// Restzeit nullen?: +// Laufzähler-Überlauf oder sonst Einfahrt blockieren: + L Dyn."Laufzähler" + L 32000 // wird zu groß? + >I // Ja ! + O Dyn.Status.Inilauf_aktiv + O Dyn.Status.Reset_aktiv + O Dyn.Status.Error_aktiv + O Dyn.Status."Anfangs-Sensor_ausgewertet" + O( + L Dyn.Sk.Akt_Schritt + L 0 // Warten auf Trolley? + <>I // //Nein, also am Ende, fährt aus,...! + ) + O( + L Dyn.Wartezeit // Damit genügend Abstand zwischen 2 Trolleys + L 0 // Einfahren noch blockieren ? + >I // Ja! + ) + JC KeinEinfahren // Einfahren nicht erlaubt + + L Dyn.Restzeit + L 0 // sinnvoller Wert? + >=I // Ja! + A( + L Dyn.Trolley_DL.Datenlistenkopf.AnzahlEintraege + L Dyn.Trolley_DL.Datenlistenkopf.LAENGE + I // Ja! + = ZielFC_vorhanden + + L Bereich.Draussen_FC + T DraussenFC + L 0 // Parameter vorhanden ? + >I // Ja! + = DraussenFC_vorhanden + + +--- NW 18: Error: Stau Bereich-Eingang --- +// Sensor bei Bereichs-Einfahrt bleibt belegt?: + AN B_BereichsAnfang // Sensor Trolley fährt in Bereich (kein Stau !) + O ErrQuit + R Dyn.Error.Err_Stau_Eingang // Stau bei Einfahrt + JC X090 // StauZeit neu aufziehen + + AN "1s-Impuls" + ON Antrieb_Bereich_aktiv + O Dyn.Error.Err_Stau_Eingang // Zeit bereits abgelaufen + JC Xn09 + + L Dyn.Stau_Zeit // Sensor B_VorSep ist belegt [1s] + + +1 + T Dyn.Stau_Zeit // Sensor B_VorSep ist belegt [1s] + + L 10 // Stau-Zeit erreicht ? + >=I // Ja ! + S Dyn.Error.Err_Stau_Eingang // Stau bei Einfahrt (Quittierung oder Sensor=0, wegen Bürstenantrieb + JCN Xn09 + +X090: L 0 // Zeiten löschen + T Dyn.Stau_Zeit // Sensor B_VorSep ist belegt [1s] + +Xn09: NOP 0 + + +--- NW 19: Schrittkette anhalten --- + A Dyn.Sk.Auto_akt // Automatik ist aktiv + A Dyn.Sk.Bereich_ok + CLR + + JU en08_Mig // Schrittkette nicht anhalten ! + + SET + R Dyn.Sk.Err_Uebzeit // Störungen löschen + R Dyn.Sk.Err_Schritt + + L 0 // Zeitwerte löschen + T Dyn.Sk.Terr_Zelle + T Dyn.Sk.Tok_Zelle + + JU RET + +en08_Mig: NOP 0 + + +--- NW 20: Sprungverteiler --- + L Dyn.Sk.Neu_Schritt // Schritt, der im nächsten Zyklus aktiv werden soll + L -1 // angegeben ? + ==I // Nein ! + JC NEU + + CAC // Neuen Schritt übergeben + T Dyn.Sk.Akt_Schritt + + L -1 // Urzustand + T Dyn.Sk.Neu_Schritt // Schritt, der im nächsten Zyklus aktiv werden soll + +NEU: SET + R Warte_neu // Wartezeit neutriggern + R Warte_stop // Wartezeit stoppen + + L Dyn.Sk.Akt_Schritt + JL Ende + JU s000 // Schritt 0 + JU s001 // Schritt 1 + JU s002 // Schritt 2 + JU s003 // Schritt 3 + JU s004 // Schritt 4 + JU s005 // Schritt 5 + JU s006 // Schritt 6 + JU s007 // Schritt 7 + JU s008 // Schritt 8 + JU s009 // Schritt 9 + JU s010 // Schritt 10 + JU s011 // Schritt 11 + JU s012 // Schritt 12 + JU s013 // Schritt 13 + JU s014 // Schritt 14 + JU s015 // Schritt 15 + JU s016 // Schritt 16 + JU s017 // Schritt 17 + JU s018 // Schritt 18 + JU s019 // Schritt 19 + JU s020 // Schritt 20 + JU s021 // Schritt 21 + JU s022 // Schritt 22 + JU s023 // Schritt 23 + JU s024 // Schritt 24 + JU s025 // Schritt 25 + JU s026 // Schritt 26 + JU s027 // Schritt 27 + JU s028 // Schritt 28 + JU s029 // Schritt 29 + JU s030 // Schritt 30 +Ende: S Dyn.Sk.Err_Schritt // Undefinierter Schritt + + L 16#A131 + T Dyn.Stop_Ursache + + JU RET + +Neu_Mig: A Dyn.Sk.Err_Uebzeit + JCN Sk + + L 16#A132 + T Dyn.Stop_Ursache + + JU RET + +Sk: T Dyn.Sk.Akt_Schritt + + L 0 // Zeitwerte löschen + T Dyn.Sk.Terr_Zelle + T Dyn.Sk.Tok_Zelle + + JU NEU + +// Nicht programmierte Schritte: +// s000: SPA Ende +// s001: SPA Ende +// s002: SPA Ende +// s003: SPA Ende +// s004: SPA Ende +// s005: SPA Ende +s006: JU Ende +s007: JU Ende +s008: JU Ende +s009: JU Ende +s010: JU Ende +s011: JU Ende +s012: JU Ende +s013: JU Ende +s014: JU Ende +s015: JU Ende +s016: JU Ende +s017: JU Ende +s018: JU Ende +s019: JU Ende +s020: JU Ende +s021: JU Ende +s022: JU Ende +s023: JU Ende +s024: JU Ende +s025: JU Ende +s026: JU Ende +s027: JU Ende +s028: JU Ende +s029: JU Ende +s030: JU Ende + + +--- NW 21: Schritt X: Reserve --- + SET // Weiterschaltbedingung + = Weiter + +// Schrittaktionen: + SET + + L 16#B001 + T Dyn.Stop_Ursache + + A Weiter // Weiterschaltbedingung ist erfüllt + R Dyn.Sk.Err_Uebzeit // Sofort weiter ! + L 0 // Angabe der Wartezeit (*10ms) + JC Plus // Nächsten Schritt starten + + L 1 // Weiter mit Schritt 1 + JC Neu_Mig // Bei diesem Schritt weiter + + SET + A Dyn.Sk.Auto_akt // Automatik ist aktiv + A Dyn.Sk.Bereich_ok + = Ueb_akt // Überwachungszeit aktivieren + L 50 // Angabe der Überwachungszeit (*1s) + JU tueb // Überwachungszeit + + JU RET + + +--- NW 22: Schritt 0: Warten auf Trolley am Bereichs-Ende --- +s000: SET // Weiterschaltbedingung + A B_BereichsEnde // Trolley im Bereich erkannt + A( + O Antrieb_Bereich_aktiv + O Dyn.Error.Err_Trolley_nicht_am_Ende + ) + = Weiter + +// Schrittaktionen: + SET + R Dyn.Error.Err_Trolley_raus + +// Antriebe: +// siehe Nw10 + + A Weiter // Weiterschaltbedingung ist erfüllt + R Dyn.Sk.Err_Uebzeit // Sofort weiter ! + L 0 // Angabe der Wartezeit (*10ms) + JC Plus // Nächsten Schritt starten + + L 16#B001 + T Dyn.Stop_Ursache + +// Überwachungszeit starten: + A Dyn.Status.Trolley_ist_im_Bereich + A Antrieb_Bereich_aktiv + = Ueb_akt // Überwachungszeit aktivieren + +// Reset aktiv? + A Dyn.Status.Reset_aktiv + A Dyn.Sk.Err_Uebzeit + R Dyn.Sk.Err_Uebzeit + JC Reset_fertig + + L Restzeit_errechnet + L -20 // Trolley schon 20s überfällig + Kein Trolley drin! + A Dyn.Sk.Err_Uebzeit + JCN X000 // Negierter Sprung + + SET + R Dyn.Sk.Err_Uebzeit + R Dyn.Error.Err_Trolley_nicht_am_Ende + + JU Delete // Trolley aus Liste löschen + +X000: L Bereich."Übzeit_in_Bereich" + JU tueb // Überwachungszeit + +Reset_fertig: SET + R Dyn.Status.Reset_aktiv + R Dyn.Status.Inilauf_aktiv + + L 0 + T Dyn.Raus_Trolleys + +// Trolleydaen löschen: +CALL FC "DatenReset" (SSDB:=SSDB, SSDW:=SSDW, RE_VAL:="MB199") + + JU ENDE_Mig + + +--- NW 23: Schritt 1: Trolley ist am Bereichsende --- +s001: NOP 0 +// Schrittaktionen: + SET + = Weiter + R Dyn.Error.Err_Trolley_nicht_am_Ende + + AN Weiter + JC RET + + L 2 // Weiter mit Schritt 2 (Ziel-FC?) + JU Neu_Mig // Bei diesem Schritt weiter + + +--- NW 24: Schritt 2: Ziel-FC --- +s002: NOP 0 + +// Schrittaktionen: + SET + S Dyn.Status.Trolley_am_BereichsEnde + S Dyn.Status."Trolley_wartet_auf_Ziel-FC" + + AN ZielFC_vorhanden + R Dyn.Status."Trolley_wartet_auf_Ziel-FC" + L 3 // Weiter mit Schritt 3 (Ausfahren ok?) + JC Neu_Mig // Bei diesem Schritt weiter + + SET // Rückmeldungen erst mal resetten + R "M180.6" // Weiterfahrt von Ziel-FC erlaubt + L Bereichs_Nr // Bereich-Nr. + T "MW190" // übergeben + L 0 // Erst mal nullen + T "MW194" // übergeben + T "MW196" // übergeben + T "MW198" // Weichenziel + + UC DB[ZielFC] // Beeinflussung der Weiterfahrt + + L 16#B102 + T Dyn.Stop_Ursache + + AN "M180.6" // Weiterfahrt von Ziel-FC erlaubt + JC RET + + L 3 // Weiter mit Schritt 3 (Ausfahren ok?) + JU Neu_Mig // Bei diesem Schritt weiter + + +--- NW 25: Schritt 3: Start ok ? --- +s003: NOP 0 + +// Schrittaktionen: + +// Anlage aus oder Störung: + L 16#B031 + T Dyn.Stop_Ursache + + AN Dyn.Sk.Auto_akt // Automatik ist aktiv + ON Dyn.Sk.Bereich_ok // Bereich ist gestört + JC X003 + +// Starten erlaut Trolley ?: + L 16#B032 + T Dyn.Stop_Ursache + + AN Start_Ok // Starten ist erlaubt + JC X003 + +// Stau im Bereich +1: + L 16#B033 + T Dyn.Stop_Ursache + + SET + S Dyn.Status."Trolley_wartet_Bereich+1" + + A B_Stau_raus // Sensor Stau im Bereich rausfahren + JC X003 + +// B_Aus_Bereich aktiv: + L 16#B034 + T Dyn.Stop_Ursache + + L Dyn.Raus_Trolleys + L 0 // Trolleys schon unterwegs? + <>I // Ja! + A Dyn.Status."Trolley an Raus-Sensor" + O Dyn.Status."Stau_an_Raus-Sensor" + = Dyn.Error.Err_Raus_Sensor // Raus-Sensor wird nicht erreicht (oder dauernd aktiv)! + JC X003 + +// Zu viele Raus-Trolleys unterwegs: + L 16#B027 + T Dyn.Stop_Ursache + + L Dyn.Raus_Trolleys // Gestartete Trolleys + L Bereich.MaxRausTrolleys // Erlaubte Anzahl gestarteter Trolleys + >=I + JC X003 + +// Antriebe aktivieren / aktiv ?: + A Bereich.Parameter_allg.Antrieb_Plus_vorhanden // Bereich an weiterem Antrieb (Weiche) + S Antrieb_plus_vor // Antrieb plus einschalten + + A( + O Antrieb_plus_aktiv // Antrieb plus aktiv + ON Bereich.Parameter_allg.Antrieb_Plus_vorhanden // Bereich an weiterem Antrieb (Weiche) + ) + S Antrieb_Bereich_vor // Antrieb einschalten + + L 16#B036 + T Dyn.Stop_Ursache + + AN Antrieb_plus_aktiv // Antrieb plus aktiv + A Bereich.Parameter_allg.Antrieb_Plus_vorhanden // Bereich an weiterem Antrieb (Weiche) + JC X003 + + SET + R Dyn.Error.Err_Trolley_raus // Trolley fährt nicht aus + + L Dyn.Raus_Trolleys + + 1 // Gestartete Trolleys + 1 + T Dyn.Raus_Trolleys + + L 4 // Weiter mit Schritt 4 (Trolley fährt aus) + JU Neu_Mig // Bei diesem Schritt weiter + +X003: L 2 // Beginn mit Schritt 2 (Ziel-FC?) + T Dyn.Sk.Neu_Schritt + JU RET + + +--- NW 26: Schritt 4: Trolley fährt aus ? --- +s004: SET // Weiterschaltbedingung + AN B_BereichsEnde // Sensor Trolley ist in Bereich + A Antrieb_Bereich_aktiv + A( + O Antrieb_plus_aktiv // Antrieb plus aktiv + ON Bereich.Parameter_allg.Antrieb_Plus_vorhanden // Bereich an weiterem Antrieb (Weiche) + ) + = Weiter + +// Schrittaktionen: + SET + S Dyn.Status."Trolley_fährt_aus" + +// Antriebe: +// siehe Nw10 + +// 5 s ohne Trolley-Signal: + A Weiter // Weiterschaltbedingung ist erfüllt + R Dyn.Sk.Err_Uebzeit // Sofort weiter ! + R Dyn.Error.Err_Trolley_raus // Trolley fährt nicht aus + L 500 // Angabe der Wartezeit (*10ms) + JC Plus // Nächsten Schritt starten + +// Trolley fährt nicht aus: + A Dyn.Sk.Err_Uebzeit + S Dyn.Error.Err_Trolley_raus // Trolley fährt nicht aus + +// Automatisches löschen, falls Sensor spinnt: + AN B_BereichsEnde // Sensor Trolley ist in Bereich + A Dyn.Error.Err_Trolley_raus // Trolley fährt nicht aus + A Dyn.Sk.Err_Uebzeit + R Dyn.Sk.Err_Uebzeit + R Dyn.Error.Err_Trolley_raus // Trolley fährt nicht aus + + L 16#B041 + T Dyn.Stop_Ursache + + A Antrieb_plus_aktiv + = Ueb_akt // Überwachungszeit aktivieren + L 20 // Angabe der Überwachungszeit (*1s) + JU tueb // Überwachungszeit + + +--- NW 27: Schritt 5: Trolley ist draussen --- +s005: NOP 0 + +// Trolley hat Bereich verlassen: + SET + S Dyn.Status.Trolley_draussen // 1 Zyklus + R Dyn.Status.Trolley_am_BereichsEnde + R Dyn.Status."Trolley_fährt_aus" + + L Dyn.Gefahrene_Trolleys + + DINT#1 // Gefahrene Trolleys +1 + T Dyn.Gefahrene_Trolleys + +// Draussen-FC ?: + AN DraussenFC_vorhanden + JC NoFC // Bei diesem Schritt weiter + + L Bereichs_Nr // Bereich-Nr. + T "MW190" + + L 0 + T "MW198" + + UC DB[DraussenFC] // z.Bsp. Daten anpassen + +NoFC: JU ENDE_Mig + + +--- NW 28: Schrittkette beenden --- +ENDE_Mig: L 0 // Schritt 0: Warten + T Dyn.Sk.Akt_Schritt + + L 0 // Zeitwert löschen + T Dyn.Sk.Terr_Zelle + T Dyn.Sk.Tok_Zelle + + SET + R Dyn.Sk.Err_Uebzeit + + JU RET + + +--- NW 29: Nächsten Schritt aktivieren --- +Plus: T Dyn.Sk.T_ok // Wartezeit übergeben + + A Dyn.Sk.Err_Uebzeit // Störung noch nicht quittiert + JC RET + + L 0 // keine Wartezeit ? + ==I // Ja ! -> sofort weiter + JC w220 + + AN Warte_neu // Wartezeit neutriggern + JC W220_Mig + + L 0 + T Dyn.Sk.Tok_Zelle // Wartezeit + +W220_Mig: A Warte_stop // Wartezeit stoppen + JC RET + + L Dyn.Sk.Tok_Zelle + L "MW4" // Wartezeit +10ms + +I + T Dyn.Sk.Tok_Zelle // Wartezeit + L Dyn.Sk.T_ok // abgelaufen ? + I // abgelaufen ? + AN Dyn.Sk.Err_Uebzeit + JC en24 // Nein ! + + A Ueb_akt // Überwachungszeit aktivieren + S Dyn.Sk.Err_Uebzeit + + L 0 // Zeitwert löschen + T Dyn.Sk.Terr_Zelle + + JU RET + +en24: NOP 0 + +--- NW 31: Überwachungszeit +1 --- + AN Dyn.Sk.Ueb_akt // Schrittaktion ist aktiv + ON "1s-Impuls" + JC RET + + L Dyn.Sk.Terr_Zelle + + 1 // Üb.zeit +1s + T Dyn.Sk.Terr_Zelle + + JU RET + + +--- NW 32: Return --- +RET: NOP 0 + + +--- NW 33: Ende --- + BE + diff --git a/=A01+UH07-KF00/Programmbausteine/Module/MHMOmniSchleuse.awl b/=A01+UH07-KF00/Programmbausteine/Module/MHMOmniSchleuse.awl new file mode 100644 index 0000000..a52514a --- /dev/null +++ b/=A01+UH07-KF00/Programmbausteine/Module/MHMOmniSchleuse.awl @@ -0,0 +1,2402 @@ +=== FB 1274: MHMOmniSchleuse [STL] === +INTERFACE: + Input: + Schleusen_Nr : Int // Aufruf für Schleuse + ErrQuit : Bool // Ablaufstörung quittieren + B_VorSchleuse : Bool // Sensor Trolley fährt in Bereich + B_InSchleuse : Bool // Sensor Trolley ist in Schleuse + B_AusSchleuse : Bool // Sensor Trolley hat Schleuse verlassen + B_Stau_raus : Bool // Sensor Stau im Bereich rausfahren + Start_Ok : Bool // Starten ist erlauTrolley + Antrieb_Schleuse_aktiv : Bool // Kreisel-Antrieb aktiv + Antrieb_plus_aktiv : Bool // Kreisel-Antrieb plus aktiv + Schleuse_geöffnet : Bool // Schleuse hat geöffnet + RestZeit_Bereich_plus : Int := 999 // Bereich +1: Restzeit bis AFS stoppt (s) + Output: + Y_Schleuse_Auf : Bool // Schleuse öffnen + Error : Word // Störungen übergeben + InOut: + Antrieb_Schleuse_vor : Bool // Schleusen-Antrieb einschalten + Antrieb_Schleuse_start : Bool // Schleusen-Antrieb mit Zeit starten + Antrieb_Schleuse_stop : Bool // Schleusen-Antrieb stoppen + Antrieb_Schleuse_PS : Bool // Schleusen-Antrieb Energie sparen + Antrieb_plus_vor : Bool // Antrieb plus einschalten + Antrieb_plus_start : Bool // Antrieb plus mit Zeit starten + hStOk : Bool // Anzeige Start n. Störung aktivieren + Static: + SAVE : Struct + Weichen_DB : Int // Weichen-FIFO-DB + Weichen_DW : Int // Weichen-FIFO-DW + Weiche+1 : Int // Weiche +1, wo reserviert wurde + Frei18 : Int + Frei20 : Int + Para : Struct // Parameter + Schleusen_DL_DB : Int // Einsprung Schleuse-Datenliste-DB + Weichen_DL_DB : Int // Einsprung Weichen-Datenliste-DB + Leser_DL_DB : Int // Einsprung Weichen-Datenliste-DB + Status2 : Struct + Trolley_an_Schleuse : Bool // Trolley ist an Schleuse + Warten_3.V : Bool // Warten auf 3.V + 2.Lesung_aktiv : Bool // 2.Lesung erfolgt + 3.Lesung_aktiv : Bool // 3.Lesung erfolgt + TrolleyPos_übergeben : Bool // Trolley-Pos. übergeben + Warten_4.V : Bool // Warten auf 4.V + Ausfahrzeit_lernen : Bool // Ausfahrzeit lernen + Weichen-Schritt : Bool // Schritt 13-17 aktiv (Weiche evtl. belegen) + Trolley_ist_draussen : Bool // Rückmeldung von Sensor / Weiche + Einfahrzeit_lernen : Bool // Ausfahrzeit lernen + Telegramm_gesendet : Bool // Telegramm wurde in Send-FIFO eingetragen + Schleuse : "UDLHMOmniSchleuse" // Statische Schleusendaten (aus DL) + Dyn : Struct // Dynamische Daten + Status : Struct + Trolley_fährt_in_Schleuse : Bool // Trolley fährt in Schleuse + Trolley_wartet_Lesung : Bool // Trolley wartet auf Auftrag + Trolley_wartet_auf_Ziel-FC : Bool + Trolley_wartet_auf_Weiche+1 : Bool + Trolley_wartet_Bereich+1 : Bool // Trolley wartet auf Bereich +1 + Trolley_fährt_aus : Bool // Trolley fährt aus + MindestZeit_ok : Bool // Schleuse ist MindestZeit geöffnet + Trolley_draussen : Bool // Trolley ist ausgefahren + Leser_triggern : Bool + SF_angefordert : Bool + Kein_Stop_mehr : Bool // Kein Stop mehr, Antrieb soll starten + Trolley_fährt_rückwärts : Bool // Trolley in Schleuse rückwärts erkannt + Weiche_geschaltet : Bool + Trolley ausserhalb Weiche : Bool // Trolley hat Weiche verlassen (von Weiche) + Error_aktiv : Bool // Störung vorhanden + Reset_aktiv : Bool := TRUE // Reset aktiv + TrolleyID_Schleuse : DInt // Trolley-Nr in der Schleuse + Trolley_EndZiel : Word // Trolley-EndZiel + Trolley_ZwischenZiel : Word // Trolley-ZwischenZiel + Trolley_ShopGroup : DInt // Trolley-ShopGroup + Weichen_Ziel : Word // Weichen-Ziel (Für WeichenModul von Ziel-FC) + TrolleyID_Eingefahren : DInt // Trolley-Nr von Bereich -1 gemeldet + TrolleyID_ausgefahren : DInt // TrolleyID des ausgefahrenen Trolleys + HMI : Struct + TrolleyID_in_Schleuse : DInt // Trolley-Nr in Schleuse (IN:PLC, OUT:PLC) + TrolleyID_Input : DInt // Trolley-Nr Input (IN:HMI, OUT:PLC) + Schleuse_resetten : Bool // Schleuse resetten (IN:HMI, Out:PLC) + Sk : "USk_ILS" // Status der Schrittkette + Leser : Struct + IN : Struct + xOutReadyForNewScan : Bool // DBX10.1: Reader ist bereit für Leseanforderung + xOutReadingDone : Bool // DBX10.0: Lesevorgang abgeschlossen / Handshake raus + xOutCodeGood : Bool // DBX278.0: Gute Lesung + xOutCodeBad : Bool // DBX278.1: Schlechte Lesung + nOutBarcode : DInt // DBD12: Trolley ID + OUT : Struct + xInStartReading : Bool // DBX4.1: Starte Lesevorgang + xInHandshakeDone : Bool // DBX4.2: Handshake Daten abgeholt + xInErrQuit : Bool // DBX4.4: Fehler rücksetzen + xInReset : Bool // DBX4.5: Allgemeines Rücksetzen des Bausteins + TrolleyID_unbekannt_Schleuse : DInt // TrolleyID unbekannt (Trolley in Schleuse) + Rueckmld : Struct + RET_VAL_BLKMOV_Schleuse : Int // Rückmeldung nach BLKMOV-Aufruf + RET_VAL_DL_Schleuse : Byte + RET_VAL_DL_Weiche : Byte // Rückmeldung nach DatenOut-Aufruf + RET_VAL_DL_Leser : Byte // Rückmeldung nach DatenOut-Aufruf + Error : "UErrHMOmniSchleuse" + Stau_Zeit : Int // Sensor B_VorSep ist belegt [100ms] + Mindest_Zeit : Int // Sensor B_VorSep ist frei [100ms] + Leer_Zeit : Int + Stop_Ursache : Word // Stop-Stelle: Nw + Position + Vereinzelungstakte : DInt // Anzahl der getätigten Vereinzelungstakte + ZwischenZiel_eingefahren : Word // Trolley-ZwischenZiel von Bereich -1 + Ohne_B : Int + SAVE2 : Struct + Leser_DB : Int // Weichen-FIFO-DB + Leser_DD : DInt // Weichen-FIFO-DD + WarteZeit_PS : Int + Restzeit_bis_Schleuse : Int + Res200 : Array[1..16] of Int // Reserve + Temp: + Quelle : Any // Zeiger, wo Rein-Daten sind + Ueb_akt : Bool // Überwachungszeit aktivieren + Weiter : Bool // Weiterschaltbedingung ist erfüllt + Warte_neu : Bool // Wartezeit neu triggern + Warte_stop : Bool // Wartezeit stoppen + Kein_Weichenbereich +1 : Bool + Reservierung_Weiche+1_aktiv : Bool + Leser_Zugriff : Bool // Leser-Zugriff vorhanden + LeserFC_vorhanden : Bool + ZielFC_vorhanden : Bool + DraussenFC_vorhanden : Bool + TrolleyID_Bereich-1 : Bool // Trolley--ID von Bereich -1 gemeldet + Einfahrzeit_nicht_bekannt : Bool + LeserFC : Word // Ziel-FC + ZielFC : Word // Ziel-FC + DraussenFC : Word // Draussen-FC + AR1Start : DInt // Startwert mit Offset 0 + AR1Zeiger : DWord // Statt AR1 (ging nur bis DB-Länge <= 8191 Bytes) + Constant: + +--- NW 1: Parameter-Übergabe --- + L Schleusen_Nr + + L 274 // Einsprung Schleuse-DL + T Para.Schleusen_DL_DB // vor Aufruf übergeben! + + L 279 // Einsprung Weichen-DL + T Para.Weichen_DL_DB // vor Aufruf übergeben! + + L 273 + T Para.Leser_DL_DB + + +--- NW 2: Anzeige OP --- + A ErrQuit // Überwachungszeit abgelaufen quittieren + R Dyn.Sk.Err_Uebzeit + + L 252 // Bereichsstop aktiv + AN Dyn.Sk.Bereich_ok // Also: Bereichsstop / Not-Aus + JC w010 + + L 253 + AN Dyn.Sk.Auto_akt // Keine Betriebsart + AN Dyn.Sk.Hand_akt + JC w010 + + L 255 // Handbetrieb aktiv + A Dyn.Sk.Hand_akt + JC w010 + + L Dyn.Sk.Akt_Schritt // Aktiver Schritt +w010: T Dyn.Sk.OP_Schritt + + +--- NW 3: Out-Bits zum Zurücksetzen --- + SET + R Y_Schleuse_Auf + + SET // Jeden Zyklus neu + R Dyn.Status.Trolley_wartet_Lesung + R Dyn.Status."Trolley_wartet_auf_Ziel-FC" + R Dyn.Status."Trolley_wartet_auf_Weiche+1" + R Dyn.Status."Trolley_wartet_Bereich+1" + R Dyn.Status."Trolley_fährt_aus" + R Dyn.Status.Trolley_draussen + R Leser_Zugriff + R Status2."Weichen-Schritt" + + A Dyn.Sk.Reset_Akt + = Dyn.Status.Reset_aktiv + + +--- NW 4: HMI-Zeug --- +// Von HMI: + A Dyn.HMI.Schleuse_resetten + R Dyn.HMI.Schleuse_resetten // von HMI + S Dyn.Sk.Reset // SK zurücksetzen + + L Dyn.HMI.TrolleyID_Input // Wird direkt im Programm verwertet (s.u.) + +// An HMI: +ToHMI: L Dyn.TrolleyID_Schleuse + T Dyn.HMI.TrolleyID_in_Schleuse + + +--- NW 5: Schrittkette zurücksetzen --- + A ErrQuit // Überwachungszeit abgelaufen quittieren + R Dyn.Sk.Err_Uebzeit + + AN Dyn.Sk.Reset // SK zurücksetzen + JC en04 + +// Schrittkette zurücksetzen: + L 0 // Schritt 0: Warten + T Dyn.Sk.Akt_Schritt + + L 0 // Zeitwert löschen + T Dyn.Sk.Terr_Zelle + T Dyn.Sk.Tok_Zelle + + SET + R Dyn.Error.Err_BLKMov // Error bei Block kopieren + R Dyn.Sk.Reset // SK zurücksetzen + R Dyn.Sk.Err_Schritt // Undefinierter Schritt + R Dyn.Sk.Err_Uebzeit // Sofort weiter ! + R Status2.Telegramm_gesendet + S Dyn.Sk.Reset_Akt // Reset ist aktiv + + SET + R Dyn.Error.Schleuse_DL // Schleuse-Datenliste fehlerhaft + R Dyn.Error.Undef_Schleuse // undefinierter Schleuse + R Dyn.Error.Err_Trolley_nicht_in_Schleuse // Trolley fährt nicht in Schleuse + R Dyn.Error.Err_Uebzeit // Überwachungzeit ist abgelaufen + R Dyn.Error.Err_Schritt // Schritt-Nummer ist nicht definiert + R Dyn.Error.Err_Stau_Einfahrt + R Dyn.Error.Err_BLKMov + R Dyn.Error.Err_Trolley_raus // Trolley fährt nicht aus + R Dyn.Error.Err_Raus_Sensor // Raus-/Belade-Sensor wird nicht erreicht (oder dauernd aktiv)! + R Dyn.Error.Err_Ziel // kein Ziel angegeben + R Dyn.Error.Err_Weichen_DL // Weichen-Datenliste fehlerhaft + R Dyn.Error.Err_Undef_Weiche // undefinierte Weiche + R Dyn.Error.Err_Weiche_belegt // Weiche bleibt belegt + R Dyn.Error.Err_Kein_LeseErgebnis + R Dyn.Error.Err_Leser_nicht_bereit + + L DINT#0 + T Dyn.Leser.IN.nOutBarcode + + L 0 + T Dyn.Stau_Zeit // Sensor B_VorSep ist belegt [10ms] + T Dyn.Mindest_Zeit // Sensor B_VorSep ist frei [10ms] + T SAVE."Weiche+1" + T SAVE.Weichen_DB + T SAVE.Weichen_DW + T Dyn.SAVE2.Leser_DB + L DINT#0 + T Dyn.SAVE2.Leser_DD + +// Defaultwerte übergeben: + L 0 // Damit statische Werte neu aus Datenbank geholt werden ! + T Schleuse.Schleusen_Nr // Nummer des Schleuses + + JU RET + +en04: NOP 0 + + +--- NW 6: Störungen nach Außen übergeben --- + L 0 + T "MW200" + + A Dyn.Error.Schleuse_DL // Schleuse-Datenliste fehlerhaft + = "M200.0" + A Dyn.Error.Undef_Schleuse // undefinierter Schleuse + = "M200.1" + A Dyn.Error.Err_Trolley_nicht_in_Schleuse // Trolley fährt nicht in Schleuse + = "M200.2" + A Dyn.Sk.Err_Uebzeit + = Dyn.Error.Err_Uebzeit // Überwachungzeit ist abgelaufen + = "M200.3" + NEG + R Dyn.Sk.Err_Uebzeit_AnzOk + A Dyn.Sk.Err_Schritt + = Dyn.Error.Err_Schritt // Schritt-Nummer ist nicht definiert + = "M200.4" + A Dyn.Error.Err_Stau_Einfahrt + AN B_InSchleuse + AN Y_Schleuse_Auf + = "M200.5" + A Dyn.Error.Err_BLKMov // Error bei Block kopieren + = "M200.6" + A Dyn.Error.Err_Trolley_raus // Trolley fährt nicht aus + = "M200.7" + A Dyn.Error.Err_Raus_Sensor // Raus-/Belade-Sensor wird nicht erreicht (oder dauernd aktiv)! + = "M201.0" + A Dyn.Error.Err_Ziel // Trolley-Ziel nicht bekannt + = "M201.1" + A Dyn.Error.Err_Weichen_DL // Weichen-Datenliste fehlerhaft + = "M201.2" + A Dyn.Error.Err_Undef_Weiche // undefinierte Weiche + = "M201.3" + A Dyn.Error.Err_Weiche_belegt // Weiche bleibt belegt + = "M201.4" + A Dyn.Error.Err_Kein_LeseErgebnis + = "M201.5" + A Dyn.Error.Err_Leser_nicht_bereit + = "M201.6" + A Dyn.Error.Barcode_nicht_bekannt + = "M201.7" + +// Andere Meldung als Überwachungszeit aktiv ?: + L "MW200" + L 2#1111_0111_1111_1111 + AW + L 2#0000_0000_0000_0000 // Andere Meldung als Üb.zeit aktiv ? + <>I // Ja ! + ON Dyn.Sk.Err_Uebzeit_AnzOk // Störung anzeigen ok, da 2.Zyklus aktiv ! + R "M200.3" // Üb.Zeit-Meldung nicht an PC senden + + A Dyn.Sk.Err_Uebzeit + S Dyn.Sk.Err_Uebzeit_AnzOk // Störung anzeigen ok, da 2.Zyklus aktiv ! + + L "MW200" + T Error // Schnittstelle nach Außen + +// Störung vorhanden: + L 0 + <>I // Ja ! + = Dyn.Status.Error_aktiv + S hStOk + +// Antrieb stoppen: + A( + ON Dyn.Sk.Auto_akt // SystemVoraussetzungen fehlen + O Dyn.Sk.Hand_akt + ON Dyn.Sk.Bereich_ok + ) + S Antrieb_Schleuse_stop // Antrieb stoppen + +// Störungen pro Zyklus neu erzeugen: + SET + R Dyn.Error.Schleuse_DL // Schleuse-Datenliste fehlerhaft + R Dyn.Error.Undef_Schleuse // undefinierter Schleuse +// / R #Dyn.Error.Err_Trolley_nicht_in_Schleuse//Trolley fährt nicht in Schleuse +// / R #Dyn.Error.Err_Uebzeit //Überwachungzeit ist abgelaufen + R Dyn.Error.Err_Schritt // Schritt-Nummer ist nicht definiert +// / R #Dyn.Error.Err_Stau_Einfahrt//Betriebsart ist nicht möglich + R Dyn.Error.Err_BLKMov +// / R #Dyn.Error.Err_Trolley_raus//Trolley fährt nicht aus + R Dyn.Error.Err_Raus_Sensor // Raus-/Belade-Sensor wird nicht erreicht (oder dauernd aktiv)! + R Dyn.Error.Err_Ziel // Trolley-Ziel nicht bekannt + R Dyn.Error.Err_Weichen_DL // Weichen-Datenliste fehlerhaft + R Dyn.Error.Err_Undef_Weiche // undefinierte Weiche + R Dyn.Error.Err_Weiche_belegt // Weiche bleibt belegt +// / R #Dyn.Error.Err_Kein_LeseErgebnis +// / R #Dyn.Error.Err_Leser_nicht_bereit + R Dyn.Error.Barcode_nicht_bekannt + + AN Dyn.Sk.Err_Uebzeit + R Dyn.Error.Err_Trolley_nicht_in_Schleuse // Trolley fährt nicht in Schleuse + R Dyn.Error.Err_Trolley_raus // Trolley fährt nicht aus + R Dyn.Error.Err_Raus_Sensor // Raus-Sensor wird nicht erreicht (oder dauernd aktiv)! + + +--- NW 7: Statische Schleuse-Parameter holen --- + L Schleuse.Schleusen_Nr // Nummer des Schleuses + L Schleusen_Nr // Aufruf-Parameter + ==I // Identisch ? + R Dyn.Error.Schleuse_DL // Schleusedatenbank fehlerhaft + R Dyn.Error.Undef_Schleuse // undefinierter Schleuse + JC en06 // Ja ! + + T "MW200" // Search-Daten + +CALL FC "DatenOut" (SSDB:=Para.Schleusen_DL_DB, SSDW:=0, PARA:=WORD#16#0000, SEARCHDATEN:=P#M200.0, RE_VAL:="MB199", OUTDATEN:=P#M220.0, Position:="MW196") + + L "MB199" + T Dyn.Rueckmld.RET_VAL_DL_Schleuse // Rückmeldung bei Datenbank-Zugriff (Gefälle-DL) + + JBI G_Ok + + A "M199.0" + JCN w060 + + SET + = Dyn.Error.Schleuse_DL // Schleusedatenbank fehlerhaft + + L 16#A061 + T Dyn.Stop_Ursache + + JU RET + +w060: SET + S Dyn.Error.Undef_Schleuse // undefinierter Schleuse + + L 16#A062 + T Dyn.Stop_Ursache + + JU RET + +// Kennung + Datenbytes +G_Ok: SET + R Dyn.Error.Schleuse_DL // Gefälledatenbank fehlerhaft + R Dyn.Error.Undef_Schleuse // undefinierte Gefällestrecke + + L 16#1004 // Kennung 10 + Word=04 + T LW0 // Any-Kennung, Datentyp + L 20 // Datenwords speichern + T LW2 // Wiederholungen + +// Quelle-Pointer erzeugen: + L 0 // Bei Merker = 0 ! + T LW4 // DB_Nummer + L 220 // Adresse + SLD 3 + L 16#8300_0000 // Kennung: Merker + OD + T LD6 // Kennung, Adresse + +CALL SYS "BLKMOV" (SRCBLK:=Quelle, RET_VAL:=Dyn.Rueckmld.RET_VAL_BLKMOV_Schleuse, DSTBLK:=Schleuse) // Datenliste-Daten speichern | #Ziel + + L 16#A063 + T Dyn.Stop_Ursache + + L Dyn.Rueckmld.RET_VAL_BLKMOV_Schleuse // Rückmeldung + L 0 // Fehler vorhanden ? + <>I // Ja ! + = Dyn.Error.Err_BLKMov // Error bei Block kopieren + JC RET + + L Schleuse.Schleusen_Typ // Schleusetyp = 1274 (HM-Schleuse) + L 1274 // Dieser Aufruf-FB ? + ==I // Ja ! + JC w061 + + SET + S Dyn.Error.Undef_Schleuse // undefinierter Schleuse + + L 0 // Schleuse ungültig ! + T Schleuse.Schleusen_Nr // Nummer des Schleuses + + L 16#A064 + T Dyn.Stop_Ursache + + JU RET + +// Defaultwerte übergeben: +w061: NOP 0 + + JU RET + +en06: NOP 0 + + +--- NW 8: Einsprung Weiche plus ermitteln --- + L SAVE.Weichen_DB // Weichen-FIFO-DB + L 0 // Einsprung-Zeiger bekannt ? + >I // Ja ! + R "Kein_Weichenbereich +1" + JC En08 + + L Schleuse.RausWeichen_Nr // Nr. der vorhandenen Weiche + T "MW200" // Search-Daten + L 0 // angegeben ? + ==I // Nein ! + = "Kein_Weichenbereich +1" + R Dyn.Error.Err_Undef_Weiche // undefinierte Weiche + JC En08 + +CALL FC "DatenOut" (SSDB:=Para.Weichen_DL_DB, SSDW:=0, PARA:=WORD#16#0000, SEARCHDATEN:=P#M200.0, RE_VAL:="MB199", OUTDATEN:=P#M220.0, Position:="MW196") + + L "MB199" + T Dyn.Rueckmld.RET_VAL_DL_Weiche // Rückmeldung bei Datenbank-Zugriff (Weiche-DL) + + JBI W_Ok + + A "M199.0" + = Dyn.Error.Err_Weichen_DL // Weichen-Datenliste fehlerhaft + JC En08 + + SET + S Dyn.Error.Err_Undef_Weiche // undefinierte Weiche + + JU En08 + +W_Ok: L "MW224" + T SAVE.Weichen_DB // Weichen-FIFO-DB + L 0 // sinnvoller Wert ? + <=I // Nein ! + S Dyn.Error.Err_Undef_Weiche // undefinierte Weiche + JC En08 + + L "MW226" + T SAVE.Weichen_DW // Weichen-FIFO-DW + +En08: NOP 0 + + +--- NW 9: Trolley in Schleuse entprellen --- + A B_InSchleuse + JC B_ok + + AN Status2.Trolley_an_Schleuse + ON "1s-Impuls" + JC Xn08 + + L Dyn.Ohne_B + + 1 // Zeit ohne Sensor +1s + T Dyn.Ohne_B + + L 3 // Nach ca. 3s + I + JC X014 + + T Dyn.Restzeit_bis_Schleuse // Minimum übergeben + +// Trolley fährt noch ein: +X014: L Dyn.Restzeit_bis_Schleuse + L 0 // Restzeit vorhanden? + >I // Ja ! + AN B_InSchleuse + AN "Schleuse_geöffnet" + S Antrieb_Schleuse_vor // Antrieb einschalten (dadurch wird PS-Modus deaktiviert) + +En14: NOP 0 + + +--- NW 13: Ausfahrzeit lernen --- + AN Status2.Ausfahrzeit_lernen + ON Antrieb_Schleuse_aktiv + ON "1s-Impuls" + JC NoAFZ + + L Schleuse.AusfahrZeit + + 1 + T Schleuse.AusfahrZeit + +NoAFZ: NOP 0 + + +--- NW 14: Spezial-FCs vorhanden? --- + L Schleuse.Leser_FC + T LeserFC + L 0 // Parameter vorhanden ? + >I // Ja! + = LeserFC_vorhanden + + L Schleuse.Ziel_FC + T ZielFC + L 0 // Parameter vorhanden ? + >I // Ja! + = ZielFC_vorhanden + + L Schleuse.Draussen_FC + T DraussenFC + L 0 // Parameter vorhanden ? + >I // Ja! + = DraussenFC_vorhanden + + +--- NW 15: Error: Stau Bereich-Eingang --- +// TrolleyID zum Einfahren gemeldet / Trolley fährt in Bereich: + L Dyn.TrolleyID_Eingefahren // Eintrag von Weiche -1 + L DINT#0 // angegeben ? + <>D // Ja ! + = "TrolleyID_Bereich-1" + A "TrolleyID_Bereich-1" + O B_VorSchleuse + S Dyn.Status."Trolley_fährt_in_Schleuse" + +// Antrieb einschalten: + A B_VorSchleuse + AN B_InSchleuse + AN "Schleuse_geöffnet" + S Antrieb_Schleuse_vor + + A B_VorSchleuse + S Antrieb_Schleuse_start + +// Sensor bei Bereichs-Einfahrt bleibt belegt?: + AN B_VorSchleuse // Sensor Trolley fährt in Bereich (kein Stau !) + O "Schleuse_geöffnet" + R Dyn.Error.Err_Stau_Einfahrt // Stau bei Einfahrt + JC X090 // StauZeit neu aufziehen + + AN "1s-Impuls" + O + A Schleuse.Parameter_allg.Antrieb_vorhanden + AN Antrieb_Schleuse_aktiv + O Dyn.Error.Err_Stau_Einfahrt // Zeit bereits abgelaufen + JC Xn09 + + L Dyn.Stau_Zeit // Sensor B_VorSep ist belegt [1s] + + +1 + T Dyn.Stau_Zeit // Sensor B_VorSep ist belegt [1s] + + L 20 // Stau-Zeit erreicht ? + >=I // Ja ! + S Dyn.Error.Err_Stau_Einfahrt // Stau bei Einfahrt (Quittierung oder Sensor=0, wegen Bürstenantrieb + JCN Xn09 + +X090: L 0 // Zeiten löschen + T Dyn.Stau_Zeit // Sensor B_VorSep ist belegt [1s] + +Xn09: NOP 0 + + +--- NW 16: Schleuse: Mindestzeit geöffnet/frei --- + L Dyn.Sk.Akt_Schritt + L 3 // AusSchleusen aktiv? + I // Nein! + ) +// / O #B_InSchleuse //Sensor Trolley in Schleuse vorhanden + ON "Schleuse_geöffnet" + R Dyn.Status.MindestZeit_ok + JC X100 // FreiZeit neu aufziehen + + A Schleuse.Parameter_allg.Antrieb_vorhanden + AN Antrieb_Schleuse_aktiv + O + A Schleuse.Parameter_allg.Antrieb_Plus_vorhanden + AN Antrieb_plus_aktiv + O Dyn.Status.MindestZeit_ok // Zeit bereits abgelaufen + ON "1s-Impuls" + JC Xn10 + + L Dyn.Mindest_Zeit // Sensor B_im_Sep ist frei [1s] + + +1 + T Dyn.Mindest_Zeit // Sensor B_im_Sep ist frei [1s] + + L Schleuse.Mindeszeit_Schleuse_geoeffnet // Mindest-Zeit erreicht ? + >=I // Ja ! + S Dyn.Status.MindestZeit_ok + JCN Xn10 + +X100: L 0 // Zeiten löschen + T Dyn.Mindest_Zeit // Sensor B_im_Sep ist frei [1s] + +Xn10: NOP 0 + + +--- NW 17: Schleuse: Trolley ist draussen (Sensor/Weiche) --- + L Dyn.Sk.Akt_Schritt + L 5 // Trolley fährt aus ? + I // Nein! + ) + ON "Schleuse_geöffnet" + R Status2.Trolley_ist_draussen + R Status2.Ausfahrzeit_lernen + JC En15 // FreiZeit neu aufziehen + +// Trolley ist draussen sofort (Rückmeldung von Sensor/Weiche): + A B_AusSchleuse // Sensor Trolley aus Schleuse gefahren + A Schleuse.Parameter_allg.B_AusSep_vorhanden + O + A Dyn.Status."Trolley ausserhalb Weiche" // Rückmeldung von Weiche +1 + AN "Kein_Weichenbereich +1" // Also Weiche +1 + S Status2.Trolley_ist_draussen + +En15: NOP 0 + + +--- NW 18: Einsprung Leser ermitteln --- + L Dyn.SAVE2.Leser_DB // Leser-FIFO-DB + L 0 // Einsprung-Zeiger bekannt ? + >I // Ja ! + S Leser_Zugriff // Leser-Zugriff vorhanden + JC En08L + + L Schleuse.Leser_ID // Nr. des vorhandenen Lesers + T "MW200" // Search-Daten + L 0 // angegeben ? + ==I // Nein ! + JC En08L + +CALL FC "DatenOut" (SSDB:=Para.Leser_DL_DB, SSDW:=0, PARA:=WORD#16#0000, SEARCHDATEN:=P#M200.0, RE_VAL:="MB199", OUTDATEN:=P#M220.0, Position:="MW196") + + L "MB199" + T Dyn.Rueckmld.RET_VAL_DL_Leser // Rückmeldung bei Datenbank-Zugriff (Leser-DL) + + JBI W_OkL + + SET + S Dyn.Error.Err_Leser_nicht_bereit // Leser-Datenliste fehlerhaft + + JU En08L + +W_OkL: L "MW222" // Rein-FIFO-DB + T Dyn.SAVE2.Leser_DB // Leser-FIFO-DB + L 0 // sinnvoller Wert ? + <=I // Nein ! + S Dyn.Error.Err_Leser_nicht_bereit // undefinierter Leser + JC En08L + + L "MD224" + T Dyn.SAVE2.Leser_DD // Leser-FIFO-DD + + SET + R Dyn.Error.Err_Leser_nicht_bereit // undefinierter Leser + S Leser_Zugriff // Leser-Zugriff vorhanden + +En08L: NOP 0 + + +--- NW 19: Reservierung bei Weiche plus noch aktiv? --- + A "Kein_Weichenbereich +1" + R "Reservierung_Weiche+1_aktiv" + JC Y11E + + OPN DB[SAVE.Weichen_DB] // FABE+ -DB öffnen + + L SAVE.Weichen_DW + ITD + T AR1Start // Startwert mit Offset 0 + + L AR1Start // Startwert mit Offset 0 + + DINT#78 + SLD 3 + T AR1Zeiger // Statt Dyn.Bereichsstop (ging nur bis DB-Länge <= 8191 Bytes) + + L DBW [AR1Zeiger] // Schleuse -1 (DBW 78) + L Schleusen_Nr // Diese Schleuse ? + ==I // Ja ! +// / SET /// + = "Reservierung_Weiche+1_aktiv" + +// Mindestzeit nachtriggern: + AN "Schleuse_geöffnet" + ON B_InSchleuse + JC Y11E + + L AR1Start // Startwert mit Offset 0 + + DINT#71 + SLD 3 + L 3 // Damit DBX_Bit 3 + OD + T AR1Zeiger // Statt Dyn.Bereichsstop (ging nur bis DB-Länge <= 8191 Bytes) + + SET + = DBX [AR1Zeiger] // Mindestzeit nachtriggern (71.3) + +Y11E: NOP 0 + + +--- NW 20: Leser-Einheit managen (Inputs holen) --- + AN Leser_Zugriff + ON Schleuse.Parameter_allg.Leser_eingebaut + R Dyn.Status.Leser_triggern // für Status-Anzeige + JC NoLeser + +// Leserdaten holen: + OPN DB[Dyn.SAVE2.Leser_DB] // Leser -DB öffnen + + L Dyn.SAVE2.Leser_DD + T AR1Start // Startwert mit Offset 0 + +// Offset 10: + L AR1Start // Startwert mit Offset 0 + + DINT#10 + SLD 3 + T AR1Zeiger // Statt Dyn.Bereichsstop (ging nur bis DB-Länge <= 8191 Bytes) + + L DBB [AR1Zeiger] + T "MB200" + A "M200.0" + = Dyn.Leser.IN.xOutReadingDone + A "M200.1" + = Dyn.Leser.IN.xOutReadyForNewScan + +// Offset 274: + L AR1Start // Startwert mit Offset 0 + + DINT#274 + SLD 3 + T AR1Zeiger // Statt Dyn.Bereichsstop (ging nur bis DB-Länge <= 8191 Bytes) + + L DBB [AR1Zeiger] + T "MB200" + A "M200.0" + = Dyn.Leser.IN.xOutCodeGood + A "M200.1" + = Dyn.Leser.IN.xOutCodeBad + +// Offset 12: + L AR1Start // Startwert mit Offset 0 + + DINT#12 + SLD 3 + T AR1Zeiger // Statt Dyn.Bereichsstop (ging nur bis DB-Länge <= 8191 Bytes) + + L DBD [AR1Zeiger] + T Dyn.Leser.IN.nOutBarcode + +NoLeser: NOP 0 + + +--- NW 21: Schrittkette anhalten --- + A Dyn.Sk.Auto_akt // Automatik ist aktiv + A Dyn.Sk.Bereich_ok + CLR + + JU en08_Mig // Schrittkette nicht anhalten ! + + SET + R Dyn.Sk.Err_Uebzeit // Störungen löschen + R Dyn.Sk.Err_Schritt + + L 0 // Zeitwerte löschen + T Dyn.Sk.Terr_Zelle + T Dyn.Sk.Tok_Zelle + + JU RET + +en08_Mig: NOP 0 + + +--- NW 22: Trolley wurde zurück gezogen --- + L Dyn.Sk.Akt_Schritt + L 10 // Trolley schon unterwegs ? + I // Ja ! + ) + O Status2.Trolley_an_Schleuse // Trolley ist noch in Schleuse + O "Schleuse_geöffnet" + JC TrolleyOk + + SET + S Antrieb_Schleuse_start + S Dyn.Leser.OUT.xInReset + + L 0 // Neubeginn + T Dyn.Sk.Akt_Schritt + + AN Schleuse.Parameter_allg.Leser_eingebaut // Falls kein Leser verbaut Daten behalten (falls von Bereich-1 gemeldet) + JC TrolleyOk + + T Dyn.Trolley_ZwischenZiel + + L DINT#0 + T Dyn.TrolleyID_Schleuse + +TrolleyOk: NOP 0 + + +--- NW 23: Sprungverteiler --- + L Dyn.Sk.Neu_Schritt // Schritt, der im nächsten Zyklus aktiv werden soll + L -1 // angegeben ? + ==I // Nein ! + JC NEU + + CAC // Neuen Schritt übergeben + T Dyn.Sk.Akt_Schritt + + L -1 // Urzustand + T Dyn.Sk.Neu_Schritt // Schritt, der im nächsten Zyklus aktiv werden soll + +NEU: SET + R Warte_neu // Wartezeit neutriggern + R Warte_stop // Wartezeit stoppen + + L Dyn.Sk.Akt_Schritt + JL Ende + JU s000 // Schritt 0 + JU s001 // Schritt 1 + JU s002 // Schritt 2 + JU s003 // Schritt 3 + JU s004 // Schritt 4 + JU s005 // Schritt 5 + JU s006 // Schritt 6 + JU s007 // Schritt 7 + JU s008 // Schritt 8 + JU s009 // Schritt 9 + JU s010 // Schritt 10 + JU s011 // Schritt 11 + JU s012 // Schritt 12 + JU s013 // Schritt 13 + JU s014 // Schritt 14 + JU s015 // Schritt 15 + JU s016 // Schritt 16 + JU s017 // Schritt 17 + JU s018 // Schritt 18 + JU s019 // Schritt 19 + JU s020 // Schritt 20 + JU s021 // Schritt 21 + JU s022 // Schritt 22 + JU s023 // Schritt 23 + JU s024 // Schritt 24 + JU s025 // Schritt 25 + JU s026 // Schritt 26 + JU s027 // Schritt 27 + JU s028 // Schritt 28 + JU s029 // Schritt 29 + JU s030 // Schritt 30 +Ende: S Dyn.Sk.Err_Schritt // Undefinierter Schritt + + L 16#A131 + T Dyn.Stop_Ursache + + JU RET + +Neu_Mig: A Dyn.Sk.Err_Uebzeit + JCN Sk + + L 16#A132 + T Dyn.Stop_Ursache + + JU RET + +Sk: T Dyn.Sk.Akt_Schritt + + L 0 // Zeitwerte löschen + T Dyn.Sk.Terr_Zelle + T Dyn.Sk.Tok_Zelle + + JU NEU + +// Nicht programmierte Schritte: +// s000: SPA Ende +// s001: SPA Ende +// s002: SPA Ende +// s003: SPA Ende +// s004: SPA Ende +// s005: SPA Ende +// s006: SPA Ende +// s007: SPA Ende +// s008: SPA Ende +// s009: SPA Ende +// s010: SPA Ende +// s011: SPA Ende +// s012: SPA Ende +// s013: SPA Ende +// s014: SPA Ende +// s015: SPA Ende +// s016: SPA Ende +// s017: SPA Ende +s018: JU Ende +s019: JU Ende +// s020: SPA Ende +// s021: SPA Ende +s022: JU Ende +s023: JU Ende +s024: JU Ende +s025: JU Ende +s026: JU Ende +s027: JU Ende +s028: JU Ende +s029: JU Ende +s030: JU Ende + + +--- NW 24: Schritt X: Reserve --- + SET // Weiterschaltbedingung + = Weiter + +// Schrittaktionen: + SET + + L 16#B001 + T Dyn.Stop_Ursache + + A Weiter // Weiterschaltbedingung ist erfüllt + R Dyn.Sk.Err_Uebzeit // Sofort weiter ! + L 0 // Angabe der Wartezeit (*10ms) + JC Plus // Nächsten Schritt starten + + L 1 // Weiter mit Schritt 1 + JC Neu_Mig // Bei diesem Schritt weiter + + L 2 + T Dyn.Sk.Neu_Schritt // Schritt, der im nächsten Zyklus aktiv werden soll + + SET + A Dyn.Sk.Auto_akt // Automatik ist aktiv + A Dyn.Sk.Bereich_ok + = Ueb_akt // Überwachungszeit aktivieren + L 50 // Angabe der Überwachungszeit (*1s) + JU tueb // Überwachungszeit + + JU RET + + +--- NW 25: Schritt 0: Warten auf Trolley --- +s000: SET // Weiterschaltbedingung + A B_InSchleuse // Trolley im Schleuse erkannt + A Dyn.Sk.Auto_akt // Automatik ist aktiv + A Dyn.Sk.Bereich_ok + = Weiter + +// Trolley-Schleusendaten löschen: + L DINT#0 + T Dyn.TrolleyID_Schleuse + T Dyn.Trolley_ShopGroup + + L 0 + T Dyn.Trolley_EndZiel + T Dyn.Weichen_Ziel + +// HMI-Zeug: + L DINT#0 + T Dyn.HMI.TrolleyID_Input + + A Dyn.Sk.Reset_Akt // Reset ist aktiv + L 20 // Weiter mit Schritt 20 + JC Neu_Mig // Bei diesem Schritt weiter + +// Schrittaktionen: + SET + R Dyn.Error.Err_Leser_nicht_bereit + R Dyn.Error.Err_Kein_LeseErgebnis + R Dyn.Status.SF_angefordert + R Status2."TrolleyPos_übergeben" + R Status2.Telegramm_gesendet + + A Weiter // Weiterschaltbedingung ist erfüllt + R Dyn.Sk.Err_Uebzeit // Sofort weiter ! + L 50 // Angabe der Wartezeit (*10ms) + JC Plus // Nächsten Schritt starten + + L 16#B001 + T Dyn.Stop_Ursache + + A Dyn.Status."Trolley_fährt_in_Schleuse" + AN B_InSchleuse + S Antrieb_Schleuse_vor // Antrieb einschalten + JC S000A + + SET + R Dyn.Sk.Err_Uebzeit + + L 16#B000 + T Dyn.Stop_Ursache + + JU RET + +// Überwachungszeit starten: +S000A: A Dyn.Status."Trolley_fährt_in_Schleuse" + AN B_InSchleuse // Trolley im Schleuse erkannt + A( + O Antrieb_Schleuse_aktiv + ON Schleuse.Parameter_allg.Antrieb_vorhanden + ) + = Ueb_akt // Überwachungszeit aktivieren + + A Dyn.Sk.Err_Uebzeit + R Dyn.Sk.Err_Uebzeit + S Dyn.Error.Err_Trolley_nicht_in_Schleuse + R Dyn.Status."Trolley_fährt_in_Schleuse" + + L Schleuse."Übzeit_in_Schleuse" + + JU tueb // Überwachungszeit + + +--- NW 26: Schritt 1: Trolley ist in Schleuse / Leser ? / Daten vorhanden ? --- +s001: NOP 0 +// Schrittaktionen: + A B_InSchleuse + S Status2.Trolley_an_Schleuse + + AN Status2.Trolley_an_Schleuse // Trolley im Schleuse erkannt + A Schleuse.Parameter_allg.Leser_eingebaut + L 0 // Weiter mit Schritt 0 + JC Neu_Mig // Bei diesem Schritt weiter + +// Zwischen-Ziel von Bereich -1 vorhanden?: + L Dyn.ZwischenZiel_eingefahren + L 0 // Zwischenziel von Bereich -1 vorhanden! + ==I // Nein ! + O Schleuse.Parameter_allg.Leser_eingebaut // Dann werden Daten neu ermittelt! + JC X001 + +// Daten von Bereich -1 übergeben: + L Dyn.ZwischenZiel_eingefahren + T Dyn.Trolley_ZwischenZiel + L 0 + T Dyn.ZwischenZiel_eingefahren + + L Dyn.TrolleyID_Eingefahren + T Dyn.TrolleyID_Schleuse + L DINT#0 + T Dyn.TrolleyID_Eingefahren + + L 12 // Weiter mit Schritt 12 + JU Neu_Mig // Bei diesem Schritt weiter + +X001: L 0 + T Dyn.Trolley_ZwischenZiel + +// Leser vorhanden: + A Schleuse.Parameter_allg.Leser_eingebaut + R Dyn.Error.Err_Kein_LeseErgebnis + L 9 // Weiter mit Schritt 9 (Leser bereit) + JC Neu_Mig // Bei diesem Schritt weiter + +// Trolleydaten vorhanden ?: (Übergabe von Bereich -1) + L Dyn.TrolleyID_Eingefahren + T Dyn.TrolleyID_Schleuse + L DINT#0 // Daten vorhanden ? + <>D // Ja ! + L 11 // Weiter mit Schritt 11 (Trolleydaten lesen) + JC Neu_Mig // Bei diesem Schritt weiter + +// Ziel-FC vorhanden ?: + A ZielFC_vorhanden + L 12 // Weiter mit Schritt 12 (Ziel-FC) + JC Neu_Mig // Bei diesem Schritt weiter + + L 14 // Weiter mit Schritt 14 (Weichenbereich +1 vorhanden) + JU Neu_Mig // Bei diesem Schritt weiter + + +--- NW 27: Schritt 2: Ausfahren ok ? --- +s002: NOP 0 + +// Schrittaktionen: + AN Status2.Trolley_an_Schleuse // Trolley im Schleuse erkannt + A Schleuse.Parameter_allg.Leser_eingebaut + L 0 // Weiter mit Schritt 0 + JC Neu_Mig // Bei diesem Schritt weiter + +// Anlage aus oder Störung: + L 16#B021 + T Dyn.Stop_Ursache + + AN Dyn.Sk.Auto_akt // Automatik ist aktiv + ON Dyn.Sk.Bereich_ok // Bereich ist gestört + JC RET + +// Starten erlaut Trolley ?: + L 16#B022 + T Dyn.Stop_Ursache + + AN Start_Ok // Starten ist erlaubt + JC RET + +// Stau im Bereich +1: + L 16#B023 + T Dyn.Stop_Ursache + + SET + S Dyn.Status."Trolley_wartet_Bereich+1" + + A B_Stau_raus // Sensor Stau im Bereich rausfahren + JC RET + +// B_Aus_Schleuse aktiv: + L 16#B024 + T Dyn.Stop_Ursache + + A Schleuse.Parameter_allg.B_AusSep_vorhanden + A B_AusSchleuse // Sensor Trolley aus Schleuse gefahren + = Dyn.Error.Err_Raus_Sensor // Raus-Sensor wird nicht erreicht (oder dauernd aktiv)! + JC RET + +// Restzeit zum Ausfahren ausreichend?: + L 16#B025 + T Dyn.Stop_Ursache + + A( + L RestZeit_Bereich_plus + L Schleuse.AusfahrZeit + I // Nicht Maximalzeit, also nicht leer + ) + BEC // Nein ! + +// Antriebe aktivieren / aktiv ?: + A Schleuse.Parameter_allg.Antrieb_Plus_vorhanden // Schleuse an weiterem Antrieb (Weiche) + S Antrieb_plus_vor // Antrieb plus einschalten + + A( + O Antrieb_plus_aktiv // Kreisel-Antrieb plus aktiv + ON Schleuse.Parameter_allg.Antrieb_Plus_vorhanden // Schleuse an weiterem Antrieb (Weiche) + ) + S Antrieb_Schleuse_vor // Antrieb einschalten + + L 16#B026 + T Dyn.Stop_Ursache + + AN Antrieb_plus_aktiv // Kreisel-Antrieb plus aktiv + A Schleuse.Parameter_allg.Antrieb_Plus_vorhanden // Schleuse an weiterem Antrieb (Weiche) + JC RET + + AN Antrieb_Schleuse_aktiv // Kreisel-Antrieb aktiv + A Schleuse.Parameter_allg.Antrieb_vorhanden // Schleuse an angetriebener Strecke + = Dyn.Status.Kein_Stop_mehr + JC RET + + SET + R Status2."Warten_3.V" + + L 5 // Nur 1 langes Signal! + AN Schleuse.Parameter_allg."2.V_bei_Ausfahrt_checken" + JC Neu_Mig // Bei diesem Schritt weiter + + L 3 // 2.V bei Ausfahrt checken + JU Neu_Mig // Bei diesem Schritt weiter + + +--- NW 28: Schritt 3: Trolley fährt aus / 1.V ausgefahren ? --- +s003: SET // Weiterschaltbedingung + AN B_InSchleuse // Sensor Trolley ist in Schleuse + = Weiter + +// Schrittaktionen: + SET + S Y_Schleuse_Auf // Schleuse öffnen + S Dyn.Status."Trolley_fährt_aus" + +// Antriebe: +// siehe Nw9 + + A Weiter // Weiterschaltbedingung ist erfüllt + R Dyn.Sk.Err_Uebzeit // Sofort weiter ! + R Dyn.Error.Err_Trolley_raus // Trolley fährt nicht aus + L 30 // Angabe der Wartezeit (*10ms) + JC Plus // Nächsten Schritt starten + + AN "Kein_Weichenbereich +1" // Also Weiche vorhanden + AN "Reservierung_Weiche+1_aktiv" // Weiche nicht mehr angemeldet + R Dyn.Sk.Err_Uebzeit // Sofort weiter ! + L 0 // Weiter mit Schritt 0 + JC Neu_Mig // Bei diesem Schritt weiter + + A Dyn.Sk.Err_Uebzeit + S Dyn.Error.Err_Trolley_raus // Trolley fährt nicht aus + + L 16#B031 + T Dyn.Stop_Ursache + + A Antrieb_Schleuse_aktiv + ON Schleuse.Parameter_allg.Antrieb_vorhanden // Schleuse an angetriebener Strecke + = Ueb_akt // Überwachungszeit aktivieren + L Schleuse."Übzeit_aus_Schleuse" // Angabe der Überwachungszeit (*1s) + JU tueb // Überwachungszeit + + +--- NW 29: Schritt 4: Trolley fährt aus / Warten auf 2.V --- +s004: SET // Weiterschaltbedingung + A B_InSchleuse // Sensor Trolley ist in Schleuse + O Dyn.Status."Trolley ausserhalb Weiche" // Rückmeldung von Weiche +1 + = Weiter + +// Bei Raus-Sensor nicht zählen: + A Schleuse.Parameter_allg.B_AusSep_vorhanden + A B_AusSchleuse // Sensor Trolley aus Schleuse gefahren + L 5 // Zählen überspringen + R Dyn.Sk.Err_Uebzeit // Sofort weiter ! + R Dyn.Error.Err_Trolley_raus // Trolley fährt nicht aus + JC Neu_Mig // Bei diesem Schritt weiter + +// Schrittaktionen: + SET + S Y_Schleuse_Auf // Schleuse öffnen + S Dyn.Status."Trolley_fährt_aus" + +// Antriebe: +// siehe Nw9 + + A Weiter // Weiterschaltbedingung ist erfüllt + R Dyn.Sk.Err_Uebzeit // Sofort weiter ! + R Dyn.Error.Err_Trolley_raus // Trolley fährt nicht aus + L 0 // Angabe der Wartezeit (*10ms) + JC Plus // Nächsten Schritt starten + + AN "Kein_Weichenbereich +1" // Also Weiche vorhanden + AN "Reservierung_Weiche+1_aktiv" // Weiche nicht mehr angemeldet + R Dyn.Sk.Err_Uebzeit // Sofort weiter ! + L 0 // Weiter mit Schritt 0 + JC Neu_Mig // Bei diesem Schritt weiter + + A Dyn.Sk.Err_Uebzeit + S Dyn.Error.Err_Trolley_raus // Trolley fährt nicht aus + + L 16#B041 + T Dyn.Stop_Ursache + + A Antrieb_Schleuse_aktiv + ON Schleuse.Parameter_allg.Antrieb_vorhanden // Schleuse an angetriebener Strecke + = Ueb_akt // Überwachungszeit aktivieren + L Schleuse."Übzeit_aus_Schleuse" // Angabe der Überwachungszeit (*1s) + JU tueb // Überwachungszeit + + +--- NW 30: Schritt 5: Trolley fährt aus ? --- +s005: SET // Weiterschaltbedingung + AN B_InSchleuse // Sensor Trolley ist in Schleuse + A( + O Antrieb_Schleuse_aktiv // Kreisel-Antrieb aktiv + ON Schleuse.Parameter_allg.Antrieb_vorhanden // Schleuse an angetriebener Strecke + ) + A( + O Antrieb_plus_aktiv + ON Schleuse.Parameter_allg.Antrieb_Plus_vorhanden + ) + = Weiter + +// Ausfahrzeit lernen: + A Schleuse.Parameter_allg.B_AusSep_vorhanden + JC X004 + +// Ohne Sensor -> Üb.Zeit übergeben: + L Schleuse."Übzeit_aus_Schleuse" + T Schleuse.AusfahrZeit + +X004: L Schleuse.AusfahrZeit + L 0 // Ausfahrzeit bekannt ? + ==I // Nein ! + A Schleuse.Parameter_allg.B_AusSep_vorhanden + S Status2.Ausfahrzeit_lernen + +// Schrittaktionen: + SET + S Y_Schleuse_Auf // Schleuse öffnen + S Dyn.Status."Trolley_fährt_aus" + +// Antriebe: +// siehe Nw10 + +// B in Schleuse aktiv: + A B_InSchleuse // Sensor Trolley ist in Schleuse + JCN X050 // Negierter Sprung + + L 0 + T Dyn.Sk.Tok_Zelle + +// Trolley ist draussen mit 5s-Verzögerung: +X050: A Weiter // Weiterschaltbedingung ist erfüllt + R Dyn.Sk.Err_Uebzeit // Sofort weiter ! + R Dyn.Error.Err_Trolley_raus // Trolley fährt nicht aus + L 300 + JC Plus // Nächsten Schritt starten + +// Trolley fährt nicht raus!: + A Dyn.Sk.Err_Uebzeit + S Dyn.Error.Err_Trolley_raus // Trolley fährt nicht aus + + L 16#B051 + T Dyn.Stop_Ursache + + A Antrieb_Schleuse_aktiv + ON Schleuse.Parameter_allg.Antrieb_vorhanden // Schleuse an angetriebener Strecke + = Ueb_akt // Überwachungszeit aktivieren + L Schleuse."Übzeit_aus_Schleuse" // Angabe der Überwachungszeit (*1s) + JU tueb // Überwachungszeit + + +--- NW 31: Schritt 6: Schleuse Mindestzeit geöffnet / Trolley draussen ? --- +s006: SET // Weiterschaltbedingung + A Dyn.Status.MindestZeit_ok + AN B_InSchleuse // Sensor Trolley in Schleuse vorhanden + A( + AN Schleuse.Parameter_allg.B_AusSep_vorhanden + A "Kein_Weichenbereich +1" + O Status2.Trolley_ist_draussen + ) + = Weiter + R Dyn.Sk.Err_Uebzeit // Sofort weiter ! + R Dyn.Error.Err_Trolley_raus // Trolley fährt nicht aus + +// Schrittaktionen: + SET + S Y_Schleuse_Auf // Schleuse öffnen + S Dyn.Status."Trolley_fährt_aus" + +// Erneutes Signal von B in Schleuse ?: + A B_InSchleuse // Sensor Trolley in Schleuse vorhanden + JCN X060 // Negierter Sprung + + L 5 + T Dyn.Sk.Neu_Schritt // Schritt, der im nächsten Zyklus aktiv werden soll + + L 0 // Mindest-Zeit neu starten + T Dyn.Mindest_Zeit // Sensor B_im_Sep ist frei [1s] + SET + R Dyn.Status.MindestZeit_ok // Zeit bereits abgelaufen + + JU RET + +// Antriebe: +// siehe Nw10 + +X060: A Weiter + JC X006 // Nächsten Schritt starten + + L 16#B061 + T Dyn.Stop_Ursache + +// Trolley fährt nicht raus!: + A Dyn.Sk.Err_Uebzeit + S Dyn.Error.Err_Trolley_raus // Trolley fährt nicht aus + + A Dyn.Error.Err_Trolley_raus // Trolley fährt nicht aus + AN Status2.Trolley_ist_draussen + A Schleuse.Parameter_allg.B_AusSep_vorhanden + R Dyn.Error.Err_Trolley_raus // Trolley fährt nicht aus + S Dyn.Error.Err_Raus_Sensor // Raus-Sensor wird nicht erreicht (oder dauernd aktiv)! + + A Antrieb_Schleuse_aktiv + ON Schleuse.Parameter_allg.Antrieb_vorhanden // Schleuse an angetriebener Strecke + = Ueb_akt // Überwachungszeit aktivieren + L Schleuse."Übzeit_aus_Schleuse" // Angabe der Überwachungszeit (*1s) + JU tueb // Überwachungszeit + +// Trolley hat Schleuse verlassen: +X006: SET + S Dyn.Status.Trolley_draussen // 1 Zyklus + R Dyn.Status."Trolley_fährt_in_Schleuse" + R Status2.Telegramm_gesendet + + L Dyn.Vereinzelungstakte + + DINT#1 // Vereinzelungen +1 + T Dyn.Vereinzelungstakte + +// Draussen-FC ?: + AN DraussenFC_vorhanden + JC NoFC // Bei diesem Schritt weiter + + L Schleusen_Nr // Schleusen-Nr. + T "MW190" + L Dyn.Trolley_ShopGroup // Shop-Gruppe + T "MD182" // übergeben + + L Dyn.Weichen_Ziel + T "MW198" // Weichenziel + + UC DB[DraussenFC] // z.Bsp. Daten anpassen + +NoFC: L 7 // Weiter mit Schritt 7 + JU Neu_Mig // Bei diesem Schritt weiter + + +--- NW 32: Schritt 7: Trolley ausserhalb der Weiche --- +s007: SET // Weiterschaltbedingung + AN "Kein_Weichenbereich +1" // Also Weiche vorhanden + AN "Reservierung_Weiche+1_aktiv" // Weiche nicht mehr angemeldet (Evtl. Reset im Weichenbereich) + O Dyn.Status."Trolley ausserhalb Weiche" // Rückmeldung von Weiche +1 + O "Kein_Weichenbereich +1" + = Weiter + +// Schrittaktionen: + SET + S Y_Schleuse_Auf // Schleuse öffnen + S Dyn.Status."Trolley_fährt_aus" + A( + O Dyn.Status.Weiche_geschaltet // Weiche ist aktiv + O "Kein_Weichenbereich +1" + ) + S Antrieb_Schleuse_vor // Antrieb einschalten + S Antrieb_plus_vor // Antrieb plus einschalten + + A Weiter // Weiterschaltbedingung ist erfüllt + JC X007 + + L 16#B071 + T Dyn.Stop_Ursache + + JU RET + +// Trolley ist ausserhalb der Weiche?: +X007: A "Kein_Weichenbereich +1" + JC ENDE_Mig + +// Weichen-Rückmeldungen löschen: + SET + R Dyn.Status.Weiche_geschaltet + R Dyn.Status."Trolley ausserhalb Weiche" + +// Weichen-Reservierung löschen: + OPN DB[SAVE.Weichen_DB] // FABE+ -DB öffnen + + L SAVE.Weichen_DW + ITD + T AR1Start // Startwert mit Offset 0 + + L AR1Start // Startwert mit Offset 0 + + DINT#78 + SLD 3 + T AR1Zeiger // Statt Dyn.Bereichsstop (ging nur bis DB-Länge <= 8191 Bytes) + + L DBW [AR1Zeiger] // Schleuse -1 (DBW 78) + L Schleusen_Nr + <>I // Nicht diese Schleuse! + JC ENDE_Mig + + L 0 + T DBW [AR1Zeiger] // Schleuse -1 (DBW 78) + T SAVE."Weiche+1" // Hier wurde reserviert + + L 0 + JU Plus // Nächsten Schritt starten + + +--- NW 33: Schritt 8: Weichen-Rückmeldungen = 0? --- +s008: SET // Weiterschaltbedingung + +// Schrittaktionen: + AN Dyn.Status.Weiche_geschaltet + AN Dyn.Status."Trolley ausserhalb Weiche" + JC ENDE_Mig + + L 16#B080 + T Dyn.Stop_Ursache + + JU RET + + +--- NW 34: Schritt 9: Lese-Einheit bereit? --- +s009: SET // Weiterschaltbedingung + L Dyn.Leser.IN.nOutBarcode + L DINT#0 + ==D + A Dyn.Leser.IN.xOutReadyForNewScan + AN Dyn.Leser.IN.xOutReadingDone + AN Dyn.Leser.IN.xOutCodeGood + AN Dyn.Leser.IN.xOutCodeBad + = Weiter + R Dyn.Error.Err_Leser_nicht_bereit + +// Schrittaktionen: + AN Status2.Trolley_an_Schleuse // Trolley im Schleuse erkannt + A Schleuse.Parameter_allg.Leser_eingebaut + R Dyn.Error.Err_Leser_nicht_bereit + L 0 // Weiter mit Schritt 0 + JC Neu_Mig // Bei diesem Schritt weiter + + A Weiter + = Dyn.Leser.OUT.xInStartReading // Leser triggern + L 0 // Angabe der Wartezeit (*10ms) + JC Plus // Nächsten Schritt starten + +// Leser nicht bereit: + A Dyn.Leser.IN.xOutReadingDone // Falls altes Handshake noch gewollt + O Dyn.Leser.IN.xOutCodeGood + O Dyn.Leser.IN.xOutCodeBad + S Dyn.Leser.OUT.xInHandshakeDone + + A Dyn.Sk.Err_Uebzeit + R Dyn.Sk.Err_Uebzeit // Sofort weiter ! + S Dyn.Error.Err_Leser_nicht_bereit + S Dyn.Leser.OUT.xInErrQuit // Vielleicht hilft es + + A Dyn.Error.Err_Leser_nicht_bereit + A ErrQuit // Mit Quittierung dann zusätzlich reset! + S Dyn.Leser.OUT.xInReset + +// HMI-TrolleyID bei Leser nicht bereit: + L Dyn.HMI.TrolleyID_Input + L DINT#0 + <>D // Ja! + A Dyn.Error.Err_Leser_nicht_bereit + L 0 // Angabe der Wartezeit (*10ms) + JC Plus // Nächsten Schritt starten + + SET + = Ueb_akt // Überwachungszeit aktivieren + L 5 // Angabe der Überwachungszeit (*1s) + JU tueb // Überwachungszeit + + +--- NW 35: Schritt 10: Warten auf Leseeinheit --- +s010: SET // Weiterschaltbedingung + A Dyn.Leser.IN.xOutReadingDone + A Dyn.Leser.IN.xOutCodeGood + AN Dyn.Leser.IN.xOutCodeBad + = Weiter + R Dyn.Error.Err_Kein_LeseErgebnis + +// Schrittaktionen: + AN Status2.Trolley_an_Schleuse // Trolley im Schleuse erkannt + A Schleuse.Parameter_allg.Leser_eingebaut + L 0 // Weiter mit Schritt 0 + R Dyn.Error.Err_Kein_LeseErgebnis + JC Neu_Mig // Bei diesem Schritt weiter + + SET + R Dyn.Leser.OUT.xInStartReading // Leseeinheit triggern + + A Weiter + S Dyn.Leser.OUT.xInHandshakeDone + R Dyn.Sk.Err_Uebzeit // Sofort weiter ! + JC X010 + + SET + S Dyn.Status.Trolley_wartet_Lesung + + A Dyn.Error.Err_Leser_nicht_bereit // von Schritt 9 + JC LX + + A Dyn.Sk.Err_Uebzeit + O Dyn.Leser.IN.xOutCodeBad + S Dyn.Leser.OUT.xInHandshakeDone + JC L2 // Erst bei 3.Fehllesung Error! + + L 16#B101 + T Dyn.Stop_Ursache + + SET + = Ueb_akt // Überwachungszeit aktivieren + + L 10 // Angabe der Überwachungszeit (*1s) + JU tueb // Überwachungszeit + +L2: A Status2."2.Lesung_aktiv" // Erst bei 3.Fehllesung Error! + JC L3 + + SET + S Status2."2.Lesung_aktiv" + R Dyn.Sk.Err_Uebzeit // Sofort weiter ! + + L 9 + T Dyn.Sk.Neu_Schritt // Schritt, der im nächsten Zyklus aktiv werden soll + + JU RET + +L3: A Status2."3.Lesung_aktiv" // //Erst bei 3.Fehllesung Error! + JC LX + + SET + S Status2."3.Lesung_aktiv" + R Dyn.Sk.Err_Uebzeit // Sofort weiter ! + + L 9 + T Dyn.Sk.Neu_Schritt // Schritt, der im nächsten Zyklus aktiv werden soll + + JU RET + +// Nach 3.Fehl-Lesung erst Leserfehler! +LX: SET + R Dyn.Sk.Err_Uebzeit // Sofort weiter ! + S Dyn.Error.Err_Kein_LeseErgebnis + JU NoLesung + +// Leserdaten übergeben: +X010: L Dyn.Leser.IN.nOutBarcode + T Dyn.TrolleyID_Schleuse + + L DINT#0 // Unbekannt ? + ==D // Ja ! + O( + CAC + L DINT#-1 // Fehl-Lesung? + ==D // Ja ! + ) + S Dyn.Error.Err_Kein_LeseErgebnis + L 9 // Weiter mit Schritt 9 (Leser bereit) + JC Neu_Mig // Bei diesem Schritt weiter + + L 11 // Weiter mit Schritt 11 + JU Neu_Mig // Bei diesem Schritt weiter + +// Lesefehler: +NoLesung: NOP 0 +// HMI-Eingabe?: +// HMI-TrolleyID: + L Dyn.HMI.TrolleyID_Input + T Dyn.TrolleyID_Schleuse + <>D // Ja! + L 0 // Angabe der Wartezeit (*10ms) + R Dyn.Error.Err_Kein_LeseErgebnis + R Dyn.Error.Err_Leser_nicht_bereit // von Schritt 9 + JC Plus // Nächsten Schritt starten + +// Leser-FC aufrufen: +No_HMIa: AN LeserFC_vorhanden + JC NoLFC + + L Schleusen_Nr // Schleusen-Nr. + T "MW190" // übergeben + L Dyn.Trolley_ZwischenZiel // Übergabe von Leser-Aufruf + T "MW196" + + A Dyn.Error.Err_Kein_LeseErgebnis + = "M180.0" + SET + R "M180.1" + + UC DB[LeserFC] // Beeinflussung der Fehllesung + + L 16#B102 + T Dyn.Stop_Ursache + + L "MW196" // Zwischenziel übergeben + T Dyn.Trolley_ZwischenZiel // Übergabe von Leser-Aufruf + L 0 // Übergeben ? + <>I // Ja! + L 12 // Weiter mit Schritt 12 + R Dyn.Error.Err_Kein_LeseErgebnis + JC Neu_Mig // Bei diesem Schritt weiter + +NoLFC: L 9 + T Dyn.Sk.Neu_Schritt // Schritt, der im nächsten Zyklus aktiv werden soll + + JU RET + + +--- NW 36: Schritt 11: Trolleydaten aus DL lesen --- +s011: L DINT#0 + T Dyn.TrolleyID_Eingefahren // Eintrag von Weiche -1 + + L Dyn.Trolley_ZwischenZiel // / + + L Dyn.TrolleyID_Schleuse + T "MD220" + +CALL FC "DatenOut" (SSDB:=Schleuse.Gesamt_Trolley_DL, SSDW:=0, PARA:=16#0000, SEARCHDATEN:=P#M220.0, RE_VAL:="MB199", OUTDATEN:=DB1011.DBX0.0, Position:="MW196") // Eintrag lesen + + L 16#B111 + T Dyn.Stop_Ursache + + AN "M199.7" + = Dyn.Error.Barcode_nicht_bekannt + JC UnbekanntBC + +// Relevanten Trolleydaten auslesen: + L "TrolleyDL_OutDaten".OUTDaten.EndZiel + T Dyn.Trolley_EndZiel + +// ZwischenZiel nicht überschreiben: + L Dyn.Trolley_ZwischenZiel + L 0 // Schon bekannt ? + <>I // Ja ! + JC NixZZ + + L "TrolleyDL_OutDaten".OUTDaten.ZwischenZiel + T Dyn.Trolley_ZwischenZiel + +NixZZ: L "TrolleyDL_OutDaten".OUTDaten.ShopGroup + T Dyn.Trolley_ShopGroup + + L 0 // Angabe der Wartezeit (*10ms) + JU Plus // Nächsten Schritt starten + +// Unbekannter Trolley: +UnbekanntBC: NOP 0 +// HMI-Eingabe?: + +// Leser-FC aufrufen: +Nix_HMI: AN LeserFC_vorhanden + JC Nix_LFC + + L Schleusen_Nr // Schleusen-Nr. + T "MW190" // übergeben + L Dyn.TrolleyID_Schleuse + T "MD192" + L Dyn.Trolley_ZwischenZiel + T "MW196" + + A Dyn.Error.Barcode_nicht_bekannt + = "M180.1" + SET + R "M180.0" + + UC DB[LeserFC] // Beeinflussung der Weiterfahrt bei nicht bekanntem Trolley + + L "MW196" // ZwischenZiel übergeben + T Dyn.Trolley_ZwischenZiel // Übergabe von Leser-Aufruf + L 0 // Übergeben ? + <>I // Ja! + L 12 // Weiter mit Schritt 12 + R Dyn.Error.Err_Kein_LeseErgebnis + JC Neu_Mig // Bei diesem Schritt weiter + +Nix_LFC: JU RET + + +--- NW 37: Schritt 12: Ziel-FC --- +s012: NOP 0 + +// Schrittaktionen: + AN Status2.Trolley_an_Schleuse // Trolley im Schleuse erkannt + A Schleuse.Parameter_allg.Leser_eingebaut + AN "Schleuse_geöffnet" + L 0 // Weiter mit Schritt 0 + JC Neu_Mig // Bei diesem Schritt weiter + + SET + S Dyn.Status."Trolley_wartet_auf_Ziel-FC" + + AN ZielFC_vorhanden + R Dyn.Status."Trolley_wartet_auf_Ziel-FC" + L 13 // Weiter mit Schritt 13 + JC Neu_Mig // Bei diesem Schritt weiter + + SET // Rückmeldungen erst mal resetten + R "M180.6" // Weiterfahrt von Ziel-FC erlaubt + L Schleusen_Nr // Schleusen-Nr. + T "MW190" // übergeben + L Dyn.Trolley_ShopGroup // Shop-Gruppe + T "MD182" // übergeben + L Dyn.Trolley_EndZiel // End-Ziel + T "MW194" // übergeben + L Dyn.Trolley_ZwischenZiel + T "MW196" // übergeben + L 0 // Erst mal nullen + T "MW198" // Weichenziel + + UC DB[ZielFC] // Beeinflussung der Weiterfahrt + + L 16#B122 + T Dyn.Stop_Ursache + +// Spezial-Fall bei Übergabe an Sorter / Turm (M180.6 wird nie im Ziel-FC gesetzt!) +// aber anderer Partner hat Schleuse extern geöffnet: + A "Schleuse_geöffnet" + AN "M180.6" // Weiterfahrt von Ziel-FC erlaubt + AN Status2."TrolleyPos_übergeben" // Nur einmalig + S Status2."TrolleyPos_übergeben" + JCN Normal // Negierter Sprung + + L Dyn.Vereinzelungstakte + + DINT#1 // Vereinzelungen +1 + T Dyn.Vereinzelungstakte + +CALL FC "Trolley_DL_Neue_Pos" (Gesamt_Trolley_DL:=Schleuse.Gesamt_Trolley_DL, TrolleyID:=Dyn.TrolleyID_Schleuse, Position:=Schleuse.Leser_ID, ShopGroup:=Dint#0, Err:="M199.0") + +// Draussen-FC ?: + AN DraussenFC_vorhanden + JC RET // Bei diesem Schritt weiter + + L Schleusen_Nr // Schleusen-Nr. + T "MW190" + + UC DB[DraussenFC] // z.Bsp. Daten anpassen + + JU RET + +Normal: A "M180.6" // Weiterfahrt von Ziel-FC erlaubt + JC X012 + + AN Schleuse.Parameter_allg.Leser_eingebaut + JC RET + + L 11 + T Dyn.Sk.Neu_Schritt // Schritt, der im nächsten Zyklus aktiv werden soll + + JU RET + +X012: L "MW196" // zurückschreiben, falls verändert + T Dyn.Trolley_ZwischenZiel + + L "MW198" // Weichenziel übergeben + T Dyn.Weichen_Ziel + + L 13 // Weiter mit Schritt 13 + JU Neu_Mig // Bei diesem Schritt weiter + + +--- NW 38: Schritt 13: Schleusen-Position zurückschreiben --- +s013: NOP 0 + +// Schrittaktionen: + SET + S Status2."Weichen-Schritt" + +// Neue Position an Gesamt-Trolley-DL übergeben: +CALL FC "Trolley_DL_Neue_Pos" (Gesamt_Trolley_DL:=Schleuse.Gesamt_Trolley_DL, TrolleyID:=Dyn.TrolleyID_Schleuse, Position:=Schleuse.Leser_ID, ShopGroup:=DINT#0, Err:="M199.0") // für nichts verändern + + L 0 // Angabe der Wartezeit (*10ms) + JU Plus // Nächsten Schritt starten + + +--- NW 39: Schritt 14: Weichenbereich +1 vorhanden --- +s014: NOP 0 + +// Schrittaktionen: +// Weichenbereich +1 vorhanden?: + A "Kein_Weichenbereich +1" + L 2 // Weiter mit Schritt 2 (Ausfahren ok?) + JC Neu_Mig // Bei diesem Schritt weiter + + SET + S Status2."Weichen-Schritt" + R Dyn.Status.Weiche_geschaltet + R Dyn.Status."Trolley ausserhalb Weiche" + + L 0 // Angabe der Wartezeit (*10ms) + JU Plus // Nächsten Schritt starten + + +--- NW 40: Schritt 15: Weichenbereich raus bereit ? --- +s015: NOP 0 + +// Schrittaktionen: + SET + S Status2."Weichen-Schritt" + + L Dyn.Weichen_Ziel + L 0 // Bekannt ? + <>I // Ja ! + JC X15A + + L 12 // Ziel-FC ? + T Dyn.Sk.Neu_Schritt // Schritt, der im nächsten Zyklus aktiv werden soll + + L 16#B154 + T Dyn.Stop_Ursache + + JU RET + +X15A: SET + S Dyn.Status."Trolley_wartet_auf_Weiche+1" + + L 16#B155 + T Dyn.Stop_Ursache + + L SAVE.Weichen_DB // Weichen-DB + L 0 // Einsprung-Zeiger bekannt ? + >I // Ja ! + JC S015A + + L 16#B150 + T Dyn.Stop_Ursache + + JU RET + +// Weichendaten auslesen: +S015A: L SAVE.Weichen_DW + ITD + T AR1Start // Startwert mit Offset 0 + + L AR1Start // Startwert mit Offset 0 + + DINT#70 + SLD 3 + L 0 // Damit DBX70.0 + OD + T AR1Zeiger // Statt Dyn.Bereichsstop (ging nur bis DB-Länge <= 8191 Bytes) + + L 16#B152 + T Dyn.Stop_Ursache + + OPN DB[SAVE.Weichen_DB] // FABE+ -DB öffnen + + AN DBX [AR1Zeiger] // Weichenbereich frei ? (DBX70.0) + O Dyn.Status.Weiche_geschaltet // Rückmeldungen noch aktiv! + O Dyn.Status."Trolley ausserhalb Weiche" + JC S015B + + L 16 // Weiter mit Schritt 16 (Daten an Weiche übergeben) + JU Neu_Mig // Bei diesem Schritt weiter + +// Reservierung schon erfolgt ?: +S015B: SET + R Dyn.Status.Weiche_geschaltet + R Dyn.Status."Trolley ausserhalb Weiche" + + L AR1Start // Startwert mit Offset 0 + + DINT#78 + SLD 3 + T AR1Zeiger // Statt Dyn.Bereichsstop (ging nur bis DB-Länge <= 8191 Bytes) + + OPN DB[SAVE.Weichen_DB] // FABE+ -DB öffnen + + L DBW [AR1Zeiger] // Schleuse -1 (DBW 78) + L Schleusen_Nr // Diese Schleuse ? + <>I // Nein ! -> Ok + JC RET + +// Reservierung löschen: + OPN DB[SAVE.Weichen_DB] // FABE+ -DB öffnen + + L 0 + T DBW [AR1Zeiger] // Schleuse -1 (DBW 78) + + JU RET + + +--- NW 41: Schritt 16: Daten an Rausweiche übergeben --- +s016: NOP 0 + +// Schrittaktionen: + SET + S Status2."Weichen-Schritt" + +// Daten für Eintrag vorbereiten: + OPN DB[SAVE.Weichen_DB] // FABE+ -DB öffnen + + L AR1Start // Startwert mit Offset 0 + + DINT#72 + SLD 3 + T AR1Zeiger // Statt Dyn.Bereichsstop (ging nur bis DB-Länge <= 8191 Bytes) + + L Dyn.TrolleyID_Schleuse + T DBD [AR1Zeiger] // Trolley-ID (DBD 72) + L DINT#0 + <>D + JC X16A + + L 0 // Damit sichtbar + T DBD [AR1Zeiger] // Trolley-ID (DBD 72) + +X16A: L AR1Start // Startwert mit Offset 0 + + DINT#76 + SLD 3 + T AR1Zeiger // Statt Dyn.Bereichsstop (ging nur bis DB-Länge <= 8191 Bytes) + + L Dyn.Weichen_Ziel + T DBW [AR1Zeiger] // Weichenziel (DBW 76) + + L AR1Start // Startwert mit Offset 0 + + DINT#80 + SLD 3 + T AR1Zeiger // Statt Dyn.Bereichsstop (ging nur bis DB-Länge <= 8191 Bytes) + + L Dyn.Trolley_ZwischenZiel + T DBW [AR1Zeiger] // Zwischenziel (DBW 80) + + L AR1Start // Startwert mit Offset 0 + + DINT#78 + SLD 3 + T AR1Zeiger // Statt Dyn.Bereichsstop (ging nur bis DB-Länge <= 8191 Bytes) + + L Schleusen_Nr + T DBW [AR1Zeiger] // Schleuse -1 (DBW 78) + + SET + S "Reservierung_Weiche+1_aktiv" // Weiche nicht mehr angemeldet (da erst im nächsten Zyklus) + + L Schleuse.RausWeichen_Nr // Nr. der vorhandenen Weiche + T SAVE."Weiche+1" // Hier wurde reserviert + + L 17 // Weiter mit Schritt 17 (Hat Weiche geschaltet ?) + JU Neu_Mig // Bei diesem Schritt weiter + + +--- NW 42: Schritt 17: Hat Rausweiche geschaltet ? --- +s017: NOP 0 + +// Schrittaktionen: + SET + S Status2."Weichen-Schritt" + +// Weiche +1 noch mit dieser Schleuse aktiv ?: + AN "Reservierung_Weiche+1_aktiv" // Weiche nicht mehr angemeldet + L 14 // Weiter mit Schritt 14 + JC Neu_Mig // Bei diesem Schritt weiter + + SET + S Dyn.Status."Trolley_wartet_auf_Weiche+1" + + L 16#B170 + T Dyn.Stop_Ursache + + A Dyn.Status."Trolley ausserhalb Weiche" // Rückmeldung von Weiche +1 + JC RET + + A Dyn.Status.Weiche_geschaltet // Rückmeldung von Weiche +1 + L 2 // Weiter mit Schritt 2 (Ausfahren ok?) + JC Neu_Mig // Bei diesem Schritt weiter + + L 16#B171 + T Dyn.Stop_Ursache + + JU RET + + +--- NW 43: Schritt 20: Schleuse resetten (Wartezeit) --- +s020: A B_InSchleuse // Weiterschaltbedingung + = Weiter // Weiterschaltbedingung ist erfüllt + +// Schrittaktionen: + SET // ELS in Grundstellung fahren + S Antrieb_Schleuse_vor // Antrieb einschalten + S Antrieb_Schleuse_start // Antrieb starten + + A Weiter + O Dyn.Sk.Err_Uebzeit + R Dyn.Sk.Err_Uebzeit // Sofort weiter ! + L 21 // Weiter mit Schritt 21 + JC Neu_Mig // Bei diesem Schritt weiter + + L 16#B201 + T Dyn.Stop_Ursache + + SET + = Ueb_akt // Überwachungszeit aktivieren + L Schleuse.Wartezeit_bis_leer // Angabe der Überwachungszeit (*1s) + L 60 + JU tueb // Überwachungszeit + + +--- NW 44: Schritt 21: Reset ist zu Ende --- +s021: SET + R Dyn.Sk.Reset_Akt // Reset ist aktiv + R Status2."Warten_3.V" + R Status2."TrolleyPos_übergeben" + R Dyn.Error.Err_Trolley_nicht_in_Schleuse // Trolley fährt nicht in Schleuse + R Dyn.Error.Err_Uebzeit // Überwachungzeit ist abgelaufen + R Dyn.Error.Err_Stau_Einfahrt // Betriebsart ist nicht möglich + R Dyn.Error.Err_Trolley_raus // Trolley fährt nicht aus + R Dyn.Status."Trolley_fährt_in_Schleuse" + + L 0 + T SAVE.Weichen_DB + T SAVE.Weichen_DW + T SAVE."Weiche+1" // Dadurch wird in Weiche Reservierung gelöscht + T Schleuse.Schleusen_Nr // Damit stat. Daten neu geholt werden! + + SET + S Dyn.Status.Trolley_draussen + + JU ENDE_Mig // Neubeginn + + +--- NW 45: Schrittkette beenden --- +ENDE_Mig: L 0 // Schritt 0: Warten + T Dyn.Sk.Akt_Schritt + + L 0 // Zeitwert löschen + T Dyn.Sk.Terr_Zelle + T Dyn.Sk.Tok_Zelle + T Dyn.ZwischenZiel_eingefahren + + L DINT#0 + T Dyn.TrolleyID_Eingefahren // Eintrag von Weiche -1 + T Dyn.TrolleyID_Schleuse // Daten übergeben + T Dyn.Trolley_ZwischenZiel + T Dyn.Trolley_EndZiel + T Dyn.Weichen_Ziel + + SET + R Dyn.Sk.Err_Uebzeit + R Dyn.Status.Weiche_geschaltet + R Dyn.Status."Trolley ausserhalb Weiche" + R Dyn.Status."Trolley_fährt_rückwärts" + R Status2."Warten_3.V" + R Dyn.Error.Err_Kein_LeseErgebnis + R Status2."2.Lesung_aktiv" + R Status2."3.Lesung_aktiv" + R Status2."TrolleyPos_übergeben" + R Status2.Telegramm_gesendet + +// HMI-Zeug: + L DINT#0 + T Dyn.HMI.TrolleyID_Input + + JU RET + + +--- NW 46: Nächsten Schritt aktivieren --- +Plus: T Dyn.Sk.T_ok // Wartezeit übergeben + + A Dyn.Sk.Err_Uebzeit // Störung noch nicht quittiert + JC RET + + L 0 // keine Wartezeit ? + ==I // Ja ! -> sofort weiter + JC w220 + + AN Warte_neu // Wartezeit neutriggern + JC W220_Mig + + L 0 + T Dyn.Sk.Tok_Zelle // Wartezeit + +W220_Mig: A Warte_stop // Wartezeit stoppen + JC RET + + L Dyn.Sk.Tok_Zelle + L "MW4" // Wartezeit +10ms + +I + T Dyn.Sk.Tok_Zelle // Wartezeit + L Dyn.Sk.T_ok // abgelaufen ? + I // abgelaufen ? + AN Dyn.Sk.Err_Uebzeit + JC en24 // Nein ! + + A Ueb_akt // Überwachungszeit aktivieren + S Dyn.Sk.Err_Uebzeit + + L 0 // Zeitwert löschen + T Dyn.Sk.Terr_Zelle + + JU RET + +en24: NOP 0 + +--- NW 48: Überwachungszeit +1 --- + AN Dyn.Sk.Ueb_akt // Schrittaktion ist aktiv + ON "1s-Impuls" + JC RET + + L Dyn.Sk.Terr_Zelle + + 1 // Üb.zeit +1s + T Dyn.Sk.Terr_Zelle + + JU RET + + +--- NW 49: Return --- +RET: NOP 0 + + +--- NW 50: Leser-Einheit managen (Outputs schreiben) --- + AN Leser_Zugriff + ON Schleuse.Parameter_allg.Leser_eingebaut + JC NixLeser + +// Leserdaten schreiben: + OPN DB[Dyn.SAVE2.Leser_DB] // Leser -DB öffnen + + L Dyn.SAVE2.Leser_DD + T AR1Start // Startwert mit Offset 0 + +// Offset 4: + L AR1Start // Startwert mit Offset 0 + + DINT#4 + SLD 3 + T AR1Zeiger // Statt Dyn.Bereichsstop (ging nur bis DB-Länge <= 8191 Bytes) + + L DBB [AR1Zeiger] // Aktuelle Werte holen + T "MB200" + + A Dyn.Leser.OUT.xInStartReading + = "M200.1" + A Dyn.Leser.OUT.xInHandshakeDone + R Dyn.Leser.OUT.xInHandshakeDone + = "M200.2" + A Dyn.Leser.OUT.xInErrQuit + R Dyn.Leser.OUT.xInErrQuit + = "M200.4" + A Dyn.Leser.OUT.xInReset + R Dyn.Leser.OUT.xInReset + = "M200.5" + + L "MB200" + T DBB [AR1Zeiger] // Veränderte Werte zurück schreiben + +NixLeser: NOP 0 + + +--- NW 51: Ende --- + BE + diff --git a/=A01+UH07-KF00/Programmbausteine/Module/MHMOmniSchleuse_Plus.awl b/=A01+UH07-KF00/Programmbausteine/Module/MHMOmniSchleuse_Plus.awl new file mode 100644 index 0000000..091fe02 --- /dev/null +++ b/=A01+UH07-KF00/Programmbausteine/Module/MHMOmniSchleuse_Plus.awl @@ -0,0 +1,2338 @@ +=== FB 1275: MHMOmniSchleuse_Plus [STL] === +INTERFACE: + Input: + Schleusen_Nr : Int // Aufruf für Schleuse + ErrQuit : Bool // Ablaufstörung quittieren + B_VorSchleuse : Bool // Sensor Trolley fährt in Bereich + B_InSchleuse : Bool // Sensor Trolley ist in Schleuse + B_Zähl : Bool // Sensor Trolley ist imnächsten Bereich + B_Stau_raus : Bool // Sensor Stau im Bereich rausfahren + Start_Ok : Bool // Starten ist erlauTrolley + Antrieb_Schleuse_aktiv : Bool // Kreisel-Antrieb aktiv + Antrieb_plus_aktiv : Bool // Kreisel-Antrieb plus aktiv + Schleuse_geöffnet : Bool // Schleuse hat geöffnet + RestZeit_Bereich_plus : Int := 999 // Bereich +1: Restzeit bis AFS stoppt (s) + Output: + Y_Schleuse_Auf : Bool // Schleuse öffnen + Error : Word // Störungen übergeben + InOut: + Antrieb_Schleuse_vor : Bool // Schleusen-Antrieb einschalten + Antrieb_Schleuse_start : Bool // Schleusen-Antrieb mit Zeit starten + Antrieb_Schleuse_stop : Bool // Schleusen-Antrieb stoppen + Antrieb_Schleuse_PS : Bool // Schleusen-Antrieb Energie sparen + Antrieb_plus_vor : Bool // Antrieb plus einschalten + Antrieb_plus_start : Bool // Antrieb plus mit Zeit starten + hStOk : Bool // Anzeige Start n. Störung aktivieren + Static: + SAVE : Struct + Weichen_DB : Int // Weichen-FIFO-DB + Weichen_DW : Int // Weichen-FIFO-DW + Weiche+1 : Int // Weiche +1, wo reserviert wurde + Frei18 : Int + Frei20 : Int + Para : Struct // Parameter + Schleusen_DL_DB : Int // Einsprung Schleuse-Datenliste-DB + Weichen_DL_DB : Int // Einsprung Weichen-Datenliste-DB + Leser_DL_DB : Int // Einsprung Weichen-Datenliste-DB + Status2 : Struct + Trolley_an_Schleuse : Bool // Trolley ist an Schleuse + 2.Lesung_aktiv : Bool // 2.Lesung erfolgt + 3.Lesung_aktiv : Bool // 3.Lesung erfolgt + TrolleyPos_übergeben : Bool // Trolley-Pos. übergeben + Warten_4.V : Bool // Warten auf 4.V + Weichen-Schritt : Bool // Schritt 13-17 aktiv (Weiche evtl. belegen) + Trolley an Raus-Sensor : Bool // Trolley ist am Raus-Sensor + Stau_an_Raus-Sensor : Bool // Stau an Raus-Sensor (kein Zählen mehr) + Einfahrzeit_lernen : Bool // Ausfahrzeit lernen + Telegramm_gesendet : Bool // Telegramm wurde in Send-FIFO eingetragen + Schleuse : "UDLHMOmniSchleuse_Plus" // Statische Schleusendaten (aus DL) + Dyn : Struct // Dynamische Daten + Status : Struct + Trolley_fährt_in_Schleuse : Bool // Trolley fährt in Schleuse + Trolley_wartet_Lesung : Bool // Trolley wartet auf Auftrag + Trolley_wartet_auf_Ziel-FC : Bool + Trolley_wartet_auf_Weiche+1 : Bool + Trolley_wartet_Bereich+1 : Bool // Trolley wartet auf Bereich +1 + Trolley_fährt_aus : Bool // Trolley fährt aus + MindestZeit_ok : Bool // Schleuse ist MindestZeit geöffnet + Trolley_draussen : Bool // Trolley ist ausgefahren + Leser_triggern : Bool + SF_angefordert : Bool + Kein_Stop_mehr : Bool // Kein Stop mehr, Antrieb soll starten + Trolley_fährt_rückwärts : Bool // Trolley in Schleuse rückwärts erkannt + Weiche_geschaltet : Bool + Trolley ausserhalb Weiche : Bool // Trolley hat Weiche verlassen (von Weiche) + Error_aktiv : Bool // Störung vorhanden + Reset_aktiv : Bool := TRUE // Reset aktiv + TrolleyID_Schleuse : DInt // Trolley-Nr in der Schleuse + Trolley_EndZiel : Word // Trolley-EndZiel + Trolley_ZwischenZiel : Word // Trolley-ZwischenZiel + Trolley_ShopGroup : DInt // Trolley-ShopGroup + Weichen_Ziel : Word // Weichen-Ziel (Für WeichenModul von Ziel-FC) + TrolleyID_Eingefahren : DInt // Trolley-Nr von Bereich -1 gemeldet + TrolleyID_ausgefahren : DInt // TrolleyID des ausgefahrenen Trolleys + HMI : Struct + TrolleyID_in_Schleuse : DInt // Trolley-Nr in Schleuse (IN:PLC, OUT:PLC) + TrolleyID_Input : DInt // Trolley-Nr Input (IN:HMI, OUT:PLC) + Schleuse_resetten : Bool // Schleuse resetten (IN:HMI, Out:PLC) + Sk : "USk_ILS" // Status der Schrittkette + Leser : Struct + IN : Struct + xOutReadyForNewScan : Bool // DBX10.1: Reader ist bereit für Leseanforderung + xOutReadingDone : Bool // DBX10.0: Lesevorgang abgeschlossen / Handshake raus + xOutCodeGood : Bool // DBX278.0: Gute Lesung + xOutCodeBad : Bool // DBX278.1: Schlechte Lesung + nOutBarcode : DInt // DBD12: Trolley ID + OUT : Struct + xInStartReading : Bool // DBX4.1: Starte Lesevorgang + xInHandshakeDone : Bool // DBX4.2: Handshake Daten abgeholt + xInErrQuit : Bool // DBX4.4: Fehler rücksetzen + xInReset : Bool // DBX4.5: Allgemeines Rücksetzen des Bausteins + TrolleyID_unbekannt_Schleuse : DInt // TrolleyID unbekannt (Trolley in Schleuse) + Rueckmld : Struct + RET_VAL_BLKMOV_Schleuse : Int // Rückmeldung nach BLKMOV-Aufruf + RET_VAL_DL_Schleuse : Byte + RET_VAL_DL_Weiche : Byte // Rückmeldung nach DatenOut-Aufruf + RET_VAL_DL_Leser : Byte // Rückmeldung nach DatenOut-Aufruf + Error : "UErrHMOmniSchleuse" + Stau_Zeit : Int // Sensor B_VorSep ist belegt [1s] + Mindest_Zeit : Int // Sensor B_VorSep ist frei [1s] + Leer_Zeit : Int + Stop_Ursache : Word // Stop-Stelle: Nw + Position + Vereinzelungstakte : DInt // Anzahl der getätigten Vereinzelungstakte + ZwischenZiel_eingefahren : Word // Trolley-ZwischenZiel von Bereich -1 + Zeit_Ohne_B_In_Schleuse : Int // Trolley nicht an B_In_Schleuse + Zeit_Ohne_B_Zähl : Int // Trolley nicht an B_Zähl + Zeit_Ausfahren_Ohne_B_Zähl : Int // Trolley fährt nicht zu B_Zähl + Raus_Trolleys : Int // Anzahl der Trolleys zwischen Schleuse und Raus-Sensor + Stau_Zeit_RausSensor : Int // Sensor B_AusSep ist belegt [1s] + Zurück_gemeldetes_Weichen_Ziel : Word // Von Weiche zurück gemeldetes Weichen-Ziel + SAVE2 : Struct + Leser_DB : Int // Weichen-FIFO-DB + Leser_DD : DInt // Weichen-FIFO-DD + WarteZeit_PS : Int + Restzeit_bis_Schleuse : Int + Res200 : Array[1..11] of Int // Reserve + Temp: + Quelle : Any // Zeiger, wo Rein-Daten sind + Ueb_akt : Bool // Überwachungszeit aktivieren + Weiter : Bool // Weiterschaltbedingung ist erfüllt + Warte_neu : Bool // Wartezeit neu triggern + Warte_stop : Bool // Wartezeit stoppen + Kein_Weichenbereich +1 : Bool + Reservierung_Weiche+1_aktiv : Bool + Leser_Zugriff : Bool // Leser-Zugriff vorhanden + LeserFC_vorhanden : Bool + ZielFC_vorhanden : Bool + DraussenFC_vorhanden : Bool + TrolleyID_Bereich-1 : Bool // Trolley--ID von Bereich -1 gemeldet + Trolley_draussen : Bool // Signal: Trolley ist draussen + Antriebe_starten : Bool + Einfahrzeit_nicht_bekannt : Bool + LeserFC : Word // Ziel-FC + ZielFC : Word // Ziel-FC + DraussenFC : Word // Draussen-FC + AR1Start : DInt // Startwert mit Offset 0 + AR1Zeiger : DWord // Statt AR1 (ging nur bis DB-Länge <= 8191 Bytes) + Constant: + +--- NW 1: Parameter-Übergabe --- + L Schleusen_Nr + + L 274 // Einsprung Schleuse-DL + T Para.Schleusen_DL_DB // vor Aufruf übergeben! + + L 279 // Einsprung Weichen-DL + T Para.Weichen_DL_DB // vor Aufruf übergeben! + + L 273 + T Para.Leser_DL_DB + + +--- NW 2: Anzeige OP --- + A ErrQuit // Überwachungszeit abgelaufen quittieren + R Dyn.Sk.Err_Uebzeit + + L 252 // Bereichsstop aktiv + AN Dyn.Sk.Bereich_ok // Also: Bereichsstop / Not-Aus + JC w010 + + L 253 + AN Dyn.Sk.Auto_akt // Keine Betriebsart + AN Dyn.Sk.Hand_akt + JC w010 + + L 255 // Handbetrieb aktiv + A Dyn.Sk.Hand_akt + JC w010 + + L Dyn.Sk.Akt_Schritt // Aktiver Schritt +w010: T Dyn.Sk.OP_Schritt + + +--- NW 3: Out-Bits zum Zurücksetzen --- + SET + R Y_Schleuse_Auf + + SET // Jeden Zyklus neu + R Dyn.Status.Trolley_wartet_Lesung + R Dyn.Status."Trolley_wartet_auf_Ziel-FC" + R Dyn.Status."Trolley_wartet_auf_Weiche+1" + R Dyn.Status."Trolley_wartet_Bereich+1" + R Dyn.Status."Trolley_fährt_aus" + R Dyn.Status.Trolley_draussen + R Leser_Zugriff + R Status2."Weichen-Schritt" + + A Dyn.Sk.Reset_Akt + = Dyn.Status.Reset_aktiv + + +--- NW 4: HMI-Zeug --- +// Von HMI: + A Dyn.HMI.Schleuse_resetten + R Dyn.HMI.Schleuse_resetten // von HMI + S Dyn.Sk.Reset // SK zurücksetzen + + L Dyn.HMI.TrolleyID_Input // Wird direkt im Programm verwertet (s.u.) + +// An HMI: +ToHMI: L Dyn.TrolleyID_Schleuse + T Dyn.HMI.TrolleyID_in_Schleuse + + +--- NW 5: Schrittkette zurücksetzen --- + A ErrQuit // Überwachungszeit abgelaufen quittieren + R Dyn.Sk.Err_Uebzeit + + AN Dyn.Sk.Reset // SK zurücksetzen + JC en04 + +// Schrittkette zurücksetzen: + L 0 // Schritt 0: Warten + T Dyn.Sk.Akt_Schritt + T Dyn.Raus_Trolleys + + L 0 // Zeitwert löschen + T Dyn.Sk.Terr_Zelle + T Dyn.Sk.Tok_Zelle + + SET + R Dyn.Error.Err_BLKMov // Error bei Block kopieren + R Dyn.Sk.Reset // SK zurücksetzen + R Dyn.Sk.Err_Schritt // Undefinierter Schritt + R Dyn.Sk.Err_Uebzeit // Sofort weiter ! + R Status2.Telegramm_gesendet + S Dyn.Sk.Reset_Akt // Reset ist aktiv + + SET + R Dyn.Error.Schleuse_DL // Schleuse-Datenliste fehlerhaft + R Dyn.Error.Undef_Schleuse // undefinierter Schleuse + R Dyn.Error.Err_Trolley_nicht_in_Schleuse // Trolley fährt nicht in Schleuse + R Dyn.Error.Err_Uebzeit // Überwachungzeit ist abgelaufen + R Dyn.Error.Err_Schritt // Schritt-Nummer ist nicht definiert + R Dyn.Error.Err_Stau_Einfahrt + R Dyn.Error.Err_BLKMov + R Dyn.Error.Err_Trolley_raus // Trolley fährt nicht aus + R Dyn.Error.Err_Raus_Sensor // Raus-/Belade-Sensor wird nicht erreicht (oder dauernd aktiv)! + R Dyn.Error.Err_Ziel // kein Ziel angegeben + R Dyn.Error.Err_Weichen_DL // Weichen-Datenliste fehlerhaft + R Dyn.Error.Err_Undef_Weiche // undefinierte Weiche + R Dyn.Error.Err_Weiche_belegt // Weiche bleibt belegt + R Dyn.Error.Err_Kein_LeseErgebnis + R Dyn.Error.Err_Leser_nicht_bereit + + L 0 + T Dyn.SAVE2.Leser_DB + L DINT#0 + T Dyn.SAVE2.Leser_DD + T Dyn.Leser.IN.nOutBarcode + +// Defaultwerte übergeben: + L 0 // Damit statische Werte neu aus Datenbank geholt werden ! + T Schleuse.Schleusen_Nr // Nummer des Schleuses + + JU RET + +en04: NOP 0 + + +--- NW 6: Störungen nach Außen übergeben --- + L 0 + T "MW200" + + A Dyn.Error.Schleuse_DL // Schleuse-Datenliste fehlerhaft + = "M200.0" + A Dyn.Error.Undef_Schleuse // undefinierter Schleuse + = "M200.1" + A Dyn.Error.Err_Trolley_nicht_in_Schleuse // Trolley fährt nicht in Schleuse + = "M200.2" + A Dyn.Sk.Err_Uebzeit + = Dyn.Error.Err_Uebzeit // Überwachungzeit ist abgelaufen + = "M200.3" + NEG + R Dyn.Sk.Err_Uebzeit_AnzOk + A Dyn.Sk.Err_Schritt + = Dyn.Error.Err_Schritt // Schritt-Nummer ist nicht definiert + = "M200.4" + A Dyn.Error.Err_Stau_Einfahrt + AN B_InSchleuse + AN Y_Schleuse_Auf + = "M200.5" + A Dyn.Error.Err_BLKMov // Error bei Block kopieren + = "M200.6" + A Dyn.Error.Err_Trolley_raus // Trolley fährt nicht aus + = "M200.7" + A Dyn.Error.Err_Raus_Sensor // Raus-/Belade-Sensor wird nicht erreicht (oder dauernd aktiv)! + = "M201.0" + A Dyn.Error.Err_Ziel // Trolley-Ziel nicht bekannt + = "M201.1" + A Dyn.Error.Err_Weichen_DL // Weichen-Datenliste fehlerhaft + = "M201.2" + A Dyn.Error.Err_Undef_Weiche // undefinierte Weiche + = "M201.3" + A Dyn.Error.Err_Weiche_belegt // Weiche bleibt belegt + = "M201.4" + A Dyn.Error.Err_Kein_LeseErgebnis + = "M201.5" + A Dyn.Error.Err_Leser_nicht_bereit + = "M201.6" + A Dyn.Error.Barcode_nicht_bekannt + = "M201.7" + +// Andere Meldung als Überwachungszeit aktiv ?: + L "MW200" + L 2#1111_0111_1111_1111 + AW + L 2#0000_0000_0000_0000 // Andere Meldung als Üb.zeit aktiv ? + <>I // Ja ! + ON Dyn.Sk.Err_Uebzeit_AnzOk // Störung anzeigen ok, da 2.Zyklus aktiv ! + R "M200.3" // Üb.Zeit-Meldung nicht an PC senden + + A Dyn.Sk.Err_Uebzeit + S Dyn.Sk.Err_Uebzeit_AnzOk // Störung anzeigen ok, da 2.Zyklus aktiv ! + + L "MW200" + T Error // Schnittstelle nach Außen + +// Störung vorhanden: + L 0 + <>I // Ja ! + = Dyn.Status.Error_aktiv + S hStOk + +// Antrieb stoppen: + A( + ON Dyn.Sk.Auto_akt // SystemVoraussetzungen fehlen + O Dyn.Sk.Hand_akt + ON Dyn.Sk.Bereich_ok + ) + S Antrieb_Schleuse_stop // Antrieb stoppen + +// Störungen pro Zyklus neu erzeugen: + SET + R Dyn.Error.Schleuse_DL // Schleuse-Datenliste fehlerhaft + R Dyn.Error.Undef_Schleuse // undefinierter Schleuse +// / R #Dyn.Error.Err_Trolley_nicht_in_Schleuse//Trolley fährt nicht in Schleuse +// / R #Dyn.Error.Err_Uebzeit //Überwachungzeit ist abgelaufen + R Dyn.Error.Err_Schritt // Schritt-Nummer ist nicht definiert +// / R #Dyn.Error.Err_Stau_Einfahrt//Betriebsart ist nicht möglich + R Dyn.Error.Err_BLKMov +// / R #Dyn.Error.Err_Trolley_raus//Trolley fährt nicht aus +// / R #Dyn.Error.Err_Raus_Sensor//Raus-/Belade-Sensor wird nicht erreicht (oder dauernd aktiv)! + R Dyn.Error.Err_Ziel // Trolley-Ziel nicht bekannt + R Dyn.Error.Err_Weichen_DL // Weichen-Datenliste fehlerhaft + R Dyn.Error.Err_Undef_Weiche // undefinierte Weiche + R Dyn.Error.Err_Weiche_belegt // Weiche bleibt belegt +// / R #Dyn.Error.Err_Kein_LeseErgebnis +// / R #Dyn.Error.Err_Leser_nicht_bereit + R Dyn.Error.Barcode_nicht_bekannt + + AN Dyn.Sk.Err_Uebzeit + R Dyn.Error.Err_Trolley_nicht_in_Schleuse // Trolley fährt nicht in Schleuse + R Dyn.Error.Err_Trolley_raus // Trolley fährt nicht aus + + +--- NW 7: Statische Schleuse-Parameter holen --- + L Schleuse.Schleusen_Nr // Nummer des Schleuses + L Schleusen_Nr // Aufruf-Parameter + ==I // Identisch ? + R Dyn.Error.Schleuse_DL // Schleusedatenbank fehlerhaft + R Dyn.Error.Undef_Schleuse // undefinierter Schleuse + JC en06 // Ja ! + + T "MW200" // Search-Daten + +CALL FC "DatenOut" (SSDB:=Para.Schleusen_DL_DB, SSDW:=0, PARA:=WORD#16#0000, SEARCHDATEN:=P#M200.0, RE_VAL:="MB199", OUTDATEN:=P#M220.0, Position:="MW196") + + L "MB199" + T Dyn.Rueckmld.RET_VAL_DL_Schleuse // Rückmeldung bei Datenbank-Zugriff (Gefälle-DL) + + JBI G_Ok + + A "M199.0" + JCN w060 + + SET + = Dyn.Error.Schleuse_DL // Schleusedatenbank fehlerhaft + + L 16#A061 + T Dyn.Stop_Ursache + + JU RET + +w060: SET + S Dyn.Error.Undef_Schleuse // undefinierter Schleuse + + L 16#A062 + T Dyn.Stop_Ursache + + JU RET + +// Kennung + Datenbytes +G_Ok: SET + R Dyn.Error.Schleuse_DL // Gefälledatenbank fehlerhaft + R Dyn.Error.Undef_Schleuse // undefinierte Gefällestrecke + + L 16#1004 // Kennung 10 + Word=04 + T LW0 // Any-Kennung, Datentyp + L 20 // Datenwords speichern + T LW2 // Wiederholungen + +// Quelle-Pointer erzeugen: + L 0 // Bei Merker = 0 ! + T LW4 // DB_Nummer + L 220 // Adresse + SLD 3 + L 16#8300_0000 // Kennung: Merker + OD + T LD6 // Kennung, Adresse + +CALL SYS "BLKMOV" (SRCBLK:=Quelle, RET_VAL:=Dyn.Rueckmld.RET_VAL_BLKMOV_Schleuse, DSTBLK:=Schleuse) // Datenliste-Daten speichern | #Ziel + + L 16#A063 + T Dyn.Stop_Ursache + + L Dyn.Rueckmld.RET_VAL_BLKMOV_Schleuse // Rückmeldung + L 0 // Fehler vorhanden ? + <>I // Ja ! + = Dyn.Error.Err_BLKMov // Error bei Block kopieren + JC RET + + L Schleuse.Schleusen_Typ // Schleusetyp = 1275 (HM-Schleuse Plus) + L 1275 // Dieser Aufruf-FB ? + ==I // Ja ! + JC w061 + + SET + S Dyn.Error.Undef_Schleuse // undefinierter Schleuse + + L 0 // Schleuse ungültig ! + T Schleuse.Schleusen_Nr // Nummer des Schleuses + + L 16#A064 + T Dyn.Stop_Ursache + + JU RET + +// Defaultwerte übergeben: +w061: NOP 0 + + JU RET + +en06: NOP 0 + + +--- NW 8: Einsprung Weiche plus ermitteln --- + L SAVE.Weichen_DB // Weichen-FIFO-DB + L 0 // Einsprung-Zeiger bekannt ? + >I // Ja ! + R "Kein_Weichenbereich +1" + JC En08 + + L Schleuse.RausWeichen_Nr // Nr. der vorhandenen Weiche + T "MW200" // Search-Daten + L 0 // angegeben ? + ==I // Nein ! + = "Kein_Weichenbereich +1" + R Dyn.Error.Err_Undef_Weiche // undefinierte Weiche + JC En08 + +CALL FC "DatenOut" (SSDB:=Para.Weichen_DL_DB, SSDW:=0, PARA:=WORD#16#0000, SEARCHDATEN:=P#M200.0, RE_VAL:="MB199", OUTDATEN:=P#M220.0, Position:="MW196") + + L "MB199" + T Dyn.Rueckmld.RET_VAL_DL_Weiche // Rückmeldung bei Datenbank-Zugriff (Weiche-DL) + + JBI W_Ok + + A "M199.0" + = Dyn.Error.Err_Weichen_DL // Weichen-Datenliste fehlerhaft + JC En08 + + SET + S Dyn.Error.Err_Undef_Weiche // undefinierte Weiche + + JU En08 + +W_Ok: L "MW224" + T SAVE.Weichen_DB // Weichen-FIFO-DB + L 0 // sinnvoller Wert ? + <=I // Nein ! + S Dyn.Error.Err_Undef_Weiche // undefinierte Weiche + JC En08 + + L "MW226" + T SAVE.Weichen_DW // Weichen-FIFO-DW + +En08: NOP 0 + + +--- NW 9: Trolley in Schleuse entprellen --- + A B_InSchleuse + JC B_ok + + AN Status2.Trolley_an_Schleuse + ON "1s-Impuls" + JC Xn08 + + L Dyn.Zeit_Ohne_B_In_Schleuse + + 1 // Zeit ohne Sensor +1s + T Dyn.Zeit_Ohne_B_In_Schleuse + + L 3 // Nach ca. 3s + I // Ja! + AN Status2."Stau_an_Raus-Sensor" // Stau an Raus-Sensor + O + A B_VorSchleuse // // + AN Dyn.Error.Err_Stau_Einfahrt // // + O "Schleuse_geöffnet" + = Antriebe_starten + + A Antriebe_starten +// / UN #Dyn.Error.Err_Trolley_raus//Trolley fährt nicht aus + A( + O Dyn.Status.Weiche_geschaltet // Weiche ist aktiv + O "Kein_Weichenbereich +1" + ) + A Schleuse.Parameter_allg.Antrieb_Plus_vorhanden + S Antrieb_plus_vor // Antrieb plus einschalten + + A Antriebe_starten +// / UN #Dyn.Error.Err_Trolley_raus//Trolley fährt nicht aus + A( + O Dyn.Status.Weiche_geschaltet // Weiche ist aktiv + O "Kein_Weichenbereich +1" + ) + A( + O Antrieb_plus_aktiv + ON Schleuse.Parameter_allg.Antrieb_Plus_vorhanden + ) + S Antrieb_Schleuse_vor // Antrieb einschalten + +// Trolley ist in Schleuse und wartet + A Status2.Trolley_an_Schleuse // Trolley im Schleuse erkannt + AN "Schleuse_geöffnet" // Trolley soll ausfahren + A( + ON B_VorSchleuse + O Dyn.Error.Err_Stau_Einfahrt + ) + AN Dyn.Status.Kein_Stop_mehr // Wird in Schritt 2 gesetzt + O + A "Schleuse_geöffnet" // Trolley soll ausfahren + A Schleuse.Parameter_allg.Antrieb_Plus_vorhanden + AN Antrieb_plus_aktiv + JC Warten + + L 0 + T Dyn.WarteZeit_PS + + JU NwE10 + +Warten: L Dyn.WarteZeit_PS + L 3 // ca. 3s rum ? + =I + AN Status2."Stau_an_Raus-Sensor" + JC RDel + + CAC + L 200 // Nach ca. 20s + >=I + JC RDel + + JU En10 + +RDel: SET + R Status2."Trolley an Raus-Sensor" + L 0 + T Dyn."Zeit_Ohne_B_Zähl" + T Dyn.Stau_Zeit_RausSensor + +// War Stau?: + A Status2."Stau_an_Raus-Sensor" + R Status2."Stau_an_Raus-Sensor" + JCN DelRT + + L 0 // Bisher gefahrene Trolleys löschen + T Dyn.Raus_Trolleys + T Dyn."Zeit_Ohne_B_Zähl" + T Dyn.Stau_Zeit_RausSensor + +// Im Weichenbereich noch Trolleys unterwegs?: +DelRT: L Dyn.Raus_Trolleys + L 0 + >I + O "Kein_Weichenbereich +1" + JC En10 + +// Weiche+1 löschen: + L 0 + T SAVE."Weiche+1" // Hier wurde reserviert (Im Weichenmodul wird dann Reservierung gelöscht!) + + JU En10 + +B_Raus: L 0 + T Dyn."Zeit_Ohne_B_Zähl" + T Dyn."Zeit_Ausfahren_Ohne_B_Zähl" + +// Einmalig: + AN Status2."Trolley an Raus-Sensor" + S Status2."Trolley an Raus-Sensor" // Raus-Sensor ausgewertet + JCN Xn10 // Negierter Sprung + + L Dyn.Raus_Trolleys + + -1 // Ausgefahrene Trolleys -1 + T Dyn.Raus_Trolleys + + L 0 + >=I + JC Xn10 + + T Dyn.Raus_Trolleys // Minimum übergeben + +// Stau an B_Raus: +Xn10: AN "100ms-Impuls" + O Status2."Stau_an_Raus-Sensor" + JC En10 + + L Dyn.Stau_Zeit_RausSensor + + 1 // StauZeit +1 + T Dyn.Stau_Zeit_RausSensor + + L 90 // Nach ca. 9s + >=I + JCN En10 // Negierter Sprung + + L 0 // Zeit löschen + T Dyn.Stau_Zeit_RausSensor + + SET + S Status2."Stau_an_Raus-Sensor" + +En10: NOP 0 + + +--- NW 12: Plus: Trolley fährt nicht bis Zähl-Sensor --- + L Dyn.Raus_Trolleys + L 0 // Trolles unterwegs? + ==I // Nein! + O Trolley_draussen // Sensor wurde erreicht + O "Schleuse_geöffnet" // Dann Üb.zeit von Sk + O Dyn.Status.Reset_aktiv + JC RTTD + + AN Antrieb_Schleuse_aktiv + O + AN Antrieb_plus_aktiv + A Schleuse.Parameter_allg.Antrieb_Plus_vorhanden + ON "1s-Impuls" + O Dyn.Error.Err_Raus_Sensor // Trolley fährt nicht aus + JC En12 + + L Dyn."Zeit_Ausfahren_Ohne_B_Zähl" + + 1 + T Dyn."Zeit_Ausfahren_Ohne_B_Zähl" + +// Trolley fährt nicht bis Zähl-Sensor!: + L Schleuse."Übzeit_aus_Schleuse" + >=I + S Dyn.Error.Err_Raus_Sensor // Trolley fährt nicht aus + JCN En12 // Negierter Sprung! + + L Dyn.Raus_Trolleys + + -1 + T Dyn.Raus_Trolleys + + JU En12 + +RTTD: L 0 + T Dyn."Zeit_Ausfahren_Ohne_B_Zähl" + + SET + R Dyn.Error.Err_Raus_Sensor // Trolley fährt nicht aus + +En12: NOP 0 + + +--- NW 13: Einfahrzeit lernen --- + L Schleuse.EinfahrZeit + L 0 // Ausfahrzeit bekannt ? + ==I // Nein ! + O Status2.Einfahrzeit_lernen + = Einfahrzeit_nicht_bekannt + A Einfahrzeit_nicht_bekannt + A B_VorSchleuse // Stauklappe bei Einfahrt + A Antrieb_Schleuse_aktiv + AN B_InSchleuse + AN "Schleuse_geöffnet" + S Status2.Einfahrzeit_lernen + + A B_InSchleuse + AN "Schleuse_geöffnet" + R Status2.Einfahrzeit_lernen + + A Status2.Einfahrzeit_lernen + S Antrieb_Schleuse_vor // Antrieb einschalten + + AN Status2.Einfahrzeit_lernen + ON Antrieb_Schleuse_aktiv + ON "1s-Impuls" + JC NoEFZ + + L Schleuse.EinfahrZeit + + 1 + T Schleuse.EinfahrZeit + +NoEFZ: NOP 0 + + +--- NW 14: PS deaktivieren, da Trolley einfährt --- + A Einfahrzeit_nicht_bekannt // Also bekannt + JC En14 + +// Neuer Trolley fährt ein: + A B_VorSchleuse + JCN Wait // Negierter Sprung + + L Schleuse.EinfahrZeit + T Dyn.Restzeit_bis_Schleuse + +// Restzeit zurück zählen: +Wait: AN Antrieb_Schleuse_aktiv + O "Schleuse_geöffnet" + ON "1s-Impuls" + JC X014 + + L Dyn.Restzeit_bis_Schleuse + + -1 + T Dyn.Restzeit_bis_Schleuse + + L 0 + >I + JC X014 + + T Dyn.Restzeit_bis_Schleuse // Minimum übergeben + +// Trolley fährt noch ein: +X014: L Dyn.Restzeit_bis_Schleuse + L 0 // Restzeit vorhanden? + >I // Ja ! + AN B_InSchleuse + AN "Schleuse_geöffnet" + S Antrieb_Schleuse_vor // Antrieb einschalten (dadurch wird PS-Modus deaktiviert) + +En14: NOP 0 + + +--- NW 15: Spezial-FCs vorhanden? --- + L Schleuse.Leser_FC + T LeserFC + L 0 // Parameter vorhanden ? + >I // Ja! + = LeserFC_vorhanden + + L Schleuse.Ziel_FC + T ZielFC + L 0 // Parameter vorhanden ? + >I // Ja! + = ZielFC_vorhanden + + L Schleuse.Draussen_FC + T DraussenFC + L 0 // Parameter vorhanden ? + >I // Ja! + = DraussenFC_vorhanden + + +--- NW 16: Error: Stau Bereich-Eingang --- +// TrolleyID zum Einfahren gemeldet / Trolley fährt in Bereich: + L Dyn.TrolleyID_Eingefahren // Eintrag von Weiche -1 + L DINT#0 // angegeben ? + <>D // Ja ! + = "TrolleyID_Bereich-1" + A "TrolleyID_Bereich-1" + O B_VorSchleuse + S Dyn.Status."Trolley_fährt_in_Schleuse" + +// Antrieb einschalten: + A B_VorSchleuse + AN B_InSchleuse + AN "Schleuse_geöffnet" + S Antrieb_Schleuse_vor + + A B_VorSchleuse + S Antrieb_Schleuse_start + +// Sensor bei Bereichs-Einfahrt bleibt belegt?: + AN B_VorSchleuse // Sensor Trolley fährt in Bereich (kein Stau !) + O "Schleuse_geöffnet" + R Dyn.Error.Err_Stau_Einfahrt // Stau bei Einfahrt + JC X120 // StauZeit neu aufziehen + + AN "1s-Impuls" + O + A Schleuse.Parameter_allg.Antrieb_vorhanden + AN Antrieb_Schleuse_aktiv + O Dyn.Error.Err_Stau_Einfahrt // Zeit bereits abgelaufen + JC Xn12 + + L Dyn.Stau_Zeit // Sensor B_VorSep ist belegt [1s] + + +1 + T Dyn.Stau_Zeit // Sensor B_VorSep ist belegt [1s] + + L 20 // Stau-Zeit erreicht ? + >=I // Ja ! + S Dyn.Error.Err_Stau_Einfahrt // Stau bei Einfahrt (Quittierung oder Sensor=0, wegen Bürstenantrieb + JCN Xn12 + +X120: L 0 // Zeiten löschen + T Dyn.Stau_Zeit // Sensor B_VorSep ist belegt [1s] + +Xn12: NOP 0 + + +--- NW 17: Schleuse: Mindestzeit geöffnet/frei --- + L Dyn.Sk.Akt_Schritt + L 3 // AusSchleusen aktiv? + I // Nein! + ) +// / O #B_InSchleuse //Sensor Trolley in Schleuse vorhanden + ON "Schleuse_geöffnet" + R Dyn.Status.MindestZeit_ok + JC X130 // FreiZeit neu aufziehen + + A Schleuse.Parameter_allg.Antrieb_vorhanden + AN Antrieb_Schleuse_aktiv + O + A Schleuse.Parameter_allg.Antrieb_Plus_vorhanden + AN Antrieb_plus_aktiv + O Dyn.Status.MindestZeit_ok // Zeit bereits abgelaufen + ON "1s-Impuls" + JC Xn13 + + L Dyn.Mindest_Zeit // Sensor B_im_Sep ist frei [1s] + + +1 + T Dyn.Mindest_Zeit // Sensor B_im_Sep ist frei [1s] + + L Schleuse.Mindeszeit_Schleuse_geoeffnet // Mindest-Zeit erreicht ? + >=I // Ja ! + S Dyn.Status.MindestZeit_ok + JCN Xn13 + +X130: L 0 // Zeiten löschen + T Dyn.Mindest_Zeit // Sensor B_im_Sep ist frei [1s] + +Xn13: NOP 0 + + +--- NW 18: Einsprung Leser ermitteln --- + L Dyn.SAVE2.Leser_DB // Leser-FIFO-DB + L 0 // Einsprung-Zeiger bekannt ? + >I // Ja ! + S Leser_Zugriff // Leser-Zugriff vorhanden + JC En08L + + L Schleuse.Leser_ID // Nr. des vorhandenen Lesers + T "MW200" // Search-Daten + L 0 // angegeben ? + ==I // Nein ! + JC En08L + +CALL FC "DatenOut" (SSDB:=Para.Leser_DL_DB, SSDW:=0, PARA:=WORD#16#0000, SEARCHDATEN:=P#M200.0, RE_VAL:="MB199", OUTDATEN:=P#M220.0, Position:="MW196") + + L "MB199" + T Dyn.Rueckmld.RET_VAL_DL_Leser // Rückmeldung bei Datenbank-Zugriff (Leser-DL) + + JBI W_OkL + + SET + S Dyn.Error.Err_Leser_nicht_bereit // Leser-Datenliste fehlerhaft + + JU En08L + +W_OkL: L "MW222" // Rein-FIFO-DB + T Dyn.SAVE2.Leser_DB // Leser-FIFO-DB + L 0 // sinnvoller Wert ? + <=I // Nein ! + S Dyn.Error.Err_Leser_nicht_bereit // undefinierter Leser + JC En08L + + L "MD224" + T Dyn.SAVE2.Leser_DD // Leser-FIFO-DD + + SET + R Dyn.Error.Err_Leser_nicht_bereit // undefinierter Leser + S Leser_Zugriff // Leser-Zugriff vorhanden + +En08L: NOP 0 + + +--- NW 19: Reservierung bei Weiche plus noch aktiv? Nachtriggern --- + A "Kein_Weichenbereich +1" + R "Reservierung_Weiche+1_aktiv" + JC Y11E + + OPN DB[SAVE.Weichen_DB] // FABE+ -DB öffnen + + L SAVE.Weichen_DW + ITD + T AR1Start // Startwert mit Offset 0 + + L AR1Start // Startwert mit Offset 0 + + DINT#78 + SLD 3 + T AR1Zeiger // Statt Dyn.Bereichsstop (ging nur bis DB-Länge <= 8191 Bytes) + + L DBW [AR1Zeiger] // Schleuse -1 (DBW 78) + L Schleusen_Nr // Diese Schleuse ? + ==I // Ja ! + = "Reservierung_Weiche+1_aktiv" + +// Mindestzeit nachtriggern: (nach Weiche +1) + AN "Schleuse_geöffnet" + JC Y11E + + L AR1Start // Startwert mit Offset 0 + + DINT#71 + SLD 3 + L 3 // Damit DBX_Bit 3 + OD + T AR1Zeiger // Statt Dyn.Bereichsstop (ging nur bis DB-Länge <= 8191 Bytes) + + SET + = DBX [AR1Zeiger] // Mindestzeit nachtriggern (71.2) + +Y11E: NOP 0 + + +--- NW 20: Leser-Einheit managen (Inputs holen) --- + AN Leser_Zugriff + ON Schleuse.Parameter_allg.Leser_eingebaut + R Dyn.Status.Leser_triggern // für Status-Anzeige + JC NoLeser + +// Leserdaten holen: + OPN DB[Dyn.SAVE2.Leser_DB] // Leser -DB öffnen + + L Dyn.SAVE2.Leser_DD + T AR1Start // Startwert mit Offset 0 + +// Offset 10: + L AR1Start // Startwert mit Offset 0 + + DINT#10 + SLD 3 + T AR1Zeiger // Statt Dyn.Bereichsstop (ging nur bis DB-Länge <= 8191 Bytes) + + L DBB [AR1Zeiger] + T "MB200" + A "M200.0" + = Dyn.Leser.IN.xOutReadingDone + A "M200.1" + = Dyn.Leser.IN.xOutReadyForNewScan + +// Offset 274: + L AR1Start // Startwert mit Offset 0 + + DINT#274 + SLD 3 + T AR1Zeiger // Statt Dyn.Bereichsstop (ging nur bis DB-Länge <= 8191 Bytes) + + L DBB [AR1Zeiger] + T "MB200" + A "M200.0" + = Dyn.Leser.IN.xOutCodeGood + A "M200.1" + = Dyn.Leser.IN.xOutCodeBad + +// Offset 12: + L AR1Start // Startwert mit Offset 0 + + DINT#12 + SLD 3 + T AR1Zeiger // Statt Dyn.Bereichsstop (ging nur bis DB-Länge <= 8191 Bytes) + + L DBD [AR1Zeiger] + T Dyn.Leser.IN.nOutBarcode + +NoLeser: NOP 0 + + +--- NW 21: Schrittkette anhalten --- + A Dyn.Sk.Auto_akt // Automatik ist aktiv + A Dyn.Sk.Bereich_ok + CLR + + JU en08_Mig // Schrittkette nicht anhalten ! + + SET + R Dyn.Sk.Err_Uebzeit // Störungen löschen + R Dyn.Sk.Err_Schritt + + L 0 // Zeitwerte löschen + T Dyn.Sk.Terr_Zelle + T Dyn.Sk.Tok_Zelle + + JU RET + +en08_Mig: NOP 0 + + +--- NW 22: Trolley wurde zurück gezogen --- + L Dyn.Sk.Akt_Schritt + L 10 // Trolley schon unterwegs ? + I // Ja ! + ) + O Status2.Trolley_an_Schleuse // Trolley ist noch in Schleuse + O "Schleuse_geöffnet" + JC TrolleyOk + + SET + S Antrieb_Schleuse_start + S Dyn.Leser.OUT.xInReset + + L 0 // Neubeginn + T Dyn.Sk.Akt_Schritt + + AN Schleuse.Parameter_allg.Leser_eingebaut // Falls kein Leser verbaut Daten behalten (falls von Bereich-1 gemeldet) + JC TrolleyOk + + T Dyn.Trolley_ZwischenZiel + + L DINT#0 + T Dyn.TrolleyID_Schleuse + +TrolleyOk: NOP 0 + + +--- NW 23: Sprungverteiler --- + L Dyn.Sk.Neu_Schritt // Schritt, der im nächsten Zyklus aktiv werden soll + L -1 // angegeben ? + ==I // Nein ! + JC NEU + + CAC // Neuen Schritt übergeben + T Dyn.Sk.Akt_Schritt + + L -1 // Urzustand + T Dyn.Sk.Neu_Schritt // Schritt, der im nächsten Zyklus aktiv werden soll + +NEU: SET + R Warte_neu // Wartezeit neutriggern + R Warte_stop // Wartezeit stoppen + + L Dyn.Sk.Akt_Schritt + JL Ende + JU s000 // Schritt 0 + JU s001 // Schritt 1 + JU s002 // Schritt 2 + JU s003 // Schritt 3 + JU s004 // Schritt 4 + JU s005 // Schritt 5 + JU s006 // Schritt 6 + JU s007 // Schritt 7 + JU s008 // Schritt 8 + JU s009 // Schritt 9 + JU s010 // Schritt 10 + JU s011 // Schritt 11 + JU s012 // Schritt 12 + JU s013 // Schritt 13 + JU s014 // Schritt 14 + JU s015 // Schritt 15 + JU s016 // Schritt 16 + JU s017 // Schritt 17 + JU s018 // Schritt 18 + JU s019 // Schritt 19 + JU s020 // Schritt 20 + JU s021 // Schritt 21 + JU s022 // Schritt 22 + JU s023 // Schritt 23 + JU s024 // Schritt 24 + JU s025 // Schritt 25 + JU s026 // Schritt 26 + JU s027 // Schritt 27 + JU s028 // Schritt 28 + JU s029 // Schritt 29 + JU s030 // Schritt 30 +Ende: S Dyn.Sk.Err_Schritt // Undefinierter Schritt + + L 16#A131 + T Dyn.Stop_Ursache + + JU RET + +Neu_Mig: A Dyn.Sk.Err_Uebzeit + JCN Sk + + L 16#A132 + T Dyn.Stop_Ursache + + JU RET + +Sk: T Dyn.Sk.Akt_Schritt + + L 0 // Zeitwerte löschen + T Dyn.Sk.Terr_Zelle + T Dyn.Sk.Tok_Zelle + + JU NEU + +// Nicht programmierte Schritte: +// s000: SPA Ende +// s001: SPA Ende +// s002: SPA Ende +s003: JU Ende +s004: JU Ende +// s005: SPA Ende +// s006: SPA Ende +// s007: SPA Ende +s008: JU Ende +// s009: SPA Ende +// s010: SPA Ende +// s011: SPA Ende +// s012: SPA Ende +// s013: SPA Ende +// s014: SPA Ende +// s015: SPA Ende +// s016: SPA Ende +// s017: SPA Ende +s018: JU Ende +s019: JU Ende +// s020: SPA Ende +// s021: SPA Ende +s022: JU Ende +s023: JU Ende +s024: JU Ende +s025: JU Ende +s026: JU Ende +s027: JU Ende +s028: JU Ende +s029: JU Ende +s030: JU Ende + + +--- NW 24: Schritt X: Reserve --- + SET // Weiterschaltbedingung + = Weiter + +// Schrittaktionen: + SET + + L 16#B001 + T Dyn.Stop_Ursache + + A Weiter // Weiterschaltbedingung ist erfüllt + R Dyn.Sk.Err_Uebzeit // Sofort weiter ! + L 0 // Angabe der Wartezeit (*10ms) + JC Plus // Nächsten Schritt starten + + L 1 // Weiter mit Schritt 1 + JC Neu_Mig // Bei diesem Schritt weiter + + SET + A Dyn.Sk.Auto_akt // Automatik ist aktiv + A Dyn.Sk.Bereich_ok + = Ueb_akt // Überwachungszeit aktivieren + L 50 // Angabe der Überwachungszeit (*1s) + JU tueb // Überwachungszeit + + JU RET + + +--- NW 25: Schritt 0: Warten auf Trolley --- +s000: SET // Weiterschaltbedingung + A B_InSchleuse // Trolley im Schleuse erkannt + A Dyn.Sk.Auto_akt // Automatik ist aktiv + A Dyn.Sk.Bereich_ok + = Weiter + +// Trolley-Schleusendaten löschen: + L DINT#0 + T Dyn.TrolleyID_Schleuse + T Dyn.Trolley_ShopGroup + + L 0 + T Dyn.Trolley_EndZiel + T Dyn.Weichen_Ziel + +// HMI-Zeug: + L DINT#0 + T Dyn.HMI.TrolleyID_Input + + A Dyn.Sk.Reset_Akt // Reset ist aktiv + L 20 // Weiter mit Schritt 20 + JC Neu_Mig // Bei diesem Schritt weiter + +// Schrittaktionen: + SET + R Dyn.Error.Err_Leser_nicht_bereit + R Dyn.Error.Err_Kein_LeseErgebnis + R Dyn.Status.SF_angefordert + R Status2."TrolleyPos_übergeben" + R Status2.Telegramm_gesendet + + A Weiter // Weiterschaltbedingung ist erfüllt + R Dyn.Sk.Err_Uebzeit // Sofort weiter ! + L 50 // Angabe der Wartezeit (*10ms) + JC Plus // Nächsten Schritt starten + + L 16#B001 + T Dyn.Stop_Ursache + + A Dyn.Status."Trolley_fährt_in_Schleuse" + AN B_InSchleuse + S Antrieb_Schleuse_vor // Antrieb einschalten + JC S000A + + SET + R Dyn.Sk.Err_Uebzeit + + L 16#B000 + T Dyn.Stop_Ursache + + JU RET + +// Überwachungszeit starten: +S000A: A Dyn.Status."Trolley_fährt_in_Schleuse" + AN B_InSchleuse // Trolley im Schleuse erkannt + A( + O Antrieb_Schleuse_aktiv + ON Schleuse.Parameter_allg.Antrieb_vorhanden + ) + = Ueb_akt // Überwachungszeit aktivieren + + A Dyn.Sk.Err_Uebzeit + R Dyn.Sk.Err_Uebzeit + S Dyn.Error.Err_Trolley_nicht_in_Schleuse + R Dyn.Status."Trolley_fährt_in_Schleuse" + + L Schleuse."Übzeit_in_Schleuse" + + JU tueb // Überwachungszeit + + +--- NW 26: Schritt 1: Trolley ist in Schleuse / Leser ? / Daten vorhanden ? --- +s001: NOP 0 +// Schrittaktionen: + A B_InSchleuse + S Status2.Trolley_an_Schleuse + + AN Status2.Trolley_an_Schleuse // Trolley im Schleuse erkannt + A Schleuse.Parameter_allg.Leser_eingebaut + L 0 // Weiter mit Schritt 0 + JC Neu_Mig // Bei diesem Schritt weiter + +// Zwischen-Ziel von Bereich -1 vorhanden?: + L Dyn.ZwischenZiel_eingefahren + L 0 // Zwischenziel von Bereich -1 vorhanden! + ==I // Nein ! + O Schleuse.Parameter_allg.Leser_eingebaut // Dann werden Daten neu ermittelt! + JC X001 + +// Daten von Bereich -1 übergeben: + L Dyn.ZwischenZiel_eingefahren + T Dyn.Trolley_ZwischenZiel + L 0 + T Dyn.ZwischenZiel_eingefahren + + L Dyn.TrolleyID_Eingefahren + T Dyn.TrolleyID_Schleuse + L DINT#0 + T Dyn.TrolleyID_Eingefahren + + L 12 // Weiter mit Schritt 12 + JU Neu_Mig // Bei diesem Schritt weiter + +X001: L 0 + T Dyn.Trolley_ZwischenZiel + +// Leser vorhanden: + A Schleuse.Parameter_allg.Leser_eingebaut + R Dyn.Error.Err_Kein_LeseErgebnis + L 9 // Weiter mit Schritt 9 (Leser bereit) + JC Neu_Mig // Bei diesem Schritt weiter + +// Trolleydaten vorhanden ?: (Übergabe von Bereich -1) + L Dyn.TrolleyID_Eingefahren + T Dyn.TrolleyID_Schleuse + L DINT#0 // Daten vorhanden ? + <>D // Ja ! + L 11 // Weiter mit Schritt 11 (Trolleydaten lesen) + JC Neu_Mig // Bei diesem Schritt weiter + +// Ziel-FC vorhanden ?: + A ZielFC_vorhanden + L 12 // Weiter mit Schritt 12 (Ziel-FC) + JC Neu_Mig // Bei diesem Schritt weiter + + L 14 // Weiter mit Schritt 14 (Weichenbereich +1 vorhanden) + JU Neu_Mig // Bei diesem Schritt weiter + + +--- NW 27: Schritt 2: Ausfahren ok ? --- +s002: NOP 0 + +// Schrittaktionen: + AN Status2.Trolley_an_Schleuse // Trolley im Schleuse erkannt + L 0 // Weiter mit Schritt 0 + JC Neu_Mig // Bei diesem Schritt weiter + +// Anlage aus oder Störung: + L 16#B021 + T Dyn.Stop_Ursache + + AN Dyn.Sk.Auto_akt // Automatik ist aktiv + ON Dyn.Sk.Bereich_ok // Bereich ist gestört + JC RET + +// Starten erlaubt Trolley ?: + L 16#B022 + T Dyn.Stop_Ursache + + AN Start_Ok // Starten ist erlaubt + JC RET + +// Stau im Bereich +1: + L 16#B023 + T Dyn.Stop_Ursache + + SET + S Dyn.Status."Trolley_wartet_Bereich+1" + + A B_Stau_raus // Sensor Stau im Bereich rausfahren + JC RET + +// B_Aus_Schleuse aktiv: + L 16#B024 + T Dyn.Stop_Ursache + + A( + L Dyn.Raus_Trolleys + L 0 // Trolleys schon unterwegs? + <>I // Ja! + O( + L Schleuse.MaxRausTrolleys + L 1 // Nur einer darf ausfahren ? + ==I // Ja ! + ) + ) + A Status2."Trolley an Raus-Sensor" + O Status2."Stau_an_Raus-Sensor" + JC RET + +// Raus-Weiche bereit?: + L 16#B028 + T Dyn.Stop_Ursache + + A( + L Dyn.Weichen_Ziel + L Dyn."Zurück_gemeldetes_Weichen_Ziel" + <>I // Nicht identisch ! + ON Dyn.Status.Weiche_geschaltet // Rückmeldung von Weiche +1 + ) + AN "Kein_Weichenbereich +1" // Also Weiche +1 + L 15 + JC Neu_Mig // Bei diesem Schritt weiter + +// Zu viele Raus-Trolleys unterwegs: + L 16#B027 + T Dyn.Stop_Ursache + + L Dyn.Raus_Trolleys // Gestartete Trolleys + L Schleuse.MaxRausTrolleys // Erlaubte Anzahl gestarteter Trolleys + >=I + JC RET + +// Antriebe aktivieren / aktiv ?: + A Schleuse.Parameter_allg.Antrieb_Plus_vorhanden // Schleuse an weiterem Antrieb (Weiche) + S Antrieb_plus_vor // Antrieb plus einschalten + + A( + O Antrieb_plus_aktiv // Kreisel-Antrieb plus aktiv + ON Schleuse.Parameter_allg.Antrieb_Plus_vorhanden // Schleuse an weiterem Antrieb (Weiche) + ) + S Antrieb_Schleuse_vor // Antrieb einschalten + + L 16#B026 + T Dyn.Stop_Ursache + + AN Antrieb_plus_aktiv // Kreisel-Antrieb plus aktiv + A Schleuse.Parameter_allg.Antrieb_Plus_vorhanden // Schleuse an weiterem Antrieb (Weiche) + JC RET + + AN Antrieb_Schleuse_aktiv // Kreisel-Antrieb aktiv + A Schleuse.Parameter_allg.Antrieb_vorhanden // Schleuse an angetriebener Strecke + = Dyn.Status.Kein_Stop_mehr + JC RET + + L Dyn.Raus_Trolleys + + 1 // Gestartete Trolleys + 1 + T Dyn.Raus_Trolleys + + L 5 // Nur 1 langes Signal! + JC Neu_Mig // Bei diesem Schritt weiter + + +--- NW 28: Schritt 5: Trolley fährt aus ? --- +s005: SET // Weiterschaltbedingung + AN B_InSchleuse // Sensor Trolley ist in Schleuse + A( + O Antrieb_Schleuse_aktiv // Kreisel-Antrieb aktiv + ON Schleuse.Parameter_allg.Antrieb_vorhanden // Schleuse an angetriebener Strecke + ) + A( + O Antrieb_plus_aktiv + ON Schleuse.Parameter_allg.Antrieb_Plus_vorhanden + ) + = Weiter + +// Schrittaktionen: + SET + S Y_Schleuse_Auf // Schleuse öffnen + S Dyn.Status."Trolley_fährt_aus" + +// Antriebe: +// siehe Nw10 + +// B in Schleuse aktiv: + A B_InSchleuse // Sensor Trolley ist in Schleuse + JCN X050 // Negierter Sprung + + L 0 + T Dyn.Sk.Tok_Zelle + +// Trolley ist draussen mit 5s-Verzögerung: +X050: A Weiter // Weiterschaltbedingung ist erfüllt + R Dyn.Sk.Err_Uebzeit // Sofort weiter ! + R Dyn.Error.Err_Trolley_raus // Trolley fährt nicht aus + L 300 + JC Plus // Nächsten Schritt starten + +// Trolley fährt nicht raus!: + A Dyn.Sk.Err_Uebzeit + S Dyn.Error.Err_Trolley_raus // Trolley fährt nicht aus + + L 16#B051 + T Dyn.Stop_Ursache + + A Antrieb_Schleuse_aktiv + ON Schleuse.Parameter_allg.Antrieb_vorhanden // Schleuse an angetriebener Strecke + = Ueb_akt // Überwachungszeit aktivieren + L Schleuse."Übzeit_aus_Schleuse" // Angabe der Überwachungszeit (*1s) + JU tueb // Überwachungszeit + + +--- NW 29: Schritt 6: Schleuse Mindestzeit geöffnet ? --- +s006: SET // Weiterschaltbedingung + A Dyn.Status.MindestZeit_ok + AN B_InSchleuse // Sensor Trolley in Schleuse vorhanden + = Weiter + R Dyn.Sk.Err_Uebzeit // Sofort weiter ! + R Dyn.Error.Err_Trolley_raus // Trolley fährt nicht aus + +// Schrittaktionen: +// Gezählt wird in NW11 + + SET + S Y_Schleuse_Auf // Schleuse öffnen + S Dyn.Status."Trolley_fährt_aus" + +// Erneutes Signal von B in Schleuse ?: + A B_InSchleuse // Sensor Trolley in Schleuse vorhanden + JCN X060 // Negierter Sprung + + L 5 + T Dyn.Sk.Neu_Schritt // Schritt, der im nächsten Zyklus aktiv werden soll + + L 0 // Mindest-Zeit neu starten + T Dyn.Mindest_Zeit // Sensor B_im_Sep ist frei [1s] + SET + R Dyn.Status.MindestZeit_ok // Zeit bereits abgelaufen + + JU RET + +// Antriebe: +// siehe Nw10 +X060: A Weiter + L 0 + JC X006 // Nächsten Schritt starten + + L 16#B061 + T Dyn.Stop_Ursache + +// Trolley fährt nicht raus!: + A Dyn.Sk.Err_Uebzeit + S Dyn.Error.Err_Trolley_raus // Trolley fährt nicht aus + + A Antrieb_Schleuse_aktiv + ON Schleuse.Parameter_allg.Antrieb_vorhanden // Schleuse an angetriebener Strecke + = Ueb_akt // Überwachungszeit aktivieren + L Schleuse."Übzeit_aus_Schleuse" // Angabe der Überwachungszeit (*1s) + JU tueb // Überwachungszeit + +// Trolley hat Schleuse verlassen: +X006: SET + S Dyn.Status.Trolley_draussen // 1 Zyklus + R Dyn.Status."Trolley_fährt_in_Schleuse" + R Status2.Telegramm_gesendet + + L Dyn.Vereinzelungstakte + + DINT#1 // Vereinzelungen +1 + T Dyn.Vereinzelungstakte + +// Draussen-FC ?: + AN DraussenFC_vorhanden + JC NoFC // Bei diesem Schritt weiter + + L Schleusen_Nr // Schleusen-Nr. + T "MW190" + L Dyn.Trolley_ShopGroup // Shop-Gruppe + T "MD182" // übergeben + + L Dyn.Weichen_Ziel + T "MW198" // Weichenziel + + UC DB[DraussenFC] // z.Bsp. Daten anpassen + +NoFC: L 7 // Weiter mit Schritt 7 + JU Neu_Mig // Bei diesem Schritt weiter + + +--- NW 30: Schritt 7: Fertig --- +s007: SET // Weiterschaltbedingung + +// Schrittaktionen: + JU ENDE_Mig + + +--- NW 31: Schritt 9: Lese-Einheit bereit? --- +s009: SET // Weiterschaltbedingung + L Dyn.Leser.IN.nOutBarcode + L DINT#0 + ==D + A Dyn.Leser.IN.xOutReadyForNewScan + AN Dyn.Leser.IN.xOutReadingDone + AN Dyn.Leser.IN.xOutCodeGood + AN Dyn.Leser.IN.xOutCodeBad + = Weiter + R Dyn.Error.Err_Leser_nicht_bereit + +// Schrittaktionen: + AN Status2.Trolley_an_Schleuse // Trolley im Schleuse erkannt + A Schleuse.Parameter_allg.Leser_eingebaut + R Dyn.Error.Err_Leser_nicht_bereit + L 0 // Weiter mit Schritt 0 + JC Neu_Mig // Bei diesem Schritt weiter + + A Weiter + = Dyn.Leser.OUT.xInStartReading // Leser triggern + L 0 // Angabe der Wartezeit (*10ms) + JC Plus // Nächsten Schritt starten + +// Leser nicht bereit: + A Dyn.Leser.IN.xOutReadingDone // Falls altes Handshake noch gewollt + O Dyn.Leser.IN.xOutCodeGood + O Dyn.Leser.IN.xOutCodeBad + S Dyn.Leser.OUT.xInHandshakeDone + + A Dyn.Sk.Err_Uebzeit + R Dyn.Sk.Err_Uebzeit // Sofort weiter ! + S Dyn.Error.Err_Leser_nicht_bereit + S Dyn.Leser.OUT.xInErrQuit // Vielleicht hilft es + + A Dyn.Error.Err_Leser_nicht_bereit + A ErrQuit // Mit Quittierung dann zusätzlich reset! + S Dyn.Leser.OUT.xInReset + +// HMI-TrolleyID bei Leser nicht bereit: + L Dyn.HMI.TrolleyID_Input + L DINT#0 + <>D // Ja! + A Dyn.Error.Err_Leser_nicht_bereit + L 0 // Angabe der Wartezeit (*10ms) + JC Plus // Nächsten Schritt starten + + SET + = Ueb_akt // Überwachungszeit aktivieren + L 5 // Angabe der Überwachungszeit (*1s) + JU tueb // Überwachungszeit + + +--- NW 32: Schritt 10: Warten auf Leseeinheit --- +s010: SET // Weiterschaltbedingung + A Dyn.Leser.IN.xOutReadingDone + A Dyn.Leser.IN.xOutCodeGood + AN Dyn.Leser.IN.xOutCodeBad + = Weiter + R Dyn.Error.Err_Kein_LeseErgebnis + +// Schrittaktionen: + AN Status2.Trolley_an_Schleuse // Trolley im Schleuse erkannt + A Schleuse.Parameter_allg.Leser_eingebaut + L 0 // Weiter mit Schritt 0 + R Dyn.Error.Err_Kein_LeseErgebnis + JC Neu_Mig // Bei diesem Schritt weiter + + SET + R Dyn.Leser.OUT.xInStartReading // Leseeinheit triggern + + A Weiter + S Dyn.Leser.OUT.xInHandshakeDone + R Dyn.Sk.Err_Uebzeit // Sofort weiter ! + JC X010 + + SET + S Dyn.Status.Trolley_wartet_Lesung + + A Dyn.Error.Err_Leser_nicht_bereit // von Schritt 9 + JC LX + + A Dyn.Sk.Err_Uebzeit + O Dyn.Leser.IN.xOutCodeBad + S Dyn.Leser.OUT.xInHandshakeDone + JC L2 // Erst bei 3.Fehllesung Error! + + L 16#B101 + T Dyn.Stop_Ursache + + SET + = Ueb_akt // Überwachungszeit aktivieren + + L 10 // Angabe der Überwachungszeit (*1s) + JU tueb // Überwachungszeit + +L2: A Status2."2.Lesung_aktiv" // Erst bei 3.Fehllesung Error! + JC L3 + + SET + S Status2."2.Lesung_aktiv" + R Dyn.Sk.Err_Uebzeit // Sofort weiter ! + + L 9 + T Dyn.Sk.Neu_Schritt // Schritt, der im nächsten Zyklus aktiv werden soll + + JU RET + +L3: A Status2."3.Lesung_aktiv" // //Erst bei 3.Fehllesung Error! + JC LX + + SET + S Status2."3.Lesung_aktiv" + R Dyn.Sk.Err_Uebzeit // Sofort weiter ! + + L 9 + T Dyn.Sk.Neu_Schritt // Schritt, der im nächsten Zyklus aktiv werden soll + + JU RET + +// Nach 3.Fehl-Lesung erst Leserfehler! +LX: SET + R Dyn.Sk.Err_Uebzeit // Sofort weiter ! + S Dyn.Error.Err_Kein_LeseErgebnis + JU NoLesung + +// Leserdaten übergeben: +X010: L Dyn.Leser.IN.nOutBarcode + T Dyn.TrolleyID_Schleuse + + L DINT#0 // Unbekannt ? + ==D // Ja ! + O( + CAC + L DINT#-1 // Fehl-Lesung? + ==D // Ja ! + ) + S Dyn.Error.Err_Kein_LeseErgebnis + L 9 // Weiter mit Schritt 9 (Leser bereit) + JC Neu_Mig // Bei diesem Schritt weiter + + L 11 // Weiter mit Schritt 11 + JU Neu_Mig // Bei diesem Schritt weiter + +// Lesefehler: +NoLesung: NOP 0 +// HMI-Eingabe?: +// HMI-TrolleyID: + L Dyn.HMI.TrolleyID_Input + T Dyn.TrolleyID_Schleuse + <>D // Ja! + L 0 // Angabe der Wartezeit (*10ms) + R Dyn.Error.Err_Kein_LeseErgebnis + R Dyn.Error.Err_Leser_nicht_bereit // von Schritt 9 + JC Plus // Nächsten Schritt starten + +// Leser-FC aufrufen: +No_HMIa: AN LeserFC_vorhanden + JC NoLFC + + L Schleusen_Nr // Schleusen-Nr. + T "MW190" // übergeben + L Dyn.Trolley_ZwischenZiel // Übergabe von Leser-Aufruf + T "MW196" + + A Dyn.Error.Err_Kein_LeseErgebnis + = "M180.0" + SET + R "M180.1" + + UC DB[LeserFC] // Beeinflussung der Fehllesung + + L 16#B102 + T Dyn.Stop_Ursache + + L "MW196" // Zwischenziel übergeben + T Dyn.Trolley_ZwischenZiel // Übergabe von Leser-Aufruf + L 0 // Übergeben ? + <>I // Ja! + L 12 // Weiter mit Schritt 12 + R Dyn.Error.Err_Kein_LeseErgebnis + JC Neu_Mig // Bei diesem Schritt weiter + +NoLFC: L 9 + T Dyn.Sk.Neu_Schritt // Schritt, der im nächsten Zyklus aktiv werden soll + + JU RET + + +--- NW 33: Schritt 11: Trolleydaten aus DL lesen --- +s011: L DINT#0 + T Dyn.TrolleyID_Eingefahren // Eintrag von Weiche -1 + + L Dyn.Trolley_ZwischenZiel // / + + L Dyn.TrolleyID_Schleuse + T "MD220" + +CALL FC "DatenOut" (SSDB:=Schleuse.Gesamt_Trolley_DL, SSDW:=0, PARA:=16#0000, SEARCHDATEN:=P#M220.0, RE_VAL:="MB199", OUTDATEN:=DB1011.DBX0.0, Position:="MW196") // Eintrag lesen + + L 16#B111 + T Dyn.Stop_Ursache + + AN "M199.7" + = Dyn.Error.Barcode_nicht_bekannt + JC UnbekanntBC + +// Relevanten Trolleydaten auslesen: + L "TrolleyDL_OutDaten".OUTDaten.EndZiel + T Dyn.Trolley_EndZiel + +// ZwischenZiel nicht überschreiben: + L Dyn.Trolley_ZwischenZiel + L 0 // Schon bekannt ? + <>I // Ja ! + JC NixZZ + + L "TrolleyDL_OutDaten".OUTDaten.ZwischenZiel + T Dyn.Trolley_ZwischenZiel + +NixZZ: L "TrolleyDL_OutDaten".OUTDaten.ShopGroup + T Dyn.Trolley_ShopGroup + + L 0 // Angabe der Wartezeit (*10ms) + JU Plus // Nächsten Schritt starten + +// Unbekannter Trolley: +UnbekanntBC: NOP 0 +// HMI-Eingabe?: + +// Leser-FC aufrufen: +Nix_HMI: AN LeserFC_vorhanden + JC Nix_LFC + + L Schleusen_Nr // Schleusen-Nr. + T "MW190" // übergeben + L Dyn.TrolleyID_Schleuse + T "MD192" + L Dyn.Trolley_ZwischenZiel + T "MW196" + + A Dyn.Error.Barcode_nicht_bekannt + = "M180.1" + SET + R "M180.0" + + UC DB[LeserFC] // Beeinflussung der Weiterfahrt bei nicht bekanntem Trolley + + L "MW196" // ZwischenZiel übergeben + T Dyn.Trolley_ZwischenZiel // Übergabe von Leser-Aufruf + L 0 // Übergeben ? + <>I // Ja! + L 12 // Weiter mit Schritt 12 + R Dyn.Error.Err_Kein_LeseErgebnis + JC Neu_Mig // Bei diesem Schritt weiter + +Nix_LFC: JU RET + + +--- NW 34: Schritt 12: Ziel-FC --- +s012: NOP 0 + +// Schrittaktionen: + AN Status2.Trolley_an_Schleuse // Trolley im Schleuse erkannt + A Schleuse.Parameter_allg.Leser_eingebaut + AN "Schleuse_geöffnet" + L 0 // Weiter mit Schritt 0 + JC Neu_Mig // Bei diesem Schritt weiter + + SET + S Dyn.Status."Trolley_wartet_auf_Ziel-FC" + + AN ZielFC_vorhanden + R Dyn.Status."Trolley_wartet_auf_Ziel-FC" + L 13 // Weiter mit Schritt 13 + JC Neu_Mig // Bei diesem Schritt weiter + + SET // Rückmeldungen erst mal resetten + R "M180.6" // Weiterfahrt von Ziel-FC erlaubt + L Schleusen_Nr // Schleusen-Nr. + T "MW190" // übergeben + L Dyn.Trolley_ShopGroup // Shop-Gruppe + T "MD182" // übergeben + L Dyn.Trolley_EndZiel // End-Ziel + T "MW194" // übergeben + L Dyn.Trolley_ZwischenZiel + T "MW196" // übergeben + L 0 // Erst mal nullen + T "MW198" // Weichenziel + + UC DB[ZielFC] // Beeinflussung der Weiterfahrt + + L 16#B122 + T Dyn.Stop_Ursache + +// Spezial-Fall bei Übergabe an Sorter / Turm (M180.6 wird nie im Ziel-FC gesetzt!) +// aber anderer Partner hat Schleuse extern geöffnet: + A "Schleuse_geöffnet" + AN "M180.6" // Weiterfahrt von Ziel-FC erlaubt + AN Status2."TrolleyPos_übergeben" // Nur einmalig + S Status2."TrolleyPos_übergeben" + JCN Normal // Negierter Sprung + + L Dyn.Vereinzelungstakte + + DINT#1 // Vereinzelungen +1 + T Dyn.Vereinzelungstakte + +CALL FC "Trolley_DL_Neue_Pos" (Gesamt_Trolley_DL:=Schleuse.Gesamt_Trolley_DL, TrolleyID:=Dyn.TrolleyID_Schleuse, Position:=Schleuse.Leser_ID, ShopGroup:=Dint#0, Err:="M199.0") + +// Draussen-FC ?: + AN DraussenFC_vorhanden + JC RET // Bei diesem Schritt weiter + + L Schleusen_Nr // Schleusen-Nr. + T "MW190" + + UC DB[DraussenFC] // z.Bsp. Daten anpassen + + JU RET + +Normal: A "M180.6" // Weiterfahrt von Ziel-FC erlaubt + JC X012 + + AN Schleuse.Parameter_allg.Leser_eingebaut + JC RET + + L 11 + T Dyn.Sk.Neu_Schritt // Schritt, der im nächsten Zyklus aktiv werden soll + + JU RET + +X012: L "MW196" // zurückschreiben, falls verändert + T Dyn.Trolley_ZwischenZiel + + L "MW198" // Weichenziel übergeben + T Dyn.Weichen_Ziel + + L 13 // Weiter mit Schritt 13 + JU Neu_Mig // Bei diesem Schritt weiter + + +--- NW 35: Schritt 13: Schleusen-Position zurückschreiben --- +s013: NOP 0 + +// Schrittaktionen: + SET + S Status2."Weichen-Schritt" + +// Neue Position an Gesamt-Trolley-DL übergeben: +CALL FC "Trolley_DL_Neue_Pos" (Gesamt_Trolley_DL:=Schleuse.Gesamt_Trolley_DL, TrolleyID:=Dyn.TrolleyID_Schleuse, Position:=Schleuse.Leser_ID, ShopGroup:=DInt#0, Err:="M199.0") // für nichts verändern + + L 0 // Angabe der Wartezeit (*10ms) + JU Plus // Nächsten Schritt starten + + +--- NW 36: Schritt 14: Weichenbereich +1 vorhanden --- +s014: NOP 0 + +// Schrittaktionen: +// Weichenbereich +1 vorhanden?: + A "Kein_Weichenbereich +1" + L 2 // Weiter mit Schritt 2 (Ausfahren ok?) + JC Neu_Mig // Bei diesem Schritt weiter + + SET + S Status2."Weichen-Schritt" + + L 0 // Angabe der Wartezeit (*10ms) + JU Plus // Nächsten Schritt starten + + +--- NW 37: Schritt 15: Weichenbereich raus bereit ? --- +s015: NOP 0 + +// Schrittaktionen: + AN Status2.Trolley_an_Schleuse // Trolley im Schleuse erkannt + L 0 // Weiter mit Schritt 0 + JC Neu_Mig // Bei diesem Schritt weiter + + SET + S Status2."Weichen-Schritt" + + L Dyn.Weichen_Ziel + L 0 // Bekannt ? + <>I // Ja ! + JC X15A + + L 12 // Ziel-FC ? + T Dyn.Sk.Neu_Schritt // Schritt, der im nächsten Zyklus aktiv werden soll + + L 16#B154 + T Dyn.Stop_Ursache + + JU RET + +X15A: SET + S Dyn.Status."Trolley_wartet_auf_Weiche+1" + + L 16#B155 + T Dyn.Stop_Ursache + + L SAVE.Weichen_DB // Weichen-DB + L 0 // Einsprung-Zeiger bekannt ? + >I // Ja ! + JC S015A + + L 16#B150 + T Dyn.Stop_Ursache + + JU RET + +// Weichendaten auslesen: +S015A: L SAVE.Weichen_DW + ITD + T AR1Start // Startwert mit Offset 0 + + L AR1Start // Startwert mit Offset 0 + + DINT#70 + SLD 3 + L 0 // Damit DBX70.0 + OD + T AR1Zeiger // Statt Dyn.Bereichsstop (ging nur bis DB-Länge <= 8191 Bytes) + + L 16#B152 + T Dyn.Stop_Ursache + + OPN DB[SAVE.Weichen_DB] // FABE+ -DB öffnen + + AN DBX [AR1Zeiger] // Weichenbereich frei ? (DBX70.0) + JC S015B + + L 16 // Weiter mit Schritt 16 (Daten an Weiche übergeben) + JU Neu_Mig // Bei diesem Schritt weiter + +// Reservierung noch diese Schleuse ?: +S015B: L AR1Start // Startwert mit Offset 0 + + DINT#78 + SLD 3 + T AR1Zeiger // Statt Dyn.Bereichsstop (ging nur bis DB-Länge <= 8191 Bytes) + + OPN DB[SAVE.Weichen_DB] // FABE+ -DB öffnen + + L DBW [AR1Zeiger] // Schleuse -1 (DBW 78) + L Schleusen_Nr // Diese Schleuse ? + <>I // Nein ! + JC RET // Warten ! + +// Dasselbe Weichen-Ziel ?: + L Dyn.Weichen_Ziel // Gewolltes Ziel + L Dyn."Zurück_gemeldetes_Weichen_Ziel" // Aktuell im Weichenbereich aktives Ziel + <>I // Sind nicht identisch ! + JC RET // Warten ! + + L 16 // Weiter mit Schritt 16 (Daten an Weiche übergeben) + JU Neu_Mig // Bei diesem Schritt weiter + + +--- NW 38: Schritt 16: Daten an Rausweiche übergeben --- +s016: NOP 0 + +// Schrittaktionen: + SET + S Status2."Weichen-Schritt" + +// Daten für Eintrag vorbereiten: + OPN DB[SAVE.Weichen_DB] // FABE+ -DB öffnen + + L AR1Start // Startwert mit Offset 0 + + DINT#72 + SLD 3 + T AR1Zeiger // Statt Dyn.Bereichsstop (ging nur bis DB-Länge <= 8191 Bytes) + + L Dyn.TrolleyID_Schleuse + T DBD [AR1Zeiger] // Trolley-ID (DBD 72) + + L AR1Start // Startwert mit Offset 0 + + DINT#76 + SLD 3 + T AR1Zeiger // Statt Dyn.Bereichsstop (ging nur bis DB-Länge <= 8191 Bytes) + + L Dyn.Weichen_Ziel + T DBW [AR1Zeiger] // Weichenziel (DBW 76) + + L AR1Start // Startwert mit Offset 0 + + DINT#80 + SLD 3 + T AR1Zeiger // Statt Dyn.Bereichsstop (ging nur bis DB-Länge <= 8191 Bytes) + + L Dyn.Trolley_ZwischenZiel + T DBW [AR1Zeiger] // Zwischenziel (DBW 80) + + L AR1Start // Startwert mit Offset 0 + + DINT#78 + SLD 3 + T AR1Zeiger // Statt Dyn.Bereichsstop (ging nur bis DB-Länge <= 8191 Bytes) + + L Schleusen_Nr + T DBW [AR1Zeiger] // Schleuse -1 (DBW 78) + + SET + S "Reservierung_Weiche+1_aktiv" // Weiche nicht mehr angemeldet (da erst im nächsten Zyklus) + + L Schleuse.RausWeichen_Nr // Nr. der vorhandenen Weiche + T SAVE."Weiche+1" // Hier wurde reserviert + + L 17 // Weiter mit Schritt 17 (Hat Weiche geschaltet ?) + JU Neu_Mig // Bei diesem Schritt weiter + + +--- NW 39: Schritt 17: Hat Rausweiche geschaltet ? --- +s017: NOP 0 + +// Schrittaktionen: + SET + S Status2."Weichen-Schritt" + +// Weiche +1 noch mit dieser Schleuse aktiv ?: + AN "Reservierung_Weiche+1_aktiv" // Weiche nicht mehr angemeldet + L 14 // Weiter mit Schritt 14 + JC Neu_Mig // Bei diesem Schritt weiter + + SET + S Dyn.Status."Trolley_wartet_auf_Weiche+1" + + L 16#B170 + T Dyn.Stop_Ursache + + L Dyn.Weichen_Ziel // Gewolltes Ziel + L Dyn."Zurück_gemeldetes_Weichen_Ziel" // Aktuell im Weichenbereich aktives Ziel + ==I // Sind identisch ! + A Dyn.Status.Weiche_geschaltet // Rückmeldung von Weiche +1 + L 2 // Weiter mit Schritt 2 (Ausfahren ok?) + JC Neu_Mig // Bei diesem Schritt weiter + + L 16#B171 + T Dyn.Stop_Ursache + + JU RET + + +--- NW 40: Schritt 20: Schleuse resetten (Wartezeit) --- +s020: A B_InSchleuse // Weiterschaltbedingung + = Weiter // Weiterschaltbedingung ist erfüllt + +// Schrittaktionen: + SET // ELS in Grundstellung fahren + S Antrieb_Schleuse_vor // Antrieb einschalten + S Antrieb_Schleuse_start // Antrieb starten + + A Weiter + O Dyn.Sk.Err_Uebzeit + R Dyn.Sk.Err_Uebzeit // Sofort weiter ! + L 21 // Weiter mit Schritt 21 + JC Neu_Mig // Bei diesem Schritt weiter + + L 16#B201 + T Dyn.Stop_Ursache + + SET + = Ueb_akt // Überwachungszeit aktivieren + L Schleuse.Wartezeit_bis_leer // Angabe der Überwachungszeit (*1s) + JU tueb // Überwachungszeit + + +--- NW 41: Schritt 21: Reset ist zu Ende --- +s021: SET + R Dyn.Sk.Reset_Akt // Reset ist aktiv + R Status2."TrolleyPos_übergeben" + R Dyn.Error.Err_Trolley_nicht_in_Schleuse // Trolley fährt nicht in Schleuse + R Dyn.Error.Err_Uebzeit // Überwachungzeit ist abgelaufen + R Dyn.Error.Err_Stau_Einfahrt // Betriebsart ist nicht möglich + R Dyn.Error.Err_Trolley_raus // Trolley fährt nicht aus + R Dyn.Status."Trolley_fährt_in_Schleuse" + + L 0 + T SAVE.Weichen_DB + T SAVE.Weichen_DW + T SAVE."Weiche+1" // Dadurch wird in Weiche Reservierung gelöscht + T Dyn.Raus_Trolleys + T Dyn.Stau_Zeit // Sensor B_VorSep ist belegt [1s] + T Dyn.Mindest_Zeit // Sensor B_VorSep ist frei [1s] + + SET + S Dyn.Status.Trolley_draussen + + JU ENDE_Mig // Neubeginn + + +--- NW 42: Schrittkette beenden --- +ENDE_Mig: L 0 // Schritt 0: Warten + T Dyn.Sk.Akt_Schritt + + L 0 // Zeitwert löschen + T Dyn.Sk.Terr_Zelle + T Dyn.Sk.Tok_Zelle + T Dyn.ZwischenZiel_eingefahren + + L DINT#0 + T Dyn.TrolleyID_Eingefahren // Eintrag von Weiche -1 + T Dyn.TrolleyID_Schleuse // Daten übergeben + T Dyn.Trolley_ZwischenZiel + T Dyn.Trolley_EndZiel + T Dyn.Weichen_Ziel + + SET + R Dyn.Sk.Err_Uebzeit + R Dyn.Status."Trolley_fährt_rückwärts" + R Dyn.Error.Err_Kein_LeseErgebnis + R Status2."2.Lesung_aktiv" + R Status2."3.Lesung_aktiv" + R Status2."TrolleyPos_übergeben" + R Status2.Telegramm_gesendet + +// HMI-Zeug: + L DINT#0 + T Dyn.HMI.TrolleyID_Input + + JU RET + + +--- NW 43: Nächsten Schritt aktivieren --- +Plus: T Dyn.Sk.T_ok // Wartezeit übergeben + + A Dyn.Sk.Err_Uebzeit // Störung noch nicht quittiert + JC RET + + L 0 // keine Wartezeit ? + ==I // Ja ! -> sofort weiter + JC w220 + + AN Warte_neu // Wartezeit neutriggern + JC W220_Mig + + L 0 + T Dyn.Sk.Tok_Zelle // Wartezeit + +W220_Mig: A Warte_stop // Wartezeit stoppen + JC RET + + L Dyn.Sk.Tok_Zelle + L "MW4" // Wartezeit +10ms + +I + T Dyn.Sk.Tok_Zelle // Wartezeit + L Dyn.Sk.T_ok // abgelaufen ? + I // abgelaufen ? + AN Dyn.Sk.Err_Uebzeit + JC en24 // Nein ! + + A Ueb_akt // Überwachungszeit aktivieren + S Dyn.Sk.Err_Uebzeit + + L 0 // Zeitwert löschen + T Dyn.Sk.Terr_Zelle + + JU RET + +en24: NOP 0 + +--- NW 45: Überwachungszeit +1 --- + AN Dyn.Sk.Ueb_akt // Schrittaktion ist aktiv + ON "1s-Impuls" + JC RET + + L Dyn.Sk.Terr_Zelle + + 1 // Üb.zeit +1s + T Dyn.Sk.Terr_Zelle + + JU RET + + +--- NW 46: Return --- +RET: NOP 0 +// Weichen -R ückmeldung löschen: + SET + R Dyn.Status.Weiche_geschaltet + R Dyn.Status."Trolley ausserhalb Weiche" + + L 0 + T Dyn."Zurück_gemeldetes_Weichen_Ziel" + + +--- NW 47: Leser-Einheit managen (Outputs schreiben) --- + AN Leser_Zugriff + ON Schleuse.Parameter_allg.Leser_eingebaut + JC NixLeser + +// Leserdaten schreiben: + OPN DB[Dyn.SAVE2.Leser_DB] // Leser -DB öffnen + + L Dyn.SAVE2.Leser_DD + T AR1Start // Startwert mit Offset 0 + +// Offset 4: + L AR1Start // Startwert mit Offset 0 + + DINT#4 + SLD 3 + T AR1Zeiger // Statt Dyn.Bereichsstop (ging nur bis DB-Länge <= 8191 Bytes) + + L DBB [AR1Zeiger] // Aktuelle Werte holen + T "MB200" + + A Dyn.Leser.OUT.xInStartReading + = "M200.1" + A Dyn.Leser.OUT.xInHandshakeDone + R Dyn.Leser.OUT.xInHandshakeDone + = "M200.2" + A Dyn.Leser.OUT.xInErrQuit + R Dyn.Leser.OUT.xInErrQuit + = "M200.4" + A Dyn.Leser.OUT.xInReset + R Dyn.Leser.OUT.xInReset + = "M200.5" + + L "MB200" + T DBB [AR1Zeiger] // Veränderte Werte zurück schreiben + +NixLeser: NOP 0 + + +--- NW 48: Ende --- + BE + diff --git a/=A01+UH07-KF00/Programmbausteine/Module/MHMOmniWeiche_Plus.awl b/=A01+UH07-KF00/Programmbausteine/Module/MHMOmniWeiche_Plus.awl new file mode 100644 index 0000000..95f2224 --- /dev/null +++ b/=A01+UH07-KF00/Programmbausteine/Module/MHMOmniWeiche_Plus.awl @@ -0,0 +1,873 @@ +=== FB 1280: MHMOmniWeiche_Plus [STL] === +INTERFACE: + Input: + Weichen_Nr : Int // Aufruf für Weiche + ErrQuit : Bool // Ablaufstörung quittieren + Fahren_Ok : Bool // Fahren Ok + B_Ziel_gerade : Bool // Ziel-Sensor gerade + B_Ziel_abzweig : Bool // Ziel-Sensor abzweig + Antrieb_Weiche_aktiv : Bool // Weichen-Antrieb aktiv + Antrieb_Gerade_aktiv : Bool // Gerade-Antrieb aktiv + Antrieb_Abzweig_aktiv : Bool // Abzweig-Antrieb aktiv + Weiche_ist_AST : Bool // Weiche ist auf Arbeitsstellung + Output: + Y_Weiche_gerade : Bool // Weiche auf Gerade schalten + Y_Weiche_abzweig : Bool // Weiche auf Abzweig schalten + Error : Word // Störungen übergeben + InOut: + Antrieb_Weiche_vor : Bool // Weichenantrieb einschalten + Antrieb_Weiche_stop : Bool // Weichenantrieb stoppen + Antrieb_Weiche_gerade_vor : Bool // Weichenantrieb gerade einschalten + Antrieb_Weiche_gerade_stop : Bool // Weichenantrieb gerade stoppen + Antrieb_Weiche_abzweig_vor : Bool // Weichenantrieb abzweig einschalten + Antrieb_Weiche_abzweig_stop : Bool // Weichenantrieb abzweig stoppen + hStOk : Bool // Anzeige Start n. Störung aktivieren + Static: + SAVE : Struct + Schleusen_DB : Int // Schleuse-1-DB + Schleuse-1_DW : Int // Schleuse-1-DW + Res : Array[1..3] of Int // Reserve + Para : Struct // Parameter + Weichen_DL_DB : Int // Einsprung Weichen-Datenliste-DB + Weichen_DL_DW : Int // Einsprung Weichen-Datenliste-DW + Schleusen_DL_DB : Int // Einsprung Schleuse-Datenliste-DB + Schleusen_DL_DW : Int // Einsprung Schleuse-Datenliste-DW + Res1 : Array[1..1] of Int // Reserve + Weiche : "UDLHMOmniWeiche_2fach_Plus" // Fahrbereichs Daten + Dyn : Struct // Dynamische Daten fürs Einfahren + Status : Struct // Status + Weiche_frei : Bool // Rückmeldung: Weiche ist wieder frei + Kein_StartOk : Bool // Input StartOk <>1 + Weiche_abzweigen : Bool // Weiche auf Abzweig schalten + Weiche_geradeaus : Bool // Weiche auf Gerade schalten + MindestZeit_ok : Bool // Mindestzeit für Weichendurchfahrt erreicht? + Ziel_erreicht : Bool // Ziel erreicht + Frei06 : Bool + Weiche_aktiv : Bool // Weiche ist aktiv + Auto_akt : Bool + Hand_akt : Bool + Bereich_ok : Bool + MindestZeit_nachtriggern : Bool // Mindestzeit nachtriggern (von Schleuse -1) + Warten_auf_Mindestzeit : Bool // Mindestzeit noch nicht abgelaufen + Res15 : Bool + Error_aktiv : Bool // Störung vorhanden + Reset_aktiv : Bool := TRUE // Reset aktiv + TrolleyID : DInt // Trolley-Nr (Eintrag Schleuse, Austrag Weiche) + Weichen_Ziel : Word // Weichen-Ziel (Eintrag Schleuse, Austrag Weiche) + Schleuse -1 : Int // Schleuse, woher Ziel kam + Zwischen_Ziel : Word // Zwischen-Ziel + HMI : Struct + TrolleyID_Weiche : DInt // Trolley-Nr im Weichenbereich (IN:PLC, OUT:PLC) + WeichenZiel : DInt // Ziel im Weichenbereich (IN:PLC, OUT:PLC) + Weiche_resetten : Bool // Weiche resetten (IN:HMI, Out:PLC) + Rueckmld : Struct + RET_VAL_BLKMOV_Weiche : Int // Rückmeldung nach BLKMOV-Aufruf + RET_VAL_DL_Weichen : Byte // Rückmeldung nach DatenOut-Aufruf + RET_VAL_DL_Schleusen : Byte // Rückmeldung nach DatenOut-Aufruf + Error : "UErrOmniWeiche_2fach" + FahrKontrolle : Struct + Para_Mindestzeit : Int // BM erst nach dieser Zeit im Ziel + Para_Überwachungszeit : Int // BM nach dieser Zeit in Weiche verklemmt + Akt_Mindestzeitzeit : Int // BM erst nach dieser Zeit im Ziel + Akt_Überwachungszeit : Int // BM nach dieser Zeit in Weiche verklemmt + Leer_Zeit : Int // Lager ist frei [1s] + Schalttakte : DInt // Anzahl der getätigten Umschaltungen + Frei200 : Array[1..44] of Int + Temp: + Quelle : Any // Zeiger, wo Rein-Daten sind + Ziel : Any // Zeiger, FIFO-Stelle + Parameter : Word // Parameter + AR1Zeiger : DWord // Statt AR1 (ging nur bis DB-Länge <= 8191 Bytes) + AR1Start : DInt // Startwert mit Offset 0 + Bereich+1ID : Int + Bereich+1_DB : Int + Keine_Einfahrt : Bool // Keine Einfahrt angemeldet + Err_Bereich+1 : Bool + Weichen_Trolleys : Bool // Weichen-Trolleys vorhanden + ZielSensor_aktiv : Bool + Abzweig_Ziel : Bool + Gerade_Ziel : Bool + Antriebe_ein : Bool + Constant: + +--- NW 1: Parameter-Übergabe --- + L Weichen_Nr // Aufruf-Parameter (für Baustein beobachten) + + L 279 // Einsprung Weichen-DL + T Para.Weichen_DL_DB // vor Aufruf übergeben! + L 0 + T Para.Weichen_DL_DW + + L 274 // Einsprung Schleuse-DL + T Para.Schleusen_DL_DB // vor Aufruf übergeben! + L 0 + T Para.Schleusen_DL_DW + + SET + R ZielSensor_aktiv // Temp + R Weichen_Trolleys + R Antriebe_ein + R Abzweig_Ziel + R Gerade_Ziel + + +--- NW 2: Gesamt: Out-Bits zum Zurücksetzen --- + L Weichen_Nr + + SET +// R #Y_Weiche_gerade //Wegen Reset +// R #Y_Weiche_abzweig //Wegen Reset + + SET // Erst mal + R Dyn.Status.Weiche_frei + S Dyn.Status.Weiche_aktiv + + +--- NW 3: HMI-Zeug --- +// Von HMI: + A Dyn.HMI.Weiche_resetten + R Dyn.HMI.Weiche_resetten // von HMI + S Dyn.Status.Reset_aktiv + JCN HMI1 + + L 0 + T Dyn.Leer_Zeit // da kein Sk + T Dyn.FahrKontrolle.Akt_Mindestzeitzeit + T Dyn.FahrKontrolle."Akt_Überwachungszeit" + + SET + R Dyn.Error."Übzeit_Gerade" + R Dyn.Error."Übzeit_Abzweig" + +// An HMI: +HMI1: L Dyn.TrolleyID + T Dyn.HMI.TrolleyID_Weiche + + L Dyn.Weichen_Ziel + T Dyn.HMI.WeichenZiel + + +--- NW 4: Störungen nach Außen übergeben --- + L 0 + T "MB200" + + A Dyn.Error.Weichen_DL // Weichen-Datenliste fehlerhaft + = "M200.0" + A Dyn.Error.Undef_Weiche // undefinierte Weiche + = "M200.1" + A Dyn.Error.BLKMov // Fehler bei Block kopieren + = "M200.2" + A Dyn.Error."Undef_Bereich+1" + = "M200.3" + A Dyn.Error.Frei04 + = "M200.4" + A Dyn.Error.Frei05 + = "M200.5" + A Dyn.Error.Ziel_undefiniert + = "M200.6" + A Dyn.Error.Err_Schleusen_DL + = "M200.7" + A Dyn.Error."Err_Undef_Schleuse-1" + = "M201.0" + A Dyn.Error."Übzeit_Gerade" // BM bei Weiterfahrt in Weiche verklemmt (-> Antrieb stoppen) + = "M201.1" + A Dyn.Error."Übzeit_Abzweig" // BM bei Ausfahrt in Weiche verklemmt (-> Antrieb stoppen) + = "M201.2" + A Dyn.Error.Gerade_Sensor_aktiv + = "M201.3" + A Dyn.Error.Abzweig_Sensor_aktiv + = "M201.4" + A Dyn.Error.Gerade_Bereich_belegt + = "M201.5" + A Dyn.Error.Abzweig_Bereich_belegt + = "M201.6" + A Dyn.Status.Reset_aktiv + = Dyn.Error.Reset_aktiv + = "M201.7" + + L "MW200" + T Error // Schnittstelle nach Außen + +// Störung vorhanden: + L 0 + <>I // Ja ! + = Dyn.Status.Error_aktiv + +// Anzeige Start n. Störung aktivieren: + A Dyn.Error."Übzeit_Gerade" // BM bei Weiterfahrt in Weiche verklemmt (-> Antrieb stoppen) + O Dyn.Error."Übzeit_Abzweig" // BM bei Ausfahrt in Weiche verklemmt (-> Antrieb stoppen) + S hStOk + + +--- NW 5: Statische Weichen-Parameter holen --- + L Weiche.Weichen_Nr // Nummer der Weiche + L Weichen_Nr // Aufruf-Parameter + ==I // Identisch ? + R Dyn.Error.Weichen_DL // Weichendatenbank fehlerhaft + R Dyn.Error.Undef_Weiche // undefinierte Weiche + JC en06_Mig // Ja ! + + T "MW200" // Search-Daten + +CALL FC "DatenOut" (SSDB:=Para.Weichen_DL_DB, SSDW:=Para.Weichen_DL_DW, PARA:=WORD#16#0000, SEARCHDATEN:=P#M200.0, RE_VAL:="MB199", OUTDATEN:=P#M220.0, Position:="MW196") + + L "MB199" + T Dyn.Rueckmld.RET_VAL_DL_Weichen // Rückmeldung bei Datenbank-Zugriff (Gefälle-DL) + + JBI G_Ok + + A "M199.0" + = Dyn.Error.Weichen_DL // Weichendatenbank fehlerhaft + BEC + + SET + S Dyn.Error.Undef_Weiche // undefinierte Weiche + + BEU + +// Kennung + Datenbytes +G_Ok: SET + R Dyn.Error.Weichen_DL // Weichendatenbank fehlerhaft + R Dyn.Error.Undef_Weiche // undefinierte Weiche + + L 16#1004 // Kennung 10 + Word=04 + T LW0 // Any-Kennung, Datentyp + L 40 // Datenwords speichern + T LW2 // Wiederholungen + +// Quelle-Pointer erzeugen: + L 0 // Bei Merker = 0 ! + T LW4 // DB_Nummer + L 220 // Adresse + SLD 3 + L 16#8300_0000 // Kennung: Merker + OD + T LD6 // Kennung, Adresse + +CALL SYS "BLKMOV" (SRCBLK:=Quelle, RET_VAL:=Dyn.Rueckmld.RET_VAL_BLKMOV_Weiche, DSTBLK:=Weiche) // Datenliste-Daten speichern | #Ziel + + L Dyn.Rueckmld.RET_VAL_BLKMOV_Weiche // Rückmeldung + L 0 // Fehler vorhanden ? + <>I // Ja ! + = Dyn.Error.BLKMov // Error bei Block kopieren + BEC + + L Weiche.Weichen_Typ // Weichentyp = 1280 (HM-Weiche 2fach_Plus) + L 1280 // Dieser Aufruf-FB ? + ==I // Ja ! + JC en06_Mig + + SET + S Dyn.Error.Undef_Weiche // undefinierte Weiche + + L 0 // Weiche ungültig ! + T Weiche.Weichen_Nr // Nummer der Weiche + + BEU + +en06_Mig: NOP 0 + + +--- NW 6: + --- + AN Dyn.Status.Reset_aktiv + JC En06 + + SET + S Antrieb_Weiche_vor + S Antrieb_Weiche_gerade_vor // Antrieb gerade einschalten + S Antrieb_Weiche_abzweig_vor // Antrieb abzweig einschalten + + AN Antrieb_Weiche_aktiv + ON "1s-Impuls" + JC En06 + + L Dyn.Leer_Zeit // Zeit für LeerCheck [1s] + + +1 + T Dyn.Leer_Zeit // Zeit für LeerCheck [1s] + + L Weiche.Wartezeit_bis_Weiche_leer // Leer-Zeit erreicht ? + I // Ja ! + R Dyn.Error.Err_Schleusen_DL // Schleusen-Datenliste fehlerhaft + R Dyn.Error."Err_Undef_Schleuse-1" // undefinierte Schleuse-1 + JC En08 + +CALL FC "DatenOut" (SSDB:=Para.Schleusen_DL_DB, SSDW:=Para.Schleusen_DL_DW, PARA:=WORD#16#0000, SEARCHDATEN:=P#M200.0, RE_VAL:="MB199", OUTDATEN:=P#M220.0, Position:="MW196") + + L "MB199" + T Dyn.Rueckmld.RET_VAL_DL_Schleusen // Rückmeldung bei Datenbank-Zugriff (Weichen-DL) + + JBI W_Ok + + A "M199.0" + = Dyn.Error.Err_Schleusen_DL // Schleusen-Datenliste fehlerhaft + BEC + + SET + S Dyn.Error."Err_Undef_Schleuse-1" // undefinierte Schleuse-1 + + BEU + +W_Ok: L "MW224" // Rein-FIFO-DB + T SAVE.Schleusen_DB // Weichen-FIFO-DB + L 0 // sinnvoller Wert ? + <=I // Nein ! + S Dyn.Error."Err_Undef_Schleuse-1" // undefinierte Schleuse-1 + BEC + + L "MW226" // Schleuse -1 + T SAVE."Schleuse-1_DW" + +En08: NOP 0 + + +--- NW 8: + --- +// Antrieb zusätzlich starten: + A ErrQuit // Überwachungszeit abgelaufen quittieren + S Antrieb_Weiche_vor // Weichenantrieb starten + S Antrieb_Weiche_gerade_vor // Antrieb gerade einschalten + S Antrieb_Weiche_abzweig_vor // Antrieb abzweig einschalten + + AN ErrQuit + AN Keine_Einfahrt + JC En08_Mig + +// Störungen löschen: + SET + R Dyn.Error.Ziel_undefiniert + R Dyn.Error.Err_Schleusen_DL + R Dyn.Error."Err_Undef_Schleuse-1" + R Dyn.Error."Übzeit_Gerade" + R Dyn.Error."Übzeit_Abzweig" + R Dyn.Error.Gerade_Sensor_aktiv + R Dyn.Error.Abzweig_Sensor_aktiv + R Dyn.Error.Gerade_Bereich_belegt + R Dyn.Error.Abzweig_Bereich_belegt + +// Kann nur über Reset zurückgesetzt werden: +// / R #Dyn.Error.Weichen_DL +// / R #Dyn.Error.Undef_Weiche +// / R #Dyn.Error.BLKMov +// / R #Dyn.Error."Undef_Bereich+1" +// / R #Dyn.Error.Frei04 +// / R #Dyn.Error.Frei05 +// / R #Dyn.Error.Reset_aktiv//Reset ist aktiv + +En08_Mig: NOP 0 + + +--- NW 9: Einfahrt angemeldet/reserviert ? --- + A Keine_Einfahrt // Also keine Schleuse -1 aktiv + AN Dyn.Status.Warten_auf_Mindestzeit + O Dyn.Error.Err_Schleusen_DL // Schleusen-Datenliste fehlerhaft + O Dyn.Error."Err_Undef_Schleuse-1" // undefinierte Schleuse-1 + JCN Schalt // Negierter Sprung! + +// Einsprung löschen: + L 0 + T SAVE.Schleusen_DB + T SAVE."Schleuse-1_DW" + +// Weichendaten löschen: + L DINT#0 + T Dyn.TrolleyID + L 0 + T Dyn.Weichen_Ziel + T Dyn.Zwischen_Ziel + T Dyn.FahrKontrolle.Akt_Mindestzeitzeit + T Dyn.FahrKontrolle."Akt_Überwachungszeit" + + SET + R Dyn.Status.Kein_StartOk + R Dyn.Status.MindestZeit_ok + R Dyn.Status.Ziel_erreicht + R Dyn.Status.Weiche_geradeaus + R Dyn.Status.Weiche_abzweigen + + JU Ret // Weichen-Checkerei überspringen + + +--- NW 10: Weiche aufgrund vom Weichen-Ziel checken --- +// Ziel-Check für Kontrolle: +Schalt: L Dyn.Weichen_Ziel + L Weiche.Abzweig.Ziel // Abzweig-Ziel? + ==I // Ja! + = Abzweig_Ziel + + CAC + L Weiche.Gerade.Ziel // Gerade-Ziel? + ==I // Ja! + = Gerade_Ziel + +// Sind noch Teile im Weichenbereich?: + L SAVE."Schleuse-1_DW" + ITD + T AR1Start // Startwert mit Offset 0 + + L AR1Start // Startwert mit Offset 0 + + DINT#162 + SLD 3 + T AR1Zeiger // Statt Dyn.Bereichsstop (ging nur bis DB-Länge <= 8191 Bytes) + + OPN DB[SAVE.Schleusen_DB] // FABE+ -DB öffnen + + L DBW [AR1Zeiger] // Raus-Trolleys von Schleuse-1 (DBW162) + L 0 // Teile vorhanden? + >I // JA ! + = Weichen_Trolleys + +// Evtl. Weiche umschalten: + A Weichen_Trolleys // Trolleys im Weichenbereich! + A( + O Dyn.Status.Weiche_geradeaus // Weiche auf Gerade schalten + O Dyn.Status.Weiche_abzweigen // Weiche auf Abzweig schalten + ) + JC en10 + + A Dyn.Status.MindestZeit_ok + R Dyn.Status.Warten_auf_Mindestzeit + + A Dyn.Status.Warten_auf_Mindestzeit + JC en10 + + A Dyn.Status.Weiche_abzweigen // Weiche auf Abzweig schalten + O Dyn.Status.Weiche_geradeaus // Weiche auf Gerade schalten + O Dyn.Status.Warten_auf_Mindestzeit + R Dyn.Error.Ziel_undefiniert + R Dyn.Error.Gerade_Sensor_aktiv + R Dyn.Error.Abzweig_Sensor_aktiv + R Dyn.Error.Gerade_Bereich_belegt + R Dyn.Error.Abzweig_Bereich_belegt + JC en10 + + AN Fahren_Ok + = Dyn.Status.Kein_StartOk + JC Ret + +// Ziel-Check zum Schalten: + L Dyn.Weichen_Ziel + L 0 + ==I + S Dyn.Error.Ziel_undefiniert + JC New + + CAC + L Weiche.Abzweig.Ziel // Abzweig-Ziel? + ==I // Ja! + JC Abzweigen + + CAC + L Weiche.Gerade.Ziel // Gerade-Ziel? + ==I // Ja! + JC Gerade + + SET + S Dyn.Error.Ziel_undefiniert + + JU New + +Gerade: NOP 0 +// Gerade-Fahrt gewünscht************************************************** +// Ziel-Sensor-Check: + A B_Ziel_gerade + = Dyn.Error.Gerade_Sensor_aktiv + A Dyn.Error.Gerade_Sensor_aktiv // Muss erst quittiert werden! + JC New + +// Trolley geradeaus fahren: + SET + S Dyn.Status.Weiche_geradeaus // Weiche auf Gerade schalten + R Dyn.Status.Weiche_abzweigen // Weiche auf Abzweig schalten + S Dyn.Status.Warten_auf_Mindestzeit + +// Zeiten speichern: + L Weiche.Gerade.Mindestzeit // Nach dieser Zeit kann Trolley erst aus Weiche sein + T Dyn.FahrKontrolle.Para_Mindestzeit + L Weiche.Gerade."Überwachungszeit" // Nach dieser Zeit muss Trolley Zielbereich erreicht haben + T Dyn.FahrKontrolle."Para_Überwachungszeit" + + JU en10 + +Abzweigen: NOP 0 +// Abzweig-Fahrt gewünscht************************************************** +// Ziel-Sensor-Check: + A B_Ziel_abzweig + = Dyn.Error.Abzweig_Sensor_aktiv + A Dyn.Error.Abzweig_Sensor_aktiv // Muss erst quittiert werden! + JC New + +// Trolly abzweigen fahren: + SET + S Dyn.Status.Weiche_abzweigen // Weiche auf Abzweig schalten + R Dyn.Status.Weiche_geradeaus // Weiche auf Gerade schalten + S Dyn.Status.Warten_auf_Mindestzeit + +// Zeiten speichern: + L Weiche.Abzweig.Mindestzeit // Nach dieser Zeit kann Trolley erst aus Weiche sein + T Dyn.FahrKontrolle.Para_Mindestzeit + L Weiche.Abzweig."Überwachungszeit" // Nach dieser Zeit muss Trolley Zielbereich erreicht haben + T Dyn.FahrKontrolle."Para_Überwachungszeit" + + JU en10 + +New: AN ErrQuit + JC en10 + + L 0 // Reservierung löschen + T Dyn."Schleuse -1" + +en10: NOP 0 + + +--- NW 11: Mindestzeit / Überwachungszeit --- + A Gerade_Ziel + A( + ON Y_Weiche_gerade + ON Antrieb_Gerade_aktiv + ) + O + A Abzweig_Ziel + A( + ON Y_Weiche_abzweig + ON Antrieb_Abzweig_aktiv + ) + JC W011 + +// Mindestzeit neu triggern: (von Schleuse -1) + A Dyn.Status.MindestZeit_nachtriggern + R Dyn.Status.MindestZeit_nachtriggern + S Dyn.Status.Warten_auf_Mindestzeit + JCN X011 // Negierter Sprung + +W011: L 0 + T Dyn.FahrKontrolle.Akt_Mindestzeitzeit + + JU y011 + +// Zeiten aufaddieren: +X011: AN "1s-Impuls" // 1s-Impuls + ON Antrieb_Weiche_aktiv + JC X08E + + L Dyn.FahrKontrolle.Akt_Mindestzeitzeit + + 1 + T Dyn.FahrKontrolle.Akt_Mindestzeitzeit + +y011: L Dyn.FahrKontrolle.Akt_Mindestzeitzeit + L Dyn.FahrKontrolle.Para_Mindestzeit + >=I + = Dyn.Status.MindestZeit_ok + JCN X080 + + T Dyn.FahrKontrolle.Akt_Mindestzeitzeit + +X080: A Dyn.Error."Übzeit_Gerade" + O Dyn.Error."Übzeit_Abzweig" + ON "1s-Impuls" // 1s-Impuls + ON Antrieb_Weiche_aktiv + JC X08E + + L Dyn.FahrKontrolle."Akt_Überwachungszeit" + + 1 + T Dyn.FahrKontrolle."Akt_Überwachungszeit" + + L Dyn.FahrKontrolle."Para_Überwachungszeit" + Inilauf gestartet + Puffer_nicht_leer_IN : Bool // Puffer oben nicht leer > Inilauf gestartet + Puffer_initialisieren_IN : Bool // VollPuffer oben initialisieren + MindestZeit_ok_IN : Bool // Schleuse ist MindestZeit geöffnet + Frei11 : Bool + Frei12 : Bool + Frei13 : Bool + Alles_ausfahren_OUT : Bool // Alle Trolleys ausfahren + Eintrag_DL_Leerliste_erfolgt : Bool // Eintrag in DLVPPuffer_leer (DB100) erfolgt + Eintrag_DL_Reinliste_erfolgt : Bool // Eintrag in DLVPPuffer_ShopGroup rein (DB101) erfolgt + Eintrag_DL_Abrufliste_erfolgt : Bool // Eintrag in DLVPPuffer_ShopGroup raus (DB901) erfolgt + Puffer : "UDLHMVollPuffer" // Statische VollPufferdaten (aus DL) + Dyn : Struct // Dynamische Daten + Status : Struct + Puffer_leer_OUT : Bool // Puffer oben ist leer + Puffer_hat Platz_OUT : Bool // Puffer oben hat noch Kapazität + Kein_neuer_Trolley_kommt_OUT : Bool // Puffer unten zeitlang ohne neuen Trolley + Leer_Check_OUT : Bool // VollPuffer unten wird auf leer gecheckt + Reset_aktiv_OUT : Bool // Reset unten aktiv + Trolley_nicht_in_Schleuse_OUT : Bool // Trolley unten fährt nicht in Schleuse > Inilauf gestartet + Puffer_nicht_leer_OUT : Bool // Puffer unten nicht leer > Inilauf gestartet + Puffer_initialisieren_OUT : Bool // VollPuffer unten initialisieren + MindestZeit_ok_OUT : Bool // Schleuse ist MindestZeit geöffnet + Undef.Trolley_in_Schleuse_OUT : Bool // Undefinierter Trolley in Schleuse unten erkannt + Trolley_wartet_Auftrag : Bool // Trolley wartet auf Auftrag (unten) + Trolley_wartet_Bereich+1 : Bool // Trolley wartet auf Bereich +1 (unten) + Einen_VollTrolley_ausfahren_OUT : Bool // Einen Voll-Trolley ausfahren + Trolley_fährt_aus_OUT : Bool // Trolley fährt aus (unten) + Trolley_draussen_Out : Bool // Trolley ist ausgefahren + Error_aktiv : Bool // Störung vorhanden + TrolleyID_Einfahrt : DInt // Trolley-Nr ist eingefahren + TrolleyID_Schleuse_IN : DInt // Trolley-Nr in Schleuse oben (Daten) + TrolleyID_Schleuse_Out : DInt // Trolley-Nr in Schleuse unten (Daten) + ShopGroup_IN : DInt // Diese Shopgruppe ist im oberen VollPuffer + ShopGroup_OUT : DInt // Diese Shopgruppe ist im unteren VollPuffer + ShopGroup_Auftrag_zum_Ausfahren : DInt // ShopGroup zum Ausfahren (FFFF = akt.Trolley ausfahren) + HMI : Struct + ShopGroup_IN : Int // ShopGroup im VollPuffer oben (IN:PLC, OUT:PLC) + ShopGroup_OUT : Int // ShopGroup im VollPuffer unten (IN:PLC, OUT:PLC) + Voll_Trolleys_IN : Int // Anzahl Trolleys oben (IN:PLC, OUT:PLC) + Voll_Trolleys_OUT : Int // Anzahl Trolleys unten (IN:PLC, OUT:PLC) + Res_Trolleys_IN : Int // Anzahl reservierte Trolleys oben (IN:PLC, OUT:PLC) + Frei_Plätze_IN : Int // Freiplätze für Trolleys (IN:PLC, OUT:PLC) + TrolleyID_Schleuse_IN : DInt // Trolley-Nr in Schleuse oben (IN:PLC, OUT:PLC) + TrolleyID_Schleuse_OUT : DInt // Trolley-Nr in Schleuse unten (IN:PLC, OUT:PLC) + Schleuse_resetten_IN : Bool // Schleuse resetten oben (IN:HMI, Out:PLC) + Schleuse_resetten_OUT : Bool // Schleuse resetten unten (IN:HMI, Out:PLC) + Puffer_initialisieren : Bool := 1 // VollPuffer initialisieren (IN:HMI, Out:PLC) + Einlagern_gesperrt : Bool // Einlagern gesperrt (IN:HMI, OUT:HMI) + AusLagern_gesperrt : Bool // AusLagern gesperrt (IN:HMI, OUT:HMI) + Sk_IN : "USk_Omni" // Status der Schrittkette Schleuse IN (oben) + Sk_OUT : "USk_Omni" // Status der Schrittkette Schleuse OUT (unten) + TrolleyID_doppelt : DInt // TrolleyID doppelt (eingefahrener Trolley) + TrolleyID_unbekannt_Einfahrt : DInt // TrolleyID unbekannt (eingefahrener Trolley) + TrolleyID_unbekannt_Schleuse_OUT : DInt // TrolleyID unbekannt (Trolley in Schleuse unten) + Rueckmld : Struct + RET_VAL_BLKMOV_VollPuffer : Int // Rückmeldung nach BLKMOV-Aufruf + RET_VAL_DL_VollPuffer : Byte // Rückmeldung nach DatenOut-Aufruf + RET_VAL_DL_Res_OUT : Byte // Rückmeldung nach DatenOut-Aufruf + RET_VAL_DL_VollPufferTrolley_IN : Byte // Rückmeldung nach DatenIN-Aufruf + RET_VAL_DL_VollPufferTrolley_OUT : Byte // Rückmeldung nach DatenOut-Aufruf + Error : "UErrHMVollpuffer" + Stau_Zeit : Int // Sensor B_Einfahrt ist belegt [1s] + Mindest_Zeit_IN : Int // Sensor B_in_Schleuse oben ist frei [1s] + Mindest_Zeit_OUT : Int // Sensor B_in_Schleuse unten ist frei [1s] + Leer_Zeit_IN : Int // Puffer oben ist frei [1s] + Leer_Zeit_OUT : Int // Puffer unten ist frei [1s] + Stop_Ursache_IN : Word // Stop-Stelle: Nw + Position + Stop_Ursache_OUT : Word // Stop-Stelle: Nw + Position + Vereinzelungstakte_OUT : DInt // Anzahl der getätigten Vereinzelungstakte + TrolleyID_ausgefahren : DInt // TrolleyID des ausgefahrenen Trolleys + ShopGroup_EFL_Gespeichert : DInt // In EinfahrListe gespeicherte ShopGroup + ShopGroup_AFL_Gespeichert : DInt // In AusfahrListe gespeicherte ShopGroup + Reservierungs_DL : Struct // AB DW200: Liste der resevierter Trolleys + Datenlistenkopf : Struct + KOPF : Word := WORD#16#DA04 // Datenliste-Kennnung (DA) / Datensatzlänge in Word (1 - 128) + LAENGE : Int := 12 // Länge der Datenliste (maximale Anzahl der Datensätze) + STAMMDATEN : Int := 2 // Stammdatenlänge in Word (1 - 9) + INDDB : Int // Indizierter DB (nur bei Stammdaten = 1 erlaubt !!!) + LAENGEINDDB : Int // Länge des indizierten DB in Word (nur bei Stammdaten = 1 erlaubt !!!) + INDDATEN_WANDEL_FC : Int // FC zum Wandeln der indizierte Daten (nur bei Stammdaten = 1 erlaubt !!!) + LETZTERZUGRIFF : Int // Speicherung des letzten Zugriffs + Belegt14 : Int // reserviert von Sort-Datenliste + AnzahlEintraege : Int // Anzahl der eingetragenen Datensätze (nicht bei ind.Zugriff!) + Reserve18 : Int // Reserve + Res_Trolley : Array[1..12] of Struct // Reservierter Trolley für VollPuffer + Trolley_ID : DInt // Trolley_ID + ShopGroup : DInt // Shop-Gruppe auf Trolley + Endekennung : Word := WORD#16#DAEE // Datensort-Ende-Kennung (DBEE) + Res350 : Array[1..16] of Int + Trolley_DL_Einfahrt : Struct // AB DW350: Liste der Trolleys im VollPuffer + Datenlistenkopf : Struct + KOPF : Word := WORD#16#DA04 // Datenliste-Kennnung (DA) / Datensatzlänge in Word (1 - 128) + LAENGE : Int := 12 // Länge der Datenliste (maximale Anzahl der Datensätze) + STAMMDATEN : Int := 2 // Stammdatenlänge in Word (1 - 9) + INDDB : Int // Indizierter DB (nur bei Stammdaten = 1 erlaubt !!!) + LAENGEINDDB : Int // Länge des indizierten DB in Word (nur bei Stammdaten = 1 erlaubt !!!) + INDDATEN_WANDEL_FC : Int // FC zum Wandeln der indizierte Daten (nur bei Stammdaten = 1 erlaubt !!!) + LETZTERZUGRIFF : Int // Speicherung des letzten Zugriffs + Belegt14 : Int // reserviert von Sort-Datenliste + AnzahlEintraege : Int // Anzahl der eingetragenen Datensätze (nicht bei ind.Zugriff!) + Reserve18 : Int // Reserve + VollPuffer_Trolley_IN : Array[1..12] of Struct // Trolley im VollPuffer + Trolley_ID : DInt // Trolley_ID + Abruf_ShopGroup : DInt // Reserviert für Ausfahrt + Endekennung : Word := WORD#16#DAEE // Datensort-Ende-Kennung (DBEE) + Res500 : Array[1..16] of Int + Trolley_DL_Ausfahrt : Struct // AB DW350: Liste der Trolleys im VollPuffer + Datenlistenkopf : Struct + KOPF : Word := WORD#16#DA04 // Datenliste-Kennnung (DA) / Datensatzlänge in Word (1 - 128) + LAENGE : Int := 12 // Länge der Datenliste (maximale Anzahl der Datensätze) + STAMMDATEN : Int := 2 // Stammdatenlänge in Word (1 - 9) + INDDB : Int // Indizierter DB (nur bei Stammdaten = 1 erlaubt !!!) + LAENGEINDDB : Int // Länge des indizierten DB in Word (nur bei Stammdaten = 1 erlaubt !!!) + INDDATEN_WANDEL_FC : Int // FC zum Wandeln der indizierte Daten (nur bei Stammdaten = 1 erlaubt !!!) + LETZTERZUGRIFF : Int // Speicherung des letzten Zugriffs + Belegt14 : Int // reserviert von Sort-Datenliste + AnzahlEintraege : Int // Anzahl der eingetragenen Datensätze (nicht bei ind.Zugriff!) + Reserve18 : Int // Reserve + VollPuffer_Trolley_Out : Array[1..12] of Struct // Trolley im VollPuffer + Trolley_ID : DInt // Trolley_ID + Abruf_ShopGroup : DInt // Reserviert für Ausfahrt + Endekennung : Word := WORD#16#DAEE // Datensort-Ende-Kennung (DBEE) + Res700 : Array[1..41] of Int // Reserve + None: + VollPuffer_Nr : Int // Nummer der VollPuffer + Puffer_Typ : Int // VollPufferntyp = 276 (VollPuffer) + Puffer_Position : Word // VollPuffer-Position (für Gesamt-TrolleyDatenliste) + Puffer_Position_Inks : Int // VollPuffer-Position_Inks (für Ausfahrsteuerung) + None: + Reset : Bool := 1 + None: + Reset : Bool := 1 + Temp: + Quelle : Any // Zeiger, wo Rein-Daten sind + Ziel : Any // Zeiger, FIFO-Stelle + Ueb_akt : Bool // Überwachungszeit aktivieren + Weiter : Bool // Weiterschaltbedingung ist erfüllt + Warte_neu : Bool // Wartezeit neu triggern + Warte_stop : Bool // Wartezeit stoppen + 1.Trolley_IN : Bool + Neu_Trolley_in_Puffer_IN : Bool // Neuer Trolley in Puffer eingefahren + 1.Trolley_OUT : Bool + Inks_Ok : Bool // Starten aufgrund der Inks erlaubt + Puffer_IN_ist_leer : Bool // VollPuffer zeitlang ohne Sensor + Puffer_OUT_ist_leer : Bool // VollPuffer zeitlang ohne Sensor + Abruf_Trolley_vorne : Bool // Abruf-Trolley ist in Schleuse + Oberen_Puffer_Freigeben : Bool + Oberen_Puffer_nichts_einfahren : Bool + Puffer_B : Bool + GesamtAnzahl : Int + SSDW : Int + Schleife : Word // Loopzähler + Trolley : Int + Position : Int + Akive_ShopGroup : DInt + EndZiel : Word + ZwischenZiel : Word + ShopGroup : DInt + Standort : Word + Error_Check : Bool + Constant: + +--- NW 1: Parameter-Übergabe --- + L VollPuffer_Nr + + L 275 // Einsprung Puffer-DL + T Para.VollPuffer_DL_DB // vor Aufruf übergeben! + L 0 + T Para.VollPuffer_DL_DW + + +--- NW 2: Anzeige OP --- + L 252 // Bereichsstop aktiv + AN Dyn.Sk_OUT.Bereich_ok // Also: Bereichsstop / Not-Aus + JC w010 + + L 253 + AN Dyn.Sk_OUT.Auto_akt // Keine Betriebsart + AN Dyn.Sk_OUT.Hand_akt + JC w010 + + L 255 // Handbetrieb aktiv + A Dyn.Sk_OUT.Hand_akt + JC w010 + + L Dyn.Sk_IN.Akt_Schritt // Aktiver Schritt + T Dyn.Sk_IN.OP_Schritt + L Dyn.Sk_OUT.Akt_Schritt // Aktiver Schritt + T Dyn.Sk_OUT.OP_Schritt + + JU OP_Ok + +w010: T Dyn.Sk_IN.OP_Schritt + T Dyn.Sk_OUT.OP_Schritt + +OP_Ok: NOP 0 + + +--- NW 3: Out-Bits zum Zurücksetzen / Antrieb plus starten --- + SET + R Y_Schleuse_Auf_IN + R Y_Schleuse_Auf_OUT + R Puffer_IN_ist_leer + R Puffer_OUT_ist_leer + + SET // Jeden Zyklus neu + R Dyn.Status.Trolley_wartet_Auftrag + R Dyn.Status."Trolley_wartet_Bereich+1" + R Dyn.Status."Trolley_fährt_aus_OUT" + R Dyn.Status.Trolley_draussen_Out + R "1.Trolley_IN" + R "1.Trolley_OUT" + R Neu_Trolley_in_Puffer_IN + + A Dyn.Sk_IN.Reset + O Dyn.Sk_IN.Reset_Akt + = Status2.Reset_aktiv_IN + + A Dyn.Sk_OUT.Reset + O Dyn.Sk_OUT.Reset_Akt + = Dyn.Status.Reset_aktiv_OUT + + SET + R Inks_Ok + + A Dyn.Sk_OUT.Auto_akt + = Dyn.Sk_IN.Auto_akt + A Dyn.Sk_OUT.Bereich_ok + = Dyn.Sk_IN.Bereich_ok + +// Antrieb zusätlich starten: + A ErrQuit // Überwachungszeit abgelaufen quittieren + S Antrieb_plus_start // Kreisel-Antrieb plus starten + + +--- NW 4: HMI-Zeug --- +// Von HMI: + A Dyn.HMI.Schleuse_resetten_IN + R Dyn.HMI.Schleuse_resetten_IN + S Dyn.Sk_IN.Reset // SK zurücksetzen + + A Dyn.HMI.Schleuse_resetten_OUT + R Dyn.HMI.Schleuse_resetten_OUT + S Dyn.Sk_OUT.Reset // SK zurücksetzen + + A Dyn.HMI.Puffer_initialisieren + R Dyn.HMI.Puffer_initialisieren + S Status2.Puffer_initialisieren_IN + S Dyn.Status.Puffer_initialisieren_OUT + + A Dyn.HMI.Einlagern_gesperrt // Wird unten direkt verarbeitet + + A Dyn.HMI.AusLagern_gesperrt // Wird unten direkt verarbeitet + + CLR + +// An HMI: + L Dyn.ShopGroup_IN + T Dyn.HMI.ShopGroup_IN + L Dyn.ShopGroup_OUT + T Dyn.HMI.ShopGroup_OUT + + L Dyn.Trolley_DL_Einfahrt.Datenlistenkopf.AnzahlEintraege + T Dyn.HMI.Voll_Trolleys_IN + L Dyn.Trolley_DL_Ausfahrt.Datenlistenkopf.AnzahlEintraege + T Dyn.HMI.Voll_Trolleys_OUT + + L Dyn.Reservierungs_DL.Datenlistenkopf.AnzahlEintraege + T Dyn.HMI.Res_Trolleys_IN + + L Puffer.MaxAnzahl_Einfahrt + L Dyn.Reservierungs_DL.Datenlistenkopf.AnzahlEintraege + -I + L Dyn.Trolley_DL_Einfahrt.Datenlistenkopf.AnzahlEintraege + -I + T Dyn.HMI."Frei_Plätze_IN" + + L Dyn.TrolleyID_Schleuse_IN + T Dyn.HMI.TrolleyID_Schleuse_IN + L Dyn.TrolleyID_Schleuse_Out + T Dyn.HMI.TrolleyID_Schleuse_OUT + + +--- NW 5: Oberen Puffer für neue ShopGroup freigeben? --- + A( + L "DLVollPuffer_leer".Datenlistenkopf.AnzahlEintraege + L 0 // Keine Leer-Puffer mehr vorhanden? + ==I // Ja ! + O Dyn.Status.Puffer_leer_OUT // unterer Puffer ist leer + O + A Status2.Puffer_leer_IN // oberer Puffer ist leer + A Status2.Alles_ausfahren_OUT + ) + A Status2.Puffer_leer_IN // Könnte mit neuer ShopGroup bestückt werden! + = Oberen_Puffer_Freigeben + JCN En05 // Negierter Sprung + + L DINT#0 + T Dyn.ShopGroup_IN + +En05: NOP 0 + + +--- NW 6: Schrittkette IN zurücksetzen --- + AN Dyn.Sk_IN.Reset // SK zurücksetzen + JC INen04 + +// Schrittkette zurücksetzen: +// Automatischer Inilauf bei Reset, falls Trolley nicht in Schleuse: + A Dyn.Error.Err_Trolley_nicht_in_Schleuse_IN + S Status2.Trolley_nicht_in_Schleuse_IN + S Status2.Puffer_initialisieren_IN // Damit Einfahren blockiert wird + + L 0 // Schritt 0: Warten + T Dyn.Sk_IN.Akt_Schritt + + L 0 // Zeitwert löschen + T Dyn.Sk_IN.Terr_Zelle + T Dyn.Sk_IN.Tok_Zelle + T Dyn.Leer_Zeit_IN + + SET + R Dyn.Error.Err_BLKMov // Error bei Block kopieren + R Dyn.Sk_IN.Reset // SK zurücksetzen + R Dyn.Sk_IN.Err_Schritt // Undefinierter Schritt + R Dyn.Sk_IN.Err_Uebzeit // Sofort weiter ! + S Dyn.Sk_IN.Reset_Akt // Reset ist aktiv + + SET + R Dyn.Error.Puffer_DL // VollPuffer-Datenliste fehlerhaft + R Dyn.Error.Undef_Puffer // undefiniertes VollPuffer + R Status2.Trolley_nicht_in_Schleuse_IN // Trolley fährt nicht in Schleuse + R Status2.Puffer_nicht_leer_IN // Puffer unten nicht leer + R Dyn.Error.Err_Uebzeit // Überwachungzeit ist abgelaufen + R Dyn.Error.Err_Schritt // Schritt-Nummer ist nicht definiert + R Dyn.Error.Err_Stau_Einfahrt // Stau am VollPuffer-Eingang + R Dyn.Error.Err_BLKMov + + L 0 + T Dyn.Stau_Zeit // Sensor B_VorSep ist belegt [1s] + T Dyn.Mindest_Zeit_IN // Sensor B_VorSep ist frei [1s] + T SAVE.Weichen_DB + T SAVE.Weichen_DW + + JU OUT_Sk + +INen04: NOP 0 + + +--- NW 7: Schrittkette OUT zurücksetzen --- + AN Dyn.Sk_OUT.Reset // SK zurücksetzen + JC en04 + +// Schrittkette zurücksetzen: +// Automatischer Inilauf bei Reset, falls Trolley nicht in Schleuse: + A Dyn.Error.Err_Trolley_nicht_in_Schleuse_OUT + S Dyn.Status.Trolley_nicht_in_Schleuse_OUT + S Dyn.Status.Puffer_initialisieren_OUT // Damit Einfahren blockiert wird + + L 0 // Schritt 0: Warten + T Dyn.Sk_OUT.Akt_Schritt + + L 0 // Zeitwert löschen + T Dyn.Sk_OUT.Terr_Zelle + T Dyn.Sk_OUT.Tok_Zelle + T Dyn.Leer_Zeit_OUT + + SET + R Status2.Alles_ausfahren_OUT + R Dyn.Error.Err_BLKMov // Error bei Block kopieren + R Dyn.Sk_OUT.Reset // SK zurücksetzen + R Dyn.Sk_OUT.Err_Schritt // Undefinierter Schritt + R Dyn.Sk_OUT.Err_Uebzeit // Sofort weiter ! + S Dyn.Sk_OUT.Reset_Akt // Reset ist aktiv + + SET + R Dyn.Error.Puffer_DL // VollPuffer-Datenliste fehlerhaft + R Dyn.Error.Undef_Puffer // undefiniertes VollPuffer + R Dyn.Status.Trolley_nicht_in_Schleuse_OUT // Trolley fährt nicht in Schleuse + R Dyn.Status.Puffer_nicht_leer_OUT // Puffer unten nicht leer + R Dyn.Error.Err_Uebzeit // Überwachungzeit ist abgelaufen + R Dyn.Error.Err_Schritt // Schritt-Nummer ist nicht definiert + R Dyn.Error.Err_Stau_Einfahrt // Stau am VollPuffer-Eingang + R Dyn.Error.Err_BLKMov + + L 0 + T Dyn.Stau_Zeit // Sensor B_VorSep ist belegt [1s] + T Dyn.Mindest_Zeit_OUT // Sensor B_VorSep ist frei [1s] + T SAVE.Weichen_DB + T SAVE.Weichen_DW + +// Defaultwerte übergeben: + L 0 // Damit statische Werte neu aus Datenbank geholt werden ! + T Puffer.VollPuffer_Nr // Nummer des VollPuffers + + BEU + +en04: NOP 0 + + +--- NW 8: Störungen nach Außen übergeben --- + L 0 + T "MW200" + + A Dyn.Error.Puffer_DL // VollPuffer-Datenliste fehlerhaft + = "M200.0" + A Dyn.Error.Undef_Puffer // undefiniertes VollPuffer + = "M200.1" + A Dyn.Error.Err_Trolley_nicht_in_Schleuse_OUT // Trolley fährt nicht in untere Schleuse + = "M200.2" + A Dyn.Sk_IN.Err_Uebzeit + O Dyn.Sk_OUT.Err_Uebzeit + = Dyn.Error.Err_Uebzeit // Überwachungzeit ist abgelaufen + = "M200.3" + NEG + R Dyn.Sk_OUT.Err_Uebzeit_AnzOk + A Dyn.Sk_OUT.Err_Schritt + = Dyn.Error.Err_Schritt // Schritt-Nummer ist nicht definiert + = "M200.4" + A Dyn.Error.Err_Stau_Einfahrt // Stau am VollPuffer-Eingang + = "M200.5" + A Dyn.Error.Err_BLKMov // Error bei Block kopieren + = "M200.6" + A Dyn.Error.Err_Trolley_raus_OUT // Trolley fährt nicht aus unterer Schleuse + = "M200.7" + A Dyn.Error.Err_Puffer_nicht_leer_OUT // Trolley unten in Schleuse, obwohl keine Daten! Initialisieren hat gestartet! + = "M201.0" + A Dyn.Error.Err_Trolley_nicht_in_Schleuse_IN // Trolley fährt nicht in mittlere Schleuse + = "M201.1" + A Dyn.Error.Err_Trolley_raus_IN // Trolley fährt nicht aus mittlere Schleuse + = "M201.2" + A Dyn.Error.Err_Puffer_nicht_leer_IN // Trolley mittig in Schleuse, obwohl keine Daten! Initialisieren hat gestartet! + = "M201.3" + CLR + = "M201.4" + A Dyn.Error.Err_Raus_Sensor + = "M201.5" + CLR + = "M201.6" + A Dyn.Sk_OUT.Reset_Akt // Reset ist aktiv + = Dyn.Error.Reset_aktiv + = "M201.7" + +// Andere Meldung als Überwachungszeit aktiv ?: + L "MW200" + L 2#1111_0111_1111_1111 + AW + L 2#0000_0000_0000_0000 // Andere Meldung als Üb.zeit aktiv ? + <>I // Ja ! + ON Dyn.Sk_OUT.Err_Uebzeit_AnzOk // Störung anzeigen ok, da 2.Zyklus aktiv ! + R "M200.3" // Üb.Zeit-Meldung nicht an PC senden + + A Dyn.Sk_OUT.Err_Uebzeit + S Dyn.Sk_OUT.Err_Uebzeit_AnzOk // Störung anzeigen ok, da 2.Zyklus aktiv ! + + L "MW200" + T Error // Schnittstelle nach Außen + +// Störung vorhanden: + L 0 + <>I // Ja ! + = Dyn.Status.Error_aktiv + CLR // Es gibt keine Quittier-Störung! + A Dyn.Error.Err_Uebzeit // Überwachungzeit ist abgelaufen + S hStOk + +// Störungen pro Zyklus neu erzeugen: + SET + R Dyn.Error.Puffer_DL // VollPuffer-Datenliste fehlerhaft + R Dyn.Error.Undef_Puffer // undefiniertes VollPuffer + R Dyn.Error.Err_Schritt // Schritt-Nummer ist nicht definiert + R Dyn.Error.Err_BLKMov + R Dyn.Error.Err_Puffer_nicht_leer_OUT // Trolley unten in Schleuse, obwohl keine Daten! Initialisieren hat gestartet! + R Dyn.Error.Err_Trolley_nicht_in_Schleuse_OUT // Trolley fährt nicht in unterer Schleuse + R Dyn.Error.Err_Trolley_raus_OUT // Trolley fährt nicht aus unterer Schleuse + R Dyn.Error.Err_Puffer_nicht_leer_IN // Trolley mittig in Schleuse, obwohl keine Daten! Initialisieren hat gestartet! + R Dyn.Error.Err_Trolley_nicht_in_Schleuse_IN // Trolley fährt nicht in mittlere Schleuse + R Dyn.Error.Err_Trolley_raus_IN // Trolley fährt nicht aus mittlere Schleuse + R Dyn.Error.Err_Raus_Sensor + + +--- NW 9: Statische VollPuffer-Parameter holen --- + L Puffer.VollPuffer_Nr // Nummer des VollPuffers + L VollPuffer_Nr // Aufruf-Parameter + ==I // Identisch ? + R Dyn.Error.Puffer_DL // VollPufferdatenbank fehlerhaft + R Dyn.Error.Undef_Puffer // undefiniertes VollPuffer + JC en06 // Ja ! + + T "MW200" // Search-Daten + +CALL FC "DatenOut" (SSDB:=Para.VollPuffer_DL_DB, SSDW:=Para.VollPuffer_DL_DW, PARA:=WORD#16#0000, SEARCHDATEN:=P#M200.0, RE_VAL:=Dyn.Rueckmld.RET_VAL_DL_VollPuffer, OUTDATEN:=P#M220.0, Position:="MW196") + + JBI G_Ok + + A "M199.0" + JCN w060 + + SET + = Dyn.Error.Puffer_DL // VollPufferdatenbank fehlerhaft + + L 16#A061 + T Dyn.Stop_Ursache_OUT + + BEU + +w060: SET + S Dyn.Error.Undef_Puffer // undefinierter VollPuffer + + L 16#0062 + T Dyn.Stop_Ursache_IN + T Dyn.Stop_Ursache_OUT + + BEU + +// Kennung + Datenbytes +G_Ok: SET + R Dyn.Error.Puffer_DL // Gefälledatenbank fehlerhaft + R Dyn.Error.Undef_Puffer // undefinierte Gefällestrecke + + L 16#1004 // Kennung 10 + Word=04 + T LW0 // Any-Kennung, Datentyp + L 20 // Datenwords speichern + T LW2 // Wiederholungen + +// Quelle-Pointer erzeugen: + L 0 // Bei Merker = 0 ! + T LW4 // DB_Nummer + L 220 // Adresse + SLD 3 + L 16#8300_0000 // Kennung: Merker + OD + T LD6 // Kennung, Adresse + +CALL SYS "BLKMOV" (SRCBLK:=Quelle, RET_VAL:=Dyn.Rueckmld.RET_VAL_BLKMOV_VollPuffer, DSTBLK:=Puffer) // Datenliste-Daten speichern | #Ziel + + L 16#0063 + T Dyn.Stop_Ursache_IN + T Dyn.Stop_Ursache_OUT + + L Dyn.Rueckmld.RET_VAL_BLKMOV_VollPuffer // Rückmeldung + L 0 // Fehler vorhanden ? + <>I // Ja ! + = Dyn.Error.Err_BLKMov // Error bei Block kopieren + BEC + + L Puffer.Puffer_Typ // Puffertyp = 1276 (Vollpuffer) + L 1276 // Dieser Aufruf-FB ? + ==I // Ja ! + JC w061 + + SET + S Dyn.Error.Undef_Puffer // undefinierter VollPuffer + + L 0 // VollPuffer ungültig ! + T Puffer.VollPuffer_Nr // Nummer des VollPuffers + + L 16#0064 + T Dyn.Stop_Ursache_IN + T Dyn.Stop_Ursache_OUT + + BEU + +// Defaultwerte übergeben: +w061: NOP 0 + + BEU + +en06: NOP 0 + + +--- NW 10: Störungen quittieren --- + A ErrQuit // Überwachungszeit abgelaufen quittieren + R Dyn.Sk_IN.Err_Uebzeit + R Dyn.Sk_OUT.Err_Uebzeit + + +--- NW 11: Einfahrenden Trolley in Puffer-DL IN eintragen --- + L Dyn.TrolleyID_Einfahrt + T "MD220" + L DINT#0 + ==I + JC NoNewT + + SET + S Neu_Trolley_in_Puffer_IN + +// Erster einfahrender Trolley ? + L Dyn.Trolley_DL_Einfahrt.Datenlistenkopf.AnzahlEintraege + L 0 + ==I // Ja ! + = "1.Trolley_IN" + +// Neue Position an Gesamt-Trolley-DL übergeben: +CALL FC "Trolley_DL_Neue_Pos" (Gesamt_Trolley_DL:=Puffer.Gesamt_Trolley_DL, TrolleyID:=Dyn.TrolleyID_Einfahrt, Position:=Puffer.Puffer_Position, ShopGroup:=Dint#0, Err:="M199.0") + +// EndZiel löschen: +CALL FC "Trolleydaten_ändern" (Gesamt_Trolley_DL:=Puffer.Gesamt_Trolley_DL, TrolleyID:=Dyn.TrolleyID_Einfahrt, Endziel:=16#0, ShopGroup:=DINT#-1) + + A "M199.0" // Kein sinnvolles Ergebnis + JCN Ok80 // negierter Sprung + + L "MD220" + T Dyn.TrolleyID_unbekannt_Einfahrt + +Ok80: AN "1.Trolley_IN" + JC NoFirst + +// ShopGroup speichern bei 1.Trolley speichern: + L "TrolleyDL_OutDaten".OUTDaten.ShopGroup // von oben "Neue Pos..." übernommen + T Dyn.ShopGroup_IN + +// Daten Puffer eintragen: +NoFirst: L Puffer.Puffer_Dyn_DW + L Puffer.PufferTrolleyliste_DW_IN + +I + T SSDW + + L Dyn.TrolleyID_Einfahrt + T "MD220" + L DINT#0 // Abruf-ShopGroup erst mal löschen! + T "MD224" + +CALL FC "DatenIn" (SSDB:=Puffer.Puffer_Dyn_DB, SSDW:=SSDW, INDATEN:=P#M220.0, RE_VAL:="MB199") + + L "MB199" + T Dyn.Rueckmld.RET_VAL_DL_VollPufferTrolley_IN // wegen Bit-Auswertung + +// Austrag aus Trolley-Reservierungsliste + L Dyn.TrolleyID_Einfahrt // Eintrag ist erfolgt + T "MD220" + +ResOut: L Puffer.Puffer_Dyn_DW + L Puffer.PufferReservierungsliste_DW + +I + T SSDW + +CALL FC "DatenOut" (SSDB:=Puffer.Puffer_Dyn_DB, SSDW:=SSDW, PARA:=16#E100, SEARCHDATEN:=P#M220.0, RE_VAL:=Dyn.Rueckmld.RET_VAL_DL_Res_OUT, OUTDATEN:=P#M220.0, Position:="MW196") // Eintrag löschen | Nicht relevant + + L DINT#0 + T Dyn.TrolleyID_Einfahrt + +NoNewT: NOP 0 + + +--- NW 12: Error: Stau Bereich-Eingang --- +// Sensor bei Bereichs-Einfahrt bleibt belegt?: + AN B_VollPufferEinfahrt // Sensor Trolley fährt in Bereich (kein Stau !) + R Dyn.Error.Err_Stau_Einfahrt // Stau bei Einfahrt + JC X090 // StauZeit neu aufziehen + + AN "1s-Impuls" + O Dyn.Error.Err_Stau_Einfahrt // Zeit bereits abgelaufen + JC Xn09 + + L Dyn.Stau_Zeit // Sensor B_VorSep ist belegt [1s] + + +1 + T Dyn.Stau_Zeit // Sensor B_VorSep ist belegt [1s] + + L 25 // Stau-Zeit erreicht ? + >=I // Ja ! + S Dyn.Error.Err_Stau_Einfahrt // Stau bei Einfahrt (Quittierung oder Sensor=0, wegen Bürstenantrieb + JCN Xn09 + +X090: L 0 // Zeiten löschen + T Dyn.Stau_Zeit // Sensor B_VorSep ist belegt [1s] + +Xn09: NOP 0 + + +--- NW 13: Schleuse IN: Mindestzeit geöffnet/frei --- + L Dyn.Sk_IN.Akt_Schritt + L 6 // Mindestzeit ok? + <>I // Nein! + O B_InSchleuse_IN // Sensor Trolley in Schleuse vorhanden + ON "Schleuse_geöffnet_IN" // Schleuse hat geöffnet + R Status2.MindestZeit_ok_IN + JC INX100 // FreiZeit neu aufziehen + + AN "1s-Impuls" + O Status2.MindestZeit_ok_IN // Zeit bereits abgelaufen + JC INX10E + + L Dyn.Mindest_Zeit_IN // Sensor B_im_Sep ist frei [1s] + + +1 + T Dyn.Mindest_Zeit_IN // Sensor B_im_Sep ist frei [1s] + + L 10 // Mindest-Zeit erreicht ? + >=I // Ja ! + S Status2.MindestZeit_ok_IN + JCN INX10E + +INX100: L 0 // Zeiten löschen + T Dyn.Mindest_Zeit_IN // Sensor B_im_Sep ist frei [1s] + +INX10E: NOP 0 + + +--- NW 14: Schleuse OUT: Mindestzeit geöffnet/frei, Position-Inks übergeben --- + L Dyn.Sk_OUT.Akt_Schritt + L 6 // Mindestzeit ok? + <>I // Nein! + O B_InSchleuse_OUT // Sensor Trolley in Schleuse vorhanden + ON "Schleuse_geöffnet_OUT" // Schleuse hat geöffnet + R Dyn.Status.MindestZeit_ok_OUT + JC X100 // FreiZeit neu aufziehen + + AN "1s-Impuls" + O + A Puffer.Parameter_allg.Antrieb_Plus_vorhanden + AN Antrieb_plus_aktiv + O Dyn.Status.MindestZeit_ok_OUT // Zeit bereits abgelaufen + JC Xn10 + + L Dyn.Mindest_Zeit_OUT // Sensor B_im_Sep ist frei [1s] + + +1 + T Dyn.Mindest_Zeit_OUT // Sensor B_im_Sep ist frei [1s] + + L Puffer.Mindeszeit_Schleuse_geoeffnet // Mindest-Zeit erreicht ? + >=I // Ja ! + S Dyn.Status.MindestZeit_ok_OUT + JCN Xn10 + +X100: L 0 // Zeiten löschen + T Dyn.Mindest_Zeit_OUT // Sensor B_im_Sep ist frei [1s] + +// Schleuse geöffnet: (Position-Inks übergeben) +Xn10: AN "Schleuse_geöffnet_OUT" // Schleuse hat geöffnet + JC X10E + + L Ausfahr_Inks + L Puffer.Puffer_Position_Inks + >I // Rest-Inks-Wert ist größer! + JC X10E + + L Puffer.Puffer_Position_Inks + T Ausfahr_Inks + +X10E: NOP 0 + + +--- NW 15: Keine neue Trolley-Einfahrt Puffer IN ? --- +// Neu-Trolley ist im Puffer oben: + A Neu_Trolley_in_Puffer_IN + O B_VollPufferEinfahrt + JC INX110 + + AN "1s-Impuls" + O Status2.Kein_neuer_Trolley_kommt_IN + JC INXn11 + + L Dyn.Leer_Zeit_IN // Zeit für LeerCheck [1s] + + +1 + T Dyn.Leer_Zeit_IN // Zeit für LeerCheck [1s] + + L Puffer.Wartezeit_bis_Puffer_leer // Leer-Zeit erreicht ? + >=I // Ja ! + JCN INXn11 + + T Dyn.Leer_Zeit_IN // Zeit für LeerCheck einfrieren + + SET + S Status2.Kein_neuer_Trolley_kommt_IN + + JU INXn11 + +INX110: L 0 // Zeiten löschen + T Dyn.Leer_Zeit_IN + + SET + R Status2.Kein_neuer_Trolley_kommt_IN + +INXn11: NOP 0 + + +--- NW 16: Keine neue Trolley-Einfahrt Puffer OUT ? --- +// Neu-Trolley ist im Puffer oben: + A "Schleuse_geöffnet_IN" + JC X110 + + AN "1s-Impuls" + O Dyn.Status.Kein_neuer_Trolley_kommt_OUT + JC Xn11 + + L Dyn.Leer_Zeit_OUT // Zeit für LeerCheck [1s] + + +1 + T Dyn.Leer_Zeit_OUT // Zeit für LeerCheck [1s] + + L Puffer.Wartezeit_bis_Puffer_leer // Leer-Zeit erreicht ? + >=I // Ja ! + JCN Xn11 + + T Dyn.Leer_Zeit_OUT // Zeit für LeerCheck einfrieren + + SET + S Dyn.Status.Kein_neuer_Trolley_kommt_OUT + + JU Xn11 + +X110: L 0 // Zeiten löschen + T Dyn.Leer_Zeit_OUT + + SET + R Dyn.Status.Kein_neuer_Trolley_kommt_OUT + +Xn11: NOP 0 + + +--- NW 17: Reservierungs-Check --- + L Dyn.Reservierungs_DL.Datenlistenkopf.AnzahlEintraege + L 0 + ==I + JC NoResCheck // Später -> Hauptstrangdaten checken! + + L VollPuffer_Nr + L 126 + >=I + = Puffer_B // Puffer gehört zu Bereich B + +// Keine Trolleydaten in Sorter A? + A "DVP_Sorter_A".Sorter_A_leer + AN Puffer_B // Puffer gehört zu Bereich B + JC ResDel + +// Keine Trolleydaten in Sorter A+B? + A "DVP_Sorter_A".Sorter_A_leer + A "DVP_Sorter_B".Sorter_B_leer + A Puffer_B // Puffer gehört zu Bereich B + JC ResDel + +// Ansonsten über Ziel-Check +// Daten vom 1.Reservierungs-Trolley holen: + L Dyn.Reservierungs_DL.Res_Trolley[1].Trolley_ID + T "TrolleyDL_SearchDaten".SEARCHDaten.TrolleyID + +// Trolleydaten lesen: +CALL FC "DatenOut" (SSDB:=1000, SSDW:=0, PARA:=16#0000, SEARCHDATEN:=DB1012.DBX0.0, RE_VAL:="MB198", OUTDATEN:=DB1011.DBX0.0, Position:="MW200") // Eintrag lesen + + L "MB198" + L 2#10000000 // Datensatz vorhanden? + <>I // Nein! + JC NoResCheck + + L "TrolleyDL_OutDaten".OUTDaten.EndZiel + L 101 // VollPuffer ? + >=I // Ja! + A( + CAC + L 151 // VollPuffer ? + <=I // Ja! + ) + JC NoResCheck // Warten, Trolley kommt noch! + +ResDel: L Dyn.Reservierungs_DL.Res_Trolley[1].Trolley_ID + T "MD220" + + JU ResOut + +NoResCheck: NOP 0 + + +--- NW 18: Leer-Check IN aktiv --- +// Falls Inilauf aktiv: + A Status2.Puffer_initialisieren_IN + AN Status2.Leer_Check_IN + S Status2.Leer_Check_IN + JCN Check_IN // Negierter Sprung + + L 0 // Zeiten neu aufziehen + T Dyn.Leer_Zeit_IN + + SET + R Status2.Kein_neuer_Trolley_kommt_IN + +Check_IN: NOP 0 +// Abbruch, da Trolley ist doch noch in Schleuse gefahren: + A Status2.Puffer_initialisieren_IN + A Status2.Trolley_nicht_in_Schleuse_IN + A B_InSchleuse_IN + R Status2.Puffer_initialisieren_IN + R Status2.Trolley_nicht_in_Schleuse_IN + R Status2.Leer_Check_IN + + AN Status2.Leer_Check_IN + JC INXn12 + +// Trolley während Check erkannt: + AN Status2.Kein_neuer_Trolley_kommt_IN + JC INXn12 + +// Aber: + A "Schleuse_geöffnet_IN" // aber Schleuse noch geöffnet + O B_InSchleuse_IN // aber Trolley noch in Schleuse + JCN Fertig_IN // Negierter Sprung + + L 0 // Zeit neu aufziehen + T Dyn.Leer_Zeit_IN + + SET + R Status2.Kein_neuer_Trolley_kommt_IN + + JU Xn12 + +Fertig_IN: SET + R Status2.Leer_Check_IN + + A Status2.Puffer_initialisieren_IN + R Status2.Puffer_initialisieren_IN + JCN Reset_IN // Negierter Sprung + +// Trolleyliste löschen: + L Puffer.Puffer_Dyn_DW + L Puffer.PufferTrolleyliste_DW_IN + +I + T SSDW + +CALL FC "DatenReset" (SSDB:=Puffer.Puffer_Dyn_DB, SSDW:=SSDW, RE_VAL:="MB198") + + JU INXn12 // Nicht mehr wegen Gefahr der Überfüllung, besser Reservierungen checken + +// Reservierungs-Liste löschen: + L Puffer.Puffer_Dyn_DW + L Puffer.PufferReservierungsliste_DW + +I + T SSDW + +CALL FC "DatenReset" (SSDB:=Puffer.Puffer_Dyn_DB, SSDW:=SSDW, RE_VAL:="MB198") + + JU Reset_IN + +INXn12: NOP 0 + + +--- NW 19: Leer-Check OUT aktiv --- +// Falls Inilauf aktiv: + A Dyn.Status.Puffer_initialisieren_OUT + AN Dyn.Status.Leer_Check_OUT + S Dyn.Status.Leer_Check_OUT + JCN Check // Negierter Sprung + + L 0 // Zeiten neu aufziehen + T Dyn.Leer_Zeit_OUT + + SET + R Dyn.Status.Kein_neuer_Trolley_kommt_OUT + +Check: NOP 0 +// Abbruch, da Trolley ist doch noch in Schleuse gefahren: + A Dyn.Status.Puffer_initialisieren_OUT + A Dyn.Status.Trolley_nicht_in_Schleuse_OUT + A B_InSchleuse_OUT + CLR // Ist Blödsinn + R Dyn.Status.Puffer_initialisieren_OUT + R Dyn.Status.Trolley_nicht_in_Schleuse_OUT + R Dyn.Status.Leer_Check_OUT + + AN Dyn.Status.Leer_Check_OUT + JC Xn12 + +// Trolley währen Check erkannt: + AN Dyn.Status.Kein_neuer_Trolley_kommt_OUT + JC Xn12 + +// Aber: + A "Schleuse_geöffnet_OUT" // aber Schleuse noch geöffnet + O B_InSchleuse_OUT // aber Trolley noch in Schleuse + JCN Fertig // Negierter Sprung + + L 0 // Zeit neu aufziehen + T Dyn.Leer_Zeit_OUT + + SET + R Dyn.Status.Kein_neuer_Trolley_kommt_OUT + + JU Xn12 + +Fertig: SET + R Dyn.Status.Leer_Check_OUT + + A Dyn.Status.Puffer_initialisieren_OUT + R Dyn.Status.Puffer_initialisieren_OUT + JCN Reset_OUT // Negierter Sprung + +// Trolleyliste löschen: + L Puffer.Puffer_Dyn_DW + L Puffer.PufferTrolleyliste_DW_Out + +I + T SSDW + +CALL FC "DatenReset" (SSDB:=Puffer.Puffer_Dyn_DB, SSDW:=SSDW, RE_VAL:="MB198") + + JU Reset_OUT + +Xn12: NOP 0 + + +--- NW 20: Reset IN aktiv --- + JU INEn14 + +Reset_IN: SET + R Dyn.Sk_IN.Err_Uebzeit + R Status2.Eintrag_DL_Leerliste_erfolgt + R Status2.Eintrag_DL_Reinliste_erfolgt + R Status2.Trolley_nicht_in_Schleuse_IN + R Status2.Puffer_nicht_leer_IN + + L DINT#0 +// / T #Dyn.ShopGroup_IN //siehe Nw 5 + T Dyn.ShopGroup_EFL_Gespeichert // Kein ShopGroup_IN mehr eingetragen + L 0 + T Dyn.Leer_Zeit_IN + T Dyn.ShopGroup_EFL_Gespeichert // Kein ShopGroup_IN mehr eingetragen + +// Trolleyliste löschen: + L Puffer.Puffer_Dyn_DW + L Puffer.PufferTrolleyliste_DW_IN + +I + T SSDW + +CALL FC "DatenReset" (SSDB:=Puffer.Puffer_Dyn_DB, SSDW:=SSDW, RE_VAL:="MB198") + +INEn14: NOP 0 + + +--- NW 21: Reset Out aktiv --- + JU En14 + +Reset_OUT: SET + R Dyn.Sk_OUT.Err_Uebzeit + R Dyn.Status.Puffer_initialisieren_OUT + R Dyn.Status.Trolley_nicht_in_Schleuse_OUT + R Dyn.Status.Puffer_nicht_leer_OUT + R Dyn.HMI.Puffer_initialisieren // Button-Anzeige wieder normal + R Status2.Eintrag_DL_Abrufliste_erfolgt + R Dyn.Error.Err_Raus_Sensor + R Dyn.Status."Trolley_fährt_aus_OUT" + + L DINT#0 + T Dyn.ShopGroup_OUT + T Dyn.ShopGroup_AFL_Gespeichert // Kein ShopGroup_OUT mehr eingetragen + L 0 + T Dyn.Leer_Zeit_OUT + +// Trolleyliste löschen: + L Puffer.Puffer_Dyn_DW + L Puffer.PufferTrolleyliste_DW_Out + +I + T SSDW + +CALL FC "DatenReset" (SSDB:=Puffer.Puffer_Dyn_DB, SSDW:=SSDW, RE_VAL:="MB198") + +En14: NOP 0 + + +--- NW 22: Beide Puffer identische ShopGroup --- + L Dyn.ShopGroup_IN + L Dyn.ShopGroup_OUT // Gleiche Daten ? + <>I // Nein! + R Oberen_Puffer_nichts_einfahren // Einfahrt oben verhindern, sonst evtl. Dauerlauf + JC NixGleich + +// Sonderfall "Alles ausfahren": + A Status2.Alles_ausfahren_OUT // Unterer Puffer soll leer werden! + = Oberen_Puffer_nichts_einfahren // Einfahrt oben verhindern, sonst evtl. Dauerlauf + +NixGleich: NOP 0 + + +--- NW 23: Puffer oben hat Platz / ist frei --- +// Puffer hat Platz: + L Dyn.Reservierungs_DL.Datenlistenkopf.AnzahlEintraege + L Dyn.Trolley_DL_Einfahrt.Datenlistenkopf.AnzahlEintraege + +I + T GesamtAnzahl + + L Puffer.MaxAnzahl_Einfahrt + I // Ja! + O( + L 1 // Minimalwert ? + ==I // Ja ! + ) + = Inks_Ok + +X14E: NOP 0 + + +--- NW 26: DLPuffer_leer: Ein-/Austrag --- + L GesamtAnzahl + L 0 // Trolleys unterwegs/drin ? + <>I // Ja ! + ON Status2.Puffer_leer_IN // Kann mit neuer ShopGroup bestückt werden! + O Puffer.Parameter_allg.Kein_Lager // Überlauf-/Fehler-Strecke + O Status2.Puffer_initialisieren_IN + O Dyn.Status.Puffer_initialisieren_OUT + JC Austrag_Leerliste + +// Eintrag in Leerliste: + L VollPuffer_Nr + T "MW220" // Puffer, der leer ist + +CALL FC "DatenIn" (SSDB:=100, SSDW:=0, INDATEN:=P#M220.0, RE_VAL:="MB219") // Anforderung in Datenliste eintragen + + AN "M219.6" // Daten wurden überschrieben + AN "M219.7" // Eintrag ist richtig erfolgt + JC NoChange_Leerliste + + SET + S Status2.Eintrag_DL_Leerliste_erfolgt + + JU NoChange_Leerliste + +Austrag_Leerliste: NOP 0 +// Austrag aus Leerliste: + L VollPuffer_Nr + T "MW220" // Puffer, der leer ist + +CALL FC "DatenOut" (SSDB:=100, SSDW:=0, PARA:=WORD#16#E100, SEARCHDATEN:=P#M220.0, RE_VAL:="MB219", OUTDATEN:=P#M230.0, Position:="MW196") // Anforderung aus Datenliste löschen + + SET + R Status2.Eintrag_DL_Leerliste_erfolgt + +NoChange_Leerliste: NOP 0 + + +--- NW 27: DLPuffer_ShopGroup_einfahren: Ein-/Austrag --- +// Relevante ShopGroup ermittel: + L Dyn.ShopGroup_IN + L DINT#0 // ShopGroup bekannt ? + <>D // Ja ! + JC ASG + + L Dyn.Reservierungs_DL.Res_Trolley[1].ShopGroup + L DINT#0 // Trolleys mit ShopGroup reseviert ? + <>D // Ja ! + JC ASG + + L DINT#0 // wegen TAK + +ASG: CAC + T Akive_ShopGroup + + L Akive_ShopGroup + L DINT#0 // Relevante ShopGroup bekannt ? + ==D // Nein ! + ON Status2."Puffer_hat Platz_IN" // Puffer hat kein Platz mehr + O Oberen_Puffer_Freigeben + O Puffer.Parameter_allg.Kein_Lager // Überlauf-/Fehler-Strecke + O Status2.Puffer_initialisieren_IN + O Dyn.Status.Puffer_initialisieren_OUT + JC Austrag_Reinliste + +// Eintrag in Reinliste: + L Akive_ShopGroup + L Dyn.ShopGroup_EFL_Gespeichert + ==I // Eintrag schon erfolgt + JC NoChange_Reinliste + + L Dyn.Reservierungs_DL.Res_Trolley[1].ShopGroup + T "MD222" // Übergabe zum Speichern + L 0 // Trolleys mit ShopGroup reseviert ? + <>D // Ja ! + JC X190 + + L Akive_ShopGroup + T "MD222" // Übergabe zum Speichern + L 0 // ShopGroup bekannt? + <>D // Ja ! + JC X190 + + JU NoChange_Reinliste + +X190: L VollPuffer_Nr // angefahrener Puffer + T "MW220" + +CALL FC "DatenIn" (SSDB:=101, SSDW:=0, INDATEN:=P#M220.0, RE_VAL:="MB219") // Anforderung in Datenliste eintragen + + AN "M219.6" // Daten wurden überschrieben + AN "M219.7" // Eintrag ist richtig erfolgt + JC NoChange_Reinliste + + L Akive_ShopGroup + T Dyn.ShopGroup_EFL_Gespeichert // Eingetragene ShopGroup_IN + + SET + S Status2.Eintrag_DL_Reinliste_erfolgt + + JU NoChange_Reinliste + +Austrag_Reinliste: NOP 0 +// Austrag aus Reinliste: + L VollPuffer_Nr + T "MW220" + +CALL FC "DatenOut" (SSDB:=101, SSDW:=0, PARA:=WORD#16#E100, SEARCHDATEN:=P#M220.0, RE_VAL:="MB219", OUTDATEN:=P#M230.0, Position:="MW196") // Anforderung aus Datenliste löschen + + L DINT#0 + T Dyn.ShopGroup_EFL_Gespeichert // Kein ShopGroup_IN mehr eingetragen + + SET + R Status2.Eintrag_DL_Reinliste_erfolgt + +NoChange_Reinliste: NOP 0 + + +--- NW 28: DLPuffer_ShopGroup_abrufen: Ein-/Austrag --- + L Dyn.ShopGroup_OUT + L DINT#0 // Bekannt ? + ==D // Nein ! + O Dyn.Status.Puffer_leer_OUT // Kann mit neuer ShopGroup bestückt werden! + O Dyn.HMI.AusLagern_gesperrt + O Puffer.Parameter_allg.Kein_Lager // Überlauf-/Fehler-Strecke + O Status2.Puffer_initialisieren_IN + O Dyn.Status.Puffer_initialisieren_OUT + JC Austrag_Abrufliste + +// Eintrag aus Abrufliste: + L Dyn.ShopGroup_OUT + L Dyn.ShopGroup_AFL_Gespeichert + ==I // Eintrag schon erfolgt + JC NoChange_Abrufliste + + L VollPuffer_Nr // angefahrener Puffer + T "MW220" + L Dyn.ShopGroup_OUT + T "MD222" + +CALL FC "DatenIn" (SSDB:=102, SSDW:=0, INDATEN:=P#M220.0, RE_VAL:="MB219") // Anforderung in Datenliste eintragen + + AN "M219.6" // Daten wurden überschrieben + AN "M219.7" // Eintrag ist richtig erfolgt + JC NoChange_Abrufliste + + L Dyn.ShopGroup_OUT + T Dyn.ShopGroup_AFL_Gespeichert // Eingetragene ShopGroup_OUT + + SET + S Status2.Eintrag_DL_Abrufliste_erfolgt + + JU NoChange_Abrufliste + +Austrag_Abrufliste: NOP 0 +// Austrag aus Abrufliste: + L VollPuffer_Nr // angefahrener Puffer + T "MW220" + +CALL FC "DatenOut" (SSDB:=102, SSDW:=0, PARA:=WORD#16#E100, SEARCHDATEN:=P#M220.0, RE_VAL:="MB219", OUTDATEN:=P#M230.0, Position:="MW196") // Anforderung aus Datenliste löschen + + L DINT#0 + T Dyn.ShopGroup_AFL_Gespeichert // Kein ShopGroup_OUT mehr eingetragen + + SET + R Status2.Eintrag_DL_Abrufliste_erfolgt + +NoChange_Abrufliste: NOP 0 + + +--- NW 29: Schrittkette anhalten --- + A Dyn.Sk_OUT.Auto_akt // Automatik ist aktiv + A Dyn.Sk_OUT.Bereich_ok + JU en08_Mig // Schrittkette nicht anhalten ! + + SET // Störungen löschen + R Dyn.Sk_IN.Err_Uebzeit + R Dyn.Sk_IN.Err_Schritt + R Dyn.Sk_OUT.Err_Uebzeit + R Dyn.Sk_OUT.Err_Schritt + + L 0 // Zeitwerte löschen + T Dyn.Sk_IN.Terr_Zelle + T Dyn.Sk_IN.Tok_Zelle + T Dyn.Sk_OUT.Terr_Zelle + T Dyn.Sk_OUT.Tok_Zelle + + JU RET + +en08_Mig: NOP 0 + + +--- NW 30: IN-Sprungverteiler --- + L Dyn.Sk_IN.Neu_Schritt // Schritt, der im nächsten Zyklus aktiv werden soll + L -1 // angegeben ? + ==I // Nein ! + JC INNEU + + CAC // Neuen Schritt übergeben + T Dyn.Sk_IN.Akt_Schritt + + L -1 // Urzustand + T Dyn.Sk_IN.Neu_Schritt // Schritt, der im nächsten Zyklus aktiv werden soll + +INNEU: SET + R Ueb_akt // Überwachungszeit aktivieren + R Warte_neu // Wartezeit neutriggern + R Warte_stop // Wartezeit stoppen + + L Dyn.Sk_IN.Akt_Schritt + JL INEnde + JU INs000 // Schritt 0 + JU INs001 // Schritt 1 + JU INs002 // Schritt 2 + JU INs003 // Schritt 3 + JU INs004 // Schritt 4 + JU INs005 // Schritt 5 + JU INs006 // Schritt 6 + JU INs007 // Schritt 7 + JU INs008 // Schritt 8 + JU INs009 // Schritt 9 + JU INs010 // Schritt 10 + JU INs011 // Schritt 11 + JU INs012 // Schritt 12 + JU INs013 // Schritt 13 + JU INs014 // Schritt 14 + JU INs015 // Schritt 15 + JU INs016 // Schritt 16 + JU INs017 // Schritt 17 + JU INs018 // Schritt 18 + JU INs019 // Schritt 19 + JU INs020 // Schritt 20 + JU INs021 // Schritt 21 + JU INs022 // Schritt 22 + JU INs023 // Schritt 23 + JU INs024 // Schritt 24 + JU INs025 // Schritt 25 + JU INs026 // Schritt 26 + JU INs027 // Schritt 27 + JU INs028 // Schritt 28 + JU INs029 // Schritt 29 + JU INs030 // Schritt 30 +INEnde: S Dyn.Sk_IN.Err_Schritt // Undefinierter Schritt + + L 16#AA01 + T Dyn.Stop_Ursache_IN + + JU OUT_Sk + +INNeu_Mig: A Dyn.Sk_IN.Err_Uebzeit + JCN INSk + + L 16#AA02 + T Dyn.Stop_Ursache_IN + + JU OUT_Sk + +INSk: T Dyn.Sk_IN.Akt_Schritt + + L 0 // Zeitwerte löschen + T Dyn.Sk_IN.Terr_Zelle + T Dyn.Sk_IN.Tok_Zelle + L -1 + T Dyn.Sk_IN.Neu_Schritt // Schritt, der im nächsten Zyklus aktiv werden soll + + JU INNEU + +// Nicht programmierte Schritte: +// INs000: SPA INEnde +// INs001: SPA INEnde +// INs002: SPA INEnde +INs003: JU INEnde +// INs004 : SPA INEnde +// INs005: SPA INEnde +// INs006: SPA INEnde +// INs007: SPA INEnde +INs008: JU INEnde +INs009: JU INEnde +INs010: JU INEnde +INs011: JU INEnde +INs012: JU INEnde +INs013: JU INEnde +INs014: JU INEnde +INs015: JU INEnde +INs016: JU INEnde +INs017: JU INEnde +INs018: JU INEnde +INs019: JU INEnde +// INs020: SPA INEnde +// INs021: SPA INEnde +INs022: JU INEnde +INs023: JU INEnde +INs024: JU INEnde +INs025: JU INEnde +INs026: JU INEnde +INs027: JU INEnde +INs028: JU INEnde +INs029: JU INEnde +INs030: JU INEnde + + +--- NW 31: IN-Schritt X: Reserve --- + SET // Weiterschaltbedingung + = Weiter + +// Schrittaktionen: + SET + + L 16#A001 + T Dyn.Stop_Ursache_IN + + A Dyn.Sk_IN.Reset_Akt // Reset ist aktiv + L 20 // Weiter mit Schritt 20 + JC INNeu_Mig // Bei diesem Schritt weiter + + A Weiter // Weiterschaltbedingung ist erfüllt + R Dyn.Sk_IN.Err_Uebzeit // Sofort weiter ! + + L 0 // Angabe der Wartezeit (*10ms) + JC INPlus // Nächsten Schritt starten + + L 1 // Weiter mit Schritt 1 + JC INNeu_Mig // Bei diesem Schritt weiter + + T Dyn.Sk_IN.Neu_Schritt // Schritt, der im nächsten Zyklus aktiv werden soll + + SET + A Dyn.Sk_IN.Auto_akt // Automatik ist aktiv + A Dyn.Sk_IN.Bereich_ok + = Ueb_akt // Überwachungszeit aktivieren + L 50 // Angabe der Überwachungszeit (*1s) + JU INtueb // Überwachungszeit + + JU OUT_Sk + + +--- NW 32: IN-Schritt 0: Warten auf Trolley --- +INs000: SET // Weiterschaltbedingung + A B_InSchleuse_IN // Trolley im Schleuse erkannt + A Dyn.Sk_IN.Auto_akt // Automatik ist aktiv + A Dyn.Sk_IN.Bereich_ok + = Weiter + +// Schrittaktionen: + SET + R Dyn.Error.Err_Puffer_nicht_leer_IN + + A Dyn.Sk_IN.Reset_Akt // Reset ist aktiv + L 20 // Weiter mit Schritt 20 + JC INNeu_Mig // Bei diesem Schritt weiter + + L 0 + T Dyn.TrolleyID_Schleuse_IN + + A Weiter // Weiterschaltbedingung ist erfüllt + R Dyn.Sk_IN.Err_Uebzeit // Sofort weiter ! + L 100 // Angabe der Wartezeit (*10ms) + JC INPlus // Nächsten Schritt starten + + L 16#A001 + T Dyn.Stop_Ursache_IN + +// Überwachungszeit starten: + L Dyn.Trolley_DL_Einfahrt.Datenlistenkopf.AnzahlEintraege + L 0 // Trolleydaten vorhanden ? + >I // Ja ! + AN B_InSchleuse_IN // Trolley im Schleuse erkannt + AN "Schleuse_geöffnet_IN" + = Ueb_akt // Überwachungszeit aktivieren + + A Dyn.Sk_IN.Err_Uebzeit + AN B_InSchleuse_IN // Trolley im Schleuse erkannt + AN Status2.Trolley_nicht_in_Schleuse_IN // Reset / Inilauf aktiv + S Dyn.Error.Err_Trolley_nicht_in_Schleuse_IN + + L Puffer."Übzeit_in_Schleuse" + + JU INtueb // Überwachungszeit + + +--- NW 33: IN-Schritt 1: Trolley ist in Schleuse / Gleiche Shop-Gruppe? --- +INs001: NOP 0 + +// Schrittaktionen: + AN B_InSchleuse_IN // Trolley im Schleuse erkannt + L 0 // Weiter mit Schritt 0 + T Dyn.Sk_IN.Neu_Schritt // Schritt, der im nächsten Zyklus aktiv werden soll + JC OUT_Sk + + SET + R Status2.Trolley_nicht_in_Schleuse_IN + +// Aber keine Daten mehr ?: + L Dyn.Trolley_DL_Einfahrt.Datenlistenkopf.AnzahlEintraege + L 0 + ==I + JCN In_Ok // Negierter Sprung! + +// Falls ein Trolley reserviert, diesen dann übergeben: + L Dyn.Reservierungs_DL.Datenlistenkopf.AnzahlEintraege + L 0 // Trolley reserviert? + ==I // Nein! + S Status2.Puffer_nicht_leer_IN + S Status2.Puffer_initialisieren_IN // Damit Einfahren blockiert wird + JC In_Ok + +// Diesen Trolley als eingefahrenen übergeben: + L Dyn.Reservierungs_DL.Res_Trolley[1].Trolley_ID + T Dyn.TrolleyID_Einfahrt + +// Puffer unten diesselbe Shop-Gruppe?: +In_Ok: L Dyn.ShopGroup_IN + L Dyn.ShopGroup_OUT + ==D // Gleich! + A( + L dint#0 // Und angegeben ? + <>D // Ja ! + ) + O Dyn.Status.Puffer_leer_OUT // oder leer! + O Status2.Puffer_initialisieren_IN // wird in Schritt 2 gecheckt + L 2 // Weiter mit Schritt 2 + JC INNeu_Mig // Bei diesem Schritt weiter + + L 16#A011 + T Dyn.Stop_Ursache_IN + + JU OUT_Sk // Warten! + + +--- NW 34: IN-Schritt 2: Nach unten fahren ok ? --- +INs002: NOP 0 +// Schrittaktionen: + AN B_InSchleuse_IN // Trolley im Schleuse erkannt + L 0 // Weiter mit Schritt 0 + T Dyn.Sk_IN.Neu_Schritt // Schritt, der im nächsten Zyklus aktiv werden soll + JC OUT_Sk + +// Anlage aus oder Störung: + L 16#A021 + T Dyn.Stop_Ursache_IN + + AN Dyn.Sk_IN.Auto_akt // Automatik ist aktiv + ON Dyn.Sk_IN.Bereich_ok // Bereich ist gestört + JC INX002 + +// Puffer unten Platz?: + L 16#A022 + T Dyn.Stop_Ursache_IN + +// Sonderfall Inilauf in beiden Puffern: + A Status2.Puffer_initialisieren_IN + A Dyn.Status.Puffer_initialisieren_OUT + A "Schleuse_geöffnet_OUT" + A B_InSchleuse_OUT // Nur einmalig + JC Y002 // Damit schneller fertig + + AN Dyn.Status."Puffer_hat Platz_OUT" // Starten ist erlaubt + JC INX002 + +// Kein Antrieb im Puffer: +Y002: A Dyn.Sk_OUT.Auto_akt // Automatik ist aktiv + A Dyn.Sk_OUT.Bereich_ok + L 4 // Daten an Puffer unten übergeben + JC INNeu_Mig // Bei diesem Schritt weiter + + JU OUT_Sk + +INX002: L 1 // Check + T Dyn.Sk_IN.Neu_Schritt // Schritt, der im nächsten Zyklus aktiv werden soll + + JU OUT_Sk + + +--- NW 35: IN-Schritt 4: Pufferdaten unten/oben ändern --- +INs004: SET // Weiterschaltbedingung + = Weiter + +// Schrittaktionen: +// Shop-Group übergeben: + L Dyn.Trolley_DL_Ausfahrt.Datenlistenkopf.AnzahlEintraege + L 0 + ==I // Ja ! + = "1.Trolley_OUT" // Also kommt 1.Trolley + + AN "1.Trolley_OUT" + JC INNoFirst + +// ShopGroup speichern bei 1.Trolley speichern: + L Dyn.ShopGroup_IN + T Dyn.ShopGroup_OUT + +INNoFirst: NOP 0 +// Daten an Puffer unten übergeben: + L Dyn.Trolley_DL_Einfahrt.VollPuffer_Trolley_IN[1].Abruf_ShopGroup + T "MD224" + L Dyn.Trolley_DL_Einfahrt.VollPuffer_Trolley_IN[1].Trolley_ID + T "MD220" + +// ID: sinnvolle Daten ? + L DINT#0 + <>D + JC Daten_ok + + L DINT#0 // Bleibt trotzdem 0 + T "MD220" + +// Daten Puffer unten eintragen: +Daten_ok: L Puffer.Puffer_Dyn_DW + L Puffer.PufferTrolleyliste_DW_Out + +I + T SSDW + +CALL FC "DatenIn" (SSDB:=Puffer.Puffer_Dyn_DB, SSDW:=SSDW, INDATEN:=P#M220.0, RE_VAL:="MB199") + +// Puffer oben Daten austragen: +// Austrag aus Trolley-VollPufferliste oben + L Dyn.Trolley_DL_Einfahrt.VollPuffer_Trolley_IN[1].Trolley_ID + T "MD220" + + L Puffer.Puffer_Dyn_DW + L Puffer.PufferTrolleyliste_DW_IN + +I + T SSDW + +CALL FC "DatenOut" (SSDB:=Puffer.Puffer_Dyn_DB, SSDW:=SSDW, PARA:=16#E100, SEARCHDATEN:=P#M220.0, RE_VAL:="MB199", OUTDATEN:=P#M220.0, Position:="MW196") // Eintrag löschen | Nicht relevant + + L 5 // Nur 1 langes Signal! + JU INNeu_Mig // Bei diesem Schritt weiter + + +--- NW 36: IN-Schritt 5: Trolley fährt aus ? --- +INs005: SET // Weiterschaltbedingung + AN B_InSchleuse_IN // Sensor Trolley ist in Schleuse + A "Schleuse_geöffnet_IN" + = Weiter + +// Schrittaktionen: + SET + S Y_Schleuse_Auf_IN // Schleuse öffnen + + A Weiter // Weiterschaltbedingung ist erfüllt + R Dyn.Sk_IN.Err_Uebzeit // Sofort weiter ! + R Dyn.Error.Err_Trolley_raus_IN // Trolley fährt nicht aus + L 100 // Angabe der Wartezeit (*10ms) + JC INPlus // Nächsten Schritt starten + + A Dyn.Sk_IN.Err_Uebzeit + S Dyn.Error.Err_Trolley_raus_IN // Trolley fährt nicht aus + + L 16#B051 + T Dyn.Stop_Ursache_IN + + SET + = Ueb_akt // Überwachungszeit aktivieren + L Puffer."Übzeit_aus_Schleuse" // Angabe der Überwachungszeit (*1s) + JU INtueb // Überwachungszeit + + +--- NW 37: IN-Schritt 6: Schleuse Mindestzeit geöffnet ? --- +INs006: SET // Weiterschaltbedingung + A Status2.MindestZeit_ok_IN + = Weiter + +// Schrittaktionen: + SET + S Y_Schleuse_Auf_IN // Schleuse öffnen + + A B_InSchleuse_IN // Trolley wieder erkannt + L 5 // Weiter mit Schritt 5 + JC INNeu_Mig // Bei diesem Schritt weiter + + A Weiter + L 0 + JC INPlus // Nächsten Schritt starten + + L 16#B061 + T Dyn.Stop_Ursache_IN + + JU OUT_Sk + + +--- NW 38: IN-Schritt 7: Letzter Trolley oben ? --- +INs007: SET // Weiterschaltbedingung + = Weiter + +// Schrittaktionen: +// Letzter Trolley ausgefahren?: + L Dyn.Trolley_DL_Einfahrt.Datenlistenkopf.AnzahlEintraege + L 0 // Liste leer? + ==I + S Status2.Leer_Check_IN + +// Inilauf aktiv?: + AN Status2.Puffer_initialisieren_IN + JC INENDE_Mig + + L 0 // Zeiten löschen + T Dyn.Leer_Zeit_IN + + JU INENDE_Mig + + +--- NW 39: IN-Schritt 20: Schleuse resetten --- +INs020: SET // Weiterschaltbedingung + = Weiter // Weiterschaltbedingung ist erfüllt + +// Schrittaktionen: + L 16#A201 + T Dyn.Stop_Ursache_IN + + A Weiter // Weiterschaltbedingung ist erfüllt + L 300 // Angabe der Wartezeit (*10ms) + JC INPlus // Nächsten Schritt starten + + SET + = Ueb_akt // Überwachungszeit aktivieren + L 30 // Angabe der Überwachungszeit (*100ms) + JU INtueb // Überwachungszeit + + +--- NW 40: IN-Schritt 21: Reset ist zu Ende --- +INs021: SET + R Dyn.Sk_IN.Reset_Akt // Reset ist aktiv + R Dyn.HMI.Schleuse_resetten_IN + + JU INENDE_Mig // Neubeginn + + +--- NW 41: IN-Schrittkette beenden --- +INENDE_Mig: L 0 // Schritt 0: Warten + T Dyn.Sk_IN.Akt_Schritt + + L 0 // Zeitwert löschen + T Dyn.Sk_IN.Terr_Zelle + T Dyn.Sk_IN.Tok_Zelle + + SET + R Dyn.Sk_IN.Err_Uebzeit + + JU OUT_Sk + + +--- NW 42: IN-Nächsten Schritt aktivieren --- +INPlus: T Dyn.Sk_IN.T_ok // Wartezeit übergeben + + A Dyn.Sk_IN.Err_Uebzeit // Störung noch nicht quittiert + JC OUT_Sk + + L 0 // keine Wartezeit ? + ==I // Ja ! -> sofort weiter + JC INw220 + + AN Warte_neu // Wartezeit neutriggern + JC INW220_Mig + + L 0 + T Dyn.Sk_IN.Tok_Zelle // Wartezeit + +INW220_Mig: A Warte_stop // Wartezeit stoppen + JC OUT_Sk + + L Dyn.Sk_IN.Tok_Zelle + L "MW4" // Wartezeit +10ms + +I + T Dyn.Sk_IN.Tok_Zelle // Wartezeit + L Dyn.Sk_IN.T_ok // abgelaufen ? + I // abgelaufen ? + AN Dyn.Sk_IN.Err_Uebzeit + JC INen24 // Nein ! + + A Ueb_akt // Überwachungszeit aktivieren + S Dyn.Sk_IN.Err_Uebzeit + + L 0 // Zeitwert löschen + T Dyn.Sk_IN.Terr_Zelle + + JU OUT_Sk + +INen24: NOP 0 + + +--- NW 44: IN-Überwachungszeit +1 --- + AN Dyn.Sk_IN.Ueb_akt // Schrittaktion ist aktiv + ON "1s-Impuls" + JC OUT_Sk + + L Dyn.Sk_IN.Terr_Zelle + + 1 // Üb.zeit +1s + T Dyn.Sk_IN.Terr_Zelle + + JU OUT_Sk + + +--- NW 45: OUT-Sprungverteiler --- +OUT_Sk: L Dyn.Sk_OUT.Neu_Schritt // Schritt, der im nächsten Zyklus aktiv werden soll + L -1 // angegeben ? + ==I // Nein ! + JC NEU + + CAC // Neuen Schritt übergeben + T Dyn.Sk_OUT.Akt_Schritt + + L -1 // Urzustand + T Dyn.Sk_OUT.Neu_Schritt // Schritt, der im nächsten Zyklus aktiv werden soll + +NEU: SET + R Ueb_akt // Überwachungszeit aktivieren + R Warte_neu // Wartezeit neutriggern + R Warte_stop // Wartezeit stoppen + + L Dyn.Sk_OUT.Akt_Schritt + JL Ende + JU s000 // Schritt 0 + JU s001 // Schritt 1 + JU s002 // Schritt 2 + JU s003 // Schritt 3 + JU s004 // Schritt 4 + JU s005 // Schritt 5 + JU s006 // Schritt 6 + JU s007 // Schritt 7 + JU s008 // Schritt 8 + JU s009 // Schritt 9 + JU s010 // Schritt 10 + JU s011 // Schritt 11 + JU s012 // Schritt 12 + JU s013 // Schritt 13 + JU s014 // Schritt 14 + JU s015 // Schritt 15 + JU s016 // Schritt 16 + JU s017 // Schritt 17 + JU s018 // Schritt 18 + JU s019 // Schritt 19 + JU s020 // Schritt 20 + JU s021 // Schritt 21 + JU s022 // Schritt 22 + JU s023 // Schritt 23 + JU s024 // Schritt 24 + JU s025 // Schritt 25 + JU s026 // Schritt 26 + JU s027 // Schritt 27 + JU s028 // Schritt 28 + JU s029 // Schritt 29 + JU s030 // Schritt 30 +Ende: S Dyn.Sk_OUT.Err_Schritt // Undefinierter Schritt + + L 16#A131 + T Dyn.Stop_Ursache_OUT + + JU RET + +Neu_Mig: A Dyn.Sk_OUT.Err_Uebzeit + JCN Sk + + L 16#A132 + T Dyn.Stop_Ursache_OUT + + JU RET + +Sk: T Dyn.Sk_OUT.Akt_Schritt + + L 0 // Zeitwerte löschen + T Dyn.Sk_OUT.Terr_Zelle + T Dyn.Sk_OUT.Tok_Zelle + + JU NEU + +// Nicht programmierte Schritte: +// s000: SPA Ende +// s001: SPA Ende +// s002: SPA Ende +s003: JU Ende +s004: JU Ende +// s005: SPA Ende +// s006: SPA Ende +// s007: SPA Ende +s008: JU Ende +s009: JU Ende +s010: JU Ende +s011: JU Ende +s012: JU Ende +s013: JU Ende +s014: JU Ende +s015: JU Ende +s016: JU Ende +s017: JU Ende +s018: JU Ende +s019: JU Ende +// s020: SPA Ende +// s021: SPA Ende +s022: JU Ende +s023: JU Ende +s024: JU Ende +s025: JU Ende +s026: JU Ende +s027: JU Ende +s028: JU Ende +s029: JU Ende +s030: JU Ende + + +--- NW 46: OUT-Schritt X: Reserve --- + SET // Weiterschaltbedingung + = Weiter + +// Schrittaktionen: + SET + + L 16#B001 + T Dyn.Stop_Ursache_OUT + + A Dyn.Sk_OUT.Reset_Akt // Reset ist aktiv + L 20 // Weiter mit Schritt 20 + JC Neu_Mig // Bei diesem Schritt weiter + + A Weiter // Weiterschaltbedingung ist erfüllt + R Dyn.Sk_OUT.Err_Uebzeit // Sofort weiter ! + L 0 // Angabe der Wartezeit (*10ms) + JC Plus // Nächsten Schritt starten + + L 1 // Weiter mit Schritt 1 + JC Neu_Mig // Bei diesem Schritt weiter + + T Dyn.Sk_OUT.Neu_Schritt // Schritt, der im nächsten Zyklus aktiv werden soll + + SET + A Dyn.Sk_OUT.Auto_akt // Automatik ist aktiv + A Dyn.Sk_OUT.Bereich_ok + = Ueb_akt // Überwachungszeit aktivieren + L 50 // Angabe der Überwachungszeit (*1s) + JU tueb // Überwachungszeit + + JU RET + + +--- NW 47: OUT-Schritt 0: Warten auf Trolley --- +s000: SET // Weiterschaltbedingung + A B_InSchleuse_OUT // Trolley im Schleuse erkannt + A Dyn.Sk_OUT.Auto_akt // Automatik ist aktiv + A Dyn.Sk_OUT.Bereich_ok + = Weiter + +// Schrittaktionen: + SET + R Dyn.Error.Err_Puffer_nicht_leer_OUT + + A Dyn.Sk_OUT.Reset_Akt // Reset ist aktiv + L 20 // Weiter mit Schritt 20 + JC Neu_Mig // Bei diesem Schritt weiter + + L 0 + T Dyn.TrolleyID_Schleuse_Out + + A Weiter // Weiterschaltbedingung ist erfüllt + R Dyn.Sk_OUT.Err_Uebzeit // Sofort weiter ! + L 100 // Angabe der Wartezeit (*10ms) + JC Plus // Nächsten Schritt starten + + L 16#B001 + T Dyn.Stop_Ursache_OUT + +// Überwachungszeit starten: + L Dyn.Trolley_DL_Ausfahrt.Datenlistenkopf.AnzahlEintraege + L 0 // Trolleydaten vorhanden ? + >I // Ja ! + AN B_InSchleuse_OUT // Trolley im Schleuse erkannt + AN "Schleuse_geöffnet_OUT" + = Ueb_akt // Überwachungszeit aktivieren + + A Dyn.Sk_OUT.Err_Uebzeit + AN B_InSchleuse_OUT // Trolley im Schleuse erkannt + AN Dyn.Status.Trolley_nicht_in_Schleuse_OUT // Reset / Inilauf aktiv + S Dyn.Error.Err_Trolley_nicht_in_Schleuse_OUT + + L Puffer."Übzeit_in_Schleuse" + + JU tueb // Überwachungszeit + + +--- NW 48: OUT-Schritt 1: Trolley ist in Schleuse / Warten auf Auftrag --- +s001: NOP 0 + +// Schrittaktionen: + AN B_InSchleuse_OUT // Trolley im Schleuse erkannt + L 0 // Weiter mit Schritt 0 + JC Neu_Mig // Bei diesem Schritt weiter + + L Dyn.Trolley_DL_Ausfahrt.VollPuffer_Trolley_Out[1].Trolley_ID + T Dyn.TrolleyID_Schleuse_Out // Damit bei Ausfahrt angezeigt werden kann + +// Aber keine Daten mehr ?: + L Dyn.Trolley_DL_Ausfahrt.Datenlistenkopf.AnzahlEintraege + L 0 + ==I + S Dyn.Status.Puffer_nicht_leer_OUT + S Dyn.Status.Puffer_initialisieren_OUT // Damit Einfahren blockiert wird + +// Spezial-Betriebsarten: + A Dyn.Status.Einen_VollTrolley_ausfahren_OUT + O Status2.Alles_ausfahren_OUT + O Dyn.Status.Puffer_initialisieren_OUT + O + A Dyn.Status."Undef.Trolley_in_Schleuse_OUT" + AN "Schleuse_geöffnet_IN" // Trolley fährt noch ein + L 2 // Weiter mit Schritt 2 + JC Neu_Mig // Bei diesem Schritt weiter + +// Trolleydaten anzeigen: + L 16#B011 + T Dyn.Stop_Ursache_OUT + + L Dyn.TrolleyID_Schleuse_Out + L DINT#0 + ==D // Nein! + = Dyn.Error.Err_Puffer_nicht_leer_IN + JC RET + +// TrolleyID checken, ob in Trolleyliste: +// / CALL "Trolley_DL_Check_ID" +// Gesamt_Trolley_DL :=#Puffer.Gesamt_Trolley_DL +// TrolleyID :=#Dyn.TrolleyID_Schleuse_Out +// Check_EndZiel :="MW220"//Hier uninteressant +// Check_ZwischenZiel :="MW220"//Hier uninteressant +// Check_ShopGroup :="MD220"//Hier uninteressant +// Check_Standort :="MW220"//Hier uninteressant +// Err :=#Dyn.Error.Err_TrolleyID_Schleuse_unbekannt + +// Ausfahr-Auftrag vorhanden?: + L 16#B012 + T Dyn.Stop_Ursache_OUT + + L Dyn.ShopGroup_Auftrag_zum_Ausfahren // TrolleyID zum Ausfahren angegeben? + T "MD220" + L DINT#0 + ==D // Nein! + S Dyn.Status.Trolley_wartet_Auftrag + JC RET + +// Definierten Trolley checken, ob in TrolleyListe vorhanden: + L Puffer.Puffer_Dyn_DW + L Puffer.PufferTrolleyliste_DW_Out + +I + T SSDW + +CALL FC "DatenOut" (SSDB:=Puffer.Puffer_Dyn_DB, SSDW:=SSDW, PARA:=16#0000, SEARCHDATEN:=P#M220.0, RE_VAL:=Dyn.Rueckmld.RET_VAL_DL_VollPufferTrolley_OUT, OUTDATEN:=P#M220.0, Position:="MW196") // Eintrag suchen | Nicht relevant + + L 16#B013 + T Dyn.Stop_Ursache_OUT + + L Dyn.Rueckmld.RET_VAL_DL_VollPufferTrolley_OUT + L 2#10000000 + <>I +// / = #Dyn.Error.Err_TrolleyID_nicht_im_Leerpuffer + S Dyn.Status.Trolley_wartet_Auftrag + JC RET + + L 2 // Weiter mit Schritt 2 + JU Neu_Mig // Bei diesem Schritt weiter + + +--- NW 49: OUT-Schritt 2: Ausfahren ok ? --- +s002: NOP 0 + +// Schrittaktionen: + AN B_InSchleuse_OUT // Trolley im Schleuse erkannt + L 0 // Weiter mit Schritt 0 + JC Neu_Mig // Bei diesem Schritt weiter + + SET + S Dyn.Status."Trolley_wartet_Bereich+1" + +// Anlage aus oder Störung: + L 16#B020 + T Dyn.Stop_Ursache_OUT + + AN Dyn.Sk_OUT.Auto_akt // Automatik ist aktiv + ON Dyn.Sk_OUT.Bereich_ok // Bereich ist gestört + JC X002 + +// Starten erlaut Trolley ?: + L 16#B021 + T Dyn.Stop_Ursache_OUT + + AN Start_Ok // Starten ist erlaubt + JC X002 + +// Inks ok ?: + L 16#B022 + T Dyn.Stop_Ursache_OUT + + AN Inks_Ok // Starten ist erlaubt + JC X002 + +// Stau im Bereich +1: + L 16#B023 + T Dyn.Stop_Ursache_OUT + + A B_Stau_raus_Out + JC X002 // Stau + +// B_Aus_Schleuse aktiv: + L 16#B024 + T Dyn.Stop_Ursache_OUT + + A Puffer.Parameter_allg.B_AusSep_vorhanden + A B_AusSchleuse_OUT + = Dyn.Error.Err_Raus_Sensor // Raus-Sensor wird nicht erreicht (oder dauernd aktiv)! + JC X002 + +// Antriebe aktivieren / aktiv ?: + A Puffer.Parameter_allg.Antrieb_Plus_vorhanden // Schleuse an weiterem Antrieb (Weiche) + S Antrieb_plus_start // Kreisel-Antrieb plus starten + + L 16#B025 + T Dyn.Stop_Ursache_OUT + + AN Antrieb_plus_aktiv // Kreisel-Antrieb plus aktiv + A Puffer.Parameter_allg.Antrieb_Plus_vorhanden // Schleuse an weiterem Antrieb (Weiche) + ON Dyn.Sk_OUT.Auto_akt // Automatik ist aktiv + ON Dyn.Sk_OUT.Bereich_ok + JC RET + + L 5 // Nur 1 langes Signal! + JU Neu_Mig // Bei diesem Schritt weiter + +X002: L 1 // Auftrag checken + T Dyn.Sk_OUT.Neu_Schritt // Schritt, der im nächsten Zyklus aktiv werden soll + JU RET + + +--- NW 50: OUT-Schritt 5: Trolley fährt aus/ausgefahren ? --- +s005: SET // Weiterschaltbedingung + AN B_InSchleuse_OUT // Sensor Trolley ist in Schleuse + A( + O B_AusSchleuse_OUT // Sensor Trolley aus Schleuse gefahren + ON Puffer.Parameter_allg.B_AusSep_vorhanden + ) + A Antrieb_plus_aktiv + = Weiter + +// Schrittaktionen: + SET + R Start_Ok // Damit kein weiterer Puffer ausfährt + S Y_Schleuse_Auf_OUT // Schleuse öffnen + S Dyn.Status."Trolley_fährt_aus_OUT" + S Antrieb_plus_start // Kreisel-Antrieb plus starten + +// Trolley ist draussen: + A( + O B_AusSchleuse_OUT // Sensor Trolley aus Schleuse gefahren + ON Puffer.Parameter_allg.B_AusSep_vorhanden + ) + R Dyn.Sk_OUT.Err_Uebzeit // Sofort weiter ! + R Dyn.Error.Err_Trolley_raus_OUT // Trolley fährt nicht aus + L 0 + JC Plus // Nächsten Schritt starten + + A Weiter // Weiterschaltbedingung ist erfüllt + R Dyn.Sk_OUT.Err_Uebzeit // Sofort weiter ! + R Dyn.Error.Err_Trolley_raus_OUT // Trolley fährt nicht aus + L 50 // Falls nur mit Sensor gefahren wird, dann Wartezeit! + JC Plus // Nächsten Schritt starten + +// Trolley fährt nicht raus!: + A Dyn.Sk_OUT.Err_Uebzeit + O B_QuerTrolley_Out // QuerTrolley auf Crashkurs + S Dyn.Error.Err_Trolley_raus_OUT // Trolley fährt nicht aus + + L 16#B051 + T Dyn.Stop_Ursache_OUT + + AN B_AusSchleuse_OUT // Sensor Trolley aus Schleuse gefahren + JC x052 + + L 16#B052 + T Dyn.Stop_Ursache_OUT + +x052: A Antrieb_plus_aktiv + = Ueb_akt // Überwachungszeit aktivieren + L Puffer."Übzeit_aus_Schleuse" // Angabe der Überwachungszeit (*1s) + JU tueb // Überwachungszeit + + +--- NW 51: OUT-Schritt 6: Schleuse Mindestzeit geöffnet ? --- +s006: SET // Weiterschaltbedingung + A Dyn.Status.MindestZeit_ok_OUT + O + A Puffer.Parameter_allg.B_AusSep_vorhanden + A B_AusSchleuse_OUT // Sensor Trolley aus Schleuse gefahren + = Weiter + +// Schrittaktionen: + A B_QuerTrolley_Out // QuerTrolley auf Crashkurs + S Dyn.Error.Err_Trolley_raus_OUT // Trolley fährt nicht aus + + SET + R Start_Ok // Damit kein weiterer Puffer ausfährt + S Y_Schleuse_Auf_OUT // Schleuse öffnen + S Antrieb_plus_start // Kreisel-Antrieb plus starten + S Dyn.Status."Trolley_fährt_aus_OUT" + + A B_InSchleuse_OUT // Trolley wieder erkannt + L 5 // Weiter mit Schritt 5 + JC Neu_Mig // Bei diesem Schritt weiter + + A Weiter + L 0 + JC Plus // Nächsten Schritt starten + + L 16#B061 + T Dyn.Stop_Ursache_OUT + + JU RET + +--- NW 52: OUT-Schritt 7: Trolleydaten ändern --- +s007: SET // Weiterschaltbedingung + = Weiter + +// Schrittaktionen: + SET + R Dyn.Status.Einen_VollTrolley_ausfahren_OUT + S Dyn.Status.Trolley_draussen_Out // 1 Zyklus + + L Dyn.Vereinzelungstakte_OUT + + DINT#1 // Vereinzelungen +1 + T Dyn.Vereinzelungstakte_OUT + +// Neue Position B01A an Trolleyliste übergeben: +CALL FC "Trolley_DL_Neue_Pos" (Gesamt_Trolley_DL:=Puffer.Gesamt_Trolley_DL, TrolleyID:=Dyn.TrolleyID_Schleuse_Out, Position:=16#B01A, ShopGroup:=DINT#0, Err:="M199.0") + +// Austrag aus Trolley-VollPufferliste + L Dyn.TrolleyID_Schleuse_Out + T "MD220" + T Dyn.TrolleyID_ausgefahren + + L Puffer.Puffer_Dyn_DW + L Puffer.PufferTrolleyliste_DW_Out + +I + T SSDW + +CALL FC "DatenOut" (SSDB:=Puffer.Puffer_Dyn_DB, SSDW:=SSDW, PARA:=16#E100, SEARCHDATEN:=P#M220.0, RE_VAL:="MB199", OUTDATEN:=P#M220.0, Position:="MW196") // Eintrag löschen | Nicht relevant + +// Gewollter Trolley ausgefahren?: + L Dyn.ShopGroup_Auftrag_zum_Ausfahren + L Dyn.TrolleyID_ausgefahren + <>I // Nicht identisch! + JC NixAuftrag + + L 0 // Auftrag löschen, da ausgefahren + T Dyn.ShopGroup_Auftrag_zum_Ausfahren + +// Trolley löschen: +NixAuftrag: L DINT#0 + T Dyn.TrolleyID_Schleuse_Out + +// Letzter Trolley ausgefahren?: + L Dyn.Trolley_DL_Ausfahrt.Datenlistenkopf.AnzahlEintraege + L 0 // Liste leer? + ==I + S Dyn.Status.Leer_Check_OUT + + JU ENDE_Mig + + +--- NW 53: OUT-Schritt 20: Schleuse resetten --- +s020: SET // Weiterschaltbedingung + = Weiter // Weiterschaltbedingung ist erfüllt + +// Schrittaktionen: + A "Schleuse_geöffnet_OUT" + R Start_Ok // Damit kein weiterer Puffer ausfährt + + L 16#B201 + T Dyn.Stop_Ursache_OUT + + A Weiter // Weiterschaltbedingung ist erfüllt + L 300 // Angabe der Wartezeit (*10ms) + JC Plus // Nächsten Schritt starten + + SET + = Ueb_akt // Überwachungszeit aktivieren + L 30 // Angabe der Überwachungszeit (*100ms) + JU tueb // Überwachungszeit + + +--- NW 54: OUT-Schritt 21: Reset ist zu Ende --- +s021: SET + R Dyn.Sk_OUT.Reset_Akt // Reset ist aktiv + R Dyn.HMI.Schleuse_resetten_OUT + + JU ENDE_Mig // Neubeginn + + +--- NW 55: OUT-Schrittkette beenden --- +ENDE_Mig: L 0 // Schritt 0: Warten + T Dyn.Sk_OUT.Akt_Schritt + + L 0 // Zeitwert löschen + T Dyn.Sk_OUT.Terr_Zelle + T Dyn.Sk_OUT.Tok_Zelle + + SET + R Dyn.Sk_OUT.Err_Uebzeit + + JU RET + + +--- NW 56: OUT-Nächsten Schritt aktivieren --- +Plus: T Dyn.Sk_OUT.T_ok // Wartezeit übergeben + + A Dyn.Sk_OUT.Err_Uebzeit // Störung noch nicht quittiert + JC RET + + L 0 // keine Wartezeit ? + ==I // Ja ! -> sofort weiter + JC w220 + + AN Warte_neu // Wartezeit neutriggern + JC W220_Mig + + L 0 + T Dyn.Sk_OUT.Tok_Zelle // Wartezeit + +W220_Mig: A Warte_stop // Wartezeit stoppen + JC RET + + L Dyn.Sk_OUT.Tok_Zelle + L "MW4" // Wartezeit +10ms + +I + T Dyn.Sk_OUT.Tok_Zelle // Wartezeit + L Dyn.Sk_OUT.T_ok // abgelaufen ? + I // abgelaufen ? + AN Dyn.Sk_OUT.Err_Uebzeit + JC en24 // Nein ! + + A Ueb_akt // Überwachungszeit aktivieren + S Dyn.Sk_OUT.Err_Uebzeit + + L 0 // Zeitwert löschen + T Dyn.Sk_OUT.Terr_Zelle + + JU RET + +en24: NOP 0 + +--- NW 58: OUT-Überwachungszeit +1 --- + AN Dyn.Sk_OUT.Ueb_akt // Schrittaktion ist aktiv + ON "1s-Impuls" + JC RET + + L Dyn.Sk_OUT.Terr_Zelle + + 1 // Üb.zeit +1s + T Dyn.Sk_OUT.Terr_Zelle + + JU RET + + +--- NW 59: Ende --- +RET: NOP 0 + + A Dyn.Status.Puffer_initialisieren_OUT + O Status2.Alles_ausfahren_OUT + R Start_Ok // Sonst starten Alle auf einmal durcheinander! + + BE + diff --git a/=A01+UH07-KF00/Programmbausteine/Module/MHMÜbergang_ohne_Schleuse.awl b/=A01+UH07-KF00/Programmbausteine/Module/MHMÜbergang_ohne_Schleuse.awl new file mode 100644 index 0000000..c09b9ae --- /dev/null +++ b/=A01+UH07-KF00/Programmbausteine/Module/MHMÜbergang_ohne_Schleuse.awl @@ -0,0 +1,91 @@ +=== FB 183: MHMÜbergang_ohne_Schleuse [STL] === +INTERFACE: + Input: + ErrQuit : Bool + B_Anfang : Bool + B_Am_Übergang : Bool + B_Stau_Antrieb_plus : Bool + Antrieb_aktiv : Bool + Antrieb_plus_aktiv : Bool + Output: + InOut: + Antrieb_vor : Bool + Antrieb_start : Bool + Antrieb_stop : Bool + Antrieb_plus_vor : Bool + Antrieb_plus_start : Bool + Static: + Am_Übergang : "MSensoren" + Stau_Antrieb_plus : "MSensoren" + Temp: + Antrieb : Bool + Antrieb_gestoppt : Bool + Constant: + +--- NW 1: Antrieb ansteuern --- + SET + R Antrieb_gestoppt // Falls bei Aufruf nicht gestoppt wird! + +// Antrieb starten: + A ErrQuit + O B_Anfang + S Antrieb_start + S Antrieb_vor + +// Trolley am Übergang: + AN "Am_Übergang".Stat.B_Akt + JC Nix + +// Antrieb stoppen: + A Stau_Antrieb_plus.Stat.B_Akt + S Antrieb_stop // Trolley stoppen + S Antrieb_gestoppt // Falls bei Aufruf nicht gestoppt wird! + JC Nix + + AN Stau_Antrieb_plus.Stat.B_Akt + S Antrieb_plus_vor // Antrieb plus einschalten + + SET + S Antrieb_plus_start // Antrieb plus zeitlang starten + + AN Antrieb_plus_aktiv + S Antrieb_stop // Trolley stoppen + S Antrieb_gestoppt // Falls bei Aufruf nicht gestoppt wird! + JC Nix + +// Antrieb einschalten: + SET + S Antrieb_vor // Trolley weiterfahren + +Nix: NOP 0 + + +--- NW 2: Antrieb plus zusätzlich ansteuern --- +// Antrieb plus starten: + A B_Stau_Antrieb_plus // Sensor + O ErrQuit + S Antrieb_plus_start // Antrieb plus zeitlang starten + +// Antrieb plus einschalten: + A B_Stau_Antrieb_plus + AN Stau_Antrieb_plus.Stat.B_Akt + CLR // Nicht mehr! + S Antrieb_plus_vor // Antrieb plus einschalten + + +--- NW 3: Trolley ist am Übergang --- + A Antrieb_aktiv + A Antrieb_plus_aktiv + AN Antrieb_gestoppt // Falls bei Aufruf nicht gestoppt wird! + = Antrieb + +CALL FB "None" , (ESensor:="B_Am_Übergang", T_Ein:=1, T_Aus:=50, tein_aktiv:=1, taus_aktiv:=Antrieb) + + +--- NW 4: Stau im Förderer plus --- +CALL FB "None" , (ESensor:=B_Stau_Antrieb_plus, T_Ein:=100, T_Aus:=50, tein_aktiv:=1, taus_aktiv:=1) + + +--- NW 5: Ende --- + BE + diff --git a/=A01+UH07-KF00/Programmbausteine/Module/MHMÜberlauf_VP.awl b/=A01+UH07-KF00/Programmbausteine/Module/MHMÜberlauf_VP.awl new file mode 100644 index 0000000..ef93376 --- /dev/null +++ b/=A01+UH07-KF00/Programmbausteine/Module/MHMÜberlauf_VP.awl @@ -0,0 +1,1178 @@ +=== FB 276: MHMÜberlauf_VP [STL] === +INTERFACE: + Input: + VollPuffer_Nr : Int // Aufruf für Voll-Puffer + ErrQuit : Bool // Ablaufstörung quittieren + B_VollPufferEinfahrt : Bool // Sensor Trolley fährt in VollPuffer + B_InSchleuse_IN : Bool // Sensor Trolley ist in Schleuse oben + B_InSchleuse_OUT : Bool // Sensor Trolley ist in Schleuse unten + B_AusSchleuse_OUT : Bool // Sensor Trolley hat Schleuse unten verlassen + B_Stau_raus_Out : Bool // Sensor Stau im Bereich unten rausfahren + B_QuerTrolley_Out : Bool // Crash-Trolley auf Crashkurs erkannt + Antrieb_plus_aktiv : Bool // Kreisel-Antrieb plus aktiv + Schleuse_geöffnet_IN : Bool // Schleuse oben hat geöffnet + Schleuse_geöffnet_OUT : Bool // Schleuse unten hat geöffnet + Output: + Y_Schleuse_Auf_IN : Bool // Schleuse oben öffnen + Y_Schleuse_Auf_OUT : Bool // Schleuse unten öffnen + Error : Word // Störungen übergeben + InOut: + Start_Ok : Bool // Starten von ausserhalb ist erlaubt + Antrieb_plus_start : Bool // Antrieb plus starten + Antrieb_plus_stoppen : Bool // Antrieb plus stoppen + hStOk : Bool // Anzeige Start n. Störung aktivieren + Ausfahr_Inks : Int // Rest-Inks, wo sich Trolley befindet + Static: + Res16 : Array[1..2] of Int // Reserve + SAVE : Struct + Weichen_DB : Int // Weichen-FIFO-DB + Weichen_DW : Int // Weichen-FIFO-DW + Para : Struct // Parameter + VollPuffer_DL_DB : Int // Einsprung VollPuffer-Datenliste-DB + VollPuffer_DL_DW : Int // Einsprung VollPuffer-Datenliste-DW + Res1 : Array[1..2] of Int // Reserve + Status2 : Struct + Puffer_leer_IN : Bool // Puffer oben ist leer + Puffer_hat Platz_IN : Bool // Puffer oben hat noch Kapazität + Kein_neuer_Trolley_kommt_IN : Bool // Puffer oben zeitlang ohne neuen Trolley + Leer_Check_IN : Bool // VollPuffer oben wird auf leer gecheckt + Reset_aktiv_IN : Bool // Reset oben aktiv + Trolley_nicht_in_Schleuse_IN : Bool // Trolley oben fährt nicht in Schleuse > Inilauf gestartet + Puffer_nicht_leer_IN : Bool // Puffer oben nicht leer > Inilauf gestartet + Puffer_initialisieren_IN : Bool // VollPuffer oben initialisieren + MindestZeit_ok_IN : Bool // Schleuse ist MindestZeit geöffnet + Frei11 : Bool + Frei12 : Bool + Frei13 : Bool + Alles_ausfahren_OUT : Bool // Alle Trolleys ausfahren + Eintrag_DL_Leerliste_erfolgt : Bool // Eintrag in DLVPPuffer_leer (DB100) erfolgt + Eintrag_DL_Reinliste_erfolgt : Bool // Eintrag in DLVPPuffer_ShopGroup rein (DB101) erfolgt + Eintrag_DL_Abrufliste_erfolgt : Bool // Eintrag in DLVPPuffer_ShopGroup raus (DB901) erfolgt + Puffer : "UDLHMVollPuffer" // Statische VollPufferdaten (aus DL) + Dyn : Struct // Dynamische Daten + Status : Struct + Puffer_leer_OUT : Bool // Puffer oben ist leer + Puffer_hat Platz_OUT : Bool // Puffer oben hat noch Kapazität + Kein_neuer_Trolley_kommt_OUT : Bool // Puffer unten zeitlang ohne neuen Trolley + Leer_Check_OUT : Bool // VollPuffer unten wird auf leer gecheckt + Reset_aktiv_OUT : Bool // Reset unten aktiv + Trolley_nicht_in_Schleuse_OUT : Bool // Trolley unten fährt nicht in Schleuse > Inilauf gestartet + Puffer_nicht_leer_OUT : Bool // Puffer unten nicht leer > Inilauf gestartet + Puffer_initialisieren_OUT : Bool // VollPuffer unten initialisieren + MindestZeit_ok_OUT : Bool // Schleuse ist MindestZeit geöffnet + Undef.Trolley_in_Schleuse_OUT : Bool // Undefinierter Trolley in Schleuse unten erkannt + Trolley_wartet_Auftrag : Bool // Trolley wartet auf Auftrag (unten) + Trolley_wartet_Bereich+1 : Bool // Trolley wartet auf Bereich +1 (unten) + Einen_VollTrolley_ausfahren_OUT : Bool // Einen Voll-Trolley ausfahren + Trolley_fährt_aus_OUT : Bool // Trolley fährt aus (unten) + Trolley_draussen_Out : Bool // Trolley ist ausgefahren + Error_aktiv : Bool // Störung vorhanden + TrolleyID_Einfahrt : DInt // Trolley-Nr ist eingefahren + TrolleyID_Schleuse_IN : DInt // Trolley-Nr in Schleuse oben (Daten) + TrolleyID_Schleuse_Out : DInt // Trolley-Nr in Schleuse unten (Daten) + ShopGroup_IN : DInt // Diese Shopgruppe ist im oberen VollPuffer + ShopGroup_OUT : DInt // Diese Shopgruppe ist im unteren VollPuffer + ShopGroup_Auftrag_zum_Ausfahren : DInt // ShopGroup zum Ausfahren (FFFF = akt.Trolley ausfahren) + HMI : Struct + ShopGroup_IN : Int // ShopGroup im VollPuffer oben (IN:PLC, OUT:PLC) + ShopGroup_OUT : Int // ShopGroup im VollPuffer unten (IN:PLC, OUT:PLC) + Voll_Trolleys_IN : Int // Anzahl Trolleys oben (IN:PLC, OUT:PLC) + Voll_Trolleys_OUT : Int // Anzahl Trolleys unten (IN:PLC, OUT:PLC) + Res_Trolleys_IN : Int // Anzahl reservierte Trolleys oben (IN:PLC, OUT:PLC) + Frei_Plätze_IN : Int // Freiplätze für Trolleys (IN:PLC, OUT:PLC) + TrolleyID_Schleuse_IN : DInt // Trolley-Nr in Schleuse oben (IN:PLC, OUT:PLC) + TrolleyID_Schleuse_OUT : DInt // Trolley-Nr in Schleuse unten (IN:PLC, OUT:PLC) + Schleuse_resetten_IN : Bool // Schleuse resetten oben (IN:HMI, Out:PLC) + Schleuse_resetten_OUT : Bool // Schleuse resetten unten (IN:HMI, Out:PLC) + Puffer_initialisieren : Bool := 1 // VollPuffer initialisieren (IN:HMI, Out:PLC) + Einlagern_gesperrt : Bool // Einlagern gesperrt (IN:HMI, OUT:HMI) + AusLagern_gesperrt : Bool // AusLagern gesperrt (IN:HMI, OUT:HMI) + Sk_IN : "USk_Omni" // Status der Schrittkette Schleuse IN (oben) + Sk_OUT : "USk_Omni" // Status der Schrittkette Schleuse OUT (unten) + TrolleyID_doppelt : DInt // TrolleyID doppelt (eingefahrener Trolley) + TrolleyID_unbekannt_Einfahrt : DInt // TrolleyID unbekannt (eingefahrener Trolley) + TrolleyID_unbekannt_Schleuse_OUT : DInt // TrolleyID unbekannt (Trolley in Schleuse unten) + Rueckmld : Struct + RET_VAL_BLKMOV_VollPuffer : Int // Rückmeldung nach BLKMOV-Aufruf + RET_VAL_DL_VollPuffer : Byte // Rückmeldung nach DatenOut-Aufruf + RET_VAL_DL_Res_OUT : Byte // Rückmeldung nach DatenOut-Aufruf + RET_VAL_DL_VollPufferTrolley_IN : Byte // Rückmeldung nach DatenIN-Aufruf + RET_VAL_DL_VollPufferTrolley_OUT : Byte // Rückmeldung nach DatenOut-Aufruf + Error : "UErrHMVollpuffer" + Stau_Zeit : Int // Sensor B_Einfahrt ist belegt [1s] + Mindest_Zeit_IN : Int // Sensor B_in_Schleuse oben ist frei [1s] + Mindest_Zeit_OUT : Int // Sensor B_in_Schleuse unten ist frei [1s] + Leer_Zeit_IN : Int // Puffer oben ist frei [1s] + Leer_Zeit_OUT : Int // Puffer unten ist frei [1s] + Stop_Ursache_IN : Word // Stop-Stelle: Nw + Position + Stop_Ursache_OUT : Word // Stop-Stelle: Nw + Position + Vereinzelungstakte_OUT : DInt // Anzahl der getätigten Vereinzelungstakte + TrolleyID_ausgefahren : DInt // TrolleyID des ausgefahrenen Trolleys + ShopGroup_EFL_Gespeichert : DInt // In EinfahrListe gespeicherte ShopGroup + ShopGroup_AFL_Gespeichert : DInt // In AusfahrListe gespeicherte ShopGroup + Reservierungs_DL : Struct // AB DW200: Liste der resevierter Trolleys + Datenlistenkopf : Struct + KOPF : Word := WORD#16#DA04 // Datenliste-Kennnung (DA) / Datensatzlänge in Word (1 - 128) + LAENGE : Int := 12 // Länge der Datenliste (maximale Anzahl der Datensätze) + STAMMDATEN : Int := 2 // Stammdatenlänge in Word (1 - 9) + INDDB : Int // Indizierter DB (nur bei Stammdaten = 1 erlaubt !!!) + LAENGEINDDB : Int // Länge des indizierten DB in Word (nur bei Stammdaten = 1 erlaubt !!!) + INDDATEN_WANDEL_FC : Int // FC zum Wandeln der indizierte Daten (nur bei Stammdaten = 1 erlaubt !!!) + LETZTERZUGRIFF : Int // Speicherung des letzten Zugriffs + Belegt14 : Int // reserviert von Sort-Datenliste + AnzahlEintraege : Int // Anzahl der eingetragenen Datensätze (nicht bei ind.Zugriff!) + Reserve18 : Int // Reserve + Res_Trolley : Array[1..12] of Struct // Reservierter Trolley für VollPuffer + Trolley_ID : DInt // Trolley_ID + ShopGroup : DInt // Shop-Gruppe auf Trolley + Endekennung : Word := WORD#16#DAEE // Datensort-Ende-Kennung (DBEE) + Res350 : Array[1..16] of Int + Trolley_DL_Einfahrt : Struct // AB DW350: Liste der Trolleys im VollPuffer + Datenlistenkopf : Struct + KOPF : Word := WORD#16#DA04 // Datenliste-Kennnung (DA) / Datensatzlänge in Word (1 - 128) + LAENGE : Int := 12 // Länge der Datenliste (maximale Anzahl der Datensätze) + STAMMDATEN : Int := 2 // Stammdatenlänge in Word (1 - 9) + INDDB : Int // Indizierter DB (nur bei Stammdaten = 1 erlaubt !!!) + LAENGEINDDB : Int // Länge des indizierten DB in Word (nur bei Stammdaten = 1 erlaubt !!!) + INDDATEN_WANDEL_FC : Int // FC zum Wandeln der indizierte Daten (nur bei Stammdaten = 1 erlaubt !!!) + LETZTERZUGRIFF : Int // Speicherung des letzten Zugriffs + Belegt14 : Int // reserviert von Sort-Datenliste + AnzahlEintraege : Int // Anzahl der eingetragenen Datensätze (nicht bei ind.Zugriff!) + Reserve18 : Int // Reserve + VollPuffer_Trolley_IN : Array[1..12] of Struct // Trolley im VollPuffer + Trolley_ID : DInt // Trolley_ID + Abruf_ShopGroup : DInt // Reserviert für Ausfahrt + Endekennung : Word := WORD#16#DAEE // Datensort-Ende-Kennung (DBEE) + Res500 : Array[1..16] of Int + Trolley_DL_Ausfahrt : Struct // AB DW350: Liste der Trolleys im VollPuffer + Datenlistenkopf : Struct + KOPF : Word := WORD#16#DA04 // Datenliste-Kennnung (DA) / Datensatzlänge in Word (1 - 128) + LAENGE : Int := 12 // Länge der Datenliste (maximale Anzahl der Datensätze) + STAMMDATEN : Int := 2 // Stammdatenlänge in Word (1 - 9) + INDDB : Int // Indizierter DB (nur bei Stammdaten = 1 erlaubt !!!) + LAENGEINDDB : Int // Länge des indizierten DB in Word (nur bei Stammdaten = 1 erlaubt !!!) + INDDATEN_WANDEL_FC : Int // FC zum Wandeln der indizierte Daten (nur bei Stammdaten = 1 erlaubt !!!) + LETZTERZUGRIFF : Int // Speicherung des letzten Zugriffs + Belegt14 : Int // reserviert von Sort-Datenliste + AnzahlEintraege : Int // Anzahl der eingetragenen Datensätze (nicht bei ind.Zugriff!) + Reserve18 : Int // Reserve + VollPuffer_Trolley_Out : Array[1..12] of Struct // Trolley im VollPuffer + Trolley_ID : DInt // Trolley_ID + Abruf_ShopGroup : DInt // Reserviert für Ausfahrt + Endekennung : Word := WORD#16#DAEE // Datensort-Ende-Kennung (DBEE) + Res700 : Array[1..41] of Int // Reserve + None: + VollPuffer_Nr : Int // Nummer der VollPuffer + Puffer_Typ : Int // VollPufferntyp = 276 (VollPuffer) + Puffer_Position : Word // VollPuffer-Position (für Gesamt-TrolleyDatenliste) + Puffer_Position_Inks : Int // VollPuffer-Position_Inks (für Ausfahrsteuerung) + None: + Reset : Bool := 1 + None: + Reset : Bool := 1 + Temp: + Quelle : Any // Zeiger, wo Rein-Daten sind + Ziel : Any // Zeiger, FIFO-Stelle + Ueb_akt : Bool // Überwachungszeit aktivieren + Weiter : Bool // Weiterschaltbedingung ist erfüllt + Warte_neu : Bool // Wartezeit neu triggern + Warte_stop : Bool // Wartezeit stoppen + 1.Trolley_IN : Bool + Neu_Trolley_in_Puffer_IN : Bool // Neuer Trolley in Puffer eingefahren + 1.Trolley_OUT : Bool + Inks_Ok : Bool // Starten aufgrund der Inks erlaubt + Puffer_IN_ist_leer : Bool // VollPuffer zeitlang ohne Sensor + Puffer_OUT_ist_leer : Bool // VollPuffer zeitlang ohne Sensor + Abruf_Trolley_vorne : Bool // Abruf-Trolley ist in Schleuse + Oberen_Puffer_Freigeben : Bool + Oberen_Puffer_nichts_einfahren : Bool + Puffer_B : Bool + GesamtAnzahl : Int + SSDW : Int + Schleife : Word // Loopzähler + Trolley : Int + Position : Int + Akive_ShopGroup : DInt + Constant: + +--- NW 1: Parameter-Übergabe --- + L VollPuffer_Nr + + L 275 // Einsprung Puffer-DL + T Para.VollPuffer_DL_DB // vor Aufruf übergeben! + L 0 + T Para.VollPuffer_DL_DW + + +--- NW 2: Anzeige OP --- + L 252 // Bereichsstop aktiv + AN Dyn.Sk_OUT.Bereich_ok // Also: Bereichsstop / Not-Aus + JC w010 + + L 253 + AN Dyn.Sk_OUT.Auto_akt // Keine Betriebsart + AN Dyn.Sk_OUT.Hand_akt + JC w010 + + L 255 // Handbetrieb aktiv + A Dyn.Sk_OUT.Hand_akt + JC w010 + + L Dyn.Sk_IN.Akt_Schritt // Aktiver Schritt + T Dyn.Sk_IN.OP_Schritt + L Dyn.Sk_OUT.Akt_Schritt // Aktiver Schritt + T Dyn.Sk_OUT.OP_Schritt + + JU OP_Ok + +w010: T Dyn.Sk_IN.OP_Schritt + T Dyn.Sk_OUT.OP_Schritt + +OP_Ok: NOP 0 + + +--- NW 3: Out-Bits zum Zurücksetzen / Antrieb plus starten --- + SET + R Y_Schleuse_Auf_IN + R Y_Schleuse_Auf_OUT + R Puffer_IN_ist_leer + R Puffer_OUT_ist_leer + + SET // Jeden Zyklus neu + R Dyn.Status.Trolley_wartet_Auftrag + R Dyn.Status."Trolley_wartet_Bereich+1" + R Dyn.Status."Trolley_fährt_aus_OUT" + R Dyn.Status.Trolley_draussen_Out + R "1.Trolley_IN" + R "1.Trolley_OUT" + R Neu_Trolley_in_Puffer_IN + + A Dyn.Sk_IN.Reset + O Dyn.Sk_IN.Reset_Akt + = Status2.Reset_aktiv_IN + + A Dyn.Sk_OUT.Reset + O Dyn.Sk_OUT.Reset_Akt + = Dyn.Status.Reset_aktiv_OUT + + SET + R Inks_Ok + + A Dyn.Sk_OUT.Auto_akt + = Dyn.Sk_IN.Auto_akt + A Dyn.Sk_OUT.Bereich_ok + = Dyn.Sk_IN.Bereich_ok + +// Antrieb zusätlich starten: + A ErrQuit // Überwachungszeit abgelaufen quittieren + S Antrieb_plus_start // Kreisel-Antrieb plus starten + + +--- NW 4: HMI-Zeug --- +// Von HMI: + A Dyn.HMI.Schleuse_resetten_IN + R Dyn.HMI.Schleuse_resetten_IN + S Dyn.Sk_IN.Reset // SK zurücksetzen + + A Dyn.HMI.Schleuse_resetten_OUT + R Dyn.HMI.Schleuse_resetten_OUT + S Dyn.Sk_OUT.Reset // SK zurücksetzen + + A Dyn.HMI.Puffer_initialisieren + R Dyn.HMI.Puffer_initialisieren // Ohne Reaktion, da keine Daten + + A Dyn.HMI.Einlagern_gesperrt // Wird unten direkt verarbeitet + + A Dyn.HMI.AusLagern_gesperrt // Wird unten direkt verarbeitet + + CLR + +// An HMI: + L 0 + T Dyn.HMI.ShopGroup_IN + T Dyn.HMI.ShopGroup_OUT + T Dyn.HMI.Voll_Trolleys_IN + T Dyn.HMI.Voll_Trolleys_OUT + T Dyn.HMI.Res_Trolleys_IN + T Dyn.HMI."Frei_Plätze_IN" + + L DINT#0 + T Dyn.HMI.TrolleyID_Schleuse_IN + T Dyn.HMI.TrolleyID_Schleuse_OUT + + +--- NW 5: Schrittkette OUT zurücksetzen --- + AN Dyn.Sk_OUT.Reset // SK zurücksetzen + JC en04 + +// Schrittkette zurücksetzen: + L 0 // Schritt 0: Warten + T Dyn.Sk_OUT.Akt_Schritt + + L 0 // Zeitwert löschen + T Dyn.Sk_OUT.Terr_Zelle + T Dyn.Sk_OUT.Tok_Zelle + T Dyn.Leer_Zeit_OUT + + SET + R Status2.Alles_ausfahren_OUT + R Dyn.Error.Err_BLKMov // Error bei Block kopieren + R Dyn.Sk_OUT.Reset // SK zurücksetzen + R Dyn.Sk_OUT.Err_Schritt // Undefinierter Schritt + R Dyn.Sk_OUT.Err_Uebzeit // Sofort weiter ! + S Dyn.Sk_OUT.Reset_Akt // Reset ist aktiv + + SET + R Dyn.Error.Puffer_DL // VollPuffer-Datenliste fehlerhaft + R Dyn.Error.Undef_Puffer // undefiniertes VollPuffer + R Dyn.Status.Trolley_nicht_in_Schleuse_OUT // Trolley fährt nicht in Schleuse + R Dyn.Status.Puffer_nicht_leer_OUT // Puffer unten nicht leer + R Dyn.Error.Err_Uebzeit // Überwachungzeit ist abgelaufen + R Dyn.Error.Err_Schritt // Schritt-Nummer ist nicht definiert + R Dyn.Error.Err_Stau_Einfahrt // Stau am VollPuffer-Eingang + R Dyn.Error.Err_BLKMov + + L 0 + T Dyn.Stau_Zeit // Sensor B_VorSep ist belegt [1s] + T Dyn.Mindest_Zeit_OUT // Sensor B_VorSep ist frei [1s] + T SAVE.Weichen_DB + T SAVE.Weichen_DW + +// Defaultwerte übergeben: + L 0 // Damit statische Werte neu aus Datenbank geholt werden ! + T Puffer.VollPuffer_Nr // Nummer des VollPuffers + + BEU + +en04: NOP 0 + + +--- NW 6: Störungen nach Außen übergeben --- + L 0 + T "MW200" + + A Dyn.Error.Puffer_DL // VollPuffer-Datenliste fehlerhaft + = "M200.0" + A Dyn.Error.Undef_Puffer // undefiniertes VollPuffer + = "M200.1" + A Dyn.Error.Err_Trolley_nicht_in_Schleuse_OUT // Trolley fährt nicht in untere Schleuse + = "M200.2" + A Dyn.Sk_IN.Err_Uebzeit + O Dyn.Sk_OUT.Err_Uebzeit + = Dyn.Error.Err_Uebzeit // Überwachungzeit ist abgelaufen + = "M200.3" + NEG + R Dyn.Sk_OUT.Err_Uebzeit_AnzOk + A Dyn.Sk_OUT.Err_Schritt + = Dyn.Error.Err_Schritt // Schritt-Nummer ist nicht definiert + = "M200.4" + A Dyn.Error.Err_Stau_Einfahrt // Stau am VollPuffer-Eingang + = "M200.5" + A Dyn.Error.Err_BLKMov // Error bei Block kopieren + = "M200.6" + A Dyn.Error.Err_Trolley_raus_OUT // Trolley fährt nicht aus unterer Schleuse + = "M200.7" + A Dyn.Error.Err_Puffer_nicht_leer_OUT // Trolley unten in Schleuse, obwohl keine Daten! Initialisieren hat gestartet! + = "M201.0" + A Dyn.Error.Err_Trolley_nicht_in_Schleuse_IN // Trolley fährt nicht in mittlere Schleuse + = "M201.1" + A Dyn.Error.Err_Trolley_raus_IN // Trolley fährt nicht aus mittlere Schleuse + = "M201.2" + A Dyn.Error.Err_Puffer_nicht_leer_IN // Trolley mittig in Schleuse, obwohl keine Daten! Initialisieren hat gestartet! + = "M201.3" + CLR + = "M201.4" + A Dyn.Error.Err_Raus_Sensor + = "M201.5" + CLR + = "M201.6" + A Dyn.Sk_OUT.Reset_Akt // Reset ist aktiv + = Dyn.Error.Reset_aktiv + = "M201.7" + +// Andere Meldung als Überwachungszeit aktiv ?: + L "MW200" + L 2#1111_0111_1111_1111 + AW + L 2#0000_0000_0000_0000 // Andere Meldung als Üb.zeit aktiv ? + <>I // Ja ! + ON Dyn.Sk_OUT.Err_Uebzeit_AnzOk // Störung anzeigen ok, da 2.Zyklus aktiv ! + R "M200.3" // Üb.Zeit-Meldung nicht an PC senden + + A Dyn.Sk_OUT.Err_Uebzeit + S Dyn.Sk_OUT.Err_Uebzeit_AnzOk // Störung anzeigen ok, da 2.Zyklus aktiv ! + + L "MW200" + T Error // Schnittstelle nach Außen + +// Störung vorhanden: + L 0 + <>I // Ja ! + = Dyn.Status.Error_aktiv + CLR // Es gibt keine Quittier-Störung! + A Dyn.Error.Err_Uebzeit // Überwachungzeit ist abgelaufen + S hStOk + +// Störungen pro Zyklus neu erzeugen: + SET + R Dyn.Error.Puffer_DL // VollPuffer-Datenliste fehlerhaft + R Dyn.Error.Undef_Puffer // undefiniertes VollPuffer + R Dyn.Error.Err_Schritt // Schritt-Nummer ist nicht definiert + R Dyn.Error.Err_BLKMov + R Dyn.Error.Err_Puffer_nicht_leer_OUT // Trolley unten in Schleuse, obwohl keine Daten! Initialisieren hat gestartet! + R Dyn.Error.Err_Trolley_nicht_in_Schleuse_OUT // Trolley fährt nicht in unterer Schleuse + R Dyn.Error.Err_Trolley_raus_OUT // Trolley fährt nicht aus unterer Schleuse + R Dyn.Error.Err_Puffer_nicht_leer_IN // Trolley mittig in Schleuse, obwohl keine Daten! Initialisieren hat gestartet! + R Dyn.Error.Err_Trolley_nicht_in_Schleuse_IN // Trolley fährt nicht in mittlere Schleuse + R Dyn.Error.Err_Trolley_raus_IN // Trolley fährt nicht aus mittlere Schleuse + R Dyn.Error.Err_Raus_Sensor + + +--- NW 7: Statische VollPuffer-Parameter holen --- + L Puffer.VollPuffer_Nr // Nummer des VollPuffers + L VollPuffer_Nr // Aufruf-Parameter + ==I // Identisch ? + R Dyn.Error.Puffer_DL // VollPufferdatenbank fehlerhaft + R Dyn.Error.Undef_Puffer // undefiniertes VollPuffer + JC en06 // Ja ! + + T "MW200" // Search-Daten + +CALL FC "DatenOut" (SSDB:=Para.VollPuffer_DL_DB, SSDW:=Para.VollPuffer_DL_DW, PARA:=WORD#16#0000, SEARCHDATEN:=P#M200.0, RE_VAL:=Dyn.Rueckmld.RET_VAL_DL_VollPuffer, OUTDATEN:=P#M220.0, Position:="MW196") + + JBI G_Ok + + A "M199.0" + JCN w060 + + SET + = Dyn.Error.Puffer_DL // VollPufferdatenbank fehlerhaft + + L 16#A061 + T Dyn.Stop_Ursache_OUT + + BEU + +w060: SET + S Dyn.Error.Undef_Puffer // undefinierter VollPuffer + + L 16#0062 + T Dyn.Stop_Ursache_IN + T Dyn.Stop_Ursache_OUT + + BEU + +// Kennung + Datenbytes +G_Ok: SET + R Dyn.Error.Puffer_DL // Gefälledatenbank fehlerhaft + R Dyn.Error.Undef_Puffer // undefinierte Gefällestrecke + + L 16#1004 // Kennung 10 + Word=04 + T LW0 // Any-Kennung, Datentyp + L 20 // Datenwords speichern + T LW2 // Wiederholungen + +// Quelle-Pointer erzeugen: + L 0 // Bei Merker = 0 ! + T LW4 // DB_Nummer + L 220 // Adresse + SLD 3 + L 16#8300_0000 // Kennung: Merker + OD + T LD6 // Kennung, Adresse + +CALL SYS "BLKMOV" (SRCBLK:=Quelle, RET_VAL:=Dyn.Rueckmld.RET_VAL_BLKMOV_VollPuffer, DSTBLK:=Puffer) // Datenliste-Daten speichern | #Ziel + + L 16#0063 + T Dyn.Stop_Ursache_IN + T Dyn.Stop_Ursache_OUT + + L Dyn.Rueckmld.RET_VAL_BLKMOV_VollPuffer // Rückmeldung + L 0 // Fehler vorhanden ? + <>I // Ja ! + = Dyn.Error.Err_BLKMov // Error bei Block kopieren + BEC + + L Puffer.Puffer_Typ // Puffertyp = 1276 (Vollpuffer) + L 1276 // Dieser Aufruf-FB ? + ==I // Ja ! + JC w061 + + SET + S Dyn.Error.Undef_Puffer // undefinierter VollPuffer + + L 0 // VollPuffer ungültig ! + T Puffer.VollPuffer_Nr // Nummer des VollPuffers + + L 16#0064 + T Dyn.Stop_Ursache_IN + T Dyn.Stop_Ursache_OUT + + BEU + +// Defaultwerte übergeben: +w061: NOP 0 + + BEU + +en06: NOP 0 + + +--- NW 8: Störungen quittieren --- + A ErrQuit // Überwachungszeit abgelaufen quittieren + R Dyn.Sk_IN.Err_Uebzeit + R Dyn.Sk_OUT.Err_Uebzeit + + +--- NW 9: Einfahrenden Trolley aus Reservierungliste austragen --- + L Dyn.TrolleyID_Einfahrt + T "MD220" + L DINT#0 + ==I + JC NoNewT + +// Neue Position an Gesamt-Trolley-DL übergeben: +CALL FC "Trolley_DL_Neue_Pos" (Gesamt_Trolley_DL:=Puffer.Gesamt_Trolley_DL, TrolleyID:=Dyn.TrolleyID_Einfahrt, Position:=Puffer.Puffer_Position, ShopGroup:=Dint#0, Err:="M199.0") + +// Austrag aus Trolley-Reservierungsliste + L Dyn.TrolleyID_Einfahrt // Eintrag ist erfolgt + T "MD220" + +ResOut: L Puffer.Puffer_Dyn_DW + L Puffer.PufferReservierungsliste_DW + +I + T SSDW + +CALL FC "DatenOut" (SSDB:=Puffer.Puffer_Dyn_DB, SSDW:=SSDW, PARA:=16#E100, SEARCHDATEN:=P#M220.0, RE_VAL:=Dyn.Rueckmld.RET_VAL_DL_Res_OUT, OUTDATEN:=P#M220.0, Position:="MW196") // Eintrag löschen | Nicht relevant + + L DINT#0 + T Dyn.TrolleyID_Einfahrt + +NoNewT: NOP 0 + + +--- NW 10: Error: Stau Bereich-Eingang --- +// Sensor bei Bereichs-Einfahrt bleibt belegt?: + AN B_VollPufferEinfahrt // Sensor Trolley fährt in Bereich (kein Stau !) + R Dyn.Error.Err_Stau_Einfahrt // Stau bei Einfahrt + JC X090 // StauZeit neu aufziehen + + AN "1s-Impuls" + O Dyn.Error.Err_Stau_Einfahrt // Zeit bereits abgelaufen + JC Xn09 + + L Dyn.Stau_Zeit // Sensor B_VorSep ist belegt [1s] + + +1 + T Dyn.Stau_Zeit // Sensor B_VorSep ist belegt [1s] + + L 25 // Stau-Zeit erreicht ? + >=I // Ja ! + S Dyn.Error.Err_Stau_Einfahrt // Stau bei Einfahrt (Quittierung oder Sensor=0, wegen Bürstenantrieb + JCN Xn09 + +X090: L 0 // Zeiten löschen + T Dyn.Stau_Zeit // Sensor B_VorSep ist belegt [1s] + +Xn09: NOP 0 + + +--- NW 11: Schleuse OUT: Mindestzeit geöffnet/frei, Position-Inks übergeben --- + L Dyn.Sk_OUT.Akt_Schritt + L 6 // Mindestzeit ok? + <>I // Nein! + O B_InSchleuse_OUT // Sensor Trolley in Schleuse vorhanden + ON "Schleuse_geöffnet_OUT" // Schleuse hat geöffnet + R Dyn.Status.MindestZeit_ok_OUT + JC X100 // FreiZeit neu aufziehen + + AN "1s-Impuls" + O + A Puffer.Parameter_allg.Antrieb_Plus_vorhanden + AN Antrieb_plus_aktiv + O Dyn.Status.MindestZeit_ok_OUT // Zeit bereits abgelaufen + JC Xn10 + + L Dyn.Mindest_Zeit_OUT // Sensor B_im_Sep ist frei [1s] + + +1 + T Dyn.Mindest_Zeit_OUT // Sensor B_im_Sep ist frei [1s] + + L Puffer.Mindeszeit_Schleuse_geoeffnet // Mindest-Zeit erreicht ? + >=I // Ja ! + S Dyn.Status.MindestZeit_ok_OUT + JCN Xn10 + +X100: L 0 // Zeiten löschen + T Dyn.Mindest_Zeit_OUT // Sensor B_im_Sep ist frei [1s] + +// Schleuse geöffnet: (Position-Inks übergeben) +Xn10: AN "Schleuse_geöffnet_OUT" // Schleuse hat geöffnet + JC X10E + + L Ausfahr_Inks + L Puffer.Puffer_Position_Inks + >I // Rest-Inks-Wert ist größer! + JC X10E + + L Puffer.Puffer_Position_Inks + T Ausfahr_Inks + +X10E: NOP 0 + + +--- NW 12: Reservierungs-Check --- + L Dyn.Reservierungs_DL.Datenlistenkopf.AnzahlEintraege + L 0 + ==I + JC NoResCheck // Später -> Hauptstrangdaten checken! + + L VollPuffer_Nr + L 126 + >=I + = Puffer_B // Puffer gehört zu Bereich B + +// Keine Trolleydaten in Sorter A? + A "DVP_Sorter_A".Sorter_A_leer + AN Puffer_B // Puffer gehört zu Bereich B + JC ResDel + +// Keine Trolleydaten in Sorter A+B? + A "DVP_Sorter_A".Sorter_A_leer + A "DVP_Sorter_B".Sorter_B_leer + A Puffer_B // Puffer gehört zu Bereich B + JC ResDel + +// Ansonsten über Ziel-Check +// Daten vom 1.Reservierungs-Trolley holen: + L Dyn.Reservierungs_DL.Res_Trolley[1].Trolley_ID + T "TrolleyDL_SearchDaten".SEARCHDaten.TrolleyID + +// Trolleydaten lesen: +CALL FC "DatenOut" (SSDB:=1000, SSDW:=0, PARA:=16#0000, SEARCHDATEN:=DB1012.DBX0.0, RE_VAL:="MB198", OUTDATEN:=DB1011.DBX0.0, Position:="MW200") // Eintrag lesen + + L "MB198" + L 2#10000000 // Datensatz vorhanden? + <>I // Nein! + JC NoResCheck + + L "TrolleyDL_OutDaten".OUTDaten.EndZiel + L 101 // VollPuffer ? + >=I // Ja! + A( + CAC + L 151 // VollPuffer ? + <=I // Ja! + ) + JC NoResCheck // Warten, Trolley kommt noch! + +ResDel: L Dyn.Reservierungs_DL.Res_Trolley[1].Trolley_ID + T "MD220" + + JU ResOut + +NoResCheck: NOP 0 + + +--- NW 13: Puffer oben hat Platz / ist frei --- +// Puffer hat Platz: + L Dyn.Reservierungs_DL.Datenlistenkopf.AnzahlEintraege + L Puffer.MaxAnzahl_Einfahrt + I // Ja! + O( + L 1 // Minimalwert ? + ==I // Ja ! + ) + = Inks_Ok + +X14E: NOP 0 + + +--- NW 15: OUT-Sprungverteiler --- +OUT_Sk: L Dyn.Sk_OUT.Neu_Schritt // Schritt, der im nächsten Zyklus aktiv werden soll + L -1 // angegeben ? + ==I // Nein ! + JC NEU + + CAC // Neuen Schritt übergeben + T Dyn.Sk_OUT.Akt_Schritt + + L -1 // Urzustand + T Dyn.Sk_OUT.Neu_Schritt // Schritt, der im nächsten Zyklus aktiv werden soll + +NEU: SET + R Ueb_akt // Überwachungszeit aktivieren + R Warte_neu // Wartezeit neutriggern + R Warte_stop // Wartezeit stoppen + + L Dyn.Sk_OUT.Akt_Schritt + JL Ende + JU s000 // Schritt 0 + JU s001 // Schritt 1 + JU s002 // Schritt 2 + JU s003 // Schritt 3 + JU s004 // Schritt 4 + JU s005 // Schritt 5 + JU s006 // Schritt 6 + JU s007 // Schritt 7 + JU s008 // Schritt 8 + JU s009 // Schritt 9 + JU s010 // Schritt 10 + JU s011 // Schritt 11 + JU s012 // Schritt 12 + JU s013 // Schritt 13 + JU s014 // Schritt 14 + JU s015 // Schritt 15 + JU s016 // Schritt 16 + JU s017 // Schritt 17 + JU s018 // Schritt 18 + JU s019 // Schritt 19 + JU s020 // Schritt 20 + JU s021 // Schritt 21 + JU s022 // Schritt 22 + JU s023 // Schritt 23 + JU s024 // Schritt 24 + JU s025 // Schritt 25 + JU s026 // Schritt 26 + JU s027 // Schritt 27 + JU s028 // Schritt 28 + JU s029 // Schritt 29 + JU s030 // Schritt 30 +Ende: S Dyn.Sk_OUT.Err_Schritt // Undefinierter Schritt + + L 16#A131 + T Dyn.Stop_Ursache_OUT + + JU RET + +Neu_Mig: A Dyn.Sk_OUT.Err_Uebzeit + JCN Sk + + L 16#A132 + T Dyn.Stop_Ursache_OUT + + JU RET + +Sk: T Dyn.Sk_OUT.Akt_Schritt + + L 0 // Zeitwerte löschen + T Dyn.Sk_OUT.Terr_Zelle + T Dyn.Sk_OUT.Tok_Zelle + + JU NEU + +// Nicht programmierte Schritte: +// s000: SPA Ende +// s001: SPA Ende +// s002: SPA Ende +s003: JU Ende +s004: JU Ende +// s005: SPA Ende +// s006: SPA Ende +// s007: SPA Ende +s008: JU Ende +s009: JU Ende +s010: JU Ende +s011: JU Ende +s012: JU Ende +s013: JU Ende +s014: JU Ende +s015: JU Ende +s016: JU Ende +s017: JU Ende +s018: JU Ende +s019: JU Ende +// s020: SPA Ende +// s021: SPA Ende +s022: JU Ende +s023: JU Ende +s024: JU Ende +s025: JU Ende +s026: JU Ende +s027: JU Ende +s028: JU Ende +s029: JU Ende +s030: JU Ende + + +--- NW 16: OUT-Schritt X: Reserve --- + SET // Weiterschaltbedingung + = Weiter + +// Schrittaktionen: + SET + + L 16#B001 + T Dyn.Stop_Ursache_OUT + + A Dyn.Sk_OUT.Reset_Akt // Reset ist aktiv + L 20 // Weiter mit Schritt 20 + JC Neu_Mig // Bei diesem Schritt weiter + + A Weiter // Weiterschaltbedingung ist erfüllt + R Dyn.Sk_OUT.Err_Uebzeit // Sofort weiter ! + L 0 // Angabe der Wartezeit (*10ms) + JC Plus // Nächsten Schritt starten + + L 1 // Weiter mit Schritt 1 + JC Neu_Mig // Bei diesem Schritt weiter + + T Dyn.Sk_OUT.Neu_Schritt // Schritt, der im nächsten Zyklus aktiv werden soll + + SET + A Dyn.Sk_OUT.Auto_akt // Automatik ist aktiv + A Dyn.Sk_OUT.Bereich_ok + = Ueb_akt // Überwachungszeit aktivieren + L 50 // Angabe der Überwachungszeit (*1s) + JU tueb // Überwachungszeit + + JU RET + + +--- NW 17: OUT-Schritt 0: Warten auf Trolley --- +s000: SET // Weiterschaltbedingung + A B_InSchleuse_OUT // Trolley im Schleuse erkannt + A Dyn.Sk_OUT.Auto_akt // Automatik ist aktiv + A Dyn.Sk_OUT.Bereich_ok + = Weiter + +// Schrittaktionen: + SET + R Dyn.Error.Err_Puffer_nicht_leer_OUT + + A Dyn.Sk_OUT.Reset_Akt // Reset ist aktiv + L 20 // Weiter mit Schritt 20 + JC Neu_Mig // Bei diesem Schritt weiter + + L 0 + T Dyn.TrolleyID_Schleuse_Out + + A Weiter // Weiterschaltbedingung ist erfüllt + R Dyn.Sk_OUT.Err_Uebzeit // Sofort weiter ! + L 100 // Angabe der Wartezeit (*10ms) + JC Plus // Nächsten Schritt starten + + L 16#B001 + T Dyn.Stop_Ursache_OUT + + JU RET + + +--- NW 18: OUT-Schritt 1: Trolley ist in Schleuse --- +s001: NOP 0 + +// Schrittaktionen: + AN B_InSchleuse_OUT // Trolley im Schleuse erkannt + L 0 // Weiter mit Schritt 0 + JC Neu_Mig // Bei diesem Schritt weiter + + L 2 // Weiter mit Schritt 2 + JU Neu_Mig // Bei diesem Schritt weiter + + +--- NW 19: OUT-Schritt 2: Ausfahren ok ? --- +s002: NOP 0 + +// Schrittaktionen: + AN B_InSchleuse_OUT // Trolley im Schleuse erkannt + L 0 // Weiter mit Schritt 0 + JC Neu_Mig // Bei diesem Schritt weiter + + SET + S Dyn.Status."Trolley_wartet_Bereich+1" + +// Anlage aus oder Störung: + L 16#B020 + T Dyn.Stop_Ursache_OUT + + AN Dyn.Sk_OUT.Auto_akt // Automatik ist aktiv + ON Dyn.Sk_OUT.Bereich_ok // Bereich ist gestört + JC X002 + +// Starten erlaut Trolley ?: + L 16#B021 + T Dyn.Stop_Ursache_OUT + + AN Start_Ok // Starten ist erlaubt + JC X002 + +// Inks ok ?: + L 16#B022 + T Dyn.Stop_Ursache_OUT + + AN Inks_Ok // Starten ist erlaubt + JC X002 + +// Stau im Bereich +1: + L 16#B023 + T Dyn.Stop_Ursache_OUT + + A B_Stau_raus_Out + JC X002 // Stau + +// B_Aus_Schleuse aktiv: + L 16#B024 + T Dyn.Stop_Ursache_OUT + + A Puffer.Parameter_allg.B_AusSep_vorhanden + A B_AusSchleuse_OUT + = Dyn.Error.Err_Raus_Sensor // Raus-Sensor wird nicht erreicht (oder dauernd aktiv)! + JC X002 + +// Antriebe aktivieren / aktiv ?: + A Puffer.Parameter_allg.Antrieb_Plus_vorhanden // Schleuse an weiterem Antrieb (Weiche) + S Antrieb_plus_start // Kreisel-Antrieb plus starten + + L 16#B025 + T Dyn.Stop_Ursache_OUT + + AN Antrieb_plus_aktiv // Kreisel-Antrieb plus aktiv + A Puffer.Parameter_allg.Antrieb_Plus_vorhanden // Schleuse an weiterem Antrieb (Weiche) + ON Dyn.Sk_OUT.Auto_akt // Automatik ist aktiv + ON Dyn.Sk_OUT.Bereich_ok + JC RET + + L 5 // Nur 1 langes Signal! + JU Neu_Mig // Bei diesem Schritt weiter + +X002: L 1 // Auftrag checken + T Dyn.Sk_OUT.Neu_Schritt // Schritt, der im nächsten Zyklus aktiv werden soll + JU RET + + +--- NW 20: OUT-Schritt 5: Trolley fährt aus/ausgefahren ? --- +s005: SET // Weiterschaltbedingung + AN B_InSchleuse_OUT // Sensor Trolley ist in Schleuse + A( + O B_AusSchleuse_OUT // Sensor Trolley aus Schleuse gefahren + ON Puffer.Parameter_allg.B_AusSep_vorhanden + ) + A Antrieb_plus_aktiv + = Weiter + +// Schrittaktionen: + SET + R Start_Ok // Damit kein weiterer Puffer ausfährt + S Y_Schleuse_Auf_OUT // Schleuse öffnen + S Dyn.Status."Trolley_fährt_aus_OUT" + S Antrieb_plus_start // Kreisel-Antrieb plus starten + +// Trolley ist draussen: + A( + O B_AusSchleuse_OUT // Sensor Trolley aus Schleuse gefahren + ON Puffer.Parameter_allg.B_AusSep_vorhanden + ) + R Dyn.Sk_OUT.Err_Uebzeit // Sofort weiter ! + R Dyn.Error.Err_Trolley_raus_OUT // Trolley fährt nicht aus + L 0 + JC Plus // Nächsten Schritt starten + + A Weiter // Weiterschaltbedingung ist erfüllt + R Dyn.Sk_OUT.Err_Uebzeit // Sofort weiter ! + R Dyn.Error.Err_Trolley_raus_OUT // Trolley fährt nicht aus + L 50 // Falls nur mit Sensor gefahren wird, dann Wartezeit! + JC Plus // Nächsten Schritt starten + +// Trolley fährt nicht raus!: + A Dyn.Sk_OUT.Err_Uebzeit + O B_QuerTrolley_Out // QuerTrolley auf Crashkurs + S Dyn.Error.Err_Trolley_raus_OUT // Trolley fährt nicht aus + + L 16#B051 + T Dyn.Stop_Ursache_OUT + + AN B_AusSchleuse_OUT // Sensor Trolley aus Schleuse gefahren + JC x052 + + L 16#B052 + T Dyn.Stop_Ursache_OUT + +x052: A Antrieb_plus_aktiv + = Ueb_akt // Überwachungszeit aktivieren + L Puffer."Übzeit_aus_Schleuse" // Angabe der Überwachungszeit (*1s) + JU tueb // Überwachungszeit + + +--- NW 21: OUT-Schritt 6: Schleuse Mindestzeit geöffnet ? --- +s006: SET // Weiterschaltbedingung + A Dyn.Status.MindestZeit_ok_OUT + O + A Puffer.Parameter_allg.B_AusSep_vorhanden + A B_AusSchleuse_OUT // Sensor Trolley aus Schleuse gefahren + = Weiter + +// Schrittaktionen: + A B_QuerTrolley_Out // QuerTrolley auf Crashkurs + S Dyn.Error.Err_Trolley_raus_OUT // Trolley fährt nicht aus + + SET + R Start_Ok // Damit kein weiterer Puffer ausfährt + S Y_Schleuse_Auf_OUT // Schleuse öffnen + S Antrieb_plus_start // Kreisel-Antrieb plus starten + S Dyn.Status."Trolley_fährt_aus_OUT" + + A B_InSchleuse_OUT // Trolley wieder erkannt + L 5 // Weiter mit Schritt 5 + JC Neu_Mig // Bei diesem Schritt weiter + + A Weiter + L 0 + JC Plus // Nächsten Schritt starten + + L 16#B061 + T Dyn.Stop_Ursache_OUT + + JU RET + +--- NW 22: OUT-Schritt 7: Trolleydaten ändern --- +s007: SET // Weiterschaltbedingung + = Weiter + +// Schrittaktionen: + SET + R Dyn.Status.Einen_VollTrolley_ausfahren_OUT + S Dyn.Status.Trolley_draussen_Out // 1 Zyklus + + L Dyn.Vereinzelungstakte_OUT + + DINT#1 // Vereinzelungen +1 + T Dyn.Vereinzelungstakte_OUT + + JU ENDE_Mig + + +--- NW 23: OUT-Schritt 20: Schleuse resetten --- +s020: SET // Weiterschaltbedingung + = Weiter // Weiterschaltbedingung ist erfüllt + +// Schrittaktionen: + A "Schleuse_geöffnet_OUT" + R Start_Ok // Damit kein weiterer Puffer ausfährt + + L 16#B201 + T Dyn.Stop_Ursache_OUT + + A Weiter // Weiterschaltbedingung ist erfüllt + L 300 // Angabe der Wartezeit (*10ms) + JC Plus // Nächsten Schritt starten + + SET + = Ueb_akt // Überwachungszeit aktivieren + L 30 // Angabe der Überwachungszeit (*100ms) + JU tueb // Überwachungszeit + + +--- NW 24: OUT-Schritt 21: Reset ist zu Ende --- +s021: SET + R Dyn.Sk_OUT.Reset_Akt // Reset ist aktiv + R Dyn.HMI.Schleuse_resetten_OUT + + JU ENDE_Mig // Neubeginn + + +--- NW 25: OUT-Schrittkette beenden --- +ENDE_Mig: L 0 // Schritt 0: Warten + T Dyn.Sk_OUT.Akt_Schritt + + L 0 // Zeitwert löschen + T Dyn.Sk_OUT.Terr_Zelle + T Dyn.Sk_OUT.Tok_Zelle + + SET + R Dyn.Sk_OUT.Err_Uebzeit + + JU RET + + +--- NW 26: OUT-Nächsten Schritt aktivieren --- +Plus: T Dyn.Sk_OUT.T_ok // Wartezeit übergeben + + A Dyn.Sk_OUT.Err_Uebzeit // Störung noch nicht quittiert + JC RET + + L 0 // keine Wartezeit ? + ==I // Ja ! -> sofort weiter + JC w220 + + AN Warte_neu // Wartezeit neutriggern + JC W220_Mig + + L 0 + T Dyn.Sk_OUT.Tok_Zelle // Wartezeit + +W220_Mig: A Warte_stop // Wartezeit stoppen + JC RET + + L Dyn.Sk_OUT.Tok_Zelle + L "MW4" // Wartezeit +10ms + +I + T Dyn.Sk_OUT.Tok_Zelle // Wartezeit + L Dyn.Sk_OUT.T_ok // abgelaufen ? + I // abgelaufen ? + AN Dyn.Sk_OUT.Err_Uebzeit + JC en24 // Nein ! + + A Ueb_akt // Überwachungszeit aktivieren + S Dyn.Sk_OUT.Err_Uebzeit + + L 0 // Zeitwert löschen + T Dyn.Sk_OUT.Terr_Zelle + + JU RET + +en24: NOP 0 + +--- NW 28: OUT-Überwachungszeit +1 --- + AN Dyn.Sk_OUT.Ueb_akt // Schrittaktion ist aktiv + ON "1s-Impuls" + JC RET + + L Dyn.Sk_OUT.Terr_Zelle + + 1 // Üb.zeit +1s + T Dyn.Sk_OUT.Terr_Zelle + + JU RET + + +--- NW 29: Ende --- +RET: NOP 0 + + BE + diff --git a/=A01+UH07-KF00/Programmbausteine/Module/MImpulsGeber.awl b/=A01+UH07-KF00/Programmbausteine/Module/MImpulsGeber.awl new file mode 100644 index 0000000..fdda011 --- /dev/null +++ b/=A01+UH07-KF00/Programmbausteine/Module/MImpulsGeber.awl @@ -0,0 +1,122 @@ +=== FB 100: MImpulsGeber [STL] === +INTERFACE: + Input: + Ink_DB : Int // DB-Nr des Inkremental-Gebers (Zählerbaugruppe) Neu-Sync-Zähler + B_Zaehlen : Bool // Sensor zum Zählen + Antrieb_aktiv : Bool // Antrieb ist aktiv + Quit : Bool + Zeit_Signal_zu_lang : Time := T#350ms + Zeit_Kein_Signal : Time := T#500ms + Output: + Signal : Bool // Falls kein InkDB + InOut: + Err_Kein_Signal : Bool // Kein_Signal bei laufenden Antrieb + Err_Signal_zu_lang : Bool // Signal bei laufenden Antrieb zu lang + Static: + Sensor_entprellen : Bool + Timer_1 : TON_TIME + Timer_2 : TON_TIME + Timer_3 : TON_TIME + Temp: + Constant: + +--- NW 1: Initialisierung --- + SET + R Signal + + +--- NW 2: Störungen --- +// Störung quittieren: + A Quit + R Err_Signal_zu_lang + R Err_Kein_Signal + +// Signal zu lang: + A B_Zaehlen // Sensor zum Zählen + A Antrieb_aktiv // Antrieb ist aktiv + AN Quit + = "M200.0" + +CALL SYS "TON" (IN:="M200.0", PT:=Zeit_Signal_zu_lang, Q:=?, ET:=?) + + A Timer_2.Q + S Err_Signal_zu_lang + +// Kein Signal: + AN B_Zaehlen // Sensor zum Zählen + A Antrieb_aktiv // Antrieb ist aktiv + AN Quit + = "M200.0" + +CALL SYS "TON" (IN:="M200.0", PT:=Zeit_Kein_Signal, Q:=?, ET:=?) + + A Timer_3.Q + S Err_Kein_Signal + + +--- NW 3: Zählen über Sensor --- + AN B_Zaehlen // Sensor zum Zählen + A Sensor_entprellen // Sperre Auswertung schon erfolgt + A Antrieb_aktiv // Antrieb ist aktiv + = "M200.0" + +CALL SYS "TON" (IN:="M200.0", PT:=t#50ms, Q:=?, ET:=?) + + A Timer_1.Q + R Sensor_entprellen // Sperre Auswertung schon erfolgt + + AN B_Zaehlen // Sensor zum Zählen + O Sensor_entprellen + BEC + + SET + S Sensor_entprellen // Sperre Auswertung schon erfolgt + S Signal // Für Signal-Auswertung ohne InkDB + + +--- NW 4: Übergabe an Inkrement-Baustein / max.Wert erreicht? --- + L Ink_DB + T "MW200" + + L 0 // Sinnvolle Angabe? + <=I // Nein! + BEC // Also nur Signal-Auswertung ! + + OPN DB["MW200"] // Zähler-DB öffnen + + L DBD80 + + DINT#1 // Aktueller Zählerwert +1 + T DBD80 + + L DBD80 // Aktueller Zählerwert + L DBD76 // Max. Wert erreicht ? + <=D // Nein ! + R DBX74.5 // Ohne Flag-Lauf wurde beendet + R DBX74.4 // Flag-Lauf wurde beendet + BEC + + -D // Restwert als Startwert nehmen ! + T DBD80 // Keine Inkrementalgeber verbaut, sondern nur Sensor + + AN DBX74.3 // Umschaltung Zähl-Lauf ohne-mit-ohne Flag + = DBX74.5 // Ohne Flag-Lauf wurde beendet + A DBX74.3 // Umschaltung Zähl-Lauf ohne-mit-ohne Flag + = DBX74.4 // Flag-Lauf wurde beendet + + AN DBX74.3 // Umschaltung Zähl-Lauf ohne-mit-ohne Flag + = DBX74.3 + +// Zähler auf 000 setzen ?: + AN DBX74.6 // Zähler Zero-Load + BEC + + SET + R DBX74.6 + + L 0 + T DBD80 // Zählerwert zum Setzen + + +--- NW 5: Ende --- + BE + diff --git a/=A01+UH07-KF00/Programmbausteine/Module/MSensoren.awl b/=A01+UH07-KF00/Programmbausteine/Module/MSensoren.awl new file mode 100644 index 0000000..a0302d6 --- /dev/null +++ b/=A01+UH07-KF00/Programmbausteine/Module/MSensoren.awl @@ -0,0 +1,87 @@ +=== FB 91: MSensoren [STL] === +INTERFACE: + Input: + ESensor : Bool // Eingang des zu überwachenden Sensors + T_Ein : Int := 1 // Einschaltzeitverzögerung (*100ms) + T_Aus : Int := 5 // Ausschaltzeitverzögerung (*100ms) + tein_aktiv : Bool := TRUE // Einschaltzeit aktivieren + taus_aktiv : Bool := TRUE // Ausschaltzeit aktivieren + Output: + InOut: + Static: + Stat : "USensor_Ein_Aus" // Status des Endschalters + Temp: + Constant: + +--- NW 1: Zeitwert löschen --- + A ESensor + A Stat.B_Akt + O + AN ESensor + AN Stat.B_Akt + JCN Nw02 + + +tdel: L 0 // Zeitwert löschen + T Stat.T_Zelle + + BEU + +--- NW 2: Einschaltzeit abgelaufen ? --- +Nw02: L Stat.T_Ein_Akt // Gewollter Zeitwert + L 9999 // angegeben ? + <>I // Ja ! + JC w020 + + L T_Ein // Sollwert übergeben + T Stat.T_Ein_Akt // Gewollter Zeitwert + +w020: A Stat.B_Akt + JC Nw03 + + L Stat.T_Zelle // Aktueller Zeitwert + L Stat.T_Ein_Akt // Gewollter Zeitwert erreicht ? + >=I + S Stat.B_Akt // Sensor ist nach Einschaltzeit aktiv + JC tdel // Zeit löschen + + JU Nw04 + +--- NW 3: Ausschaltzeit abgelaufen ? --- +Nw03: L Stat.T_Aus_Akt // Gewollter Zeitwert + L 9999 // angegeben ? + <>I // Ja ! + JC w030 + + L T_Aus // Sollwert übergeben + T Stat.T_Aus_Akt // Gewollter Zeitwert + +w030: AN Stat.B_Akt + JC Nw04 + + L Stat.T_Zelle // Aktueller Zeitwert + L Stat.T_Aus_Akt // Gewollter Zeitwert erreicht ? + >=I + R Stat.B_Akt // Sensor ist nach Ausschaltzeit nicht mehr aktiv + JC tdel // Zeit löschen + + +--- NW 4: Zeit läuft --- +Nw04: AN "100ms-Impuls" // nur als Impuls + O + AN Stat.B_Akt // Einschaltzeit läuft + AN tein_aktiv // aber Zeit einfrieren + O + A Stat.B_Akt // Ausschaltzeit läuft + AN taus_aktiv // aber Zeit einfrieren + BEC + + L Stat.T_Zelle + L "MW2" + +I + T Stat.T_Zelle + + +--- NW 5: Ende --- + BE + diff --git a/=A01+UH07-KF00/Programmbausteine/Module/MSepSorterRein.awl b/=A01+UH07-KF00/Programmbausteine/Module/MSepSorterRein.awl new file mode 100644 index 0000000..4082e4c --- /dev/null +++ b/=A01+UH07-KF00/Programmbausteine/Module/MSepSorterRein.awl @@ -0,0 +1,2318 @@ +=== FB 176: MSepSorterRein [STL] === +INTERFACE: + Input: + Separator_Nr : Int // Aufruf für Separator + ErrQuit : Bool // Ablaufstörung quittieren + B_VorSep : Bool // Sensor BT fährt in Bereich + B_ImSep : Bool // Sensor BT ist im Separator + B_AusSep : Bool // Sensor BT hat Separator verlassen + B_Beladen_im_Sep : Bool // Sensor BT ist beladen im Sep + B_Pinsensor : Bool // Zustand Pinsensor + B_Beladen_nach_Sep : Bool // Sensor BT ist beladen nach Sep + Start_Ok : Bool // Starten ist erlaubt + Antrieb_aktiv : Bool // Kreisel-Antrieb aktiv + Antrieb_plus_aktiv : Bool // Kreisel-Antrieb plus aktiv + Output: + Y_Sep_Auf : Bool // Separator öffnen + K_Sanner_triggern : Bool // Scanner triggern + Sorter_Reset : Bool // Sorterbereich resetten + Error : Word // Störungen übergeben + InOut: + Antrieb_start : Bool // Kreiselantrieb starten + Antrieb_plus_start : Bool // Kreisel-Antrieb plus starten + Antrieb_stoppen : Bool // Kreiselantrieb stoppen + hStOk : Bool // Anzeige Start n. Störung aktivieren + Static: + Res1 : Array[1..1] of Int // Reserve + SAVE : Struct + Frei : DInt + Sensorfrei_Zeit : Int // Sensor B_imSep ist frei [10ms] + Last_Ziel : Int // Letztes angefahrenes Ziel + Para : Struct // Parameter + Separator_DL_DB : Int // Einsprung Separator-Datenliste-DB + Separator_DL_DW : Int // Einsprung Separator-Datenliste-DW + Res1 : Array[1..3] of Int // Reserve + Separator : "UDLSepSorterRein" // Fahrbereichs Daten + Dyn : Struct // Dynamische Daten + Status : Struct + Vereinzelungstakte : DInt // Anzahl der getätigten Vereinzelungstakte + Stop_Ursache : Word // Stop-Stelle: Nw + Position + Betriebsart_Art : Struct // Aktive Betriebsart + Listen : Bool // [SCTL=1] Meldung an PC, falls BT in Schleuse + Rapidfire : Bool // [SCTL=2] Alle BTs austakten (ohne Ende) + TillEmpty : Bool // [SCTL=3] Alle BTs austakten (Ende nach zeitlang kein BT) + Job : Bool // [SCTL=4] Anzahl von BTs austakten (Ende nach Anzahl) + Job_TillEmpty : Bool // [SCTL=5] Anzahl von BTs austakten (Ende nach zeitlang kein BT) + DestFull : Bool // [SCTL=6] Alle BTs austakten (bis Stau-Sensor aktiv) + Scannen : Bool // [SCTL=7] Ausfahren über Scanner + PC-Rückmeldung + Scannen_TillEmpty : Bool // [SCTL=8] wie oben [SCTL=7](Ende nach zeitlang kein BT) + PC_Del : Bool // Betriebsart aufgrund vom PC löschen + Sack_Tel : Bool // Sack-Telegramm senden + Res12 : Bool + BT_leer : Bool // BT/MT ist leer + BT_beladen : Bool // BT/MT ist beladen + BT_kommt : Bool // BT/MT fährt zum Sep + Stau_vor_Sep : Bool // Stau vor Separator-Einfahrt + ErrBLKMov : Bool // Fehler bei Block kopieren + Betriebsart_Ziel : Int // Ziel für BTs + Betriebsart_Anzahl_Soll : Int // Anzahl der zu fahrenden BTs + Betriebsart_Anzahl_Ist : Int // Anzahl der gefahrenden BTs + Betriebsart_Quelle : Int := -1 // Betriebsart: Partner, der Betriebart gestartet hat + Sk : "USk_ILS" // Status der Schrittkette + Scanner : Struct + Send_IDX : DInt // IDX, welche mit DREQ zum PC gesendet wurde + Rec_IDX : DInt // Index + Rec_DEST_Ziel : Int // 1...X Ziellinie + Rec_DEST_Type : Byte // 0=fix, 1=fallback, ... + Rueckmld : Struct + RET_VAL_BLKMOV_Separator : Int // Rückmeldung nach BLKMOV-Aufruf + RET_VAL_DL_SortRein : Byte // Rückmeldung nach DatenOut-Aufruf + RET_VAL_TravelFIFO_In : Byte // Rückmeldung nach Aufruf + RET_VAL_TravelFIFO_Out : Byte // Rückmeldung nach Aufruf + RET_VAL_TravelFIFO_Reset : Byte // Rückmeldung nach Aufruf + RET_VAL_SendFIFO : Byte // Rückmeldung nach SendPC_FIFO-Aufruf + RET_VAL_Res : Byte + Error : "UErrSepSorterRein" + ohne_B_starten : Bool // 1.Vereinzelung auch ohne B_im_Sep + Betriebsart_del : Bool // Betriebsart löschen + Scannerdaten : Bool // Scannerdaten erhalten + Dest0 : Bool // PC-Antwort mit Ziel=0 erhalten + BT_draussen : Bool // BT/MT hat Separator verlassen + B_Beladen : Bool // BT/MT ist beladen (über Sensor) + BT_gestartet : Bool // BT ist aus Separator gestartet (nur 1 Zyklus) + BT_draussen_erkannt : Bool // Sensor hat BT draussen erkannt + Del_Last_Ziel_Flag : Bool // Bei diesem Flag letzes Ziel löschen + SorterReset_Start_Flag : Bool // Bei diesem Flag Sorter-Reset starten + GesamtSorterReset : Bool // Gesamten Sorterbereich resetten + GesamtSorterReset_aktiv : Bool // Gesamten Sorterbereich resetten ist aktiv + BT_beruhigt : Bool // 1. einfahrender BügelTräger ist im Sep + Flanke_Pin : Bool // Flankenmerker für Pin-Signal + Gleiches_Ziel : Bool // BT hat gleiches Ziel + BT_beladen : Bool // BT ist beladen + Del_Last_Ziel_Ink : DInt // Bei diesen Inks letztes Ziel löschen + SorterReset_Start_Ink : DInt // Bei diesen Inks Sorter-Reset starten + Max_Wert : DInt // Maximal erlaubter Zählwert + Stau_Zeit : Int // Sensor B_VorSep ist belegt [10ms] + Frei_Zeit : Int // Sensor B_VorSep ist frei [10ms] + Err_Zeit : Int // BT fährt nicht in Sep [10ms] + Stop_Ursache : Word // Stop-Stelle: Nw + Position + Ursache_Anz : Int // Anzeige Stop-Ursache [100ms] + Leer_Zeit : Int + Temp: + Quelle : Any // Zeiger, wo Rein-Daten sind + Ziel : Any // Zeiger, FIFO-Stelle + Warte_neu : Bool // Wartezeit + Ueb_akt : Bool // Überwachungszeit aktivieren + Err_Uebzeit : Bool // Überwachungzeit ist abgelaufen + Weiter : Bool // Weiterschaltbedingung ist erfüllt + Warte_stop : Bool // Wartezeit stoppen + Lauf_Flag : Bool // Zähl-Lauf mit Flag ist aktiv + Flag_Lauf_fertig : Bool // Flag-Lauf wurde beendet + Ohne_Lauf_fertig : Bool // Ohne Flag-Lauf wurde beendet + Max_Uebergabe : Bool // MaxWert wird gerade übertragen ! + PinSignal : Bool + IDX_Ok : Bool // Send_IDX bekannt + Ink_Wert : DInt // Aktueller Inkrementalwert + BT_State : Byte // Beladezustand des BTs + DatenDB : Int // DB öffnen + AR1Zeiger : DWord // Statt AR1 (ging nur bis DB-Länge <= 8191 Bytes) + Constant: + +--- NW 1: Parameter-Übergabe --- + L Separator_Nr + + L "MW174" // Einsprung Separator-DL + T Para.Separator_DL_DB // vor Aufruf übergeben! + L 0 + T Para.Separator_DL_DW + + +--- NW 2: Anzeige OP --- + L 252 // Bereichsstop aktiv + AN Dyn.Sk.Bereich_ok // Also: Bereichsstop / Not-Aus + JC w010 + + L 253 + AN Dyn.Sk.Auto_akt // Keine Betriebsart + AN Dyn.Sk.Hand_akt + JC w010 + + L 255 // Handbetrieb aktiv + A Dyn.Sk.Hand_akt + JC w010 + + L Dyn.Sk.Akt_Schritt // Aktiver Schritt +w010: T Dyn.Sk.OP_Schritt + + +--- NW 3: Out-Bits zum Zurücksetzen --- + A B_Pinsensor // Zustand Pinsensor + Rise Dyn.Flanke_Pin // Flankenmerker für Pin-Signal + = PinSignal + + SET + R K_Sanner_triggern // Scanner triggern + R Sorter_Reset // Sorterbereich resetten + R Dyn.BT_gestartet // BT ist aus Separator gestartet (nur 1 Zyklus) + + CLR // Erst nach Err BT fährt nicht ein! + R Y_Sep_Auf // Separator öffnen + +// Antrieb anhalten: + A Dyn.Error.Err_BT_raus // BT/MT fährt nicht aus + AN ErrQuit + S Antrieb_stoppen // Da auf PinBand vereinzelt wird! + A Dyn.Error.Err_BT_raus // BT/MT fährt nicht aus + S hStOk + +// Stop-Ursache anzeigen: + AN "100ms-Impuls" + JC En03 + + L Dyn.Ursache_Anz // Anzeige Stop-Ursache [100ms] + + 1 + T Dyn.Ursache_Anz + L 5 + I // Ja ! + S Dyn.Error.Travel_FIFO // Travel-FIFO fehlerhaft + + L 0 + T SAVE.Last_Ziel // Letztes angefahrenes Ziel speichern + + BEU + +en04: NOP 0 + +--- NW 5: Störungen nach Außen übergeben --- + L 0 + T "MW200" + + A Dyn.Error.Separator_DL // Separator-Datenliste fehlerhaft + = "M200.0" + A Dyn.Error.Undef_Separator // undefinierter Separator + = "M200.1" + A Dyn.Error.Err_BT_rein // BT/MT fährt nicht in Separator + = "M200.2" + A Dyn.Sk.Err_Uebzeit + = Dyn.Error.Err_Uebzeit // Überwachungzeit ist abgelaufen + = "M200.3" + NEG + R Dyn.Sk.Err_Uebzeit_AnzOk + A Dyn.Sk.Err_Schritt + = Dyn.Error.Err_Schritt // Schritt-Nummer ist nicht definiert + = "M200.4" + A Dyn.Error.Err_Betriebsart // Betriebsart ist nicht möglich + = "M200.5" + A Dyn.Error.Err_PinSignal // Es kommt kein Pin-Signal + = "M200.6" + A Dyn.Error.Err_BT_raus // BT/MT fährt nicht aus + = "M200.7" + A Dyn.Error.Err_Raus_Sensor // Raus-/Belade-Sensor wird nicht erreicht (oder dauernd aktiv)! + = "M201.0" + A Dyn.Error.Travel_FIFO // Travel-FIFO fehlerhaft + = "M201.1" + A Dyn.Error.Daten_out // Letzte Carrier-Daten konnten nicht an Travel-FIFO übergeben werden + = "M201.2" + A Dyn.Error.BC_doppelt // Wieder gleichen BC von PC erhalten + = "M201.3" + A Dyn.Error.Korrektur_Modus_aktiv // Korrektur-Modus nach Crash aktiviert (wird vor Aufruf gesetzt!) + = "M201.4" + A Dyn.Error.Send_FIFO_fehlerhaft // Send-FIFO zum PC ist fehlerhaft + = "M201.5" + A Dyn.Error.Send_FIFO_voll // Send-FIFO zu PC ist voll + = "M201.6" + A Dyn.Sk.Reset_Akt // Reset ist aktiv + O Dyn.GesamtSorterReset_aktiv // Gesamten Sorterbereich resetten ist aktiv + = Dyn.Error.Reset_aktiv + = "M201.7" + +// Andere Meldung als Überwachungszeit aktiv ?: + L "MW200" + L 2#1111_0111_1111_1111 + AW + L 2#0000_0000_0000_0000 // Andere Meldung als Üb.zeit aktiv ? + <>I // Ja ! + ON Dyn.Sk.Err_Uebzeit_AnzOk // Störung anzeigen ok, da 2.Zyklus aktiv ! + R "M200.3" // Üb.Zeit-Meldung nicht an PC senden + + A Dyn.Sk.Err_Uebzeit + S Dyn.Sk.Err_Uebzeit_AnzOk // Störung anzeigen ok, da 2.Zyklus aktiv ! + + L "MW200" + T Error // Schnittstelle nach Außen + + +--- NW 6: Statische Separator-Parameter holen --- + L Separator.Separator_Nr // Nummer des Separators + L Separator_Nr // Aufruf-Parameter + ==I // Identisch ? + R Dyn.Error.Separator_DL // Separatordatenbank fehlerhaft + R Dyn.Error.Undef_Separator // undefinierter Separator + JC en06 // Ja ! + + T "MW200" // Search-Daten + +CALL FC "DatenOut" (SSDB:=Para.Separator_DL_DB, SSDW:=Para.Separator_DL_DW, PARA:=WORD#16#0000, SEARCHDATEN:=P#M200.0, RE_VAL:="MB199", OUTDATEN:=P#M220.0, Position:="MW196") + + L "MB199" + T Dyn.Rueckmld.RET_VAL_DL_SortRein // Rückmeldung bei Datenbank-Zugriff (Gefälle-DL) + + JBI G_Ok + + A "M199.0" + JCN w060 + + SET + = Dyn.Error.Separator_DL // Separatordatenbank fehlerhaft + + L 16#A061 + T Dyn.Stop_Ursache + + BEU + +w060: SET + S Dyn.Error.Undef_Separator // undefinierter Separator + + L 16#A062 + T Dyn.Stop_Ursache + + BEU + +// Kennung + Datenbytes +G_Ok: SET + R Dyn.Error.Separator_DL // Gefälledatenbank fehlerhaft + R Dyn.Error.Undef_Separator // undefinierte Gefällestrecke + + L 16#1004 // Kennung 10 + Word=04 + T LW0 // Any-Kennung, Datentyp + L 20 // Datenwords speichern + T LW2 // Wiederholungen + +// Quelle-Pointer erzeugen: + L 0 // Bei Merker = 0 ! + T LW4 // DB_Nummer + L 220 // Adresse + SLD 3 + L 16#8300_0000 // Kennung: Merker + OD + T LD6 // Kennung, Adresse + +CALL SYS "BLKMOV" (SRCBLK:=Quelle, RET_VAL:=Dyn.Rueckmld.RET_VAL_BLKMOV_Separator, DSTBLK:=Separator) // Datenliste-Daten speichern | #Ziel + + L 16#A063 + T Dyn.Stop_Ursache + + L Dyn.Rueckmld.RET_VAL_BLKMOV_Separator // Rückmeldung + L 0 // Fehler vorhanden ? + <>I // Ja ! + = Dyn.Status.Betriebsart_Art.ErrBLKMov // Error bei Block kopieren + BEC + + L Separator.Separator_Typ // Separatortyp = 176 (SorterRein) + L 176 // Dieser Aufruf-FB ? + ==I // Ja ! + JC w061 + + SET + S Dyn.Error.Undef_Separator // undefinierter Separator + + L 0 // Separator ungültig ! + T Separator.Separator_Nr // Nummer des Separators + + L 16#A064 + T Dyn.Stop_Ursache + + BEU + +// Defaultwerte übergeben: +w061: A Separator.Default_Betriebsart.Listen // Betriebart nach Urlöschen/Reset + = Dyn.Status.Betriebsart_Art.Listen + A Separator.Default_Betriebsart.Rapidfire + = Dyn.Status.Betriebsart_Art.Rapidfire + A Separator.Default_Betriebsart.TillEmpty + = Dyn.Status.Betriebsart_Art.TillEmpty + A Separator.Default_Betriebsart.Job + = Dyn.Status.Betriebsart_Art.Job + A Separator.Default_Betriebsart.Job_TillEmpty + = Dyn.Status.Betriebsart_Art.Job_TillEmpty + A Separator.Default_Betriebsart.DestFull + = Dyn.Status.Betriebsart_Art.DestFull + A Separator.Default_Betriebsart.Scannen + = Dyn.Status.Betriebsart_Art.Scannen + A Separator.Default_Betriebsart.Scannen_TillEmpty + = Dyn.Status.Betriebsart_Art.Scannen_TillEmpty + + L Separator.Default_Ziel // Ziel nach Urlöschen/Reset + T Dyn.Status.Betriebsart_Ziel // Ziel für BTs + + BEU + +en06: NOP 0 + + +--- NW 7: Indirekt adressierte Daten in temporäre Daten übergeben --- + A Dyn.Sk.Err_Uebzeit // Wegen Speicherbedarf und Zykluszeit ! + = Err_Uebzeit + + A ErrQuit // Überwachungszeit abgelaufen quittieren + R Dyn.Sk.Err_Uebzeit + S Antrieb_start // Kreiselantrieb starten + S Antrieb_plus_start // Kreisel-Antrieb plus starten + + A B_AusSep // Sensor BT hat Separator verlassen + A Y_Sep_Auf + S Dyn.BT_draussen_erkannt // Sensor hat BT draussen erkannt + + A B_Beladen_nach_Sep // Sensor BT ist beladen nach Sep + A Y_Sep_Auf + S Dyn.BT_beladen // BT ist beladen + + AN Separator.Parameter_allg.Belade_Kontrolle_im_Sep // Keine Belade-Kontrolle vorhanden (B-Erkennung) + O B_Beladen_im_Sep // Sensor BT ist beladen + S Dyn.B_Beladen // 0=leerer, 1= beladcenener BT + + A Y_Sep_Auf // Separator geöffnet + R Dyn.B_Beladen // 0=leerer, 1= beladcenener BT + + A ErrQuit + R Dyn.Error.Daten_out // Letzte Carrier-Daten konnten nicht an Travel-FIFO übergeben werden + + +--- NW 8: Stau vor / Err fährt nicht in Separator --- + A Dyn.Status.Betriebsart_Art.Stau_vor_Sep // Stau vor Separator-Einfahrt (FreiZeit ermitteln) + JC W072 + +// StauZeit ermitteln: + AN B_VorSep // Sensor BT fährt in Bereich (kein Stau !) + JC W070 // StauZeit neu aufziehen + + AN "100ms-Impuls" + JC Xn08 + + L Dyn.Stau_Zeit // Sensor B_VorSep ist belegt [100ms] + L "MW2" // Stauzeit +100ms + +I + T Dyn.Stau_Zeit // Sensor B_VorSep ist belegt [100ms] + + JU W071 + +W070: L 0 + T Dyn.Stau_Zeit // Sensor B_VorSep ist belegt [100ms] + +W071: L Dyn.Stau_Zeit // Sensor B_VorSep ist belegt [100ms] + L 10 // Stau-Zeit erreicht ? + >=I // Ja ! + S Dyn.Status.Betriebsart_Art.Stau_vor_Sep // Stau vor Separator-Einfahrt + JCN Xn08 + + L 0 // Zeiten löschen + T Dyn.Stau_Zeit // Sensor B_VorSep ist belegt [100ms] + +// FreiZeit ermitteln: +W072: A B_VorSep // Sensor BT fährt in Bereich (immer noch Stau !) + ON Dyn.Status.Betriebsart_Art.Stau_vor_Sep // Stau vor Separator-Einfahrt + JC X070 // FreiZeit neu aufziehen + + AN "100ms-Impuls" + JC Xn08 + + L Dyn.Frei_Zeit // Sensor B_VorSep ist frei [100ms] + L "MW2" // FreiZeit +100ms + +I + T Dyn.Frei_Zeit // Sensor B_VorSep ist frei [100ms] + + JU X071 + +X070: L 0 + T Dyn.Frei_Zeit // Sensor B_VorSep ist frei [100ms] + +X071: L Dyn.Frei_Zeit // Sensor B_VorSep ist frei [100ms] + L 20 // Frei-Zeit erreicht ? + >=I // Ja ! + R Dyn.Status.Betriebsart_Art.Stau_vor_Sep // Stau vor Separator-Einfahrt + JCN Xn08 + + L 0 // Zeiten löschen + T Dyn.Frei_Zeit // Sensor B_VorSep ist frei [100ms] + +// ErrorZeit ermitteln: +Xn08: A B_VorSep // Sensor BT fährt in Bereich (kein Stau !) + A Antrieb_aktiv // nur bei laufendem Antrieb ! + S Dyn.Status.Betriebsart_Art.BT_kommt // BT/MT fährt zum Sep + A B_ImSep + O ErrQuit // Ablaufstörung quittieren (sonst dauerhaft Err, falls BT entnommen) + R Dyn.Status.Betriebsart_Art.BT_kommt // BT/MT fährt zum Sep + + A Dyn.Status.Betriebsart_Art.BT_kommt // BT/MT fährt zum Sep + AN B_ImSep // aber noch nicht im Sep ! + S Antrieb_start // Kreisel-Antrieb starten + R Antrieb_stoppen + + AN Dyn.Status.Betriebsart_Art.BT_kommt // BT/MT fährt zum Sep + O B_ImSep + O Y_Sep_Auf + JC W090 // ErrZeit neu aufziehen + + AN "100ms-Impuls" + O Dyn.Error.Err_BT_rein // BT/MT fährt nicht in Separator + ON Antrieb_aktiv // Kreisel-Antrieb aktiv + JC W091 + + L Dyn.Err_Zeit // BT fährt nicht in Sep [100ms] + L "MW2" // ErrZeit +100ms + +I + T Dyn.Err_Zeit // BT fährt nicht in Sep [100ms] + + JU W091 + +W090: L 0 + T Dyn.Err_Zeit // BT fährt nicht in Sep [100ms] + +W091: L Dyn.Err_Zeit // BT fährt nicht in Sep [100ms] + L 300 // Err-Zeit erreicht ? + >=I // Ja ! + = Dyn.Error.Err_BT_rein // BT/MT fährt nicht in Separator + JCN W09E + + T Dyn.Err_Zeit // BT fährt nicht in Sep [100ms] + +W09E: SET + R Y_Sep_Auf // Separator öffnen + + +--- NW 9: BT hat Separator verlassen --- + L Dyn.Sk.Akt_Schritt // Aktueller Schritt + L 14 // Beim Vereinzeln ? + <>I // Nein ! + A( + CAC + L 15 // Beim Vereinzeln ? + <>I // Nein ! + ) + O B_ImSep // Sensor BT ist im Separator +// / ON #Antrieb_aktiv //Kreisel-Antrieb aktiv + JC w070_Mig // Freizeit neu aufziehen + + A Dyn.BT_draussen // BT/MT hat Separator verlassen + JC w071_Mig + + L SAVE.Sensorfrei_Zeit // Sensor B_imSep ist frei [10ms] + L "MW4" // Freizeit +10ms + +I + T SAVE.Sensorfrei_Zeit // Sensor B_imSep ist frei [10ms] + + L Separator.Wartezeit_bis_draussen // Nach dieser Zeit hat BT den Sep. verlassen [10ms] + <=I // Maximum erreicht ? + JC w071_Mig // Nein ! + + T SAVE.Sensorfrei_Zeit // Maximum übergeben + + JU w071_Mig + +w070_Mig: L 0 + T SAVE.Sensorfrei_Zeit // Sensor B_imSep ist frei [10ms] + +w071_Mig: L SAVE.Sensorfrei_Zeit // Sensor B_imSep ist frei [10ms] + L Separator.Wartezeit_bis_draussen // Nach dieser Zeit hat BT den Sep. verlassen [10ms] + >=I + AN B_ImSep // Sensor BT ist im Separator + A( + O Dyn.BT_draussen_erkannt // Sensor hat BT draussen erkannt + ON Separator.Parameter_allg.B_AusSep_vorhanden // Sensor BT hat Separator verlassen ist eingebaut (Konrolle kann erfolgen) + ) + = Dyn.BT_draussen // BT/MT hat Separator verlassen + + +--- NW 10: Daten des Inkremental-Gebers holen --- + L 0 + T Ink_Wert + CLR + = Flag_Lauf_fertig + = Ohne_Lauf_fertig + = Lauf_Flag + +// Weichendaten auslesen: +CALL FC "FifoOut" (SSDB:=Separator.Parameter_SorterRein.TravelFIFO_DB, SSDW:=Separator.Parameter_SorterRein.TravelFIFO_DW, PARA:=WORD#16#E214, OUTDATEN:=P#M220.0, RE_VAL:="MB199") // Alle Zusatzdaten lesen + + L "MB199" + T Dyn.Rueckmld.RET_VAL_TravelFIFO_Out // Rückmeldung bei FIFO-Zugriff (Travel-FIFO) + SET // alw + R Dyn.Error.Travel_FIFO // Travel-FIFO fehlerhaft + JBI Z_Ok + + SET + S Dyn.Error.Travel_FIFO // Weichen-FIFO fehlerhaft + + JU En08 + +// Zähler-Daten übergeben: +Z_Ok: A "M247.7" // Übergabe MaxWert aktiv + = Max_Uebergabe // MaxWert wird gerade übertragen ! + JC w080 + + L "MD242" // Inkwert + T Ink_Wert + A "M246.3" // Flag-Info + = Lauf_Flag + A "M246.4" // Fertig-Info + = Flag_Lauf_fertig + A "M246.5" // Fertig-Info + = Ohne_Lauf_fertig + + JU En08 + +w080: L "MD242" // MaxWert übergeben + T Dyn.Max_Wert + +En08: NOP 0 + + +--- NW 11: Letzter BT mit anderem Ziel genügend Abstand ? --- + A Max_Uebergabe // MaxWert wird gerade übertragen ! + JC En10 + + L Dyn.Del_Last_Ziel_Ink // Bei diesen Inks letztes Ziel löschen + L 0 // sinnvolle Angabe ? + <=D // Nein ! + SET // /Hier egal, da großer Trolley-Abstand + Stauklappe zum Synchronisieren! + JC W100 + + A Dyn.Del_Last_Ziel_Flag // Bei diesem Flag letzes Ziel löschen + A Flag_Lauf_fertig // Flag-Lauf wurde beendet + O + AN Dyn.Del_Last_Ziel_Flag // Bei diesem Flag letzes Ziel löschen + A Ohne_Lauf_fertig // Flag-Lauf wurde beendet + JC W100 // beim Ende des Lauf sind Inkremente uninteressant + + A Dyn.Del_Last_Ziel_Flag // Bei diesem Flag letzes Ziel löschen + A Lauf_Flag // Zähl-Lauf mit Flag ist aktiv + O + AN Dyn.Del_Last_Ziel_Flag // Bei diesem Flag letzes Ziel löschen + AN Lauf_Flag // Zähl-Lauf mit Flag ist aktiv + JCN En10 + + L Ink_Wert // Aktuelle Inkrementalwert + L Dyn.Del_Last_Ziel_Ink // Bei diesen Inks letztes Ziel löschen + =I // Ja ! + A( + L 0 // Sinnvolle Angabe ? + >I // Ja ! + ) + A( + O Dyn.Status.Betriebsart_Art.Job + O Dyn.Status.Betriebsart_Art.Job_TillEmpty + ) + R Dyn.Status.Betriebsart_Art.Job // Betriebsarten beenden + R Dyn.Status.Betriebsart_Art.Job_TillEmpty + S Dyn.Betriebsart_del // Betriebsart löschen + S Dyn.Status.Betriebsart_Art.Sack_Tel // Sack-Telegramm senden + JC Sack + + AN Weiter // Weiterschaltbedingung ist erfüllt + JC w100_Mig + + SET + R Dyn.Sk.Err_Uebzeit // sofort weiter + R Err_Uebzeit + + A Dyn.BT_beruhigt // 1. einfahrender BügelTräger ist im Sep +// / O #Separator.Parameter_allg.Antrieb_vorhanden + L 15 // Angabe der Wartezeit (*10ms) [kurz] + JU Plus // Nächsten Schritt starten + +// Überwachungszeit abgelaufen ?: +w100_Mig: AN Err_Uebzeit + JC x101 + + SET + R Dyn.Sk.Err_Uebzeit // Einmalige Auswertung + R Err_Uebzeit + + JU w101 + +// Überwachungszeit starten: +x101: AN B_ImSep // BT im Separator erkannt + A( + O Dyn.Status.Betriebsart_Art.TillEmpty + O Dyn.Status.Betriebsart_Art.Job_TillEmpty + O Dyn.Status.Betriebsart_Art.Scannen_TillEmpty + ) + A Dyn.Sk.Auto_akt // Automatik ist aktiv + A Dyn.Sk.Bereich_ok + = Ueb_akt // Überwachungszeit aktivieren + + L 16#B001 + T Dyn.Stop_Ursache + + AN Dyn.Sk.Auto_akt // Automatik ist aktiv + JC x001_Mig + + L 16#B002 + T Dyn.Stop_Ursache + + AN Dyn.Sk.Bereich_ok + JC x001_Mig + + L 16#B003 + T Dyn.Stop_Ursache + + AN B_ImSep + JC x001_Mig + +x001_Mig: L Separator.Wartezeit_bis_leer // Angabe der Überwachungszeit (*100ms) + JU tueb // Überwachungszeit + +// Folgende Betriebsarten beenden ?: +w101: A Dyn.Status.Betriebsart_Art.TillEmpty + R Dyn.Status.Betriebsart_Art.TillEmpty + S Dyn.Betriebsart_del // Betriebsart löschen + S Dyn.Status.Betriebsart_Art.Sack_Tel // Sack-Telegramm senden + JC Sack // Sack-Telegramm senden + + A Dyn.Status.Betriebsart_Art.Job_TillEmpty + R Dyn.Status.Betriebsart_Art.Job_TillEmpty + S Dyn.Betriebsart_del // Betriebsart löschen + S Dyn.Status.Betriebsart_Art.Sack_Tel // Sack-Telegramm senden + JC Sack // Sack-Telegramm senden + + A Dyn.Status.Betriebsart_Art.Scannen_TillEmpty + R Dyn.Status.Betriebsart_Art.Scannen_TillEmpty + S Dyn.Betriebsart_del // Betriebsart löschen + S Dyn.Status.Betriebsart_Art.Sack_Tel // Sack-Telegramm senden + JC Sack // Sack-Telegramm senden + + BEU + +Sack: AN Separator.Parameter_allg.PC_Komm_aktiv + R Dyn.Error.Send_FIFO_voll // Send-FIFO zu PC ist voll + JC w102 + +// Daten aufbereiten: + L 'SACK' + T "MD214" // Telegramm-Kennung + L 30 + T "MW218" // Anzahl Bytes + L Separator_Nr + T "MD220" // Sep-ID + L 0 + T "MB224" // State + L Dyn.Status.Betriebsart_Anzahl_Soll + T "MW225" // Target-Counts + L Dyn.Status.Betriebsart_Anzahl_Ist + T "MW227" // Actual-Counts + L 16#0003 + T "MB229" // ETX + + L 0 // Rest nullen + T "MB230" + T "MB231" + T "MB232" + T "MB233" + T "MB234" + T "MB235" + T "MB236" + T "MB237" + T "MB238" + T "MB239" + T Dyn.Status.Betriebsart_Anzahl_Ist + + L Dyn.Status.Betriebsart_Quelle // SendFIFO des PC, der Betriebart gestartet hat + L 0 // bekannt ? + >I // Ja ! + JC sack_Mig + + L Separator.PC_Send_FIFO // Send-FIFO für PC-Sendungen + T Dyn.Status.Betriebsart_Quelle + +sack_Mig: SET + R Dyn.Error.Send_FIFO_voll // Send-FIFO zu PC ist voll + R Dyn.Error.Send_FIFO_fehlerhaft // Send-FIFO fehlerhaft + +CALL FC "FifoIn" (SSDB:=Dyn.Status.Betriebsart_Quelle, SSDW:=0, PARA:=WORD#16#0000, INDATEN:=P#M214.0, RE_VAL:="MB199") + + L "MB199" + T Dyn.Rueckmld.RET_VAL_SendFIFO + + JBI w102 + + A "M199.2" + JCN x002_Mig + + SET + S Dyn.Error.Send_FIFO_voll // Send-FIFO zu PC ist voll + + L 16#B005 + T Dyn.Stop_Ursache + + BEU // Warten + +x002_Mig: SET + S Dyn.Error.Send_FIFO_fehlerhaft // Send-FIFO fehlerhaft + + L 16#B006 + T Dyn.Stop_Ursache + + BEU // Warten + +w102: L 0 // unbekannt + T Dyn.Status.Betriebsart_Quelle // SendFIFO des PC, der Betriebart gestartet hat + + SET + R Dyn.Status.Betriebsart_Art.Sack_Tel // Sack-Telegramm senden + + JU ENDE_Mig // Neubeginn + + +--- NW 16: Schritt 1: Betriebsart ok/angegeben? --- +s001: SET // Weiterschaltbedingung +// Schrittaktionen: + S Dyn.BT_beruhigt // 1. einfahrender BügelTräger ist im Sep + + A Dyn.Status.Betriebsart_Art.PC_Del // Betriebsart aufgrund vom PC löschen + L 0 // Weiter mit Schritt 0 + JC Neu_Mig // Bei diesem Schritt weiter + + AN Dyn.Error.Korrektur_Modus_aktiv // Korrektur-Modus nach Crash aktiviert (wird vor Aufruf gesetzt!) + JC W108 + + L 16#B010 + T Dyn.Stop_Ursache + + BEU + +// Betriebsart checken: +W108: L Dyn.Status.Betriebsart_Anzahl_Soll // Anzahl der zu fahrenden BTs + L 0 // Sinnvolle Angabe ? + <=I // Nein ! + A( + O Dyn.Status.Betriebsart_Art.Job // Aber Betriebsart mit Anzahl ! + O Dyn.Status.Betriebsart_Art.Job_TillEmpty + ) + O + A( + O Dyn.Status.Betriebsart_Art.Scannen + O Dyn.Status.Betriebsart_Art.Scannen_TillEmpty + ) + AN Separator.Parameter_allg.Scanner_eingebaut + = Dyn.Error.Err_Betriebsart // Betriebsart ist nicht möglich + JCN w108_Mig + + L 16#B011 + T Dyn.Stop_Ursache + + BEU + +w108_Mig: A B_ImSep // BT im Separator erkannt + O Dyn.ohne_B_starten // 1.Vereinzelung auch ohne B_im_Sep + JC w109 + + L 16#B012 + T Dyn.Stop_Ursache + + L 0 // Nächsten Zyklus Schritt 0 (Warten auf BT) + T Dyn.Sk.Neu_Schritt // Schritt, der im nächsten Zyklus aktiv werden soll + + BEU + +w109: A Dyn.Status.Betriebsart_Art.Scannen + O Dyn.Status.Betriebsart_Art.Scannen_TillEmpty + JC W110 + + SET + R Dyn.Scannerdaten // Scannerdaten erhalten + R Dyn.Dest0 // PC-Antwort mit Ziel=0 erhalten + + L Dyn.Status.Betriebsart_Ziel // Ziel für BTs (ohne PC) + L 0 // Ziel mit angegeben ? + <>I // Ja ! + A Dyn.Status.Betriebsart_Art.Listen + O Dyn.Status.Betriebsart_Art.Rapidfire + O Dyn.Status.Betriebsart_Art.TillEmpty + O Dyn.Status.Betriebsart_Art.Job + O Dyn.Status.Betriebsart_Art.Job_TillEmpty + O Dyn.Status.Betriebsart_Art.DestFull + JC W111 + + L 0 // Betriebsart löschen + T Dyn.Status.Betriebsart_Ziel + + L 0 // Nächsten Zyklus Schritt 0 (Warten auf BT) + T Dyn.Sk.Neu_Schritt // Schritt, der im nächsten Zyklus aktiv werden soll + T Dyn.Status.Betriebsart_Anzahl_Ist + + L 16#B013 + T Dyn.Stop_Ursache + + BEU + +W111: L 0 // Ziel mit angegeben ? + L Dyn.Status.Betriebsart_Ziel // Fest-Ziel für BTs (ohne PC) + <>I // Ja ! + JC W112 + + L Separator.Default_Ziel // Ziel nach Urlöschen/Reset +W112: T Dyn.Scanner.Rec_DEST_Ziel // 1...X Ziellinie + + L 11 // Weiter mit Schritt 11 (Ausfahren ok?) + JU Neu_Mig // Bei diesem Schritt weiter + +// Betriebsart mit Scannen: +W110: A Dyn.ohne_B_starten // 1.Vereinzelung auch ohne B_im_Sep + R Dyn.ohne_B_starten // nicht erlaubt ! + BEC + + L 5 // Weiter mit Schritt 5 (Default-Ziel ?) + JU Neu_Mig // Bei diesem Schritt weiter + + +--- NW 17: Schritt 5: Mit Scanner fahren: Defaultziel ? --- +s005: SET // Weiterschaltbedingung + L Separator.Default_Ziel + L 0 // angegeben ? + ==I // Nein ! + = Weiter + +// Schrittaktionen: + A Weiter // Weiterschaltbedingung ist erfüllt + A Separator.Parameter_allg.Scanner_eingebaut + A Separator.Parameter_allg.PC_Komm_aktiv + L 6 // Weiter mit Schritt 6 (Scanner triggern) + JC Neu_Mig // Bei diesem Schritt weiter + + L 16#B051 + T Dyn.Stop_Ursache + + A Weiter + BEC + +// Ohne Scannen/PC-Daten fahren: + L 0 + T Dyn.Scanner.Rec_IDX // IDX + L Separator.Default_Ziel + T Dyn.Scanner.Rec_DEST_Ziel // Ziel + + L 11 // Weiter mit Schritt 11 (Ausfahren ok?) + JU Neu_Mig // Bei diesem Schritt weiter + + +--- NW 18: Schritt 6: Scanner triggern --- +s006: SET // Weiterschaltbedingung + = Weiter // Weiterschaltbedingung ist erfüllt + +// Schrittaktionen: + A Dyn.Scannerdaten // Scannerdaten erhalten + L 8 // Weiter mit Schritt 8 (Warten auf PC-Daten) + JC Neu_Mig // Bei diesem Schritt weiter + + A Weiter // Weiterschaltbedingung ist erfüllt + S K_Sanner_triggern // Scanner triggern + + A Weiter // Weiterschaltbedingung ist erfüllt + L 0 // Angabe der Wartezeit (*10ms) + JC Plus // Nächsten Schritt starten + + L 16#B061 + T Dyn.Stop_Ursache + + L 0 // Nächsten Zyklus Schritt 0 (Warten auf BT) + T Dyn.Sk.Neu_Schritt // Schritt, der im nächsten Zyklus aktiv werden soll + + BEU + + +--- NW 19: Schritt 7: "DREQ" an PC senden --- +s007: SET // Weiterschaltbedingung + = Weiter // Weiterschaltbedingung ist erfüllt + +// Schrittaktionen: + SET + S K_Sanner_triggern // Scanner triggern + + L Dyn.Scanner.Send_IDX // IDX noch vorhanden, da BT nicht vereinzelt wurde + L 0 + >I + = IDX_Ok // Send_IDX bekannt + JC w110_Mig + + L "SGes".IDX + + 1 + T "SGes".IDX + T Dyn.Scanner.Send_IDX + + L 0 // positiv ? + >I // Ja ! + A( + CAC + L 32000 // unterhalb Maximum ? + <=I // Ja ! + ) + JC w110_Mig + + L 1 // Start-IDX + T "SGes".IDX + T Dyn.Scanner.Send_IDX + +// BT-Belade-Info an PC mitsenden: +w110_Mig: A Dyn.B_Beladen // 0=leerer, 1= beladenener BT + L 6 // beladen + JC X110 + + L 5 // Leerer/Escort BT + +X110: T BT_State // Beladezustand des BTs + + L 'DREQ' + T "MD214" // Telegramm-Kennung + L 33 + T "MW218" // Anzahl Bytes + L Separator_Nr + T "MD220" // Sep-ID + L Dyn.Scanner.Send_IDX + T "MW224" // Carrier-IDX + L BT_State // Beladezustand des BTs + T "MB226" // Carrier-Type + L 0 + T "MB227" // Scan-State + L 0 + T "MD228" // Barcode + L 16#0003 + T "MB232" // ETX + + L 0 // Rest nullen + T "MB233" + T "MB234" + T "MB235" + T "MB236" + T "MB237" + T "MB238" + T "MB239" + + SET + R Dyn.Error.Send_FIFO_voll // Send-FIFO zu PC ist voll + R Dyn.Error.Send_FIFO_fehlerhaft // Send-FIFO fehlerhaft + +CALL FC "FifoIn" (SSDB:=Separator.PC_Send_FIFO, SSDW:=0, PARA:=WORD#16#0000, INDATEN:=P#M214.0, RE_VAL:="MB199") // Send-FIFO für PC-Sndungen + + L "MB199" + T Dyn.Rueckmld.RET_VAL_SendFIFO + + JBI w111_Mig + + SET // Bei Problem + R K_Sanner_triggern // Scanner triggern ausschalten + + A "M199.2" + JCN x070_Mig + + SET + S Dyn.Error.Send_FIFO_voll // Send-FIFO zu PC ist voll + + L 16#B071 + T Dyn.Stop_Ursache + + BEU // Warten + +x070_Mig: SET + S Dyn.Error.Send_FIFO_fehlerhaft // Send-FIFO fehlerhaft + + L 16#B072 + T Dyn.Stop_Ursache + + BEU + +// Empfangsfach leeren... +w111_Mig: A IDX_Ok // Send_IDX bekannt + JC w112_Mig + + L 0 + T Dyn.Scanner.Rec_IDX // IDX + T Dyn.Scanner.Rec_DEST_Type // Ziel-Typ + T Dyn.Scanner.Rec_DEST_Ziel // Ziel + + SET + R Dyn.Dest0 + +w112_Mig: A Weiter // Weiterschaltbedingung ist erfüllt + L 0 // Angabe der Wartezeit (*10ms) + JC Plus // Nächsten Schritt starten + + BEU + + +--- NW 20: Schritt 8: Warten auf PC-Antwort --- +s008: SET // Weiterschaltbedingung + L Dyn.Scanner.Send_IDX + L Dyn.Scanner.Rec_IDX // Daten für gesendete IDX empfangen ? + ==I // Ja ! + = Weiter + +// Schrittaktionen: + A Dyn.Sk.Err_Uebzeit + AN Weiter + R Dyn.Sk.Err_Uebzeit // Sofort weiter ! + R Err_Uebzeit + R Dyn.Scannerdaten // Scannerdaten erhalten + JC ENDE_Mig // Neustart + + A Weiter // Weiterschaltbedingung ist erfüllt + R Dyn.Sk.Err_Uebzeit // Sofort weiter ! + R Err_Uebzeit + S Dyn.Scannerdaten // Scannerdaten erhalten + L 9 // Weiter mit Schritt + JC Neu_Mig // Bei diesem Schritt weiter + + L 16#B081 + T Dyn.Stop_Ursache + + L Dyn.Scanner.Rec_IDX // Daten empfangen ? + L 0 + ==I // Nein ! + JCN x080 + + L 16#B082 + T Dyn.Stop_Ursache + +x080: SET + = Ueb_akt // Überwachungszeit aktivieren + + L 300 // Angabe der Überwachungszeit (*100ms) + A Dyn.Dest0 // PC-Antwort mit Ziel=0 erhalten, dann lange Wartezeit ! + JC tueb // Überwachungszeit + + L 30 // Angabe der Überwachungszeit (*100ms) + JU tueb // Überwachungszeit + + BEU + + +--- NW 21: Schritt 9: PC-Antwort auswerten --- +s009: SET // Weiterschaltbedingung + = Weiter + +// Schrittaktionen: + L Dyn.Scanner.Rec_DEST_Ziel // Ziel + L 0 + ==I + = Dyn.Dest0 // PC-Antwort mit Ziel=0 erhalten, dann Type auswerten (s.u.) + JCN w130 // negierter Sprung ! + + L 0 // weiteres Telegramm nötig ! + T Dyn.Scanner.Rec_IDX // IDX + + L 8 // Weiter mit Schritt 8 (Warten auf PC-Daten) + JU Neu_Mig // Bei diesem Schritt weiter + +w130: L Dyn.Scanner.Rec_DEST_Type // Ziel-Typ + L 9 // Entladen per Hand ? + <>I // Nein ! + JC w131 + + L 16#B092 + T Dyn.Stop_Ursache + + BEU + +w131: CAC + L 1 // Ist BT leer? + ==I // Ja ! + A Separator.Parameter_allg.Belade_Kontrolle_nachSep + = Dyn.Status.Betriebsart_Art.BT_leer + + CAC + L 2 // Ist BT beladen? + ==I // Ja ! + A Separator.Parameter_allg.Belade_Kontrolle_nachSep + = Dyn.Status.Betriebsart_Art.BT_beladen + + A Weiter // Weiterschaltbedingung ist erfüllt + L 11 // Weiter mit Schritt 11 (Ausfahren ok?) + JC Neu_Mig // Bei diesem Schritt weiter + + BEU + +// Wartezeit bei gleichem BC: + A Err_Uebzeit // Weiterschaltbedingung ist erfüllt + R Dyn.Sk.Err_Uebzeit // Sofort weiter ! + R Err_Uebzeit + JC ENDE_Mig + + SET + = Ueb_akt // Überwachungszeit aktivieren + S Antrieb_start // Kreiselantrieb starten (damit AutoDel funktioniert) + R Antrieb_stoppen + + L 30 // Angabe der Überwachungszeit (*100ms) + JU tueb // Überwachungszeit + + BEU + + +--- NW 22: Schritt 11: Ausfahren ok ? --- +// Schrittaktionen: +s011: AN B_ImSep // Sensor BT ist im Separator + JC ENDE_Mig // Neustart + +// Anlage aus oder Störung: + AN Dyn.Sk.Auto_akt // Automatik ist aktiv + ON Dyn.Sk.Bereich_ok // Bereich ist gestört + L 16#B111 + T Dyn.Stop_Ursache + JC ENDE_Mig // Neustart + +// Neues Ziel ? + L Dyn.Scanner.Rec_DEST_Ziel // Ziel + L SAVE.Last_Ziel // Letztes angefahrenes Ziel + <>I // unterschiedlich ! + A( + L 0 // noch gespeichert ? + <>I // Ja ! + ) + L 16#B112 + T Dyn.Stop_Ursache + R Dyn.Error.Err_PinSignal // Es kommt kein Pin-Signal + BEC // Warten ! + +// Gleiches Ziel ? + L Dyn.Scanner.Rec_DEST_Ziel // Ziel + L SAVE.Last_Ziel // Letztes angefahrenes Ziel + ==I // identisch ! + A( + L 0 // noch gespeichert ? + <>I // Ja ! + ) + = Dyn.Gleiches_Ziel // BT hat gleiches Ziel + JC X180 // Sofort weiter ! + +// Genügend Abstand bei Ziel-Wechsel: + L SAVE.Last_Ziel // Letztes angefahrenes Ziel + L 0 // gelöscht ? (nach Zielwechsel-Abstand) + <>I // Nein ! + L 16#B11A + T Dyn.Stop_Ursache + R Dyn.Error.Err_PinSignal // Es kommt kein Pin-Signal + BEC + + AN Separator.Parameter_allg.Wechsel_bei_Travel_leer // Zielwechsel nur bei Travel-FIFO leer + JC X180 // Sofort weiter ! + +// Travel-Fifo leer ? + L Separator.Parameter_SorterRein.TravelFIFO_DB + T DatenDB + + OPN DB[DatenDB] + + L Separator.Parameter_SorterRein.TravelFIFO_DW + + 8 // Anzahl der Datensätze (eingetragene) + ITD + SLD 3 + T AR1Zeiger // Statt Dyn.Bereichsstop (ging nur bis DB-Länge <= 8191 Bytes) + + L DBW [AR1Zeiger] // Anzahl der Datensätze (eingetragene) + L 0 + ==I + JC X180 // Sofort weiter ! + + L 16#B11B + T Dyn.Stop_Ursache + SET + R Dyn.Error.Err_PinSignal // Es kommt kein Pin-Signal + BEU // Warten ! + +// BT noch beim Ausfahren ?: +X180: A Dyn.Error.Err_Raus_Sensor // Raus-/Belade-Sensor wird nicht erreicht (oder dauernd aktiv)! Störung schon erkannt ! + A( + A B_AusSep // Sensor BT hat Separator verlassen + A Separator.Parameter_allg.B_AusSep_vorhanden // Sensor BT hat Separator verlassen ist eingebaut + O + A B_Beladen_nach_Sep // Sensor BT ist beladen nach Sep + A Separator.Parameter_allg.Belade_Kontrolle_nachSep // Belade-Kontrolle vorhanden nach Separator + ) + S Antrieb_start // Kreiselantrieb starten + R Antrieb_stoppen + L 16#B115 + T Dyn.Stop_Ursache + R Dyn.Error.Err_PinSignal // Es kommt kein Pin-Signal + BEC // Warten ! + + A B_AusSep // Sensor BT hat Separator verlassen + A Separator.Parameter_allg.B_AusSep_vorhanden // Sensor BT hat Separator verlassen ist eingebaut + O + A B_Beladen_nach_Sep // Sensor BT ist beladen nach Sep + A Separator.Parameter_allg.Belade_Kontrolle_nachSep // Belade-Kontrolle vorhanden nach Separator + S Antrieb_start // Kreiselantrieb starten + R Antrieb_stoppen + JC w181 + + SET + R Dyn.Sk.Err_Uebzeit // Sofort weiter ! + R Err_Uebzeit + R Dyn.Error.Err_Raus_Sensor // Raus-/Belade-Sensor wird nicht erreicht (oder dauernd aktiv)! + +// Starten erlaubt ?: + AN Start_Ok // Starten ist erlaubt + L 16#B116 + T Dyn.Stop_Ursache + R Dyn.Error.Err_PinSignal // Es kommt kein Pin-Signal + BEC // Warten ! + +// Antriebe aktiv ?: + A Separator.Parameter_allg.Antrieb_Plus_vorhanden // Separator an weiterem Antrieb (Weiche) + S Antrieb_plus_start // Kreisel-Antrieb plus starten + + A( + O Antrieb_plus_aktiv // Kreisel-Antrieb plus aktiv + ON Separator.Parameter_allg.Antrieb_Plus_vorhanden // Separator an weiterem Antrieb (Weiche) + ) + S Antrieb_start // Kreiselantrieb starten + R Antrieb_stoppen + + A Antrieb_aktiv // Kreisel-Antrieb aktiv + A( + O Antrieb_plus_aktiv // Kreisel-Antrieb plus aktiv + ON Separator.Parameter_allg.Antrieb_Plus_vorhanden // Separator an weiterem Antrieb (Weiche) + ) + L 12 // Weiter mit Schritt (Warten auf Pin-Signal) + JC Neu_Mig // Bei diesem Schritt weiter + + L 16#B117 + T Dyn.Stop_Ursache + + SET + R Dyn.Error.Err_PinSignal // Es kommt kein Pin-Signal + BEU + +// Störung Verlassen-Sensor: +w181: A Err_Uebzeit + S Dyn.Error.Err_Raus_Sensor // Raus-/Belade-Sensor wird nicht erreicht (oder dauernd aktiv)! + + SET + R Dyn.Error.Err_PinSignal // Es kommt kein Pin-Signal + + L 16#B118 + T Dyn.Stop_Ursache + + A Antrieb_aktiv + = Ueb_akt // Überwachungszeit aktivieren + L 150 // Angabe der Überwachungszeit (*100ms) + JU tueb // Überwachungszeit + + +--- NW 23: Schritt 12: Warten auf Pin-Signal --- +s012: SET // Weiterschaltbedingung + A( + A B_Pinsensor // Zustand Pinsensor (eventl. verlängert) + A Dyn.Gleiches_Ziel // BT hat gleiches Ziel + O PinSignal // Impuls + ON Separator.Parameter_allg.PinSignal // Pin-Signal bei Ausfahrt beachten + ) + A Antrieb_aktiv // Kreisel-Antrieb aktiv + A( + O Antrieb_plus_aktiv // Kreisel-Antrieb plus aktiv + ON Separator.Parameter_allg.Antrieb_Plus_vorhanden // Separator an weiterem Antrieb (Weiche) + ) + A Start_Ok // Starten ist erlaubt + = Weiter + +// Schrittaktionen: + SET + R Dyn.BT_draussen + R Dyn.BT_draussen_erkannt + R Dyn.BT_beladen // BT ist beladen + + A Separator.Parameter_allg.Antrieb_Plus_vorhanden // Separator an weiterem Antrieb (Weiche) + S Antrieb_plus_start // Kreisel-Antrieb plus starten + + A( + O Antrieb_plus_aktiv // Kreisel-Antrieb plus aktiv + ON Separator.Parameter_allg.Antrieb_Plus_vorhanden // Separator an weiterem Antrieb (Weiche) + ) + S Antrieb_start // Kreiselantrieb starten + R Antrieb_stoppen + + A Weiter // Weiterschaltbedingung ist erfüllt + R Dyn.Sk.Err_Uebzeit // Sofort weiter ! + R Err_Uebzeit + R Dyn.Error.Err_PinSignal // Es kommt kein Pin-Signal + L 13 // Weiter mit Schritt 13 (Weiche raus bereit ?) + JC Neu_Mig // Bei diesem Schritt weiter + + AN Start_Ok // Starten ist erlaubt + ON Antrieb_aktiv + O + AN Antrieb_plus_aktiv // Kreisel-Antrieb plus aktiv + A Separator.Parameter_allg.Antrieb_Plus_vorhanden // Separator an weiterem Antrieb (Weiche) + JC X012 // Abbruch + + A Err_Uebzeit + S Dyn.Error.Err_PinSignal // Es kommt kein Pin-Signal + + L 16#B121 + T Dyn.Stop_Ursache + + A Antrieb_aktiv + = Ueb_akt // Überwachungszeit aktivieren + L 50 // Angabe der Überwachungszeit (*100ms) + JU tueb // Überwachungszeit + +X012: L 11 // Nächsten Zyklus Schritt 0 (Ausfahren ok?) + T Dyn.Sk.Neu_Schritt // Schritt, der im nächsten Zyklus aktiv werden soll + + BEU + + +--- NW 24: Schritt 13: Travel-Buffer ok ? --- +s013: NOP 0 + +// Schrittaktionen: + SET + S Antrieb_start // Kreiselantrieb starten + R Antrieb_stoppen + + AN B_ImSep // Sensor BT ist im Separator + JC ENDE_Mig // Neustart + + L Dyn.Max_Wert // Max.Wert + L 0 // schon bekannt ? + <=D // Nein ! + L 16#B131 + T Dyn.Stop_Ursache + JC w151 + +CALL FC "FifoIn" (SSDB:=Separator.Parameter_SorterRein.TravelFIFO_DB, SSDW:=Separator.Parameter_SorterRein.TravelFIFO_DW, PARA:=WORD#16#FF00, INDATEN:=P#M220.0, RE_VAL:="MB199") // Testsendung + + L "MB199" + T Dyn.Rueckmld.RET_VAL_TravelFIFO_In + L 0 // Aufruf mit Fehler ? + ==I // Nein ! + R Dyn.Error.Travel_FIFO // Travel-FIFO fehlerhaft + JC w150 + + A "M199.2" // FIFO ist voll + L 16#B132 + T Dyn.Stop_Ursache + JC w151 + + SET + S Dyn.Error.Travel_FIFO // Travel-FIFO fehlerhaft + + L 16#B133 + T Dyn.Stop_Ursache + + JU w151 + +w150: L 17 // Weiter mit Schritt 17 (Daten an Travel-FIFO) + JU Neu_Mig // Bei diesem Schritt weiter + +w151: L 11 // Nächsten Zyklus Schritt 0 (Ausfahren ok?) + T Dyn.Sk.Neu_Schritt // Schritt, der im nächsten Zyklus aktiv werden soll + + BEU + + +--- NW 25: Schritt 14: Separator Mindestzeit öffnen --- +s014: SET // Weiterschaltbedingung + A Antrieb_aktiv // Kreisel-Antrieb aktiv + = Weiter + +// Schrittaktionen: + SET + S Y_Sep_Auf // Separator öffnen + S Antrieb_start // Kreiselantrieb starten + R Antrieb_stoppen + S Antrieb_plus_start // Kreisel-Antrieb plus starten + + AN Weiter + = Warte_neu // Wartezeit neutriggern + JC w251 + + L 16#B142 + T Dyn.Stop_Ursache + + A Weiter // Weiterschaltbedingung ist erfüllt + R Err_Uebzeit + L Separator.Mindeszeit_Sep_geoeffnet // Angabe der Wartezeit (*10ms) + JC Plus // Nächsten Schritt starten + +w251: L 16#B143 + T Dyn.Stop_Ursache + + BEU + + +--- NW 26: Schritt 15: BT ausgefahren ? (Wartezeit bis draussen) --- +s015: SET // Weiterschaltbedingung + A Dyn.BT_draussen // BT/MT hat Separator verlassen +// / U #Antrieb_aktiv //Kreisel-Antrieb aktiv + = Weiter + +// Schrittaktionen: + SET + S Y_Sep_Auf // Separator öffnen + S Antrieb_start // Kreiselantrieb starten + R Antrieb_stoppen + S Antrieb_plus_start // Kreisel-Antrieb plus starten + + A Weiter // Weiterschaltbedingung ist erfüllt + R Dyn.Sk.Err_Uebzeit // Sofort weiter ! + R Err_Uebzeit + R Dyn.Error.Err_BT_raus // BT/MT fährt nicht aus + L 16 // Weiter mit Schritt 16 (MT 1.Achse,...) + JC Neu_Mig // Bei diesem Schritt weiter + + A Err_Uebzeit + S Dyn.Error.Err_BT_raus // BT/MT fährt nicht aus + + L 16#B152 + T Dyn.Stop_Ursache + + AN Antrieb_aktiv // Kreisel-Antrieb aktiv + JC x150 + + L 16#B153 + T Dyn.Stop_Ursache + + AN Dyn.BT_draussen // BT/MT hat Separator verlassen + JC x150 + + L 16#B154 + T Dyn.Stop_Ursache + + AN Antrieb_aktiv // Kreisel-Antrieb aktiv + JC x150 + +x150: A Antrieb_aktiv + = Ueb_akt // Überwachungszeit aktivieren + L 150 // Angabe der Überwachungszeit (*100ms) + JU tueb // Überwachungszeit + + +--- NW 27: Schritt 16: BT ist draussen --- +s016: SET // Weiterschaltbedingung + = Weiter + +// Schrittaktionen: + SET + S Dyn.BT_gestartet // BT ist aus Separator gestartet (nur 1 Zyklus) + +// Belade-Check nach Sep?: + A Separator.Parameter_allg.Belade_Kontrolle_nachSep // Belade-Kontrolle vorhanden nach Separator + A( + O Dyn.Status.Betriebsart_Art.BT_leer // BT/MT ist leer + O Dyn.Status.Betriebsart_Art.BT_beladen + ) + L 19 // Weiter mit Schritt 19 + JC Neu_Mig // Bei diesem Schritt weiter + +// Scannerdaten löschen: + SET + R Dyn.Scannerdaten // Scannerdaten erhalten + + L 0 // IDX löschen, da BT vereinzelt wurde + T Dyn.Scanner.Send_IDX // damit neue IDX geholt wird + T Dyn.Scanner.Rec_IDX + T Dyn.Scanner.Rec_DEST_Ziel + T Dyn.Scanner.Rec_DEST_Type + + JU ENDE_Mig + + +--- NW 28: Schritt 17: Daten in FIFO eintragen --- +s017: L 16#B171 + T Dyn.Stop_Ursache + + A Max_Uebergabe // MaxWert wird gerade übertragen ! + BEC + +// Vereinzelungstakte +1: + L Dyn.Status.Vereinzelungstakte + L 1 + +D + T Dyn.Status.Vereinzelungstakte + + L 0 // negativer Wert ? + >=D // Nein ! + JC W230 + + L Dyn.Status.Vereinzelungstakte + L 1 + -D // damit wieder pos.Wert ! + T Dyn.Status.Vereinzelungstakte + +// Letztes angefahrnes Ziel speichern/Rücksetz-Inks speichern: +W230: L 0 + T SAVE.Last_Ziel // Letztes angefahrenes Ziel erst mal löschen + + L Separator.Abstand_Zielwechsel // Abstand bei Zielwechsel [inc] + L 0 // sinnvolle Angabe ? + <=I // Nein ! + JC W231 + + L Dyn.Scanner.Rec_DEST_Ziel // Ziel + T SAVE.Last_Ziel // Letztes angefahrenes Ziel speichern + + L Separator.Abstand_Zielwechsel // Abstand bei Zielwechsel [inc] + ITD + L Ink_Wert // Aktuelle Inkrementalwert + +D + T Dyn.Del_Last_Ziel_Ink // Bei diesen Inks letztes Ziel löschen + A Lauf_Flag + = Dyn.Del_Last_Ziel_Flag // Bei diesem Flag letzes Ziel löschen + L Dyn.Max_Wert // Maximal erlaubter Zählwert + >D + JCN W231 + + -D // Restwert übernehmen + T Dyn.Del_Last_Ziel_Ink // Bei diesen Inks letztes Ziel löschen + AN Lauf_Flag // Aktuelles Lauf-Flag invertieren, da Überlauf ! + = Dyn.Del_Last_Ziel_Flag // Bei diesem Flag letzes Ziel löschen + +// Daten für Eintrag vorbereiten: +W231: L Ink_Wert // Aktueller Ink-Wert + T "MD210" // Start-Ink (für Rückkontrolle) + L 0 + T "MW214" + A Lauf_Flag + = "M214.0" + L Dyn.Scanner.Rec_DEST_Type // Ziel-Typ + L 3 // Letztes Teil vom Block ? + ==I // Ja ! + = "M214.2" // Letztes Teil vom Block gestartet + + L Dyn.Scanner.Rec_IDX // IDX + T "MD216" + L 0 // angegeben ? + <>I // Ja ! + JC u233 + +// z.Bsp. bei Default-Ziel: + L "SGes".IDX + + DINT#1 + T "SGes".IDX + T "MD216" + +u233: L Dyn.Scanner.Rec_DEST_Ziel // Ziel + T "MW220" + + L Dyn.Status.Betriebsart_Ziel // Fest-Ziel für BTs (ohne PC) + L 0 // vorgegeben ? (dann keine Einlagermeldung an PC) + ==I // Nein ! + L Separator.PC_Komm_SorterID // ID für PC-Kommunikation + JC w233 + + L 0 // Keine Angabe + +w233: T "MW222" + + L 0 // Restliche Daten löschen + T "MW224" + T "MW226" + T "MW228" + T "MW230" + +CALL FC "FifoIn" (SSDB:=Separator.Parameter_SorterRein.TravelFIFO_DB, SSDW:=Separator.Parameter_SorterRein.TravelFIFO_DW, PARA:=WORD#16#0000, INDATEN:=P#M210.0, RE_VAL:="MB199") // Daten speichern + + L "MB199" + T Dyn.Rueckmld.RET_VAL_TravelFIFO_In + + JBI w232 + + SET + S Dyn.Error.Daten_out // Letzte Carrier-Daten konnten nicht an Travel-FIFO übergeben werden + + L 16#B172 + T Dyn.Stop_Ursache + + BEU + +w232: L 14 // Weiter mit Schritt 14 + JU Neu_Mig // Bei diesem Schritt weiter + + +--- NW 29: Schritt 19: Belade-Check --- +s019: SET + S Antrieb_start + R Antrieb_stoppen + A Separator.Parameter_allg.Antrieb_Plus_vorhanden // Separator an weiterem Antrieb (Weiche) + S Antrieb_plus_start // Kreisel-Antrieb plus starten + + A Dyn.Status.Betriebsart_Art.BT_beladen // BT/MT ist beladen + A Dyn.BT_beladen // BT ist beladen + JC X199 // Alles ok! + + A Dyn.Status.Betriebsart_Art.BT_leer // BT/MT ist leer + A Dyn.BT_beladen // BT ist beladen + JC X19E // Leerer BT ist beladen! + + A Err_Uebzeit // Ohne Verlassen-Sensor nach 1 s + O Separator.Parameter_allg.B_AusSep_vorhanden // Sensor BT hat Separator verlassen ist eingebaut + R Dyn.Sk.Err_Uebzeit // Sofort weiter ! + R Err_Uebzeit + JC X190 + + A Antrieb_aktiv + = Ueb_akt // Überwachungszeit aktivieren + L 10 // Angabe der Überwachungszeit (*100ms) + JU tueb // Überwachungszeit + +// BT am Belade-Sensor vorbei: +X190: A Dyn.Status.Betriebsart_Art.BT_leer // BT/MT ist leer + JC X199 // Alles ok! + +// Also Beladener BT ist leer! +// Fehler-Telegramm an PC: +X19E: NOP 0 +// BT-Belade-Info an PC mitsenden: + A Dyn.Status.Betriebsart_Art.BT_leer // BT/MT ist leer (also bei Error beladen!) + L 6 // beladen + JC X191 + + L 4 // Leerer BT + +X191: T BT_State // Beladezustand des BTs + + L 'LERR' + T "MD214" // Telegramm-Kennung + L 33 + T "MW218" // Anzahl Bytes + L Separator_Nr + T "MD220" // Sep-ID + L Dyn.Scanner.Send_IDX + T "MW224" // Carrier-IDX + L BT_State // Beladezustand des BTs + T "MB226" // Carrier-Type + L 0 + T "MB227" // Scan-State + L 0 + T "MD228" // Barcode + L 16#0003 + T "MB232" // ETX + + L 0 // Rest nullen + T "MB233" + T "MB234" + T "MB235" + T "MB236" + T "MB237" + T "MB238" + T "MB239" + + SET + R Dyn.Error.Send_FIFO_voll // Send-FIFO zu PC ist voll + R Dyn.Error.Send_FIFO_fehlerhaft // Send-FIFO fehlerhaft + +CALL FC "FifoIn" (SSDB:=Separator.PC_Send_FIFO, SSDW:=0, PARA:=WORD#16#0000, INDATEN:=P#M214.0, RE_VAL:="MB199") // Send-FIFO für PC-Sendungen + + L "MB199" + T Dyn.Rueckmld.RET_VAL_SendFIFO + + JBI X199 + + SET // Bei Problem + R K_Sanner_triggern // Scanner triggern ausschalten + + A "M199.2" + JCN X192 + + SET + S Dyn.Error.Send_FIFO_voll // Send-FIFO zu PC ist voll + + L 16#B191 + T Dyn.Stop_Ursache + + BEU // Warten + +X192: SET + S Dyn.Error.Send_FIFO_fehlerhaft // Send-FIFO fehlerhaft + + L 16#B192 + T Dyn.Stop_Ursache + + BEU + +// Scannerdaten löschen: +X199: SET + R Dyn.Scannerdaten // Scannerdaten erhalten + R Dyn.Status.Betriebsart_Art.BT_leer // BT/MT ist leer + R Dyn.Status.Betriebsart_Art.BT_beladen // BT/MT ist beladen + + L 0 // IDX löschen, da BT vereinzelt wurde + T Dyn.Scanner.Rec_IDX // Daten für gesendete IDX empfangen ? + T Dyn.Scanner.Send_IDX // IDX noch vorhanden, da BT nicht vereinzelt wurde + + JU ENDE_Mig + + +--- NW 30: Schritt 20: Separator resetten --- +s020: SET // Weiterschaltbedingung + = Weiter // Weiterschaltbedingung ist erfüllt + +// Schrittaktionen: + SET // ELS in Grundstellung fahren + S Antrieb_start // Kreiselantrieb starten + R Antrieb_stoppen + + L 16#B201 + T Dyn.Stop_Ursache + + A Weiter // Weiterschaltbedingung ist erfüllt + L 300 // Angabe der Wartezeit (*10ms) + JC Plus // Nächsten Schritt starten + + SET + = Ueb_akt // Überwachungszeit aktivieren + L 30 // Angabe der Überwachungszeit (*100ms) + JU tueb // Überwachungszeit + + +--- NW 31: Schritt 21: Reset ist zu Ende --- +s021: SET + R Dyn.Sk.Reset_Akt // Reset ist aktiv + + JU ENDE_Mig // Neubeginn + + +--- NW 32: Schritt 23: GesamtSorter-Reset: Start-Ink speichern --- +s023: SET // Weiterschaltbedingung + = Weiter + +// Schrittaktionen: + L Dyn.Max_Wert + L DINT#0 + <=D + O Max_Uebergabe // MaxWert wird gerade übertragen ! + BEC + + L Separator.Parameter_SorterRein.Abstand_Reset_Start // Nach diesen Abstand kann Gesamt-Reset gestartet werden [*10inc] + ITD + L Ink_Wert // Aktuelle Inkrementalwert + +D + T Dyn.SorterReset_Start_Ink // Bei diesen Inks Sorter-Reset starten + A Lauf_Flag + = Dyn.SorterReset_Start_Flag // Bei diesem Flag Sorter-Reset starten + L Dyn.Max_Wert // Maximal erlaubter Zählwert + >D + JCN W291 + + -D // Restwert übernehmen + T Dyn.SorterReset_Start_Ink // Bei diesen Inks Sorter-Reset starten + AN Lauf_Flag // Aktuelles Lauf-Flag invertieren, da Überlauf ! + = Dyn.SorterReset_Start_Flag // Bei diesem Flag Sorter-Reset starten + +W291: A Weiter // Weiterschaltbedingung ist erfüllt + R Dyn.Sk.Err_Uebzeit // Sofort weiter ! + R Err_Uebzeit + L 0 // Angabe der Wartezeit (*10ms) + JC Plus // Nächsten Schritt starten + + CLR + = Ueb_akt // Überwachungszeit aktivieren + L 50 // Angabe der Überwachungszeit (*100ms) + JU tueb // Überwachungszeit + + BEU + + +--- NW 33: Schritt 24: GesamtSorter-Reset: Start-Ink erreicht ? --- +// Schrittaktionen: +s024: L 16#B241 + T Dyn.Stop_Ursache + + SET + S Antrieb_start // Kreiselantrieb starten + R Antrieb_stoppen + S Antrieb_plus_start + + A ErrQuit + R Dyn.Error.Err_BT_raus // BT/MT fährt nicht aus + + A Max_Uebergabe // MaxWert wird gerade übertragen ! + BEC + + A Dyn.SorterReset_Start_Flag // Bei diesem Flag Sorter-Reset starten + A Flag_Lauf_fertig // Flag-Lauf wurde beendet + O + AN Dyn.SorterReset_Start_Flag // Bei diesem Flag Sorter-Reset starten + A Ohne_Lauf_fertig // Flag-Lauf wurde beendet + JC W300 // beim Ende des Lauf sind Inkremente uninteressant + + A Dyn.SorterReset_Start_Flag // Bei diesem Flag Sorter-Reset starten + AN Lauf_Flag // Zähl-Lauf mit Flag ist aktiv + O + AN Dyn.SorterReset_Start_Flag // Bei diesem Flag Sorter-Reset starten + A Lauf_Flag // Zähl-Lauf mit Flag ist aktiv + L 16#B242 + T Dyn.Stop_Ursache + BEC + + L Ink_Wert // Aktuelle Inkrementalwert + L Dyn.SorterReset_Start_Ink // Bei diesen Inks Sorter-Reset starten + sofort weiter + JC w220 + + AN Warte_neu // Wartezeit neutriggern + JC W220_Mig + + L 0 + T Dyn.Sk.Tok_Zelle // Wartezeit + +W220_Mig: A Warte_stop // Wartezeit stoppen + BEC + + L Dyn.Sk.Tok_Zelle + L "MW4" // Wartezeit +10ms + +I + T Dyn.Sk.Tok_Zelle // Wartezeit + L Dyn.Sk.T_ok // abgelaufen ? + I // abgelaufen ? + AN Dyn.Sk.Err_Uebzeit + JC en24 // Nein ! + + A Ueb_akt // Überwachungszeit aktivieren + S Dyn.Sk.Err_Uebzeit + + L 0 // Zeitwert löschen + T Dyn.Sk.Terr_Zelle + + BEU + +en24: NOP 0 + +--- NW 38: Überwachungszeit +1 --- + AN Dyn.Sk.Ueb_akt // Schrittaktion ist aktiv + ON "100ms-Impuls" + BEC + + L Dyn.Sk.Terr_Zelle + L "MW2" + +I + T Dyn.Sk.Terr_Zelle + + BEU + + +--- NW 39: Ende --- + BE + diff --git a/=A01+UH07-KF00/Programmbausteine/Module/MSorter_Uebergabe.awl b/=A01+UH07-KF00/Programmbausteine/Module/MSorter_Uebergabe.awl new file mode 100644 index 0000000..f1911b7 --- /dev/null +++ b/=A01+UH07-KF00/Programmbausteine/Module/MSorter_Uebergabe.awl @@ -0,0 +1,574 @@ +=== FB 180: MSorter_Uebergabe [STL] === +INTERFACE: + Input: + Uebergabe_Nr : Int // Aufruf für Übergabe + KorrekturFaktor : Real // Korrektur-Faktor wegen Kettenlängung + ErrQuit : Bool // Ablaufstörung quittieren + Antrieb_aktiv : Bool // Kreisel-Antrieb aktiv + Output: + Error : Word // Störungen übergeben + InOut: + Antrieb_start : Bool // Kreiselantrieb starten + Antrieb_stoppen : Bool // Kreiselantrieb stoppen + hStOk : Bool // Anzeige Start n. Störung aktivieren + Static: + SAVE : Struct + Last_Sort_ID : Int + Res : Array[1..3] of Int // Reserve + Para : Struct // Parameter + Uebergabe_DL_DB : Int // Einsprung Weichen-Datenliste-DB + Uebergabe_DL_DW : Int // Einsprung Weichen-Datenliste-DW + Res1 : Array[1..3] of Int // Reserve + Uebergabe : "UDLUebergabe" // Fahrbereichs Daten + Dyn : Struct // Dynamische Daten fürs Einfahren + Status : Struct // Status + BT_Daten_vorhanden : Bool // Daten für Travel-FIFO vorhanden + Reset : Bool := TRUE // Reset Einfahrseite starten + Rueckmld : Struct + RET_VAL_BLKMOV_Uebergabe : Int // Rückmeldung nach BLKMOV-Aufruf + RET_VAL_DL_Weichen : Byte // Rückmeldung nach DatenOut-Aufruf + RET_VAL_Sortliste_Out : Byte // Rückmeldung nach Sortdaten-Out-Aufruf + RET_VAL_TravelFIFO_In : Byte // Rückmeldung nach Travel-FIFO-In-Aufruf + RET_VAL_SendFIFO : Byte // Rückmeldung nach SendPC_FIFO-Aufruf + Error : "UErrUebergabe" + Ink_Wert : DInt // Aktueller Inkrementalwert + Max_Wert : DInt // Maximal erlaubter Zählwert + Lauf_Flag : Bool // Zähl-Lauf mit Flag ist aktiv + Flag_Lauf_fertig : Bool // Flag-Lauf wurde beendet + Ohne_Lauf_fertig : Bool // Ohne Flag-Lauf wurde beendet + Hauptstrang_Flag : Bool // Flag zum Weiche schalten (vom Hauptstrang) + FIFO_Flag : Bool // Flag zum Weiche schalten (von Rein-FIFO) + Save_Flag : Bool // Flag zum Daten in Sortliste speichern + Last_Flag : Bool // Flag des letzten durchfahrenden Teils + Hauptstrang_Ink : DInt // Inkremente zum Weiche schalten (vom Hauptstrang) + Hauptstrang_Sortliste : Int // Sortliste aus welcher Hauptstrangdaten sind + Hauptstrang_Search_Ink : DInt // Inkremente zum Daten auslesen (Start-Ink) + Hauptstrang_Pos : Int // Aktuelle Position der Daten in Datenliste + Last_Ink : DInt // Inkremente des letzten durchfahrenden Teils + Last_IDX : DInt := -1 // IDX des letzten durchfahrenden Teils + Last_Ziel : Int := -1 // Ziel des letzten durchfahrenden Teils + Save_Ink : DInt // Inkremente zum Daten in Sortliste speichern + Res1 : Array[1..6] of Int // Reserve + Daten : "UBT_Daten" + Temp: + Quelle : Any // Zeiger, wo Rein-Daten sind + Ziel : Any // Zeiger, FIFO-Stelle + Del : Bool // Nur Sortdaten löschen + FC86_Para : Word // Parameter-Übergabe + Hauptstrang_Ink : DInt // Inkremente zum Weiche schalten (vom Hauptstrang) + Parameter : Word // Parameter + Freigabe : Int + DatenDB : Int // DB öffnen + Constant: + +--- NW 1: Parameter-Übergabe --- + L Uebergabe_Nr // Aufruf-Parameter (für Baustein beobachten) + + L "MW178" // Einsprung Übergabe-DL + T Para.Uebergabe_DL_DB + L 0 + T Para.Uebergabe_DL_DW + + +--- NW 2: Gesamt: Out-Bits zum Zurücksetzen --- + SET + + +--- NW 3: + --- + AN Dyn.Status.Reset + JC En06 + +// Dyn.Daten löschen: + SET + R Dyn.Status.Reset + R Dyn.Hauptstrang_Flag + R Dyn.FIFO_Flag + R Dyn.Save_Flag + R Dyn.Last_Flag + + L 0 + T Dyn.Hauptstrang_Ink + T Dyn.Hauptstrang_Search_Ink + T Dyn.Last_Ink + T Dyn.Save_Ink + + L 0 + T Dyn.Hauptstrang_Sortliste + T Dyn.Last_IDX + T Dyn.Last_Ziel + +// Rückmeldungen löschen: + L 0 + T Dyn.Rueckmld.RET_VAL_TravelFIFO_In + +// Störungen löschen: + SET + R Dyn.Error.Uebergabe_DL + R Dyn.Error.Undef_Uebergabe + R Dyn.Error.BLKMov + R Dyn.Error.Haupstrang_DL + R Dyn.Error.Keine_HSDaten + R Dyn.Error.Travel_FIFO_ERR + R Dyn.Error.Travel_FIFO_voll + R Dyn.Error.Frei07 + R Dyn.Error.Frei10 + R Dyn.Error.Frei11 + R Dyn.Error.Frei12 + R Dyn.Error.Frei13 + R Dyn.Error.Frei14 + R Dyn.Error.Send_FIFO_fehlerhaft + R Dyn.Error.Send_FIFO_voll + R Dyn.Error.Reset_aktiv // Reset ist aktiv + + L 0 // Damit statische Werte neu aus Datenbank geholt werden ! + T Uebergabe.Uebergabe_Nr // Nummer der Übergabe + + BEU + +En06: NOP 0 + + +--- NW 4: Störungen nach Außen übergeben --- + L 0 + T "MW200" + + A Dyn.Error.Uebergabe_DL // Weichen-Datenliste fehlerhaft + = "M200.0" + A Dyn.Error.Undef_Uebergabe // undefinierte Weiche + = "M200.1" + A Dyn.Error.BLKMov // Fehler bei Block kopieren + = "M200.2" + A Dyn.Error.Haupstrang_DL // Haupstrang-Datenliste fehlerhaft + = "M200.3" + A Dyn.Error.Keine_HSDaten // Keine Hauptstrang-Daten mehr vorhanden + = "M200.4" + A Dyn.Error.Travel_FIFO_ERR // Rein-FIFO fehlerhaft + = "M200.5" + A Dyn.Error.Travel_FIFO_voll // Keine Rein-Daten mehr vorhanden + = "M200.6" + A Dyn.Error.Frei07 + = "M200.7" + A Dyn.Error.Frei10 + = "M201.0" + A Dyn.Error.Frei11 + = "M201.1" + A Dyn.Error.Frei12 + = "M201.2" + A Dyn.Error.Frei13 + = "M201.3" + A Dyn.Error.Frei14 + = "M201.4" + A Dyn.Error.Send_FIFO_fehlerhaft + = "M201.5" + A Dyn.Error.Send_FIFO_voll + = "M201.5" + CLR // Reset ist aktiv (gibts nicht!) + = Dyn.Error.Reset_aktiv + = "M201.7" + + L "MW200" + T Error // Schnittstelle nach Außen + +// Antrieb stoppen: + A( + O Dyn.Error.Travel_FIFO_ERR // Daten-Übergabe fand nicht statt -> Antrieb stoppen) + O Dyn.Error.Travel_FIFO_voll // Daten-Übergabe fand nicht statt -> Antrieb stoppen) + ) + AN ErrQuit + S Antrieb_stoppen // Kreiselantrieb stoppen + +// Anzeige Start n. Störung aktivieren: + A Dyn.Error.Travel_FIFO_ERR // Daten-Übergabe fand nicht statt -> Antrieb stoppen) + O Dyn.Error.Travel_FIFO_voll // Daten-Übergabe fand nicht statt -> Antrieb stoppen) + S hStOk + + +--- NW 5: Statische Übergabe-Parameter holen --- + L Uebergabe.Uebergabe_Nr // Nummer der Übergabe + L Uebergabe_Nr // Aufruf-Parameter + ==I // Identisch ? + R Dyn.Error.Uebergabe_DL // Weichendatenbank fehlerhaft + R Dyn.Error.Undef_Uebergabe // undefinierte Weiche + JC en06_Mig // Ja ! + + T "MW200" // Search-Daten + +CALL FC "DatenOut" (SSDB:=Para.Uebergabe_DL_DB, SSDW:=Para.Uebergabe_DL_DW, PARA:=WORD#16#0000, SEARCHDATEN:=P#M200.0, RE_VAL:="MB199", OUTDATEN:=P#M220.0, Position:="MW196") + + L "MB199" + T Dyn.Rueckmld.RET_VAL_DL_Weichen // Rückmeldung bei Datenbank-Zugriff (Gefälle-DL) + + JBI G_Ok + + A "M199.0" + = Dyn.Error.Uebergabe_DL // Weichendatenbank fehlerhaft + BEC + + SET + S Dyn.Error.Undef_Uebergabe // undefinierte Weiche + + BEU + +// Kennung + Datenbytes +G_Ok: SET + R Dyn.Error.Uebergabe_DL // Weichendatenbank fehlerhaft + R Dyn.Error.Undef_Uebergabe // undefinierte Weiche + + L 16#1004 // Kennung 10 + Word=04 + T LW0 // Any-Kennung, Datentyp + L 40 // Datenwords speichern + T LW2 // Wiederholungen + +// Quelle-Pointer erzeugen: + L 0 // Bei Merker = 0 ! + T LW4 // DB_Nummer + L 220 // Adresse + SLD 3 + L 16#8300_0000 // Kennung: Merker + OD + T LD6 // Kennung, Adresse + +CALL SYS "BLKMOV" (SRCBLK:=Quelle, RET_VAL:=Dyn.Rueckmld.RET_VAL_BLKMOV_Uebergabe, DSTBLK:=Uebergabe) // Datenliste-Daten speichern | #Ziel + + L Dyn.Rueckmld.RET_VAL_BLKMOV_Uebergabe // Rückmeldung + L 0 // Fehler vorhanden ? + <>I // Ja ! + = Dyn.Error.BLKMov // Error bei Block kopieren + BEC + + L Uebergabe.Uebergabe_Typ // Übergabentyp = 180 (Übergabe) + L 180 // Dieser Aufruf-FB ? + ==I // Ja ! + JC en06_Mig + + SET + S Dyn.Error.Undef_Uebergabe // undefinierte Weiche + + L 0 // Übergabe ungültig ! + T Uebergabe.Uebergabe_Nr // Nummer der Übergabe + + BEU + +en06_Mig: NOP 0 + + +--- NW 6: Daten des Inkremental-Gebers holen / Zeit-Inkremente --- + L Uebergabe.Ink_DB // DB-Nr des Inkremental-Geber + L 0 // angegeben ? + <=I // Nein ! + JC w040 + + CAC + T "MW200" + OPN DB["MW200"] // Zähler-DB öffnen + L DBD80 + T Dyn.Ink_Wert + L DBD76 + T Dyn.Max_Wert + A DBX74.3 + = Dyn.Lauf_Flag + A DBX74.4 + = Dyn.Flag_Lauf_fertig + A DBX74.5 + = Dyn.Ohne_Lauf_fertig + + JU en04 + +// Zeit-Inkremente erzeugen: +w040: AN Antrieb_aktiv + JC w041 + + L "MW4" // 10ms-Takte + ITD + L Dyn.Ink_Wert + +D // Aktueller Zählerwert +100ms-Takte + T Dyn.Ink_Wert + +w041: L 10000 // Festwert: 10000 (100s) + T Dyn.Max_Wert + + L Dyn.Ink_Wert // Aktueller Zählerwert + L Dyn.Max_Wert // Max. Wert erreicht ? + <=D // Nein ! + R Dyn.Ohne_Lauf_fertig // Ohne Flag-Lauf wurde beendet + R Dyn.Flag_Lauf_fertig // Flag-Lauf wurde beendet + JC en04 + + -D // Restwert als Startwert nehmen ! + T Dyn.Ink_Wert + + AN Dyn.Lauf_Flag // Umschaltung Zähl-Lauf ohne-mit-ohne Flag + = Dyn.Ohne_Lauf_fertig // Ohne Flag-Lauf wurde beendet + A Dyn.Lauf_Flag // Umschaltung Zähl-Lauf ohne-mit-ohne Flag + = Dyn.Flag_Lauf_fertig // Flag-Lauf wurde beendet + + AN Dyn.Lauf_Flag // Umschaltung Zähl-Lauf ohne-mit-ohne Flag + = Dyn.Lauf_Flag + +en04: NOP 0 + + +--- NW 7: + --- + AN ErrQuit +// / CLR ///09.09.18, da Störung ohnehin nicht behebbar + JC En07 // /Am 21.12.18 aufgrund vom Kundenwunsch wieder wie früher + + SET + R Dyn.Status.Reset + +// Störungen löschen: + SET + R Dyn.Error.Keine_HSDaten + R Dyn.Error.Travel_FIFO_ERR + R Dyn.Error.Travel_FIFO_voll + +En07: NOP 0 + + +--- NW 8: Übergabepunkt aufgrund von Hauptstrangdaten suchen --- + L Dyn.Hauptstrang_Ink // Inkremente zum Weiche schalten (vom Hauptstrang) + L 0 // schon bekannt ? + >D // Ja ! + JC Nw09 + + L Uebergabe.Hauptstrang_DL_DB // Sortlisten-DB für diese Weiche (Hauptstrang) + L 0 // Sinnvolle Angabe ? + <=I // Nein ! + O( + L Uebergabe.Hauptstrang_DL_DW // Sortlisten-DW für diese Weiche (Hauptstrang) + L 0 // Sinnvolle Angabe ? + D // Gleiches Flag/Flag wie Inkgeber zum Suchen + JC w071 + +// Anders Flag/Liste wie Inkgeber zum Suchen: + L Uebergabe.Hauptstrang_DL_DB + + A Dyn.Lauf_Flag // Inkgeber schon mit Lauf-Flag + JC w070 + + + 1 + +w070: T Dyn.Hauptstrang_Sortliste // Sortliste aus welcher Hauptstrangdaten sind + + JU w073 + +// Gleiches Flag/Liste wie Inkgeber zum Suchen: +w071: L Uebergabe.Hauptstrang_DL_DB + + AN Dyn.Lauf_Flag // Inkgebeer ohne Lauf-Flag + JC w072 + + + 1 + +w072: T Dyn.Hauptstrang_Sortliste // Sortliste aus welcher Hauptstrangdaten sind + +// Hauptstrang Sortliste nach Position -1 durchsuchen: +w073: CALL FC "DatenFindOffsetSort" (SSDB:=Dyn.Hauptstrang_Sortliste, SSDW:=Uebergabe.Hauptstrang_DL_DW, PARA:=WORD#16#0B01, SEARCHDATEN:=Uebergabe.Position_minus, RE_VAL:="MB199", OUTDATEN:=Daten, Position:="MW196") // nach 11.DW (letzte Position) suchen + + L "MB199" + T Dyn.Rueckmld.RET_VAL_Sortliste_Out + + A "M199.7" // Datensatz ist vorhanden + R Dyn.Error.Haupstrang_DL // Sortliste fehlerhaft + JC w074 + + A "M199.6" // Datensatz ist nicht vorhanden + R Dyn.Error.Haupstrang_DL // Sortliste fehlerhaft + JC Xn08 // Warten, da noch keine Daten vorhanden + + SET + S Dyn.Error.Haupstrang_DL // Sortliste fehlerhaft + +w076: L 0 // Keine Daten auf Hauptstrang vorhanden + T Dyn.Hauptstrang_Ink // Inkremente zum Weiche schalten (vom Hauptstrang) + + JU Xn08 + +// Search-Ink speichern: +w074: L Daten.Start_Ink // Stamm-Daten speichern + T Dyn.Hauptstrang_Search_Ink // Inkremente zum Daten auslesen (Start-Ink) + +// Hauptstrang-Schaltdaten errechnen/speichern: +// Kettenlängungs-Korrektur: + L KorrekturFaktor // Korrektur-Faktor wegen Kettenlängung + L 0.95 // sinnvoller Wert ? (maximal 5% Abweichung erlaubt) + >=R // Ja ! + A( + CAC + L 1.05 + <=R + ) + JC w075 + + L 1.0 // dann ohne Korrektur ! + T KorrekturFaktor // Korrektur-Faktor wegen Kettenlängung + +// Schaltdaten errechnen: +w075: A Daten.Start_Flag // Lauf-Flag bei Start-Inkremente + = Dyn.Hauptstrang_Flag // Flag zum Weiche schalten (vom Hauptstrang) + + L Uebergabe.Off_Ink // Inkremente zum Weiche schalten + DTR + L KorrekturFaktor // Korrektur-Faktor wegen Kettenlängung + *R + RND + L Daten.Start_Ink // Daten aus Sortliste dazuaddieren + +D + T Dyn.Hauptstrang_Ink // Inkremente zum Weiche schalten (vom Hauptstrang) + L Dyn.Max_Wert // Maximal erlaubter Zählwert + >D + JCN Xn08 + + -D // Restwert übernehmen + T Dyn.Hauptstrang_Ink // Inkremente zum Weiche schalten (vom Hauptstrang) + + AN Daten.Start_Flag // Lauf-Flag bei Start-Inkremente (invertieren) + = Dyn.Hauptstrang_Flag // Flag zum Weiche schalten (vom Hauptstrang) + + +--- NW 9: Hauptstrangdaten auslesen --- +Nw09: L Dyn.Hauptstrang_Ink // Inkremente zum Weiche schalten (vom Hauptstrang) + L 0 // angegeben ? + ==D // Nein ! + JC Xn08 + + Antrieb stoppen) + JC en08 + + SET + S Dyn.Error.Travel_FIFO_ERR // Daten-Übergabe fand nicht statt -> Antrieb stoppen) + + JU en08 + +w8Ok: SET + R Dyn.Status.BT_Daten_vorhanden // Daten für Travel-FIFO vorhanden + +w08E: L 0 + T Dyn.Hauptstrang_Ink // Inkremente zum Weiche schalten (vom Hauptstrang) + +en08: NOP 0 + + +--- NW 11: Antrieb einschalten --- + L Dyn.Hauptstrang_Ink // Inkremente zum Weiche schalten (vom Hauptstrang) + L 0 // schon bekannt ? + >D // Ja ! + S Antrieb_start // Kreiselantrieb starten + + +--- NW 12: Ende --- + BE + diff --git a/=A01+UH07-KF00/Programmbausteine/Module/MStartSync.awl b/=A01+UH07-KF00/Programmbausteine/Module/MStartSync.awl new file mode 100644 index 0000000..481ed67 --- /dev/null +++ b/=A01+UH07-KF00/Programmbausteine/Module/MStartSync.awl @@ -0,0 +1,1322 @@ +=== FB 177: MStartSync [STL] === +INTERFACE: + Input: + Sync_Nr : Int // Aufruf für Weiche + ErrQuit : Bool // Ablaufstörung quittieren + B_BT_da : Bool // Sensor BT ist an Sychronisierstelle + B_RefPunkt : Bool // Sensor RefHaken am Referenzpunkt erkannt + B_TeachPunk : Bool // Sensor RefHaken am Teachpunkt erkannt + Antrieb_aktiv : Bool // Band ist aktiv + Output: + Error : Word // Störungen übergeben + InOut: + Antrieb_start : Bool // Kreiselantrieb starten + hStOk : Bool // Anzeige Start n. Störung aktivieren + Static: + Teil_IDX_Old : Int // BT/MT-IDX (wird bei Auslagerung gemeldet) + Teil_Ziel_Old : Int // BT/MT bei diesem Abwurf-Ziel ausfahren/entladen + Res1 : Array[1..3] of Int // Reserve + SAVE : Struct + Ink_ohne_Zeit : Int // Zeit Inkremntalgeberwert ohne Änderung [100ms] + Para : Struct // Parameter + Weichen_DL_DB : Int // Einsprung Weichen-Datenliste-DB + Weichen_DL_DW : Int // Einsprung Weichen-Datenliste-DW + Offset_RefPunkt : DInt // Offset Refpunkt zu TaschenPunkt (für Teachen) + Res1 : Array[1..1] of Int // Reserve + SyncPkt : "UDLStartSync" // Fahrbereichs Daten + Dyn : Struct // Dynamische Daten + Status : Struct // Status + TeachModus_Aktiv : Bool // Teach-Modus ist aktiv + MoreTeach : Bool // Nächsten Teachpunkt ohne neuen Refpunkt + Res02 : Bool // Reserve + Res03 : Bool // Reserve + Res04 : Bool // Reserve + Res05 : Bool // Reserve + Res06 : Bool // Reserve + Res07 : Bool // Reserve + Res10 : Bool + Res11 : Bool + Res12 : Bool + Res13 : Bool + Res14 : Bool // Reserve + Res15 : Bool // Reserve + Res16 : Bool // Reserve + Res17 : Bool // Reserve + Rueckmld : Struct + RET_VAL_BLKMOV_Sync : Int // Rückmeldung nach BLKMOV-Aufruf + RET_VAL_DL_Weichen_Out : Byte // Rückmeldung nach DatenOut-Aufruf + RET_VAL_Hauptstrang_In : Byte // Rückmeldung nach Hauptstrangdaten-In-Aufruf + RET_VAL_TravelFIFO_In : Byte // Rückmeldung nach Aufruf + RET_VAL_TravelFIFO_Out : Byte // Rückmeldung nach Aufruf + RET_VAL_Teach_OUT : Byte // Rückmeldung bei Datenlisten-Zugriff + RET_VAL_Teach_IN : Byte // Rückmeldung bei Datenlisten-Zugriff + Error : "UErrStartSync" + BT_ausgewertet : Bool // BT wurde schon ausgewertet + TeachPunkt : Int // Punkt zum Ein-Teachen + Refpunkt_ausgewertet : Bool // Referenzpunkt ausgewertet + Refpunkt_ok : Bool // Referenzpunkt erkannt + Teachpunkt_ausgewertet : Bool // Teachpunkt ausgewertet + Reset : Bool // Bereich + FIFO resetten + Ink_Flag : Bool // Laufflag bei Speicherung + Ref_Flag : Bool // Lauf-Flag bei Ref-Inkremente + Teach_Flag : Bool // Lauf-Flag bei Teach-Inkremente + Ende_Flag : Bool // Lauf-Flag bei Synchron-Ende (MT) + FIFO_Flag : Bool // Lauf-Flag bei FIFO-Wechsel (sonst Err) + Stop : Bool // Rein-Separator stoppen + Max_raus : Bool // Max_Wert wurde schon übertragen + InkZelle : DInt // Inkzelle: Sync-Sensor dauernd aktiv + Ref_Ink : DInt // Inkremente bei Referenzpunkt + Teach_Ink : DInt // Inkremente bei Teachpunkt + Ende_Ink : DInt // Inkremente bei Synchron-Ende (MT) + FIFO_Ink : DInt // Inkremente bei FIFO-Wechsel (sonst Err) + Daten : "UBT_Daten" + Max_Wert : DInt // Maximal erlaubter Zählwert + Lauf_Flag : Bool // Zähl-Lauf mit Flag ist aktiv + Flag_Lauf_fertig : Bool // Flag-Lauf wurde beendet + Ohne_Lauf_fertig : Bool // Ohne Flag-Lauf wurde beendet + Ink_Wert : DInt // Aktuelle Inkrementalwert + Abstands_Ink : DInt // Abstands-Inkremente nach Teachen + Sich_Ink : DInt // Übrige Inks, bevor dann gestoppt wird ! + Reserve : Array[1..1] of Int + Temp: + Quelle : Any // Zeiger, wo Rein-Daten sind + Adresse0 : DInt // Für indirekte Adressierung (Offset 0) + Adresse2 : DInt // Für indirekte Adressierung (Offset 0) + Adresse4 : DInt // Für indirekte Adressierung (Offset 4) + Adresse8 : DInt // Für indirekte Adressierung (Offset 8) + Abwurf_DB : Int // Abwurf-DB für 1.Rückschaltung + HaupstranglistenDB : Int // Aktueller Hauptstranglisten-DB + Parameter : Word // Parameter + sB_BT_da : Bool // Sensor BT ist an Sychronisierstelle + ZSW2_ENC : Word + G1_ZSW : Word + G1_XIST1 : DWord + G1_XIST2 : DWord // Positionswert 2, Sensor 1 + STW2_ENC : Word // Steuerwort 2, Encoder + G1_STW : Word // Steuerwort, Sensor 1 + tABS_Resolution : DInt + tInk_Wert : DInt // Aktueller Zählerwert + tSpeicherung : DInt // Speicherung des aktuellen Zählerwerts (für Neustart) + tLastSingelturn_Wert : DInt // Speicherung des letzten Zählerwerts (für Neustart) + tLauf_Flag : Bool // Zähl-Lauf mit Flag ist aktiv + tFlag_Lauf_fertig : Bool // Flag-Lauf wurde beendet + tOhne_Lauf_fertig : Bool // Ohne Flag-Lauf wurde beendet + tNull_laden : Bool // Zähler mit 0000 laden + tQuit : Bool + Constant: + +--- NW 1: Eingangsvariablen einlesen --- + L Sync_Nr + + A B_BT_da + = sB_BT_da + + +--- NW 2: Parameter-Übergabe --- + L Sync_Nr + + L "MW178" // Einsprung Weichen-DL + T Para.Weichen_DL_DB // vor Aufruf übergeben! + L 0 + T Para.Weichen_DL_DW + + +--- NW 3: Gesamt: Out-Bits zum Zurücksetzen / temp --- + AN Dyn.Max_raus // Max_Wert wurde schon übertragen + O Dyn.BT_ausgewertet // BT wurde schon ausgewertet + S Antrieb_start // Kreiselantrieb starten + + + A ErrQuit + O Dyn.Reset // Bereich + FIFO resetten + = tQuit // Für ABS-Modul + + +--- NW 4: Reset --- +// Reset oder Tastendruck: + A ErrQuit + A "Hauptstrang_leer" // Keine Haupstrangdaten vorhanden -> Verklemm-Errors löschen + A Dyn.Error.TravelFIFO_belegt // Travel-FIFO bleibt belegt + S Dyn.Reset // Bereich + FIFO resetten + + A "Hauptstrang_leer" // Keine Haupstrangdaten vorhanden -> Verklemm-Errors löschen + A Dyn.Error.TravelFIFO_leer // keine Daten im Travel-FIFO eingetragen (Auto-Reset!) + AN Dyn.BT_ausgewertet // BT wurde schon ausgewertet + S Dyn.Reset // Bereich + FIFO resetten + + AN Dyn.Reset // Bereich + FIFO resetten + JC en02 + + SET + R Dyn.Reset // Bereich + FIFO resetten + R Dyn.Error.SyncPkt_DL_Err // Sync-Punkt-Datenliste fehlerhaft + R Dyn.Error.Undef_SyncPkt // undefinierter Synchronpunkt + R Dyn.Error.BLKMov // Fehler bei Block kopieren + R Dyn.Error.Sync_Sensor_aktiv // Sync-Sensor dauernd aktiv + R Dyn.Error.TravelFIFO_Err // Travel-FIFO fehlerhaft + R Dyn.Error.TravelFIFO_leer // keine Daten im Travel-FIFO eingetragen + R Dyn.Error.TravelFIFO_belegt // Travel-FIFO bleibt belegt + R Dyn.Error.Hauptstrangliste_Err // Hauptstrangliste fehlerhaft + R Dyn.Error.Hauptstrangliste_voll // Hauptstrangliste ist voll + R Dyn.Error.Inkgeber_Err // Übergabeliste fehlerhaft + R Dyn.Error.Keine_Hauptstrangliste // Keine Hauptstrangliste zum Eintragen angegeben + R Dyn.Error.Keine_TeachPktdaten // Teach-Punkt in Datenliste nicht vorhanden ! + R Dyn.Error.TeachPkt_Datenliste_Err // Teachdatenliste fehlerhaft + R Dyn.Error.Kein_Parameter + R Dyn.Error.Err_Parameter + R Dyn.Error.Inkrementalgeber // Inkrementalgeberwert ohne Änderung + + SET + R Dyn.BT_ausgewertet // BT wurde schon ausgewertet + R Dyn.Status.TeachModus_Aktiv // Teach-Modus ist aktiv + R Dyn.Stop // Rein-Separator stoppen + + L 0 + T Dyn.InkZelle // Inkzelle: Sync-Sensor dauernd aktiv + L 0 + T Dyn.FIFO_Ink // Inkremente bei FIFO-Wechsel (sonst Err) + T Sich_Ink // Übrige Inks, bevor dann gestoopt wird ! + + L 0 // Damit statische Werte neu aus Datenbank geholt werden ! + T SyncPkt.Sync_Nr // Nummer des Sync-Punktes + +// Travel-FIFO zurücksetzen: +CALL FC "FifoReset" (SSDB:=SyncPkt.TravelFIFO_DB, SSDW:=SyncPkt.TravelFIFO_DW, PARA:=WORD#16#0000, RE_VAL:="MB199") // normaler FIFO + + L "MB199" + T Dyn.Rueckmld.RET_VAL_TravelFIFO_Out + + L 0 // Aufruf mit Fehler ? + <>I // Ja ! + = Dyn.Error.TravelFIFO_Err // Error bei FIFO-Zugriff + +// Hauptstrang-Daten zurücksetzen: +CALL FC "DatenResetSort" (SSDB:=SyncPkt.Hauptstrang_DL_DB, SSDW:=SyncPkt.Hauptstrang_DL_DW, RE_VAL:="MB198") + + L SyncPkt.Hauptstrang_DL_DB + + 1 + T HaupstranglistenDB + +CALL FC "DatenResetSort" (SSDB:=HaupstranglistenDB, SSDW:=SyncPkt.Hauptstrang_DL_DW, RE_VAL:="MB199") + + L "MB198" + L "MB199" + L 0 // Aufruf mit Fehler ? + <>I // Ja ! + = Dyn.Error.Hauptstrangliste_Err // Hauptstrang-DL fehlerhaft + + BEU + +en02: NOP 0 + + +--- NW 5: Störungen nach Außen übergeben --- + L 0 + T "MW200" + + A Dyn.Error.SyncPkt_DL_Err // Sync-Punkt-Datenliste fehlerhaft + = "M200.0" + A Dyn.Error.Undef_SyncPkt // undefinierter Synchronpunkt + = "M200.1" + A Dyn.Error.BLKMov // Fehler bei Block kopieren + = "M200.2" + A Dyn.Error.Sync_Sensor_aktiv // Sync-Sensor dauernd aktiv + = "M200.3" + A Dyn.Error.TravelFIFO_Err // Travel-FIFO fehlerhaft + = "M200.4" + A Dyn.Error.TravelFIFO_leer // keine Daten im Travel-FIFO eingetragen + = "M200.5" + A Dyn.Error.TravelFIFO_belegt // Travel-FIFO bleibt belegt + = "M200.6" + A Dyn.Error.Hauptstrangliste_Err // Hauptstrangliste fehlerhaft + = "M200.7" + A Dyn.Error.Hauptstrangliste_voll // Hauptstrangliste ist voll + = "M201.0" + A Dyn.Error.Inkgeber_Err // Inkrementalgeber meldet Störung + = "M201.1" + A Dyn.Error.Keine_Hauptstrangliste // Keine Hauptstrangliste zum Eintragen angegeben + = "M201.2" + A Dyn.Error.Keine_TeachPktdaten // Teach-Punkt in Datenliste nicht vorhanden ! + = "M201.3" + A Dyn.Error.TeachPkt_Datenliste_Err // Teachdatenliste fehlerhaft + = "M201.4" + A Dyn.Error.Kein_Parameter + = "M201.5" + A Dyn.Error.Err_Parameter + = "M201.6" + A Dyn.Error.Inkrementalgeber // Inkrementalgeberwert ohne Änderung + = "M201.7" + + L "MW200" + T Error // Schnittstelle nach Außen + +// Anzeige Start n. Störung aktivieren: + A "Hauptstrang_leer" // Keine Haupstrangdaten vorhanden -> Verklemm-Errors löschen + A( + O Dyn.Error.TravelFIFO_leer // keine Daten im Travel-FIFO eingetragen + O Dyn.Error.TravelFIFO_belegt // Travel-FIFO bleibt belegt + ) + O Dyn.Error.Sync_Sensor_aktiv // Sync-Sensor dauernd aktiv + O Dyn.Error.Inkrementalgeber // Inkrementalgeberwert ohne Änderung + S hStOk + + +--- NW 6: Statische Sync-Parameter holen --- + L SyncPkt.Sync_Nr // Nummer des Synchron-Puntes + L Sync_Nr // Aufruf-Parameter + ==I // Identisch ? + R Dyn.Error.SyncPkt_DL_Err // Sync-Punkt-Datenliste fehlerhaft + R Dyn.Error.Undef_SyncPkt // undefinierter Synchronpunkt + JC en03 // Ja ! + + T "MW200" // Search-Daten + +CALL FC "DatenOut" (SSDB:=Para.Weichen_DL_DB, SSDW:=Para.Weichen_DL_DW, PARA:=WORD#16#0000, SEARCHDATEN:=P#M200.0, RE_VAL:="MB199", OUTDATEN:=P#M220.0, Position:="MW196") + + L "MB199" + T Dyn.Rueckmld.RET_VAL_DL_Weichen_Out // Rückmeldung bei Datenbank-Zugriff (Gefälle-DL) + + JBI G_Ok + + A "M199.0" + = Dyn.Error.SyncPkt_DL_Err // Sync-Punkt-Datenliste fehlerhaft + BEC + + SET + S Dyn.Error.Undef_SyncPkt // undefinierter Synchronpunkt + + BEU + +// Kennung + Datenbytes +G_Ok: SET + R Dyn.Error.SyncPkt_DL_Err // Sync-Punkt-Datenliste fehlerhaft + R Dyn.Error.Undef_SyncPkt // undefinierter Synchronpunkt + + L 16#1004 // Kennung 10 + Word=04 + T LW0 // Any-Kennung, Datentyp + L 40 // Datenwords speichern + T LW2 // Wiederholungen + +// Quelle-Pointer erzeugen: + L 0 // Bei Merker = 0 ! + T LW4 // DB_Nummer + L 220 // Adresse + SLD 3 + L 16#8300_0000 // Kennung: Merker + OD + T LD6 // Kennung, Adresse + +CALL SYS "BLKMOV" (SRCBLK:=Quelle, RET_VAL:=Dyn.Rueckmld.RET_VAL_BLKMOV_Sync, DSTBLK:=SyncPkt) // Datenliste-Daten speichern | #Ziel + + L Dyn.Rueckmld.RET_VAL_BLKMOV_Sync // Rückmeldung + L 0 // Fehler vorhanden ? + <>I // Ja ! + = Dyn.Error.BLKMov // Error bei Block kopieren + BEC + + L SyncPkt.Sync_Typ // Synchron-Punkt-Typ = 177 (StartSync) + L 177 // Dieser Aufruf-FB ? + ==I // Ja ! + JC en03 + + SET + S Dyn.Error.Undef_SyncPkt // undefinierter Synchronpunkt + + L 0 // Synchronpunkt ungültig ! + T SyncPkt.Sync_Nr // Nummer des Synchron-Puntes + + BEU + +en03: NOP 0 + + +--- NW 7: Störungen quittieren --- + AN ErrQuit + JC en05 + + SET + R Dyn.Error.Keine_TeachPktdaten // Teach-Punkt in Datenliste nicht vorhanden ! + R Dyn.Error.Hauptstrangliste_voll // Hauptstrangliste ist voll + R Dyn.Error.Keine_Hauptstrangliste // Keine Hauptstrangliste zum Eintragen angegeben + R Dyn.Error.TravelFIFO_leer // keine Daten im Travel-FIFO eingetragen + R Dyn.Error.Inkrementalgeber // Inkrementalgeberwert ohne Änderung + +// Kann nur über Reset zurückgesetzt werden: +// R #Dyn.Error.SyncPkt_DL_Err //Sync-Punkt-Datenliste fehlerhaft +// R #Dyn.Error.Undef_SyncPkt //undefinierter Synchronpunkt +// R #Dyn.Error.BLKMov //Fehler bei Block kopieren +// R #Dyn.Error.Sync_Sensor_aktiv //Sync-Sensor dauernd aktiv +// R #Dyn.Error.TravelFIFO //Travel-FIFO fehlerhaft +// R #Dyn.Error.TravelFIFO_belegt //Travel-FIFO bleibt belegt +// R #Dyn.Error.Hauptstrangliste_Err //Hauptstrangliste fehlerhaft +// R #Dyn.Error.Uebergabeliste_Err //Übergabeliste fehlerhaft +// R #Dyn.Error.TeachPkt_Datenliste_Err //Teachdatenliste fehlerhaft +// R #Dyn.Error.Keine_TeachPktdaten //Keine Teachdaten in Datenliste vorhanden ! +// R #Dyn.Error.Err16 + +// werden weiter unten quittiert: +// R #Dyn.Error.Sync_Sensor_aktiv //Sync-Sensor dauernd aktiv + +en05: NOP 0 + + +--- NW 8: Auswahl der Wegerfassung --- + L SyncPkt.Ink_DB // Zähler-DB + L 0 // Sinnvolle Angabe ? + <=I // Nein ! + S Dyn.Error.Kein_Parameter // Kein Parameter zur Wegerfassung definiert + JC OK + + A SyncPkt.Parameter.InkSim // Inkrementalgeber simulieren + JC ISim + + A SyncPkt.Parameter.ET200 // Inkremental-Geber mit Zähler-Baugruppe (ET200) + JC ET20 + + A SyncPkt.Parameter.Sick_ABS_single + JC ABS // Inkremental-Geber mit Zähler-Baugruppe (FM350/FM450) + + JU OK + + +--- NW 9: Inkremental-Geber über 10ms-Takte simulieren und Antrieb aktiv --- +ISim: L SyncPkt.Ink_DB + T "MW200" + OPN DB["MW200"] // Zähler-DB öffnen + + SET + R DBX74.1 // Überlauf + R DBX74.4 // Flag-Lauf wurde beendet + R DBX74.5 // Ohne Flag-Lauf wurde beendet + + AN Antrieb_aktiv // Antrieb ist aktiv + JC chk // weitere Kontrollen + + L "MW4" // Anzahl der 10ms-Takte (letzter Zyklus) + ITD + L DBD80 + +D // 10ms-Takte dazuaddieren + T DBD80 + + JU chk // weitere Kontrollen + +// Zähler auf 000 setzen ?: +chk: AN DBX74.6 // Zähler Zero-Load + JC new + + SET + R DBX74.6 + + L 0 + T DBD70 // Zählerwert zum Setzen + + JU load + +// Zähler neu setzen ?: +new: A DBX74.0 // Zähler Neustart + R DBX74.0 + JC load + +// Zähler-Überlauf ?: + L DBD80 // Aktueller Zählerwert + A DBX75.0 // Speicherung einfrieren + JC nos + + T DBD70 // Speicherung + +nos: L DBD76 // Max. Wert erreicht ? + <=D // Nein ! + JC OK + + -D // Restwert als Startwert nehmen ! + T DBD70 // Zählerwert zum Setzen + + AN DBX74.3 // Umschaltung Zähl-Lauf ohne-mit-ohne Flag + = DBX74.5 // Ohne Flag-Lauf wurde beendet + A DBX74.3 // Umschaltung Zähl-Lauf ohne-mit-ohne Flag + = DBX74.4 // Flag-Lauf wurde beendet + + AN DBX74.3 // Umschaltung Zähl-Lauf ohne-mit-ohne Flag + = DBX74.3 + + SET + S DBX74.1 // Überlauf + +load: L SyncPkt.Ink_DB + T "MW200" + OPN DB["MW200"] // Zähler-DB öffnen + + L DBD70 // Zählerwert zum Setzen + T DBD80 + + JU OK + + +--- NW 10: Inkremental-Geber mit Zähler-Baugruppe (ET200) --- +ET20: L SyncPkt.Ink_DB + T "MW200" + OPN DB["MW200"] // Zähler-DB öffnen + + L SyncPkt.Ink_HW_Adress // Hardware-Adresse der ET200-Zählerbaugruppe + L 0 // Adresse sinnvoll ? (also ohne Zählerbaugruppe !) + <=I // Nein ! + S Dyn.Error.Err_Parameter // Parameter für ET200 fehlerhaft + JC OK + +// Zählerwert einlesen: + L SyncPkt.Ink_HW_Adress // Hardware-Adresse der ET200-Zählerbaugruppe + SLW 3 // Pointer erzeugen + T Adresse0 + L PeripheryInputD [Adresse0] + T DBD80 + + L SyncPkt.Ink_HW_Adress // Hardware-Adresse der ET200-Zählerbaugruppe + + 4 // Offset 4 DWs + SLW 3 // Pointer erzeugen + T Adresse4 + L PeripheryInputD [Adresse4] + T DBD4 + + L SyncPkt.Ink_HW_Adress // Hardware-Adresse der ET200-Zählerbaugruppe + + 8 + SLW 3 // Pointer erzeugen + T Adresse8 + L PeripheryInputD [Adresse8] + T DBD8 // eigentlich doppelt + + L DBD80 // Aktueller Zählerwert + L DBD70 // Speicherung (Zählerwert letzter Zyklus) + <>D // ist verändert ! + JC Ok_I + + AN Antrieb_aktiv // Antrieb ist aktiv + O ErrQuit // Ablaufstörung quittieren + JC X_I + + L SAVE.Ink_ohne_Zeit // Zeit Inkremntalgeberwert ohne Änderung [10ms] + L "MW4" // Anzahl der 10ms-Takte (letzter Zyklus) + +I // aufaddieren + T SAVE.Ink_ohne_Zeit // Zeit Inkremntalgeberwert ohne Änderung [10ms] + + L 50 // 500ms ohne Änderung ? + >=I // Ja ! + S Dyn.Error.Inkrementalgeber // Inkrementalgeberwert ohne Änderung + + JU X_I + +Ok_I: L 0 + T SAVE.Ink_ohne_Zeit // Zeit Inkremntalgeberwert ohne Änderung [10ms] + +// Software-Gate öffnen: +X_I: SET + S DBX16.0 // SW-Gate öffnen + +// Zähler setzen läuft: + A DBX74.2 // Zähler setzen + O DBX74.7 // Zähler laden ist aktiv + R DBX74.5 // Ohne Flag-Lauf wurde beendet + R DBX74.4 // Flag-Lauf wurde beendet + JC LOAD_Mig + +// Zähler auf 000 setzen ?: + L 0 + T DBD12 // Zählerwert zum Setzen + + A DBX74.6 // Zähler Zero-Load + S DBX74.2 // Zähler setzen + JC LOAD_Mig + +// Zähler neu setzen ?: + L DBD70 // Speicherung + T DBD12 // Zählerwert zum Setzen + + A DBX74.0 // Zähler Neustart + S DBX74.2 // Zähler setzen + JC LOAD_Mig + +// Zähler-Überlauf ?: + L DBD80 // Aktueller Zählerwert + L DBD76 // Max. Wert erreicht ? + <=D // Nein ! + JC Ok_Mig + + -D // Restwert als Startwert nehmen ! + T DBD12 // Zählerwert zum Setzen + + AN DBX74.3 // Umschaltung Zähl-Lauf ohne-mit-ohne Flag + = DBX74.5 // Ohne Flag-Lauf wurde beendet + A DBX74.3 // Umschaltung Zähl-Lauf ohne-mit-ohne Flag + = DBX74.4 // Flag-Lauf wurde beendet + + AN DBX74.3 // Umschaltung Zähl-Lauf ohne-mit-ohne Flag + = DBX74.3 + + SET + S DBX74.1 // Überlauf + S DBX74.2 // Zähler setzen + +LOAD_Mig: A DBX74.2 // Zähler setzen + = DBX17.0 // Load_Val + JCN Ok_Mig + +// Daten an Zähler senden: + L DBD12 + T PeripheryOutputD [Adresse0] + +Ok_Mig: L DBW16 + T PeripheryOutputW [Adresse4] + +// Zählerstatus einlesen: + L SyncPkt.Ink_HW_Adress // Hardware-Adresse der ET200-Zählerbaugruppe + + 4 // Offset 4 DWs + SLW 3 // Pointer erzeugen + T Adresse4 + L PeripheryInputD [Adresse4] + T DBD4 + + L SyncPkt.Ink_DB + T "MW200" + OPN DB["MW200"] // Zähler-DB öffnen + + A DBX74.2 // Zähler setzen + A DBX4.0 // Zähler wird geladen (Modul-Rückmeldung) + S DBX74.7 // Zähler laden ist aktiv + R DBX74.2 // Zähler setzen + + A DBX74.7 // Zähler laden ist aktiv + AN DBX4.0 // Zähler wird geladen (Modul-Rückmeldung) + R DBX74.7 // Zähler laden ist aktiv + R DBX74.6 // Zähler Zero-Load + R DBX74.0 // Zähler Neustart + R DBX74.1 // Überlauf + + A DBX74.2 // Zähler setzen + O DBX74.7 // Zähler laden ist aktiv + O DBX4.0 // Zähler wird geladen (Modul-Rückmeldung) + JC Fake + + L DBD80 // Aktueller Zählerwert + L 0 // Sinnvoller Wert ? + <=D // Nein ! + O DBX75.0 // Speicherung einfrieren + JC OK + + L DBD80 // Aktueller Zählerwert + T DBD70 // Speicherung + + JU OK + +Fake: L SyncPkt.Ink_DB + T "MW200" + OPN DB["MW200"] // Zähler-DB öffnen + + L DBD12 // Während Neusetzen Loadwert übergeben + T DBD80 + + JU OK + + +--- NW 11: Inkremental-Geber mit Zähler-Baugruppe (ABS single) --- +ABS: L SyncPkt.Ink_DB + T "MW200" + OPN DB["MW200"] // Zähler-DB öffnen + + L SyncPkt.Ink_HW_Adress // Hardware-Adresse der ET200-Zählerbaugruppe + L 0 // Adresse sinnvoll ? (also ohne Zählerbaugruppe !) + <=I // Nein ! + S Dyn.Error.Err_Parameter // Parameter für ET200 fehlerhaft + JC OK + +// Zählerwert einlesen: + L SyncPkt.Ink_HW_Adress // Hardware-Adresse der ET200-Zählerbaugruppe + SLW 3 // Pointer erzeugen + T Adresse0 + + L IW [Adresse0] + T DBW0 + T ZSW2_ENC + + L SyncPkt.Ink_HW_Adress // Hardware-Adresse der ET200-Zählerbaugruppe + + 2 // Offset 2 DWs + SLW 3 // Pointer erzeugen + T Adresse2 + L IW [Adresse2] + T DBW0 + T G1_ZSW + + L SyncPkt.Ink_HW_Adress // Hardware-Adresse der Zählerbaugruppe + + 4 // Offset 4 DWs + SLW 3 // Pointer erzeugen + T Adresse4 + + L ID [Adresse4] + T DBD4 + T G1_XIST1 + + L SyncPkt.Ink_HW_Adress // Hardware-Adresse der Zählerbaugruppe + + 8 + SLW 3 // Pointer erzeugen + T Adresse8 + L ID [Adresse8] + T DBD8 + T G1_XIST2 + +// Gespeicherte Werte einlesen: + L DBD80 + T tInk_Wert + + L DBD70 + T tSpeicherung + + L DBD16 + T tLastSingelturn_Wert + + L DBD20 + T tABS_Resolution + + A DBX74.3 + = tLauf_Flag + A DBX74.4 + = tFlag_Lauf_fertig + A DBX74.5 + = tOhne_Lauf_fertig + A DBX74.6 + = tNull_laden + +CALL FC "Sick_ABS_single" (ZSW2_ENC:=ZSW2_ENC, G1_ZSW:=G1_ZSW, G1_XIST1:=G1_XIST1, G1_XIST2:=G1_XIST2, Resolution:=tABS_Resolution, MaxValue:=Max_Wert, Error_Quit:=tQuit, STW2_ENC:=STW2_ENC, G1_STW:=G1_STW, Inkgeber_Err:=Dyn.Error.Inkgeber_Err, Ink_Wert:=tInk_Wert, Last_Singelturn_Wert:=tLastSingelturn_Wert, Lauf_Flag:=tLauf_Flag, Flag_Lauf_fertig:=tFlag_Lauf_fertig, Ohne_Lauf_fertig:=tOhne_Lauf_fertig, Null_laden:=tNull_laden) + +// Steuerwerte übergeben: + L SyncPkt.Ink_DB + T "MW200" + OPN DB["MW200"] // Zähler-DB öffnen + + L STW2_ENC + T PeripheryOutputW [Adresse0] + T DBW12 + + L G1_STW + T PeripheryOutputW [Adresse2] + T DBW14 + +// Werte speichern: + L tInk_Wert + T DBD80 + T DBD70 + + L tLastSingelturn_Wert + T DBD16 + + A tLauf_Flag + = DBX74.3 + A tFlag_Lauf_fertig + = DBX74.4 + A tOhne_Lauf_fertig + = DBX74.5 + A tNull_laden + = DBX74.6 + +// Ändert sich der Inkwert ?: + L DBD80 // Aktueller Zählerwert + L tSpeicherung // Speicherung (Zählerwert letzter Zyklus) + <>D // ist verändert ! + JC ok_I_Mig + + AN Antrieb_aktiv // Antrieb ist aktiv + O ErrQuit // Ablaufstörung quittieren + JC OK + + L SAVE.Ink_ohne_Zeit // Zeit Inkremntalgeberwert ohne Änderung [10ms] + L "MW4" // Anzahl der 10ms-Takte (letzter Zyklus) + +I // aufaddieren + T SAVE.Ink_ohne_Zeit // Zeit Inkremntalgeberwert ohne Änderung [10ms] + + L 50 // 500ms ohne Änderung ? + >=I // Ja ! + S Dyn.Error.Inkrementalgeber // Inkrementalgeberwert ohne Änderung + + JU OK + +ok_I_Mig: L 0 + T SAVE.Ink_ohne_Zeit // Zeit Inkremntalgeberwert ohne Änderung [10ms] + + +--- NW 12: Inkwerte holen --- +// Daten des Inktremental-Gebers übergeben: +OK: L SyncPkt.Ink_DB + T "MW200" + OPN DB["MW200"] // Zähler-DB öffnen + L DBD80 + T Ink_Wert + L DBD76 + T Max_Wert + A DBX74.3 + = Lauf_Flag + A DBX74.4 + = Flag_Lauf_fertig + A DBX74.5 + = Ohne_Lauf_fertig + + +--- NW 13: Zusatz-DWs an Travel-FIFO übergeben --- + L SyncPkt.TravelFIFO_DB // Travel-FIFO: DB-Nr. + L 0 // sinnvolle Angabe ? + <=I // Nein ! + O( + L SyncPkt.TravelFIFO_DW // Einfahr-FIFO: DW-Nr. + L 0 // Sinnvolle Angabe ? + D + JCN en04_Mig + + -D // Restwert übernehmen + T Dyn.Ende_Ink // Inkremente bei Synchron-Ende (MT) + + AN Lauf_Flag // Zähl-Lauf mit Flag ist aktiv + = Dyn.Ende_Flag // Lauf-Flag bei Synchron-Ende (MT) + +en04_Mig: NOP 0 + + +--- NW 16: Error: Sync-Sensor dauernd aktiv --- + AN sB_BT_da // Sensor Sync ist an Sychronisierstelle + O + A Lauf_Flag // Neuspeicherung nötig + AN Dyn.Ink_Flag + O + AN Lauf_Flag // Neuspeicherung nötig + A Dyn.Ink_Flag + O ErrQuit // Störung quittieren + O Dyn.Reset // Bereich resetten + JC W030 + + A Dyn.Error.Sync_Sensor_aktiv // Sync-Sensor dauernd aktiv + JC En03_Mig + + L Dyn.InkZelle // Speicherung Sensor frei + L 0 // Speicherung vorhanden ? + ==D // Nein ! + JC En03_Mig + + L Ink_Wert // Aktueller Ink-Wert + L Dyn.InkZelle // Speicherung Sensor frei + -D // Differenz bilden + L 10 // davon 10% + /D + L SyncPkt.Entprellung_B_Sync // Falls also 10mal Entprellwert, dann + >=D + S Dyn.Error.Sync_Sensor_aktiv // Sync-Sensor dauernd aktiv + + JU En03_Mig + +W030: L Ink_Wert // Aktueller Ink-Wert + T Dyn.InkZelle // Speicherung Sensor frei + A Lauf_Flag + = Dyn.Ink_Flag // Speicherung Laufflag + SET + R Dyn.Error.Sync_Sensor_aktiv // Sync-Sensor dauernd aktiv + +En03_Mig: NOP 0 + + +--- NW 17: Error: Travel-FIFO bleibt voll --- + L Dyn.FIFO_Ink // Inkremente bei FIFO-Wechsel (sonst Stop/Err) + L 0 // sinnvolle Angabe ? + <=D // Nein ! + O Dyn.Status.TeachModus_Aktiv // Teach-Modus ist aktiv + O Dyn.Error.TravelFIFO_belegt // Travel-FIFO bleibt belegt + JC w061 + + A Dyn.FIFO_Flag // Flag bei FIFO-Wechsel (sonst Stop/Err) + A Flag_Lauf_fertig // Flag-Lauf wurde beendet + O + AN Dyn.FIFO_Flag // Flag bei FIFO-Wechsel (sonst Stop/Err) + A Ohne_Lauf_fertig // Flag-Lauf wurde beendet + JC w060 // beim Ende des Lauf sind Inkremente uninteressant + + A Dyn.FIFO_Flag // Flag bei FIFO-Wechsel (sonst Stop/Err) + A Lauf_Flag // Zähl-Lauf mit Flag ist aktiv + O + AN Dyn.FIFO_Flag // Flag bei FIFO-Wechsel (sonst Stop/Err) + AN Lauf_Flag // Zähl-Lauf mit Flag ist aktiv + JCN En06 + + L Ink_Wert // Aktuelle Inkrementalwert + L Dyn.FIFO_Ink // Inkremente bei FIFO-Wechsel (sonst Stop/Err) + Sync-Sensor (in Inkremente) + L 0 // sinnvoller Wert ? + >D // Nein ! + S Dyn.Error.TravelFIFO_belegt // Travel-FIFO bleibt belegt + +w061: L 0 + T Dyn.FIFO_Ink // Inkremente bei FIFO-Wechsel (sonst Err) + SET + R Dyn.FIFO_Flag // Flag bei FIFO-Wechsel (sonst Err) + +// Kontrolle, ob Daten im Travel-FIFO vorhanden: +CALL FC "FifoOut" (SSDB:=SyncPkt.TravelFIFO_DB, SSDW:=SyncPkt.TravelFIFO_DW, PARA:=WORD#16#0000, OUTDATEN:=P#M220.0, RE_VAL:="MB199") // Daten lesen + + L "MB199" + L 0 // Aufruf mit Fehler ? + ==I // Nein ! + R Dyn.Error.TravelFIFO_Err // Travel-FIFO fehlerhaft + JC w062 + + A "M199.2" // FIFO ist leer + R Dyn.Error.TravelFIFO_Err // Travel-FIFO fehlerhaft + R Dyn.Stop // Rein-Separator stoppen + R Dyn.Error.TravelFIFO_belegt // Travel-FIFO bleibt belegt + JC En06 + + SET + S Dyn.Error.TravelFIFO_Err // Travel-FIFO fehlerhaft + + JU En06 + +// Inkremente speichern, bei denen spätestens FIFO-Zugriff erfolgen muss (sonst Stop)! +w062: L SyncPkt.Abstand_StartSep // Abstand Start-Separator <-> Sync-Sensor (in Inkremente) + L 0 // sinnvoller Wert ? + <=D // Nein ! + JC En06 + + CAC +// / L MD 220 //Ink-Wert des nächsten BTs beim Vereinzeln + L Ink_Wert // Aktueller Ink-Wert + +D + T Dyn.FIFO_Ink // Inkremente bei FIFO-Wechsel (sonst Stop) +// / U M 224.0 //Lauf-Flag des nächsten BTs beim Vereinzeln + A Lauf_Flag + = Dyn.FIFO_Flag // Lauf-Flag bei FIFO-Wechsel (sonst Stop) + L Max_Wert // Maximal erlaubter Zählwert + >D + JCN En06 + + -D // Restwert übernehmen + T Dyn.FIFO_Ink // Inkremente bei FIFO-Wechsel (sonst Stop) + + AN "M224.0" // Lauf-Flag des nächsten BTs beim Vereinzeln (unvertieren) + = Dyn.FIFO_Flag // Lauf-Flag bei FIFO-Wechsel (sonst Stop) + + JU En06 + +// Inkremente speichern, bei denen spätestens FIFO leer (sonst Err) +w063: L SyncPkt.Abstand_StartSep // Abstand Start-Separator <-> Sync-Sensor (in Inkremente) + L Ink_Wert // Aktueller Ink-Wert + +D + T Dyn.FIFO_Ink // Inkremente bei FIFO-Wechsel (sonst Err) + A Lauf_Flag + = Dyn.FIFO_Flag // Lauf-Flag bei FIFO-Wechsel (sonst Err) + L Max_Wert // Maximal erlaubter Zählwert + >D + JCN En06 + + -D // Restwert übernehmen + T Dyn.FIFO_Ink // Inkremente bei FIFO-Wechsel (sonst Err) + + AN Lauf_Flag // Zähl-Lauf mit Flag ist aktiv + = Dyn.FIFO_Flag // Lauf-Flag bei FIFO-Wechsel (sonst Err) + +En06: NOP 0 + + +--- NW 18: Sync-Sensor ist aktiv --- + A sB_BT_da // BT ist an Sychronisierstelle + A Antrieb_aktiv // /bei H&M + AN Dyn.BT_ausgewertet // BT wurde schon ausgewertet + AN Dyn.Error.Sync_Sensor_aktiv // Sync-Sensor dauernd aktiv + AN Dyn.Status.TeachModus_Aktiv // Teach-Modus ist aktiv + S Dyn.BT_ausgewertet // BT wurde schon ausgewertet + JC Sync + + JU Teac + + +--- NW 19: Daten aus Travel-FIFO holen --- +Sync: CALL FC "FifoOut" (SSDB:=SyncPkt.TravelFIFO_DB, SSDW:=SyncPkt.TravelFIFO_DW, PARA:=WORD#16#E100, OUTDATEN:=Daten, RE_VAL:="MB199") // Daten lesen + austragen + + L "MB199" + T Dyn.Rueckmld.RET_VAL_TravelFIFO_Out + L 0 // Aufruf mit Fehler ? + ==I // Nein ! + R Dyn.Error.TravelFIFO_leer // keine Daten im Travel-FIFO eingetragen + JC X081 + + A "M199.2" // FIFO ist leer + S Dyn.Error.TravelFIFO_leer // keine Daten im Travel-FIFO eingetragen + JC X080 + + SET + S Dyn.Error.TravelFIFO_Err // Travel-FIFO fehlerhaft + +X080: JU En18 // Keine Reaktion ist am Besten ! + + L -1 // Null-Daten übergeben + T Daten.Sort_Info.Teil_IDX + L -1 // in nächsten Bereich fahren + T Daten.Sort_Info.Teil_Ziel + + JU X082 + + L Teil_IDX_Old // Letzte gültige Daten übergeben + T Daten.Sort_Info.Teil_IDX // nicht mehr, da nur Ärger! + L Teil_Ziel_Old + T Daten.Sort_Info.Teil_Ziel + + JU X082 + +// IDX und Ziel speichern (für Travel-FIFO leer,...) +X081: L Daten.Sort_Info.Teil_IDX + T Teil_IDX_Old + L Daten.Sort_Info.Teil_Ziel + T Teil_Ziel_Old + +// Travel-FIFO-Daten übergeben: +X082: A Dyn.Stop // Rein-Separator stoppen + JC X083 + + L Dyn.FIFO_Ink // Inkremente bei FIFO-Wechsel (sonst Stop) + L Ink_Wert // Aktueller Ink-Wert + -D + T Sich_Ink // Übrige Inks, bevor dann gestoppt wird ! + +X083: L 0 + T Dyn.FIFO_Ink // Inkremente bei FIFO-Wechsel (sonst Stop) + + A SyncPkt.Parameter.Kein_Sync_B + R Dyn.BT_ausgewertet // BT wurde schon ausgewertet + + +--- NW 20: Daten für Haupstrangdaten aufbereiten --- +// Sync-Info: + L Ink_Wert // Aktuelle Inkrementalwert (Start-Sync-Zähler) + T Daten.Start_Ink + + A Lauf_Flag // Start-Flag übergeben (für evtl. Fahrsync) + = Daten.Start_Flag + +// Sort-Info werden von Travel-FIFO übernommen + +// Quell_Info: + L SyncPkt.Sync_Nr // Identifikation des Synchron-Punktes + T Daten.Quelle + T Daten.letzte_Position + + +--- NW 21: Daten in Haupstrangdaten eintragen --- + L SyncPkt.Hauptstrang_DL_DB // Hauptstrang-DB + T HaupstranglistenDB // Aktueller Hauptstrang-DB + L 0 // angegeben ? + ==I // Nein ! + S Dyn.Error.Keine_Hauptstrangliste // Keine Hauptstrangliste zum Eintragen angegeben + JC En18 + + AN Lauf_Flag // Start-Flag + JC w180 + + L SyncPkt.Hauptstrang_DL_DB // Hauptstrang-DB + + 1 // DB+1 bei Flaglauf ! + T HaupstranglistenDB // Aktueller Hauptstrang-DB + +w180: CALL FC "DatenInSort" (SSDB:=HaupstranglistenDB, SSDW:=SyncPkt.Hauptstrang_DL_DW, INDATEN:=Daten, RE_VAL:="MB199") // Hauptstrangliste mit Lauf-Flag | Aktueller Hauptstrang-DB + + L "MB199" + T Dyn.Rueckmld.RET_VAL_Hauptstrang_In + + A "M199.2" // Hauptstrangliste ist voll + S Dyn.Error.Hauptstrangliste_voll // Hauptstrangliste ist voll + JC En18 + + A "M199.7" // Eintrag richtig erfolgt + JC En18 + + SET + S Dyn.Error.Hauptstrangliste_Err // Error bei Hauptstrang-Zugriff + +En18: NOP 0 + + +--- NW 22: Teach-Modus aktiv ? --- +Teac: L Dyn.TeachPunkt // Punkt zum Ein-Teachen + L 0 // bekannt ? + <>I // Ja ! + A Dyn.Status.TeachModus_Aktiv // Teach-Modus ist aktiv + JC en20 + + L 0 + T Dyn.Ref_Ink // Inkremente bei Referenzpunkt + T Dyn.Teach_Ink // Inkremente bei Teachpunkt + T Abstands_Ink // Abstands-Inkremente nach Teachen + + SET + R Dyn.Status.TeachModus_Aktiv // Teach-Modus ist aktiv + R Dyn.Ref_Flag // Lauf-Flag bei Ref-Inkremente + R Dyn.Teach_Flag // Lauf-Flag bei Teach-Inkremente + R Dyn.Refpunkt_ausgewertet // Referenzpunkt ausgewertet + R Dyn.Teachpunkt_ausgewertet // Teachpunkt ausgewertet + R Dyn.Refpunkt_ok // Referenzpunkt erkannt + + BEU + +en20: NOP 0 + + +--- NW 23: Ref-Inkremente speichern --- + AN B_RefPunkt // Sensor RefBT am Referenzpunkt erkannt + R Dyn.Refpunkt_ausgewertet // Referenzpunkt ausgewertet + + A B_RefPunkt // Sensor RefBT am Referenzpunkt erkannt + AN Dyn.Refpunkt_ausgewertet // Referenzpunkt ausgewertet + JCN en21 + + L Ink_Wert // Aktuelle Inkrementalwert + T Dyn.Ref_Ink // Inkremente bei Referenzpunkt + A Lauf_Flag + = Dyn.Ref_Flag // Lauf-Flag bei Ref-Inkremente + + SET + S Dyn.Refpunkt_ausgewertet // Referenzpunkt ausgewertet + S Dyn.Refpunkt_ok // Referenzpunkt erkannt + + L 0 + T Dyn.Teach_Ink // Inkremente bei Teachpunkt + T Abstands_Ink // Abstands-Inkremente nach Teachen + SET + R Dyn.Teachpunkt_ausgewertet // Teachpunkt ausgewertet + R Dyn.Teach_Flag // Lauf-Flag bei Teach-Inkremente + +en21: NOP 0 + + +--- NW 24: Teach-Inkremente speichern --- + AN B_TeachPunk // Sensor RefHaken am Teachpunkt erkannt + A Antrieb_aktiv // Antrieb aktiv + R Dyn.Teachpunkt_ausgewertet // Teachpunkt ausgewertet + + AN B_TeachPunk // Sensor RefHaken am Teachpunkt erkannt + O Dyn.Teachpunkt_ausgewertet // Teachpunkt ausgewertet + ON Dyn.Refpunkt_ok // Referenzpunkt erkannt + ON Antrieb_aktiv // Antrieb aktiv + BEC + + L Ink_Wert // Aktuelle Inkrementalwert + T Dyn.Teach_Ink // Inkremente bei Teachpunkt + A Lauf_Flag + = Dyn.Teach_Flag // Lauf-Flag bei Teach-Inkremente + + SET + S Dyn.Teachpunkt_ausgewertet // Teachpunkt ausgewertet + + +--- NW 25: Abstand ermitteln --- + AN Dyn.Ref_Flag // Lauf-Flag bei Ref-Inkremente + AN Dyn.Teach_Flag // Lauf-Flag bei Teach-Inkremente + O + A Dyn.Ref_Flag // Lauf-Flag bei Ref-Inkremente + A Dyn.Teach_Flag // Lauf-Flag bei Teach-Inkremente + JCN w230 + +// Inkremente im gleichem Lauf: + L Dyn.Teach_Ink // Inkremente bei Teachpunkt + L Dyn.Ref_Ink // Inkremente bei Referenzpunkt + -D + T Abstands_Ink // Abstands-Inkremente nach Teachen + + JU en23 + +w230: L Max_Wert // Max. Wert beim Zähler + L Dyn.Ref_Ink // Inkremente bei Referenzpunkt + -D + L Dyn.Teach_Ink // Inkremente bei Teachpunkt + +D + T Abstands_Ink + +en23: NOP 0 + + +--- NW 26: Teach-Inkremente in Datenbank abspeichern --- + L Dyn.TeachPunkt // Punkt zum Ein-Teachen + T "MW200" + +CALL FC "DatenOut" (SSDB:=Para.Weichen_DL_DB, SSDW:=Para.Weichen_DL_DW, PARA:=WORD#16#0000, SEARCHDATEN:=P#M200.0, RE_VAL:="MB199", OUTDATEN:=P#M200.0, Position:="MW196") // Nach angegeben Datensatz suchen + + L "MB199" + T Dyn.Rueckmld.RET_VAL_Teach_OUT + + A "M199.7" // Datensatz ist vorhanden + JC w240 + + A "M199.6" // Datensatz ist nicht vorhanden + = Dyn.Error.Keine_TeachPktdaten // Teach-Punkt in Datenliste nicht vorhanden ! + R Dyn.Status.TeachModus_Aktiv // Teach-Modus ist aktiv + BEC + + SET + R Dyn.Status.TeachModus_Aktiv // Teach-Modus ist aktiv + S Dyn.Error.TeachPkt_Datenliste_Err + + BEU + +w240: L Abstands_Ink + L Para.Offset_RefPunkt // Offset Refpunkt zu SyncPunkt (für Teachen) + +D + T "MD218" + +CALL FC "DatenIn" (SSDB:=Para.Weichen_DL_DB, SSDW:=Para.Weichen_DL_DW, INDATEN:=P#M200.0, RE_VAL:="MB199") + AN Dyn.Status.MoreTeach // Nächsten Teachpunkt ohne neuen Refpunkt + R Dyn.Refpunkt_ok // Referenzpunkt erkannt + + L "MB199" + T Dyn.Rueckmld.RET_VAL_Teach_IN + + A "M199.7" // Datensatz ist vorhanden + JC MORE + + A "M199.6" // Datensatz ist nicht vorhanden + = Dyn.Error.Keine_TeachPktdaten // Teach-Punkt in Datenliste nicht vorhanden ! + R Dyn.Status.TeachModus_Aktiv // Teach-Modus ist aktiv + BEC + + SET + R Dyn.Status.TeachModus_Aktiv // Teach-Modus ist aktiv + S Dyn.Error.TeachPkt_Datenliste_Err + + BEU + +MORE: AN Dyn.Status.MoreTeach // Nächsten Teachpunkt ohne neuen Refpunkt + BEC + +CALL FC "DatenOut" (SSDB:=Para.Weichen_DL_DB, SSDW:=Para.Weichen_DL_DW, PARA:=WORD#16#FF00, SEARCHDATEN:=P#M200.0, RE_VAL:="MB199", OUTDATEN:=P#M200.0, Position:="MW196") // Nach nächsten Datensatz suchen + + L "MW206" // Weichentyp + L 178 // Sorterweiche ? + <>I // Nein! + O "M199.2" // Listenende erreicht! + JC TEND + + L "MW200" + T Dyn.TeachPunkt // Punkt zum Ein-Teachen + + BEU + +TEND: L 0 + T Dyn.TeachPunkt + + BEU + + +--- NW 27: + --- + BE + diff --git a/=A01+UH07-KF00/Programmbausteine/Module/MWeiche_Sorter.awl b/=A01+UH07-KF00/Programmbausteine/Module/MWeiche_Sorter.awl new file mode 100644 index 0000000..385cd9c --- /dev/null +++ b/=A01+UH07-KF00/Programmbausteine/Module/MWeiche_Sorter.awl @@ -0,0 +1,1136 @@ +=== FB 178: MWeiche_Sorter [STL] === +INTERFACE: + Input: + Weichen_Nr : Int // Aufruf für Weiche + KorrekturFaktor : Real + ErrQuit : Bool // Ablaufstörung quittieren + Stau_Ausfahrtbereich : Bool // Ausfahrtsbereich hat Stau + B_Gerade : Bool // Kontroll-Sensor nach Weiche Gerade + B_Ausfahrt : Bool // Kontroll-Sensor nach Weiche Ausfahrt + Antrieb_aktiv : Bool // Kreisel-Antrieb aktiv + Output: + Y_Weiche_abzweigen : Bool // Weiche auf Abzweig schalten + Y_Weiche_geradeaus : Bool // Weiche auf Gerade schalten + Error : Word // Störungen übergeben + InOut: + Antrieb_start : Bool // Kreiselantrieb starten + Antrieb_stoppen : Bool // Kreiselantrieb stoppen + hStOk : Bool // Anzeige Start n. Störung aktivieren + Static: + SAVE : Struct + IDX_Flag : Bool // Hauptstrang_DL +1 durchsuchen + Kontroll_Flag : Bool // Hauptstrang_DL +1 durchsuchen + Teil_IDX_Old : DInt // BT/MT-IDX (wurde bei Auslagerung gemeldet) + Para : Struct // Parameter + Weichen_DL_DB : Int // Einsprung Weichen-Datenliste-DB + Weichen_DL_DW : Int // Einsprung Weichen-Datenliste-DW + Res : Array[1..3] of Int // Reserve + Weiche : "UDLWeiche_Sorter" // Fahrbereichs Daten + Dyn : Struct // Dynamische Daten fürs Einfahren + Status : Struct // Status + Schalttakte : DInt // Anzahl der getätigten Umschaltungen + Strecke_gesperrt : Bool // Gefällestrecke ist gesperrt + Strecke_voll : Bool // Gefällestrecke ist voll + Weiche_abzweigen : Bool // Weiche auf Abzweig schalten + Weiche_geradeaus : Bool // Weiche auf Gerade schalten + TeachModus_aktiv : Bool // Teach-Modus ist aktiv + Res45 : Bool + Weichentest_aktiv : Bool // Testschaltung für Einfahrweiche aktiviert + Reset : Bool := TRUE // Reset Einfahrseite starten + Ziel_unbekannt : Bool // Ziel des BT ist unbekannt + Rueckmld : Struct + RET_VAL_BLKMOV_Weiche : Int // Rückmeldung nach BLKMOV-Aufruf + RET_VAL_DL_Weichen : Byte // Rückmeldung nach DatenOut-Aufruf + RET_VAL_Sortliste_Out : Byte // Rückmeldung nach Sortdaten-Out-Aufruf + RET_VAL_SendFIFO : Byte // Rückmeldung nach SendPC_FIFO-Aufruf + Error : "UErrWeiche_Sorter" + Ink_Wert : DInt // Aktueller Inkrementalwert + Max_Wert : DInt // Maximal erlaubter Zählwert + Lauf_Flag : Bool // Zähl-Lauf mit Flag ist aktiv + Flag_Lauf_fertig : Bool // Flag-Lauf wurde beendet + Ohne_Lauf_fertig : Bool // Ohne Flag-Lauf wurde beendet + Hauptstrang_Flag : Bool // Flag zum Weiche schalten (vom Hauptstrang) + Last_Flag : Bool // Flag des letzten durchfahrenden Teils + GSTschalt_Flag : Bool // Flag bei Weiche auf GST schalten + Carr : Bool // CARR-Telegramm muss noch gesendet werden + Puffer_IDX : Bool // Trolley-ID in Puffer eintragen + Ohne_VerklemmKontrolle : Bool // Verklemmkontrolle ausschalten + BM_raus : Bool // BM wurde ausgeschleußt (1 Zyklus) + BM_gerade : Bool // BM wurde gerade gefahren (1 Zyklus) + Max_raus : Bool // Max_Wert wurde schon übertragen + Hauptstrang_Ink : DInt // Inkremente zum Weiche schalten (vom Hauptstrang) + Hauptstrang_Sortliste : Int // Sortliste aus welcher Hauptstrangdaten sind + Hauptstrang_Search_Ink : DInt // Inkremente zum Daten auslesen (Start-Ink) + Hauptstrang_Pos : Int // Aktuelle Position der Daten in Datenliste + GSTschalt_Ink : DInt // Inkremente zum Weiche auf GST schalten + Last_Ink : DInt // Inkremente des letzten durchfahrenden Teils + Last_IDX : DInt // IDX des letzten durchfahrenden Teils + FahrKontrolle : Struct + Ohne_VerklemmKontrolle : Bool // Verklemmkontrolle ausschalten + BT_Gerade : Bool // BM fährt geradeaus durch Weichenbereich + BT_Ausfahrt : Bool // BM fährt aus Weichenbereich + BM_Gerade_erkannt : Bool // Geradeausfahrendes BM wurde erkannt + Gerade_Neg : Bool // Geradeaus: Kontroll-Time ist negativ + BM_Ausfahrt_erkannt : Bool // Ausfahrendes BM wurde erkannt + Ausfahrt_Neg : Bool // Ausfahrend: Kontroll-Time ist negativ + Kontroll_Time_Gerade : Int // Innerhalb dieser Zeit muss BM Weiche gerade verlassen haben [100ms] + Kontroll_Time_Ausfahrt : Int // Innerhalb dieser Zeit muss BM Weiche ausgefahren haben [100ms] + Time_Ausfahrt : Int // Diese Zeit benötigt BM zum Ausfahren [100ms] + Res128 : Array[1..1] of Int // Reserve + Daten : "UBT_Daten" + Kontroll_IDX : DInt // IDX des zu kontollierenden Teils + Res200 : Array[1..23] of Int // Reserve + Temp: + Quelle : Any // Zeiger, wo Rein-Daten sind + Ziel : Any // Zeiger, FIFO-Stelle + Del : Bool // Nur Sortdaten löschen + Error_SendFIFO : Bool + FC86_Para : Word // Parameter-Übergabe + Hauptstrang_Ink : DInt // Inkremente zum Weiche schalten (vom Hauptstrang) + Parameter : Word // Parameter + Freigabe : Int + Carr_Ziel : Int // Ziel, das bei Carr-Telegramm gemeldet wird + DatenDB : Int // DB öffnen + sKorrekturFaktor : Real // Korrektur-Faktor wegen Kettenlängung + AR1Start : DInt // Startwert mit Offset 0 + AR1Zeiger : DWord // Statt AR1 (ging nur bis DB-Länge <= 8191 Bytes) + Constant: + +--- NW 1: Parameter-Übergabe --- + L Weichen_Nr // Aufruf-Parameter (für Baustein beobachten) + + L "MW178" // Einsprung Weichen-DL + T Para.Weichen_DL_DB // vor Aufruf übergeben! + L 0 + T Para.Weichen_DL_DW + + +--- NW 2: Eingangsvariablen einlesen --- + L KorrekturFaktor + T sKorrekturFaktor + + +--- NW 3: Für Inbetriebnahme --- +// Beim Teachen Weiche auf gerade: + A Dyn.Status.TeachModus_aktiv + S Y_Weiche_geradeaus // Weiche auf gerade schalten + R Y_Weiche_abzweigen + R Dyn.Status.Weiche_abzweigen // Weiche auf Abzweig schalten + R Dyn.Status.Weiche_geradeaus // Weiche auf Gerade schalten + BEC + +// Weichentest: + AN Dyn.Status.Weichentest_aktiv + JC en01 + + A "Clock_1Hz" + = Y_Weiche_abzweigen // Weiche zyklisch umschalten + NEG + = Y_Weiche_geradeaus + + SET + R Dyn.Status.Weiche_abzweigen // Weiche auf Abzweig schalten + R Dyn.Status.Weiche_geradeaus // Weiche auf Gerade schalten + + BEU + +en01: NOP 0 + + +--- NW 4: Gesamt: Out-Bits zum Zurücksetzen --- + SET + R Y_Weiche_abzweigen // Weiche auf Abzweig schalten + R Y_Weiche_geradeaus // Weiche auf gerade schalten + R Dyn.BM_raus // BM wurde ausgeschleußt (1 Zyklus) + R Dyn.BM_gerade // BM wurde gerade gefahren (1 Zyklus) + + +--- NW 5: Statische Weichen-Parameter holen --- + L Weiche.Weichen_Nr // Nummer der Weiche + L Weichen_Nr // Aufruf-Parameter + ==I // Identisch ? + R Dyn.Error.Weichen_DL // Weichendatenbank fehlerhaft + R Dyn.Error.Undef_Weiche // undefinierte Weiche + JC en06 // Ja ! + + T "MW200" // Search-Daten + +CALL FC "DatenOut" (SSDB:=Para.Weichen_DL_DB, SSDW:=Para.Weichen_DL_DW, PARA:=WORD#16#0000, SEARCHDATEN:=P#M200.0, RE_VAL:="MB199", OUTDATEN:=P#M220.0, Position:="MW196") + + L "MB199" + T Dyn.Rueckmld.RET_VAL_DL_Weichen // Rückmeldung bei Datenbank-Zugriff (Gefälle-DL) + + JBI G_Ok + + A "M199.0" + = Dyn.Error.Weichen_DL // Weichendatenbank fehlerhaft + BEC + + SET + S Dyn.Error.Undef_Weiche // undefinierte Weiche + + BEU + +// Kennung + Datenbytes +G_Ok: SET + R Dyn.Error.Weichen_DL // Weichendatenbank fehlerhaft + R Dyn.Error.Undef_Weiche // undefinierte Weiche + + L 16#1004 // Kennung 10 + Word=04 + T LW0 // Any-Kennung, Datentyp + L 40 // Datenwords speichern + T LW2 // Wiederholungen + +// Quelle-Pointer erzeugen: + L 0 // Bei Merker = 0 ! + T LW4 // DB_Nummer + L 220 // Adresse + SLD 3 + L 16#8300_0000 // Kennung: Merker + OD + T LD6 // Kennung, Adresse + +CALL SYS "BLKMOV" (SRCBLK:=Quelle, RET_VAL:=Dyn.Rueckmld.RET_VAL_BLKMOV_Weiche, DSTBLK:=Weiche) // Datenliste-Daten speichern | #Ziel + + L Dyn.Rueckmld.RET_VAL_BLKMOV_Weiche // Rückmeldung + L 0 // Fehler vorhanden ? + <>I // Ja ! + = Dyn.Error.BLKMov // Error bei Block kopieren + BEC + + L Weiche.Weichen_Typ // Weichentyp = 178 (Weiche) + L 178 // Dieser Aufruf-FB ? + ==I // Ja ! + JC en06 + + SET + S Dyn.Error.Undef_Weiche // undefinierte Weiche + + L 0 // Weiche ungültig ! + T Weiche.Weichen_Nr // Nummer der Weiche + + BEU + +en06: NOP 0 + + +--- NW 6: + --- + AN Dyn.Status.Reset + JC En06_Mig + +// Dyn.Daten löschen: + SET + R Dyn.Status.Reset + R Dyn.Status.Strecke_voll + R Y_Weiche_abzweigen // Weiche auf Abzweig schalten + S Y_Weiche_geradeaus // Weiche auf gerade schalten + R Dyn.Status.Weichentest_aktiv + R Dyn.Hauptstrang_Flag + R Dyn.Last_Flag + R Dyn.FahrKontrolle.BT_Gerade // BM fährt geradeaus durch Weichenbereich + R Dyn.FahrKontrolle.BT_Ausfahrt // BM fährt aus Weichenbereich + R Dyn.FahrKontrolle.Gerade_Neg // Geradeaus: Kontroll-Time ist negativ + R Dyn.FahrKontrolle.Ausfahrt_Neg // Ausfahrend: Kontroll-Time ist negativ +// / R #Dyn.Ohne_VerklemmKontrolle //Verklemmkontrolle ausschalten + R Dyn.Max_raus // Max_Wert wurde schon übertragen + + A Weiche.Parameter.Weichen_GST_gerade + = Dyn.Status.Weiche_geradeaus + A Weiche.Parameter.Weichen_GST_abzweig + AN Weiche.Parameter.Weichen_GST_gerade + = Dyn.Status.Weiche_abzweigen + + L 0 + T Dyn.Hauptstrang_Ink + T Dyn.Hauptstrang_Search_Ink + T Dyn.Last_Ink + + L 0 + T Dyn.Hauptstrang_Sortliste + T Dyn.FahrKontrolle.Kontroll_Time_Gerade // Innerhalb dieser Zeit muss BM Weiche verlassen haben [100ms] + T Dyn.FahrKontrolle.Kontroll_Time_Ausfahrt // Innerhalb dieser Zeit muss BM Weiche ausgefahren haben [100ms] + + L DINT#0 + T Kontroll_IDX + T Dyn.Last_IDX + +// Rückmeldungen löschen: + L 0 + T Dyn.Rueckmld.RET_VAL_DL_Weichen + T Dyn.Rueckmld.RET_VAL_BLKMOV_Weiche + T Dyn.Rueckmld.RET_VAL_Sortliste_Out + +// Störungen löschen: + SET + R Dyn.Error.Weichen_DL + R Dyn.Error.Undef_Weiche + R Dyn.Error.BLKMov + R Dyn.Error.Haupstrang_DL + R Dyn.Error.Haupstrang_DL_voll + R Dyn.Error.Keine_HSDaten + R Dyn.Error.Rein_FIFO + R Dyn.Error.Keine_FIFODaten + R Dyn.Error.Stau_AusfahrBereich + R Dyn.Error.BM_verklemmt_Gerade + R Dyn.Error.BM_verklemmt_Ausfahrt + R Dyn.Error.BM_undef_Gerade + R Dyn.Error.Frei14 + R Dyn.Error.Send_FIFO_fehlerhaft // Send-FIFO zum PC ist fehlerhaft + R Dyn.Error.Send_FIFO_voll // Send-FIFO zu PC ist voll + R Dyn.Error.Reset_aktiv // Reset ist aktiv + + L 0 // Damit statische Werte neu aus Datenbank geholt werden ! + T Weiche.Weichen_Nr // Nummer der Weiche + + BEU + +En06_Mig: NOP 0 + + +--- NW 7: Störungen nach Außen übergeben --- + L 0 + T "MB200" + + A Dyn.Error.Weichen_DL // Weichen-Datenliste fehlerhaft + = "M200.0" + A Dyn.Error.Undef_Weiche // undefinierte Weiche + = "M200.1" + A Dyn.Error.BLKMov // Fehler bei Block kopieren + = "M200.2" + A Dyn.Error.Haupstrang_DL // Haupstrang-Datenliste fehlerhaft + = "M200.3" + A Dyn.Error.Haupstrang_DL_voll // Haupstrang-Datenliste ist voll + = "M200.4" + A Dyn.Error.Keine_HSDaten // Keine Hauptstrang-Daten mehr vorhanden + = "M200.5" + A Dyn.Error.Rein_FIFO // Rein-FIFO fehlerhaft + = "M200.6" + A Dyn.Error.Keine_FIFODaten // Keine Rein-Daten mehr vorhanden + = "M200.7" + A Dyn.Error.Stau_AusfahrBereich // Stau im Ausfahrbereich (-> Antrieb stoppen) + = "M201.0" + A Dyn.Error.BM_verklemmt_Gerade // BM bei Weiterfahrt in Weiche verklemmt (-> Antrieb stoppen) + = "M201.1" + A Dyn.Error.BM_verklemmt_Ausfahrt // BM bei Ausfahrt in Weiche verklemmt (-> Antrieb stoppen) + = "M201.2" + A Dyn.Error.BM_undef_Gerade // undefiniertes BM bei Weiterfahrt erkannt + = "M201.3" + A Dyn.Error.Frei14 + = "M201.4" + A Dyn.Error.Send_FIFO_fehlerhaft // Send-FIFO zum PC ist fehlerhaft + = "M201.5" + A Dyn.Error.Send_FIFO_voll // Send-FIFO zu PC ist voll + = "M201.6" + CLR // Reset ist aktiv (gibts nicht!) + = Dyn.Error.Reset_aktiv + = "M201.7" + + L "MW200" + T Error // Schnittstelle nach Außen + +// Kreiselantrieb stoppen: + AN Stau_Ausfahrtbereich // Ausfahrtsbereich hat Stau + R Dyn.Error.Stau_AusfahrBereich // Stau im Ausfahrbereich (-> Antrieb stoppen) + +// Antrieb stoppen: + A( + O Dyn.Error.BM_verklemmt_Ausfahrt // BM bei Ausfahrt in Weiche verklemmt (-> Antrieb stoppen) + O Dyn.Error.BM_verklemmt_Gerade // BM bei Weiterfahrt in Weiche verklemmt (-> Antrieb stoppen) + ) + AN ErrQuit + O Dyn.Error.Stau_AusfahrBereich // Stau im Ausfahrbereich (-> Antrieb stoppen) + O Dyn.Error.Send_FIFO_fehlerhaft // Send-FIFO zum PC ist fehlerhaft + O Dyn.Error.Send_FIFO_voll // Send-FIFO zu PC ist voll + S Antrieb_stoppen // Kreiselantrieb stoppen + +// Anzeige Start n. Störung aktivieren: + A Dyn.Error.BM_verklemmt_Ausfahrt // BM bei Ausfahrt in Weiche verklemmt (-> Antrieb stoppen) + O Dyn.Error.BM_verklemmt_Gerade // BM bei Weiterfahrt in Weiche verklemmt (-> Antrieb stoppen) + O Dyn.Error.Stau_AusfahrBereich // Stau im Ausfahrbereich (-> Antrieb stoppen) + S hStOk + + +--- NW 8: Daten des Inkremental-Gebers holen / Zeit-Inkremente --- + L Weiche.Ink_DB // DB-Nr des Inkremental-Geber + L 0 // angegeben ? + <=I // Nein ! + JC w040 + + CAC + T "MW200" + OPN DB["MW200"] // Zähler-DB öffnen + L DBD80 + T Dyn.Ink_Wert + L DBD76 + T Dyn.Max_Wert + A DBX74.3 + = Dyn.Lauf_Flag + A DBX74.4 + = Dyn.Flag_Lauf_fertig + A DBX74.5 + = Dyn.Ohne_Lauf_fertig + + JU en04 + +// Zeit-Inkremente erzeugen: +w040: AN Antrieb_aktiv + JC w041 + + L "MW4" // 10ms-Takte + ITD + L Dyn.Ink_Wert + +D // Aktueller Zählerwert +100ms-Takte + T Dyn.Ink_Wert + +w041: L DINT#10000 // Festwert: 10000 (100s) + T Dyn.Max_Wert + + L Dyn.Ink_Wert // Aktueller Zählerwert + L Dyn.Max_Wert // Max. Wert erreicht ? + <=D // Nein ! + R Dyn.Ohne_Lauf_fertig // Ohne Flag-Lauf wurde beendet + R Dyn.Flag_Lauf_fertig // Flag-Lauf wurde beendet + JC en04 + + -D // Restwert als Startwert nehmen ! + T Dyn.Ink_Wert + + AN Dyn.Lauf_Flag // Umschaltung Zähl-Lauf ohne-mit-ohne Flag + = Dyn.Ohne_Lauf_fertig // Ohne Flag-Lauf wurde beendet + A Dyn.Lauf_Flag // Umschaltung Zähl-Lauf ohne-mit-ohne Flag + = Dyn.Flag_Lauf_fertig // Flag-Lauf wurde beendet + + AN Dyn.Lauf_Flag // Umschaltung Zähl-Lauf ohne-mit-ohne Flag + = Dyn.Lauf_Flag + +en04: NOP 0 + + +--- NW 9: + --- + A "Hauptstrang_leer" // Keine Haupstrangdaten vorhanden -> Verklemm-Errors löschen + AN B_Gerade + R Dyn.Error.BM_undef_Gerade // undefiniertes BM bei Weiterfahrt erkannt + + AN ErrQuit + JC En08 + +// Störungen löschen: + SET + R Dyn.Error.BM_undef_Gerade + R Dyn.Error.Frei14 + + A "Hauptstrang_leer" // Keine Haupstrangdaten vorhanden -> Verklemm-Errors löschen + A Dyn.Error.BM_verklemmt_Gerade + CLR // Nie da große Trolleys + R Dyn.Error.BM_verklemmt_Gerade + R Dyn.FahrKontrolle.BT_Gerade + + A "Hauptstrang_leer" // Keine Haupstrangdaten vorhanden -> Verklemm-Errors löschen + A Dyn.Error.BM_verklemmt_Ausfahrt + CLR // Nie da große Trolleys + R Dyn.Error.BM_verklemmt_Ausfahrt + R Dyn.FahrKontrolle.BT_Ausfahrt + +// Kann nur über Reset zurückgesetzt werden: +// R #Dyn.Error.Weichen_DL +// R #Dyn.Error.Undef_Weiche +// R #Dyn.Error.BLKMov +// R #Dyn.Error.Haupstrang_DL +// R #Dyn.Error.Haupstrang_DL_voll +// R #Dyn.Error.Keine_HSDaten +// R #Dyn.Error.Rein_FIFO +// R #Dyn.Error.Keine_FIFODaten +// R #Dyn.Error.Stau_AusfahrBereich +// R #Dyn.Error.BM_verklemmt_Gerade +// R #Dyn.Error.BM_verklemmt_Ausfahrt +// R #Dyn.Error.Send_FIFO_fehlerhaft //Send-FIFO zum PC ist fehlerhaft +// R #Dyn.Error.Send_FIFO_voll //Send-FIFO zu PC ist voll +// R #Dyn.Error.Reset_aktiv //Reset ist aktiv + +En08: NOP 0 + + +--- NW 10: Schaltpunkt aufgrund von Hauptstrangdaten suchen --- + L Dyn.Hauptstrang_Ink // Inkremente zum Weiche schalten (vom Hauptstrang) + L DINT#0 // schon bekannt ? + >D // Ja ! + S Antrieb_start // Kreiselantrieb starten + JC Nw09 + +// Nach neuen Daten suchen: + AN "Weiche_NewData" // Im Weichenbereich nach neuen Daten suchen + JC w076 + + L Dyn.Ink_Wert // Aktueller Inkrementalwert + L Weiche.Off_Ink // Inkremente zum Weiche schalten + >D // Gleiches Flag/Flag wie Inkgeber zum Suchen + JC w071 + +// Anders Flag/Liste wie Inkgeber zum Suchen: + L Weiche.Hauptstrang_DL_DB + + A Dyn.Lauf_Flag // Inkgeber schon mit Lauf-Flag + R SAVE.IDX_Flag // Hauptstrang_DL +1 durchsuchen + JC w070 + + SET + S SAVE.IDX_Flag // Hauptstrang_DL +1 durchsuchen + + + 1 + +w070: T Dyn.Hauptstrang_Sortliste // Sortliste aus welcher Hauptstrangdaten sind + + JU w073 + +// Gleiches Flag/Liste wie Inkgeber zum Suchen: +w071: L Weiche.Hauptstrang_DL_DB + + AN Dyn.Lauf_Flag // Inkgebeer ohne Lauf-Flag + R SAVE.IDX_Flag // Hauptstrang_DL +1 durchsuchen + JC w072 + + SET + S SAVE.IDX_Flag // Hauptstrang_DL +1 durchsuchen + + + 1 + +w072: T Dyn.Hauptstrang_Sortliste // Sortliste aus welcher Hauptstrangdaten sind + +// Hauptstrang Sortliste nach Position -1 durchsuchen: +w073: CALL FC "DatenFindOffsetSort" (SSDB:=Dyn.Hauptstrang_Sortliste, SSDW:=Weiche.Hauptstrang_DL_DW, PARA:=WORD#16#0B01, SEARCHDATEN:=Weiche.Position_minus, RE_VAL:="MB199", OUTDATEN:=Daten, Position:="MW196") // nach 11.DW (letzte Position) suchen + + L "MB199" + T Dyn.Rueckmld.RET_VAL_Sortliste_Out + + A "M199.7" // Datensatz ist vorhanden + R Dyn.Error.Haupstrang_DL // Sortliste fehlerhaft + JC w074 + + A "M199.6" // Datensatz ist nicht vorhanden + R Dyn.Error.Haupstrang_DL // Sortliste fehlerhaft + JC Nw09 // Warten, da noch keine Daten vorhanden + + SET + S Dyn.Error.Haupstrang_DL // Sortliste fehlerhaft + +w076: L 0 // Keine Daten auf Hauptstrang vorhanden + T Dyn.Hauptstrang_Ink // Inkremente zum Weiche schalten (vom Hauptstrang) + + JU Nw09 + +// Search-Ink speichern: +w074: L Daten.Start_Ink // Stamm-Daten speichern + T Dyn.Hauptstrang_Search_Ink // Inkremente zum Daten auslesen (Start-Ink) + +// Hauptstrang-Schaltdaten errechnen/speichern: +// Kettenlängungs-Korrektur: + L sKorrekturFaktor // Korrektur-Faktor wegen Kettenlängung + L 0.995 // sinnvoller Wert ? (maximal 0,5% Abweichung erlaubt) + >=R // Ja ! + A( + CAC + L 1.005 + <=R + ) + JC w075 + + L 1.0 // dann ohne Korrektur ! + T sKorrekturFaktor // Korrektur-Faktor wegen Kettenlängung + +// Schaltdaten errechnen: +w075: A Daten.Start_Flag // Lauf-Flag bei Start-Inkremente + = Dyn.Hauptstrang_Flag // Flag zum Weiche schalten (vom Hauptstrang) + + L Weiche.Off_Ink // Inkremente zum Weiche schalten + DTR + L sKorrekturFaktor // Korrektur-Faktor wegen Kettenlängung + *R + RND + L Daten.Start_Ink // Daten aus Sortliste dazuaddieren + +D + T Dyn.Hauptstrang_Ink // Inkremente zum Weiche schalten (vom Hauptstrang) + L Dyn.Max_Wert // Maximal erlaubter Zählwert + >D + JCN Nw09 + + -D // Restwert übernehmen + T Dyn.Hauptstrang_Ink // Inkremente zum Weiche schalten (vom Hauptstrang) + + AN Daten.Start_Flag // Lauf-Flag bei Start-Inkremente (invertieren) + = Dyn.Hauptstrang_Flag // Flag zum Weiche schalten (vom Hauptstrang) + + +--- NW 11: Weiche aufgrund der Hauptstrangdaten schalten --- +Nw09: L Dyn.Hauptstrang_Ink // Inkremente zum Weiche schalten (vom Hauptstrang) + L DINT#0 // angegeben ? + <=D // Nein ! + JC w08E + + A Dyn.Hauptstrang_Flag // Flag zum Weiche schalten (vom Hauptstrang) + A Dyn.Flag_Lauf_fertig // Flag-Lauf wurde beendet + O + AN Dyn.Hauptstrang_Flag // Flag zum Weiche schalten (vom Hauptstrang) + A Dyn.Ohne_Lauf_fertig // Flag-Lauf wurde beendet + JC w080 // beim Ende des Lauf sind Inkremente uninteressant + + A Dyn.Hauptstrang_Flag // Flag zum Weiche schalten (vom Hauptstrang) + A Dyn.Lauf_Flag // Zähl-Lauf mit Flag ist aktiv + O + AN Dyn.Hauptstrang_Flag // Flag zum Weiche schalten (vom Hauptstrang) + AN Dyn.Lauf_Flag // Zähl-Lauf mit Flag ist aktiv + JCN en08_Mig + + L Dyn.Ink_Wert // Aktuelle Inkrementalwert + L Dyn.Hauptstrang_Ink // Inkremente zum Weiche schalten (vom Hauptstrang) + I // BM soll nicht ausfahren ! + ON Weiche.Parameter.ErsatzZiel_bei_Stau // Bei Stau soll Ersatz-Ziel angefahren werden + ON Stau_Ausfahrtbereich + JC x081 + + L Weiche.ErsatzZiel // Ersatz-Ziel übergeben + T Daten.Sort_Info.Teil_Ziel + +x081: L Daten.Sort_Info.Teil_Ziel // Ziel des BT (aufgrund vom Hauptstrang) + L 0 + <=I + = Dyn.Status.Ziel_unbekannt // Ziel des BT ist unbekannt + + A Dyn.Status.Ziel_unbekannt // Ziel des BT ist unbekannt + A Weiche.Parameter.Weichen_GST_gerade + AN Weiche.Parameter.Weichen_GST_abzweig + JC x100 // BT mit unbekanntem Ziel geradeaus fahren + + A Dyn.Status.Ziel_unbekannt // Ziel des BT ist unbekannt + AN Weiche.Parameter.Weichen_GST_gerade + A Weiche.Parameter.Weichen_GST_abzweig + JC w082 // BT mit unbekanntem Ziel ausfahren + + L Daten.Sort_Info.Teil_Ziel // Ziel des BT (aufgrund vom Hauptstrang) + L Weiche.AbzweigZiel // Bei diesem Ziel Weiche auf Abzweig schalten + Carl + T Carr_Ziel // Ziel, das bei Carr-Telegramm gemeldet wird + ==I // BM soll ausfahren + S Dyn.Carr // CARR-Telegramm muss noch gesendet werden + S Dyn.Puffer_IDX // Trolley-ID in Puffer eintragen + JC w082 // Teil ausfahren + + L Daten.Sort_Info.Teil_Ziel // Ziel des BT (aufgrund vom Hauptstrang) + L Weiche.GeradeZiel // Bei diesem Ziel Weiche auf Gerade schalten + Carl + <>I // BM soll also ausfahren, da nicht das GeradeZiel! + A( + L 0 // sinnvolle Angabe ? + >I // Ja ! + ) + JC w082 // Teil ausfahren (ohne CARR, da undef. rausfahren!) + +// Teile geradeaus fahren:****************************************************************************************************** +x100: SET + S Dyn.Status.Weiche_geradeaus // Weiche auf Gerade schalten + R Dyn.Status.Weiche_abzweigen + S Dyn.BM_gerade // BM wurde gerade gefahren (1 Zyklus) + +// Verklemm-Kontroll-Info speichern: + AN Weiche.Parameter.Kontroll_B_Gerade // Kontroll-Sensor bei Weiterfahrt (gerade) + JC k100 // Letzter BM noch nicht kontrolliert + + A Dyn.FahrKontrolle.BT_Gerade // BM fährt geradeaus durch Weichenbereich + JC k100 // Letzter BM noch nicht kontrolliert + + L Dyn.Last_IDX // IDX des letzten durchfahrenden Teils + T Kontroll_IDX // IDX des zu kontollierenden Teils + A SAVE.IDX_Flag // Hauptstrang_DL +1 durchsuchen + = SAVE.Kontroll_Flag // Hauptstrang_DL +1 durchsuchen + + L Weiche.Kontroll_Zeit_gerade // Nach dieser Zeit muss BM Weichenbereich verlassen haben [100ms] + T Dyn.FahrKontrolle.Kontroll_Time_Gerade // Innerhalb dieser Zeit muss BM Weiche gerade verlassen haben [100ms] + + SET + S Dyn.FahrKontrolle.BT_Gerade // BM fährt geradeaus durch Weichenbereich + R Dyn.FahrKontrolle.Gerade_Neg // Geradeaus: Kontroll-Time ist negativ + +// CARR-Telegramm erwünscht ?: +k100: L Daten.Sort_Info.Teil_Ziel // Ziel des BT (aufgrund vom Hauptstrang) + L Weiche.GeradeZiel // Bei diesem Ziel Weiche auf Gerade schalten + Carl + T Carr_Ziel // Ziel, das bei Carr-Telegramm gemeldet wird + ==I // BM soll ausfahren + S Dyn.Carr // CARR-Telegramm muss noch gesendet werden + + A Weiche.Parameter.Letzte_Weiche // Letzte Weiche im Verbund + S Del // Nur Sortdaten löschen + JC w084 // Daten aus Sortliste löschen + +// Letzte Position neu speichern: +New: L Weiche.Weichen_Nr // Nummer der Weiche + T Daten.letzte_Position // Letzte Position, wo Teil vorbeigefahren ist + +CALL FC "DatenIn" (SSDB:=Dyn.Hauptstrang_Sortliste, SSDW:=Weiche.Hauptstrang_DL_DW, INDATEN:=Daten, RE_VAL:="MB199") + + L "MB199" + T Dyn.Rueckmld.RET_VAL_Sortliste_Out + + A "M199.7" // Datensatz ist vorhanden /Alles Ok) + JC GST + + SET + S Dyn.Error.Haupstrang_DL // Sortliste fehlerhaft + JU GST + +// Teile ausfahren:************************************************************************************************************ +w082: A Dyn.Status.Weiche_abzweigen // Weiche war schon auf Abzweig + JC w083 + + L Dyn.Status.Schalttakte + + DINT#1 // Auf Abzweig umgeschaltet +1 + T Dyn.Status.Schalttakte + +w083: SET + S Dyn.Status.Weiche_abzweigen // Weiche auf Abzweig schalten + R Dyn.Status.Weiche_geradeaus + R Del // Nur Sortdaten löschen + S Dyn.BM_raus // BM wurde ausgeschleußt (1 Zyklus) + + L 300 // Nach dieser Zeit ist BM ausgefahren [300*100ms] + T Dyn.FahrKontrolle.Time_Ausfahrt // Diese Zeit benötigt BM zum Ausfahren [100ms] + +// Verklemm-Kontroll-Info speichern: + AN Weiche.Parameter.Kontroll_B_Ausfahrt // Kontroll-Sensor bei Ausfahrt (abzweig) + JC k101 // Letzter BM noch nicht kontrolliert + + A Dyn.FahrKontrolle.BT_Ausfahrt // BM fährt aus Weichenbereich + JC k101 // Letzter BM noch nicht kontrolliert + + L Dyn.Last_IDX // IDX des letzten durchfahrenden Teils + T Kontroll_IDX // IDX des zu kontollierenden Teils + A SAVE.IDX_Flag // Hauptstrang_DL +1 durchsuchen + = SAVE.Kontroll_Flag // Hauptstrang_DL +1 durchsuchen + + L Weiche.Kontroll_Zeit_abzweigen // Nach dieser Zeit muss BM Weichenbereich verlassen haben [100ms] + T Dyn.FahrKontrolle.Kontroll_Time_Ausfahrt // Innerhalb dieser Zeit muss BM Weiche ausgefahren haben [100ms] + + SET + S Dyn.FahrKontrolle.BT_Ausfahrt // BM fährt aus Weichenbereich + R Dyn.FahrKontrolle.Ausfahrt_Neg // Ausfahrend: Kontroll-Time ist negativ + +k101: A Stau_Ausfahrtbereich // Ausfahrtsbereich hat Stau + AN Weiche.Parameter.ErsatzZiel_bei_Stau // Bei Stau soll Ersatz-Ziel angefahren werden + S Dyn.Error.Stau_AusfahrBereich // Stau im Ausfahrbereich (-> Antrieb stoppen) + +// Falls Entlade-Weiche neues Leer-Ziel übergeben: + AN Weiche.Parameter.Entlade_Weiche // BM wird entladen -> Leerziel übergeben + O Weiche.Parameter.Letzte_Weiche // Letzte Weiche im Verbund + JC w084 + + L Weiche.LeerZiel // Nach Entladen des BM dieses Ziel übergeben + T Daten.Sort_Info.Teil_Ziel // BM bei diesem Abwurf-Ziel ausfahren/entladen + L 0 // Sinnvolle Angabe ? + >I // Ja ! + JC New // Daten mit neuem Ziel an Hauptstrang übergeben ! + +// Daten aus Sortliste löschen +w084: L Dyn.Hauptstrang_Pos // Aktuelle Position der Daten in Datenliste + L 16#0E00 // 0EYY: DS YY löschen + OW + T FC86_Para + +CALL FC "DatenOutSort" (SSDB:=Dyn.Hauptstrang_Sortliste, SSDW:=Weiche.Hauptstrang_DL_DW, PARA:=FC86_Para, OUTDATEN:=Daten, RE_VAL:="MB199") // DS YY löschen + +// GST-Schalt-Inks speichern: +GST: AN Weiche.Parameter.Weichen_GST_gerade + AN Weiche.Parameter.Weichen_GST_abzweig + JC w08E + + L Weiche.Ink_Schaltdauer // Inkremente (Fenster), danach wird Weiche in GST geschaltet + L 0 // sinnvoller Wert ? + <=I // Nein ! + JC w08E + + L Weiche.Ink_Schaltdauer // Inkremente (Fenster), danach wird Weiche in GST geschaltet + ITD + L Dyn.Ink_Wert // Aktueller Inkrementalwert + +D + T Dyn.GSTschalt_Ink // Inkremente bei Weiche auf GST schalten + A Dyn.Lauf_Flag // Zähl-Lauf mit Flag ist aktiv + = Dyn.GSTschalt_Flag // Flag bei Weiche auf GST schalten + + L Dyn.Max_Wert // Maximal erlaubter Zählwert überschritten ? + <=D // Nein ! + JC w08E + + -D // Restwert übernehmen + T Dyn.GSTschalt_Ink // Inkremente bei Weiche auf GST schalten + AN Dyn.Lauf_Flag // Zähl-Lauf mit Flag ist aktiv (invertieren, da Überlauf!) + = Dyn.GSTschalt_Flag // Flag bei Weiche auf GST schalten + +w08E: L DINT#0 + T Dyn.Hauptstrang_Ink // Inkremente zum Weiche schalten (vom Hauptstrang) + +en08_Mig: NOP 0 + + +--- NW 12: Weiche auf GST zurückschalten --- + L Dyn.GSTschalt_Ink // Inkremente bei Weiche auf GST schalten + L 0 // sinnvolle Angabe ? + <=D // Nein ! + JC X111 + + A Dyn.GSTschalt_Flag // Flag bei Weiche auf GST schalten + A Dyn.Flag_Lauf_fertig // Flag-Lauf wurde beendet + O + AN Dyn.GSTschalt_Flag // Flag bei Weiche auf GST schalten + A Dyn.Ohne_Lauf_fertig // Flag-Lauf wurde beendet + JC w110 // beim Ende des Lauf sind Inkremente uninteressant + + A Dyn.GSTschalt_Flag // Flag bei Weiche auf GST schalten + A Dyn.Lauf_Flag // Zähl-Lauf mit Flag ist aktiv + O + AN Dyn.GSTschalt_Flag // Flag bei Weiche auf GST schalten + AN Dyn.Lauf_Flag // Zähl-Lauf mit Flag ist aktiv + JCN en11 + + L Dyn.Ink_Wert // Aktuelle Inkrementalwert + L Dyn.GSTschalt_Ink // Inkremente bei Weiche auf GST schalten + D // Haupstrangdaten sind kleiner + A( + L 0 // sinnvolle Hauptstrang-Daten ? + <>D // Ja ! + ) + JC X111 // Nicht auf GST schalten, da nächste Daten schon kommen ! + +// Weiche auf GST schalten: + A Weiche.Parameter.Weichen_GST_gerade + AN Weiche.Parameter.Weichen_GST_abzweig + JCN W110_Mig // Negierter Sprung ! + + A Dyn.FahrKontrolle.BT_Ausfahrt // BM fährt aus Weichenbereich + O Dyn.Error.BM_verklemmt_Ausfahrt // BM bei Ausfahrt in Weiche verklemmt (-> Antrieb stoppen) + JC en11 // Warten + + SET + S Dyn.Status.Weiche_geradeaus // Weiche auf Gerade schalten + R Dyn.Status.Weiche_abzweigen + JU X111 + +W110_Mig: A Weiche.Parameter.Weichen_GST_abzweig + AN Weiche.Parameter.Weichen_GST_gerade + JCN X111 // Negierter Sprung ! + + A Dyn.FahrKontrolle.BT_Gerade // BM fährt geradeaus durch Weichenbereich + O Dyn.Error.BM_verklemmt_Gerade // BM bei Weiterfahrt in Weiche verklemmt (-> Antrieb stoppen) + JC en11 // Warten + + SET + S Dyn.Status.Weiche_abzweigen // Weiche auf Abzweig schalten + R Dyn.Status.Weiche_geradeaus + +X111: L DINT#0 + T Dyn.GSTschalt_Ink // Inkremente bei Weiche auf GST schalten + SET + R Dyn.GSTschalt_Flag // Flag bei Weiche auf GST schalten + +en11: NOP 0 + + +--- NW 13: Weichenbereich auf verklemmte gerade fahrende BM kontrollieren --- + AN Weiche.Parameter.Kontroll_B_Gerade // Kontroll-Sensor bei Weiterfahrt (gerade) + O Dyn.Ohne_VerklemmKontrolle // Verklemmkontrolle ausschalten + O "Hauptstrang_leer" + R Dyn.FahrKontrolle.BT_Gerade // BM fährt geradeaus durch Weichenbereich + R Dyn.FahrKontrolle.BM_Gerade_erkannt // Geradeausfahrendes BM wurde erkannt + R Dyn.Error.BM_verklemmt_Gerade // BM bei Weiterfahrt in Weiche verklemmt (-> Antrieb stoppen) + R Dyn.Error.BM_undef_Gerade // undefiniertes BM bei Weiterfahrt erkannt + S Dyn.FahrKontrolle.Gerade_Neg // Geradeaus: Kontroll-Time ist negativ + JC Nw17 + +// BM fährt geradeaus: + A B_Gerade // Kontroll-Sensor nach Weiche Gerade + AN Dyn.FahrKontrolle.BM_Gerade_erkannt // Geradeausfahrendes BM wurde erkannt + A Dyn.FahrKontrolle.BT_Gerade // BM fährt geradeaus durch Weichenbereich + R Dyn.FahrKontrolle.BT_Gerade + S Dyn.FahrKontrolle.BM_Gerade_erkannt // Geradeausfahrendes BM wurde erkannt + + AN B_Gerade // Kontroll-Sensor nach Weiche Gerade + R Dyn.FahrKontrolle.BM_Gerade_erkannt // Geradeausfahrendes BM wurde erkannt + + L Dyn.Last_IDX // IDX des letzten durchfahrenden Teils + T Kontroll_IDX // IDX des zu kontollierenden Teils + A SAVE.IDX_Flag // Hauptstrang_DL +1 durchsuchen + = SAVE.Kontroll_Flag // Hauptstrang_DL +1 durchsuchen + + JU Q_G + +N_G: L Weiche.Kontroll_Zeit_gerade // Nach dieser Zeit muss BM Weichenbereich verlassen haben [100ms] + T Dyn.FahrKontrolle.Kontroll_Time_Gerade // Innerhalb dieser Zeit muss BM Weiche gerade verlassen haben [100ms] + +Q_G: A ErrQuit + AN Dyn.FahrKontrolle.BT_Gerade // BM fährt geradeaus durch Weichenbereich + R Dyn.Error.BM_verklemmt_Gerade // BM bei Weiterfahrt in Weiche verklemmt (-> Antrieb stoppen) + +// Zeit verändern: + AN Antrieb_aktiv // Band ist aktiv + ON "100ms-Impuls" + O Dyn.Error.BM_verklemmt_Gerade // BM bei Weiterfahrt in Weiche verklemmt (-> Antrieb stoppen) + JC Un_G + + L Dyn.FahrKontrolle.Kontroll_Time_Gerade // Innerhalb dieser Zeit muss BM Weiche gerade verlassen haben [100ms] + L "MW2" // Anzahl der 100ms-Takte + -I + T Dyn.FahrKontrolle.Kontroll_Time_Gerade // Innerhalb dieser Zeit muss BM Weiche gerade verlassen haben [100ms] + L 0 // Kontroll-Zeit abgelaufen ? + >I // Nein ! + R Dyn.FahrKontrolle.Gerade_Neg // Geradeaus: Kontroll-Time ist negativ + JC en16 + +// BM verklemmt ?: + A Dyn.FahrKontrolle.Gerade_Neg // Geradeaus: Kontroll-Time ist negativ + JC Un_G + + SET + S Dyn.FahrKontrolle.Gerade_Neg // Geradeaus: Kontroll-Time ist negativ + + A Dyn.FahrKontrolle.BT_Gerade // BM fährt geradeaus durch Weichenbereich + S Dyn.Error.BM_verklemmt_Gerade // BM bei Weiterfahrt in Weiche verklemmt (-> Antrieb stoppen) + JC N_G // Zeit neu laden + +// BM undefiniert ?: +Un_G: L Dyn.FahrKontrolle.Kontroll_Time_Gerade // Innerhalb dieser Zeit muss BM Weiche gerade verlassen haben [100ms] + L Weiche.DraussenZeit_gerade // Nach dieser neg. Zeit [100ms] Error undef.BM, falls Kontroll-Sensor aktiv + >I // Muss BM draussen sein ? Nein ! + JC en16 + + T Dyn.FahrKontrolle.Kontroll_Time_Gerade // Innerhalb dieser Zeit muss BM Weiche gerade verlassen haben [100ms] + + AN B_Gerade // Kontroll-Sensor nach Weiche Gerade + JC en16 + + SET + S Dyn.Error.BM_undef_Gerade // undefiniertes BM bei Weiterfahrt erkannt + +en16: NOP 0 + + +--- NW 14: Weichenbereich auf verklemmte ausfahrende BM kontrollieren --- +Nw17: AN Weiche.Parameter.Kontroll_B_Ausfahrt // Kontroll-Sensor bei Ausfahrt (abzweig) + O Dyn.Ohne_VerklemmKontrolle // Verklemmkontrolle ausschalten + R Dyn.FahrKontrolle.BT_Ausfahrt // BM fährt aus Weichenbereich + R Dyn.FahrKontrolle.BM_Ausfahrt_erkannt // Ausfahrendes BM wurde erkannt + R Dyn.Error.BM_verklemmt_Ausfahrt // BM bei Ausfahrt in Weiche verklemmt (-> Antrieb gestoppt) + S Dyn.FahrKontrolle.Ausfahrt_Neg // Ausfahrend: Kontroll-Time ist negativ + JC Nw18 + +// BM fährt aus: + A B_Ausfahrt // Kontroll-Sensor nach Weiche Ausfahrt + AN Stau_Ausfahrtbereich // Bei Stau Einzelerkennung nicht mehr möglich! + AN Dyn.FahrKontrolle.BM_Ausfahrt_erkannt // Ausfahrendes BM wurde erkannt + A Dyn.FahrKontrolle.BT_Ausfahrt // BM fährt aus Weichenbereich + R Dyn.FahrKontrolle.BT_Ausfahrt + S Dyn.FahrKontrolle.BM_Ausfahrt_erkannt // Ausfahrendes BM wurde erkannt + + AN B_Ausfahrt // Kontroll-Sensor nach Weiche Ausfahrt + O Stau_Ausfahrtbereich // Bei Stau auch ! + R Dyn.FahrKontrolle.BM_Ausfahrt_erkannt // Ausfahrendes BM wurde erkannt + + JU Q_A + +N_A: L Weiche.Kontroll_Zeit_abzweigen // Nach dieser Zeit muss BM Weichenbereich verlassen haben [100ms] + T Dyn.FahrKontrolle.Kontroll_Time_Ausfahrt // Innerhalb dieser Zeit muss BM Weiche ausgefahren haben [100ms] + +Q_A: A ErrQuit // s.u. + SET // Ohne Quittierung + AN Dyn.FahrKontrolle.BT_Ausfahrt // BM fährt aus Weichenbereich + R Dyn.Error.BM_verklemmt_Ausfahrt // BM bei Ausfahrt in Weiche verklemmt (-> Antrieb gestoppt) + +// Zeit verändern: + AN Antrieb_aktiv // Band ist aktiv + ON "100ms-Impuls" + O Dyn.Error.BM_verklemmt_Ausfahrt // BM bei Ausfahrt in Weiche verklemmt (-> Antrieb gestoppt) + JC en17 + + L Dyn.FahrKontrolle.Kontroll_Time_Ausfahrt // Innerhalb dieser Zeit muss BM Weiche ausgefahren haben [100ms] + L "MW2" // Anzahl der 100ms-Takte + -I + T Dyn.FahrKontrolle.Kontroll_Time_Ausfahrt // Innerhalb dieser Zeit muss BM Weiche ausgefahren haben [100ms] + L 0 // Kontroll-Zeit abgelaufen ? + >I // Nein ! + R Dyn.FahrKontrolle.Ausfahrt_Neg // Ausfahrend: Kontroll-Time ist negativ + JC en17 + +// BM verklemmt ?: + A Dyn.FahrKontrolle.Ausfahrt_Neg // Ausfahrend: Kontroll-Time ist negativ + JC Un_A + + SET + S Dyn.FahrKontrolle.Ausfahrt_Neg // Ausfahrend: Kontroll-Time ist negativ + + A Dyn.FahrKontrolle.BT_Ausfahrt // BM fährt aus Weichenbereich + S Dyn.Error.BM_verklemmt_Ausfahrt // BM bei Ausfahrt in Weiche verklemmt (-> Antrieb gestoppt) + JC N_A // Zeit neu laden + +Un_A: L 0 + T Dyn.FahrKontrolle.Kontroll_Time_Ausfahrt // Innerhalb dieser Zeit muss BM Weiche ausgefahren haben [100ms] + +en17: NOP 0 + +// BM fährt aus: +// Zeit verändern: + AN Antrieb_aktiv // Band ist aktiv + ON "100ms-Impuls" + JC En17_Mig + + L Dyn.FahrKontrolle.Time_Ausfahrt // Diese Zeit benötigt BM zum Ausfahren [100ms] + L "MW2" // Anzahl der 100ms-Takte + -I + T Dyn.FahrKontrolle.Time_Ausfahrt // Diese Zeit benötigt BM zum Ausfahren [100ms] + L 0 // Ausfahr-Zeit abgelaufen ? + >I // Nein ! + JC En17_Mig + + T Dyn.FahrKontrolle.Time_Ausfahrt // Minimum übergeben + +En17_Mig: NOP 0 + + +--- NW 15: CARR-Telegramm an PC senden --- +Nw18: AN Weiche.Parameter.PC_Komm_aktiv + ON Dyn.Carr // CARR-Telegramm muss noch gesendet werden + O "SGes".Ohne_PC_Fahren + R Dyn.Carr // CARR-Telegramm muss noch gesendet werden + JC en13 + +// CARR mit dieser IDX schon gesendet?: (wegen Travel-FIFO leer) + L Daten.Sort_Info.Teil_IDX // IDX des BT + T "MD220" + L SAVE.Teil_IDX_Old // BT/MT-IDX (wurde bei Auslagerung gemeldet) + ==D + JC X130 + +// Puffer ermitteln: + L Weiche.AbzweigZiel + + -100 + T "Daten_für_SendFIFO".Puffer_LinienNr + +// Shopgroup ermitteln: +CALL FC "DatenOut" (SSDB:=1000, SSDW:=0, PARA:=16#0000, SEARCHDATEN:=P#M220.0, RE_VAL:="MB199", OUTDATEN:=DB1011.DBX0.0, Position:="MW196") // Eintrag lesen + + L "TrolleyDL_OutDaten".OUTDaten.ShopGroup + T "Daten_für_SendFIFO".StoreGroup + +// Bei leerem Trolley (-1) kein Telegramm: + L DINT#-1 + ==D + JC X130 + +CALL FB "Daten_in_SendFIFO_speichern" , (TelegrammKennung[1]:='B', TelegrammKennung[2]:='S', TelegrammKennung[3]:='R', TelegrammKennung[4]:='e', TelegrammKennung[5]:='s', TelegrammKennung[6]:='p', TelegrammKennung[7]:='M', TelegrammKennung[8]:=?, TelegrammKennung[9]:=?, TelegrammKennung[10]:=?, TrolleyID:=Daten.Sort_Info.Teil_IDX, StationsNr:=?, Puffer_LinienNr:=?, StoreGroup:=?, Status_1_Int:=?, Status_2_Bit[0]:=?, Status_2_Bit[1]:=?, Status_2_Bit[2]:=?, Status_2_Bit[3]:=?, Status_2_Bit[4]:=?, Status_2_Bit[5]:=?, Status_2_Bit[6]:=?, Status_2_Bit[7]:=?, Reserve[1]_Int:=?, Reserve[2]_Int:=?, Port:=1, Ret_Val_FIFO_IN:=?, Error:=Error_SendFIFO) // s.o. | s.o. + + A Error_SendFIFO + JC en13 + +X130: SET + R Dyn.Carr // CARR-Telegramm muss noch gesendet werden + + L Daten.Sort_Info.Teil_IDX // IDX des BT + T SAVE.Teil_IDX_Old // BT/MT-IDX (wurde bei Auslagerung gemeldet) + +en13: NOP 0 + + +--- NW 16: Trolley-ID in Puffer eintragen --- + AN Weiche.Parameter.IDX_an_Puffer + ON Dyn.Puffer_IDX // Trolley-ID in Puffer eintragen + R Dyn.Puffer_IDX // CARR-Telegramm muss noch gesendet werden + JC xn16 + + A Dyn.Status.Ziel_unbekannt // Ziel des BT ist unbekannt + JC X160 + + L Carr_Ziel // Ziel, das bei Carr-Telegramm gemeldet wird (1-20) + T "MW220" + +CALL FC "DatenOut" (SSDB:=275, SSDW:=0, PARA:=16#0000, SEARCHDATEN:=P#M220.0, RE_VAL:="MB199", OUTDATEN:=DB1275.DBX0.0, Position:="MW196") // Eintrag lesen + + L "MB199" + L 2#1111111 // Bit 7 ausblenden + AW + L 0 // Fehler vorhanden? + <>I // Ja + JC X160 + + L "LagerDL_OutDaten".OUTDaten.Puffer_Dyn_DB + T DatenDB // s.u. + + L "LagerDL_OutDaten".OUTDaten.Puffer_Dyn_DW + ITD + T AR1Start // Startwert mit Offset 0 + + L AR1Start // Startwert mit Offset 0 + + DINT#72 // Offset TrolleyID_Einfahrt + SLD 3 + T AR1Zeiger // Statt Dyn.Bereichsstop (ging nur bis DB-Länge <= 8191 Bytes) + + OPN DB[DatenDB] + + L Daten.Sort_Info.Teil_IDX // IDX des Trolleys an Omnipuffer melden + T DBD [AR1Zeiger] // Lager +1 (DBW 72) + +X160: SET + R Dyn.Puffer_IDX // CARR-Telegramm muss noch gesendet werden + +xn16: NOP 0 + + +--- NW 17: Weiche schalten --- + A Dyn.Status.Weiche_abzweigen // Weiche auf Abzweig schalten + R Dyn.Status.Weiche_geradeaus + = Y_Weiche_abzweigen + + A Dyn.Status.Weiche_geradeaus // Weiche auf Gerade schalten + = Y_Weiche_geradeaus + + +--- NW 18: Ende --- + BE + diff --git a/=A01+UH07-KF00/Programmbausteine/Module/MWeiche_Sorter_EP.awl b/=A01+UH07-KF00/Programmbausteine/Module/MWeiche_Sorter_EP.awl new file mode 100644 index 0000000..ecc3465 --- /dev/null +++ b/=A01+UH07-KF00/Programmbausteine/Module/MWeiche_Sorter_EP.awl @@ -0,0 +1,1136 @@ +=== FB 1178: MWeiche_Sorter_EP [STL] === +INTERFACE: + Input: + Weichen_Nr : Int // Aufruf für Weiche + KorrekturFaktor : Real + ErrQuit : Bool // Ablaufstörung quittieren + Stau_Ausfahrtbereich : Bool // Ausfahrtsbereich hat Stau + B_Gerade : Bool // Kontroll-Sensor nach Weiche Gerade + B_Ausfahrt : Bool // Kontroll-Sensor nach Weiche Ausfahrt + Antrieb_aktiv : Bool // Kreisel-Antrieb aktiv + Output: + Y_Weiche_abzweigen : Bool // Weiche auf Abzweig schalten + Y_Weiche_geradeaus : Bool // Weiche auf Gerade schalten + Error : Word // Störungen übergeben + InOut: + Antrieb_start : Bool // Kreiselantrieb starten + Antrieb_stoppen : Bool // Kreiselantrieb stoppen + hStOk : Bool // Anzeige Start n. Störung aktivieren + Static: + SAVE : Struct + IDX_Flag : Bool // Hauptstrang_DL +1 durchsuchen + Kontroll_Flag : Bool // Hauptstrang_DL +1 durchsuchen + Teil_IDX_Old : DInt // BT/MT-IDX (wurde bei Auslagerung gemeldet) + Para : Struct // Parameter + Weichen_DL_DB : Int // Einsprung Weichen-Datenliste-DB + Weichen_DL_DW : Int // Einsprung Weichen-Datenliste-DW + Res : Array[1..3] of Int // Reserve + Weiche : "UDLWeiche_Sorter" // Fahrbereichs Daten + Dyn : Struct // Dynamische Daten fürs Einfahren + Status : Struct // Status + Schalttakte : DInt // Anzahl der getätigten Umschaltungen + Strecke_gesperrt : Bool // Gefällestrecke ist gesperrt + Strecke_voll : Bool // Gefällestrecke ist voll + Weiche_abzweigen : Bool // Weiche auf Abzweig schalten + Weiche_geradeaus : Bool // Weiche auf Gerade schalten + TeachModus_aktiv : Bool // Teach-Modus ist aktiv + Res45 : Bool + Weichentest_aktiv : Bool // Testschaltung für Einfahrweiche aktiviert + Reset : Bool := TRUE // Reset Einfahrseite starten + Ziel_unbekannt : Bool // Ziel des BT ist unbekannt + Rueckmld : Struct + RET_VAL_BLKMOV_Weiche : Int // Rückmeldung nach BLKMOV-Aufruf + RET_VAL_DL_Weichen : Byte // Rückmeldung nach DatenOut-Aufruf + RET_VAL_Sortliste_Out : Byte // Rückmeldung nach Sortdaten-Out-Aufruf + RET_VAL_SendFIFO : Byte // Rückmeldung nach SendPC_FIFO-Aufruf + Error : "UErrWeiche_Sorter" + Ink_Wert : DInt // Aktueller Inkrementalwert + Max_Wert : DInt // Maximal erlaubter Zählwert + Lauf_Flag : Bool // Zähl-Lauf mit Flag ist aktiv + Flag_Lauf_fertig : Bool // Flag-Lauf wurde beendet + Ohne_Lauf_fertig : Bool // Ohne Flag-Lauf wurde beendet + Hauptstrang_Flag : Bool // Flag zum Weiche schalten (vom Hauptstrang) + Last_Flag : Bool // Flag des letzten durchfahrenden Teils + GSTschalt_Flag : Bool // Flag bei Weiche auf GST schalten + Carr : Bool // CARR-Telegramm muss noch gesendet werden + Puffer_IDX : Bool // Trolley-ID in Puffer eintragen + Ohne_VerklemmKontrolle : Bool // Verklemmkontrolle ausschalten + BM_raus : Bool // BM wurde ausgeschleußt (1 Zyklus) + BM_gerade : Bool // BM wurde gerade gefahren (1 Zyklus) + Max_raus : Bool // Max_Wert wurde schon übertragen + Hauptstrang_Ink : DInt // Inkremente zum Weiche schalten (vom Hauptstrang) + Hauptstrang_Sortliste : Int // Sortliste aus welcher Hauptstrangdaten sind + Hauptstrang_Search_Ink : DInt // Inkremente zum Daten auslesen (Start-Ink) + Hauptstrang_Pos : Int // Aktuelle Position der Daten in Datenliste + GSTschalt_Ink : DInt // Inkremente zum Weiche auf GST schalten + Last_Ink : DInt // Inkremente des letzten durchfahrenden Teils + Last_IDX : DInt // IDX des letzten durchfahrenden Teils + FahrKontrolle : Struct + Ohne_VerklemmKontrolle : Bool // Verklemmkontrolle ausschalten + BT_Gerade : Bool // BM fährt geradeaus durch Weichenbereich + BT_Ausfahrt : Bool // BM fährt aus Weichenbereich + BM_Gerade_erkannt : Bool // Geradeausfahrendes BM wurde erkannt + Gerade_Neg : Bool // Geradeaus: Kontroll-Time ist negativ + BM_Ausfahrt_erkannt : Bool // Ausfahrendes BM wurde erkannt + Ausfahrt_Neg : Bool // Ausfahrend: Kontroll-Time ist negativ + Kontroll_Time_Gerade : Int // Innerhalb dieser Zeit muss BM Weiche gerade verlassen haben [100ms] + Kontroll_Time_Ausfahrt : Int // Innerhalb dieser Zeit muss BM Weiche ausgefahren haben [100ms] + Time_Ausfahrt : Int // Diese Zeit benötigt BM zum Ausfahren [100ms] + Res128 : Array[1..1] of Int // Reserve + Daten : "UBT_Daten" + Kontroll_IDX : DInt // IDX des zu kontollierenden Teils + Res200 : Array[1..23] of Int // Reserve + Temp: + Quelle : Any // Zeiger, wo Rein-Daten sind + Ziel : Any // Zeiger, FIFO-Stelle + Del : Bool // Nur Sortdaten löschen + Error_SendFIFO : Bool + FC86_Para : Word // Parameter-Übergabe + Hauptstrang_Ink : DInt // Inkremente zum Weiche schalten (vom Hauptstrang) + Parameter : Word // Parameter + Freigabe : Int + Carr_Ziel : Int // Ziel, das bei Carr-Telegramm gemeldet wird + DatenDB : Int // DB öffnen + sKorrekturFaktor : Real // Korrektur-Faktor wegen Kettenlängung + AR1Start : DInt // Startwert mit Offset 0 + AR1Zeiger : DWord // Statt AR1 (ging nur bis DB-Länge <= 8191 Bytes) + Constant: + +--- NW 1: Parameter-Übergabe --- + L Weichen_Nr // Aufruf-Parameter (für Baustein beobachten) + + L "MW178" // Einsprung Weichen-DL + T Para.Weichen_DL_DB // vor Aufruf übergeben! + L 0 + T Para.Weichen_DL_DW + + +--- NW 2: Eingangsvariablen einlesen --- + L KorrekturFaktor + T sKorrekturFaktor + + +--- NW 3: Für Inbetriebnahme --- +// Beim Teachen Weiche auf gerade: + A Dyn.Status.TeachModus_aktiv + S Y_Weiche_geradeaus // Weiche auf gerade schalten + R Y_Weiche_abzweigen + R Dyn.Status.Weiche_abzweigen // Weiche auf Abzweig schalten + R Dyn.Status.Weiche_geradeaus // Weiche auf Gerade schalten + BEC + +// Weichentest: + AN Dyn.Status.Weichentest_aktiv + JC en01 + + A "Clock_1Hz" + = Y_Weiche_abzweigen // Weiche zyklisch umschalten + NEG + = Y_Weiche_geradeaus + + SET + R Dyn.Status.Weiche_abzweigen // Weiche auf Abzweig schalten + R Dyn.Status.Weiche_geradeaus // Weiche auf Gerade schalten + + BEU + +en01: NOP 0 + + +--- NW 4: Gesamt: Out-Bits zum Zurücksetzen --- + SET + R Y_Weiche_abzweigen // Weiche auf Abzweig schalten + R Y_Weiche_geradeaus // Weiche auf gerade schalten + R Dyn.BM_raus // BM wurde ausgeschleußt (1 Zyklus) + R Dyn.BM_gerade // BM wurde gerade gefahren (1 Zyklus) + + +--- NW 5: Statische Weichen-Parameter holen --- + L Weiche.Weichen_Nr // Nummer der Weiche + L Weichen_Nr // Aufruf-Parameter + ==I // Identisch ? + R Dyn.Error.Weichen_DL // Weichendatenbank fehlerhaft + R Dyn.Error.Undef_Weiche // undefinierte Weiche + JC en06 // Ja ! + + T "MW200" // Search-Daten + +CALL FC "DatenOut" (SSDB:=Para.Weichen_DL_DB, SSDW:=Para.Weichen_DL_DW, PARA:=WORD#16#0000, SEARCHDATEN:=P#M200.0, RE_VAL:="MB199", OUTDATEN:=P#M220.0, Position:="MW196") + + L "MB199" + T Dyn.Rueckmld.RET_VAL_DL_Weichen // Rückmeldung bei Datenbank-Zugriff (Gefälle-DL) + + JBI G_Ok + + A "M199.0" + = Dyn.Error.Weichen_DL // Weichendatenbank fehlerhaft + BEC + + SET + S Dyn.Error.Undef_Weiche // undefinierte Weiche + + BEU + +// Kennung + Datenbytes +G_Ok: SET + R Dyn.Error.Weichen_DL // Weichendatenbank fehlerhaft + R Dyn.Error.Undef_Weiche // undefinierte Weiche + + L 16#1004 // Kennung 10 + Word=04 + T LW0 // Any-Kennung, Datentyp + L 40 // Datenwords speichern + T LW2 // Wiederholungen + +// Quelle-Pointer erzeugen: + L 0 // Bei Merker = 0 ! + T LW4 // DB_Nummer + L 220 // Adresse + SLD 3 + L 16#8300_0000 // Kennung: Merker + OD + T LD6 // Kennung, Adresse + +CALL SYS "BLKMOV" (SRCBLK:=Quelle, RET_VAL:=Dyn.Rueckmld.RET_VAL_BLKMOV_Weiche, DSTBLK:=Weiche) // Datenliste-Daten speichern | #Ziel + + L Dyn.Rueckmld.RET_VAL_BLKMOV_Weiche // Rückmeldung + L 0 // Fehler vorhanden ? + <>I // Ja ! + = Dyn.Error.BLKMov // Error bei Block kopieren + BEC + + L Weiche.Weichen_Typ // Weichentyp = 178 (Weiche) + L 178 // Dieser Aufruf-FB ? + ==I // Ja ! + JC en06 + + SET + S Dyn.Error.Undef_Weiche // undefinierte Weiche + + L 0 // Weiche ungültig ! + T Weiche.Weichen_Nr // Nummer der Weiche + + BEU + +en06: NOP 0 + + +--- NW 6: + --- + AN Dyn.Status.Reset + JC En06_Mig + +// Dyn.Daten löschen: + SET + R Dyn.Status.Reset + R Dyn.Status.Strecke_voll + R Y_Weiche_abzweigen // Weiche auf Abzweig schalten + S Y_Weiche_geradeaus // Weiche auf gerade schalten + R Dyn.Status.Weichentest_aktiv + R Dyn.Hauptstrang_Flag + R Dyn.Last_Flag + R Dyn.FahrKontrolle.BT_Gerade // BM fährt geradeaus durch Weichenbereich + R Dyn.FahrKontrolle.BT_Ausfahrt // BM fährt aus Weichenbereich + R Dyn.FahrKontrolle.Gerade_Neg // Geradeaus: Kontroll-Time ist negativ + R Dyn.FahrKontrolle.Ausfahrt_Neg // Ausfahrend: Kontroll-Time ist negativ +// / R #Dyn.Ohne_VerklemmKontrolle //Verklemmkontrolle ausschalten + R Dyn.Max_raus // Max_Wert wurde schon übertragen + + A Weiche.Parameter.Weichen_GST_gerade + = Dyn.Status.Weiche_geradeaus + A Weiche.Parameter.Weichen_GST_abzweig + AN Weiche.Parameter.Weichen_GST_gerade + = Dyn.Status.Weiche_abzweigen + + L 0 + T Dyn.Hauptstrang_Ink + T Dyn.Hauptstrang_Search_Ink + T Dyn.Last_Ink + + L 0 + T Dyn.Hauptstrang_Sortliste + T Dyn.FahrKontrolle.Kontroll_Time_Gerade // Innerhalb dieser Zeit muss BM Weiche verlassen haben [100ms] + T Dyn.FahrKontrolle.Kontroll_Time_Ausfahrt // Innerhalb dieser Zeit muss BM Weiche ausgefahren haben [100ms] + + L DINT#0 + T Kontroll_IDX + T Dyn.Last_IDX + +// Rückmeldungen löschen: + L 0 + T Dyn.Rueckmld.RET_VAL_DL_Weichen + T Dyn.Rueckmld.RET_VAL_BLKMOV_Weiche + T Dyn.Rueckmld.RET_VAL_Sortliste_Out + +// Störungen löschen: + SET + R Dyn.Error.Weichen_DL + R Dyn.Error.Undef_Weiche + R Dyn.Error.BLKMov + R Dyn.Error.Haupstrang_DL + R Dyn.Error.Haupstrang_DL_voll + R Dyn.Error.Keine_HSDaten + R Dyn.Error.Rein_FIFO + R Dyn.Error.Keine_FIFODaten + R Dyn.Error.Stau_AusfahrBereich + R Dyn.Error.BM_verklemmt_Gerade + R Dyn.Error.BM_verklemmt_Ausfahrt + R Dyn.Error.BM_undef_Gerade + R Dyn.Error.Frei14 + R Dyn.Error.Send_FIFO_fehlerhaft // Send-FIFO zum PC ist fehlerhaft + R Dyn.Error.Send_FIFO_voll // Send-FIFO zu PC ist voll + R Dyn.Error.Reset_aktiv // Reset ist aktiv + + L 0 // Damit statische Werte neu aus Datenbank geholt werden ! + T Weiche.Weichen_Nr // Nummer der Weiche + + BEU + +En06_Mig: NOP 0 + + +--- NW 7: Störungen nach Außen übergeben --- + L 0 + T "MB200" + + A Dyn.Error.Weichen_DL // Weichen-Datenliste fehlerhaft + = "M200.0" + A Dyn.Error.Undef_Weiche // undefinierte Weiche + = "M200.1" + A Dyn.Error.BLKMov // Fehler bei Block kopieren + = "M200.2" + A Dyn.Error.Haupstrang_DL // Haupstrang-Datenliste fehlerhaft + = "M200.3" + A Dyn.Error.Haupstrang_DL_voll // Haupstrang-Datenliste ist voll + = "M200.4" + A Dyn.Error.Keine_HSDaten // Keine Hauptstrang-Daten mehr vorhanden + = "M200.5" + A Dyn.Error.Rein_FIFO // Rein-FIFO fehlerhaft + = "M200.6" + A Dyn.Error.Keine_FIFODaten // Keine Rein-Daten mehr vorhanden + = "M200.7" + A Dyn.Error.Stau_AusfahrBereich // Stau im Ausfahrbereich (-> Antrieb stoppen) + = "M201.0" + A Dyn.Error.BM_verklemmt_Gerade // BM bei Weiterfahrt in Weiche verklemmt (-> Antrieb stoppen) + = "M201.1" + A Dyn.Error.BM_verklemmt_Ausfahrt // BM bei Ausfahrt in Weiche verklemmt (-> Antrieb stoppen) + = "M201.2" + A Dyn.Error.BM_undef_Gerade // undefiniertes BM bei Weiterfahrt erkannt + = "M201.3" + A Dyn.Error.Frei14 + = "M201.4" + A Dyn.Error.Send_FIFO_fehlerhaft // Send-FIFO zum PC ist fehlerhaft + = "M201.5" + A Dyn.Error.Send_FIFO_voll // Send-FIFO zu PC ist voll + = "M201.6" + CLR // Reset ist aktiv (gibts nicht!) + = Dyn.Error.Reset_aktiv + = "M201.7" + + L "MW200" + T Error // Schnittstelle nach Außen + +// Kreiselantrieb stoppen: + AN Stau_Ausfahrtbereich // Ausfahrtsbereich hat Stau + R Dyn.Error.Stau_AusfahrBereich // Stau im Ausfahrbereich (-> Antrieb stoppen) + +// Antrieb stoppen: + A( + O Dyn.Error.BM_verklemmt_Ausfahrt // BM bei Ausfahrt in Weiche verklemmt (-> Antrieb stoppen) + O Dyn.Error.BM_verklemmt_Gerade // BM bei Weiterfahrt in Weiche verklemmt (-> Antrieb stoppen) + ) + AN ErrQuit + O Dyn.Error.Stau_AusfahrBereich // Stau im Ausfahrbereich (-> Antrieb stoppen) + O Dyn.Error.Send_FIFO_fehlerhaft // Send-FIFO zum PC ist fehlerhaft + O Dyn.Error.Send_FIFO_voll // Send-FIFO zu PC ist voll + S Antrieb_stoppen // Kreiselantrieb stoppen + +// Anzeige Start n. Störung aktivieren: + A Dyn.Error.BM_verklemmt_Ausfahrt // BM bei Ausfahrt in Weiche verklemmt (-> Antrieb stoppen) + O Dyn.Error.BM_verklemmt_Gerade // BM bei Weiterfahrt in Weiche verklemmt (-> Antrieb stoppen) + O Dyn.Error.Stau_AusfahrBereich // Stau im Ausfahrbereich (-> Antrieb stoppen) + S hStOk + + +--- NW 8: Daten des Inkremental-Gebers holen / Zeit-Inkremente --- + L Weiche.Ink_DB // DB-Nr des Inkremental-Geber + L 0 // angegeben ? + <=I // Nein ! + JC w040 + + CAC + T "MW200" + OPN DB["MW200"] // Zähler-DB öffnen + L DBD80 + T Dyn.Ink_Wert + L DBD76 + T Dyn.Max_Wert + A DBX74.3 + = Dyn.Lauf_Flag + A DBX74.4 + = Dyn.Flag_Lauf_fertig + A DBX74.5 + = Dyn.Ohne_Lauf_fertig + + JU en04 + +// Zeit-Inkremente erzeugen: +w040: AN Antrieb_aktiv + JC w041 + + L "MW4" // 10ms-Takte + ITD + L Dyn.Ink_Wert + +D // Aktueller Zählerwert +100ms-Takte + T Dyn.Ink_Wert + +w041: L DINT#10000 // Festwert: 10000 (100s) + T Dyn.Max_Wert + + L Dyn.Ink_Wert // Aktueller Zählerwert + L Dyn.Max_Wert // Max. Wert erreicht ? + <=D // Nein ! + R Dyn.Ohne_Lauf_fertig // Ohne Flag-Lauf wurde beendet + R Dyn.Flag_Lauf_fertig // Flag-Lauf wurde beendet + JC en04 + + -D // Restwert als Startwert nehmen ! + T Dyn.Ink_Wert + + AN Dyn.Lauf_Flag // Umschaltung Zähl-Lauf ohne-mit-ohne Flag + = Dyn.Ohne_Lauf_fertig // Ohne Flag-Lauf wurde beendet + A Dyn.Lauf_Flag // Umschaltung Zähl-Lauf ohne-mit-ohne Flag + = Dyn.Flag_Lauf_fertig // Flag-Lauf wurde beendet + + AN Dyn.Lauf_Flag // Umschaltung Zähl-Lauf ohne-mit-ohne Flag + = Dyn.Lauf_Flag + +en04: NOP 0 + + +--- NW 9: + --- + A "Hauptstrang_leer" // Keine Haupstrangdaten vorhanden -> Verklemm-Errors löschen + AN B_Gerade + R Dyn.Error.BM_undef_Gerade // undefiniertes BM bei Weiterfahrt erkannt + + AN ErrQuit + JC En08 + +// Störungen löschen: + SET + R Dyn.Error.BM_undef_Gerade + R Dyn.Error.Frei14 + + A "Hauptstrang_leer" // Keine Haupstrangdaten vorhanden -> Verklemm-Errors löschen + A Dyn.Error.BM_verklemmt_Gerade + CLR // Nie da große Trolleys + R Dyn.Error.BM_verklemmt_Gerade + R Dyn.FahrKontrolle.BT_Gerade + + A "Hauptstrang_leer" // Keine Haupstrangdaten vorhanden -> Verklemm-Errors löschen + A Dyn.Error.BM_verklemmt_Ausfahrt + CLR // Nie da große Trolleys + R Dyn.Error.BM_verklemmt_Ausfahrt + R Dyn.FahrKontrolle.BT_Ausfahrt + +// Kann nur über Reset zurückgesetzt werden: +// R #Dyn.Error.Weichen_DL +// R #Dyn.Error.Undef_Weiche +// R #Dyn.Error.BLKMov +// R #Dyn.Error.Haupstrang_DL +// R #Dyn.Error.Haupstrang_DL_voll +// R #Dyn.Error.Keine_HSDaten +// R #Dyn.Error.Rein_FIFO +// R #Dyn.Error.Keine_FIFODaten +// R #Dyn.Error.Stau_AusfahrBereich +// R #Dyn.Error.BM_verklemmt_Gerade +// R #Dyn.Error.BM_verklemmt_Ausfahrt +// R #Dyn.Error.Send_FIFO_fehlerhaft //Send-FIFO zum PC ist fehlerhaft +// R #Dyn.Error.Send_FIFO_voll //Send-FIFO zu PC ist voll +// R #Dyn.Error.Reset_aktiv //Reset ist aktiv + +En08: NOP 0 + + +--- NW 10: Schaltpunkt aufgrund von Hauptstrangdaten suchen --- + L Dyn.Hauptstrang_Ink // Inkremente zum Weiche schalten (vom Hauptstrang) + L DINT#0 // schon bekannt ? + >D // Ja ! + S Antrieb_start // Kreiselantrieb starten + JC Nw09 + +// Nach neuen Daten suchen: + AN "Weiche_NewData" // Im Weichenbereich nach neuen Daten suchen + JC w076 + + L Dyn.Ink_Wert // Aktueller Inkrementalwert + L Weiche.Off_Ink // Inkremente zum Weiche schalten + >D // Gleiches Flag/Flag wie Inkgeber zum Suchen + JC w071 + +// Anders Flag/Liste wie Inkgeber zum Suchen: + L Weiche.Hauptstrang_DL_DB + + A Dyn.Lauf_Flag // Inkgeber schon mit Lauf-Flag + R SAVE.IDX_Flag // Hauptstrang_DL +1 durchsuchen + JC w070 + + SET + S SAVE.IDX_Flag // Hauptstrang_DL +1 durchsuchen + + + 1 + +w070: T Dyn.Hauptstrang_Sortliste // Sortliste aus welcher Hauptstrangdaten sind + + JU w073 + +// Gleiches Flag/Liste wie Inkgeber zum Suchen: +w071: L Weiche.Hauptstrang_DL_DB + + AN Dyn.Lauf_Flag // Inkgebeer ohne Lauf-Flag + R SAVE.IDX_Flag // Hauptstrang_DL +1 durchsuchen + JC w072 + + SET + S SAVE.IDX_Flag // Hauptstrang_DL +1 durchsuchen + + + 1 + +w072: T Dyn.Hauptstrang_Sortliste // Sortliste aus welcher Hauptstrangdaten sind + +// Hauptstrang Sortliste nach Position -1 durchsuchen: +w073: CALL FC "DatenFindOffsetSort" (SSDB:=Dyn.Hauptstrang_Sortliste, SSDW:=Weiche.Hauptstrang_DL_DW, PARA:=WORD#16#0B01, SEARCHDATEN:=Weiche.Position_minus, RE_VAL:="MB199", OUTDATEN:=Daten, Position:="MW196") // nach 11.DW (letzte Position) suchen + + L "MB199" + T Dyn.Rueckmld.RET_VAL_Sortliste_Out + + A "M199.7" // Datensatz ist vorhanden + R Dyn.Error.Haupstrang_DL // Sortliste fehlerhaft + JC w074 + + A "M199.6" // Datensatz ist nicht vorhanden + R Dyn.Error.Haupstrang_DL // Sortliste fehlerhaft + JC Nw09 // Warten, da noch keine Daten vorhanden + + SET + S Dyn.Error.Haupstrang_DL // Sortliste fehlerhaft + +w076: L 0 // Keine Daten auf Hauptstrang vorhanden + T Dyn.Hauptstrang_Ink // Inkremente zum Weiche schalten (vom Hauptstrang) + + JU Nw09 + +// Search-Ink speichern: +w074: L Daten.Start_Ink // Stamm-Daten speichern + T Dyn.Hauptstrang_Search_Ink // Inkremente zum Daten auslesen (Start-Ink) + +// Hauptstrang-Schaltdaten errechnen/speichern: +// Kettenlängungs-Korrektur: + L sKorrekturFaktor // Korrektur-Faktor wegen Kettenlängung + L 0.995 // sinnvoller Wert ? (maximal 0,5% Abweichung erlaubt) + >=R // Ja ! + A( + CAC + L 1.005 + <=R + ) + JC w075 + + L 1.0 // dann ohne Korrektur ! + T sKorrekturFaktor // Korrektur-Faktor wegen Kettenlängung + +// Schaltdaten errechnen: +w075: A Daten.Start_Flag // Lauf-Flag bei Start-Inkremente + = Dyn.Hauptstrang_Flag // Flag zum Weiche schalten (vom Hauptstrang) + + L Weiche.Off_Ink // Inkremente zum Weiche schalten + DTR + L sKorrekturFaktor // Korrektur-Faktor wegen Kettenlängung + *R + RND + L Daten.Start_Ink // Daten aus Sortliste dazuaddieren + +D + T Dyn.Hauptstrang_Ink // Inkremente zum Weiche schalten (vom Hauptstrang) + L Dyn.Max_Wert // Maximal erlaubter Zählwert + >D + JCN Nw09 + + -D // Restwert übernehmen + T Dyn.Hauptstrang_Ink // Inkremente zum Weiche schalten (vom Hauptstrang) + + AN Daten.Start_Flag // Lauf-Flag bei Start-Inkremente (invertieren) + = Dyn.Hauptstrang_Flag // Flag zum Weiche schalten (vom Hauptstrang) + + +--- NW 11: Weiche aufgrund der Hauptstrangdaten schalten --- +Nw09: L Dyn.Hauptstrang_Ink // Inkremente zum Weiche schalten (vom Hauptstrang) + L DINT#0 // angegeben ? + <=D // Nein ! + JC w08E + + A Dyn.Hauptstrang_Flag // Flag zum Weiche schalten (vom Hauptstrang) + A Dyn.Flag_Lauf_fertig // Flag-Lauf wurde beendet + O + AN Dyn.Hauptstrang_Flag // Flag zum Weiche schalten (vom Hauptstrang) + A Dyn.Ohne_Lauf_fertig // Flag-Lauf wurde beendet + JC w080 // beim Ende des Lauf sind Inkremente uninteressant + + A Dyn.Hauptstrang_Flag // Flag zum Weiche schalten (vom Hauptstrang) + A Dyn.Lauf_Flag // Zähl-Lauf mit Flag ist aktiv + O + AN Dyn.Hauptstrang_Flag // Flag zum Weiche schalten (vom Hauptstrang) + AN Dyn.Lauf_Flag // Zähl-Lauf mit Flag ist aktiv + JCN en08_Mig + + L Dyn.Ink_Wert // Aktuelle Inkrementalwert + L Dyn.Hauptstrang_Ink // Inkremente zum Weiche schalten (vom Hauptstrang) + I // BM soll nicht ausfahren ! + ON Weiche.Parameter.ErsatzZiel_bei_Stau // Bei Stau soll Ersatz-Ziel angefahren werden + ON Stau_Ausfahrtbereich + JC x081 + + L Weiche.ErsatzZiel // Ersatz-Ziel übergeben + T Daten.Sort_Info.Teil_Ziel + +x081: L Daten.Sort_Info.Teil_Ziel // Ziel des BT (aufgrund vom Hauptstrang) + L 0 + <=I + = Dyn.Status.Ziel_unbekannt // Ziel des BT ist unbekannt + + A Dyn.Status.Ziel_unbekannt // Ziel des BT ist unbekannt + A Weiche.Parameter.Weichen_GST_gerade + AN Weiche.Parameter.Weichen_GST_abzweig + JC x100 // BT mit unbekanntem Ziel geradeaus fahren + + A Dyn.Status.Ziel_unbekannt // Ziel des BT ist unbekannt + AN Weiche.Parameter.Weichen_GST_gerade + A Weiche.Parameter.Weichen_GST_abzweig + JC w082 // BT mit unbekanntem Ziel ausfahren + + L Daten.Sort_Info.Teil_Ziel // Ziel des BT (aufgrund vom Hauptstrang) + L Weiche.AbzweigZiel // Bei diesem Ziel Weiche auf Abzweig schalten + Carl + T Carr_Ziel // Ziel, das bei Carr-Telegramm gemeldet wird + ==I // BM soll ausfahren + S Dyn.Carr // CARR-Telegramm muss noch gesendet werden + S Dyn.Puffer_IDX // Trolley-ID in Puffer eintragen + JC w082 // Teil ausfahren + + L Daten.Sort_Info.Teil_Ziel // Ziel des BT (aufgrund vom Hauptstrang) + L Weiche.GeradeZiel // Bei diesem Ziel Weiche auf Gerade schalten + Carl + <>I // BM soll also ausfahren, da nicht das GeradeZiel! + A( + L 0 // sinnvolle Angabe ? + >I // Ja ! + ) + JC w082 // Teil ausfahren (ohne CARR, da undef. rausfahren!) + +// Teile geradeaus fahren:****************************************************************************************************** +x100: SET + S Dyn.Status.Weiche_geradeaus // Weiche auf Gerade schalten + R Dyn.Status.Weiche_abzweigen + S Dyn.BM_gerade // BM wurde gerade gefahren (1 Zyklus) + +// Verklemm-Kontroll-Info speichern: + AN Weiche.Parameter.Kontroll_B_Gerade // Kontroll-Sensor bei Weiterfahrt (gerade) + JC k100 // Letzter BM noch nicht kontrolliert + + A Dyn.FahrKontrolle.BT_Gerade // BM fährt geradeaus durch Weichenbereich + JC k100 // Letzter BM noch nicht kontrolliert + + L Dyn.Last_IDX // IDX des letzten durchfahrenden Teils + T Kontroll_IDX // IDX des zu kontollierenden Teils + A SAVE.IDX_Flag // Hauptstrang_DL +1 durchsuchen + = SAVE.Kontroll_Flag // Hauptstrang_DL +1 durchsuchen + + L Weiche.Kontroll_Zeit_gerade // Nach dieser Zeit muss BM Weichenbereich verlassen haben [100ms] + T Dyn.FahrKontrolle.Kontroll_Time_Gerade // Innerhalb dieser Zeit muss BM Weiche gerade verlassen haben [100ms] + + SET + S Dyn.FahrKontrolle.BT_Gerade // BM fährt geradeaus durch Weichenbereich + R Dyn.FahrKontrolle.Gerade_Neg // Geradeaus: Kontroll-Time ist negativ + +// CARR-Telegramm erwünscht ?: +k100: L Daten.Sort_Info.Teil_Ziel // Ziel des BT (aufgrund vom Hauptstrang) + L Weiche.GeradeZiel // Bei diesem Ziel Weiche auf Gerade schalten + Carl + T Carr_Ziel // Ziel, das bei Carr-Telegramm gemeldet wird + ==I // BM soll ausfahren + S Dyn.Carr // CARR-Telegramm muss noch gesendet werden + + A Weiche.Parameter.Letzte_Weiche // Letzte Weiche im Verbund + S Del // Nur Sortdaten löschen + JC w084 // Daten aus Sortliste löschen + +// Letzte Position neu speichern: +New: L Weiche.Weichen_Nr // Nummer der Weiche + T Daten.letzte_Position // Letzte Position, wo Teil vorbeigefahren ist + +CALL FC "DatenIn" (SSDB:=Dyn.Hauptstrang_Sortliste, SSDW:=Weiche.Hauptstrang_DL_DW, INDATEN:=Daten, RE_VAL:="MB199") + + L "MB199" + T Dyn.Rueckmld.RET_VAL_Sortliste_Out + + A "M199.7" // Datensatz ist vorhanden /Alles Ok) + JC GST + + SET + S Dyn.Error.Haupstrang_DL // Sortliste fehlerhaft + JU GST + +// Teile ausfahren:************************************************************************************************************ +w082: A Dyn.Status.Weiche_abzweigen // Weiche war schon auf Abzweig + JC w083 + + L Dyn.Status.Schalttakte + + DINT#1 // Auf Abzweig umgeschaltet +1 + T Dyn.Status.Schalttakte + +w083: SET + S Dyn.Status.Weiche_abzweigen // Weiche auf Abzweig schalten + R Dyn.Status.Weiche_geradeaus + R Del // Nur Sortdaten löschen + S Dyn.BM_raus // BM wurde ausgeschleußt (1 Zyklus) + + L 300 // Nach dieser Zeit ist BM ausgefahren [300*100ms] + T Dyn.FahrKontrolle.Time_Ausfahrt // Diese Zeit benötigt BM zum Ausfahren [100ms] + +// Verklemm-Kontroll-Info speichern: + AN Weiche.Parameter.Kontroll_B_Ausfahrt // Kontroll-Sensor bei Ausfahrt (abzweig) + JC k101 // Letzter BM noch nicht kontrolliert + + A Dyn.FahrKontrolle.BT_Ausfahrt // BM fährt aus Weichenbereich + JC k101 // Letzter BM noch nicht kontrolliert + + L Dyn.Last_IDX // IDX des letzten durchfahrenden Teils + T Kontroll_IDX // IDX des zu kontollierenden Teils + A SAVE.IDX_Flag // Hauptstrang_DL +1 durchsuchen + = SAVE.Kontroll_Flag // Hauptstrang_DL +1 durchsuchen + + L Weiche.Kontroll_Zeit_abzweigen // Nach dieser Zeit muss BM Weichenbereich verlassen haben [100ms] + T Dyn.FahrKontrolle.Kontroll_Time_Ausfahrt // Innerhalb dieser Zeit muss BM Weiche ausgefahren haben [100ms] + + SET + S Dyn.FahrKontrolle.BT_Ausfahrt // BM fährt aus Weichenbereich + R Dyn.FahrKontrolle.Ausfahrt_Neg // Ausfahrend: Kontroll-Time ist negativ + +k101: A Stau_Ausfahrtbereich // Ausfahrtsbereich hat Stau + AN Weiche.Parameter.ErsatzZiel_bei_Stau // Bei Stau soll Ersatz-Ziel angefahren werden + S Dyn.Error.Stau_AusfahrBereich // Stau im Ausfahrbereich (-> Antrieb stoppen) + +// Falls Entlade-Weiche neues Leer-Ziel übergeben: + AN Weiche.Parameter.Entlade_Weiche // BM wird entladen -> Leerziel übergeben + O Weiche.Parameter.Letzte_Weiche // Letzte Weiche im Verbund + JC w084 + + L Weiche.LeerZiel // Nach Entladen des BM dieses Ziel übergeben + T Daten.Sort_Info.Teil_Ziel // BM bei diesem Abwurf-Ziel ausfahren/entladen + L 0 // Sinnvolle Angabe ? + >I // Ja ! + JC New // Daten mit neuem Ziel an Hauptstrang übergeben ! + +// Daten aus Sortliste löschen +w084: L Dyn.Hauptstrang_Pos // Aktuelle Position der Daten in Datenliste + L 16#0E00 // 0EYY: DS YY löschen + OW + T FC86_Para + +CALL FC "DatenOutSort" (SSDB:=Dyn.Hauptstrang_Sortliste, SSDW:=Weiche.Hauptstrang_DL_DW, PARA:=FC86_Para, OUTDATEN:=Daten, RE_VAL:="MB199") // DS YY löschen + +// GST-Schalt-Inks speichern: +GST: AN Weiche.Parameter.Weichen_GST_gerade + AN Weiche.Parameter.Weichen_GST_abzweig + JC w08E + + L Weiche.Ink_Schaltdauer // Inkremente (Fenster), danach wird Weiche in GST geschaltet + L 0 // sinnvoller Wert ? + <=I // Nein ! + JC w08E + + L Weiche.Ink_Schaltdauer // Inkremente (Fenster), danach wird Weiche in GST geschaltet + ITD + L Dyn.Ink_Wert // Aktueller Inkrementalwert + +D + T Dyn.GSTschalt_Ink // Inkremente bei Weiche auf GST schalten + A Dyn.Lauf_Flag // Zähl-Lauf mit Flag ist aktiv + = Dyn.GSTschalt_Flag // Flag bei Weiche auf GST schalten + + L Dyn.Max_Wert // Maximal erlaubter Zählwert überschritten ? + <=D // Nein ! + JC w08E + + -D // Restwert übernehmen + T Dyn.GSTschalt_Ink // Inkremente bei Weiche auf GST schalten + AN Dyn.Lauf_Flag // Zähl-Lauf mit Flag ist aktiv (invertieren, da Überlauf!) + = Dyn.GSTschalt_Flag // Flag bei Weiche auf GST schalten + +w08E: L DINT#0 + T Dyn.Hauptstrang_Ink // Inkremente zum Weiche schalten (vom Hauptstrang) + +en08_Mig: NOP 0 + + +--- NW 12: Weiche auf GST zurückschalten --- + L Dyn.GSTschalt_Ink // Inkremente bei Weiche auf GST schalten + L 0 // sinnvolle Angabe ? + <=D // Nein ! + JC X111 + + A Dyn.GSTschalt_Flag // Flag bei Weiche auf GST schalten + A Dyn.Flag_Lauf_fertig // Flag-Lauf wurde beendet + O + AN Dyn.GSTschalt_Flag // Flag bei Weiche auf GST schalten + A Dyn.Ohne_Lauf_fertig // Flag-Lauf wurde beendet + JC w110 // beim Ende des Lauf sind Inkremente uninteressant + + A Dyn.GSTschalt_Flag // Flag bei Weiche auf GST schalten + A Dyn.Lauf_Flag // Zähl-Lauf mit Flag ist aktiv + O + AN Dyn.GSTschalt_Flag // Flag bei Weiche auf GST schalten + AN Dyn.Lauf_Flag // Zähl-Lauf mit Flag ist aktiv + JCN en11 + + L Dyn.Ink_Wert // Aktuelle Inkrementalwert + L Dyn.GSTschalt_Ink // Inkremente bei Weiche auf GST schalten + D // Haupstrangdaten sind kleiner + A( + L 0 // sinnvolle Hauptstrang-Daten ? + <>D // Ja ! + ) + JC X111 // Nicht auf GST schalten, da nächste Daten schon kommen ! + +// Weiche auf GST schalten: + A Weiche.Parameter.Weichen_GST_gerade + AN Weiche.Parameter.Weichen_GST_abzweig + JCN W110_Mig // Negierter Sprung ! + + A Dyn.FahrKontrolle.BT_Ausfahrt // BM fährt aus Weichenbereich + O Dyn.Error.BM_verklemmt_Ausfahrt // BM bei Ausfahrt in Weiche verklemmt (-> Antrieb stoppen) + JC en11 // Warten + + SET + S Dyn.Status.Weiche_geradeaus // Weiche auf Gerade schalten + R Dyn.Status.Weiche_abzweigen + JU X111 + +W110_Mig: A Weiche.Parameter.Weichen_GST_abzweig + AN Weiche.Parameter.Weichen_GST_gerade + JCN X111 // Negierter Sprung ! + + A Dyn.FahrKontrolle.BT_Gerade // BM fährt geradeaus durch Weichenbereich + O Dyn.Error.BM_verklemmt_Gerade // BM bei Weiterfahrt in Weiche verklemmt (-> Antrieb stoppen) + JC en11 // Warten + + SET + S Dyn.Status.Weiche_abzweigen // Weiche auf Abzweig schalten + R Dyn.Status.Weiche_geradeaus + +X111: L DINT#0 + T Dyn.GSTschalt_Ink // Inkremente bei Weiche auf GST schalten + SET + R Dyn.GSTschalt_Flag // Flag bei Weiche auf GST schalten + +en11: NOP 0 + + +--- NW 13: Weichenbereich auf verklemmte gerade fahrende BM kontrollieren --- + AN Weiche.Parameter.Kontroll_B_Gerade // Kontroll-Sensor bei Weiterfahrt (gerade) + O Dyn.Ohne_VerklemmKontrolle // Verklemmkontrolle ausschalten + O "Hauptstrang_leer" + R Dyn.FahrKontrolle.BT_Gerade // BM fährt geradeaus durch Weichenbereich + R Dyn.FahrKontrolle.BM_Gerade_erkannt // Geradeausfahrendes BM wurde erkannt + R Dyn.Error.BM_verklemmt_Gerade // BM bei Weiterfahrt in Weiche verklemmt (-> Antrieb stoppen) + R Dyn.Error.BM_undef_Gerade // undefiniertes BM bei Weiterfahrt erkannt + S Dyn.FahrKontrolle.Gerade_Neg // Geradeaus: Kontroll-Time ist negativ + JC Nw17 + +// BM fährt geradeaus: + A B_Gerade // Kontroll-Sensor nach Weiche Gerade + AN Dyn.FahrKontrolle.BM_Gerade_erkannt // Geradeausfahrendes BM wurde erkannt + A Dyn.FahrKontrolle.BT_Gerade // BM fährt geradeaus durch Weichenbereich + R Dyn.FahrKontrolle.BT_Gerade + S Dyn.FahrKontrolle.BM_Gerade_erkannt // Geradeausfahrendes BM wurde erkannt + + AN B_Gerade // Kontroll-Sensor nach Weiche Gerade + R Dyn.FahrKontrolle.BM_Gerade_erkannt // Geradeausfahrendes BM wurde erkannt + + L Dyn.Last_IDX // IDX des letzten durchfahrenden Teils + T Kontroll_IDX // IDX des zu kontollierenden Teils + A SAVE.IDX_Flag // Hauptstrang_DL +1 durchsuchen + = SAVE.Kontroll_Flag // Hauptstrang_DL +1 durchsuchen + + JU Q_G + +N_G: L Weiche.Kontroll_Zeit_gerade // Nach dieser Zeit muss BM Weichenbereich verlassen haben [100ms] + T Dyn.FahrKontrolle.Kontroll_Time_Gerade // Innerhalb dieser Zeit muss BM Weiche gerade verlassen haben [100ms] + +Q_G: A ErrQuit + AN Dyn.FahrKontrolle.BT_Gerade // BM fährt geradeaus durch Weichenbereich + R Dyn.Error.BM_verklemmt_Gerade // BM bei Weiterfahrt in Weiche verklemmt (-> Antrieb stoppen) + +// Zeit verändern: + AN Antrieb_aktiv // Band ist aktiv + ON "100ms-Impuls" + O Dyn.Error.BM_verklemmt_Gerade // BM bei Weiterfahrt in Weiche verklemmt (-> Antrieb stoppen) + JC Un_G + + L Dyn.FahrKontrolle.Kontroll_Time_Gerade // Innerhalb dieser Zeit muss BM Weiche gerade verlassen haben [100ms] + L "MW2" // Anzahl der 100ms-Takte + -I + T Dyn.FahrKontrolle.Kontroll_Time_Gerade // Innerhalb dieser Zeit muss BM Weiche gerade verlassen haben [100ms] + L 0 // Kontroll-Zeit abgelaufen ? + >I // Nein ! + R Dyn.FahrKontrolle.Gerade_Neg // Geradeaus: Kontroll-Time ist negativ + JC en16 + +// BM verklemmt ?: + A Dyn.FahrKontrolle.Gerade_Neg // Geradeaus: Kontroll-Time ist negativ + JC Un_G + + SET + S Dyn.FahrKontrolle.Gerade_Neg // Geradeaus: Kontroll-Time ist negativ + + A Dyn.FahrKontrolle.BT_Gerade // BM fährt geradeaus durch Weichenbereich + S Dyn.Error.BM_verklemmt_Gerade // BM bei Weiterfahrt in Weiche verklemmt (-> Antrieb stoppen) + JC N_G // Zeit neu laden + +// BM undefiniert ?: +Un_G: L Dyn.FahrKontrolle.Kontroll_Time_Gerade // Innerhalb dieser Zeit muss BM Weiche gerade verlassen haben [100ms] + L Weiche.DraussenZeit_gerade // Nach dieser neg. Zeit [100ms] Error undef.BM, falls Kontroll-Sensor aktiv + >I // Muss BM draussen sein ? Nein ! + JC en16 + + T Dyn.FahrKontrolle.Kontroll_Time_Gerade // Innerhalb dieser Zeit muss BM Weiche gerade verlassen haben [100ms] + + AN B_Gerade // Kontroll-Sensor nach Weiche Gerade + JC en16 + + SET + S Dyn.Error.BM_undef_Gerade // undefiniertes BM bei Weiterfahrt erkannt + +en16: NOP 0 + + +--- NW 14: Weichenbereich auf verklemmte ausfahrende BM kontrollieren --- +Nw17: AN Weiche.Parameter.Kontroll_B_Ausfahrt // Kontroll-Sensor bei Ausfahrt (abzweig) + O Dyn.Ohne_VerklemmKontrolle // Verklemmkontrolle ausschalten + R Dyn.FahrKontrolle.BT_Ausfahrt // BM fährt aus Weichenbereich + R Dyn.FahrKontrolle.BM_Ausfahrt_erkannt // Ausfahrendes BM wurde erkannt + R Dyn.Error.BM_verklemmt_Ausfahrt // BM bei Ausfahrt in Weiche verklemmt (-> Antrieb gestoppt) + S Dyn.FahrKontrolle.Ausfahrt_Neg // Ausfahrend: Kontroll-Time ist negativ + JC Nw18 + +// BM fährt aus: + A B_Ausfahrt // Kontroll-Sensor nach Weiche Ausfahrt + AN Stau_Ausfahrtbereich // Bei Stau Einzelerkennung nicht mehr möglich! + AN Dyn.FahrKontrolle.BM_Ausfahrt_erkannt // Ausfahrendes BM wurde erkannt + A Dyn.FahrKontrolle.BT_Ausfahrt // BM fährt aus Weichenbereich + R Dyn.FahrKontrolle.BT_Ausfahrt + S Dyn.FahrKontrolle.BM_Ausfahrt_erkannt // Ausfahrendes BM wurde erkannt + + AN B_Ausfahrt // Kontroll-Sensor nach Weiche Ausfahrt + O Stau_Ausfahrtbereich // Bei Stau auch ! + R Dyn.FahrKontrolle.BM_Ausfahrt_erkannt // Ausfahrendes BM wurde erkannt + + JU Q_A + +N_A: L Weiche.Kontroll_Zeit_abzweigen // Nach dieser Zeit muss BM Weichenbereich verlassen haben [100ms] + T Dyn.FahrKontrolle.Kontroll_Time_Ausfahrt // Innerhalb dieser Zeit muss BM Weiche ausgefahren haben [100ms] + +Q_A: A ErrQuit // s.u. + SET // Ohne Quittierung + AN Dyn.FahrKontrolle.BT_Ausfahrt // BM fährt aus Weichenbereich + R Dyn.Error.BM_verklemmt_Ausfahrt // BM bei Ausfahrt in Weiche verklemmt (-> Antrieb gestoppt) + +// Zeit verändern: + AN Antrieb_aktiv // Band ist aktiv + ON "100ms-Impuls" + O Dyn.Error.BM_verklemmt_Ausfahrt // BM bei Ausfahrt in Weiche verklemmt (-> Antrieb gestoppt) + JC en17 + + L Dyn.FahrKontrolle.Kontroll_Time_Ausfahrt // Innerhalb dieser Zeit muss BM Weiche ausgefahren haben [100ms] + L "MW2" // Anzahl der 100ms-Takte + -I + T Dyn.FahrKontrolle.Kontroll_Time_Ausfahrt // Innerhalb dieser Zeit muss BM Weiche ausgefahren haben [100ms] + L 0 // Kontroll-Zeit abgelaufen ? + >I // Nein ! + R Dyn.FahrKontrolle.Ausfahrt_Neg // Ausfahrend: Kontroll-Time ist negativ + JC en17 + +// BM verklemmt ?: + A Dyn.FahrKontrolle.Ausfahrt_Neg // Ausfahrend: Kontroll-Time ist negativ + JC Un_A + + SET + S Dyn.FahrKontrolle.Ausfahrt_Neg // Ausfahrend: Kontroll-Time ist negativ + + A Dyn.FahrKontrolle.BT_Ausfahrt // BM fährt aus Weichenbereich + S Dyn.Error.BM_verklemmt_Ausfahrt // BM bei Ausfahrt in Weiche verklemmt (-> Antrieb gestoppt) + JC N_A // Zeit neu laden + +Un_A: L 0 + T Dyn.FahrKontrolle.Kontroll_Time_Ausfahrt // Innerhalb dieser Zeit muss BM Weiche ausgefahren haben [100ms] + +en17: NOP 0 + +// BM fährt aus: +// Zeit verändern: + AN Antrieb_aktiv // Band ist aktiv + ON "100ms-Impuls" + JC En17_Mig + + L Dyn.FahrKontrolle.Time_Ausfahrt // Diese Zeit benötigt BM zum Ausfahren [100ms] + L "MW2" // Anzahl der 100ms-Takte + -I + T Dyn.FahrKontrolle.Time_Ausfahrt // Diese Zeit benötigt BM zum Ausfahren [100ms] + L 0 // Ausfahr-Zeit abgelaufen ? + >I // Nein ! + JC En17_Mig + + T Dyn.FahrKontrolle.Time_Ausfahrt // Minimum übergeben + +En17_Mig: NOP 0 + + +--- NW 15: CARR-Telegramm an PC senden --- +Nw18: AN Weiche.Parameter.PC_Komm_aktiv + ON Dyn.Carr // CARR-Telegramm muss noch gesendet werden + O "SGes".Ohne_PC_Fahren + R Dyn.Carr // CARR-Telegramm muss noch gesendet werden + JC en13 + +// CARR mit dieser IDX schon gesendet?: (wegen Travel-FIFO leer) + L Daten.Sort_Info.Teil_IDX // IDX des BT + T "MD220" + L SAVE.Teil_IDX_Old // BT/MT-IDX (wurde bei Auslagerung gemeldet) + ==D + JC X130 + +// GOHDUM an Host senden: oder beim Verlaasen vom Sep4503? +// Puffer ermitteln: + L Weiche.AbzweigZiel + + -200 + T "Daten_für_SendFIFO".Puffer_LinienNr + +// Pufferstatus (Stau) ermitteln: + A "DEP_Sensoren".Stau_EP1.Stat.B_Akt + = "Daten_für_SendFIFO"."Status_2_Bit[0]" + A "DEP_Sensoren".Stau_EP2.Stat.B_Akt + = "Daten_für_SendFIFO"."Status_2_Bit[1]" + A "DEP_Sensoren".Stau_EP3.Stat.B_Akt + = "Daten_für_SendFIFO"."Status_2_Bit[2]" + A "DEP_Sensoren".Stau_EP4.Stat.B_Akt + = "Daten_für_SendFIFO"."Status_2_Bit[3]" + +CALL FB "Daten_in_SendFIFO_speichern" , (TelegrammKennung[1]:='G', TelegrammKennung[2]:='O', TelegrammKennung[3]:='H', TelegrammKennung[4]:='D', TelegrammKennung[5]:='U', TelegrammKennung[6]:='M', TelegrammKennung[7]:=?, TelegrammKennung[8]:=?, TelegrammKennung[9]:=?, TelegrammKennung[10]:=?, TrolleyID:=Daten.Sort_Info.Teil_IDX, StationsNr:=4503, Puffer_LinienNr:=?, StoreGroup:=?, Status_1_Int:=?, Status_2_Bit[0]:=?, Status_2_Bit[1]:=?, Status_2_Bit[2]:=?, Status_2_Bit[3]:=?, Status_2_Bit[4]:=?, Status_2_Bit[5]:=?, Status_2_Bit[6]:=?, Status_2_Bit[7]:=?, Reserve[1]_Int:=?, Reserve[2]_Int:=?, Port:=2, Ret_Val_FIFO_IN:="MB199", Error:=Error_SendFIFO) // s.o. | s.o. | s.o. | s.o. | s.o. + + A Error_SendFIFO + JC en13 + +X130: SET + R Dyn.Carr // CARR-Telegramm muss noch gesendet werden + + L Daten.Sort_Info.Teil_IDX // IDX des BT + T SAVE.Teil_IDX_Old // BT/MT-IDX (wurde bei Auslagerung gemeldet) + +en13: NOP 0 + + +--- NW 16: Trolley-ID in Puffer eintragen --- + AN Weiche.Parameter.IDX_an_Puffer + ON Dyn.Puffer_IDX // Trolley-ID in Puffer eintragen + R Dyn.Puffer_IDX // CARR-Telegramm muss noch gesendet werden + JC xn16 + + A Dyn.Status.Ziel_unbekannt // Ziel des BT ist unbekannt + JC X160 + + L Carr_Ziel // Ziel, das bei Carr-Telegramm gemeldet wird (1-20) + T "MW220" + +CALL FC "DatenOut" (SSDB:=275, SSDW:=0, PARA:=16#0000, SEARCHDATEN:=P#M220.0, RE_VAL:="MB199", OUTDATEN:=DB1275.DBX0.0, Position:="MW196") // Eintrag lesen + + L "MB199" + L 2#1111111 // Bit 7 ausblenden + AW + L 0 // Fehler vorhanden? + <>I // Ja + JC X160 + + L "LagerDL_OutDaten".OUTDaten.Puffer_Dyn_DB + T DatenDB // s.u. + + L "LagerDL_OutDaten".OUTDaten.Puffer_Dyn_DW + ITD + T AR1Start // Startwert mit Offset 0 + + L AR1Start // Startwert mit Offset 0 + + DINT#72 // Offset TrolleyID_Einfahrt + SLD 3 + T AR1Zeiger // Statt Dyn.Bereichsstop (ging nur bis DB-Länge <= 8191 Bytes) + + OPN DB[DatenDB] + + L Daten.Sort_Info.Teil_IDX // IDX des Trolleys an Omnipuffer melden + T DBD [AR1Zeiger] // Lager +1 (DBW 72) + +X160: SET + R Dyn.Puffer_IDX // CARR-Telegramm muss noch gesendet werden + +xn16: NOP 0 + + +--- NW 17: Weiche schalten --- + A Dyn.Status.Weiche_abzweigen // Weiche auf Abzweig schalten + R Dyn.Status.Weiche_geradeaus + = Y_Weiche_abzweigen + + A Dyn.Status.Weiche_geradeaus // Weiche auf Gerade schalten + = Y_Weiche_geradeaus + + +--- NW 18: Ende --- + BE + diff --git a/=A01+UH07-KF00/Programmbausteine/Module/MZylinder.awl b/=A01+UH07-KF00/Programmbausteine/Module/MZylinder.awl new file mode 100644 index 0000000..4a6c6f5 --- /dev/null +++ b/=A01+UH07-KF00/Programmbausteine/Module/MZylinder.awl @@ -0,0 +1,203 @@ +=== FB 92: MZylinder [STL] === +INTERFACE: + Input: + Automatik : Bool // Automatikbetrieb ist aktiv + Handbetrieb : Bool // Handbetrieb ist aktiv + T_Ast : Int := 5 // Zeit bis AST erreicht ist (*100ms) + T_Gst : Int := 5 // Zeit bis GST erreicht ist (*100ms) + Output: + ZylAst : Bool // Vorwärts-Ausgang des Antriebs + ZylGst : Bool // Rückwärts-Ausgang des Antriebs + InOut: + Static: + Stat : "UZylinder" + Temp: + Constant: + +--- NW 1: Zeitwert löschen --- + A ZylAst // Zylinder fährt nach AST + A( + O Stat.B_AST // Hat Endstellung erreicht + ON Stat.Old_Ast // Fuhr letzten Zyklus anders + ) + O + AN ZylAst // Zylinder fährt nach GST + A( + O Stat.B_GST // Hat Endstellung erreicht + O Stat.Old_Ast // Fuhr letzten Zyklus anders + ) + JCN Nw02 + +tdel: L 0 // Zeitwert löschen + T Stat.T_Zelle + + A ZylAst // Zylinder fährt nach AST + = Stat.Old_Ast // Fuhr letzten Zyklus nach AST + + JU Nw05 + +--- NW 2: AST-Erreichtzeit abgelaufen ? --- +Nw02: L Stat.T_AST_Akt // Gewollter Zeitwert + L 9999 // angegeben ? + <>I // Ja ! + JC w020 + + L T_Ast // Sollwert übergeben + T Stat.T_AST_Akt // Gewollter Zeitwert + +w020: A ZylAst // Zylinder fährt nach AST ? + JCN en02 + + SET + R Stat.B_GST + + L Stat.T_Zelle // Aktueller Zeitwert + L Stat.T_AST_Akt // Gewollter Zeitwert erreicht ? + >=I + S Stat.B_AST // Zylinder hat AST erreicht + JC tdel // Zeit nullen + + JU Nw03 + +en02: AN Stat.Typ5_3 // Zylinder hält seine Stellung ! + R Stat.B_AST + + +--- NW 3: GST-Erreichtzeit abgelaufen ? --- +Nw03: L Stat.T_GST_Akt // Gewollter Zeitwert + L 9999 // angegeben ? + <>I // Ja ! + JC w030 + + L T_Gst // Sollwert übergeben + T Stat.T_GST_Akt // Gewollter Zeitwert + +w030: A( // Zylinder fährt nach GST ? + O Stat.Typ5_2 // Zylinder mit 2-facher Ansteuerung + O Stat.Typ5_3 + ) + A ZylGst + O + A Stat.Typ3_2 // Zylinder mit 1-facher Ansteuerung + AN ZylAst + JCN en03 + + SET + R Stat.B_AST + + L Stat.T_Zelle // Aktueller Zeitwert + L Stat.T_GST_Akt // Gewollter Zeitwert erreicht ? + >=I + S Stat.B_GST // Zylinder hat GST erreicht + JC tdel // Zeit nullen + + JU Nw04 + +en03: AN Stat.Typ5_3 // Zylinder hält seine Stellung ! + R Stat.B_GST + + +--- NW 4: Zeit läuft --- +Nw04: A( // Zylinder fährt nach GST ? + O Stat.Typ5_2 // Zylinder mit 2-facher Ansteuerung + O Stat.Typ5_3 + ) + AN ZylGst // Zylinder wird nicht angesteuert + AN ZylAst + ON "100ms-Impuls" // nur als Impuls + JC Nw05 + + L Stat.T_Zelle + L "MW2" // 100ms-Takte + +I + T Stat.T_Zelle + + +--- NW 5: Undefinierte Zustände / Befehle --- +Nw05: A Automatik // Automatik + Hand aktiv + A Handbetrieb + O + AN Automatik // keine Betriebsart + AN Handbetrieb + O + A Stat.Ast // Arbeitsstellung- + Grundstellungfahren aktiv + A Stat.Gst + O + AN Stat.Typ3_2 // Undefinierter Ventil-Typ + AN Stat.Typ5_2 + AN Stat.Typ5_3 + O + A Stat.Typ3_2 + A( + O Stat.Typ5_2 + O Stat.Typ5_3 + ) + O + A Stat.Typ5_2 + A Stat.Typ5_3 + JCN en06 // Zylinderstellung bleibt eingefroren + + A Stat.Typ5_3 // Zylinder hält seine Stellung ! + R Stat.Ast // Bewegungsbits löschen + R Stat.Gst + + BEU + +en06: NOP 0 + +--- NW 6: Zylinder auf Arbeitstellung fahren --- + A Stat.Ast + = ZylAst + + +--- NW 7: Zylinder auf Grundstellung fahren --- + A( + O Stat.Typ5_2 + O Stat.Typ5_3 + ) + A Stat.Gst + = ZylGst + + +--- NW 8: Daten, die zurückgesetzt werden --- + A Stat.Typ5_3 // Zylinder hält seine Stellung ! + R Stat.Ast // Bewegungsbits löschen + R Stat.Gst + A Stat.Typ3_2 + R Stat.Gst // Es gibt kein GST fahren ! + + +--- NW 9: Ausgänge übergeben an OP übergeben --- + A ZylGst + = Stat.OP_Out_GST + + A ZylAst + = Stat.OP_Out_AST + + +--- NW 10: Statistik --- + A ZylAst + Rise Stat.FP_AST + JCN AST2 + + L Stat.Statistik.AST_Schaltungen + L DINT#1 + +D + T Stat.Statistik.AST_Schaltungen + +AST2: A ZylGst + A Stat.Typ5_3 + Rise Stat.FP_AST2 + JCN StatEnde + + L Stat.Statistik.AST2_Schaltungen + L DINT#1 + +D + T Stat.Statistik.AST2_Schaltungen + +StatEnde: NOP 0 + + +--- NW 11: Ende --- + BE + diff --git a/=A01+UH07-KF00/Programmbausteine/Module/Save_CARR_Gesendet.awl b/=A01+UH07-KF00/Programmbausteine/Module/Save_CARR_Gesendet.awl new file mode 100644 index 0000000..f03e1eb --- /dev/null +++ b/=A01+UH07-KF00/Programmbausteine/Module/Save_CARR_Gesendet.awl @@ -0,0 +1,62 @@ +=== FC 121: Save_CARR_Gesendet [STL] === +INTERFACE: + Input: + Kennung_1 : Char + Kennung_2 : Char + Kennung_3 : Char + Kennung_4 : Char + FIFO_DB : Int // FIFO-Ringspeicher + Teil_IDX : Int // BT/MT-IDX (wird bei Auslagerung gemeldet) + Teil_Ziel : Int // BT/MT bei diesem Abwurf-Ziel ausfahren/entladen + Sort_ID : Int // Sortier-Info (Sort-ID, mit welcher Fahrt gestartet wurde) + Output: + InOut: + Temp: + Constant: + Return: + Ret_Val : Void + +--- NW 1: Kennung CARR ? --- + L Kennung_1 + L 'C' + <>I // Nein ! + BEC + + L Kennung_2 + L 'A' + <>I // Nein ! + BEC + + L Kennung_3 + L 'R' + <>I // Nein ! + BEC + + L Kennung_4 + L 'R' + <>I // Nein ! + BEC + + +--- NW 2: Daten aufbereiten --- + L Teil_IDX + T "MW220" + + L Teil_Ziel + T "MW222" + + L Sort_ID + T "MW224" + + +--- NW 3: Daten speichern --- +CALL FC "FifoOut" (SSDB:=FIFO_DB, SSDW:=0, PARA:=WORD#16#E100, OUTDATEN:=P#M200.0, RE_VAL:="MB199") // da Ringspeicher nächster Eintrag lesen + austragen + +CALL FC "FifoIn" (SSDB:=FIFO_DB, SSDW:=0, PARA:=WORD#16#0000, INDATEN:=P#M220.0, RE_VAL:="MB199") + + L "MB199" + + +--- NW 4: Ende --- + BE + diff --git a/=A01+UH07-KF00/Programmbausteine/Module/Save_Ziel.awl b/=A01+UH07-KF00/Programmbausteine/Module/Save_Ziel.awl new file mode 100644 index 0000000..38c8459 --- /dev/null +++ b/=A01+UH07-KF00/Programmbausteine/Module/Save_Ziel.awl @@ -0,0 +1,32 @@ +=== FC 122: Save_Ziel [STL] === +INTERFACE: + Input: + FIFO_DB : Int // FIFO-Ringspeicher + Teil_IDX : Int // BT/MT-IDX (wird bei Auslagerung gemeldet) + Teil_Ziel : Int // BT/MT bei diesem Abwurf-Ziel ausfahren/entladen + Output: + InOut: + Temp: + Constant: + Return: + Ret_Val : Void + +--- NW 1: Daten aufbereiten --- + L Teil_IDX + T "MW220" + + L Teil_Ziel + T "MW222" + + +--- NW 2: Daten speichern --- +CALL FC "FifoOut" (SSDB:=FIFO_DB, SSDW:=0, PARA:=WORD#16#E100, OUTDATEN:=P#M200.0, RE_VAL:="MB199") // da Ringspeicher nächster Eintrag lesen + austragen + +CALL FC "FifoIn" (SSDB:=FIFO_DB, SSDW:=0, PARA:=WORD#16#0000, INDATEN:=P#M220.0, RE_VAL:="MB199") + + L "MB199" + + +--- NW 3: Ende --- + BE + diff --git a/=A01+UH07-KF00/Programmbausteine/Module/Set_Input.awl b/=A01+UH07-KF00/Programmbausteine/Module/Set_Input.awl new file mode 100644 index 0000000..6102644 --- /dev/null +++ b/=A01+UH07-KF00/Programmbausteine/Module/Set_Input.awl @@ -0,0 +1,34 @@ +=== FC 1028: Set_Input [STL] === +INTERFACE: + Input: + Enable : Bool // Baustein aktivieren + Status : Bool // Angegebenen Ausgang auf diesen Status steuern + InByte : DInt // Eingangsbyte zum Steuern + InBit : Int // Eingangsbit zum Steuern + Output: + InOut: + Temp: + AR1Zeiger : DWord // Statt AR1 (ging nur bis DB-Länge <= 8191 Bytes) + Constant: + Return: + Ret_Val : Void + +--- NW 1: Baustein aktiviert ? --- + AN Enable + BEC + + +--- NW 2: Eingang stuern --- + L InByte // Ausgangsbyte zum Steuern + SLD 3 + L InBit // Ausgangsbit zum Steuern + OW + T AR1Zeiger // Statt Dyn.Bereichsstop (ging nur bis DB-Länge <= 8191 Bytes) + + A Status + = IX [AR1Zeiger] // Eingang steuern + + +--- NW 3: Ende --- + BE + diff --git a/=A01+UH07-KF00/Programmbausteine/Module/Set_Output.awl b/=A01+UH07-KF00/Programmbausteine/Module/Set_Output.awl new file mode 100644 index 0000000..0946eba --- /dev/null +++ b/=A01+UH07-KF00/Programmbausteine/Module/Set_Output.awl @@ -0,0 +1,34 @@ +=== FC 127: Set_Output [STL] === +INTERFACE: + Input: + Enable : Bool // Baustein aktivieren + Status : Bool // Angegebenen Ausgang auf diesen Status steuern + OutByte : DInt // Ausgangsbyte zum Steuern + OutBit : Int // Ausgangsbit zum Steuern + Output: + InOut: + Temp: + AR1Zeiger : DWord // Statt AR1 (ging nur bis DB-Länge <= 8191 Bytes) + Constant: + Return: + Ret_Val : Void + +--- NW 1: Baustein aktiviert ? --- + AN Enable + BEC + + +--- NW 2: Ausgang steuern --- + L OutByte // Ausgangsbyte zum Steuern + SLD 3 + L OutBit // Ausgangsbit zum Steuern + OW + T AR1Zeiger // Statt Dyn.Bereichsstop (ging nur bis DB-Länge <= 8191 Bytes) + + A Status + = QX [AR1Zeiger] // Ausgang steuern + + +--- NW 3: Ende --- + BE + diff --git a/=A01+UH07-KF00/Programmbausteine/PerformanceTest/FB_PerfTest_7_EP_Ausfahrt.awl b/=A01+UH07-KF00/Programmbausteine/PerformanceTest/FB_PerfTest_7_EP_Ausfahrt.awl new file mode 100644 index 0000000..1b93115 --- /dev/null +++ b/=A01+UH07-KF00/Programmbausteine/PerformanceTest/FB_PerfTest_7_EP_Ausfahrt.awl @@ -0,0 +1,26 @@ +=== InstanceDB 206: FB_PerfTest_7_EP_Ausfahrt [DB] === +INTERFACE: + Input: + nInSepNo : Int + xInSepFlag : Bool + xInReset : Bool + tInTimeMeasurement : Time + nInGoalFlags : Int + Output: + InOut: + Static: + tOnTimer : TON_TIME + xTestActive : Bool + xTimerRun : Bool + nCount : Int + Date_And_TimeStart : Date_And_Time + Date_And_TimeLap : Date_And_Time + tTimeResult : Time + rTrigRun : R_TRIG + fTrigRun : F_TRIG + fTrigSepFlag : F_TRIG + arTrolley : Array[1..500] of Struct + nCount : Int + tTimeEvent : Date_And_Time + tTimeResult : Time + nTrolleyNo : Int diff --git a/=A01+UH07-KF00/Programmbausteine/PerformanceTest/FB_PerfTest_7_EP_Einfahrt.awl b/=A01+UH07-KF00/Programmbausteine/PerformanceTest/FB_PerfTest_7_EP_Einfahrt.awl new file mode 100644 index 0000000..6081ca3 --- /dev/null +++ b/=A01+UH07-KF00/Programmbausteine/PerformanceTest/FB_PerfTest_7_EP_Einfahrt.awl @@ -0,0 +1,26 @@ +=== InstanceDB 205: FB_PerfTest_7_EP_Einfahrt [DB] === +INTERFACE: + Input: + nInSepNo : Int + xInSepFlag : Bool + xInReset : Bool + tInTimeMeasurement : Time + nInGoalFlags : Int + Output: + InOut: + Static: + tOnTimer : TON_TIME + xTestActive : Bool + xTimerRun : Bool + nCount : Int + Date_And_TimeStart : Date_And_Time + Date_And_TimeLap : Date_And_Time + tTimeResult : Time + rTrigRun : R_TRIG + fTrigRun : F_TRIG + fTrigSepFlag : F_TRIG + arTrolley : Array[1..500] of Struct + nCount : Int + tTimeEvent : Date_And_Time + tTimeResult : Time + nTrolleyNo : Int diff --git a/=A01+UH07-KF00/Programmbausteine/PerformanceTest/FB_PerfTest_7_LP_Einfahrt.awl b/=A01+UH07-KF00/Programmbausteine/PerformanceTest/FB_PerfTest_7_LP_Einfahrt.awl new file mode 100644 index 0000000..49f0471 --- /dev/null +++ b/=A01+UH07-KF00/Programmbausteine/PerformanceTest/FB_PerfTest_7_LP_Einfahrt.awl @@ -0,0 +1,26 @@ +=== InstanceDB 207: FB_PerfTest_7_LP_Einfahrt [DB] === +INTERFACE: + Input: + nInSepNo : Int + xInSepFlag : Bool + xInReset : Bool + tInTimeMeasurement : Time + nInGoalFlags : Int + Output: + InOut: + Static: + tOnTimer : TON_TIME + xTestActive : Bool + xTimerRun : Bool + nCount : Int + Date_And_TimeStart : Date_And_Time + Date_And_TimeLap : Date_And_Time + tTimeResult : Time + rTrigRun : R_TRIG + fTrigRun : F_TRIG + fTrigSepFlag : F_TRIG + arTrolley : Array[1..500] of Struct + nCount : Int + tTimeEvent : Date_And_Time + tTimeResult : Time + nTrolleyNo : Int diff --git a/=A01+UH07-KF00/Programmbausteine/PerformanceTest/FB_PerfTest_7_LT_Beladung.awl b/=A01+UH07-KF00/Programmbausteine/PerformanceTest/FB_PerfTest_7_LT_Beladung.awl new file mode 100644 index 0000000..54eb38e --- /dev/null +++ b/=A01+UH07-KF00/Programmbausteine/PerformanceTest/FB_PerfTest_7_LT_Beladung.awl @@ -0,0 +1,26 @@ +=== InstanceDB 208: FB_PerfTest_7_LT_Beladung [DB] === +INTERFACE: + Input: + nInSepNo : Int + xInSepFlag : Bool + xInReset : Bool + tInTimeMeasurement : Time + nInGoalFlags : Int + Output: + InOut: + Static: + tOnTimer : TON_TIME + xTestActive : Bool + xTimerRun : Bool + nCount : Int + Date_And_TimeStart : Date_And_Time + Date_And_TimeLap : Date_And_Time + tTimeResult : Time + rTrigRun : R_TRIG + fTrigRun : F_TRIG + fTrigSepFlag : F_TRIG + arTrolley : Array[1..500] of Struct + nCount : Int + tTimeEvent : Date_And_Time + tTimeResult : Time + nTrolleyNo : Int diff --git a/=A01+UH07-KF00/Programmbausteine/PerformanceTest/FB_PerfTest_7_OB_Einfahrt.awl b/=A01+UH07-KF00/Programmbausteine/PerformanceTest/FB_PerfTest_7_OB_Einfahrt.awl new file mode 100644 index 0000000..d8415be --- /dev/null +++ b/=A01+UH07-KF00/Programmbausteine/PerformanceTest/FB_PerfTest_7_OB_Einfahrt.awl @@ -0,0 +1,26 @@ +=== InstanceDB 201: FB_PerfTest_7_OB_Einfahrt [DB] === +INTERFACE: + Input: + nInSepNo : Int + xInSepFlag : Bool + xInReset : Bool + tInTimeMeasurement : Time + nInGoalFlags : Int + Output: + InOut: + Static: + tOnTimer : TON_TIME + xTestActive : Bool + xTimerRun : Bool + nCount : Int + Date_And_TimeStart : Date_And_Time + Date_And_TimeLap : Date_And_Time + tTimeResult : Time + rTrigRun : R_TRIG + fTrigRun : F_TRIG + fTrigSepFlag : F_TRIG + arTrolley : Array[1..500] of Struct + nCount : Int + tTimeEvent : Date_And_Time + tTimeResult : Time + nTrolleyNo : Int diff --git a/=A01+UH07-KF00/Programmbausteine/PerformanceTest/FB_PerfTest_7_VP_Ausfahrt.awl b/=A01+UH07-KF00/Programmbausteine/PerformanceTest/FB_PerfTest_7_VP_Ausfahrt.awl new file mode 100644 index 0000000..fa020d5 --- /dev/null +++ b/=A01+UH07-KF00/Programmbausteine/PerformanceTest/FB_PerfTest_7_VP_Ausfahrt.awl @@ -0,0 +1,26 @@ +=== InstanceDB 203: FB_PerfTest_7_VP_Ausfahrt [DB] === +INTERFACE: + Input: + nInSepNo : Int + xInSepFlag : Bool + xInReset : Bool + tInTimeMeasurement : Time + nInGoalFlags : Int + Output: + InOut: + Static: + tOnTimer : TON_TIME + xTestActive : Bool + xTimerRun : Bool + nCount : Int + Date_And_TimeStart : Date_And_Time + Date_And_TimeLap : Date_And_Time + tTimeResult : Time + rTrigRun : R_TRIG + fTrigRun : F_TRIG + fTrigSepFlag : F_TRIG + arTrolley : Array[1..500] of Struct + nCount : Int + tTimeEvent : Date_And_Time + tTimeResult : Time + nTrolleyNo : Int diff --git a/=A01+UH07-KF00/Programmbausteine/PerformanceTest/FB_PerfTest_7_VP_Rück.awl b/=A01+UH07-KF00/Programmbausteine/PerformanceTest/FB_PerfTest_7_VP_Rück.awl new file mode 100644 index 0000000..4ff14c8 --- /dev/null +++ b/=A01+UH07-KF00/Programmbausteine/PerformanceTest/FB_PerfTest_7_VP_Rück.awl @@ -0,0 +1,26 @@ +=== InstanceDB 204: FB_PerfTest_7_VP_Rück [DB] === +INTERFACE: + Input: + nInSepNo : Int + xInSepFlag : Bool + xInReset : Bool + tInTimeMeasurement : Time + nInGoalFlags : Int + Output: + InOut: + Static: + tOnTimer : TON_TIME + xTestActive : Bool + xTimerRun : Bool + nCount : Int + Date_And_TimeStart : Date_And_Time + Date_And_TimeLap : Date_And_Time + tTimeResult : Time + rTrigRun : R_TRIG + fTrigRun : F_TRIG + fTrigSepFlag : F_TRIG + arTrolley : Array[1..500] of Struct + nCount : Int + tTimeEvent : Date_And_Time + tTimeResult : Time + nTrolleyNo : Int diff --git a/=A01+UH07-KF00/Programmbausteine/PerformanceTest/FB_PerfTest_7_VP_Sorter_Sync.awl b/=A01+UH07-KF00/Programmbausteine/PerformanceTest/FB_PerfTest_7_VP_Sorter_Sync.awl new file mode 100644 index 0000000..ddcd853 --- /dev/null +++ b/=A01+UH07-KF00/Programmbausteine/PerformanceTest/FB_PerfTest_7_VP_Sorter_Sync.awl @@ -0,0 +1,26 @@ +=== InstanceDB 202: FB_PerfTest_7_VP_Sorter_Sync [DB] === +INTERFACE: + Input: + nInSepNo : Int + xInSepFlag : Bool + xInReset : Bool + tInTimeMeasurement : Time + nInGoalFlags : Int + Output: + InOut: + Static: + tOnTimer : TON_TIME + xTestActive : Bool + xTimerRun : Bool + nCount : Int + Date_And_TimeStart : Date_And_Time + Date_And_TimeLap : Date_And_Time + tTimeResult : Time + rTrigRun : R_TRIG + fTrigRun : F_TRIG + fTrigSepFlag : F_TRIG + arTrolley : Array[1..500] of Struct + nCount : Int + tTimeEvent : Date_And_Time + tTimeResult : Time + nTrolleyNo : Int diff --git a/=A01+UH07-KF00/Programmbausteine/SCADA/DB_Status.awl b/=A01+UH07-KF00/Programmbausteine/SCADA/DB_Status.awl new file mode 100644 index 0000000..689188d --- /dev/null +++ b/=A01+UH07-KF00/Programmbausteine/SCADA/DB_Status.awl @@ -0,0 +1,4 @@ +=== GlobalDB 66: DB_Status [DB] === +INTERFACE: + Static: + System : "UDT_GOHStatus" // Main Cabinet (e.g. on, off, emergency stop…) diff --git a/=A01+UH07-KF00/Programmbausteine/SCADA/FB-OPC_UA_System-Stat_DB.awl b/=A01+UH07-KF00/Programmbausteine/SCADA/FB-OPC_UA_System-Stat_DB.awl new file mode 100644 index 0000000..1f502cc --- /dev/null +++ b/=A01+UH07-KF00/Programmbausteine/SCADA/FB-OPC_UA_System-Stat_DB.awl @@ -0,0 +1,12 @@ +=== InstanceDB 5: FB-OPC_UA_System-Stat_DB [DB] === +INTERFACE: + Input: + xInSystemStat : Bool + xInFireAlarm : Bool + xInSafetyStop : Bool + xInError : Bool + xInCommunicationError : Bool + Output: + nOutScadaStatus : Int + InOut: + Static: diff --git a/=A01+UH07-KF00/Programmbausteine/SS_Host/DDaten_Host_senden.awl b/=A01+UH07-KF00/Programmbausteine/SS_Host/DDaten_Host_senden.awl new file mode 100644 index 0000000..1a9aff9 --- /dev/null +++ b/=A01+UH07-KF00/Programmbausteine/SS_Host/DDaten_Host_senden.awl @@ -0,0 +1,8 @@ +=== InstanceDB 9100: DDaten_Host_senden [DB] === +INTERFACE: + Input: + Output: + InOut: + Static: + Port1_senden : "Port1_Daten_senden" + Port2_senden : "Port2_Daten_senden" diff --git a/=A01+UH07-KF00/Programmbausteine/SS_Host/DDaten_von_Host_empfangen.awl b/=A01+UH07-KF00/Programmbausteine/SS_Host/DDaten_von_Host_empfangen.awl new file mode 100644 index 0000000..ebed140 --- /dev/null +++ b/=A01+UH07-KF00/Programmbausteine/SS_Host/DDaten_von_Host_empfangen.awl @@ -0,0 +1,8 @@ +=== InstanceDB 9000: DDaten_von_Host_empfangen [DB] === +INTERFACE: + Input: + Output: + InOut: + Static: + Port1_empfangen : "Port1_Daten_empfangen" + Port2_empfangen : "Port2_Daten_empfangen" diff --git a/=A01+UH07-KF00/Programmbausteine/SS_Host/Daten_Host_senden.awl b/=A01+UH07-KF00/Programmbausteine/SS_Host/Daten_Host_senden.awl new file mode 100644 index 0000000..6a2b83f --- /dev/null +++ b/=A01+UH07-KF00/Programmbausteine/SS_Host/Daten_Host_senden.awl @@ -0,0 +1,46 @@ +=== FB 9100: Daten_Host_senden [STL] === +INTERFACE: + Input: + Output: + InOut: + Static: + Port1_senden : "Port1_Daten_senden" + Port2_senden : "Port2_Daten_senden" + Temp: + Constant: + +--- NW 1: Daten über Port 1 senden --- +CALL FB "None" , + +// Send-FIFO wird zu voll: + L "Port1_SendFIFO".ANZAHL + L 70 + >I + S "7_HMI_Err_UH07_OB".Kommunikation.SendFIFO_Port1 + + CAC + L 40 + I + S "7_HMI_Err_UH07_OB".Kommunikation.SendFIFO_Port2 + + CAC + L 40 + I + = Error // Error bei FIFO-Zugriff + + JBI en03 // Alles ok + +FIErr: SET + S Error // Error bei FIFO-Zugriff + +en03: NOP 0 + + +--- NW 2: Instanz-DB nullen --- +CALL FC "DBMOV" (QuellDB:=8000, QuellDW:=0, ZielDB:=7100, ZielDW:=00, Anzahl_DW:=16, RE_VAL:="MW196") // Empfangsfach leeren, da Telegramm verarbeitet + diff --git a/=A01+UH07-KF00/Programmbausteine/SS_Host/Daten_von_Host_empfangen.awl b/=A01+UH07-KF00/Programmbausteine/SS_Host/Daten_von_Host_empfangen.awl new file mode 100644 index 0000000..b009ba2 --- /dev/null +++ b/=A01+UH07-KF00/Programmbausteine/SS_Host/Daten_von_Host_empfangen.awl @@ -0,0 +1,32 @@ +=== FB 9000: Daten_von_Host_empfangen [STL] === +INTERFACE: + Input: + Output: + InOut: + Static: + Port1_empfangen : "Port1_Daten_empfangen" + Port2_empfangen : "Port2_Daten_empfangen" + Temp: + Constant: + +--- NW 1: Testdaten übergeben --- + A "M8999.0" + R "M8999.0" + JCN NixTest + +CALL FC "DBMOV" (QuellDB:=8999, QuellDW:=0, ZielDB:=9001, ZielDW:=0, Anzahl_DW:=15, RE_VAL:="MW196") + +NixTest: NOP 0 + + +--- NW 2: Daten über Port 1 empfangen --- +CALL FB "None" , + + +--- NW 3: Daten über Port 2 empfangen --- +CALL FB "None" , + + +--- NW 4: Ende --- + BE + diff --git a/=A01+UH07-KF00/Programmbausteine/SS_Host/LeerDaten.awl b/=A01+UH07-KF00/Programmbausteine/SS_Host/LeerDaten.awl new file mode 100644 index 0000000..6053ca5 --- /dev/null +++ b/=A01+UH07-KF00/Programmbausteine/SS_Host/LeerDaten.awl @@ -0,0 +1,4 @@ +=== GlobalDB 8000: LeerDaten [DB] === +INTERFACE: + Static: + Leer : Array[1..25] of Int diff --git a/=A01+UH07-KF00/Programmbausteine/SS_Host/Port1_Daten_empfangen.awl b/=A01+UH07-KF00/Programmbausteine/SS_Host/Port1_Daten_empfangen.awl new file mode 100644 index 0000000..2f53084 --- /dev/null +++ b/=A01+UH07-KF00/Programmbausteine/SS_Host/Port1_Daten_empfangen.awl @@ -0,0 +1,56 @@ +=== FB 9001: Port1_Daten_empfangen [STL] === +INTERFACE: + Input: + Output: + InOut: + Static: + Dyn : Struct // Status + RET_VAL_SaveFIFO_IN : Byte // Rückmeldung bei Fifo-Zugriff + Error : Struct // Störungen + Save_FIFO_IN : Bool // Save-FIFO fehlerhaft + Auswerte_FC : Bool // Kein Auswerte-FC angegeben + Telegramm : Bool // Telegramm in Auswerte-FC nicht bekannt + Empfangs_DB : Bool + DL_Sep : Bool + DL_Weiche : Bool + Status : Word // Status bei Fehlerfall + Temp: + Temp_NDR : Bool + Temp_Error : Bool + Constant: + +--- NW 1: Neue Daten vorhanden? --- +// Telegramm-Kopf hat Kennung ?: + L "SS_Port1_EmpfangsDaten".Port1.TelegrammKennung[1] + L 0 // Daten vorhanden? + ==I // Nein ! + BEC + + +--- NW 2: Empfangene Daten speichern --- +CALL FC "FifoOut" (SSDB:=8001, SSDW:=0, PARA:=WORD#16#E100, OUTDATEN:=P#M200.0, RE_VAL:="MB199") // da Ringspeicher nächster Eintrag lesen + austragen + +CALL FC "FifoIn" (SSDB:=8001, SSDW:=0, PARA:=WORD#16#0000, INDATEN:=DB9001.DBX0.0, RE_VAL:="MB199") + + L "MB199" + T Dyn.RET_VAL_SaveFIFO_IN + + JBI en03 // Alles ok + + SET + S Dyn.Error.Save_FIFO_IN // Error bei FIFO-Zugriff + +en03: NOP 0 + + +--- NW 3: Auswerte-FC aufrufen --- + UC "Port1_Telegramme_auswerten" + + +--- NW 4: Empfangsdatenfeld wieder freigeben --- +CALL FC "DBMOV" (QuellDB:=8000, QuellDW:=0, ZielDB:=9001, ZielDW:=00, Anzahl_DW:=15, RE_VAL:="MW196") // Empfangsfach leeren, da Telegramm verarbeitet + + +--- NW 5: Ende --- + BE + diff --git a/=A01+UH07-KF00/Programmbausteine/SS_Host/Port1_Daten_senden.awl b/=A01+UH07-KF00/Programmbausteine/SS_Host/Port1_Daten_senden.awl new file mode 100644 index 0000000..b8ebac0 --- /dev/null +++ b/=A01+UH07-KF00/Programmbausteine/SS_Host/Port1_Daten_senden.awl @@ -0,0 +1,80 @@ +=== FB 9101: Port1_Daten_senden [STL] === +INTERFACE: + Input: + Output: + InOut: + Static: + Dyn : Struct // Status + RET_VAL_SendFIFO_OUT : Byte // Rückmeldung bei Fifo-Zugriff + RET_VAL_SaveFIFO_IN : Byte // Rückmeldung bei Fifo-Zugriff + Error : Struct // Störungen + Send_FIFO_OUT : Bool // Send-FIFO fehlerhaft + Save_FIFO_IN : Bool // Save-FIFO fehlerhaft + Res : Array[1..35] of Int // Damit Sendedaten ab DW100 ! + Temp: + Schleife : Int + Constant: + +--- NW 1: Sendefach frei? / Hat Host Daten verarbeitet --- +// Telegramm-Kopf leer?: + L 1 // Mit 1.Zeichen beginnen +L100: T Schleife + + L "SS_Port1_SendDaten".Port1.TelegrammKennung[Schleife] + L 0 // Daten noch vorhanden? + <>I // Ja! + BEC + + L Schleife + + 1 + T Schleife + + L 10 // 10.Zeichen erreicht ? + <=I // Nein ! + JC L100 + + +--- NW 2: Neue Sendedaten im FIFO ? --- + SET + R Dyn.Error.Send_FIFO_OUT // Error bei FIFO-Zugriff + +CALL FC "FifoOut" (SSDB:=7101, SSDW:=0, PARA:=WORD#16#E100, OUTDATEN:=DB9101.DBX0.0, RE_VAL:="MB199") // Gewollte Sendedaten | Lesen + austragen + + L "MB199" + T Dyn.RET_VAL_SendFIFO_OUT + + JBI En02 // Alles ok + + A "M199.2" // FIFO ist leer + BEC + + SET + S Dyn.Error.Send_FIFO_OUT // Error bei FIFO-Zugriff + + BEU + +En02: NOP 0 + + +--- NW 3: Gesendete Daten speichern --- + SET + R Dyn.Error.Save_FIFO_IN // Error bei FIFO-Zugriff + +CALL FC "FifoOut" (SSDB:=8101, SSDW:=0, PARA:=WORD#16#E100, OUTDATEN:=P#M200.0, RE_VAL:="MB199") // da Ringspeicher nächster Eintrag lesen + austragen + +CALL FC "FifoIn" (SSDB:=8101, SSDW:=0, PARA:=WORD#16#0000, INDATEN:=DB9101.DBX0.0, RE_VAL:="MB199") + + L "MB199" + T Dyn.RET_VAL_SaveFIFO_IN + + JBI en03 // Alles ok + + SET + S Dyn.Error.Save_FIFO_IN // Error bei FIFO-Zugriff + +en03: NOP 0 + + +--- NW 4: Ende --- + BE + diff --git a/=A01+UH07-KF00/Programmbausteine/SS_Host/Port1_EmpfangenFIFO.awl b/=A01+UH07-KF00/Programmbausteine/SS_Host/Port1_EmpfangenFIFO.awl new file mode 100644 index 0000000..aa218f6 --- /dev/null +++ b/=A01+UH07-KF00/Programmbausteine/SS_Host/Port1_EmpfangenFIFO.awl @@ -0,0 +1,29 @@ +=== GlobalDB 8001: Port1_EmpfangenFIFO [DB] === +INTERFACE: + Static: + EmpfangenFIFO : Struct + KOPF : Word := WORD#16#FF0F // Fifo-Kennung (FF) / Datensatzlänge in Word (1 - 128) + LAENGE : Int := 100 // Länge des Fifo (maximale Anzahl der Datensätze) + BRINGZEIGER : Int := 40 // Zeiger, wohin nächster Eintrag gespeichert wird + HOLZEIGER : Int := 40 // Zeiger, woher nächste Daten geholt werden + ANZAHL : Int := 100 // Anzahl der Datensätze (eingetragene) + STATUS : Word // Status des Fifo + ZUSATZDW1 : Int // Speicherzelle für 1.Zusatzdaten + ZUSATZDW2 : Int // Speicherzelle für 2.Zusatzdaten + ZUSATZDW3 : Int // Speicherzelle für 3.Zusatzdaten + ZUSATZDW4 : Int // Speicherzelle für 4.Zusatzdaten + Frei1 : Int + Frei2 : Int + Frei3 : Int + Frei4 : Int + Frei5 : Int + OP_Anzeige_Datensatz : Int // Bei Ringspeicher -1,-2,...-Datensatz anzeigen + Datensatz : Int // Zu lesender Datenstatz (OP-Zeug)********************************* + Taste_Daten_minus : Bool // Taste Datensatz -1 lesen + Taste_Daten_plus : Bool // Taste Datensatz +1 lesen + Taste_FIFO_Del : Bool // Taste Fifo löschen + Zustand : Int // Zustand + Error : Int // Error + Empfangen : Array[1..100] of "UDatenEmpfangen" + EmpfangenFIFOEnde : Struct + Endekennung : Word := WORD#16#FFEE // Fifo-Ende-Kennung (FFEE) diff --git a/=A01+UH07-KF00/Programmbausteine/SS_Host/Port1_GesendetFIFO.awl b/=A01+UH07-KF00/Programmbausteine/SS_Host/Port1_GesendetFIFO.awl new file mode 100644 index 0000000..b64b382 --- /dev/null +++ b/=A01+UH07-KF00/Programmbausteine/SS_Host/Port1_GesendetFIFO.awl @@ -0,0 +1,29 @@ +=== GlobalDB 8101: Port1_GesendetFIFO [DB] === +INTERFACE: + Static: + GesendetFIFO : Struct + KOPF : Word := WORD#16#FF0F // Fifo-Kennung (FF) / Datensatzlänge in Word (1 - 128) + LAENGE : Int := 100 // Länge des Fifo (maximale Anzahl der Datensätze) + BRINGZEIGER : Int := 40 // Zeiger, wohin nächster Eintrag gespeichert wird + HOLZEIGER : Int := 40 // Zeiger, woher nächste Daten geholt werden + ANZAHL : Int := 100 // Anzahl der Datensätze (eingetragene) + STATUS : Word // Status des Fifo + ZUSATZDW1 : Int // Speicherzelle für 1.Zusatzdaten + ZUSATZDW2 : Int // Speicherzelle für 2.Zusatzdaten + ZUSATZDW3 : Int // Speicherzelle für 3.Zusatzdaten + ZUSATZDW4 : Int // Speicherzelle für 4.Zusatzdaten + Frei1 : Int + Frei2 : Int + Frei3 : Int + Frei4 : Int + Frei5 : Int + OP_Anzeige_Datensatz : Int // Bei Ringspeicher -1,-2,...-Datensatz anzeigen + Datensatz : Int // Zu lesender Datenstatz (OP-Zeug)********************************* + Taste_Daten_minus : Bool // Taste Datensatz -1 lesen + Taste_Daten_plus : Bool // Taste Datensatz +1 lesen + Taste_FIFO_Del : Bool // Taste Fifo löschen + Zustand : Int // Zustand + Error : Int // Error + Gesendet : Array[1..100] of "UDatenSend" + GesendetFIFOEnde : Struct + Endekennung : Word := WORD#16#FFEE // Fifo-Ende-Kennung (FFEE) diff --git a/=A01+UH07-KF00/Programmbausteine/SS_Host/Port1_SendFIFO.awl b/=A01+UH07-KF00/Programmbausteine/SS_Host/Port1_SendFIFO.awl new file mode 100644 index 0000000..e963db8 --- /dev/null +++ b/=A01+UH07-KF00/Programmbausteine/SS_Host/Port1_SendFIFO.awl @@ -0,0 +1,27 @@ +=== GlobalDB 7101: Port1_SendFIFO [DB] === +INTERFACE: + Static: + KOPF : Word := WORD#16#FF0F // Fifo-Kennung (FF) / Datensatzlänge in Word (1 - 128) + LAENGE : Int := 100 // Länge des Fifo (maximale Anzahl der Datensätze) + BRINGZEIGER : Int // Zeiger, wohin nächster Eintrag gespeichert wird + HOLZEIGER : Int // Zeiger, woher nächste Daten geholt werden + ANZAHL : Int // Anzahl der Datensätze (eingetragene) + STATUS : Word // Status des Fifo + ZUSATZDW1 : Int // Speicherzelle für 1.Zusatzdaten + ZUSATZDW2 : Int // Speicherzelle für 2.Zusatzdaten + ZUSATZDW3 : Int // Speicherzelle für 3.Zusatzdaten + ZUSATZDW4 : Int // Speicherzelle für 4.Zusatzdaten + Datensatz : Int // Zu lesender Datenstatz (OP-Zeug)********************************* + Daten1 : Int // Daten 1 + Daten2 : Int // Daten 2 + Daten3 : Int // Daten 3 + Daten4 : Int // Daten 4 + Daten5 : Int // Daten 5 + Daten6 : Int // Daten 6 + Taste_Daten_minus : Bool // Taste Datensatz -1 lesen + Taste_Daten_plus : Bool // Taste Datensatz +1 lesen + Taste_FIFO_Del : Bool // Taste Fifo löschen + Zustand : Int // Zustand + Error : Int // Error + Sende : Array[1..100] of "UDatenSend" + Endekennung : Word := WORD#16#FFEE // Fifo-Ende-Kennung (FFEE) diff --git a/=A01+UH07-KF00/Programmbausteine/SS_Host/Port1_Telegramme_auswerten.awl b/=A01+UH07-KF00/Programmbausteine/SS_Host/Port1_Telegramme_auswerten.awl new file mode 100644 index 0000000..e7d6d94 --- /dev/null +++ b/=A01+UH07-KF00/Programmbausteine/SS_Host/Port1_Telegramme_auswerten.awl @@ -0,0 +1,76 @@ +=== FC 9001: Port1_Telegramme_auswerten [STL] === +INTERFACE: + Input: + Output: + InOut: + Temp: + QuellDB : Any // Zeiger, wo Empfangsdaten sind + ZielDB : Any // Zeiger, wo Auswertesdaten sind + Teleg_Kennung_A : DWord + Teleg_Kennung_B : DWord + Teleg_Kennung_C : Word + AMR_DB : Int + AMR_DW : Int + Error : Bool + AR1Zeiger : DWord // Statt AR1 (ging nur bis DB-Länge <= 8191 Bytes) + AR1Start : DInt // Startwert mit Offset 0 + PLC_ABP : Word + Constant: + Return: + Ret_Val : Void + +--- NW 1: Telegrammkopf übergeben --- + BEU + +// Kennung A: + L "SS_Port1_EmpfangsDaten".Port1.TelegrammKennung[1] + T LB20 + L "SS_Port1_EmpfangsDaten".Port1.TelegrammKennung[2] + T LB21 + L "SS_Port1_EmpfangsDaten".Port1.TelegrammKennung[3] + T LB22 + L "SS_Port1_EmpfangsDaten".Port1.TelegrammKennung[4] + T LB23 + +// Kennung B: + L "SS_Port1_EmpfangsDaten".Port1.TelegrammKennung[5] + T LB24 + L "SS_Port1_EmpfangsDaten".Port1.TelegrammKennung[6] + T LB25 + L "SS_Port1_EmpfangsDaten".Port1.TelegrammKennung[7] + T LB26 + L "SS_Port1_EmpfangsDaten".Port1.TelegrammKennung[8] + T LB27 + +// Kennung C: + L "SS_Port1_EmpfangsDaten".Port1.TelegrammKennung[9] + T LB28 + L "SS_Port1_EmpfangsDaten".Port1.TelegrammKennung[10] + T LB29 + + +--- NW 2: BReqM-Telegramm ? (VollPuffer auslagern) --- + L Teleg_Kennung_A + L 'BReq' + ==D + JCN NoBREQM + + L Teleg_Kennung_B + L 'M' + ==D + JCN NoBREQM + +// Gewollten Trolley markieren + + BEU + +NoBREQM: NOP 0 + + +--- NW 3: Unbekanntes Telegramm --- +Unbekannt: CALL FC "DBMOV" (QuellDB:=9001, QuellDW:=0, ZielDB:=9001, ZielDW:=30, Anzahl_DW:=15, RE_VAL:="MW196") // Letztes ???-Telegramm speichern + + +--- NW 4: Baustein Ende --- + BE + diff --git a/=A01+UH07-KF00/Programmbausteine/SS_Host/Port2_Daten_empfangen.awl b/=A01+UH07-KF00/Programmbausteine/SS_Host/Port2_Daten_empfangen.awl new file mode 100644 index 0000000..831657a --- /dev/null +++ b/=A01+UH07-KF00/Programmbausteine/SS_Host/Port2_Daten_empfangen.awl @@ -0,0 +1,56 @@ +=== FB 9002: Port2_Daten_empfangen [STL] === +INTERFACE: + Input: + Output: + InOut: + Static: + Dyn : Struct // Status + RET_VAL_SaveFIFO_IN : Byte // Rückmeldung bei Fifo-Zugriff + Error : Struct // Störungen + Save_FIFO_IN : Bool // Save-FIFO fehlerhaft + Auswerte_FC : Bool // Kein Auswerte-FC angegeben + Telegramm : Bool // Telegramm in Auswerte-FC nicht bekannt + Empfangs_DB : Bool + DL_Sep : Bool + DL_Weiche : Bool + Status : Word // Status bei Fehlerfall + Temp: + Temp_NDR : Bool + Temp_Error : Bool + Constant: + +--- NW 1: Neue Daten vorhanden? --- +// Telegramm-Kopf hat Kennung ?: + L "SS_Port2_EmpfangsDaten".Port2.TelegrammKennung[1] + L 0 // Daten vorhanden? + ==I // Nein ! + BEC + + +--- NW 2: Empfangene Daten speichern --- +CALL FC "FifoOut" (SSDB:=8002, SSDW:=0, PARA:=WORD#16#E100, OUTDATEN:=P#M200.0, RE_VAL:="MB199") // da Ringspeicher nächster Eintrag lesen + austragen + +CALL FC "FifoIn" (SSDB:=8002, SSDW:=0, PARA:=WORD#16#0000, INDATEN:=DB9002.DBX0.0, RE_VAL:="MB199") + + L "MB199" + T Dyn.RET_VAL_SaveFIFO_IN + + JBI en03 // Alles ok + + SET + S Dyn.Error.Save_FIFO_IN // Error bei FIFO-Zugriff + +en03: NOP 0 + + +--- NW 3: Auswerte-FC aufrufen --- + UC "Port2_Telegramme_auswerten" + + +--- NW 4: Empfangsdatenfeld wieder freigeben --- +CALL FC "DBMOV" (QuellDB:=8000, QuellDW:=0, ZielDB:=9002, ZielDW:=00, Anzahl_DW:=15, RE_VAL:="MW196") // Empfangsfach leeren, da Telegramm verarbeitet + + +--- NW 5: Ende --- + BE + diff --git a/=A01+UH07-KF00/Programmbausteine/SS_Host/Port2_Daten_senden.awl b/=A01+UH07-KF00/Programmbausteine/SS_Host/Port2_Daten_senden.awl new file mode 100644 index 0000000..cf6f19e --- /dev/null +++ b/=A01+UH07-KF00/Programmbausteine/SS_Host/Port2_Daten_senden.awl @@ -0,0 +1,80 @@ +=== FB 9102: Port2_Daten_senden [STL] === +INTERFACE: + Input: + Output: + InOut: + Static: + Dyn : Struct // Status + RET_VAL_SendFIFO_OUT : Byte // Rückmeldung bei Fifo-Zugriff + RET_VAL_SaveFIFO_IN : Byte // Rückmeldung bei Fifo-Zugriff + Error : Struct // Störungen + Send_FIFO_OUT : Bool // Send-FIFO fehlerhaft + Save_FIFO_IN : Bool // Save-FIFO fehlerhaft + Res : Array[1..35] of Int // Damit Sendedaten ab DW100 ! + Temp: + Schleife : Int + Constant: + +--- NW 1: Sendefach frei? / Hat Host Daten verarbeitet --- +// Telegramm-Kopf leer?: + L 1 // Mit 1.Zeichen beginnen +L100: T Schleife + + L "SS_Port2_SendDaten".Port2.TelegrammKennung[Schleife] + L 0 // Daten noch vorhanden? + <>I // Ja! + BEC + + L Schleife + + 1 + T Schleife + + L 10 // 10.Zeichen erreicht ? + <=I // Nein ! + JC L100 + + +--- NW 2: Neue Sendedaten im FIFO ? --- + SET + R Dyn.Error.Send_FIFO_OUT // Error bei FIFO-Zugriff + +CALL FC "FifoOut" (SSDB:=7102, SSDW:=0, PARA:=WORD#16#E100, OUTDATEN:=DB9102.DBX0.0, RE_VAL:="MB199") // Gewollte Sendedaten | Lesen + austragen + + L "MB199" + T Dyn.RET_VAL_SendFIFO_OUT + + JBI En02 // Alles ok + + A "M199.2" // FIFO ist leer + BEC + + SET + S Dyn.Error.Send_FIFO_OUT // Error bei FIFO-Zugriff + + BEU + +En02: NOP 0 + + +--- NW 3: Gesendete Daten speichern --- + SET + R Dyn.Error.Save_FIFO_IN // Error bei FIFO-Zugriff + +CALL FC "FifoOut" (SSDB:=8102, SSDW:=0, PARA:=WORD#16#E100, OUTDATEN:=P#M200.0, RE_VAL:="MB199") // da Ringspeicher nächster Eintrag lesen + austragen + +CALL FC "FifoIn" (SSDB:=8102, SSDW:=0, PARA:=WORD#16#0000, INDATEN:=DB9102.DBX0.0, RE_VAL:="MB199") + + L "MB199" + T Dyn.RET_VAL_SaveFIFO_IN + + JBI en03 // Alles ok + + SET + S Dyn.Error.Save_FIFO_IN // Error bei FIFO-Zugriff + +en03: NOP 0 + + +--- NW 4: Ende --- + BE + diff --git a/=A01+UH07-KF00/Programmbausteine/SS_Host/Port2_EmpfangenFIFO.awl b/=A01+UH07-KF00/Programmbausteine/SS_Host/Port2_EmpfangenFIFO.awl new file mode 100644 index 0000000..5e450e9 --- /dev/null +++ b/=A01+UH07-KF00/Programmbausteine/SS_Host/Port2_EmpfangenFIFO.awl @@ -0,0 +1,29 @@ +=== GlobalDB 8002: Port2_EmpfangenFIFO [DB] === +INTERFACE: + Static: + EmpfangenFIFO : Struct + KOPF : Word := WORD#16#FF0F // Fifo-Kennung (FF) / Datensatzlänge in Word (1 - 128) + LAENGE : Int := 100 // Länge des Fifo (maximale Anzahl der Datensätze) + BRINGZEIGER : Int := 40 // Zeiger, wohin nächster Eintrag gespeichert wird + HOLZEIGER : Int := 40 // Zeiger, woher nächste Daten geholt werden + ANZAHL : Int := 100 // Anzahl der Datensätze (eingetragene) + STATUS : Word // Status des Fifo + ZUSATZDW1 : Int // Speicherzelle für 1.Zusatzdaten + ZUSATZDW2 : Int // Speicherzelle für 2.Zusatzdaten + ZUSATZDW3 : Int // Speicherzelle für 3.Zusatzdaten + ZUSATZDW4 : Int // Speicherzelle für 4.Zusatzdaten + Frei1 : Int + Frei2 : Int + Frei3 : Int + Frei4 : Int + Frei5 : Int + OP_Anzeige_Datensatz : Int // Bei Ringspeicher -1,-2,...-Datensatz anzeigen + Datensatz : Int // Zu lesender Datenstatz (OP-Zeug)********************************* + Taste_Daten_minus : Bool // Taste Datensatz -1 lesen + Taste_Daten_plus : Bool // Taste Datensatz +1 lesen + Taste_FIFO_Del : Bool // Taste Fifo löschen + Zustand : Int // Zustand + Error : Int // Error + Empfangen : Array[1..100] of "UDatenEmpfangen" + EmpfangenFIFOEnde : Struct + Endekennung : Word := WORD#16#FFEE // Fifo-Ende-Kennung (FFEE) diff --git a/=A01+UH07-KF00/Programmbausteine/SS_Host/Port2_GesendetFIFO.awl b/=A01+UH07-KF00/Programmbausteine/SS_Host/Port2_GesendetFIFO.awl new file mode 100644 index 0000000..f99e248 --- /dev/null +++ b/=A01+UH07-KF00/Programmbausteine/SS_Host/Port2_GesendetFIFO.awl @@ -0,0 +1,29 @@ +=== GlobalDB 8102: Port2_GesendetFIFO [DB] === +INTERFACE: + Static: + GesendetFIFO : Struct + KOPF : Word := WORD#16#FF0F // Fifo-Kennung (FF) / Datensatzlänge in Word (1 - 128) + LAENGE : Int := 100 // Länge des Fifo (maximale Anzahl der Datensätze) + BRINGZEIGER : Int := 40 // Zeiger, wohin nächster Eintrag gespeichert wird + HOLZEIGER : Int := 40 // Zeiger, woher nächste Daten geholt werden + ANZAHL : Int := 100 // Anzahl der Datensätze (eingetragene) + STATUS : Word // Status des Fifo + ZUSATZDW1 : Int // Speicherzelle für 1.Zusatzdaten + ZUSATZDW2 : Int // Speicherzelle für 2.Zusatzdaten + ZUSATZDW3 : Int // Speicherzelle für 3.Zusatzdaten + ZUSATZDW4 : Int // Speicherzelle für 4.Zusatzdaten + Frei1 : Int + Frei2 : Int + Frei3 : Int + Frei4 : Int + Frei5 : Int + OP_Anzeige_Datensatz : Int // Bei Ringspeicher -1,-2,...-Datensatz anzeigen + Datensatz : Int // Zu lesender Datenstatz (OP-Zeug)********************************* + Taste_Daten_minus : Bool // Taste Datensatz -1 lesen + Taste_Daten_plus : Bool // Taste Datensatz +1 lesen + Taste_FIFO_Del : Bool // Taste Fifo löschen + Zustand : Int // Zustand + Error : Int // Error + Gesendet : Array[1..100] of "UDatenSend" + GesendetFIFOEnde : Struct + Endekennung : Word := WORD#16#FFEE // Fifo-Ende-Kennung (FFEE) diff --git a/=A01+UH07-KF00/Programmbausteine/SS_Host/Port2_SendFIFO.awl b/=A01+UH07-KF00/Programmbausteine/SS_Host/Port2_SendFIFO.awl new file mode 100644 index 0000000..7470efc --- /dev/null +++ b/=A01+UH07-KF00/Programmbausteine/SS_Host/Port2_SendFIFO.awl @@ -0,0 +1,27 @@ +=== GlobalDB 7102: Port2_SendFIFO [DB] === +INTERFACE: + Static: + KOPF : Word := WORD#16#FF0F // Fifo-Kennung (FF) / Datensatzlänge in Word (1 - 128) + LAENGE : Int := 100 // Länge des Fifo (maximale Anzahl der Datensätze) + BRINGZEIGER : Int // Zeiger, wohin nächster Eintrag gespeichert wird + HOLZEIGER : Int // Zeiger, woher nächste Daten geholt werden + ANZAHL : Int // Anzahl der Datensätze (eingetragene) + STATUS : Word // Status des Fifo + ZUSATZDW1 : Int // Speicherzelle für 1.Zusatzdaten + ZUSATZDW2 : Int // Speicherzelle für 2.Zusatzdaten + ZUSATZDW3 : Int // Speicherzelle für 3.Zusatzdaten + ZUSATZDW4 : Int // Speicherzelle für 4.Zusatzdaten + Datensatz : Int // Zu lesender Datenstatz (OP-Zeug)********************************* + Daten1 : Int // Daten 1 + Daten2 : Int // Daten 2 + Daten3 : Int // Daten 3 + Daten4 : Int // Daten 4 + Daten5 : Int // Daten 5 + Daten6 : Int // Daten 6 + Taste_Daten_minus : Bool // Taste Datensatz -1 lesen + Taste_Daten_plus : Bool // Taste Datensatz +1 lesen + Taste_FIFO_Del : Bool // Taste Fifo löschen + Zustand : Int // Zustand + Error : Int // Error + Sende : Array[1..100] of "UDatenSend" + Endekennung : Word := WORD#16#FFEE // Fifo-Ende-Kennung (FFEE) diff --git a/=A01+UH07-KF00/Programmbausteine/SS_Host/Port2_Telegramme_auswerten.awl b/=A01+UH07-KF00/Programmbausteine/SS_Host/Port2_Telegramme_auswerten.awl new file mode 100644 index 0000000..338dd1a --- /dev/null +++ b/=A01+UH07-KF00/Programmbausteine/SS_Host/Port2_Telegramme_auswerten.awl @@ -0,0 +1,84 @@ +=== FC 9002: Port2_Telegramme_auswerten [STL] === +INTERFACE: + Input: + Output: + InOut: + Temp: + QuellDB : Any // Zeiger, wo Empfangsdaten sind + ZielDB : Any // Zeiger, wo Auswertesdaten sind + Teleg_Kennung_A : DWord + Teleg_Kennung_B : DWord + Teleg_Kennung_C : Word + Schleusen_DB : Int + Schleusen_DW : Int + Error : Bool + AR1Zeiger : DWord // Statt AR1 (ging nur bis DB-Länge <= 8191 Bytes) + AR1Start : DInt // Startwert mit Offset 0 + PLC_ABP : Word + EndZiel : Word + Constant: + Return: + Ret_Val : Void + +--- NW 1: Telegrammkopf übergeben --- +// Kennung A: + L "SS_Port2_EmpfangsDaten".Port2.TelegrammKennung[1] + T LB20 + L "SS_Port2_EmpfangsDaten".Port2.TelegrammKennung[2] + T LB21 + L "SS_Port2_EmpfangsDaten".Port2.TelegrammKennung[3] + T LB22 + L "SS_Port2_EmpfangsDaten".Port2.TelegrammKennung[4] + T LB23 + +// Kennung B: + L "SS_Port2_EmpfangsDaten".Port2.TelegrammKennung[5] + T LB24 + L "SS_Port2_EmpfangsDaten".Port2.TelegrammKennung[6] + T LB25 + L "SS_Port2_EmpfangsDaten".Port2.TelegrammKennung[7] + T LB26 + L "SS_Port2_EmpfangsDaten".Port2.TelegrammKennung[8] + T LB27 + +// Kennung C: + L "SS_Port2_EmpfangsDaten".Port2.TelegrammKennung[9] + T LB28 + L "SS_Port2_EmpfangsDaten".Port2.TelegrammKennung[10] + T LB29 + + +--- NW 2: GOHDRespM-Telegramm ? (Entscheidungsreaktion) --- + L Teleg_Kennung_A + L 'GOHD' + ==D + JCN NoGOHDRespM + + L Teleg_Kennung_B + L 'Resp' + ==D + JCN NoGOHDRespM + + L Teleg_Kennung_C + L 'M$00' + ==I + JCN NoGOHDRespM + +// Neu: Eintrag in Trolley-DB: +CALL FC "INT_to_BCD (4stellig)" (Int_Wert:="SS_Port2_EmpfangsDaten".Port2.Puffer_LinienNr, BCD_Wert:=EndZiel) + +CALL FC "Trolleydaten_ändern" (Gesamt_Trolley_DL:=1000, TrolleyID:="SS_Port2_EmpfangsDaten".Port2.TrolleyID, Endziel:=EndZiel, ShopGroup:="SS_Port2_EmpfangsDaten".Port2.StoreGroup) + + BEU // Vorher Übergabe an Sep + +NoGOHDRespM: NOP 0 + + +--- NW 3: Unbekanntes Telegramm --- +Unbekannt: NOP 0 +CALL FC "DBMOV" (QuellDB:=9002, QuellDW:=0, ZielDB:=9002, ZielDW:=30, Anzahl_DW:=15, RE_VAL:="MW196") // Letztes ???-Telegramm speichern + + +--- NW 4: Baustein Ende --- + BE + diff --git a/=A01+UH07-KF00/Programmbausteine/SS_Host/SS_Port1_EmpfangsDaten.awl b/=A01+UH07-KF00/Programmbausteine/SS_Host/SS_Port1_EmpfangsDaten.awl new file mode 100644 index 0000000..b13ee00 --- /dev/null +++ b/=A01+UH07-KF00/Programmbausteine/SS_Host/SS_Port1_EmpfangsDaten.awl @@ -0,0 +1,5 @@ +=== GlobalDB 9001: SS_Port1_EmpfangsDaten [DB] === +INTERFACE: + Static: + Port1 : "UDatenEmpfangen" // Daten von Host > SPS + Error : "UDatenEmpfangen" diff --git a/=A01+UH07-KF00/Programmbausteine/SS_Host/SS_Port1_SendDaten.awl b/=A01+UH07-KF00/Programmbausteine/SS_Host/SS_Port1_SendDaten.awl new file mode 100644 index 0000000..1d7952b --- /dev/null +++ b/=A01+UH07-KF00/Programmbausteine/SS_Host/SS_Port1_SendDaten.awl @@ -0,0 +1,4 @@ +=== GlobalDB 9101: SS_Port1_SendDaten [DB] === +INTERFACE: + Static: + Port1 : "UDatenSend" // Daten von SPS > Host diff --git a/=A01+UH07-KF00/Programmbausteine/SS_Host/SS_Port2_EmpfangsDaten.awl b/=A01+UH07-KF00/Programmbausteine/SS_Host/SS_Port2_EmpfangsDaten.awl new file mode 100644 index 0000000..c9c98ab --- /dev/null +++ b/=A01+UH07-KF00/Programmbausteine/SS_Host/SS_Port2_EmpfangsDaten.awl @@ -0,0 +1,5 @@ +=== GlobalDB 9002: SS_Port2_EmpfangsDaten [DB] === +INTERFACE: + Static: + Port2 : "UDatenEmpfangen" // Daten von Host > SPS + Error : "UDatenEmpfangen" diff --git a/=A01+UH07-KF00/Programmbausteine/SS_Host/SS_Port2_SendDaten.awl b/=A01+UH07-KF00/Programmbausteine/SS_Host/SS_Port2_SendDaten.awl new file mode 100644 index 0000000..ea6c3a4 --- /dev/null +++ b/=A01+UH07-KF00/Programmbausteine/SS_Host/SS_Port2_SendDaten.awl @@ -0,0 +1,4 @@ +=== GlobalDB 9102: SS_Port2_SendDaten [DB] === +INTERFACE: + Static: + Port2 : "UDatenSend" // Daten von SPS > Host diff --git a/=A01+UH07-KF00/Programmbausteine/SS_Host/Test_EmpfangsDaten.awl b/=A01+UH07-KF00/Programmbausteine/SS_Host/Test_EmpfangsDaten.awl new file mode 100644 index 0000000..b6c7b56 --- /dev/null +++ b/=A01+UH07-KF00/Programmbausteine/SS_Host/Test_EmpfangsDaten.awl @@ -0,0 +1,5 @@ +=== GlobalDB 8999: Test_EmpfangsDaten [DB] === +INTERFACE: + Static: + Port1 : "UDatenEmpfangen" + Error : "UDatenEmpfangen" diff --git a/=A01+UH07-KF00/Programmbausteine/Visualisierung/DVisu_CheckTrolley.awl b/=A01+UH07-KF00/Programmbausteine/Visualisierung/DVisu_CheckTrolley.awl new file mode 100644 index 0000000..46dab01 --- /dev/null +++ b/=A01+UH07-KF00/Programmbausteine/Visualisierung/DVisu_CheckTrolley.awl @@ -0,0 +1,28 @@ +=== InstanceDB 158: DVisu_CheckTrolley [DB] === +INTERFACE: + Input: + Output: + InOut: + Static: + SearchDaten : "UTrolley" + OutDaten : "UTrolley" + Leerfeld : "UTrolley" + Daten_Speichern : Bool + Errors : Struct + Datenbank : Bool + SFC20 : Bool + Listenende : Bool + Parameter : Bool + Stammdaten : Bool + Outdaten : Bool + Ergebnis : Struct + Keine Abfrage : Bool + Falsche_Abfrage : Bool + Keine Daten : Bool + Daten_vorhanden : Bool + Abruf_erfolgt : Bool + Eintrag_erfolgt : Bool + Position : Int + TrolleyID : DInt + ShopGroup : DInt + RET_VAL_BLKMOV : Int diff --git a/=A01+UH07-KF00/Programmbausteine/Visualisierung/DVisu_HMLeerPuffer.awl b/=A01+UH07-KF00/Programmbausteine/Visualisierung/DVisu_HMLeerPuffer.awl new file mode 100644 index 0000000..df27820 --- /dev/null +++ b/=A01+UH07-KF00/Programmbausteine/Visualisierung/DVisu_HMLeerPuffer.awl @@ -0,0 +1,22 @@ +=== InstanceDB 159: DVisu_HMLeerPuffer [DB] === +INTERFACE: + Input: + Output: + InOut: + Static: + LeerPuffer_Visu : "MHMLeerpuffer" + LeerPuffer_Visu_old : "MHMLeerpuffer" + Empty_Visu : Array[1..250] of Int + DL_DB : Int + LeerPuffer_Nr_from_PC : Int + LeerPuffer_Nr_from_PLC : Int + LeerPuffer_Nr_from_VAR : Int + VAR_old : Int + VAR_Timer : Int + RET_VAL_Datenbank : Byte + RET_VAL_BLKMOV : Int + Durchlauf1 : Bool + Error : Struct + Datenbank : Bool + Undef_LeerPuffer : Bool + BLKMOV : Bool diff --git a/=A01+UH07-KF00/Programmbausteine/Visualisierung/DVisu_HMOmniBereich_Plus.awl b/=A01+UH07-KF00/Programmbausteine/Visualisierung/DVisu_HMOmniBereich_Plus.awl new file mode 100644 index 0000000..2723b46 --- /dev/null +++ b/=A01+UH07-KF00/Programmbausteine/Visualisierung/DVisu_HMOmniBereich_Plus.awl @@ -0,0 +1,22 @@ +=== InstanceDB 252: DVisu_HMOmniBereich_Plus [DB] === +INTERFACE: + Input: + Output: + InOut: + Static: + Bereich_Visu : "MHMOmniBereich_Plus" + Bereich_Visu_old : "MHMOmniBereich_Plus" + Empty_Visu : Array[1..100] of Int + DL_DB : Int + Bereich_Nr_from_PC : Int + Bereich_Nr_from_PLC : Int + Bereich_Nr_from_VAR : Int + VAR_old : Int + VAR_Timer : Int + RET_VAL_Datenbank : Byte + RET_VAL_BLKMOV : Int + Durchlauf1 : Bool + Error : Struct + Datenbank : Bool + Undef_Schleuse : Bool + BLKMOV : Bool diff --git a/=A01+UH07-KF00/Programmbausteine/Visualisierung/DVisu_HMOmniSchleuse_Plus.awl b/=A01+UH07-KF00/Programmbausteine/Visualisierung/DVisu_HMOmniSchleuse_Plus.awl new file mode 100644 index 0000000..89c60fc --- /dev/null +++ b/=A01+UH07-KF00/Programmbausteine/Visualisierung/DVisu_HMOmniSchleuse_Plus.awl @@ -0,0 +1,22 @@ +=== InstanceDB 255: DVisu_HMOmniSchleuse_Plus [DB] === +INTERFACE: + Input: + Output: + InOut: + Static: + Schleuse_Visu : "MHMOmniSchleuse_Plus" + Schleuse_Visu_old : "MHMOmniSchleuse_Plus" + Empty_Visu : Array[1..100] of Int + DL_DB : Int + Schleuse_Nr_from_PC : Int + Schleuse_Nr_from_PLC : Int + Schleuse_Nr_from_VAR : Int + VAR_old : Int + VAR_Timer : Int + RET_VAL_Datenbank : Byte + RET_VAL_BLKMOV : Int + Durchlauf1 : Bool + Error : Struct + Datenbank : Bool + Undef_Schleuse : Bool + BLKMOV : Bool diff --git a/=A01+UH07-KF00/Programmbausteine/Visualisierung/DVisu_HMOmniWeiche_Plus.awl b/=A01+UH07-KF00/Programmbausteine/Visualisierung/DVisu_HMOmniWeiche_Plus.awl new file mode 100644 index 0000000..28b5911 --- /dev/null +++ b/=A01+UH07-KF00/Programmbausteine/Visualisierung/DVisu_HMOmniWeiche_Plus.awl @@ -0,0 +1,22 @@ +=== InstanceDB 256: DVisu_HMOmniWeiche_Plus [DB] === +INTERFACE: + Input: + Output: + InOut: + Static: + Weiche_Visu : "MHMOmniWeiche_Plus" + Weiche_Visu_old : "MHMOmniWeiche_Plus" + empty_Visu : Array[1..100] of Int + DL_DB : Int + Weiche_Nr_from_PC : Int + Weiche_Nr_from_PLC : Int + Weiche_Nr_from_VAR : Int + VAR_old : Int + VAR_Timer : Int + RET_VAL_Datenbank : Byte + RET_VAL_BLKMOV : Int + Durchlauf1 : Bool + Error : Struct + Datenbank : Bool + Undef_Weiche : Bool + BLKMOV : Bool diff --git a/=A01+UH07-KF00/Programmbausteine/Visualisierung/DVisu_HMOmnischleuse.awl b/=A01+UH07-KF00/Programmbausteine/Visualisierung/DVisu_HMOmnischleuse.awl new file mode 100644 index 0000000..ef75162 --- /dev/null +++ b/=A01+UH07-KF00/Programmbausteine/Visualisierung/DVisu_HMOmnischleuse.awl @@ -0,0 +1,22 @@ +=== InstanceDB 155: DVisu_HMOmnischleuse [DB] === +INTERFACE: + Input: + Output: + InOut: + Static: + Schleuse_Visu : "MHMOmniSchleuse" + Schleuse_Visu_old : "MHMOmniSchleuse" + Empty_Visu : Array[1..100] of Int + DL_DB : Int + Schleuse_Nr_from_PC : Int + Schleuse_Nr_from_PLC : Int + Schleuse_Nr_from_VAR : Int + VAR_old : Int + VAR_Timer : Int + RET_VAL_Datenbank : Byte + RET_VAL_BLKMOV : Int + Durchlauf1 : Bool + Error : Struct + Datenbank : Bool + Undef_Schleuse : Bool + BLKMOV : Bool diff --git a/=A01+UH07-KF00/Programmbausteine/Visualisierung/DVisu_HMVollpuffer.awl b/=A01+UH07-KF00/Programmbausteine/Visualisierung/DVisu_HMVollpuffer.awl new file mode 100644 index 0000000..6cb87be --- /dev/null +++ b/=A01+UH07-KF00/Programmbausteine/Visualisierung/DVisu_HMVollpuffer.awl @@ -0,0 +1,22 @@ +=== InstanceDB 157: DVisu_HMVollpuffer [DB] === +INTERFACE: + Input: + Output: + InOut: + Static: + VollPuffer_Visu : "MHMVollpuffer" + VollPuffer_Visu_old : "MHMVollpuffer" + Empty_Visu : Array[1..350] of Int + DL_DB : Int + VollPuffer_Nr_from_PC : Int + VollPuffer_Nr_from_PLC : Int + VollPuffer_Nr_from_VAR : Int + VAR_old : Int + VAR_Timer : Int + RET_VAL_Datenbank : Byte + RET_VAL_BLKMOV : Int + Durchlauf1 : Bool + Error : Struct + Datenbank : Bool + Undef_VollPuffer : Bool + BLKMOV : Bool diff --git a/=A01+UH07-KF00/Programmbausteine/Visualisierung/DVisu_Sorter_Rein.awl b/=A01+UH07-KF00/Programmbausteine/Visualisierung/DVisu_Sorter_Rein.awl new file mode 100644 index 0000000..ed2ca58 --- /dev/null +++ b/=A01+UH07-KF00/Programmbausteine/Visualisierung/DVisu_Sorter_Rein.awl @@ -0,0 +1,22 @@ +=== InstanceDB 151: DVisu_Sorter_Rein [DB] === +INTERFACE: + Input: + Output: + InOut: + Static: + Sep_Visu : "MSepSorterRein" + Sep_Visu_old : "MSepSorterRein" + Empty_Visu : Array[1..75] of Int + DL_DB : Int + Sep_Nr_from_PC : Int + Sep_Nr_from_PLC : Int + Sep_Nr_from_VAR : Int + VAR_old : Int + VAR_Timer : Int + RET_VAL_Datenbank : Byte + RET_VAL_BLKMOV : Int + Durchlauf1 : Bool + Error : Struct + Datenbank : Bool + Undef_Sep : Bool + BLKMOV : Bool diff --git a/=A01+UH07-KF00/Programmbausteine/Visualisierung/DVisu_StartSync.awl b/=A01+UH07-KF00/Programmbausteine/Visualisierung/DVisu_StartSync.awl new file mode 100644 index 0000000..2d21355 --- /dev/null +++ b/=A01+UH07-KF00/Programmbausteine/Visualisierung/DVisu_StartSync.awl @@ -0,0 +1,22 @@ +=== InstanceDB 154: DVisu_StartSync [DB] === +INTERFACE: + Input: + Output: + InOut: + Static: + StartSync_Visu : "MStartSync" + StartSync_Visu_old : "MStartSync" + Empty_Visu : Array[1..75] of Int + DL_DB : Int + StartSync_Nr_from_PC : Int + StartSync_Nr_from_PLC : Int + StartSync_Nr_from_VAR : Int + VAR_old : Int + VAR_Timer : Int + RET_VAL_Datenbank : Byte + RET_VAL_BLKMOV : Int + Durchlauf1 : Bool + Error : Struct + Datenbank : Bool + Undef_StartSync : Bool + BLKMOV : Bool diff --git a/=A01+UH07-KF00/Programmbausteine/Visualisierung/DVisu_Weiche_Sorter.awl b/=A01+UH07-KF00/Programmbausteine/Visualisierung/DVisu_Weiche_Sorter.awl new file mode 100644 index 0000000..ca72641 --- /dev/null +++ b/=A01+UH07-KF00/Programmbausteine/Visualisierung/DVisu_Weiche_Sorter.awl @@ -0,0 +1,22 @@ +=== InstanceDB 153: DVisu_Weiche_Sorter [DB] === +INTERFACE: + Input: + Output: + InOut: + Static: + Weiche_Visu : "MWeiche_Sorter" + Weiche_Visu_old : "MWeiche_Sorter" + Empty_Visu : Array[1..75] of Int + DL_DB : Int + Weiche_Nr_from_PC : Int + Weiche_Nr_from_PLC : Int + Weiche_Nr_from_VAR : Int + VAR_old : Int + VAR_Timer : Int + RET_VAL_Datenbank : Byte + RET_VAL_BLKMOV : Int + Durchlauf1 : Bool + Error : Struct + Datenbank : Bool + Undef_Weiche : Bool + BLKMOV : Bool diff --git a/=A01+UH07-KF00/Programmbausteine/Visualisierung/Visu_CheckTrolley.awl b/=A01+UH07-KF00/Programmbausteine/Visualisierung/Visu_CheckTrolley.awl new file mode 100644 index 0000000..afe24ec --- /dev/null +++ b/=A01+UH07-KF00/Programmbausteine/Visualisierung/Visu_CheckTrolley.awl @@ -0,0 +1,201 @@ +=== FB 158: Visu_CheckTrolley [STL] === +INTERFACE: + Input: + Output: + InOut: + Static: + SearchDaten : "UTrolley" + OutDaten : "UTrolley" + Leerfeld : "UTrolley" + Daten_Speichern : Bool // Aktuelle Daten übernehmen + Errors : Struct + Datenbank : Bool // Kein Datenlistenbereich / falscher Kopfinhalt / Endekennung + SFC20 : Bool // SFC20-Aufruf mit Fehler + Listenende : Bool // Listenende ist erreicht + Parameter : Bool // Falscher Parameter bei Aufruf + Stammdaten : Bool // Undefinierte Stammdaten zum Suchen + Outdaten : Bool // Undefinierte OUT-Daten + Ergebnis : Struct + Keine Abfrage : Bool // Keine Abfrage vorhanden + Falsche_Abfrage : Bool // Falsche / nicht eindeutige Abfrage + Keine Daten : Bool // Datensatz ist nicht vorhanden + Daten_vorhanden : Bool // Datensatz ist vorhanden + Abruf_erfolgt : Bool // Abruf einmalig ausgeführt + Eintrag_erfolgt : Bool // Speicherung ist erfolgt + Position : Int + TrolleyID : DInt + ShopGroup : DInt + RET_VAL_BLKMOV : Int + Temp: + Quelle : Any // Zeiger, wo Quell-Daten sind + Ziel : Any // Zeiger, wo Ziel-Daten sind + Error : Byte + Abfragen : Struct + TrolleyID : Bool + ShopGroup : Bool + Lager : Int + Lager_DB : Int + Lager_DW : Int + AR1Zeiger : DWord // Statt AR1 (ging nur bis DB-Länge <= 8191 Bytes) + AR1Start : DInt // Startwert mit Offset 0 + ErrorBit : Bool + Constant: + +--- NW 1: Initialisieren --- + L 0 + T Error + + SET + R Ergebnis.Abruf_erfolgt + + +--- NW 2: Daten speichern --- + AN Ergebnis.Daten_vorhanden + R Daten_Speichern + R Ergebnis.Eintrag_erfolgt + + A Daten_Speichern + R Daten_Speichern + R Ergebnis.Eintrag_erfolgt + JCN Nw3 + +CALL FC "DatenIn" (SSDB:=1000, SSDW:=0, INDATEN:=OutDaten, RE_VAL:="MB198") + + L "MB198" + L 2#11000000 + AW + L 0 + <>I + = Ergebnis.Eintrag_erfolgt + + L OutDaten.TrolleyID + T SearchDaten.TrolleyID + L DINT#0 // Ergebnis neu holen + T Ergebnis.TrolleyID + T SearchDaten.ShopGroup + + BEU + + +--- NW 3: Abfrage vorhanden ? --- +Nw3: L SearchDaten.TrolleyID + L DINT#0 + <>D + = Abfragen.TrolleyID + + L SearchDaten.ShopGroup + L DINT#0 + <>D + = Abfragen.ShopGroup + + A Abfragen.TrolleyID + AN Abfragen.ShopGroup + JC ReadTrolley + + A Abfragen.ShopGroup + AN Abfragen.TrolleyID + JC ReadAbrufID + + JU Ergebnis + + +--- NW 4: Outdaten löschen: --- +// Kennung + Datenbytes +DEL: L DINT#0 + T Ergebnis.TrolleyID + T Ergebnis.ShopGroup + + L 16#1004 // Kennung 10 + Word=04 + T LW0 + T LW10 // Any-Kennung, Datentyp + L 10 // Datenwords speichern + T LW2 + T LW12 // Wiederholungen + +// Quelle-Pointer erzeugen: (Leerfeld) + L 158 + T LW4 // DB_Nummer + L 40 // Adresse + SLD 3 + L 16#8400_0000 // Kennung: Daten + OD + T LD6 // Kennung, Adresse + +// Ziel-Pointer erzeugen: (Outdaten) + L 158 + T LW14 // DB_Nummer + L 20 // Adresse + SLD 3 + L 16#8400_0000 // Kennung: Daten + OD + T LD16 // Kennung, Adresse + +CALL SYS "BLKMOV" (SRCBLK:=Quelle, RET_VAL:=RET_VAL_BLKMOV, DSTBLK:=Ziel) // Datenliste-Daten speichern + + BEU + + +--- NW 5: Daten von TrolleyID lesen --- +ReadTrolley: L SearchDaten.TrolleyID + L Ergebnis.TrolleyID + ==D + = Ergebnis.Abruf_erfolgt + BEC + +CALL FC "DatenOut" (SSDB:=1000, SSDW:=0, PARA:=16#0000, SEARCHDATEN:=SearchDaten, RE_VAL:=Error, OUTDATEN:=OutDaten, Position:=Ergebnis.Position) // Eintrag lesen + + L OutDaten.TrolleyID + T Ergebnis.TrolleyID + + JU Ergebnis + + +--- NW 6: Daten von AbrufID lesen --- +ReadAbrufID: L SearchDaten.ShopGroup + T "MD220" + L Ergebnis.ShopGroup + ==D + = Ergebnis.Abruf_erfolgt + BEC + +CALL FC "DatenOut" (SSDB:=1000, SSDW:=0, PARA:=16#0500, SEARCHDATEN:=P#M220.0, RE_VAL:=Error, OUTDATEN:=OutDaten, Position:=Ergebnis.Position) // ShopGroup mit 16#0500 suchen ! + + L OutDaten.ShopGroup + T Ergebnis.ShopGroup + + +--- NW 7: Error / Ergebnis --- +// Errors: +Ergebnis: A L20.0 + = Errors.Datenbank + A L20.1 + = Errors.SFC20 + A L20.2 + = Errors.Listenende + A L20.3 + = Errors.Parameter + A L20.4 + = Errors.Stammdaten + A L20.5 + = Errors.Outdaten + +// Ergebnis: + AN Abfragen.TrolleyID + AN Abfragen.ShopGroup + = Ergebnis."Keine Abfrage" + A Abfragen.TrolleyID + A Abfragen.ShopGroup + = Ergebnis.Falsche_Abfrage + A L20.6 + = Ergebnis."Keine Daten" + A L20.7 + = Ergebnis.Daten_vorhanden + +// Resultat: + AN Ergebnis.Daten_vorhanden + JC DEL + + +--- NW 8: Ende --- + BE + diff --git a/=A01+UH07-KF00/Programmbausteine/Visualisierung/Visu_HMLeerPuffer.awl b/=A01+UH07-KF00/Programmbausteine/Visualisierung/Visu_HMLeerPuffer.awl new file mode 100644 index 0000000..e826a2c --- /dev/null +++ b/=A01+UH07-KF00/Programmbausteine/Visualisierung/Visu_HMLeerPuffer.awl @@ -0,0 +1,426 @@ +=== FB 159: Visu_HMLeerPuffer [STL] === +INTERFACE: + Input: + Output: + InOut: + Static: + LeerPuffer_Visu : "MHMLeerpuffer" // Lager-Bereich für Visualisierung + LeerPuffer_Visu_old : "MHMLeerpuffer" // COPYRIGHT by Ingenieurbüro A.EmmertOrtsstr.33, D-869925 Fuchstal (Germany)Tel.: 0049(0)8243-960629Version: Omniflow 2100 / 10.2024Schritt 0: Warten auf TrolleySchritt 1: Betriebsart ok/angegeben?Schritt 5: Mit Scanner fahren: Defaultziel ?Schritt 6: Scanner triggernSchritt 7: "DREQ" an PC sendenSchritt 8: Warten auf PC-Antwort Schritt 9: PC-Antwort auswerten Schritt 10: Fahrtrichtung ermittelnSchritt 11: Ausfahren ok ?Schritt 12: Warten auf Pin-Signal Schritt 13: Weichenbereich raus bereit ? Schritt 14: Daten an Rausweiche übergebenSchritt 15: Lager Mindestzeit öffnen Schritt 16: Trolley ausgefahren ? Schritt 17: Trolley ist draussen Schritt 18: BM wurde vereinzeltSchritt 19: Beladezustand checkenSchritt 20: Schleuse resettenSchritt 21: Reset ist zu Ende + Empty_Visu : Array[1..250] of Int // Bereich für Daten-Löschung + DL_DB : Int // Datenlisten-DB + LeerPuffer_Nr_from_PC : Int // PC>PLC: Für diesen Lager Daten bereitstellen + LeerPuffer_Nr_from_PLC : Int // PLC>PC: Daten von diesem Lagere aktiv + LeerPuffer_Nr_from_VAR : Int // VAR>PLC: Für diesen Lager Daten bereitstellen + VAR_old : Int // VAR>PLC: Für diesen Lager Daten bereitstellen + VAR_Timer : Int // VAR>PLC: Für diesen Lager Daten bereitstellen + RET_VAL_Datenbank : Byte + RET_VAL_BLKMOV : Int + Durchlauf1 : Bool // 1.Durchlauf hat stattgefunden + Error : Struct + Datenbank : Bool + Undef_LeerPuffer : Bool + BLKMOV : Bool + Input: + Output: + InOut: + Static: + Puffer : "UDLHMLeerPuffer" + Dyn : Struct + Anzahl_LeerTrolleys : Int // AB DW250: Liste der Trolleys im Leerpuffer + None: + PufferTrolleyliste_DW : Int := 250 + Input: + Output: + InOut: + Static: + Puffer : "UDLHMLeerPuffer" + Dyn : Struct + Anzahl_LeerTrolleys : Int // AB DW250: Liste der Trolleys im Leerpuffer + None: + PufferTrolleyliste_DW : Int := 250 + Temp: + Quelle : Any // Zeiger, wo Quell-Daten sind + Ziel : Any // Zeiger, wo Ziel-Daten sind + Lager_DB : Int // Lager-DB + Lager_DW : Int // Lager-DW + AR1Zeiger : DWord // Statt AR1 (ging nur bis DB-Länge <= 8191 Bytes) + AR1Start : DInt // Startwert mit Offset 0 + Lager_Nr_aktiv : Int // Intern: Für diesen Lager Daten bereitstellen + Constant: + +--- NW 1: + --- + L LeerPuffer_Nr_from_VAR // Anforderung von Variablentabelle ? + L 0 + >I // Ja ! + JC X010 + + L LeerPuffer_Nr_from_PC // Anfoderung von Visualisierung? + L 0 + >I // Ja ! + JC X011 + + L 0 + T LeerPuffer_Nr_from_PLC + T VAR_old + T VAR_Timer + + SET + R Error.Datenbank + R Error.Undef_LeerPuffer + R Error.BLKMOV + + A Durchlauf1 + R Durchlauf1 // 1.Durchlauf hat stattgefunden + JC D010 + + BEU + +// Daten löschen: +// Kennung + Datenbytes +D010: L 16#1004 // Kennung 10 + Word=04 + T LW0 + T LW10 // Any-Kennung, Datentyp + L 250 // Datenwords speichern + T LW2 + T LW12 // Wiederholungen + +// Quelle-Pointer erzeugen: (Empty-Visu) + L 159 + T LW4 // DB_Nummer + L 1000 // Adresse + SLD 3 + L 16#8400_0000 // Kennung: Daten + OD + T LD6 // Kennung, Adresse + +// Ziel-Pointer erzeugen: (Lager_Visu_Daten) + L 159 + T LW14 // DB_Nummer + L 0 // Adresse + SLD 3 + L 16#8400_0000 // Kennung: Daten + OD + T LD16 // Kennung, Adresse + +CALL SYS "BLKMOV" (SRCBLK:=Quelle, RET_VAL:=RET_VAL_BLKMOV, DSTBLK:=Ziel) // Datenliste-Daten speichern + +// Ziel-Pointer erzeugen: (Lager_Visu_old-Daten) + L 159 + T LW14 // DB_Nummer + L 500 // Adresse + SLD 3 + L 16#8400_0000 // Kennung: Daten + OD + T LD16 // Kennung, Adresse + +CALL SYS "BLKMOV" (SRCBLK:=Quelle, RET_VAL:=RET_VAL_BLKMOV, DSTBLK:=Ziel) // Datenliste-Daten speichern + + L 0 + T RET_VAL_Datenbank + T RET_VAL_BLKMOV + + BEU + +X010: CAC + T Lager_Nr_aktiv + + L 0 // Anforderung von PC löschen + T LeerPuffer_Nr_from_PC // Visualisierung + +// Automatisches Deaktivieren: + L LeerPuffer_Nr_from_VAR + L VAR_old // Noch diesselbe VAR-Nr. ? + ==I // Ja ! + A Durchlauf1 + JC Y010 + +// NeuBeginn: + L 3600 // 1 Stunde + T VAR_Timer // Timer neu laden + + L LeerPuffer_Nr_from_VAR + T VAR_old // VAR-Nr. speichern + + JU En01 + +// Timer aktiv: +Y010: AN "1s-Impuls" // 1s-Impuls + JC En01 + + L VAR_Timer // Timer + + -1 // 1s von Restzeit abziehen + T VAR_Timer // Timer + + L 0 // abgelaufen ? + >I // Nein ! + JC En01 + +// Timer abgelaufen: + L 0 // Automatisch beaktivieren + T LeerPuffer_Nr_from_VAR + T VAR_old + T VAR_Timer // Timer + + JU En01 + +X011: CAC + T Lager_Nr_aktiv + + L 0 // Anforderung von VAR löschen + T LeerPuffer_Nr_from_VAR // Visualisierung + T VAR_old + T VAR_Timer + +En01: NOP 0 + + +--- NW 2: Zeiger von gewolltem Lager ermitteln --- + L Lager_Nr_aktiv + T "MW200" // Search-Daten + +CALL FC "DatenOut" (SSDB:=DL_DB, SSDW:=0, PARA:=WORD#16#0000, SEARCHDATEN:=P#M200.0, RE_VAL:="MB219", OUTDATEN:=P#M220.0, Position:="MW298") // Datenlisten-DB + + L "MB219" + T RET_VAL_Datenbank // Rückmeldung bei Datenbank-Zugriff (Vorstau-DL) + + JBI ok2 + + A "M219.0" + S Error.Datenbank + +No: SET + S Error.Undef_LeerPuffer + + L 0 + T LeerPuffer_Nr_from_PLC // Aktiv-Lager + + JU D010 + +ok2: SET + R Error.Datenbank + R Error.Undef_LeerPuffer + + L "MW222" + L 1277 // HM-Leerpuffer ? + ==I // Ja! + JC Ok2_Mig + + JU No + +Ok2_Mig: L "MW224" + T Lager_DB + L "MW226" + T Lager_DW + + +--- NW 3: Neue Datenübergabe an PC ? --- + AN Durchlauf1 // 1.Durchlauf hat stattgefunden + JC En03 + +// Ziel-Pointer erzeugen: (PLC-Daten) + L Lager_DW + ITD + T AR1Start // Startwert mit Offset 0 + +// Anzahl Leertrolleys: + L LeerPuffer_Visu.Dyn.Anzahl_LeerTrolleys + L LeerPuffer_Visu_old.Dyn.Anzahl_LeerTrolleys + ==D // Keine Änderung ! + JC X309 + + L AR1Start // Startwert mit Offset 0 + + DINT#350 // Offset für Anzahl Leer-Trolleys + SLD 3 + T AR1Zeiger // Statt Dyn.Bereichsstop (ging nur bis DB-Länge <= 8191 Bytes) + L LeerPuffer_Visu.Dyn.Anzahl_LeerTrolleys + OPN DB[Lager_DB] // Lager-DB öffnen + T DBW [AR1Zeiger] + +// HMI TrolleyID-Einfahrt: +X309: L LeerPuffer_Visu.Dyn.TrolleyID_Einfahrt + L LeerPuffer_Visu_old.Dyn.TrolleyID_Einfahrt + ==D // Keine Änderung ! + JC X310 + + L AR1Start // Startwert mit Offset 0 + + DINT#72 // Offset für TrolleyID Einfahrt + SLD 3 + T AR1Zeiger // Statt Dyn.Bereichsstop (ging nur bis DB-Länge <= 8191 Bytes) + L LeerPuffer_Visu.Dyn.TrolleyID_Einfahrt + OPN DB[Lager_DB] // Lager-DB öffnen + T DBD [AR1Zeiger] + +// Lagern.Sk-Reset: +X310: A LeerPuffer_Visu.Dyn.Sk.Reset + A LeerPuffer_Visu_old.Dyn.Sk.Reset + O + AN LeerPuffer_Visu.Dyn.Sk.Reset + AN LeerPuffer_Visu_old.Dyn.Sk.Reset + JC X311 // Keine Änderung ! + + L AR1Start // Startwert mit Offset 0 + + DINT#98 // Offset für SK-Zeug + SLD 3 + L 3 // Damit DBX_Bit 3 + OD + T AR1Zeiger // Statt Dyn.Bereichsstop (ging nur bis DB-Länge <= 8191 Bytes) + A LeerPuffer_Visu.Dyn.Sk.Reset + OPN DB[Lager_DB] // Lager-DB öffnen + = DBX [AR1Zeiger] // Lager-SK-Reset + +// HMI-Schleuse-Reset: +X311: A LeerPuffer_Visu.Dyn.HMI.Schleuse_resetten_Leerpuffer + A LeerPuffer_Visu_old.Dyn.HMI.Schleuse_resetten_Leerpuffer + O + AN LeerPuffer_Visu.Dyn.HMI.Schleuse_resetten_Leerpuffer + AN LeerPuffer_Visu_old.Dyn.HMI.Schleuse_resetten_Leerpuffer + JC X312 // Keine Änderung ! + + L AR1Start // Startwert mit Offset 0 + + DINT#82 // Offset für HMI-Zeug + SLD 3 + L 0 // Damit DBX_Bit 0 + OD + T AR1Zeiger // Statt Dyn.Bereichsstop (ging nur bis DB-Länge <= 8191 Bytes) + A LeerPuffer_Visu.Dyn.HMI.Schleuse_resetten_Leerpuffer + OPN DB[Lager_DB] // Weiche-DB öffnen + = DBX [AR1Zeiger] // Weiche-SK-Reset + +// HMI-Lager initialisieren: +X312: A LeerPuffer_Visu.Dyn.HMI.LeerPuffer_initialisieren + A LeerPuffer_Visu_old.Dyn.HMI.LeerPuffer_initialisieren + O + AN LeerPuffer_Visu.Dyn.HMI.LeerPuffer_initialisieren + AN LeerPuffer_Visu_old.Dyn.HMI.LeerPuffer_initialisieren + JC X313 // Keine Änderung ! + + L AR1Start // Startwert mit Offset 0 + + DINT#82 // Offset für HMI-Zeug + SLD 3 + L 1 // Damit DBX_Bit 1 + OD + T AR1Zeiger // Statt Dyn.Bereichsstop (ging nur bis DB-Länge <= 8191 Bytes) + A LeerPuffer_Visu.Dyn.HMI.LeerPuffer_initialisieren + OPN DB[Lager_DB] // Weiche-DB öffnen + = DBX [AR1Zeiger] // Weiche-SK-Reset + +// HMI-Lager Einlagern sperren: +X313: A LeerPuffer_Visu.Dyn.HMI.Einlagern_gesperrt + A LeerPuffer_Visu_old.Dyn.HMI.Einlagern_gesperrt + O + AN LeerPuffer_Visu.Dyn.HMI.Einlagern_gesperrt + AN LeerPuffer_Visu_old.Dyn.HMI.Einlagern_gesperrt + JC X314 // Keine Änderung ! + + L AR1Start // Startwert mit Offset 0 + + DINT#82 // Offset für HMI-Zeug + SLD 3 + L 2 // Damit DBX_Bit 2 + OD + T AR1Zeiger // Statt Dyn.Bereichsstop (ging nur bis DB-Länge <= 8191 Bytes) + A LeerPuffer_Visu.Dyn.HMI.Einlagern_gesperrt + OPN DB[Lager_DB] // Weiche-DB öffnen + = DBX [AR1Zeiger] // Weiche-SK-Reset + +// HMI-Lager Auslagern sperren: +X314: A LeerPuffer_Visu.Dyn.HMI.AusLagern_gesperrt + A LeerPuffer_Visu_old.Dyn.HMI.AusLagern_gesperrt + O + AN LeerPuffer_Visu.Dyn.HMI.AusLagern_gesperrt + AN LeerPuffer_Visu_old.Dyn.HMI.AusLagern_gesperrt + JC X315 // Keine Änderung ! + + L AR1Start // Startwert mit Offset 0 + + DINT#82 // Offset für HMI-Zeug + SLD 3 + L 3 // Damit DBX_Bit 3 + OD + T AR1Zeiger // Statt Dyn.Bereichsstop (ging nur bis DB-Länge <= 8191 Bytes) + A LeerPuffer_Visu.Dyn.HMI.AusLagern_gesperrt + OPN DB[Lager_DB] // Weiche-DB öffnen + = DBX [AR1Zeiger] // Weiche-SK-Reset + +// Einen Leertrolley ausfahren: +X315: A LeerPuffer_Visu.Dyn.Status.Einen_LeerTrolley_ausfahren + A LeerPuffer_Visu_old.Dyn.Status.Einen_LeerTrolley_ausfahren + O + AN LeerPuffer_Visu.Dyn.Status.Einen_LeerTrolley_ausfahren + AN LeerPuffer_Visu_old.Dyn.Status.Einen_LeerTrolley_ausfahren + JC En03 // Keine Änderung ! + + L AR1Start // Startwert mit Offset 0 + + DINT#71 // Offset für Weichen-Zeug + SLD 3 + L 4 // Damit DBX_Bit 4 + OD + T AR1Zeiger // Statt Dyn.Bereichsstop (ging nur bis DB-Länge <= 8191 Bytes) + A LeerPuffer_Visu.Dyn.Status.Einen_LeerTrolley_ausfahren + OPN DB[Lager_DB] // Weiche-DB öffnen + = DBX [AR1Zeiger] // Weiche-SK-Reset + +En03: NOP 0 + + +--- NW 4: Datenübernahme vom PC --- +// Kennung + Datenbytes + L 16#1004 // Kennung 10 + Word=04 + T LW0 + T LW10 // Any-Kennung, Datentyp + L 250 // Datenwords speichern + T LW2 + T LW12 // Wiederholungen + +// Quelle-Pointer erzeugen: (PLC-Daten) + L Lager_DB + T LW4 // DB_Nummer + L Lager_DW // Adresse + SLD 3 + L 16#8400_0000 // Kennung: Daten + OD + T LD6 // Kennung, Adresse + +// Ziel-Pointer erzeugen: (PC-Lager-Visu-Daten) + L 159 + T LW14 // DB_Nummer + L 0 // Adresse + SLD 3 + L 16#8400_0000 // Kennung: Daten + OD + T LD16 // Kennung, Adresse + +CALL SYS "BLKMOV" (SRCBLK:=Quelle, RET_VAL:=RET_VAL_BLKMOV, DSTBLK:=Ziel) // Datenliste-Daten speichern + + L RET_VAL_BLKMOV // Rückmeldung + L 0 // Fehler vorhanden ? + <>I // Ja ! + = Error.BLKMOV // Error bei Block kopieren + BEC + +// Ziel-Pointer erzeugen: (Lager_Visu_old-Daten) + L 159 + T LW14 // DB_Nummer + L 500 // Adresse + SLD 3 + L 16#8400_0000 // Kennung: Daten + OD + T LD16 // Kennung, Adresse + +CALL SYS "BLKMOV" (SRCBLK:=Quelle, RET_VAL:=RET_VAL_BLKMOV, DSTBLK:=Ziel) // Datenliste-Daten speichern + + L RET_VAL_BLKMOV // Rückmeldung + L 0 // Fehler vorhanden ? + <>I // Ja ! + = Error.BLKMOV // Error bei Block kopieren + BEC + + L Lager_Nr_aktiv + T LeerPuffer_Nr_from_PLC // Rückmeldung an PC (Daten stehen an) + + SET + S Durchlauf1 // 1.Durchlauf hat stattgefunden + + +--- NW 5: Ende --- + BE + diff --git a/=A01+UH07-KF00/Programmbausteine/Visualisierung/Visu_HMOmniBereich_Plus.awl b/=A01+UH07-KF00/Programmbausteine/Visualisierung/Visu_HMOmniBereich_Plus.awl new file mode 100644 index 0000000..54c3a77 --- /dev/null +++ b/=A01+UH07-KF00/Programmbausteine/Visualisierung/Visu_HMOmniBereich_Plus.awl @@ -0,0 +1,336 @@ +=== FB 252: Visu_HMOmniBereich_Plus [STL] === +INTERFACE: + Input: + Output: + InOut: + Static: + Bereich_Visu : "MHMOmniBereich_Plus" // Schleuse-Bereich für Visualisierung + Bereich_Visu_old : "MHMOmniBereich_Plus" + Empty_Visu : Array[1..100] of Int // Bereich für Daten-Löschung + DL_DB : Int // Datenlisten-DB + Bereich_Nr_from_PC : Int // PC>PLC: Für diesen Schleuse Daten bereitstellen + Bereich_Nr_from_PLC : Int // PLC>PC: Daten von diesem Schleusee aktiv + Bereich_Nr_from_VAR : Int // VAR>PLC: Für diesen Schleuse Daten bereitstellen + VAR_old : Int // VAR>PLC: Für diesen Schleuse Daten bereitstellen + VAR_Timer : Int // VAR>PLC: Für diesen Schleuse Daten bereitstellen + RET_VAL_Datenbank : Byte + RET_VAL_BLKMOV : Int + Durchlauf1 : Bool // 1.Durchlauf hat stattgefunden + Error : Struct + Datenbank : Bool + Undef_Schleuse : Bool + BLKMOV : Bool + Temp: + Quelle : Any // Zeiger, wo Quell-Daten sind + Ziel : Any // Zeiger, wo Ziel-Daten sind + Bereichs_DB : Int // Schleuse-DB + Bereichs_DW : Int // Schleuse-DW + AR1Zeiger : DWord // Statt AR1 (ging nur bis DB-Länge <= 8191 Bytes) + AR1Start : DInt // Startwert mit Offset 0 + Schleuse_Nr_aktiv : Int // Intern: Für diesen Schleuse Daten bereitstellen + Constant: + +--- NW 1: + --- + L Bereich_Nr_from_VAR // Anforderung von Variablentabelle ? + L 0 + >I // Ja ! + JC X010 + + L Bereich_Nr_from_PC // Anfoderung von Visualisierung? + L 0 + >I // Ja ! + JC X011 + + L 0 + T Bereich_Nr_from_PLC + T VAR_old + T VAR_Timer + + SET + R Error.Datenbank + R Error.Undef_Schleuse + R Error.BLKMOV + + A Durchlauf1 + R Durchlauf1 // 1.Durchlauf hat stattgefunden + JC D010 + + BEU + +// Daten löschen: +// Kennung + Datenbytes +D010: L 16#1004 // Kennung 10 + Word=04 + T LW0 + T LW10 // Any-Kennung, Datentyp + L 100 // Datenwords speichern + T LW2 + T LW12 // Wiederholungen + +// Quelle-Pointer erzeugen: (Empty-Visu) + L 252 + T LW4 // DB_Nummer + L 400 // Adresse + SLD 3 + L 16#8400_0000 // Kennung: Daten + OD + T LD6 // Kennung, Adresse + +// Ziel-Pointer erzeugen: (Schleuse_Visu_Daten) + L 252 + T LW14 // DB_Nummer + L 0 // Adresse + SLD 3 + L 16#8400_0000 // Kennung: Daten + OD + T LD16 // Kennung, Adresse + +CALL SYS "BLKMOV" (SRCBLK:=Quelle, RET_VAL:=RET_VAL_BLKMOV, DSTBLK:=Ziel) // Datenliste-Daten speichern + +// Ziel-Pointer erzeugen: (Schleuse_Visu_old-Daten) + L 252 + T LW14 // DB_Nummer + L 200 // Adresse + SLD 3 + L 16#8400_0000 // Kennung: Daten + OD + T LD16 // Kennung, Adresse + +CALL SYS "BLKMOV" (SRCBLK:=Quelle, RET_VAL:=RET_VAL_BLKMOV, DSTBLK:=Ziel) // Datenliste-Daten speichern + + L 0 + T RET_VAL_Datenbank + T RET_VAL_BLKMOV + + BEU + +X010: CAC + T Schleuse_Nr_aktiv + + L 0 // Anforderung von PC löschen + T Bereich_Nr_from_PC // Visualisierung + +// Automatisches Deaktivieren: + L Bereich_Nr_from_VAR + L VAR_old // Noch diesselbe VAR-Nr. ? + ==I // Ja ! + A Durchlauf1 + JC Y010 + +// NeuBeginn: + L 3600 // 1 Stunde + T VAR_Timer // Timer neu laden + + L Bereich_Nr_from_VAR + T VAR_old // VAR-Nr. speichern + + JU En01 + +// Timer aktiv: +Y010: AN "1s-Impuls" // 1s-Impuls + JC En01 + + L VAR_Timer // Timer + + -1 // 1s von Restzeit abziehen + T VAR_Timer // Timer + + L 0 // abgelaufen ? + >I // Nein ! + JC En01 + +// Timer abgelaufen: + L 0 // Automatisch beaktivieren + T Bereich_Nr_from_VAR + T VAR_old + T VAR_Timer // Timer + + JU En01 + +X011: CAC + T Schleuse_Nr_aktiv + + L 0 // Anforderung von VAR löschen + T Bereich_Nr_from_VAR // Visualisierung + T VAR_old + T VAR_Timer + +En01: NOP 0 + + +--- NW 2: Zeiger von gewolltem Bereich_Plus ermitteln --- + L Schleuse_Nr_aktiv + T "MW200" // Search-Daten + +CALL FC "DatenOut" (SSDB:=DL_DB, SSDW:=0, PARA:=WORD#16#0000, SEARCHDATEN:=P#M200.0, RE_VAL:="MB219", OUTDATEN:=P#M220.0, Position:="MW298") // Datenlisten-DB + + L "MB219" + T RET_VAL_Datenbank // Rückmeldung bei Datenbank-Zugriff (Vorstau-DL) + + JBI ok2 + + A "M219.0" + S Error.Datenbank + +No: SET + S Error.Undef_Schleuse + + L 0 + T Bereich_Nr_from_PLC // Aktiv-Schleuse + + JU D010 + +ok2: SET + R Error.Datenbank + R Error.Undef_Schleuse + + L "MW222" + L 2275 // Omni-Bereich_Plus? + ==I // Ja! + JC Ok2_Mig + + JU No + +Ok2_Mig: L "MW224" + T Bereichs_DB + L "MW226" + T Bereichs_DW + + +--- NW 3: Neue Datenübergabe an PC ? --- + AN Durchlauf1 // 1.Durchlauf hat stattgefunden + JC En03 + +// Ziel-Pointer erzeugen: (PLC-Daten) + L Bereichs_DW + ITD + T AR1Start // Startwert mit Offset 0 + +// Raus-Trolleys: + L Bereich_Visu.Dyn.Raus_Trolleys + L Bereich_Visu_old.Dyn.Raus_Trolleys + ==I // Keine Änderung ! + JC X200 + + L AR1Start // Startwert mit Offset 0 + + DINT#192 // Offset für Raus-Trolleys + SLD 3 + T AR1Zeiger // Statt Dyn.Bereichsstop (ging nur bis DB-Länge <= 8191 Bytes) + L Bereich_Visu.Dyn.Raus_Trolleys + OPN DB[Bereichs_DB] // Schleuse-DB öffnen + T DBW [AR1Zeiger] // Raus-Trolleys + +// Fahrzeit: +X200: L Bereich_Visu.Bereich.Fahrzeit + L Bereich_Visu_old.Bereich.Fahrzeit + ==I // Keine Änderung ! + JC X201 + + L AR1Start // Startwert mit Offset 0 + + DINT#50 // Offset für Fahrzeit + SLD 3 + T AR1Zeiger // Statt Dyn.Bereichsstop (ging nur bis DB-Länge <= 8191 Bytes) + L Bereich_Visu.Bereich.Fahrzeit + OPN DB[Bereichs_DB] // Schleuse-DB öffnen + T DBW [AR1Zeiger] // Schleuse-Zug + +// Schleusen.SK-Reset: +X201: A Bereich_Visu.Dyn.Sk.Reset + A Bereich_Visu_old.Dyn.Sk.Reset + O + AN Bereich_Visu.Dyn.Sk.Reset + AN Bereich_Visu_old.Dyn.Sk.Reset + JC X301 // Keine Änderung ! + + L AR1Start // Startwert mit Offset 0 + + DINT#88 // Offset für SK-Zeug + SLD 3 + L 3 // Damit DBX_Bit 3 + OD + T AR1Zeiger // Statt Dyn.Bereichsstop (ging nur bis DB-Länge <= 8191 Bytes) + A Bereich_Visu.Dyn.Sk.Reset + OPN DB[Bereichs_DB] // Schleuse-DB öffnen + = DBX [AR1Zeiger] // Schleuse-SK-Reset + +// HMI-Reset: +X301: A Bereich_Visu.Dyn.HMI.Bereich_resetten + A Bereich_Visu_old.Dyn.HMI.Bereich_resetten + O + AN Bereich_Visu.Dyn.HMI.Bereich_resetten + AN Bereich_Visu_old.Dyn.HMI.Bereich_resetten + JC En03 // Keine Änderung ! + + L AR1Start // Startwert mit Offset 0 + + DINT#72 // Offset für HMI + SLD 3 + L 0 // Damit DBX_Bit 0 + OD + T AR1Zeiger // Statt Dyn.Bereichsstop (ging nur bis DB-Länge <= 8191 Bytes) + A Bereich_Visu.Dyn.HMI.Bereich_resetten + OPN DB[Bereichs_DB] // Weiche-DB öffnen + = DBX [AR1Zeiger] // Weiche-SK-Reset + +En03: NOP 0 + + +--- NW 4: Datenübernahme vom PC --- +// Kennung + Datenbytes + L 16#1004 // Kennung 10 + Word=04 + T LW0 + T LW10 // Any-Kennung, Datentyp + L 100 // Datenwords speichern + T LW2 + T LW12 // Wiederholungen + +// Quelle-Pointer erzeugen: (PLC-Daten) + L Bereichs_DB + T LW4 // DB_Nummer + L Bereichs_DW // Adresse + SLD 3 + L 16#8400_0000 // Kennung: Daten + OD + T LD6 // Kennung, Adresse + +// Ziel-Pointer erzeugen: (PC-Schleuse-Visu-Daten) + L 252 + T LW14 // DB_Nummer + L 0 // Adresse + SLD 3 + L 16#8400_0000 // Kennung: Daten + OD + T LD16 // Kennung, Adresse + +CALL SYS "BLKMOV" (SRCBLK:=Quelle, RET_VAL:=RET_VAL_BLKMOV, DSTBLK:=Ziel) // Datenliste-Daten speichern + + L RET_VAL_BLKMOV // Rückmeldung + L 0 // Fehler vorhanden ? + <>I // Ja ! + = Error.BLKMOV // Error bei Block kopieren + BEC + +// Ziel-Pointer erzeugen: (Schleuse_Visu_old-Daten) + L 252 + T LW14 // DB_Nummer + L 200 // Adresse + SLD 3 + L 16#8400_0000 // Kennung: Daten + OD + T LD16 // Kennung, Adresse + +CALL SYS "BLKMOV" (SRCBLK:=Quelle, RET_VAL:=RET_VAL_BLKMOV, DSTBLK:=Ziel) // Datenliste-Daten speichern + + L RET_VAL_BLKMOV // Rückmeldung + L 0 // Fehler vorhanden ? + <>I // Ja ! + = Error.BLKMOV // Error bei Block kopieren + BEC + + L Schleuse_Nr_aktiv + T Bereich_Nr_from_PLC // Rückmeldung an PC (Daten stehen an) + + SET + S Durchlauf1 // 1.Durchlauf hat stattgefunden + + +--- NW 5: Ende --- + BE + diff --git a/=A01+UH07-KF00/Programmbausteine/Visualisierung/Visu_HMOmniSchleuse.awl b/=A01+UH07-KF00/Programmbausteine/Visualisierung/Visu_HMOmniSchleuse.awl new file mode 100644 index 0000000..4849ac4 --- /dev/null +++ b/=A01+UH07-KF00/Programmbausteine/Visualisierung/Visu_HMOmniSchleuse.awl @@ -0,0 +1,364 @@ +=== FB 155: Visu_HMOmniSchleuse [STL] === +INTERFACE: + Input: + Output: + InOut: + Static: + Schleuse_Visu : "MHMOmniSchleuse" // Schleuse-Bereich für Visualisierung + Schleuse_Visu_old : "MHMOmniSchleuse" + Empty_Visu : Array[1..100] of Int // Bereich für Daten-Löschung + DL_DB : Int // Datenlisten-DB + Schleuse_Nr_from_PC : Int // PC>PLC: Für diesen Schleuse Daten bereitstellen + Schleuse_Nr_from_PLC : Int // PLC>PC: Daten von diesem Schleusee aktiv + Schleuse_Nr_from_VAR : Int // VAR>PLC: Für diesen Schleuse Daten bereitstellen + VAR_old : Int // VAR>PLC: Für diesen Schleuse Daten bereitstellen + VAR_Timer : Int // VAR>PLC: Für diesen Schleuse Daten bereitstellen + RET_VAL_Datenbank : Byte + RET_VAL_BLKMOV : Int + Durchlauf1 : Bool // 1.Durchlauf hat stattgefunden + Error : Struct + Datenbank : Bool + Undef_Schleuse : Bool + BLKMOV : Bool + Input: + Output: + InOut: + Static: + Dyn : Struct + Stau_Zeit : Int // Sensor B_VorSchleuse ist belegt [100ms] + Mindest_Zeit : Int // Sensor B_VorSchleuse ist frei [100ms] + Input: + Output: + InOut: + Static: + Dyn : Struct + Stau_Zeit : Int // Sensor B_VorSchleuse ist belegt [100ms] + Mindest_Zeit : Int // Sensor B_VorSchleuse ist frei [100ms] + Temp: + Quelle : Any // Zeiger, wo Quell-Daten sind + Ziel : Any // Zeiger, wo Ziel-Daten sind + Schleusen_DB : Int // Schleuse-DB + Schleusen_DW : Int // Schleuse-DW + AR1Zeiger : DWord // Statt AR1 (ging nur bis DB-Länge <= 8191 Bytes) + AR1Start : DInt // Startwert mit Offset 0 + Schleuse_Nr_aktiv : Int // Intern: Für diesen Schleuse Daten bereitstellen + Constant: + +--- NW 1: + --- + L Schleuse_Nr_from_VAR // Anforderung von Variablentabelle ? + L 0 + >I // Ja ! + JC X010 + + L Schleuse_Nr_from_PC // Anfoderung von Visualisierung? + L 0 + >I // Ja ! + JC X011 + + L 0 + T Schleuse_Nr_from_PLC + T VAR_old + T VAR_Timer + + SET + R Error.Datenbank + R Error.Undef_Schleuse + R Error.BLKMOV + + A Durchlauf1 + R Durchlauf1 // 1.Durchlauf hat stattgefunden + JC D010 + + BEU + +// Daten löschen: +// Kennung + Datenbytes +D010: L 16#1004 // Kennung 10 + Word=04 + T LW0 + T LW10 // Any-Kennung, Datentyp + L 100 // Datenwords speichern + T LW2 + T LW12 // Wiederholungen + +// Quelle-Pointer erzeugen: (Empty-Visu) + L 155 + T LW4 // DB_Nummer + L 400 // Adresse + SLD 3 + L 16#8400_0000 // Kennung: Daten + OD + T LD6 // Kennung, Adresse + +// Ziel-Pointer erzeugen: (Schleuse_Visu_Daten) + L 155 + T LW14 // DB_Nummer + L 0 // Adresse + SLD 3 + L 16#8400_0000 // Kennung: Daten + OD + T LD16 // Kennung, Adresse + +CALL SYS "BLKMOV" (SRCBLK:=Quelle, RET_VAL:=RET_VAL_BLKMOV, DSTBLK:=Ziel) // Datenliste-Daten speichern + +// Ziel-Pointer erzeugen: (Schleuse_Visu_old-Daten) + L 155 + T LW14 // DB_Nummer + L 200 // Adresse + SLD 3 + L 16#8400_0000 // Kennung: Daten + OD + T LD16 // Kennung, Adresse + +CALL SYS "BLKMOV" (SRCBLK:=Quelle, RET_VAL:=RET_VAL_BLKMOV, DSTBLK:=Ziel) // Datenliste-Daten speichern + + L 0 + T RET_VAL_Datenbank + T RET_VAL_BLKMOV + + BEU + +X010: CAC + T Schleuse_Nr_aktiv + + L 0 // Anforderung von PC löschen + T Schleuse_Nr_from_PC // Visualisierung + +// Automatisches Deaktivieren: + L Schleuse_Nr_from_VAR + L VAR_old // Noch diesselbe VAR-Nr. ? + ==I // Ja ! + A Durchlauf1 + JC Y010 + +// NeuBeginn: + L 3600 // 1 Stunde + T VAR_Timer // Timer neu laden + + L Schleuse_Nr_from_VAR + T VAR_old // VAR-Nr. speichern + + JU En01 + +// Timer aktiv: +Y010: AN "1s-Impuls" // 1s-Impuls + JC En01 + + L VAR_Timer // Timer + + -1 // 1s von Restzeit abziehen + T VAR_Timer // Timer + + L 0 // abgelaufen ? + >I // Nein ! + JC En01 + +// Timer abgelaufen: + L 0 // Automatisch beaktivieren + T Schleuse_Nr_from_VAR + T VAR_old + T VAR_Timer // Timer + + JU En01 + +X011: CAC + T Schleuse_Nr_aktiv + + L 0 // Anforderung von VAR löschen + T Schleuse_Nr_from_VAR // Visualisierung + T VAR_old + T VAR_Timer + +En01: NOP 0 + + +--- NW 2: Zeiger von gewolltem Schleuse ermitteln --- + L Schleuse_Nr_aktiv + T "MW200" // Search-Daten + +CALL FC "DatenOut" (SSDB:=DL_DB, SSDW:=0, PARA:=WORD#16#0000, SEARCHDATEN:=P#M200.0, RE_VAL:="MB219", OUTDATEN:=P#M220.0, Position:="MW298") // Datenlisten-DB + + L "MB219" + T RET_VAL_Datenbank // Rückmeldung bei Datenbank-Zugriff (Vorstau-DL) + + JBI ok2 + + A "M219.0" + S Error.Datenbank + +No: SET + S Error.Undef_Schleuse + + L 0 + T Schleuse_Nr_from_PLC // Aktiv-Schleuse + + JU D010 + +ok2: SET + R Error.Datenbank + R Error.Undef_Schleuse + + L "MW222" + L 1274 // HM-Omni-Schleuse? + ==I // Ja! + JC Ok2_Mig + + JU No + +Ok2_Mig: L "MW224" + T Schleusen_DB + L "MW226" + T Schleusen_DW + + +--- NW 3: Neue Datenübergabe an PC ? --- + AN Durchlauf1 // 1.Durchlauf hat stattgefunden + JC En03 + +// Ziel-Pointer erzeugen: (PLC-Daten) + L Schleusen_DW + ITD + T AR1Start // Startwert mit Offset 0 + +// Ausfahrzeit: + L Schleuse_Visu.Schleuse.AusfahrZeit + L Schleuse_Visu_old.Schleuse.AusfahrZeit + ==I // Keine Änderung ! + JC X200 + + L AR1Start // Startwert mit Offset 0 + + DINT#60 // Offset für Ausfahrzeit + SLD 3 + T AR1Zeiger // Statt Dyn.Bereichsstop (ging nur bis DB-Länge <= 8191 Bytes) + L Schleuse_Visu.Schleuse.AusfahrZeit + OPN DB[Schleusen_DB] // Schleuse-DB öffnen + T DBW [AR1Zeiger] // Schleuse-Zug + +// HMI TrolleyID-Input: +X200: L Schleuse_Visu.Dyn.HMI.TrolleyID_Input + L Schleuse_Visu_old.Dyn.HMI.TrolleyID_Input + ==D // Keine Änderung ! + JC X201 + + L AR1Start // Startwert mit Offset 0 + + DINT#98 // Offset für DefaultZiel + SLD 3 + T AR1Zeiger // Statt Dyn.Bereichsstop (ging nur bis DB-Länge <= 8191 Bytes) + L Schleuse_Visu.Dyn.HMI.TrolleyID_Input + OPN DB[Schleusen_DB] // Schleuse-DB öffnen + T DBD [AR1Zeiger] // Schleuse-Zug + +// SK.Akt_Schritt: +X201: L Schleuse_Visu.Dyn.Sk.Akt_Schritt + L Schleuse_Visu_old.Dyn.Sk.Akt_Schritt + ==D // Keine Änderung ! + JC X300 + + L AR1Start // Startwert mit Offset 0 + + DINT#104 // Offset für Akt.Schritt + SLD 3 + T AR1Zeiger // Statt Dyn.Bereichsstop (ging nur bis DB-Länge <= 8191 Bytes) + L Schleuse_Visu.Dyn.Sk.Akt_Schritt + OPN DB[Schleusen_DB] // Schleuse-DB öffnen + T DBD [AR1Zeiger] // Schleuse-Zug + +// Schleusen.SK-Reset: +X300: A Schleuse_Visu.Dyn.Sk.Reset + A Schleuse_Visu_old.Dyn.Sk.Reset + O + AN Schleuse_Visu.Dyn.Sk.Reset + AN Schleuse_Visu_old.Dyn.Sk.Reset + JC X301 // Keine Änderung ! + + L AR1Start // Startwert mit Offset 0 + + DINT#118 // Offset für SK-Zeug + SLD 3 + L 3 // Damit DBX_Bit 3 + OD + T AR1Zeiger // Statt Dyn.Bereichsstop (ging nur bis DB-Länge <= 8191 Bytes) + A Schleuse_Visu.Dyn.Sk.Reset + OPN DB[Schleusen_DB] // Schleuse-DB öffnen + = DBX [AR1Zeiger] // Schleuse-SK-Reset + +// HMI-Reset: +X301: A Schleuse_Visu.Dyn.HMI.Schleuse_resetten + A Schleuse_Visu_old.Dyn.HMI.Schleuse_resetten + O + AN Schleuse_Visu.Dyn.HMI.Schleuse_resetten + AN Schleuse_Visu_old.Dyn.HMI.Schleuse_resetten + JC En03 // Keine Änderung ! + + L AR1Start // Startwert mit Offset 0 + + DINT#102 // Offset für Weichen-Zeug + SLD 3 + L 0 // Damit DBX_Bit 0 + OD + T AR1Zeiger // Statt Dyn.Bereichsstop (ging nur bis DB-Länge <= 8191 Bytes) + A Schleuse_Visu.Dyn.HMI.Schleuse_resetten + OPN DB[Schleusen_DB] // Weiche-DB öffnen + = DBX [AR1Zeiger] // Weiche-SK-Reset + +En03: NOP 0 + + +--- NW 4: Datenübernahme vom PC --- +// Kennung + Datenbytes + L 16#1004 // Kennung 10 + Word=04 + T LW0 + T LW10 // Any-Kennung, Datentyp + L 100 // Datenwords speichern + T LW2 + T LW12 // Wiederholungen + +// Quelle-Pointer erzeugen: (PLC-Daten) + L Schleusen_DB + T LW4 // DB_Nummer + L Schleusen_DW // Adresse + SLD 3 + L 16#8400_0000 // Kennung: Daten + OD + T LD6 // Kennung, Adresse + +// Ziel-Pointer erzeugen: (PC-Schleuse-Visu-Daten) + L 155 + T LW14 // DB_Nummer + L 0 // Adresse + SLD 3 + L 16#8400_0000 // Kennung: Daten + OD + T LD16 // Kennung, Adresse + +CALL SYS "BLKMOV" (SRCBLK:=Quelle, RET_VAL:=RET_VAL_BLKMOV, DSTBLK:=Ziel) // Datenliste-Daten speichern + + L RET_VAL_BLKMOV // Rückmeldung + L 0 // Fehler vorhanden ? + <>I // Ja ! + = Error.BLKMOV // Error bei Block kopieren + BEC + +// Ziel-Pointer erzeugen: (Schleuse_Visu_old-Daten) + L 155 + T LW14 // DB_Nummer + L 200 // Adresse + SLD 3 + L 16#8400_0000 // Kennung: Daten + OD + T LD16 // Kennung, Adresse + +CALL SYS "BLKMOV" (SRCBLK:=Quelle, RET_VAL:=RET_VAL_BLKMOV, DSTBLK:=Ziel) // Datenliste-Daten speichern + + L RET_VAL_BLKMOV // Rückmeldung + L 0 // Fehler vorhanden ? + <>I // Ja ! + = Error.BLKMOV // Error bei Block kopieren + BEC + + L Schleuse_Nr_aktiv + T Schleuse_Nr_from_PLC // Rückmeldung an PC (Daten stehen an) + + SET + S Durchlauf1 // 1.Durchlauf hat stattgefunden + + +--- NW 5: Ende --- + BE + diff --git a/=A01+UH07-KF00/Programmbausteine/Visualisierung/Visu_HMOmniSchleuse_Plus.awl b/=A01+UH07-KF00/Programmbausteine/Visualisierung/Visu_HMOmniSchleuse_Plus.awl new file mode 100644 index 0000000..fd0e762 --- /dev/null +++ b/=A01+UH07-KF00/Programmbausteine/Visualisierung/Visu_HMOmniSchleuse_Plus.awl @@ -0,0 +1,350 @@ +=== FB 255: Visu_HMOmniSchleuse_Plus [STL] === +INTERFACE: + Input: + Output: + InOut: + Static: + Schleuse_Visu : "MHMOmniSchleuse_Plus" // Schleuse-Bereich für Visualisierung + Schleuse_Visu_old : "MHMOmniSchleuse_Plus" + Empty_Visu : Array[1..100] of Int // Bereich für Daten-Löschung + DL_DB : Int // Datenlisten-DB + Schleuse_Nr_from_PC : Int // PC>PLC: Für diesen Schleuse Daten bereitstellen + Schleuse_Nr_from_PLC : Int // PLC>PC: Daten von diesem Schleusee aktiv + Schleuse_Nr_from_VAR : Int // VAR>PLC: Für diesen Schleuse Daten bereitstellen + VAR_old : Int // VAR>PLC: Für diesen Schleuse Daten bereitstellen + VAR_Timer : Int // VAR>PLC: Für diesen Schleuse Daten bereitstellen + RET_VAL_Datenbank : Byte + RET_VAL_BLKMOV : Int + Durchlauf1 : Bool // 1.Durchlauf hat stattgefunden + Error : Struct + Datenbank : Bool + Undef_Schleuse : Bool + BLKMOV : Bool + Temp: + Quelle : Any // Zeiger, wo Quell-Daten sind + Ziel : Any // Zeiger, wo Ziel-Daten sind + Schleusen_DB : Int // Schleuse-DB + Schleusen_DW : Int // Schleuse-DW + AR1Zeiger : DWord // Statt AR1 (ging nur bis DB-Länge <= 8191 Bytes) + AR1Start : DInt // Startwert mit Offset 0 + Schleuse_Nr_aktiv : Int // Intern: Für diesen Schleuse Daten bereitstellen + Constant: + +--- NW 1: + --- + L Schleuse_Nr_from_VAR // Anforderung von Variablentabelle ? + L 0 + >I // Ja ! + JC X010 + + L Schleuse_Nr_from_PC // Anfoderung von Visualisierung? + L 0 + >I // Ja ! + JC X011 + + L 0 + T Schleuse_Nr_from_PLC + T VAR_old + T VAR_Timer + + SET + R Error.Datenbank + R Error.Undef_Schleuse + R Error.BLKMOV + + A Durchlauf1 + R Durchlauf1 // 1.Durchlauf hat stattgefunden + JC D010 + + BEU + +// Daten löschen: +// Kennung + Datenbytes +D010: L 16#1004 // Kennung 10 + Word=04 + T LW0 + T LW10 // Any-Kennung, Datentyp + L 100 // Datenwords speichern + T LW2 + T LW12 // Wiederholungen + +// Quelle-Pointer erzeugen: (Empty-Visu) + L 255 + T LW4 // DB_Nummer + L 400 // Adresse + SLD 3 + L 16#8400_0000 // Kennung: Daten + OD + T LD6 // Kennung, Adresse + +// Ziel-Pointer erzeugen: (Schleuse_Visu_Daten) + L 255 + T LW14 // DB_Nummer + L 0 // Adresse + SLD 3 + L 16#8400_0000 // Kennung: Daten + OD + T LD16 // Kennung, Adresse + +CALL SYS "BLKMOV" (SRCBLK:=Quelle, RET_VAL:=RET_VAL_BLKMOV, DSTBLK:=Ziel) // Datenliste-Daten speichern + +// Ziel-Pointer erzeugen: (Schleuse_Visu_old-Daten) + L 255 + T LW14 // DB_Nummer + L 200 // Adresse + SLD 3 + L 16#8400_0000 // Kennung: Daten + OD + T LD16 // Kennung, Adresse + +CALL SYS "BLKMOV" (SRCBLK:=Quelle, RET_VAL:=RET_VAL_BLKMOV, DSTBLK:=Ziel) // Datenliste-Daten speichern + + L 0 + T RET_VAL_Datenbank + T RET_VAL_BLKMOV + + BEU + +X010: CAC + T Schleuse_Nr_aktiv + + L 0 // Anforderung von PC löschen + T Schleuse_Nr_from_PC // Visualisierung + +// Automatisches Deaktivieren: + L Schleuse_Nr_from_VAR + L VAR_old // Noch diesselbe VAR-Nr. ? + ==I // Ja ! + A Durchlauf1 + JC Y010 + +// NeuBeginn: + L 3600 // 1 Stunde + T VAR_Timer // Timer neu laden + + L Schleuse_Nr_from_VAR + T VAR_old // VAR-Nr. speichern + + JU En01 + +// Timer aktiv: +Y010: AN "1s-Impuls" // 1s-Impuls + JC En01 + + L VAR_Timer // Timer + + -1 // 1s von Restzeit abziehen + T VAR_Timer // Timer + + L 0 // abgelaufen ? + >I // Nein ! + JC En01 + +// Timer abgelaufen: + L 0 // Automatisch beaktivieren + T Schleuse_Nr_from_VAR + T VAR_old + T VAR_Timer // Timer + + JU En01 + +X011: CAC + T Schleuse_Nr_aktiv + + L 0 // Anforderung von VAR löschen + T Schleuse_Nr_from_VAR // Visualisierung + T VAR_old + T VAR_Timer + +En01: NOP 0 + + +--- NW 2: Zeiger von gewolltem Schleuse ermitteln --- + L Schleuse_Nr_aktiv + T "MW200" // Search-Daten + +CALL FC "DatenOut" (SSDB:=DL_DB, SSDW:=0, PARA:=WORD#16#0000, SEARCHDATEN:=P#M200.0, RE_VAL:="MB219", OUTDATEN:=P#M220.0, Position:="MW298") // Datenlisten-DB + + L "MB219" + T RET_VAL_Datenbank // Rückmeldung bei Datenbank-Zugriff (Vorstau-DL) + + JBI ok2 + + A "M219.0" + S Error.Datenbank + +No: SET + S Error.Undef_Schleuse + + L 0 + T Schleuse_Nr_from_PLC // Aktiv-Schleuse + + JU D010 + +ok2: SET + R Error.Datenbank + R Error.Undef_Schleuse + + L "MW222" + L 1275 // HM-Omni-Schleuse_Plus? + ==I // Ja! + JC Ok2_Mig + + JU No + +Ok2_Mig: L "MW224" + T Schleusen_DB + L "MW226" + T Schleusen_DW + + +--- NW 3: Neue Datenübergabe an PC ? --- + AN Durchlauf1 // 1.Durchlauf hat stattgefunden + JC En03 + +// Ziel-Pointer erzeugen: (PLC-Daten) + L Schleusen_DW + ITD + T AR1Start // Startwert mit Offset 0 + +// Raus-Trolleys: + L Schleuse_Visu.Dyn.Raus_Trolleys + L Schleuse_Visu_old.Dyn.Raus_Trolleys + ==I // Keine Änderung ! + JC X200 + + L AR1Start // Startwert mit Offset 0 + + DINT#162 // Offset für Raus-Trolleys + SLD 3 + T AR1Zeiger // Statt Dyn.Bereichsstop (ging nur bis DB-Länge <= 8191 Bytes) + L Schleuse_Visu.Dyn.Raus_Trolleys + OPN DB[Schleusen_DB] // Schleuse-DB öffnen + T DBW [AR1Zeiger] // Raus-Trolleys + +// HMI TrolleyID-Input: +X200: L Schleuse_Visu.Dyn.HMI.TrolleyID_Input + L Schleuse_Visu_old.Dyn.HMI.TrolleyID_Input + ==D // Keine Änderung ! + JC X201 + + L AR1Start // Startwert mit Offset 0 + + DINT#98 // Offset für DefaultZiel + SLD 3 + T AR1Zeiger // Statt Dyn.Bereichsstop (ging nur bis DB-Länge <= 8191 Bytes) + L Schleuse_Visu.Dyn.HMI.TrolleyID_Input + OPN DB[Schleusen_DB] // Schleuse-DB öffnen + T DBD [AR1Zeiger] // Schleuse-Zug + +// SK.Akt_Schritt: +X201: L Schleuse_Visu.Dyn.Sk.Akt_Schritt + L Schleuse_Visu_old.Dyn.Sk.Akt_Schritt + ==D // Keine Änderung ! + JC X300 + + L AR1Start // Startwert mit Offset 0 + + DINT#104 // Offset für Akt.Schritt + SLD 3 + T AR1Zeiger // Statt Dyn.Bereichsstop (ging nur bis DB-Länge <= 8191 Bytes) + L Schleuse_Visu.Dyn.Sk.Akt_Schritt + OPN DB[Schleusen_DB] // Schleuse-DB öffnen + T DBD [AR1Zeiger] // Schleuse-Zug + +// Schleusen.SK-Reset: +X300: A Schleuse_Visu.Dyn.Sk.Reset + A Schleuse_Visu_old.Dyn.Sk.Reset + O + AN Schleuse_Visu.Dyn.Sk.Reset + AN Schleuse_Visu_old.Dyn.Sk.Reset + JC X301 // Keine Änderung ! + + L AR1Start // Startwert mit Offset 0 + + DINT#118 // Offset für SK-Zeug + SLD 3 + L 3 // Damit DBX_Bit 3 + OD + T AR1Zeiger // Statt Dyn.Bereichsstop (ging nur bis DB-Länge <= 8191 Bytes) + A Schleuse_Visu.Dyn.Sk.Reset + OPN DB[Schleusen_DB] // Schleuse-DB öffnen + = DBX [AR1Zeiger] // Schleuse-SK-Reset + +// HMI-Reset: +X301: A Schleuse_Visu.Dyn.HMI.Schleuse_resetten + A Schleuse_Visu_old.Dyn.HMI.Schleuse_resetten + O + AN Schleuse_Visu.Dyn.HMI.Schleuse_resetten + AN Schleuse_Visu_old.Dyn.HMI.Schleuse_resetten + JC En03 // Keine Änderung ! + + L AR1Start // Startwert mit Offset 0 + + DINT#102 // Offset für Weichen-Zeug + SLD 3 + L 0 // Damit DBX_Bit 0 + OD + T AR1Zeiger // Statt Dyn.Bereichsstop (ging nur bis DB-Länge <= 8191 Bytes) + A Schleuse_Visu.Dyn.HMI.Schleuse_resetten + OPN DB[Schleusen_DB] // Weiche-DB öffnen + = DBX [AR1Zeiger] // Weiche-SK-Reset + +En03: NOP 0 + + +--- NW 4: Datenübernahme vom PC --- +// Kennung + Datenbytes + L 16#1004 // Kennung 10 + Word=04 + T LW0 + T LW10 // Any-Kennung, Datentyp + L 100 // Datenwords speichern + T LW2 + T LW12 // Wiederholungen + +// Quelle-Pointer erzeugen: (PLC-Daten) + L Schleusen_DB + T LW4 // DB_Nummer + L Schleusen_DW // Adresse + SLD 3 + L 16#8400_0000 // Kennung: Daten + OD + T LD6 // Kennung, Adresse + +// Ziel-Pointer erzeugen: (PC-Schleuse-Visu-Daten) + L 255 + T LW14 // DB_Nummer + L 0 // Adresse + SLD 3 + L 16#8400_0000 // Kennung: Daten + OD + T LD16 // Kennung, Adresse + +CALL SYS "BLKMOV" (SRCBLK:=Quelle, RET_VAL:=RET_VAL_BLKMOV, DSTBLK:=Ziel) // Datenliste-Daten speichern + + L RET_VAL_BLKMOV // Rückmeldung + L 0 // Fehler vorhanden ? + <>I // Ja ! + = Error.BLKMOV // Error bei Block kopieren + BEC + +// Ziel-Pointer erzeugen: (Schleuse_Visu_old-Daten) + L 255 + T LW14 // DB_Nummer + L 200 // Adresse + SLD 3 + L 16#8400_0000 // Kennung: Daten + OD + T LD16 // Kennung, Adresse + +CALL SYS "BLKMOV" (SRCBLK:=Quelle, RET_VAL:=RET_VAL_BLKMOV, DSTBLK:=Ziel) // Datenliste-Daten speichern + + L RET_VAL_BLKMOV // Rückmeldung + L 0 // Fehler vorhanden ? + <>I // Ja ! + = Error.BLKMOV // Error bei Block kopieren + BEC + + L Schleuse_Nr_aktiv + T Schleuse_Nr_from_PLC // Rückmeldung an PC (Daten stehen an) + + SET + S Durchlauf1 // 1.Durchlauf hat stattgefunden + + +--- NW 5: Ende --- + BE + diff --git a/=A01+UH07-KF00/Programmbausteine/Visualisierung/Visu_HMOmniWeiche_Plus.awl b/=A01+UH07-KF00/Programmbausteine/Visualisierung/Visu_HMOmniWeiche_Plus.awl new file mode 100644 index 0000000..f8f15ae --- /dev/null +++ b/=A01+UH07-KF00/Programmbausteine/Visualisierung/Visu_HMOmniWeiche_Plus.awl @@ -0,0 +1,290 @@ +=== FB 256: Visu_HMOmniWeiche_Plus [STL] === +INTERFACE: + Input: + Output: + InOut: + Static: + Weiche_Visu : "MHMOmniWeiche_Plus" // Weiche-Bereich für Visualisierung + Weiche_Visu_old : "MHMOmniWeiche_Plus" + empty_Visu : Array[1..100] of Int // Bereich für Daten-Löschung + DL_DB : Int // Datenlisten-DB + Weiche_Nr_from_PC : Int // PC>PLC: Für diesen Weiche Daten bereitstellen + Weiche_Nr_from_PLC : Int // PLC>PC: Daten von diesem Weiche aktiv + Weiche_Nr_from_VAR : Int // VAR>PLC: Für diesen Weiche Daten bereitstellen + VAR_old : Int // VAR>PLC: Für diesen Weiche Daten bereitstellen + VAR_Timer : Int // VAR>PLC: Für diesen Weiche Daten bereitstellen + RET_VAL_Datenbank : Byte + RET_VAL_BLKMOV : Int + Durchlauf1 : Bool // 1.Durchlauf hat stattgefunden + Error : Struct + Datenbank : Bool + Undef_Weiche : Bool + BLKMOV : Bool + Temp: + Quelle : Any // Zeiger, wo Quell-Daten sind + Ziel : Any // Zeiger, wo Ziel-Daten sind + Weichen_DB : Int // Weiche-DB + Weichen_DW : Int // Weiche-DW + AR1Zeiger : DWord // Statt AR1 (ging nur bis DB-Länge <= 8191 Bytes) + AR1Start : DInt // Startwert mit Offset 0 + Weiche_Nr_aktiv : Int // Intern: Für diesen Weiche Daten bereitstellen + Constant: + +--- NW 1: + --- + L Weiche_Nr_from_VAR // Anforderung von Variablentabelle ? + L 0 + >I // Ja ! + JC X010 + + L Weiche_Nr_from_PC // Anfoderung von Visualisierung? + L 0 + >I // Ja ! + JC X011 + + L 0 + T Weiche_Nr_from_PLC + T VAR_old + T VAR_Timer + + SET + R Error.Datenbank + R Error.Undef_Weiche + R Error.BLKMOV + + A Durchlauf1 + R Durchlauf1 // 1.Durchlauf hat stattgefunden + JC D010 + + BEU + +// Daten löschen: +// Kennung + Datenbytes +D010: L 16#1004 // Kennung 10 + Word=04 + T LW0 + T LW10 // Any-Kennung, Datentyp + L 100 // Datenwords speichern + T LW2 + T LW12 // Wiederholungen + +// Quelle-Pointer erzeugen: (empty-Visu) + L 256 + T LW4 // DB_Nummer + L 400 // Adresse + SLD 3 + L 16#8400_0000 // Kennung: Daten + OD + T LD6 // Kennung, Adresse + +// Ziel-Pointer erzeugen: (Weiche_Visu_Daten) + L 256 + T LW14 // DB_Nummer + L 0 // Adresse + SLD 3 + L 16#8400_0000 // Kennung: Daten + OD + T LD16 // Kennung, Adresse + +CALL SYS "BLKMOV" (SRCBLK:=Quelle, RET_VAL:=RET_VAL_BLKMOV, DSTBLK:=Ziel) // Datenliste-Daten speichern + +// Ziel-Pointer erzeugen: (Weiche_Visu_old-Daten) + L 256 + T LW14 // DB_Nummer + L 150 // Adresse + SLD 3 + L 16#8400_0000 // Kennung: Daten + OD + T LD16 // Kennung, Adresse + +CALL SYS "BLKMOV" (SRCBLK:=Quelle, RET_VAL:=RET_VAL_BLKMOV, DSTBLK:=Ziel) // Datenliste-Daten speichern + + L 0 + T RET_VAL_Datenbank + T RET_VAL_BLKMOV + + BEU + +X010: CAC + T Weiche_Nr_aktiv + + L 0 // Anforderung von PC löschen + T Weiche_Nr_from_PC // Visualisierung + +// Automatisches Deaktivieren: + L Weiche_Nr_from_VAR + L VAR_old // Noch diesselbe VAR-Nr. ? + ==I // Ja ! + A Durchlauf1 + JC Y010 + +// NeuBeginn: + L 3600 // 1 Stunde + T VAR_Timer // Timer neu laden + + L Weiche_Nr_from_VAR + T VAR_old // VAR-Nr. speichern + + JU En01 + +// Timer aktiv: +Y010: AN "1s-Impuls" // 1s-Impuls + JC En01 + + L VAR_Timer // Timer + + -1 // 1s von Restzeit abziehen + T VAR_Timer // Timer + + L 0 // abgelaufen ? + >I // Nein ! + JC En01 + +// Timer abgelaufen: + L 0 // Automatisch beaktivieren + T Weiche_Nr_from_VAR + T VAR_old + T VAR_Timer // Timer + + JU En01 + +X011: CAC + T Weiche_Nr_aktiv + + L 0 // Anforderung von VAR löschen + T Weiche_Nr_from_VAR // Visualisierung + T VAR_old + T VAR_Timer + +En01: NOP 0 + + +--- NW 2: Zeiger von gewolltem Weiche ermitteln --- + L Weiche_Nr_aktiv + T "MW200" // Search-Daten + +CALL FC "DatenOut" (SSDB:=DL_DB, SSDW:=0, PARA:=WORD#16#0000, SEARCHDATEN:=P#M200.0, RE_VAL:="MB219", OUTDATEN:=P#M220.0, Position:="MW298") // Datenlisten-DB + + L "MB219" + T RET_VAL_Datenbank // Rückmeldung bei Datenbank-Zugriff (Vorstau-DL) + + JBI ok2 + + A "M219.0" + S Error.Datenbank + +No: SET + S Error.Undef_Weiche + + L 0 + T Weiche_Nr_from_PLC // Aktiv-Weiche + + JU D010 + +ok2: SET + R Error.Datenbank + R Error.Undef_Weiche + + L "MW222" + L 1280 // HMOmni-Weiche_Plus? + ==I // Ja! + JC Ok2_Mig + + JU No + +Ok2_Mig: L "MW224" + T Weichen_DB + L "MW226" + T Weichen_DW + + +--- NW 3: Neue Datenübergabe an PC ? --- + AN Durchlauf1 // 1.Durchlauf hat stattgefunden + JC En03 + +// Ziel-Pointer erzeugen: (PLC-Daten) + L Weichen_DW + ITD + T AR1Start // Startwert mit Offset 0 + +// HMI-Reset: +X300: A Weiche_Visu.Dyn.HMI.Weiche_resetten + A Weiche_Visu_old.Dyn.HMI.Weiche_resetten + O + AN Weiche_Visu.Dyn.HMI.Weiche_resetten + AN Weiche_Visu_old.Dyn.HMI.Weiche_resetten + JC En03 // Keine Änderung ! + + L AR1Start // Startwert mit Offset 0 + + DINT#90 // Offset für Weichen-Zeug + SLD 3 + L 0 // Damit DBX_Bit 0 + OD + T AR1Zeiger // Statt Dyn.Bereichsstop (ging nur bis DB-Länge <= 8191 Bytes) + A Weiche_Visu.Dyn.HMI.Weiche_resetten + OPN DB[Weichen_DB] // Weiche-DB öffnen + = DBX [AR1Zeiger] // Weiche-SK-Reset + +En03: NOP 0 + + +--- NW 4: Datenübernahme vom PC --- +// Kennung + Datenbytes + L 16#1004 // Kennung 10 + Word=04 + T LW0 + T LW10 // Any-Kennung, Datentyp + L 100 // Datenwords speichern + T LW2 + T LW12 // Wiederholungen + +// Quelle-Pointer erzeugen: (PLC-Daten) + L Weichen_DB + T LW4 // DB_Nummer + L Weichen_DW // Adresse + SLD 3 + L 16#8400_0000 // Kennung: Daten + OD + T LD6 // Kennung, Adresse + +// Ziel-Pointer erzeugen: (PC-Weiche-Visu-Daten) + L 256 + T LW14 // DB_Nummer + L 0 // Adresse + SLD 3 + L 16#8400_0000 // Kennung: Daten + OD + T LD16 // Kennung, Adresse + +CALL SYS "BLKMOV" (SRCBLK:=Quelle, RET_VAL:=RET_VAL_BLKMOV, DSTBLK:=Ziel) // Datenliste-Daten speichern + + L RET_VAL_BLKMOV // Rückmeldung + L 0 // Fehler vorhanden ? + <>I // Ja ! + = Error.BLKMOV // Error bei Block kopieren + BEC + +// Ziel-Pointer erzeugen: (Weiche_Visu_old-Daten) + L 256 + T LW14 // DB_Nummer + L 200 // Adresse + SLD 3 + L 16#8400_0000 // Kennung: Daten + OD + T LD16 // Kennung, Adresse + +CALL SYS "BLKMOV" (SRCBLK:=Quelle, RET_VAL:=RET_VAL_BLKMOV, DSTBLK:=Ziel) // Datenliste-Daten speichern + + L RET_VAL_BLKMOV // Rückmeldung + L 0 // Fehler vorhanden ? + <>I // Ja ! + = Error.BLKMOV // Error bei Block kopieren + BEC + + L Weiche_Nr_aktiv + T Weiche_Nr_from_PLC // Rückmeldung an PC (Daten stehen an) + + SET + S Durchlauf1 // 1.Durchlauf hat stattgefunden + + +--- NW 5: Ende --- + BE + diff --git a/=A01+UH07-KF00/Programmbausteine/Visualisierung/Visu_HMVollPuffer.awl b/=A01+UH07-KF00/Programmbausteine/Visualisierung/Visu_HMVollPuffer.awl new file mode 100644 index 0000000..197ed6e --- /dev/null +++ b/=A01+UH07-KF00/Programmbausteine/Visualisierung/Visu_HMVollPuffer.awl @@ -0,0 +1,476 @@ +=== FB 157: Visu_HMVollPuffer [STL] === +INTERFACE: + Input: + Output: + InOut: + Static: + VollPuffer_Visu : "MHMVollpuffer" // Lager-Bereich für Visualisierung + VollPuffer_Visu_old : "MHMVollpuffer" // COPYRIGHT by Ingenieurbüro A.EmmertOrtsstr.33, D-869925 Fuchstal (Germany)Tel.: 0049(0)8243-960629Version: Omniflow 2100 / 10.2024Schritt 0: Warten auf TrolleySchritt 1: Betriebsart ok/angegeben?Schritt 5: Mit Scanner fahren: Defaultziel ?Schritt 6: Scanner triggernSchritt 7: "DREQ" an PC sendenSchritt 8: Warten auf PC-Antwort Schritt 9: PC-Antwort auswerten Schritt 10: Fahrtrichtung ermittelnSchritt 11: Ausfahren ok ?Schritt 12: Warten auf Pin-Signal Schritt 13: Lagernbereich raus bereit ? Schritt 14: Daten an RausLager übergebenSchritt 15: Lager Mindestzeit öffnen Schritt 16: Trolley ausgefahren ? Schritt 17: Trolley ist draussen Schritt 18: BM wurde vereinzeltSchritt 19: Beladezustand checkenSchritt 20: Schleuse resettenSchritt 21: Reset ist zu Ende + Empty_Visu : Array[1..350] of Int // Bereich für Daten-Löschung + DL_DB : Int // Datenlisten-DB + VollPuffer_Nr_from_PC : Int // PC>PLC: Für diesen Lager Daten bereitstellen + VollPuffer_Nr_from_PLC : Int // PLC>PC: Daten von diesem Lagere aktiv + VollPuffer_Nr_from_VAR : Int // VAR>PLC: Für diesen Lager Daten bereitstellen + VAR_old : Int // VAR>PLC: Für diesen Lager Daten bereitstellen + VAR_Timer : Int // VAR>PLC: Für diesen Lager Daten bereitstellen + RET_VAL_Datenbank : Byte + RET_VAL_BLKMOV : Int + Durchlauf1 : Bool // 1.Durchlauf hat stattgefunden + Error : Struct + Datenbank : Bool + Undef_VollPuffer : Bool + BLKMOV : Bool + Input: + Output: + InOut: + Static: + SAVE : Struct + Weichen_DB : Int // Lagern-FIFO-DB + Weichen_DW : Int // Lagern-FIFO-DW + Puffer : "UDLHMVollPuffer" + None: + Parameter_allg : Struct + Antrieb_Plus_vorhanden : Bool // Schleuse an weiterem Antrieb (Lager) + Input: + Output: + InOut: + Static: + SAVE : Struct + Weichen_DB : Int // Lagern-FIFO-DB + Weichen_DW : Int // Lagern-FIFO-DW + Puffer : "UDLHMVollPuffer" + None: + Parameter_allg : Struct + Antrieb_Plus_vorhanden : Bool // Schleuse an weiterem Antrieb (Lager) + Temp: + Quelle : Any // Zeiger, wo Quell-Daten sind + Ziel : Any // Zeiger, wo Ziel-Daten sind + Lager_DB : Int // Lager-DB + Lager_DW : Int // Lager-DW + AR1Zeiger : DWord // Statt AR1 (ging nur bis DB-Länge <= 8191 Bytes) + AR1Start : DInt // Startwert mit Offset 0 + Lager_Nr_aktiv : Int // Intern: Für diesen Lager Daten bereitstellen + Constant: + +--- NW 1: + --- + L VollPuffer_Nr_from_VAR // Anforderung von Variablentabelle ? + L 0 + >I // Ja ! + JC X010 + + L VollPuffer_Nr_from_PC // Anfoderung von Visualisierung? + L 0 + >I // Ja ! + JC X011 + + L 0 + T VollPuffer_Nr_from_PLC + T VAR_old + T VAR_Timer + + SET + R Error.Datenbank + R Error.Undef_VollPuffer + R Error.BLKMOV + + A Durchlauf1 + R Durchlauf1 // 1.Durchlauf hat stattgefunden + JC D010 + + BEU + +// Daten löschen: +// Kennung + Datenbytes +D010: L 16#1004 // Kennung 10 + Word=04 + T LW0 + T LW10 // Any-Kennung, Datentyp + L 350 // Datenwords speichern + T LW2 + T LW12 // Wiederholungen + +// Quelle-Pointer erzeugen: (Empty-Visu) + L 157 + T LW4 // DB_Nummer + L 1400 // Adresse + SLD 3 + L 16#8400_0000 // Kennung: Daten + OD + T LD6 // Kennung, Adresse + +// Ziel-Pointer erzeugen: (Lager_Visu_Daten) + L 157 + T LW14 // DB_Nummer + L 0 // Adresse + SLD 3 + L 16#8400_0000 // Kennung: Daten + OD + T LD16 // Kennung, Adresse + +CALL SYS "BLKMOV" (SRCBLK:=Quelle, RET_VAL:=RET_VAL_BLKMOV, DSTBLK:=Ziel) // Datenliste-Daten speichern + +// Ziel-Pointer erzeugen: (Lager_Visu_old-Daten) + L 157 + T LW14 // DB_Nummer + L 700 // Adresse + SLD 3 + L 16#8400_0000 // Kennung: Daten + OD + T LD16 // Kennung, Adresse + +CALL SYS "BLKMOV" (SRCBLK:=Quelle, RET_VAL:=RET_VAL_BLKMOV, DSTBLK:=Ziel) // Datenliste-Daten speichern + + L 0 + T RET_VAL_Datenbank + T RET_VAL_BLKMOV + + BEU + +X010: CAC + T Lager_Nr_aktiv + + L 0 // Anforderung von PC löschen + T VollPuffer_Nr_from_PC // Visualisierung + +// Automatisches Deaktivieren: + L VollPuffer_Nr_from_VAR + L VAR_old // Noch diesselbe VAR-Nr. ? + ==I // Ja ! + A Durchlauf1 + JC Y010 + +// NeuBeginn: + L 3600 // 1 Stunde + T VAR_Timer // Timer neu laden + + L VollPuffer_Nr_from_VAR + T VAR_old // VAR-Nr. speichern + + JU En01 + +// Timer aktiv: +Y010: AN "1s-Impuls" // 1s-Impuls + JC En01 + + L VAR_Timer // Timer + + -1 // 1s von Restzeit abziehen + T VAR_Timer // Timer + + L 0 // abgelaufen ? + >I // Nein ! + JC En01 + +// Timer abgelaufen: + L 0 // Automatisch beaktivieren + T VollPuffer_Nr_from_VAR + T VAR_old + T VAR_Timer // Timer + + JU En01 + +X011: CAC + T Lager_Nr_aktiv + + L 0 // Anforderung von VAR löschen + T VollPuffer_Nr_from_VAR // Visualisierung + T VAR_old + T VAR_Timer + +En01: NOP 0 + + +--- NW 2: Zeiger von gewolltem Lager ermitteln --- + L Lager_Nr_aktiv + T "MW200" // Search-Daten + +CALL FC "DatenOut" (SSDB:=DL_DB, SSDW:=0, PARA:=WORD#16#0000, SEARCHDATEN:=P#M200.0, RE_VAL:="MB219", OUTDATEN:=P#M220.0, Position:="MW298") // Datenlisten-DB + + L "MB219" + T RET_VAL_Datenbank // Rückmeldung bei Datenbank-Zugriff (Vorstau-DL) + + JBI ok2 + + A "M219.0" + S Error.Datenbank + +No: SET + S Error.Undef_VollPuffer + + L 0 + T VollPuffer_Nr_from_PLC // Aktiv-Lager + + JU D010 + +ok2: SET + R Error.Datenbank + R Error.Undef_VollPuffer + + L "MW222" + L 1276 // HM-Vollpuffer ? + ==I // Ja! + JC Ok2_Mig + + JU No + +Ok2_Mig: L "MW224" + T Lager_DB + L "MW226" + T Lager_DW + + +--- NW 3: Neue Datenübergabe an PC ? --- + AN Durchlauf1 // 1.Durchlauf hat stattgefunden + JC En03 + +// Ziel-Pointer erzeugen: (PLC-Daten) + L Lager_DW + ITD + T AR1Start // Startwert mit Offset 0 + +// HMI TrolleyID-Input: + L VollPuffer_Visu.Dyn.TrolleyID_Schleuse_IN + L VollPuffer_Visu_old.Dyn.TrolleyID_Schleuse_IN + ==D // Keine Änderung ! + JC X301 + + L AR1Start // Startwert mit Offset 0 + + DINT#76 // Offset für TrolleyID Schleuse + SLD 3 + T AR1Zeiger // Statt Dyn.Bereichsstop (ging nur bis DB-Länge <= 8191 Bytes) + L VollPuffer_Visu.Dyn.TrolleyID_Schleuse_IN + OPN DB[Lager_DB] // Lager-DB öffnen + T DBD [AR1Zeiger] // Lager-Zug + +// HMI TrolleyID-Einfahrt: +X301: L VollPuffer_Visu.Dyn.TrolleyID_Einfahrt + L VollPuffer_Visu_old.Dyn.TrolleyID_Einfahrt + ==D // Keine Änderung ! + JC X302 + + L AR1Start // Startwert mit Offset 0 + + DINT#72 // Offset für TrolleyID Einfahrt + SLD 3 + T AR1Zeiger // Statt Dyn.Bereichsstop (ging nur bis DB-Länge <= 8191 Bytes) + L VollPuffer_Visu.Dyn.TrolleyID_Einfahrt + OPN DB[Lager_DB] // Lager-DB öffnen + T DBD [AR1Zeiger] + +// ShopGroup_IN: +X302: L VollPuffer_Visu.Dyn.ShopGroup_IN + L VollPuffer_Visu_old.Dyn.ShopGroup_IN + ==D // Keine Änderung ! + JC X303 + + L AR1Start // Startwert mit Offset 0 + + DINT#84 // Offset für ShopGroup_IN + SLD 3 + T AR1Zeiger // Statt Dyn.Bereichsstop (ging nur bis DB-Länge <= 8191 Bytes) + L VollPuffer_Visu.Dyn.ShopGroup_IN + OPN DB[Lager_DB] // Lager-DB öffnen + T DBD [AR1Zeiger] + +// ShopGroup_OUT +X303: L VollPuffer_Visu.Dyn.ShopGroup_OUT + L VollPuffer_Visu_old.Dyn.ShopGroup_OUT + ==D // Keine Änderung ! + JC X310 + + L AR1Start // Startwert mit Offset 0 + + DINT#88 // Offset für ShopGroup_OUT + SLD 3 + T AR1Zeiger // Statt Dyn.Bereichsstop (ging nur bis DB-Länge <= 8191 Bytes) + L VollPuffer_Visu.Dyn.ShopGroup_OUT + OPN DB[Lager_DB] // Lager-DB öffnen + T DBD [AR1Zeiger] + +// HMI-Schleuse_IN-Reset: +X310: A VollPuffer_Visu.Dyn.HMI.Schleuse_resetten_IN + A VollPuffer_Visu_old.Dyn.HMI.Schleuse_resetten_IN + O + AN VollPuffer_Visu.Dyn.HMI.Schleuse_resetten_IN + AN VollPuffer_Visu_old.Dyn.HMI.Schleuse_resetten_IN + JC X311 // Keine Änderung ! + + L AR1Start // Startwert mit Offset 0 + + DINT#116 // Offset für Schleusen-Zeug + SLD 3 + L 0 // Damit DBX_Bit 0 + OD + T AR1Zeiger // Statt Dyn.Bereichsstop (ging nur bis DB-Länge <= 8191 Bytes) + A VollPuffer_Visu.Dyn.HMI.Schleuse_resetten_IN + OPN DB[Lager_DB] // Lager-DB öffnen + = DBX [AR1Zeiger] // Lager-SK-Reset + +// HMI-Schleuse_OUT-Reset: +X311: A VollPuffer_Visu.Dyn.HMI.Schleuse_resetten_OUT + A VollPuffer_Visu_old.Dyn.HMI.Schleuse_resetten_OUT + O + AN VollPuffer_Visu.Dyn.HMI.Schleuse_resetten_OUT + AN VollPuffer_Visu_old.Dyn.HMI.Schleuse_resetten_OUT + JC X312 // Keine Änderung ! + + L AR1Start // Startwert mit Offset 0 + + DINT#116 // Offset für Schleusen-Zeug + SLD 3 + L 1 // Damit DBX_Bit 1 + OD + T AR1Zeiger // Statt Dyn.Bereichsstop (ging nur bis DB-Länge <= 8191 Bytes) + A VollPuffer_Visu.Dyn.HMI.Schleuse_resetten_OUT + OPN DB[Lager_DB] // Lager-DB öffnen + = DBX [AR1Zeiger] // Lager-SK-Reset + +// HMI-Lager initialisieren: +X312: A VollPuffer_Visu.Dyn.HMI.Puffer_initialisieren + A VollPuffer_Visu_old.Dyn.HMI.Puffer_initialisieren + O + AN VollPuffer_Visu.Dyn.HMI.Puffer_initialisieren + AN VollPuffer_Visu_old.Dyn.HMI.Puffer_initialisieren + JC X313 // Keine Änderung ! + + L AR1Start // Startwert mit Offset 0 + + DINT#116 // Offset für Lagern-Zeug + SLD 3 + L 2 // Damit DBX_Bit 2 + OD + T AR1Zeiger // Statt Dyn.Bereichsstop (ging nur bis DB-Länge <= 8191 Bytes) + A VollPuffer_Visu.Dyn.HMI.Puffer_initialisieren + OPN DB[Lager_DB] // Lager-DB öffnen + = DBX [AR1Zeiger] // Lager-SK-Reset + +// HMI-Lager Einlagern sperren: +X313: A VollPuffer_Visu.Dyn.HMI.Einlagern_gesperrt + A VollPuffer_Visu_old.Dyn.HMI.Einlagern_gesperrt + O + AN VollPuffer_Visu.Dyn.HMI.Einlagern_gesperrt + AN VollPuffer_Visu_old.Dyn.HMI.Einlagern_gesperrt + JC X314 // Keine Änderung ! + + L AR1Start // Startwert mit Offset 0 + + DINT#116 // Offset für Lagern-Zeug + SLD 3 + L 3 // Damit DBX_Bit 3 + OD + T AR1Zeiger // Statt Dyn.Bereichsstop (ging nur bis DB-Länge <= 8191 Bytes) + A VollPuffer_Visu.Dyn.HMI.Einlagern_gesperrt + OPN DB[Lager_DB] // Lager-DB öffnen + = DBX [AR1Zeiger] // Lager-SK-Reset + +// HMI-Lager Auslagern sperren: +X314: A VollPuffer_Visu.Dyn.HMI.AusLagern_gesperrt + A VollPuffer_Visu_old.Dyn.HMI.AusLagern_gesperrt + O + AN VollPuffer_Visu.Dyn.HMI.AusLagern_gesperrt + AN VollPuffer_Visu_old.Dyn.HMI.AusLagern_gesperrt + JC X315 // Keine Änderung ! + + L AR1Start // Startwert mit Offset 0 + + DINT#116 // Offset für Lagern-Zeug + SLD 3 + L 4 // Damit DBX_Bit 4 + OD + T AR1Zeiger // Statt Dyn.Bereichsstop (ging nur bis DB-Länge <= 8191 Bytes) + A VollPuffer_Visu.Dyn.HMI.AusLagern_gesperrt + OPN DB[Lager_DB] // Lager-DB öffnen + = DBX [AR1Zeiger] // Lager-SK-Reset + +// Alles ausfahren: +X315: A VollPuffer_Visu.Status2.Alles_ausfahren_OUT + A VollPuffer_Visu_old.Status2.Alles_ausfahren_OUT + O + AN VollPuffer_Visu.Status2.Alles_ausfahren_OUT + AN VollPuffer_Visu_old.Status2.Alles_ausfahren_OUT + JC X316 // Keine Änderung ! + + L AR1Start // Startwert mit Offset 0 + + DINT#29 // Offset Status 2 + SLD 3 + L 4 // Damit DBX_Bit 4 + OD + T AR1Zeiger // Statt Dyn.Bereichsstop (ging nur bis DB-Länge <= 8191 Bytes) + A VollPuffer_Visu.Status2.Alles_ausfahren_OUT + OPN DB[Lager_DB] // Lager-DB öffnen + = DBX [AR1Zeiger] // Lager-SK-Reset + +// Einen Volltrolley ausfahren: +X316: A VollPuffer_Visu.Dyn.Status.Einen_VollTrolley_ausfahren_OUT + A VollPuffer_Visu_old.Dyn.Status.Einen_VollTrolley_ausfahren_OUT + O + AN VollPuffer_Visu.Dyn.Status.Einen_VollTrolley_ausfahren_OUT + AN VollPuffer_Visu_old.Dyn.Status.Einen_VollTrolley_ausfahren_OUT + JC En03 // Keine Änderung ! + + L AR1Start // Startwert mit Offset 0 + + DINT#71 // Offset für Status + SLD 3 + L 4 // Damit DBX_Bit 4 + OD + T AR1Zeiger // Statt Dyn.Bereichsstop (ging nur bis DB-Länge <= 8191 Bytes) + A VollPuffer_Visu.Dyn.Status.Einen_VollTrolley_ausfahren_OUT + OPN DB[Lager_DB] // Lager-DB öffnen + = DBX [AR1Zeiger] // Lager-SK-Reset + +En03: NOP 0 + + +--- NW 4: Datenübernahme vom PC --- +// Kennung + Datenbytes + L 16#1004 // Kennung 10 + Word=04 + T LW0 + T LW10 // Any-Kennung, Datentyp + L 350 // Datenwords speichern + T LW2 + T LW12 // Wiederholungen + +// Quelle-Pointer erzeugen: (PLC-Daten) + L Lager_DB + T LW4 // DB_Nummer + L Lager_DW // Adresse + SLD 3 + L 16#8400_0000 // Kennung: Daten + OD + T LD6 // Kennung, Adresse + +// Ziel-Pointer erzeugen: (PC-Lager-Visu-Daten) + L 157 + T LW14 // DB_Nummer + L 0 // Adresse + SLD 3 + L 16#8400_0000 // Kennung: Daten + OD + T LD16 // Kennung, Adresse + +CALL SYS "BLKMOV" (SRCBLK:=Quelle, RET_VAL:=RET_VAL_BLKMOV, DSTBLK:=Ziel) // Datenliste-Daten speichern + + L RET_VAL_BLKMOV // Rückmeldung + L 0 // Fehler vorhanden ? + <>I // Ja ! + = Error.BLKMOV // Error bei Block kopieren + BEC + +// Ziel-Pointer erzeugen: (Lager_Visu_old-Daten) + L 157 + T LW14 // DB_Nummer + L 700 // Adresse + SLD 3 + L 16#8400_0000 // Kennung: Daten + OD + T LD16 // Kennung, Adresse + +CALL SYS "BLKMOV" (SRCBLK:=Quelle, RET_VAL:=RET_VAL_BLKMOV, DSTBLK:=Ziel) // Datenliste-Daten speichern + + L RET_VAL_BLKMOV // Rückmeldung + L 0 // Fehler vorhanden ? + <>I // Ja ! + = Error.BLKMOV // Error bei Block kopieren + BEC + + L Lager_Nr_aktiv + T VollPuffer_Nr_from_PLC // Rückmeldung an PC (Daten stehen an) + + SET + S Durchlauf1 // 1.Durchlauf hat stattgefunden + + +--- NW 5: Ende --- + BE + diff --git a/=A01+UH07-KF00/Programmbausteine/Visualisierung/Visu_Sorter_Rein.awl b/=A01+UH07-KF00/Programmbausteine/Visualisierung/Visu_Sorter_Rein.awl new file mode 100644 index 0000000..aba9707 --- /dev/null +++ b/=A01+UH07-KF00/Programmbausteine/Visualisierung/Visu_Sorter_Rein.awl @@ -0,0 +1,368 @@ +=== FB 151: Visu_Sorter_Rein [STL] === +INTERFACE: + Input: + Output: + InOut: + Static: + Sep_Visu : "MSepSorterRein" // Sep-Bereich für Visualisierung + Sep_Visu_old : "MSepSorterRein" + Empty_Visu : Array[1..75] of Int // Bereich für Daten-Löschung + DL_DB : Int // Datenlisten-DB + Sep_Nr_from_PC : Int // PC>PLC: Für diesen Sep Daten bereitstellen + Sep_Nr_from_PLC : Int // PLC>PC: Daten von diesem Sepe aktiv + Sep_Nr_from_VAR : Int // VAR>PLC: Für diesen Sep Daten bereitstellen + VAR_old : Int // VAR>PLC: Für diesen Sep Daten bereitstellen + VAR_Timer : Int // VAR>PLC: Für diesen Sep Daten bereitstellen + RET_VAL_Datenbank : Byte + RET_VAL_BLKMOV : Int + Durchlauf1 : Bool // 1.Durchlauf hat stattgefunden + Error : Struct + Datenbank : Bool + Undef_Sep : Bool + BLKMOV : Bool + Temp: + Quelle : Any // Zeiger, wo Quell-Daten sind + Ziel : Any // Zeiger, wo Ziel-Daten sind + Sep_DB : Int // Sep-DB + Sep_DW : Int // Sep-DW + AR1Zeiger : DWord // Statt AR1 (ging nur bis DB-Länge <= 8191 Bytes) + AR1Start : DInt // Startwert mit Offset 0 + Sep_Nr_aktiv : Int // Intern: Für diesen Sep Daten bereitstellen + Constant: + +--- NW 1: + --- + L Sep_Nr_from_VAR // Anforderung von Variablentabelle ? + L 0 + >I // Ja ! + JC X010 + + L Sep_Nr_from_PC // Anfoderung von Visualisierung? + L 0 + >I // Ja ! + JC X011 + + L 0 + T Sep_Nr_from_PLC + T VAR_old + T VAR_Timer + + SET + R Error.Datenbank + R Error.Undef_Sep + R Error.BLKMOV + + A Durchlauf1 + R Durchlauf1 // 1.Durchlauf hat stattgefunden + JC D010 + + BEU + +// Daten löschen: +// Kennung + Datenbytes +D010: L 16#1004 // Kennung 10 + Word=04 + T LW0 + T LW10 // Any-Kennung, Datentyp + L 75 // Datenwords speichern + T LW2 + T LW12 // Wiederholungen + +// Quelle-Pointer erzeugen: (Empty-Visu) + L 151 + T LW4 // DB_Nummer + L 300 // Adresse + SLD 3 + L 16#8400_0000 // Kennung: Daten + OD + T LD6 // Kennung, Adresse + +// Ziel-Pointer erzeugen: (Sep_Visu_Daten) + L 151 + T LW14 // DB_Nummer + L 0 // Adresse + SLD 3 + L 16#8400_0000 // Kennung: Daten + OD + T LD16 // Kennung, Adresse + +CALL SYS "BLKMOV" (SRCBLK:=Quelle, RET_VAL:=RET_VAL_BLKMOV, DSTBLK:=Ziel) // Datenliste-Daten speichern + +// Ziel-Pointer erzeugen: (Sep_Visu_old-Daten) + L 151 + T LW14 // DB_Nummer + L 150 // Adresse + SLD 3 + L 16#8400_0000 // Kennung: Daten + OD + T LD16 // Kennung, Adresse + +CALL SYS "BLKMOV" (SRCBLK:=Quelle, RET_VAL:=RET_VAL_BLKMOV, DSTBLK:=Ziel) // Datenliste-Daten speichern + + L 0 + T RET_VAL_Datenbank + T RET_VAL_BLKMOV + + BEU + +X010: CAC + T Sep_Nr_aktiv + + L 0 // Anforderung von PC löschen + T Sep_Nr_from_PC // Visualisierung + +// Automatisches Deaktivieren: + L Sep_Nr_from_VAR + L VAR_old // Noch diesselbe VAR-Nr. ? + ==I // Ja ! + A Durchlauf1 + JC Y010 + +// NeuBeginn: + L 3600 // 1 Stunde + T VAR_Timer // Timer neu laden + + L Sep_Nr_from_VAR + T VAR_old // VAR-Nr. speichern + + JU En01 + +// Timer aktiv: +Y010: AN "1s-Impuls" // 1s-Impuls + JC En01 + + L VAR_Timer // Timer + + -1 // 1s von Restzeit abziehen + T VAR_Timer // Timer + + L 0 // abgelaufen ? + >I // Nein ! + JC En01 + +// Timer abgelaufen: + L 0 // Automatisch beaktivieren + T Sep_Nr_from_VAR + T VAR_old + T VAR_Timer // Timer + + JU En01 + +X011: CAC + T Sep_Nr_aktiv + + L 0 // Anforderung von VAR löschen + T Sep_Nr_from_VAR // Visualisierung + T VAR_old + T VAR_Timer + +En01: NOP 0 + + +--- NW 2: Zeiger von gewolltem Sep ermitteln --- + L Sep_Nr_aktiv + T "MW200" // Search-Daten + +CALL FC "DatenOut" (SSDB:=DL_DB, SSDW:=0, PARA:=WORD#16#0000, SEARCHDATEN:=P#M200.0, RE_VAL:="MB219", OUTDATEN:=P#M220.0, Position:="MW298") // Datenlisten-DB + + L "MB219" + T RET_VAL_Datenbank // Rückmeldung bei Datenbank-Zugriff (Vorstau-DL) + + JBI ok2 + + A "M219.0" + S Error.Datenbank + +No: SET + S Error.Undef_Sep + + L 0 + T Sep_Nr_from_PLC // Aktiv-Sep + + JU D010 + +ok2: SET + R Error.Datenbank + R Error.Undef_Sep + + L "MW222" + L 176 // Sep Sorter Rein? + ==I // Ja! + JC Ok2_Mig + + JU No + +Ok2_Mig: L "MW224" + T Sep_DB + L "MW226" + T Sep_DW + + +--- NW 3: Neue Datenübergabe an PC ? --- + AN Durchlauf1 // 1.Durchlauf hat stattgefunden + JC En03 + +// Ziel-Pointer erzeugen: (PLC-Daten) + L Sep_DW + ITD + T AR1Start // Startwert mit Offset 0 + +// Default-Ziel: + L Sep_Visu.Separator.Default_Ziel + L Sep_Visu_old.Separator.Default_Ziel + ==I // Keine Änderung ! + JC X300 + + L AR1Start // Startwert mit Offset 0 + + DINT#46 // Offset für DefaultZiel + SLD 3 + T AR1Zeiger // Statt Dyn.Bereichsstop (ging nur bis DB-Länge <= 8191 Bytes) + L Sep_Visu.Separator.Default_Ziel + OPN DB[Sep_DB] // Sep-DB öffnen + T DBW [AR1Zeiger] // Sep-Zug + +// Rec-DEST-Ziel: +X300: L Sep_Visu.Dyn.Scanner.Rec_DEST_Ziel + L Sep_Visu_old.Dyn.Scanner.Rec_DEST_Ziel + ==I // Keine Änderung ! + JC X301 + + L AR1Start // Startwert mit Offset 0 + + DINT#106 // Rec-DEST-Ziel + SLD 3 + T AR1Zeiger // Statt Dyn.Bereichsstop (ging nur bis DB-Länge <= 8191 Bytes) + L Sep_Visu.Dyn.Scanner.Rec_DEST_Ziel + OPN DB[Sep_DB] // Sep-DB öffnen + T DBW [AR1Zeiger] // Sep-Reservierung + +// Betriebsart-Ziel: +X301: L Sep_Visu.Dyn.Status.Betriebsart_Ziel + L Sep_Visu_old.Dyn.Status.Betriebsart_Ziel + ==I // Keine Änderung ! + JC X302 + + L AR1Start // Startwert mit Offset 0 + + DINT#78 // Betriebsart-Ziel + SLD 3 + T AR1Zeiger // Statt Dyn.Bereichsstop (ging nur bis DB-Länge <= 8191 Bytes) + L Sep_Visu.Dyn.Status.Betriebsart_Ziel + OPN DB[Sep_DB] // Sep-DB öffnen + T DBW [AR1Zeiger] // Sep-Reservierung + +// Betriebsrat Rapidfire: +X302: A Sep_Visu.Dyn.Status.Betriebsart_Art.Rapidfire + A Sep_Visu_old.Dyn.Status.Betriebsart_Art.Rapidfire + O + AN Sep_Visu.Dyn.Status.Betriebsart_Art.Rapidfire + AN Sep_Visu_old.Dyn.Status.Betriebsart_Art.Rapidfire + JC X303 // Keine Änderung ! + + L AR1Start // Startwert mit Offset 0 + + DINT#76 // Offset für Betriebsart + SLD 3 + L 1 // Damit DBX_Bit 1 + OD + T AR1Zeiger // Statt Dyn.Bereichsstop (ging nur bis DB-Länge <= 8191 Bytes) + A Sep_Visu.Dyn.Status.Betriebsart_Art.Rapidfire + OPN DB[Sep_DB] // Sep-DB öffnen + = DBX [AR1Zeiger] // Sep-SK-Reset + +// Sep-Reset: +X303: A Sep_Visu.Dyn.Sk.Reset + A Sep_Visu_old.Dyn.Sk.Reset + O + AN Sep_Visu.Dyn.Sk.Reset + AN Sep_Visu_old.Dyn.Sk.Reset + JC X304 // Keine Änderung ! + + L AR1Start // Startwert mit Offset 0 + + DINT#100 // Offset für SK-Zeug + SLD 3 + L 3 // Damit DBX_Bit 3 + OD + T AR1Zeiger // Statt Dyn.Bereichsstop (ging nur bis DB-Länge <= 8191 Bytes) + A Sep_Visu.Dyn.Sk.Reset + OPN DB[Sep_DB] // Sep-DB öffnen + = DBX [AR1Zeiger] // Sep-SK-Reset + +// Gesamt-Sorter-Reset: +X304: A Sep_Visu.Dyn.GesamtSorterReset + A Sep_Visu_old.Dyn.GesamtSorterReset + O + AN Sep_Visu.Dyn.GesamtSorterReset + AN Sep_Visu_old.Dyn.GesamtSorterReset + JC En03 // Keine Änderung ! + + L AR1Start // Startwert mit Offset 0 + + DINT#125 // Offset DW125 + SLD 3 + L 2 // Damit DBX_Bit 2 + OD + T AR1Zeiger // Statt Dyn.Bereichsstop (ging nur bis DB-Länge <= 8191 Bytes) + A Sep_Visu.Dyn.GesamtSorterReset + OPN DB[Sep_DB] // Sep-DB öffnen + = DBX [AR1Zeiger] // Sep-SK-Reset + +En03: NOP 0 + + +--- NW 4: Datenübernahme vom PC --- +// Kennung + Datenbytes + L 16#1004 // Kennung 10 + Word=04 + T LW0 + T LW10 // Any-Kennung, Datentyp + L 75 // Datenwords speichern + T LW2 + T LW12 // Wiederholungen + +// Quelle-Pointer erzeugen: (PLC-Daten) + L Sep_DB + T LW4 // DB_Nummer + L Sep_DW // Adresse + SLD 3 + L 16#8400_0000 // Kennung: Daten + OD + T LD6 // Kennung, Adresse + +// Ziel-Pointer erzeugen: (PC-Sep-Visu-Daten) + L 151 + T LW14 // DB_Nummer + L 0 // Adresse + SLD 3 + L 16#8400_0000 // Kennung: Daten + OD + T LD16 // Kennung, Adresse + +CALL SYS "BLKMOV" (SRCBLK:=Quelle, RET_VAL:=RET_VAL_BLKMOV, DSTBLK:=Ziel) // Datenliste-Daten speichern + + L RET_VAL_BLKMOV // Rückmeldung + L 0 // Fehler vorhanden ? + <>I // Ja ! + = Error.BLKMOV // Error bei Block kopieren + BEC + +// Ziel-Pointer erzeugen: (Sep_Visu_old-Daten) + L 151 + T LW14 // DB_Nummer + L 150 // Adresse + SLD 3 + L 16#8400_0000 // Kennung: Daten + OD + T LD16 // Kennung, Adresse + +CALL SYS "BLKMOV" (SRCBLK:=Quelle, RET_VAL:=RET_VAL_BLKMOV, DSTBLK:=Ziel) // Datenliste-Daten speichern + + L RET_VAL_BLKMOV // Rückmeldung + L 0 // Fehler vorhanden ? + <>I // Ja ! + = Error.BLKMOV // Error bei Block kopieren + BEC + + L Sep_Nr_aktiv + T Sep_Nr_from_PLC // Rückmeldung an PC (Daten stehen an) + + SET + S Durchlauf1 // 1.Durchlauf hat stattgefunden + + +--- NW 5: Ende --- + BE + diff --git a/=A01+UH07-KF00/Programmbausteine/Visualisierung/Visu_StartSync_Visu.awl b/=A01+UH07-KF00/Programmbausteine/Visualisierung/Visu_StartSync_Visu.awl new file mode 100644 index 0000000..971bc5d --- /dev/null +++ b/=A01+UH07-KF00/Programmbausteine/Visualisierung/Visu_StartSync_Visu.awl @@ -0,0 +1,290 @@ +=== FB 154: Visu_StartSync_Visu [STL] === +INTERFACE: + Input: + Output: + InOut: + Static: + StartSync_Visu : "MStartSync" // StartSync-Bereich für Visualisierung + StartSync_Visu_old : "MStartSync" + Empty_Visu : Array[1..75] of Int // Bereich für Daten-Löschung + DL_DB : Int // Datenlisten-DB + StartSync_Nr_from_PC : Int // PC>PLC: Für diese StartSync Daten bereitstellen + StartSync_Nr_from_PLC : Int // PLC>PC: Daten von diesem StartSynce aktiv + StartSync_Nr_from_VAR : Int // VAR>PLC: Für diese StartSync Daten bereitstellen + VAR_old : Int // VAR>PLC: Für diese StartSync Daten bereitstellen + VAR_Timer : Int // VAR>PLC: Für diese StartSync Daten bereitstellen + RET_VAL_Datenbank : Byte + RET_VAL_BLKMOV : Int + Durchlauf1 : Bool // 1.Durchlauf hat stattgefunden + Error : Struct + Datenbank : Bool + Undef_StartSync : Bool + BLKMOV : Bool + Temp: + Quelle : Any // Zeiger, wo Quell-Daten sind + Ziel : Any // Zeiger, wo Ziel-Daten sind + Weiche_DB : Int // Weiche-DB + Weiche_DW : Int // Weiche-DW + AR1Zeiger : DWord // Statt AR1 (ging nur bis DB-Länge <= 8191 Bytes) + AR1Start : DInt // Startwert mit Offset 0 + StartSync_Nr_aktiv : Int // Intern: Für diese StartSync Daten bereitstellen + Constant: + +--- NW 1: + --- + L StartSync_Nr_from_VAR // Anforderung von Variablentabelle ? + L 0 + >I // Ja ! + JC X010 + + L StartSync_Nr_from_PC // Anfoderung von Visualisierung? + L 0 + >I // Ja ! + JC X011 + + L 0 + T StartSync_Nr_from_PLC + T VAR_old + T VAR_Timer + + SET + R Error.Datenbank + R Error.Undef_StartSync + R Error.BLKMOV + + A Durchlauf1 + R Durchlauf1 // 1.Durchlauf hat stattgefunden + JC D010 + + BEU + +// Daten löschen: +// Kennung + Datenbytes +D010: L 16#1004 // Kennung 10 + Word=04 + T LW0 + T LW10 // Any-Kennung, Datentyp + L 75 // Datenwords speichern + T LW2 + T LW12 // Wiederholungen + +// Quelle-Pointer erzeugen: (Empty-Visu) + L 154 + T LW4 // DB_Nummer + L 300 // Adresse + SLD 3 + L 16#8400_0000 // Kennung: Daten + OD + T LD6 // Kennung, Adresse + +// Ziel-Pointer erzeugen: (Sep_Visu_Daten) + L 154 + T LW14 // DB_Nummer + L 0 // Adresse + SLD 3 + L 16#8400_0000 // Kennung: Daten + OD + T LD16 // Kennung, Adresse + +CALL SYS "BLKMOV" (SRCBLK:=Quelle, RET_VAL:=RET_VAL_BLKMOV, DSTBLK:=Ziel) // Datenliste-Daten speichern + +// Ziel-Pointer erzeugen: (Sep_Visu_old-Daten) + L 154 + T LW14 // DB_Nummer + L 150 // Adresse + SLD 3 + L 16#8400_0000 // Kennung: Daten + OD + T LD16 // Kennung, Adresse + +CALL SYS "BLKMOV" (SRCBLK:=Quelle, RET_VAL:=RET_VAL_BLKMOV, DSTBLK:=Ziel) // Datenliste-Daten speichern + + L 0 + T RET_VAL_Datenbank + T RET_VAL_BLKMOV + + BEU + +X010: CAC + T StartSync_Nr_aktiv + + L 0 // Anforderung von PC löschen + T StartSync_Nr_from_PC // Visualisierung + +// Automatisches Deaktivieren: + L StartSync_Nr_from_VAR + L VAR_old // Noch diesselbe VAR-Nr. ? + ==I // Ja ! + A Durchlauf1 + JC Y010 + +// NeuBeginn: + L 3600 // 1 Stunde + T VAR_Timer // Timer neu laden + + L StartSync_Nr_from_VAR + T VAR_old // VAR-Nr. speichern + + JU En01 + +// Timer aktiv: +Y010: AN "1s-Impuls" // 1s-Impuls + JC En01 + + L VAR_Timer // Timer + + -1 // 1s von Restzeit abziehen + T VAR_Timer // Timer + + L 0 // abgelaufen ? + >I // Nein ! + JC En01 + +// Timer abgelaufen: + L 0 // Automatisch beaktivieren + T StartSync_Nr_from_VAR + T VAR_old + T VAR_Timer // Timer + + JU En01 + +X011: CAC + T StartSync_Nr_aktiv + + L 0 // Anforderung von VAR löschen + T StartSync_Nr_from_VAR // Visualisierung + T VAR_old + T VAR_Timer + +En01: NOP 0 + + +--- NW 2: Zeiger von gewollte Weiche ermitteln --- + L StartSync_Nr_aktiv + T "MW200" // Search-Daten + +CALL FC "DatenOut" (SSDB:=DL_DB, SSDW:=0, PARA:=WORD#16#0000, SEARCHDATEN:=P#M200.0, RE_VAL:="MB219", OUTDATEN:=P#M220.0, Position:="MW298") // Datenlisten-DB + + L "MB219" + T RET_VAL_Datenbank // Rückmeldung bei Datenbank-Zugriff (Vorstau-DL) + + JBI ok2 + + A "M219.0" + S Error.Datenbank + +No: SET + S Error.Undef_StartSync + + L 0 + T StartSync_Nr_from_PLC // Aktiv-Weiche + + JU D010 + +ok2: SET + R Error.Datenbank + R Error.Undef_StartSync + + L "MW226" + L 177 // StartSync? + ==I // Ja! + JC Ok2_Mig + + JU No + +Ok2_Mig: L "MW222" + T Weiche_DB + L "MW224" + T Weiche_DW + + +--- NW 3: Neue Datenübergabe an PC ? --- + AN Durchlauf1 // 1.Durchlauf hat stattgefunden + JC En03 + +// Ziel-Pointer erzeugen: (PLC-Daten) + L Weiche_DW + ITD + T AR1Start // Startwert mit Offset 0 + +// StartSync-Reset: + A StartSync_Visu.Dyn.Reset + A StartSync_Visu_old.Dyn.Reset + O + AN StartSync_Visu.Dyn.Reset + AN StartSync_Visu_old.Dyn.Reset + JC En03 // Keine Änderung ! + + L AR1Start // Startwert mit Offset 0 + + DINT#86 // Offset für Status + SLD 3 + L 3 // Damit DBX_Bit 3 + OD + T AR1Zeiger // Statt Dyn.Bereichsstop (ging nur bis DB-Länge <= 8191 Bytes) + A StartSync_Visu.Dyn.Reset + OPN DB[Weiche_DB] // Sep-DB öffnen + = DBX [AR1Zeiger] // Sep-SK-Reset + +En03: NOP 0 + + +--- NW 4: Datenübernahme vom PC --- +// Kennung + Datenbytes + L 16#1004 // Kennung 10 + Word=04 + T LW0 + T LW10 // Any-Kennung, Datentyp + L 75 // Datenwords speichern + T LW2 + T LW12 // Wiederholungen + +// Quelle-Pointer erzeugen: (PLC-Daten) + L Weiche_DB + T LW4 // DB_Nummer + L Weiche_DW // Adresse + SLD 3 + L 16#8400_0000 // Kennung: Daten + OD + T LD6 // Kennung, Adresse + +// Ziel-Pointer erzeugen: (PC-Sep-Visu-Daten) + L 154 + T LW14 // DB_Nummer + L 0 // Adresse + SLD 3 + L 16#8400_0000 // Kennung: Daten + OD + T LD16 // Kennung, Adresse + +CALL SYS "BLKMOV" (SRCBLK:=Quelle, RET_VAL:=RET_VAL_BLKMOV, DSTBLK:=Ziel) // Datenliste-Daten speichern + + L RET_VAL_BLKMOV // Rückmeldung + L 0 // Fehler vorhanden ? + <>I // Ja ! + = Error.BLKMOV // Error bei Block kopieren + BEC + +// Ziel-Pointer erzeugen: (Sep_Visu_old-Daten) + L 154 + T LW14 // DB_Nummer + L 150 // Adresse + SLD 3 + L 16#8400_0000 // Kennung: Daten + OD + T LD16 // Kennung, Adresse + +CALL SYS "BLKMOV" (SRCBLK:=Quelle, RET_VAL:=RET_VAL_BLKMOV, DSTBLK:=Ziel) // Datenliste-Daten speichern + + L RET_VAL_BLKMOV // Rückmeldung + L 0 // Fehler vorhanden ? + <>I // Ja ! + = Error.BLKMOV // Error bei Block kopieren + BEC + + L StartSync_Nr_aktiv + T StartSync_Nr_from_PLC // Rückmeldung an PC (Daten stehen an) + + SET + S Durchlauf1 // 1.Durchlauf hat stattgefunden + + +--- NW 5: Ende --- + BE + diff --git a/=A01+UH07-KF00/Programmbausteine/Visualisierung/Visu_Weiche_Sorter.awl b/=A01+UH07-KF00/Programmbausteine/Visualisierung/Visu_Weiche_Sorter.awl new file mode 100644 index 0000000..f606a12 --- /dev/null +++ b/=A01+UH07-KF00/Programmbausteine/Visualisierung/Visu_Weiche_Sorter.awl @@ -0,0 +1,308 @@ +=== FB 153: Visu_Weiche_Sorter [STL] === +INTERFACE: + Input: + Output: + InOut: + Static: + Weiche_Visu : "MWeiche_Sorter" // Weiche-Bereich für Visualisierung + Weiche_Visu_old : "MWeiche_Sorter" + Empty_Visu : Array[1..75] of Int // Bereich für Daten-Löschung + DL_DB : Int // Datenlisten-DB + Weiche_Nr_from_PC : Int // PC>PLC: Für diese Weiche Daten bereitstellen + Weiche_Nr_from_PLC : Int // PLC>PC: Daten von diesem Weichee aktiv + Weiche_Nr_from_VAR : Int // VAR>PLC: Für diese Weiche Daten bereitstellen + VAR_old : Int // VAR>PLC: Für diese Weiche Daten bereitstellen + VAR_Timer : Int // VAR>PLC: Für diese Weiche Daten bereitstellen + RET_VAL_Datenbank : Byte + RET_VAL_BLKMOV : Int + Durchlauf1 : Bool // 1.Durchlauf hat stattgefunden + Error : Struct + Datenbank : Bool + Undef_Weiche : Bool + BLKMOV : Bool + Temp: + Quelle : Any // Zeiger, wo Quell-Daten sind + Ziel : Any // Zeiger, wo Ziel-Daten sind + Weiche_DB : Int // Weiche-DB + Weiche_DW : Int // Weiche-DW + AR1Zeiger : DWord // Statt AR1 (ging nur bis DB-Länge <= 8191 Bytes) + AR1Start : DInt // Startwert mit Offset 0 + Weiche_Nr_aktiv : Int // Intern: Für diese Weiche Daten bereitstellen + Constant: + +--- NW 1: + --- + L Weiche_Nr_from_VAR // Anforderung von Variablentabelle ? + L 0 + >I // Ja ! + JC X010 + + L Weiche_Nr_from_PC // Anfoderung von Visualisierung? + L 0 + >I // Ja ! + JC X011 + + L 0 + T Weiche_Nr_from_PLC + T VAR_old + T VAR_Timer + + SET + R Error.Datenbank + R Error.Undef_Weiche + R Error.BLKMOV + + A Durchlauf1 + R Durchlauf1 // 1.Durchlauf hat stattgefunden + JC D010 + + BEU + +// Daten löschen: +// Kennung + Datenbytes +D010: L 16#1004 // Kennung 10 + Word=04 + T LW0 + T LW10 // Any-Kennung, Datentyp + L 100 // Datenwords speichern + T LW2 + T LW12 // Wiederholungen + +// Quelle-Pointer erzeugen: (Empty-Visu) + L 153 + T LW4 // DB_Nummer + L 400 // Adresse + SLD 3 + L 16#8400_0000 // Kennung: Daten + OD + T LD6 // Kennung, Adresse + +// Ziel-Pointer erzeugen: (Weichen_Visu_Daten) + L 153 + T LW14 // DB_Nummer + L 0 // Adresse + SLD 3 + L 16#8400_0000 // Kennung: Daten + OD + T LD16 // Kennung, Adresse + +CALL SYS "BLKMOV" (SRCBLK:=Quelle, RET_VAL:=RET_VAL_BLKMOV, DSTBLK:=Ziel) // Datenliste-Daten speichern + +// Ziel-Pointer erzeugen: (Weichen_Visu_old-Daten) + L 153 + T LW14 // DB_Nummer + L 200 // Adresse + SLD 3 + L 16#8400_0000 // Kennung: Daten + OD + T LD16 // Kennung, Adresse + +CALL SYS "BLKMOV" (SRCBLK:=Quelle, RET_VAL:=RET_VAL_BLKMOV, DSTBLK:=Ziel) // Datenliste-Daten speichern + + L 0 + T RET_VAL_Datenbank + T RET_VAL_BLKMOV + + BEU + +X010: CAC + T Weiche_Nr_aktiv + + L 0 // Anforderung von PC löschen + T Weiche_Nr_from_PC // Visualisierung + +// Automatisches Deaktivieren: + L Weiche_Nr_from_VAR + L VAR_old // Noch diesselbe VAR-Nr. ? + ==I // Ja ! + A Durchlauf1 + JC Y010 + +// NeuBeginn: + L 3600 // 1 Stunde + T VAR_Timer // Timer neu laden + + L Weiche_Nr_from_VAR + T VAR_old // VAR-Nr. speichern + + JU En01 + +// Timer aktiv: +Y010: AN "1s-Impuls" // 1s-Impuls + JC En01 + + L VAR_Timer // Timer + + -1 // 1s von Restzeit abziehen + T VAR_Timer // Timer + + L 0 // abgelaufen ? + >I // Nein ! + JC En01 + +// Timer abgelaufen: + L 0 // Automatisch beaktivieren + T Weiche_Nr_from_VAR + T VAR_old + T VAR_Timer // Timer + + JU En01 + +X011: CAC + T Weiche_Nr_aktiv + + L 0 // Anforderung von VAR löschen + T Weiche_Nr_from_VAR // Visualisierung + T VAR_old + T VAR_Timer + +En01: NOP 0 + + +--- NW 2: Zeiger von gewollte Weiche ermitteln --- + L Weiche_Nr_aktiv + T "MW200" // Search-Daten + +CALL FC "DatenOut" (SSDB:=DL_DB, SSDW:=0, PARA:=WORD#16#0000, SEARCHDATEN:=P#M200.0, RE_VAL:="MB219", OUTDATEN:=P#M220.0, Position:="MW298") // Datenlisten-DB + + L "MB219" + T RET_VAL_Datenbank // Rückmeldung bei Datenbank-Zugriff (Vorstau-DL) + + JBI ok2 + + A "M219.0" + S Error.Datenbank + +No: SET + S Error.Undef_Weiche + + L 0 + T Weiche_Nr_from_PLC // Aktiv-Weiche + + JU D010 + +ok2: SET + R Error.Datenbank + R Error.Undef_Weiche + + L "MW226" + L 178 // Weiche Sorter? + ==I // Ja! + JC Ok2_Mig + + JU No + +Ok2_Mig: L "MW222" + T Weiche_DB + L "MW224" + T Weiche_DW + + +--- NW 3: Neue Datenübergabe an PC ? --- + AN Durchlauf1 // 1.Durchlauf hat stattgefunden + JC En03 + +// Ziel-Pointer erzeugen: (PLC-Daten) + L Weiche_DW + ITD + T AR1Start // Startwert mit Offset 0 + +// Ohne Verklemm-Kontrolle + A Weiche_Visu.Dyn.Ohne_VerklemmKontrolle + A Weiche_Visu_old.Dyn.Ohne_VerklemmKontrolle + O + AN Weiche_Visu.Dyn.Ohne_VerklemmKontrolle + AN Weiche_Visu_old.Dyn.Ohne_VerklemmKontrolle + JC X301 // Keine Änderung ! + + L AR1Start // Startwert mit Offset 0 + + DINT#92 // Offset für Status + SLD 3 + L 6 // Damit DBX_Bit 6 + OD + T AR1Zeiger // Statt Dyn.Bereichsstop (ging nur bis DB-Länge <= 8191 Bytes) + A Weiche_Visu.Dyn.Ohne_VerklemmKontrolle + OPN DB[Weiche_DB] // Sep-DB öffnen + = DBX [AR1Zeiger] // Sep-SK-Reset + +// Weichen-Reset: +X301: A Weiche_Visu.Dyn.Status.Reset + A Weiche_Visu_old.Dyn.Status.Reset + O + AN Weiche_Visu.Dyn.Status.Reset + AN Weiche_Visu_old.Dyn.Status.Reset + JC En03 // Keine Änderung ! + + L AR1Start // Startwert mit Offset 0 + + DINT#74 // Offset für Status + SLD 3 + L 7 // Damit DBX_Bit 7 + OD + T AR1Zeiger // Statt Dyn.Bereichsstop (ging nur bis DB-Länge <= 8191 Bytes) + A Weiche_Visu.Dyn.Status.Reset + OPN DB[Weiche_DB] // Weichen-DB öffnen + = DBX [AR1Zeiger] // Weichen-SK-Reset + +En03: NOP 0 + + +--- NW 4: Datenübernahme vom PC --- +// Kennung + Datenbytes + L 16#1004 // Kennung 10 + Word=04 + T LW0 + T LW10 // Any-Kennung, Datentyp + L 100 // Datenwords speichern + T LW2 + T LW12 // Wiederholungen + +// Quelle-Pointer erzeugen: (PLC-Daten) + L Weiche_DB + T LW4 // DB_Nummer + L Weiche_DW // Adresse + SLD 3 + L 16#8400_0000 // Kennung: Daten + OD + T LD6 // Kennung, Adresse + +// Ziel-Pointer erzeugen: (PC-Weichen-Visu-Daten) + L 153 + T LW14 // DB_Nummer + L 0 // Adresse + SLD 3 + L 16#8400_0000 // Kennung: Daten + OD + T LD16 // Kennung, Adresse + +CALL SYS "BLKMOV" (SRCBLK:=Quelle, RET_VAL:=RET_VAL_BLKMOV, DSTBLK:=Ziel) // Datenliste-Daten speichern + + L RET_VAL_BLKMOV // Rückmeldung + L 0 // Fehler vorhanden ? + <>I // Ja ! + = Error.BLKMOV // Error bei Block kopieren + BEC + +// Ziel-Pointer erzeugen: (Weichen_Visu_old-Daten) + L 153 + T LW14 // DB_Nummer + L 200 // Adresse + SLD 3 + L 16#8400_0000 // Kennung: Daten + OD + T LD16 // Kennung, Adresse + +CALL SYS "BLKMOV" (SRCBLK:=Quelle, RET_VAL:=RET_VAL_BLKMOV, DSTBLK:=Ziel) // Datenliste-Daten speichern + + L RET_VAL_BLKMOV // Rückmeldung + L 0 // Fehler vorhanden ? + <>I // Ja ! + = Error.BLKMOV // Error bei Block kopieren + BEC + + L Weiche_Nr_aktiv + T Weiche_Nr_from_PLC // Rückmeldung an PC (Daten stehen an) + + SET + S Durchlauf1 // 1.Durchlauf hat stattgefunden + + +--- NW 5: Ende --- + BE + diff --git a/=A01+UH07-KF00/Programmbausteine/_All/7_HMI_Err_UH07_OB.awl b/=A01+UH07-KF00/Programmbausteine/_All/7_HMI_Err_UH07_OB.awl new file mode 100644 index 0000000..1eff8cb --- /dev/null +++ b/=A01+UH07-KF00/Programmbausteine/_All/7_HMI_Err_UH07_OB.awl @@ -0,0 +1,3708 @@ +=== GlobalDB 708: 7_HMI_Err_UH07_OB [DB] === +INTERFACE: + Static: + System : Struct + Bus_Anlauf : Bool // Outbound (UH07): Profibus-Anlauf (warten mit Programm) + Anlage_aus : Bool // Outbound (UH07): Anlage ist ausgeschaltet + Gesamt_Feueralarm_Halle3 : Bool // Outbound (UH07): Hauptmeldung Feueralarm Halle 3 + Gesamt_Feueralarm_Halle4 : Bool // Outbound (UH07): Hauptmeldung Feueralarm Halle 4 + BST1_Feueralarm : Bool // Outbound (UH07): BST1 Feueralarm + BST1_Störung : Bool // Outbound (UH07): BST1 Störung + BST1_Geschlossen : Bool // Outbound (UH07): BST1 Geschlossen + BST2_Feueralarm : Bool // Outbound (UH07): BST2 Feueralarm + BST2_Störung : Bool // Outbound (UH07): BST2 Störung + BST2_Geschlossen : Bool // Outbound (UH07): BST2 Geschlossen + Kommunikation : Struct + SendFIFO_Port1 : Bool // Outbound (UH07/Port1): Send-FIFO ist voll, Anlage gestoppt + SendFIFO_Port2 : Bool // Outbound (UH07/Port2): Send-FIFO ist voll, Anlage gestoppt + Frei02 : Bool + Frei03 : Bool + Frei04 : Bool + Frei05 : Bool + Frei06 : Bool + Frei07 : Bool + Frei10 : Bool + Frei11 : Bool + Frei12 : Bool + Frei13 : Bool + Frei14 : Bool + Frei15 : Bool + Frei16 : Bool + Frei17 : Bool + Not : Struct + ausgeloest_UH07_UC71_UC73 : Bool // Outbound (UH07): Not-Aus im UH07/UC71/UC73 hat ausgelöst + ausgeloest_UC072 : Bool // Outbound (UH07): Not-Aus im UC072 hat ausgelöst + ausgeloest_UC074 : Bool // Outbound (UH07): Not-Aus im UC074 hat ausgelöst + UH07 : Bool // Outbound (UH07): Not-Aus am Schaltschrank UH07 betätigt + UC071 : Bool // Outbound (UH07): Not-Aus am Schaltschrank UC071 betätigt + UC072 : Bool // Outbound (UH07): Not-Aus am Schaltschrank UC072 betätigt + UC073 : Bool // Outbound (UH07): Not-Aus am Schaltschrank UC073 betätigt + UC074 : Bool // Outbound (UH07): Not-Aus am Schaltschrank UC074 betätigt + UZ0701 : Bool // Outbound (UH07): Not-Aus an BST 1betätigt (UZ0701) + UZ0702 : Bool // Outbound (UH07): Not-Aus vor Leer-Puffer betätigt (UZ0702) + UZ0703 : Bool // Outbound (UH07): Not-Aus nach Leer-Puffer betätigt (UZ0703 + UZ7101 : Bool // Outbound (UH07): Not-Aus am Kontrollplatz betätigt (UZ7101 + UZ7102 : Bool // Outbound (UH07): Not-Aus an Voll-Puffer-Einfahrt betätigt (UZ7102) + UZ7103 : Bool // Outbound (UH07): Not-Aus Mitte Voll-Puffer-Einfahrt betätigt (UZ7103) + UZ7104 : Bool // Outbound (UH07): Not-Aus Mitte Voll-Puffer-Ausfahrt betätigt (UZ7104) + UZ7105 : Bool // Outbound (UH07): Not-Aus an Voll-Puffer-Ausfahrt betätigt (UZ7105) + UZ7106 : Bool // Outbound (UH07): Not-Aus Ende Voll-Puffer-Einfahrt betätigt (UZ7106) + UZ7107 : Bool // Outbound (UH07): Not-Aus Ende Voll-Puffer-Ausfahrt betätigt (UZ7107) + UZ7201 : Bool // Outbound (UH07): Not-Aus an Highway Nähe AMR betätigt (UZ7201) + UZ7202 : Bool // Outbound (UH07): Not-Aus an Highway BST 2/AMR betätigt (UZ7102) + UZ7301 : Bool // Outbound (UH07): Not-Aus an Highway BST 2/OB betätigt (UZ7301) + UZ7302 : Bool // Outbound (UH07): Not-Aus an Highway BST 2/Bypass betätigt (UZ7302) + UZ7303 : Bool // Outbound (UH07): Not-Aus an Bypass LP>VP betätigt (UZ7303) + UZ7401 : Bool // Outbound (UH07): Not-Aus an Bypass VP>LP betätigt (UZ7401) + UZ7402 : Bool // Outbound (UH07): Not-Aus an Entnahme-Puffer betätigt (UZ7402) + UZ7403 : Bool // Outbound (UH07): Not-Aus an Entnahme-Puffer betätigt (UZ7403) + von_UH03 : Bool // Outbound (UH07): Not-Aus von UH03 gemeldet + von_UH05 : Bool // Outbound (UH07): Not-Aus von UH05 gemeldet + von_UC061 : Bool // Outbound (UH07): Not-Aus von UH06 gemeldet + Frei75 : Bool + Frei76 : Bool + Frei77 : Bool + Halt : Struct + UZ7102 : Bool // Outbound (UH07): Bereichshalt UZ7102 betätigt + UZ7104 : Bool // Outbound (UH07): Bereichshalt UZ7104 betätigt + UZ7201 : Bool // Outbound (UH07): Bereichshalt UZ7201 betätigt + UZ7202 : Bool // Outbound (UH07): Bereichshalt UZ7202 betätigt + Frei04 : Bool + Frei05 : Bool + Frei06 : Bool + Frei07 : Bool + Frei10 : Bool + Frei11 : Bool + Frei12 : Bool + Frei13 : Bool + Frei14 : Bool + Frei15 : Bool + Frei16 : Bool + Frei17 : Bool + Schutz : Struct + Hauptschütz UH07 : Bool // Outbound (UH07): Hauptschütz UH07 nicht aktiv + Hauptschütz UC071 : Bool // Outbound (UH07): Hauptschütz UC071 nicht aktiv + Hauptschütz UC072 : Bool // Outbound (UH07): Hauptschütz UC072 nicht aktiv + Hauptschütz UC073 : Bool // Outbound (UH07): Hauptschütz UC073 nicht aktiv + Hauptschütz UC074 : Bool // Outbound (UH07): Hauptschütz UC074 nicht aktiv + Frei05 : Bool + Frei06 : Bool + Frei07 : Bool + Frei10 : Bool + Frei11 : Bool + Frei12 : Bool + Frei13 : Bool + Frei14 : Bool + Frei15 : Bool + Frei16 : Bool + Frei17 : Bool + VErr : Struct + Phasen : Bool // Outbound (UH07): Phasen-Ausfall + FC0006 : Bool // Outbound (UH07): Vorsicherung UC071 400V Motoren + FC0007 : Bool // Outbound (UH07): Vorsicherung UC072 400V Motoren + FC0010 : Bool // Outbound (UH07): Vorsicherung UC073 400V Motoren + FC0011 : Bool // Outbound (UH07): Vorsicherung Reserve 400V Motoren + FC0012 : Bool // Outbound (UH07): Vorsicherung Reserve 400V Motoren + FC0021 : Bool // Outbound (UH07): Vorsicherung 24V + FC0022 : Bool // Outbound (UH07): Vorsicherung 24V + FC0023 : Bool // Outbound (UH07): Vorsicherung 24V + Frei131 : Bool + Frei132 : Bool + Frei133 : Bool + FC0100 : Bool // OutBound (UC071): Vorsicherung 400V Motoren + FC0101 : Bool // OutBound (UC071): Vorsicherung 24V + FC0102 : Bool // OutBound (UC071): Vorsicherung 24V + FC0103 : Bool // OutBound (UC071): Vorsicherung 24V + FC0160 : Bool // OutBound (UC072): Vorsicherung 400V Motoren + FC0161 : Bool // OutBound (UC072): Vorsicherung 24V + FC0162 : Bool // OutBound (UC072): Vorsicherung 24V + FC0220 : Bool // OutBound (UC073): Vorsicherung 400V Motoren + FC0221 : Bool // OutBound (UC073): Vorsicherung 24V + FC0222 : Bool // OutBound (UC073): Vorsicherung 24V + FC0223 : Bool // OutBound (UC073): Vorsicherung 24V + FC0280 : Bool // OutBound (UC074): Vorsicherung 400V Motoren + FC0281 : Bool // OutBound (UC074): Vorsicherung 24V + FC0282 : Bool // OutBound (UC074): Vorsicherung 24V + FC0283 : Bool // OutBound (UC074): Vorsicherung 24V + Frei03 : Bool + Frei04 : Bool + Frei05 : Bool + Frei06 : Bool + Frei07 : Bool + Pn_UH07 : Bool // Outbound (UH07): Pneumatik + Pn_UC071 : Bool // Outbound (UC071): Pneumatik + Pn_UC072 : Bool // Outbound (UC072): Pneumatik + Pn_UC073 : Bool // Outbound (UC073): Pneumatik + Pn_UC074 : Bool // Outbound (UC074): Pneumatik + QErr : Struct + MA0060 : Bool // Outbound (UH07): Motorschutz MA0060 hat ausgelöst + MA0061 : Bool // Outbound (UH07): Motorschutz MA0061 hat ausgelöst + MA0062 : Bool // Outbound (UH07): Motorschutz MA0062 hat ausgelöst + MA0063 : Bool // Outbound (UH07): Motorschutz MA0063 hat ausgelöst + MA0064 : Bool // Outbound (UH07): Motorschutz MA0064 hat ausgelöst + MA0065 : Bool // Outbound (UH07): Motorschutz MA0065 hat ausgelöst + MA0066 : Bool // Outbound (UH07): Motorschutz MA0066 hat ausgelöst + Frei67 : Bool + MA0140 : Bool // Outbound (UC071): Motorschutz MA0140 hat ausgelöst + MA0141 : Bool // Outbound (UC071): Motorschutz MA0141 hat ausgelöst + MA0142 : Bool // Outbound (UC071): Motorschutz MA0142 hat ausgelöst + MA0143 : Bool // Outbound (UC071): Motorschutz MA0143 hat ausgelöst + MA0144 : Bool // Outbound (UC071): Motorschutz MA0144 hat ausgelöst + MA0145 : Bool // Outbound (UC071): Motorschutz MA0145 hat ausgelöst + MA0146 : Bool // Outbound (UC071): Motorschutz MA0146 hat ausgelöst + MA0147 : Bool // Outbound (UC071): Motorschutz MA0147 hat ausgelöst + MA0150 : Bool // Outbound (UC071): Motorschutz MA0150 hat ausgelöst + MA0151 : Bool // Outbound (UC071): Motorschutz MA0152 hat ausgelöst + MA0152 : Bool // Outbound (UC071): Motorschutz MA0152 hat ausgelöst + Frei153 : Bool + Frei154 : Bool + Frei155 : Bool + Frei156 : Bool + Frei157 : Bool + MA0200 : Bool // Outbound (UC072): Motorschutz MA0200 hat ausgelöst + MA0201 : Bool // Outbound (UC072): Motorschutz MA0202 hat ausgelöst + MA0202 : Bool // Outbound (UC072): Motorschutz MA0202 hat ausgelöst + MA0203 : Bool // Outbound (UC072): Motorschutz MA0203 hat ausgelöst + Frei204 : Bool + Frei205 : Bool + Frei206 : Bool + Frei207 : Bool + MA0260 : Bool // Outbound (UC073): Motorschutz MA0260 hat ausgelöst + MA0261 : Bool // Outbound (UC073): Motorschutz MA0261 hat ausgelöst + MA0262 : Bool // Outbound (UC073): Motorschutz MA0262 hat ausgelöst + MA0263 : Bool // Outbound (UC073): Motorschutz MA0263 hat ausgelöst + MA0264 : Bool // Outbound (UC073): Motorschutz MA0264 hat ausgelöst + MA0265 : Bool // Outbound (UC073): Motorschutz MA0265 hat ausgelöst + MA0266 : Bool // Outbound (UC073): Motorschutz MA0266 hat ausgelöst + MA0267 : Bool // Outbound (UC073): Motorschutz MA0267 hat ausgelöst + MA0270 : Bool // Outbound (UC073): Motorschutz MA0270 hat ausgelöst + Frei271 : Bool + Frei272 : Bool + Frei273 : Bool + Frei274 : Bool + Frei275 : Bool + Frei276 : Bool + Frei277 : Bool + MA0320 : Bool // Outbound (UC074): Motorschutz MA0320 hat ausgelöst + MA0321 : Bool // Outbound (UC074): Motorschutz MA0321 hat ausgelöst + MA0322 : Bool // Outbound (UC074): Motorschutz MA0322 hat ausgelöst + MA0323 : Bool // Outbound (UC074): Motorschutz MA0323 hat ausgelöst + MA0324 : Bool // Outbound (UC074): Motorschutz MA0324 hat ausgelöst + MA0325 : Bool // Outbound (UC074): Motorschutz MA0325 hat ausgelöst + MA0326 : Bool // Outbound (UC074): Motorschutz MA0326 hat ausgelöst + MA0327 : Bool // Outbound (UC074): Motorschutz MA0327 hat ausgelöst + MA0330 : Bool // Outbound (UC074): Motorschutz MA0330 hat ausgelöst + MA0331 : Bool // Outbound (UC074): Motorschutz MA0331 hat ausgelöst + MA0332 : Bool // Outbound (UC074): Motorschutz MA0332 hat ausgelöst + MA0333 : Bool // Outbound (UC074): Motorschutz MA0333 hat ausgelöst + Frei334 : Bool + Frei335 : Bool + Frei336 : Bool + Frei337 : Bool + Verklemm_MA0064 : Bool // Outbound (UH07): Leer-Puffer-Einfahrt Motor MA0064 ist verklemmt + Verklemm_MA0065 : Bool // Outbound (UH07): Leer-Puffer-Ausfahrt Motor MA0065 ist verklemmt + Verklemm_MA0145 : Bool // Outbound (UH07): Voll-Puffer-Einfahrt Motor MA0145 ist verklemmt + Verklemm_MA0146 : Bool // Outbound (UH07): Voll-Puffer-Einfahrt Motor MA0146 ist verklemmt + Verklemm_MA0147 : Bool // Outbound (UH07): Voll-Puffer-Ausfahrt Motor MA0147 ist verklemmt + Verklemm_MA0150 : Bool // Outbound (UH07): Voll-Puffer-Ausfahrt Motor MA0150 ist verklemmt + Verklemm_MA0325 : Bool // Outbound (UH07): Entlade-Puffer-Einfahrt Motor MA0325 ist verklemmt + Frei_287 : Bool + FuErr : Struct + Frei00 : Bool + Frei01 : Bool + Frei02 : Bool + Frei03 : Bool + Frei04 : Bool + Frei05 : Bool + Frei06 : Bool + Frei07 : Bool + Frei10 : Bool + Frei11 : Bool + Frei12 : Bool + Frei13 : Bool + Frei14 : Bool + Frei15 : Bool + Frei16 : Bool + Frei17 : Bool + Logistik : Struct + Kein_Platz_im_VollLager : Bool // Outbound (UH07): Kein Platz im Voll-Lager für diese Store-Group! + DB275_Err : Bool // Outbound (UH07): Softwarefehler Aufruf DB275 + Frei02 : Bool + Frei03 : Bool + Frei04 : Bool + Frei05 : Bool + Frei06 : Bool + Frei07 : Bool + Frei10 : Bool + Frei11 : Bool + Frei12 : Bool + Frei13 : Bool + Frei14 : Bool + Frei15 : Bool + Frei16 : Bool + Frei17 : Bool + RFID_Gate : Struct + Gate_nicht_bereit : Bool // Outbound (UH07): RFID-Gate ist nicht bereit + Gate_ByPAss : Bool // Outbound (UH07): RFID-Gate ist im ByPass-Mode + Frei100 : Array[1..33] of Word + Sorter_MB3305 : Struct // Outbound (UH07): Leer-Puffer-Sorter MB3305 + Separator_DL : Bool // Outbound (UH07): Leer-Puffer-Sorter: Separator-Datenliste fehlerhaft + Undef_Separator : Bool // Outbound (UH07): Leer-Puffer-Sorter: undefinierter Separator + Err_BT_rein : Bool // Outbound (UH07): Leer-Puffer-Sorter: BM fährt nicht in Separator + Err_Uebzeit : Bool // Outbound (UH07): Leer-Puffer-Sorter: Überwachungzeit ist abgelaufen + Err_Schritt : Bool // Outbound (UH07): Leer-Puffer-Sorter: Schritt-Nummer ist nicht definiert + Err_Betriebsart : Bool // Outbound (UH07): Leer-Puffer-Sorter: Betriebsart ist nicht möglich + Err_PinSignal : Bool // Outbound (UH07): Leer-Puffer-Sorter: Es kommt kein Pin-Signal + Err_BT_raus : Bool // Outbound (UH07): Leer-Puffer-Sorter: BM fährt nicht aus + Err_Raus_Sensor : Bool // Outbound (UH07): Leer-Puffer-Sorter: Raus-/Belade-Sensor wird nicht erreicht (oder dauernd aktiv)! + Travel_FIFO : Bool // Outbound (UH07): Leer-Puffer-Sorter: Travel-FIFO fehlerhaft + Daten_out : Bool // Outbound (UH07): Leer-Puffer-Sorter: Letzte Carrier-Daten konnten nicht an FIFO übergeben werden + BC_doppelt : Bool // Outbound (UH07): Leer-Puffer-Sorter: Wieder gleichen BC vom PC erhalten + Korrektur_Modus_aktiv : Bool // Outbound (UH07): Leer-Puffer-Sorter: Korrektur-Modus nach Crash aktiviert + Send_FIFO_fehlerhaft : Bool // Outbound (UH07): Leer-Puffer-Sorter: Send-FIFO zum PC ist fehlerhaft + Send_FIFO_voll : Bool // Outbound (UH07): Leer-Puffer-Sorter: Send-FIFO zu PC ist voll + Reset_aktiv : Bool // Outbound (UH07): Leer-Puffer-Sorter: Reset ist aktiv + Sync_BG3306 : Struct // Outbound (UH07): Leer-Puffer-Sorter: Synchron-Punkt BG3306 + SyncPkt_DL_Err : Bool // Outbound (UH07): Leer-Puffer-Synchron-Punkt: Sync-Punkt-Datenliste fehlerhaft + Undef_SyncPkt : Bool // Outbound (UH07): Leer-Puffer-Synchron-Punkt: undefinierter Synchronpunkt + BLKMov : Bool // Outbound (UH07): Leer-Puffer-Synchron-Punkt: Fehler bei Block kopieren + Sync_Sensor_aktiv : Bool // Outbound (UH07): Leer-Puffer-Synchron-Punkt: Sync-Sensor dauernd aktiv + TravelFIFO_Err : Bool // Outbound (UH07): Leer-Puffer-Synchron-Punkt: Travel-FIFO fehlerhaft + TravelFIFO_leer : Bool // Outbound (UH07): Leer-Puffer-Synchron-Punkt: keine Daten im Travel-FIFO eingetragen + TravelFIFO_belegt : Bool // Outbound (UH07): Leer-Puffer-Synchron-Punkt: Travel-FIFO bleibt belegt + Hauptstrangliste_Err : Bool // Outbound (UH07): Leer-Puffer-Synchron-Punkt: Hauptstrang-DL fehlerhaft + Hauptstrangliste_voll : Bool // Outbound (UH07): Leer-Puffer-Synchron-Punkt: Hauptstrang-DL ist voll + Inkgeber_Err : Bool // Outbound (UH07): Leer-Puffer-Synchron-Punkt: Inkrementalgeber meldet Störung + Keine_Hauptstrangliste : Bool // Outbound (UH07): Leer-Puffer-Synchron-Punkt: Keine Hauptstrang-DL zum Eintragen angegeben + Keine_TeachPktdaten : Bool // Outbound (UH07): Leer-Puffer-Synchron-Punkt: Teach-Punkt in Datenliste nicht vorhanden ! + TeachPkt_Datenliste_Err : Bool // Outbound (UH07): Leer-Puffer-Synchron-Punkt: Teach-Punkt-Datenliste fehlerhaft + Kein_Parameter : Bool // Outbound (UH07): Leer-Puffer-Synchron-Punkt: Kein Parameter zur Wegerfassung definiert + Err_Parameter : Bool // Outbound (UH07): Leer-Puffer-Synchron-Punkt: Parameter für Zählerauswertung fehlerhaft + Inkrementalgeber : Bool // Outbound (UH07): Leer-Puffer-Synchron-Punkt: Inkrementalgeberwert ohne Änderung + Weiche_MB3320 : Struct // Outbound (UH07): Leer-Puffer-Sorter: Weiche zu Puffer 1 MB3320 + Weichen_DL : Bool // Outbound (UH07): Leer-Puffer-Sorter: Weiche zu Puffer 1: Weichen-Datenliste fehlerhaft + Undef_Weiche : Bool // Outbound (UH07): Leer-Puffer-Sorter: Weiche zu Puffer 1: undefinierte Weiche + BLKMov : Bool // Outbound (UH07): Leer-Puffer-Sorter: Weiche zu Puffer 1: Fehler bei Block kopieren + Haupstrang_DL : Bool // Outbound (UH07): Leer-Puffer-Sorter: Weiche zu Puffer 1: Haupstrang-Datenliste fehlerhaft + Haupstrang_DL_voll : Bool // Outbound (UH07): Leer-Puffer-Sorter: Weiche zu Puffer 1: Haupstrang-Datenliste ist voll + Keine_HSDaten : Bool // Outbound (UH07): Leer-Puffer-Sorter: Weiche zu Puffer 1: Keine Hauptstrang-Daten mehr vorhanden + Rein_FIFO : Bool // Outbound (UH07): Leer-Puffer-Sorter: Weiche zu Puffer 1: Rein-FIFO fehlerhaft + Keine_FIFODaten : Bool // Outbound (UH07): Leer-Puffer-Sorter: Weiche zu Puffer 1: Keine Rein-FIFO-Daten mehr vorhanden + Stau_AusfahrBereich : Bool // Outbound (UH07): Leer-Puffer-Sorter: Weiche zu Puffer 1: Stau im Ausfahrbereich (-> Antrieb gestoppt) + BM_verklemmt_Gerade : Bool // Outbound (UH07): Leer-Puffer-Sorter: Weiche zu Puffer 1: Trolley bei Gerade-Fahrt in Weiche verklemmt (-> Antrieb gestoppt) + BM_verklemmt_Ausfahrt : Bool // Outbound (UH07): Leer-Puffer-Sorter: Weiche zu Puffer 1: Trolley bei Lager-Fahrt in Weiche verklemmt (-> Antrieb gestoppt) + BM_undef_Gerade : Bool // Outbound (UH07): Leer-Puffer-Sorter: Weiche zu Puffer 1: undefinierter Trolley bei Weiterfahrt erkannt + Frei14 : Bool // Outbound (UH07): Leer-Puffer-Sorter: Weiche zu Puffer 1: Frei 14 + Send_FIFO_fehlerhaft : Bool // Outbound (UH07): Leer-Puffer-Sorter: Weiche zu Puffer 1: Send-FIFO zum PC ist fehlerhaft + Send_FIFO_voll : Bool // Outbound (UH07): Leer-Puffer-Sorter: Weiche zu Puffer 1: Send-FIFO zu PC ist voll + Reset_aktiv : Bool // Outbound (UH07): Leer-Puffer-Sorter: Weiche zu Puffer 1: Reset ist aktiv + Weiche_MB3317 : Struct // Outbound (UH07): Leer-Puffer-Sorter: Weiche zu Puffer 2 MB3317 + Weichen_DL : Bool // Outbound (UH07): Leer-Puffer-Sorter: Weiche zu Puffer 2: Weichen-Datenliste fehlerhaft + Undef_Weiche : Bool // Outbound (UH07): Leer-Puffer-Sorter: Weiche zu Puffer 2: undefinierte Weiche + BLKMov : Bool // Outbound (UH07): Leer-Puffer-Sorter: Weiche zu Puffer 2: Fehler bei Block kopieren + Haupstrang_DL : Bool // Outbound (UH07): Leer-Puffer-Sorter: Weiche zu Puffer 2: Haupstrang-Datenliste fehlerhaft + Haupstrang_DL_voll : Bool // Outbound (UH07): Leer-Puffer-Sorter: Weiche zu Puffer 2: Haupstrang-Datenliste ist voll + Keine_HSDaten : Bool // Outbound (UH07): Leer-Puffer-Sorter: Weiche zu Puffer 2: Keine Hauptstrang-Daten mehr vorhanden + Rein_FIFO : Bool // Outbound (UH07): Leer-Puffer-Sorter: Weiche zu Puffer 2: Rein-FIFO fehlerhaft + Keine_FIFODaten : Bool // Outbound (UH07): Leer-Puffer-Sorter: Weiche zu Puffer 2: Keine Rein-FIFO-Daten mehr vorhanden + Stau_AusfahrBereich : Bool // Outbound (UH07): Leer-Puffer-Sorter: Weiche zu Puffer 2: Stau im Ausfahrbereich (-> Antrieb gestoppt) + BM_verklemmt_Gerade : Bool // Outbound (UH07): Leer-Puffer-Sorter: Weiche zu Puffer 2: Trolley bei Gerade-Fahrt in Weiche verklemmt (-> Antrieb gestoppt) + BM_verklemmt_Ausfahrt : Bool // Outbound (UH07): Leer-Puffer-Sorter: Weiche zu Puffer 2: Trolley bei Lager-Fahrt in Weiche verklemmt (-> Antrieb gestoppt) + BM_undef_Gerade : Bool // Outbound (UH07): Leer-Puffer-Sorter: Weiche zu Puffer 2: undefinierter Trolley bei Weiterfahrt erkannt + Frei14 : Bool // Outbound (UH07): Leer-Puffer-Sorter: Weiche zu Puffer 2: Frei 14 + Send_FIFO_fehlerhaft : Bool // Outbound (UH07): Leer-Puffer-Sorter: Weiche zu Puffer 2: Send-FIFO zum PC ist fehlerhaft + Send_FIFO_voll : Bool // Outbound (UH07): Leer-Puffer-Sorter: Weiche zu Puffer 2: Send-FIFO zu PC ist voll + Reset_aktiv : Bool // Outbound (UH07): Leer-Puffer-Sorter: Weiche zu Puffer 2: Reset ist aktiv + Weiche_MB3316 : Struct // Outbound (UH07): Leer-Puffer-Sorter: Weiche zu Puffer 3 MB3316 + Weichen_DL : Bool // Outbound (UH07): Leer-Puffer-Sorter: Weiche zu Puffer 3: Weichen-Datenliste fehlerhaft + Undef_Weiche : Bool // Outbound (UH07): Leer-Puffer-Sorter: Weiche zu Puffer 3: undefinierte Weiche + BLKMov : Bool // Outbound (UH07): Leer-Puffer-Sorter: Weiche zu Puffer 3: Fehler bei Block kopieren + Haupstrang_DL : Bool // Outbound (UH07): Leer-Puffer-Sorter: Weiche zu Puffer 3: Haupstrang-Datenliste fehlerhaft + Haupstrang_DL_voll : Bool // Outbound (UH07): Leer-Puffer-Sorter: Weiche zu Puffer 3: Haupstrang-Datenliste ist voll + Keine_HSDaten : Bool // Outbound (UH07): Leer-Puffer-Sorter: Weiche zu Puffer 3: Keine Hauptstrang-Daten mehr vorhanden + Rein_FIFO : Bool // Outbound (UH07): Leer-Puffer-Sorter: Weiche zu Puffer 3: Rein-FIFO fehlerhaft + Keine_FIFODaten : Bool // Outbound (UH07): Leer-Puffer-Sorter: Weiche zu Puffer 3: Keine Rein-FIFO-Daten mehr vorhanden + Stau_AusfahrBereich : Bool // Outbound (UH07): Leer-Puffer-Sorter: Weiche zu Puffer 3: Stau im Ausfahrbereich (-> Antrieb gestoppt) + BM_verklemmt_Gerade : Bool // Outbound (UH07): Leer-Puffer-Sorter: Weiche zu Puffer 3: Trolley bei Gerade-Fahrt in Weiche verklemmt (-> Antrieb gestoppt) + BM_verklemmt_Ausfahrt : Bool // Outbound (UH07): Leer-Puffer-Sorter: Weiche zu Puffer 3: Trolley bei Lager-Fahrt in Weiche verklemmt (-> Antrieb gestoppt) + BM_undef_Gerade : Bool // Outbound (UH07): Leer-Puffer-Sorter: Weiche zu Puffer 3: undefinierter Trolley bei Weiterfahrt erkannt + Frei14 : Bool // Outbound (UH07): Leer-Puffer-Sorter: Weiche zu Puffer 3: Frei 14 + Send_FIFO_fehlerhaft : Bool // Outbound (UH07): Leer-Puffer-Sorter: Weiche zu Puffer 3: Send-FIFO zum PC ist fehlerhaft + Send_FIFO_voll : Bool // Outbound (UH07): Leer-Puffer-Sorter: Weiche zu Puffer 3: Send-FIFO zu PC ist voll + Reset_aktiv : Bool // Outbound (UH07): Leer-Puffer-Sorter: Weiche zu Puffer 3: Reset ist aktiv + Weiche_MB3315 : Struct // Outbound (UH07): Leer-Puffer-Sorter: Weiche zu Puffer 4 MB3315 + Weichen_DL : Bool // Outbound (UH07): Leer-Puffer-Sorter: Weiche zu Puffer 4: Weichen-Datenliste fehlerhaft + Undef_Weiche : Bool // Outbound (UH07): Leer-Puffer-Sorter: Weiche zu Puffer 4: undefinierte Weiche + BLKMov : Bool // Outbound (UH07): Leer-Puffer-Sorter: Weiche zu Puffer 4: Fehler bei Block kopieren + Haupstrang_DL : Bool // Outbound (UH07): Leer-Puffer-Sorter: Weiche zu Puffer 4: Haupstrang-Datenliste fehlerhaft + Haupstrang_DL_voll : Bool // Outbound (UH07): Leer-Puffer-Sorter: Weiche zu Puffer 4: Haupstrang-Datenliste ist voll + Keine_HSDaten : Bool // Outbound (UH07): Leer-Puffer-Sorter: Weiche zu Puffer 4: Keine Hauptstrang-Daten mehr vorhanden + Rein_FIFO : Bool // Outbound (UH07): Leer-Puffer-Sorter: Weiche zu Puffer 4: Rein-FIFO fehlerhaft + Keine_FIFODaten : Bool // Outbound (UH07): Leer-Puffer-Sorter: Weiche zu Puffer 4: Keine Rein-FIFO-Daten mehr vorhanden + Stau_AusfahrBereich : Bool // Outbound (UH07): Leer-Puffer-Sorter: Weiche zu Puffer 4: Stau im Ausfahrbereich (-> Antrieb gestoppt) + BM_verklemmt_Gerade : Bool // Outbound (UH07): Leer-Puffer-Sorter: Weiche zu Puffer 4: Trolley bei Gerade-Fahrt in Weiche verklemmt (-> Antrieb gestoppt) + BM_verklemmt_Ausfahrt : Bool // Outbound (UH07): Leer-Puffer-Sorter: Weiche zu Puffer 4: Trolley bei Lager-Fahrt in Weiche verklemmt (-> Antrieb gestoppt) + BM_undef_Gerade : Bool // Outbound (UH07): Leer-Puffer-Sorter: Weiche zu Puffer 4: undefinierter Trolley bei Weiterfahrt erkannt + Frei14 : Bool // Outbound (UH07): Leer-Puffer-Sorter: Weiche zu Puffer 4: Frei 14 + Send_FIFO_fehlerhaft : Bool // Outbound (UH07): Leer-Puffer-Sorter: Weiche zu Puffer 4: Send-FIFO zum PC ist fehlerhaft + Send_FIFO_voll : Bool // Outbound (UH07): Leer-Puffer-Sorter: Weiche zu Puffer 4: Send-FIFO zu PC ist voll + Reset_aktiv : Bool // Outbound (UH07): Leer-Puffer-Sorter: Weiche zu Puffer 4: Reset ist aktiv + Weiche_MB3314 : Struct // Outbound (UH07): Leer-Puffer-Sorter: Weiche zu Puffer 5 MB3314 + Weichen_DL : Bool // Outbound (UH07): Leer-Puffer-Sorter: Weiche zu Puffer 5: Weichen-Datenliste fehlerhaft + Undef_Weiche : Bool // Outbound (UH07): Leer-Puffer-Sorter: Weiche zu Puffer 5: undefinierte Weiche + BLKMov : Bool // Outbound (UH07): Leer-Puffer-Sorter: Weiche zu Puffer 5: Fehler bei Block kopieren + Haupstrang_DL : Bool // Outbound (UH07): Leer-Puffer-Sorter: Weiche zu Puffer 5: Haupstrang-Datenliste fehlerhaft + Haupstrang_DL_voll : Bool // Outbound (UH07): Leer-Puffer-Sorter: Weiche zu Puffer 5: Haupstrang-Datenliste ist voll + Keine_HSDaten : Bool // Outbound (UH07): Leer-Puffer-Sorter: Weiche zu Puffer 5: Keine Hauptstrang-Daten mehr vorhanden + Rein_FIFO : Bool // Outbound (UH07): Leer-Puffer-Sorter: Weiche zu Puffer 5: Rein-FIFO fehlerhaft + Keine_FIFODaten : Bool // Outbound (UH07): Leer-Puffer-Sorter: Weiche zu Puffer 5: Keine Rein-FIFO-Daten mehr vorhanden + Stau_AusfahrBereich : Bool // Outbound (UH07): Leer-Puffer-Sorter: Weiche zu Puffer 5: Stau im Ausfahrbereich (-> Antrieb gestoppt) + BM_verklemmt_Gerade : Bool // Outbound (UH07): Leer-Puffer-Sorter: Weiche zu Puffer 5: Trolley bei Gerade-Fahrt in Weiche verklemmt (-> Antrieb gestoppt) + BM_verklemmt_Ausfahrt : Bool // Outbound (UH07): Leer-Puffer-Sorter: Weiche zu Puffer 5: Trolley bei Lager-Fahrt in Weiche verklemmt (-> Antrieb gestoppt) + BM_undef_Gerade : Bool // Outbound (UH07): Leer-Puffer-Sorter: Weiche zu Puffer 5: undefinierter Trolley bei Weiterfahrt erkannt + Frei14 : Bool // Outbound (UH07): Leer-Puffer-Sorter: Weiche zu Puffer 5: Frei 14 + Send_FIFO_fehlerhaft : Bool // Outbound (UH07): Leer-Puffer-Sorter: Weiche zu Puffer 5: Send-FIFO zum PC ist fehlerhaft + Send_FIFO_voll : Bool // Outbound (UH07): Leer-Puffer-Sorter: Weiche zu Puffer 5: Send-FIFO zu PC ist voll + Reset_aktiv : Bool // Outbound (UH07): Leer-Puffer-Sorter: Weiche zu Puffer 5: Reset ist aktiv + Weiche_MB3313 : Struct // Outbound (UH07): Leer-Puffer-Sorter: Weiche zu Puffer 6 MB3313 + Weichen_DL : Bool // Outbound (UH07): Leer-Puffer-Sorter: Weiche zu Puffer 6: Weichen-Datenliste fehlerhaft + Undef_Weiche : Bool // Outbound (UH07): Leer-Puffer-Sorter: Weiche zu Puffer 6: undefinierte Weiche + BLKMov : Bool // Outbound (UH07): Leer-Puffer-Sorter: Weiche zu Puffer 6: Fehler bei Block kopieren + Haupstrang_DL : Bool // Outbound (UH07): Leer-Puffer-Sorter: Weiche zu Puffer 6: Haupstrang-Datenliste fehlerhaft + Haupstrang_DL_voll : Bool // Outbound (UH07): Leer-Puffer-Sorter: Weiche zu Puffer 6: Haupstrang-Datenliste ist voll + Keine_HSDaten : Bool // Outbound (UH07): Leer-Puffer-Sorter: Weiche zu Puffer 6: Keine Hauptstrang-Daten mehr vorhanden + Rein_FIFO : Bool // Outbound (UH07): Leer-Puffer-Sorter: Weiche zu Puffer 6: Rein-FIFO fehlerhaft + Keine_FIFODaten : Bool // Outbound (UH07): Leer-Puffer-Sorter: Weiche zu Puffer 6: Keine Rein-FIFO-Daten mehr vorhanden + Stau_AusfahrBereich : Bool // Outbound (UH07): Leer-Puffer-Sorter: Weiche zu Puffer 6: Stau im Ausfahrbereich (-> Antrieb gestoppt) + BM_verklemmt_Gerade : Bool // Outbound (UH07): Leer-Puffer-Sorter: Weiche zu Puffer 6: Trolley bei Gerade-Fahrt in Weiche verklemmt (-> Antrieb gestoppt) + BM_verklemmt_Ausfahrt : Bool // Outbound (UH07): Leer-Puffer-Sorter: Weiche zu Puffer 6: Trolley bei Lager-Fahrt in Weiche verklemmt (-> Antrieb gestoppt) + BM_undef_Gerade : Bool // Outbound (UH07): Leer-Puffer-Sorter: Weiche zu Puffer 6: undefinierter Trolley bei Weiterfahrt erkannt + Frei14 : Bool // Outbound (UH07): Leer-Puffer-Sorter: Weiche zu Puffer 6: Frei 14 + Send_FIFO_fehlerhaft : Bool // Outbound (UH07): Leer-Puffer-Sorter: Weiche zu Puffer 6: Send-FIFO zum PC ist fehlerhaft + Send_FIFO_voll : Bool // Outbound (UH07): Leer-Puffer-Sorter: Weiche zu Puffer 6: Send-FIFO zu PC ist voll + Reset_aktiv : Bool // Outbound (UH07): Leer-Puffer-Sorter: Weiche zu Puffer 6: Reset ist aktiv + Weiche_MB3312 : Struct // Outbound (UH07): Leer-Puffer-Sorter: Weiche zu Puffer 7 MB3312 + Weichen_DL : Bool // Outbound (UH07): Leer-Puffer-Sorter: Weiche zu Puffer 7: Weichen-Datenliste fehlerhaft + Undef_Weiche : Bool // Outbound (UH07): Leer-Puffer-Sorter: Weiche zu Puffer 7: undefinierte Weiche + BLKMov : Bool // Outbound (UH07): Leer-Puffer-Sorter: Weiche zu Puffer 7: Fehler bei Block kopieren + Haupstrang_DL : Bool // Outbound (UH07): Leer-Puffer-Sorter: Weiche zu Puffer 7: Haupstrang-Datenliste fehlerhaft + Haupstrang_DL_voll : Bool // Outbound (UH07): Leer-Puffer-Sorter: Weiche zu Puffer 7: Haupstrang-Datenliste ist voll + Keine_HSDaten : Bool // Outbound (UH07): Leer-Puffer-Sorter: Weiche zu Puffer 7: Keine Hauptstrang-Daten mehr vorhanden + Rein_FIFO : Bool // Outbound (UH07): Leer-Puffer-Sorter: Weiche zu Puffer 7: Rein-FIFO fehlerhaft + Keine_FIFODaten : Bool // Outbound (UH07): Leer-Puffer-Sorter: Weiche zu Puffer 7: Keine Rein-FIFO-Daten mehr vorhanden + Stau_AusfahrBereich : Bool // Outbound (UH07): Leer-Puffer-Sorter: Weiche zu Puffer 7: Stau im Ausfahrbereich (-> Antrieb gestoppt) + BM_verklemmt_Gerade : Bool // Outbound (UH07): Leer-Puffer-Sorter: Weiche zu Puffer 7: Trolley bei Gerade-Fahrt in Weiche verklemmt (-> Antrieb gestoppt) + BM_verklemmt_Ausfahrt : Bool // Outbound (UH07): Leer-Puffer-Sorter: Weiche zu Puffer 7: Trolley bei Lager-Fahrt in Weiche verklemmt (-> Antrieb gestoppt) + BM_undef_Gerade : Bool // Outbound (UH07): Leer-Puffer-Sorter: Weiche zu Puffer 7: undefinierter Trolley bei Weiterfahrt erkannt + Frei14 : Bool // Outbound (UH07): Leer-Puffer-Sorter: Weiche zu Puffer 7: Frei 14 + Send_FIFO_fehlerhaft : Bool // Outbound (UH07): Leer-Puffer-Sorter: Weiche zu Puffer 7: Send-FIFO zum PC ist fehlerhaft + Send_FIFO_voll : Bool // Outbound (UH07): Leer-Puffer-Sorter: Weiche zu Puffer 7: Send-FIFO zu PC ist voll + Reset_aktiv : Bool // Outbound (UH07): Leer-Puffer-Sorter: Weiche zu Puffer 7: Reset ist aktiv + Weiche_MB3311 : Struct // Outbound (UH07): Leer-Puffer-Sorter: Weiche zu Puffer 8 MB3311 + Weichen_DL : Bool // Outbound (UH07): Leer-Puffer-Sorter: Weiche zu Puffer 8: Weichen-Datenliste fehlerhaft + Undef_Weiche : Bool // Outbound (UH07): Leer-Puffer-Sorter: Weiche zu Puffer 8: undefinierte Weiche + BLKMov : Bool // Outbound (UH07): Leer-Puffer-Sorter: Weiche zu Puffer 8: Fehler bei Block kopieren + Haupstrang_DL : Bool // Outbound (UH07): Leer-Puffer-Sorter: Weiche zu Puffer 8: Haupstrang-Datenliste fehlerhaft + Haupstrang_DL_voll : Bool // Outbound (UH07): Leer-Puffer-Sorter: Weiche zu Puffer 8: Haupstrang-Datenliste ist voll + Keine_HSDaten : Bool // Outbound (UH07): Leer-Puffer-Sorter: Weiche zu Puffer 8: Keine Hauptstrang-Daten mehr vorhanden + Rein_FIFO : Bool // Outbound (UH07): Leer-Puffer-Sorter: Weiche zu Puffer 8: Rein-FIFO fehlerhaft + Keine_FIFODaten : Bool // Outbound (UH07): Leer-Puffer-Sorter: Weiche zu Puffer 8: Keine Rein-FIFO-Daten mehr vorhanden + Stau_AusfahrBereich : Bool // Outbound (UH07): Leer-Puffer-Sorter: Weiche zu Puffer 8: Stau im Ausfahrbereich (-> Antrieb gestoppt) + BM_verklemmt_Gerade : Bool // Outbound (UH07): Leer-Puffer-Sorter: Weiche zu Puffer 8: Trolley bei Gerade-Fahrt in Weiche verklemmt (-> Antrieb gestoppt) + BM_verklemmt_Ausfahrt : Bool // Outbound (UH07): Leer-Puffer-Sorter: Weiche zu Puffer 8: Trolley bei Lager-Fahrt in Weiche verklemmt (-> Antrieb gestoppt) + BM_undef_Gerade : Bool // Outbound (UH07): Leer-Puffer-Sorter: Weiche zu Puffer 8: undefinierter Trolley bei Weiterfahrt erkannt + Frei14 : Bool // Outbound (UH07): Leer-Puffer-Sorter: Weiche zu Puffer 8: Frei 14 + Send_FIFO_fehlerhaft : Bool // Outbound (UH07): Leer-Puffer-Sorter: Weiche zu Puffer 8: Send-FIFO zum PC ist fehlerhaft + Send_FIFO_voll : Bool // Outbound (UH07): Leer-Puffer-Sorter: Weiche zu Puffer 8: Send-FIFO zu PC ist voll + Reset_aktiv : Bool // Outbound (UH07): Leer-Puffer-Sorter: Weiche zu Puffer 8: Reset ist aktiv + Weiche_MB3310 : Struct // Outbound (UH07): Leer-Puffer-Sorter: Weiche zu Puffer 9 MB3310 + Weichen_DL : Bool // Outbound (UH07): Leer-Puffer-Sorter: Weiche zu Puffer 9: Weichen-Datenliste fehlerhaft + Undef_Weiche : Bool // Outbound (UH07): Leer-Puffer-Sorter: Weiche zu Puffer 9: undefinierte Weiche + BLKMov : Bool // Outbound (UH07): Leer-Puffer-Sorter: Weiche zu Puffer 9: Fehler bei Block kopieren + Haupstrang_DL : Bool // Outbound (UH07): Leer-Puffer-Sorter: Weiche zu Puffer 9: Haupstrang-Datenliste fehlerhaft + Haupstrang_DL_voll : Bool // Outbound (UH07): Leer-Puffer-Sorter: Weiche zu Puffer 9: Haupstrang-Datenliste ist voll + Keine_HSDaten : Bool // Outbound (UH07): Leer-Puffer-Sorter: Weiche zu Puffer 9: Keine Hauptstrang-Daten mehr vorhanden + Rein_FIFO : Bool // Outbound (UH07): Leer-Puffer-Sorter: Weiche zu Puffer 9: Rein-FIFO fehlerhaft + Keine_FIFODaten : Bool // Outbound (UH07): Leer-Puffer-Sorter: Weiche zu Puffer 9: Keine Rein-FIFO-Daten mehr vorhanden + Stau_AusfahrBereich : Bool // Outbound (UH07): Leer-Puffer-Sorter: Weiche zu Puffer 9: Stau im Ausfahrbereich (-> Antrieb gestoppt) + BM_verklemmt_Gerade : Bool // Outbound (UH07): Leer-Puffer-Sorter: Weiche zu Puffer 9: Trolley bei Gerade-Fahrt in Weiche verklemmt (-> Antrieb gestoppt) + BM_verklemmt_Ausfahrt : Bool // Outbound (UH07): Leer-Puffer-Sorter: Weiche zu Puffer 9: Trolley bei Lager-Fahrt in Weiche verklemmt (-> Antrieb gestoppt) + BM_undef_Gerade : Bool // Outbound (UH07): Leer-Puffer-Sorter: Weiche zu Puffer 9: undefinierter Trolley bei Weiterfahrt erkannt + Frei14 : Bool // Outbound (UH07): Leer-Puffer-Sorter: Weiche zu Puffer 9: Frei 14 + Send_FIFO_fehlerhaft : Bool // Outbound (UH07): Leer-Puffer-Sorter: Weiche zu Puffer 9: Send-FIFO zum PC ist fehlerhaft + Send_FIFO_voll : Bool // Outbound (UH07): Leer-Puffer-Sorter: Weiche zu Puffer 9: Send-FIFO zu PC ist voll + Reset_aktiv : Bool // Outbound (UH07): Leer-Puffer-Sorter: Weiche zu Puffer 9: Reset ist aktiv + Weiche_LeerPuffer10 : Struct // Outbound (UH07): Leer-Puffer-Sorter: Weiche zu Puffer 10 (Pseudo) + Weichen_DL : Bool // Outbound (UH07): Leer-Puffer-Sorter: Weiche zu Puffer 10: Weichen-Datenliste fehlerhaft + Undef_Weiche : Bool // Outbound (UH07): Leer-Puffer-Sorter: Weiche zu Puffer 10: undefinierte Weiche + BLKMov : Bool // Outbound (UH07): Leer-Puffer-Sorter: Weiche zu Puffer 10: Fehler bei Block kopieren + Haupstrang_DL : Bool // Outbound (UH07): Leer-Puffer-Sorter: Weiche zu Puffer 10: Haupstrang-Datenliste fehlerhaft + Haupstrang_DL_voll : Bool // Outbound (UH07): Leer-Puffer-Sorter: Weiche zu Puffer 10: Haupstrang-Datenliste ist voll + Keine_HSDaten : Bool // Outbound (UH07): Leer-Puffer-Sorter: Weiche zu Puffer 10: Keine Hauptstrang-Daten mehr vorhanden + Rein_FIFO : Bool // Outbound (UH07): Leer-Puffer-Sorter: Weiche zu Puffer 10: Rein-FIFO fehlerhaft + Keine_FIFODaten : Bool // Outbound (UH07): Leer-Puffer-Sorter: Weiche zu Puffer 10: Keine Rein-FIFO-Daten mehr vorhanden + Stau_AusfahrBereich : Bool // Outbound (UH07): Leer-Puffer-Sorter: Weiche zu Puffer 10: Stau im Ausfahrbereich (-> Antrieb gestoppt) + BM_verklemmt_Gerade : Bool // Outbound (UH07): Leer-Puffer-Sorter: Weiche zu Puffer 10: Trolley bei Gerade-Fahrt in Weiche verklemmt (-> Antrieb gestoppt) + BM_verklemmt_Ausfahrt : Bool // Outbound (UH07): Leer-Puffer-Sorter: Weiche zu Puffer 10: Trolley bei Lager-Fahrt in Weiche verklemmt (-> Antrieb gestoppt) + BM_undef_Gerade : Bool // Outbound (UH07): Leer-Puffer-Sorter: Weiche zu Puffer 10: undefinierter Trolley bei Weiterfahrt erkannt + Frei14 : Bool // Outbound (UH07): Leer-Puffer-Sorter: Weiche zu Puffer 10: Frei 14 + Send_FIFO_fehlerhaft : Bool // Outbound (UH07): Leer-Puffer-Sorter: Weiche zu Puffer 10: Send-FIFO zum PC ist fehlerhaft + Send_FIFO_voll : Bool // Outbound (UH07): Leer-Puffer-Sorter: Weiche zu Puffer 10: Send-FIFO zu PC ist voll + Reset_aktiv : Bool // Outbound (UH07): Leer-Puffer-Sorter: Weiche zu Puffer 10: Reset ist aktiv + Impulsgeber_3374 : Struct // Outbound (UH07): Leer-Puffer-Sorter: Impulsgeber Lager-Einfahrt MA0064/BG3374 + Kein_Signal : Bool // Outbound (UH07): Leer-Puffer-Sorter: Impulsgeber Lager-Einfahrt MA0064: Kein Signal + Signal_zu_lang : Bool // Outbound (UH07): Leer-Puffer-Sorter: Impulsgeber Lager-Einfahrt MA0064: Signal zu lang + LeerPuffer01 : Struct // Outbound (UH07): Leer-Puffer 1 MB3341 + Lager_DL : Bool // Outbound (UH07): Leer-Puffer 1: Lager-Datenliste fehlerhaft + Undef_Lager : Bool // Outbound (UH07): Leer-Puffer 1: undefinierter Lager + Err_Trolley_nicht_in_Schleuse : Bool // Outbound (UH07): Leer-Puffer 1: Trolley fährt nicht in Schleuse + Err_Uebzeit : Bool // Outbound (UH07): Leer-Puffer 1: Überwachungzeit ist abgelaufen + Err_Schritt : Bool // Outbound (UH07): Leer-Puffer 1: Schritt-Nummer ist nicht definiert + Err_Stau_Einfahrt : Bool // Outbound (UH07): Leer-Puffer 1: Stau am Lager-Eingang + Err_BLKMov : Bool // Outbound (UH07): Leer-Puffer 1: Error bei Block kopieren + Err_Trolley_raus : Bool // Outbound (UH07): Leer-Puffer 1: Trolley fährt nicht aus Schleuse + Err_Lager_nicht_leer : Bool // Outbound (UH07): Leer-Puffer 1: Trolley in Schleuse, obwohl Lager leer! Initialisieren! + Err_TrolleyID_doppelt : Bool // Outbound (UH07): Leer-Puffer 1: Trolley_ID doppelt vorhanden! (Einfahrt) + Err_TrolleyID_unbekannt : Bool // Outbound (UH07): Leer-Puffer 1: Trolley_ID unbekannt! (Einfahrt) + Err_TrolleyID_Schleuse_unbekannt : Bool // Outbound (UH07): Leer-Puffer 1: Trolley_ID unbekannt! (Schleuse) + Err_TrolleyID_nicht_im_Lager : Bool // Outbound (UH07): Leer-Puffer 1: TrolleyID zum Ausfahren nicht im Lager vorhanden + Err_Raus_Sensor : Bool // Outbound (UH07): Leer-Puffer 1: Raus-Sensor hat Dauersignal oder wird nicht erreicht + Err_Lagerdaten_korrupt : Bool // Outbound (UH07): Leer-Puffer 1: Lagerdaten-Verwaltung unklar -> Reset nötig! + Reset_aktiv : Bool // Outbound (UH07): Leer-Puffer 1: Reset ist aktiv + LeerPuffer02 : Struct // Outbound (UH07): Leer-Puffer 2 MB3340 + Lager_DL : Bool // Outbound (UH07): Leer-Puffer 2: Lager-Datenliste fehlerhaft + Undef_Lager : Bool // Outbound (UH07): Leer-Puffer 2: undefinierter Lager + Err_Trolley_nicht_in_Schleuse : Bool // Outbound (UH07): Leer-Puffer 2: Trolley fährt nicht in Schleuse + Err_Uebzeit : Bool // Outbound (UH07): Leer-Puffer 2: Überwachungzeit ist abgelaufen + Err_Schritt : Bool // Outbound (UH07): Leer-Puffer 2: Schritt-Nummer ist nicht definiert + Err_Stau_Einfahrt : Bool // Outbound (UH07): Leer-Puffer 2: Stau am Lager-Eingang + Err_BLKMov : Bool // Outbound (UH07): Leer-Puffer 2: Error bei Block kopieren + Err_Trolley_raus : Bool // Outbound (UH07): Leer-Puffer 2: Trolley fährt nicht aus Schleuse + Err_Lager_nicht_leer : Bool // Outbound (UH07): Leer-Puffer 2: Trolley in Schleuse, obwohl Lager leer! Initialisieren! + Err_TrolleyID_doppelt : Bool // Outbound (UH07): Leer-Puffer 2: Trolley_ID doppelt vorhanden! (Einfahrt) + Err_TrolleyID_unbekannt : Bool // Outbound (UH07): Leer-Puffer 2: Trolley_ID unbekannt! (Einfahrt) + Err_TrolleyID_Schleuse_unbekannt : Bool // Outbound (UH07): Leer-Puffer 2: Trolley_ID unbekannt! (Schleuse) + Err_TrolleyID_nicht_im_Lager : Bool // Outbound (UH07): Leer-Puffer 2: TrolleyID zum Ausfahren nicht im Lager vorhanden + Err_Raus_Sensor : Bool // Outbound (UH07): Leer-Puffer 2: Raus-Sensor hat Dauersignal oder wird nicht erreicht + Err_Lagerdaten_korrupt : Bool // Outbound (UH07): Leer-Puffer 2: Lagerdaten-Verwaltung unklar -> Reset nötig! + Reset_aktiv : Bool // Outbound (UH07): Leer-Puffer 2: Reset ist aktiv + LeerPuffer03 : Struct // Outbound (UH07): Leer-Puffer 3 MB3337 + Lager_DL : Bool // Outbound (UH07): Leer-Puffer 3: Lager-Datenliste fehlerhaft + Undef_Lager : Bool // Outbound (UH07): Leer-Puffer 3: undefinierter Lager + Err_Trolley_nicht_in_Schleuse : Bool // Outbound (UH07): Leer-Puffer 3: Trolley fährt nicht in Schleuse + Err_Uebzeit : Bool // Outbound (UH07): Leer-Puffer 3: Überwachungzeit ist abgelaufen + Err_Schritt : Bool // Outbound (UH07): Leer-Puffer 3: Schritt-Nummer ist nicht definiert + Err_Stau_Einfahrt : Bool // Outbound (UH07): Leer-Puffer 3: Stau am Lager-Eingang + Err_BLKMov : Bool // Outbound (UH07): Leer-Puffer 3: Error bei Block kopieren + Err_Trolley_raus : Bool // Outbound (UH07): Leer-Puffer 3: Trolley fährt nicht aus Schleuse + Err_Lager_nicht_leer : Bool // Outbound (UH07): Leer-Puffer 3: Trolley in Schleuse, obwohl Lager leer! Initialisieren! + Err_TrolleyID_doppelt : Bool // Outbound (UH07): Leer-Puffer 3: Trolley_ID doppelt vorhanden! (Einfahrt) + Err_TrolleyID_unbekannt : Bool // Outbound (UH07): Leer-Puffer 3: Trolley_ID unbekannt! (Einfahrt) + Err_TrolleyID_Schleuse_unbekannt : Bool // Outbound (UH07): Leer-Puffer 3: Trolley_ID unbekannt! (Schleuse) + Err_TrolleyID_nicht_im_Lager : Bool // Outbound (UH07): Leer-Puffer 3: TrolleyID zum Ausfahren nicht im Lager vorhanden + Err_Raus_Sensor : Bool // Outbound (UH07): Leer-Puffer 3: Raus-Sensor hat Dauersignal oder wird nicht erreicht + Err_Lagerdaten_korrupt : Bool // Outbound (UH07): Leer-Puffer 3: Lagerdaten-Verwaltung unklar -> Reset nötig! + Reset_aktiv : Bool // Outbound (UH07): Leer-Puffer 3: Reset ist aktiv + LeerPuffer04 : Struct // Outbound (UH07): Leer-Puffer 4 MB3336 + Lager_DL : Bool // Outbound (UH07): Leer-Puffer 4: Lager-Datenliste fehlerhaft + Undef_Lager : Bool // Outbound (UH07): Leer-Puffer 4: undefinierter Lager + Err_Trolley_nicht_in_Schleuse : Bool // Outbound (UH07): Leer-Puffer 4: Trolley fährt nicht in Schleuse + Err_Uebzeit : Bool // Outbound (UH07): Leer-Puffer 4: Überwachungzeit ist abgelaufen + Err_Schritt : Bool // Outbound (UH07): Leer-Puffer 4: Schritt-Nummer ist nicht definiert + Err_Stau_Einfahrt : Bool // Outbound (UH07): Leer-Puffer 4: Stau am Lager-Eingang + Err_BLKMov : Bool // Outbound (UH07): Leer-Puffer 4: Error bei Block kopieren + Err_Trolley_raus : Bool // Outbound (UH07): Leer-Puffer 4: Trolley fährt nicht aus Schleuse + Err_Lager_nicht_leer : Bool // Outbound (UH07): Leer-Puffer 4: Trolley in Schleuse, obwohl Lager leer! Initialisieren! + Err_TrolleyID_doppelt : Bool // Outbound (UH07): Leer-Puffer 4: Trolley_ID doppelt vorhanden! (Einfahrt) + Err_TrolleyID_unbekannt : Bool // Outbound (UH07): Leer-Puffer 4: Trolley_ID unbekannt! (Einfahrt) + Err_TrolleyID_Schleuse_unbekannt : Bool // Outbound (UH07): Leer-Puffer 4: Trolley_ID unbekannt! (Schleuse) + Err_TrolleyID_nicht_im_Lager : Bool // Outbound (UH07): Leer-Puffer 4: TrolleyID zum Ausfahren nicht im Lager vorhanden + Err_Raus_Sensor : Bool // Outbound (UH07): Leer-Puffer 4: Raus-Sensor hat Dauersignal oder wird nicht erreicht + Err_Lagerdaten_korrupt : Bool // Outbound (UH07): Leer-Puffer 4: Lagerdaten-Verwaltung unklar -> Reset nötig! + Reset_aktiv : Bool // Outbound (UH07): Leer-Puffer 4: Reset ist aktiv + LeerPuffer05 : Struct // Outbound (UH07): Leer-Puffer 5 MB3335 + Lager_DL : Bool // Outbound (UH07): Leer-Puffer 5: Lager-Datenliste fehlerhaft + Undef_Lager : Bool // Outbound (UH07): Leer-Puffer 5: undefinierter Lager + Err_Trolley_nicht_in_Schleuse : Bool // Outbound (UH07): Leer-Puffer 5: Trolley fährt nicht in Schleuse + Err_Uebzeit : Bool // Outbound (UH07): Leer-Puffer 5: Überwachungzeit ist abgelaufen + Err_Schritt : Bool // Outbound (UH07): Leer-Puffer 5: Schritt-Nummer ist nicht definiert + Err_Stau_Einfahrt : Bool // Outbound (UH07): Leer-Puffer 5: Stau am Lager-Eingang + Err_BLKMov : Bool // Outbound (UH07): Leer-Puffer 5: Error bei Block kopieren + Err_Trolley_raus : Bool // Outbound (UH07): Leer-Puffer 5: Trolley fährt nicht aus Schleuse + Err_Lager_nicht_leer : Bool // Outbound (UH07): Leer-Puffer 5: Trolley in Schleuse, obwohl Lager leer! Initialisieren! + Err_TrolleyID_doppelt : Bool // Outbound (UH07): Leer-Puffer 5: Trolley_ID doppelt vorhanden! (Einfahrt) + Err_TrolleyID_unbekannt : Bool // Outbound (UH07): Leer-Puffer 5: Trolley_ID unbekannt! (Einfahrt) + Err_TrolleyID_Schleuse_unbekannt : Bool // Outbound (UH07): Leer-Puffer 5: Trolley_ID unbekannt! (Schleuse) + Err_TrolleyID_nicht_im_Lager : Bool // Outbound (UH07): Leer-Puffer 5: TrolleyID zum Ausfahren nicht im Lager vorhanden + Err_Raus_Sensor : Bool // Outbound (UH07): Leer-Puffer 5: Raus-Sensor hat Dauersignal oder wird nicht erreicht + Err_Lagerdaten_korrupt : Bool // Outbound (UH07): Leer-Puffer 5: Lagerdaten-Verwaltung unklar -> Reset nötig! + Reset_aktiv : Bool // Outbound (UH07): Leer-Puffer 5: Reset ist aktiv + LeerPuffer06 : Struct // Outbound (UH07): Leer-Puffer 6 MB3334 + Lager_DL : Bool // Outbound (UH07): Leer-Puffer 6: Lager-Datenliste fehlerhaft + Undef_Lager : Bool // Outbound (UH07): Leer-Puffer 6: undefinierter Lager + Err_Trolley_nicht_in_Schleuse : Bool // Outbound (UH07): Leer-Puffer 6: Trolley fährt nicht in Schleuse + Err_Uebzeit : Bool // Outbound (UH07): Leer-Puffer 6: Überwachungzeit ist abgelaufen + Err_Schritt : Bool // Outbound (UH07): Leer-Puffer 6: Schritt-Nummer ist nicht definiert + Err_Stau_Einfahrt : Bool // Outbound (UH07): Leer-Puffer 6: Stau am Lager-Eingang + Err_BLKMov : Bool // Outbound (UH07): Leer-Puffer 6: Error bei Block kopieren + Err_Trolley_raus : Bool // Outbound (UH07): Leer-Puffer 6: Trolley fährt nicht aus Schleuse + Err_Lager_nicht_leer : Bool // Outbound (UH07): Leer-Puffer 6: Trolley in Schleuse, obwohl Lager leer! Initialisieren! + Err_TrolleyID_doppelt : Bool // Outbound (UH07): Leer-Puffer 6: Trolley_ID doppelt vorhanden! (Einfahrt) + Err_TrolleyID_unbekannt : Bool // Outbound (UH07): Leer-Puffer 6: Trolley_ID unbekannt! (Einfahrt) + Err_TrolleyID_Schleuse_unbekannt : Bool // Outbound (UH07): Leer-Puffer 6: Trolley_ID unbekannt! (Schleuse) + Err_TrolleyID_nicht_im_Lager : Bool // Outbound (UH07): Leer-Puffer 6: TrolleyID zum Ausfahren nicht im Lager vorhanden + Err_Raus_Sensor : Bool // Outbound (UH07): Leer-Puffer 6: Raus-Sensor hat Dauersignal oder wird nicht erreicht + Err_Lagerdaten_korrupt : Bool // Outbound (UH07): Leer-Puffer 6: Lagerdaten-Verwaltung unklar -> Reset nötig! + Reset_aktiv : Bool // Outbound (UH07): Leer-Puffer 6: Reset ist aktiv + LeerPuffer07 : Struct // Outbound (UH07): Leer-Puffer 7 MB3333 + Lager_DL : Bool // Outbound (UH07): Leer-Puffer 7: Lager-Datenliste fehlerhaft + Undef_Lager : Bool // Outbound (UH07): Leer-Puffer 7: undefinierter Lager + Err_Trolley_nicht_in_Schleuse : Bool // Outbound (UH07): Leer-Puffer 7: Trolley fährt nicht in Schleuse + Err_Uebzeit : Bool // Outbound (UH07): Leer-Puffer 7: Überwachungzeit ist abgelaufen + Err_Schritt : Bool // Outbound (UH07): Leer-Puffer 7: Schritt-Nummer ist nicht definiert + Err_Stau_Einfahrt : Bool // Outbound (UH07): Leer-Puffer 7: Stau am Lager-Eingang + Err_BLKMov : Bool // Outbound (UH07): Leer-Puffer 7: Error bei Block kopieren + Err_Trolley_raus : Bool // Outbound (UH07): Leer-Puffer 7: Trolley fährt nicht aus Schleuse + Err_Lager_nicht_leer : Bool // Outbound (UH07): Leer-Puffer 7: Trolley in Schleuse, obwohl Lager leer! Initialisieren! + Err_TrolleyID_doppelt : Bool // Outbound (UH07): Leer-Puffer 7: Trolley_ID doppelt vorhanden! (Einfahrt) + Err_TrolleyID_unbekannt : Bool // Outbound (UH07): Leer-Puffer 7: Trolley_ID unbekannt! (Einfahrt) + Err_TrolleyID_Schleuse_unbekannt : Bool // Outbound (UH07): Leer-Puffer 7: Trolley_ID unbekannt! (Schleuse) + Err_TrolleyID_nicht_im_Lager : Bool // Outbound (UH07): Leer-Puffer 7: TrolleyID zum Ausfahren nicht im Lager vorhanden + Err_Raus_Sensor : Bool // Outbound (UH07): Leer-Puffer 7: Raus-Sensor hat Dauersignal oder wird nicht erreicht + Err_Lagerdaten_korrupt : Bool // Outbound (UH07): Leer-Puffer 7: Lagerdaten-Verwaltung unklar -> Reset nötig! + Reset_aktiv : Bool // Outbound (UH07): Leer-Puffer 7: Reset ist aktiv + LeerPuffer08 : Struct // Outbound (UH07): Leer-Puffer 8 MB3332 + Lager_DL : Bool // Outbound (UH07): Leer-Puffer 8: Lager-Datenliste fehlerhaft + Undef_Lager : Bool // Outbound (UH07): Leer-Puffer 8: undefinierter Lager + Err_Trolley_nicht_in_Schleuse : Bool // Outbound (UH07): Leer-Puffer 8: Trolley fährt nicht in Schleuse + Err_Uebzeit : Bool // Outbound (UH07): Leer-Puffer 8: Überwachungzeit ist abgelaufen + Err_Schritt : Bool // Outbound (UH07): Leer-Puffer 8: Schritt-Nummer ist nicht definiert + Err_Stau_Einfahrt : Bool // Outbound (UH07): Leer-Puffer 8: Stau am Lager-Eingang + Err_BLKMov : Bool // Outbound (UH07): Leer-Puffer 8: Error bei Block kopieren + Err_Trolley_raus : Bool // Outbound (UH07): Leer-Puffer 8: Trolley fährt nicht aus Schleuse + Err_Lager_nicht_leer : Bool // Outbound (UH07): Leer-Puffer 8: Trolley in Schleuse, obwohl Lager leer! Initialisieren! + Err_TrolleyID_doppelt : Bool // Outbound (UH07): Leer-Puffer 8: Trolley_ID doppelt vorhanden! (Einfahrt) + Err_TrolleyID_unbekannt : Bool // Outbound (UH07): Leer-Puffer 8: Trolley_ID unbekannt! (Einfahrt) + Err_TrolleyID_Schleuse_unbekannt : Bool // Outbound (UH07): Leer-Puffer 8: Trolley_ID unbekannt! (Schleuse) + Err_TrolleyID_nicht_im_Lager : Bool // Outbound (UH07): Leer-Puffer 8: TrolleyID zum Ausfahren nicht im Lager vorhanden + Err_Raus_Sensor : Bool // Outbound (UH07): Leer-Puffer 8: Raus-Sensor hat Dauersignal oder wird nicht erreicht + Err_Lagerdaten_korrupt : Bool // Outbound (UH07): Leer-Puffer 8: Lagerdaten-Verwaltung unklar -> Reset nötig! + Reset_aktiv : Bool // Outbound (UH07): Leer-Puffer 8: Reset ist aktiv + LeerPuffer09 : Struct // Outbound (UH07): Leer-Puffer 9 MB3331 + Lager_DL : Bool // Outbound (UH07): Leer-Puffer 9: Lager-Datenliste fehlerhaft + Undef_Lager : Bool // Outbound (UH07): Leer-Puffer 9: undefinierter Lager + Err_Trolley_nicht_in_Schleuse : Bool // Outbound (UH07): Leer-Puffer 9: Trolley fährt nicht in Schleuse + Err_Uebzeit : Bool // Outbound (UH07): Leer-Puffer 9: Überwachungzeit ist abgelaufen + Err_Schritt : Bool // Outbound (UH07): Leer-Puffer 9: Schritt-Nummer ist nicht definiert + Err_Stau_Einfahrt : Bool // Outbound (UH07): Leer-Puffer 9: Stau am Lager-Eingang + Err_BLKMov : Bool // Outbound (UH07): Leer-Puffer 9: Error bei Block kopieren + Err_Trolley_raus : Bool // Outbound (UH07): Leer-Puffer 9: Trolley fährt nicht aus Schleuse + Err_Lager_nicht_leer : Bool // Outbound (UH07): Leer-Puffer 9: Trolley in Schleuse, obwohl Lager leer! Initialisieren! + Err_TrolleyID_doppelt : Bool // Outbound (UH07): Leer-Puffer 9: Trolley_ID doppelt vorhanden! (Einfahrt) + Err_TrolleyID_unbekannt : Bool // Outbound (UH07): Leer-Puffer 9: Trolley_ID unbekannt! (Einfahrt) + Err_TrolleyID_Schleuse_unbekannt : Bool // Outbound (UH07): Leer-Puffer 9: Trolley_ID unbekannt! (Schleuse) + Err_TrolleyID_nicht_im_Lager : Bool // Outbound (UH07): Leer-Puffer 9: TrolleyID zum Ausfahren nicht im Lager vorhanden + Err_Raus_Sensor : Bool // Outbound (UH07): Leer-Puffer 9: Raus-Sensor hat Dauersignal oder wird nicht erreicht + Err_Lagerdaten_korrupt : Bool // Outbound (UH07): Leer-Puffer 9: Lagerdaten-Verwaltung unklar -> Reset nötig! + Reset_aktiv : Bool // Outbound (UH07): Leer-Puffer 9: Reset ist aktiv + LeerPuffer10 : Struct // Outbound (UH07): Leer-Puffer 10 MB3330 + Lager_DL : Bool // Outbound (UH07): Leer-Puffer 10: Lager-Datenliste fehlerhaft + Undef_Lager : Bool // Outbound (UH07): Leer-Puffer 10: undefinierter Lager + Err_Trolley_nicht_in_Schleuse : Bool // Outbound (UH07): Leer-Puffer 10: Trolley fährt nicht in Schleuse + Err_Uebzeit : Bool // Outbound (UH07): Leer-Puffer 10: Überwachungzeit ist abgelaufen + Err_Schritt : Bool // Outbound (UH07): Leer-Puffer 10: Schritt-Nummer ist nicht definiert + Err_Stau_Einfahrt : Bool // Outbound (UH07): Leer-Puffer 10: Stau am Lager-Eingang + Err_BLKMov : Bool // Outbound (UH07): Leer-Puffer 10: Error bei Block kopieren + Err_Trolley_raus : Bool // Outbound (UH07): Leer-Puffer 10: Trolley fährt nicht aus Schleuse + Err_Lager_nicht_leer : Bool // Outbound (UH07): Leer-Puffer 10: Trolley in Schleuse, obwohl Lager leer! Initialisieren! + Err_TrolleyID_doppelt : Bool // Outbound (UH07): Leer-Puffer 10: Trolley_ID doppelt vorhanden! (Einfahrt) + Err_TrolleyID_unbekannt : Bool // Outbound (UH07): Leer-Puffer 10: Trolley_ID unbekannt! (Einfahrt) + Err_TrolleyID_Schleuse_unbekannt : Bool // Outbound (UH07): Leer-Puffer 10: Trolley_ID unbekannt! (Schleuse) + Err_TrolleyID_nicht_im_Lager : Bool // Outbound (UH07): Leer-Puffer 10: TrolleyID zum Ausfahren nicht im Lager vorhanden + Err_Raus_Sensor : Bool // Outbound (UH07): Leer-Puffer 10: Raus-Sensor hat Dauersignal oder wird nicht erreicht + Err_Lagerdaten_korrupt : Bool // Outbound (UH07): Leer-Puffer 10: Lagerdaten-Verwaltung unklar -> Reset nötig! + Reset_aktiv : Bool // Outbound (UH07): Leer-Puffer 10: Reset ist aktiv + Auslagerbereich_LeerPuffer : Struct + BG3321_Kein_Signal : Bool // Outbound (UH07): Leer-Puffer-Sorter: Impulsgeber Lager-Ausfahrt MA0065: Kein Signal + BG3321_Signal_zu_lang : Bool // Outbound (UH07): Leer-Puffer-Sorter: Impulsgeber Lager-Ausfahrt MA0065: Signal zu lang + TrolleyStau BGXY : Bool // Outbound (UH07): Leer-Puffer-Ausfahrt: Trolley verklemmt Puffer A/B + Frei150 : Array[1..1] of Word + Sorter_MB4503 : Struct // Outbound (UH07): Entlade-Puffer-Sorter MB4503 + Separator_DL : Bool // Outbound (UH07): Entlade-Puffer-Sorter: Separator-Datenliste fehlerhaft + Undef_Separator : Bool // Outbound (UH07): Entlade-Puffer-Sorter: undefinierter Separator + Err_BT_rein : Bool // Outbound (UH07): Entlade-Puffer-Sorter: BM fährt nicht in Separator + Err_Uebzeit : Bool // Outbound (UH07): Entlade-Puffer-Sorter: Überwachungzeit ist abgelaufen + Err_Schritt : Bool // Outbound (UH07): Entlade-Puffer-Sorter: Schritt-Nummer ist nicht definiert + Err_Betriebsart : Bool // Outbound (UH07): Entlade-Puffer-Sorter: Betriebsart ist nicht möglich + Err_PinSignal : Bool // Outbound (UH07): Entlade-Puffer-Sorter: Es kommt kein Pin-Signal + Err_BT_raus : Bool // Outbound (UH07): Entlade-Puffer-Sorter: BM fährt nicht aus + Err_Raus_Sensor : Bool // Outbound (UH07): Entlade-Puffer-Sorter: Raus-/Belade-Sensor wird nicht erreicht (oder dauernd aktiv)! + Travel_FIFO : Bool // Outbound (UH07): Entlade-Puffer-Sorter: Travel-FIFO fehlerhaft + Daten_out : Bool // Outbound (UH07): Entlade-Puffer-Sorter: Letzte Carrier-Daten konnten nicht an FIFO übergeben werden + BC_doppelt : Bool // Outbound (UH07): Entlade-Puffer-Sorter: Wieder gleichen BC vom PC erhalten + Korrektur_Modus_aktiv : Bool // Outbound (UH07): Entlade-Puffer-Sorter: Korrektur-Modus nach Crash aktiviert + Send_FIFO_fehlerhaft : Bool // Outbound (UH07): Entlade-Puffer-Sorter: Send-FIFO zum PC ist fehlerhaft + Send_FIFO_voll : Bool // Outbound (UH07): Entlade-Puffer-Sorter: Send-FIFO zu PC ist voll + Reset_aktiv : Bool // Outbound (UH07): Entlade-Puffer-Sorter: Reset ist aktiv + Sync_BG4527 : Struct // Outbound (UH07): Entlade-Puffer-Sorter: Synchron-Punkt BG4527 + SyncPkt_DL_Err : Bool // Outbound (UH07): Entlade-Puffer-Synchron-Punkt: Sync-Punkt-Datenliste fehlerhaft + Undef_SyncPkt : Bool // Outbound (UH07): Entlade-Puffer-Synchron-Punkt: undefinierter Synchronpunkt + BLKMov : Bool // Outbound (UH07): Entlade-Puffer-Synchron-Punkt: Fehler bei Block kopieren + Sync_Sensor_aktiv : Bool // Outbound (UH07): Entlade-Puffer-Synchron-Punkt: Sync-Sensor dauernd aktiv + TravelFIFO_Err : Bool // Outbound (UH07): Entlade-Puffer-Synchron-Punkt: Travel-FIFO fehlerhaft + TravelFIFO_leer : Bool // Outbound (UH07): Entlade-Puffer-Synchron-Punkt: keine Daten im Travel-FIFO eingetragen + TravelFIFO_belegt : Bool // Outbound (UH07): Entlade-Puffer-Synchron-Punkt: Travel-FIFO bleibt belegt + Hauptstrangliste_Err : Bool // Outbound (UH07): Entlade-Puffer-Synchron-Punkt: Hauptstrang-DL fehlerhaft + Hauptstrangliste_voll : Bool // Outbound (UH07): Entlade-Puffer-Synchron-Punkt: Hauptstrang-DL ist voll + Inkgeber_Err : Bool // Outbound (UH07): Entlade-Puffer-Synchron-Punkt: Inkrementalgeber meldet Störung + Keine_Hauptstrangliste : Bool // Outbound (UH07): Entlade-Puffer-Synchron-Punkt: Keine Hauptstrang-DL zum Eintragen angegeben + Keine_TeachPktdaten : Bool // Outbound (UH07): Entlade-Puffer-Synchron-Punkt: Teach-Punkt in Datenliste nicht vorhanden ! + TeachPkt_Datenliste_Err : Bool // Outbound (UH07): Entlade-Puffer-Synchron-Punkt: Teach-Punkt-Datenliste fehlerhaft + Kein_Parameter : Bool // Outbound (UH07): Entlade-Puffer-Synchron-Punkt: Kein Parameter zur Wegerfassung definiert + Err_Parameter : Bool // Outbound (UH07): Entlade-Puffer-Synchron-Punkt: Parameter für Zählerauswertung fehlerhaft + Inkrementalgeber : Bool // Outbound (UH07): Entlade-Puffer-Synchron-Punkt: Inkrementalgeberwert ohne Änderung + Weiche_MB4504 : Struct // Outbound (UH07): Entlade-Puffer-Sorter: Weiche zu Puffer 1 MB4504 + Weichen_DL : Bool // Outbound (UH07): Entlade-Puffer-Sorter: Weiche zu Puffer 1: Weichen-Datenliste fehlerhaft + Undef_Weiche : Bool // Outbound (UH07): Entlade-Puffer-Sorter: Weiche zu Puffer 1: undefinierte Weiche + BLKMov : Bool // Outbound (UH07): Entlade-Puffer-Sorter: Weiche zu Puffer 1: Fehler bei Block kopieren + Haupstrang_DL : Bool // Outbound (UH07): Entlade-Puffer-Sorter: Weiche zu Puffer 1: Haupstrang-Datenliste fehlerhaft + Haupstrang_DL_voll : Bool // Outbound (UH07): Entlade-Puffer-Sorter: Weiche zu Puffer 1: Haupstrang-Datenliste ist voll + Keine_HSDaten : Bool // Outbound (UH07): Entlade-Puffer-Sorter: Weiche zu Puffer 1: Keine Hauptstrang-Daten mehr vorhanden + Rein_FIFO : Bool // Outbound (UH07): Entlade-Puffer-Sorter: Weiche zu Puffer 1: Rein-FIFO fehlerhaft + Keine_FIFODaten : Bool // Outbound (UH07): Entlade-Puffer-Sorter: Weiche zu Puffer 1: Keine Rein-FIFO-Daten mehr vorhanden + Stau_AusfahrBereich : Bool // Outbound (UH07): Entlade-Puffer-Sorter: Weiche zu Puffer 1: Stau im Ausfahrbereich (-> Antrieb gestoppt) + BM_verklemmt_Gerade : Bool // Outbound (UH07): Entlade-Puffer-Sorter: Weiche zu Puffer 1: Trolley bei Gerade-Fahrt in Weiche verklemmt (-> Antrieb gestoppt) + BM_verklemmt_Ausfahrt : Bool // Outbound (UH07): Entlade-Puffer-Sorter: Weiche zu Puffer 1: Trolley bei Lager-Fahrt in Weiche verklemmt (-> Antrieb gestoppt) + BM_undef_Gerade : Bool // Outbound (UH07): Entlade-Puffer-Sorter: Weiche zu Puffer 1: undefinierter Trolley bei Weiterfahrt erkannt + Frei14 : Bool // Outbound (UH07): Entlade-Puffer-Sorter: Weiche zu Puffer 1: Frei 14 + Send_FIFO_fehlerhaft : Bool // Outbound (UH07): Entlade-Puffer-Sorter: Weiche zu Puffer 1: Send-FIFO zum PC ist fehlerhaft + Send_FIFO_voll : Bool // Outbound (UH07): Entlade-Puffer-Sorter: Weiche zu Puffer 1: Send-FIFO zu PC ist voll + Reset_aktiv : Bool // Outbound (UH07): Entlade-Puffer-Sorter: Weiche zu Puffer 1: Reset ist aktiv + Weiche_MB4505 : Struct // Outbound (UH07): Entlade-Puffer-Sorter: Weiche zu Puffer 2 MB4505 + Weichen_DL : Bool // Outbound (UH07): Entlade-Puffer-Sorter: Weiche zu Puffer 2: Weichen-Datenliste fehlerhaft + Undef_Weiche : Bool // Outbound (UH07): Entlade-Puffer-Sorter: Weiche zu Puffer 2: undefinierte Weiche + BLKMov : Bool // Outbound (UH07): Entlade-Puffer-Sorter: Weiche zu Puffer 2: Fehler bei Block kopieren + Haupstrang_DL : Bool // Outbound (UH07): Entlade-Puffer-Sorter: Weiche zu Puffer 2: Haupstrang-Datenliste fehlerhaft + Haupstrang_DL_voll : Bool // Outbound (UH07): Entlade-Puffer-Sorter: Weiche zu Puffer 2: Haupstrang-Datenliste ist voll + Keine_HSDaten : Bool // Outbound (UH07): Entlade-Puffer-Sorter: Weiche zu Puffer 2: Keine Hauptstrang-Daten mehr vorhanden + Rein_FIFO : Bool // Outbound (UH07): Entlade-Puffer-Sorter: Weiche zu Puffer 2: Rein-FIFO fehlerhaft + Keine_FIFODaten : Bool // Outbound (UH07): Entlade-Puffer-Sorter: Weiche zu Puffer 2: Keine Rein-FIFO-Daten mehr vorhanden + Stau_AusfahrBereich : Bool // Outbound (UH07): Entlade-Puffer-Sorter: Weiche zu Puffer 2: Stau im Ausfahrbereich (-> Antrieb gestoppt) + BM_verklemmt_Gerade : Bool // Outbound (UH07): Entlade-Puffer-Sorter: Weiche zu Puffer 2: Trolley bei Gerade-Fahrt in Weiche verklemmt (-> Antrieb gestoppt) + BM_verklemmt_Ausfahrt : Bool // Outbound (UH07): Entlade-Puffer-Sorter: Weiche zu Puffer 2: Trolley bei Lager-Fahrt in Weiche verklemmt (-> Antrieb gestoppt) + BM_undef_Gerade : Bool // Outbound (UH07): Entlade-Puffer-Sorter: Weiche zu Puffer 2: undefinierter Trolley bei Weiterfahrt erkannt + Frei14 : Bool // Outbound (UH07): Entlade-Puffer-Sorter: Weiche zu Puffer 2: Frei 14 + Send_FIFO_fehlerhaft : Bool // Outbound (UH07): Entlade-Puffer-Sorter: Weiche zu Puffer 2: Send-FIFO zum PC ist fehlerhaft + Send_FIFO_voll : Bool // Outbound (UH07): Entlade-Puffer-Sorter: Weiche zu Puffer 2: Send-FIFO zu PC ist voll + Reset_aktiv : Bool // Outbound (UH07): Entlade-Puffer-Sorter: Weiche zu Puffer 2: Reset ist aktiv + Weiche_MB4507 : Struct // Outbound (UH07): Entlade-Puffer-Sorter: Weiche zu Puffer 3 MB4506 + Weichen_DL : Bool // Outbound (UH07): Entlade-Puffer-Sorter: Weiche zu Puffer 3: Weichen-Datenliste fehlerhaft + Undef_Weiche : Bool // Outbound (UH07): Entlade-Puffer-Sorter: Weiche zu Puffer 3: undefinierte Weiche + BLKMov : Bool // Outbound (UH07): Entlade-Puffer-Sorter: Weiche zu Puffer 3: Fehler bei Block kopieren + Haupstrang_DL : Bool // Outbound (UH07): Entlade-Puffer-Sorter: Weiche zu Puffer 3: Haupstrang-Datenliste fehlerhaft + Haupstrang_DL_voll : Bool // Outbound (UH07): Entlade-Puffer-Sorter: Weiche zu Puffer 3: Haupstrang-Datenliste ist voll + Keine_HSDaten : Bool // Outbound (UH07): Entlade-Puffer-Sorter: Weiche zu Puffer 3: Keine Hauptstrang-Daten mehr vorhanden + Rein_FIFO : Bool // Outbound (UH07): Entlade-Puffer-Sorter: Weiche zu Puffer 3: Rein-FIFO fehlerhaft + Keine_FIFODaten : Bool // Outbound (UH07): Entlade-Puffer-Sorter: Weiche zu Puffer 3: Keine Rein-FIFO-Daten mehr vorhanden + Stau_AusfahrBereich : Bool // Outbound (UH07): Entlade-Puffer-Sorter: Weiche zu Puffer 3: Stau im Ausfahrbereich (-> Antrieb gestoppt) + BM_verklemmt_Gerade : Bool // Outbound (UH07): Entlade-Puffer-Sorter: Weiche zu Puffer 3: Trolley bei Gerade-Fahrt in Weiche verklemmt (-> Antrieb gestoppt) + BM_verklemmt_Ausfahrt : Bool // Outbound (UH07): Entlade-Puffer-Sorter: Weiche zu Puffer 3: Trolley bei Lager-Fahrt in Weiche verklemmt (-> Antrieb gestoppt) + BM_undef_Gerade : Bool // Outbound (UH07): Entlade-Puffer-Sorter: Weiche zu Puffer 3: undefinierter Trolley bei Weiterfahrt erkannt + Frei14 : Bool // Outbound (UH07): Entlade-Puffer-Sorter: Weiche zu Puffer 3: Frei 14 + Send_FIFO_fehlerhaft : Bool // Outbound (UH07): Entlade-Puffer-Sorter: Weiche zu Puffer 3: Send-FIFO zum PC ist fehlerhaft + Send_FIFO_voll : Bool // Outbound (UH07): Entlade-Puffer-Sorter: Weiche zu Puffer 3: Send-FIFO zu PC ist voll + Reset_aktiv : Bool // Outbound (UH07): Entlade-Puffer-Sorter: Weiche zu Puffer 3: Reset ist aktiv + Weiche_EntladePuffer04 : Struct // Outbound (UH07): Entlade-Puffer-Sorter: Weiche zu Puffer 4 (Pseudo) + Weichen_DL : Bool // Outbound (UH07): Entlade-Puffer-Sorter: Weiche zu Puffer 4: Weichen-Datenliste fehlerhaft + Undef_Weiche : Bool // Outbound (UH07): Entlade-Puffer-Sorter: Weiche zu Puffer 4: undefinierte Weiche + BLKMov : Bool // Outbound (UH07): Entlade-Puffer-Sorter: Weiche zu Puffer 4: Fehler bei Block kopieren + Haupstrang_DL : Bool // Outbound (UH07): Entlade-Puffer-Sorter: Weiche zu Puffer 4: Haupstrang-Datenliste fehlerhaft + Haupstrang_DL_voll : Bool // Outbound (UH07): Entlade-Puffer-Sorter: Weiche zu Puffer 4: Haupstrang-Datenliste ist voll + Keine_HSDaten : Bool // Outbound (UH07): Entlade-Puffer-Sorter: Weiche zu Puffer 4: Keine Hauptstrang-Daten mehr vorhanden + Rein_FIFO : Bool // Outbound (UH07): Entlade-Puffer-Sorter: Weiche zu Puffer 4: Rein-FIFO fehlerhaft + Keine_FIFODaten : Bool // Outbound (UH07): Entlade-Puffer-Sorter: Weiche zu Puffer 4: Keine Rein-FIFO-Daten mehr vorhanden + Stau_AusfahrBereich : Bool // Outbound (UH07): Entlade-Puffer-Sorter: Weiche zu Puffer 4: Stau im Ausfahrbereich (-> Antrieb gestoppt) + BM_verklemmt_Gerade : Bool // Outbound (UH07): Entlade-Puffer-Sorter: Weiche zu Puffer 4: Trolley bei Gerade-Fahrt in Weiche verklemmt (-> Antrieb gestoppt) + BM_verklemmt_Ausfahrt : Bool // Outbound (UH07): Entlade-Puffer-Sorter: Weiche zu Puffer 4: Trolley bei Lager-Fahrt in Weiche verklemmt (-> Antrieb gestoppt) + BM_undef_Gerade : Bool // Outbound (UH07): Entlade-Puffer-Sorter: Weiche zu Puffer 4: undefinierter Trolley bei Weiterfahrt erkannt + Frei14 : Bool // Outbound (UH07): Entlade-Puffer-Sorter: Weiche zu Puffer 4: Frei 14 + Send_FIFO_fehlerhaft : Bool // Outbound (UH07): Entlade-Puffer-Sorter: Weiche zu Puffer 4: Send-FIFO zum PC ist fehlerhaft + Send_FIFO_voll : Bool // Outbound (UH07): Entlade-Puffer-Sorter: Weiche zu Puffer 4: Send-FIFO zu PC ist voll + Reset_aktiv : Bool // Outbound (UH07): Entlade-Puffer-Sorter: Weiche zu Puffer 4: Reset ist aktiv + Impulsgeber_4526 : Struct // Outbound (UH07): Entnahme-Sorter: Impulsgeber Lager-Einfahrt MA0325/BG4526 + Kein_Signal : Bool // Outbound (UH07): Entnahme-Sorter: Impulsgeber Lager-Einfahrt MA0325: Kein Signal (Kettenrad-Sensor) + Signal_zu_lang : Bool // Outbound (UH07): Entnahme-Sorter: Impulsgeber Lager-Einfahrt MA0325: Signal zu lang (Kettenrad-Sensor) + EntladePuffer01 : Struct // Outbound (UH07): Entlade-Puffer 1 BG4504 + Lager_DL : Bool // Outbound (UH07): Entlade-Puffer 1: Lager-Datenliste fehlerhaft + Undef_Lager : Bool // Outbound (UH07): Entlade-Puffer 1: undefinierter Lager + Err_Trolley_nicht_in_Schleuse : Bool // Outbound (UH07): Entlade-Puffer 1: Trolley fährt nicht in Schleuse + Err_Uebzeit : Bool // Outbound (UH07): Entlade-Puffer 1: Überwachungzeit ist abgelaufen + Err_Schritt : Bool // Outbound (UH07): Entlade-Puffer 1: Schritt-Nummer ist nicht definiert + Err_Stau_Einfahrt : Bool // Outbound (UH07): Entlade-Puffer 1: Stau am Lager-Eingang + Err_BLKMov : Bool // Outbound (UH07): Entlade-Puffer 1: Error bei Block kopieren + Err_Trolley_raus : Bool // Outbound (UH07): Entlade-Puffer 1: Trolley fährt nicht aus Schleuse + Err_Lager_nicht_leer : Bool // Outbound (UH07): Entlade-Puffer 1: Trolley in Schleuse, obwohl Lager leer! Initialisieren! + Err_TrolleyID_doppelt : Bool // Outbound (UH07): Entlade-Puffer 1: Trolley_ID doppelt vorhanden! (Einfahrt) + Err_TrolleyID_unbekannt : Bool // Outbound (UH07): Entlade-Puffer 1: Trolley_ID unbekannt! (Einfahrt) + Err_TrolleyID_Schleuse_unbekannt : Bool // Outbound (UH07): Entlade-Puffer 1: Trolley_ID unbekannt! (Schleuse) + Err_TrolleyID_nicht_im_Lager : Bool // Outbound (UH07): Entlade-Puffer 1: TrolleyID zum Ausfahren nicht im Lager vorhanden + Err_Raus_Sensor : Bool // Outbound (UH07): Entlade-Puffer 1: Raus-Sensor hat Dauersignal oder wird nicht erreicht + Err_Lagerdaten_korrupt : Bool // Outbound (UH07): Entlade-Puffer 1: Lagerdaten-Verwaltung unklar -> Reset nötig! + Reset_aktiv : Bool // Outbound (UH07): Entlade-Puffer 1: Reset ist aktiv + EntladePuffer02 : Struct // Outbound (UH07): Entlade-Puffer 2 BG4505 + Lager_DL : Bool // Outbound (UH07): Entlade-Puffer 2: Lager-Datenliste fehlerhaft + Undef_Lager : Bool // Outbound (UH07): Entlade-Puffer 2: undefinierter Lager + Err_Trolley_nicht_in_Schleuse : Bool // Outbound (UH07): Entlade-Puffer 2: Trolley fährt nicht in Schleuse + Err_Uebzeit : Bool // Outbound (UH07): Entlade-Puffer 2: Überwachungzeit ist abgelaufen + Err_Schritt : Bool // Outbound (UH07): Entlade-Puffer 2: Schritt-Nummer ist nicht definiert + Err_Stau_Einfahrt : Bool // Outbound (UH07): Entlade-Puffer 2: Stau am Lager-Eingang + Err_BLKMov : Bool // Outbound (UH07): Entlade-Puffer 2: Error bei Block kopieren + Err_Trolley_raus : Bool // Outbound (UH07): Entlade-Puffer 2: Trolley fährt nicht aus Schleuse + Err_Lager_nicht_leer : Bool // Outbound (UH07): Entlade-Puffer 2: Trolley in Schleuse, obwohl Lager leer! Initialisieren! + Err_TrolleyID_doppelt : Bool // Outbound (UH07): Entlade-Puffer 2: Trolley_ID doppelt vorhanden! (Einfahrt) + Err_TrolleyID_unbekannt : Bool // Outbound (UH07): Entlade-Puffer 2: Trolley_ID unbekannt! (Einfahrt) + Err_TrolleyID_Schleuse_unbekannt : Bool // Outbound (UH07): Entlade-Puffer 2: Trolley_ID unbekannt! (Schleuse) + Err_TrolleyID_nicht_im_Lager : Bool // Outbound (UH07): Entlade-Puffer 2: TrolleyID zum Ausfahren nicht im Lager vorhanden + Err_Raus_Sensor : Bool // Outbound (UH07): Entlade-Puffer 2: Raus-Sensor hat Dauersignal oder wird nicht erreicht + Err_Lagerdaten_korrupt : Bool // Outbound (UH07): Entlade-Puffer 2: Lagerdaten-Verwaltung unklar -> Reset nötig! + Reset_aktiv : Bool // Outbound (UH07): Entlade-Puffer 2: Reset ist aktiv + EntladePuffer03 : Struct // Outbound (UH07): Entlade-Puffer 3 BG4506 + Lager_DL : Bool // Outbound (UH07): Entlade-Puffer 3: Lager-Datenliste fehlerhaft + Undef_Lager : Bool // Outbound (UH07): Entlade-Puffer 3: undefinierter Lager + Err_Trolley_nicht_in_Schleuse : Bool // Outbound (UH07): Entlade-Puffer 3: Trolley fährt nicht in Schleuse + Err_Uebzeit : Bool // Outbound (UH07): Entlade-Puffer 3: Überwachungzeit ist abgelaufen + Err_Schritt : Bool // Outbound (UH07): Entlade-Puffer 3: Schritt-Nummer ist nicht definiert + Err_Stau_Einfahrt : Bool // Outbound (UH07): Entlade-Puffer 3: Stau am Lager-Eingang + Err_BLKMov : Bool // Outbound (UH07): Entlade-Puffer 3: Error bei Block kopieren + Err_Trolley_raus : Bool // Outbound (UH07): Entlade-Puffer 3: Trolley fährt nicht aus Schleuse + Err_Lager_nicht_leer : Bool // Outbound (UH07): Entlade-Puffer 3: Trolley in Schleuse, obwohl Lager leer! Initialisieren! + Err_TrolleyID_doppelt : Bool // Outbound (UH07): Entlade-Puffer 3: Trolley_ID doppelt vorhanden! (Einfahrt) + Err_TrolleyID_unbekannt : Bool // Outbound (UH07): Entlade-Puffer 3: Trolley_ID unbekannt! (Einfahrt) + Err_TrolleyID_Schleuse_unbekannt : Bool // Outbound (UH07): Entlade-Puffer 3: Trolley_ID unbekannt! (Schleuse) + Err_TrolleyID_nicht_im_Lager : Bool // Outbound (UH07): Entlade-Puffer 3: TrolleyID zum Ausfahren nicht im Lager vorhanden + Err_Raus_Sensor : Bool // Outbound (UH07): Entlade-Puffer 3: Raus-Sensor hat Dauersignal oder wird nicht erreicht + Err_Lagerdaten_korrupt : Bool // Outbound (UH07): Entlade-Puffer 3: Lagerdaten-Verwaltung unklar -> Reset nötig! + Reset_aktiv : Bool // Outbound (UH07): Entlade-Puffer 3: Reset ist aktiv + EntladePuffer04 : Struct // Outbound (UH07): Entlade-Puffer 4 BG4507 + Lager_DL : Bool // Outbound (UH07): Entlade-Puffer 4: Lager-Datenliste fehlerhaft + Undef_Lager : Bool // Outbound (UH07): Entlade-Puffer 4: undefinierter Lager + Err_Trolley_nicht_in_Schleuse : Bool // Outbound (UH07): Entlade-Puffer 4: Trolley fährt nicht in Schleuse + Err_Uebzeit : Bool // Outbound (UH07): Entlade-Puffer 4: Überwachungzeit ist abgelaufen + Err_Schritt : Bool // Outbound (UH07): Entlade-Puffer 4: Schritt-Nummer ist nicht definiert + Err_Stau_Einfahrt : Bool // Outbound (UH07): Entlade-Puffer 4: Stau am Lager-Eingang + Err_BLKMov : Bool // Outbound (UH07): Entlade-Puffer 4: Error bei Block kopieren + Err_Trolley_raus : Bool // Outbound (UH07): Entlade-Puffer 4: Trolley fährt nicht aus Schleuse + Err_Lager_nicht_leer : Bool // Outbound (UH07): Entlade-Puffer 4: Trolley in Schleuse, obwohl Lager leer! Initialisieren! + Err_TrolleyID_doppelt : Bool // Outbound (UH07): Entlade-Puffer 4: Trolley_ID doppelt vorhanden! (Einfahrt) + Err_TrolleyID_unbekannt : Bool // Outbound (UH07): Entlade-Puffer 4: Trolley_ID unbekannt! (Einfahrt) + Err_TrolleyID_Schleuse_unbekannt : Bool // Outbound (UH07): Entlade-Puffer 4: Trolley_ID unbekannt! (Schleuse) + Err_TrolleyID_nicht_im_Lager : Bool // Outbound (UH07): Entlade-Puffer 4: TrolleyID zum Ausfahren nicht im Lager vorhanden + Err_Raus_Sensor : Bool // Outbound (UH07): Entlade-Puffer 4: Raus-Sensor hat Dauersignal oder wird nicht erreicht + Err_Lagerdaten_korrupt : Bool // Outbound (UH07): Entlade-Puffer 4: Lagerdaten-Verwaltung unklar -> Reset nötig! + Reset_aktiv : Bool // Outbound (UH07): Entlade-Puffer 4: Reset ist aktiv + Frei200 : Array[1..14] of Word + Sorter_MB3121 : Struct // Outbound (UH07): Voll-Puffer-Sorter MB3121 + Separator_DL : Bool // Outbound (UH07): Voll-Puffer-Sorter: Separator-Datenliste fehlerhaft + Undef_Separator : Bool // Outbound (UH07): Voll-Puffer-Sorter: undefinierter Separator + Err_BT_rein : Bool // Outbound (UH07): Voll-Puffer-Sorter: BM fährt nicht in Separator + Err_Uebzeit : Bool // Outbound (UH07): Voll-Puffer-Sorter: Überwachungzeit ist abgelaufen + Err_Schritt : Bool // Outbound (UH07): Voll-Puffer-Sorter: Schritt-Nummer ist nicht definiert + Err_Betriebsart : Bool // Outbound (UH07): Voll-Puffer-Sorter: Betriebsart ist nicht möglich + Err_PinSignal : Bool // Outbound (UH07): Voll-Puffer-Sorter: Es kommt kein Pin-Signal + Err_BT_raus : Bool // Outbound (UH07): Voll-Puffer-Sorter: BM fährt nicht aus + Err_Raus_Sensor : Bool // Outbound (UH07): Voll-Puffer-Sorter: Raus-/Belade-Sensor wird nicht erreicht (oder dauernd aktiv)! + Travel_FIFO : Bool // Outbound (UH07): Voll-Puffer-Sorter: Travel-FIFO fehlerhaft + Daten_out : Bool // Outbound (UH07): Voll-Puffer-Sorter: Letzte Carrier-Daten konnten nicht an FIFO übergeben werden + BC_doppelt : Bool // Outbound (UH07): Voll-Puffer-Sorter: Wieder gleichen BC vom PC erhalten + Korrektur_Modus_aktiv : Bool // Outbound (UH07): Voll-Puffer-Sorter: Korrektur-Modus nach Crash aktiviert + Send_FIFO_fehlerhaft : Bool // Outbound (UH07): Voll-Puffer-Sorter: Send-FIFO zum PC ist fehlerhaft + Send_FIFO_voll : Bool // Outbound (UH07): Voll-Puffer-Sorter: Send-FIFO zu PC ist voll + Reset_aktiv : Bool // Outbound (UH07): Voll-Puffer-Sorter: Reset ist aktiv + Sorter_MB3123 : Struct // Outbound (UH07): Voll-Puffer-Sorter-Rückführung MB3123 + Separator_DL : Bool // Outbound (UH07): Voll-Puffer-Sorter-Rückführung: Separator-Datenliste fehlerhaft + Undef_Separator : Bool // Outbound (UH07): Voll-Puffer-Sorter-Rückführung: undefinierter Separator + Err_BT_rein : Bool // Outbound (UH07): Voll-Puffer-Sorter-Rückführung: BM fährt nicht in Separator + Err_Uebzeit : Bool // Outbound (UH07): Voll-Puffer-Sorter-Rückführung: Überwachungzeit ist abgelaufen + Err_Schritt : Bool // Outbound (UH07): Voll-Puffer-Sorter-Rückführung: Schritt-Nummer ist nicht definiert + Err_Betriebsart : Bool // Outbound (UH07): Voll-Puffer-Sorter-Rückführung: Betriebsart ist nicht möglich + Err_PinSignal : Bool // Outbound (UH07): Voll-Puffer-Sorter-Rückführung: Es kommt kein Pin-Signal + Err_BT_raus : Bool // Outbound (UH07): Voll-Puffer-Sorter-Rückführung: BM fährt nicht aus + Err_Raus_Sensor : Bool // Outbound (UH07): Voll-Puffer-Sorter-Rückführung: Raus-/Belade-Sensor wird nicht erreicht (oder dauernd aktiv)! + Travel_FIFO : Bool // Outbound (UH07): Voll-Puffer-Sorter-Rückführung: Travel-FIFO fehlerhaft + Daten_out : Bool // Outbound (UH07): Voll-Puffer-Sorter-Rückführung: Letzte Carrier-Daten konnten nicht an FIFO übergeben werden + BC_doppelt : Bool // Outbound (UH07): Voll-Puffer-Sorter-Rückführung: Wieder gleichen BC vom PC erhalten + Korrektur_Modus_aktiv : Bool // Outbound (UH07): Voll-Puffer-Sorter-Rückführung: Korrektur-Modus nach Crash aktiviert + Send_FIFO_fehlerhaft : Bool // Outbound (UH07): Voll-Puffer-Sorter-Rückführung: Send-FIFO zum PC ist fehlerhaft + Send_FIFO_voll : Bool // Outbound (UH07): Voll-Puffer-Sorter-Rückführung: Send-FIFO zu PC ist voll + Reset_aktiv : Bool // Outbound (UH07): Voll-Puffer-Sorter-Rückführung: Reset ist aktiv + Sync_BG3120 : Struct // Outbound (UH07): Voll-Puffer-Sorter: Synchron-Punkt BG3120 + SyncPkt_DL_Err : Bool // Outbound (UH07): Voll-Synchron-Punkt: Sync-Punkt-Datenliste fehlerhaft + Undef_SyncPkt : Bool // Outbound (UH07): Voll-Synchron-Punkt: undefinierter Synchronpunkt + BLKMov : Bool // Outbound (UH07): Voll-Synchron-Punkt: Fehler bei Block kopieren + Sync_Sensor_aktiv : Bool // Outbound (UH07): Voll-Synchron-Punkt: Sync-Sensor dauernd aktiv + TravelFIFO_Err : Bool // Outbound (UH07): Voll-Synchron-Punkt: Travel-FIFO fehlerhaft + TravelFIFO_leer : Bool // Outbound (UH07): Voll-Synchron-Punkt: keine Daten im Travel-FIFO eingetragen + TravelFIFO_belegt : Bool // Outbound (UH07): Voll-Synchron-Punkt: Travel-FIFO bleibt belegt + Hauptstrangliste_Err : Bool // Outbound (UH07): Voll-Synchron-Punkt: Hauptstrang-DL fehlerhaft + Hauptstrangliste_voll : Bool // Outbound (UH07): Voll-Synchron-Punkt: Hauptstrang-DL ist voll + Inkgeber_Err : Bool // Outbound (UH07): Voll-Synchron-Punkt: Inkrementalgeber meldet Störung + Keine_Hauptstrangliste : Bool // Outbound (UH07): Voll-Synchron-Punkt: Keine Hauptstrang-DL zum Eintragen angegeben + Keine_TeachPktdaten : Bool // Outbound (UH07): Voll-Synchron-Punkt: Teach-Punkt in Datenliste nicht vorhanden ! + TeachPkt_Datenliste_Err : Bool // Outbound (UH07): Voll-Synchron-Punkt: Teach-Punkt-Datenliste fehlerhaft + Kein_Parameter : Bool // Outbound (UH07): Voll-Synchron-Punkt: Kein Parameter zur Wegerfassung definiert + Err_Parameter : Bool // Outbound (UH07): Voll-Synchron-Punkt: Parameter für Zählerauswertung fehlerhaft + Inkrementalgeber : Bool // Outbound (UH07): Voll-Synchron-Punkt: Inkrementalgeberwert ohne Änderung + Übergabe_VPA>VPB : Struct // Outbound (UH07): Voll-Puffer-Sorter: Übergabe A->B + Uebergabe_DL : Bool // Übergabe-Datenliste fehlerhaft + Undef_Uebergabe : Bool // undefinierte Übergabe + BLKMov : Bool // Fehler bei Block kopieren + Haupstrang_DL : Bool // Haupstrang-Datenliste fehlerhaft + Keine_HSDaten : Bool // Keine Hauptstrang-Daten mehr vorhanden + Travel_FIFO_ERR : Bool // Travel-FIFO fehlerhaft + Travel_FIFO_voll : Bool // Travel-FIFO voll + Frei07 : Bool + Frei10 : Bool + Frei11 : Bool + Frei12 : Bool + Frei13 : Bool + Frei14 : Bool + Send_FIFO_fehlerhaft : Bool // Send-FIFO zum PC ist fehlerhaft + Send_FIFO_voll : Bool // Send-FIFO zu PC ist voll + Reset_aktiv : Bool // Reset ist aktiv + Sync_BG3003 : Struct // Outbound (UH07): Voll-Puffer-Sorter: Synchron-Punkt B BG3003 + SyncPkt_DL_Err : Bool // Outbound (UH07): Voll-Synchron-Punkt B: Sync-Punkt B-Datenliste fehlerhaft + Undef_SyncPkt : Bool // Outbound (UH07): Voll-Synchron-Punkt B: undefinierter SynchronPunkt B + BLKMov : Bool // Outbound (UH07): Voll-Synchron-Punkt B: Fehler bei Block kopieren + Sync_Sensor_aktiv : Bool // Outbound (UH07): Voll-Synchron-Punkt B: Sync-Sensor dauernd aktiv + TravelFIFO_Err : Bool // Outbound (UH07): Voll-Synchron-Punkt B: Travel-FIFO fehlerhaft + TravelFIFO_leer : Bool // Outbound (UH07): Voll-Synchron-Punkt B: keine Daten im Travel-FIFO eingetragen + TravelFIFO_belegt : Bool // Outbound (UH07): Voll-Synchron-Punkt B: Travel-FIFO bleibt belegt + Hauptstrangliste_Err : Bool // Outbound (UH07): Voll-Synchron-Punkt B: Hauptstrang-DL fehlerhaft + Hauptstrangliste_voll : Bool // Outbound (UH07): Voll-Synchron-Punkt B: Hauptstrang-DL ist voll + Inkgeber_Err : Bool // Outbound (UH07): Voll-Synchron-Punkt B: Inkrementalgeber meldet Störung + Keine_Hauptstrangliste : Bool // Outbound (UH07): Voll-Synchron-Punkt B: Keine Hauptstrang-DL zum Eintragen angegeben + Keine_TeachPktdaten : Bool // Outbound (UH07): Voll-Synchron-Punkt B: Teach-Punkt in Datenliste nicht vorhanden ! + TeachPkt_Datenliste_Err : Bool // Outbound (UH07): Voll-Synchron-Punkt B: Teach-Punkt-Datenliste fehlerhaft + Kein_Parameter : Bool // Outbound (UH07): Voll-Synchron-Punkt B: Kein Parameter zur Wegerfassung definiert + Err_Parameter : Bool // Outbound (UH07): Voll-Synchron-Punkt B: Parameter für Zählerauswertung fehlerhaft + Inkrementalgeber : Bool // Outbound (UH07): Voll-Synchron-Punkt B: Inkrementalgeberwert ohne Änderung + Weiche_MB3087 : Struct // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 1 MB3087 + Weichen_DL : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 1: Weichen-Datenliste fehlerhaft + Undef_Weiche : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 1: undefinierte Weiche + BLKMov : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 1: Fehler bei Block kopieren + Haupstrang_DL : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 1: Haupstrang-Datenliste fehlerhaft + Haupstrang_DL_voll : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 1: Haupstrang-Datenliste ist voll + Keine_HSDaten : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 1: Keine Hauptstrang-Daten mehr vorhanden + Rein_FIFO : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 1: Rein-FIFO fehlerhaft + Keine_FIFODaten : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 1: Keine Rein-FIFO-Daten mehr vorhanden + Stau_AusfahrBereich : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 1: Stau im Ausfahrbereich (-> Antrieb gestoppt) + BM_verklemmt_Gerade : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 1: Trolley bei Gerade-Fahrt in Weiche verklemmt (-> Antrieb gestoppt) + BM_verklemmt_Ausfahrt : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 1: Trolley bei Lager-Fahrt in Weiche verklemmt (-> Antrieb gestoppt) + BM_undef_Gerade : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 1: undefinierter Trolley bei Weiterfahrt erkannt + Frei14 : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 1: Frei 14 + Send_FIFO_fehlerhaft : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 1: Send-FIFO zum PC ist fehlerhaft + Send_FIFO_voll : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 1: Send-FIFO zu PC ist voll + Reset_aktiv : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 1: Reset ist aktiv + Weiche_MB3086 : Struct // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 2 MB3086 + Weichen_DL : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 2: Weichen-Datenliste fehlerhaft + Undef_Weiche : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 2: undefinierte Weiche + BLKMov : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 2: Fehler bei Block kopieren + Haupstrang_DL : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 2: Haupstrang-Datenliste fehlerhaft + Haupstrang_DL_voll : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 2: Haupstrang-Datenliste ist voll + Keine_HSDaten : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 2: Keine Hauptstrang-Daten mehr vorhanden + Rein_FIFO : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 2: Rein-FIFO fehlerhaft + Keine_FIFODaten : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 2: Keine Rein-FIFO-Daten mehr vorhanden + Stau_AusfahrBereich : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 2: Stau im Ausfahrbereich (-> Antrieb gestoppt) + BM_verklemmt_Gerade : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 2: Trolley bei Gerade-Fahrt in Weiche verklemmt (-> Antrieb gestoppt) + BM_verklemmt_Ausfahrt : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 2: Trolley bei Lager-Fahrt in Weiche verklemmt (-> Antrieb gestoppt) + BM_undef_Gerade : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 2: undefinierter Trolley bei Weiterfahrt erkannt + Frei14 : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 2: Frei 14 + Send_FIFO_fehlerhaft : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 2: Send-FIFO zum PC ist fehlerhaft + Send_FIFO_voll : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 2: Send-FIFO zu PC ist voll + Reset_aktiv : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 2: Reset ist aktiv + Weiche_MB3085 : Struct // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 3 MB3085 + Weichen_DL : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 3: Weichen-Datenliste fehlerhaft + Undef_Weiche : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 3: undefinierte Weiche + BLKMov : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 3: Fehler bei Block kopieren + Haupstrang_DL : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 3: Haupstrang-Datenliste fehlerhaft + Haupstrang_DL_voll : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 3: Haupstrang-Datenliste ist voll + Keine_HSDaten : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 3: Keine Hauptstrang-Daten mehr vorhanden + Rein_FIFO : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 3: Rein-FIFO fehlerhaft + Keine_FIFODaten : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 3: Keine Rein-FIFO-Daten mehr vorhanden + Stau_AusfahrBereich : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 3: Stau im Ausfahrbereich (-> Antrieb gestoppt) + BM_verklemmt_Gerade : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 3: Trolley bei Gerade-Fahrt in Weiche verklemmt (-> Antrieb gestoppt) + BM_verklemmt_Ausfahrt : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 3: Trolley bei Lager-Fahrt in Weiche verklemmt (-> Antrieb gestoppt) + BM_undef_Gerade : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 3: undefinierter Trolley bei Weiterfahrt erkannt + Frei14 : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 3: Frei 14 + Send_FIFO_fehlerhaft : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 3: Send-FIFO zum PC ist fehlerhaft + Send_FIFO_voll : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 3: Send-FIFO zu PC ist voll + Reset_aktiv : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 3: Reset ist aktiv + Weiche_MB3084 : Struct // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 4 MB3084 + Weichen_DL : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 4: Weichen-Datenliste fehlerhaft + Undef_Weiche : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 4: undefinierte Weiche + BLKMov : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 4: Fehler bei Block kopieren + Haupstrang_DL : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 4: Haupstrang-Datenliste fehlerhaft + Haupstrang_DL_voll : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 4: Haupstrang-Datenliste ist voll + Keine_HSDaten : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 4: Keine Hauptstrang-Daten mehr vorhanden + Rein_FIFO : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 4: Rein-FIFO fehlerhaft + Keine_FIFODaten : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 4: Keine Rein-FIFO-Daten mehr vorhanden + Stau_AusfahrBereich : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 4: Stau im Ausfahrbereich (-> Antrieb gestoppt) + BM_verklemmt_Gerade : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 4: Trolley bei Gerade-Fahrt in Weiche verklemmt (-> Antrieb gestoppt) + BM_verklemmt_Ausfahrt : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 4: Trolley bei Lager-Fahrt in Weiche verklemmt (-> Antrieb gestoppt) + BM_undef_Gerade : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 4: undefinierter Trolley bei Weiterfahrt erkannt + Frei14 : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 4: Frei 14 + Send_FIFO_fehlerhaft : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 4: Send-FIFO zum PC ist fehlerhaft + Send_FIFO_voll : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 4: Send-FIFO zu PC ist voll + Reset_aktiv : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 4: Reset ist aktiv + Weiche_MB3083 : Struct // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 5 MB3083 + Weichen_DL : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 5: Weichen-Datenliste fehlerhaft + Undef_Weiche : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 5: undefinierte Weiche + BLKMov : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 5: Fehler bei Block kopieren + Haupstrang_DL : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 5: Haupstrang-Datenliste fehlerhaft + Haupstrang_DL_voll : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 5: Haupstrang-Datenliste ist voll + Keine_HSDaten : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 5: Keine Hauptstrang-Daten mehr vorhanden + Rein_FIFO : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 5: Rein-FIFO fehlerhaft + Keine_FIFODaten : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 5: Keine Rein-FIFO-Daten mehr vorhanden + Stau_AusfahrBereich : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 5: Stau im Ausfahrbereich (-> Antrieb gestoppt) + BM_verklemmt_Gerade : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 5: Trolley bei Gerade-Fahrt in Weiche verklemmt (-> Antrieb gestoppt) + BM_verklemmt_Ausfahrt : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 5: Trolley bei Lager-Fahrt in Weiche verklemmt (-> Antrieb gestoppt) + BM_undef_Gerade : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 5: undefinierter Trolley bei Weiterfahrt erkannt + Frei14 : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 5: Frei 14 + Send_FIFO_fehlerhaft : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 5: Send-FIFO zum PC ist fehlerhaft + Send_FIFO_voll : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 5: Send-FIFO zu PC ist voll + Reset_aktiv : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 5: Reset ist aktiv + Weiche_MB3082 : Struct // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 6 MB3082 + Weichen_DL : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 6: Weichen-Datenliste fehlerhaft + Undef_Weiche : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 6: undefinierte Weiche + BLKMov : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 6: Fehler bei Block kopieren + Haupstrang_DL : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 6: Haupstrang-Datenliste fehlerhaft + Haupstrang_DL_voll : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 6: Haupstrang-Datenliste ist voll + Keine_HSDaten : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 6: Keine Hauptstrang-Daten mehr vorhanden + Rein_FIFO : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 6: Rein-FIFO fehlerhaft + Keine_FIFODaten : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 6: Keine Rein-FIFO-Daten mehr vorhanden + Stau_AusfahrBereich : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 6: Stau im Ausfahrbereich (-> Antrieb gestoppt) + BM_verklemmt_Gerade : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 6: Trolley bei Gerade-Fahrt in Weiche verklemmt (-> Antrieb gestoppt) + BM_verklemmt_Ausfahrt : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 6: Trolley bei Lager-Fahrt in Weiche verklemmt (-> Antrieb gestoppt) + BM_undef_Gerade : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 6: undefinierter Trolley bei Weiterfahrt erkannt + Frei14 : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 6: Frei 14 + Send_FIFO_fehlerhaft : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 6: Send-FIFO zum PC ist fehlerhaft + Send_FIFO_voll : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 6: Send-FIFO zu PC ist voll + Reset_aktiv : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 6: Reset ist aktiv + Weiche_MB3081 : Struct // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 7 MB3081 + Weichen_DL : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 7: Weichen-Datenliste fehlerhaft + Undef_Weiche : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 7: undefinierte Weiche + BLKMov : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 7: Fehler bei Block kopieren + Haupstrang_DL : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 7: Haupstrang-Datenliste fehlerhaft + Haupstrang_DL_voll : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 7: Haupstrang-Datenliste ist voll + Keine_HSDaten : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 7: Keine Hauptstrang-Daten mehr vorhanden + Rein_FIFO : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 7: Rein-FIFO fehlerhaft + Keine_FIFODaten : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 7: Keine Rein-FIFO-Daten mehr vorhanden + Stau_AusfahrBereich : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 7: Stau im Ausfahrbereich (-> Antrieb gestoppt) + BM_verklemmt_Gerade : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 7: Trolley bei Gerade-Fahrt in Weiche verklemmt (-> Antrieb gestoppt) + BM_verklemmt_Ausfahrt : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 7: Trolley bei Lager-Fahrt in Weiche verklemmt (-> Antrieb gestoppt) + BM_undef_Gerade : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 7: undefinierter Trolley bei Weiterfahrt erkannt + Frei14 : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 7: Frei 14 + Send_FIFO_fehlerhaft : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 7: Send-FIFO zum PC ist fehlerhaft + Send_FIFO_voll : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 7: Send-FIFO zu PC ist voll + Reset_aktiv : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 7: Reset ist aktiv + Weiche_MB3080 : Struct // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 8 MB3080 + Weichen_DL : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 8: Weichen-Datenliste fehlerhaft + Undef_Weiche : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 8: undefinierte Weiche + BLKMov : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 8: Fehler bei Block kopieren + Haupstrang_DL : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 8: Haupstrang-Datenliste fehlerhaft + Haupstrang_DL_voll : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 8: Haupstrang-Datenliste ist voll + Keine_HSDaten : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 8: Keine Hauptstrang-Daten mehr vorhanden + Rein_FIFO : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 8: Rein-FIFO fehlerhaft + Keine_FIFODaten : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 8: Keine Rein-FIFO-Daten mehr vorhanden + Stau_AusfahrBereich : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 8: Stau im Ausfahrbereich (-> Antrieb gestoppt) + BM_verklemmt_Gerade : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 8: Trolley bei Gerade-Fahrt in Weiche verklemmt (-> Antrieb gestoppt) + BM_verklemmt_Ausfahrt : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 8: Trolley bei Lager-Fahrt in Weiche verklemmt (-> Antrieb gestoppt) + BM_undef_Gerade : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 8: undefinierter Trolley bei Weiterfahrt erkannt + Frei14 : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 8: Frei 14 + Send_FIFO_fehlerhaft : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 8: Send-FIFO zum PC ist fehlerhaft + Send_FIFO_voll : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 8: Send-FIFO zu PC ist voll + Reset_aktiv : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 8: Reset ist aktiv + Weiche_MB3077 : Struct // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 9 MB3077 + Weichen_DL : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 9: Weichen-Datenliste fehlerhaft + Undef_Weiche : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 9: undefinierte Weiche + BLKMov : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 9: Fehler bei Block kopieren + Haupstrang_DL : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 9: Haupstrang-Datenliste fehlerhaft + Haupstrang_DL_voll : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 9: Haupstrang-Datenliste ist voll + Keine_HSDaten : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 9: Keine Hauptstrang-Daten mehr vorhanden + Rein_FIFO : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 9: Rein-FIFO fehlerhaft + Keine_FIFODaten : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 9: Keine Rein-FIFO-Daten mehr vorhanden + Stau_AusfahrBereich : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 9: Stau im Ausfahrbereich (-> Antrieb gestoppt) + BM_verklemmt_Gerade : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 9: Trolley bei Gerade-Fahrt in Weiche verklemmt (-> Antrieb gestoppt) + BM_verklemmt_Ausfahrt : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 9: Trolley bei Lager-Fahrt in Weiche verklemmt (-> Antrieb gestoppt) + BM_undef_Gerade : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 9: undefinierter Trolley bei Weiterfahrt erkannt + Frei14 : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 9: Frei 14 + Send_FIFO_fehlerhaft : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 9: Send-FIFO zum PC ist fehlerhaft + Send_FIFO_voll : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 9: Send-FIFO zu PC ist voll + Reset_aktiv : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 9: Reset ist aktiv + Weiche_MB3076 : Struct // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 10 MB3076 + Weichen_DL : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 10: Weichen-Datenliste fehlerhaft + Undef_Weiche : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 10: undefinierte Weiche + BLKMov : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 10: Fehler bei Block kopieren + Haupstrang_DL : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 10: Haupstrang-Datenliste fehlerhaft + Haupstrang_DL_voll : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 10: Haupstrang-Datenliste ist voll + Keine_HSDaten : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 10: Keine Hauptstrang-Daten mehr vorhanden + Rein_FIFO : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 10: Rein-FIFO fehlerhaft + Keine_FIFODaten : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 10: Keine Rein-FIFO-Daten mehr vorhanden + Stau_AusfahrBereich : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 10: Stau im Ausfahrbereich (-> Antrieb gestoppt) + BM_verklemmt_Gerade : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 10: Trolley bei Gerade-Fahrt in Weiche verklemmt (-> Antrieb gestoppt) + BM_verklemmt_Ausfahrt : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 10: Trolley bei Lager-Fahrt in Weiche verklemmt (-> Antrieb gestoppt) + BM_undef_Gerade : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 10: undefinierter Trolley bei Weiterfahrt erkannt + Frei14 : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 10: Frei 14 + Send_FIFO_fehlerhaft : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 10: Send-FIFO zum PC ist fehlerhaft + Send_FIFO_voll : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 10: Send-FIFO zu PC ist voll + Reset_aktiv : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 10: Reset ist aktiv + Weiche_MB3075 : Struct // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 11 MB3075 + Weichen_DL : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 11: Weichen-Datenliste fehlerhaft + Undef_Weiche : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 11: undefinierte Weiche + BLKMov : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 11: Fehler bei Block kopieren + Haupstrang_DL : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 11: Haupstrang-Datenliste fehlerhaft + Haupstrang_DL_voll : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 11: Haupstrang-Datenliste ist voll + Keine_HSDaten : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 11: Keine Hauptstrang-Daten mehr vorhanden + Rein_FIFO : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 11: Rein-FIFO fehlerhaft + Keine_FIFODaten : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 11: Keine Rein-FIFO-Daten mehr vorhanden + Stau_AusfahrBereich : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 11: Stau im Ausfahrbereich (-> Antrieb gestoppt) + BM_verklemmt_Gerade : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 11: Trolley bei Gerade-Fahrt in Weiche verklemmt (-> Antrieb gestoppt) + BM_verklemmt_Ausfahrt : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 11: Trolley bei Lager-Fahrt in Weiche verklemmt (-> Antrieb gestoppt) + BM_undef_Gerade : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 11: undefinierter Trolley bei Weiterfahrt erkannt + Frei14 : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 11: Frei 14 + Send_FIFO_fehlerhaft : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 11: Send-FIFO zum PC ist fehlerhaft + Send_FIFO_voll : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 11: Send-FIFO zu PC ist voll + Reset_aktiv : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 11: Reset ist aktiv + Weiche_MB3074 : Struct // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 12 MB3074 + Weichen_DL : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 12: Weichen-Datenliste fehlerhaft + Undef_Weiche : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 12: undefinierte Weiche + BLKMov : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 12: Fehler bei Block kopieren + Haupstrang_DL : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 12: Haupstrang-Datenliste fehlerhaft + Haupstrang_DL_voll : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 12: Haupstrang-Datenliste ist voll + Keine_HSDaten : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 12: Keine Hauptstrang-Daten mehr vorhanden + Rein_FIFO : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 12: Rein-FIFO fehlerhaft + Keine_FIFODaten : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 12: Keine Rein-FIFO-Daten mehr vorhanden + Stau_AusfahrBereich : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 12: Stau im Ausfahrbereich (-> Antrieb gestoppt) + BM_verklemmt_Gerade : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 12: Trolley bei Gerade-Fahrt in Weiche verklemmt (-> Antrieb gestoppt) + BM_verklemmt_Ausfahrt : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 12: Trolley bei Lager-Fahrt in Weiche verklemmt (-> Antrieb gestoppt) + BM_undef_Gerade : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 12: undefinierter Trolley bei Weiterfahrt erkannt + Frei14 : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 12: Frei 14 + Send_FIFO_fehlerhaft : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 12: Send-FIFO zum PC ist fehlerhaft + Send_FIFO_voll : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 12: Send-FIFO zu PC ist voll + Reset_aktiv : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 12: Reset ist aktiv + Weiche_MB3073 : Struct // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 13 MB3073 + Weichen_DL : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 13: Weichen-Datenliste fehlerhaft + Undef_Weiche : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 13: undefinierte Weiche + BLKMov : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 13: Fehler bei Block kopieren + Haupstrang_DL : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 13: Haupstrang-Datenliste fehlerhaft + Haupstrang_DL_voll : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 13: Haupstrang-Datenliste ist voll + Keine_HSDaten : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 13: Keine Hauptstrang-Daten mehr vorhanden + Rein_FIFO : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 13: Rein-FIFO fehlerhaft + Keine_FIFODaten : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 13: Keine Rein-FIFO-Daten mehr vorhanden + Stau_AusfahrBereich : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 13: Stau im Ausfahrbereich (-> Antrieb gestoppt) + BM_verklemmt_Gerade : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 13: Trolley bei Gerade-Fahrt in Weiche verklemmt (-> Antrieb gestoppt) + BM_verklemmt_Ausfahrt : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 13: Trolley bei Lager-Fahrt in Weiche verklemmt (-> Antrieb gestoppt) + BM_undef_Gerade : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 13: undefinierter Trolley bei Weiterfahrt erkannt + Frei14 : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 13: Frei 14 + Send_FIFO_fehlerhaft : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 13: Send-FIFO zum PC ist fehlerhaft + Send_FIFO_voll : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 13: Send-FIFO zu PC ist voll + Reset_aktiv : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 13: Reset ist aktiv + Weiche_MB3072 : Struct // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 14 MB3072 + Weichen_DL : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 14: Weichen-Datenliste fehlerhaft + Undef_Weiche : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 14: undefinierte Weiche + BLKMov : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 14: Fehler bei Block kopieren + Haupstrang_DL : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 14: Haupstrang-Datenliste fehlerhaft + Haupstrang_DL_voll : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 14: Haupstrang-Datenliste ist voll + Keine_HSDaten : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 14: Keine Hauptstrang-Daten mehr vorhanden + Rein_FIFO : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 14: Rein-FIFO fehlerhaft + Keine_FIFODaten : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 14: Keine Rein-FIFO-Daten mehr vorhanden + Stau_AusfahrBereich : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 14: Stau im Ausfahrbereich (-> Antrieb gestoppt) + BM_verklemmt_Gerade : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 14: Trolley bei Gerade-Fahrt in Weiche verklemmt (-> Antrieb gestoppt) + BM_verklemmt_Ausfahrt : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 14: Trolley bei Lager-Fahrt in Weiche verklemmt (-> Antrieb gestoppt) + BM_undef_Gerade : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 14: undefinierter Trolley bei Weiterfahrt erkannt + Frei14 : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 14: Frei 14 + Send_FIFO_fehlerhaft : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 14: Send-FIFO zum PC ist fehlerhaft + Send_FIFO_voll : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 14: Send-FIFO zu PC ist voll + Reset_aktiv : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 14: Reset ist aktiv + Weiche_MB3071 : Struct // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 15 MB3071 + Weichen_DL : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 15: Weichen-Datenliste fehlerhaft + Undef_Weiche : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 15: undefinierte Weiche + BLKMov : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 15: Fehler bei Block kopieren + Haupstrang_DL : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 15: Haupstrang-Datenliste fehlerhaft + Haupstrang_DL_voll : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 15: Haupstrang-Datenliste ist voll + Keine_HSDaten : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 15: Keine Hauptstrang-Daten mehr vorhanden + Rein_FIFO : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 15: Rein-FIFO fehlerhaft + Keine_FIFODaten : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 15: Keine Rein-FIFO-Daten mehr vorhanden + Stau_AusfahrBereich : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 15: Stau im Ausfahrbereich (-> Antrieb gestoppt) + BM_verklemmt_Gerade : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 15: Trolley bei Gerade-Fahrt in Weiche verklemmt (-> Antrieb gestoppt) + BM_verklemmt_Ausfahrt : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 15: Trolley bei Lager-Fahrt in Weiche verklemmt (-> Antrieb gestoppt) + BM_undef_Gerade : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 15: undefinierter Trolley bei Weiterfahrt erkannt + Frei14 : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 15: Frei 14 + Send_FIFO_fehlerhaft : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 15: Send-FIFO zum PC ist fehlerhaft + Send_FIFO_voll : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 15: Send-FIFO zu PC ist voll + Reset_aktiv : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 15: Reset ist aktiv + Weiche_MB3070 : Struct // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 16 MB3070 + Weichen_DL : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 16: Weichen-Datenliste fehlerhaft + Undef_Weiche : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 16: undefinierte Weiche + BLKMov : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 16: Fehler bei Block kopieren + Haupstrang_DL : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 16: Haupstrang-Datenliste fehlerhaft + Haupstrang_DL_voll : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 16: Haupstrang-Datenliste ist voll + Keine_HSDaten : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 16: Keine Hauptstrang-Daten mehr vorhanden + Rein_FIFO : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 16: Rein-FIFO fehlerhaft + Keine_FIFODaten : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 16: Keine Rein-FIFO-Daten mehr vorhanden + Stau_AusfahrBereich : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 16: Stau im Ausfahrbereich (-> Antrieb gestoppt) + BM_verklemmt_Gerade : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 16: Trolley bei Gerade-Fahrt in Weiche verklemmt (-> Antrieb gestoppt) + BM_verklemmt_Ausfahrt : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 16: Trolley bei Lager-Fahrt in Weiche verklemmt (-> Antrieb gestoppt) + BM_undef_Gerade : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 16: undefinierter Trolley bei Weiterfahrt erkannt + Frei14 : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 16: Frei 14 + Send_FIFO_fehlerhaft : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 16: Send-FIFO zum PC ist fehlerhaft + Send_FIFO_voll : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 16: Send-FIFO zu PC ist voll + Reset_aktiv : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 16: Reset ist aktiv + Weiche_MB3067 : Struct // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 17 MB3067 + Weichen_DL : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 17: Weichen-Datenliste fehlerhaft + Undef_Weiche : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 17: undefinierte Weiche + BLKMov : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 17: Fehler bei Block kopieren + Haupstrang_DL : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 17: Haupstrang-Datenliste fehlerhaft + Haupstrang_DL_voll : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 17: Haupstrang-Datenliste ist voll + Keine_HSDaten : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 17: Keine Hauptstrang-Daten mehr vorhanden + Rein_FIFO : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 17: Rein-FIFO fehlerhaft + Keine_FIFODaten : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 17: Keine Rein-FIFO-Daten mehr vorhanden + Stau_AusfahrBereich : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 17: Stau im Ausfahrbereich (-> Antrieb gestoppt) + BM_verklemmt_Gerade : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 17: Trolley bei Gerade-Fahrt in Weiche verklemmt (-> Antrieb gestoppt) + BM_verklemmt_Ausfahrt : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 17: Trolley bei Lager-Fahrt in Weiche verklemmt (-> Antrieb gestoppt) + BM_undef_Gerade : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 17: undefinierter Trolley bei Weiterfahrt erkannt + Frei14 : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 17: Frei 14 + Send_FIFO_fehlerhaft : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 17: Send-FIFO zum PC ist fehlerhaft + Send_FIFO_voll : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 17: Send-FIFO zu PC ist voll + Reset_aktiv : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 17: Reset ist aktiv + Weiche_MB3066 : Struct // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 18 MB3066 + Weichen_DL : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 18: Weichen-Datenliste fehlerhaft + Undef_Weiche : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 18: undefinierte Weiche + BLKMov : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 18: Fehler bei Block kopieren + Haupstrang_DL : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 18: Haupstrang-Datenliste fehlerhaft + Haupstrang_DL_voll : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 18: Haupstrang-Datenliste ist voll + Keine_HSDaten : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 18: Keine Hauptstrang-Daten mehr vorhanden + Rein_FIFO : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 18: Rein-FIFO fehlerhaft + Keine_FIFODaten : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 18: Keine Rein-FIFO-Daten mehr vorhanden + Stau_AusfahrBereich : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 18: Stau im Ausfahrbereich (-> Antrieb gestoppt) + BM_verklemmt_Gerade : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 18: Trolley bei Gerade-Fahrt in Weiche verklemmt (-> Antrieb gestoppt) + BM_verklemmt_Ausfahrt : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 18: Trolley bei Lager-Fahrt in Weiche verklemmt (-> Antrieb gestoppt) + BM_undef_Gerade : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 18: undefinierter Trolley bei Weiterfahrt erkannt + Frei14 : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 18: Frei 14 + Send_FIFO_fehlerhaft : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 18: Send-FIFO zum PC ist fehlerhaft + Send_FIFO_voll : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 18: Send-FIFO zu PC ist voll + Reset_aktiv : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 18: Reset ist aktiv + Weiche_MB3065 : Struct // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 19 MB3065 + Weichen_DL : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 19: Weichen-Datenliste fehlerhaft + Undef_Weiche : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 19: undefinierte Weiche + BLKMov : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 19: Fehler bei Block kopieren + Haupstrang_DL : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 19: Haupstrang-Datenliste fehlerhaft + Haupstrang_DL_voll : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 19: Haupstrang-Datenliste ist voll + Keine_HSDaten : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 19: Keine Hauptstrang-Daten mehr vorhanden + Rein_FIFO : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 19: Rein-FIFO fehlerhaft + Keine_FIFODaten : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 19: Keine Rein-FIFO-Daten mehr vorhanden + Stau_AusfahrBereich : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 19: Stau im Ausfahrbereich (-> Antrieb gestoppt) + BM_verklemmt_Gerade : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 19: Trolley bei Gerade-Fahrt in Weiche verklemmt (-> Antrieb gestoppt) + BM_verklemmt_Ausfahrt : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 19: Trolley bei Lager-Fahrt in Weiche verklemmt (-> Antrieb gestoppt) + BM_undef_Gerade : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 19: undefinierter Trolley bei Weiterfahrt erkannt + Frei14 : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 19: Frei 14 + Send_FIFO_fehlerhaft : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 19: Send-FIFO zum PC ist fehlerhaft + Send_FIFO_voll : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 19: Send-FIFO zu PC ist voll + Reset_aktiv : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 19: Reset ist aktiv + Weiche_MB3064 : Struct // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 20 MB3064 + Weichen_DL : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 20: Weichen-Datenliste fehlerhaft + Undef_Weiche : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 20: undefinierte Weiche + BLKMov : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 20: Fehler bei Block kopieren + Haupstrang_DL : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 20: Haupstrang-Datenliste fehlerhaft + Haupstrang_DL_voll : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 20: Haupstrang-Datenliste ist voll + Keine_HSDaten : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 20: Keine Hauptstrang-Daten mehr vorhanden + Rein_FIFO : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 20: Rein-FIFO fehlerhaft + Keine_FIFODaten : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 20: Keine Rein-FIFO-Daten mehr vorhanden + Stau_AusfahrBereich : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 20: Stau im Ausfahrbereich (-> Antrieb gestoppt) + BM_verklemmt_Gerade : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 20: Trolley bei Gerade-Fahrt in Weiche verklemmt (-> Antrieb gestoppt) + BM_verklemmt_Ausfahrt : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 20: Trolley bei Lager-Fahrt in Weiche verklemmt (-> Antrieb gestoppt) + BM_undef_Gerade : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 20: undefinierter Trolley bei Weiterfahrt erkannt + Frei14 : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 20: Frei 14 + Send_FIFO_fehlerhaft : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 20: Send-FIFO zum PC ist fehlerhaft + Send_FIFO_voll : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 20: Send-FIFO zu PC ist voll + Reset_aktiv : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 20: Reset ist aktiv + Weiche_MB3063 : Struct // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 21 MB3063 + Weichen_DL : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 21: Weichen-Datenliste fehlerhaft + Undef_Weiche : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 21: undefinierte Weiche + BLKMov : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 21: Fehler bei Block kopieren + Haupstrang_DL : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 21: Haupstrang-Datenliste fehlerhaft + Haupstrang_DL_voll : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 21: Haupstrang-Datenliste ist voll + Keine_HSDaten : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 21: Keine Hauptstrang-Daten mehr vorhanden + Rein_FIFO : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 21: Rein-FIFO fehlerhaft + Keine_FIFODaten : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 21: Keine Rein-FIFO-Daten mehr vorhanden + Stau_AusfahrBereich : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 21: Stau im Ausfahrbereich (-> Antrieb gestoppt) + BM_verklemmt_Gerade : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 21: Trolley bei Gerade-Fahrt in Weiche verklemmt (-> Antrieb gestoppt) + BM_verklemmt_Ausfahrt : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 21: Trolley bei Lager-Fahrt in Weiche verklemmt (-> Antrieb gestoppt) + BM_undef_Gerade : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 21: undefinierter Trolley bei Weiterfahrt erkannt + Frei14 : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 21: Frei 14 + Send_FIFO_fehlerhaft : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 21: Send-FIFO zum PC ist fehlerhaft + Send_FIFO_voll : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 21: Send-FIFO zu PC ist voll + Reset_aktiv : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 21: Reset ist aktiv + Weiche_MB3027 : Struct // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 22 MB3027 + Weichen_DL : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 22: Weichen-Datenliste fehlerhaft + Undef_Weiche : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 22: undefinierte Weiche + BLKMov : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 22: Fehler bei Block kopieren + Haupstrang_DL : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 22: Haupstrang-Datenliste fehlerhaft + Haupstrang_DL_voll : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 22: Haupstrang-Datenliste ist voll + Keine_HSDaten : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 22: Keine Hauptstrang-Daten mehr vorhanden + Rein_FIFO : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 22: Rein-FIFO fehlerhaft + Keine_FIFODaten : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 22: Keine Rein-FIFO-Daten mehr vorhanden + Stau_AusfahrBereich : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 22: Stau im Ausfahrbereich (-> Antrieb gestoppt) + BM_verklemmt_Gerade : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 22: Trolley bei Gerade-Fahrt in Weiche verklemmt (-> Antrieb gestoppt) + BM_verklemmt_Ausfahrt : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 22: Trolley bei Lager-Fahrt in Weiche verklemmt (-> Antrieb gestoppt) + BM_undef_Gerade : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 22: undefinierter Trolley bei Weiterfahrt erkannt + Frei14 : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 22: Frei 14 + Send_FIFO_fehlerhaft : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 22: Send-FIFO zum PC ist fehlerhaft + Send_FIFO_voll : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 22: Send-FIFO zu PC ist voll + Reset_aktiv : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 22: Reset ist aktiv + Weiche_MB3026 : Struct // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 23 MB3026 + Weichen_DL : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 23: Weichen-Datenliste fehlerhaft + Undef_Weiche : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 23: undefinierte Weiche + BLKMov : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 23: Fehler bei Block kopieren + Haupstrang_DL : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 23: Haupstrang-Datenliste fehlerhaft + Haupstrang_DL_voll : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 23: Haupstrang-Datenliste ist voll + Keine_HSDaten : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 23: Keine Hauptstrang-Daten mehr vorhanden + Rein_FIFO : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 23: Rein-FIFO fehlerhaft + Keine_FIFODaten : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 23: Keine Rein-FIFO-Daten mehr vorhanden + Stau_AusfahrBereich : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 23: Stau im Ausfahrbereich (-> Antrieb gestoppt) + BM_verklemmt_Gerade : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 23: Trolley bei Gerade-Fahrt in Weiche verklemmt (-> Antrieb gestoppt) + BM_verklemmt_Ausfahrt : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 23: Trolley bei Lager-Fahrt in Weiche verklemmt (-> Antrieb gestoppt) + BM_undef_Gerade : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 23: undefinierter Trolley bei Weiterfahrt erkannt + Frei14 : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 23: Frei 14 + Send_FIFO_fehlerhaft : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 23: Send-FIFO zum PC ist fehlerhaft + Send_FIFO_voll : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 23: Send-FIFO zu PC ist voll + Reset_aktiv : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 23: Reset ist aktiv + Weiche_MB3025 : Struct // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 24 MB3025 + Weichen_DL : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 24: Weichen-Datenliste fehlerhaft + Undef_Weiche : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 24: undefinierte Weiche + BLKMov : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 24: Fehler bei Block kopieren + Haupstrang_DL : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 24: Haupstrang-Datenliste fehlerhaft + Haupstrang_DL_voll : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 24: Haupstrang-Datenliste ist voll + Keine_HSDaten : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 24: Keine Hauptstrang-Daten mehr vorhanden + Rein_FIFO : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 24: Rein-FIFO fehlerhaft + Keine_FIFODaten : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 24: Keine Rein-FIFO-Daten mehr vorhanden + Stau_AusfahrBereich : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 24: Stau im Ausfahrbereich (-> Antrieb gestoppt) + BM_verklemmt_Gerade : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 24: Trolley bei Gerade-Fahrt in Weiche verklemmt (-> Antrieb gestoppt) + BM_verklemmt_Ausfahrt : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 24: Trolley bei Lager-Fahrt in Weiche verklemmt (-> Antrieb gestoppt) + BM_undef_Gerade : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 24: undefinierter Trolley bei Weiterfahrt erkannt + Frei14 : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 24: Frei 14 + Send_FIFO_fehlerhaft : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 24: Send-FIFO zum PC ist fehlerhaft + Send_FIFO_voll : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 24: Send-FIFO zu PC ist voll + Reset_aktiv : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 24: Reset ist aktiv + Weiche_MB3024 : Struct // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 25 MB3024 + Weichen_DL : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 25: Weichen-Datenliste fehlerhaft + Undef_Weiche : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 25: undefinierte Weiche + BLKMov : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 25: Fehler bei Block kopieren + Haupstrang_DL : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 25: Haupstrang-Datenliste fehlerhaft + Haupstrang_DL_voll : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 25: Haupstrang-Datenliste ist voll + Keine_HSDaten : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 25: Keine Hauptstrang-Daten mehr vorhanden + Rein_FIFO : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 25: Rein-FIFO fehlerhaft + Keine_FIFODaten : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 25: Keine Rein-FIFO-Daten mehr vorhanden + Stau_AusfahrBereich : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 25: Stau im Ausfahrbereich (-> Antrieb gestoppt) + BM_verklemmt_Gerade : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 25: Trolley bei Gerade-Fahrt in Weiche verklemmt (-> Antrieb gestoppt) + BM_verklemmt_Ausfahrt : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 25: Trolley bei Lager-Fahrt in Weiche verklemmt (-> Antrieb gestoppt) + BM_undef_Gerade : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 25: undefinierter Trolley bei Weiterfahrt erkannt + Frei14 : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 25: Frei 14 + Send_FIFO_fehlerhaft : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 25: Send-FIFO zum PC ist fehlerhaft + Send_FIFO_voll : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 25: Send-FIFO zu PC ist voll + Reset_aktiv : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 25: Reset ist aktiv + Weiche_MB3023 : Struct // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 26 MB3023 + Weichen_DL : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 26: Weichen-Datenliste fehlerhaft + Undef_Weiche : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 26: undefinierte Weiche + BLKMov : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 26: Fehler bei Block kopieren + Haupstrang_DL : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 26: Haupstrang-Datenliste fehlerhaft + Haupstrang_DL_voll : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 26: Haupstrang-Datenliste ist voll + Keine_HSDaten : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 26: Keine Hauptstrang-Daten mehr vorhanden + Rein_FIFO : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 26: Rein-FIFO fehlerhaft + Keine_FIFODaten : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 26: Keine Rein-FIFO-Daten mehr vorhanden + Stau_AusfahrBereich : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 26: Stau im Ausfahrbereich (-> Antrieb gestoppt) + BM_verklemmt_Gerade : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 26: Trolley bei Gerade-Fahrt in Weiche verklemmt (-> Antrieb gestoppt) + BM_verklemmt_Ausfahrt : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 26: Trolley bei Lager-Fahrt in Weiche verklemmt (-> Antrieb gestoppt) + BM_undef_Gerade : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 26: undefinierter Trolley bei Weiterfahrt erkannt + Frei14 : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 26: Frei 14 + Send_FIFO_fehlerhaft : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 26: Send-FIFO zum PC ist fehlerhaft + Send_FIFO_voll : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 26: Send-FIFO zu PC ist voll + Reset_aktiv : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 26: Reset ist aktiv + Weiche_MB3022 : Struct // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 27 MB3022 + Weichen_DL : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 27: Weichen-Datenliste fehlerhaft + Undef_Weiche : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 27: undefinierte Weiche + BLKMov : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 27: Fehler bei Block kopieren + Haupstrang_DL : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 27: Haupstrang-Datenliste fehlerhaft + Haupstrang_DL_voll : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 27: Haupstrang-Datenliste ist voll + Keine_HSDaten : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 27: Keine Hauptstrang-Daten mehr vorhanden + Rein_FIFO : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 27: Rein-FIFO fehlerhaft + Keine_FIFODaten : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 27: Keine Rein-FIFO-Daten mehr vorhanden + Stau_AusfahrBereich : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 27: Stau im Ausfahrbereich (-> Antrieb gestoppt) + BM_verklemmt_Gerade : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 27: Trolley bei Gerade-Fahrt in Weiche verklemmt (-> Antrieb gestoppt) + BM_verklemmt_Ausfahrt : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 27: Trolley bei Lager-Fahrt in Weiche verklemmt (-> Antrieb gestoppt) + BM_undef_Gerade : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 27: undefinierter Trolley bei Weiterfahrt erkannt + Frei14 : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 27: Frei 14 + Send_FIFO_fehlerhaft : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 27: Send-FIFO zum PC ist fehlerhaft + Send_FIFO_voll : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 27: Send-FIFO zu PC ist voll + Reset_aktiv : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 27: Reset ist aktiv + Weiche_MB3021 : Struct // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 28 MB3021 + Weichen_DL : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 28: Weichen-Datenliste fehlerhaft + Undef_Weiche : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 28: undefinierte Weiche + BLKMov : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 28: Fehler bei Block kopieren + Haupstrang_DL : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 28: Haupstrang-Datenliste fehlerhaft + Haupstrang_DL_voll : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 28: Haupstrang-Datenliste ist voll + Keine_HSDaten : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 28: Keine Hauptstrang-Daten mehr vorhanden + Rein_FIFO : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 28: Rein-FIFO fehlerhaft + Keine_FIFODaten : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 28: Keine Rein-FIFO-Daten mehr vorhanden + Stau_AusfahrBereich : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 28: Stau im Ausfahrbereich (-> Antrieb gestoppt) + BM_verklemmt_Gerade : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 28: Trolley bei Gerade-Fahrt in Weiche verklemmt (-> Antrieb gestoppt) + BM_verklemmt_Ausfahrt : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 28: Trolley bei Lager-Fahrt in Weiche verklemmt (-> Antrieb gestoppt) + BM_undef_Gerade : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 28: undefinierter Trolley bei Weiterfahrt erkannt + Frei14 : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 28: Frei 14 + Send_FIFO_fehlerhaft : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 28: Send-FIFO zum PC ist fehlerhaft + Send_FIFO_voll : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 28: Send-FIFO zu PC ist voll + Reset_aktiv : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 28: Reset ist aktiv + Weiche_MB3020 : Struct // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 29 MB3020 + Weichen_DL : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 29: Weichen-Datenliste fehlerhaft + Undef_Weiche : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 29: undefinierte Weiche + BLKMov : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 29: Fehler bei Block kopieren + Haupstrang_DL : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 29: Haupstrang-Datenliste fehlerhaft + Haupstrang_DL_voll : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 29: Haupstrang-Datenliste ist voll + Keine_HSDaten : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 29: Keine Hauptstrang-Daten mehr vorhanden + Rein_FIFO : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 29: Rein-FIFO fehlerhaft + Keine_FIFODaten : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 29: Keine Rein-FIFO-Daten mehr vorhanden + Stau_AusfahrBereich : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 29: Stau im Ausfahrbereich (-> Antrieb gestoppt) + BM_verklemmt_Gerade : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 29: Trolley bei Gerade-Fahrt in Weiche verklemmt (-> Antrieb gestoppt) + BM_verklemmt_Ausfahrt : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 29: Trolley bei Lager-Fahrt in Weiche verklemmt (-> Antrieb gestoppt) + BM_undef_Gerade : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 29: undefinierter Trolley bei Weiterfahrt erkannt + Frei14 : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 29: Frei 14 + Send_FIFO_fehlerhaft : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 29: Send-FIFO zum PC ist fehlerhaft + Send_FIFO_voll : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 29: Send-FIFO zu PC ist voll + Reset_aktiv : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 29: Reset ist aktiv + Weiche_MB3017 : Struct // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 30 MB3017 + Weichen_DL : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 30: Weichen-Datenliste fehlerhaft + Undef_Weiche : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 30: undefinierte Weiche + BLKMov : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 30: Fehler bei Block kopieren + Haupstrang_DL : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 30: Haupstrang-Datenliste fehlerhaft + Haupstrang_DL_voll : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 30: Haupstrang-Datenliste ist voll + Keine_HSDaten : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 30: Keine Hauptstrang-Daten mehr vorhanden + Rein_FIFO : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 30: Rein-FIFO fehlerhaft + Keine_FIFODaten : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 30: Keine Rein-FIFO-Daten mehr vorhanden + Stau_AusfahrBereich : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 30: Stau im Ausfahrbereich (-> Antrieb gestoppt) + BM_verklemmt_Gerade : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 30: Trolley bei Gerade-Fahrt in Weiche verklemmt (-> Antrieb gestoppt) + BM_verklemmt_Ausfahrt : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 30: Trolley bei Lager-Fahrt in Weiche verklemmt (-> Antrieb gestoppt) + BM_undef_Gerade : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 30: undefinierter Trolley bei Weiterfahrt erkannt + Frei14 : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 30: Frei 14 + Send_FIFO_fehlerhaft : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 30: Send-FIFO zum PC ist fehlerhaft + Send_FIFO_voll : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 30: Send-FIFO zu PC ist voll + Reset_aktiv : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 30: Reset ist aktiv + Weiche_MB3016 : Struct // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 31 MB3016 + Weichen_DL : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 31: Weichen-Datenliste fehlerhaft + Undef_Weiche : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 31: undefinierte Weiche + BLKMov : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 31: Fehler bei Block kopieren + Haupstrang_DL : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 31: Haupstrang-Datenliste fehlerhaft + Haupstrang_DL_voll : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 31: Haupstrang-Datenliste ist voll + Keine_HSDaten : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 31: Keine Hauptstrang-Daten mehr vorhanden + Rein_FIFO : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 31: Rein-FIFO fehlerhaft + Keine_FIFODaten : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 31: Keine Rein-FIFO-Daten mehr vorhanden + Stau_AusfahrBereich : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 31: Stau im Ausfahrbereich (-> Antrieb gestoppt) + BM_verklemmt_Gerade : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 31: Trolley bei Gerade-Fahrt in Weiche verklemmt (-> Antrieb gestoppt) + BM_verklemmt_Ausfahrt : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 31: Trolley bei Lager-Fahrt in Weiche verklemmt (-> Antrieb gestoppt) + BM_undef_Gerade : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 31: undefinierter Trolley bei Weiterfahrt erkannt + Frei14 : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 31: Frei 14 + Send_FIFO_fehlerhaft : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 31: Send-FIFO zum PC ist fehlerhaft + Send_FIFO_voll : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 31: Send-FIFO zu PC ist voll + Reset_aktiv : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 31: Reset ist aktiv + Weiche_MB3015 : Struct // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 32 MB3015 + Weichen_DL : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 32: Weichen-Datenliste fehlerhaft + Undef_Weiche : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 32: undefinierte Weiche + BLKMov : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 32: Fehler bei Block kopieren + Haupstrang_DL : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 32: Haupstrang-Datenliste fehlerhaft + Haupstrang_DL_voll : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 32: Haupstrang-Datenliste ist voll + Keine_HSDaten : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 32: Keine Hauptstrang-Daten mehr vorhanden + Rein_FIFO : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 32: Rein-FIFO fehlerhaft + Keine_FIFODaten : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 32: Keine Rein-FIFO-Daten mehr vorhanden + Stau_AusfahrBereich : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 32: Stau im Ausfahrbereich (-> Antrieb gestoppt) + BM_verklemmt_Gerade : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 32: Trolley bei Gerade-Fahrt in Weiche verklemmt (-> Antrieb gestoppt) + BM_verklemmt_Ausfahrt : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 32: Trolley bei Lager-Fahrt in Weiche verklemmt (-> Antrieb gestoppt) + BM_undef_Gerade : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 32: undefinierter Trolley bei Weiterfahrt erkannt + Frei14 : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 32: Frei 14 + Send_FIFO_fehlerhaft : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 32: Send-FIFO zum PC ist fehlerhaft + Send_FIFO_voll : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 32: Send-FIFO zu PC ist voll + Reset_aktiv : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 32: Reset ist aktiv + Weiche_MB3014 : Struct // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 33 MB3014 + Weichen_DL : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 33: Weichen-Datenliste fehlerhaft + Undef_Weiche : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 33: undefinierte Weiche + BLKMov : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 33: Fehler bei Block kopieren + Haupstrang_DL : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 33: Haupstrang-Datenliste fehlerhaft + Haupstrang_DL_voll : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 33: Haupstrang-Datenliste ist voll + Keine_HSDaten : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 33: Keine Hauptstrang-Daten mehr vorhanden + Rein_FIFO : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 33: Rein-FIFO fehlerhaft + Keine_FIFODaten : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 33: Keine Rein-FIFO-Daten mehr vorhanden + Stau_AusfahrBereich : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 33: Stau im Ausfahrbereich (-> Antrieb gestoppt) + BM_verklemmt_Gerade : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 33: Trolley bei Gerade-Fahrt in Weiche verklemmt (-> Antrieb gestoppt) + BM_verklemmt_Ausfahrt : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 33: Trolley bei Lager-Fahrt in Weiche verklemmt (-> Antrieb gestoppt) + BM_undef_Gerade : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 33: undefinierter Trolley bei Weiterfahrt erkannt + Frei14 : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 33: Frei 14 + Send_FIFO_fehlerhaft : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 33: Send-FIFO zum PC ist fehlerhaft + Send_FIFO_voll : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 33: Send-FIFO zu PC ist voll + Reset_aktiv : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 33: Reset ist aktiv + Weiche_MB3013 : Struct // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 34 MB3013 + Weichen_DL : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 34: Weichen-Datenliste fehlerhaft + Undef_Weiche : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 34: undefinierte Weiche + BLKMov : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 34: Fehler bei Block kopieren + Haupstrang_DL : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 34: Haupstrang-Datenliste fehlerhaft + Haupstrang_DL_voll : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 34: Haupstrang-Datenliste ist voll + Keine_HSDaten : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 34: Keine Hauptstrang-Daten mehr vorhanden + Rein_FIFO : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 34: Rein-FIFO fehlerhaft + Keine_FIFODaten : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 34: Keine Rein-FIFO-Daten mehr vorhanden + Stau_AusfahrBereich : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 34: Stau im Ausfahrbereich (-> Antrieb gestoppt) + BM_verklemmt_Gerade : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 34: Trolley bei Gerade-Fahrt in Weiche verklemmt (-> Antrieb gestoppt) + BM_verklemmt_Ausfahrt : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 34: Trolley bei Lager-Fahrt in Weiche verklemmt (-> Antrieb gestoppt) + BM_undef_Gerade : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 34: undefinierter Trolley bei Weiterfahrt erkannt + Frei14 : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 34: Frei 14 + Send_FIFO_fehlerhaft : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 34: Send-FIFO zum PC ist fehlerhaft + Send_FIFO_voll : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 34: Send-FIFO zu PC ist voll + Reset_aktiv : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 34: Reset ist aktiv + Weiche_MB3012 : Struct // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 35 MB3012 + Weichen_DL : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 35: Weichen-Datenliste fehlerhaft + Undef_Weiche : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 35: undefinierte Weiche + BLKMov : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 35: Fehler bei Block kopieren + Haupstrang_DL : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 35: Haupstrang-Datenliste fehlerhaft + Haupstrang_DL_voll : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 35: Haupstrang-Datenliste ist voll + Keine_HSDaten : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 35: Keine Hauptstrang-Daten mehr vorhanden + Rein_FIFO : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 35: Rein-FIFO fehlerhaft + Keine_FIFODaten : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 35: Keine Rein-FIFO-Daten mehr vorhanden + Stau_AusfahrBereich : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 35: Stau im Ausfahrbereich (-> Antrieb gestoppt) + BM_verklemmt_Gerade : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 35: Trolley bei Gerade-Fahrt in Weiche verklemmt (-> Antrieb gestoppt) + BM_verklemmt_Ausfahrt : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 35: Trolley bei Lager-Fahrt in Weiche verklemmt (-> Antrieb gestoppt) + BM_undef_Gerade : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 35: undefinierter Trolley bei Weiterfahrt erkannt + Frei14 : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 35: Frei 14 + Send_FIFO_fehlerhaft : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 35: Send-FIFO zum PC ist fehlerhaft + Send_FIFO_voll : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 35: Send-FIFO zu PC ist voll + Reset_aktiv : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 35: Reset ist aktiv + Weiche_MB3011 : Struct // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 36 MB3011 + Weichen_DL : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 36: Weichen-Datenliste fehlerhaft + Undef_Weiche : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 36: undefinierte Weiche + BLKMov : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 36: Fehler bei Block kopieren + Haupstrang_DL : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 36: Haupstrang-Datenliste fehlerhaft + Haupstrang_DL_voll : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 36: Haupstrang-Datenliste ist voll + Keine_HSDaten : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 36: Keine Hauptstrang-Daten mehr vorhanden + Rein_FIFO : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 36: Rein-FIFO fehlerhaft + Keine_FIFODaten : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 36: Keine Rein-FIFO-Daten mehr vorhanden + Stau_AusfahrBereich : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 36: Stau im Ausfahrbereich (-> Antrieb gestoppt) + BM_verklemmt_Gerade : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 36: Trolley bei Gerade-Fahrt in Weiche verklemmt (-> Antrieb gestoppt) + BM_verklemmt_Ausfahrt : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 36: Trolley bei Lager-Fahrt in Weiche verklemmt (-> Antrieb gestoppt) + BM_undef_Gerade : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 36: undefinierter Trolley bei Weiterfahrt erkannt + Frei14 : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 36: Frei 14 + Send_FIFO_fehlerhaft : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 36: Send-FIFO zum PC ist fehlerhaft + Send_FIFO_voll : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 36: Send-FIFO zu PC ist voll + Reset_aktiv : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 36: Reset ist aktiv + Weiche_MB3010 : Struct // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 37 MB3010 + Weichen_DL : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 37: Weichen-Datenliste fehlerhaft + Undef_Weiche : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 37: undefinierte Weiche + BLKMov : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 37: Fehler bei Block kopieren + Haupstrang_DL : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 37: Haupstrang-Datenliste fehlerhaft + Haupstrang_DL_voll : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 37: Haupstrang-Datenliste ist voll + Keine_HSDaten : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 37: Keine Hauptstrang-Daten mehr vorhanden + Rein_FIFO : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 37: Rein-FIFO fehlerhaft + Keine_FIFODaten : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 37: Keine Rein-FIFO-Daten mehr vorhanden + Stau_AusfahrBereich : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 37: Stau im Ausfahrbereich (-> Antrieb gestoppt) + BM_verklemmt_Gerade : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 37: Trolley bei Gerade-Fahrt in Weiche verklemmt (-> Antrieb gestoppt) + BM_verklemmt_Ausfahrt : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 37: Trolley bei Lager-Fahrt in Weiche verklemmt (-> Antrieb gestoppt) + BM_undef_Gerade : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 37: undefinierter Trolley bei Weiterfahrt erkannt + Frei14 : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 37: Frei 14 + Send_FIFO_fehlerhaft : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 37: Send-FIFO zum PC ist fehlerhaft + Send_FIFO_voll : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 37: Send-FIFO zu PC ist voll + Reset_aktiv : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 37: Reset ist aktiv + Weiche_MB3007 : Struct // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 38 MB3007 + Weichen_DL : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 38: Weichen-Datenliste fehlerhaft + Undef_Weiche : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 38: undefinierte Weiche + BLKMov : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 38: Fehler bei Block kopieren + Haupstrang_DL : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 38: Haupstrang-Datenliste fehlerhaft + Haupstrang_DL_voll : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 38: Haupstrang-Datenliste ist voll + Keine_HSDaten : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 38: Keine Hauptstrang-Daten mehr vorhanden + Rein_FIFO : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 38: Rein-FIFO fehlerhaft + Keine_FIFODaten : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 38: Keine Rein-FIFO-Daten mehr vorhanden + Stau_AusfahrBereich : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 38: Stau im Ausfahrbereich (-> Antrieb gestoppt) + BM_verklemmt_Gerade : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 38: Trolley bei Gerade-Fahrt in Weiche verklemmt (-> Antrieb gestoppt) + BM_verklemmt_Ausfahrt : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 38: Trolley bei Lager-Fahrt in Weiche verklemmt (-> Antrieb gestoppt) + BM_undef_Gerade : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 38: undefinierter Trolley bei Weiterfahrt erkannt + Frei14 : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 38: Frei 14 + Send_FIFO_fehlerhaft : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 38: Send-FIFO zum PC ist fehlerhaft + Send_FIFO_voll : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 38: Send-FIFO zu PC ist voll + Reset_aktiv : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 38: Reset ist aktiv + Weiche_MB3006 : Struct // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 39 MB3006 + Weichen_DL : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 39: Weichen-Datenliste fehlerhaft + Undef_Weiche : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 39: undefinierte Weiche + BLKMov : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 39: Fehler bei Block kopieren + Haupstrang_DL : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 39: Haupstrang-Datenliste fehlerhaft + Haupstrang_DL_voll : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 39: Haupstrang-Datenliste ist voll + Keine_HSDaten : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 39: Keine Hauptstrang-Daten mehr vorhanden + Rein_FIFO : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 39: Rein-FIFO fehlerhaft + Keine_FIFODaten : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 39: Keine Rein-FIFO-Daten mehr vorhanden + Stau_AusfahrBereich : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 39: Stau im Ausfahrbereich (-> Antrieb gestoppt) + BM_verklemmt_Gerade : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 39: Trolley bei Gerade-Fahrt in Weiche verklemmt (-> Antrieb gestoppt) + BM_verklemmt_Ausfahrt : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 39: Trolley bei Lager-Fahrt in Weiche verklemmt (-> Antrieb gestoppt) + BM_undef_Gerade : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 39: undefinierter Trolley bei Weiterfahrt erkannt + Frei14 : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 39: Frei 14 + Send_FIFO_fehlerhaft : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 39: Send-FIFO zum PC ist fehlerhaft + Send_FIFO_voll : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 39: Send-FIFO zu PC ist voll + Reset_aktiv : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 39: Reset ist aktiv + Weiche_MB3005 : Struct // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 40 MB3005 + Weichen_DL : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 40: Weichen-Datenliste fehlerhaft + Undef_Weiche : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 40: undefinierte Weiche + BLKMov : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 40: Fehler bei Block kopieren + Haupstrang_DL : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 40: Haupstrang-Datenliste fehlerhaft + Haupstrang_DL_voll : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 40: Haupstrang-Datenliste ist voll + Keine_HSDaten : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 40: Keine Hauptstrang-Daten mehr vorhanden + Rein_FIFO : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 40: Rein-FIFO fehlerhaft + Keine_FIFODaten : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 40: Keine Rein-FIFO-Daten mehr vorhanden + Stau_AusfahrBereich : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 40: Stau im Ausfahrbereich (-> Antrieb gestoppt) + BM_verklemmt_Gerade : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 40: Trolley bei Gerade-Fahrt in Weiche verklemmt (-> Antrieb gestoppt) + BM_verklemmt_Ausfahrt : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 40: Trolley bei Lager-Fahrt in Weiche verklemmt (-> Antrieb gestoppt) + BM_undef_Gerade : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 40: undefinierter Trolley bei Weiterfahrt erkannt + Frei14 : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 40: Frei 14 + Send_FIFO_fehlerhaft : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 40: Send-FIFO zum PC ist fehlerhaft + Send_FIFO_voll : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 40: Send-FIFO zu PC ist voll + Reset_aktiv : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 40: Reset ist aktiv + Weiche_MB3435 : Struct // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 41 MB3435 + Weichen_DL : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 41: Weichen-Datenliste fehlerhaft + Undef_Weiche : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 41: undefinierte Weiche + BLKMov : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 41: Fehler bei Block kopieren + Haupstrang_DL : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 41: Haupstrang-Datenliste fehlerhaft + Haupstrang_DL_voll : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 41: Haupstrang-Datenliste ist voll + Keine_HSDaten : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 41: Keine Hauptstrang-Daten mehr vorhanden + Rein_FIFO : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 41: Rein-FIFO fehlerhaft + Keine_FIFODaten : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 41: Keine Rein-FIFO-Daten mehr vorhanden + Stau_AusfahrBereich : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 41: Stau im Ausfahrbereich (-> Antrieb gestoppt) + BM_verklemmt_Gerade : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 41: Trolley bei Gerade-Fahrt in Weiche verklemmt (-> Antrieb gestoppt) + BM_verklemmt_Ausfahrt : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 41: Trolley bei Lager-Fahrt in Weiche verklemmt (-> Antrieb gestoppt) + BM_undef_Gerade : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 41: undefinierter Trolley bei Weiterfahrt erkannt + Frei14 : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 41: Frei 14 + Send_FIFO_fehlerhaft : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 41: Send-FIFO zum PC ist fehlerhaft + Send_FIFO_voll : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 41: Send-FIFO zu PC ist voll + Reset_aktiv : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 41: Reset ist aktiv + Weiche_MB3434 : Struct // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 42 MB3434 + Weichen_DL : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 42: Weichen-Datenliste fehlerhaft + Undef_Weiche : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 42: undefinierte Weiche + BLKMov : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 42: Fehler bei Block kopieren + Haupstrang_DL : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 42: Haupstrang-Datenliste fehlerhaft + Haupstrang_DL_voll : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 42: Haupstrang-Datenliste ist voll + Keine_HSDaten : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 42: Keine Hauptstrang-Daten mehr vorhanden + Rein_FIFO : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 42: Rein-FIFO fehlerhaft + Keine_FIFODaten : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 42: Keine Rein-FIFO-Daten mehr vorhanden + Stau_AusfahrBereich : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 42: Stau im Ausfahrbereich (-> Antrieb gestoppt) + BM_verklemmt_Gerade : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 42: Trolley bei Gerade-Fahrt in Weiche verklemmt (-> Antrieb gestoppt) + BM_verklemmt_Ausfahrt : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 42: Trolley bei Lager-Fahrt in Weiche verklemmt (-> Antrieb gestoppt) + BM_undef_Gerade : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 42: undefinierter Trolley bei Weiterfahrt erkannt + Frei14 : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 42: Frei 14 + Send_FIFO_fehlerhaft : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 42: Send-FIFO zum PC ist fehlerhaft + Send_FIFO_voll : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 42: Send-FIFO zu PC ist voll + Reset_aktiv : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 42: Reset ist aktiv + Weiche_MB3433 : Struct // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 43 MB3433 + Weichen_DL : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 43: Weichen-Datenliste fehlerhaft + Undef_Weiche : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 43: undefinierte Weiche + BLKMov : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 43: Fehler bei Block kopieren + Haupstrang_DL : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 43: Haupstrang-Datenliste fehlerhaft + Haupstrang_DL_voll : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 43: Haupstrang-Datenliste ist voll + Keine_HSDaten : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 43: Keine Hauptstrang-Daten mehr vorhanden + Rein_FIFO : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 43: Rein-FIFO fehlerhaft + Keine_FIFODaten : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 43: Keine Rein-FIFO-Daten mehr vorhanden + Stau_AusfahrBereich : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 43: Stau im Ausfahrbereich (-> Antrieb gestoppt) + BM_verklemmt_Gerade : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 43: Trolley bei Gerade-Fahrt in Weiche verklemmt (-> Antrieb gestoppt) + BM_verklemmt_Ausfahrt : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 43: Trolley bei Lager-Fahrt in Weiche verklemmt (-> Antrieb gestoppt) + BM_undef_Gerade : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 43: undefinierter Trolley bei Weiterfahrt erkannt + Frei14 : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 43: Frei 14 + Send_FIFO_fehlerhaft : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 43: Send-FIFO zum PC ist fehlerhaft + Send_FIFO_voll : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 43: Send-FIFO zu PC ist voll + Reset_aktiv : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 43: Reset ist aktiv + Weiche_MB3432 : Struct // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 44 MB3432 + Weichen_DL : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 44: Weichen-Datenliste fehlerhaft + Undef_Weiche : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 44: undefinierte Weiche + BLKMov : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 44: Fehler bei Block kopieren + Haupstrang_DL : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 44: Haupstrang-Datenliste fehlerhaft + Haupstrang_DL_voll : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 44: Haupstrang-Datenliste ist voll + Keine_HSDaten : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 44: Keine Hauptstrang-Daten mehr vorhanden + Rein_FIFO : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 44: Rein-FIFO fehlerhaft + Keine_FIFODaten : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 44: Keine Rein-FIFO-Daten mehr vorhanden + Stau_AusfahrBereich : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 44: Stau im Ausfahrbereich (-> Antrieb gestoppt) + BM_verklemmt_Gerade : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 44: Trolley bei Gerade-Fahrt in Weiche verklemmt (-> Antrieb gestoppt) + BM_verklemmt_Ausfahrt : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 44: Trolley bei Lager-Fahrt in Weiche verklemmt (-> Antrieb gestoppt) + BM_undef_Gerade : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 44: undefinierter Trolley bei Weiterfahrt erkannt + Frei14 : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 44: Frei 14 + Send_FIFO_fehlerhaft : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 44: Send-FIFO zum PC ist fehlerhaft + Send_FIFO_voll : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 44: Send-FIFO zu PC ist voll + Reset_aktiv : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 44: Reset ist aktiv + Weiche_MB3431 : Struct // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 45 MB3431 + Weichen_DL : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 45: Weichen-Datenliste fehlerhaft + Undef_Weiche : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 45: undefinierte Weiche + BLKMov : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 45: Fehler bei Block kopieren + Haupstrang_DL : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 45: Haupstrang-Datenliste fehlerhaft + Haupstrang_DL_voll : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 45: Haupstrang-Datenliste ist voll + Keine_HSDaten : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 45: Keine Hauptstrang-Daten mehr vorhanden + Rein_FIFO : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 45: Rein-FIFO fehlerhaft + Keine_FIFODaten : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 45: Keine Rein-FIFO-Daten mehr vorhanden + Stau_AusfahrBereich : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 45: Stau im Ausfahrbereich (-> Antrieb gestoppt) + BM_verklemmt_Gerade : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 45: Trolley bei Gerade-Fahrt in Weiche verklemmt (-> Antrieb gestoppt) + BM_verklemmt_Ausfahrt : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 45: Trolley bei Lager-Fahrt in Weiche verklemmt (-> Antrieb gestoppt) + BM_undef_Gerade : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 45: undefinierter Trolley bei Weiterfahrt erkannt + Frei14 : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 45: Frei 14 + Send_FIFO_fehlerhaft : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 45: Send-FIFO zum PC ist fehlerhaft + Send_FIFO_voll : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 45: Send-FIFO zu PC ist voll + Reset_aktiv : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 45: Reset ist aktiv + Weiche_MB3430 : Struct // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 46 MB3430 + Weichen_DL : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 46: Weichen-Datenliste fehlerhaft + Undef_Weiche : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 46: undefinierte Weiche + BLKMov : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 46: Fehler bei Block kopieren + Haupstrang_DL : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 46: Haupstrang-Datenliste fehlerhaft + Haupstrang_DL_voll : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 46: Haupstrang-Datenliste ist voll + Keine_HSDaten : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 46: Keine Hauptstrang-Daten mehr vorhanden + Rein_FIFO : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 46: Rein-FIFO fehlerhaft + Keine_FIFODaten : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 46: Keine Rein-FIFO-Daten mehr vorhanden + Stau_AusfahrBereich : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 46: Stau im Ausfahrbereich (-> Antrieb gestoppt) + BM_verklemmt_Gerade : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 46: Trolley bei Gerade-Fahrt in Weiche verklemmt (-> Antrieb gestoppt) + BM_verklemmt_Ausfahrt : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 46: Trolley bei Lager-Fahrt in Weiche verklemmt (-> Antrieb gestoppt) + BM_undef_Gerade : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 46: undefinierter Trolley bei Weiterfahrt erkannt + Frei14 : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 46: Frei 14 + Send_FIFO_fehlerhaft : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 46: Send-FIFO zum PC ist fehlerhaft + Send_FIFO_voll : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 46: Send-FIFO zu PC ist voll + Reset_aktiv : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 46: Reset ist aktiv + Weiche_MB3427 : Struct // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 47 MB3427 + Weichen_DL : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 47: Weichen-Datenliste fehlerhaft + Undef_Weiche : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 47: undefinierte Weiche + BLKMov : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 47: Fehler bei Block kopieren + Haupstrang_DL : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 47: Haupstrang-Datenliste fehlerhaft + Haupstrang_DL_voll : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 47: Haupstrang-Datenliste ist voll + Keine_HSDaten : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 47: Keine Hauptstrang-Daten mehr vorhanden + Rein_FIFO : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 47: Rein-FIFO fehlerhaft + Keine_FIFODaten : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 47: Keine Rein-FIFO-Daten mehr vorhanden + Stau_AusfahrBereich : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 47: Stau im Ausfahrbereich (-> Antrieb gestoppt) + BM_verklemmt_Gerade : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 47: Trolley bei Gerade-Fahrt in Weiche verklemmt (-> Antrieb gestoppt) + BM_verklemmt_Ausfahrt : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 47: Trolley bei Lager-Fahrt in Weiche verklemmt (-> Antrieb gestoppt) + BM_undef_Gerade : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 47: undefinierter Trolley bei Weiterfahrt erkannt + Frei14 : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 47: Frei 14 + Send_FIFO_fehlerhaft : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 47: Send-FIFO zum PC ist fehlerhaft + Send_FIFO_voll : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 47: Send-FIFO zu PC ist voll + Reset_aktiv : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 47: Reset ist aktiv + Weiche_MB3426 : Struct // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 48 MB3426 + Weichen_DL : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 48: Weichen-Datenliste fehlerhaft + Undef_Weiche : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 48: undefinierte Weiche + BLKMov : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 48: Fehler bei Block kopieren + Haupstrang_DL : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 48: Haupstrang-Datenliste fehlerhaft + Haupstrang_DL_voll : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 48: Haupstrang-Datenliste ist voll + Keine_HSDaten : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 48: Keine Hauptstrang-Daten mehr vorhanden + Rein_FIFO : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 48: Rein-FIFO fehlerhaft + Keine_FIFODaten : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 48: Keine Rein-FIFO-Daten mehr vorhanden + Stau_AusfahrBereich : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 48: Stau im Ausfahrbereich (-> Antrieb gestoppt) + BM_verklemmt_Gerade : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 48: Trolley bei Gerade-Fahrt in Weiche verklemmt (-> Antrieb gestoppt) + BM_verklemmt_Ausfahrt : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 48: Trolley bei Lager-Fahrt in Weiche verklemmt (-> Antrieb gestoppt) + BM_undef_Gerade : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 48: undefinierter Trolley bei Weiterfahrt erkannt + Frei14 : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 48: Frei 14 + Send_FIFO_fehlerhaft : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 48: Send-FIFO zum PC ist fehlerhaft + Send_FIFO_voll : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 48: Send-FIFO zu PC ist voll + Reset_aktiv : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 48: Reset ist aktiv + Weiche_MB3425 : Struct // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 49 MB3425 + Weichen_DL : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 49: Weichen-Datenliste fehlerhaft + Undef_Weiche : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 49: undefinierte Weiche + BLKMov : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 49: Fehler bei Block kopieren + Haupstrang_DL : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 49: Haupstrang-Datenliste fehlerhaft + Haupstrang_DL_voll : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 49: Haupstrang-Datenliste ist voll + Keine_HSDaten : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 49: Keine Hauptstrang-Daten mehr vorhanden + Rein_FIFO : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 49: Rein-FIFO fehlerhaft + Keine_FIFODaten : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 49: Keine Rein-FIFO-Daten mehr vorhanden + Stau_AusfahrBereich : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 49: Stau im Ausfahrbereich (-> Antrieb gestoppt) + BM_verklemmt_Gerade : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 49: Trolley bei Gerade-Fahrt in Weiche verklemmt (-> Antrieb gestoppt) + BM_verklemmt_Ausfahrt : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 49: Trolley bei Lager-Fahrt in Weiche verklemmt (-> Antrieb gestoppt) + BM_undef_Gerade : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 49: undefinierter Trolley bei Weiterfahrt erkannt + Frei14 : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 49: Frei 14 + Send_FIFO_fehlerhaft : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 49: Send-FIFO zum PC ist fehlerhaft + Send_FIFO_voll : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 49: Send-FIFO zu PC ist voll + Reset_aktiv : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 49: Reset ist aktiv + Weiche_MB3424 : Struct // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 50 MB3424 + Weichen_DL : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 50: Weichen-Datenliste fehlerhaft + Undef_Weiche : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 50: undefinierte Weiche + BLKMov : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 50: Fehler bei Block kopieren + Haupstrang_DL : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 50: Haupstrang-Datenliste fehlerhaft + Haupstrang_DL_voll : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 50: Haupstrang-Datenliste ist voll + Keine_HSDaten : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 50: Keine Hauptstrang-Daten mehr vorhanden + Rein_FIFO : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 50: Rein-FIFO fehlerhaft + Keine_FIFODaten : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 50: Keine Rein-FIFO-Daten mehr vorhanden + Stau_AusfahrBereich : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 50: Stau im Ausfahrbereich (-> Antrieb gestoppt) + BM_verklemmt_Gerade : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 50: Trolley bei Gerade-Fahrt in Weiche verklemmt (-> Antrieb gestoppt) + BM_verklemmt_Ausfahrt : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 50: Trolley bei Lager-Fahrt in Weiche verklemmt (-> Antrieb gestoppt) + BM_undef_Gerade : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 50: undefinierter Trolley bei Weiterfahrt erkannt + Frei15 : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 50: Frei 15 + Send_FIFO_fehlerhaft : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 50: Send-FIFO zum PC ist fehlerhaft + Send_FIFO_voll : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 50: Send-FIFO zu PC ist voll + Reset_aktiv : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 50: Reset ist aktiv + Weiche_Vollpuffer51 : Struct // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 51 (Pseudo) + Weichen_DL : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 51: Weichen-Datenliste fehlerhaft + Undef_Weiche : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 51: undefinierte Weiche + BLKMov : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 51: Fehler bei Block kopieren + Haupstrang_DL : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 51: Haupstrang-Datenliste fehlerhaft + Haupstrang_DL_voll : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 51: Haupstrang-Datenliste ist voll + Keine_HSDaten : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 51: Keine Hauptstrang-Daten mehr vorhanden + Rein_FIFO : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 51: Rein-FIFO fehlerhaft + Keine_FIFODaten : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 51: Keine Rein-FIFO-Daten mehr vorhanden + Stau_AusfahrBereich : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 51: Stau im Ausfahrbereich (-> Antrieb gestoppt) + BM_verklemmt_Gerade : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 51: Trolley bei Gerade-Fahrt in Weiche verklemmt (-> Antrieb gestoppt) + BM_verklemmt_Ausfahrt : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 51: Trolley bei Lager-Fahrt in Weiche verklemmt (-> Antrieb gestoppt) + BM_undef_Gerade : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 51: undefinierter Trolley bei Weiterfahrt erkannt + Frei15 : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 51: Frei 15 + Send_FIFO_fehlerhaft : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 51: Send-FIFO zum PC ist fehlerhaft + Send_FIFO_voll : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 51: Send-FIFO zu PC ist voll + Reset_aktiv : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 51: Reset ist aktiv + Impulsgeber_3004 : Struct // Outbound (UH07): Voll-Puffer-Sorter: Impulsgeber Lager-Einfahrt MA0146/BG3004 + Kein_Signal : Bool // Outbound (UH07): Voll-Puffer-Sorter: Impulsgeber Lager-Einfahrt MA0146: Kein Signal (Kettenrad-Sensor) + Signal_zu_lang : Bool // Outbound (UH07): Voll-Puffer-Sorter: Impulsgeber Lager-Einfahrt MA0146: Signal zu lang (Kettenrad-Sensor) + Impulsgeber_3125 : Struct // Outbound (UH07): Voll-Puffer-Sorter: Impulsgeber Lager-Einfahrt MA0145/BG3125 + Kein_Signal : Bool // Outbound (UH07): Voll-Puffer-Sorter: Impulsgeber Lager-Einfahrt MA0146: Kein Signal (Kettenrad-Sensor) + Signal_zu_lang : Bool // Outbound (UH07): Voll-Puffer-Sorter: Impulsgeber Lager-Einfahrt MA0146: Signal zu lang (Kettenrad-Sensor) + Impulsgeber_3185 : Struct // Outbound (UH07): Voll-Puffer-Sorter: Impulsgeber Lager-Ausfahrt MA0150/BG3185 + Kein_Signal : Bool // Outbound (UH07): Voll-Puffer-Sorter: Impulsgeber Lager-Ausfahrt MA0150: Kein Signal (Kettenrad-Sensor) + Signal_zu_lang : Bool // Outbound (UH07): Voll-Puffer-Sorter: Impulsgeber Lager-Ausfahrt MA0150: Signal zu lang (Kettenrad-Sensor) + Impulsgeber_3480 : Struct // Outbound (UH07): Voll-Puffer-Sorter: Impulsgeber Lager-Ausfahrt MA0147/BG3480 + Kein_Signal : Bool // Outbound (UH07): Voll-Puffer-Sorter: Impulsgeber Lager-Ausfahrt MA0147: Kein Signal (Kettenrad-Sensor) + Signal_zu_lang : Bool // Outbound (UH07): Voll-Puffer-Sorter: Impulsgeber Lager-Ausfahrt MA0147: Signal zu lang (Kettenrad-Sensor) + VollPuffer01 : Struct // Outbound (UH07): Voll-Puffer 1 MB3273 + Puffer_DL : Bool // Outbound (UH07): Voll-Puffer 1: Lager-Datenliste fehlerhaft + Undef_Puffer : Bool // Outbound (UH07): Voll-Puffer 1: undefinierter Lager + Err_Trolley_nicht_in_Schleuse_OUT : Bool // Outbound (UH07): Voll-Puffer 1: Trolley fährt nicht in untere Schleuse + Err_Uebzeit : Bool // Outbound (UH07): Voll-Puffer 1: Überwachungzeit ist abgelaufen + Err_Schritt : Bool // Outbound (UH07): Voll-Puffer 1: Schritt-Nummer ist nicht definiert + Err_Stau_Einfahrt : Bool // Outbound (UH07): Voll-Puffer 1: Stau am Lager-Eingang + Err_BLKMov : Bool // Outbound (UH07): Voll-Puffer 1: Error bei Block kopieren + Err_Trolley_raus_OUT : Bool // Outbound (UH07): Voll-Puffer 1: Trolley fährt nicht aus unterer Schleuse + Err_Puffer_nicht_leer_OUT : Bool // Outbound (UH07): Voll-Puffer 1: Trolley unten in Schleuse, obwohl keine Daten! Initialisieren hat gestartet! + Err_Trolley_nicht_in_Schleuse_IN : Bool // Outbound (UH07): Voll-Puffer 1: Trolley fährt nicht in mittlere Schleuse + Err_Trolley_raus_IN : Bool // Outbound (UH07): Voll-Puffer 1: Trolley fährt nicht aus mittlere Schleuse + Err_Puffer_nicht_leer_IN : Bool // Outbound (UH07): Voll-Puffer 1: Trolley mittig in Schleuse, obwohl keine Daten! Initialisieren hat gestartet! + Frei14 : Bool // Outbound (UH07): Voll-Puffer 1: Frei14 + Err_Raus_Sensor : Bool // Outbound (UH07): Voll-Puffer 1: Raus-Sensor hat Dauersignal oder wird nicht erreicht + Frei16 : Bool // Outbound (UH07): Voll-Puffer 1: Frei16 + Reset_aktiv : Bool // Outbound (UH07): Voll-Puffer 1: Reset ist aktiv + VollPuffer02 : Struct // Outbound (UH07): Voll-Puffer 2 MB3272 + Lager_DL : Bool // Outbound (UH07): Voll-Puffer 2: Lager-Datenliste fehlerhaft + Undef_Lager : Bool // Outbound (UH07): Voll-Puffer 2: undefinierter Lager + Err_Trolley_nicht_in_Schleuse_OUT : Bool // Outbound (UH07): Voll-Puffer 2: Trolley fährt nicht in untere Schleuse + Err_Uebzeit : Bool // Outbound (UH07): Voll-Puffer 2: Überwachungzeit ist abgelaufen + Err_Schritt : Bool // Outbound (UH07): Voll-Puffer 2: Schritt-Nummer ist nicht definiert + Err_Stau_Einfahrt : Bool // Outbound (UH07): Voll-Puffer 2: Stau am Lager-Eingang + Err_BLKMov : Bool // Outbound (UH07): Voll-Puffer 2: Error bei Block kopieren + Err_Trolley_raus_OUT : Bool // Outbound (UH07): Voll-Puffer 2: Trolley fährt nicht aus unterer Schleuse + Err_Puffer_nicht_leer_OUT : Bool // Outbound (UH07): Voll-Puffer 2: Trolley unten in Schleuse, obwohl keine Daten! Initialisieren hat gestartet! + Err_Trolley_nicht_in_Schleuse_IN : Bool // Outbound (UH07): Voll-Puffer 2: Trolley fährt nicht in mittlere Schleuse + Err_Trolley_raus_IN : Bool // Outbound (UH07): Voll-Puffer 2: Trolley fährt nicht aus mittlere Schleuse + Err_Puffer_nicht_leer_IN : Bool // Outbound (UH07): Voll-Puffer 2: Trolley mittig in Schleuse, obwohl keine Daten! Initialisieren hat gestartet! + Frei14 : Bool // Outbound (UH07): Voll-Puffer 2: Frei14 + Err_Raus_Sensor : Bool // Outbound (UH07): Voll-Puffer 2: Raus-Sensor hat Dauersignal oder wird nicht erreicht + Frei16 : Bool // Outbound (UH07): Voll-Puffer 2: Frei16 + Reset_aktiv : Bool // Outbound (UH07): Voll-Puffer 2: Reset ist aktiv + VollPuffer03 : Struct // Outbound (UH07): Voll-Puffer 3 MB3271 + Lager_DL : Bool // Outbound (UH07): Voll-Puffer 3: Lager-Datenliste fehlerhaft + Undef_Lager : Bool // Outbound (UH07): Voll-Puffer 3: undefinierter Lager + Err_Trolley_nicht_in_Schleuse_OUT : Bool // Outbound (UH07): Voll-Puffer 3: Trolley fährt nicht in untere Schleuse + Err_Uebzeit : Bool // Outbound (UH07): Voll-Puffer 3: Überwachungzeit ist abgelaufen + Err_Schritt : Bool // Outbound (UH07): Voll-Puffer 3: Schritt-Nummer ist nicht definiert + Err_Stau_Einfahrt : Bool // Outbound (UH07): Voll-Puffer 3: Stau am Lager-Eingang + Err_BLKMov : Bool // Outbound (UH07): Voll-Puffer 3: Error bei Block kopieren + Err_Trolley_raus_OUT : Bool // Outbound (UH07): Voll-Puffer 3: Trolley fährt nicht aus unterer Schleuse + Err_Puffer_nicht_leer_OUT : Bool // Outbound (UH07): Voll-Puffer 3: Trolley unten in Schleuse, obwohl keine Daten! Initialisieren hat gestartet! + Err_Trolley_nicht_in_Schleuse_IN : Bool // Outbound (UH07): Voll-Puffer 3: Trolley fährt nicht in mittlere Schleuse + Err_Trolley_raus_IN : Bool // Outbound (UH07): Voll-Puffer 3: Trolley fährt nicht aus mittlere Schleuse + Err_Puffer_nicht_leer_IN : Bool // Outbound (UH07): Voll-Puffer 3: Trolley mittig in Schleuse, obwohl keine Daten! Initialisieren hat gestartet! + Frei14 : Bool // Outbound (UH07): Voll-Puffer 3: Frei14 + Err_Raus_Sensor : Bool // Outbound (UH07): Voll-Puffer 3: Raus-Sensor hat Dauersignal oder wird nicht erreicht + Frei16 : Bool // Outbound (UH07): Voll-Puffer 3: Frei16 + Reset_aktiv : Bool // Outbound (UH07): Voll-Puffer 3: Reset ist aktiv + VollPuffer04 : Struct // Outbound (UH07): Voll-Puffer 4 MB3270 + Lager_DL : Bool // Outbound (UH07): Voll-Puffer 4: Lager-Datenliste fehlerhaft + Undef_Lager : Bool // Outbound (UH07): Voll-Puffer 4: undefinierter Lager + Err_Trolley_nicht_in_Schleuse_OUT : Bool // Outbound (UH07): Voll-Puffer 4: Trolley fährt nicht in untere Schleuse + Err_Uebzeit : Bool // Outbound (UH07): Voll-Puffer 4: Überwachungzeit ist abgelaufen + Err_Schritt : Bool // Outbound (UH07): Voll-Puffer 4: Schritt-Nummer ist nicht definiert + Err_Stau_Einfahrt : Bool // Outbound (UH07): Voll-Puffer 4: Stau am Lager-Eingang + Err_BLKMov : Bool // Outbound (UH07): Voll-Puffer 4: Error bei Block kopieren + Err_Trolley_raus_OUT : Bool // Outbound (UH07): Voll-Puffer 4: Trolley fährt nicht aus unterer Schleuse + Err_Puffer_nicht_leer_OUT : Bool // Outbound (UH07): Voll-Puffer 4: Trolley unten in Schleuse, obwohl keine Daten! Initialisieren hat gestartet! + Err_Trolley_nicht_in_Schleuse_IN : Bool // Outbound (UH07): Voll-Puffer 4: Trolley fährt nicht in mittlere Schleuse + Err_Trolley_raus_IN : Bool // Outbound (UH07): Voll-Puffer 4: Trolley fährt nicht aus mittlere Schleuse + Err_Puffer_nicht_leer_IN : Bool // Outbound (UH07): Voll-Puffer 4: Trolley mittig in Schleuse, obwohl keine Daten! Initialisieren hat gestartet! + Frei14 : Bool // Outbound (UH07): Voll-Puffer 4: Frei14 + Err_Raus_Sensor : Bool // Outbound (UH07): Voll-Puffer 4: Raus-Sensor hat Dauersignal oder wird nicht erreicht + Frei16 : Bool // Outbound (UH07): Voll-Puffer 4: Frei16 + Reset_aktiv : Bool // Outbound (UH07): Voll-Puffer 4: Reset ist aktiv + VollPuffer05 : Struct // Outbound (UH07): Voll-Puffer 5 MB3267 + Lager_DL : Bool // Outbound (UH07): Voll-Puffer 5: Lager-Datenliste fehlerhaft + Undef_Lager : Bool // Outbound (UH07): Voll-Puffer 5: undefinierter Lager + Err_Trolley_nicht_in_Schleuse_OUT : Bool // Outbound (UH07): Voll-Puffer 5: Trolley fährt nicht in untere Schleuse + Err_Uebzeit : Bool // Outbound (UH07): Voll-Puffer 5: Überwachungzeit ist abgelaufen + Err_Schritt : Bool // Outbound (UH07): Voll-Puffer 5: Schritt-Nummer ist nicht definiert + Err_Stau_Einfahrt : Bool // Outbound (UH07): Voll-Puffer 5: Stau am Lager-Eingang + Err_BLKMov : Bool // Outbound (UH07): Voll-Puffer 5: Error bei Block kopieren + Err_Trolley_raus_OUT : Bool // Outbound (UH07): Voll-Puffer 5: Trolley fährt nicht aus unterer Schleuse + Err_Puffer_nicht_leer_OUT : Bool // Outbound (UH07): Voll-Puffer 5: Trolley unten in Schleuse, obwohl keine Daten! Initialisieren hat gestartet! + Err_Trolley_nicht_in_Schleuse_IN : Bool // Outbound (UH07): Voll-Puffer 5: Trolley fährt nicht in mittlere Schleuse + Err_Trolley_raus_IN : Bool // Outbound (UH07): Voll-Puffer 5: Trolley fährt nicht aus mittlere Schleuse + Err_Puffer_nicht_leer_IN : Bool // Outbound (UH07): Voll-Puffer 5: Trolley mittig in Schleuse, obwohl keine Daten! Initialisieren hat gestartet! + Frei14 : Bool // Outbound (UH07): Voll-Puffer 5: Frei14 + Err_Raus_Sensor : Bool // Outbound (UH07): Voll-Puffer 5: Raus-Sensor hat Dauersignal oder wird nicht erreicht + Frei16 : Bool // Outbound (UH07): Voll-Puffer 5: Frei16 + Reset_aktiv : Bool // Outbound (UH07): Voll-Puffer 5: Reset ist aktiv + VollPuffer06 : Struct // Outbound (UH07): Voll-Puffer 6 MB3266 + Lager_DL : Bool // Outbound (UH07): Voll-Puffer 6: Lager-Datenliste fehlerhaft + Undef_Lager : Bool // Outbound (UH07): Voll-Puffer 6: undefinierter Lager + Err_Trolley_nicht_in_Schleuse_OUT : Bool // Outbound (UH07): Voll-Puffer 6: Trolley fährt nicht in untere Schleuse + Err_Uebzeit : Bool // Outbound (UH07): Voll-Puffer 6: Überwachungzeit ist abgelaufen + Err_Schritt : Bool // Outbound (UH07): Voll-Puffer 6: Schritt-Nummer ist nicht definiert + Err_Stau_Einfahrt : Bool // Outbound (UH07): Voll-Puffer 6: Stau am Lager-Eingang + Err_BLKMov : Bool // Outbound (UH07): Voll-Puffer 6: Error bei Block kopieren + Err_Trolley_raus_OUT : Bool // Outbound (UH07): Voll-Puffer 6: Trolley fährt nicht aus unterer Schleuse + Err_Puffer_nicht_leer_OUT : Bool // Outbound (UH07): Voll-Puffer 6: Trolley unten in Schleuse, obwohl keine Daten! Initialisieren hat gestartet! + Err_Trolley_nicht_in_Schleuse_IN : Bool // Outbound (UH07): Voll-Puffer 6: Trolley fährt nicht in mittlere Schleuse + Err_Trolley_raus_IN : Bool // Outbound (UH07): Voll-Puffer 6: Trolley fährt nicht aus mittlere Schleuse + Err_Puffer_nicht_leer_IN : Bool // Outbound (UH07): Voll-Puffer 6: Trolley mittig in Schleuse, obwohl keine Daten! Initialisieren hat gestartet! + Frei14 : Bool // Outbound (UH07): Voll-Puffer 6: Frei14 + Err_Raus_Sensor : Bool // Outbound (UH07): Voll-Puffer 6: Raus-Sensor hat Dauersignal oder wird nicht erreicht + Frei16 : Bool // Outbound (UH07): Voll-Puffer 6: Frei16 + Reset_aktiv : Bool // Outbound (UH07): Voll-Puffer 6: Reset ist aktiv + VollPuffer07 : Struct // Outbound (UH07): Voll-Puffer 7 MB3265 + Lager_DL : Bool // Outbound (UH07): Voll-Puffer 7: Lager-Datenliste fehlerhaft + Undef_Lager : Bool // Outbound (UH07): Voll-Puffer 7: undefinierter Lager + Err_Trolley_nicht_in_Schleuse_OUT : Bool // Outbound (UH07): Voll-Puffer 7: Trolley fährt nicht in untere Schleuse + Err_Uebzeit : Bool // Outbound (UH07): Voll-Puffer 7: Überwachungzeit ist abgelaufen + Err_Schritt : Bool // Outbound (UH07): Voll-Puffer 7: Schritt-Nummer ist nicht definiert + Err_Stau_Einfahrt : Bool // Outbound (UH07): Voll-Puffer 7: Stau am Lager-Eingang + Err_BLKMov : Bool // Outbound (UH07): Voll-Puffer 7: Error bei Block kopieren + Err_Trolley_raus_OUT : Bool // Outbound (UH07): Voll-Puffer 7: Trolley fährt nicht aus unterer Schleuse + Err_Puffer_nicht_leer_OUT : Bool // Outbound (UH07): Voll-Puffer 7: Trolley unten in Schleuse, obwohl keine Daten! Initialisieren hat gestartet! + Err_Trolley_nicht_in_Schleuse_IN : Bool // Outbound (UH07): Voll-Puffer 7: Trolley fährt nicht in mittlere Schleuse + Err_Trolley_raus_IN : Bool // Outbound (UH07): Voll-Puffer 7: Trolley fährt nicht aus mittlere Schleuse + Err_Puffer_nicht_leer_IN : Bool // Outbound (UH07): Voll-Puffer 7: Trolley mittig in Schleuse, obwohl keine Daten! Initialisieren hat gestartet! + Frei14 : Bool // Outbound (UH07): Voll-Puffer 7: Frei14 + Err_Raus_Sensor : Bool // Outbound (UH07): Voll-Puffer 7: Raus-Sensor hat Dauersignal oder wird nicht erreicht + Frei16 : Bool // Outbound (UH07): Voll-Puffer 7: Frei16 + Reset_aktiv : Bool // Outbound (UH07): Voll-Puffer 7: Reset ist aktiv + VollPuffer08 : Struct // Outbound (UH07): Voll-Puffer 8 MB3264 + Lager_DL : Bool // Outbound (UH07): Voll-Puffer 8: Lager-Datenliste fehlerhaft + Undef_Lager : Bool // Outbound (UH07): Voll-Puffer 8: undefinierter Lager + Err_Trolley_nicht_in_Schleuse_OUT : Bool // Outbound (UH07): Voll-Puffer 8: Trolley fährt nicht in untere Schleuse + Err_Uebzeit : Bool // Outbound (UH07): Voll-Puffer 8: Überwachungzeit ist abgelaufen + Err_Schritt : Bool // Outbound (UH07): Voll-Puffer 8: Schritt-Nummer ist nicht definiert + Err_Stau_Einfahrt : Bool // Outbound (UH07): Voll-Puffer 8: Stau am Lager-Eingang + Err_BLKMov : Bool // Outbound (UH07): Voll-Puffer 8: Error bei Block kopieren + Err_Trolley_raus_OUT : Bool // Outbound (UH07): Voll-Puffer 8: Trolley fährt nicht aus unterer Schleuse + Err_Puffer_nicht_leer_OUT : Bool // Outbound (UH07): Voll-Puffer 8: Trolley unten in Schleuse, obwohl keine Daten! Initialisieren hat gestartet! + Err_Trolley_nicht_in_Schleuse_IN : Bool // Outbound (UH07): Voll-Puffer 8: Trolley fährt nicht in mittlere Schleuse + Err_Trolley_raus_IN : Bool // Outbound (UH07): Voll-Puffer 8: Trolley fährt nicht aus mittlere Schleuse + Err_Puffer_nicht_leer_IN : Bool // Outbound (UH07): Voll-Puffer 8: Trolley mittig in Schleuse, obwohl keine Daten! Initialisieren hat gestartet! + Frei14 : Bool // Outbound (UH07): Voll-Puffer 8: Frei14 + Err_Raus_Sensor : Bool // Outbound (UH07): Voll-Puffer 8: Raus-Sensor hat Dauersignal oder wird nicht erreicht + Frei16 : Bool // Outbound (UH07): Voll-Puffer 8: Frei16 + Reset_aktiv : Bool // Outbound (UH07): Voll-Puffer 8: Reset ist aktiv + VollPuffer09 : Struct // Outbound (UH07): Voll-Puffer 9 MB3263 + Lager_DL : Bool // Outbound (UH07): Voll-Puffer 9: Lager-Datenliste fehlerhaft + Undef_Lager : Bool // Outbound (UH07): Voll-Puffer 9: undefinierter Lager + Err_Trolley_nicht_in_Schleuse_OUT : Bool // Outbound (UH07): Voll-Puffer 9: Trolley fährt nicht in untere Schleuse + Err_Uebzeit : Bool // Outbound (UH07): Voll-Puffer 9: Überwachungzeit ist abgelaufen + Err_Schritt : Bool // Outbound (UH07): Voll-Puffer 9: Schritt-Nummer ist nicht definiert + Err_Stau_Einfahrt : Bool // Outbound (UH07): Voll-Puffer 9: Stau am Lager-Eingang + Err_BLKMov : Bool // Outbound (UH07): Voll-Puffer 9: Error bei Block kopieren + Err_Trolley_raus_OUT : Bool // Outbound (UH07): Voll-Puffer 9: Trolley fährt nicht aus unterer Schleuse + Err_Puffer_nicht_leer_OUT : Bool // Outbound (UH07): Voll-Puffer 9: Trolley unten in Schleuse, obwohl keine Daten! Initialisieren hat gestartet! + Err_Trolley_nicht_in_Schleuse_IN : Bool // Outbound (UH07): Voll-Puffer 9: Trolley fährt nicht in mittlere Schleuse + Err_Trolley_raus_IN : Bool // Outbound (UH07): Voll-Puffer 9: Trolley fährt nicht aus mittlere Schleuse + Err_Puffer_nicht_leer_IN : Bool // Outbound (UH07): Voll-Puffer 9: Trolley mittig in Schleuse, obwohl keine Daten! Initialisieren hat gestartet! + Frei14 : Bool // Outbound (UH07): Voll-Puffer 9: Frei14 + Err_Raus_Sensor : Bool // Outbound (UH07): Voll-Puffer 9: Raus-Sensor hat Dauersignal oder wird nicht erreicht + Frei16 : Bool // Outbound (UH07): Voll-Puffer 9: Frei16 + Reset_aktiv : Bool // Outbound (UH07): Voll-Puffer 9: Reset ist aktiv + VollPuffer10 : Struct // Outbound (UH07): Voll-Puffer 10 MB3262 + Lager_DL : Bool // Outbound (UH07): Voll-Puffer 10: Lager-Datenliste fehlerhaft + Undef_Lager : Bool // Outbound (UH07): Voll-Puffer 10: undefinierter Lager + Err_Trolley_nicht_in_Schleuse_OUT : Bool // Outbound (UH07): Voll-Puffer 10: Trolley fährt nicht in untere Schleuse + Err_Uebzeit : Bool // Outbound (UH07): Voll-Puffer 10: Überwachungzeit ist abgelaufen + Err_Schritt : Bool // Outbound (UH07): Voll-Puffer 10: Schritt-Nummer ist nicht definiert + Err_Stau_Einfahrt : Bool // Outbound (UH07): Voll-Puffer 10: Stau am Lager-Eingang + Err_BLKMov : Bool // Outbound (UH07): Voll-Puffer 10: Error bei Block kopieren + Err_Trolley_raus_OUT : Bool // Outbound (UH07): Voll-Puffer 10: Trolley fährt nicht aus unterer Schleuse + Err_Puffer_nicht_leer_OUT : Bool // Outbound (UH07): Voll-Puffer 10: Trolley unten in Schleuse, obwohl keine Daten! Initialisieren hat gestartet! + Err_Trolley_nicht_in_Schleuse_IN : Bool // Outbound (UH07): Voll-Puffer 10: Trolley fährt nicht in mittlere Schleuse + Err_Trolley_raus_IN : Bool // Outbound (UH07): Voll-Puffer 10: Trolley fährt nicht aus mittlere Schleuse + Err_Puffer_nicht_leer_IN : Bool // Outbound (UH07): Voll-Puffer 10: Trolley mittig in Schleuse, obwohl keine Daten! Initialisieren hat gestartet! + Frei14 : Bool // Outbound (UH07): Voll-Puffer 10: Frei14 + Err_Raus_Sensor : Bool // Outbound (UH07): Voll-Puffer 10: Raus-Sensor hat Dauersignal oder wird nicht erreicht + Frei16 : Bool // Outbound (UH07): Voll-Puffer 10: Frei16 + Reset_aktiv : Bool // Outbound (UH07): Voll-Puffer 10: Reset ist aktiv + VollPuffer11 : Struct // Outbound (UH07): Voll-Puffer 11 MB3261 + Lager_DL : Bool // Outbound (UH07): Voll-Puffer 11: Lager-Datenliste fehlerhaft + Undef_Lager : Bool // Outbound (UH07): Voll-Puffer 11: undefinierter Lager + Err_Trolley_nicht_in_Schleuse_OUT : Bool // Outbound (UH07): Voll-Puffer 11: Trolley fährt nicht in untere Schleuse + Err_Uebzeit : Bool // Outbound (UH07): Voll-Puffer 11: Überwachungzeit ist abgelaufen + Err_Schritt : Bool // Outbound (UH07): Voll-Puffer 11: Schritt-Nummer ist nicht definiert + Err_Stau_Einfahrt : Bool // Outbound (UH07): Voll-Puffer 11: Stau am Lager-Eingang + Err_BLKMov : Bool // Outbound (UH07): Voll-Puffer 11: Error bei Block kopieren + Err_Trolley_raus_OUT : Bool // Outbound (UH07): Voll-Puffer 11: Trolley fährt nicht aus unterer Schleuse + Err_Puffer_nicht_leer_OUT : Bool // Outbound (UH07): Voll-Puffer 11: Trolley unten in Schleuse, obwohl keine Daten! Initialisieren hat gestartet! + Err_Trolley_nicht_in_Schleuse_IN : Bool // Outbound (UH07): Voll-Puffer 11: Trolley fährt nicht in mittlere Schleuse + Err_Trolley_raus_IN : Bool // Outbound (UH07): Voll-Puffer 11: Trolley fährt nicht aus mittlere Schleuse + Err_Puffer_nicht_leer_IN : Bool // Outbound (UH07): Voll-Puffer 11: Trolley mittig in Schleuse, obwohl keine Daten! Initialisieren hat gestartet! + Frei14 : Bool // Outbound (UH07): Voll-Puffer 11: Frei14 + Err_Raus_Sensor : Bool // Outbound (UH07): Voll-Puffer 11: Raus-Sensor hat Dauersignal oder wird nicht erreicht + Frei16 : Bool // Outbound (UH07): Voll-Puffer 11: Frei16 + Reset_aktiv : Bool // Outbound (UH07): Voll-Puffer 11: Reset ist aktiv + VollPuffer12 : Struct // Outbound (UH07): Voll-Puffer 12 MB3260 + Lager_DL : Bool // Outbound (UH07): Voll-Puffer 12: Lager-Datenliste fehlerhaft + Undef_Lager : Bool // Outbound (UH07): Voll-Puffer 12: undefinierter Lager + Err_Trolley_nicht_in_Schleuse_OUT : Bool // Outbound (UH07): Voll-Puffer 12: Trolley fährt nicht in untere Schleuse + Err_Uebzeit : Bool // Outbound (UH07): Voll-Puffer 12: Überwachungzeit ist abgelaufen + Err_Schritt : Bool // Outbound (UH07): Voll-Puffer 12: Schritt-Nummer ist nicht definiert + Err_Stau_Einfahrt : Bool // Outbound (UH07): Voll-Puffer 12: Stau am Lager-Eingang + Err_BLKMov : Bool // Outbound (UH07): Voll-Puffer 12: Error bei Block kopieren + Err_Trolley_raus_OUT : Bool // Outbound (UH07): Voll-Puffer 12: Trolley fährt nicht aus unterer Schleuse + Err_Puffer_nicht_leer_OUT : Bool // Outbound (UH07): Voll-Puffer 12: Trolley unten in Schleuse, obwohl keine Daten! Initialisieren hat gestartet! + Err_Trolley_nicht_in_Schleuse_IN : Bool // Outbound (UH07): Voll-Puffer 12: Trolley fährt nicht in mittlere Schleuse + Err_Trolley_raus_IN : Bool // Outbound (UH07): Voll-Puffer 12: Trolley fährt nicht aus mittlere Schleuse + Err_Puffer_nicht_leer_IN : Bool // Outbound (UH07): Voll-Puffer 12: Trolley mittig in Schleuse, obwohl keine Daten! Initialisieren hat gestartet! + Frei14 : Bool // Outbound (UH07): Voll-Puffer 12: Frei14 + Err_Raus_Sensor : Bool // Outbound (UH07): Voll-Puffer 12: Raus-Sensor hat Dauersignal oder wird nicht erreicht + Frei16 : Bool // Outbound (UH07): Voll-Puffer 12: Frei16 + Reset_aktiv : Bool // Outbound (UH07): Voll-Puffer 12: Reset ist aktiv + VollPuffer13 : Struct // Outbound (UH07): Voll-Puffer 13 MB3257 + Lager_DL : Bool // Outbound (UH07): Voll-Puffer 13: Lager-Datenliste fehlerhaft + Undef_Lager : Bool // Outbound (UH07): Voll-Puffer 13: undefinierter Lager + Err_Trolley_nicht_in_Schleuse_OUT : Bool // Outbound (UH07): Voll-Puffer 13: Trolley fährt nicht in untere Schleuse + Err_Uebzeit : Bool // Outbound (UH07): Voll-Puffer 13: Überwachungzeit ist abgelaufen + Err_Schritt : Bool // Outbound (UH07): Voll-Puffer 13: Schritt-Nummer ist nicht definiert + Err_Stau_Einfahrt : Bool // Outbound (UH07): Voll-Puffer 13: Stau am Lager-Eingang + Err_BLKMov : Bool // Outbound (UH07): Voll-Puffer 13: Error bei Block kopieren + Err_Trolley_raus_OUT : Bool // Outbound (UH07): Voll-Puffer 13: Trolley fährt nicht aus unterer Schleuse + Err_Puffer_nicht_leer_OUT : Bool // Outbound (UH07): Voll-Puffer 13: Trolley unten in Schleuse, obwohl keine Daten! Initialisieren hat gestartet! + Err_Trolley_nicht_in_Schleuse_IN : Bool // Outbound (UH07): Voll-Puffer 13: Trolley fährt nicht in mittlere Schleuse + Err_Trolley_raus_IN : Bool // Outbound (UH07): Voll-Puffer 13: Trolley fährt nicht aus mittlere Schleuse + Err_Puffer_nicht_leer_IN : Bool // Outbound (UH07): Voll-Puffer 13: Trolley mittig in Schleuse, obwohl keine Daten! Initialisieren hat gestartet! + Frei14 : Bool // Outbound (UH07): Voll-Puffer 13: Frei14 + Err_Raus_Sensor : Bool // Outbound (UH07): Voll-Puffer 13: Raus-Sensor hat Dauersignal oder wird nicht erreicht + Frei16 : Bool // Outbound (UH07): Voll-Puffer 13: Frei16 + Reset_aktiv : Bool // Outbound (UH07): Voll-Puffer 13: Reset ist aktiv + VollPuffer14 : Struct // Outbound (UH07): Voll-Puffer 14 MB3256 + Lager_DL : Bool // Outbound (UH07): Voll-Puffer 14: Lager-Datenliste fehlerhaft + Undef_Lager : Bool // Outbound (UH07): Voll-Puffer 14: undefinierter Lager + Err_Trolley_nicht_in_Schleuse_OUT : Bool // Outbound (UH07): Voll-Puffer 14: Trolley fährt nicht in untere Schleuse + Err_Uebzeit : Bool // Outbound (UH07): Voll-Puffer 14: Überwachungzeit ist abgelaufen + Err_Schritt : Bool // Outbound (UH07): Voll-Puffer 14: Schritt-Nummer ist nicht definiert + Err_Stau_Einfahrt : Bool // Outbound (UH07): Voll-Puffer 14: Stau am Lager-Eingang + Err_BLKMov : Bool // Outbound (UH07): Voll-Puffer 14: Error bei Block kopieren + Err_Trolley_raus_OUT : Bool // Outbound (UH07): Voll-Puffer 14: Trolley fährt nicht aus unterer Schleuse + Err_Puffer_nicht_leer_OUT : Bool // Outbound (UH07): Voll-Puffer 14: Trolley unten in Schleuse, obwohl keine Daten! Initialisieren hat gestartet! + Err_Trolley_nicht_in_Schleuse_IN : Bool // Outbound (UH07): Voll-Puffer 14: Trolley fährt nicht in mittlere Schleuse + Err_Trolley_raus_IN : Bool // Outbound (UH07): Voll-Puffer 14: Trolley fährt nicht aus mittlere Schleuse + Err_Puffer_nicht_leer_IN : Bool // Outbound (UH07): Voll-Puffer 14: Trolley mittig in Schleuse, obwohl keine Daten! Initialisieren hat gestartet! + Frei14 : Bool // Outbound (UH07): Voll-Puffer 14: Frei14 + Err_Raus_Sensor : Bool // Outbound (UH07): Voll-Puffer 14: Raus-Sensor hat Dauersignal oder wird nicht erreicht + Frei16 : Bool // Outbound (UH07): Voll-Puffer 14: Frei16 + Reset_aktiv : Bool // Outbound (UH07): Voll-Puffer 14: Reset ist aktiv + VollPuffer15 : Struct // Outbound (UH07): Voll-Puffer 15 MB3255 + Lager_DL : Bool // Outbound (UH07): Voll-Puffer 15: Lager-Datenliste fehlerhaft + Undef_Lager : Bool // Outbound (UH07): Voll-Puffer 15: undefinierter Lager + Err_Trolley_nicht_in_Schleuse_OUT : Bool // Outbound (UH07): Voll-Puffer 15: Trolley fährt nicht in untere Schleuse + Err_Uebzeit : Bool // Outbound (UH07): Voll-Puffer 15: Überwachungzeit ist abgelaufen + Err_Schritt : Bool // Outbound (UH07): Voll-Puffer 15: Schritt-Nummer ist nicht definiert + Err_Stau_Einfahrt : Bool // Outbound (UH07): Voll-Puffer 15: Stau am Lager-Eingang + Err_BLKMov : Bool // Outbound (UH07): Voll-Puffer 15: Error bei Block kopieren + Err_Trolley_raus_OUT : Bool // Outbound (UH07): Voll-Puffer 15: Trolley fährt nicht aus unterer Schleuse + Err_Puffer_nicht_leer_OUT : Bool // Outbound (UH07): Voll-Puffer 15: Trolley unten in Schleuse, obwohl keine Daten! Initialisieren hat gestartet! + Err_Trolley_nicht_in_Schleuse_IN : Bool // Outbound (UH07): Voll-Puffer 15: Trolley fährt nicht in mittlere Schleuse + Err_Trolley_raus_IN : Bool // Outbound (UH07): Voll-Puffer 15: Trolley fährt nicht aus mittlere Schleuse + Err_Puffer_nicht_leer_IN : Bool // Outbound (UH07): Voll-Puffer 15: Trolley mittig in Schleuse, obwohl keine Daten! Initialisieren hat gestartet! + Frei14 : Bool // Outbound (UH07): Voll-Puffer 15: Frei14 + Err_Raus_Sensor : Bool // Outbound (UH07): Voll-Puffer 15: Raus-Sensor hat Dauersignal oder wird nicht erreicht + Frei16 : Bool // Outbound (UH07): Voll-Puffer 15: Frei16 + Reset_aktiv : Bool // Outbound (UH07): Voll-Puffer 15: Reset ist aktiv + VollPuffer16 : Struct // Outbound (UH07): Voll-Puffer 16 MB3254 + Lager_DL : Bool // Outbound (UH07): Voll-Puffer 16: Lager-Datenliste fehlerhaft + Undef_Lager : Bool // Outbound (UH07): Voll-Puffer 16: undefinierter Lager + Err_Trolley_nicht_in_Schleuse_OUT : Bool // Outbound (UH07): Voll-Puffer 16: Trolley fährt nicht in untere Schleuse + Err_Uebzeit : Bool // Outbound (UH07): Voll-Puffer 16: Überwachungzeit ist abgelaufen + Err_Schritt : Bool // Outbound (UH07): Voll-Puffer 16: Schritt-Nummer ist nicht definiert + Err_Stau_Einfahrt : Bool // Outbound (UH07): Voll-Puffer 16: Stau am Lager-Eingang + Err_BLKMov : Bool // Outbound (UH07): Voll-Puffer 16: Error bei Block kopieren + Err_Trolley_raus_OUT : Bool // Outbound (UH07): Voll-Puffer 16: Trolley fährt nicht aus unterer Schleuse + Err_Puffer_nicht_leer_OUT : Bool // Outbound (UH07): Voll-Puffer 16: Trolley unten in Schleuse, obwohl keine Daten! Initialisieren hat gestartet! + Err_Trolley_nicht_in_Schleuse_IN : Bool // Outbound (UH07): Voll-Puffer 16: Trolley fährt nicht in mittlere Schleuse + Err_Trolley_raus_IN : Bool // Outbound (UH07): Voll-Puffer 16: Trolley fährt nicht aus mittlere Schleuse + Err_Puffer_nicht_leer_IN : Bool // Outbound (UH07): Voll-Puffer 16: Trolley mittig in Schleuse, obwohl keine Daten! Initialisieren hat gestartet! + Frei14 : Bool // Outbound (UH07): Voll-Puffer 16: Frei14 + Err_Raus_Sensor : Bool // Outbound (UH07): Voll-Puffer 16: Raus-Sensor hat Dauersignal oder wird nicht erreicht + Frei16 : Bool // Outbound (UH07): Voll-Puffer 16: Frei16 + Reset_aktiv : Bool // Outbound (UH07): Voll-Puffer 16: Reset ist aktiv + VollPuffer17 : Struct // Outbound (UH07): Voll-Puffer 17 MB3253 + Lager_DL : Bool // Outbound (UH07): Voll-Puffer 17: Lager-Datenliste fehlerhaft + Undef_Lager : Bool // Outbound (UH07): Voll-Puffer 17: undefinierter Lager + Err_Trolley_nicht_in_Schleuse_OUT : Bool // Outbound (UH07): Voll-Puffer 17: Trolley fährt nicht in untere Schleuse + Err_Uebzeit : Bool // Outbound (UH07): Voll-Puffer 17: Überwachungzeit ist abgelaufen + Err_Schritt : Bool // Outbound (UH07): Voll-Puffer 17: Schritt-Nummer ist nicht definiert + Err_Stau_Einfahrt : Bool // Outbound (UH07): Voll-Puffer 17: Stau am Lager-Eingang + Err_BLKMov : Bool // Outbound (UH07): Voll-Puffer 17: Error bei Block kopieren + Err_Trolley_raus_OUT : Bool // Outbound (UH07): Voll-Puffer 17: Trolley fährt nicht aus unterer Schleuse + Err_Puffer_nicht_leer_OUT : Bool // Outbound (UH07): Voll-Puffer 17: Trolley unten in Schleuse, obwohl keine Daten! Initialisieren hat gestartet! + Err_Trolley_nicht_in_Schleuse_IN : Bool // Outbound (UH07): Voll-Puffer 17: Trolley fährt nicht in mittlere Schleuse + Err_Trolley_raus_IN : Bool // Outbound (UH07): Voll-Puffer 17: Trolley fährt nicht aus mittlere Schleuse + Err_Puffer_nicht_leer_IN : Bool // Outbound (UH07): Voll-Puffer 17: Trolley mittig in Schleuse, obwohl keine Daten! Initialisieren hat gestartet! + Frei14 : Bool // Outbound (UH07): Voll-Puffer 17: Frei14 + Err_Raus_Sensor : Bool // Outbound (UH07): Voll-Puffer 17: Raus-Sensor hat Dauersignal oder wird nicht erreicht + Frei16 : Bool // Outbound (UH07): Voll-Puffer 17: Frei16 + Reset_aktiv : Bool // Outbound (UH07): Voll-Puffer 17: Reset ist aktiv + VollPuffer18 : Struct // Outbound (UH07): Voll-Puffer 18 MB3252 + Lager_DL : Bool // Outbound (UH07): Voll-Puffer 18: Lager-Datenliste fehlerhaft + Undef_Lager : Bool // Outbound (UH07): Voll-Puffer 18: undefinierter Lager + Err_Trolley_nicht_in_Schleuse_OUT : Bool // Outbound (UH07): Voll-Puffer 18: Trolley fährt nicht in untere Schleuse + Err_Uebzeit : Bool // Outbound (UH07): Voll-Puffer 18: Überwachungzeit ist abgelaufen + Err_Schritt : Bool // Outbound (UH07): Voll-Puffer 18: Schritt-Nummer ist nicht definiert + Err_Stau_Einfahrt : Bool // Outbound (UH07): Voll-Puffer 18: Stau am Lager-Eingang + Err_BLKMov : Bool // Outbound (UH07): Voll-Puffer 18: Error bei Block kopieren + Err_Trolley_raus_OUT : Bool // Outbound (UH07): Voll-Puffer 18: Trolley fährt nicht aus unterer Schleuse + Err_Puffer_nicht_leer_OUT : Bool // Outbound (UH07): Voll-Puffer 18: Trolley unten in Schleuse, obwohl keine Daten! Initialisieren hat gestartet! + Err_Trolley_nicht_in_Schleuse_IN : Bool // Outbound (UH07): Voll-Puffer 18: Trolley fährt nicht in mittlere Schleuse + Err_Trolley_raus_IN : Bool // Outbound (UH07): Voll-Puffer 18: Trolley fährt nicht aus mittlere Schleuse + Err_Puffer_nicht_leer_IN : Bool // Outbound (UH07): Voll-Puffer 18: Trolley mittig in Schleuse, obwohl keine Daten! Initialisieren hat gestartet! + Frei14 : Bool // Outbound (UH07): Voll-Puffer 18: Frei14 + Err_Raus_Sensor : Bool // Outbound (UH07): Voll-Puffer 18: Raus-Sensor hat Dauersignal oder wird nicht erreicht + Frei16 : Bool // Outbound (UH07): Voll-Puffer 18: Frei16 + Reset_aktiv : Bool // Outbound (UH07): Voll-Puffer 18: Reset ist aktiv + VollPuffer19 : Struct // Outbound (UH07): Voll-Puffer 19 MB3215 + Lager_DL : Bool // Outbound (UH07): Voll-Puffer 19: Lager-Datenliste fehlerhaft + Undef_Lager : Bool // Outbound (UH07): Voll-Puffer 19: undefinierter Lager + Err_Trolley_nicht_in_Schleuse_OUT : Bool // Outbound (UH07): Voll-Puffer 19: Trolley fährt nicht in untere Schleuse + Err_Uebzeit : Bool // Outbound (UH07): Voll-Puffer 19: Überwachungzeit ist abgelaufen + Err_Schritt : Bool // Outbound (UH07): Voll-Puffer 19: Schritt-Nummer ist nicht definiert + Err_Stau_Einfahrt : Bool // Outbound (UH07): Voll-Puffer 19: Stau am Lager-Eingang + Err_BLKMov : Bool // Outbound (UH07): Voll-Puffer 19: Error bei Block kopieren + Err_Trolley_raus_OUT : Bool // Outbound (UH07): Voll-Puffer 19: Trolley fährt nicht aus unterer Schleuse + Err_Puffer_nicht_leer_OUT : Bool // Outbound (UH07): Voll-Puffer 19: Trolley unten in Schleuse, obwohl keine Daten! Initialisieren hat gestartet! + Err_Trolley_nicht_in_Schleuse_IN : Bool // Outbound (UH07): Voll-Puffer 19: Trolley fährt nicht in mittlere Schleuse + Err_Trolley_raus_IN : Bool // Outbound (UH07): Voll-Puffer 19: Trolley fährt nicht aus mittlere Schleuse + Err_Puffer_nicht_leer_IN : Bool // Outbound (UH07): Voll-Puffer 19: Trolley mittig in Schleuse, obwohl keine Daten! Initialisieren hat gestartet! + Frei14 : Bool // Outbound (UH07): Voll-Puffer 19: Frei14 + Err_Raus_Sensor : Bool // Outbound (UH07): Voll-Puffer 19: Raus-Sensor hat Dauersignal oder wird nicht erreicht + Frei16 : Bool // Outbound (UH07): Voll-Puffer 19: Frei16 + Reset_aktiv : Bool // Outbound (UH07): Voll-Puffer 19: Reset ist aktiv + VollPuffer20 : Struct // Outbound (UH07): Voll-Puffer 20 MB3214 + Lager_DL : Bool // Outbound (UH07): Voll-Puffer 20: Lager-Datenliste fehlerhaft + Undef_Lager : Bool // Outbound (UH07): Voll-Puffer 20: undefinierter Lager + Err_Trolley_nicht_in_Schleuse_OUT : Bool // Outbound (UH07): Voll-Puffer 20: Trolley fährt nicht in untere Schleuse + Err_Uebzeit : Bool // Outbound (UH07): Voll-Puffer 20: Überwachungzeit ist abgelaufen + Err_Schritt : Bool // Outbound (UH07): Voll-Puffer 20: Schritt-Nummer ist nicht definiert + Err_Stau_Einfahrt : Bool // Outbound (UH07): Voll-Puffer 20: Stau am Lager-Eingang + Err_BLKMov : Bool // Outbound (UH07): Voll-Puffer 20: Error bei Block kopieren + Err_Trolley_raus_OUT : Bool // Outbound (UH07): Voll-Puffer 20: Trolley fährt nicht aus unterer Schleuse + Err_Puffer_nicht_leer_OUT : Bool // Outbound (UH07): Voll-Puffer 20: Trolley unten in Schleuse, obwohl keine Daten! Initialisieren hat gestartet! + Err_Trolley_nicht_in_Schleuse_IN : Bool // Outbound (UH07): Voll-Puffer 20: Trolley fährt nicht in mittlere Schleuse + Err_Trolley_raus_IN : Bool // Outbound (UH07): Voll-Puffer 20: Trolley fährt nicht aus mittlere Schleuse + Err_Puffer_nicht_leer_IN : Bool // Outbound (UH07): Voll-Puffer 20: Trolley mittig in Schleuse, obwohl keine Daten! Initialisieren hat gestartet! + Frei14 : Bool // Outbound (UH07): Voll-Puffer 20: Frei14 + Err_Raus_Sensor : Bool // Outbound (UH07): Voll-Puffer 20: Raus-Sensor hat Dauersignal oder wird nicht erreicht + Frei16 : Bool // Outbound (UH07): Voll-Puffer 20: Frei16 + Reset_aktiv : Bool // Outbound (UH07): Voll-Puffer 20: Reset ist aktiv + VollPuffer21 : Struct // Outbound (UH07): Voll-Puffer 21 MB3213 + Lager_DL : Bool // Outbound (UH07): Voll-Puffer 21: Lager-Datenliste fehlerhaft + Undef_Lager : Bool // Outbound (UH07): Voll-Puffer 21: undefinierter Lager + Err_Trolley_nicht_in_Schleuse_OUT : Bool // Outbound (UH07): Voll-Puffer 21: Trolley fährt nicht in untere Schleuse + Err_Uebzeit : Bool // Outbound (UH07): Voll-Puffer 21: Überwachungzeit ist abgelaufen + Err_Schritt : Bool // Outbound (UH07): Voll-Puffer 21: Schritt-Nummer ist nicht definiert + Err_Stau_Einfahrt : Bool // Outbound (UH07): Voll-Puffer 21: Stau am Lager-Eingang + Err_BLKMov : Bool // Outbound (UH07): Voll-Puffer 21: Error bei Block kopieren + Err_Trolley_raus_OUT : Bool // Outbound (UH07): Voll-Puffer 21: Trolley fährt nicht aus unterer Schleuse + Err_Puffer_nicht_leer_OUT : Bool // Outbound (UH07): Voll-Puffer 21: Trolley unten in Schleuse, obwohl keine Daten! Initialisieren hat gestartet! + Err_Trolley_nicht_in_Schleuse_IN : Bool // Outbound (UH07): Voll-Puffer 21: Trolley fährt nicht in mittlere Schleuse + Err_Trolley_raus_IN : Bool // Outbound (UH07): Voll-Puffer 21: Trolley fährt nicht aus mittlere Schleuse + Err_Puffer_nicht_leer_IN : Bool // Outbound (UH07): Voll-Puffer 21: Trolley mittig in Schleuse, obwohl keine Daten! Initialisieren hat gestartet! + Frei14 : Bool // Outbound (UH07): Voll-Puffer 21: Frei14 + Err_Raus_Sensor : Bool // Outbound (UH07): Voll-Puffer 21: Raus-Sensor hat Dauersignal oder wird nicht erreicht + Frei16 : Bool // Outbound (UH07): Voll-Puffer 21: Frei16 + Reset_aktiv : Bool // Outbound (UH07): Voll-Puffer 21: Reset ist aktiv + VollPuffer22 : Struct // Outbound (UH07): Voll-Puffer 22 MB3212 + Lager_DL : Bool // Outbound (UH07): Voll-Puffer 22: Lager-Datenliste fehlerhaft + Undef_Lager : Bool // Outbound (UH07): Voll-Puffer 22: undefinierter Lager + Err_Trolley_nicht_in_Schleuse_OUT : Bool // Outbound (UH07): Voll-Puffer 22: Trolley fährt nicht in untere Schleuse + Err_Uebzeit : Bool // Outbound (UH07): Voll-Puffer 22: Überwachungzeit ist abgelaufen + Err_Schritt : Bool // Outbound (UH07): Voll-Puffer 22: Schritt-Nummer ist nicht definiert + Err_Stau_Einfahrt : Bool // Outbound (UH07): Voll-Puffer 22: Stau am Lager-Eingang + Err_BLKMov : Bool // Outbound (UH07): Voll-Puffer 22: Error bei Block kopieren + Err_Trolley_raus_OUT : Bool // Outbound (UH07): Voll-Puffer 22: Trolley fährt nicht aus unterer Schleuse + Err_Puffer_nicht_leer_OUT : Bool // Outbound (UH07): Voll-Puffer 22: Trolley unten in Schleuse, obwohl keine Daten! Initialisieren hat gestartet! + Err_Trolley_nicht_in_Schleuse_IN : Bool // Outbound (UH07): Voll-Puffer 22: Trolley fährt nicht in mittlere Schleuse + Err_Trolley_raus_IN : Bool // Outbound (UH07): Voll-Puffer 22: Trolley fährt nicht aus mittlere Schleuse + Err_Puffer_nicht_leer_IN : Bool // Outbound (UH07): Voll-Puffer 22: Trolley mittig in Schleuse, obwohl keine Daten! Initialisieren hat gestartet! + Frei14 : Bool // Outbound (UH07): Voll-Puffer 22: Frei14 + Err_Raus_Sensor : Bool // Outbound (UH07): Voll-Puffer 22: Raus-Sensor hat Dauersignal oder wird nicht erreicht + Frei16 : Bool // Outbound (UH07): Voll-Puffer 22: Frei16 + Reset_aktiv : Bool // Outbound (UH07): Voll-Puffer 22: Reset ist aktiv + VollPuffer23 : Struct // Outbound (UH07): Voll-Puffer 23 MB3211 + Lager_DL : Bool // Outbound (UH07): Voll-Puffer 23: Lager-Datenliste fehlerhaft + Undef_Lager : Bool // Outbound (UH07): Voll-Puffer 23: undefinierter Lager + Err_Trolley_nicht_in_Schleuse_OUT : Bool // Outbound (UH07): Voll-Puffer 23: Trolley fährt nicht in untere Schleuse + Err_Uebzeit : Bool // Outbound (UH07): Voll-Puffer 23: Überwachungzeit ist abgelaufen + Err_Schritt : Bool // Outbound (UH07): Voll-Puffer 23: Schritt-Nummer ist nicht definiert + Err_Stau_Einfahrt : Bool // Outbound (UH07): Voll-Puffer 23: Stau am Lager-Eingang + Err_BLKMov : Bool // Outbound (UH07): Voll-Puffer 23: Error bei Block kopieren + Err_Trolley_raus_OUT : Bool // Outbound (UH07): Voll-Puffer 23: Trolley fährt nicht aus unterer Schleuse + Err_Puffer_nicht_leer_OUT : Bool // Outbound (UH07): Voll-Puffer 23: Trolley unten in Schleuse, obwohl keine Daten! Initialisieren hat gestartet! + Err_Trolley_nicht_in_Schleuse_IN : Bool // Outbound (UH07): Voll-Puffer 23: Trolley fährt nicht in mittlere Schleuse + Err_Trolley_raus_IN : Bool // Outbound (UH07): Voll-Puffer 23: Trolley fährt nicht aus mittlere Schleuse + Err_Puffer_nicht_leer_IN : Bool // Outbound (UH07): Voll-Puffer 23: Trolley mittig in Schleuse, obwohl keine Daten! Initialisieren hat gestartet! + Frei14 : Bool // Outbound (UH07): Voll-Puffer 23: Frei14 + Err_Raus_Sensor : Bool // Outbound (UH07): Voll-Puffer 23: Raus-Sensor hat Dauersignal oder wird nicht erreicht + Frei16 : Bool // Outbound (UH07): Voll-Puffer 23: Frei16 + Reset_aktiv : Bool // Outbound (UH07): Voll-Puffer 23: Reset ist aktiv + VollPuffer24 : Struct // Outbound (UH07): Voll-Puffer 24 MB3210 + Lager_DL : Bool // Outbound (UH07): Voll-Puffer 24: Lager-Datenliste fehlerhaft + Undef_Lager : Bool // Outbound (UH07): Voll-Puffer 24: undefinierter Lager + Err_Trolley_nicht_in_Schleuse_OUT : Bool // Outbound (UH07): Voll-Puffer 24: Trolley fährt nicht in untere Schleuse + Err_Uebzeit : Bool // Outbound (UH07): Voll-Puffer 24: Überwachungzeit ist abgelaufen + Err_Schritt : Bool // Outbound (UH07): Voll-Puffer 24: Schritt-Nummer ist nicht definiert + Err_Stau_Einfahrt : Bool // Outbound (UH07): Voll-Puffer 24: Stau am Lager-Eingang + Err_BLKMov : Bool // Outbound (UH07): Voll-Puffer 24: Error bei Block kopieren + Err_Trolley_raus_OUT : Bool // Outbound (UH07): Voll-Puffer 24: Trolley fährt nicht aus unterer Schleuse + Err_Puffer_nicht_leer_OUT : Bool // Outbound (UH07): Voll-Puffer 24: Trolley unten in Schleuse, obwohl keine Daten! Initialisieren hat gestartet! + Err_Trolley_nicht_in_Schleuse_IN : Bool // Outbound (UH07): Voll-Puffer 24: Trolley fährt nicht in mittlere Schleuse + Err_Trolley_raus_IN : Bool // Outbound (UH07): Voll-Puffer 24: Trolley fährt nicht aus mittlere Schleuse + Err_Puffer_nicht_leer_IN : Bool // Outbound (UH07): Voll-Puffer 24: Trolley mittig in Schleuse, obwohl keine Daten! Initialisieren hat gestartet! + Frei14 : Bool // Outbound (UH07): Voll-Puffer 24: Frei14 + Err_Raus_Sensor : Bool // Outbound (UH07): Voll-Puffer 24: Raus-Sensor hat Dauersignal oder wird nicht erreicht + Frei16 : Bool // Outbound (UH07): Voll-Puffer 24: Frei16 + Reset_aktiv : Bool // Outbound (UH07): Voll-Puffer 24: Reset ist aktiv + VollPuffer25 : Struct // Outbound (UH07): Voll-Puffer 25 MB3207 + Lager_DL : Bool // Outbound (UH07): Voll-Puffer 25: Lager-Datenliste fehlerhaft + Undef_Lager : Bool // Outbound (UH07): Voll-Puffer 25: undefinierter Lager + Err_Trolley_nicht_in_Schleuse_OUT : Bool // Outbound (UH07): Voll-Puffer 25: Trolley fährt nicht in untere Schleuse + Err_Uebzeit : Bool // Outbound (UH07): Voll-Puffer 25: Überwachungzeit ist abgelaufen + Err_Schritt : Bool // Outbound (UH07): Voll-Puffer 25: Schritt-Nummer ist nicht definiert + Err_Stau_Einfahrt : Bool // Outbound (UH07): Voll-Puffer 25: Stau am Lager-Eingang + Err_BLKMov : Bool // Outbound (UH07): Voll-Puffer 25: Error bei Block kopieren + Err_Trolley_raus_OUT : Bool // Outbound (UH07): Voll-Puffer 25: Trolley fährt nicht aus unterer Schleuse + Err_Puffer_nicht_leer_OUT : Bool // Outbound (UH07): Voll-Puffer 25: Trolley unten in Schleuse, obwohl keine Daten! Initialisieren hat gestartet! + Err_Trolley_nicht_in_Schleuse_IN : Bool // Outbound (UH07): Voll-Puffer 25: Trolley fährt nicht in mittlere Schleuse + Err_Trolley_raus_IN : Bool // Outbound (UH07): Voll-Puffer 25: Trolley fährt nicht aus mittlere Schleuse + Err_Puffer_nicht_leer_IN : Bool // Outbound (UH07): Voll-Puffer 25: Trolley mittig in Schleuse, obwohl keine Daten! Initialisieren hat gestartet! + Frei14 : Bool // Outbound (UH07): Voll-Puffer 25: Frei14 + Err_Raus_Sensor : Bool // Outbound (UH07): Voll-Puffer 25: Raus-Sensor hat Dauersignal oder wird nicht erreicht + Frei16 : Bool // Outbound (UH07): Voll-Puffer 25: Frei16 + Reset_aktiv : Bool // Outbound (UH07): Voll-Puffer 25: Reset ist aktiv + VollPuffer26 : Struct // Outbound (UH07): Voll-Puffer 26 MB3206 + Lager_DL : Bool // Outbound (UH07): Voll-Puffer 26: Lager-Datenliste fehlerhaft + Undef_Lager : Bool // Outbound (UH07): Voll-Puffer 26: undefinierter Lager + Err_Trolley_nicht_in_Schleuse_OUT : Bool // Outbound (UH07): Voll-Puffer 26: Trolley fährt nicht in untere Schleuse + Err_Uebzeit : Bool // Outbound (UH07): Voll-Puffer 26: Überwachungzeit ist abgelaufen + Err_Schritt : Bool // Outbound (UH07): Voll-Puffer 26: Schritt-Nummer ist nicht definiert + Err_Stau_Einfahrt : Bool // Outbound (UH07): Voll-Puffer 26: Stau am Lager-Eingang + Err_BLKMov : Bool // Outbound (UH07): Voll-Puffer 26: Error bei Block kopieren + Err_Trolley_raus_OUT : Bool // Outbound (UH07): Voll-Puffer 26: Trolley fährt nicht aus unterer Schleuse + Err_Puffer_nicht_leer_OUT : Bool // Outbound (UH07): Voll-Puffer 26: Trolley unten in Schleuse, obwohl keine Daten! Initialisieren hat gestartet! + Err_Trolley_nicht_in_Schleuse_IN : Bool // Outbound (UH07): Voll-Puffer 26: Trolley fährt nicht in mittlere Schleuse + Err_Trolley_raus_IN : Bool // Outbound (UH07): Voll-Puffer 26: Trolley fährt nicht aus mittlere Schleuse + Err_Puffer_nicht_leer_IN : Bool // Outbound (UH07): Voll-Puffer 26: Trolley mittig in Schleuse, obwohl keine Daten! Initialisieren hat gestartet! + Frei14 : Bool // Outbound (UH07): Voll-Puffer 26: Frei14 + Err_Raus_Sensor : Bool // Outbound (UH07): Voll-Puffer 26: Raus-Sensor hat Dauersignal oder wird nicht erreicht + Frei16 : Bool // Outbound (UH07): Voll-Puffer 26: Frei16 + Reset_aktiv : Bool // Outbound (UH07): Voll-Puffer 26: Reset ist aktiv + VollPuffer27 : Struct // Outbound (UH07): Voll-Puffer 27 MB3205 + Lager_DL : Bool // Outbound (UH07): Voll-Puffer 27: Lager-Datenliste fehlerhaft + Undef_Lager : Bool // Outbound (UH07): Voll-Puffer 27: undefinierter Lager + Err_Trolley_nicht_in_Schleuse_OUT : Bool // Outbound (UH07): Voll-Puffer 27: Trolley fährt nicht in untere Schleuse + Err_Uebzeit : Bool // Outbound (UH07): Voll-Puffer 27: Überwachungzeit ist abgelaufen + Err_Schritt : Bool // Outbound (UH07): Voll-Puffer 27: Schritt-Nummer ist nicht definiert + Err_Stau_Einfahrt : Bool // Outbound (UH07): Voll-Puffer 27: Stau am Lager-Eingang + Err_BLKMov : Bool // Outbound (UH07): Voll-Puffer 27: Error bei Block kopieren + Err_Trolley_raus_OUT : Bool // Outbound (UH07): Voll-Puffer 27: Trolley fährt nicht aus unterer Schleuse + Err_Puffer_nicht_leer_OUT : Bool // Outbound (UH07): Voll-Puffer 27: Trolley unten in Schleuse, obwohl keine Daten! Initialisieren hat gestartet! + Err_Trolley_nicht_in_Schleuse_IN : Bool // Outbound (UH07): Voll-Puffer 27: Trolley fährt nicht in mittlere Schleuse + Err_Trolley_raus_IN : Bool // Outbound (UH07): Voll-Puffer 27: Trolley fährt nicht aus mittlere Schleuse + Err_Puffer_nicht_leer_IN : Bool // Outbound (UH07): Voll-Puffer 27: Trolley mittig in Schleuse, obwohl keine Daten! Initialisieren hat gestartet! + Frei14 : Bool // Outbound (UH07): Voll-Puffer 27: Frei14 + Err_Raus_Sensor : Bool // Outbound (UH07): Voll-Puffer 27: Raus-Sensor hat Dauersignal oder wird nicht erreicht + Frei16 : Bool // Outbound (UH07): Voll-Puffer 27: Frei16 + Reset_aktiv : Bool // Outbound (UH07): Voll-Puffer 27: Reset ist aktiv + VollPuffer28 : Struct // Outbound (UH07): Voll-Puffer 28 MB3204 + Lager_DL : Bool // Outbound (UH07): Voll-Puffer 28: Lager-Datenliste fehlerhaft + Undef_Lager : Bool // Outbound (UH07): Voll-Puffer 28: undefinierter Lager + Err_Trolley_nicht_in_Schleuse_OUT : Bool // Outbound (UH07): Voll-Puffer 28: Trolley fährt nicht in untere Schleuse + Err_Uebzeit : Bool // Outbound (UH07): Voll-Puffer 28: Überwachungzeit ist abgelaufen + Err_Schritt : Bool // Outbound (UH07): Voll-Puffer 28: Schritt-Nummer ist nicht definiert + Err_Stau_Einfahrt : Bool // Outbound (UH07): Voll-Puffer 28: Stau am Lager-Eingang + Err_BLKMov : Bool // Outbound (UH07): Voll-Puffer 28: Error bei Block kopieren + Err_Trolley_raus_OUT : Bool // Outbound (UH07): Voll-Puffer 28: Trolley fährt nicht aus unterer Schleuse + Err_Puffer_nicht_leer_OUT : Bool // Outbound (UH07): Voll-Puffer 28: Trolley unten in Schleuse, obwohl keine Daten! Initialisieren hat gestartet! + Err_Trolley_nicht_in_Schleuse_IN : Bool // Outbound (UH07): Voll-Puffer 28: Trolley fährt nicht in mittlere Schleuse + Err_Trolley_raus_IN : Bool // Outbound (UH07): Voll-Puffer 28: Trolley fährt nicht aus mittlere Schleuse + Err_Puffer_nicht_leer_IN : Bool // Outbound (UH07): Voll-Puffer 28: Trolley mittig in Schleuse, obwohl keine Daten! Initialisieren hat gestartet! + Frei14 : Bool // Outbound (UH07): Voll-Puffer 28: Frei14 + Err_Raus_Sensor : Bool // Outbound (UH07): Voll-Puffer 28: Raus-Sensor hat Dauersignal oder wird nicht erreicht + Frei16 : Bool // Outbound (UH07): Voll-Puffer 28: Frei16 + Reset_aktiv : Bool // Outbound (UH07): Voll-Puffer 28: Reset ist aktiv + VollPuffer29 : Struct // Outbound (UH07): Voll-Puffer 29 MB3203 + Lager_DL : Bool // Outbound (UH07): Voll-Puffer 29: Lager-Datenliste fehlerhaft + Undef_Lager : Bool // Outbound (UH07): Voll-Puffer 29: undefinierter Lager + Err_Trolley_nicht_in_Schleuse_OUT : Bool // Outbound (UH07): Voll-Puffer 29: Trolley fährt nicht in untere Schleuse + Err_Uebzeit : Bool // Outbound (UH07): Voll-Puffer 29: Überwachungzeit ist abgelaufen + Err_Schritt : Bool // Outbound (UH07): Voll-Puffer 29: Schritt-Nummer ist nicht definiert + Err_Stau_Einfahrt : Bool // Outbound (UH07): Voll-Puffer 29: Stau am Lager-Eingang + Err_BLKMov : Bool // Outbound (UH07): Voll-Puffer 29: Error bei Block kopieren + Err_Trolley_raus_OUT : Bool // Outbound (UH07): Voll-Puffer 29: Trolley fährt nicht aus unterer Schleuse + Err_Puffer_nicht_leer_OUT : Bool // Outbound (UH07): Voll-Puffer 29: Trolley unten in Schleuse, obwohl keine Daten! Initialisieren hat gestartet! + Err_Trolley_nicht_in_Schleuse_IN : Bool // Outbound (UH07): Voll-Puffer 29: Trolley fährt nicht in mittlere Schleuse + Err_Trolley_raus_IN : Bool // Outbound (UH07): Voll-Puffer 29: Trolley fährt nicht aus mittlere Schleuse + Err_Puffer_nicht_leer_IN : Bool // Outbound (UH07): Voll-Puffer 29: Trolley mittig in Schleuse, obwohl keine Daten! Initialisieren hat gestartet! + Frei14 : Bool // Outbound (UH07): Voll-Puffer 29: Frei14 + Err_Raus_Sensor : Bool // Outbound (UH07): Voll-Puffer 29: Raus-Sensor hat Dauersignal oder wird nicht erreicht + Frei16 : Bool // Outbound (UH07): Voll-Puffer 29: Frei16 + Reset_aktiv : Bool // Outbound (UH07): Voll-Puffer 29: Reset ist aktiv + VollPuffer30 : Struct // Outbound (UH07): Voll-Puffer 30 MB3202 + Lager_DL : Bool // Outbound (UH07): Voll-Puffer 30: Lager-Datenliste fehlerhaft + Undef_Lager : Bool // Outbound (UH07): Voll-Puffer 30: undefinierter Lager + Err_Trolley_nicht_in_Schleuse_OUT : Bool // Outbound (UH07): Voll-Puffer 30: Trolley fährt nicht in untere Schleuse + Err_Uebzeit : Bool // Outbound (UH07): Voll-Puffer 30: Überwachungzeit ist abgelaufen + Err_Schritt : Bool // Outbound (UH07): Voll-Puffer 30: Schritt-Nummer ist nicht definiert + Err_Stau_Einfahrt : Bool // Outbound (UH07): Voll-Puffer 30: Stau am Lager-Eingang + Err_BLKMov : Bool // Outbound (UH07): Voll-Puffer 30: Error bei Block kopieren + Err_Trolley_raus_OUT : Bool // Outbound (UH07): Voll-Puffer 30: Trolley fährt nicht aus unterer Schleuse + Err_Puffer_nicht_leer_OUT : Bool // Outbound (UH07): Voll-Puffer 30: Trolley unten in Schleuse, obwohl keine Daten! Initialisieren hat gestartet! + Err_Trolley_nicht_in_Schleuse_IN : Bool // Outbound (UH07): Voll-Puffer 30: Trolley fährt nicht in mittlere Schleuse + Err_Trolley_raus_IN : Bool // Outbound (UH07): Voll-Puffer 30: Trolley fährt nicht aus mittlere Schleuse + Err_Puffer_nicht_leer_IN : Bool // Outbound (UH07): Voll-Puffer 30: Trolley mittig in Schleuse, obwohl keine Daten! Initialisieren hat gestartet! + Frei14 : Bool // Outbound (UH07): Voll-Puffer 30: Frei14 + Err_Raus_Sensor : Bool // Outbound (UH07): Voll-Puffer 30: Raus-Sensor hat Dauersignal oder wird nicht erreicht + Frei16 : Bool // Outbound (UH07): Voll-Puffer 30: Frei16 + Reset_aktiv : Bool // Outbound (UH07): Voll-Puffer 30: Reset ist aktiv + VollPuffer31 : Struct // Outbound (UH07): Voll-Puffer 31 MB3201 + Lager_DL : Bool // Outbound (UH07): Voll-Puffer 31: Lager-Datenliste fehlerhaft + Undef_Lager : Bool // Outbound (UH07): Voll-Puffer 31: undefinierter Lager + Err_Trolley_nicht_in_Schleuse_OUT : Bool // Outbound (UH07): Voll-Puffer 31: Trolley fährt nicht in untere Schleuse + Err_Uebzeit : Bool // Outbound (UH07): Voll-Puffer 31: Überwachungzeit ist abgelaufen + Err_Schritt : Bool // Outbound (UH07): Voll-Puffer 31: Schritt-Nummer ist nicht definiert + Err_Stau_Einfahrt : Bool // Outbound (UH07): Voll-Puffer 31: Stau am Lager-Eingang + Err_BLKMov : Bool // Outbound (UH07): Voll-Puffer 31: Error bei Block kopieren + Err_Trolley_raus_OUT : Bool // Outbound (UH07): Voll-Puffer 31: Trolley fährt nicht aus unterer Schleuse + Err_Puffer_nicht_leer_OUT : Bool // Outbound (UH07): Voll-Puffer 31: Trolley unten in Schleuse, obwohl keine Daten! Initialisieren hat gestartet! + Err_Trolley_nicht_in_Schleuse_IN : Bool // Outbound (UH07): Voll-Puffer 31: Trolley fährt nicht in mittlere Schleuse + Err_Trolley_raus_IN : Bool // Outbound (UH07): Voll-Puffer 31: Trolley fährt nicht aus mittlere Schleuse + Err_Puffer_nicht_leer_IN : Bool // Outbound (UH07): Voll-Puffer 31: Trolley mittig in Schleuse, obwohl keine Daten! Initialisieren hat gestartet! + Frei14 : Bool // Outbound (UH07): Voll-Puffer 31: Frei14 + Err_Raus_Sensor : Bool // Outbound (UH07): Voll-Puffer 31: Raus-Sensor hat Dauersignal oder wird nicht erreicht + Frei16 : Bool // Outbound (UH07): Voll-Puffer 31: Frei16 + Reset_aktiv : Bool // Outbound (UH07): Voll-Puffer 31: Reset ist aktiv + VollPuffer32 : Struct // Outbound (UH07): Voll-Puffer 32 MB3200 + Lager_DL : Bool // Outbound (UH07): Voll-Puffer 32: Lager-Datenliste fehlerhaft + Undef_Lager : Bool // Outbound (UH07): Voll-Puffer 32: undefinierter Lager + Err_Trolley_nicht_in_Schleuse_OUT : Bool // Outbound (UH07): Voll-Puffer 32: Trolley fährt nicht in untere Schleuse + Err_Uebzeit : Bool // Outbound (UH07): Voll-Puffer 32: Überwachungzeit ist abgelaufen + Err_Schritt : Bool // Outbound (UH07): Voll-Puffer 32: Schritt-Nummer ist nicht definiert + Err_Stau_Einfahrt : Bool // Outbound (UH07): Voll-Puffer 32: Stau am Lager-Eingang + Err_BLKMov : Bool // Outbound (UH07): Voll-Puffer 32: Error bei Block kopieren + Err_Trolley_raus_OUT : Bool // Outbound (UH07): Voll-Puffer 32: Trolley fährt nicht aus unterer Schleuse + Err_Puffer_nicht_leer_OUT : Bool // Outbound (UH07): Voll-Puffer 32: Trolley unten in Schleuse, obwohl keine Daten! Initialisieren hat gestartet! + Err_Trolley_nicht_in_Schleuse_IN : Bool // Outbound (UH07): Voll-Puffer 32: Trolley fährt nicht in mittlere Schleuse + Err_Trolley_raus_IN : Bool // Outbound (UH07): Voll-Puffer 32: Trolley fährt nicht aus mittlere Schleuse + Err_Puffer_nicht_leer_IN : Bool // Outbound (UH07): Voll-Puffer 32: Trolley mittig in Schleuse, obwohl keine Daten! Initialisieren hat gestartet! + Frei14 : Bool // Outbound (UH07): Voll-Puffer 32: Frei14 + Err_Raus_Sensor : Bool // Outbound (UH07): Voll-Puffer 32: Raus-Sensor hat Dauersignal oder wird nicht erreicht + Frei16 : Bool // Outbound (UH07): Voll-Puffer 32: Frei16 + Reset_aktiv : Bool // Outbound (UH07): Voll-Puffer 32: Reset ist aktiv + VollPuffer33 : Struct // Outbound (UH07): Voll-Puffer 33 MB3197 + Lager_DL : Bool // Outbound (UH07): Voll-Puffer 33: Lager-Datenliste fehlerhaft + Undef_Lager : Bool // Outbound (UH07): Voll-Puffer 33: undefinierter Lager + Err_Trolley_nicht_in_Schleuse_OUT : Bool // Outbound (UH07): Voll-Puffer 33: Trolley fährt nicht in untere Schleuse + Err_Uebzeit : Bool // Outbound (UH07): Voll-Puffer 33: Überwachungzeit ist abgelaufen + Err_Schritt : Bool // Outbound (UH07): Voll-Puffer 33: Schritt-Nummer ist nicht definiert + Err_Stau_Einfahrt : Bool // Outbound (UH07): Voll-Puffer 33: Stau am Lager-Eingang + Err_BLKMov : Bool // Outbound (UH07): Voll-Puffer 33: Error bei Block kopieren + Err_Trolley_raus_OUT : Bool // Outbound (UH07): Voll-Puffer 33: Trolley fährt nicht aus unterer Schleuse + Err_Puffer_nicht_leer_OUT : Bool // Outbound (UH07): Voll-Puffer 33: Trolley unten in Schleuse, obwohl keine Daten! Initialisieren hat gestartet! + Err_Trolley_nicht_in_Schleuse_IN : Bool // Outbound (UH07): Voll-Puffer 33: Trolley fährt nicht in mittlere Schleuse + Err_Trolley_raus_IN : Bool // Outbound (UH07): Voll-Puffer 33: Trolley fährt nicht aus mittlere Schleuse + Err_Puffer_nicht_leer_IN : Bool // Outbound (UH07): Voll-Puffer 33: Trolley mittig in Schleuse, obwohl keine Daten! Initialisieren hat gestartet! + Frei14 : Bool // Outbound (UH07): Voll-Puffer 33: Frei14 + Err_Raus_Sensor : Bool // Outbound (UH07): Voll-Puffer 33: Raus-Sensor hat Dauersignal oder wird nicht erreicht + Frei16 : Bool // Outbound (UH07): Voll-Puffer 33: Frei16 + Reset_aktiv : Bool // Outbound (UH07): Voll-Puffer 33: Reset ist aktiv + VollPuffer34 : Struct // Outbound (UH07): Voll-Puffer 34 MB3196 + Lager_DL : Bool // Outbound (UH07): Voll-Puffer 34: Lager-Datenliste fehlerhaft + Undef_Lager : Bool // Outbound (UH07): Voll-Puffer 34: undefinierter Lager + Err_Trolley_nicht_in_Schleuse_OUT : Bool // Outbound (UH07): Voll-Puffer 34: Trolley fährt nicht in untere Schleuse + Err_Uebzeit : Bool // Outbound (UH07): Voll-Puffer 34: Überwachungzeit ist abgelaufen + Err_Schritt : Bool // Outbound (UH07): Voll-Puffer 34: Schritt-Nummer ist nicht definiert + Err_Stau_Einfahrt : Bool // Outbound (UH07): Voll-Puffer 34: Stau am Lager-Eingang + Err_BLKMov : Bool // Outbound (UH07): Voll-Puffer 34: Error bei Block kopieren + Err_Trolley_raus_OUT : Bool // Outbound (UH07): Voll-Puffer 34: Trolley fährt nicht aus unterer Schleuse + Err_Puffer_nicht_leer_OUT : Bool // Outbound (UH07): Voll-Puffer 34: Trolley unten in Schleuse, obwohl keine Daten! Initialisieren hat gestartet! + Err_Trolley_nicht_in_Schleuse_IN : Bool // Outbound (UH07): Voll-Puffer 34: Trolley fährt nicht in mittlere Schleuse + Err_Trolley_raus_IN : Bool // Outbound (UH07): Voll-Puffer 34: Trolley fährt nicht aus mittlere Schleuse + Err_Puffer_nicht_leer_IN : Bool // Outbound (UH07): Voll-Puffer 34: Trolley mittig in Schleuse, obwohl keine Daten! Initialisieren hat gestartet! + Frei14 : Bool // Outbound (UH07): Voll-Puffer 34: Frei14 + Err_Raus_Sensor : Bool // Outbound (UH07): Voll-Puffer 34: Raus-Sensor hat Dauersignal oder wird nicht erreicht + Frei16 : Bool // Outbound (UH07): Voll-Puffer 34: Frei16 + Reset_aktiv : Bool // Outbound (UH07): Voll-Puffer 34: Reset ist aktiv + VollPuffer35 : Struct // Outbound (UH07): Voll-Puffer 35 MB3195 + Lager_DL : Bool // Outbound (UH07): Voll-Puffer 35: Lager-Datenliste fehlerhaft + Undef_Lager : Bool // Outbound (UH07): Voll-Puffer 35: undefinierter Lager + Err_Trolley_nicht_in_Schleuse_OUT : Bool // Outbound (UH07): Voll-Puffer 35: Trolley fährt nicht in untere Schleuse + Err_Uebzeit : Bool // Outbound (UH07): Voll-Puffer 35: Überwachungzeit ist abgelaufen + Err_Schritt : Bool // Outbound (UH07): Voll-Puffer 35: Schritt-Nummer ist nicht definiert + Err_Stau_Einfahrt : Bool // Outbound (UH07): Voll-Puffer 35: Stau am Lager-Eingang + Err_BLKMov : Bool // Outbound (UH07): Voll-Puffer 35: Error bei Block kopieren + Err_Trolley_raus_OUT : Bool // Outbound (UH07): Voll-Puffer 35: Trolley fährt nicht aus unterer Schleuse + Err_Puffer_nicht_leer_OUT : Bool // Outbound (UH07): Voll-Puffer 35: Trolley unten in Schleuse, obwohl keine Daten! Initialisieren hat gestartet! + Err_Trolley_nicht_in_Schleuse_IN : Bool // Outbound (UH07): Voll-Puffer 35: Trolley fährt nicht in mittlere Schleuse + Err_Trolley_raus_IN : Bool // Outbound (UH07): Voll-Puffer 35: Trolley fährt nicht aus mittlere Schleuse + Err_Puffer_nicht_leer_IN : Bool // Outbound (UH07): Voll-Puffer 35: Trolley mittig in Schleuse, obwohl keine Daten! Initialisieren hat gestartet! + Frei14 : Bool // Outbound (UH07): Voll-Puffer 35: Frei14 + Err_Raus_Sensor : Bool // Outbound (UH07): Voll-Puffer 35: Raus-Sensor hat Dauersignal oder wird nicht erreicht + Frei16 : Bool // Outbound (UH07): Voll-Puffer 35: Frei16 + Reset_aktiv : Bool // Outbound (UH07): Voll-Puffer 35: Reset ist aktiv + VollPuffer36 : Struct // Outbound (UH07): Voll-Puffer 36 MB3194 + Lager_DL : Bool // Outbound (UH07): Voll-Puffer 36: Lager-Datenliste fehlerhaft + Undef_Lager : Bool // Outbound (UH07): Voll-Puffer 36: undefinierter Lager + Err_Trolley_nicht_in_Schleuse_OUT : Bool // Outbound (UH07): Voll-Puffer 36: Trolley fährt nicht in untere Schleuse + Err_Uebzeit : Bool // Outbound (UH07): Voll-Puffer 36: Überwachungzeit ist abgelaufen + Err_Schritt : Bool // Outbound (UH07): Voll-Puffer 36: Schritt-Nummer ist nicht definiert + Err_Stau_Einfahrt : Bool // Outbound (UH07): Voll-Puffer 36: Stau am Lager-Eingang + Err_BLKMov : Bool // Outbound (UH07): Voll-Puffer 36: Error bei Block kopieren + Err_Trolley_raus_OUT : Bool // Outbound (UH07): Voll-Puffer 36: Trolley fährt nicht aus unterer Schleuse + Err_Puffer_nicht_leer_OUT : Bool // Outbound (UH07): Voll-Puffer 36: Trolley unten in Schleuse, obwohl keine Daten! Initialisieren hat gestartet! + Err_Trolley_nicht_in_Schleuse_IN : Bool // Outbound (UH07): Voll-Puffer 36: Trolley fährt nicht in mittlere Schleuse + Err_Trolley_raus_IN : Bool // Outbound (UH07): Voll-Puffer 36: Trolley fährt nicht aus mittlere Schleuse + Err_Puffer_nicht_leer_IN : Bool // Outbound (UH07): Voll-Puffer 36: Trolley mittig in Schleuse, obwohl keine Daten! Initialisieren hat gestartet! + Frei14 : Bool // Outbound (UH07): Voll-Puffer 36: Frei14 + Err_Raus_Sensor : Bool // Outbound (UH07): Voll-Puffer 36: Raus-Sensor hat Dauersignal oder wird nicht erreicht + Frei16 : Bool // Outbound (UH07): Voll-Puffer 36: Frei16 + Reset_aktiv : Bool // Outbound (UH07): Voll-Puffer 36: Reset ist aktiv + VollPuffer37 : Struct // Outbound (UH07): Voll-Puffer 37 MB3193 + Lager_DL : Bool // Outbound (UH07): Voll-Puffer 37: Lager-Datenliste fehlerhaft + Undef_Lager : Bool // Outbound (UH07): Voll-Puffer 37: undefinierter Lager + Err_Trolley_nicht_in_Schleuse_OUT : Bool // Outbound (UH07): Voll-Puffer 37: Trolley fährt nicht in untere Schleuse + Err_Uebzeit : Bool // Outbound (UH07): Voll-Puffer 37: Überwachungzeit ist abgelaufen + Err_Schritt : Bool // Outbound (UH07): Voll-Puffer 37: Schritt-Nummer ist nicht definiert + Err_Stau_Einfahrt : Bool // Outbound (UH07): Voll-Puffer 37: Stau am Lager-Eingang + Err_BLKMov : Bool // Outbound (UH07): Voll-Puffer 37: Error bei Block kopieren + Err_Trolley_raus_OUT : Bool // Outbound (UH07): Voll-Puffer 37: Trolley fährt nicht aus unterer Schleuse + Err_Puffer_nicht_leer_OUT : Bool // Outbound (UH07): Voll-Puffer 37: Trolley unten in Schleuse, obwohl keine Daten! Initialisieren hat gestartet! + Err_Trolley_nicht_in_Schleuse_IN : Bool // Outbound (UH07): Voll-Puffer 37: Trolley fährt nicht in mittlere Schleuse + Err_Trolley_raus_IN : Bool // Outbound (UH07): Voll-Puffer 37: Trolley fährt nicht aus mittlere Schleuse + Err_Puffer_nicht_leer_IN : Bool // Outbound (UH07): Voll-Puffer 37: Trolley mittig in Schleuse, obwohl keine Daten! Initialisieren hat gestartet! + Frei14 : Bool // Outbound (UH07): Voll-Puffer 37: Frei14 + Err_Raus_Sensor : Bool // Outbound (UH07): Voll-Puffer 37: Raus-Sensor hat Dauersignal oder wird nicht erreicht + Frei16 : Bool // Outbound (UH07): Voll-Puffer 37: Frei16 + Reset_aktiv : Bool // Outbound (UH07): Voll-Puffer 37: Reset ist aktiv + VollPuffer38 : Struct // Outbound (UH07): Voll-Puffer 38 MB3192 + Lager_DL : Bool // Outbound (UH07): Voll-Puffer 38: Lager-Datenliste fehlerhaft + Undef_Lager : Bool // Outbound (UH07): Voll-Puffer 38: undefinierter Lager + Err_Trolley_nicht_in_Schleuse_OUT : Bool // Outbound (UH07): Voll-Puffer 38: Trolley fährt nicht in untere Schleuse + Err_Uebzeit : Bool // Outbound (UH07): Voll-Puffer 38: Überwachungzeit ist abgelaufen + Err_Schritt : Bool // Outbound (UH07): Voll-Puffer 38: Schritt-Nummer ist nicht definiert + Err_Stau_Einfahrt : Bool // Outbound (UH07): Voll-Puffer 38: Stau am Lager-Eingang + Err_BLKMov : Bool // Outbound (UH07): Voll-Puffer 38: Error bei Block kopieren + Err_Trolley_raus_OUT : Bool // Outbound (UH07): Voll-Puffer 38: Trolley fährt nicht aus unterer Schleuse + Err_Puffer_nicht_leer_OUT : Bool // Outbound (UH07): Voll-Puffer 38: Trolley unten in Schleuse, obwohl keine Daten! Initialisieren hat gestartet! + Err_Trolley_nicht_in_Schleuse_IN : Bool // Outbound (UH07): Voll-Puffer 38: Trolley fährt nicht in mittlere Schleuse + Err_Trolley_raus_IN : Bool // Outbound (UH07): Voll-Puffer 38: Trolley fährt nicht aus mittlere Schleuse + Err_Puffer_nicht_leer_IN : Bool // Outbound (UH07): Voll-Puffer 38: Trolley mittig in Schleuse, obwohl keine Daten! Initialisieren hat gestartet! + Frei14 : Bool // Outbound (UH07): Voll-Puffer 38: Frei14 + Err_Raus_Sensor : Bool // Outbound (UH07): Voll-Puffer 38: Raus-Sensor hat Dauersignal oder wird nicht erreicht + Frei16 : Bool // Outbound (UH07): Voll-Puffer 38: Frei16 + Reset_aktiv : Bool // Outbound (UH07): Voll-Puffer 38: Reset ist aktiv + VollPuffer39 : Struct // Outbound (UH07): Voll-Puffer 39 MB3191 + Lager_DL : Bool // Outbound (UH07): Voll-Puffer 39: Lager-Datenliste fehlerhaft + Undef_Lager : Bool // Outbound (UH07): Voll-Puffer 39: undefinierter Lager + Err_Trolley_nicht_in_Schleuse_OUT : Bool // Outbound (UH07): Voll-Puffer 39: Trolley fährt nicht in untere Schleuse + Err_Uebzeit : Bool // Outbound (UH07): Voll-Puffer 39: Überwachungzeit ist abgelaufen + Err_Schritt : Bool // Outbound (UH07): Voll-Puffer 39: Schritt-Nummer ist nicht definiert + Err_Stau_Einfahrt : Bool // Outbound (UH07): Voll-Puffer 39: Stau am Lager-Eingang + Err_BLKMov : Bool // Outbound (UH07): Voll-Puffer 39: Error bei Block kopieren + Err_Trolley_raus_OUT : Bool // Outbound (UH07): Voll-Puffer 39: Trolley fährt nicht aus unterer Schleuse + Err_Puffer_nicht_leer_OUT : Bool // Outbound (UH07): Voll-Puffer 39: Trolley unten in Schleuse, obwohl keine Daten! Initialisieren hat gestartet! + Err_Trolley_nicht_in_Schleuse_IN : Bool // Outbound (UH07): Voll-Puffer 39: Trolley fährt nicht in mittlere Schleuse + Err_Trolley_raus_IN : Bool // Outbound (UH07): Voll-Puffer 39: Trolley fährt nicht aus mittlere Schleuse + Err_Puffer_nicht_leer_IN : Bool // Outbound (UH07): Voll-Puffer 39: Trolley mittig in Schleuse, obwohl keine Daten! Initialisieren hat gestartet! + Frei14 : Bool // Outbound (UH07): Voll-Puffer 39: Frei14 + Err_Raus_Sensor : Bool // Outbound (UH07): Voll-Puffer 39: Raus-Sensor hat Dauersignal oder wird nicht erreicht + Frei16 : Bool // Outbound (UH07): Voll-Puffer 39: Frei16 + Reset_aktiv : Bool // Outbound (UH07): Voll-Puffer 39: Reset ist aktiv + VollPuffer40 : Struct // Outbound (UH07): Voll-Puffer 40 MB3190 + Lager_DL : Bool // Outbound (UH07): Voll-Puffer 40: Lager-Datenliste fehlerhaft + Undef_Lager : Bool // Outbound (UH07): Voll-Puffer 40: undefinierter Lager + Err_Trolley_nicht_in_Schleuse_OUT : Bool // Outbound (UH07): Voll-Puffer 40: Trolley fährt nicht in untere Schleuse + Err_Uebzeit : Bool // Outbound (UH07): Voll-Puffer 40: Überwachungzeit ist abgelaufen + Err_Schritt : Bool // Outbound (UH07): Voll-Puffer 40: Schritt-Nummer ist nicht definiert + Err_Stau_Einfahrt : Bool // Outbound (UH07): Voll-Puffer 40: Stau am Lager-Eingang + Err_BLKMov : Bool // Outbound (UH07): Voll-Puffer 40: Error bei Block kopieren + Err_Trolley_raus_OUT : Bool // Outbound (UH07): Voll-Puffer 40: Trolley fährt nicht aus unterer Schleuse + Err_Puffer_nicht_leer_OUT : Bool // Outbound (UH07): Voll-Puffer 40: Trolley unten in Schleuse, obwohl keine Daten! Initialisieren hat gestartet! + Err_Trolley_nicht_in_Schleuse_IN : Bool // Outbound (UH07): Voll-Puffer 40: Trolley fährt nicht in mittlere Schleuse + Err_Trolley_raus_IN : Bool // Outbound (UH07): Voll-Puffer 40: Trolley fährt nicht aus mittlere Schleuse + Err_Puffer_nicht_leer_IN : Bool // Outbound (UH07): Voll-Puffer 40: Trolley mittig in Schleuse, obwohl keine Daten! Initialisieren hat gestartet! + Frei14 : Bool // Outbound (UH07): Voll-Puffer 40: Frei14 + Err_Raus_Sensor : Bool // Outbound (UH07): Voll-Puffer 40: Raus-Sensor hat Dauersignal oder wird nicht erreicht + Frei16 : Bool // Outbound (UH07): Voll-Puffer 40: Frei16 + Reset_aktiv : Bool // Outbound (UH07): Voll-Puffer 40: Reset ist aktiv + VollPuffer41 : Struct // Outbound (UH07): Voll-Puffer 41 MB3494 + Lager_DL : Bool // Outbound (UH07): Voll-Puffer 41: Lager-Datenliste fehlerhaft + Undef_Lager : Bool // Outbound (UH07): Voll-Puffer 41: undefinierter Lager + Err_Trolley_nicht_in_Schleuse_OUT : Bool // Outbound (UH07): Voll-Puffer 41: Trolley fährt nicht in untere Schleuse + Err_Uebzeit : Bool // Outbound (UH07): Voll-Puffer 41: Überwachungzeit ist abgelaufen + Err_Schritt : Bool // Outbound (UH07): Voll-Puffer 41: Schritt-Nummer ist nicht definiert + Err_Stau_Einfahrt : Bool // Outbound (UH07): Voll-Puffer 41: Stau am Lager-Eingang + Err_BLKMov : Bool // Outbound (UH07): Voll-Puffer 41: Error bei Block kopieren + Err_Trolley_raus_OUT : Bool // Outbound (UH07): Voll-Puffer 41: Trolley fährt nicht aus unterer Schleuse + Err_Puffer_nicht_leer_OUT : Bool // Outbound (UH07): Voll-Puffer 41: Trolley unten in Schleuse, obwohl keine Daten! Initialisieren hat gestartet! + Err_Trolley_nicht_in_Schleuse_IN : Bool // Outbound (UH07): Voll-Puffer 41: Trolley fährt nicht in mittlere Schleuse + Err_Trolley_raus_IN : Bool // Outbound (UH07): Voll-Puffer 41: Trolley fährt nicht aus mittlere Schleuse + Err_Puffer_nicht_leer_IN : Bool // Outbound (UH07): Voll-Puffer 41: Trolley mittig in Schleuse, obwohl keine Daten! Initialisieren hat gestartet! + Frei14 : Bool // Outbound (UH07): Voll-Puffer 41: Frei14 + Err_Raus_Sensor : Bool // Outbound (UH07): Voll-Puffer 41: Raus-Sensor hat Dauersignal oder wird nicht erreicht + Frei16 : Bool // Outbound (UH07): Voll-Puffer 41: Frei16 + Reset_aktiv : Bool // Outbound (UH07): Voll-Puffer 41: Reset ist aktiv + VollPuffer42 : Struct // Outbound (UH07): Voll-Puffer 42 MB3493 + Lager_DL : Bool // Outbound (UH07): Voll-Puffer 42: Lager-Datenliste fehlerhaft + Undef_Lager : Bool // Outbound (UH07): Voll-Puffer 42: undefinierter Lager + Err_Trolley_nicht_in_Schleuse_OUT : Bool // Outbound (UH07): Voll-Puffer 42: Trolley fährt nicht in untere Schleuse + Err_Uebzeit : Bool // Outbound (UH07): Voll-Puffer 42: Überwachungzeit ist abgelaufen + Err_Schritt : Bool // Outbound (UH07): Voll-Puffer 42: Schritt-Nummer ist nicht definiert + Err_Stau_Einfahrt : Bool // Outbound (UH07): Voll-Puffer 42: Stau am Lager-Eingang + Err_BLKMov : Bool // Outbound (UH07): Voll-Puffer 42: Error bei Block kopieren + Err_Trolley_raus_OUT : Bool // Outbound (UH07): Voll-Puffer 42: Trolley fährt nicht aus unterer Schleuse + Err_Puffer_nicht_leer_OUT : Bool // Outbound (UH07): Voll-Puffer 42: Trolley unten in Schleuse, obwohl keine Daten! Initialisieren hat gestartet! + Err_Trolley_nicht_in_Schleuse_IN : Bool // Outbound (UH07): Voll-Puffer 42: Trolley fährt nicht in mittlere Schleuse + Err_Trolley_raus_IN : Bool // Outbound (UH07): Voll-Puffer 42: Trolley fährt nicht aus mittlere Schleuse + Err_Puffer_nicht_leer_IN : Bool // Outbound (UH07): Voll-Puffer 42: Trolley mittig in Schleuse, obwohl keine Daten! Initialisieren hat gestartet! + Frei14 : Bool // Outbound (UH07): Voll-Puffer 42: Frei14 + Err_Raus_Sensor : Bool // Outbound (UH07): Voll-Puffer 42: Raus-Sensor hat Dauersignal oder wird nicht erreicht + Frei16 : Bool // Outbound (UH07): Voll-Puffer 42: Frei16 + Reset_aktiv : Bool // Outbound (UH07): Voll-Puffer 42: Reset ist aktiv + VollPuffer43 : Struct // Outbound (UH07): Voll-Puffer 43 MB3492 + Lager_DL : Bool // Outbound (UH07): Voll-Puffer 43: Lager-Datenliste fehlerhaft + Undef_Lager : Bool // Outbound (UH07): Voll-Puffer 43: undefinierter Lager + Err_Trolley_nicht_in_Schleuse_OUT : Bool // Outbound (UH07): Voll-Puffer 43: Trolley fährt nicht in untere Schleuse + Err_Uebzeit : Bool // Outbound (UH07): Voll-Puffer 43: Überwachungzeit ist abgelaufen + Err_Schritt : Bool // Outbound (UH07): Voll-Puffer 43: Schritt-Nummer ist nicht definiert + Err_Stau_Einfahrt : Bool // Outbound (UH07): Voll-Puffer 43: Stau am Lager-Eingang + Err_BLKMov : Bool // Outbound (UH07): Voll-Puffer 43: Error bei Block kopieren + Err_Trolley_raus_OUT : Bool // Outbound (UH07): Voll-Puffer 43: Trolley fährt nicht aus unterer Schleuse + Err_Puffer_nicht_leer_OUT : Bool // Outbound (UH07): Voll-Puffer 43: Trolley unten in Schleuse, obwohl keine Daten! Initialisieren hat gestartet! + Err_Trolley_nicht_in_Schleuse_IN : Bool // Outbound (UH07): Voll-Puffer 43: Trolley fährt nicht in mittlere Schleuse + Err_Trolley_raus_IN : Bool // Outbound (UH07): Voll-Puffer 43: Trolley fährt nicht aus mittlere Schleuse + Err_Puffer_nicht_leer_IN : Bool // Outbound (UH07): Voll-Puffer 43: Trolley mittig in Schleuse, obwohl keine Daten! Initialisieren hat gestartet! + Frei14 : Bool // Outbound (UH07): Voll-Puffer 43: Frei14 + Err_Raus_Sensor : Bool // Outbound (UH07): Voll-Puffer 43: Raus-Sensor hat Dauersignal oder wird nicht erreicht + Frei16 : Bool // Outbound (UH07): Voll-Puffer 43: Frei16 + Reset_aktiv : Bool // Outbound (UH07): Voll-Puffer 43: Reset ist aktiv + VollPuffer44 : Struct // Outbound (UH07): Voll-Puffer 44 MB3491 + Lager_DL : Bool // Outbound (UH07): Voll-Puffer 44: Lager-Datenliste fehlerhaft + Undef_Lager : Bool // Outbound (UH07): Voll-Puffer 44: undefinierter Lager + Err_Trolley_nicht_in_Schleuse_OUT : Bool // Outbound (UH07): Voll-Puffer 44: Trolley fährt nicht in untere Schleuse + Err_Uebzeit : Bool // Outbound (UH07): Voll-Puffer 44: Überwachungzeit ist abgelaufen + Err_Schritt : Bool // Outbound (UH07): Voll-Puffer 44: Schritt-Nummer ist nicht definiert + Err_Stau_Einfahrt : Bool // Outbound (UH07): Voll-Puffer 44: Stau am Lager-Eingang + Err_BLKMov : Bool // Outbound (UH07): Voll-Puffer 44: Error bei Block kopieren + Err_Trolley_raus_OUT : Bool // Outbound (UH07): Voll-Puffer 44: Trolley fährt nicht aus unterer Schleuse + Err_Puffer_nicht_leer_OUT : Bool // Outbound (UH07): Voll-Puffer 44: Trolley unten in Schleuse, obwohl keine Daten! Initialisieren hat gestartet! + Err_Trolley_nicht_in_Schleuse_IN : Bool // Outbound (UH07): Voll-Puffer 44: Trolley fährt nicht in mittlere Schleuse + Err_Trolley_raus_IN : Bool // Outbound (UH07): Voll-Puffer 44: Trolley fährt nicht aus mittlere Schleuse + Err_Puffer_nicht_leer_IN : Bool // Outbound (UH07): Voll-Puffer 44: Trolley mittig in Schleuse, obwohl keine Daten! Initialisieren hat gestartet! + Frei14 : Bool // Outbound (UH07): Voll-Puffer 44: Frei14 + Err_Raus_Sensor : Bool // Outbound (UH07): Voll-Puffer 44: Raus-Sensor hat Dauersignal oder wird nicht erreicht + Frei16 : Bool // Outbound (UH07): Voll-Puffer 44: Frei16 + Reset_aktiv : Bool // Outbound (UH07): Voll-Puffer 44: Reset ist aktiv + VollPuffer45 : Struct // Outbound (UH07): Voll-Puffer 45 MB3490 + Lager_DL : Bool // Outbound (UH07): Voll-Puffer 45: Lager-Datenliste fehlerhaft + Undef_Lager : Bool // Outbound (UH07): Voll-Puffer 45: undefinierter Lager + Err_Trolley_nicht_in_Schleuse_OUT : Bool // Outbound (UH07): Voll-Puffer 45: Trolley fährt nicht in untere Schleuse + Err_Uebzeit : Bool // Outbound (UH07): Voll-Puffer 45: Überwachungzeit ist abgelaufen + Err_Schritt : Bool // Outbound (UH07): Voll-Puffer 45: Schritt-Nummer ist nicht definiert + Err_Stau_Einfahrt : Bool // Outbound (UH07): Voll-Puffer 45: Stau am Lager-Eingang + Err_BLKMov : Bool // Outbound (UH07): Voll-Puffer 45: Error bei Block kopieren + Err_Trolley_raus_OUT : Bool // Outbound (UH07): Voll-Puffer 45: Trolley fährt nicht aus unterer Schleuse + Err_Puffer_nicht_leer_OUT : Bool // Outbound (UH07): Voll-Puffer 45: Trolley unten in Schleuse, obwohl keine Daten! Initialisieren hat gestartet! + Err_Trolley_nicht_in_Schleuse_IN : Bool // Outbound (UH07): Voll-Puffer 45: Trolley fährt nicht in mittlere Schleuse + Err_Trolley_raus_IN : Bool // Outbound (UH07): Voll-Puffer 45: Trolley fährt nicht aus mittlere Schleuse + Err_Puffer_nicht_leer_IN : Bool // Outbound (UH07): Voll-Puffer 45: Trolley mittig in Schleuse, obwohl keine Daten! Initialisieren hat gestartet! + Frei14 : Bool // Outbound (UH07): Voll-Puffer 45: Frei14 + Err_Raus_Sensor : Bool // Outbound (UH07): Voll-Puffer 45: Raus-Sensor hat Dauersignal oder wird nicht erreicht + Frei16 : Bool // Outbound (UH07): Voll-Puffer 45: Frei16 + Reset_aktiv : Bool // Outbound (UH07): Voll-Puffer 45: Reset ist aktiv + VollPuffer46 : Struct // Outbound (UH07): Voll-Puffer 46 MB3487 + Lager_DL : Bool // Outbound (UH07): Voll-Puffer 46: Lager-Datenliste fehlerhaft + Undef_Lager : Bool // Outbound (UH07): Voll-Puffer 46: undefinierter Lager + Err_Trolley_nicht_in_Schleuse_OUT : Bool // Outbound (UH07): Voll-Puffer 46: Trolley fährt nicht in untere Schleuse + Err_Uebzeit : Bool // Outbound (UH07): Voll-Puffer 46: Überwachungzeit ist abgelaufen + Err_Schritt : Bool // Outbound (UH07): Voll-Puffer 46: Schritt-Nummer ist nicht definiert + Err_Stau_Einfahrt : Bool // Outbound (UH07): Voll-Puffer 46: Stau am Lager-Eingang + Err_BLKMov : Bool // Outbound (UH07): Voll-Puffer 46: Error bei Block kopieren + Err_Trolley_raus_OUT : Bool // Outbound (UH07): Voll-Puffer 46: Trolley fährt nicht aus unterer Schleuse + Err_Puffer_nicht_leer_OUT : Bool // Outbound (UH07): Voll-Puffer 46: Trolley unten in Schleuse, obwohl keine Daten! Initialisieren hat gestartet! + Err_Trolley_nicht_in_Schleuse_IN : Bool // Outbound (UH07): Voll-Puffer 46: Trolley fährt nicht in mittlere Schleuse + Err_Trolley_raus_IN : Bool // Outbound (UH07): Voll-Puffer 46: Trolley fährt nicht aus mittlere Schleuse + Err_Puffer_nicht_leer_IN : Bool // Outbound (UH07): Voll-Puffer 46: Trolley mittig in Schleuse, obwohl keine Daten! Initialisieren hat gestartet! + Frei14 : Bool // Outbound (UH07): Voll-Puffer 46: Frei14 + Err_Raus_Sensor : Bool // Outbound (UH07): Voll-Puffer 46: Raus-Sensor hat Dauersignal oder wird nicht erreicht + Frei16 : Bool // Outbound (UH07): Voll-Puffer 46: Frei16 + Reset_aktiv : Bool // Outbound (UH07): Voll-Puffer 46: Reset ist aktiv + VollPuffer47 : Struct // Outbound (UH07): Voll-Puffer 47 MB3486 + Lager_DL : Bool // Outbound (UH07): Voll-Puffer 47: Lager-Datenliste fehlerhaft + Undef_Lager : Bool // Outbound (UH07): Voll-Puffer 47: undefinierter Lager + Err_Trolley_nicht_in_Schleuse_OUT : Bool // Outbound (UH07): Voll-Puffer 47: Trolley fährt nicht in untere Schleuse + Err_Uebzeit : Bool // Outbound (UH07): Voll-Puffer 47: Überwachungzeit ist abgelaufen + Err_Schritt : Bool // Outbound (UH07): Voll-Puffer 47: Schritt-Nummer ist nicht definiert + Err_Stau_Einfahrt : Bool // Outbound (UH07): Voll-Puffer 47: Stau am Lager-Eingang + Err_BLKMov : Bool // Outbound (UH07): Voll-Puffer 47: Error bei Block kopieren + Err_Trolley_raus_OUT : Bool // Outbound (UH07): Voll-Puffer 47: Trolley fährt nicht aus unterer Schleuse + Err_Puffer_nicht_leer_OUT : Bool // Outbound (UH07): Voll-Puffer 47: Trolley unten in Schleuse, obwohl keine Daten! Initialisieren hat gestartet! + Err_Trolley_nicht_in_Schleuse_IN : Bool // Outbound (UH07): Voll-Puffer 47: Trolley fährt nicht in mittlere Schleuse + Err_Trolley_raus_IN : Bool // Outbound (UH07): Voll-Puffer 47: Trolley fährt nicht aus mittlere Schleuse + Err_Puffer_nicht_leer_IN : Bool // Outbound (UH07): Voll-Puffer 47: Trolley mittig in Schleuse, obwohl keine Daten! Initialisieren hat gestartet! + Frei14 : Bool // Outbound (UH07): Voll-Puffer 47: Frei14 + Err_Raus_Sensor : Bool // Outbound (UH07): Voll-Puffer 47: Raus-Sensor hat Dauersignal oder wird nicht erreicht + Frei16 : Bool // Outbound (UH07): Voll-Puffer 47: Frei16 + Reset_aktiv : Bool // Outbound (UH07): Voll-Puffer 47: Reset ist aktiv + VollPuffer48 : Struct // Outbound (UH07): Voll-Puffer 48 MB3485 + Lager_DL : Bool // Outbound (UH07): Voll-Puffer 48: Lager-Datenliste fehlerhaft + Undef_Lager : Bool // Outbound (UH07): Voll-Puffer 48: undefinierter Lager + Err_Trolley_nicht_in_Schleuse_OUT : Bool // Outbound (UH07): Voll-Puffer 48: Trolley fährt nicht in untere Schleuse + Err_Uebzeit : Bool // Outbound (UH07): Voll-Puffer 48: Überwachungzeit ist abgelaufen + Err_Schritt : Bool // Outbound (UH07): Voll-Puffer 48: Schritt-Nummer ist nicht definiert + Err_Stau_Einfahrt : Bool // Outbound (UH07): Voll-Puffer 48: Stau am Lager-Eingang + Err_BLKMov : Bool // Outbound (UH07): Voll-Puffer 48: Error bei Block kopieren + Err_Trolley_raus_OUT : Bool // Outbound (UH07): Voll-Puffer 48: Trolley fährt nicht aus unterer Schleuse + Err_Puffer_nicht_leer_OUT : Bool // Outbound (UH07): Voll-Puffer 48: Trolley unten in Schleuse, obwohl keine Daten! Initialisieren hat gestartet! + Err_Trolley_nicht_in_Schleuse_IN : Bool // Outbound (UH07): Voll-Puffer 48: Trolley fährt nicht in mittlere Schleuse + Err_Trolley_raus_IN : Bool // Outbound (UH07): Voll-Puffer 48: Trolley fährt nicht aus mittlere Schleuse + Err_Puffer_nicht_leer_IN : Bool // Outbound (UH07): Voll-Puffer 48: Trolley mittig in Schleuse, obwohl keine Daten! Initialisieren hat gestartet! + Frei14 : Bool // Outbound (UH07): Voll-Puffer 48: Frei14 + Err_Raus_Sensor : Bool // Outbound (UH07): Voll-Puffer 48: Raus-Sensor hat Dauersignal oder wird nicht erreicht + Frei16 : Bool // Outbound (UH07): Voll-Puffer 48: Frei16 + Reset_aktiv : Bool // Outbound (UH07): Voll-Puffer 48: Reset ist aktiv + VollPuffer49 : Struct // Outbound (UH07): Voll-Puffer 49 MB3484 + Lager_DL : Bool // Outbound (UH07): Voll-Puffer 49: Lager-Datenliste fehlerhaft + Undef_Lager : Bool // Outbound (UH07): Voll-Puffer 49: undefinierter Lager + Err_Trolley_nicht_in_Schleuse_OUT : Bool // Outbound (UH07): Voll-Puffer 49: Trolley fährt nicht in untere Schleuse + Err_Uebzeit : Bool // Outbound (UH07): Voll-Puffer 49: Überwachungzeit ist abgelaufen + Err_Schritt : Bool // Outbound (UH07): Voll-Puffer 49: Schritt-Nummer ist nicht definiert + Err_Stau_Einfahrt : Bool // Outbound (UH07): Voll-Puffer 49: Stau am Lager-Eingang + Err_BLKMov : Bool // Outbound (UH07): Voll-Puffer 49: Error bei Block kopieren + Err_Trolley_raus_OUT : Bool // Outbound (UH07): Voll-Puffer 49: Trolley fährt nicht aus unterer Schleuse + Err_Puffer_nicht_leer_OUT : Bool // Outbound (UH07): Voll-Puffer 49: Trolley unten in Schleuse, obwohl keine Daten! Initialisieren hat gestartet! + Err_Trolley_nicht_in_Schleuse_IN : Bool // Outbound (UH07): Voll-Puffer 49: Trolley fährt nicht in mittlere Schleuse + Err_Trolley_raus_IN : Bool // Outbound (UH07): Voll-Puffer 49: Trolley fährt nicht aus mittlere Schleuse + Err_Puffer_nicht_leer_IN : Bool // Outbound (UH07): Voll-Puffer 49: Trolley mittig in Schleuse, obwohl keine Daten! Initialisieren hat gestartet! + Frei14 : Bool // Outbound (UH07): Voll-Puffer 49: Frei14 + Err_Raus_Sensor : Bool // Outbound (UH07): Voll-Puffer 49: Raus-Sensor hat Dauersignal oder wird nicht erreicht + Frei16 : Bool // Outbound (UH07): Voll-Puffer 49: Frei16 + Reset_aktiv : Bool // Outbound (UH07): Voll-Puffer 49: Reset ist aktiv + VollPuffer50 : Struct // Outbound (UH07): Voll-Puffer 50 MB3483 + Lager_DL : Bool // Outbound (UH07): Voll-Puffer 50: Lager-Datenliste fehlerhaft + Undef_Lager : Bool // Outbound (UH07): Voll-Puffer 50: undefinierter Lager + Err_Trolley_nicht_in_Schleuse_OUT : Bool // Outbound (UH07): Voll-Puffer 50: Trolley fährt nicht in untere Schleuse + Err_Uebzeit : Bool // Outbound (UH07): Voll-Puffer 50: Überwachungzeit ist abgelaufen + Err_Schritt : Bool // Outbound (UH07): Voll-Puffer 50: Schritt-Nummer ist nicht definiert + Err_Stau_Einfahrt : Bool // Outbound (UH07): Voll-Puffer 50: Stau am Lager-Eingang + Err_BLKMov : Bool // Outbound (UH07): Voll-Puffer 50: Error bei Block kopieren + Err_Trolley_raus_OUT : Bool // Outbound (UH07): Voll-Puffer 50: Trolley fährt nicht aus unterer Schleuse + Err_Puffer_nicht_leer_OUT : Bool // Outbound (UH07): Voll-Puffer 50: Trolley unten in Schleuse, obwohl keine Daten! Initialisieren hat gestartet! + Err_Trolley_nicht_in_Schleuse_IN : Bool // Outbound (UH07): Voll-Puffer 50: Trolley fährt nicht in mittlere Schleuse + Err_Trolley_raus_IN : Bool // Outbound (UH07): Voll-Puffer 50: Trolley fährt nicht aus mittlere Schleuse + Err_Puffer_nicht_leer_IN : Bool // Outbound (UH07): Voll-Puffer 50: Trolley mittig in Schleuse, obwohl keine Daten! Initialisieren hat gestartet! + Frei14 : Bool // Outbound (UH07): Voll-Puffer 50: Frei14 + Err_Raus_Sensor : Bool // Outbound (UH07): Voll-Puffer 50: Raus-Sensor hat Dauersignal oder wird nicht erreicht + Frei16 : Bool // Outbound (UH07): Voll-Puffer 50: Frei16 + Reset_aktiv : Bool // Outbound (UH07): Voll-Puffer 50: Reset ist aktiv + VollPuffer51 : Struct // Outbound (UH07): Voll-Puffer 51 MB3482 + Lager_DL : Bool // Outbound (UH07): Voll-Puffer 51: Lager-Datenliste fehlerhaft + Undef_Lager : Bool // Outbound (UH07): Voll-Puffer 51: undefinierter Lager + Err_Trolley_nicht_in_Schleuse_OUT : Bool // Outbound (UH07): Voll-Puffer 51: Trolley fährt nicht in untere Schleuse + Err_Uebzeit : Bool // Outbound (UH07): Voll-Puffer 51: Überwachungzeit ist abgelaufen + Err_Schritt : Bool // Outbound (UH07): Voll-Puffer 51: Schritt-Nummer ist nicht definiert + Err_Stau_Einfahrt : Bool // Outbound (UH07): Voll-Puffer 51: Stau am Lager-Eingang + Err_BLKMov : Bool // Outbound (UH07): Voll-Puffer 51: Error bei Block kopieren + Err_Trolley_raus_OUT : Bool // Outbound (UH07): Voll-Puffer 51: Trolley fährt nicht aus unterer Schleuse + Err_Puffer_nicht_leer_OUT : Bool // Outbound (UH07): Voll-Puffer 51: Trolley unten in Schleuse, obwohl keine Daten! Initialisieren hat gestartet! + Err_Trolley_nicht_in_Schleuse_IN : Bool // Outbound (UH07): Voll-Puffer 51: Trolley fährt nicht in mittlere Schleuse + Err_Trolley_raus_IN : Bool // Outbound (UH07): Voll-Puffer 51: Trolley fährt nicht aus mittlere Schleuse + Err_Puffer_nicht_leer_IN : Bool // Outbound (UH07): Voll-Puffer 51: Trolley mittig in Schleuse, obwohl keine Daten! Initialisieren hat gestartet! + Frei14 : Bool // Outbound (UH07): Voll-Puffer 51: Frei14 + Err_Raus_Sensor : Bool // Outbound (UH07): Voll-Puffer 51: Raus-Sensor hat Dauersignal oder wird nicht erreicht + Frei16 : Bool // Outbound (UH07): Voll-Puffer 51: Frei16 + Reset_aktiv : Bool // Outbound (UH07): Voll-Puffer 51: Reset ist aktiv + Auslagerbereich_VollPuffer : Struct // Ist schon richtig ausgefüllt + BG3180_Kein_Signal : Bool // Outbound (UH07): Voll-Puffer-Ausfahrt BG3180: Kein Signal + BG3180_Signal_zu_lang : Bool // Outbound (UH07): Voll-Puffer-Ausfahrt BG3180: Signal zu lang + BG3185_Kein_Signal_1 : Bool // Outbound (UH07): Voll-Puffer-Ausfahrt BG3185: Kein Signal + BG3185_Signal_zu_lang_1 : Bool // Outbound (UH07): Voll-Puffer-Ausfahrt BG3185: Signal zu lang + TrolleyStau BG3181 : Bool // Outbound (UH07): Voll-Puffer-Ausfahrt: Trolley verklemmt Puffer 39/38 + TrolleyStau BG3182 : Bool // Outbound (UH07): Voll-Puffer-Ausfahrt: Trolley verklemmt Puffer 32/31 + TrolleyStau BG3183 : Bool // Outbound (UH07): Voll-Puffer-Ausfahrt: Trolley verklemmt Puffer 26/25 + TrolleyStau BG3184 : Bool // Outbound (UH07): Voll-Puffer-Ausfahrt: Trolley verklemmt Puffer 19/18 + TrolleyStau BG3240 : Bool // Outbound (UH07): Voll-Puffer-Ausfahrt: Trolley verklemmt Puffer 13/12 + TrolleyStau BG3241 : Bool // Outbound (UH07): Voll-Puffer-Ausfahrt: Trolley verklemmt Puffer 6/5 + TrolleyStau BG3242 : Bool // Outbound (UH07): Voll-Puffer-Ausfahrt: Trolley verklemmt nach Puffer 1 + Sorter_Vollpuffer : Struct // Ist schon richtig ausgefüllt + Sorter A stop : Bool // Outbound (UH07): Antrieb Sorter A wegen Sorter B gestoppt + Sorter B stop : Bool // Outbound (UH07): Antrieb Sorter B gestoppt, da Lager 51 voll + Sorter A Gesamtreset : Bool // Outbound (UH07): Sorter A Gesamtreset aktiv + Sorter B Gesamtreset : Bool // Outbound (UH07): Sorter B Gesamtreset aktiv + Frei450 : Array[1..12] of Word + Bereich_3145 : Struct // Outbound (UH07): Bereich MA0140/BG3145 (Zuführung Vollpuffer) + Schleuse_DL : Bool // Bypass zu Vollpuffer : Schleuse-Datenliste fehlerhaft + Undef_Schleuse : Bool // Bypass zu Vollpuffer : undefinierter Schleuse + Err_Trolley_nicht_in_Schleuse : Bool // Bypass zu Vollpuffer : Trolley fährt nicht in Schleuse + Err_Uebzeit : Bool // Bypass zu Vollpuffer : Überwachungzeit ist abgelaufen + Err_Schritt : Bool // Bypass zu Vollpuffer : Schritt-Nummer ist nicht definiert + Err_Stau_Einfahrt : Bool // Bypass zu Vollpuffer : Stau bei Bereich-Einfahrt + Err_BLKMov : Bool // Bypass zu Vollpuffer : Error bei Block kopieren + Err_Trolley_raus : Bool // Bypass zu Vollpuffer : Trolley fährt nicht aus Schleuse + Err_Raus_Sensor : Bool // Bypass zu Vollpuffer : Raus-Sensor wird nicht erreicht (oder dauernd aktiv)! + Err_Ziel : Bool // Bypass zu Vollpuffer : Trolley-Ziel nicht bekannt + Err_Weichen_DL : Bool // Bypass zu Vollpuffer : Weichen-Datenliste fehlerhaft + Err_Undef_Weiche : Bool // Bypass zu Vollpuffer : undefinierte Weiche + Err_Weiche_belegt : Bool // Bypass zu Vollpuffer : Weiche bleibt belegt + Err_Kein_LeseErgebnis : Bool // Bypass zu Vollpuffer : Kein Ergebnis von LeseEinheit + Err_Leser_nicht_bereit : Bool // Bypass zu Vollpuffer : Leser nicht betriebsbereit + Barcode_nicht_bekannt : Bool // Bypass zu Vollpuffer : Barcode nicht in Datenbank vorhanden + Reserve452 : Struct // Outbound (UH07): Reserve452 + Schleuse_DL : Bool // Highway zu Bypass : Schleuse-Datenliste fehlerhaft + Undef_Schleuse : Bool // Highway zu Bypass : undefinierter Schleuse + Err_Trolley_nicht_in_Schleuse : Bool // Highway zu Bypass : Trolley fährt nicht in Schleuse + Err_Uebzeit : Bool // Highway zu Bypass : Überwachungzeit ist abgelaufen + Err_Schritt : Bool // Highway zu Bypass : Schritt-Nummer ist nicht definiert + Err_Stau_Einfahrt : Bool // Highway zu Bypass : Stau bei Bereich-Einfahrt + Err_BLKMov : Bool // Highway zu Bypass : Error bei Block kopieren + Err_Trolley_raus : Bool // Highway zu Bypass : Trolley fährt nicht aus Schleuse + Err_Raus_Sensor : Bool // Highway zu Bypass : Raus-Sensor wird nicht erreicht (oder dauernd aktiv)! + Err_Ziel : Bool // Highway zu Bypass : Trolley-Ziel nicht bekannt + Err_Weichen_DL : Bool // Highway zu Bypass : Weichen-Datenliste fehlerhaft + Err_Undef_Weiche : Bool // Highway zu Bypass : undefinierte Weiche + Err_Weiche_belegt : Bool // Highway zu Bypass : Weiche bleibt belegt + Err_Kein_LeseErgebnis : Bool // Highway zu Bypass : Kein Ergebnis von LeseEinheit + Err_Leser_nicht_bereit : Bool // Highway zu Bypass : Leser nicht betriebsbereit + Barcode_nicht_bekannt : Bool // Highway zu Bypass : Barcode nicht in Datenbank vorhanden + Bereich_3361 : Struct // Outbound (UH07): Bereich MA0060/BG3361 (Abführung Vollpuffer) + Schleuse_DL : Bool // Vollpuffer zu Bypass : Schleuse-Datenliste fehlerhaft + Undef_Schleuse : Bool // Vollpuffer zu Bypass : undefinierter Schleuse + Err_Trolley_nicht_in_Schleuse : Bool // Vollpuffer zu Bypass : Trolley fährt nicht in Schleuse + Err_Uebzeit : Bool // Vollpuffer zu Bypass : Überwachungzeit ist abgelaufen + Err_Schritt : Bool // Vollpuffer zu Bypass : Schritt-Nummer ist nicht definiert + Err_Stau_Einfahrt : Bool // Vollpuffer zu Bypass : Stau bei Bereich-Einfahrt + Err_BLKMov : Bool // Vollpuffer zu Bypass : Error bei Block kopieren + Err_Trolley_raus : Bool // Vollpuffer zu Bypass : Trolley fährt nicht aus Schleuse + Err_Raus_Sensor : Bool // Vollpuffer zu Bypass : Raus-Sensor wird nicht erreicht (oder dauernd aktiv)! + Err_Ziel : Bool // Vollpuffer zu Bypass : Trolley-Ziel nicht bekannt + Err_Weichen_DL : Bool // Vollpuffer zu Bypass : Weichen-Datenliste fehlerhaft + Err_Undef_Weiche : Bool // Vollpuffer zu Bypass : undefinierte Weiche + Err_Weiche_belegt : Bool // Vollpuffer zu Bypass : Weiche bleibt belegt + Err_Kein_LeseErgebnis : Bool // Vollpuffer zu Bypass : Kein Ergebnis von LeseEinheit + Err_Leser_nicht_bereit : Bool // Vollpuffer zu Bypass : Leser nicht betriebsbereit + Barcode_nicht_bekannt : Bool // Vollpuffer zu Bypass : Barcode nicht in Datenbank vorhanden + Bereich_3373 : Struct // Outbound (UH07): Bereich MA0063/BG3373 (Zuführung Leerpuffer) + Schleuse_DL : Bool // Bypass zu Leerpuffer : Schleuse-Datenliste fehlerhaft + Undef_Schleuse : Bool // Bypass zu Leerpuffer : undefinierter Schleuse + Err_Trolley_nicht_in_Schleuse : Bool // Bypass zu Leerpuffer : Trolley fährt nicht in Schleuse + Err_Uebzeit : Bool // Bypass zu Leerpuffer : Überwachungzeit ist abgelaufen + Err_Schritt : Bool // Bypass zu Leerpuffer : Schritt-Nummer ist nicht definiert + Err_Stau_Einfahrt : Bool // Bypass zu Leerpuffer : Stau bei Bereich-Einfahrt + Err_BLKMov : Bool // Bypass zu Leerpuffer : Error bei Block kopieren + Err_Trolley_raus : Bool // Bypass zu Leerpuffer : Trolley fährt nicht aus Schleuse + Err_Raus_Sensor : Bool // Bypass zu Leerpuffer : Raus-Sensor wird nicht erreicht (oder dauernd aktiv)! + Err_Ziel : Bool // Bypass zu Leerpuffer : Trolley-Ziel nicht bekannt + Err_Weichen_DL : Bool // Bypass zu Leerpuffer : Weichen-Datenliste fehlerhaft + Err_Undef_Weiche : Bool // Bypass zu Leerpuffer : undefinierte Weiche + Err_Weiche_belegt : Bool // Bypass zu Leerpuffer : Weiche bleibt belegt + Err_Kein_LeseErgebnis : Bool // Bypass zu Leerpuffer : Kein Ergebnis von LeseEinheit + Err_Leser_nicht_bereit : Bool // Bypass zu Leerpuffer : Leser nicht betriebsbereit + Barcode_nicht_bekannt : Bool // Bypass zu Leerpuffer : Barcode nicht in Datenbank vorhanden + Bereich_3731 : Struct // Outbound (UH07): Bereich MA0201/BG3731 (Highway zu Outbound) + Schleuse_DL : Bool // Highway zu OB : Schleuse-Datenliste fehlerhaft + Undef_Schleuse : Bool // Highway zu OB : undefinierter Schleuse + Err_Trolley_nicht_in_Schleuse : Bool // Highway zu OB : Trolley fährt nicht in Schleuse + Err_Uebzeit : Bool // Highway zu OB : Überwachungzeit ist abgelaufen + Err_Schritt : Bool // Highway zu OB : Schritt-Nummer ist nicht definiert + Err_Stau_Einfahrt : Bool // Highway zu OB : Stau bei Bereich-Einfahrt + Err_BLKMov : Bool // Highway zu OB : Error bei Block kopieren + Err_Trolley_raus : Bool // Highway zu OB : Trolley fährt nicht aus Schleuse + Err_Raus_Sensor : Bool // Highway zu OB : Raus-Sensor wird nicht erreicht (oder dauernd aktiv)! + Err_Ziel : Bool // Highway zu OB : Trolley-Ziel nicht bekannt + Err_Weichen_DL : Bool // Highway zu OB : Weichen-Datenliste fehlerhaft + Err_Undef_Weiche : Bool // Highway zu OB : undefinierte Weiche + Err_Weiche_belegt : Bool // Highway zu OB : Weiche bleibt belegt + Err_Kein_LeseErgebnis : Bool // Highway zu OB : Kein Ergebnis von LeseEinheit + Err_Leser_nicht_bereit : Bool // Highway zu OB : Leser nicht betriebsbereit + Barcode_nicht_bekannt : Bool // Highway zu OB : Barcode nicht in Datenbank vorhanden + Bereich_3732 : Struct // Outbound (UH07): Bereich MA0202/BG3732 (Highway zu AMR) + Schleuse_DL : Bool // Highway zu AMR : Schleuse-Datenliste fehlerhaft + Undef_Schleuse : Bool // Highway zu AMR : undefinierter Schleuse + Err_Trolley_nicht_in_Schleuse : Bool // Highway zu AMR : Trolley fährt nicht in Schleuse + Err_Uebzeit : Bool // Highway zu AMR : Überwachungzeit ist abgelaufen + Err_Schritt : Bool // Highway zu AMR : Schritt-Nummer ist nicht definiert + Err_Stau_Einfahrt : Bool // Highway zu AMR : Stau bei Bereich-Einfahrt + Err_BLKMov : Bool // Highway zu AMR : Error bei Block kopieren + Err_Trolley_raus : Bool // Highway zu AMR : Trolley fährt nicht aus Schleuse + Err_Raus_Sensor : Bool // Highway zu AMR : Raus-Sensor wird nicht erreicht (oder dauernd aktiv)! + Err_Ziel : Bool // Highway zu AMR : Trolley-Ziel nicht bekannt + Err_Weichen_DL : Bool // Highway zu AMR : Weichen-Datenliste fehlerhaft + Err_Undef_Weiche : Bool // Highway zu AMR : undefinierte Weiche + Err_Weiche_belegt : Bool // Highway zu AMR : Weiche bleibt belegt + Err_Kein_LeseErgebnis : Bool // Highway zu AMR : Kein Ergebnis von LeseEinheit + Err_Leser_nicht_bereit : Bool // Highway zu AMR : Leser nicht betriebsbereit + Barcode_nicht_bekannt : Bool // Highway zu AMR : Barcode nicht in Datenbank vorhanden + Reserve462 : Struct // Outbound (UH07): Reserve462 + Schleuse_DL : Bool // Highway zu OB : Schleuse-Datenliste fehlerhaft + Undef_Schleuse : Bool // Highway zu OB : undefinierter Schleuse + Err_Trolley_nicht_in_Schleuse : Bool // Highway zu OB : Trolley fährt nicht in Schleuse + Err_Uebzeit : Bool // Highway zu OB : Überwachungzeit ist abgelaufen + Err_Schritt : Bool // Highway zu OB : Schritt-Nummer ist nicht definiert + Err_Stau_Einfahrt : Bool // Highway zu OB : Stau bei Bereich-Einfahrt + Err_BLKMov : Bool // Highway zu OB : Error bei Block kopieren + Err_Trolley_raus : Bool // Highway zu OB : Trolley fährt nicht aus Schleuse + Err_Raus_Sensor : Bool // Highway zu OB : Raus-Sensor wird nicht erreicht (oder dauernd aktiv)! + Err_Ziel : Bool // Highway zu OB : Trolley-Ziel nicht bekannt + Err_Weichen_DL : Bool // Highway zu OB : Weichen-Datenliste fehlerhaft + Err_Undef_Weiche : Bool // Highway zu OB : undefinierte Weiche + Err_Weiche_belegt : Bool // Highway zu OB : Weiche bleibt belegt + Err_Kein_LeseErgebnis : Bool // Highway zu OB : Kein Ergebnis von LeseEinheit + Err_Leser_nicht_bereit : Bool // Highway zu OB : Leser nicht betriebsbereit + Barcode_nicht_bekannt : Bool // Highway zu OB : Barcode nicht in Datenbank vorhanden + Bereich_4203 : Struct // Outbound (UH07): Bereich MA0261/BG4203 (Zuführung Vollpuffer) + Schleuse_DL : Bool // Highway zu OB : Schleuse-Datenliste fehlerhaft + Undef_Schleuse : Bool // Highway zu OB : undefinierter Schleuse + Err_Trolley_nicht_in_Schleuse : Bool // Highway zu OB : Trolley fährt nicht in Schleuse + Err_Uebzeit : Bool // Highway zu OB : Überwachungzeit ist abgelaufen + Err_Schritt : Bool // Highway zu OB : Schritt-Nummer ist nicht definiert + Err_Stau_Einfahrt : Bool // Highway zu OB : Stau bei Bereich-Einfahrt + Err_BLKMov : Bool // Highway zu OB : Error bei Block kopieren + Err_Trolley_raus : Bool // Highway zu OB : Trolley fährt nicht aus Schleuse + Err_Raus_Sensor : Bool // Highway zu OB : Raus-Sensor wird nicht erreicht (oder dauernd aktiv)! + Err_Ziel : Bool // Highway zu OB : Trolley-Ziel nicht bekannt + Err_Weichen_DL : Bool // Highway zu OB : Weichen-Datenliste fehlerhaft + Err_Undef_Weiche : Bool // Highway zu OB : undefinierte Weiche + Err_Weiche_belegt : Bool // Highway zu OB : Weiche bleibt belegt + Err_Kein_LeseErgebnis : Bool // Highway zu OB : Kein Ergebnis von LeseEinheit + Err_Leser_nicht_bereit : Bool // Highway zu OB : Leser nicht betriebsbereit + Barcode_nicht_bekannt : Bool // Highway zu OB : Barcode nicht in Datenbank vorhanden + Übergang_4205 : Struct // Outbound (UH07): Übergang BG4205 (Zuführung Vollpuffer) + Schleuse_DL : Bool // Highway zu OB : Schleuse-Datenliste fehlerhaft + Undef_Schleuse : Bool // Highway zu OB : undefinierter Schleuse + Err_Trolley_nicht_in_Schleuse : Bool // Highway zu OB : Trolley fährt nicht in Schleuse + Err_Uebzeit : Bool // Highway zu OB : Überwachungzeit ist abgelaufen + Err_Schritt : Bool // Highway zu OB : Schritt-Nummer ist nicht definiert + Err_Stau_Einfahrt : Bool // Highway zu OB : Stau bei Bereich-Einfahrt + Err_BLKMov : Bool // Highway zu OB : Error bei Block kopieren + Err_Trolley_raus : Bool // Highway zu OB : Trolley fährt nicht aus Schleuse + Err_Raus_Sensor : Bool // Highway zu OB : Raus-Sensor wird nicht erreicht (oder dauernd aktiv)! + Err_Ziel : Bool // Highway zu OB : Trolley-Ziel nicht bekannt + Err_Weichen_DL : Bool // Highway zu OB : Weichen-Datenliste fehlerhaft + Err_Undef_Weiche : Bool // Highway zu OB : undefinierte Weiche + Err_Weiche_belegt : Bool // Highway zu OB : Weiche bleibt belegt + Err_Kein_LeseErgebnis : Bool // Highway zu OB : Kein Ergebnis von LeseEinheit + Err_Leser_nicht_bereit : Bool // Highway zu OB : Leser nicht betriebsbereit + Barcode_nicht_bekannt : Bool // Highway zu OB : Barcode nicht in Datenbank vorhanden + Übergang_4225 : Struct // Outbound (UH07): Übergang BG4225 (Abführung Leerpuffer) + Schleuse_DL : Bool // Highway zu AMR : Schleuse-Datenliste fehlerhaft + Undef_Schleuse : Bool // Highway zu AMR : undefinierter Schleuse + Err_Trolley_nicht_in_Schleuse : Bool // Highway zu AMR : Trolley fährt nicht in Schleuse + Err_Uebzeit : Bool // Highway zu AMR : Überwachungzeit ist abgelaufen + Err_Schritt : Bool // Highway zu AMR : Schritt-Nummer ist nicht definiert + Err_Stau_Einfahrt : Bool // Highway zu AMR : Stau bei Bereich-Einfahrt + Err_BLKMov : Bool // Highway zu AMR : Error bei Block kopieren + Err_Trolley_raus : Bool // Highway zu AMR : Trolley fährt nicht aus Schleuse + Err_Raus_Sensor : Bool // Highway zu AMR : Raus-Sensor wird nicht erreicht (oder dauernd aktiv)! + Err_Ziel : Bool // Highway zu AMR : Trolley-Ziel nicht bekannt + Err_Weichen_DL : Bool // Highway zu AMR : Weichen-Datenliste fehlerhaft + Err_Undef_Weiche : Bool // Highway zu AMR : undefinierte Weiche + Err_Weiche_belegt : Bool // Highway zu AMR : Weiche bleibt belegt + Err_Kein_LeseErgebnis : Bool // Highway zu AMR : Kein Ergebnis von LeseEinheit + Err_Leser_nicht_bereit : Bool // Highway zu AMR : Leser nicht betriebsbereit + Barcode_nicht_bekannt : Bool // Highway zu AMR : Barcode nicht in Datenbank vorhanden + Bereich_4232 : Struct // Outbound (UH07): Bereich MA0267/BG4232 (Abführung Leerpuffer) + Schleuse_DL : Bool // Highway zu AMR : Schleuse-Datenliste fehlerhaft + Undef_Schleuse : Bool // Highway zu AMR : undefinierter Schleuse + Err_Trolley_nicht_in_Schleuse : Bool // Highway zu AMR : Trolley fährt nicht in Schleuse + Err_Uebzeit : Bool // Highway zu AMR : Überwachungzeit ist abgelaufen + Err_Schritt : Bool // Highway zu AMR : Schritt-Nummer ist nicht definiert + Err_Stau_Einfahrt : Bool // Highway zu AMR : Stau bei Bereich-Einfahrt + Err_BLKMov : Bool // Highway zu AMR : Error bei Block kopieren + Err_Trolley_raus : Bool // Highway zu AMR : Trolley fährt nicht aus Schleuse + Err_Raus_Sensor : Bool // Highway zu AMR : Raus-Sensor wird nicht erreicht (oder dauernd aktiv)! + Err_Ziel : Bool // Highway zu AMR : Trolley-Ziel nicht bekannt + Err_Weichen_DL : Bool // Highway zu AMR : Weichen-Datenliste fehlerhaft + Err_Undef_Weiche : Bool // Highway zu AMR : undefinierte Weiche + Err_Weiche_belegt : Bool // Highway zu AMR : Weiche bleibt belegt + Err_Kein_LeseErgebnis : Bool // Highway zu AMR : Kein Ergebnis von LeseEinheit + Err_Leser_nicht_bereit : Bool // Highway zu AMR : Leser nicht betriebsbereit + Barcode_nicht_bekannt : Bool // Highway zu AMR : Barcode nicht in Datenbank vorhanden + Bereich_4236 : Struct // Outbound (UH07): Bereich MA0066/BG4236 (Abführung Leerpuffer) + Schleuse_DL : Bool // Leerpuffer zu Bypass : Schleuse-Datenliste fehlerhaft + Undef_Schleuse : Bool // Leerpuffer zu Bypass : undefinierter Schleuse + Err_Trolley_nicht_in_Schleuse : Bool // Leerpuffer zu Bypass : Trolley fährt nicht in Schleuse + Err_Uebzeit : Bool // Leerpuffer zu Bypass : Überwachungzeit ist abgelaufen + Err_Schritt : Bool // Leerpuffer zu Bypass : Schritt-Nummer ist nicht definiert + Err_Stau_Einfahrt : Bool // Leerpuffer zu Bypass : Stau bei Bereich-Einfahrt + Err_BLKMov : Bool // Leerpuffer zu Bypass : Error bei Block kopieren + Err_Trolley_raus : Bool // Leerpuffer zu Bypass : Trolley fährt nicht aus Schleuse + Err_Raus_Sensor : Bool // Leerpuffer zu Bypass : Raus-Sensor wird nicht erreicht (oder dauernd aktiv)! + Err_Ziel : Bool // Leerpuffer zu Bypass : Trolley-Ziel nicht bekannt + Err_Weichen_DL : Bool // Leerpuffer zu Bypass : Weichen-Datenliste fehlerhaft + Err_Undef_Weiche : Bool // Leerpuffer zu Bypass : undefinierte Weiche + Err_Weiche_belegt : Bool // Leerpuffer zu Bypass : Weiche bleibt belegt + Err_Kein_LeseErgebnis : Bool // Leerpuffer zu Bypass : Kein Ergebnis von LeseEinheit + Err_Leser_nicht_bereit : Bool // Leerpuffer zu Bypass : Leser nicht betriebsbereit + Barcode_nicht_bekannt : Bool // Leerpuffer zu Bypass : Barcode nicht in Datenbank vorhanden + Bereich_4441 : Struct // Outbound (UH07): Bereich MA0320/BG4441 (Zuführung Entladepuffer) + Schleuse_DL : Bool // Vollpuffer zu Bypass : Schleuse-Datenliste fehlerhaft + Undef_Schleuse : Bool // Vollpuffer zu Bypass : undefinierter Schleuse + Err_Trolley_nicht_in_Schleuse : Bool // Vollpuffer zu Bypass : Trolley fährt nicht in Schleuse + Err_Uebzeit : Bool // Vollpuffer zu Bypass : Überwachungzeit ist abgelaufen + Err_Schritt : Bool // Vollpuffer zu Bypass : Schritt-Nummer ist nicht definiert + Err_Stau_Einfahrt : Bool // Vollpuffer zu Bypass : Stau bei Bereich-Einfahrt + Err_BLKMov : Bool // Vollpuffer zu Bypass : Error bei Block kopieren + Err_Trolley_raus : Bool // Vollpuffer zu Bypass : Trolley fährt nicht aus Schleuse + Err_Raus_Sensor : Bool // Vollpuffer zu Bypass : Raus-Sensor wird nicht erreicht (oder dauernd aktiv)! + Err_Ziel : Bool // Vollpuffer zu Bypass : Trolley-Ziel nicht bekannt + Err_Weichen_DL : Bool // Vollpuffer zu Bypass : Weichen-Datenliste fehlerhaft + Err_Undef_Weiche : Bool // Vollpuffer zu Bypass : undefinierte Weiche + Err_Weiche_belegt : Bool // Vollpuffer zu Bypass : Weiche bleibt belegt + Err_Kein_LeseErgebnis : Bool // Vollpuffer zu Bypass : Kein Ergebnis von LeseEinheit + Err_Leser_nicht_bereit : Bool // Vollpuffer zu Bypass : Leser nicht betriebsbereit + Barcode_nicht_bekannt : Bool // Vollpuffer zu Bypass : Barcode nicht in Datenbank vorhanden + Bereich_4454 : Struct // Outbound (UH07): Bereich MA0323/BG4454 (Zuführung Entladepuffer) + Schleuse_DL : Bool // Bypass zu Entladepuffer : Schleuse-Datenliste fehlerhaft + Undef_Schleuse : Bool // Bypass zu Entladepuffer : undefinierter Schleuse + Err_Trolley_nicht_in_Schleuse : Bool // Bypass zu Entladepuffer : Trolley fährt nicht in Schleuse + Err_Uebzeit : Bool // Bypass zu Entladepuffer : Überwachungzeit ist abgelaufen + Err_Schritt : Bool // Bypass zu Entladepuffer : Schritt-Nummer ist nicht definiert + Err_Stau_Einfahrt : Bool // Bypass zu Entladepuffer : Stau bei Bereich-Einfahrt + Err_BLKMov : Bool // Bypass zu Entladepuffer : Error bei Block kopieren + Err_Trolley_raus : Bool // Bypass zu Entladepuffer : Trolley fährt nicht aus Schleuse + Err_Raus_Sensor : Bool // Bypass zu Entladepuffer : Raus-Sensor wird nicht erreicht (oder dauernd aktiv)! + Err_Ziel : Bool // Bypass zu Entladepuffer : Trolley-Ziel nicht bekannt + Err_Weichen_DL : Bool // Bypass zu Entladepuffer : Weichen-Datenliste fehlerhaft + Err_Undef_Weiche : Bool // Bypass zu Entladepuffer : undefinierte Weiche + Err_Weiche_belegt : Bool // Bypass zu Entladepuffer : Weiche bleibt belegt + Err_Kein_LeseErgebnis : Bool // Bypass zu Entladepuffer : Kein Ergebnis von LeseEinheit + Err_Leser_nicht_bereit : Bool // Bypass zu Entladepuffer : Leser nicht betriebsbereit + Barcode_nicht_bekannt : Bool // Bypass zu Entladepuffer : Barcode nicht in Datenbank vorhanden + Bereich_4456 : Struct // Outbound (UH07): Bereich MA0330/BG4456 (Abführung Entladepuffer) + Schleuse_DL : Bool // Entladepuffer zu Bypass : Schleuse-Datenliste fehlerhaft + Undef_Schleuse : Bool // Entladepuffer zu Bypass : undefinierter Schleuse + Err_Trolley_nicht_in_Schleuse : Bool // Entladepuffer zu Bypass : Trolley fährt nicht in Schleuse + Err_Uebzeit : Bool // Entladepuffer zu Bypass : Überwachungzeit ist abgelaufen + Err_Schritt : Bool // Entladepuffer zu Bypass : Schritt-Nummer ist nicht definiert + Err_Stau_Einfahrt : Bool // Entladepuffer zu Bypass : Stau bei Bereich-Einfahrt + Err_BLKMov : Bool // Entladepuffer zu Bypass : Error bei Block kopieren + Err_Trolley_raus : Bool // Entladepuffer zu Bypass : Trolley fährt nicht aus Schleuse + Err_Raus_Sensor : Bool // Entladepuffer zu Bypass : Raus-Sensor wird nicht erreicht (oder dauernd aktiv)! + Err_Ziel : Bool // Entladepuffer zu Bypass : Trolley-Ziel nicht bekannt + Err_Weichen_DL : Bool // Entladepuffer zu Bypass : Weichen-Datenliste fehlerhaft + Err_Undef_Weiche : Bool // Entladepuffer zu Bypass : undefinierte Weiche + Err_Weiche_belegt : Bool // Entladepuffer zu Bypass : Weiche bleibt belegt + Err_Kein_LeseErgebnis : Bool // Entladepuffer zu Bypass : Kein Ergebnis von LeseEinheit + Err_Leser_nicht_bereit : Bool // Entladepuffer zu Bypass : Leser nicht betriebsbereit + Barcode_nicht_bekannt : Bool // Entladepuffer zu Bypass : Barcode nicht in Datenbank vorhanden + Bereich_4465 : Struct // Outbound (UH07): Bereich MA0333/BG4465 (Abführung Entladepuffer) + Schleuse_DL : Bool // Bypass zu Leerpuffer : Schleuse-Datenliste fehlerhaft + Undef_Schleuse : Bool // Bypass zu Leerpuffer : undefinierter Schleuse + Err_Trolley_nicht_in_Schleuse : Bool // Bypass zu Leerpuffer : Trolley fährt nicht in Schleuse + Err_Uebzeit : Bool // Bypass zu Leerpuffer : Überwachungzeit ist abgelaufen + Err_Schritt : Bool // Bypass zu Leerpuffer : Schritt-Nummer ist nicht definiert + Err_Stau_Einfahrt : Bool // Bypass zu Leerpuffer : Stau bei Bereich-Einfahrt + Err_BLKMov : Bool // Bypass zu Leerpuffer : Error bei Block kopieren + Err_Trolley_raus : Bool // Bypass zu Leerpuffer : Trolley fährt nicht aus Schleuse + Err_Raus_Sensor : Bool // Bypass zu Leerpuffer : Raus-Sensor wird nicht erreicht (oder dauernd aktiv)! + Err_Ziel : Bool // Bypass zu Leerpuffer : Trolley-Ziel nicht bekannt + Err_Weichen_DL : Bool // Bypass zu Leerpuffer : Weichen-Datenliste fehlerhaft + Err_Undef_Weiche : Bool // Bypass zu Leerpuffer : undefinierte Weiche + Err_Weiche_belegt : Bool // Bypass zu Leerpuffer : Weiche bleibt belegt + Err_Kein_LeseErgebnis : Bool // Bypass zu Leerpuffer : Kein Ergebnis von LeseEinheit + Err_Leser_nicht_bereit : Bool // Bypass zu Leerpuffer : Leser nicht betriebsbereit + Barcode_nicht_bekannt : Bool // Bypass zu Leerpuffer : Barcode nicht in Datenbank vorhanden + Übergang_4501 : Struct // Outbound (UH07): Übergang BG4501 (Zuführung Entladepuffer) + Schleuse_DL : Bool // Bypass zu Entladepuffer : Schleuse-Datenliste fehlerhaft + Undef_Schleuse : Bool // Bypass zu Entladepuffer : undefinierter Schleuse + Err_Trolley_nicht_in_Schleuse : Bool // Bypass zu Entladepuffer : Trolley fährt nicht in Schleuse + Err_Uebzeit : Bool // Bypass zu Entladepuffer : Überwachungzeit ist abgelaufen + Err_Schritt : Bool // Bypass zu Entladepuffer : Schritt-Nummer ist nicht definiert + Err_Stau_Einfahrt : Bool // Bypass zu Entladepuffer : Stau bei Bereich-Einfahrt + Err_BLKMov : Bool // Bypass zu Entladepuffer : Error bei Block kopieren + Err_Trolley_raus : Bool // Bypass zu Entladepuffer : Trolley fährt nicht aus Schleuse + Err_Raus_Sensor : Bool // Bypass zu Entladepuffer : Raus-Sensor wird nicht erreicht (oder dauernd aktiv)! + Err_Ziel : Bool // Bypass zu Entladepuffer : Trolley-Ziel nicht bekannt + Err_Weichen_DL : Bool // Bypass zu Entladepuffer : Weichen-Datenliste fehlerhaft + Err_Undef_Weiche : Bool // Bypass zu Entladepuffer : undefinierte Weiche + Err_Weiche_belegt : Bool // Bypass zu Entladepuffer : Weiche bleibt belegt + Err_Kein_LeseErgebnis : Bool // Bypass zu Entladepuffer : Kein Ergebnis von LeseEinheit + Err_Leser_nicht_bereit : Bool // Bypass zu Entladepuffer : Leser nicht betriebsbereit + Barcode_nicht_bekannt : Bool // Bypass zu Entladepuffer : Barcode nicht in Datenbank vorhanden + Übergang_4514 : Struct // Outbound (UH07): Übergang BG4514 (Abführung Entladepuffer) + Schleuse_DL : Bool // Entladepuffer zu Bypass : Schleuse-Datenliste fehlerhaft + Undef_Schleuse : Bool // Entladepuffer zu Bypass : undefinierter Schleuse + Err_Trolley_nicht_in_Schleuse : Bool // Entladepuffer zu Bypass : Trolley fährt nicht in Schleuse + Err_Uebzeit : Bool // Entladepuffer zu Bypass : Überwachungzeit ist abgelaufen + Err_Schritt : Bool // Entladepuffer zu Bypass : Schritt-Nummer ist nicht definiert + Err_Stau_Einfahrt : Bool // Entladepuffer zu Bypass : Stau bei Bereich-Einfahrt + Err_BLKMov : Bool // Entladepuffer zu Bypass : Error bei Block kopieren + Err_Trolley_raus : Bool // Entladepuffer zu Bypass : Trolley fährt nicht aus Schleuse + Err_Raus_Sensor : Bool // Entladepuffer zu Bypass : Raus-Sensor wird nicht erreicht (oder dauernd aktiv)! + Err_Ziel : Bool // Entladepuffer zu Bypass : Trolley-Ziel nicht bekannt + Err_Weichen_DL : Bool // Entladepuffer zu Bypass : Weichen-Datenliste fehlerhaft + Err_Undef_Weiche : Bool // Entladepuffer zu Bypass : undefinierte Weiche + Err_Weiche_belegt : Bool // Entladepuffer zu Bypass : Weiche bleibt belegt + Err_Kein_LeseErgebnis : Bool // Entladepuffer zu Bypass : Kein Ergebnis von LeseEinheit + Err_Leser_nicht_bereit : Bool // Entladepuffer zu Bypass : Leser nicht betriebsbereit + Barcode_nicht_bekannt : Bool // Entladepuffer zu Bypass : Barcode nicht in Datenbank vorhanden + Frei500 : Array[1..7] of Word + Schleuse_MB3121 : Struct // Outbound (UH07): Schleuse MB3121 (Vor Vollpuffer von Kontrollplatz) + Schleuse_DL : Bool // Voll-Puffer-Sorter Normal : Schleuse-Datenliste fehlerhaft + Undef_Schleuse : Bool // Voll-Puffer-Sorter Normal : undefinierter Schleuse + Err_Trolley_nicht_in_Schleuse : Bool // Voll-Puffer-Sorter Normal : Trolley fährt nicht in Schleuse + Err_Uebzeit : Bool // Voll-Puffer-Sorter Normal : Überwachungzeit ist abgelaufen + Err_Schritt : Bool // Voll-Puffer-Sorter Normal : Schritt-Nummer ist nicht definiert + Err_Stau_Einfahrt : Bool // Voll-Puffer-Sorter Normal : Stau bei Bereich-Einfahrt + Err_BLKMov : Bool // Voll-Puffer-Sorter Normal : Error bei Block kopieren + Err_Trolley_raus : Bool // Voll-Puffer-Sorter Normal : Trolley fährt nicht aus Schleuse + Err_Raus_Sensor : Bool // Voll-Puffer-Sorter Normal : Raus-Sensor wird nicht erreicht (oder dauernd aktiv)! + Err_Ziel : Bool // Voll-Puffer-Sorter Normal : Trolley-Ziel nicht bekannt + Err_Weichen_DL : Bool // Voll-Puffer-Sorter Normal : Weichen-Datenliste fehlerhaft + Err_Undef_Weiche : Bool // Voll-Puffer-Sorter Normal : undefinierte Weiche + Err_Weiche_belegt : Bool // Voll-Puffer-Sorter Normal : Weiche bleibt belegt + Err_Kein_LeseErgebnis : Bool // Voll-Puffer-Sorter Normal : Kein Ergebnis von LeseEinheit + Err_Leser_nicht_bereit : Bool // Voll-Puffer-Sorter Normal : Leser nicht betriebsbereit + Barcode_nicht_bekannt : Bool // Voll-Puffer-Sorter Normal : Barcode nicht in Datenbank vorhanden + Schleuse_MB3123 : Struct // Outbound (UH07): Schleuse MB3123 (Vor Vollpuffer von Rückführung) + Schleuse_DL : Bool // Voll-Puffer-Sorter Rückstrecke : Schleuse-Datenliste fehlerhaft + Undef_Schleuse : Bool // Voll-Puffer-Sorter Rückstrecke : undefinierter Schleuse + Err_Trolley_nicht_in_Schleuse : Bool // Voll-Puffer-Sorter Rückstrecke : Trolley fährt nicht in Schleuse + Err_Uebzeit : Bool // Voll-Puffer-Sorter Rückstrecke : Überwachungzeit ist abgelaufen + Err_Schritt : Bool // Voll-Puffer-Sorter Rückstrecke : Schritt-Nummer ist nicht definiert + Err_Stau_Einfahrt : Bool // Voll-Puffer-Sorter Rückstrecke : Stau bei Bereich-Einfahrt + Err_BLKMov : Bool // Voll-Puffer-Sorter Rückstrecke : Error bei Block kopieren + Err_Trolley_raus : Bool // Voll-Puffer-Sorter Rückstrecke : Trolley fährt nicht aus Schleuse + Err_Raus_Sensor : Bool // Voll-Puffer-Sorter Rückstrecke : Raus-Sensor wird nicht erreicht (oder dauernd aktiv)! + Err_Ziel : Bool // Voll-Puffer-Sorter Rückstrecke : Trolley-Ziel nicht bekannt + Err_Weichen_DL : Bool // Voll-Puffer-Sorter Rückstrecke : Weichen-Datenliste fehlerhaft + Err_Undef_Weiche : Bool // Voll-Puffer-Sorter Rückstrecke : undefinierte Weiche + Err_Weiche_belegt : Bool // Voll-Puffer-Sorter Rückstrecke : Weiche bleibt belegt + Err_Kein_LeseErgebnis : Bool // Voll-Puffer-Sorter Rückstrecke : Kein Ergebnis von LeseEinheit + Err_Leser_nicht_bereit : Bool // Voll-Puffer-Sorter Rückstrecke : Leser nicht betriebsbereit + Barcode_nicht_bekannt : Bool // Voll-Puffer-Sorter Rückstrecke : Barcode nicht in Datenbank vorhanden + Schleuse_MB3131 : Struct // Outbound (UH07): Schleuse MB3131 (Zuführung Kontrollplatz) + Schleuse_DL : Bool // Vor Kontrollplatz : Schleuse-Datenliste fehlerhaft + Undef_Schleuse : Bool // Vor Kontrollplatz : undefinierter Schleuse + Err_Trolley_nicht_in_Schleuse : Bool // Vor Kontrollplatz : Trolley fährt nicht in Schleuse + Err_Uebzeit : Bool // Vor Kontrollplatz : Überwachungzeit ist abgelaufen + Err_Schritt : Bool // Vor Kontrollplatz : Schritt-Nummer ist nicht definiert + Err_Stau_Einfahrt : Bool // Vor Kontrollplatz : Stau bei Bereich-Einfahrt + Err_BLKMov : Bool // Vor Kontrollplatz : Error bei Block kopieren + Err_Trolley_raus : Bool // Vor Kontrollplatz : Trolley fährt nicht aus Schleuse + Err_Raus_Sensor : Bool // Vor Kontrollplatz : Raus-Sensor wird nicht erreicht (oder dauernd aktiv)! + Err_Ziel : Bool // Vor Kontrollplatz : Trolley-Ziel nicht bekannt + Err_Weichen_DL : Bool // Vor Kontrollplatz : Weichen-Datenliste fehlerhaft + Err_Undef_Weiche : Bool // Vor Kontrollplatz : undefinierte Weiche + Err_Weiche_belegt : Bool // Vor Kontrollplatz : Weiche bleibt belegt + Err_Kein_LeseErgebnis : Bool // Vor Kontrollplatz : Kein Ergebnis von LeseEinheit + Err_Leser_nicht_bereit : Bool // Vor Kontrollplatz : Leser nicht betriebsbereit + Barcode_nicht_bekannt : Bool // Vor Kontrollplatz : Barcode nicht in Datenbank vorhanden + Schleuse_MB3134 : Struct // Outbound (UH07): Schleuse MB3134 (Kontrollplatz) + Schleuse_DL : Bool // Kontrollplatz : Schleuse-Datenliste fehlerhaft + Undef_Schleuse : Bool // Kontrollplatz : undefinierter Schleuse + Err_Trolley_nicht_in_Schleuse : Bool // Kontrollplatz : Trolley fährt nicht in Schleuse + Err_Uebzeit : Bool // Kontrollplatz : Überwachungzeit ist abgelaufen + Err_Schritt : Bool // Kontrollplatz : Schritt-Nummer ist nicht definiert + Err_Stau_Einfahrt : Bool // Kontrollplatz : Stau bei Bereich-Einfahrt + Err_BLKMov : Bool // Kontrollplatz : Error bei Block kopieren + Err_Trolley_raus : Bool // Kontrollplatz : Trolley fährt nicht aus Schleuse + Err_Raus_Sensor : Bool // Kontrollplatz : Raus-Sensor wird nicht erreicht (oder dauernd aktiv)! + Err_Ziel : Bool // Kontrollplatz : Trolley-Ziel nicht bekannt + Err_Weichen_DL : Bool // Kontrollplatz : Weichen-Datenliste fehlerhaft + Err_Undef_Weiche : Bool // Kontrollplatz : undefinierte Weiche + Err_Weiche_belegt : Bool // Kontrollplatz : Weiche bleibt belegt + Err_Kein_LeseErgebnis : Bool // Kontrollplatz : Kein Ergebnis von LeseEinheit + Err_Leser_nicht_bereit : Bool // Kontrollplatz : Leser nicht betriebsbereit + Barcode_nicht_bekannt : Bool // Kontrollplatz : Barcode nicht in Datenbank vorhanden + Schleuse_MB3136 : Struct // Outbound (UH07): Schleuse MB3136 (Hinter Kontrollplatz) + Schleuse_DL : Bool // Hinter Kontrollplatz : Schleuse-Datenliste fehlerhaft + Undef_Schleuse : Bool // Hinter Kontrollplatz : undefinierter Schleuse + Err_Trolley_nicht_in_Schleuse : Bool // Hinter Kontrollplatz : Trolley fährt nicht in Schleuse + Err_Uebzeit : Bool // Hinter Kontrollplatz : Überwachungzeit ist abgelaufen + Err_Schritt : Bool // Hinter Kontrollplatz : Schritt-Nummer ist nicht definiert + Err_Stau_Einfahrt : Bool // Hinter Kontrollplatz : Stau bei Bereich-Einfahrt + Err_BLKMov : Bool // Hinter Kontrollplatz : Error bei Block kopieren + Err_Trolley_raus : Bool // Hinter Kontrollplatz : Trolley fährt nicht aus Schleuse + Err_Raus_Sensor : Bool // Hinter Kontrollplatz : Raus-Sensor wird nicht erreicht (oder dauernd aktiv)! + Err_Ziel : Bool // Hinter Kontrollplatz : Trolley-Ziel nicht bekannt + Err_Weichen_DL : Bool // Hinter Kontrollplatz : Weichen-Datenliste fehlerhaft + Err_Undef_Weiche : Bool // Hinter Kontrollplatz : undefinierte Weiche + Err_Weiche_belegt : Bool // Hinter Kontrollplatz : Weiche bleibt belegt + Err_Kein_LeseErgebnis : Bool // Hinter Kontrollplatz : Kein Ergebnis von LeseEinheit + Err_Leser_nicht_bereit : Bool // Hinter Kontrollplatz : Leser nicht betriebsbereit + Barcode_nicht_bekannt : Bool // Hinter Kontrollplatz : Barcode nicht in Datenbank vorhanden + Weiche_MB3140 : Struct // Outbound (UH07): Weiche MB3140 (Einfahrt Kontrollplatz) + Weichen_DL : Bool // Bypass zu Vollpuffer: Weichen-Datenliste fehlerhaft + Undef_Weiche : Bool // Bypass zu Vollpuffer: undefinierte Weiche + BLKMov : Bool // Bypass zu Vollpuffer: Fehler bei Block kopieren + Undef_Bereich+1 : Bool // Bypass zu Vollpuffer: Bereich +1 unbekannt + Frei04 : Bool // Bypass zu Vollpuffer: Frei04 + Frei05 : Bool // Bypass zu Vollpuffer: Frei05 + Ziel_undefiniert : Bool // Bypass zu Vollpuffer: Ziel ist undefiniert + Err_Schleusen_DL : Bool // Bypass zu Vollpuffer: Schleusen-Datenliste fehlerhaft + Err_Undef_Schleuse-1 : Bool // Bypass zu Vollpuffer: undefinierte Schleuse -1 + Übzeit_Gerade : Bool // Bypass zu Vollpuffer: Trolley bei Geradefahrt in Weiche verklemmt (-> Antrieb gestoppt) + Übzeit_Abzweig : Bool // Bypass zu Vollpuffer: Trolley bei Abzweigfahrt in Weiche verklemmt (-> Antrieb gestoppt) + Gerade_Sensor_aktiv : Bool // Bypass zu Vollpuffer: Ziel-Sensor Geradefahrt aktiv + Abzweig_Sensor_aktiv : Bool // Bypass zu Vollpuffer: Ziel-Sensor Abzweigfahrt aktiv + Gerade_Bereich_belegt : Bool // Bypass zu Vollpuffer: Bereich Geradefahrt noch belegt + Abzweig_Bereich_belegt : Bool // Bypass zu Vollpuffer: Bereich Abzweigfahrt noch belegt + Reset_aktiv : Bool // Bypass zu Vollpuffer: Reset ist aktiv + Schleuse_MB3141 : Struct // Outbound (UH07): Schleuse MB3141 (Zuführung Vollpuffer) + Schleuse_DL : Bool // Bypass zu Vollpuffer : Schleuse-Datenliste fehlerhaft + Undef_Schleuse : Bool // Bypass zu Vollpuffer : undefinierter Schleuse + Err_Trolley_nicht_in_Schleuse : Bool // Bypass zu Vollpuffer : Trolley fährt nicht in Schleuse + Err_Uebzeit : Bool // Bypass zu Vollpuffer : Überwachungzeit ist abgelaufen + Err_Schritt : Bool // Bypass zu Vollpuffer : Schritt-Nummer ist nicht definiert + Err_Stau_Einfahrt : Bool // Bypass zu Vollpuffer : Stau bei Bereich-Einfahrt + Err_BLKMov : Bool // Bypass zu Vollpuffer : Error bei Block kopieren + Err_Trolley_raus : Bool // Bypass zu Vollpuffer : Trolley fährt nicht aus Schleuse + Err_Raus_Sensor : Bool // Bypass zu Vollpuffer : Raus-Sensor wird nicht erreicht (oder dauernd aktiv)! + Err_Ziel : Bool // Bypass zu Vollpuffer : Trolley-Ziel nicht bekannt + Err_Weichen_DL : Bool // Bypass zu Vollpuffer : Weichen-Datenliste fehlerhaft + Err_Undef_Weiche : Bool // Bypass zu Vollpuffer : undefinierte Weiche + Err_Weiche_belegt : Bool // Bypass zu Vollpuffer : Weiche bleibt belegt + Err_Kein_LeseErgebnis : Bool // Bypass zu Vollpuffer : Kein Ergebnis von LeseEinheit + Err_Leser_nicht_bereit : Bool // Bypass zu Vollpuffer : Leser nicht betriebsbereit + Barcode_nicht_bekannt : Bool // Bypass zu Vollpuffer : Barcode nicht in Datenbank vorhanden + Schleuse_MB3143 : Struct // Outbound (UH07): Schleuse MB3143 (Zuführung Vollpuffer) + Schleuse_DL : Bool // Bypass zu Vollpuffer : Schleuse-Datenliste fehlerhaft + Undef_Schleuse : Bool // Bypass zu Vollpuffer : undefinierter Schleuse + Err_Trolley_nicht_in_Schleuse : Bool // Bypass zu Vollpuffer : Trolley fährt nicht in Schleuse + Err_Uebzeit : Bool // Bypass zu Vollpuffer : Überwachungzeit ist abgelaufen + Err_Schritt : Bool // Bypass zu Vollpuffer : Schritt-Nummer ist nicht definiert + Err_Stau_Einfahrt : Bool // Bypass zu Vollpuffer : Stau bei Bereich-Einfahrt + Err_BLKMov : Bool // Bypass zu Vollpuffer : Error bei Block kopieren + Err_Trolley_raus : Bool // Bypass zu Vollpuffer : Trolley fährt nicht aus Schleuse + Err_Raus_Sensor : Bool // Bypass zu Vollpuffer : Raus-Sensor wird nicht erreicht (oder dauernd aktiv)! + Err_Ziel : Bool // Bypass zu Vollpuffer : Trolley-Ziel nicht bekannt + Err_Weichen_DL : Bool // Bypass zu Vollpuffer : Weichen-Datenliste fehlerhaft + Err_Undef_Weiche : Bool // Bypass zu Vollpuffer : undefinierte Weiche + Err_Weiche_belegt : Bool // Bypass zu Vollpuffer : Weiche bleibt belegt + Err_Kein_LeseErgebnis : Bool // Bypass zu Vollpuffer : Kein Ergebnis von LeseEinheit + Err_Leser_nicht_bereit : Bool // Bypass zu Vollpuffer : Leser nicht betriebsbereit + Barcode_nicht_bekannt : Bool // Bypass zu Vollpuffer : Barcode nicht in Datenbank vorhanden + Schleuse_MB3244 : Struct // Outbound (UH07): Schleuse MB3244 (Ausfahrt Vollpuffer) + Schleuse_DL : Bool // Hinter Voll-Puffer-Sorter : Schleuse-Datenliste fehlerhaft + Undef_Schleuse : Bool // Hinter Voll-Puffer-Sorter : undefinierter Schleuse + Err_Trolley_nicht_in_Schleuse : Bool // Hinter Voll-Puffer-Sorter : Trolley fährt nicht in Schleuse + Err_Uebzeit : Bool // Hinter Voll-Puffer-Sorter : Überwachungzeit ist abgelaufen + Err_Schritt : Bool // Hinter Voll-Puffer-Sorter : Schritt-Nummer ist nicht definiert + Err_Stau_Einfahrt : Bool // Hinter Voll-Puffer-Sorter : Stau bei Bereich-Einfahrt + Err_BLKMov : Bool // Hinter Voll-Puffer-Sorter : Error bei Block kopieren + Err_Trolley_raus : Bool // Hinter Voll-Puffer-Sorter : Trolley fährt nicht aus Schleuse + Err_Raus_Sensor : Bool // Hinter Voll-Puffer-Sorter : Raus-Sensor wird nicht erreicht (oder dauernd aktiv)! + Err_Ziel : Bool // Hinter Voll-Puffer-Sorter : Trolley-Ziel nicht bekannt + Err_Weichen_DL : Bool // Hinter Voll-Puffer-Sorter : Weichen-Datenliste fehlerhaft + Err_Undef_Weiche : Bool // Hinter Voll-Puffer-Sorter : undefinierte Weiche + Err_Weiche_belegt : Bool // Hinter Voll-Puffer-Sorter : Weiche bleibt belegt + Err_Kein_LeseErgebnis : Bool // Hinter Voll-Puffer-Sorter : Kein Ergebnis von LeseEinheit + Err_Leser_nicht_bereit : Bool // Hinter Voll-Puffer-Sorter : Leser nicht betriebsbereit + Barcode_nicht_bekannt : Bool // Hinter Voll-Puffer-Sorter : Barcode nicht in Datenbank vorhanden + Weiche_MB3245 : Struct // Outbound (UH07): Weiche MB3140 (Einfahrt Voll-Puffer-Rückführung) + Weichen_DL : Bool // Hinter Voll-Puffer-Sorter: Weichen-Datenliste fehlerhaft + Undef_Weiche : Bool // Hinter Voll-Puffer-Sorter: undefinierte Weiche + BLKMov : Bool // Hinter Voll-Puffer-Sorter: Fehler bei Block kopieren + Undef_Bereich+1 : Bool // Hinter Voll-Puffer-Sorter: Bereich +1 unbekannt + Frei04 : Bool // Hinter Voll-Puffer-Sorter: Frei04 + Frei05 : Bool // Hinter Voll-Puffer-Sorter: Frei05 + Ziel_undefiniert : Bool // Hinter Voll-Puffer-Sorter: Ziel ist undefiniert + Err_Schleusen_DL : Bool // Hinter Voll-Puffer-Sorter: Schleusen-Datenliste fehlerhaft + Err_Undef_Schleuse-1 : Bool // Hinter Voll-Puffer-Sorter: undefinierte Schleuse -1 + Übzeit_Gerade : Bool // Hinter Voll-Puffer-Sorter: Trolley bei Geradefahrt in Weiche verklemmt (-> Antrieb gestoppt) + Übzeit_Abzweig : Bool // Hinter Voll-Puffer-Sorter: Trolley bei Abzweigfahrt in Weiche verklemmt (-> Antrieb gestoppt) + Gerade_Sensor_aktiv : Bool // Hinter Voll-Puffer-Sorter: Ziel-Sensor Geradefahrt aktiv + Abzweig_Sensor_aktiv : Bool // Hinter Voll-Puffer-Sorter: Ziel-Sensor Abzweigfahrt aktiv + Gerade_Bereich_belegt : Bool // Hinter Voll-Puffer-Sorter: Bereich Geradefahrt noch belegt + Abzweig_Bereich_belegt : Bool // Hinter Voll-Puffer-Sorter: Bereich Abzweigfahrt noch belegt + Reset_aktiv : Bool // Hinter Voll-Puffer-Sorter: Reset ist aktiv + Schleuse_MB3247 : Struct // Outbound (UH07): Schleuse MB3247 (Abführung Vollpuffer) + Schleuse_DL : Bool // Vollpuffer zu Bypass : Schleuse-Datenliste fehlerhaft + Undef_Schleuse : Bool // Vollpuffer zu Bypass : undefinierter Schleuse + Err_Trolley_nicht_in_Schleuse : Bool // Vollpuffer zu Bypass : Trolley fährt nicht in Schleuse + Err_Uebzeit : Bool // Vollpuffer zu Bypass : Überwachungzeit ist abgelaufen + Err_Schritt : Bool // Vollpuffer zu Bypass : Schritt-Nummer ist nicht definiert + Err_Stau_Einfahrt : Bool // Vollpuffer zu Bypass : Stau bei Bereich-Einfahrt + Err_BLKMov : Bool // Vollpuffer zu Bypass : Error bei Block kopieren + Err_Trolley_raus : Bool // Vollpuffer zu Bypass : Trolley fährt nicht aus Schleuse + Err_Raus_Sensor : Bool // Vollpuffer zu Bypass : Raus-Sensor wird nicht erreicht (oder dauernd aktiv)! + Err_Ziel : Bool // Vollpuffer zu Bypass : Trolley-Ziel nicht bekannt + Err_Weichen_DL : Bool // Vollpuffer zu Bypass : Weichen-Datenliste fehlerhaft + Err_Undef_Weiche : Bool // Vollpuffer zu Bypass : undefinierte Weiche + Err_Weiche_belegt : Bool // Vollpuffer zu Bypass : Weiche bleibt belegt + Err_Kein_LeseErgebnis : Bool // Vollpuffer zu Bypass : Kein Ergebnis von LeseEinheit + Err_Leser_nicht_bereit : Bool // Vollpuffer zu Bypass : Leser nicht betriebsbereit + Barcode_nicht_bekannt : Bool // Vollpuffer zu Bypass : Barcode nicht in Datenbank vorhanden + Schleuse_MB3303 : Struct // Outbound (UH07): Schleuse MB3303 (Zuführung Leerpuffer) + Schleuse_DL : Bool // Bypass zu Leerpuffer : Schleuse-Datenliste fehlerhaft + Undef_Schleuse : Bool // Bypass zu Leerpuffer : undefinierter Schleuse + Err_Trolley_nicht_in_Schleuse : Bool // Bypass zu Leerpuffer : Trolley fährt nicht in Schleuse + Err_Uebzeit : Bool // Bypass zu Leerpuffer : Überwachungzeit ist abgelaufen + Err_Schritt : Bool // Bypass zu Leerpuffer : Schritt-Nummer ist nicht definiert + Err_Stau_Einfahrt : Bool // Bypass zu Leerpuffer : Stau bei Bereich-Einfahrt + Err_BLKMov : Bool // Bypass zu Leerpuffer : Error bei Block kopieren + Err_Trolley_raus : Bool // Bypass zu Leerpuffer : Trolley fährt nicht aus Schleuse + Err_Raus_Sensor : Bool // Bypass zu Leerpuffer : Raus-Sensor wird nicht erreicht (oder dauernd aktiv)! + Err_Ziel : Bool // Bypass zu Leerpuffer : Trolley-Ziel nicht bekannt + Err_Weichen_DL : Bool // Bypass zu Leerpuffer : Weichen-Datenliste fehlerhaft + Err_Undef_Weiche : Bool // Bypass zu Leerpuffer : undefinierte Weiche + Err_Weiche_belegt : Bool // Bypass zu Leerpuffer : Weiche bleibt belegt + Err_Kein_LeseErgebnis : Bool // Bypass zu Leerpuffer : Kein Ergebnis von LeseEinheit + Err_Leser_nicht_bereit : Bool // Bypass zu Leerpuffer : Leser nicht betriebsbereit + Barcode_nicht_bekannt : Bool // Bypass zu Leerpuffer : Barcode nicht in Datenbank vorhanden + Schleuse_MB3305 : Struct // Outbound (UH07): Schleuse MB3305 (Vor Leerpuffer) + Schleuse_DL : Bool // Leer-Sorter : Schleuse-Datenliste fehlerhaft + Undef_Schleuse : Bool // Leer-Sorter : undefinierter Schleuse + Err_Trolley_nicht_in_Schleuse : Bool // Leer-Sorter : Trolley fährt nicht in Schleuse + Err_Uebzeit : Bool // Leer-Sorter : Überwachungzeit ist abgelaufen + Err_Schritt : Bool // Leer-Sorter : Schritt-Nummer ist nicht definiert + Err_Stau_Einfahrt : Bool // Leer-Sorter : Stau bei Bereich-Einfahrt + Err_BLKMov : Bool // Leer-Sorter : Error bei Block kopieren + Err_Trolley_raus : Bool // Leer-Sorter : Trolley fährt nicht aus Schleuse + Err_Raus_Sensor : Bool // Leer-Sorter : Raus-Sensor wird nicht erreicht (oder dauernd aktiv)! + Err_Ziel : Bool // Leer-Sorter : Trolley-Ziel nicht bekannt + Err_Weichen_DL : Bool // Leer-Sorter : Weichen-Datenliste fehlerhaft + Err_Undef_Weiche : Bool // Leer-Sorter : undefinierte Weiche + Err_Weiche_belegt : Bool // Leer-Sorter : Weiche bleibt belegt + Err_Kein_LeseErgebnis : Bool // Leer-Sorter : Kein Ergebnis von LeseEinheit + Err_Leser_nicht_bereit : Bool // Leer-Sorter : Leser nicht betriebsbereit + Barcode_nicht_bekannt : Bool // Leer-Sorter : Barcode nicht in Datenbank vorhanden + Schleuse_MB3323 : Struct // Outbound (UH07): Schleuse MB3323 (Sackbeladung) + Schleuse_DL : Bool // Hinter Leer-Sorter : Schleuse-Datenliste fehlerhaft + Undef_Schleuse : Bool // Hinter Leer-Sorter : undefinierter Schleuse + Err_Trolley_nicht_in_Schleuse : Bool // Hinter Leer-Sorter : Trolley fährt nicht in Schleuse + Err_Uebzeit : Bool // Hinter Leer-Sorter : Überwachungzeit ist abgelaufen + Err_Schritt : Bool // Hinter Leer-Sorter : Schritt-Nummer ist nicht definiert + Err_Stau_Einfahrt : Bool // Hinter Leer-Sorter : Stau bei Bereich-Einfahrt + Err_BLKMov : Bool // Hinter Leer-Sorter : Error bei Block kopieren + Err_Trolley_raus : Bool // Hinter Leer-Sorter : Trolley fährt nicht aus Schleuse + Err_Raus_Sensor : Bool // Hinter Leer-Sorter : Raus-Sensor wird nicht erreicht (oder dauernd aktiv)! + Err_Ziel : Bool // Hinter Leer-Sorter : Trolley-Ziel nicht bekannt + Err_Weichen_DL : Bool // Hinter Leer-Sorter : Weichen-Datenliste fehlerhaft + Err_Undef_Weiche : Bool // Hinter Leer-Sorter : undefinierte Weiche + Err_Weiche_belegt : Bool // Hinter Leer-Sorter : Weiche bleibt belegt + Err_Kein_LeseErgebnis : Bool // Hinter Leer-Sorter : Kein Ergebnis von LeseEinheit + Err_Leser_nicht_bereit : Bool // Hinter Leer-Sorter : Leser nicht betriebsbereit + Barcode_nicht_bekannt : Bool // Hinter Leer-Sorter : Barcode nicht in Datenbank vorhanden + Schleuse_MB3363 : Struct // Outbound (UH07): Schleuse MB3363 (Abführung Vollpuffer) + Schleuse_DL : Bool // Vollpuffer zu Bypass : Schleuse-Datenliste fehlerhaft + Undef_Schleuse : Bool // Vollpuffer zu Bypass : undefinierter Schleuse + Err_Trolley_nicht_in_Schleuse : Bool // Vollpuffer zu Bypass : Trolley fährt nicht in Schleuse + Err_Uebzeit : Bool // Vollpuffer zu Bypass : Überwachungzeit ist abgelaufen + Err_Schritt : Bool // Vollpuffer zu Bypass : Schritt-Nummer ist nicht definiert + Err_Stau_Einfahrt : Bool // Vollpuffer zu Bypass : Stau bei Bereich-Einfahrt + Err_BLKMov : Bool // Vollpuffer zu Bypass : Error bei Block kopieren + Err_Trolley_raus : Bool // Vollpuffer zu Bypass : Trolley fährt nicht aus Schleuse + Err_Raus_Sensor : Bool // Vollpuffer zu Bypass : Raus-Sensor wird nicht erreicht (oder dauernd aktiv)! + Err_Ziel : Bool // Vollpuffer zu Bypass : Trolley-Ziel nicht bekannt + Err_Weichen_DL : Bool // Vollpuffer zu Bypass : Weichen-Datenliste fehlerhaft + Err_Undef_Weiche : Bool // Vollpuffer zu Bypass : undefinierte Weiche + Err_Weiche_belegt : Bool // Vollpuffer zu Bypass : Weiche bleibt belegt + Err_Kein_LeseErgebnis : Bool // Vollpuffer zu Bypass : Kein Ergebnis von LeseEinheit + Err_Leser_nicht_bereit : Bool // Vollpuffer zu Bypass : Leser nicht betriebsbereit + Barcode_nicht_bekannt : Bool // Vollpuffer zu Bypass : Barcode nicht in Datenbank vorhanden + Schleuse_MB3366 : Struct // Outbound (UH07): Schleuse MB3366 (Brandschutztür 1) + Schleuse_DL : Bool // Vollpuffer zu Bypass : Schleuse-Datenliste fehlerhaft + Undef_Schleuse : Bool // Vollpuffer zu Bypass : undefinierter Schleuse + Err_Trolley_nicht_in_Schleuse : Bool // Vollpuffer zu Bypass : Trolley fährt nicht in Schleuse + Err_Uebzeit : Bool // Vollpuffer zu Bypass : Überwachungzeit ist abgelaufen + Err_Schritt : Bool // Vollpuffer zu Bypass : Schritt-Nummer ist nicht definiert + Err_Stau_Einfahrt : Bool // Vollpuffer zu Bypass : Stau bei Bereich-Einfahrt + Err_BLKMov : Bool // Vollpuffer zu Bypass : Error bei Block kopieren + Err_Trolley_raus : Bool // Vollpuffer zu Bypass : Trolley fährt nicht aus Schleuse + Err_Raus_Sensor : Bool // Vollpuffer zu Bypass : Raus-Sensor wird nicht erreicht (oder dauernd aktiv)! + Err_Ziel : Bool // Vollpuffer zu Bypass : Trolley-Ziel nicht bekannt + Err_Weichen_DL : Bool // Vollpuffer zu Bypass : Weichen-Datenliste fehlerhaft + Err_Undef_Weiche : Bool // Vollpuffer zu Bypass : undefinierte Weiche + Err_Weiche_belegt : Bool // Vollpuffer zu Bypass : Weiche bleibt belegt + Err_Kein_LeseErgebnis : Bool // Vollpuffer zu Bypass : Kein Ergebnis von LeseEinheit + Err_Leser_nicht_bereit : Bool // Vollpuffer zu Bypass : Leser nicht betriebsbereit + Barcode_nicht_bekannt : Bool // Vollpuffer zu Bypass : Barcode nicht in Datenbank vorhanden + Schleuse_MB3370 : Struct // Outbound (UH07): Schleuse MB3370 (Zuführung Leerpuffer) + Schleuse_DL : Bool // Bypass zu Leerpuffer : Schleuse-Datenliste fehlerhaft + Undef_Schleuse : Bool // Bypass zu Leerpuffer : undefinierter Schleuse + Err_Trolley_nicht_in_Schleuse : Bool // Bypass zu Leerpuffer : Trolley fährt nicht in Schleuse + Err_Uebzeit : Bool // Bypass zu Leerpuffer : Überwachungzeit ist abgelaufen + Err_Schritt : Bool // Bypass zu Leerpuffer : Schritt-Nummer ist nicht definiert + Err_Stau_Einfahrt : Bool // Bypass zu Leerpuffer : Stau bei Bereich-Einfahrt + Err_BLKMov : Bool // Bypass zu Leerpuffer : Error bei Block kopieren + Err_Trolley_raus : Bool // Bypass zu Leerpuffer : Trolley fährt nicht aus Schleuse + Err_Raus_Sensor : Bool // Bypass zu Leerpuffer : Raus-Sensor wird nicht erreicht (oder dauernd aktiv)! + Err_Ziel : Bool // Bypass zu Leerpuffer : Trolley-Ziel nicht bekannt + Err_Weichen_DL : Bool // Bypass zu Leerpuffer : Weichen-Datenliste fehlerhaft + Err_Undef_Weiche : Bool // Bypass zu Leerpuffer : undefinierte Weiche + Err_Weiche_belegt : Bool // Bypass zu Leerpuffer : Weiche bleibt belegt + Err_Kein_LeseErgebnis : Bool // Bypass zu Leerpuffer : Kein Ergebnis von LeseEinheit + Err_Leser_nicht_bereit : Bool // Bypass zu Leerpuffer : Leser nicht betriebsbereit + Barcode_nicht_bekannt : Bool // Bypass zu Leerpuffer : Barcode nicht in Datenbank vorhanden + Schleuse_MB3722 : Struct // Outbound (UH07): Schleuse MB3722 (Highway zu AMR) + Schleuse_DL : Bool // Highway zu AMR : Schleuse-Datenliste fehlerhaft + Undef_Schleuse : Bool // Highway zu AMR : undefinierter Schleuse + Err_Trolley_nicht_in_Schleuse : Bool // Highway zu AMR : Trolley fährt nicht in Schleuse + Err_Uebzeit : Bool // Highway zu AMR : Überwachungzeit ist abgelaufen + Err_Schritt : Bool // Highway zu AMR : Schritt-Nummer ist nicht definiert + Err_Stau_Einfahrt : Bool // Highway zu AMR : Stau bei Bereich-Einfahrt + Err_BLKMov : Bool // Highway zu AMR : Error bei Block kopieren + Err_Trolley_raus : Bool // Highway zu AMR : Trolley fährt nicht aus Schleuse + Err_Raus_Sensor : Bool // Highway zu AMR : Raus-Sensor wird nicht erreicht (oder dauernd aktiv)! + Err_Ziel : Bool // Highway zu AMR : Trolley-Ziel nicht bekannt + Err_Weichen_DL : Bool // Highway zu AMR : Weichen-Datenliste fehlerhaft + Err_Undef_Weiche : Bool // Highway zu AMR : undefinierte Weiche + Err_Weiche_belegt : Bool // Highway zu AMR : Weiche bleibt belegt + Err_Kein_LeseErgebnis : Bool // Highway zu AMR : Kein Ergebnis von LeseEinheit + Err_Leser_nicht_bereit : Bool // Highway zu AMR : Leser nicht betriebsbereit + Barcode_nicht_bekannt : Bool // Highway zu AMR : Barcode nicht in Datenbank vorhanden + Schleuse_MB3725 : Struct // Outbound (UH07): Schleuse MB3725 (Highway zu OB) + Schleuse_DL : Bool // Highway zu OB : Schleuse-Datenliste fehlerhaft + Undef_Schleuse : Bool // Highway zu OB : undefinierter Schleuse + Err_Trolley_nicht_in_Schleuse : Bool // Highway zu OB : Trolley fährt nicht in Schleuse + Err_Uebzeit : Bool // Highway zu OB : Überwachungzeit ist abgelaufen + Err_Schritt : Bool // Highway zu OB : Schritt-Nummer ist nicht definiert + Err_Stau_Einfahrt : Bool // Highway zu OB : Stau bei Bereich-Einfahrt + Err_BLKMov : Bool // Highway zu OB : Error bei Block kopieren + Err_Trolley_raus : Bool // Highway zu OB : Trolley fährt nicht aus Schleuse + Err_Raus_Sensor : Bool // Highway zu OB : Raus-Sensor wird nicht erreicht (oder dauernd aktiv)! + Err_Ziel : Bool // Highway zu OB : Trolley-Ziel nicht bekannt + Err_Weichen_DL : Bool // Highway zu OB : Weichen-Datenliste fehlerhaft + Err_Undef_Weiche : Bool // Highway zu OB : undefinierte Weiche + Err_Weiche_belegt : Bool // Highway zu OB : Weiche bleibt belegt + Err_Kein_LeseErgebnis : Bool // Highway zu OB : Kein Ergebnis von LeseEinheit + Err_Leser_nicht_bereit : Bool // Highway zu OB : Leser nicht betriebsbereit + Barcode_nicht_bekannt : Bool // Highway zu OB : Barcode nicht in Datenbank vorhanden + Schleuse_MB4200 : Struct // Outbound (UH07): Schleuse MB4200 (Zuführung Vollpuffer) + Schleuse_DL : Bool // Highway zu OB : Schleuse-Datenliste fehlerhaft + Undef_Schleuse : Bool // Highway zu OB : undefinierter Schleuse + Err_Trolley_nicht_in_Schleuse : Bool // Highway zu OB : Trolley fährt nicht in Schleuse + Err_Uebzeit : Bool // Highway zu OB : Überwachungzeit ist abgelaufen + Err_Schritt : Bool // Highway zu OB : Schritt-Nummer ist nicht definiert + Err_Stau_Einfahrt : Bool // Highway zu OB : Stau bei Bereich-Einfahrt + Err_BLKMov : Bool // Highway zu OB : Error bei Block kopieren + Err_Trolley_raus : Bool // Highway zu OB : Trolley fährt nicht aus Schleuse + Err_Raus_Sensor : Bool // Highway zu OB : Raus-Sensor wird nicht erreicht (oder dauernd aktiv)! + Err_Ziel : Bool // Highway zu OB : Trolley-Ziel nicht bekannt + Err_Weichen_DL : Bool // Highway zu OB : Weichen-Datenliste fehlerhaft + Err_Undef_Weiche : Bool // Highway zu OB : undefinierte Weiche + Err_Weiche_belegt : Bool // Highway zu OB : Weiche bleibt belegt + Err_Kein_LeseErgebnis : Bool // Highway zu OB : Kein Ergebnis von LeseEinheit + Err_Leser_nicht_bereit : Bool // Highway zu OB : Leser nicht betriebsbereit + Barcode_nicht_bekannt : Bool // Highway zu OB : Barcode nicht in Datenbank vorhanden + Schleuse_MB4207 : Struct // Outbound (UH07): Schleuse MB4207 (Hinter RFID-Gate) + Schleuse_DL : Bool // Highway zu Bypass : Schleuse-Datenliste fehlerhaft + Undef_Schleuse : Bool // Highway zu Bypass : undefinierter Schleuse + Err_Trolley_nicht_in_Schleuse : Bool // Highway zu Bypass : Trolley fährt nicht in Schleuse + Err_Uebzeit : Bool // Highway zu Bypass : Überwachungzeit ist abgelaufen + Err_Schritt : Bool // Highway zu Bypass : Schritt-Nummer ist nicht definiert + Err_Stau_Einfahrt : Bool // Highway zu Bypass : Stau bei Bereich-Einfahrt + Err_BLKMov : Bool // Highway zu Bypass : Error bei Block kopieren + Err_Trolley_raus : Bool // Highway zu Bypass : Trolley fährt nicht aus Schleuse + Err_Raus_Sensor : Bool // Highway zu Bypass : Raus-Sensor wird nicht erreicht (oder dauernd aktiv)! + Err_Ziel : Bool // Highway zu Bypass : Trolley-Ziel nicht bekannt + Err_Weichen_DL : Bool // Highway zu Bypass : Weichen-Datenliste fehlerhaft + Err_Undef_Weiche : Bool // Highway zu Bypass : undefinierte Weiche + Err_Weiche_belegt : Bool // Highway zu Bypass : Weiche bleibt belegt + Err_Kein_LeseErgebnis : Bool // Highway zu Bypass : Kein Ergebnis von LeseEinheit + Err_Leser_nicht_bereit : Bool // Highway zu Bypass : Leser nicht betriebsbereit + Barcode_nicht_bekannt : Bool // Highway zu Bypass : Barcode nicht in Datenbank vorhanden + Schleuse_MB4212 : Struct // Outbound (UH07): Schleuse MB4212 (Zuführung Vollpuffer) + Schleuse_DL : Bool // Highway zu Bypass : Schleuse-Datenliste fehlerhaft + Undef_Schleuse : Bool // Highway zu Bypass : undefinierter Schleuse + Err_Trolley_nicht_in_Schleuse : Bool // Highway zu Bypass : Trolley fährt nicht in Schleuse + Err_Uebzeit : Bool // Highway zu Bypass : Überwachungzeit ist abgelaufen + Err_Schritt : Bool // Highway zu Bypass : Schritt-Nummer ist nicht definiert + Err_Stau_Einfahrt : Bool // Highway zu Bypass : Stau bei Bereich-Einfahrt + Err_BLKMov : Bool // Highway zu Bypass : Error bei Block kopieren + Err_Trolley_raus : Bool // Highway zu Bypass : Trolley fährt nicht aus Schleuse + Err_Raus_Sensor : Bool // Highway zu Bypass : Raus-Sensor wird nicht erreicht (oder dauernd aktiv)! + Err_Ziel : Bool // Highway zu Bypass : Trolley-Ziel nicht bekannt + Err_Weichen_DL : Bool // Highway zu Bypass : Weichen-Datenliste fehlerhaft + Err_Undef_Weiche : Bool // Highway zu Bypass : undefinierte Weiche + Err_Weiche_belegt : Bool // Highway zu Bypass : Weiche bleibt belegt + Err_Kein_LeseErgebnis : Bool // Highway zu Bypass : Kein Ergebnis von LeseEinheit + Err_Leser_nicht_bereit : Bool // Highway zu Bypass : Leser nicht betriebsbereit + Barcode_nicht_bekannt : Bool // Highway zu Bypass : Barcode nicht in Datenbank vorhanden + Schleuse_MB4214 : Struct // Outbound (UH07): Schleuse MB4214 (Zuführung Vollpuffer) + Schleuse_DL : Bool // Highway zu Bypass : Schleuse-Datenliste fehlerhaft + Undef_Schleuse : Bool // Highway zu Bypass : undefinierter Schleuse + Err_Trolley_nicht_in_Schleuse : Bool // Highway zu Bypass : Trolley fährt nicht in Schleuse + Err_Uebzeit : Bool // Highway zu Bypass : Überwachungzeit ist abgelaufen + Err_Schritt : Bool // Highway zu Bypass : Schritt-Nummer ist nicht definiert + Err_Stau_Einfahrt : Bool // Highway zu Bypass : Stau bei Bereich-Einfahrt + Err_BLKMov : Bool // Highway zu Bypass : Error bei Block kopieren + Err_Trolley_raus : Bool // Highway zu Bypass : Trolley fährt nicht aus Schleuse + Err_Raus_Sensor : Bool // Highway zu Bypass : Raus-Sensor wird nicht erreicht (oder dauernd aktiv)! + Err_Ziel : Bool // Highway zu Bypass : Trolley-Ziel nicht bekannt + Err_Weichen_DL : Bool // Highway zu Bypass : Weichen-Datenliste fehlerhaft + Err_Undef_Weiche : Bool // Highway zu Bypass : undefinierte Weiche + Err_Weiche_belegt : Bool // Highway zu Bypass : Weiche bleibt belegt + Err_Kein_LeseErgebnis : Bool // Highway zu Bypass : Kein Ergebnis von LeseEinheit + Err_Leser_nicht_bereit : Bool // Highway zu Bypass : Leser nicht betriebsbereit + Barcode_nicht_bekannt : Bool // Highway zu Bypass : Barcode nicht in Datenbank vorhanden + Weiche_MB4223 : Struct // Outbound (UH07): Weiche MB4223 (ByPass zu Vollpuffer) + Weichen_DL : Bool // Leerpuffer zu Bypass: Weichen-Datenliste fehlerhaft + Undef_Weiche : Bool // Leerpuffer zu Bypass: undefinierte Weiche + BLKMov : Bool // Leerpuffer zu Bypass: Fehler bei Block kopieren + Undef_Bereich+1 : Bool // Leerpuffer zu Bypass: Bereich +1 unbekannt + Frei04 : Bool // Leerpuffer zu Bypass: Frei04 + Frei05 : Bool // Leerpuffer zu Bypass: Frei05 + Ziel_undefiniert : Bool // Leerpuffer zu Bypass: Ziel ist undefiniert + Err_Schleusen_DL : Bool // Leerpuffer zu Bypass: Schleusen-Datenliste fehlerhaft + Err_Undef_Schleuse-1 : Bool // Leerpuffer zu Bypass: undefinierte Schleuse -1 + Übzeit_Gerade : Bool // Leerpuffer zu Bypass: Trolley bei Geradefahrt in Weiche verklemmt (-> Antrieb gestoppt) + Übzeit_Abzweig : Bool // Leerpuffer zu Bypass: Trolley bei Abzweigfahrt in Weiche verklemmt (-> Antrieb gestoppt) + Gerade_Sensor_aktiv : Bool // Leerpuffer zu Bypass: Ziel-Sensor Geradefahrt aktiv + Abzweig_Sensor_aktiv : Bool // Leerpuffer zu Bypass: Ziel-Sensor Abzweigfahrt aktiv + Gerade_Bereich_belegt : Bool // Leerpuffer zu Bypass: Bereich Geradefahrt noch belegt + Abzweig_Bereich_belegt : Bool // Leerpuffer zu Bypass: Bereich Abzweigfahrt noch belegt + Reset_aktiv : Bool // Leerpuffer zu Bypass: Reset ist aktiv + Schleuse_MB4227 : Struct // Outbound (UH07): Schleuse MB4227 (Abführung Leerpuffer) + Schleuse_DL : Bool // Highway zu AMR : Schleuse-Datenliste fehlerhaft + Undef_Schleuse : Bool // Highway zu AMR : undefinierter Schleuse + Err_Trolley_nicht_in_Schleuse : Bool // Highway zu AMR : Trolley fährt nicht in Schleuse + Err_Uebzeit : Bool // Highway zu AMR : Überwachungzeit ist abgelaufen + Err_Schritt : Bool // Highway zu AMR : Schritt-Nummer ist nicht definiert + Err_Stau_Einfahrt : Bool // Highway zu AMR : Stau bei Bereich-Einfahrt + Err_BLKMov : Bool // Highway zu AMR : Error bei Block kopieren + Err_Trolley_raus : Bool // Highway zu AMR : Trolley fährt nicht aus Schleuse + Err_Raus_Sensor : Bool // Highway zu AMR : Raus-Sensor wird nicht erreicht (oder dauernd aktiv)! + Err_Ziel : Bool // Highway zu AMR : Trolley-Ziel nicht bekannt + Err_Weichen_DL : Bool // Highway zu AMR : Weichen-Datenliste fehlerhaft + Err_Undef_Weiche : Bool // Highway zu AMR : undefinierte Weiche + Err_Weiche_belegt : Bool // Highway zu AMR : Weiche bleibt belegt + Err_Kein_LeseErgebnis : Bool // Highway zu AMR : Kein Ergebnis von LeseEinheit + Err_Leser_nicht_bereit : Bool // Highway zu AMR : Leser nicht betriebsbereit + Barcode_nicht_bekannt : Bool // Highway zu AMR : Barcode nicht in Datenbank vorhanden + Schleuse_MB4221 : Struct // Outbound (UH07): Schleuse MB4221 (Abführung Leerpuffer) + Schleuse_DL : Bool // Leerpuffer zu Bypass : Schleuse-Datenliste fehlerhaft + Undef_Schleuse : Bool // Leerpuffer zu Bypass : undefinierter Schleuse + Err_Trolley_nicht_in_Schleuse : Bool // Leerpuffer zu Bypass : Trolley fährt nicht in Schleuse + Err_Uebzeit : Bool // Leerpuffer zu Bypass : Überwachungzeit ist abgelaufen + Err_Schritt : Bool // Leerpuffer zu Bypass : Schritt-Nummer ist nicht definiert + Err_Stau_Einfahrt : Bool // Leerpuffer zu Bypass : Stau bei Bereich-Einfahrt + Err_BLKMov : Bool // Leerpuffer zu Bypass : Error bei Block kopieren + Err_Trolley_raus : Bool // Leerpuffer zu Bypass : Trolley fährt nicht aus Schleuse + Err_Raus_Sensor : Bool // Leerpuffer zu Bypass : Raus-Sensor wird nicht erreicht (oder dauernd aktiv)! + Err_Ziel : Bool // Leerpuffer zu Bypass : Trolley-Ziel nicht bekannt + Err_Weichen_DL : Bool // Leerpuffer zu Bypass : Weichen-Datenliste fehlerhaft + Err_Undef_Weiche : Bool // Leerpuffer zu Bypass : undefinierte Weiche + Err_Weiche_belegt : Bool // Leerpuffer zu Bypass : Weiche bleibt belegt + Err_Kein_LeseErgebnis : Bool // Leerpuffer zu Bypass : Kein Ergebnis von LeseEinheit + Err_Leser_nicht_bereit : Bool // Leerpuffer zu Bypass : Leser nicht betriebsbereit + Barcode_nicht_bekannt : Bool // Leerpuffer zu Bypass : Barcode nicht in Datenbank vorhanden + Schleuse_MB4235 : Struct // Outbound (UH07): Schleuse MB4235 (Brandschutztür 2) + Schleuse_DL : Bool // Highway zu AMR : Schleuse-Datenliste fehlerhaft + Undef_Schleuse : Bool // Highway zu AMR : undefinierter Schleuse + Err_Trolley_nicht_in_Schleuse : Bool // Highway zu AMR : Trolley fährt nicht in Schleuse + Err_Uebzeit : Bool // Highway zu AMR : Überwachungzeit ist abgelaufen + Err_Schritt : Bool // Highway zu AMR : Schritt-Nummer ist nicht definiert + Err_Stau_Einfahrt : Bool // Highway zu AMR : Stau bei Bereich-Einfahrt + Err_BLKMov : Bool // Highway zu AMR : Error bei Block kopieren + Err_Trolley_raus : Bool // Highway zu AMR : Trolley fährt nicht aus Schleuse + Err_Raus_Sensor : Bool // Highway zu AMR : Raus-Sensor wird nicht erreicht (oder dauernd aktiv)! + Err_Ziel : Bool // Highway zu AMR : Trolley-Ziel nicht bekannt + Err_Weichen_DL : Bool // Highway zu AMR : Weichen-Datenliste fehlerhaft + Err_Undef_Weiche : Bool // Highway zu AMR : undefinierte Weiche + Err_Weiche_belegt : Bool // Highway zu AMR : Weiche bleibt belegt + Err_Kein_LeseErgebnis : Bool // Highway zu AMR : Kein Ergebnis von LeseEinheit + Err_Leser_nicht_bereit : Bool // Highway zu AMR : Leser nicht betriebsbereit + Barcode_nicht_bekannt : Bool // Highway zu AMR : Barcode nicht in Datenbank vorhanden + Schleuse_MB4443 : Struct // Outbound (UH07): Schleuse MB4443 (Zuführung Entladepuffer) + Schleuse_DL : Bool // Vollpuffer zu Bypass : Schleuse-Datenliste fehlerhaft + Undef_Schleuse : Bool // Vollpuffer zu Bypass : undefinierter Schleuse + Err_Trolley_nicht_in_Schleuse : Bool // Vollpuffer zu Bypass : Trolley fährt nicht in Schleuse + Err_Uebzeit : Bool // Vollpuffer zu Bypass : Überwachungzeit ist abgelaufen + Err_Schritt : Bool // Vollpuffer zu Bypass : Schritt-Nummer ist nicht definiert + Err_Stau_Einfahrt : Bool // Vollpuffer zu Bypass : Stau bei Bereich-Einfahrt + Err_BLKMov : Bool // Vollpuffer zu Bypass : Error bei Block kopieren + Err_Trolley_raus : Bool // Vollpuffer zu Bypass : Trolley fährt nicht aus Schleuse + Err_Raus_Sensor : Bool // Vollpuffer zu Bypass : Raus-Sensor wird nicht erreicht (oder dauernd aktiv)! + Err_Ziel : Bool // Vollpuffer zu Bypass : Trolley-Ziel nicht bekannt + Err_Weichen_DL : Bool // Vollpuffer zu Bypass : Weichen-Datenliste fehlerhaft + Err_Undef_Weiche : Bool // Vollpuffer zu Bypass : undefinierte Weiche + Err_Weiche_belegt : Bool // Vollpuffer zu Bypass : Weiche bleibt belegt + Err_Kein_LeseErgebnis : Bool // Vollpuffer zu Bypass : Kein Ergebnis von LeseEinheit + Err_Leser_nicht_bereit : Bool // Vollpuffer zu Bypass : Leser nicht betriebsbereit + Barcode_nicht_bekannt : Bool // Vollpuffer zu Bypass : Barcode nicht in Datenbank vorhanden + Weiche_MB4445 : Struct // Outbound (UH07): Weiche MB4445 (ByPass zu Leerpuffer) + Weichen_DL : Bool // Vollpuffer zu Bypass: Weichen-Datenliste fehlerhaft + Undef_Weiche : Bool // Vollpuffer zu Bypass: undefinierte Weiche + BLKMov : Bool // Vollpuffer zu Bypass: Fehler bei Block kopieren + Undef_Bereich+1 : Bool // Vollpuffer zu Bypass: Bereich +1 unbekannt + Frei04 : Bool // Vollpuffer zu Bypass: Frei04 + Frei05 : Bool // Vollpuffer zu Bypass: Frei05 + Ziel_undefiniert : Bool // Vollpuffer zu Bypass: Ziel ist undefiniert + Err_Schleusen_DL : Bool // Vollpuffer zu Bypass: Schleusen-Datenliste fehlerhaft + Err_Undef_Schleuse-1 : Bool // Vollpuffer zu Bypass: undefinierte Schleuse -1 + Übzeit_Gerade : Bool // Vollpuffer zu Bypass: Trolley bei Geradefahrt in Weiche verklemmt (-> Antrieb gestoppt) + Übzeit_Abzweig : Bool // Vollpuffer zu Bypass: Trolley bei Abzweigfahrt in Weiche verklemmt (-> Antrieb gestoppt) + Gerade_Sensor_aktiv : Bool // Vollpuffer zu Bypass: Ziel-Sensor Geradefahrt aktiv + Abzweig_Sensor_aktiv : Bool // Vollpuffer zu Bypass: Ziel-Sensor Abzweigfahrt aktiv + Gerade_Bereich_belegt : Bool // Vollpuffer zu Bypass: Bereich Geradefahrt noch belegt + Abzweig_Bereich_belegt : Bool // Vollpuffer zu Bypass: Bereich Abzweigfahrt noch belegt + Reset_aktiv : Bool // Vollpuffer zu Bypass: Reset ist aktiv + Schleuse_MB4450 : Struct // Outbound (UH07): Schleuse MB4450 (Zuführung Entladepuffer) + Schleuse_DL : Bool // Bypass zu Entladepuffer : Schleuse-Datenliste fehlerhaft + Undef_Schleuse : Bool // Bypass zu Entladepuffer : undefinierter Schleuse + Err_Trolley_nicht_in_Schleuse : Bool // Bypass zu Entladepuffer : Trolley fährt nicht in Schleuse + Err_Uebzeit : Bool // Bypass zu Entladepuffer : Überwachungzeit ist abgelaufen + Err_Schritt : Bool // Bypass zu Entladepuffer : Schritt-Nummer ist nicht definiert + Err_Stau_Einfahrt : Bool // Bypass zu Entladepuffer : Stau bei Bereich-Einfahrt + Err_BLKMov : Bool // Bypass zu Entladepuffer : Error bei Block kopieren + Err_Trolley_raus : Bool // Bypass zu Entladepuffer : Trolley fährt nicht aus Schleuse + Err_Raus_Sensor : Bool // Bypass zu Entladepuffer : Raus-Sensor wird nicht erreicht (oder dauernd aktiv)! + Err_Ziel : Bool // Bypass zu Entladepuffer : Trolley-Ziel nicht bekannt + Err_Weichen_DL : Bool // Bypass zu Entladepuffer : Weichen-Datenliste fehlerhaft + Err_Undef_Weiche : Bool // Bypass zu Entladepuffer : undefinierte Weiche + Err_Weiche_belegt : Bool // Bypass zu Entladepuffer : Weiche bleibt belegt + Err_Kein_LeseErgebnis : Bool // Bypass zu Entladepuffer : Kein Ergebnis von LeseEinheit + Err_Leser_nicht_bereit : Bool // Bypass zu Entladepuffer : Leser nicht betriebsbereit + Barcode_nicht_bekannt : Bool // Bypass zu Entladepuffer : Barcode nicht in Datenbank vorhanden + Schleuse_MB4462 : Struct // Outbound (UH07): Schleuse MB4562 (Abführung Entladepuffer) + Schleuse_DL : Bool // Bypass zu Leerpuffer : Schleuse-Datenliste fehlerhaft + Undef_Schleuse : Bool // Bypass zu Leerpuffer : undefinierter Schleuse + Err_Trolley_nicht_in_Schleuse : Bool // Bypass zu Leerpuffer : Trolley fährt nicht in Schleuse + Err_Uebzeit : Bool // Bypass zu Leerpuffer : Überwachungzeit ist abgelaufen + Err_Schritt : Bool // Bypass zu Leerpuffer : Schritt-Nummer ist nicht definiert + Err_Stau_Einfahrt : Bool // Bypass zu Leerpuffer : Stau bei Bereich-Einfahrt + Err_BLKMov : Bool // Bypass zu Leerpuffer : Error bei Block kopieren + Err_Trolley_raus : Bool // Bypass zu Leerpuffer : Trolley fährt nicht aus Schleuse + Err_Raus_Sensor : Bool // Bypass zu Leerpuffer : Raus-Sensor wird nicht erreicht (oder dauernd aktiv)! + Err_Ziel : Bool // Bypass zu Leerpuffer : Trolley-Ziel nicht bekannt + Err_Weichen_DL : Bool // Bypass zu Leerpuffer : Weichen-Datenliste fehlerhaft + Err_Undef_Weiche : Bool // Bypass zu Leerpuffer : undefinierte Weiche + Err_Weiche_belegt : Bool // Bypass zu Leerpuffer : Weiche bleibt belegt + Err_Kein_LeseErgebnis : Bool // Bypass zu Leerpuffer : Kein Ergebnis von LeseEinheit + Err_Leser_nicht_bereit : Bool // Bypass zu Leerpuffer : Leser nicht betriebsbereit + Barcode_nicht_bekannt : Bool // Bypass zu Leerpuffer : Barcode nicht in Datenbank vorhanden + Schleuse_MB4466 : Struct // Outbound (UH07): Schleuse MB4466 (Abführung Entladepuffer) + Schleuse_DL : Bool // Leerpuffer zu Bypass : Schleuse-Datenliste fehlerhaft + Undef_Schleuse : Bool // Leerpuffer zu Bypass : undefinierter Schleuse + Err_Trolley_nicht_in_Schleuse : Bool // Leerpuffer zu Bypass : Trolley fährt nicht in Schleuse + Err_Uebzeit : Bool // Leerpuffer zu Bypass : Überwachungzeit ist abgelaufen + Err_Schritt : Bool // Leerpuffer zu Bypass : Schritt-Nummer ist nicht definiert + Err_Stau_Einfahrt : Bool // Leerpuffer zu Bypass : Stau bei Bereich-Einfahrt + Err_BLKMov : Bool // Leerpuffer zu Bypass : Error bei Block kopieren + Err_Trolley_raus : Bool // Leerpuffer zu Bypass : Trolley fährt nicht aus Schleuse + Err_Raus_Sensor : Bool // Leerpuffer zu Bypass : Raus-Sensor wird nicht erreicht (oder dauernd aktiv)! + Err_Ziel : Bool // Leerpuffer zu Bypass : Trolley-Ziel nicht bekannt + Err_Weichen_DL : Bool // Leerpuffer zu Bypass : Weichen-Datenliste fehlerhaft + Err_Undef_Weiche : Bool // Leerpuffer zu Bypass : undefinierte Weiche + Err_Weiche_belegt : Bool // Leerpuffer zu Bypass : Weiche bleibt belegt + Err_Kein_LeseErgebnis : Bool // Leerpuffer zu Bypass : Kein Ergebnis von LeseEinheit + Err_Leser_nicht_bereit : Bool // Leerpuffer zu Bypass : Leser nicht betriebsbereit + Barcode_nicht_bekannt : Bool // Leerpuffer zu Bypass : Barcode nicht in Datenbank vorhanden + Schleuse_MB4503 : Struct // Outbound (UH07): Schleuse MB4503 (Vor Entladepuffer) + Schleuse_DL : Bool // Entlade-Sorter : Schleuse-Datenliste fehlerhaft + Undef_Schleuse : Bool // Entlade-Sorter : undefinierter Schleuse + Err_Trolley_nicht_in_Schleuse : Bool // Entlade-Sorter : Trolley fährt nicht in Schleuse + Err_Uebzeit : Bool // Entlade-Sorter : Überwachungzeit ist abgelaufen + Err_Schritt : Bool // Entlade-Sorter : Schritt-Nummer ist nicht definiert + Err_Stau_Einfahrt : Bool // Entlade-Sorter : Stau bei Bereich-Einfahrt + Err_BLKMov : Bool // Entlade-Sorter : Error bei Block kopieren + Err_Trolley_raus : Bool // Entlade-Sorter : Trolley fährt nicht aus Schleuse + Err_Raus_Sensor : Bool // Entlade-Sorter : Raus-Sensor wird nicht erreicht (oder dauernd aktiv)! + Err_Ziel : Bool // Entlade-Sorter : Trolley-Ziel nicht bekannt + Err_Weichen_DL : Bool // Entlade-Sorter : Weichen-Datenliste fehlerhaft + Err_Undef_Weiche : Bool // Entlade-Sorter : undefinierte Weiche + Err_Weiche_belegt : Bool // Entlade-Sorter : Weiche bleibt belegt + Err_Kein_LeseErgebnis : Bool // Entlade-Sorter : Kein Ergebnis von LeseEinheit + Err_Leser_nicht_bereit : Bool // Entlade-Sorter : Leser nicht betriebsbereit + Barcode_nicht_bekannt : Bool // Entlade-Sorter : Barcode nicht in Datenbank vorhanden + Schleuse_MB4516 : Struct // Outbound (UH07): Schleuse MB4516 (Abführung Entladepuffer) + Schleuse_DL : Bool // Entladepuffer zu Bypass : Schleuse-Datenliste fehlerhaft + Undef_Schleuse : Bool // Entladepuffer zu Bypass : undefinierter Schleuse + Err_Trolley_nicht_in_Schleuse : Bool // Entladepuffer zu Bypass : Trolley fährt nicht in Schleuse + Err_Uebzeit : Bool // Entladepuffer zu Bypass : Überwachungzeit ist abgelaufen + Err_Schritt : Bool // Entladepuffer zu Bypass : Schritt-Nummer ist nicht definiert + Err_Stau_Einfahrt : Bool // Entladepuffer zu Bypass : Stau bei Bereich-Einfahrt + Err_BLKMov : Bool // Entladepuffer zu Bypass : Error bei Block kopieren + Err_Trolley_raus : Bool // Entladepuffer zu Bypass : Trolley fährt nicht aus Schleuse + Err_Raus_Sensor : Bool // Entladepuffer zu Bypass : Raus-Sensor wird nicht erreicht (oder dauernd aktiv)! + Err_Ziel : Bool // Entladepuffer zu Bypass : Trolley-Ziel nicht bekannt + Err_Weichen_DL : Bool // Entladepuffer zu Bypass : Weichen-Datenliste fehlerhaft + Err_Undef_Weiche : Bool // Entladepuffer zu Bypass : undefinierte Weiche + Err_Weiche_belegt : Bool // Entladepuffer zu Bypass : Weiche bleibt belegt + Err_Kein_LeseErgebnis : Bool // Entladepuffer zu Bypass : Kein Ergebnis von LeseEinheit + Err_Leser_nicht_bereit : Bool // Entladepuffer zu Bypass : Leser nicht betriebsbereit + Barcode_nicht_bekannt : Bool // Entladepuffer zu Bypass : Barcode nicht in Datenbank vorhanden + Schleuse_MB4520 : Struct // Outbound (UH07): Schleuse MB4520 (Abführung Entladepuffer) + Schleuse_DL : Bool // Entladepuffer zu Bypass : Schleuse-Datenliste fehlerhaft + Undef_Schleuse : Bool // Entladepuffer zu Bypass : undefinierter Schleuse + Err_Trolley_nicht_in_Schleuse : Bool // Entladepuffer zu Bypass : Trolley fährt nicht in Schleuse + Err_Uebzeit : Bool // Entladepuffer zu Bypass : Überwachungzeit ist abgelaufen + Err_Schritt : Bool // Entladepuffer zu Bypass : Schritt-Nummer ist nicht definiert + Err_Stau_Einfahrt : Bool // Entladepuffer zu Bypass : Stau bei Bereich-Einfahrt + Err_BLKMov : Bool // Entladepuffer zu Bypass : Error bei Block kopieren + Err_Trolley_raus : Bool // Entladepuffer zu Bypass : Trolley fährt nicht aus Schleuse + Err_Raus_Sensor : Bool // Entladepuffer zu Bypass : Raus-Sensor wird nicht erreicht (oder dauernd aktiv)! + Err_Ziel : Bool // Entladepuffer zu Bypass : Trolley-Ziel nicht bekannt + Err_Weichen_DL : Bool // Entladepuffer zu Bypass : Weichen-Datenliste fehlerhaft + Err_Undef_Weiche : Bool // Entladepuffer zu Bypass : undefinierte Weiche + Err_Weiche_belegt : Bool // Entladepuffer zu Bypass : Weiche bleibt belegt + Err_Kein_LeseErgebnis : Bool // Entladepuffer zu Bypass : Kein Ergebnis von LeseEinheit + Err_Leser_nicht_bereit : Bool // Entladepuffer zu Bypass : Leser nicht betriebsbereit + Barcode_nicht_bekannt : Bool // Entladepuffer zu Bypass : Barcode nicht in Datenbank vorhanden + Schleuse_MB3275 : Struct // Outbound (UH07): Schleuse MB3275 (Abführung Vollpuffer) + Schleuse_DL : Bool // Entladepuffer zu Bypass : Schleuse-Datenliste fehlerhaft + Undef_Schleuse : Bool // Entladepuffer zu Bypass : undefinierter Schleuse + Err_Trolley_nicht_in_Schleuse : Bool // Entladepuffer zu Bypass : Trolley fährt nicht in Schleuse + Err_Uebzeit : Bool // Entladepuffer zu Bypass : Überwachungzeit ist abgelaufen + Err_Schritt : Bool // Entladepuffer zu Bypass : Schritt-Nummer ist nicht definiert + Err_Stau_Einfahrt : Bool // Entladepuffer zu Bypass : Stau bei Bereich-Einfahrt + Err_BLKMov : Bool // Entladepuffer zu Bypass : Error bei Block kopieren + Err_Trolley_raus : Bool // Entladepuffer zu Bypass : Trolley fährt nicht aus Schleuse + Err_Raus_Sensor : Bool // Entladepuffer zu Bypass : Raus-Sensor wird nicht erreicht (oder dauernd aktiv)! + Err_Ziel : Bool // Entladepuffer zu Bypass : Trolley-Ziel nicht bekannt + Err_Weichen_DL : Bool // Entladepuffer zu Bypass : Weichen-Datenliste fehlerhaft + Err_Undef_Weiche : Bool // Entladepuffer zu Bypass : undefinierte Weiche + Err_Weiche_belegt : Bool // Entladepuffer zu Bypass : Weiche bleibt belegt + Err_Kein_LeseErgebnis : Bool // Entladepuffer zu Bypass : Kein Ergebnis von LeseEinheit + Err_Leser_nicht_bereit : Bool // Entladepuffer zu Bypass : Leser nicht betriebsbereit + Barcode_nicht_bekannt : Bool // Entladepuffer zu Bypass : Barcode nicht in Datenbank vorhanden + Schleuse_MB3342 : Struct // Outbound (UH07): Schleuse MB3342 (vor Sackbeladung) + Schleuse_DL : Bool // Entladepuffer zu Bypass : Schleuse-Datenliste fehlerhaft + Undef_Schleuse : Bool // Entladepuffer zu Bypass : undefinierter Schleuse + Err_Trolley_nicht_in_Schleuse : Bool // Entladepuffer zu Bypass : Trolley fährt nicht in Schleuse + Err_Uebzeit : Bool // Entladepuffer zu Bypass : Überwachungzeit ist abgelaufen + Err_Schritt : Bool // Entladepuffer zu Bypass : Schritt-Nummer ist nicht definiert + Err_Stau_Einfahrt : Bool // Entladepuffer zu Bypass : Stau bei Bereich-Einfahrt + Err_BLKMov : Bool // Entladepuffer zu Bypass : Error bei Block kopieren + Err_Trolley_raus : Bool // Entladepuffer zu Bypass : Trolley fährt nicht aus Schleuse + Err_Raus_Sensor : Bool // Entladepuffer zu Bypass : Raus-Sensor wird nicht erreicht (oder dauernd aktiv)! + Err_Ziel : Bool // Entladepuffer zu Bypass : Trolley-Ziel nicht bekannt + Err_Weichen_DL : Bool // Entladepuffer zu Bypass : Weichen-Datenliste fehlerhaft + Err_Undef_Weiche : Bool // Entladepuffer zu Bypass : undefinierte Weiche + Err_Weiche_belegt : Bool // Entladepuffer zu Bypass : Weiche bleibt belegt + Err_Kein_LeseErgebnis : Bool // Entladepuffer zu Bypass : Kein Ergebnis von LeseEinheit + Err_Leser_nicht_bereit : Bool // Entladepuffer zu Bypass : Leser nicht betriebsbereit + Barcode_nicht_bekannt : Bool // Entladepuffer zu Bypass : Barcode nicht in Datenbank vorhanden + Schleuse_MB3325 : Struct // Outbound (UH07): Schleuse MB3342 (Abführung Leerpuffer) + Schleuse_DL : Bool // Hinter Trolly-Beladung : Schleuse-Datenliste fehlerhaft + Undef_Schleuse : Bool // Hinter Trolly-Beladung : undefinierter Schleuse + Err_Trolley_nicht_in_Schleuse : Bool // Hinter Trolly-Beladung : Trolley fährt nicht in Schleuse + Err_Uebzeit : Bool // Hinter Trolly-Beladung : Überwachungzeit ist abgelaufen + Err_Schritt : Bool // Hinter Trolly-Beladung : Schritt-Nummer ist nicht definiert + Err_Stau_Einfahrt : Bool // Hinter Trolly-Beladung : Stau bei Bereich-Einfahrt + Err_BLKMov : Bool // Hinter Trolly-Beladung : Error bei Block kopieren + Err_Trolley_raus : Bool // Hinter Trolly-Beladung : Trolley fährt nicht aus Schleuse + Err_Raus_Sensor : Bool // Hinter Trolly-Beladung : Raus-Sensor wird nicht erreicht (oder dauernd aktiv)! + Err_Ziel : Bool // Hinter Trolly-Beladung : Trolley-Ziel nicht bekannt + Err_Weichen_DL : Bool // Hinter Trolly-Beladung : Weichen-Datenliste fehlerhaft + Err_Undef_Weiche : Bool // Hinter Trolly-Beladung : undefinierte Weiche + Err_Weiche_belegt : Bool // Hinter Trolly-Beladung : Weiche bleibt belegt + Err_Kein_LeseErgebnis : Bool // Hinter Trolly-Beladung : Kein Ergebnis von LeseEinheit + Err_Leser_nicht_bereit : Bool // Hinter Trolly-Beladung : Leser nicht betriebsbereit + Barcode_nicht_bekannt : Bool // Hinter Trolly-Beladung : Barcode nicht in Datenbank vorhanden + Schleuse_MB4512 : Struct // Outbound (UH07): Schleuse MB4512 (Abführung Entladepuffer) + Schleuse_DL : Bool // Entladepuffer zu Bypass : Schleuse-Datenliste fehlerhaft + Undef_Schleuse : Bool // Entladepuffer zu Bypass : undefinierter Schleuse + Err_Trolley_nicht_in_Schleuse : Bool // Entladepuffer zu Bypass : Trolley fährt nicht in Schleuse + Err_Uebzeit : Bool // Entladepuffer zu Bypass : Überwachungzeit ist abgelaufen + Err_Schritt : Bool // Entladepuffer zu Bypass : Schritt-Nummer ist nicht definiert + Err_Stau_Einfahrt : Bool // Entladepuffer zu Bypass : Stau bei Bereich-Einfahrt + Err_BLKMov : Bool // Entladepuffer zu Bypass : Error bei Block kopieren + Err_Trolley_raus : Bool // Entladepuffer zu Bypass : Trolley fährt nicht aus Schleuse + Err_Raus_Sensor : Bool // Entladepuffer zu Bypass : Raus-Sensor wird nicht erreicht (oder dauernd aktiv)! + Err_Ziel : Bool // Entladepuffer zu Bypass : Trolley-Ziel nicht bekannt + Err_Weichen_DL : Bool // Entladepuffer zu Bypass : Weichen-Datenliste fehlerhaft + Err_Undef_Weiche : Bool // Entladepuffer zu Bypass : undefinierte Weiche + Err_Weiche_belegt : Bool // Entladepuffer zu Bypass : Weiche bleibt belegt + Err_Kein_LeseErgebnis : Bool // Entladepuffer zu Bypass : Kein Ergebnis von LeseEinheit + Err_Leser_nicht_bereit : Bool // Entladepuffer zu Bypass : Leser nicht betriebsbereit + Barcode_nicht_bekannt : Bool // Entladepuffer zu Bypass : Barcode nicht in Datenbank vorhanden + Schleuse_MB4532 : Struct // Outbound (UH07): Schleuse MB4532 (Abführung Entladepuffer) + Schleuse_DL : Bool // Entladepuffer zu Bypass : Schleuse-Datenliste fehlerhaft + Undef_Schleuse : Bool // Entladepuffer zu Bypass : undefinierter Schleuse + Err_Trolley_nicht_in_Schleuse : Bool // Entladepuffer zu Bypass : Trolley fährt nicht in Schleuse + Err_Uebzeit : Bool // Entladepuffer zu Bypass : Überwachungzeit ist abgelaufen + Err_Schritt : Bool // Entladepuffer zu Bypass : Schritt-Nummer ist nicht definiert + Err_Stau_Einfahrt : Bool // Entladepuffer zu Bypass : Stau bei Bereich-Einfahrt + Err_BLKMov : Bool // Entladepuffer zu Bypass : Error bei Block kopieren + Err_Trolley_raus : Bool // Entladepuffer zu Bypass : Trolley fährt nicht aus Schleuse + Err_Raus_Sensor : Bool // Entladepuffer zu Bypass : Raus-Sensor wird nicht erreicht (oder dauernd aktiv)! + Err_Ziel : Bool // Entladepuffer zu Bypass : Trolley-Ziel nicht bekannt + Err_Weichen_DL : Bool // Entladepuffer zu Bypass : Weichen-Datenliste fehlerhaft + Err_Undef_Weiche : Bool // Entladepuffer zu Bypass : undefinierte Weiche + Err_Weiche_belegt : Bool // Entladepuffer zu Bypass : Weiche bleibt belegt + Err_Kein_LeseErgebnis : Bool // Entladepuffer zu Bypass : Kein Ergebnis von LeseEinheit + Err_Leser_nicht_bereit : Bool // Entladepuffer zu Bypass : Leser nicht betriebsbereit + Barcode_nicht_bekannt : Bool // Entladepuffer zu Bypass : Barcode nicht in Datenbank vorhanden + Schleuse_MB4217 : Struct // Outbound (UH07): Schleuse MB4200 (Vor RFID-Gate) + Schleuse_DL : Bool // Highway zu Bypass : Schleuse-Datenliste fehlerhaft + Undef_Schleuse : Bool // Highway zu Bypass : undefinierter Schleuse + Err_Trolley_nicht_in_Schleuse : Bool // Highway zu Bypass : Trolley fährt nicht in Schleuse + Err_Uebzeit : Bool // Highway zu Bypass : Überwachungzeit ist abgelaufen + Err_Schritt : Bool // Highway zu Bypass : Schritt-Nummer ist nicht definiert + Err_Stau_Einfahrt : Bool // Highway zu Bypass : Stau bei Bereich-Einfahrt + Err_BLKMov : Bool // Highway zu Bypass : Error bei Block kopieren + Err_Trolley_raus : Bool // Highway zu Bypass : Trolley fährt nicht aus Schleuse + Err_Raus_Sensor : Bool // Highway zu Bypass : Raus-Sensor wird nicht erreicht (oder dauernd aktiv)! + Err_Ziel : Bool // Highway zu Bypass : Trolley-Ziel nicht bekannt + Err_Weichen_DL : Bool // Highway zu Bypass : Weichen-Datenliste fehlerhaft + Err_Undef_Weiche : Bool // Highway zu Bypass : undefinierte Weiche + Err_Weiche_belegt : Bool // Highway zu Bypass : Weiche bleibt belegt + Err_Kein_LeseErgebnis : Bool // Highway zu Bypass : Kein Ergebnis von LeseEinheit + Err_Leser_nicht_bereit : Bool // Highway zu Bypass : Leser nicht betriebsbereit + Barcode_nicht_bekannt : Bool // Highway zu Bypass : Barcode nicht in Datenbank vorhanden + Schleuse_MB4522 : Struct // Outbound (UH07): Schleuse MB4522 (Abführung Entladepuffer) + Schleuse_DL : Bool // Entladepuffer zu Bypass : Schleuse-Datenliste fehlerhaft + Undef_Schleuse : Bool // Entladepuffer zu Bypass : undefinierter Schleuse + Err_Trolley_nicht_in_Schleuse : Bool // Entladepuffer zu Bypass : Trolley fährt nicht in Schleuse + Err_Uebzeit : Bool // Entladepuffer zu Bypass : Überwachungzeit ist abgelaufen + Err_Schritt : Bool // Entladepuffer zu Bypass : Schritt-Nummer ist nicht definiert + Err_Stau_Einfahrt : Bool // Entladepuffer zu Bypass : Stau bei Bereich-Einfahrt + Err_BLKMov : Bool // Entladepuffer zu Bypass : Error bei Block kopieren + Err_Trolley_raus : Bool // Entladepuffer zu Bypass : Trolley fährt nicht aus Schleuse + Err_Raus_Sensor : Bool // Entladepuffer zu Bypass : Raus-Sensor wird nicht erreicht (oder dauernd aktiv)! + Err_Ziel : Bool // Entladepuffer zu Bypass : Trolley-Ziel nicht bekannt + Err_Weichen_DL : Bool // Entladepuffer zu Bypass : Weichen-Datenliste fehlerhaft + Err_Undef_Weiche : Bool // Entladepuffer zu Bypass : undefinierte Weiche + Err_Weiche_belegt : Bool // Entladepuffer zu Bypass : Weiche bleibt belegt + Err_Kein_LeseErgebnis : Bool // Entladepuffer zu Bypass : Kein Ergebnis von LeseEinheit + Err_Leser_nicht_bereit : Bool // Entladepuffer zu Bypass : Leser nicht betriebsbereit + Barcode_nicht_bekannt : Bool // Entladepuffer zu Bypass : Barcode nicht in Datenbank vorhanden + Schleuse_MB4463 : Struct // Outbound (UH07): Schleuse MB4463 (Abführung Entladepuffer) + Schleuse_DL : Bool // Entladepuffer zu Bypass : Schleuse-Datenliste fehlerhaft + Undef_Schleuse : Bool // Entladepuffer zu Bypass : undefinierter Schleuse + Err_Trolley_nicht_in_Schleuse : Bool // Entladepuffer zu Bypass : Trolley fährt nicht in Schleuse + Err_Uebzeit : Bool // Entladepuffer zu Bypass : Überwachungzeit ist abgelaufen + Err_Schritt : Bool // Entladepuffer zu Bypass : Schritt-Nummer ist nicht definiert + Err_Stau_Einfahrt : Bool // Entladepuffer zu Bypass : Stau bei Bereich-Einfahrt + Err_BLKMov : Bool // Entladepuffer zu Bypass : Error bei Block kopieren + Err_Trolley_raus : Bool // Entladepuffer zu Bypass : Trolley fährt nicht aus Schleuse + Err_Raus_Sensor : Bool // Entladepuffer zu Bypass : Raus-Sensor wird nicht erreicht (oder dauernd aktiv)! + Err_Ziel : Bool // Entladepuffer zu Bypass : Trolley-Ziel nicht bekannt + Err_Weichen_DL : Bool // Entladepuffer zu Bypass : Weichen-Datenliste fehlerhaft + Err_Undef_Weiche : Bool // Entladepuffer zu Bypass : undefinierte Weiche + Err_Weiche_belegt : Bool // Entladepuffer zu Bypass : Weiche bleibt belegt + Err_Kein_LeseErgebnis : Bool // Entladepuffer zu Bypass : Kein Ergebnis von LeseEinheit + Err_Leser_nicht_bereit : Bool // Entladepuffer zu Bypass : Leser nicht betriebsbereit + Barcode_nicht_bekannt : Bool // Entladepuffer zu Bypass : Barcode nicht in Datenbank vorhanden + Schleuse_MB3345 : Struct // Outbound (UH07): Schleuse MB3345 (Abführung Leerpuffer) + Schleuse_DL : Bool // Hinter Trolly-Beladung : Schleuse-Datenliste fehlerhaft + Undef_Schleuse : Bool // Hinter Trolly-Beladung : undefinierter Schleuse + Err_Trolley_nicht_in_Schleuse : Bool // Hinter Trolly-Beladung : Trolley fährt nicht in Schleuse + Err_Uebzeit : Bool // Hinter Trolly-Beladung : Überwachungzeit ist abgelaufen + Err_Schritt : Bool // Hinter Trolly-Beladung : Schritt-Nummer ist nicht definiert + Err_Stau_Einfahrt : Bool // Hinter Trolly-Beladung : Stau bei Bereich-Einfahrt + Err_BLKMov : Bool // Hinter Trolly-Beladung : Error bei Block kopieren + Err_Trolley_raus : Bool // Hinter Trolly-Beladung : Trolley fährt nicht aus Schleuse + Err_Raus_Sensor : Bool // Hinter Trolly-Beladung : Raus-Sensor wird nicht erreicht (oder dauernd aktiv)! + Err_Ziel : Bool // Hinter Trolly-Beladung : Trolley-Ziel nicht bekannt + Err_Weichen_DL : Bool // Hinter Trolly-Beladung : Weichen-Datenliste fehlerhaft + Err_Undef_Weiche : Bool // Hinter Trolly-Beladung : undefinierte Weiche + Err_Weiche_belegt : Bool // Hinter Trolly-Beladung : Weiche bleibt belegt + Err_Kein_LeseErgebnis : Bool // Hinter Trolly-Beladung : Kein Ergebnis von LeseEinheit + Err_Leser_nicht_bereit : Bool // Hinter Trolly-Beladung : Leser nicht betriebsbereit + Barcode_nicht_bekannt : Bool // Hinter Trolly-Beladung : Barcode nicht in Datenbank vorhanden + Frei750 : Array[1..81] of Word diff --git a/=A01+UH07-KF00/Programmbausteine/_All/7_HMI_Err_UH07_OB_Ori.awl b/=A01+UH07-KF00/Programmbausteine/_All/7_HMI_Err_UH07_OB_Ori.awl new file mode 100644 index 0000000..245007a --- /dev/null +++ b/=A01+UH07-KF00/Programmbausteine/_All/7_HMI_Err_UH07_OB_Ori.awl @@ -0,0 +1,3708 @@ +=== GlobalDB 709: 7_HMI_Err_UH07_OB_Ori [DB] === +INTERFACE: + Static: + System : Struct + Bus_Anlauf : Bool // Outbound (UH07): Profibus-Anlauf (warten mit Programm) + Anlage_aus : Bool // Outbound (UH07): Anlage ist ausgeschaltet + Gesamt_Feueralarm_Halle3 : Bool // Outbound (UH07): Hauptmeldung Feueralarm Halle 3 + Gesamt_Feueralarm_Halle4 : Bool // Outbound (UH07): Hauptmeldung Feueralarm Halle 4 + BST1_Feueralarm : Bool // Outbound (UH07): BST1 Feueralarm + BST1_Störung : Bool // Outbound (UH07): BST1 Störung + BST1_Geschlossen : Bool // Outbound (UH07): BST1 Geschlossen + BST2_Feueralarm : Bool // Outbound (UH07): BST2 Feueralarm + BST2_Störung : Bool // Outbound (UH07): BST2 Störung + BST2_Geschlossen : Bool // Outbound (UH07): BST2 Geschlossen + Kommunikation : Struct + SendFIFO_Port1 : Bool // Outbound (UH07/Port1): Send-FIFO ist voll, Anlage gestoppt + SendFIFO_Port2 : Bool // Outbound (UH07/Port2): Send-FIFO ist voll, Anlage gestoppt + Frei02 : Bool + Frei03 : Bool + Frei04 : Bool + Frei05 : Bool + Frei06 : Bool + Frei07 : Bool + Frei10 : Bool + Frei11 : Bool + Frei12 : Bool + Frei13 : Bool + Frei14 : Bool + Frei15 : Bool + Frei16 : Bool + Frei17 : Bool + Not : Struct + ausgeloest_UH07_UC71_UC73 : Bool // Outbound (UH07): Not-Aus im UH07/UC71/UC73 hat ausgelöst + ausgeloest_UC072 : Bool // Outbound (UH07): Not-Aus im UC072 hat ausgelöst + ausgeloest_UC074 : Bool // Outbound (UH07): Not-Aus im UC074 hat ausgelöst + UH07 : Bool // Outbound (UH07): Not-Aus am Schaltschrank UH07 betätigt + UC071 : Bool // Outbound (UH07): Not-Aus am Schaltschrank UC071 betätigt + UC072 : Bool // Outbound (UH07): Not-Aus am Schaltschrank UC072 betätigt + UC073 : Bool // Outbound (UH07): Not-Aus am Schaltschrank UC073 betätigt + UC074 : Bool // Outbound (UH07): Not-Aus am Schaltschrank UC074 betätigt + UZ0701 : Bool // Outbound (UH07): Not-Aus an BST 1betätigt (UZ0701) + UZ0702 : Bool // Outbound (UH07): Not-Aus vor Leer-Puffer betätigt (UZ0702) + UZ0703 : Bool // Outbound (UH07): Not-Aus nach Leer-Puffer betätigt (UZ0703 + UZ7101 : Bool // Outbound (UH07): Not-Aus am Kontrollplatz betätigt (UZ7101 + UZ7102 : Bool // Outbound (UH07): Not-Aus an Voll-Puffer-Einfahrt betätigt (UZ7102) + UZ7103 : Bool // Outbound (UH07): Not-Aus Mitte Voll-Puffer-Einfahrt betätigt (UZ7103) + UZ7104 : Bool // Outbound (UH07): Not-Aus Mitte Voll-Puffer-Ausfahrt betätigt (UZ7104) + UZ7105 : Bool // Outbound (UH07): Not-Aus an Voll-Puffer-Ausfahrt betätigt (UZ7105) + UZ7106 : Bool // Outbound (UH07): Not-Aus Ende Voll-Puffer-Einfahrt betätigt (UZ7106) + UZ7107 : Bool // Outbound (UH07): Not-Aus Ende Voll-Puffer-Ausfahrt betätigt (UZ7107) + UZ7201 : Bool // Outbound (UH07): Not-Aus an Highway Nähe AMR betätigt (UZ7201) + UZ7202 : Bool // Outbound (UH07): Not-Aus an Highway BST 2/AMR betätigt (UZ7102) + UZ7301 : Bool // Outbound (UH07): Not-Aus an Highway BST 2/OB betätigt (UZ7301) + UZ7302 : Bool // Outbound (UH07): Not-Aus an Highway BST 2/Bypass betätigt (UZ7302) + UZ7303 : Bool // Outbound (UH07): Not-Aus an Bypass LP>VP betätigt (UZ7303) + UZ7401 : Bool // Outbound (UH07): Not-Aus an Bypass VP>LP betätigt (UZ7401) + UZ7402 : Bool // Outbound (UH07): Not-Aus an Entnahme-Puffer betätigt (UZ7402) + UZ7403 : Bool // Outbound (UH07): Not-Aus an Entnahme-Puffer betätigt (UZ7403) + von_UH03 : Bool // Outbound (UH07): Not-Aus von UH03 gemeldet + von_UH05 : Bool // Outbound (UH07): Not-Aus von UH05 gemeldet + Frei74 : Bool + Frei75 : Bool + Frei76 : Bool + Frei77 : Bool + Halt : Struct + UZ7102 : Bool // Outbound (UH07): Bereichshalt UZ7102 betätigt + UZ7104 : Bool // Outbound (UH07): Bereichshalt UZ7104 betätigt + UZ7201 : Bool // Outbound (UH07): Bereichshalt UZ7201 betätigt + UZ7202 : Bool // Outbound (UH07): Bereichshalt UZ7202 betätigt + Frei04 : Bool + Frei05 : Bool + Frei06 : Bool + Frei07 : Bool + Frei10 : Bool + Frei11 : Bool + Frei12 : Bool + Frei13 : Bool + Frei14 : Bool + Frei15 : Bool + Frei16 : Bool + Frei17 : Bool + Schutz : Struct + Hauptschütz UH07 : Bool // Outbound (UH07): Hauptschütz UH07 nicht aktiv + Hauptschütz UC071 : Bool // Outbound (UH07): Hauptschütz UC071 nicht aktiv + Hauptschütz UC072 : Bool // Outbound (UH07): Hauptschütz UC072 nicht aktiv + Hauptschütz UC073 : Bool // Outbound (UH07): Hauptschütz UC073 nicht aktiv + Hauptschütz UC074 : Bool // Outbound (UH07): Hauptschütz UC074 nicht aktiv + Frei05 : Bool + Frei06 : Bool + Frei07 : Bool + Frei10 : Bool + Frei11 : Bool + Frei12 : Bool + Frei13 : Bool + Frei14 : Bool + Frei15 : Bool + Frei16 : Bool + Frei17 : Bool + VErr : Struct + Phasen : Bool // Outbound (UH07): Phasen-Ausfall + FC0006 : Bool // Outbound (UH07): Vorsicherung UC071 400V Motoren + FC0007 : Bool // Outbound (UH07): Vorsicherung UC072 400V Motoren + FC0010 : Bool // Outbound (UH07): Vorsicherung UC073 400V Motoren + FC0011 : Bool // Outbound (UH07): Vorsicherung Reserve 400V Motoren + FC0012 : Bool // Outbound (UH07): Vorsicherung Reserve 400V Motoren + FC0021 : Bool // Outbound (UH07): Vorsicherung 24V + FC0022 : Bool // Outbound (UH07): Vorsicherung 24V + FC0023 : Bool // Outbound (UH07): Vorsicherung 24V + Frei131 : Bool + Frei132 : Bool + Frei133 : Bool + FC0100 : Bool // OutBound (UC071): Vorsicherung 400V Motoren + FC0101 : Bool // OutBound (UC071): Vorsicherung 24V + FC0102 : Bool // OutBound (UC071): Vorsicherung 24V + FC0103 : Bool // OutBound (UC071): Vorsicherung 24V + FC0160 : Bool // OutBound (UC072): Vorsicherung 400V Motoren + FC0161 : Bool // OutBound (UC072): Vorsicherung 24V + FC0162 : Bool // OutBound (UC072): Vorsicherung 24V + FC0220 : Bool // OutBound (UC073): Vorsicherung 400V Motoren + FC0221 : Bool // OutBound (UC073): Vorsicherung 24V + FC0222 : Bool // OutBound (UC073): Vorsicherung 24V + FC0223 : Bool // OutBound (UC073): Vorsicherung 24V + FC0280 : Bool // OutBound (UC074): Vorsicherung 400V Motoren + FC0281 : Bool // OutBound (UC074): Vorsicherung 24V + FC0282 : Bool // OutBound (UC074): Vorsicherung 24V + FC0283 : Bool // OutBound (UC074): Vorsicherung 24V + Frei03 : Bool + Frei04 : Bool + Frei05 : Bool + Frei06 : Bool + Frei07 : Bool + Pn_UH07 : Bool // Outbound (UH07): Pneumatik + Pn_UC071 : Bool // Outbound (UC071): Pneumatik + Pn_UC072 : Bool // Outbound (UC072): Pneumatik + Pn_UC073 : Bool // Outbound (UC073): Pneumatik + Pn_UC074 : Bool // Outbound (UC074): Pneumatik + QErr : Struct + MA0060 : Bool // Outbound (UH07): Motorschutz MA0060 hat ausgelöst + MA0061 : Bool // Outbound (UH07): Motorschutz MA0061 hat ausgelöst + MA0062 : Bool // Outbound (UH07): Motorschutz MA0062 hat ausgelöst + MA0063 : Bool // Outbound (UH07): Motorschutz MA0063 hat ausgelöst + MA0064 : Bool // Outbound (UH07): Motorschutz MA0064 hat ausgelöst + MA0065 : Bool // Outbound (UH07): Motorschutz MA0065 hat ausgelöst + MA0066 : Bool // Outbound (UH07): Motorschutz MA0066 hat ausgelöst + Frei67 : Bool + MA0140 : Bool // Outbound (UC071): Motorschutz MA0140 hat ausgelöst + MA0141 : Bool // Outbound (UC071): Motorschutz MA0141 hat ausgelöst + MA0142 : Bool // Outbound (UC071): Motorschutz MA0142 hat ausgelöst + MA0143 : Bool // Outbound (UC071): Motorschutz MA0143 hat ausgelöst + MA0144 : Bool // Outbound (UC071): Motorschutz MA0144 hat ausgelöst + MA0145 : Bool // Outbound (UC071): Motorschutz MA0145 hat ausgelöst + MA0146 : Bool // Outbound (UC071): Motorschutz MA0146 hat ausgelöst + MA0147 : Bool // Outbound (UC071): Motorschutz MA0147 hat ausgelöst + MA0150 : Bool // Outbound (UC071): Motorschutz MA0150 hat ausgelöst + MA0151 : Bool // Outbound (UC071): Motorschutz MA0152 hat ausgelöst + MA0152 : Bool // Outbound (UC071): Motorschutz MA0152 hat ausgelöst + Frei153 : Bool + Frei154 : Bool + Frei155 : Bool + Frei156 : Bool + Frei157 : Bool + MA0200 : Bool // Outbound (UC072): Motorschutz MA0200 hat ausgelöst + MA0201 : Bool // Outbound (UC072): Motorschutz MA0202 hat ausgelöst + MA0202 : Bool // Outbound (UC072): Motorschutz MA0202 hat ausgelöst + MA0203 : Bool // Outbound (UC072): Motorschutz MA0203 hat ausgelöst + Frei204 : Bool + Frei205 : Bool + Frei206 : Bool + Frei207 : Bool + MA0260 : Bool // Outbound (UC073): Motorschutz MA0260 hat ausgelöst + MA0261 : Bool // Outbound (UC073): Motorschutz MA0261 hat ausgelöst + MA0262 : Bool // Outbound (UC073): Motorschutz MA0262 hat ausgelöst + MA0263 : Bool // Outbound (UC073): Motorschutz MA0263 hat ausgelöst + MA0264 : Bool // Outbound (UC073): Motorschutz MA0264 hat ausgelöst + MA0265 : Bool // Outbound (UC073): Motorschutz MA0265 hat ausgelöst + MA0266 : Bool // Outbound (UC073): Motorschutz MA0266 hat ausgelöst + MA0267 : Bool // Outbound (UC073): Motorschutz MA0267 hat ausgelöst + MA0270 : Bool // Outbound (UC073): Motorschutz MA0270 hat ausgelöst + Frei271 : Bool + Frei272 : Bool + Frei273 : Bool + Frei274 : Bool + Frei275 : Bool + Frei276 : Bool + Frei277 : Bool + MA0320 : Bool // Outbound (UC074): Motorschutz MA0320 hat ausgelöst + MA0321 : Bool // Outbound (UC074): Motorschutz MA0321 hat ausgelöst + MA0322 : Bool // Outbound (UC074): Motorschutz MA0322 hat ausgelöst + MA0323 : Bool // Outbound (UC074): Motorschutz MA0323 hat ausgelöst + MA0324 : Bool // Outbound (UC074): Motorschutz MA0324 hat ausgelöst + MA0325 : Bool // Outbound (UC074): Motorschutz MA0325 hat ausgelöst + MA0326 : Bool // Outbound (UC074): Motorschutz MA0326 hat ausgelöst + MA0327 : Bool // Outbound (UC074): Motorschutz MA0327 hat ausgelöst + MA0330 : Bool // Outbound (UC074): Motorschutz MA0330 hat ausgelöst + MA0331 : Bool // Outbound (UC074): Motorschutz MA0331 hat ausgelöst + MA0332 : Bool // Outbound (UC074): Motorschutz MA0332 hat ausgelöst + MA0333 : Bool // Outbound (UC074): Motorschutz MA0333 hat ausgelöst + Frei334 : Bool + Frei335 : Bool + Frei336 : Bool + Frei337 : Bool + Verklemm_MA0064 : Bool // Outbound (UH07): Leer-Puffer-Einfahrt Motor MA0064 ist verklemmt + Verklemm_MA0065 : Bool // Outbound (UH07): Leer-Puffer-Ausfahrt Motor MA0065 ist verklemmt + Verklemm_MA0145 : Bool // Outbound (UH07): Voll-Puffer-Einfahrt Motor MA0145 ist verklemmt + Verklemm_MA0146 : Bool // Outbound (UH07): Voll-Puffer-Einfahrt Motor MA0146 ist verklemmt + Verklemm_MA0147 : Bool // Outbound (UH07): Voll-Puffer-Ausfahrt Motor MA0147 ist verklemmt + Verklemm_MA0150 : Bool // Outbound (UH07): Voll-Puffer-Ausfahrt Motor MA0150 ist verklemmt + Verklemm_MA0325 : Bool // Outbound (UH07): Entlade-Puffer-Einfahrt Motor MA0325 ist verklemmt + Frei_287 : Bool + FuErr : Struct + Frei00 : Bool + Frei01 : Bool + Frei02 : Bool + Frei03 : Bool + Frei04 : Bool + Frei05 : Bool + Frei06 : Bool + Frei07 : Bool + Frei10 : Bool + Frei11 : Bool + Frei12 : Bool + Frei13 : Bool + Frei14 : Bool + Frei15 : Bool + Frei16 : Bool + Frei17 : Bool + Logistik : Struct + Kein_Platz_im_VollLager : Bool // Outbound (UH07): Kein Platz im Voll-Lager für diese Store-Group! + DB275_Err : Bool // Outbound (UH07): Softwarefehler Aufruf DB275 + Frei02 : Bool + Frei03 : Bool + Frei04 : Bool + Frei05 : Bool + Frei06 : Bool + Frei07 : Bool + Frei10 : Bool + Frei11 : Bool + Frei12 : Bool + Frei13 : Bool + Frei14 : Bool + Frei15 : Bool + Frei16 : Bool + Frei17 : Bool + RFID_Gate : Struct + Gate_nicht_bereit : Bool // Outbound (UH07): RFID-Gate ist nicht bereit + Gate_ByPAss : Bool // Outbound (UH07): RFID-Gate ist im ByPass-Mode + Frei100 : Array[1..33] of Word + Sorter_MB3305 : Struct // Outbound (UH07): Leer-Puffer-Sorter MB3305 + Separator_DL : Bool // Outbound (UH07): Leer-Puffer-Sorter: Separator-Datenliste fehlerhaft + Undef_Separator : Bool // Outbound (UH07): Leer-Puffer-Sorter: undefinierter Separator + Err_BT_rein : Bool // Outbound (UH07): Leer-Puffer-Sorter: BM fährt nicht in Separator + Err_Uebzeit : Bool // Outbound (UH07): Leer-Puffer-Sorter: Überwachungzeit ist abgelaufen + Err_Schritt : Bool // Outbound (UH07): Leer-Puffer-Sorter: Schritt-Nummer ist nicht definiert + Err_Betriebsart : Bool // Outbound (UH07): Leer-Puffer-Sorter: Betriebsart ist nicht möglich + Err_PinSignal : Bool // Outbound (UH07): Leer-Puffer-Sorter: Es kommt kein Pin-Signal + Err_BT_raus : Bool // Outbound (UH07): Leer-Puffer-Sorter: BM fährt nicht aus + Err_Raus_Sensor : Bool // Outbound (UH07): Leer-Puffer-Sorter: Raus-/Belade-Sensor wird nicht erreicht (oder dauernd aktiv)! + Travel_FIFO : Bool // Outbound (UH07): Leer-Puffer-Sorter: Travel-FIFO fehlerhaft + Daten_out : Bool // Outbound (UH07): Leer-Puffer-Sorter: Letzte Carrier-Daten konnten nicht an FIFO übergeben werden + BC_doppelt : Bool // Outbound (UH07): Leer-Puffer-Sorter: Wieder gleichen BC vom PC erhalten + Korrektur_Modus_aktiv : Bool // Outbound (UH07): Leer-Puffer-Sorter: Korrektur-Modus nach Crash aktiviert + Send_FIFO_fehlerhaft : Bool // Outbound (UH07): Leer-Puffer-Sorter: Send-FIFO zum PC ist fehlerhaft + Send_FIFO_voll : Bool // Outbound (UH07): Leer-Puffer-Sorter: Send-FIFO zu PC ist voll + Reset_aktiv : Bool // Outbound (UH07): Leer-Puffer-Sorter: Reset ist aktiv + Sync_BG3306 : Struct // Outbound (UH07): Leer-Puffer-Sorter: Synchron-Punkt BG3306 + SyncPkt_DL_Err : Bool // Outbound (UH07): Leer-Puffer-Synchron-Punkt: Sync-Punkt-Datenliste fehlerhaft + Undef_SyncPkt : Bool // Outbound (UH07): Leer-Puffer-Synchron-Punkt: undefinierter Synchronpunkt + BLKMov : Bool // Outbound (UH07): Leer-Puffer-Synchron-Punkt: Fehler bei Block kopieren + Sync_Sensor_aktiv : Bool // Outbound (UH07): Leer-Puffer-Synchron-Punkt: Sync-Sensor dauernd aktiv + TravelFIFO_Err : Bool // Outbound (UH07): Leer-Puffer-Synchron-Punkt: Travel-FIFO fehlerhaft + TravelFIFO_leer : Bool // Outbound (UH07): Leer-Puffer-Synchron-Punkt: keine Daten im Travel-FIFO eingetragen + TravelFIFO_belegt : Bool // Outbound (UH07): Leer-Puffer-Synchron-Punkt: Travel-FIFO bleibt belegt + Hauptstrangliste_Err : Bool // Outbound (UH07): Leer-Puffer-Synchron-Punkt: Hauptstrang-DL fehlerhaft + Hauptstrangliste_voll : Bool // Outbound (UH07): Leer-Puffer-Synchron-Punkt: Hauptstrang-DL ist voll + Inkgeber_Err : Bool // Outbound (UH07): Leer-Puffer-Synchron-Punkt: Inkrementalgeber meldet Störung + Keine_Hauptstrangliste : Bool // Outbound (UH07): Leer-Puffer-Synchron-Punkt: Keine Hauptstrang-DL zum Eintragen angegeben + Keine_TeachPktdaten : Bool // Outbound (UH07): Leer-Puffer-Synchron-Punkt: Teach-Punkt in Datenliste nicht vorhanden ! + TeachPkt_Datenliste_Err : Bool // Outbound (UH07): Leer-Puffer-Synchron-Punkt: Teach-Punkt-Datenliste fehlerhaft + Kein_Parameter : Bool // Outbound (UH07): Leer-Puffer-Synchron-Punkt: Kein Parameter zur Wegerfassung definiert + Err_Parameter : Bool // Outbound (UH07): Leer-Puffer-Synchron-Punkt: Parameter für Zählerauswertung fehlerhaft + Inkrementalgeber : Bool // Outbound (UH07): Leer-Puffer-Synchron-Punkt: Inkrementalgeberwert ohne Änderung + Weiche_MB3320 : Struct // Outbound (UH07): Leer-Puffer-Sorter: Weiche zu Puffer 1 MB3320 + Weichen_DL : Bool // Outbound (UH07): Leer-Puffer-Sorter: Weiche zu Puffer 1: Weichen-Datenliste fehlerhaft + Undef_Weiche : Bool // Outbound (UH07): Leer-Puffer-Sorter: Weiche zu Puffer 1: undefinierte Weiche + BLKMov : Bool // Outbound (UH07): Leer-Puffer-Sorter: Weiche zu Puffer 1: Fehler bei Block kopieren + Haupstrang_DL : Bool // Outbound (UH07): Leer-Puffer-Sorter: Weiche zu Puffer 1: Haupstrang-Datenliste fehlerhaft + Haupstrang_DL_voll : Bool // Outbound (UH07): Leer-Puffer-Sorter: Weiche zu Puffer 1: Haupstrang-Datenliste ist voll + Keine_HSDaten : Bool // Outbound (UH07): Leer-Puffer-Sorter: Weiche zu Puffer 1: Keine Hauptstrang-Daten mehr vorhanden + Rein_FIFO : Bool // Outbound (UH07): Leer-Puffer-Sorter: Weiche zu Puffer 1: Rein-FIFO fehlerhaft + Keine_FIFODaten : Bool // Outbound (UH07): Leer-Puffer-Sorter: Weiche zu Puffer 1: Keine Rein-FIFO-Daten mehr vorhanden + Stau_AusfahrBereich : Bool // Outbound (UH07): Leer-Puffer-Sorter: Weiche zu Puffer 1: Stau im Ausfahrbereich (-> Antrieb gestoppt) + BM_verklemmt_Gerade : Bool // Outbound (UH07): Leer-Puffer-Sorter: Weiche zu Puffer 1: Trolley bei Gerade-Fahrt in Weiche verklemmt (-> Antrieb gestoppt) + BM_verklemmt_Ausfahrt : Bool // Outbound (UH07): Leer-Puffer-Sorter: Weiche zu Puffer 1: Trolley bei Lager-Fahrt in Weiche verklemmt (-> Antrieb gestoppt) + BM_undef_Gerade : Bool // Outbound (UH07): Leer-Puffer-Sorter: Weiche zu Puffer 1: undefinierter Trolley bei Weiterfahrt erkannt + Frei14 : Bool // Outbound (UH07): Leer-Puffer-Sorter: Weiche zu Puffer 1: Frei 14 + Send_FIFO_fehlerhaft : Bool // Outbound (UH07): Leer-Puffer-Sorter: Weiche zu Puffer 1: Send-FIFO zum PC ist fehlerhaft + Send_FIFO_voll : Bool // Outbound (UH07): Leer-Puffer-Sorter: Weiche zu Puffer 1: Send-FIFO zu PC ist voll + Reset_aktiv : Bool // Outbound (UH07): Leer-Puffer-Sorter: Weiche zu Puffer 1: Reset ist aktiv + Weiche_MB3317 : Struct // Outbound (UH07): Leer-Puffer-Sorter: Weiche zu Puffer 2 MB3317 + Weichen_DL : Bool // Outbound (UH07): Leer-Puffer-Sorter: Weiche zu Puffer 2: Weichen-Datenliste fehlerhaft + Undef_Weiche : Bool // Outbound (UH07): Leer-Puffer-Sorter: Weiche zu Puffer 2: undefinierte Weiche + BLKMov : Bool // Outbound (UH07): Leer-Puffer-Sorter: Weiche zu Puffer 2: Fehler bei Block kopieren + Haupstrang_DL : Bool // Outbound (UH07): Leer-Puffer-Sorter: Weiche zu Puffer 2: Haupstrang-Datenliste fehlerhaft + Haupstrang_DL_voll : Bool // Outbound (UH07): Leer-Puffer-Sorter: Weiche zu Puffer 2: Haupstrang-Datenliste ist voll + Keine_HSDaten : Bool // Outbound (UH07): Leer-Puffer-Sorter: Weiche zu Puffer 2: Keine Hauptstrang-Daten mehr vorhanden + Rein_FIFO : Bool // Outbound (UH07): Leer-Puffer-Sorter: Weiche zu Puffer 2: Rein-FIFO fehlerhaft + Keine_FIFODaten : Bool // Outbound (UH07): Leer-Puffer-Sorter: Weiche zu Puffer 2: Keine Rein-FIFO-Daten mehr vorhanden + Stau_AusfahrBereich : Bool // Outbound (UH07): Leer-Puffer-Sorter: Weiche zu Puffer 2: Stau im Ausfahrbereich (-> Antrieb gestoppt) + BM_verklemmt_Gerade : Bool // Outbound (UH07): Leer-Puffer-Sorter: Weiche zu Puffer 2: Trolley bei Gerade-Fahrt in Weiche verklemmt (-> Antrieb gestoppt) + BM_verklemmt_Ausfahrt : Bool // Outbound (UH07): Leer-Puffer-Sorter: Weiche zu Puffer 2: Trolley bei Lager-Fahrt in Weiche verklemmt (-> Antrieb gestoppt) + BM_undef_Gerade : Bool // Outbound (UH07): Leer-Puffer-Sorter: Weiche zu Puffer 2: undefinierter Trolley bei Weiterfahrt erkannt + Frei14 : Bool // Outbound (UH07): Leer-Puffer-Sorter: Weiche zu Puffer 2: Frei 14 + Send_FIFO_fehlerhaft : Bool // Outbound (UH07): Leer-Puffer-Sorter: Weiche zu Puffer 2: Send-FIFO zum PC ist fehlerhaft + Send_FIFO_voll : Bool // Outbound (UH07): Leer-Puffer-Sorter: Weiche zu Puffer 2: Send-FIFO zu PC ist voll + Reset_aktiv : Bool // Outbound (UH07): Leer-Puffer-Sorter: Weiche zu Puffer 2: Reset ist aktiv + Weiche_MB3316 : Struct // Outbound (UH07): Leer-Puffer-Sorter: Weiche zu Puffer 3 MB3316 + Weichen_DL : Bool // Outbound (UH07): Leer-Puffer-Sorter: Weiche zu Puffer 3: Weichen-Datenliste fehlerhaft + Undef_Weiche : Bool // Outbound (UH07): Leer-Puffer-Sorter: Weiche zu Puffer 3: undefinierte Weiche + BLKMov : Bool // Outbound (UH07): Leer-Puffer-Sorter: Weiche zu Puffer 3: Fehler bei Block kopieren + Haupstrang_DL : Bool // Outbound (UH07): Leer-Puffer-Sorter: Weiche zu Puffer 3: Haupstrang-Datenliste fehlerhaft + Haupstrang_DL_voll : Bool // Outbound (UH07): Leer-Puffer-Sorter: Weiche zu Puffer 3: Haupstrang-Datenliste ist voll + Keine_HSDaten : Bool // Outbound (UH07): Leer-Puffer-Sorter: Weiche zu Puffer 3: Keine Hauptstrang-Daten mehr vorhanden + Rein_FIFO : Bool // Outbound (UH07): Leer-Puffer-Sorter: Weiche zu Puffer 3: Rein-FIFO fehlerhaft + Keine_FIFODaten : Bool // Outbound (UH07): Leer-Puffer-Sorter: Weiche zu Puffer 3: Keine Rein-FIFO-Daten mehr vorhanden + Stau_AusfahrBereich : Bool // Outbound (UH07): Leer-Puffer-Sorter: Weiche zu Puffer 3: Stau im Ausfahrbereich (-> Antrieb gestoppt) + BM_verklemmt_Gerade : Bool // Outbound (UH07): Leer-Puffer-Sorter: Weiche zu Puffer 3: Trolley bei Gerade-Fahrt in Weiche verklemmt (-> Antrieb gestoppt) + BM_verklemmt_Ausfahrt : Bool // Outbound (UH07): Leer-Puffer-Sorter: Weiche zu Puffer 3: Trolley bei Lager-Fahrt in Weiche verklemmt (-> Antrieb gestoppt) + BM_undef_Gerade : Bool // Outbound (UH07): Leer-Puffer-Sorter: Weiche zu Puffer 3: undefinierter Trolley bei Weiterfahrt erkannt + Frei14 : Bool // Outbound (UH07): Leer-Puffer-Sorter: Weiche zu Puffer 3: Frei 14 + Send_FIFO_fehlerhaft : Bool // Outbound (UH07): Leer-Puffer-Sorter: Weiche zu Puffer 3: Send-FIFO zum PC ist fehlerhaft + Send_FIFO_voll : Bool // Outbound (UH07): Leer-Puffer-Sorter: Weiche zu Puffer 3: Send-FIFO zu PC ist voll + Reset_aktiv : Bool // Outbound (UH07): Leer-Puffer-Sorter: Weiche zu Puffer 3: Reset ist aktiv + Weiche_MB3315 : Struct // Outbound (UH07): Leer-Puffer-Sorter: Weiche zu Puffer 4 MB3315 + Weichen_DL : Bool // Outbound (UH07): Leer-Puffer-Sorter: Weiche zu Puffer 4: Weichen-Datenliste fehlerhaft + Undef_Weiche : Bool // Outbound (UH07): Leer-Puffer-Sorter: Weiche zu Puffer 4: undefinierte Weiche + BLKMov : Bool // Outbound (UH07): Leer-Puffer-Sorter: Weiche zu Puffer 4: Fehler bei Block kopieren + Haupstrang_DL : Bool // Outbound (UH07): Leer-Puffer-Sorter: Weiche zu Puffer 4: Haupstrang-Datenliste fehlerhaft + Haupstrang_DL_voll : Bool // Outbound (UH07): Leer-Puffer-Sorter: Weiche zu Puffer 4: Haupstrang-Datenliste ist voll + Keine_HSDaten : Bool // Outbound (UH07): Leer-Puffer-Sorter: Weiche zu Puffer 4: Keine Hauptstrang-Daten mehr vorhanden + Rein_FIFO : Bool // Outbound (UH07): Leer-Puffer-Sorter: Weiche zu Puffer 4: Rein-FIFO fehlerhaft + Keine_FIFODaten : Bool // Outbound (UH07): Leer-Puffer-Sorter: Weiche zu Puffer 4: Keine Rein-FIFO-Daten mehr vorhanden + Stau_AusfahrBereich : Bool // Outbound (UH07): Leer-Puffer-Sorter: Weiche zu Puffer 4: Stau im Ausfahrbereich (-> Antrieb gestoppt) + BM_verklemmt_Gerade : Bool // Outbound (UH07): Leer-Puffer-Sorter: Weiche zu Puffer 4: Trolley bei Gerade-Fahrt in Weiche verklemmt (-> Antrieb gestoppt) + BM_verklemmt_Ausfahrt : Bool // Outbound (UH07): Leer-Puffer-Sorter: Weiche zu Puffer 4: Trolley bei Lager-Fahrt in Weiche verklemmt (-> Antrieb gestoppt) + BM_undef_Gerade : Bool // Outbound (UH07): Leer-Puffer-Sorter: Weiche zu Puffer 4: undefinierter Trolley bei Weiterfahrt erkannt + Frei14 : Bool // Outbound (UH07): Leer-Puffer-Sorter: Weiche zu Puffer 4: Frei 14 + Send_FIFO_fehlerhaft : Bool // Outbound (UH07): Leer-Puffer-Sorter: Weiche zu Puffer 4: Send-FIFO zum PC ist fehlerhaft + Send_FIFO_voll : Bool // Outbound (UH07): Leer-Puffer-Sorter: Weiche zu Puffer 4: Send-FIFO zu PC ist voll + Reset_aktiv : Bool // Outbound (UH07): Leer-Puffer-Sorter: Weiche zu Puffer 4: Reset ist aktiv + Weiche_MB3314 : Struct // Outbound (UH07): Leer-Puffer-Sorter: Weiche zu Puffer 5 MB3314 + Weichen_DL : Bool // Outbound (UH07): Leer-Puffer-Sorter: Weiche zu Puffer 5: Weichen-Datenliste fehlerhaft + Undef_Weiche : Bool // Outbound (UH07): Leer-Puffer-Sorter: Weiche zu Puffer 5: undefinierte Weiche + BLKMov : Bool // Outbound (UH07): Leer-Puffer-Sorter: Weiche zu Puffer 5: Fehler bei Block kopieren + Haupstrang_DL : Bool // Outbound (UH07): Leer-Puffer-Sorter: Weiche zu Puffer 5: Haupstrang-Datenliste fehlerhaft + Haupstrang_DL_voll : Bool // Outbound (UH07): Leer-Puffer-Sorter: Weiche zu Puffer 5: Haupstrang-Datenliste ist voll + Keine_HSDaten : Bool // Outbound (UH07): Leer-Puffer-Sorter: Weiche zu Puffer 5: Keine Hauptstrang-Daten mehr vorhanden + Rein_FIFO : Bool // Outbound (UH07): Leer-Puffer-Sorter: Weiche zu Puffer 5: Rein-FIFO fehlerhaft + Keine_FIFODaten : Bool // Outbound (UH07): Leer-Puffer-Sorter: Weiche zu Puffer 5: Keine Rein-FIFO-Daten mehr vorhanden + Stau_AusfahrBereich : Bool // Outbound (UH07): Leer-Puffer-Sorter: Weiche zu Puffer 5: Stau im Ausfahrbereich (-> Antrieb gestoppt) + BM_verklemmt_Gerade : Bool // Outbound (UH07): Leer-Puffer-Sorter: Weiche zu Puffer 5: Trolley bei Gerade-Fahrt in Weiche verklemmt (-> Antrieb gestoppt) + BM_verklemmt_Ausfahrt : Bool // Outbound (UH07): Leer-Puffer-Sorter: Weiche zu Puffer 5: Trolley bei Lager-Fahrt in Weiche verklemmt (-> Antrieb gestoppt) + BM_undef_Gerade : Bool // Outbound (UH07): Leer-Puffer-Sorter: Weiche zu Puffer 5: undefinierter Trolley bei Weiterfahrt erkannt + Frei14 : Bool // Outbound (UH07): Leer-Puffer-Sorter: Weiche zu Puffer 5: Frei 14 + Send_FIFO_fehlerhaft : Bool // Outbound (UH07): Leer-Puffer-Sorter: Weiche zu Puffer 5: Send-FIFO zum PC ist fehlerhaft + Send_FIFO_voll : Bool // Outbound (UH07): Leer-Puffer-Sorter: Weiche zu Puffer 5: Send-FIFO zu PC ist voll + Reset_aktiv : Bool // Outbound (UH07): Leer-Puffer-Sorter: Weiche zu Puffer 5: Reset ist aktiv + Weiche_MB3313 : Struct // Outbound (UH07): Leer-Puffer-Sorter: Weiche zu Puffer 6 MB3313 + Weichen_DL : Bool // Outbound (UH07): Leer-Puffer-Sorter: Weiche zu Puffer 6: Weichen-Datenliste fehlerhaft + Undef_Weiche : Bool // Outbound (UH07): Leer-Puffer-Sorter: Weiche zu Puffer 6: undefinierte Weiche + BLKMov : Bool // Outbound (UH07): Leer-Puffer-Sorter: Weiche zu Puffer 6: Fehler bei Block kopieren + Haupstrang_DL : Bool // Outbound (UH07): Leer-Puffer-Sorter: Weiche zu Puffer 6: Haupstrang-Datenliste fehlerhaft + Haupstrang_DL_voll : Bool // Outbound (UH07): Leer-Puffer-Sorter: Weiche zu Puffer 6: Haupstrang-Datenliste ist voll + Keine_HSDaten : Bool // Outbound (UH07): Leer-Puffer-Sorter: Weiche zu Puffer 6: Keine Hauptstrang-Daten mehr vorhanden + Rein_FIFO : Bool // Outbound (UH07): Leer-Puffer-Sorter: Weiche zu Puffer 6: Rein-FIFO fehlerhaft + Keine_FIFODaten : Bool // Outbound (UH07): Leer-Puffer-Sorter: Weiche zu Puffer 6: Keine Rein-FIFO-Daten mehr vorhanden + Stau_AusfahrBereich : Bool // Outbound (UH07): Leer-Puffer-Sorter: Weiche zu Puffer 6: Stau im Ausfahrbereich (-> Antrieb gestoppt) + BM_verklemmt_Gerade : Bool // Outbound (UH07): Leer-Puffer-Sorter: Weiche zu Puffer 6: Trolley bei Gerade-Fahrt in Weiche verklemmt (-> Antrieb gestoppt) + BM_verklemmt_Ausfahrt : Bool // Outbound (UH07): Leer-Puffer-Sorter: Weiche zu Puffer 6: Trolley bei Lager-Fahrt in Weiche verklemmt (-> Antrieb gestoppt) + BM_undef_Gerade : Bool // Outbound (UH07): Leer-Puffer-Sorter: Weiche zu Puffer 6: undefinierter Trolley bei Weiterfahrt erkannt + Frei14 : Bool // Outbound (UH07): Leer-Puffer-Sorter: Weiche zu Puffer 6: Frei 14 + Send_FIFO_fehlerhaft : Bool // Outbound (UH07): Leer-Puffer-Sorter: Weiche zu Puffer 6: Send-FIFO zum PC ist fehlerhaft + Send_FIFO_voll : Bool // Outbound (UH07): Leer-Puffer-Sorter: Weiche zu Puffer 6: Send-FIFO zu PC ist voll + Reset_aktiv : Bool // Outbound (UH07): Leer-Puffer-Sorter: Weiche zu Puffer 6: Reset ist aktiv + Weiche_MB3312 : Struct // Outbound (UH07): Leer-Puffer-Sorter: Weiche zu Puffer 7 MB3312 + Weichen_DL : Bool // Outbound (UH07): Leer-Puffer-Sorter: Weiche zu Puffer 7: Weichen-Datenliste fehlerhaft + Undef_Weiche : Bool // Outbound (UH07): Leer-Puffer-Sorter: Weiche zu Puffer 7: undefinierte Weiche + BLKMov : Bool // Outbound (UH07): Leer-Puffer-Sorter: Weiche zu Puffer 7: Fehler bei Block kopieren + Haupstrang_DL : Bool // Outbound (UH07): Leer-Puffer-Sorter: Weiche zu Puffer 7: Haupstrang-Datenliste fehlerhaft + Haupstrang_DL_voll : Bool // Outbound (UH07): Leer-Puffer-Sorter: Weiche zu Puffer 7: Haupstrang-Datenliste ist voll + Keine_HSDaten : Bool // Outbound (UH07): Leer-Puffer-Sorter: Weiche zu Puffer 7: Keine Hauptstrang-Daten mehr vorhanden + Rein_FIFO : Bool // Outbound (UH07): Leer-Puffer-Sorter: Weiche zu Puffer 7: Rein-FIFO fehlerhaft + Keine_FIFODaten : Bool // Outbound (UH07): Leer-Puffer-Sorter: Weiche zu Puffer 7: Keine Rein-FIFO-Daten mehr vorhanden + Stau_AusfahrBereich : Bool // Outbound (UH07): Leer-Puffer-Sorter: Weiche zu Puffer 7: Stau im Ausfahrbereich (-> Antrieb gestoppt) + BM_verklemmt_Gerade : Bool // Outbound (UH07): Leer-Puffer-Sorter: Weiche zu Puffer 7: Trolley bei Gerade-Fahrt in Weiche verklemmt (-> Antrieb gestoppt) + BM_verklemmt_Ausfahrt : Bool // Outbound (UH07): Leer-Puffer-Sorter: Weiche zu Puffer 7: Trolley bei Lager-Fahrt in Weiche verklemmt (-> Antrieb gestoppt) + BM_undef_Gerade : Bool // Outbound (UH07): Leer-Puffer-Sorter: Weiche zu Puffer 7: undefinierter Trolley bei Weiterfahrt erkannt + Frei14 : Bool // Outbound (UH07): Leer-Puffer-Sorter: Weiche zu Puffer 7: Frei 14 + Send_FIFO_fehlerhaft : Bool // Outbound (UH07): Leer-Puffer-Sorter: Weiche zu Puffer 7: Send-FIFO zum PC ist fehlerhaft + Send_FIFO_voll : Bool // Outbound (UH07): Leer-Puffer-Sorter: Weiche zu Puffer 7: Send-FIFO zu PC ist voll + Reset_aktiv : Bool // Outbound (UH07): Leer-Puffer-Sorter: Weiche zu Puffer 7: Reset ist aktiv + Weiche_MB3311 : Struct // Outbound (UH07): Leer-Puffer-Sorter: Weiche zu Puffer 8 MB3311 + Weichen_DL : Bool // Outbound (UH07): Leer-Puffer-Sorter: Weiche zu Puffer 8: Weichen-Datenliste fehlerhaft + Undef_Weiche : Bool // Outbound (UH07): Leer-Puffer-Sorter: Weiche zu Puffer 8: undefinierte Weiche + BLKMov : Bool // Outbound (UH07): Leer-Puffer-Sorter: Weiche zu Puffer 8: Fehler bei Block kopieren + Haupstrang_DL : Bool // Outbound (UH07): Leer-Puffer-Sorter: Weiche zu Puffer 8: Haupstrang-Datenliste fehlerhaft + Haupstrang_DL_voll : Bool // Outbound (UH07): Leer-Puffer-Sorter: Weiche zu Puffer 8: Haupstrang-Datenliste ist voll + Keine_HSDaten : Bool // Outbound (UH07): Leer-Puffer-Sorter: Weiche zu Puffer 8: Keine Hauptstrang-Daten mehr vorhanden + Rein_FIFO : Bool // Outbound (UH07): Leer-Puffer-Sorter: Weiche zu Puffer 8: Rein-FIFO fehlerhaft + Keine_FIFODaten : Bool // Outbound (UH07): Leer-Puffer-Sorter: Weiche zu Puffer 8: Keine Rein-FIFO-Daten mehr vorhanden + Stau_AusfahrBereich : Bool // Outbound (UH07): Leer-Puffer-Sorter: Weiche zu Puffer 8: Stau im Ausfahrbereich (-> Antrieb gestoppt) + BM_verklemmt_Gerade : Bool // Outbound (UH07): Leer-Puffer-Sorter: Weiche zu Puffer 8: Trolley bei Gerade-Fahrt in Weiche verklemmt (-> Antrieb gestoppt) + BM_verklemmt_Ausfahrt : Bool // Outbound (UH07): Leer-Puffer-Sorter: Weiche zu Puffer 8: Trolley bei Lager-Fahrt in Weiche verklemmt (-> Antrieb gestoppt) + BM_undef_Gerade : Bool // Outbound (UH07): Leer-Puffer-Sorter: Weiche zu Puffer 8: undefinierter Trolley bei Weiterfahrt erkannt + Frei14 : Bool // Outbound (UH07): Leer-Puffer-Sorter: Weiche zu Puffer 8: Frei 14 + Send_FIFO_fehlerhaft : Bool // Outbound (UH07): Leer-Puffer-Sorter: Weiche zu Puffer 8: Send-FIFO zum PC ist fehlerhaft + Send_FIFO_voll : Bool // Outbound (UH07): Leer-Puffer-Sorter: Weiche zu Puffer 8: Send-FIFO zu PC ist voll + Reset_aktiv : Bool // Outbound (UH07): Leer-Puffer-Sorter: Weiche zu Puffer 8: Reset ist aktiv + Weiche_MB3310 : Struct // Outbound (UH07): Leer-Puffer-Sorter: Weiche zu Puffer 9 MB3310 + Weichen_DL : Bool // Outbound (UH07): Leer-Puffer-Sorter: Weiche zu Puffer 9: Weichen-Datenliste fehlerhaft + Undef_Weiche : Bool // Outbound (UH07): Leer-Puffer-Sorter: Weiche zu Puffer 9: undefinierte Weiche + BLKMov : Bool // Outbound (UH07): Leer-Puffer-Sorter: Weiche zu Puffer 9: Fehler bei Block kopieren + Haupstrang_DL : Bool // Outbound (UH07): Leer-Puffer-Sorter: Weiche zu Puffer 9: Haupstrang-Datenliste fehlerhaft + Haupstrang_DL_voll : Bool // Outbound (UH07): Leer-Puffer-Sorter: Weiche zu Puffer 9: Haupstrang-Datenliste ist voll + Keine_HSDaten : Bool // Outbound (UH07): Leer-Puffer-Sorter: Weiche zu Puffer 9: Keine Hauptstrang-Daten mehr vorhanden + Rein_FIFO : Bool // Outbound (UH07): Leer-Puffer-Sorter: Weiche zu Puffer 9: Rein-FIFO fehlerhaft + Keine_FIFODaten : Bool // Outbound (UH07): Leer-Puffer-Sorter: Weiche zu Puffer 9: Keine Rein-FIFO-Daten mehr vorhanden + Stau_AusfahrBereich : Bool // Outbound (UH07): Leer-Puffer-Sorter: Weiche zu Puffer 9: Stau im Ausfahrbereich (-> Antrieb gestoppt) + BM_verklemmt_Gerade : Bool // Outbound (UH07): Leer-Puffer-Sorter: Weiche zu Puffer 9: Trolley bei Gerade-Fahrt in Weiche verklemmt (-> Antrieb gestoppt) + BM_verklemmt_Ausfahrt : Bool // Outbound (UH07): Leer-Puffer-Sorter: Weiche zu Puffer 9: Trolley bei Lager-Fahrt in Weiche verklemmt (-> Antrieb gestoppt) + BM_undef_Gerade : Bool // Outbound (UH07): Leer-Puffer-Sorter: Weiche zu Puffer 9: undefinierter Trolley bei Weiterfahrt erkannt + Frei14 : Bool // Outbound (UH07): Leer-Puffer-Sorter: Weiche zu Puffer 9: Frei 14 + Send_FIFO_fehlerhaft : Bool // Outbound (UH07): Leer-Puffer-Sorter: Weiche zu Puffer 9: Send-FIFO zum PC ist fehlerhaft + Send_FIFO_voll : Bool // Outbound (UH07): Leer-Puffer-Sorter: Weiche zu Puffer 9: Send-FIFO zu PC ist voll + Reset_aktiv : Bool // Outbound (UH07): Leer-Puffer-Sorter: Weiche zu Puffer 9: Reset ist aktiv + Weiche_LeerPuffer10 : Struct // Outbound (UH07): Leer-Puffer-Sorter: Weiche zu Puffer 10 (Pseudo) + Weichen_DL : Bool // Outbound (UH07): Leer-Puffer-Sorter: Weiche zu Puffer 10: Weichen-Datenliste fehlerhaft + Undef_Weiche : Bool // Outbound (UH07): Leer-Puffer-Sorter: Weiche zu Puffer 10: undefinierte Weiche + BLKMov : Bool // Outbound (UH07): Leer-Puffer-Sorter: Weiche zu Puffer 10: Fehler bei Block kopieren + Haupstrang_DL : Bool // Outbound (UH07): Leer-Puffer-Sorter: Weiche zu Puffer 10: Haupstrang-Datenliste fehlerhaft + Haupstrang_DL_voll : Bool // Outbound (UH07): Leer-Puffer-Sorter: Weiche zu Puffer 10: Haupstrang-Datenliste ist voll + Keine_HSDaten : Bool // Outbound (UH07): Leer-Puffer-Sorter: Weiche zu Puffer 10: Keine Hauptstrang-Daten mehr vorhanden + Rein_FIFO : Bool // Outbound (UH07): Leer-Puffer-Sorter: Weiche zu Puffer 10: Rein-FIFO fehlerhaft + Keine_FIFODaten : Bool // Outbound (UH07): Leer-Puffer-Sorter: Weiche zu Puffer 10: Keine Rein-FIFO-Daten mehr vorhanden + Stau_AusfahrBereich : Bool // Outbound (UH07): Leer-Puffer-Sorter: Weiche zu Puffer 10: Stau im Ausfahrbereich (-> Antrieb gestoppt) + BM_verklemmt_Gerade : Bool // Outbound (UH07): Leer-Puffer-Sorter: Weiche zu Puffer 10: Trolley bei Gerade-Fahrt in Weiche verklemmt (-> Antrieb gestoppt) + BM_verklemmt_Ausfahrt : Bool // Outbound (UH07): Leer-Puffer-Sorter: Weiche zu Puffer 10: Trolley bei Lager-Fahrt in Weiche verklemmt (-> Antrieb gestoppt) + BM_undef_Gerade : Bool // Outbound (UH07): Leer-Puffer-Sorter: Weiche zu Puffer 10: undefinierter Trolley bei Weiterfahrt erkannt + Frei14 : Bool // Outbound (UH07): Leer-Puffer-Sorter: Weiche zu Puffer 10: Frei 14 + Send_FIFO_fehlerhaft : Bool // Outbound (UH07): Leer-Puffer-Sorter: Weiche zu Puffer 10: Send-FIFO zum PC ist fehlerhaft + Send_FIFO_voll : Bool // Outbound (UH07): Leer-Puffer-Sorter: Weiche zu Puffer 10: Send-FIFO zu PC ist voll + Reset_aktiv : Bool // Outbound (UH07): Leer-Puffer-Sorter: Weiche zu Puffer 10: Reset ist aktiv + Impulsgeber_3374 : Struct // Outbound (UH07): Leer-Puffer-Sorter: Impulsgeber Lager-Einfahrt MA0064/BG3374 + Kein_Signal : Bool // Outbound (UH07): Leer-Puffer-Sorter: Impulsgeber Lager-Einfahrt MA0064: Kein Signal + Signal_zu_lang : Bool // Outbound (UH07): Leer-Puffer-Sorter: Impulsgeber Lager-Einfahrt MA0064: Signal zu lang + LeerPuffer01 : Struct // Outbound (UH07): Leer-Puffer 1 MB3341 + Lager_DL : Bool // Outbound (UH07): Leer-Puffer 1: Lager-Datenliste fehlerhaft + Undef_Lager : Bool // Outbound (UH07): Leer-Puffer 1: undefinierter Lager + Err_Trolley_nicht_in_Schleuse : Bool // Outbound (UH07): Leer-Puffer 1: Trolley fährt nicht in Schleuse + Err_Uebzeit : Bool // Outbound (UH07): Leer-Puffer 1: Überwachungzeit ist abgelaufen + Err_Schritt : Bool // Outbound (UH07): Leer-Puffer 1: Schritt-Nummer ist nicht definiert + Err_Stau_Einfahrt : Bool // Outbound (UH07): Leer-Puffer 1: Stau am Lager-Eingang + Err_BLKMov : Bool // Outbound (UH07): Leer-Puffer 1: Error bei Block kopieren + Err_Trolley_raus : Bool // Outbound (UH07): Leer-Puffer 1: Trolley fährt nicht aus Schleuse + Err_Lager_nicht_leer : Bool // Outbound (UH07): Leer-Puffer 1: Trolley in Schleuse, obwohl Lager leer! Initialisieren! + Err_TrolleyID_doppelt : Bool // Outbound (UH07): Leer-Puffer 1: Trolley_ID doppelt vorhanden! (Einfahrt) + Err_TrolleyID_unbekannt : Bool // Outbound (UH07): Leer-Puffer 1: Trolley_ID unbekannt! (Einfahrt) + Err_TrolleyID_Schleuse_unbekannt : Bool // Outbound (UH07): Leer-Puffer 1: Trolley_ID unbekannt! (Schleuse) + Err_TrolleyID_nicht_im_Lager : Bool // Outbound (UH07): Leer-Puffer 1: TrolleyID zum Ausfahren nicht im Lager vorhanden + Err_Raus_Sensor : Bool // Outbound (UH07): Leer-Puffer 1: Raus-Sensor hat Dauersignal oder wird nicht erreicht + Err_Lagerdaten_korrupt : Bool // Outbound (UH07): Leer-Puffer 1: Lagerdaten-Verwaltung unklar -> Reset nötig! + Reset_aktiv : Bool // Outbound (UH07): Leer-Puffer 1: Reset ist aktiv + LeerPuffer02 : Struct // Outbound (UH07): Leer-Puffer 2 MB3340 + Lager_DL : Bool // Outbound (UH07): Leer-Puffer 2: Lager-Datenliste fehlerhaft + Undef_Lager : Bool // Outbound (UH07): Leer-Puffer 2: undefinierter Lager + Err_Trolley_nicht_in_Schleuse : Bool // Outbound (UH07): Leer-Puffer 2: Trolley fährt nicht in Schleuse + Err_Uebzeit : Bool // Outbound (UH07): Leer-Puffer 2: Überwachungzeit ist abgelaufen + Err_Schritt : Bool // Outbound (UH07): Leer-Puffer 2: Schritt-Nummer ist nicht definiert + Err_Stau_Einfahrt : Bool // Outbound (UH07): Leer-Puffer 2: Stau am Lager-Eingang + Err_BLKMov : Bool // Outbound (UH07): Leer-Puffer 2: Error bei Block kopieren + Err_Trolley_raus : Bool // Outbound (UH07): Leer-Puffer 2: Trolley fährt nicht aus Schleuse + Err_Lager_nicht_leer : Bool // Outbound (UH07): Leer-Puffer 2: Trolley in Schleuse, obwohl Lager leer! Initialisieren! + Err_TrolleyID_doppelt : Bool // Outbound (UH07): Leer-Puffer 2: Trolley_ID doppelt vorhanden! (Einfahrt) + Err_TrolleyID_unbekannt : Bool // Outbound (UH07): Leer-Puffer 2: Trolley_ID unbekannt! (Einfahrt) + Err_TrolleyID_Schleuse_unbekannt : Bool // Outbound (UH07): Leer-Puffer 2: Trolley_ID unbekannt! (Schleuse) + Err_TrolleyID_nicht_im_Lager : Bool // Outbound (UH07): Leer-Puffer 2: TrolleyID zum Ausfahren nicht im Lager vorhanden + Err_Raus_Sensor : Bool // Outbound (UH07): Leer-Puffer 2: Raus-Sensor hat Dauersignal oder wird nicht erreicht + Err_Lagerdaten_korrupt : Bool // Outbound (UH07): Leer-Puffer 2: Lagerdaten-Verwaltung unklar -> Reset nötig! + Reset_aktiv : Bool // Outbound (UH07): Leer-Puffer 2: Reset ist aktiv + LeerPuffer03 : Struct // Outbound (UH07): Leer-Puffer 3 MB3337 + Lager_DL : Bool // Outbound (UH07): Leer-Puffer 3: Lager-Datenliste fehlerhaft + Undef_Lager : Bool // Outbound (UH07): Leer-Puffer 3: undefinierter Lager + Err_Trolley_nicht_in_Schleuse : Bool // Outbound (UH07): Leer-Puffer 3: Trolley fährt nicht in Schleuse + Err_Uebzeit : Bool // Outbound (UH07): Leer-Puffer 3: Überwachungzeit ist abgelaufen + Err_Schritt : Bool // Outbound (UH07): Leer-Puffer 3: Schritt-Nummer ist nicht definiert + Err_Stau_Einfahrt : Bool // Outbound (UH07): Leer-Puffer 3: Stau am Lager-Eingang + Err_BLKMov : Bool // Outbound (UH07): Leer-Puffer 3: Error bei Block kopieren + Err_Trolley_raus : Bool // Outbound (UH07): Leer-Puffer 3: Trolley fährt nicht aus Schleuse + Err_Lager_nicht_leer : Bool // Outbound (UH07): Leer-Puffer 3: Trolley in Schleuse, obwohl Lager leer! Initialisieren! + Err_TrolleyID_doppelt : Bool // Outbound (UH07): Leer-Puffer 3: Trolley_ID doppelt vorhanden! (Einfahrt) + Err_TrolleyID_unbekannt : Bool // Outbound (UH07): Leer-Puffer 3: Trolley_ID unbekannt! (Einfahrt) + Err_TrolleyID_Schleuse_unbekannt : Bool // Outbound (UH07): Leer-Puffer 3: Trolley_ID unbekannt! (Schleuse) + Err_TrolleyID_nicht_im_Lager : Bool // Outbound (UH07): Leer-Puffer 3: TrolleyID zum Ausfahren nicht im Lager vorhanden + Err_Raus_Sensor : Bool // Outbound (UH07): Leer-Puffer 3: Raus-Sensor hat Dauersignal oder wird nicht erreicht + Err_Lagerdaten_korrupt : Bool // Outbound (UH07): Leer-Puffer 3: Lagerdaten-Verwaltung unklar -> Reset nötig! + Reset_aktiv : Bool // Outbound (UH07): Leer-Puffer 3: Reset ist aktiv + LeerPuffer04 : Struct // Outbound (UH07): Leer-Puffer 4 MB3336 + Lager_DL : Bool // Outbound (UH07): Leer-Puffer 4: Lager-Datenliste fehlerhaft + Undef_Lager : Bool // Outbound (UH07): Leer-Puffer 4: undefinierter Lager + Err_Trolley_nicht_in_Schleuse : Bool // Outbound (UH07): Leer-Puffer 4: Trolley fährt nicht in Schleuse + Err_Uebzeit : Bool // Outbound (UH07): Leer-Puffer 4: Überwachungzeit ist abgelaufen + Err_Schritt : Bool // Outbound (UH07): Leer-Puffer 4: Schritt-Nummer ist nicht definiert + Err_Stau_Einfahrt : Bool // Outbound (UH07): Leer-Puffer 4: Stau am Lager-Eingang + Err_BLKMov : Bool // Outbound (UH07): Leer-Puffer 4: Error bei Block kopieren + Err_Trolley_raus : Bool // Outbound (UH07): Leer-Puffer 4: Trolley fährt nicht aus Schleuse + Err_Lager_nicht_leer : Bool // Outbound (UH07): Leer-Puffer 4: Trolley in Schleuse, obwohl Lager leer! Initialisieren! + Err_TrolleyID_doppelt : Bool // Outbound (UH07): Leer-Puffer 4: Trolley_ID doppelt vorhanden! (Einfahrt) + Err_TrolleyID_unbekannt : Bool // Outbound (UH07): Leer-Puffer 4: Trolley_ID unbekannt! (Einfahrt) + Err_TrolleyID_Schleuse_unbekannt : Bool // Outbound (UH07): Leer-Puffer 4: Trolley_ID unbekannt! (Schleuse) + Err_TrolleyID_nicht_im_Lager : Bool // Outbound (UH07): Leer-Puffer 4: TrolleyID zum Ausfahren nicht im Lager vorhanden + Err_Raus_Sensor : Bool // Outbound (UH07): Leer-Puffer 4: Raus-Sensor hat Dauersignal oder wird nicht erreicht + Err_Lagerdaten_korrupt : Bool // Outbound (UH07): Leer-Puffer 4: Lagerdaten-Verwaltung unklar -> Reset nötig! + Reset_aktiv : Bool // Outbound (UH07): Leer-Puffer 4: Reset ist aktiv + LeerPuffer05 : Struct // Outbound (UH07): Leer-Puffer 5 MB3335 + Lager_DL : Bool // Outbound (UH07): Leer-Puffer 5: Lager-Datenliste fehlerhaft + Undef_Lager : Bool // Outbound (UH07): Leer-Puffer 5: undefinierter Lager + Err_Trolley_nicht_in_Schleuse : Bool // Outbound (UH07): Leer-Puffer 5: Trolley fährt nicht in Schleuse + Err_Uebzeit : Bool // Outbound (UH07): Leer-Puffer 5: Überwachungzeit ist abgelaufen + Err_Schritt : Bool // Outbound (UH07): Leer-Puffer 5: Schritt-Nummer ist nicht definiert + Err_Stau_Einfahrt : Bool // Outbound (UH07): Leer-Puffer 5: Stau am Lager-Eingang + Err_BLKMov : Bool // Outbound (UH07): Leer-Puffer 5: Error bei Block kopieren + Err_Trolley_raus : Bool // Outbound (UH07): Leer-Puffer 5: Trolley fährt nicht aus Schleuse + Err_Lager_nicht_leer : Bool // Outbound (UH07): Leer-Puffer 5: Trolley in Schleuse, obwohl Lager leer! Initialisieren! + Err_TrolleyID_doppelt : Bool // Outbound (UH07): Leer-Puffer 5: Trolley_ID doppelt vorhanden! (Einfahrt) + Err_TrolleyID_unbekannt : Bool // Outbound (UH07): Leer-Puffer 5: Trolley_ID unbekannt! (Einfahrt) + Err_TrolleyID_Schleuse_unbekannt : Bool // Outbound (UH07): Leer-Puffer 5: Trolley_ID unbekannt! (Schleuse) + Err_TrolleyID_nicht_im_Lager : Bool // Outbound (UH07): Leer-Puffer 5: TrolleyID zum Ausfahren nicht im Lager vorhanden + Err_Raus_Sensor : Bool // Outbound (UH07): Leer-Puffer 5: Raus-Sensor hat Dauersignal oder wird nicht erreicht + Err_Lagerdaten_korrupt : Bool // Outbound (UH07): Leer-Puffer 5: Lagerdaten-Verwaltung unklar -> Reset nötig! + Reset_aktiv : Bool // Outbound (UH07): Leer-Puffer 5: Reset ist aktiv + LeerPuffer06 : Struct // Outbound (UH07): Leer-Puffer 6 MB3334 + Lager_DL : Bool // Outbound (UH07): Leer-Puffer 6: Lager-Datenliste fehlerhaft + Undef_Lager : Bool // Outbound (UH07): Leer-Puffer 6: undefinierter Lager + Err_Trolley_nicht_in_Schleuse : Bool // Outbound (UH07): Leer-Puffer 6: Trolley fährt nicht in Schleuse + Err_Uebzeit : Bool // Outbound (UH07): Leer-Puffer 6: Überwachungzeit ist abgelaufen + Err_Schritt : Bool // Outbound (UH07): Leer-Puffer 6: Schritt-Nummer ist nicht definiert + Err_Stau_Einfahrt : Bool // Outbound (UH07): Leer-Puffer 6: Stau am Lager-Eingang + Err_BLKMov : Bool // Outbound (UH07): Leer-Puffer 6: Error bei Block kopieren + Err_Trolley_raus : Bool // Outbound (UH07): Leer-Puffer 6: Trolley fährt nicht aus Schleuse + Err_Lager_nicht_leer : Bool // Outbound (UH07): Leer-Puffer 6: Trolley in Schleuse, obwohl Lager leer! Initialisieren! + Err_TrolleyID_doppelt : Bool // Outbound (UH07): Leer-Puffer 6: Trolley_ID doppelt vorhanden! (Einfahrt) + Err_TrolleyID_unbekannt : Bool // Outbound (UH07): Leer-Puffer 6: Trolley_ID unbekannt! (Einfahrt) + Err_TrolleyID_Schleuse_unbekannt : Bool // Outbound (UH07): Leer-Puffer 6: Trolley_ID unbekannt! (Schleuse) + Err_TrolleyID_nicht_im_Lager : Bool // Outbound (UH07): Leer-Puffer 6: TrolleyID zum Ausfahren nicht im Lager vorhanden + Err_Raus_Sensor : Bool // Outbound (UH07): Leer-Puffer 6: Raus-Sensor hat Dauersignal oder wird nicht erreicht + Err_Lagerdaten_korrupt : Bool // Outbound (UH07): Leer-Puffer 6: Lagerdaten-Verwaltung unklar -> Reset nötig! + Reset_aktiv : Bool // Outbound (UH07): Leer-Puffer 6: Reset ist aktiv + LeerPuffer07 : Struct // Outbound (UH07): Leer-Puffer 7 MB3333 + Lager_DL : Bool // Outbound (UH07): Leer-Puffer 7: Lager-Datenliste fehlerhaft + Undef_Lager : Bool // Outbound (UH07): Leer-Puffer 7: undefinierter Lager + Err_Trolley_nicht_in_Schleuse : Bool // Outbound (UH07): Leer-Puffer 7: Trolley fährt nicht in Schleuse + Err_Uebzeit : Bool // Outbound (UH07): Leer-Puffer 7: Überwachungzeit ist abgelaufen + Err_Schritt : Bool // Outbound (UH07): Leer-Puffer 7: Schritt-Nummer ist nicht definiert + Err_Stau_Einfahrt : Bool // Outbound (UH07): Leer-Puffer 7: Stau am Lager-Eingang + Err_BLKMov : Bool // Outbound (UH07): Leer-Puffer 7: Error bei Block kopieren + Err_Trolley_raus : Bool // Outbound (UH07): Leer-Puffer 7: Trolley fährt nicht aus Schleuse + Err_Lager_nicht_leer : Bool // Outbound (UH07): Leer-Puffer 7: Trolley in Schleuse, obwohl Lager leer! Initialisieren! + Err_TrolleyID_doppelt : Bool // Outbound (UH07): Leer-Puffer 7: Trolley_ID doppelt vorhanden! (Einfahrt) + Err_TrolleyID_unbekannt : Bool // Outbound (UH07): Leer-Puffer 7: Trolley_ID unbekannt! (Einfahrt) + Err_TrolleyID_Schleuse_unbekannt : Bool // Outbound (UH07): Leer-Puffer 7: Trolley_ID unbekannt! (Schleuse) + Err_TrolleyID_nicht_im_Lager : Bool // Outbound (UH07): Leer-Puffer 7: TrolleyID zum Ausfahren nicht im Lager vorhanden + Err_Raus_Sensor : Bool // Outbound (UH07): Leer-Puffer 7: Raus-Sensor hat Dauersignal oder wird nicht erreicht + Err_Lagerdaten_korrupt : Bool // Outbound (UH07): Leer-Puffer 7: Lagerdaten-Verwaltung unklar -> Reset nötig! + Reset_aktiv : Bool // Outbound (UH07): Leer-Puffer 7: Reset ist aktiv + LeerPuffer08 : Struct // Outbound (UH07): Leer-Puffer 8 MB3332 + Lager_DL : Bool // Outbound (UH07): Leer-Puffer 8: Lager-Datenliste fehlerhaft + Undef_Lager : Bool // Outbound (UH07): Leer-Puffer 8: undefinierter Lager + Err_Trolley_nicht_in_Schleuse : Bool // Outbound (UH07): Leer-Puffer 8: Trolley fährt nicht in Schleuse + Err_Uebzeit : Bool // Outbound (UH07): Leer-Puffer 8: Überwachungzeit ist abgelaufen + Err_Schritt : Bool // Outbound (UH07): Leer-Puffer 8: Schritt-Nummer ist nicht definiert + Err_Stau_Einfahrt : Bool // Outbound (UH07): Leer-Puffer 8: Stau am Lager-Eingang + Err_BLKMov : Bool // Outbound (UH07): Leer-Puffer 8: Error bei Block kopieren + Err_Trolley_raus : Bool // Outbound (UH07): Leer-Puffer 8: Trolley fährt nicht aus Schleuse + Err_Lager_nicht_leer : Bool // Outbound (UH07): Leer-Puffer 8: Trolley in Schleuse, obwohl Lager leer! Initialisieren! + Err_TrolleyID_doppelt : Bool // Outbound (UH07): Leer-Puffer 8: Trolley_ID doppelt vorhanden! (Einfahrt) + Err_TrolleyID_unbekannt : Bool // Outbound (UH07): Leer-Puffer 8: Trolley_ID unbekannt! (Einfahrt) + Err_TrolleyID_Schleuse_unbekannt : Bool // Outbound (UH07): Leer-Puffer 8: Trolley_ID unbekannt! (Schleuse) + Err_TrolleyID_nicht_im_Lager : Bool // Outbound (UH07): Leer-Puffer 8: TrolleyID zum Ausfahren nicht im Lager vorhanden + Err_Raus_Sensor : Bool // Outbound (UH07): Leer-Puffer 8: Raus-Sensor hat Dauersignal oder wird nicht erreicht + Err_Lagerdaten_korrupt : Bool // Outbound (UH07): Leer-Puffer 8: Lagerdaten-Verwaltung unklar -> Reset nötig! + Reset_aktiv : Bool // Outbound (UH07): Leer-Puffer 8: Reset ist aktiv + LeerPuffer09 : Struct // Outbound (UH07): Leer-Puffer 9 MB3331 + Lager_DL : Bool // Outbound (UH07): Leer-Puffer 9: Lager-Datenliste fehlerhaft + Undef_Lager : Bool // Outbound (UH07): Leer-Puffer 9: undefinierter Lager + Err_Trolley_nicht_in_Schleuse : Bool // Outbound (UH07): Leer-Puffer 9: Trolley fährt nicht in Schleuse + Err_Uebzeit : Bool // Outbound (UH07): Leer-Puffer 9: Überwachungzeit ist abgelaufen + Err_Schritt : Bool // Outbound (UH07): Leer-Puffer 9: Schritt-Nummer ist nicht definiert + Err_Stau_Einfahrt : Bool // Outbound (UH07): Leer-Puffer 9: Stau am Lager-Eingang + Err_BLKMov : Bool // Outbound (UH07): Leer-Puffer 9: Error bei Block kopieren + Err_Trolley_raus : Bool // Outbound (UH07): Leer-Puffer 9: Trolley fährt nicht aus Schleuse + Err_Lager_nicht_leer : Bool // Outbound (UH07): Leer-Puffer 9: Trolley in Schleuse, obwohl Lager leer! Initialisieren! + Err_TrolleyID_doppelt : Bool // Outbound (UH07): Leer-Puffer 9: Trolley_ID doppelt vorhanden! (Einfahrt) + Err_TrolleyID_unbekannt : Bool // Outbound (UH07): Leer-Puffer 9: Trolley_ID unbekannt! (Einfahrt) + Err_TrolleyID_Schleuse_unbekannt : Bool // Outbound (UH07): Leer-Puffer 9: Trolley_ID unbekannt! (Schleuse) + Err_TrolleyID_nicht_im_Lager : Bool // Outbound (UH07): Leer-Puffer 9: TrolleyID zum Ausfahren nicht im Lager vorhanden + Err_Raus_Sensor : Bool // Outbound (UH07): Leer-Puffer 9: Raus-Sensor hat Dauersignal oder wird nicht erreicht + Err_Lagerdaten_korrupt : Bool // Outbound (UH07): Leer-Puffer 9: Lagerdaten-Verwaltung unklar -> Reset nötig! + Reset_aktiv : Bool // Outbound (UH07): Leer-Puffer 9: Reset ist aktiv + LeerPuffer10 : Struct // Outbound (UH07): Leer-Puffer 10 MB3330 + Lager_DL : Bool // Outbound (UH07): Leer-Puffer 10: Lager-Datenliste fehlerhaft + Undef_Lager : Bool // Outbound (UH07): Leer-Puffer 10: undefinierter Lager + Err_Trolley_nicht_in_Schleuse : Bool // Outbound (UH07): Leer-Puffer 10: Trolley fährt nicht in Schleuse + Err_Uebzeit : Bool // Outbound (UH07): Leer-Puffer 10: Überwachungzeit ist abgelaufen + Err_Schritt : Bool // Outbound (UH07): Leer-Puffer 10: Schritt-Nummer ist nicht definiert + Err_Stau_Einfahrt : Bool // Outbound (UH07): Leer-Puffer 10: Stau am Lager-Eingang + Err_BLKMov : Bool // Outbound (UH07): Leer-Puffer 10: Error bei Block kopieren + Err_Trolley_raus : Bool // Outbound (UH07): Leer-Puffer 10: Trolley fährt nicht aus Schleuse + Err_Lager_nicht_leer : Bool // Outbound (UH07): Leer-Puffer 10: Trolley in Schleuse, obwohl Lager leer! Initialisieren! + Err_TrolleyID_doppelt : Bool // Outbound (UH07): Leer-Puffer 10: Trolley_ID doppelt vorhanden! (Einfahrt) + Err_TrolleyID_unbekannt : Bool // Outbound (UH07): Leer-Puffer 10: Trolley_ID unbekannt! (Einfahrt) + Err_TrolleyID_Schleuse_unbekannt : Bool // Outbound (UH07): Leer-Puffer 10: Trolley_ID unbekannt! (Schleuse) + Err_TrolleyID_nicht_im_Lager : Bool // Outbound (UH07): Leer-Puffer 10: TrolleyID zum Ausfahren nicht im Lager vorhanden + Err_Raus_Sensor : Bool // Outbound (UH07): Leer-Puffer 10: Raus-Sensor hat Dauersignal oder wird nicht erreicht + Err_Lagerdaten_korrupt : Bool // Outbound (UH07): Leer-Puffer 10: Lagerdaten-Verwaltung unklar -> Reset nötig! + Reset_aktiv : Bool // Outbound (UH07): Leer-Puffer 10: Reset ist aktiv + Auslagerbereich_LeerPuffer : Struct + BG3321_Kein_Signal : Bool // Outbound (UH07): Leer-Puffer-Sorter: Impulsgeber Lager-Ausfahrt MA0065: Kein Signal + BG3321_Signal_zu_lang : Bool // Outbound (UH07): Leer-Puffer-Sorter: Impulsgeber Lager-Ausfahrt MA0065: Signal zu lang + TrolleyStau BGXY : Bool // Outbound (UH07): Leer-Puffer-Ausfahrt: Trolley verklemmt Puffer A/B + Frei150 : Array[1..1] of Word + Sorter_MB4503 : Struct // Outbound (UH07): Entlade-Puffer-Sorter MB4503 + Separator_DL : Bool // Outbound (UH07): Entlade-Puffer-Sorter: Separator-Datenliste fehlerhaft + Undef_Separator : Bool // Outbound (UH07): Entlade-Puffer-Sorter: undefinierter Separator + Err_BT_rein : Bool // Outbound (UH07): Entlade-Puffer-Sorter: BM fährt nicht in Separator + Err_Uebzeit : Bool // Outbound (UH07): Entlade-Puffer-Sorter: Überwachungzeit ist abgelaufen + Err_Schritt : Bool // Outbound (UH07): Entlade-Puffer-Sorter: Schritt-Nummer ist nicht definiert + Err_Betriebsart : Bool // Outbound (UH07): Entlade-Puffer-Sorter: Betriebsart ist nicht möglich + Err_PinSignal : Bool // Outbound (UH07): Entlade-Puffer-Sorter: Es kommt kein Pin-Signal + Err_BT_raus : Bool // Outbound (UH07): Entlade-Puffer-Sorter: BM fährt nicht aus + Err_Raus_Sensor : Bool // Outbound (UH07): Entlade-Puffer-Sorter: Raus-/Belade-Sensor wird nicht erreicht (oder dauernd aktiv)! + Travel_FIFO : Bool // Outbound (UH07): Entlade-Puffer-Sorter: Travel-FIFO fehlerhaft + Daten_out : Bool // Outbound (UH07): Entlade-Puffer-Sorter: Letzte Carrier-Daten konnten nicht an FIFO übergeben werden + BC_doppelt : Bool // Outbound (UH07): Entlade-Puffer-Sorter: Wieder gleichen BC vom PC erhalten + Korrektur_Modus_aktiv : Bool // Outbound (UH07): Entlade-Puffer-Sorter: Korrektur-Modus nach Crash aktiviert + Send_FIFO_fehlerhaft : Bool // Outbound (UH07): Entlade-Puffer-Sorter: Send-FIFO zum PC ist fehlerhaft + Send_FIFO_voll : Bool // Outbound (UH07): Entlade-Puffer-Sorter: Send-FIFO zu PC ist voll + Reset_aktiv : Bool // Outbound (UH07): Entlade-Puffer-Sorter: Reset ist aktiv + Sync_BG4527 : Struct // Outbound (UH07): Entlade-Puffer-Sorter: Synchron-Punkt BG4527 + SyncPkt_DL_Err : Bool // Outbound (UH07): Entlade-Puffer-Synchron-Punkt: Sync-Punkt-Datenliste fehlerhaft + Undef_SyncPkt : Bool // Outbound (UH07): Entlade-Puffer-Synchron-Punkt: undefinierter Synchronpunkt + BLKMov : Bool // Outbound (UH07): Entlade-Puffer-Synchron-Punkt: Fehler bei Block kopieren + Sync_Sensor_aktiv : Bool // Outbound (UH07): Entlade-Puffer-Synchron-Punkt: Sync-Sensor dauernd aktiv + TravelFIFO_Err : Bool // Outbound (UH07): Entlade-Puffer-Synchron-Punkt: Travel-FIFO fehlerhaft + TravelFIFO_leer : Bool // Outbound (UH07): Entlade-Puffer-Synchron-Punkt: keine Daten im Travel-FIFO eingetragen + TravelFIFO_belegt : Bool // Outbound (UH07): Entlade-Puffer-Synchron-Punkt: Travel-FIFO bleibt belegt + Hauptstrangliste_Err : Bool // Outbound (UH07): Entlade-Puffer-Synchron-Punkt: Hauptstrang-DL fehlerhaft + Hauptstrangliste_voll : Bool // Outbound (UH07): Entlade-Puffer-Synchron-Punkt: Hauptstrang-DL ist voll + Inkgeber_Err : Bool // Outbound (UH07): Entlade-Puffer-Synchron-Punkt: Inkrementalgeber meldet Störung + Keine_Hauptstrangliste : Bool // Outbound (UH07): Entlade-Puffer-Synchron-Punkt: Keine Hauptstrang-DL zum Eintragen angegeben + Keine_TeachPktdaten : Bool // Outbound (UH07): Entlade-Puffer-Synchron-Punkt: Teach-Punkt in Datenliste nicht vorhanden ! + TeachPkt_Datenliste_Err : Bool // Outbound (UH07): Entlade-Puffer-Synchron-Punkt: Teach-Punkt-Datenliste fehlerhaft + Kein_Parameter : Bool // Outbound (UH07): Entlade-Puffer-Synchron-Punkt: Kein Parameter zur Wegerfassung definiert + Err_Parameter : Bool // Outbound (UH07): Entlade-Puffer-Synchron-Punkt: Parameter für Zählerauswertung fehlerhaft + Inkrementalgeber : Bool // Outbound (UH07): Entlade-Puffer-Synchron-Punkt: Inkrementalgeberwert ohne Änderung + Weiche_MB4504 : Struct // Outbound (UH07): Entlade-Puffer-Sorter: Weiche zu Puffer 1 MB4504 + Weichen_DL : Bool // Outbound (UH07): Entlade-Puffer-Sorter: Weiche zu Puffer 1: Weichen-Datenliste fehlerhaft + Undef_Weiche : Bool // Outbound (UH07): Entlade-Puffer-Sorter: Weiche zu Puffer 1: undefinierte Weiche + BLKMov : Bool // Outbound (UH07): Entlade-Puffer-Sorter: Weiche zu Puffer 1: Fehler bei Block kopieren + Haupstrang_DL : Bool // Outbound (UH07): Entlade-Puffer-Sorter: Weiche zu Puffer 1: Haupstrang-Datenliste fehlerhaft + Haupstrang_DL_voll : Bool // Outbound (UH07): Entlade-Puffer-Sorter: Weiche zu Puffer 1: Haupstrang-Datenliste ist voll + Keine_HSDaten : Bool // Outbound (UH07): Entlade-Puffer-Sorter: Weiche zu Puffer 1: Keine Hauptstrang-Daten mehr vorhanden + Rein_FIFO : Bool // Outbound (UH07): Entlade-Puffer-Sorter: Weiche zu Puffer 1: Rein-FIFO fehlerhaft + Keine_FIFODaten : Bool // Outbound (UH07): Entlade-Puffer-Sorter: Weiche zu Puffer 1: Keine Rein-FIFO-Daten mehr vorhanden + Stau_AusfahrBereich : Bool // Outbound (UH07): Entlade-Puffer-Sorter: Weiche zu Puffer 1: Stau im Ausfahrbereich (-> Antrieb gestoppt) + BM_verklemmt_Gerade : Bool // Outbound (UH07): Entlade-Puffer-Sorter: Weiche zu Puffer 1: Trolley bei Gerade-Fahrt in Weiche verklemmt (-> Antrieb gestoppt) + BM_verklemmt_Ausfahrt : Bool // Outbound (UH07): Entlade-Puffer-Sorter: Weiche zu Puffer 1: Trolley bei Lager-Fahrt in Weiche verklemmt (-> Antrieb gestoppt) + BM_undef_Gerade : Bool // Outbound (UH07): Entlade-Puffer-Sorter: Weiche zu Puffer 1: undefinierter Trolley bei Weiterfahrt erkannt + Frei14 : Bool // Outbound (UH07): Entlade-Puffer-Sorter: Weiche zu Puffer 1: Frei 14 + Send_FIFO_fehlerhaft : Bool // Outbound (UH07): Entlade-Puffer-Sorter: Weiche zu Puffer 1: Send-FIFO zum PC ist fehlerhaft + Send_FIFO_voll : Bool // Outbound (UH07): Entlade-Puffer-Sorter: Weiche zu Puffer 1: Send-FIFO zu PC ist voll + Reset_aktiv : Bool // Outbound (UH07): Entlade-Puffer-Sorter: Weiche zu Puffer 1: Reset ist aktiv + Weiche_MB4505 : Struct // Outbound (UH07): Entlade-Puffer-Sorter: Weiche zu Puffer 2 MB4505 + Weichen_DL : Bool // Outbound (UH07): Entlade-Puffer-Sorter: Weiche zu Puffer 2: Weichen-Datenliste fehlerhaft + Undef_Weiche : Bool // Outbound (UH07): Entlade-Puffer-Sorter: Weiche zu Puffer 2: undefinierte Weiche + BLKMov : Bool // Outbound (UH07): Entlade-Puffer-Sorter: Weiche zu Puffer 2: Fehler bei Block kopieren + Haupstrang_DL : Bool // Outbound (UH07): Entlade-Puffer-Sorter: Weiche zu Puffer 2: Haupstrang-Datenliste fehlerhaft + Haupstrang_DL_voll : Bool // Outbound (UH07): Entlade-Puffer-Sorter: Weiche zu Puffer 2: Haupstrang-Datenliste ist voll + Keine_HSDaten : Bool // Outbound (UH07): Entlade-Puffer-Sorter: Weiche zu Puffer 2: Keine Hauptstrang-Daten mehr vorhanden + Rein_FIFO : Bool // Outbound (UH07): Entlade-Puffer-Sorter: Weiche zu Puffer 2: Rein-FIFO fehlerhaft + Keine_FIFODaten : Bool // Outbound (UH07): Entlade-Puffer-Sorter: Weiche zu Puffer 2: Keine Rein-FIFO-Daten mehr vorhanden + Stau_AusfahrBereich : Bool // Outbound (UH07): Entlade-Puffer-Sorter: Weiche zu Puffer 2: Stau im Ausfahrbereich (-> Antrieb gestoppt) + BM_verklemmt_Gerade : Bool // Outbound (UH07): Entlade-Puffer-Sorter: Weiche zu Puffer 2: Trolley bei Gerade-Fahrt in Weiche verklemmt (-> Antrieb gestoppt) + BM_verklemmt_Ausfahrt : Bool // Outbound (UH07): Entlade-Puffer-Sorter: Weiche zu Puffer 2: Trolley bei Lager-Fahrt in Weiche verklemmt (-> Antrieb gestoppt) + BM_undef_Gerade : Bool // Outbound (UH07): Entlade-Puffer-Sorter: Weiche zu Puffer 2: undefinierter Trolley bei Weiterfahrt erkannt + Frei14 : Bool // Outbound (UH07): Entlade-Puffer-Sorter: Weiche zu Puffer 2: Frei 14 + Send_FIFO_fehlerhaft : Bool // Outbound (UH07): Entlade-Puffer-Sorter: Weiche zu Puffer 2: Send-FIFO zum PC ist fehlerhaft + Send_FIFO_voll : Bool // Outbound (UH07): Entlade-Puffer-Sorter: Weiche zu Puffer 2: Send-FIFO zu PC ist voll + Reset_aktiv : Bool // Outbound (UH07): Entlade-Puffer-Sorter: Weiche zu Puffer 2: Reset ist aktiv + Weiche_MB4507 : Struct // Outbound (UH07): Entlade-Puffer-Sorter: Weiche zu Puffer 3 MB4506 + Weichen_DL : Bool // Outbound (UH07): Entlade-Puffer-Sorter: Weiche zu Puffer 3: Weichen-Datenliste fehlerhaft + Undef_Weiche : Bool // Outbound (UH07): Entlade-Puffer-Sorter: Weiche zu Puffer 3: undefinierte Weiche + BLKMov : Bool // Outbound (UH07): Entlade-Puffer-Sorter: Weiche zu Puffer 3: Fehler bei Block kopieren + Haupstrang_DL : Bool // Outbound (UH07): Entlade-Puffer-Sorter: Weiche zu Puffer 3: Haupstrang-Datenliste fehlerhaft + Haupstrang_DL_voll : Bool // Outbound (UH07): Entlade-Puffer-Sorter: Weiche zu Puffer 3: Haupstrang-Datenliste ist voll + Keine_HSDaten : Bool // Outbound (UH07): Entlade-Puffer-Sorter: Weiche zu Puffer 3: Keine Hauptstrang-Daten mehr vorhanden + Rein_FIFO : Bool // Outbound (UH07): Entlade-Puffer-Sorter: Weiche zu Puffer 3: Rein-FIFO fehlerhaft + Keine_FIFODaten : Bool // Outbound (UH07): Entlade-Puffer-Sorter: Weiche zu Puffer 3: Keine Rein-FIFO-Daten mehr vorhanden + Stau_AusfahrBereich : Bool // Outbound (UH07): Entlade-Puffer-Sorter: Weiche zu Puffer 3: Stau im Ausfahrbereich (-> Antrieb gestoppt) + BM_verklemmt_Gerade : Bool // Outbound (UH07): Entlade-Puffer-Sorter: Weiche zu Puffer 3: Trolley bei Gerade-Fahrt in Weiche verklemmt (-> Antrieb gestoppt) + BM_verklemmt_Ausfahrt : Bool // Outbound (UH07): Entlade-Puffer-Sorter: Weiche zu Puffer 3: Trolley bei Lager-Fahrt in Weiche verklemmt (-> Antrieb gestoppt) + BM_undef_Gerade : Bool // Outbound (UH07): Entlade-Puffer-Sorter: Weiche zu Puffer 3: undefinierter Trolley bei Weiterfahrt erkannt + Frei14 : Bool // Outbound (UH07): Entlade-Puffer-Sorter: Weiche zu Puffer 3: Frei 14 + Send_FIFO_fehlerhaft : Bool // Outbound (UH07): Entlade-Puffer-Sorter: Weiche zu Puffer 3: Send-FIFO zum PC ist fehlerhaft + Send_FIFO_voll : Bool // Outbound (UH07): Entlade-Puffer-Sorter: Weiche zu Puffer 3: Send-FIFO zu PC ist voll + Reset_aktiv : Bool // Outbound (UH07): Entlade-Puffer-Sorter: Weiche zu Puffer 3: Reset ist aktiv + Weiche_EntladePuffer04 : Struct // Outbound (UH07): Entlade-Puffer-Sorter: Weiche zu Puffer 4 (Pseudo) + Weichen_DL : Bool // Outbound (UH07): Entlade-Puffer-Sorter: Weiche zu Puffer 4: Weichen-Datenliste fehlerhaft + Undef_Weiche : Bool // Outbound (UH07): Entlade-Puffer-Sorter: Weiche zu Puffer 4: undefinierte Weiche + BLKMov : Bool // Outbound (UH07): Entlade-Puffer-Sorter: Weiche zu Puffer 4: Fehler bei Block kopieren + Haupstrang_DL : Bool // Outbound (UH07): Entlade-Puffer-Sorter: Weiche zu Puffer 4: Haupstrang-Datenliste fehlerhaft + Haupstrang_DL_voll : Bool // Outbound (UH07): Entlade-Puffer-Sorter: Weiche zu Puffer 4: Haupstrang-Datenliste ist voll + Keine_HSDaten : Bool // Outbound (UH07): Entlade-Puffer-Sorter: Weiche zu Puffer 4: Keine Hauptstrang-Daten mehr vorhanden + Rein_FIFO : Bool // Outbound (UH07): Entlade-Puffer-Sorter: Weiche zu Puffer 4: Rein-FIFO fehlerhaft + Keine_FIFODaten : Bool // Outbound (UH07): Entlade-Puffer-Sorter: Weiche zu Puffer 4: Keine Rein-FIFO-Daten mehr vorhanden + Stau_AusfahrBereich : Bool // Outbound (UH07): Entlade-Puffer-Sorter: Weiche zu Puffer 4: Stau im Ausfahrbereich (-> Antrieb gestoppt) + BM_verklemmt_Gerade : Bool // Outbound (UH07): Entlade-Puffer-Sorter: Weiche zu Puffer 4: Trolley bei Gerade-Fahrt in Weiche verklemmt (-> Antrieb gestoppt) + BM_verklemmt_Ausfahrt : Bool // Outbound (UH07): Entlade-Puffer-Sorter: Weiche zu Puffer 4: Trolley bei Lager-Fahrt in Weiche verklemmt (-> Antrieb gestoppt) + BM_undef_Gerade : Bool // Outbound (UH07): Entlade-Puffer-Sorter: Weiche zu Puffer 4: undefinierter Trolley bei Weiterfahrt erkannt + Frei14 : Bool // Outbound (UH07): Entlade-Puffer-Sorter: Weiche zu Puffer 4: Frei 14 + Send_FIFO_fehlerhaft : Bool // Outbound (UH07): Entlade-Puffer-Sorter: Weiche zu Puffer 4: Send-FIFO zum PC ist fehlerhaft + Send_FIFO_voll : Bool // Outbound (UH07): Entlade-Puffer-Sorter: Weiche zu Puffer 4: Send-FIFO zu PC ist voll + Reset_aktiv : Bool // Outbound (UH07): Entlade-Puffer-Sorter: Weiche zu Puffer 4: Reset ist aktiv + Impulsgeber_4526 : Struct // Outbound (UH07): Entnahme-Sorter: Impulsgeber Lager-Einfahrt MA0325/BG4526 + Kein_Signal : Bool // Outbound (UH07): Entnahme-Sorter: Impulsgeber Lager-Einfahrt MA0325: Kein Signal (Kettenrad-Sensor) + Signal_zu_lang : Bool // Outbound (UH07): Entnahme-Sorter: Impulsgeber Lager-Einfahrt MA0325: Signal zu lang (Kettenrad-Sensor) + EntladePuffer01 : Struct // Outbound (UH07): Entlade-Puffer 1 BG4504 + Lager_DL : Bool // Outbound (UH07): Entlade-Puffer 1: Lager-Datenliste fehlerhaft + Undef_Lager : Bool // Outbound (UH07): Entlade-Puffer 1: undefinierter Lager + Err_Trolley_nicht_in_Schleuse : Bool // Outbound (UH07): Entlade-Puffer 1: Trolley fährt nicht in Schleuse + Err_Uebzeit : Bool // Outbound (UH07): Entlade-Puffer 1: Überwachungzeit ist abgelaufen + Err_Schritt : Bool // Outbound (UH07): Entlade-Puffer 1: Schritt-Nummer ist nicht definiert + Err_Stau_Einfahrt : Bool // Outbound (UH07): Entlade-Puffer 1: Stau am Lager-Eingang + Err_BLKMov : Bool // Outbound (UH07): Entlade-Puffer 1: Error bei Block kopieren + Err_Trolley_raus : Bool // Outbound (UH07): Entlade-Puffer 1: Trolley fährt nicht aus Schleuse + Err_Lager_nicht_leer : Bool // Outbound (UH07): Entlade-Puffer 1: Trolley in Schleuse, obwohl Lager leer! Initialisieren! + Err_TrolleyID_doppelt : Bool // Outbound (UH07): Entlade-Puffer 1: Trolley_ID doppelt vorhanden! (Einfahrt) + Err_TrolleyID_unbekannt : Bool // Outbound (UH07): Entlade-Puffer 1: Trolley_ID unbekannt! (Einfahrt) + Err_TrolleyID_Schleuse_unbekannt : Bool // Outbound (UH07): Entlade-Puffer 1: Trolley_ID unbekannt! (Schleuse) + Err_TrolleyID_nicht_im_Lager : Bool // Outbound (UH07): Entlade-Puffer 1: TrolleyID zum Ausfahren nicht im Lager vorhanden + Err_Raus_Sensor : Bool // Outbound (UH07): Entlade-Puffer 1: Raus-Sensor hat Dauersignal oder wird nicht erreicht + Err_Lagerdaten_korrupt : Bool // Outbound (UH07): Entlade-Puffer 1: Lagerdaten-Verwaltung unklar -> Reset nötig! + Reset_aktiv : Bool // Outbound (UH07): Entlade-Puffer 1: Reset ist aktiv + EntladePuffer02 : Struct // Outbound (UH07): Entlade-Puffer 2 BG4505 + Lager_DL : Bool // Outbound (UH07): Entlade-Puffer 2: Lager-Datenliste fehlerhaft + Undef_Lager : Bool // Outbound (UH07): Entlade-Puffer 2: undefinierter Lager + Err_Trolley_nicht_in_Schleuse : Bool // Outbound (UH07): Entlade-Puffer 2: Trolley fährt nicht in Schleuse + Err_Uebzeit : Bool // Outbound (UH07): Entlade-Puffer 2: Überwachungzeit ist abgelaufen + Err_Schritt : Bool // Outbound (UH07): Entlade-Puffer 2: Schritt-Nummer ist nicht definiert + Err_Stau_Einfahrt : Bool // Outbound (UH07): Entlade-Puffer 2: Stau am Lager-Eingang + Err_BLKMov : Bool // Outbound (UH07): Entlade-Puffer 2: Error bei Block kopieren + Err_Trolley_raus : Bool // Outbound (UH07): Entlade-Puffer 2: Trolley fährt nicht aus Schleuse + Err_Lager_nicht_leer : Bool // Outbound (UH07): Entlade-Puffer 2: Trolley in Schleuse, obwohl Lager leer! Initialisieren! + Err_TrolleyID_doppelt : Bool // Outbound (UH07): Entlade-Puffer 2: Trolley_ID doppelt vorhanden! (Einfahrt) + Err_TrolleyID_unbekannt : Bool // Outbound (UH07): Entlade-Puffer 2: Trolley_ID unbekannt! (Einfahrt) + Err_TrolleyID_Schleuse_unbekannt : Bool // Outbound (UH07): Entlade-Puffer 2: Trolley_ID unbekannt! (Schleuse) + Err_TrolleyID_nicht_im_Lager : Bool // Outbound (UH07): Entlade-Puffer 2: TrolleyID zum Ausfahren nicht im Lager vorhanden + Err_Raus_Sensor : Bool // Outbound (UH07): Entlade-Puffer 2: Raus-Sensor hat Dauersignal oder wird nicht erreicht + Err_Lagerdaten_korrupt : Bool // Outbound (UH07): Entlade-Puffer 2: Lagerdaten-Verwaltung unklar -> Reset nötig! + Reset_aktiv : Bool // Outbound (UH07): Entlade-Puffer 2: Reset ist aktiv + EntladePuffer03 : Struct // Outbound (UH07): Entlade-Puffer 3 BG4506 + Lager_DL : Bool // Outbound (UH07): Entlade-Puffer 3: Lager-Datenliste fehlerhaft + Undef_Lager : Bool // Outbound (UH07): Entlade-Puffer 3: undefinierter Lager + Err_Trolley_nicht_in_Schleuse : Bool // Outbound (UH07): Entlade-Puffer 3: Trolley fährt nicht in Schleuse + Err_Uebzeit : Bool // Outbound (UH07): Entlade-Puffer 3: Überwachungzeit ist abgelaufen + Err_Schritt : Bool // Outbound (UH07): Entlade-Puffer 3: Schritt-Nummer ist nicht definiert + Err_Stau_Einfahrt : Bool // Outbound (UH07): Entlade-Puffer 3: Stau am Lager-Eingang + Err_BLKMov : Bool // Outbound (UH07): Entlade-Puffer 3: Error bei Block kopieren + Err_Trolley_raus : Bool // Outbound (UH07): Entlade-Puffer 3: Trolley fährt nicht aus Schleuse + Err_Lager_nicht_leer : Bool // Outbound (UH07): Entlade-Puffer 3: Trolley in Schleuse, obwohl Lager leer! Initialisieren! + Err_TrolleyID_doppelt : Bool // Outbound (UH07): Entlade-Puffer 3: Trolley_ID doppelt vorhanden! (Einfahrt) + Err_TrolleyID_unbekannt : Bool // Outbound (UH07): Entlade-Puffer 3: Trolley_ID unbekannt! (Einfahrt) + Err_TrolleyID_Schleuse_unbekannt : Bool // Outbound (UH07): Entlade-Puffer 3: Trolley_ID unbekannt! (Schleuse) + Err_TrolleyID_nicht_im_Lager : Bool // Outbound (UH07): Entlade-Puffer 3: TrolleyID zum Ausfahren nicht im Lager vorhanden + Err_Raus_Sensor : Bool // Outbound (UH07): Entlade-Puffer 3: Raus-Sensor hat Dauersignal oder wird nicht erreicht + Err_Lagerdaten_korrupt : Bool // Outbound (UH07): Entlade-Puffer 3: Lagerdaten-Verwaltung unklar -> Reset nötig! + Reset_aktiv : Bool // Outbound (UH07): Entlade-Puffer 3: Reset ist aktiv + EntladePuffer04 : Struct // Outbound (UH07): Entlade-Puffer 4 BG4507 + Lager_DL : Bool // Outbound (UH07): Entlade-Puffer 4: Lager-Datenliste fehlerhaft + Undef_Lager : Bool // Outbound (UH07): Entlade-Puffer 4: undefinierter Lager + Err_Trolley_nicht_in_Schleuse : Bool // Outbound (UH07): Entlade-Puffer 4: Trolley fährt nicht in Schleuse + Err_Uebzeit : Bool // Outbound (UH07): Entlade-Puffer 4: Überwachungzeit ist abgelaufen + Err_Schritt : Bool // Outbound (UH07): Entlade-Puffer 4: Schritt-Nummer ist nicht definiert + Err_Stau_Einfahrt : Bool // Outbound (UH07): Entlade-Puffer 4: Stau am Lager-Eingang + Err_BLKMov : Bool // Outbound (UH07): Entlade-Puffer 4: Error bei Block kopieren + Err_Trolley_raus : Bool // Outbound (UH07): Entlade-Puffer 4: Trolley fährt nicht aus Schleuse + Err_Lager_nicht_leer : Bool // Outbound (UH07): Entlade-Puffer 4: Trolley in Schleuse, obwohl Lager leer! Initialisieren! + Err_TrolleyID_doppelt : Bool // Outbound (UH07): Entlade-Puffer 4: Trolley_ID doppelt vorhanden! (Einfahrt) + Err_TrolleyID_unbekannt : Bool // Outbound (UH07): Entlade-Puffer 4: Trolley_ID unbekannt! (Einfahrt) + Err_TrolleyID_Schleuse_unbekannt : Bool // Outbound (UH07): Entlade-Puffer 4: Trolley_ID unbekannt! (Schleuse) + Err_TrolleyID_nicht_im_Lager : Bool // Outbound (UH07): Entlade-Puffer 4: TrolleyID zum Ausfahren nicht im Lager vorhanden + Err_Raus_Sensor : Bool // Outbound (UH07): Entlade-Puffer 4: Raus-Sensor hat Dauersignal oder wird nicht erreicht + Err_Lagerdaten_korrupt : Bool // Outbound (UH07): Entlade-Puffer 4: Lagerdaten-Verwaltung unklar -> Reset nötig! + Reset_aktiv : Bool // Outbound (UH07): Entlade-Puffer 4: Reset ist aktiv + Frei200 : Array[1..14] of Word + Sorter_MB3121 : Struct // Outbound (UH07): Voll-Puffer-Sorter MB3121 + Separator_DL : Bool // Outbound (UH07): Voll-Puffer-Sorter: Separator-Datenliste fehlerhaft + Undef_Separator : Bool // Outbound (UH07): Voll-Puffer-Sorter: undefinierter Separator + Err_BT_rein : Bool // Outbound (UH07): Voll-Puffer-Sorter: BM fährt nicht in Separator + Err_Uebzeit : Bool // Outbound (UH07): Voll-Puffer-Sorter: Überwachungzeit ist abgelaufen + Err_Schritt : Bool // Outbound (UH07): Voll-Puffer-Sorter: Schritt-Nummer ist nicht definiert + Err_Betriebsart : Bool // Outbound (UH07): Voll-Puffer-Sorter: Betriebsart ist nicht möglich + Err_PinSignal : Bool // Outbound (UH07): Voll-Puffer-Sorter: Es kommt kein Pin-Signal + Err_BT_raus : Bool // Outbound (UH07): Voll-Puffer-Sorter: BM fährt nicht aus + Err_Raus_Sensor : Bool // Outbound (UH07): Voll-Puffer-Sorter: Raus-/Belade-Sensor wird nicht erreicht (oder dauernd aktiv)! + Travel_FIFO : Bool // Outbound (UH07): Voll-Puffer-Sorter: Travel-FIFO fehlerhaft + Daten_out : Bool // Outbound (UH07): Voll-Puffer-Sorter: Letzte Carrier-Daten konnten nicht an FIFO übergeben werden + BC_doppelt : Bool // Outbound (UH07): Voll-Puffer-Sorter: Wieder gleichen BC vom PC erhalten + Korrektur_Modus_aktiv : Bool // Outbound (UH07): Voll-Puffer-Sorter: Korrektur-Modus nach Crash aktiviert + Send_FIFO_fehlerhaft : Bool // Outbound (UH07): Voll-Puffer-Sorter: Send-FIFO zum PC ist fehlerhaft + Send_FIFO_voll : Bool // Outbound (UH07): Voll-Puffer-Sorter: Send-FIFO zu PC ist voll + Reset_aktiv : Bool // Outbound (UH07): Voll-Puffer-Sorter: Reset ist aktiv + Sorter_MB3123 : Struct // Outbound (UH07): Voll-Puffer-Sorter-Rückführung MB3123 + Separator_DL : Bool // Outbound (UH07): Voll-Puffer-Sorter-Rückführung: Separator-Datenliste fehlerhaft + Undef_Separator : Bool // Outbound (UH07): Voll-Puffer-Sorter-Rückführung: undefinierter Separator + Err_BT_rein : Bool // Outbound (UH07): Voll-Puffer-Sorter-Rückführung: BM fährt nicht in Separator + Err_Uebzeit : Bool // Outbound (UH07): Voll-Puffer-Sorter-Rückführung: Überwachungzeit ist abgelaufen + Err_Schritt : Bool // Outbound (UH07): Voll-Puffer-Sorter-Rückführung: Schritt-Nummer ist nicht definiert + Err_Betriebsart : Bool // Outbound (UH07): Voll-Puffer-Sorter-Rückführung: Betriebsart ist nicht möglich + Err_PinSignal : Bool // Outbound (UH07): Voll-Puffer-Sorter-Rückführung: Es kommt kein Pin-Signal + Err_BT_raus : Bool // Outbound (UH07): Voll-Puffer-Sorter-Rückführung: BM fährt nicht aus + Err_Raus_Sensor : Bool // Outbound (UH07): Voll-Puffer-Sorter-Rückführung: Raus-/Belade-Sensor wird nicht erreicht (oder dauernd aktiv)! + Travel_FIFO : Bool // Outbound (UH07): Voll-Puffer-Sorter-Rückführung: Travel-FIFO fehlerhaft + Daten_out : Bool // Outbound (UH07): Voll-Puffer-Sorter-Rückführung: Letzte Carrier-Daten konnten nicht an FIFO übergeben werden + BC_doppelt : Bool // Outbound (UH07): Voll-Puffer-Sorter-Rückführung: Wieder gleichen BC vom PC erhalten + Korrektur_Modus_aktiv : Bool // Outbound (UH07): Voll-Puffer-Sorter-Rückführung: Korrektur-Modus nach Crash aktiviert + Send_FIFO_fehlerhaft : Bool // Outbound (UH07): Voll-Puffer-Sorter-Rückführung: Send-FIFO zum PC ist fehlerhaft + Send_FIFO_voll : Bool // Outbound (UH07): Voll-Puffer-Sorter-Rückführung: Send-FIFO zu PC ist voll + Reset_aktiv : Bool // Outbound (UH07): Voll-Puffer-Sorter-Rückführung: Reset ist aktiv + Sync_BG3120 : Struct // Outbound (UH07): Voll-Puffer-Sorter: Synchron-Punkt BG3120 + SyncPkt_DL_Err : Bool // Outbound (UH07): Voll-Synchron-Punkt: Sync-Punkt-Datenliste fehlerhaft + Undef_SyncPkt : Bool // Outbound (UH07): Voll-Synchron-Punkt: undefinierter Synchronpunkt + BLKMov : Bool // Outbound (UH07): Voll-Synchron-Punkt: Fehler bei Block kopieren + Sync_Sensor_aktiv : Bool // Outbound (UH07): Voll-Synchron-Punkt: Sync-Sensor dauernd aktiv + TravelFIFO_Err : Bool // Outbound (UH07): Voll-Synchron-Punkt: Travel-FIFO fehlerhaft + TravelFIFO_leer : Bool // Outbound (UH07): Voll-Synchron-Punkt: keine Daten im Travel-FIFO eingetragen + TravelFIFO_belegt : Bool // Outbound (UH07): Voll-Synchron-Punkt: Travel-FIFO bleibt belegt + Hauptstrangliste_Err : Bool // Outbound (UH07): Voll-Synchron-Punkt: Hauptstrang-DL fehlerhaft + Hauptstrangliste_voll : Bool // Outbound (UH07): Voll-Synchron-Punkt: Hauptstrang-DL ist voll + Inkgeber_Err : Bool // Outbound (UH07): Voll-Synchron-Punkt: Inkrementalgeber meldet Störung + Keine_Hauptstrangliste : Bool // Outbound (UH07): Voll-Synchron-Punkt: Keine Hauptstrang-DL zum Eintragen angegeben + Keine_TeachPktdaten : Bool // Outbound (UH07): Voll-Synchron-Punkt: Teach-Punkt in Datenliste nicht vorhanden ! + TeachPkt_Datenliste_Err : Bool // Outbound (UH07): Voll-Synchron-Punkt: Teach-Punkt-Datenliste fehlerhaft + Kein_Parameter : Bool // Outbound (UH07): Voll-Synchron-Punkt: Kein Parameter zur Wegerfassung definiert + Err_Parameter : Bool // Outbound (UH07): Voll-Synchron-Punkt: Parameter für Zählerauswertung fehlerhaft + Inkrementalgeber : Bool // Outbound (UH07): Voll-Synchron-Punkt: Inkrementalgeberwert ohne Änderung + Übergabe_VPA>VPB : Struct // Outbound (UH07): Voll-Puffer-Sorter: Übergabe A->B + Uebergabe_DL : Bool // Übergabe-Datenliste fehlerhaft + Undef_Uebergabe : Bool // undefinierte Übergabe + BLKMov : Bool // Fehler bei Block kopieren + Haupstrang_DL : Bool // Haupstrang-Datenliste fehlerhaft + Keine_HSDaten : Bool // Keine Hauptstrang-Daten mehr vorhanden + Travel_FIFO_ERR : Bool // Travel-FIFO fehlerhaft + Travel_FIFO_voll : Bool // Travel-FIFO voll + Frei07 : Bool + Frei10 : Bool + Frei11 : Bool + Frei12 : Bool + Frei13 : Bool + Frei14 : Bool + Send_FIFO_fehlerhaft : Bool // Send-FIFO zum PC ist fehlerhaft + Send_FIFO_voll : Bool // Send-FIFO zu PC ist voll + Reset_aktiv : Bool // Reset ist aktiv + Sync_BG3003 : Struct // Outbound (UH07): Voll-Puffer-Sorter: Synchron-Punkt B BG3003 + SyncPkt_DL_Err : Bool // Outbound (UH07): Voll-Synchron-Punkt B: Sync-Punkt B-Datenliste fehlerhaft + Undef_SyncPkt : Bool // Outbound (UH07): Voll-Synchron-Punkt B: undefinierter SynchronPunkt B + BLKMov : Bool // Outbound (UH07): Voll-Synchron-Punkt B: Fehler bei Block kopieren + Sync_Sensor_aktiv : Bool // Outbound (UH07): Voll-Synchron-Punkt B: Sync-Sensor dauernd aktiv + TravelFIFO_Err : Bool // Outbound (UH07): Voll-Synchron-Punkt B: Travel-FIFO fehlerhaft + TravelFIFO_leer : Bool // Outbound (UH07): Voll-Synchron-Punkt B: keine Daten im Travel-FIFO eingetragen + TravelFIFO_belegt : Bool // Outbound (UH07): Voll-Synchron-Punkt B: Travel-FIFO bleibt belegt + Hauptstrangliste_Err : Bool // Outbound (UH07): Voll-Synchron-Punkt B: Hauptstrang-DL fehlerhaft + Hauptstrangliste_voll : Bool // Outbound (UH07): Voll-Synchron-Punkt B: Hauptstrang-DL ist voll + Inkgeber_Err : Bool // Outbound (UH07): Voll-Synchron-Punkt B: Inkrementalgeber meldet Störung + Keine_Hauptstrangliste : Bool // Outbound (UH07): Voll-Synchron-Punkt B: Keine Hauptstrang-DL zum Eintragen angegeben + Keine_TeachPktdaten : Bool // Outbound (UH07): Voll-Synchron-Punkt B: Teach-Punkt in Datenliste nicht vorhanden ! + TeachPkt_Datenliste_Err : Bool // Outbound (UH07): Voll-Synchron-Punkt B: Teach-Punkt-Datenliste fehlerhaft + Kein_Parameter : Bool // Outbound (UH07): Voll-Synchron-Punkt B: Kein Parameter zur Wegerfassung definiert + Err_Parameter : Bool // Outbound (UH07): Voll-Synchron-Punkt B: Parameter für Zählerauswertung fehlerhaft + Inkrementalgeber : Bool // Outbound (UH07): Voll-Synchron-Punkt B: Inkrementalgeberwert ohne Änderung + Weiche_MB3087 : Struct // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 1 MB3087 + Weichen_DL : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 1: Weichen-Datenliste fehlerhaft + Undef_Weiche : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 1: undefinierte Weiche + BLKMov : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 1: Fehler bei Block kopieren + Haupstrang_DL : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 1: Haupstrang-Datenliste fehlerhaft + Haupstrang_DL_voll : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 1: Haupstrang-Datenliste ist voll + Keine_HSDaten : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 1: Keine Hauptstrang-Daten mehr vorhanden + Rein_FIFO : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 1: Rein-FIFO fehlerhaft + Keine_FIFODaten : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 1: Keine Rein-FIFO-Daten mehr vorhanden + Stau_AusfahrBereich : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 1: Stau im Ausfahrbereich (-> Antrieb gestoppt) + BM_verklemmt_Gerade : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 1: Trolley bei Gerade-Fahrt in Weiche verklemmt (-> Antrieb gestoppt) + BM_verklemmt_Ausfahrt : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 1: Trolley bei Lager-Fahrt in Weiche verklemmt (-> Antrieb gestoppt) + BM_undef_Gerade : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 1: undefinierter Trolley bei Weiterfahrt erkannt + Frei14 : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 1: Frei 14 + Send_FIFO_fehlerhaft : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 1: Send-FIFO zum PC ist fehlerhaft + Send_FIFO_voll : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 1: Send-FIFO zu PC ist voll + Reset_aktiv : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 1: Reset ist aktiv + Weiche_MB3086 : Struct // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 2 MB3086 + Weichen_DL : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 2: Weichen-Datenliste fehlerhaft + Undef_Weiche : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 2: undefinierte Weiche + BLKMov : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 2: Fehler bei Block kopieren + Haupstrang_DL : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 2: Haupstrang-Datenliste fehlerhaft + Haupstrang_DL_voll : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 2: Haupstrang-Datenliste ist voll + Keine_HSDaten : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 2: Keine Hauptstrang-Daten mehr vorhanden + Rein_FIFO : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 2: Rein-FIFO fehlerhaft + Keine_FIFODaten : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 2: Keine Rein-FIFO-Daten mehr vorhanden + Stau_AusfahrBereich : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 2: Stau im Ausfahrbereich (-> Antrieb gestoppt) + BM_verklemmt_Gerade : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 2: Trolley bei Gerade-Fahrt in Weiche verklemmt (-> Antrieb gestoppt) + BM_verklemmt_Ausfahrt : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 2: Trolley bei Lager-Fahrt in Weiche verklemmt (-> Antrieb gestoppt) + BM_undef_Gerade : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 2: undefinierter Trolley bei Weiterfahrt erkannt + Frei14 : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 2: Frei 14 + Send_FIFO_fehlerhaft : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 2: Send-FIFO zum PC ist fehlerhaft + Send_FIFO_voll : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 2: Send-FIFO zu PC ist voll + Reset_aktiv : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 2: Reset ist aktiv + Weiche_MB3085 : Struct // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 3 MB3085 + Weichen_DL : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 3: Weichen-Datenliste fehlerhaft + Undef_Weiche : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 3: undefinierte Weiche + BLKMov : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 3: Fehler bei Block kopieren + Haupstrang_DL : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 3: Haupstrang-Datenliste fehlerhaft + Haupstrang_DL_voll : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 3: Haupstrang-Datenliste ist voll + Keine_HSDaten : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 3: Keine Hauptstrang-Daten mehr vorhanden + Rein_FIFO : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 3: Rein-FIFO fehlerhaft + Keine_FIFODaten : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 3: Keine Rein-FIFO-Daten mehr vorhanden + Stau_AusfahrBereich : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 3: Stau im Ausfahrbereich (-> Antrieb gestoppt) + BM_verklemmt_Gerade : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 3: Trolley bei Gerade-Fahrt in Weiche verklemmt (-> Antrieb gestoppt) + BM_verklemmt_Ausfahrt : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 3: Trolley bei Lager-Fahrt in Weiche verklemmt (-> Antrieb gestoppt) + BM_undef_Gerade : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 3: undefinierter Trolley bei Weiterfahrt erkannt + Frei14 : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 3: Frei 14 + Send_FIFO_fehlerhaft : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 3: Send-FIFO zum PC ist fehlerhaft + Send_FIFO_voll : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 3: Send-FIFO zu PC ist voll + Reset_aktiv : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 3: Reset ist aktiv + Weiche_MB3084 : Struct // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 4 MB3084 + Weichen_DL : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 4: Weichen-Datenliste fehlerhaft + Undef_Weiche : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 4: undefinierte Weiche + BLKMov : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 4: Fehler bei Block kopieren + Haupstrang_DL : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 4: Haupstrang-Datenliste fehlerhaft + Haupstrang_DL_voll : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 4: Haupstrang-Datenliste ist voll + Keine_HSDaten : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 4: Keine Hauptstrang-Daten mehr vorhanden + Rein_FIFO : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 4: Rein-FIFO fehlerhaft + Keine_FIFODaten : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 4: Keine Rein-FIFO-Daten mehr vorhanden + Stau_AusfahrBereich : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 4: Stau im Ausfahrbereich (-> Antrieb gestoppt) + BM_verklemmt_Gerade : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 4: Trolley bei Gerade-Fahrt in Weiche verklemmt (-> Antrieb gestoppt) + BM_verklemmt_Ausfahrt : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 4: Trolley bei Lager-Fahrt in Weiche verklemmt (-> Antrieb gestoppt) + BM_undef_Gerade : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 4: undefinierter Trolley bei Weiterfahrt erkannt + Frei14 : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 4: Frei 14 + Send_FIFO_fehlerhaft : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 4: Send-FIFO zum PC ist fehlerhaft + Send_FIFO_voll : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 4: Send-FIFO zu PC ist voll + Reset_aktiv : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 4: Reset ist aktiv + Weiche_MB3083 : Struct // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 5 MB3083 + Weichen_DL : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 5: Weichen-Datenliste fehlerhaft + Undef_Weiche : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 5: undefinierte Weiche + BLKMov : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 5: Fehler bei Block kopieren + Haupstrang_DL : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 5: Haupstrang-Datenliste fehlerhaft + Haupstrang_DL_voll : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 5: Haupstrang-Datenliste ist voll + Keine_HSDaten : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 5: Keine Hauptstrang-Daten mehr vorhanden + Rein_FIFO : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 5: Rein-FIFO fehlerhaft + Keine_FIFODaten : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 5: Keine Rein-FIFO-Daten mehr vorhanden + Stau_AusfahrBereich : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 5: Stau im Ausfahrbereich (-> Antrieb gestoppt) + BM_verklemmt_Gerade : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 5: Trolley bei Gerade-Fahrt in Weiche verklemmt (-> Antrieb gestoppt) + BM_verklemmt_Ausfahrt : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 5: Trolley bei Lager-Fahrt in Weiche verklemmt (-> Antrieb gestoppt) + BM_undef_Gerade : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 5: undefinierter Trolley bei Weiterfahrt erkannt + Frei14 : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 5: Frei 14 + Send_FIFO_fehlerhaft : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 5: Send-FIFO zum PC ist fehlerhaft + Send_FIFO_voll : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 5: Send-FIFO zu PC ist voll + Reset_aktiv : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 5: Reset ist aktiv + Weiche_MB3082 : Struct // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 6 MB3082 + Weichen_DL : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 6: Weichen-Datenliste fehlerhaft + Undef_Weiche : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 6: undefinierte Weiche + BLKMov : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 6: Fehler bei Block kopieren + Haupstrang_DL : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 6: Haupstrang-Datenliste fehlerhaft + Haupstrang_DL_voll : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 6: Haupstrang-Datenliste ist voll + Keine_HSDaten : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 6: Keine Hauptstrang-Daten mehr vorhanden + Rein_FIFO : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 6: Rein-FIFO fehlerhaft + Keine_FIFODaten : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 6: Keine Rein-FIFO-Daten mehr vorhanden + Stau_AusfahrBereich : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 6: Stau im Ausfahrbereich (-> Antrieb gestoppt) + BM_verklemmt_Gerade : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 6: Trolley bei Gerade-Fahrt in Weiche verklemmt (-> Antrieb gestoppt) + BM_verklemmt_Ausfahrt : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 6: Trolley bei Lager-Fahrt in Weiche verklemmt (-> Antrieb gestoppt) + BM_undef_Gerade : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 6: undefinierter Trolley bei Weiterfahrt erkannt + Frei14 : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 6: Frei 14 + Send_FIFO_fehlerhaft : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 6: Send-FIFO zum PC ist fehlerhaft + Send_FIFO_voll : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 6: Send-FIFO zu PC ist voll + Reset_aktiv : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 6: Reset ist aktiv + Weiche_MB3081 : Struct // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 7 MB3081 + Weichen_DL : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 7: Weichen-Datenliste fehlerhaft + Undef_Weiche : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 7: undefinierte Weiche + BLKMov : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 7: Fehler bei Block kopieren + Haupstrang_DL : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 7: Haupstrang-Datenliste fehlerhaft + Haupstrang_DL_voll : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 7: Haupstrang-Datenliste ist voll + Keine_HSDaten : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 7: Keine Hauptstrang-Daten mehr vorhanden + Rein_FIFO : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 7: Rein-FIFO fehlerhaft + Keine_FIFODaten : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 7: Keine Rein-FIFO-Daten mehr vorhanden + Stau_AusfahrBereich : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 7: Stau im Ausfahrbereich (-> Antrieb gestoppt) + BM_verklemmt_Gerade : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 7: Trolley bei Gerade-Fahrt in Weiche verklemmt (-> Antrieb gestoppt) + BM_verklemmt_Ausfahrt : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 7: Trolley bei Lager-Fahrt in Weiche verklemmt (-> Antrieb gestoppt) + BM_undef_Gerade : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 7: undefinierter Trolley bei Weiterfahrt erkannt + Frei14 : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 7: Frei 14 + Send_FIFO_fehlerhaft : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 7: Send-FIFO zum PC ist fehlerhaft + Send_FIFO_voll : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 7: Send-FIFO zu PC ist voll + Reset_aktiv : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 7: Reset ist aktiv + Weiche_MB3080 : Struct // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 8 MB3080 + Weichen_DL : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 8: Weichen-Datenliste fehlerhaft + Undef_Weiche : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 8: undefinierte Weiche + BLKMov : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 8: Fehler bei Block kopieren + Haupstrang_DL : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 8: Haupstrang-Datenliste fehlerhaft + Haupstrang_DL_voll : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 8: Haupstrang-Datenliste ist voll + Keine_HSDaten : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 8: Keine Hauptstrang-Daten mehr vorhanden + Rein_FIFO : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 8: Rein-FIFO fehlerhaft + Keine_FIFODaten : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 8: Keine Rein-FIFO-Daten mehr vorhanden + Stau_AusfahrBereich : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 8: Stau im Ausfahrbereich (-> Antrieb gestoppt) + BM_verklemmt_Gerade : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 8: Trolley bei Gerade-Fahrt in Weiche verklemmt (-> Antrieb gestoppt) + BM_verklemmt_Ausfahrt : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 8: Trolley bei Lager-Fahrt in Weiche verklemmt (-> Antrieb gestoppt) + BM_undef_Gerade : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 8: undefinierter Trolley bei Weiterfahrt erkannt + Frei14 : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 8: Frei 14 + Send_FIFO_fehlerhaft : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 8: Send-FIFO zum PC ist fehlerhaft + Send_FIFO_voll : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 8: Send-FIFO zu PC ist voll + Reset_aktiv : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 8: Reset ist aktiv + Weiche_MB3077 : Struct // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 9 MB3077 + Weichen_DL : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 9: Weichen-Datenliste fehlerhaft + Undef_Weiche : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 9: undefinierte Weiche + BLKMov : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 9: Fehler bei Block kopieren + Haupstrang_DL : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 9: Haupstrang-Datenliste fehlerhaft + Haupstrang_DL_voll : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 9: Haupstrang-Datenliste ist voll + Keine_HSDaten : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 9: Keine Hauptstrang-Daten mehr vorhanden + Rein_FIFO : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 9: Rein-FIFO fehlerhaft + Keine_FIFODaten : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 9: Keine Rein-FIFO-Daten mehr vorhanden + Stau_AusfahrBereich : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 9: Stau im Ausfahrbereich (-> Antrieb gestoppt) + BM_verklemmt_Gerade : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 9: Trolley bei Gerade-Fahrt in Weiche verklemmt (-> Antrieb gestoppt) + BM_verklemmt_Ausfahrt : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 9: Trolley bei Lager-Fahrt in Weiche verklemmt (-> Antrieb gestoppt) + BM_undef_Gerade : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 9: undefinierter Trolley bei Weiterfahrt erkannt + Frei14 : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 9: Frei 14 + Send_FIFO_fehlerhaft : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 9: Send-FIFO zum PC ist fehlerhaft + Send_FIFO_voll : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 9: Send-FIFO zu PC ist voll + Reset_aktiv : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 9: Reset ist aktiv + Weiche_MB3076 : Struct // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 10 MB3076 + Weichen_DL : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 10: Weichen-Datenliste fehlerhaft + Undef_Weiche : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 10: undefinierte Weiche + BLKMov : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 10: Fehler bei Block kopieren + Haupstrang_DL : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 10: Haupstrang-Datenliste fehlerhaft + Haupstrang_DL_voll : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 10: Haupstrang-Datenliste ist voll + Keine_HSDaten : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 10: Keine Hauptstrang-Daten mehr vorhanden + Rein_FIFO : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 10: Rein-FIFO fehlerhaft + Keine_FIFODaten : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 10: Keine Rein-FIFO-Daten mehr vorhanden + Stau_AusfahrBereich : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 10: Stau im Ausfahrbereich (-> Antrieb gestoppt) + BM_verklemmt_Gerade : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 10: Trolley bei Gerade-Fahrt in Weiche verklemmt (-> Antrieb gestoppt) + BM_verklemmt_Ausfahrt : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 10: Trolley bei Lager-Fahrt in Weiche verklemmt (-> Antrieb gestoppt) + BM_undef_Gerade : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 10: undefinierter Trolley bei Weiterfahrt erkannt + Frei14 : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 10: Frei 14 + Send_FIFO_fehlerhaft : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 10: Send-FIFO zum PC ist fehlerhaft + Send_FIFO_voll : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 10: Send-FIFO zu PC ist voll + Reset_aktiv : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 10: Reset ist aktiv + Weiche_MB3075 : Struct // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 11 MB3075 + Weichen_DL : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 11: Weichen-Datenliste fehlerhaft + Undef_Weiche : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 11: undefinierte Weiche + BLKMov : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 11: Fehler bei Block kopieren + Haupstrang_DL : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 11: Haupstrang-Datenliste fehlerhaft + Haupstrang_DL_voll : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 11: Haupstrang-Datenliste ist voll + Keine_HSDaten : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 11: Keine Hauptstrang-Daten mehr vorhanden + Rein_FIFO : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 11: Rein-FIFO fehlerhaft + Keine_FIFODaten : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 11: Keine Rein-FIFO-Daten mehr vorhanden + Stau_AusfahrBereich : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 11: Stau im Ausfahrbereich (-> Antrieb gestoppt) + BM_verklemmt_Gerade : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 11: Trolley bei Gerade-Fahrt in Weiche verklemmt (-> Antrieb gestoppt) + BM_verklemmt_Ausfahrt : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 11: Trolley bei Lager-Fahrt in Weiche verklemmt (-> Antrieb gestoppt) + BM_undef_Gerade : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 11: undefinierter Trolley bei Weiterfahrt erkannt + Frei14 : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 11: Frei 14 + Send_FIFO_fehlerhaft : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 11: Send-FIFO zum PC ist fehlerhaft + Send_FIFO_voll : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 11: Send-FIFO zu PC ist voll + Reset_aktiv : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 11: Reset ist aktiv + Weiche_MB3074 : Struct // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 12 MB3074 + Weichen_DL : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 12: Weichen-Datenliste fehlerhaft + Undef_Weiche : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 12: undefinierte Weiche + BLKMov : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 12: Fehler bei Block kopieren + Haupstrang_DL : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 12: Haupstrang-Datenliste fehlerhaft + Haupstrang_DL_voll : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 12: Haupstrang-Datenliste ist voll + Keine_HSDaten : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 12: Keine Hauptstrang-Daten mehr vorhanden + Rein_FIFO : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 12: Rein-FIFO fehlerhaft + Keine_FIFODaten : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 12: Keine Rein-FIFO-Daten mehr vorhanden + Stau_AusfahrBereich : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 12: Stau im Ausfahrbereich (-> Antrieb gestoppt) + BM_verklemmt_Gerade : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 12: Trolley bei Gerade-Fahrt in Weiche verklemmt (-> Antrieb gestoppt) + BM_verklemmt_Ausfahrt : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 12: Trolley bei Lager-Fahrt in Weiche verklemmt (-> Antrieb gestoppt) + BM_undef_Gerade : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 12: undefinierter Trolley bei Weiterfahrt erkannt + Frei14 : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 12: Frei 14 + Send_FIFO_fehlerhaft : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 12: Send-FIFO zum PC ist fehlerhaft + Send_FIFO_voll : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 12: Send-FIFO zu PC ist voll + Reset_aktiv : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 12: Reset ist aktiv + Weiche_MB3073 : Struct // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 13 MB3073 + Weichen_DL : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 13: Weichen-Datenliste fehlerhaft + Undef_Weiche : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 13: undefinierte Weiche + BLKMov : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 13: Fehler bei Block kopieren + Haupstrang_DL : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 13: Haupstrang-Datenliste fehlerhaft + Haupstrang_DL_voll : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 13: Haupstrang-Datenliste ist voll + Keine_HSDaten : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 13: Keine Hauptstrang-Daten mehr vorhanden + Rein_FIFO : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 13: Rein-FIFO fehlerhaft + Keine_FIFODaten : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 13: Keine Rein-FIFO-Daten mehr vorhanden + Stau_AusfahrBereich : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 13: Stau im Ausfahrbereich (-> Antrieb gestoppt) + BM_verklemmt_Gerade : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 13: Trolley bei Gerade-Fahrt in Weiche verklemmt (-> Antrieb gestoppt) + BM_verklemmt_Ausfahrt : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 13: Trolley bei Lager-Fahrt in Weiche verklemmt (-> Antrieb gestoppt) + BM_undef_Gerade : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 13: undefinierter Trolley bei Weiterfahrt erkannt + Frei14 : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 13: Frei 14 + Send_FIFO_fehlerhaft : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 13: Send-FIFO zum PC ist fehlerhaft + Send_FIFO_voll : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 13: Send-FIFO zu PC ist voll + Reset_aktiv : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 13: Reset ist aktiv + Weiche_MB3072 : Struct // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 14 MB3072 + Weichen_DL : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 14: Weichen-Datenliste fehlerhaft + Undef_Weiche : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 14: undefinierte Weiche + BLKMov : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 14: Fehler bei Block kopieren + Haupstrang_DL : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 14: Haupstrang-Datenliste fehlerhaft + Haupstrang_DL_voll : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 14: Haupstrang-Datenliste ist voll + Keine_HSDaten : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 14: Keine Hauptstrang-Daten mehr vorhanden + Rein_FIFO : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 14: Rein-FIFO fehlerhaft + Keine_FIFODaten : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 14: Keine Rein-FIFO-Daten mehr vorhanden + Stau_AusfahrBereich : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 14: Stau im Ausfahrbereich (-> Antrieb gestoppt) + BM_verklemmt_Gerade : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 14: Trolley bei Gerade-Fahrt in Weiche verklemmt (-> Antrieb gestoppt) + BM_verklemmt_Ausfahrt : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 14: Trolley bei Lager-Fahrt in Weiche verklemmt (-> Antrieb gestoppt) + BM_undef_Gerade : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 14: undefinierter Trolley bei Weiterfahrt erkannt + Frei14 : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 14: Frei 14 + Send_FIFO_fehlerhaft : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 14: Send-FIFO zum PC ist fehlerhaft + Send_FIFO_voll : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 14: Send-FIFO zu PC ist voll + Reset_aktiv : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 14: Reset ist aktiv + Weiche_MB3071 : Struct // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 15 MB3071 + Weichen_DL : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 15: Weichen-Datenliste fehlerhaft + Undef_Weiche : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 15: undefinierte Weiche + BLKMov : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 15: Fehler bei Block kopieren + Haupstrang_DL : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 15: Haupstrang-Datenliste fehlerhaft + Haupstrang_DL_voll : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 15: Haupstrang-Datenliste ist voll + Keine_HSDaten : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 15: Keine Hauptstrang-Daten mehr vorhanden + Rein_FIFO : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 15: Rein-FIFO fehlerhaft + Keine_FIFODaten : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 15: Keine Rein-FIFO-Daten mehr vorhanden + Stau_AusfahrBereich : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 15: Stau im Ausfahrbereich (-> Antrieb gestoppt) + BM_verklemmt_Gerade : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 15: Trolley bei Gerade-Fahrt in Weiche verklemmt (-> Antrieb gestoppt) + BM_verklemmt_Ausfahrt : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 15: Trolley bei Lager-Fahrt in Weiche verklemmt (-> Antrieb gestoppt) + BM_undef_Gerade : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 15: undefinierter Trolley bei Weiterfahrt erkannt + Frei14 : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 15: Frei 14 + Send_FIFO_fehlerhaft : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 15: Send-FIFO zum PC ist fehlerhaft + Send_FIFO_voll : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 15: Send-FIFO zu PC ist voll + Reset_aktiv : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 15: Reset ist aktiv + Weiche_MB3070 : Struct // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 16 MB3070 + Weichen_DL : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 16: Weichen-Datenliste fehlerhaft + Undef_Weiche : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 16: undefinierte Weiche + BLKMov : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 16: Fehler bei Block kopieren + Haupstrang_DL : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 16: Haupstrang-Datenliste fehlerhaft + Haupstrang_DL_voll : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 16: Haupstrang-Datenliste ist voll + Keine_HSDaten : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 16: Keine Hauptstrang-Daten mehr vorhanden + Rein_FIFO : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 16: Rein-FIFO fehlerhaft + Keine_FIFODaten : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 16: Keine Rein-FIFO-Daten mehr vorhanden + Stau_AusfahrBereich : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 16: Stau im Ausfahrbereich (-> Antrieb gestoppt) + BM_verklemmt_Gerade : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 16: Trolley bei Gerade-Fahrt in Weiche verklemmt (-> Antrieb gestoppt) + BM_verklemmt_Ausfahrt : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 16: Trolley bei Lager-Fahrt in Weiche verklemmt (-> Antrieb gestoppt) + BM_undef_Gerade : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 16: undefinierter Trolley bei Weiterfahrt erkannt + Frei14 : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 16: Frei 14 + Send_FIFO_fehlerhaft : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 16: Send-FIFO zum PC ist fehlerhaft + Send_FIFO_voll : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 16: Send-FIFO zu PC ist voll + Reset_aktiv : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 16: Reset ist aktiv + Weiche_MB3067 : Struct // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 17 MB3067 + Weichen_DL : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 17: Weichen-Datenliste fehlerhaft + Undef_Weiche : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 17: undefinierte Weiche + BLKMov : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 17: Fehler bei Block kopieren + Haupstrang_DL : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 17: Haupstrang-Datenliste fehlerhaft + Haupstrang_DL_voll : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 17: Haupstrang-Datenliste ist voll + Keine_HSDaten : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 17: Keine Hauptstrang-Daten mehr vorhanden + Rein_FIFO : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 17: Rein-FIFO fehlerhaft + Keine_FIFODaten : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 17: Keine Rein-FIFO-Daten mehr vorhanden + Stau_AusfahrBereich : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 17: Stau im Ausfahrbereich (-> Antrieb gestoppt) + BM_verklemmt_Gerade : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 17: Trolley bei Gerade-Fahrt in Weiche verklemmt (-> Antrieb gestoppt) + BM_verklemmt_Ausfahrt : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 17: Trolley bei Lager-Fahrt in Weiche verklemmt (-> Antrieb gestoppt) + BM_undef_Gerade : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 17: undefinierter Trolley bei Weiterfahrt erkannt + Frei14 : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 17: Frei 14 + Send_FIFO_fehlerhaft : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 17: Send-FIFO zum PC ist fehlerhaft + Send_FIFO_voll : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 17: Send-FIFO zu PC ist voll + Reset_aktiv : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 17: Reset ist aktiv + Weiche_MB3066 : Struct // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 18 MB3066 + Weichen_DL : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 18: Weichen-Datenliste fehlerhaft + Undef_Weiche : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 18: undefinierte Weiche + BLKMov : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 18: Fehler bei Block kopieren + Haupstrang_DL : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 18: Haupstrang-Datenliste fehlerhaft + Haupstrang_DL_voll : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 18: Haupstrang-Datenliste ist voll + Keine_HSDaten : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 18: Keine Hauptstrang-Daten mehr vorhanden + Rein_FIFO : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 18: Rein-FIFO fehlerhaft + Keine_FIFODaten : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 18: Keine Rein-FIFO-Daten mehr vorhanden + Stau_AusfahrBereich : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 18: Stau im Ausfahrbereich (-> Antrieb gestoppt) + BM_verklemmt_Gerade : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 18: Trolley bei Gerade-Fahrt in Weiche verklemmt (-> Antrieb gestoppt) + BM_verklemmt_Ausfahrt : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 18: Trolley bei Lager-Fahrt in Weiche verklemmt (-> Antrieb gestoppt) + BM_undef_Gerade : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 18: undefinierter Trolley bei Weiterfahrt erkannt + Frei14 : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 18: Frei 14 + Send_FIFO_fehlerhaft : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 18: Send-FIFO zum PC ist fehlerhaft + Send_FIFO_voll : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 18: Send-FIFO zu PC ist voll + Reset_aktiv : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 18: Reset ist aktiv + Weiche_MB3065 : Struct // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 19 MB3065 + Weichen_DL : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 19: Weichen-Datenliste fehlerhaft + Undef_Weiche : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 19: undefinierte Weiche + BLKMov : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 19: Fehler bei Block kopieren + Haupstrang_DL : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 19: Haupstrang-Datenliste fehlerhaft + Haupstrang_DL_voll : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 19: Haupstrang-Datenliste ist voll + Keine_HSDaten : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 19: Keine Hauptstrang-Daten mehr vorhanden + Rein_FIFO : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 19: Rein-FIFO fehlerhaft + Keine_FIFODaten : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 19: Keine Rein-FIFO-Daten mehr vorhanden + Stau_AusfahrBereich : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 19: Stau im Ausfahrbereich (-> Antrieb gestoppt) + BM_verklemmt_Gerade : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 19: Trolley bei Gerade-Fahrt in Weiche verklemmt (-> Antrieb gestoppt) + BM_verklemmt_Ausfahrt : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 19: Trolley bei Lager-Fahrt in Weiche verklemmt (-> Antrieb gestoppt) + BM_undef_Gerade : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 19: undefinierter Trolley bei Weiterfahrt erkannt + Frei14 : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 19: Frei 14 + Send_FIFO_fehlerhaft : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 19: Send-FIFO zum PC ist fehlerhaft + Send_FIFO_voll : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 19: Send-FIFO zu PC ist voll + Reset_aktiv : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 19: Reset ist aktiv + Weiche_MB3064 : Struct // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 20 MB3064 + Weichen_DL : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 20: Weichen-Datenliste fehlerhaft + Undef_Weiche : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 20: undefinierte Weiche + BLKMov : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 20: Fehler bei Block kopieren + Haupstrang_DL : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 20: Haupstrang-Datenliste fehlerhaft + Haupstrang_DL_voll : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 20: Haupstrang-Datenliste ist voll + Keine_HSDaten : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 20: Keine Hauptstrang-Daten mehr vorhanden + Rein_FIFO : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 20: Rein-FIFO fehlerhaft + Keine_FIFODaten : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 20: Keine Rein-FIFO-Daten mehr vorhanden + Stau_AusfahrBereich : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 20: Stau im Ausfahrbereich (-> Antrieb gestoppt) + BM_verklemmt_Gerade : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 20: Trolley bei Gerade-Fahrt in Weiche verklemmt (-> Antrieb gestoppt) + BM_verklemmt_Ausfahrt : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 20: Trolley bei Lager-Fahrt in Weiche verklemmt (-> Antrieb gestoppt) + BM_undef_Gerade : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 20: undefinierter Trolley bei Weiterfahrt erkannt + Frei14 : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 20: Frei 14 + Send_FIFO_fehlerhaft : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 20: Send-FIFO zum PC ist fehlerhaft + Send_FIFO_voll : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 20: Send-FIFO zu PC ist voll + Reset_aktiv : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 20: Reset ist aktiv + Weiche_MB3063 : Struct // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 21 MB3063 + Weichen_DL : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 21: Weichen-Datenliste fehlerhaft + Undef_Weiche : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 21: undefinierte Weiche + BLKMov : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 21: Fehler bei Block kopieren + Haupstrang_DL : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 21: Haupstrang-Datenliste fehlerhaft + Haupstrang_DL_voll : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 21: Haupstrang-Datenliste ist voll + Keine_HSDaten : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 21: Keine Hauptstrang-Daten mehr vorhanden + Rein_FIFO : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 21: Rein-FIFO fehlerhaft + Keine_FIFODaten : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 21: Keine Rein-FIFO-Daten mehr vorhanden + Stau_AusfahrBereich : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 21: Stau im Ausfahrbereich (-> Antrieb gestoppt) + BM_verklemmt_Gerade : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 21: Trolley bei Gerade-Fahrt in Weiche verklemmt (-> Antrieb gestoppt) + BM_verklemmt_Ausfahrt : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 21: Trolley bei Lager-Fahrt in Weiche verklemmt (-> Antrieb gestoppt) + BM_undef_Gerade : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 21: undefinierter Trolley bei Weiterfahrt erkannt + Frei14 : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 21: Frei 14 + Send_FIFO_fehlerhaft : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 21: Send-FIFO zum PC ist fehlerhaft + Send_FIFO_voll : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 21: Send-FIFO zu PC ist voll + Reset_aktiv : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 21: Reset ist aktiv + Weiche_MB3027 : Struct // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 22 MB3027 + Weichen_DL : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 22: Weichen-Datenliste fehlerhaft + Undef_Weiche : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 22: undefinierte Weiche + BLKMov : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 22: Fehler bei Block kopieren + Haupstrang_DL : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 22: Haupstrang-Datenliste fehlerhaft + Haupstrang_DL_voll : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 22: Haupstrang-Datenliste ist voll + Keine_HSDaten : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 22: Keine Hauptstrang-Daten mehr vorhanden + Rein_FIFO : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 22: Rein-FIFO fehlerhaft + Keine_FIFODaten : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 22: Keine Rein-FIFO-Daten mehr vorhanden + Stau_AusfahrBereich : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 22: Stau im Ausfahrbereich (-> Antrieb gestoppt) + BM_verklemmt_Gerade : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 22: Trolley bei Gerade-Fahrt in Weiche verklemmt (-> Antrieb gestoppt) + BM_verklemmt_Ausfahrt : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 22: Trolley bei Lager-Fahrt in Weiche verklemmt (-> Antrieb gestoppt) + BM_undef_Gerade : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 22: undefinierter Trolley bei Weiterfahrt erkannt + Frei14 : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 22: Frei 14 + Send_FIFO_fehlerhaft : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 22: Send-FIFO zum PC ist fehlerhaft + Send_FIFO_voll : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 22: Send-FIFO zu PC ist voll + Reset_aktiv : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 22: Reset ist aktiv + Weiche_MB3026 : Struct // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 23 MB3026 + Weichen_DL : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 23: Weichen-Datenliste fehlerhaft + Undef_Weiche : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 23: undefinierte Weiche + BLKMov : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 23: Fehler bei Block kopieren + Haupstrang_DL : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 23: Haupstrang-Datenliste fehlerhaft + Haupstrang_DL_voll : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 23: Haupstrang-Datenliste ist voll + Keine_HSDaten : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 23: Keine Hauptstrang-Daten mehr vorhanden + Rein_FIFO : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 23: Rein-FIFO fehlerhaft + Keine_FIFODaten : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 23: Keine Rein-FIFO-Daten mehr vorhanden + Stau_AusfahrBereich : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 23: Stau im Ausfahrbereich (-> Antrieb gestoppt) + BM_verklemmt_Gerade : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 23: Trolley bei Gerade-Fahrt in Weiche verklemmt (-> Antrieb gestoppt) + BM_verklemmt_Ausfahrt : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 23: Trolley bei Lager-Fahrt in Weiche verklemmt (-> Antrieb gestoppt) + BM_undef_Gerade : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 23: undefinierter Trolley bei Weiterfahrt erkannt + Frei14 : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 23: Frei 14 + Send_FIFO_fehlerhaft : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 23: Send-FIFO zum PC ist fehlerhaft + Send_FIFO_voll : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 23: Send-FIFO zu PC ist voll + Reset_aktiv : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 23: Reset ist aktiv + Weiche_MB3025 : Struct // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 24 MB3025 + Weichen_DL : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 24: Weichen-Datenliste fehlerhaft + Undef_Weiche : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 24: undefinierte Weiche + BLKMov : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 24: Fehler bei Block kopieren + Haupstrang_DL : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 24: Haupstrang-Datenliste fehlerhaft + Haupstrang_DL_voll : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 24: Haupstrang-Datenliste ist voll + Keine_HSDaten : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 24: Keine Hauptstrang-Daten mehr vorhanden + Rein_FIFO : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 24: Rein-FIFO fehlerhaft + Keine_FIFODaten : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 24: Keine Rein-FIFO-Daten mehr vorhanden + Stau_AusfahrBereich : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 24: Stau im Ausfahrbereich (-> Antrieb gestoppt) + BM_verklemmt_Gerade : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 24: Trolley bei Gerade-Fahrt in Weiche verklemmt (-> Antrieb gestoppt) + BM_verklemmt_Ausfahrt : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 24: Trolley bei Lager-Fahrt in Weiche verklemmt (-> Antrieb gestoppt) + BM_undef_Gerade : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 24: undefinierter Trolley bei Weiterfahrt erkannt + Frei14 : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 24: Frei 14 + Send_FIFO_fehlerhaft : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 24: Send-FIFO zum PC ist fehlerhaft + Send_FIFO_voll : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 24: Send-FIFO zu PC ist voll + Reset_aktiv : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 24: Reset ist aktiv + Weiche_MB3024 : Struct // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 25 MB3024 + Weichen_DL : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 25: Weichen-Datenliste fehlerhaft + Undef_Weiche : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 25: undefinierte Weiche + BLKMov : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 25: Fehler bei Block kopieren + Haupstrang_DL : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 25: Haupstrang-Datenliste fehlerhaft + Haupstrang_DL_voll : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 25: Haupstrang-Datenliste ist voll + Keine_HSDaten : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 25: Keine Hauptstrang-Daten mehr vorhanden + Rein_FIFO : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 25: Rein-FIFO fehlerhaft + Keine_FIFODaten : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 25: Keine Rein-FIFO-Daten mehr vorhanden + Stau_AusfahrBereich : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 25: Stau im Ausfahrbereich (-> Antrieb gestoppt) + BM_verklemmt_Gerade : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 25: Trolley bei Gerade-Fahrt in Weiche verklemmt (-> Antrieb gestoppt) + BM_verklemmt_Ausfahrt : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 25: Trolley bei Lager-Fahrt in Weiche verklemmt (-> Antrieb gestoppt) + BM_undef_Gerade : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 25: undefinierter Trolley bei Weiterfahrt erkannt + Frei14 : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 25: Frei 14 + Send_FIFO_fehlerhaft : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 25: Send-FIFO zum PC ist fehlerhaft + Send_FIFO_voll : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 25: Send-FIFO zu PC ist voll + Reset_aktiv : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 25: Reset ist aktiv + Weiche_MB3023 : Struct // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 26 MB3023 + Weichen_DL : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 26: Weichen-Datenliste fehlerhaft + Undef_Weiche : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 26: undefinierte Weiche + BLKMov : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 26: Fehler bei Block kopieren + Haupstrang_DL : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 26: Haupstrang-Datenliste fehlerhaft + Haupstrang_DL_voll : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 26: Haupstrang-Datenliste ist voll + Keine_HSDaten : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 26: Keine Hauptstrang-Daten mehr vorhanden + Rein_FIFO : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 26: Rein-FIFO fehlerhaft + Keine_FIFODaten : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 26: Keine Rein-FIFO-Daten mehr vorhanden + Stau_AusfahrBereich : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 26: Stau im Ausfahrbereich (-> Antrieb gestoppt) + BM_verklemmt_Gerade : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 26: Trolley bei Gerade-Fahrt in Weiche verklemmt (-> Antrieb gestoppt) + BM_verklemmt_Ausfahrt : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 26: Trolley bei Lager-Fahrt in Weiche verklemmt (-> Antrieb gestoppt) + BM_undef_Gerade : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 26: undefinierter Trolley bei Weiterfahrt erkannt + Frei14 : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 26: Frei 14 + Send_FIFO_fehlerhaft : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 26: Send-FIFO zum PC ist fehlerhaft + Send_FIFO_voll : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 26: Send-FIFO zu PC ist voll + Reset_aktiv : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 26: Reset ist aktiv + Weiche_MB3022 : Struct // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 27 MB3022 + Weichen_DL : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 27: Weichen-Datenliste fehlerhaft + Undef_Weiche : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 27: undefinierte Weiche + BLKMov : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 27: Fehler bei Block kopieren + Haupstrang_DL : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 27: Haupstrang-Datenliste fehlerhaft + Haupstrang_DL_voll : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 27: Haupstrang-Datenliste ist voll + Keine_HSDaten : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 27: Keine Hauptstrang-Daten mehr vorhanden + Rein_FIFO : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 27: Rein-FIFO fehlerhaft + Keine_FIFODaten : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 27: Keine Rein-FIFO-Daten mehr vorhanden + Stau_AusfahrBereich : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 27: Stau im Ausfahrbereich (-> Antrieb gestoppt) + BM_verklemmt_Gerade : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 27: Trolley bei Gerade-Fahrt in Weiche verklemmt (-> Antrieb gestoppt) + BM_verklemmt_Ausfahrt : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 27: Trolley bei Lager-Fahrt in Weiche verklemmt (-> Antrieb gestoppt) + BM_undef_Gerade : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 27: undefinierter Trolley bei Weiterfahrt erkannt + Frei14 : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 27: Frei 14 + Send_FIFO_fehlerhaft : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 27: Send-FIFO zum PC ist fehlerhaft + Send_FIFO_voll : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 27: Send-FIFO zu PC ist voll + Reset_aktiv : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 27: Reset ist aktiv + Weiche_MB3021 : Struct // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 28 MB3021 + Weichen_DL : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 28: Weichen-Datenliste fehlerhaft + Undef_Weiche : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 28: undefinierte Weiche + BLKMov : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 28: Fehler bei Block kopieren + Haupstrang_DL : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 28: Haupstrang-Datenliste fehlerhaft + Haupstrang_DL_voll : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 28: Haupstrang-Datenliste ist voll + Keine_HSDaten : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 28: Keine Hauptstrang-Daten mehr vorhanden + Rein_FIFO : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 28: Rein-FIFO fehlerhaft + Keine_FIFODaten : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 28: Keine Rein-FIFO-Daten mehr vorhanden + Stau_AusfahrBereich : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 28: Stau im Ausfahrbereich (-> Antrieb gestoppt) + BM_verklemmt_Gerade : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 28: Trolley bei Gerade-Fahrt in Weiche verklemmt (-> Antrieb gestoppt) + BM_verklemmt_Ausfahrt : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 28: Trolley bei Lager-Fahrt in Weiche verklemmt (-> Antrieb gestoppt) + BM_undef_Gerade : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 28: undefinierter Trolley bei Weiterfahrt erkannt + Frei14 : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 28: Frei 14 + Send_FIFO_fehlerhaft : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 28: Send-FIFO zum PC ist fehlerhaft + Send_FIFO_voll : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 28: Send-FIFO zu PC ist voll + Reset_aktiv : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 28: Reset ist aktiv + Weiche_MB3020 : Struct // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 29 MB3020 + Weichen_DL : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 29: Weichen-Datenliste fehlerhaft + Undef_Weiche : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 29: undefinierte Weiche + BLKMov : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 29: Fehler bei Block kopieren + Haupstrang_DL : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 29: Haupstrang-Datenliste fehlerhaft + Haupstrang_DL_voll : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 29: Haupstrang-Datenliste ist voll + Keine_HSDaten : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 29: Keine Hauptstrang-Daten mehr vorhanden + Rein_FIFO : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 29: Rein-FIFO fehlerhaft + Keine_FIFODaten : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 29: Keine Rein-FIFO-Daten mehr vorhanden + Stau_AusfahrBereich : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 29: Stau im Ausfahrbereich (-> Antrieb gestoppt) + BM_verklemmt_Gerade : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 29: Trolley bei Gerade-Fahrt in Weiche verklemmt (-> Antrieb gestoppt) + BM_verklemmt_Ausfahrt : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 29: Trolley bei Lager-Fahrt in Weiche verklemmt (-> Antrieb gestoppt) + BM_undef_Gerade : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 29: undefinierter Trolley bei Weiterfahrt erkannt + Frei14 : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 29: Frei 14 + Send_FIFO_fehlerhaft : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 29: Send-FIFO zum PC ist fehlerhaft + Send_FIFO_voll : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 29: Send-FIFO zu PC ist voll + Reset_aktiv : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 29: Reset ist aktiv + Weiche_MB3017 : Struct // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 30 MB3017 + Weichen_DL : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 30: Weichen-Datenliste fehlerhaft + Undef_Weiche : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 30: undefinierte Weiche + BLKMov : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 30: Fehler bei Block kopieren + Haupstrang_DL : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 30: Haupstrang-Datenliste fehlerhaft + Haupstrang_DL_voll : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 30: Haupstrang-Datenliste ist voll + Keine_HSDaten : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 30: Keine Hauptstrang-Daten mehr vorhanden + Rein_FIFO : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 30: Rein-FIFO fehlerhaft + Keine_FIFODaten : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 30: Keine Rein-FIFO-Daten mehr vorhanden + Stau_AusfahrBereich : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 30: Stau im Ausfahrbereich (-> Antrieb gestoppt) + BM_verklemmt_Gerade : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 30: Trolley bei Gerade-Fahrt in Weiche verklemmt (-> Antrieb gestoppt) + BM_verklemmt_Ausfahrt : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 30: Trolley bei Lager-Fahrt in Weiche verklemmt (-> Antrieb gestoppt) + BM_undef_Gerade : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 30: undefinierter Trolley bei Weiterfahrt erkannt + Frei14 : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 30: Frei 14 + Send_FIFO_fehlerhaft : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 30: Send-FIFO zum PC ist fehlerhaft + Send_FIFO_voll : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 30: Send-FIFO zu PC ist voll + Reset_aktiv : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 30: Reset ist aktiv + Weiche_MB3016 : Struct // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 31 MB3016 + Weichen_DL : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 31: Weichen-Datenliste fehlerhaft + Undef_Weiche : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 31: undefinierte Weiche + BLKMov : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 31: Fehler bei Block kopieren + Haupstrang_DL : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 31: Haupstrang-Datenliste fehlerhaft + Haupstrang_DL_voll : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 31: Haupstrang-Datenliste ist voll + Keine_HSDaten : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 31: Keine Hauptstrang-Daten mehr vorhanden + Rein_FIFO : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 31: Rein-FIFO fehlerhaft + Keine_FIFODaten : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 31: Keine Rein-FIFO-Daten mehr vorhanden + Stau_AusfahrBereich : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 31: Stau im Ausfahrbereich (-> Antrieb gestoppt) + BM_verklemmt_Gerade : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 31: Trolley bei Gerade-Fahrt in Weiche verklemmt (-> Antrieb gestoppt) + BM_verklemmt_Ausfahrt : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 31: Trolley bei Lager-Fahrt in Weiche verklemmt (-> Antrieb gestoppt) + BM_undef_Gerade : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 31: undefinierter Trolley bei Weiterfahrt erkannt + Frei14 : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 31: Frei 14 + Send_FIFO_fehlerhaft : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 31: Send-FIFO zum PC ist fehlerhaft + Send_FIFO_voll : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 31: Send-FIFO zu PC ist voll + Reset_aktiv : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 31: Reset ist aktiv + Weiche_MB3015 : Struct // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 32 MB3015 + Weichen_DL : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 32: Weichen-Datenliste fehlerhaft + Undef_Weiche : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 32: undefinierte Weiche + BLKMov : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 32: Fehler bei Block kopieren + Haupstrang_DL : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 32: Haupstrang-Datenliste fehlerhaft + Haupstrang_DL_voll : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 32: Haupstrang-Datenliste ist voll + Keine_HSDaten : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 32: Keine Hauptstrang-Daten mehr vorhanden + Rein_FIFO : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 32: Rein-FIFO fehlerhaft + Keine_FIFODaten : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 32: Keine Rein-FIFO-Daten mehr vorhanden + Stau_AusfahrBereich : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 32: Stau im Ausfahrbereich (-> Antrieb gestoppt) + BM_verklemmt_Gerade : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 32: Trolley bei Gerade-Fahrt in Weiche verklemmt (-> Antrieb gestoppt) + BM_verklemmt_Ausfahrt : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 32: Trolley bei Lager-Fahrt in Weiche verklemmt (-> Antrieb gestoppt) + BM_undef_Gerade : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 32: undefinierter Trolley bei Weiterfahrt erkannt + Frei14 : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 32: Frei 14 + Send_FIFO_fehlerhaft : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 32: Send-FIFO zum PC ist fehlerhaft + Send_FIFO_voll : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 32: Send-FIFO zu PC ist voll + Reset_aktiv : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 32: Reset ist aktiv + Weiche_MB3014 : Struct // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 33 MB3014 + Weichen_DL : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 33: Weichen-Datenliste fehlerhaft + Undef_Weiche : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 33: undefinierte Weiche + BLKMov : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 33: Fehler bei Block kopieren + Haupstrang_DL : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 33: Haupstrang-Datenliste fehlerhaft + Haupstrang_DL_voll : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 33: Haupstrang-Datenliste ist voll + Keine_HSDaten : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 33: Keine Hauptstrang-Daten mehr vorhanden + Rein_FIFO : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 33: Rein-FIFO fehlerhaft + Keine_FIFODaten : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 33: Keine Rein-FIFO-Daten mehr vorhanden + Stau_AusfahrBereich : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 33: Stau im Ausfahrbereich (-> Antrieb gestoppt) + BM_verklemmt_Gerade : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 33: Trolley bei Gerade-Fahrt in Weiche verklemmt (-> Antrieb gestoppt) + BM_verklemmt_Ausfahrt : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 33: Trolley bei Lager-Fahrt in Weiche verklemmt (-> Antrieb gestoppt) + BM_undef_Gerade : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 33: undefinierter Trolley bei Weiterfahrt erkannt + Frei14 : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 33: Frei 14 + Send_FIFO_fehlerhaft : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 33: Send-FIFO zum PC ist fehlerhaft + Send_FIFO_voll : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 33: Send-FIFO zu PC ist voll + Reset_aktiv : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 33: Reset ist aktiv + Weiche_MB3013 : Struct // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 34 MB3013 + Weichen_DL : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 34: Weichen-Datenliste fehlerhaft + Undef_Weiche : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 34: undefinierte Weiche + BLKMov : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 34: Fehler bei Block kopieren + Haupstrang_DL : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 34: Haupstrang-Datenliste fehlerhaft + Haupstrang_DL_voll : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 34: Haupstrang-Datenliste ist voll + Keine_HSDaten : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 34: Keine Hauptstrang-Daten mehr vorhanden + Rein_FIFO : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 34: Rein-FIFO fehlerhaft + Keine_FIFODaten : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 34: Keine Rein-FIFO-Daten mehr vorhanden + Stau_AusfahrBereich : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 34: Stau im Ausfahrbereich (-> Antrieb gestoppt) + BM_verklemmt_Gerade : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 34: Trolley bei Gerade-Fahrt in Weiche verklemmt (-> Antrieb gestoppt) + BM_verklemmt_Ausfahrt : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 34: Trolley bei Lager-Fahrt in Weiche verklemmt (-> Antrieb gestoppt) + BM_undef_Gerade : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 34: undefinierter Trolley bei Weiterfahrt erkannt + Frei14 : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 34: Frei 14 + Send_FIFO_fehlerhaft : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 34: Send-FIFO zum PC ist fehlerhaft + Send_FIFO_voll : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 34: Send-FIFO zu PC ist voll + Reset_aktiv : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 34: Reset ist aktiv + Weiche_MB3012 : Struct // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 35 MB3012 + Weichen_DL : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 35: Weichen-Datenliste fehlerhaft + Undef_Weiche : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 35: undefinierte Weiche + BLKMov : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 35: Fehler bei Block kopieren + Haupstrang_DL : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 35: Haupstrang-Datenliste fehlerhaft + Haupstrang_DL_voll : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 35: Haupstrang-Datenliste ist voll + Keine_HSDaten : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 35: Keine Hauptstrang-Daten mehr vorhanden + Rein_FIFO : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 35: Rein-FIFO fehlerhaft + Keine_FIFODaten : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 35: Keine Rein-FIFO-Daten mehr vorhanden + Stau_AusfahrBereich : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 35: Stau im Ausfahrbereich (-> Antrieb gestoppt) + BM_verklemmt_Gerade : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 35: Trolley bei Gerade-Fahrt in Weiche verklemmt (-> Antrieb gestoppt) + BM_verklemmt_Ausfahrt : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 35: Trolley bei Lager-Fahrt in Weiche verklemmt (-> Antrieb gestoppt) + BM_undef_Gerade : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 35: undefinierter Trolley bei Weiterfahrt erkannt + Frei14 : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 35: Frei 14 + Send_FIFO_fehlerhaft : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 35: Send-FIFO zum PC ist fehlerhaft + Send_FIFO_voll : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 35: Send-FIFO zu PC ist voll + Reset_aktiv : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 35: Reset ist aktiv + Weiche_MB3011 : Struct // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 36 MB3011 + Weichen_DL : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 36: Weichen-Datenliste fehlerhaft + Undef_Weiche : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 36: undefinierte Weiche + BLKMov : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 36: Fehler bei Block kopieren + Haupstrang_DL : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 36: Haupstrang-Datenliste fehlerhaft + Haupstrang_DL_voll : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 36: Haupstrang-Datenliste ist voll + Keine_HSDaten : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 36: Keine Hauptstrang-Daten mehr vorhanden + Rein_FIFO : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 36: Rein-FIFO fehlerhaft + Keine_FIFODaten : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 36: Keine Rein-FIFO-Daten mehr vorhanden + Stau_AusfahrBereich : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 36: Stau im Ausfahrbereich (-> Antrieb gestoppt) + BM_verklemmt_Gerade : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 36: Trolley bei Gerade-Fahrt in Weiche verklemmt (-> Antrieb gestoppt) + BM_verklemmt_Ausfahrt : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 36: Trolley bei Lager-Fahrt in Weiche verklemmt (-> Antrieb gestoppt) + BM_undef_Gerade : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 36: undefinierter Trolley bei Weiterfahrt erkannt + Frei14 : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 36: Frei 14 + Send_FIFO_fehlerhaft : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 36: Send-FIFO zum PC ist fehlerhaft + Send_FIFO_voll : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 36: Send-FIFO zu PC ist voll + Reset_aktiv : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 36: Reset ist aktiv + Weiche_MB3010 : Struct // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 37 MB3010 + Weichen_DL : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 37: Weichen-Datenliste fehlerhaft + Undef_Weiche : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 37: undefinierte Weiche + BLKMov : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 37: Fehler bei Block kopieren + Haupstrang_DL : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 37: Haupstrang-Datenliste fehlerhaft + Haupstrang_DL_voll : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 37: Haupstrang-Datenliste ist voll + Keine_HSDaten : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 37: Keine Hauptstrang-Daten mehr vorhanden + Rein_FIFO : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 37: Rein-FIFO fehlerhaft + Keine_FIFODaten : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 37: Keine Rein-FIFO-Daten mehr vorhanden + Stau_AusfahrBereich : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 37: Stau im Ausfahrbereich (-> Antrieb gestoppt) + BM_verklemmt_Gerade : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 37: Trolley bei Gerade-Fahrt in Weiche verklemmt (-> Antrieb gestoppt) + BM_verklemmt_Ausfahrt : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 37: Trolley bei Lager-Fahrt in Weiche verklemmt (-> Antrieb gestoppt) + BM_undef_Gerade : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 37: undefinierter Trolley bei Weiterfahrt erkannt + Frei14 : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 37: Frei 14 + Send_FIFO_fehlerhaft : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 37: Send-FIFO zum PC ist fehlerhaft + Send_FIFO_voll : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 37: Send-FIFO zu PC ist voll + Reset_aktiv : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 37: Reset ist aktiv + Weiche_MB3007 : Struct // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 38 MB3007 + Weichen_DL : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 38: Weichen-Datenliste fehlerhaft + Undef_Weiche : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 38: undefinierte Weiche + BLKMov : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 38: Fehler bei Block kopieren + Haupstrang_DL : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 38: Haupstrang-Datenliste fehlerhaft + Haupstrang_DL_voll : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 38: Haupstrang-Datenliste ist voll + Keine_HSDaten : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 38: Keine Hauptstrang-Daten mehr vorhanden + Rein_FIFO : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 38: Rein-FIFO fehlerhaft + Keine_FIFODaten : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 38: Keine Rein-FIFO-Daten mehr vorhanden + Stau_AusfahrBereich : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 38: Stau im Ausfahrbereich (-> Antrieb gestoppt) + BM_verklemmt_Gerade : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 38: Trolley bei Gerade-Fahrt in Weiche verklemmt (-> Antrieb gestoppt) + BM_verklemmt_Ausfahrt : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 38: Trolley bei Lager-Fahrt in Weiche verklemmt (-> Antrieb gestoppt) + BM_undef_Gerade : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 38: undefinierter Trolley bei Weiterfahrt erkannt + Frei14 : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 38: Frei 14 + Send_FIFO_fehlerhaft : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 38: Send-FIFO zum PC ist fehlerhaft + Send_FIFO_voll : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 38: Send-FIFO zu PC ist voll + Reset_aktiv : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 38: Reset ist aktiv + Weiche_MB3006 : Struct // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 39 MB3006 + Weichen_DL : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 39: Weichen-Datenliste fehlerhaft + Undef_Weiche : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 39: undefinierte Weiche + BLKMov : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 39: Fehler bei Block kopieren + Haupstrang_DL : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 39: Haupstrang-Datenliste fehlerhaft + Haupstrang_DL_voll : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 39: Haupstrang-Datenliste ist voll + Keine_HSDaten : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 39: Keine Hauptstrang-Daten mehr vorhanden + Rein_FIFO : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 39: Rein-FIFO fehlerhaft + Keine_FIFODaten : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 39: Keine Rein-FIFO-Daten mehr vorhanden + Stau_AusfahrBereich : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 39: Stau im Ausfahrbereich (-> Antrieb gestoppt) + BM_verklemmt_Gerade : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 39: Trolley bei Gerade-Fahrt in Weiche verklemmt (-> Antrieb gestoppt) + BM_verklemmt_Ausfahrt : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 39: Trolley bei Lager-Fahrt in Weiche verklemmt (-> Antrieb gestoppt) + BM_undef_Gerade : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 39: undefinierter Trolley bei Weiterfahrt erkannt + Frei14 : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 39: Frei 14 + Send_FIFO_fehlerhaft : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 39: Send-FIFO zum PC ist fehlerhaft + Send_FIFO_voll : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 39: Send-FIFO zu PC ist voll + Reset_aktiv : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 39: Reset ist aktiv + Weiche_MB3005 : Struct // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 40 MB3005 + Weichen_DL : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 40: Weichen-Datenliste fehlerhaft + Undef_Weiche : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 40: undefinierte Weiche + BLKMov : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 40: Fehler bei Block kopieren + Haupstrang_DL : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 40: Haupstrang-Datenliste fehlerhaft + Haupstrang_DL_voll : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 40: Haupstrang-Datenliste ist voll + Keine_HSDaten : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 40: Keine Hauptstrang-Daten mehr vorhanden + Rein_FIFO : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 40: Rein-FIFO fehlerhaft + Keine_FIFODaten : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 40: Keine Rein-FIFO-Daten mehr vorhanden + Stau_AusfahrBereich : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 40: Stau im Ausfahrbereich (-> Antrieb gestoppt) + BM_verklemmt_Gerade : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 40: Trolley bei Gerade-Fahrt in Weiche verklemmt (-> Antrieb gestoppt) + BM_verklemmt_Ausfahrt : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 40: Trolley bei Lager-Fahrt in Weiche verklemmt (-> Antrieb gestoppt) + BM_undef_Gerade : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 40: undefinierter Trolley bei Weiterfahrt erkannt + Frei14 : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 40: Frei 14 + Send_FIFO_fehlerhaft : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 40: Send-FIFO zum PC ist fehlerhaft + Send_FIFO_voll : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 40: Send-FIFO zu PC ist voll + Reset_aktiv : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 40: Reset ist aktiv + Weiche_MB3435 : Struct // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 41 MB3435 + Weichen_DL : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 41: Weichen-Datenliste fehlerhaft + Undef_Weiche : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 41: undefinierte Weiche + BLKMov : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 41: Fehler bei Block kopieren + Haupstrang_DL : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 41: Haupstrang-Datenliste fehlerhaft + Haupstrang_DL_voll : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 41: Haupstrang-Datenliste ist voll + Keine_HSDaten : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 41: Keine Hauptstrang-Daten mehr vorhanden + Rein_FIFO : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 41: Rein-FIFO fehlerhaft + Keine_FIFODaten : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 41: Keine Rein-FIFO-Daten mehr vorhanden + Stau_AusfahrBereich : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 41: Stau im Ausfahrbereich (-> Antrieb gestoppt) + BM_verklemmt_Gerade : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 41: Trolley bei Gerade-Fahrt in Weiche verklemmt (-> Antrieb gestoppt) + BM_verklemmt_Ausfahrt : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 41: Trolley bei Lager-Fahrt in Weiche verklemmt (-> Antrieb gestoppt) + BM_undef_Gerade : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 41: undefinierter Trolley bei Weiterfahrt erkannt + Frei14 : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 41: Frei 14 + Send_FIFO_fehlerhaft : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 41: Send-FIFO zum PC ist fehlerhaft + Send_FIFO_voll : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 41: Send-FIFO zu PC ist voll + Reset_aktiv : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 41: Reset ist aktiv + Weiche_MB3434 : Struct // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 42 MB3434 + Weichen_DL : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 42: Weichen-Datenliste fehlerhaft + Undef_Weiche : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 42: undefinierte Weiche + BLKMov : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 42: Fehler bei Block kopieren + Haupstrang_DL : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 42: Haupstrang-Datenliste fehlerhaft + Haupstrang_DL_voll : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 42: Haupstrang-Datenliste ist voll + Keine_HSDaten : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 42: Keine Hauptstrang-Daten mehr vorhanden + Rein_FIFO : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 42: Rein-FIFO fehlerhaft + Keine_FIFODaten : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 42: Keine Rein-FIFO-Daten mehr vorhanden + Stau_AusfahrBereich : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 42: Stau im Ausfahrbereich (-> Antrieb gestoppt) + BM_verklemmt_Gerade : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 42: Trolley bei Gerade-Fahrt in Weiche verklemmt (-> Antrieb gestoppt) + BM_verklemmt_Ausfahrt : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 42: Trolley bei Lager-Fahrt in Weiche verklemmt (-> Antrieb gestoppt) + BM_undef_Gerade : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 42: undefinierter Trolley bei Weiterfahrt erkannt + Frei14 : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 42: Frei 14 + Send_FIFO_fehlerhaft : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 42: Send-FIFO zum PC ist fehlerhaft + Send_FIFO_voll : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 42: Send-FIFO zu PC ist voll + Reset_aktiv : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 42: Reset ist aktiv + Weiche_MB3433 : Struct // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 43 MB3433 + Weichen_DL : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 43: Weichen-Datenliste fehlerhaft + Undef_Weiche : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 43: undefinierte Weiche + BLKMov : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 43: Fehler bei Block kopieren + Haupstrang_DL : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 43: Haupstrang-Datenliste fehlerhaft + Haupstrang_DL_voll : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 43: Haupstrang-Datenliste ist voll + Keine_HSDaten : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 43: Keine Hauptstrang-Daten mehr vorhanden + Rein_FIFO : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 43: Rein-FIFO fehlerhaft + Keine_FIFODaten : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 43: Keine Rein-FIFO-Daten mehr vorhanden + Stau_AusfahrBereich : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 43: Stau im Ausfahrbereich (-> Antrieb gestoppt) + BM_verklemmt_Gerade : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 43: Trolley bei Gerade-Fahrt in Weiche verklemmt (-> Antrieb gestoppt) + BM_verklemmt_Ausfahrt : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 43: Trolley bei Lager-Fahrt in Weiche verklemmt (-> Antrieb gestoppt) + BM_undef_Gerade : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 43: undefinierter Trolley bei Weiterfahrt erkannt + Frei14 : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 43: Frei 14 + Send_FIFO_fehlerhaft : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 43: Send-FIFO zum PC ist fehlerhaft + Send_FIFO_voll : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 43: Send-FIFO zu PC ist voll + Reset_aktiv : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 43: Reset ist aktiv + Weiche_MB3432 : Struct // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 44 MB3432 + Weichen_DL : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 44: Weichen-Datenliste fehlerhaft + Undef_Weiche : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 44: undefinierte Weiche + BLKMov : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 44: Fehler bei Block kopieren + Haupstrang_DL : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 44: Haupstrang-Datenliste fehlerhaft + Haupstrang_DL_voll : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 44: Haupstrang-Datenliste ist voll + Keine_HSDaten : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 44: Keine Hauptstrang-Daten mehr vorhanden + Rein_FIFO : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 44: Rein-FIFO fehlerhaft + Keine_FIFODaten : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 44: Keine Rein-FIFO-Daten mehr vorhanden + Stau_AusfahrBereich : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 44: Stau im Ausfahrbereich (-> Antrieb gestoppt) + BM_verklemmt_Gerade : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 44: Trolley bei Gerade-Fahrt in Weiche verklemmt (-> Antrieb gestoppt) + BM_verklemmt_Ausfahrt : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 44: Trolley bei Lager-Fahrt in Weiche verklemmt (-> Antrieb gestoppt) + BM_undef_Gerade : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 44: undefinierter Trolley bei Weiterfahrt erkannt + Frei14 : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 44: Frei 14 + Send_FIFO_fehlerhaft : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 44: Send-FIFO zum PC ist fehlerhaft + Send_FIFO_voll : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 44: Send-FIFO zu PC ist voll + Reset_aktiv : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 44: Reset ist aktiv + Weiche_MB3431 : Struct // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 45 MB3431 + Weichen_DL : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 45: Weichen-Datenliste fehlerhaft + Undef_Weiche : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 45: undefinierte Weiche + BLKMov : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 45: Fehler bei Block kopieren + Haupstrang_DL : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 45: Haupstrang-Datenliste fehlerhaft + Haupstrang_DL_voll : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 45: Haupstrang-Datenliste ist voll + Keine_HSDaten : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 45: Keine Hauptstrang-Daten mehr vorhanden + Rein_FIFO : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 45: Rein-FIFO fehlerhaft + Keine_FIFODaten : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 45: Keine Rein-FIFO-Daten mehr vorhanden + Stau_AusfahrBereich : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 45: Stau im Ausfahrbereich (-> Antrieb gestoppt) + BM_verklemmt_Gerade : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 45: Trolley bei Gerade-Fahrt in Weiche verklemmt (-> Antrieb gestoppt) + BM_verklemmt_Ausfahrt : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 45: Trolley bei Lager-Fahrt in Weiche verklemmt (-> Antrieb gestoppt) + BM_undef_Gerade : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 45: undefinierter Trolley bei Weiterfahrt erkannt + Frei14 : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 45: Frei 14 + Send_FIFO_fehlerhaft : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 45: Send-FIFO zum PC ist fehlerhaft + Send_FIFO_voll : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 45: Send-FIFO zu PC ist voll + Reset_aktiv : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 45: Reset ist aktiv + Weiche_MB3430 : Struct // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 46 MB3430 + Weichen_DL : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 46: Weichen-Datenliste fehlerhaft + Undef_Weiche : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 46: undefinierte Weiche + BLKMov : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 46: Fehler bei Block kopieren + Haupstrang_DL : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 46: Haupstrang-Datenliste fehlerhaft + Haupstrang_DL_voll : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 46: Haupstrang-Datenliste ist voll + Keine_HSDaten : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 46: Keine Hauptstrang-Daten mehr vorhanden + Rein_FIFO : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 46: Rein-FIFO fehlerhaft + Keine_FIFODaten : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 46: Keine Rein-FIFO-Daten mehr vorhanden + Stau_AusfahrBereich : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 46: Stau im Ausfahrbereich (-> Antrieb gestoppt) + BM_verklemmt_Gerade : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 46: Trolley bei Gerade-Fahrt in Weiche verklemmt (-> Antrieb gestoppt) + BM_verklemmt_Ausfahrt : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 46: Trolley bei Lager-Fahrt in Weiche verklemmt (-> Antrieb gestoppt) + BM_undef_Gerade : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 46: undefinierter Trolley bei Weiterfahrt erkannt + Frei14 : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 46: Frei 14 + Send_FIFO_fehlerhaft : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 46: Send-FIFO zum PC ist fehlerhaft + Send_FIFO_voll : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 46: Send-FIFO zu PC ist voll + Reset_aktiv : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 46: Reset ist aktiv + Weiche_MB3427 : Struct // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 47 MB3427 + Weichen_DL : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 47: Weichen-Datenliste fehlerhaft + Undef_Weiche : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 47: undefinierte Weiche + BLKMov : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 47: Fehler bei Block kopieren + Haupstrang_DL : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 47: Haupstrang-Datenliste fehlerhaft + Haupstrang_DL_voll : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 47: Haupstrang-Datenliste ist voll + Keine_HSDaten : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 47: Keine Hauptstrang-Daten mehr vorhanden + Rein_FIFO : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 47: Rein-FIFO fehlerhaft + Keine_FIFODaten : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 47: Keine Rein-FIFO-Daten mehr vorhanden + Stau_AusfahrBereich : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 47: Stau im Ausfahrbereich (-> Antrieb gestoppt) + BM_verklemmt_Gerade : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 47: Trolley bei Gerade-Fahrt in Weiche verklemmt (-> Antrieb gestoppt) + BM_verklemmt_Ausfahrt : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 47: Trolley bei Lager-Fahrt in Weiche verklemmt (-> Antrieb gestoppt) + BM_undef_Gerade : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 47: undefinierter Trolley bei Weiterfahrt erkannt + Frei14 : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 47: Frei 14 + Send_FIFO_fehlerhaft : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 47: Send-FIFO zum PC ist fehlerhaft + Send_FIFO_voll : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 47: Send-FIFO zu PC ist voll + Reset_aktiv : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 47: Reset ist aktiv + Weiche_MB3426 : Struct // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 48 MB3426 + Weichen_DL : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 48: Weichen-Datenliste fehlerhaft + Undef_Weiche : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 48: undefinierte Weiche + BLKMov : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 48: Fehler bei Block kopieren + Haupstrang_DL : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 48: Haupstrang-Datenliste fehlerhaft + Haupstrang_DL_voll : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 48: Haupstrang-Datenliste ist voll + Keine_HSDaten : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 48: Keine Hauptstrang-Daten mehr vorhanden + Rein_FIFO : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 48: Rein-FIFO fehlerhaft + Keine_FIFODaten : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 48: Keine Rein-FIFO-Daten mehr vorhanden + Stau_AusfahrBereich : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 48: Stau im Ausfahrbereich (-> Antrieb gestoppt) + BM_verklemmt_Gerade : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 48: Trolley bei Gerade-Fahrt in Weiche verklemmt (-> Antrieb gestoppt) + BM_verklemmt_Ausfahrt : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 48: Trolley bei Lager-Fahrt in Weiche verklemmt (-> Antrieb gestoppt) + BM_undef_Gerade : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 48: undefinierter Trolley bei Weiterfahrt erkannt + Frei14 : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 48: Frei 14 + Send_FIFO_fehlerhaft : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 48: Send-FIFO zum PC ist fehlerhaft + Send_FIFO_voll : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 48: Send-FIFO zu PC ist voll + Reset_aktiv : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 48: Reset ist aktiv + Weiche_MB3425 : Struct // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 49 MB3425 + Weichen_DL : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 49: Weichen-Datenliste fehlerhaft + Undef_Weiche : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 49: undefinierte Weiche + BLKMov : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 49: Fehler bei Block kopieren + Haupstrang_DL : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 49: Haupstrang-Datenliste fehlerhaft + Haupstrang_DL_voll : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 49: Haupstrang-Datenliste ist voll + Keine_HSDaten : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 49: Keine Hauptstrang-Daten mehr vorhanden + Rein_FIFO : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 49: Rein-FIFO fehlerhaft + Keine_FIFODaten : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 49: Keine Rein-FIFO-Daten mehr vorhanden + Stau_AusfahrBereich : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 49: Stau im Ausfahrbereich (-> Antrieb gestoppt) + BM_verklemmt_Gerade : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 49: Trolley bei Gerade-Fahrt in Weiche verklemmt (-> Antrieb gestoppt) + BM_verklemmt_Ausfahrt : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 49: Trolley bei Lager-Fahrt in Weiche verklemmt (-> Antrieb gestoppt) + BM_undef_Gerade : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 49: undefinierter Trolley bei Weiterfahrt erkannt + Frei14 : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 49: Frei 14 + Send_FIFO_fehlerhaft : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 49: Send-FIFO zum PC ist fehlerhaft + Send_FIFO_voll : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 49: Send-FIFO zu PC ist voll + Reset_aktiv : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 49: Reset ist aktiv + Weiche_MB3424 : Struct // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 50 MB3424 + Weichen_DL : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 50: Weichen-Datenliste fehlerhaft + Undef_Weiche : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 50: undefinierte Weiche + BLKMov : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 50: Fehler bei Block kopieren + Haupstrang_DL : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 50: Haupstrang-Datenliste fehlerhaft + Haupstrang_DL_voll : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 50: Haupstrang-Datenliste ist voll + Keine_HSDaten : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 50: Keine Hauptstrang-Daten mehr vorhanden + Rein_FIFO : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 50: Rein-FIFO fehlerhaft + Keine_FIFODaten : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 50: Keine Rein-FIFO-Daten mehr vorhanden + Stau_AusfahrBereich : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 50: Stau im Ausfahrbereich (-> Antrieb gestoppt) + BM_verklemmt_Gerade : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 50: Trolley bei Gerade-Fahrt in Weiche verklemmt (-> Antrieb gestoppt) + BM_verklemmt_Ausfahrt : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 50: Trolley bei Lager-Fahrt in Weiche verklemmt (-> Antrieb gestoppt) + BM_undef_Gerade : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 50: undefinierter Trolley bei Weiterfahrt erkannt + Frei15 : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 50: Frei 15 + Send_FIFO_fehlerhaft : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 50: Send-FIFO zum PC ist fehlerhaft + Send_FIFO_voll : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 50: Send-FIFO zu PC ist voll + Reset_aktiv : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 50: Reset ist aktiv + Weiche_Vollpuffer51 : Struct // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 51 (Pseudo) + Weichen_DL : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 51: Weichen-Datenliste fehlerhaft + Undef_Weiche : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 51: undefinierte Weiche + BLKMov : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 51: Fehler bei Block kopieren + Haupstrang_DL : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 51: Haupstrang-Datenliste fehlerhaft + Haupstrang_DL_voll : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 51: Haupstrang-Datenliste ist voll + Keine_HSDaten : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 51: Keine Hauptstrang-Daten mehr vorhanden + Rein_FIFO : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 51: Rein-FIFO fehlerhaft + Keine_FIFODaten : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 51: Keine Rein-FIFO-Daten mehr vorhanden + Stau_AusfahrBereich : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 51: Stau im Ausfahrbereich (-> Antrieb gestoppt) + BM_verklemmt_Gerade : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 51: Trolley bei Gerade-Fahrt in Weiche verklemmt (-> Antrieb gestoppt) + BM_verklemmt_Ausfahrt : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 51: Trolley bei Lager-Fahrt in Weiche verklemmt (-> Antrieb gestoppt) + BM_undef_Gerade : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 51: undefinierter Trolley bei Weiterfahrt erkannt + Frei15 : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 51: Frei 15 + Send_FIFO_fehlerhaft : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 51: Send-FIFO zum PC ist fehlerhaft + Send_FIFO_voll : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 51: Send-FIFO zu PC ist voll + Reset_aktiv : Bool // Outbound (UH07): Voll-Puffer-Sorter: Weiche zu Puffer 51: Reset ist aktiv + Impulsgeber_3004 : Struct // Outbound (UH07): Voll-Puffer-Sorter: Impulsgeber Lager-Einfahrt MA0146/BG3004 + Kein_Signal : Bool // Outbound (UH07): Voll-Puffer-Sorter: Impulsgeber Lager-Einfahrt MA0146: Kein Signal (Kettenrad-Sensor) + Signal_zu_lang : Bool // Outbound (UH07): Voll-Puffer-Sorter: Impulsgeber Lager-Einfahrt MA0146: Signal zu lang (Kettenrad-Sensor) + Impulsgeber_3125 : Struct // Outbound (UH07): Voll-Puffer-Sorter: Impulsgeber Lager-Einfahrt MA0145/BG3125 + Kein_Signal : Bool // Outbound (UH07): Voll-Puffer-Sorter: Impulsgeber Lager-Einfahrt MA0146: Kein Signal (Kettenrad-Sensor) + Signal_zu_lang : Bool // Outbound (UH07): Voll-Puffer-Sorter: Impulsgeber Lager-Einfahrt MA0146: Signal zu lang (Kettenrad-Sensor) + Impulsgeber_3185 : Struct // Outbound (UH07): Voll-Puffer-Sorter: Impulsgeber Lager-Ausfahrt MA0150/BG3185 + Kein_Signal : Bool // Outbound (UH07): Voll-Puffer-Sorter: Impulsgeber Lager-Ausfahrt MA0150: Kein Signal (Kettenrad-Sensor) + Signal_zu_lang : Bool // Outbound (UH07): Voll-Puffer-Sorter: Impulsgeber Lager-Ausfahrt MA0150: Signal zu lang (Kettenrad-Sensor) + Impulsgeber_3480 : Struct // Outbound (UH07): Voll-Puffer-Sorter: Impulsgeber Lager-Ausfahrt MA0147/BG3480 + Kein_Signal : Bool // Outbound (UH07): Voll-Puffer-Sorter: Impulsgeber Lager-Ausfahrt MA0147: Kein Signal (Kettenrad-Sensor) + Signal_zu_lang : Bool // Outbound (UH07): Voll-Puffer-Sorter: Impulsgeber Lager-Ausfahrt MA0147: Signal zu lang (Kettenrad-Sensor) + VollPuffer01 : Struct // Outbound (UH07): Voll-Puffer 1 MB3273 + Puffer_DL : Bool // Outbound (UH07): Voll-Puffer 1: Lager-Datenliste fehlerhaft + Undef_Puffer : Bool // Outbound (UH07): Voll-Puffer 1: undefinierter Lager + Err_Trolley_nicht_in_Schleuse_OUT : Bool // Outbound (UH07): Voll-Puffer 1: Trolley fährt nicht in untere Schleuse + Err_Uebzeit : Bool // Outbound (UH07): Voll-Puffer 1: Überwachungzeit ist abgelaufen + Err_Schritt : Bool // Outbound (UH07): Voll-Puffer 1: Schritt-Nummer ist nicht definiert + Err_Stau_Einfahrt : Bool // Outbound (UH07): Voll-Puffer 1: Stau am Lager-Eingang + Err_BLKMov : Bool // Outbound (UH07): Voll-Puffer 1: Error bei Block kopieren + Err_Trolley_raus_OUT : Bool // Outbound (UH07): Voll-Puffer 1: Trolley fährt nicht aus unterer Schleuse + Err_Puffer_nicht_leer_OUT : Bool // Outbound (UH07): Voll-Puffer 1: Trolley unten in Schleuse, obwohl keine Daten! Initialisieren hat gestartet! + Err_Trolley_nicht_in_Schleuse_IN : Bool // Outbound (UH07): Voll-Puffer 1: Trolley fährt nicht in mittlere Schleuse + Err_Trolley_raus_IN : Bool // Outbound (UH07): Voll-Puffer 1: Trolley fährt nicht aus mittlere Schleuse + Err_Puffer_nicht_leer_IN : Bool // Outbound (UH07): Voll-Puffer 1: Trolley mittig in Schleuse, obwohl keine Daten! Initialisieren hat gestartet! + Frei14 : Bool // Outbound (UH07): Voll-Puffer 1: Frei14 + Err_Raus_Sensor : Bool // Outbound (UH07): Voll-Puffer 1: Raus-Sensor hat Dauersignal oder wird nicht erreicht + Frei16 : Bool // Outbound (UH07): Voll-Puffer 1: Frei16 + Reset_aktiv : Bool // Outbound (UH07): Voll-Puffer 1: Reset ist aktiv + VollPuffer02 : Struct // Outbound (UH07): Voll-Puffer 2 MB3272 + Lager_DL : Bool // Outbound (UH07): Voll-Puffer 2: Lager-Datenliste fehlerhaft + Undef_Lager : Bool // Outbound (UH07): Voll-Puffer 2: undefinierter Lager + Err_Trolley_nicht_in_Schleuse_OUT : Bool // Outbound (UH07): Voll-Puffer 2: Trolley fährt nicht in untere Schleuse + Err_Uebzeit : Bool // Outbound (UH07): Voll-Puffer 2: Überwachungzeit ist abgelaufen + Err_Schritt : Bool // Outbound (UH07): Voll-Puffer 2: Schritt-Nummer ist nicht definiert + Err_Stau_Einfahrt : Bool // Outbound (UH07): Voll-Puffer 2: Stau am Lager-Eingang + Err_BLKMov : Bool // Outbound (UH07): Voll-Puffer 2: Error bei Block kopieren + Err_Trolley_raus_OUT : Bool // Outbound (UH07): Voll-Puffer 2: Trolley fährt nicht aus unterer Schleuse + Err_Puffer_nicht_leer_OUT : Bool // Outbound (UH07): Voll-Puffer 2: Trolley unten in Schleuse, obwohl keine Daten! Initialisieren hat gestartet! + Err_Trolley_nicht_in_Schleuse_IN : Bool // Outbound (UH07): Voll-Puffer 2: Trolley fährt nicht in mittlere Schleuse + Err_Trolley_raus_IN : Bool // Outbound (UH07): Voll-Puffer 2: Trolley fährt nicht aus mittlere Schleuse + Err_Puffer_nicht_leer_IN : Bool // Outbound (UH07): Voll-Puffer 2: Trolley mittig in Schleuse, obwohl keine Daten! Initialisieren hat gestartet! + Frei14 : Bool // Outbound (UH07): Voll-Puffer 2: Frei14 + Err_Raus_Sensor : Bool // Outbound (UH07): Voll-Puffer 2: Raus-Sensor hat Dauersignal oder wird nicht erreicht + Frei16 : Bool // Outbound (UH07): Voll-Puffer 2: Frei16 + Reset_aktiv : Bool // Outbound (UH07): Voll-Puffer 2: Reset ist aktiv + VollPuffer03 : Struct // Outbound (UH07): Voll-Puffer 3 MB3271 + Lager_DL : Bool // Outbound (UH07): Voll-Puffer 3: Lager-Datenliste fehlerhaft + Undef_Lager : Bool // Outbound (UH07): Voll-Puffer 3: undefinierter Lager + Err_Trolley_nicht_in_Schleuse_OUT : Bool // Outbound (UH07): Voll-Puffer 3: Trolley fährt nicht in untere Schleuse + Err_Uebzeit : Bool // Outbound (UH07): Voll-Puffer 3: Überwachungzeit ist abgelaufen + Err_Schritt : Bool // Outbound (UH07): Voll-Puffer 3: Schritt-Nummer ist nicht definiert + Err_Stau_Einfahrt : Bool // Outbound (UH07): Voll-Puffer 3: Stau am Lager-Eingang + Err_BLKMov : Bool // Outbound (UH07): Voll-Puffer 3: Error bei Block kopieren + Err_Trolley_raus_OUT : Bool // Outbound (UH07): Voll-Puffer 3: Trolley fährt nicht aus unterer Schleuse + Err_Puffer_nicht_leer_OUT : Bool // Outbound (UH07): Voll-Puffer 3: Trolley unten in Schleuse, obwohl keine Daten! Initialisieren hat gestartet! + Err_Trolley_nicht_in_Schleuse_IN : Bool // Outbound (UH07): Voll-Puffer 3: Trolley fährt nicht in mittlere Schleuse + Err_Trolley_raus_IN : Bool // Outbound (UH07): Voll-Puffer 3: Trolley fährt nicht aus mittlere Schleuse + Err_Puffer_nicht_leer_IN : Bool // Outbound (UH07): Voll-Puffer 3: Trolley mittig in Schleuse, obwohl keine Daten! Initialisieren hat gestartet! + Frei14 : Bool // Outbound (UH07): Voll-Puffer 3: Frei14 + Err_Raus_Sensor : Bool // Outbound (UH07): Voll-Puffer 3: Raus-Sensor hat Dauersignal oder wird nicht erreicht + Frei16 : Bool // Outbound (UH07): Voll-Puffer 3: Frei16 + Reset_aktiv : Bool // Outbound (UH07): Voll-Puffer 3: Reset ist aktiv + VollPuffer04 : Struct // Outbound (UH07): Voll-Puffer 4 MB3270 + Lager_DL : Bool // Outbound (UH07): Voll-Puffer 4: Lager-Datenliste fehlerhaft + Undef_Lager : Bool // Outbound (UH07): Voll-Puffer 4: undefinierter Lager + Err_Trolley_nicht_in_Schleuse_OUT : Bool // Outbound (UH07): Voll-Puffer 4: Trolley fährt nicht in untere Schleuse + Err_Uebzeit : Bool // Outbound (UH07): Voll-Puffer 4: Überwachungzeit ist abgelaufen + Err_Schritt : Bool // Outbound (UH07): Voll-Puffer 4: Schritt-Nummer ist nicht definiert + Err_Stau_Einfahrt : Bool // Outbound (UH07): Voll-Puffer 4: Stau am Lager-Eingang + Err_BLKMov : Bool // Outbound (UH07): Voll-Puffer 4: Error bei Block kopieren + Err_Trolley_raus_OUT : Bool // Outbound (UH07): Voll-Puffer 4: Trolley fährt nicht aus unterer Schleuse + Err_Puffer_nicht_leer_OUT : Bool // Outbound (UH07): Voll-Puffer 4: Trolley unten in Schleuse, obwohl keine Daten! Initialisieren hat gestartet! + Err_Trolley_nicht_in_Schleuse_IN : Bool // Outbound (UH07): Voll-Puffer 4: Trolley fährt nicht in mittlere Schleuse + Err_Trolley_raus_IN : Bool // Outbound (UH07): Voll-Puffer 4: Trolley fährt nicht aus mittlere Schleuse + Err_Puffer_nicht_leer_IN : Bool // Outbound (UH07): Voll-Puffer 4: Trolley mittig in Schleuse, obwohl keine Daten! Initialisieren hat gestartet! + Frei14 : Bool // Outbound (UH07): Voll-Puffer 4: Frei14 + Err_Raus_Sensor : Bool // Outbound (UH07): Voll-Puffer 4: Raus-Sensor hat Dauersignal oder wird nicht erreicht + Frei16 : Bool // Outbound (UH07): Voll-Puffer 4: Frei16 + Reset_aktiv : Bool // Outbound (UH07): Voll-Puffer 4: Reset ist aktiv + VollPuffer05 : Struct // Outbound (UH07): Voll-Puffer 5 MB3267 + Lager_DL : Bool // Outbound (UH07): Voll-Puffer 5: Lager-Datenliste fehlerhaft + Undef_Lager : Bool // Outbound (UH07): Voll-Puffer 5: undefinierter Lager + Err_Trolley_nicht_in_Schleuse_OUT : Bool // Outbound (UH07): Voll-Puffer 5: Trolley fährt nicht in untere Schleuse + Err_Uebzeit : Bool // Outbound (UH07): Voll-Puffer 5: Überwachungzeit ist abgelaufen + Err_Schritt : Bool // Outbound (UH07): Voll-Puffer 5: Schritt-Nummer ist nicht definiert + Err_Stau_Einfahrt : Bool // Outbound (UH07): Voll-Puffer 5: Stau am Lager-Eingang + Err_BLKMov : Bool // Outbound (UH07): Voll-Puffer 5: Error bei Block kopieren + Err_Trolley_raus_OUT : Bool // Outbound (UH07): Voll-Puffer 5: Trolley fährt nicht aus unterer Schleuse + Err_Puffer_nicht_leer_OUT : Bool // Outbound (UH07): Voll-Puffer 5: Trolley unten in Schleuse, obwohl keine Daten! Initialisieren hat gestartet! + Err_Trolley_nicht_in_Schleuse_IN : Bool // Outbound (UH07): Voll-Puffer 5: Trolley fährt nicht in mittlere Schleuse + Err_Trolley_raus_IN : Bool // Outbound (UH07): Voll-Puffer 5: Trolley fährt nicht aus mittlere Schleuse + Err_Puffer_nicht_leer_IN : Bool // Outbound (UH07): Voll-Puffer 5: Trolley mittig in Schleuse, obwohl keine Daten! Initialisieren hat gestartet! + Frei14 : Bool // Outbound (UH07): Voll-Puffer 5: Frei14 + Err_Raus_Sensor : Bool // Outbound (UH07): Voll-Puffer 5: Raus-Sensor hat Dauersignal oder wird nicht erreicht + Frei16 : Bool // Outbound (UH07): Voll-Puffer 5: Frei16 + Reset_aktiv : Bool // Outbound (UH07): Voll-Puffer 5: Reset ist aktiv + VollPuffer06 : Struct // Outbound (UH07): Voll-Puffer 6 MB3266 + Lager_DL : Bool // Outbound (UH07): Voll-Puffer 6: Lager-Datenliste fehlerhaft + Undef_Lager : Bool // Outbound (UH07): Voll-Puffer 6: undefinierter Lager + Err_Trolley_nicht_in_Schleuse_OUT : Bool // Outbound (UH07): Voll-Puffer 6: Trolley fährt nicht in untere Schleuse + Err_Uebzeit : Bool // Outbound (UH07): Voll-Puffer 6: Überwachungzeit ist abgelaufen + Err_Schritt : Bool // Outbound (UH07): Voll-Puffer 6: Schritt-Nummer ist nicht definiert + Err_Stau_Einfahrt : Bool // Outbound (UH07): Voll-Puffer 6: Stau am Lager-Eingang + Err_BLKMov : Bool // Outbound (UH07): Voll-Puffer 6: Error bei Block kopieren + Err_Trolley_raus_OUT : Bool // Outbound (UH07): Voll-Puffer 6: Trolley fährt nicht aus unterer Schleuse + Err_Puffer_nicht_leer_OUT : Bool // Outbound (UH07): Voll-Puffer 6: Trolley unten in Schleuse, obwohl keine Daten! Initialisieren hat gestartet! + Err_Trolley_nicht_in_Schleuse_IN : Bool // Outbound (UH07): Voll-Puffer 6: Trolley fährt nicht in mittlere Schleuse + Err_Trolley_raus_IN : Bool // Outbound (UH07): Voll-Puffer 6: Trolley fährt nicht aus mittlere Schleuse + Err_Puffer_nicht_leer_IN : Bool // Outbound (UH07): Voll-Puffer 6: Trolley mittig in Schleuse, obwohl keine Daten! Initialisieren hat gestartet! + Frei14 : Bool // Outbound (UH07): Voll-Puffer 6: Frei14 + Err_Raus_Sensor : Bool // Outbound (UH07): Voll-Puffer 6: Raus-Sensor hat Dauersignal oder wird nicht erreicht + Frei16 : Bool // Outbound (UH07): Voll-Puffer 6: Frei16 + Reset_aktiv : Bool // Outbound (UH07): Voll-Puffer 6: Reset ist aktiv + VollPuffer07 : Struct // Outbound (UH07): Voll-Puffer 7 MB3265 + Lager_DL : Bool // Outbound (UH07): Voll-Puffer 7: Lager-Datenliste fehlerhaft + Undef_Lager : Bool // Outbound (UH07): Voll-Puffer 7: undefinierter Lager + Err_Trolley_nicht_in_Schleuse_OUT : Bool // Outbound (UH07): Voll-Puffer 7: Trolley fährt nicht in untere Schleuse + Err_Uebzeit : Bool // Outbound (UH07): Voll-Puffer 7: Überwachungzeit ist abgelaufen + Err_Schritt : Bool // Outbound (UH07): Voll-Puffer 7: Schritt-Nummer ist nicht definiert + Err_Stau_Einfahrt : Bool // Outbound (UH07): Voll-Puffer 7: Stau am Lager-Eingang + Err_BLKMov : Bool // Outbound (UH07): Voll-Puffer 7: Error bei Block kopieren + Err_Trolley_raus_OUT : Bool // Outbound (UH07): Voll-Puffer 7: Trolley fährt nicht aus unterer Schleuse + Err_Puffer_nicht_leer_OUT : Bool // Outbound (UH07): Voll-Puffer 7: Trolley unten in Schleuse, obwohl keine Daten! Initialisieren hat gestartet! + Err_Trolley_nicht_in_Schleuse_IN : Bool // Outbound (UH07): Voll-Puffer 7: Trolley fährt nicht in mittlere Schleuse + Err_Trolley_raus_IN : Bool // Outbound (UH07): Voll-Puffer 7: Trolley fährt nicht aus mittlere Schleuse + Err_Puffer_nicht_leer_IN : Bool // Outbound (UH07): Voll-Puffer 7: Trolley mittig in Schleuse, obwohl keine Daten! Initialisieren hat gestartet! + Frei14 : Bool // Outbound (UH07): Voll-Puffer 7: Frei14 + Err_Raus_Sensor : Bool // Outbound (UH07): Voll-Puffer 7: Raus-Sensor hat Dauersignal oder wird nicht erreicht + Frei16 : Bool // Outbound (UH07): Voll-Puffer 7: Frei16 + Reset_aktiv : Bool // Outbound (UH07): Voll-Puffer 7: Reset ist aktiv + VollPuffer08 : Struct // Outbound (UH07): Voll-Puffer 8 MB3264 + Lager_DL : Bool // Outbound (UH07): Voll-Puffer 8: Lager-Datenliste fehlerhaft + Undef_Lager : Bool // Outbound (UH07): Voll-Puffer 8: undefinierter Lager + Err_Trolley_nicht_in_Schleuse_OUT : Bool // Outbound (UH07): Voll-Puffer 8: Trolley fährt nicht in untere Schleuse + Err_Uebzeit : Bool // Outbound (UH07): Voll-Puffer 8: Überwachungzeit ist abgelaufen + Err_Schritt : Bool // Outbound (UH07): Voll-Puffer 8: Schritt-Nummer ist nicht definiert + Err_Stau_Einfahrt : Bool // Outbound (UH07): Voll-Puffer 8: Stau am Lager-Eingang + Err_BLKMov : Bool // Outbound (UH07): Voll-Puffer 8: Error bei Block kopieren + Err_Trolley_raus_OUT : Bool // Outbound (UH07): Voll-Puffer 8: Trolley fährt nicht aus unterer Schleuse + Err_Puffer_nicht_leer_OUT : Bool // Outbound (UH07): Voll-Puffer 8: Trolley unten in Schleuse, obwohl keine Daten! Initialisieren hat gestartet! + Err_Trolley_nicht_in_Schleuse_IN : Bool // Outbound (UH07): Voll-Puffer 8: Trolley fährt nicht in mittlere Schleuse + Err_Trolley_raus_IN : Bool // Outbound (UH07): Voll-Puffer 8: Trolley fährt nicht aus mittlere Schleuse + Err_Puffer_nicht_leer_IN : Bool // Outbound (UH07): Voll-Puffer 8: Trolley mittig in Schleuse, obwohl keine Daten! Initialisieren hat gestartet! + Frei14 : Bool // Outbound (UH07): Voll-Puffer 8: Frei14 + Err_Raus_Sensor : Bool // Outbound (UH07): Voll-Puffer 8: Raus-Sensor hat Dauersignal oder wird nicht erreicht + Frei16 : Bool // Outbound (UH07): Voll-Puffer 8: Frei16 + Reset_aktiv : Bool // Outbound (UH07): Voll-Puffer 8: Reset ist aktiv + VollPuffer09 : Struct // Outbound (UH07): Voll-Puffer 9 MB3263 + Lager_DL : Bool // Outbound (UH07): Voll-Puffer 9: Lager-Datenliste fehlerhaft + Undef_Lager : Bool // Outbound (UH07): Voll-Puffer 9: undefinierter Lager + Err_Trolley_nicht_in_Schleuse_OUT : Bool // Outbound (UH07): Voll-Puffer 9: Trolley fährt nicht in untere Schleuse + Err_Uebzeit : Bool // Outbound (UH07): Voll-Puffer 9: Überwachungzeit ist abgelaufen + Err_Schritt : Bool // Outbound (UH07): Voll-Puffer 9: Schritt-Nummer ist nicht definiert + Err_Stau_Einfahrt : Bool // Outbound (UH07): Voll-Puffer 9: Stau am Lager-Eingang + Err_BLKMov : Bool // Outbound (UH07): Voll-Puffer 9: Error bei Block kopieren + Err_Trolley_raus_OUT : Bool // Outbound (UH07): Voll-Puffer 9: Trolley fährt nicht aus unterer Schleuse + Err_Puffer_nicht_leer_OUT : Bool // Outbound (UH07): Voll-Puffer 9: Trolley unten in Schleuse, obwohl keine Daten! Initialisieren hat gestartet! + Err_Trolley_nicht_in_Schleuse_IN : Bool // Outbound (UH07): Voll-Puffer 9: Trolley fährt nicht in mittlere Schleuse + Err_Trolley_raus_IN : Bool // Outbound (UH07): Voll-Puffer 9: Trolley fährt nicht aus mittlere Schleuse + Err_Puffer_nicht_leer_IN : Bool // Outbound (UH07): Voll-Puffer 9: Trolley mittig in Schleuse, obwohl keine Daten! Initialisieren hat gestartet! + Frei14 : Bool // Outbound (UH07): Voll-Puffer 9: Frei14 + Err_Raus_Sensor : Bool // Outbound (UH07): Voll-Puffer 9: Raus-Sensor hat Dauersignal oder wird nicht erreicht + Frei16 : Bool // Outbound (UH07): Voll-Puffer 9: Frei16 + Reset_aktiv : Bool // Outbound (UH07): Voll-Puffer 9: Reset ist aktiv + VollPuffer10 : Struct // Outbound (UH07): Voll-Puffer 10 MB3262 + Lager_DL : Bool // Outbound (UH07): Voll-Puffer 10: Lager-Datenliste fehlerhaft + Undef_Lager : Bool // Outbound (UH07): Voll-Puffer 10: undefinierter Lager + Err_Trolley_nicht_in_Schleuse_OUT : Bool // Outbound (UH07): Voll-Puffer 10: Trolley fährt nicht in untere Schleuse + Err_Uebzeit : Bool // Outbound (UH07): Voll-Puffer 10: Überwachungzeit ist abgelaufen + Err_Schritt : Bool // Outbound (UH07): Voll-Puffer 10: Schritt-Nummer ist nicht definiert + Err_Stau_Einfahrt : Bool // Outbound (UH07): Voll-Puffer 10: Stau am Lager-Eingang + Err_BLKMov : Bool // Outbound (UH07): Voll-Puffer 10: Error bei Block kopieren + Err_Trolley_raus_OUT : Bool // Outbound (UH07): Voll-Puffer 10: Trolley fährt nicht aus unterer Schleuse + Err_Puffer_nicht_leer_OUT : Bool // Outbound (UH07): Voll-Puffer 10: Trolley unten in Schleuse, obwohl keine Daten! Initialisieren hat gestartet! + Err_Trolley_nicht_in_Schleuse_IN : Bool // Outbound (UH07): Voll-Puffer 10: Trolley fährt nicht in mittlere Schleuse + Err_Trolley_raus_IN : Bool // Outbound (UH07): Voll-Puffer 10: Trolley fährt nicht aus mittlere Schleuse + Err_Puffer_nicht_leer_IN : Bool // Outbound (UH07): Voll-Puffer 10: Trolley mittig in Schleuse, obwohl keine Daten! Initialisieren hat gestartet! + Frei14 : Bool // Outbound (UH07): Voll-Puffer 10: Frei14 + Err_Raus_Sensor : Bool // Outbound (UH07): Voll-Puffer 10: Raus-Sensor hat Dauersignal oder wird nicht erreicht + Frei16 : Bool // Outbound (UH07): Voll-Puffer 10: Frei16 + Reset_aktiv : Bool // Outbound (UH07): Voll-Puffer 10: Reset ist aktiv + VollPuffer11 : Struct // Outbound (UH07): Voll-Puffer 11 MB3261 + Lager_DL : Bool // Outbound (UH07): Voll-Puffer 11: Lager-Datenliste fehlerhaft + Undef_Lager : Bool // Outbound (UH07): Voll-Puffer 11: undefinierter Lager + Err_Trolley_nicht_in_Schleuse_OUT : Bool // Outbound (UH07): Voll-Puffer 11: Trolley fährt nicht in untere Schleuse + Err_Uebzeit : Bool // Outbound (UH07): Voll-Puffer 11: Überwachungzeit ist abgelaufen + Err_Schritt : Bool // Outbound (UH07): Voll-Puffer 11: Schritt-Nummer ist nicht definiert + Err_Stau_Einfahrt : Bool // Outbound (UH07): Voll-Puffer 11: Stau am Lager-Eingang + Err_BLKMov : Bool // Outbound (UH07): Voll-Puffer 11: Error bei Block kopieren + Err_Trolley_raus_OUT : Bool // Outbound (UH07): Voll-Puffer 11: Trolley fährt nicht aus unterer Schleuse + Err_Puffer_nicht_leer_OUT : Bool // Outbound (UH07): Voll-Puffer 11: Trolley unten in Schleuse, obwohl keine Daten! Initialisieren hat gestartet! + Err_Trolley_nicht_in_Schleuse_IN : Bool // Outbound (UH07): Voll-Puffer 11: Trolley fährt nicht in mittlere Schleuse + Err_Trolley_raus_IN : Bool // Outbound (UH07): Voll-Puffer 11: Trolley fährt nicht aus mittlere Schleuse + Err_Puffer_nicht_leer_IN : Bool // Outbound (UH07): Voll-Puffer 11: Trolley mittig in Schleuse, obwohl keine Daten! Initialisieren hat gestartet! + Frei14 : Bool // Outbound (UH07): Voll-Puffer 11: Frei14 + Err_Raus_Sensor : Bool // Outbound (UH07): Voll-Puffer 11: Raus-Sensor hat Dauersignal oder wird nicht erreicht + Frei16 : Bool // Outbound (UH07): Voll-Puffer 11: Frei16 + Reset_aktiv : Bool // Outbound (UH07): Voll-Puffer 11: Reset ist aktiv + VollPuffer12 : Struct // Outbound (UH07): Voll-Puffer 12 MB3260 + Lager_DL : Bool // Outbound (UH07): Voll-Puffer 12: Lager-Datenliste fehlerhaft + Undef_Lager : Bool // Outbound (UH07): Voll-Puffer 12: undefinierter Lager + Err_Trolley_nicht_in_Schleuse_OUT : Bool // Outbound (UH07): Voll-Puffer 12: Trolley fährt nicht in untere Schleuse + Err_Uebzeit : Bool // Outbound (UH07): Voll-Puffer 12: Überwachungzeit ist abgelaufen + Err_Schritt : Bool // Outbound (UH07): Voll-Puffer 12: Schritt-Nummer ist nicht definiert + Err_Stau_Einfahrt : Bool // Outbound (UH07): Voll-Puffer 12: Stau am Lager-Eingang + Err_BLKMov : Bool // Outbound (UH07): Voll-Puffer 12: Error bei Block kopieren + Err_Trolley_raus_OUT : Bool // Outbound (UH07): Voll-Puffer 12: Trolley fährt nicht aus unterer Schleuse + Err_Puffer_nicht_leer_OUT : Bool // Outbound (UH07): Voll-Puffer 12: Trolley unten in Schleuse, obwohl keine Daten! Initialisieren hat gestartet! + Err_Trolley_nicht_in_Schleuse_IN : Bool // Outbound (UH07): Voll-Puffer 12: Trolley fährt nicht in mittlere Schleuse + Err_Trolley_raus_IN : Bool // Outbound (UH07): Voll-Puffer 12: Trolley fährt nicht aus mittlere Schleuse + Err_Puffer_nicht_leer_IN : Bool // Outbound (UH07): Voll-Puffer 12: Trolley mittig in Schleuse, obwohl keine Daten! Initialisieren hat gestartet! + Frei14 : Bool // Outbound (UH07): Voll-Puffer 12: Frei14 + Err_Raus_Sensor : Bool // Outbound (UH07): Voll-Puffer 12: Raus-Sensor hat Dauersignal oder wird nicht erreicht + Frei16 : Bool // Outbound (UH07): Voll-Puffer 12: Frei16 + Reset_aktiv : Bool // Outbound (UH07): Voll-Puffer 12: Reset ist aktiv + VollPuffer13 : Struct // Outbound (UH07): Voll-Puffer 13 MB3257 + Lager_DL : Bool // Outbound (UH07): Voll-Puffer 13: Lager-Datenliste fehlerhaft + Undef_Lager : Bool // Outbound (UH07): Voll-Puffer 13: undefinierter Lager + Err_Trolley_nicht_in_Schleuse_OUT : Bool // Outbound (UH07): Voll-Puffer 13: Trolley fährt nicht in untere Schleuse + Err_Uebzeit : Bool // Outbound (UH07): Voll-Puffer 13: Überwachungzeit ist abgelaufen + Err_Schritt : Bool // Outbound (UH07): Voll-Puffer 13: Schritt-Nummer ist nicht definiert + Err_Stau_Einfahrt : Bool // Outbound (UH07): Voll-Puffer 13: Stau am Lager-Eingang + Err_BLKMov : Bool // Outbound (UH07): Voll-Puffer 13: Error bei Block kopieren + Err_Trolley_raus_OUT : Bool // Outbound (UH07): Voll-Puffer 13: Trolley fährt nicht aus unterer Schleuse + Err_Puffer_nicht_leer_OUT : Bool // Outbound (UH07): Voll-Puffer 13: Trolley unten in Schleuse, obwohl keine Daten! Initialisieren hat gestartet! + Err_Trolley_nicht_in_Schleuse_IN : Bool // Outbound (UH07): Voll-Puffer 13: Trolley fährt nicht in mittlere Schleuse + Err_Trolley_raus_IN : Bool // Outbound (UH07): Voll-Puffer 13: Trolley fährt nicht aus mittlere Schleuse + Err_Puffer_nicht_leer_IN : Bool // Outbound (UH07): Voll-Puffer 13: Trolley mittig in Schleuse, obwohl keine Daten! Initialisieren hat gestartet! + Frei14 : Bool // Outbound (UH07): Voll-Puffer 13: Frei14 + Err_Raus_Sensor : Bool // Outbound (UH07): Voll-Puffer 13: Raus-Sensor hat Dauersignal oder wird nicht erreicht + Frei16 : Bool // Outbound (UH07): Voll-Puffer 13: Frei16 + Reset_aktiv : Bool // Outbound (UH07): Voll-Puffer 13: Reset ist aktiv + VollPuffer14 : Struct // Outbound (UH07): Voll-Puffer 14 MB3256 + Lager_DL : Bool // Outbound (UH07): Voll-Puffer 14: Lager-Datenliste fehlerhaft + Undef_Lager : Bool // Outbound (UH07): Voll-Puffer 14: undefinierter Lager + Err_Trolley_nicht_in_Schleuse_OUT : Bool // Outbound (UH07): Voll-Puffer 14: Trolley fährt nicht in untere Schleuse + Err_Uebzeit : Bool // Outbound (UH07): Voll-Puffer 14: Überwachungzeit ist abgelaufen + Err_Schritt : Bool // Outbound (UH07): Voll-Puffer 14: Schritt-Nummer ist nicht definiert + Err_Stau_Einfahrt : Bool // Outbound (UH07): Voll-Puffer 14: Stau am Lager-Eingang + Err_BLKMov : Bool // Outbound (UH07): Voll-Puffer 14: Error bei Block kopieren + Err_Trolley_raus_OUT : Bool // Outbound (UH07): Voll-Puffer 14: Trolley fährt nicht aus unterer Schleuse + Err_Puffer_nicht_leer_OUT : Bool // Outbound (UH07): Voll-Puffer 14: Trolley unten in Schleuse, obwohl keine Daten! Initialisieren hat gestartet! + Err_Trolley_nicht_in_Schleuse_IN : Bool // Outbound (UH07): Voll-Puffer 14: Trolley fährt nicht in mittlere Schleuse + Err_Trolley_raus_IN : Bool // Outbound (UH07): Voll-Puffer 14: Trolley fährt nicht aus mittlere Schleuse + Err_Puffer_nicht_leer_IN : Bool // Outbound (UH07): Voll-Puffer 14: Trolley mittig in Schleuse, obwohl keine Daten! Initialisieren hat gestartet! + Frei14 : Bool // Outbound (UH07): Voll-Puffer 14: Frei14 + Err_Raus_Sensor : Bool // Outbound (UH07): Voll-Puffer 14: Raus-Sensor hat Dauersignal oder wird nicht erreicht + Frei16 : Bool // Outbound (UH07): Voll-Puffer 14: Frei16 + Reset_aktiv : Bool // Outbound (UH07): Voll-Puffer 14: Reset ist aktiv + VollPuffer15 : Struct // Outbound (UH07): Voll-Puffer 15 MB3255 + Lager_DL : Bool // Outbound (UH07): Voll-Puffer 15: Lager-Datenliste fehlerhaft + Undef_Lager : Bool // Outbound (UH07): Voll-Puffer 15: undefinierter Lager + Err_Trolley_nicht_in_Schleuse_OUT : Bool // Outbound (UH07): Voll-Puffer 15: Trolley fährt nicht in untere Schleuse + Err_Uebzeit : Bool // Outbound (UH07): Voll-Puffer 15: Überwachungzeit ist abgelaufen + Err_Schritt : Bool // Outbound (UH07): Voll-Puffer 15: Schritt-Nummer ist nicht definiert + Err_Stau_Einfahrt : Bool // Outbound (UH07): Voll-Puffer 15: Stau am Lager-Eingang + Err_BLKMov : Bool // Outbound (UH07): Voll-Puffer 15: Error bei Block kopieren + Err_Trolley_raus_OUT : Bool // Outbound (UH07): Voll-Puffer 15: Trolley fährt nicht aus unterer Schleuse + Err_Puffer_nicht_leer_OUT : Bool // Outbound (UH07): Voll-Puffer 15: Trolley unten in Schleuse, obwohl keine Daten! Initialisieren hat gestartet! + Err_Trolley_nicht_in_Schleuse_IN : Bool // Outbound (UH07): Voll-Puffer 15: Trolley fährt nicht in mittlere Schleuse + Err_Trolley_raus_IN : Bool // Outbound (UH07): Voll-Puffer 15: Trolley fährt nicht aus mittlere Schleuse + Err_Puffer_nicht_leer_IN : Bool // Outbound (UH07): Voll-Puffer 15: Trolley mittig in Schleuse, obwohl keine Daten! Initialisieren hat gestartet! + Frei14 : Bool // Outbound (UH07): Voll-Puffer 15: Frei14 + Err_Raus_Sensor : Bool // Outbound (UH07): Voll-Puffer 15: Raus-Sensor hat Dauersignal oder wird nicht erreicht + Frei16 : Bool // Outbound (UH07): Voll-Puffer 15: Frei16 + Reset_aktiv : Bool // Outbound (UH07): Voll-Puffer 15: Reset ist aktiv + VollPuffer16 : Struct // Outbound (UH07): Voll-Puffer 16 MB3254 + Lager_DL : Bool // Outbound (UH07): Voll-Puffer 16: Lager-Datenliste fehlerhaft + Undef_Lager : Bool // Outbound (UH07): Voll-Puffer 16: undefinierter Lager + Err_Trolley_nicht_in_Schleuse_OUT : Bool // Outbound (UH07): Voll-Puffer 16: Trolley fährt nicht in untere Schleuse + Err_Uebzeit : Bool // Outbound (UH07): Voll-Puffer 16: Überwachungzeit ist abgelaufen + Err_Schritt : Bool // Outbound (UH07): Voll-Puffer 16: Schritt-Nummer ist nicht definiert + Err_Stau_Einfahrt : Bool // Outbound (UH07): Voll-Puffer 16: Stau am Lager-Eingang + Err_BLKMov : Bool // Outbound (UH07): Voll-Puffer 16: Error bei Block kopieren + Err_Trolley_raus_OUT : Bool // Outbound (UH07): Voll-Puffer 16: Trolley fährt nicht aus unterer Schleuse + Err_Puffer_nicht_leer_OUT : Bool // Outbound (UH07): Voll-Puffer 16: Trolley unten in Schleuse, obwohl keine Daten! Initialisieren hat gestartet! + Err_Trolley_nicht_in_Schleuse_IN : Bool // Outbound (UH07): Voll-Puffer 16: Trolley fährt nicht in mittlere Schleuse + Err_Trolley_raus_IN : Bool // Outbound (UH07): Voll-Puffer 16: Trolley fährt nicht aus mittlere Schleuse + Err_Puffer_nicht_leer_IN : Bool // Outbound (UH07): Voll-Puffer 16: Trolley mittig in Schleuse, obwohl keine Daten! Initialisieren hat gestartet! + Frei14 : Bool // Outbound (UH07): Voll-Puffer 16: Frei14 + Err_Raus_Sensor : Bool // Outbound (UH07): Voll-Puffer 16: Raus-Sensor hat Dauersignal oder wird nicht erreicht + Frei16 : Bool // Outbound (UH07): Voll-Puffer 16: Frei16 + Reset_aktiv : Bool // Outbound (UH07): Voll-Puffer 16: Reset ist aktiv + VollPuffer17 : Struct // Outbound (UH07): Voll-Puffer 17 MB3253 + Lager_DL : Bool // Outbound (UH07): Voll-Puffer 17: Lager-Datenliste fehlerhaft + Undef_Lager : Bool // Outbound (UH07): Voll-Puffer 17: undefinierter Lager + Err_Trolley_nicht_in_Schleuse_OUT : Bool // Outbound (UH07): Voll-Puffer 17: Trolley fährt nicht in untere Schleuse + Err_Uebzeit : Bool // Outbound (UH07): Voll-Puffer 17: Überwachungzeit ist abgelaufen + Err_Schritt : Bool // Outbound (UH07): Voll-Puffer 17: Schritt-Nummer ist nicht definiert + Err_Stau_Einfahrt : Bool // Outbound (UH07): Voll-Puffer 17: Stau am Lager-Eingang + Err_BLKMov : Bool // Outbound (UH07): Voll-Puffer 17: Error bei Block kopieren + Err_Trolley_raus_OUT : Bool // Outbound (UH07): Voll-Puffer 17: Trolley fährt nicht aus unterer Schleuse + Err_Puffer_nicht_leer_OUT : Bool // Outbound (UH07): Voll-Puffer 17: Trolley unten in Schleuse, obwohl keine Daten! Initialisieren hat gestartet! + Err_Trolley_nicht_in_Schleuse_IN : Bool // Outbound (UH07): Voll-Puffer 17: Trolley fährt nicht in mittlere Schleuse + Err_Trolley_raus_IN : Bool // Outbound (UH07): Voll-Puffer 17: Trolley fährt nicht aus mittlere Schleuse + Err_Puffer_nicht_leer_IN : Bool // Outbound (UH07): Voll-Puffer 17: Trolley mittig in Schleuse, obwohl keine Daten! Initialisieren hat gestartet! + Frei14 : Bool // Outbound (UH07): Voll-Puffer 17: Frei14 + Err_Raus_Sensor : Bool // Outbound (UH07): Voll-Puffer 17: Raus-Sensor hat Dauersignal oder wird nicht erreicht + Frei16 : Bool // Outbound (UH07): Voll-Puffer 17: Frei16 + Reset_aktiv : Bool // Outbound (UH07): Voll-Puffer 17: Reset ist aktiv + VollPuffer18 : Struct // Outbound (UH07): Voll-Puffer 18 MB3252 + Lager_DL : Bool // Outbound (UH07): Voll-Puffer 18: Lager-Datenliste fehlerhaft + Undef_Lager : Bool // Outbound (UH07): Voll-Puffer 18: undefinierter Lager + Err_Trolley_nicht_in_Schleuse_OUT : Bool // Outbound (UH07): Voll-Puffer 18: Trolley fährt nicht in untere Schleuse + Err_Uebzeit : Bool // Outbound (UH07): Voll-Puffer 18: Überwachungzeit ist abgelaufen + Err_Schritt : Bool // Outbound (UH07): Voll-Puffer 18: Schritt-Nummer ist nicht definiert + Err_Stau_Einfahrt : Bool // Outbound (UH07): Voll-Puffer 18: Stau am Lager-Eingang + Err_BLKMov : Bool // Outbound (UH07): Voll-Puffer 18: Error bei Block kopieren + Err_Trolley_raus_OUT : Bool // Outbound (UH07): Voll-Puffer 18: Trolley fährt nicht aus unterer Schleuse + Err_Puffer_nicht_leer_OUT : Bool // Outbound (UH07): Voll-Puffer 18: Trolley unten in Schleuse, obwohl keine Daten! Initialisieren hat gestartet! + Err_Trolley_nicht_in_Schleuse_IN : Bool // Outbound (UH07): Voll-Puffer 18: Trolley fährt nicht in mittlere Schleuse + Err_Trolley_raus_IN : Bool // Outbound (UH07): Voll-Puffer 18: Trolley fährt nicht aus mittlere Schleuse + Err_Puffer_nicht_leer_IN : Bool // Outbound (UH07): Voll-Puffer 18: Trolley mittig in Schleuse, obwohl keine Daten! Initialisieren hat gestartet! + Frei14 : Bool // Outbound (UH07): Voll-Puffer 18: Frei14 + Err_Raus_Sensor : Bool // Outbound (UH07): Voll-Puffer 18: Raus-Sensor hat Dauersignal oder wird nicht erreicht + Frei16 : Bool // Outbound (UH07): Voll-Puffer 18: Frei16 + Reset_aktiv : Bool // Outbound (UH07): Voll-Puffer 18: Reset ist aktiv + VollPuffer19 : Struct // Outbound (UH07): Voll-Puffer 19 MB3215 + Lager_DL : Bool // Outbound (UH07): Voll-Puffer 19: Lager-Datenliste fehlerhaft + Undef_Lager : Bool // Outbound (UH07): Voll-Puffer 19: undefinierter Lager + Err_Trolley_nicht_in_Schleuse_OUT : Bool // Outbound (UH07): Voll-Puffer 19: Trolley fährt nicht in untere Schleuse + Err_Uebzeit : Bool // Outbound (UH07): Voll-Puffer 19: Überwachungzeit ist abgelaufen + Err_Schritt : Bool // Outbound (UH07): Voll-Puffer 19: Schritt-Nummer ist nicht definiert + Err_Stau_Einfahrt : Bool // Outbound (UH07): Voll-Puffer 19: Stau am Lager-Eingang + Err_BLKMov : Bool // Outbound (UH07): Voll-Puffer 19: Error bei Block kopieren + Err_Trolley_raus_OUT : Bool // Outbound (UH07): Voll-Puffer 19: Trolley fährt nicht aus unterer Schleuse + Err_Puffer_nicht_leer_OUT : Bool // Outbound (UH07): Voll-Puffer 19: Trolley unten in Schleuse, obwohl keine Daten! Initialisieren hat gestartet! + Err_Trolley_nicht_in_Schleuse_IN : Bool // Outbound (UH07): Voll-Puffer 19: Trolley fährt nicht in mittlere Schleuse + Err_Trolley_raus_IN : Bool // Outbound (UH07): Voll-Puffer 19: Trolley fährt nicht aus mittlere Schleuse + Err_Puffer_nicht_leer_IN : Bool // Outbound (UH07): Voll-Puffer 19: Trolley mittig in Schleuse, obwohl keine Daten! Initialisieren hat gestartet! + Frei14 : Bool // Outbound (UH07): Voll-Puffer 19: Frei14 + Err_Raus_Sensor : Bool // Outbound (UH07): Voll-Puffer 19: Raus-Sensor hat Dauersignal oder wird nicht erreicht + Frei16 : Bool // Outbound (UH07): Voll-Puffer 19: Frei16 + Reset_aktiv : Bool // Outbound (UH07): Voll-Puffer 19: Reset ist aktiv + VollPuffer20 : Struct // Outbound (UH07): Voll-Puffer 20 MB3214 + Lager_DL : Bool // Outbound (UH07): Voll-Puffer 20: Lager-Datenliste fehlerhaft + Undef_Lager : Bool // Outbound (UH07): Voll-Puffer 20: undefinierter Lager + Err_Trolley_nicht_in_Schleuse_OUT : Bool // Outbound (UH07): Voll-Puffer 20: Trolley fährt nicht in untere Schleuse + Err_Uebzeit : Bool // Outbound (UH07): Voll-Puffer 20: Überwachungzeit ist abgelaufen + Err_Schritt : Bool // Outbound (UH07): Voll-Puffer 20: Schritt-Nummer ist nicht definiert + Err_Stau_Einfahrt : Bool // Outbound (UH07): Voll-Puffer 20: Stau am Lager-Eingang + Err_BLKMov : Bool // Outbound (UH07): Voll-Puffer 20: Error bei Block kopieren + Err_Trolley_raus_OUT : Bool // Outbound (UH07): Voll-Puffer 20: Trolley fährt nicht aus unterer Schleuse + Err_Puffer_nicht_leer_OUT : Bool // Outbound (UH07): Voll-Puffer 20: Trolley unten in Schleuse, obwohl keine Daten! Initialisieren hat gestartet! + Err_Trolley_nicht_in_Schleuse_IN : Bool // Outbound (UH07): Voll-Puffer 20: Trolley fährt nicht in mittlere Schleuse + Err_Trolley_raus_IN : Bool // Outbound (UH07): Voll-Puffer 20: Trolley fährt nicht aus mittlere Schleuse + Err_Puffer_nicht_leer_IN : Bool // Outbound (UH07): Voll-Puffer 20: Trolley mittig in Schleuse, obwohl keine Daten! Initialisieren hat gestartet! + Frei14 : Bool // Outbound (UH07): Voll-Puffer 20: Frei14 + Err_Raus_Sensor : Bool // Outbound (UH07): Voll-Puffer 20: Raus-Sensor hat Dauersignal oder wird nicht erreicht + Frei16 : Bool // Outbound (UH07): Voll-Puffer 20: Frei16 + Reset_aktiv : Bool // Outbound (UH07): Voll-Puffer 20: Reset ist aktiv + VollPuffer21 : Struct // Outbound (UH07): Voll-Puffer 21 MB3213 + Lager_DL : Bool // Outbound (UH07): Voll-Puffer 21: Lager-Datenliste fehlerhaft + Undef_Lager : Bool // Outbound (UH07): Voll-Puffer 21: undefinierter Lager + Err_Trolley_nicht_in_Schleuse_OUT : Bool // Outbound (UH07): Voll-Puffer 21: Trolley fährt nicht in untere Schleuse + Err_Uebzeit : Bool // Outbound (UH07): Voll-Puffer 21: Überwachungzeit ist abgelaufen + Err_Schritt : Bool // Outbound (UH07): Voll-Puffer 21: Schritt-Nummer ist nicht definiert + Err_Stau_Einfahrt : Bool // Outbound (UH07): Voll-Puffer 21: Stau am Lager-Eingang + Err_BLKMov : Bool // Outbound (UH07): Voll-Puffer 21: Error bei Block kopieren + Err_Trolley_raus_OUT : Bool // Outbound (UH07): Voll-Puffer 21: Trolley fährt nicht aus unterer Schleuse + Err_Puffer_nicht_leer_OUT : Bool // Outbound (UH07): Voll-Puffer 21: Trolley unten in Schleuse, obwohl keine Daten! Initialisieren hat gestartet! + Err_Trolley_nicht_in_Schleuse_IN : Bool // Outbound (UH07): Voll-Puffer 21: Trolley fährt nicht in mittlere Schleuse + Err_Trolley_raus_IN : Bool // Outbound (UH07): Voll-Puffer 21: Trolley fährt nicht aus mittlere Schleuse + Err_Puffer_nicht_leer_IN : Bool // Outbound (UH07): Voll-Puffer 21: Trolley mittig in Schleuse, obwohl keine Daten! Initialisieren hat gestartet! + Frei14 : Bool // Outbound (UH07): Voll-Puffer 21: Frei14 + Err_Raus_Sensor : Bool // Outbound (UH07): Voll-Puffer 21: Raus-Sensor hat Dauersignal oder wird nicht erreicht + Frei16 : Bool // Outbound (UH07): Voll-Puffer 21: Frei16 + Reset_aktiv : Bool // Outbound (UH07): Voll-Puffer 21: Reset ist aktiv + VollPuffer22 : Struct // Outbound (UH07): Voll-Puffer 22 MB3212 + Lager_DL : Bool // Outbound (UH07): Voll-Puffer 22: Lager-Datenliste fehlerhaft + Undef_Lager : Bool // Outbound (UH07): Voll-Puffer 22: undefinierter Lager + Err_Trolley_nicht_in_Schleuse_OUT : Bool // Outbound (UH07): Voll-Puffer 22: Trolley fährt nicht in untere Schleuse + Err_Uebzeit : Bool // Outbound (UH07): Voll-Puffer 22: Überwachungzeit ist abgelaufen + Err_Schritt : Bool // Outbound (UH07): Voll-Puffer 22: Schritt-Nummer ist nicht definiert + Err_Stau_Einfahrt : Bool // Outbound (UH07): Voll-Puffer 22: Stau am Lager-Eingang + Err_BLKMov : Bool // Outbound (UH07): Voll-Puffer 22: Error bei Block kopieren + Err_Trolley_raus_OUT : Bool // Outbound (UH07): Voll-Puffer 22: Trolley fährt nicht aus unterer Schleuse + Err_Puffer_nicht_leer_OUT : Bool // Outbound (UH07): Voll-Puffer 22: Trolley unten in Schleuse, obwohl keine Daten! Initialisieren hat gestartet! + Err_Trolley_nicht_in_Schleuse_IN : Bool // Outbound (UH07): Voll-Puffer 22: Trolley fährt nicht in mittlere Schleuse + Err_Trolley_raus_IN : Bool // Outbound (UH07): Voll-Puffer 22: Trolley fährt nicht aus mittlere Schleuse + Err_Puffer_nicht_leer_IN : Bool // Outbound (UH07): Voll-Puffer 22: Trolley mittig in Schleuse, obwohl keine Daten! Initialisieren hat gestartet! + Frei14 : Bool // Outbound (UH07): Voll-Puffer 22: Frei14 + Err_Raus_Sensor : Bool // Outbound (UH07): Voll-Puffer 22: Raus-Sensor hat Dauersignal oder wird nicht erreicht + Frei16 : Bool // Outbound (UH07): Voll-Puffer 22: Frei16 + Reset_aktiv : Bool // Outbound (UH07): Voll-Puffer 22: Reset ist aktiv + VollPuffer23 : Struct // Outbound (UH07): Voll-Puffer 23 MB3211 + Lager_DL : Bool // Outbound (UH07): Voll-Puffer 23: Lager-Datenliste fehlerhaft + Undef_Lager : Bool // Outbound (UH07): Voll-Puffer 23: undefinierter Lager + Err_Trolley_nicht_in_Schleuse_OUT : Bool // Outbound (UH07): Voll-Puffer 23: Trolley fährt nicht in untere Schleuse + Err_Uebzeit : Bool // Outbound (UH07): Voll-Puffer 23: Überwachungzeit ist abgelaufen + Err_Schritt : Bool // Outbound (UH07): Voll-Puffer 23: Schritt-Nummer ist nicht definiert + Err_Stau_Einfahrt : Bool // Outbound (UH07): Voll-Puffer 23: Stau am Lager-Eingang + Err_BLKMov : Bool // Outbound (UH07): Voll-Puffer 23: Error bei Block kopieren + Err_Trolley_raus_OUT : Bool // Outbound (UH07): Voll-Puffer 23: Trolley fährt nicht aus unterer Schleuse + Err_Puffer_nicht_leer_OUT : Bool // Outbound (UH07): Voll-Puffer 23: Trolley unten in Schleuse, obwohl keine Daten! Initialisieren hat gestartet! + Err_Trolley_nicht_in_Schleuse_IN : Bool // Outbound (UH07): Voll-Puffer 23: Trolley fährt nicht in mittlere Schleuse + Err_Trolley_raus_IN : Bool // Outbound (UH07): Voll-Puffer 23: Trolley fährt nicht aus mittlere Schleuse + Err_Puffer_nicht_leer_IN : Bool // Outbound (UH07): Voll-Puffer 23: Trolley mittig in Schleuse, obwohl keine Daten! Initialisieren hat gestartet! + Frei14 : Bool // Outbound (UH07): Voll-Puffer 23: Frei14 + Err_Raus_Sensor : Bool // Outbound (UH07): Voll-Puffer 23: Raus-Sensor hat Dauersignal oder wird nicht erreicht + Frei16 : Bool // Outbound (UH07): Voll-Puffer 23: Frei16 + Reset_aktiv : Bool // Outbound (UH07): Voll-Puffer 23: Reset ist aktiv + VollPuffer24 : Struct // Outbound (UH07): Voll-Puffer 24 MB3210 + Lager_DL : Bool // Outbound (UH07): Voll-Puffer 24: Lager-Datenliste fehlerhaft + Undef_Lager : Bool // Outbound (UH07): Voll-Puffer 24: undefinierter Lager + Err_Trolley_nicht_in_Schleuse_OUT : Bool // Outbound (UH07): Voll-Puffer 24: Trolley fährt nicht in untere Schleuse + Err_Uebzeit : Bool // Outbound (UH07): Voll-Puffer 24: Überwachungzeit ist abgelaufen + Err_Schritt : Bool // Outbound (UH07): Voll-Puffer 24: Schritt-Nummer ist nicht definiert + Err_Stau_Einfahrt : Bool // Outbound (UH07): Voll-Puffer 24: Stau am Lager-Eingang + Err_BLKMov : Bool // Outbound (UH07): Voll-Puffer 24: Error bei Block kopieren + Err_Trolley_raus_OUT : Bool // Outbound (UH07): Voll-Puffer 24: Trolley fährt nicht aus unterer Schleuse + Err_Puffer_nicht_leer_OUT : Bool // Outbound (UH07): Voll-Puffer 24: Trolley unten in Schleuse, obwohl keine Daten! Initialisieren hat gestartet! + Err_Trolley_nicht_in_Schleuse_IN : Bool // Outbound (UH07): Voll-Puffer 24: Trolley fährt nicht in mittlere Schleuse + Err_Trolley_raus_IN : Bool // Outbound (UH07): Voll-Puffer 24: Trolley fährt nicht aus mittlere Schleuse + Err_Puffer_nicht_leer_IN : Bool // Outbound (UH07): Voll-Puffer 24: Trolley mittig in Schleuse, obwohl keine Daten! Initialisieren hat gestartet! + Frei14 : Bool // Outbound (UH07): Voll-Puffer 24: Frei14 + Err_Raus_Sensor : Bool // Outbound (UH07): Voll-Puffer 24: Raus-Sensor hat Dauersignal oder wird nicht erreicht + Frei16 : Bool // Outbound (UH07): Voll-Puffer 24: Frei16 + Reset_aktiv : Bool // Outbound (UH07): Voll-Puffer 24: Reset ist aktiv + VollPuffer25 : Struct // Outbound (UH07): Voll-Puffer 25 MB3207 + Lager_DL : Bool // Outbound (UH07): Voll-Puffer 25: Lager-Datenliste fehlerhaft + Undef_Lager : Bool // Outbound (UH07): Voll-Puffer 25: undefinierter Lager + Err_Trolley_nicht_in_Schleuse_OUT : Bool // Outbound (UH07): Voll-Puffer 25: Trolley fährt nicht in untere Schleuse + Err_Uebzeit : Bool // Outbound (UH07): Voll-Puffer 25: Überwachungzeit ist abgelaufen + Err_Schritt : Bool // Outbound (UH07): Voll-Puffer 25: Schritt-Nummer ist nicht definiert + Err_Stau_Einfahrt : Bool // Outbound (UH07): Voll-Puffer 25: Stau am Lager-Eingang + Err_BLKMov : Bool // Outbound (UH07): Voll-Puffer 25: Error bei Block kopieren + Err_Trolley_raus_OUT : Bool // Outbound (UH07): Voll-Puffer 25: Trolley fährt nicht aus unterer Schleuse + Err_Puffer_nicht_leer_OUT : Bool // Outbound (UH07): Voll-Puffer 25: Trolley unten in Schleuse, obwohl keine Daten! Initialisieren hat gestartet! + Err_Trolley_nicht_in_Schleuse_IN : Bool // Outbound (UH07): Voll-Puffer 25: Trolley fährt nicht in mittlere Schleuse + Err_Trolley_raus_IN : Bool // Outbound (UH07): Voll-Puffer 25: Trolley fährt nicht aus mittlere Schleuse + Err_Puffer_nicht_leer_IN : Bool // Outbound (UH07): Voll-Puffer 25: Trolley mittig in Schleuse, obwohl keine Daten! Initialisieren hat gestartet! + Frei14 : Bool // Outbound (UH07): Voll-Puffer 25: Frei14 + Err_Raus_Sensor : Bool // Outbound (UH07): Voll-Puffer 25: Raus-Sensor hat Dauersignal oder wird nicht erreicht + Frei16 : Bool // Outbound (UH07): Voll-Puffer 25: Frei16 + Reset_aktiv : Bool // Outbound (UH07): Voll-Puffer 25: Reset ist aktiv + VollPuffer26 : Struct // Outbound (UH07): Voll-Puffer 26 MB3206 + Lager_DL : Bool // Outbound (UH07): Voll-Puffer 26: Lager-Datenliste fehlerhaft + Undef_Lager : Bool // Outbound (UH07): Voll-Puffer 26: undefinierter Lager + Err_Trolley_nicht_in_Schleuse_OUT : Bool // Outbound (UH07): Voll-Puffer 26: Trolley fährt nicht in untere Schleuse + Err_Uebzeit : Bool // Outbound (UH07): Voll-Puffer 26: Überwachungzeit ist abgelaufen + Err_Schritt : Bool // Outbound (UH07): Voll-Puffer 26: Schritt-Nummer ist nicht definiert + Err_Stau_Einfahrt : Bool // Outbound (UH07): Voll-Puffer 26: Stau am Lager-Eingang + Err_BLKMov : Bool // Outbound (UH07): Voll-Puffer 26: Error bei Block kopieren + Err_Trolley_raus_OUT : Bool // Outbound (UH07): Voll-Puffer 26: Trolley fährt nicht aus unterer Schleuse + Err_Puffer_nicht_leer_OUT : Bool // Outbound (UH07): Voll-Puffer 26: Trolley unten in Schleuse, obwohl keine Daten! Initialisieren hat gestartet! + Err_Trolley_nicht_in_Schleuse_IN : Bool // Outbound (UH07): Voll-Puffer 26: Trolley fährt nicht in mittlere Schleuse + Err_Trolley_raus_IN : Bool // Outbound (UH07): Voll-Puffer 26: Trolley fährt nicht aus mittlere Schleuse + Err_Puffer_nicht_leer_IN : Bool // Outbound (UH07): Voll-Puffer 26: Trolley mittig in Schleuse, obwohl keine Daten! Initialisieren hat gestartet! + Frei14 : Bool // Outbound (UH07): Voll-Puffer 26: Frei14 + Err_Raus_Sensor : Bool // Outbound (UH07): Voll-Puffer 26: Raus-Sensor hat Dauersignal oder wird nicht erreicht + Frei16 : Bool // Outbound (UH07): Voll-Puffer 26: Frei16 + Reset_aktiv : Bool // Outbound (UH07): Voll-Puffer 26: Reset ist aktiv + VollPuffer27 : Struct // Outbound (UH07): Voll-Puffer 27 MB3205 + Lager_DL : Bool // Outbound (UH07): Voll-Puffer 27: Lager-Datenliste fehlerhaft + Undef_Lager : Bool // Outbound (UH07): Voll-Puffer 27: undefinierter Lager + Err_Trolley_nicht_in_Schleuse_OUT : Bool // Outbound (UH07): Voll-Puffer 27: Trolley fährt nicht in untere Schleuse + Err_Uebzeit : Bool // Outbound (UH07): Voll-Puffer 27: Überwachungzeit ist abgelaufen + Err_Schritt : Bool // Outbound (UH07): Voll-Puffer 27: Schritt-Nummer ist nicht definiert + Err_Stau_Einfahrt : Bool // Outbound (UH07): Voll-Puffer 27: Stau am Lager-Eingang + Err_BLKMov : Bool // Outbound (UH07): Voll-Puffer 27: Error bei Block kopieren + Err_Trolley_raus_OUT : Bool // Outbound (UH07): Voll-Puffer 27: Trolley fährt nicht aus unterer Schleuse + Err_Puffer_nicht_leer_OUT : Bool // Outbound (UH07): Voll-Puffer 27: Trolley unten in Schleuse, obwohl keine Daten! Initialisieren hat gestartet! + Err_Trolley_nicht_in_Schleuse_IN : Bool // Outbound (UH07): Voll-Puffer 27: Trolley fährt nicht in mittlere Schleuse + Err_Trolley_raus_IN : Bool // Outbound (UH07): Voll-Puffer 27: Trolley fährt nicht aus mittlere Schleuse + Err_Puffer_nicht_leer_IN : Bool // Outbound (UH07): Voll-Puffer 27: Trolley mittig in Schleuse, obwohl keine Daten! Initialisieren hat gestartet! + Frei14 : Bool // Outbound (UH07): Voll-Puffer 27: Frei14 + Err_Raus_Sensor : Bool // Outbound (UH07): Voll-Puffer 27: Raus-Sensor hat Dauersignal oder wird nicht erreicht + Frei16 : Bool // Outbound (UH07): Voll-Puffer 27: Frei16 + Reset_aktiv : Bool // Outbound (UH07): Voll-Puffer 27: Reset ist aktiv + VollPuffer28 : Struct // Outbound (UH07): Voll-Puffer 28 MB3204 + Lager_DL : Bool // Outbound (UH07): Voll-Puffer 28: Lager-Datenliste fehlerhaft + Undef_Lager : Bool // Outbound (UH07): Voll-Puffer 28: undefinierter Lager + Err_Trolley_nicht_in_Schleuse_OUT : Bool // Outbound (UH07): Voll-Puffer 28: Trolley fährt nicht in untere Schleuse + Err_Uebzeit : Bool // Outbound (UH07): Voll-Puffer 28: Überwachungzeit ist abgelaufen + Err_Schritt : Bool // Outbound (UH07): Voll-Puffer 28: Schritt-Nummer ist nicht definiert + Err_Stau_Einfahrt : Bool // Outbound (UH07): Voll-Puffer 28: Stau am Lager-Eingang + Err_BLKMov : Bool // Outbound (UH07): Voll-Puffer 28: Error bei Block kopieren + Err_Trolley_raus_OUT : Bool // Outbound (UH07): Voll-Puffer 28: Trolley fährt nicht aus unterer Schleuse + Err_Puffer_nicht_leer_OUT : Bool // Outbound (UH07): Voll-Puffer 28: Trolley unten in Schleuse, obwohl keine Daten! Initialisieren hat gestartet! + Err_Trolley_nicht_in_Schleuse_IN : Bool // Outbound (UH07): Voll-Puffer 28: Trolley fährt nicht in mittlere Schleuse + Err_Trolley_raus_IN : Bool // Outbound (UH07): Voll-Puffer 28: Trolley fährt nicht aus mittlere Schleuse + Err_Puffer_nicht_leer_IN : Bool // Outbound (UH07): Voll-Puffer 28: Trolley mittig in Schleuse, obwohl keine Daten! Initialisieren hat gestartet! + Frei14 : Bool // Outbound (UH07): Voll-Puffer 28: Frei14 + Err_Raus_Sensor : Bool // Outbound (UH07): Voll-Puffer 28: Raus-Sensor hat Dauersignal oder wird nicht erreicht + Frei16 : Bool // Outbound (UH07): Voll-Puffer 28: Frei16 + Reset_aktiv : Bool // Outbound (UH07): Voll-Puffer 28: Reset ist aktiv + VollPuffer29 : Struct // Outbound (UH07): Voll-Puffer 29 MB3203 + Lager_DL : Bool // Outbound (UH07): Voll-Puffer 29: Lager-Datenliste fehlerhaft + Undef_Lager : Bool // Outbound (UH07): Voll-Puffer 29: undefinierter Lager + Err_Trolley_nicht_in_Schleuse_OUT : Bool // Outbound (UH07): Voll-Puffer 29: Trolley fährt nicht in untere Schleuse + Err_Uebzeit : Bool // Outbound (UH07): Voll-Puffer 29: Überwachungzeit ist abgelaufen + Err_Schritt : Bool // Outbound (UH07): Voll-Puffer 29: Schritt-Nummer ist nicht definiert + Err_Stau_Einfahrt : Bool // Outbound (UH07): Voll-Puffer 29: Stau am Lager-Eingang + Err_BLKMov : Bool // Outbound (UH07): Voll-Puffer 29: Error bei Block kopieren + Err_Trolley_raus_OUT : Bool // Outbound (UH07): Voll-Puffer 29: Trolley fährt nicht aus unterer Schleuse + Err_Puffer_nicht_leer_OUT : Bool // Outbound (UH07): Voll-Puffer 29: Trolley unten in Schleuse, obwohl keine Daten! Initialisieren hat gestartet! + Err_Trolley_nicht_in_Schleuse_IN : Bool // Outbound (UH07): Voll-Puffer 29: Trolley fährt nicht in mittlere Schleuse + Err_Trolley_raus_IN : Bool // Outbound (UH07): Voll-Puffer 29: Trolley fährt nicht aus mittlere Schleuse + Err_Puffer_nicht_leer_IN : Bool // Outbound (UH07): Voll-Puffer 29: Trolley mittig in Schleuse, obwohl keine Daten! Initialisieren hat gestartet! + Frei14 : Bool // Outbound (UH07): Voll-Puffer 29: Frei14 + Err_Raus_Sensor : Bool // Outbound (UH07): Voll-Puffer 29: Raus-Sensor hat Dauersignal oder wird nicht erreicht + Frei16 : Bool // Outbound (UH07): Voll-Puffer 29: Frei16 + Reset_aktiv : Bool // Outbound (UH07): Voll-Puffer 29: Reset ist aktiv + VollPuffer30 : Struct // Outbound (UH07): Voll-Puffer 30 MB3202 + Lager_DL : Bool // Outbound (UH07): Voll-Puffer 30: Lager-Datenliste fehlerhaft + Undef_Lager : Bool // Outbound (UH07): Voll-Puffer 30: undefinierter Lager + Err_Trolley_nicht_in_Schleuse_OUT : Bool // Outbound (UH07): Voll-Puffer 30: Trolley fährt nicht in untere Schleuse + Err_Uebzeit : Bool // Outbound (UH07): Voll-Puffer 30: Überwachungzeit ist abgelaufen + Err_Schritt : Bool // Outbound (UH07): Voll-Puffer 30: Schritt-Nummer ist nicht definiert + Err_Stau_Einfahrt : Bool // Outbound (UH07): Voll-Puffer 30: Stau am Lager-Eingang + Err_BLKMov : Bool // Outbound (UH07): Voll-Puffer 30: Error bei Block kopieren + Err_Trolley_raus_OUT : Bool // Outbound (UH07): Voll-Puffer 30: Trolley fährt nicht aus unterer Schleuse + Err_Puffer_nicht_leer_OUT : Bool // Outbound (UH07): Voll-Puffer 30: Trolley unten in Schleuse, obwohl keine Daten! Initialisieren hat gestartet! + Err_Trolley_nicht_in_Schleuse_IN : Bool // Outbound (UH07): Voll-Puffer 30: Trolley fährt nicht in mittlere Schleuse + Err_Trolley_raus_IN : Bool // Outbound (UH07): Voll-Puffer 30: Trolley fährt nicht aus mittlere Schleuse + Err_Puffer_nicht_leer_IN : Bool // Outbound (UH07): Voll-Puffer 30: Trolley mittig in Schleuse, obwohl keine Daten! Initialisieren hat gestartet! + Frei14 : Bool // Outbound (UH07): Voll-Puffer 30: Frei14 + Err_Raus_Sensor : Bool // Outbound (UH07): Voll-Puffer 30: Raus-Sensor hat Dauersignal oder wird nicht erreicht + Frei16 : Bool // Outbound (UH07): Voll-Puffer 30: Frei16 + Reset_aktiv : Bool // Outbound (UH07): Voll-Puffer 30: Reset ist aktiv + VollPuffer31 : Struct // Outbound (UH07): Voll-Puffer 31 MB3201 + Lager_DL : Bool // Outbound (UH07): Voll-Puffer 31: Lager-Datenliste fehlerhaft + Undef_Lager : Bool // Outbound (UH07): Voll-Puffer 31: undefinierter Lager + Err_Trolley_nicht_in_Schleuse_OUT : Bool // Outbound (UH07): Voll-Puffer 31: Trolley fährt nicht in untere Schleuse + Err_Uebzeit : Bool // Outbound (UH07): Voll-Puffer 31: Überwachungzeit ist abgelaufen + Err_Schritt : Bool // Outbound (UH07): Voll-Puffer 31: Schritt-Nummer ist nicht definiert + Err_Stau_Einfahrt : Bool // Outbound (UH07): Voll-Puffer 31: Stau am Lager-Eingang + Err_BLKMov : Bool // Outbound (UH07): Voll-Puffer 31: Error bei Block kopieren + Err_Trolley_raus_OUT : Bool // Outbound (UH07): Voll-Puffer 31: Trolley fährt nicht aus unterer Schleuse + Err_Puffer_nicht_leer_OUT : Bool // Outbound (UH07): Voll-Puffer 31: Trolley unten in Schleuse, obwohl keine Daten! Initialisieren hat gestartet! + Err_Trolley_nicht_in_Schleuse_IN : Bool // Outbound (UH07): Voll-Puffer 31: Trolley fährt nicht in mittlere Schleuse + Err_Trolley_raus_IN : Bool // Outbound (UH07): Voll-Puffer 31: Trolley fährt nicht aus mittlere Schleuse + Err_Puffer_nicht_leer_IN : Bool // Outbound (UH07): Voll-Puffer 31: Trolley mittig in Schleuse, obwohl keine Daten! Initialisieren hat gestartet! + Frei14 : Bool // Outbound (UH07): Voll-Puffer 31: Frei14 + Err_Raus_Sensor : Bool // Outbound (UH07): Voll-Puffer 31: Raus-Sensor hat Dauersignal oder wird nicht erreicht + Frei16 : Bool // Outbound (UH07): Voll-Puffer 31: Frei16 + Reset_aktiv : Bool // Outbound (UH07): Voll-Puffer 31: Reset ist aktiv + VollPuffer32 : Struct // Outbound (UH07): Voll-Puffer 32 MB3200 + Lager_DL : Bool // Outbound (UH07): Voll-Puffer 32: Lager-Datenliste fehlerhaft + Undef_Lager : Bool // Outbound (UH07): Voll-Puffer 32: undefinierter Lager + Err_Trolley_nicht_in_Schleuse_OUT : Bool // Outbound (UH07): Voll-Puffer 32: Trolley fährt nicht in untere Schleuse + Err_Uebzeit : Bool // Outbound (UH07): Voll-Puffer 32: Überwachungzeit ist abgelaufen + Err_Schritt : Bool // Outbound (UH07): Voll-Puffer 32: Schritt-Nummer ist nicht definiert + Err_Stau_Einfahrt : Bool // Outbound (UH07): Voll-Puffer 32: Stau am Lager-Eingang + Err_BLKMov : Bool // Outbound (UH07): Voll-Puffer 32: Error bei Block kopieren + Err_Trolley_raus_OUT : Bool // Outbound (UH07): Voll-Puffer 32: Trolley fährt nicht aus unterer Schleuse + Err_Puffer_nicht_leer_OUT : Bool // Outbound (UH07): Voll-Puffer 32: Trolley unten in Schleuse, obwohl keine Daten! Initialisieren hat gestartet! + Err_Trolley_nicht_in_Schleuse_IN : Bool // Outbound (UH07): Voll-Puffer 32: Trolley fährt nicht in mittlere Schleuse + Err_Trolley_raus_IN : Bool // Outbound (UH07): Voll-Puffer 32: Trolley fährt nicht aus mittlere Schleuse + Err_Puffer_nicht_leer_IN : Bool // Outbound (UH07): Voll-Puffer 32: Trolley mittig in Schleuse, obwohl keine Daten! Initialisieren hat gestartet! + Frei14 : Bool // Outbound (UH07): Voll-Puffer 32: Frei14 + Err_Raus_Sensor : Bool // Outbound (UH07): Voll-Puffer 32: Raus-Sensor hat Dauersignal oder wird nicht erreicht + Frei16 : Bool // Outbound (UH07): Voll-Puffer 32: Frei16 + Reset_aktiv : Bool // Outbound (UH07): Voll-Puffer 32: Reset ist aktiv + VollPuffer33 : Struct // Outbound (UH07): Voll-Puffer 33 MB3197 + Lager_DL : Bool // Outbound (UH07): Voll-Puffer 33: Lager-Datenliste fehlerhaft + Undef_Lager : Bool // Outbound (UH07): Voll-Puffer 33: undefinierter Lager + Err_Trolley_nicht_in_Schleuse_OUT : Bool // Outbound (UH07): Voll-Puffer 33: Trolley fährt nicht in untere Schleuse + Err_Uebzeit : Bool // Outbound (UH07): Voll-Puffer 33: Überwachungzeit ist abgelaufen + Err_Schritt : Bool // Outbound (UH07): Voll-Puffer 33: Schritt-Nummer ist nicht definiert + Err_Stau_Einfahrt : Bool // Outbound (UH07): Voll-Puffer 33: Stau am Lager-Eingang + Err_BLKMov : Bool // Outbound (UH07): Voll-Puffer 33: Error bei Block kopieren + Err_Trolley_raus_OUT : Bool // Outbound (UH07): Voll-Puffer 33: Trolley fährt nicht aus unterer Schleuse + Err_Puffer_nicht_leer_OUT : Bool // Outbound (UH07): Voll-Puffer 33: Trolley unten in Schleuse, obwohl keine Daten! Initialisieren hat gestartet! + Err_Trolley_nicht_in_Schleuse_IN : Bool // Outbound (UH07): Voll-Puffer 33: Trolley fährt nicht in mittlere Schleuse + Err_Trolley_raus_IN : Bool // Outbound (UH07): Voll-Puffer 33: Trolley fährt nicht aus mittlere Schleuse + Err_Puffer_nicht_leer_IN : Bool // Outbound (UH07): Voll-Puffer 33: Trolley mittig in Schleuse, obwohl keine Daten! Initialisieren hat gestartet! + Frei14 : Bool // Outbound (UH07): Voll-Puffer 33: Frei14 + Err_Raus_Sensor : Bool // Outbound (UH07): Voll-Puffer 33: Raus-Sensor hat Dauersignal oder wird nicht erreicht + Frei16 : Bool // Outbound (UH07): Voll-Puffer 33: Frei16 + Reset_aktiv : Bool // Outbound (UH07): Voll-Puffer 33: Reset ist aktiv + VollPuffer34 : Struct // Outbound (UH07): Voll-Puffer 34 MB3196 + Lager_DL : Bool // Outbound (UH07): Voll-Puffer 34: Lager-Datenliste fehlerhaft + Undef_Lager : Bool // Outbound (UH07): Voll-Puffer 34: undefinierter Lager + Err_Trolley_nicht_in_Schleuse_OUT : Bool // Outbound (UH07): Voll-Puffer 34: Trolley fährt nicht in untere Schleuse + Err_Uebzeit : Bool // Outbound (UH07): Voll-Puffer 34: Überwachungzeit ist abgelaufen + Err_Schritt : Bool // Outbound (UH07): Voll-Puffer 34: Schritt-Nummer ist nicht definiert + Err_Stau_Einfahrt : Bool // Outbound (UH07): Voll-Puffer 34: Stau am Lager-Eingang + Err_BLKMov : Bool // Outbound (UH07): Voll-Puffer 34: Error bei Block kopieren + Err_Trolley_raus_OUT : Bool // Outbound (UH07): Voll-Puffer 34: Trolley fährt nicht aus unterer Schleuse + Err_Puffer_nicht_leer_OUT : Bool // Outbound (UH07): Voll-Puffer 34: Trolley unten in Schleuse, obwohl keine Daten! Initialisieren hat gestartet! + Err_Trolley_nicht_in_Schleuse_IN : Bool // Outbound (UH07): Voll-Puffer 34: Trolley fährt nicht in mittlere Schleuse + Err_Trolley_raus_IN : Bool // Outbound (UH07): Voll-Puffer 34: Trolley fährt nicht aus mittlere Schleuse + Err_Puffer_nicht_leer_IN : Bool // Outbound (UH07): Voll-Puffer 34: Trolley mittig in Schleuse, obwohl keine Daten! Initialisieren hat gestartet! + Frei14 : Bool // Outbound (UH07): Voll-Puffer 34: Frei14 + Err_Raus_Sensor : Bool // Outbound (UH07): Voll-Puffer 34: Raus-Sensor hat Dauersignal oder wird nicht erreicht + Frei16 : Bool // Outbound (UH07): Voll-Puffer 34: Frei16 + Reset_aktiv : Bool // Outbound (UH07): Voll-Puffer 34: Reset ist aktiv + VollPuffer35 : Struct // Outbound (UH07): Voll-Puffer 35 MB3195 + Lager_DL : Bool // Outbound (UH07): Voll-Puffer 35: Lager-Datenliste fehlerhaft + Undef_Lager : Bool // Outbound (UH07): Voll-Puffer 35: undefinierter Lager + Err_Trolley_nicht_in_Schleuse_OUT : Bool // Outbound (UH07): Voll-Puffer 35: Trolley fährt nicht in untere Schleuse + Err_Uebzeit : Bool // Outbound (UH07): Voll-Puffer 35: Überwachungzeit ist abgelaufen + Err_Schritt : Bool // Outbound (UH07): Voll-Puffer 35: Schritt-Nummer ist nicht definiert + Err_Stau_Einfahrt : Bool // Outbound (UH07): Voll-Puffer 35: Stau am Lager-Eingang + Err_BLKMov : Bool // Outbound (UH07): Voll-Puffer 35: Error bei Block kopieren + Err_Trolley_raus_OUT : Bool // Outbound (UH07): Voll-Puffer 35: Trolley fährt nicht aus unterer Schleuse + Err_Puffer_nicht_leer_OUT : Bool // Outbound (UH07): Voll-Puffer 35: Trolley unten in Schleuse, obwohl keine Daten! Initialisieren hat gestartet! + Err_Trolley_nicht_in_Schleuse_IN : Bool // Outbound (UH07): Voll-Puffer 35: Trolley fährt nicht in mittlere Schleuse + Err_Trolley_raus_IN : Bool // Outbound (UH07): Voll-Puffer 35: Trolley fährt nicht aus mittlere Schleuse + Err_Puffer_nicht_leer_IN : Bool // Outbound (UH07): Voll-Puffer 35: Trolley mittig in Schleuse, obwohl keine Daten! Initialisieren hat gestartet! + Frei14 : Bool // Outbound (UH07): Voll-Puffer 35: Frei14 + Err_Raus_Sensor : Bool // Outbound (UH07): Voll-Puffer 35: Raus-Sensor hat Dauersignal oder wird nicht erreicht + Frei16 : Bool // Outbound (UH07): Voll-Puffer 35: Frei16 + Reset_aktiv : Bool // Outbound (UH07): Voll-Puffer 35: Reset ist aktiv + VollPuffer36 : Struct // Outbound (UH07): Voll-Puffer 36 MB3194 + Lager_DL : Bool // Outbound (UH07): Voll-Puffer 36: Lager-Datenliste fehlerhaft + Undef_Lager : Bool // Outbound (UH07): Voll-Puffer 36: undefinierter Lager + Err_Trolley_nicht_in_Schleuse_OUT : Bool // Outbound (UH07): Voll-Puffer 36: Trolley fährt nicht in untere Schleuse + Err_Uebzeit : Bool // Outbound (UH07): Voll-Puffer 36: Überwachungzeit ist abgelaufen + Err_Schritt : Bool // Outbound (UH07): Voll-Puffer 36: Schritt-Nummer ist nicht definiert + Err_Stau_Einfahrt : Bool // Outbound (UH07): Voll-Puffer 36: Stau am Lager-Eingang + Err_BLKMov : Bool // Outbound (UH07): Voll-Puffer 36: Error bei Block kopieren + Err_Trolley_raus_OUT : Bool // Outbound (UH07): Voll-Puffer 36: Trolley fährt nicht aus unterer Schleuse + Err_Puffer_nicht_leer_OUT : Bool // Outbound (UH07): Voll-Puffer 36: Trolley unten in Schleuse, obwohl keine Daten! Initialisieren hat gestartet! + Err_Trolley_nicht_in_Schleuse_IN : Bool // Outbound (UH07): Voll-Puffer 36: Trolley fährt nicht in mittlere Schleuse + Err_Trolley_raus_IN : Bool // Outbound (UH07): Voll-Puffer 36: Trolley fährt nicht aus mittlere Schleuse + Err_Puffer_nicht_leer_IN : Bool // Outbound (UH07): Voll-Puffer 36: Trolley mittig in Schleuse, obwohl keine Daten! Initialisieren hat gestartet! + Frei14 : Bool // Outbound (UH07): Voll-Puffer 36: Frei14 + Err_Raus_Sensor : Bool // Outbound (UH07): Voll-Puffer 36: Raus-Sensor hat Dauersignal oder wird nicht erreicht + Frei16 : Bool // Outbound (UH07): Voll-Puffer 36: Frei16 + Reset_aktiv : Bool // Outbound (UH07): Voll-Puffer 36: Reset ist aktiv + VollPuffer37 : Struct // Outbound (UH07): Voll-Puffer 37 MB3193 + Lager_DL : Bool // Outbound (UH07): Voll-Puffer 37: Lager-Datenliste fehlerhaft + Undef_Lager : Bool // Outbound (UH07): Voll-Puffer 37: undefinierter Lager + Err_Trolley_nicht_in_Schleuse_OUT : Bool // Outbound (UH07): Voll-Puffer 37: Trolley fährt nicht in untere Schleuse + Err_Uebzeit : Bool // Outbound (UH07): Voll-Puffer 37: Überwachungzeit ist abgelaufen + Err_Schritt : Bool // Outbound (UH07): Voll-Puffer 37: Schritt-Nummer ist nicht definiert + Err_Stau_Einfahrt : Bool // Outbound (UH07): Voll-Puffer 37: Stau am Lager-Eingang + Err_BLKMov : Bool // Outbound (UH07): Voll-Puffer 37: Error bei Block kopieren + Err_Trolley_raus_OUT : Bool // Outbound (UH07): Voll-Puffer 37: Trolley fährt nicht aus unterer Schleuse + Err_Puffer_nicht_leer_OUT : Bool // Outbound (UH07): Voll-Puffer 37: Trolley unten in Schleuse, obwohl keine Daten! Initialisieren hat gestartet! + Err_Trolley_nicht_in_Schleuse_IN : Bool // Outbound (UH07): Voll-Puffer 37: Trolley fährt nicht in mittlere Schleuse + Err_Trolley_raus_IN : Bool // Outbound (UH07): Voll-Puffer 37: Trolley fährt nicht aus mittlere Schleuse + Err_Puffer_nicht_leer_IN : Bool // Outbound (UH07): Voll-Puffer 37: Trolley mittig in Schleuse, obwohl keine Daten! Initialisieren hat gestartet! + Frei14 : Bool // Outbound (UH07): Voll-Puffer 37: Frei14 + Err_Raus_Sensor : Bool // Outbound (UH07): Voll-Puffer 37: Raus-Sensor hat Dauersignal oder wird nicht erreicht + Frei16 : Bool // Outbound (UH07): Voll-Puffer 37: Frei16 + Reset_aktiv : Bool // Outbound (UH07): Voll-Puffer 37: Reset ist aktiv + VollPuffer38 : Struct // Outbound (UH07): Voll-Puffer 38 MB3192 + Lager_DL : Bool // Outbound (UH07): Voll-Puffer 38: Lager-Datenliste fehlerhaft + Undef_Lager : Bool // Outbound (UH07): Voll-Puffer 38: undefinierter Lager + Err_Trolley_nicht_in_Schleuse_OUT : Bool // Outbound (UH07): Voll-Puffer 38: Trolley fährt nicht in untere Schleuse + Err_Uebzeit : Bool // Outbound (UH07): Voll-Puffer 38: Überwachungzeit ist abgelaufen + Err_Schritt : Bool // Outbound (UH07): Voll-Puffer 38: Schritt-Nummer ist nicht definiert + Err_Stau_Einfahrt : Bool // Outbound (UH07): Voll-Puffer 38: Stau am Lager-Eingang + Err_BLKMov : Bool // Outbound (UH07): Voll-Puffer 38: Error bei Block kopieren + Err_Trolley_raus_OUT : Bool // Outbound (UH07): Voll-Puffer 38: Trolley fährt nicht aus unterer Schleuse + Err_Puffer_nicht_leer_OUT : Bool // Outbound (UH07): Voll-Puffer 38: Trolley unten in Schleuse, obwohl keine Daten! Initialisieren hat gestartet! + Err_Trolley_nicht_in_Schleuse_IN : Bool // Outbound (UH07): Voll-Puffer 38: Trolley fährt nicht in mittlere Schleuse + Err_Trolley_raus_IN : Bool // Outbound (UH07): Voll-Puffer 38: Trolley fährt nicht aus mittlere Schleuse + Err_Puffer_nicht_leer_IN : Bool // Outbound (UH07): Voll-Puffer 38: Trolley mittig in Schleuse, obwohl keine Daten! Initialisieren hat gestartet! + Frei14 : Bool // Outbound (UH07): Voll-Puffer 38: Frei14 + Err_Raus_Sensor : Bool // Outbound (UH07): Voll-Puffer 38: Raus-Sensor hat Dauersignal oder wird nicht erreicht + Frei16 : Bool // Outbound (UH07): Voll-Puffer 38: Frei16 + Reset_aktiv : Bool // Outbound (UH07): Voll-Puffer 38: Reset ist aktiv + VollPuffer39 : Struct // Outbound (UH07): Voll-Puffer 39 MB3191 + Lager_DL : Bool // Outbound (UH07): Voll-Puffer 39: Lager-Datenliste fehlerhaft + Undef_Lager : Bool // Outbound (UH07): Voll-Puffer 39: undefinierter Lager + Err_Trolley_nicht_in_Schleuse_OUT : Bool // Outbound (UH07): Voll-Puffer 39: Trolley fährt nicht in untere Schleuse + Err_Uebzeit : Bool // Outbound (UH07): Voll-Puffer 39: Überwachungzeit ist abgelaufen + Err_Schritt : Bool // Outbound (UH07): Voll-Puffer 39: Schritt-Nummer ist nicht definiert + Err_Stau_Einfahrt : Bool // Outbound (UH07): Voll-Puffer 39: Stau am Lager-Eingang + Err_BLKMov : Bool // Outbound (UH07): Voll-Puffer 39: Error bei Block kopieren + Err_Trolley_raus_OUT : Bool // Outbound (UH07): Voll-Puffer 39: Trolley fährt nicht aus unterer Schleuse + Err_Puffer_nicht_leer_OUT : Bool // Outbound (UH07): Voll-Puffer 39: Trolley unten in Schleuse, obwohl keine Daten! Initialisieren hat gestartet! + Err_Trolley_nicht_in_Schleuse_IN : Bool // Outbound (UH07): Voll-Puffer 39: Trolley fährt nicht in mittlere Schleuse + Err_Trolley_raus_IN : Bool // Outbound (UH07): Voll-Puffer 39: Trolley fährt nicht aus mittlere Schleuse + Err_Puffer_nicht_leer_IN : Bool // Outbound (UH07): Voll-Puffer 39: Trolley mittig in Schleuse, obwohl keine Daten! Initialisieren hat gestartet! + Frei14 : Bool // Outbound (UH07): Voll-Puffer 39: Frei14 + Err_Raus_Sensor : Bool // Outbound (UH07): Voll-Puffer 39: Raus-Sensor hat Dauersignal oder wird nicht erreicht + Frei16 : Bool // Outbound (UH07): Voll-Puffer 39: Frei16 + Reset_aktiv : Bool // Outbound (UH07): Voll-Puffer 39: Reset ist aktiv + VollPuffer40 : Struct // Outbound (UH07): Voll-Puffer 40 MB3190 + Lager_DL : Bool // Outbound (UH07): Voll-Puffer 40: Lager-Datenliste fehlerhaft + Undef_Lager : Bool // Outbound (UH07): Voll-Puffer 40: undefinierter Lager + Err_Trolley_nicht_in_Schleuse_OUT : Bool // Outbound (UH07): Voll-Puffer 40: Trolley fährt nicht in untere Schleuse + Err_Uebzeit : Bool // Outbound (UH07): Voll-Puffer 40: Überwachungzeit ist abgelaufen + Err_Schritt : Bool // Outbound (UH07): Voll-Puffer 40: Schritt-Nummer ist nicht definiert + Err_Stau_Einfahrt : Bool // Outbound (UH07): Voll-Puffer 40: Stau am Lager-Eingang + Err_BLKMov : Bool // Outbound (UH07): Voll-Puffer 40: Error bei Block kopieren + Err_Trolley_raus_OUT : Bool // Outbound (UH07): Voll-Puffer 40: Trolley fährt nicht aus unterer Schleuse + Err_Puffer_nicht_leer_OUT : Bool // Outbound (UH07): Voll-Puffer 40: Trolley unten in Schleuse, obwohl keine Daten! Initialisieren hat gestartet! + Err_Trolley_nicht_in_Schleuse_IN : Bool // Outbound (UH07): Voll-Puffer 40: Trolley fährt nicht in mittlere Schleuse + Err_Trolley_raus_IN : Bool // Outbound (UH07): Voll-Puffer 40: Trolley fährt nicht aus mittlere Schleuse + Err_Puffer_nicht_leer_IN : Bool // Outbound (UH07): Voll-Puffer 40: Trolley mittig in Schleuse, obwohl keine Daten! Initialisieren hat gestartet! + Frei14 : Bool // Outbound (UH07): Voll-Puffer 40: Frei14 + Err_Raus_Sensor : Bool // Outbound (UH07): Voll-Puffer 40: Raus-Sensor hat Dauersignal oder wird nicht erreicht + Frei16 : Bool // Outbound (UH07): Voll-Puffer 40: Frei16 + Reset_aktiv : Bool // Outbound (UH07): Voll-Puffer 40: Reset ist aktiv + VollPuffer41 : Struct // Outbound (UH07): Voll-Puffer 41 MB3494 + Lager_DL : Bool // Outbound (UH07): Voll-Puffer 41: Lager-Datenliste fehlerhaft + Undef_Lager : Bool // Outbound (UH07): Voll-Puffer 41: undefinierter Lager + Err_Trolley_nicht_in_Schleuse_OUT : Bool // Outbound (UH07): Voll-Puffer 41: Trolley fährt nicht in untere Schleuse + Err_Uebzeit : Bool // Outbound (UH07): Voll-Puffer 41: Überwachungzeit ist abgelaufen + Err_Schritt : Bool // Outbound (UH07): Voll-Puffer 41: Schritt-Nummer ist nicht definiert + Err_Stau_Einfahrt : Bool // Outbound (UH07): Voll-Puffer 41: Stau am Lager-Eingang + Err_BLKMov : Bool // Outbound (UH07): Voll-Puffer 41: Error bei Block kopieren + Err_Trolley_raus_OUT : Bool // Outbound (UH07): Voll-Puffer 41: Trolley fährt nicht aus unterer Schleuse + Err_Puffer_nicht_leer_OUT : Bool // Outbound (UH07): Voll-Puffer 41: Trolley unten in Schleuse, obwohl keine Daten! Initialisieren hat gestartet! + Err_Trolley_nicht_in_Schleuse_IN : Bool // Outbound (UH07): Voll-Puffer 41: Trolley fährt nicht in mittlere Schleuse + Err_Trolley_raus_IN : Bool // Outbound (UH07): Voll-Puffer 41: Trolley fährt nicht aus mittlere Schleuse + Err_Puffer_nicht_leer_IN : Bool // Outbound (UH07): Voll-Puffer 41: Trolley mittig in Schleuse, obwohl keine Daten! Initialisieren hat gestartet! + Frei14 : Bool // Outbound (UH07): Voll-Puffer 41: Frei14 + Err_Raus_Sensor : Bool // Outbound (UH07): Voll-Puffer 41: Raus-Sensor hat Dauersignal oder wird nicht erreicht + Frei16 : Bool // Outbound (UH07): Voll-Puffer 41: Frei16 + Reset_aktiv : Bool // Outbound (UH07): Voll-Puffer 41: Reset ist aktiv + VollPuffer42 : Struct // Outbound (UH07): Voll-Puffer 42 MB3493 + Lager_DL : Bool // Outbound (UH07): Voll-Puffer 42: Lager-Datenliste fehlerhaft + Undef_Lager : Bool // Outbound (UH07): Voll-Puffer 42: undefinierter Lager + Err_Trolley_nicht_in_Schleuse_OUT : Bool // Outbound (UH07): Voll-Puffer 42: Trolley fährt nicht in untere Schleuse + Err_Uebzeit : Bool // Outbound (UH07): Voll-Puffer 42: Überwachungzeit ist abgelaufen + Err_Schritt : Bool // Outbound (UH07): Voll-Puffer 42: Schritt-Nummer ist nicht definiert + Err_Stau_Einfahrt : Bool // Outbound (UH07): Voll-Puffer 42: Stau am Lager-Eingang + Err_BLKMov : Bool // Outbound (UH07): Voll-Puffer 42: Error bei Block kopieren + Err_Trolley_raus_OUT : Bool // Outbound (UH07): Voll-Puffer 42: Trolley fährt nicht aus unterer Schleuse + Err_Puffer_nicht_leer_OUT : Bool // Outbound (UH07): Voll-Puffer 42: Trolley unten in Schleuse, obwohl keine Daten! Initialisieren hat gestartet! + Err_Trolley_nicht_in_Schleuse_IN : Bool // Outbound (UH07): Voll-Puffer 42: Trolley fährt nicht in mittlere Schleuse + Err_Trolley_raus_IN : Bool // Outbound (UH07): Voll-Puffer 42: Trolley fährt nicht aus mittlere Schleuse + Err_Puffer_nicht_leer_IN : Bool // Outbound (UH07): Voll-Puffer 42: Trolley mittig in Schleuse, obwohl keine Daten! Initialisieren hat gestartet! + Frei14 : Bool // Outbound (UH07): Voll-Puffer 42: Frei14 + Err_Raus_Sensor : Bool // Outbound (UH07): Voll-Puffer 42: Raus-Sensor hat Dauersignal oder wird nicht erreicht + Frei16 : Bool // Outbound (UH07): Voll-Puffer 42: Frei16 + Reset_aktiv : Bool // Outbound (UH07): Voll-Puffer 42: Reset ist aktiv + VollPuffer43 : Struct // Outbound (UH07): Voll-Puffer 43 MB3492 + Lager_DL : Bool // Outbound (UH07): Voll-Puffer 43: Lager-Datenliste fehlerhaft + Undef_Lager : Bool // Outbound (UH07): Voll-Puffer 43: undefinierter Lager + Err_Trolley_nicht_in_Schleuse_OUT : Bool // Outbound (UH07): Voll-Puffer 43: Trolley fährt nicht in untere Schleuse + Err_Uebzeit : Bool // Outbound (UH07): Voll-Puffer 43: Überwachungzeit ist abgelaufen + Err_Schritt : Bool // Outbound (UH07): Voll-Puffer 43: Schritt-Nummer ist nicht definiert + Err_Stau_Einfahrt : Bool // Outbound (UH07): Voll-Puffer 43: Stau am Lager-Eingang + Err_BLKMov : Bool // Outbound (UH07): Voll-Puffer 43: Error bei Block kopieren + Err_Trolley_raus_OUT : Bool // Outbound (UH07): Voll-Puffer 43: Trolley fährt nicht aus unterer Schleuse + Err_Puffer_nicht_leer_OUT : Bool // Outbound (UH07): Voll-Puffer 43: Trolley unten in Schleuse, obwohl keine Daten! Initialisieren hat gestartet! + Err_Trolley_nicht_in_Schleuse_IN : Bool // Outbound (UH07): Voll-Puffer 43: Trolley fährt nicht in mittlere Schleuse + Err_Trolley_raus_IN : Bool // Outbound (UH07): Voll-Puffer 43: Trolley fährt nicht aus mittlere Schleuse + Err_Puffer_nicht_leer_IN : Bool // Outbound (UH07): Voll-Puffer 43: Trolley mittig in Schleuse, obwohl keine Daten! Initialisieren hat gestartet! + Frei14 : Bool // Outbound (UH07): Voll-Puffer 43: Frei14 + Err_Raus_Sensor : Bool // Outbound (UH07): Voll-Puffer 43: Raus-Sensor hat Dauersignal oder wird nicht erreicht + Frei16 : Bool // Outbound (UH07): Voll-Puffer 43: Frei16 + Reset_aktiv : Bool // Outbound (UH07): Voll-Puffer 43: Reset ist aktiv + VollPuffer44 : Struct // Outbound (UH07): Voll-Puffer 44 MB3491 + Lager_DL : Bool // Outbound (UH07): Voll-Puffer 44: Lager-Datenliste fehlerhaft + Undef_Lager : Bool // Outbound (UH07): Voll-Puffer 44: undefinierter Lager + Err_Trolley_nicht_in_Schleuse_OUT : Bool // Outbound (UH07): Voll-Puffer 44: Trolley fährt nicht in untere Schleuse + Err_Uebzeit : Bool // Outbound (UH07): Voll-Puffer 44: Überwachungzeit ist abgelaufen + Err_Schritt : Bool // Outbound (UH07): Voll-Puffer 44: Schritt-Nummer ist nicht definiert + Err_Stau_Einfahrt : Bool // Outbound (UH07): Voll-Puffer 44: Stau am Lager-Eingang + Err_BLKMov : Bool // Outbound (UH07): Voll-Puffer 44: Error bei Block kopieren + Err_Trolley_raus_OUT : Bool // Outbound (UH07): Voll-Puffer 44: Trolley fährt nicht aus unterer Schleuse + Err_Puffer_nicht_leer_OUT : Bool // Outbound (UH07): Voll-Puffer 44: Trolley unten in Schleuse, obwohl keine Daten! Initialisieren hat gestartet! + Err_Trolley_nicht_in_Schleuse_IN : Bool // Outbound (UH07): Voll-Puffer 44: Trolley fährt nicht in mittlere Schleuse + Err_Trolley_raus_IN : Bool // Outbound (UH07): Voll-Puffer 44: Trolley fährt nicht aus mittlere Schleuse + Err_Puffer_nicht_leer_IN : Bool // Outbound (UH07): Voll-Puffer 44: Trolley mittig in Schleuse, obwohl keine Daten! Initialisieren hat gestartet! + Frei14 : Bool // Outbound (UH07): Voll-Puffer 44: Frei14 + Err_Raus_Sensor : Bool // Outbound (UH07): Voll-Puffer 44: Raus-Sensor hat Dauersignal oder wird nicht erreicht + Frei16 : Bool // Outbound (UH07): Voll-Puffer 44: Frei16 + Reset_aktiv : Bool // Outbound (UH07): Voll-Puffer 44: Reset ist aktiv + VollPuffer45 : Struct // Outbound (UH07): Voll-Puffer 45 MB3490 + Lager_DL : Bool // Outbound (UH07): Voll-Puffer 45: Lager-Datenliste fehlerhaft + Undef_Lager : Bool // Outbound (UH07): Voll-Puffer 45: undefinierter Lager + Err_Trolley_nicht_in_Schleuse_OUT : Bool // Outbound (UH07): Voll-Puffer 45: Trolley fährt nicht in untere Schleuse + Err_Uebzeit : Bool // Outbound (UH07): Voll-Puffer 45: Überwachungzeit ist abgelaufen + Err_Schritt : Bool // Outbound (UH07): Voll-Puffer 45: Schritt-Nummer ist nicht definiert + Err_Stau_Einfahrt : Bool // Outbound (UH07): Voll-Puffer 45: Stau am Lager-Eingang + Err_BLKMov : Bool // Outbound (UH07): Voll-Puffer 45: Error bei Block kopieren + Err_Trolley_raus_OUT : Bool // Outbound (UH07): Voll-Puffer 45: Trolley fährt nicht aus unterer Schleuse + Err_Puffer_nicht_leer_OUT : Bool // Outbound (UH07): Voll-Puffer 45: Trolley unten in Schleuse, obwohl keine Daten! Initialisieren hat gestartet! + Err_Trolley_nicht_in_Schleuse_IN : Bool // Outbound (UH07): Voll-Puffer 45: Trolley fährt nicht in mittlere Schleuse + Err_Trolley_raus_IN : Bool // Outbound (UH07): Voll-Puffer 45: Trolley fährt nicht aus mittlere Schleuse + Err_Puffer_nicht_leer_IN : Bool // Outbound (UH07): Voll-Puffer 45: Trolley mittig in Schleuse, obwohl keine Daten! Initialisieren hat gestartet! + Frei14 : Bool // Outbound (UH07): Voll-Puffer 45: Frei14 + Err_Raus_Sensor : Bool // Outbound (UH07): Voll-Puffer 45: Raus-Sensor hat Dauersignal oder wird nicht erreicht + Frei16 : Bool // Outbound (UH07): Voll-Puffer 45: Frei16 + Reset_aktiv : Bool // Outbound (UH07): Voll-Puffer 45: Reset ist aktiv + VollPuffer46 : Struct // Outbound (UH07): Voll-Puffer 46 MB3487 + Lager_DL : Bool // Outbound (UH07): Voll-Puffer 46: Lager-Datenliste fehlerhaft + Undef_Lager : Bool // Outbound (UH07): Voll-Puffer 46: undefinierter Lager + Err_Trolley_nicht_in_Schleuse_OUT : Bool // Outbound (UH07): Voll-Puffer 46: Trolley fährt nicht in untere Schleuse + Err_Uebzeit : Bool // Outbound (UH07): Voll-Puffer 46: Überwachungzeit ist abgelaufen + Err_Schritt : Bool // Outbound (UH07): Voll-Puffer 46: Schritt-Nummer ist nicht definiert + Err_Stau_Einfahrt : Bool // Outbound (UH07): Voll-Puffer 46: Stau am Lager-Eingang + Err_BLKMov : Bool // Outbound (UH07): Voll-Puffer 46: Error bei Block kopieren + Err_Trolley_raus_OUT : Bool // Outbound (UH07): Voll-Puffer 46: Trolley fährt nicht aus unterer Schleuse + Err_Puffer_nicht_leer_OUT : Bool // Outbound (UH07): Voll-Puffer 46: Trolley unten in Schleuse, obwohl keine Daten! Initialisieren hat gestartet! + Err_Trolley_nicht_in_Schleuse_IN : Bool // Outbound (UH07): Voll-Puffer 46: Trolley fährt nicht in mittlere Schleuse + Err_Trolley_raus_IN : Bool // Outbound (UH07): Voll-Puffer 46: Trolley fährt nicht aus mittlere Schleuse + Err_Puffer_nicht_leer_IN : Bool // Outbound (UH07): Voll-Puffer 46: Trolley mittig in Schleuse, obwohl keine Daten! Initialisieren hat gestartet! + Frei14 : Bool // Outbound (UH07): Voll-Puffer 46: Frei14 + Err_Raus_Sensor : Bool // Outbound (UH07): Voll-Puffer 46: Raus-Sensor hat Dauersignal oder wird nicht erreicht + Frei16 : Bool // Outbound (UH07): Voll-Puffer 46: Frei16 + Reset_aktiv : Bool // Outbound (UH07): Voll-Puffer 46: Reset ist aktiv + VollPuffer47 : Struct // Outbound (UH07): Voll-Puffer 47 MB3486 + Lager_DL : Bool // Outbound (UH07): Voll-Puffer 47: Lager-Datenliste fehlerhaft + Undef_Lager : Bool // Outbound (UH07): Voll-Puffer 47: undefinierter Lager + Err_Trolley_nicht_in_Schleuse_OUT : Bool // Outbound (UH07): Voll-Puffer 47: Trolley fährt nicht in untere Schleuse + Err_Uebzeit : Bool // Outbound (UH07): Voll-Puffer 47: Überwachungzeit ist abgelaufen + Err_Schritt : Bool // Outbound (UH07): Voll-Puffer 47: Schritt-Nummer ist nicht definiert + Err_Stau_Einfahrt : Bool // Outbound (UH07): Voll-Puffer 47: Stau am Lager-Eingang + Err_BLKMov : Bool // Outbound (UH07): Voll-Puffer 47: Error bei Block kopieren + Err_Trolley_raus_OUT : Bool // Outbound (UH07): Voll-Puffer 47: Trolley fährt nicht aus unterer Schleuse + Err_Puffer_nicht_leer_OUT : Bool // Outbound (UH07): Voll-Puffer 47: Trolley unten in Schleuse, obwohl keine Daten! Initialisieren hat gestartet! + Err_Trolley_nicht_in_Schleuse_IN : Bool // Outbound (UH07): Voll-Puffer 47: Trolley fährt nicht in mittlere Schleuse + Err_Trolley_raus_IN : Bool // Outbound (UH07): Voll-Puffer 47: Trolley fährt nicht aus mittlere Schleuse + Err_Puffer_nicht_leer_IN : Bool // Outbound (UH07): Voll-Puffer 47: Trolley mittig in Schleuse, obwohl keine Daten! Initialisieren hat gestartet! + Frei14 : Bool // Outbound (UH07): Voll-Puffer 47: Frei14 + Err_Raus_Sensor : Bool // Outbound (UH07): Voll-Puffer 47: Raus-Sensor hat Dauersignal oder wird nicht erreicht + Frei16 : Bool // Outbound (UH07): Voll-Puffer 47: Frei16 + Reset_aktiv : Bool // Outbound (UH07): Voll-Puffer 47: Reset ist aktiv + VollPuffer48 : Struct // Outbound (UH07): Voll-Puffer 48 MB3485 + Lager_DL : Bool // Outbound (UH07): Voll-Puffer 48: Lager-Datenliste fehlerhaft + Undef_Lager : Bool // Outbound (UH07): Voll-Puffer 48: undefinierter Lager + Err_Trolley_nicht_in_Schleuse_OUT : Bool // Outbound (UH07): Voll-Puffer 48: Trolley fährt nicht in untere Schleuse + Err_Uebzeit : Bool // Outbound (UH07): Voll-Puffer 48: Überwachungzeit ist abgelaufen + Err_Schritt : Bool // Outbound (UH07): Voll-Puffer 48: Schritt-Nummer ist nicht definiert + Err_Stau_Einfahrt : Bool // Outbound (UH07): Voll-Puffer 48: Stau am Lager-Eingang + Err_BLKMov : Bool // Outbound (UH07): Voll-Puffer 48: Error bei Block kopieren + Err_Trolley_raus_OUT : Bool // Outbound (UH07): Voll-Puffer 48: Trolley fährt nicht aus unterer Schleuse + Err_Puffer_nicht_leer_OUT : Bool // Outbound (UH07): Voll-Puffer 48: Trolley unten in Schleuse, obwohl keine Daten! Initialisieren hat gestartet! + Err_Trolley_nicht_in_Schleuse_IN : Bool // Outbound (UH07): Voll-Puffer 48: Trolley fährt nicht in mittlere Schleuse + Err_Trolley_raus_IN : Bool // Outbound (UH07): Voll-Puffer 48: Trolley fährt nicht aus mittlere Schleuse + Err_Puffer_nicht_leer_IN : Bool // Outbound (UH07): Voll-Puffer 48: Trolley mittig in Schleuse, obwohl keine Daten! Initialisieren hat gestartet! + Frei14 : Bool // Outbound (UH07): Voll-Puffer 48: Frei14 + Err_Raus_Sensor : Bool // Outbound (UH07): Voll-Puffer 48: Raus-Sensor hat Dauersignal oder wird nicht erreicht + Frei16 : Bool // Outbound (UH07): Voll-Puffer 48: Frei16 + Reset_aktiv : Bool // Outbound (UH07): Voll-Puffer 48: Reset ist aktiv + VollPuffer49 : Struct // Outbound (UH07): Voll-Puffer 49 MB3484 + Lager_DL : Bool // Outbound (UH07): Voll-Puffer 49: Lager-Datenliste fehlerhaft + Undef_Lager : Bool // Outbound (UH07): Voll-Puffer 49: undefinierter Lager + Err_Trolley_nicht_in_Schleuse_OUT : Bool // Outbound (UH07): Voll-Puffer 49: Trolley fährt nicht in untere Schleuse + Err_Uebzeit : Bool // Outbound (UH07): Voll-Puffer 49: Überwachungzeit ist abgelaufen + Err_Schritt : Bool // Outbound (UH07): Voll-Puffer 49: Schritt-Nummer ist nicht definiert + Err_Stau_Einfahrt : Bool // Outbound (UH07): Voll-Puffer 49: Stau am Lager-Eingang + Err_BLKMov : Bool // Outbound (UH07): Voll-Puffer 49: Error bei Block kopieren + Err_Trolley_raus_OUT : Bool // Outbound (UH07): Voll-Puffer 49: Trolley fährt nicht aus unterer Schleuse + Err_Puffer_nicht_leer_OUT : Bool // Outbound (UH07): Voll-Puffer 49: Trolley unten in Schleuse, obwohl keine Daten! Initialisieren hat gestartet! + Err_Trolley_nicht_in_Schleuse_IN : Bool // Outbound (UH07): Voll-Puffer 49: Trolley fährt nicht in mittlere Schleuse + Err_Trolley_raus_IN : Bool // Outbound (UH07): Voll-Puffer 49: Trolley fährt nicht aus mittlere Schleuse + Err_Puffer_nicht_leer_IN : Bool // Outbound (UH07): Voll-Puffer 49: Trolley mittig in Schleuse, obwohl keine Daten! Initialisieren hat gestartet! + Frei14 : Bool // Outbound (UH07): Voll-Puffer 49: Frei14 + Err_Raus_Sensor : Bool // Outbound (UH07): Voll-Puffer 49: Raus-Sensor hat Dauersignal oder wird nicht erreicht + Frei16 : Bool // Outbound (UH07): Voll-Puffer 49: Frei16 + Reset_aktiv : Bool // Outbound (UH07): Voll-Puffer 49: Reset ist aktiv + VollPuffer50 : Struct // Outbound (UH07): Voll-Puffer 50 MB3483 + Lager_DL : Bool // Outbound (UH07): Voll-Puffer 50: Lager-Datenliste fehlerhaft + Undef_Lager : Bool // Outbound (UH07): Voll-Puffer 50: undefinierter Lager + Err_Trolley_nicht_in_Schleuse_OUT : Bool // Outbound (UH07): Voll-Puffer 50: Trolley fährt nicht in untere Schleuse + Err_Uebzeit : Bool // Outbound (UH07): Voll-Puffer 50: Überwachungzeit ist abgelaufen + Err_Schritt : Bool // Outbound (UH07): Voll-Puffer 50: Schritt-Nummer ist nicht definiert + Err_Stau_Einfahrt : Bool // Outbound (UH07): Voll-Puffer 50: Stau am Lager-Eingang + Err_BLKMov : Bool // Outbound (UH07): Voll-Puffer 50: Error bei Block kopieren + Err_Trolley_raus_OUT : Bool // Outbound (UH07): Voll-Puffer 50: Trolley fährt nicht aus unterer Schleuse + Err_Puffer_nicht_leer_OUT : Bool // Outbound (UH07): Voll-Puffer 50: Trolley unten in Schleuse, obwohl keine Daten! Initialisieren hat gestartet! + Err_Trolley_nicht_in_Schleuse_IN : Bool // Outbound (UH07): Voll-Puffer 50: Trolley fährt nicht in mittlere Schleuse + Err_Trolley_raus_IN : Bool // Outbound (UH07): Voll-Puffer 50: Trolley fährt nicht aus mittlere Schleuse + Err_Puffer_nicht_leer_IN : Bool // Outbound (UH07): Voll-Puffer 50: Trolley mittig in Schleuse, obwohl keine Daten! Initialisieren hat gestartet! + Frei14 : Bool // Outbound (UH07): Voll-Puffer 50: Frei14 + Err_Raus_Sensor : Bool // Outbound (UH07): Voll-Puffer 50: Raus-Sensor hat Dauersignal oder wird nicht erreicht + Frei16 : Bool // Outbound (UH07): Voll-Puffer 50: Frei16 + Reset_aktiv : Bool // Outbound (UH07): Voll-Puffer 50: Reset ist aktiv + VollPuffer51 : Struct // Outbound (UH07): Voll-Puffer 51 MB3482 + Lager_DL : Bool // Outbound (UH07): Voll-Puffer 51: Lager-Datenliste fehlerhaft + Undef_Lager : Bool // Outbound (UH07): Voll-Puffer 51: undefinierter Lager + Err_Trolley_nicht_in_Schleuse_OUT : Bool // Outbound (UH07): Voll-Puffer 51: Trolley fährt nicht in untere Schleuse + Err_Uebzeit : Bool // Outbound (UH07): Voll-Puffer 51: Überwachungzeit ist abgelaufen + Err_Schritt : Bool // Outbound (UH07): Voll-Puffer 51: Schritt-Nummer ist nicht definiert + Err_Stau_Einfahrt : Bool // Outbound (UH07): Voll-Puffer 51: Stau am Lager-Eingang + Err_BLKMov : Bool // Outbound (UH07): Voll-Puffer 51: Error bei Block kopieren + Err_Trolley_raus_OUT : Bool // Outbound (UH07): Voll-Puffer 51: Trolley fährt nicht aus unterer Schleuse + Err_Puffer_nicht_leer_OUT : Bool // Outbound (UH07): Voll-Puffer 51: Trolley unten in Schleuse, obwohl keine Daten! Initialisieren hat gestartet! + Err_Trolley_nicht_in_Schleuse_IN : Bool // Outbound (UH07): Voll-Puffer 51: Trolley fährt nicht in mittlere Schleuse + Err_Trolley_raus_IN : Bool // Outbound (UH07): Voll-Puffer 51: Trolley fährt nicht aus mittlere Schleuse + Err_Puffer_nicht_leer_IN : Bool // Outbound (UH07): Voll-Puffer 51: Trolley mittig in Schleuse, obwohl keine Daten! Initialisieren hat gestartet! + Frei14 : Bool // Outbound (UH07): Voll-Puffer 51: Frei14 + Err_Raus_Sensor : Bool // Outbound (UH07): Voll-Puffer 51: Raus-Sensor hat Dauersignal oder wird nicht erreicht + Frei16 : Bool // Outbound (UH07): Voll-Puffer 51: Frei16 + Reset_aktiv : Bool // Outbound (UH07): Voll-Puffer 51: Reset ist aktiv + Auslagerbereich_VollPuffer : Struct // Ist schon richtig ausgefüllt + BG3180_Kein_Signal : Bool // Outbound (UH07): Voll-Puffer-Ausfahrt BG3180: Kein Signal + BG3180_Signal_zu_lang : Bool // Outbound (UH07): Voll-Puffer-Ausfahrt BG3180: Signal zu lang + BG3185_Kein_Signal_1 : Bool // Outbound (UH07): Voll-Puffer-Ausfahrt BG3185: Kein Signal + BG3185_Signal_zu_lang_1 : Bool // Outbound (UH07): Voll-Puffer-Ausfahrt BG3185: Signal zu lang + TrolleyStau BG3181 : Bool // Outbound (UH07): Voll-Puffer-Ausfahrt: Trolley verklemmt Puffer 39/38 + TrolleyStau BG3182 : Bool // Outbound (UH07): Voll-Puffer-Ausfahrt: Trolley verklemmt Puffer 32/31 + TrolleyStau BG3183 : Bool // Outbound (UH07): Voll-Puffer-Ausfahrt: Trolley verklemmt Puffer 26/25 + TrolleyStau BG3184 : Bool // Outbound (UH07): Voll-Puffer-Ausfahrt: Trolley verklemmt Puffer 19/18 + TrolleyStau BG3240 : Bool // Outbound (UH07): Voll-Puffer-Ausfahrt: Trolley verklemmt Puffer 13/12 + TrolleyStau BG3241 : Bool // Outbound (UH07): Voll-Puffer-Ausfahrt: Trolley verklemmt Puffer 6/5 + TrolleyStau BG3242 : Bool // Outbound (UH07): Voll-Puffer-Ausfahrt: Trolley verklemmt nach Puffer 1 + Sorter_Vollpuffer : Struct // Ist schon richtig ausgefüllt + Sorter A stop : Bool // Outbound (UH07): Antrieb Sorter A wegen Sorter B gestoppt + Sorter B stop : Bool // Outbound (UH07): Antrieb Sorter B gestoppt, da Lager 51 voll + Sorter A Gesamtreset : Bool // Outbound (UH07): Sorter A Gesamtreset aktiv + Sorter B Gesamtreset : Bool // Outbound (UH07): Sorter B Gesamtreset aktiv + Frei450 : Array[1..12] of Word + Bereich_3145 : Struct // Outbound (UH07): Bereich MA0140/BG3145 (Zuführung Vollpuffer) + Schleuse_DL : Bool // Bypass zu Vollpuffer : Schleuse-Datenliste fehlerhaft + Undef_Schleuse : Bool // Bypass zu Vollpuffer : undefinierter Schleuse + Err_Trolley_nicht_in_Schleuse : Bool // Bypass zu Vollpuffer : Trolley fährt nicht in Schleuse + Err_Uebzeit : Bool // Bypass zu Vollpuffer : Überwachungzeit ist abgelaufen + Err_Schritt : Bool // Bypass zu Vollpuffer : Schritt-Nummer ist nicht definiert + Err_Stau_Einfahrt : Bool // Bypass zu Vollpuffer : Stau bei Bereich-Einfahrt + Err_BLKMov : Bool // Bypass zu Vollpuffer : Error bei Block kopieren + Err_Trolley_raus : Bool // Bypass zu Vollpuffer : Trolley fährt nicht aus Schleuse + Err_Raus_Sensor : Bool // Bypass zu Vollpuffer : Raus-Sensor wird nicht erreicht (oder dauernd aktiv)! + Err_Ziel : Bool // Bypass zu Vollpuffer : Trolley-Ziel nicht bekannt + Err_Weichen_DL : Bool // Bypass zu Vollpuffer : Weichen-Datenliste fehlerhaft + Err_Undef_Weiche : Bool // Bypass zu Vollpuffer : undefinierte Weiche + Err_Weiche_belegt : Bool // Bypass zu Vollpuffer : Weiche bleibt belegt + Err_Kein_LeseErgebnis : Bool // Bypass zu Vollpuffer : Kein Ergebnis von LeseEinheit + Err_Leser_nicht_bereit : Bool // Bypass zu Vollpuffer : Leser nicht betriebsbereit + Barcode_nicht_bekannt : Bool // Bypass zu Vollpuffer : Barcode nicht in Datenbank vorhanden + Reserve452 : Struct // Outbound (UH07): Reserve452 + Schleuse_DL : Bool // Highway zu Bypass : Schleuse-Datenliste fehlerhaft + Undef_Schleuse : Bool // Highway zu Bypass : undefinierter Schleuse + Err_Trolley_nicht_in_Schleuse : Bool // Highway zu Bypass : Trolley fährt nicht in Schleuse + Err_Uebzeit : Bool // Highway zu Bypass : Überwachungzeit ist abgelaufen + Err_Schritt : Bool // Highway zu Bypass : Schritt-Nummer ist nicht definiert + Err_Stau_Einfahrt : Bool // Highway zu Bypass : Stau bei Bereich-Einfahrt + Err_BLKMov : Bool // Highway zu Bypass : Error bei Block kopieren + Err_Trolley_raus : Bool // Highway zu Bypass : Trolley fährt nicht aus Schleuse + Err_Raus_Sensor : Bool // Highway zu Bypass : Raus-Sensor wird nicht erreicht (oder dauernd aktiv)! + Err_Ziel : Bool // Highway zu Bypass : Trolley-Ziel nicht bekannt + Err_Weichen_DL : Bool // Highway zu Bypass : Weichen-Datenliste fehlerhaft + Err_Undef_Weiche : Bool // Highway zu Bypass : undefinierte Weiche + Err_Weiche_belegt : Bool // Highway zu Bypass : Weiche bleibt belegt + Err_Kein_LeseErgebnis : Bool // Highway zu Bypass : Kein Ergebnis von LeseEinheit + Err_Leser_nicht_bereit : Bool // Highway zu Bypass : Leser nicht betriebsbereit + Barcode_nicht_bekannt : Bool // Highway zu Bypass : Barcode nicht in Datenbank vorhanden + Bereich_3361 : Struct // Outbound (UH07): Bereich MA0060/BG3361 (Abführung Vollpuffer) + Schleuse_DL : Bool // Vollpuffer zu Bypass : Schleuse-Datenliste fehlerhaft + Undef_Schleuse : Bool // Vollpuffer zu Bypass : undefinierter Schleuse + Err_Trolley_nicht_in_Schleuse : Bool // Vollpuffer zu Bypass : Trolley fährt nicht in Schleuse + Err_Uebzeit : Bool // Vollpuffer zu Bypass : Überwachungzeit ist abgelaufen + Err_Schritt : Bool // Vollpuffer zu Bypass : Schritt-Nummer ist nicht definiert + Err_Stau_Einfahrt : Bool // Vollpuffer zu Bypass : Stau bei Bereich-Einfahrt + Err_BLKMov : Bool // Vollpuffer zu Bypass : Error bei Block kopieren + Err_Trolley_raus : Bool // Vollpuffer zu Bypass : Trolley fährt nicht aus Schleuse + Err_Raus_Sensor : Bool // Vollpuffer zu Bypass : Raus-Sensor wird nicht erreicht (oder dauernd aktiv)! + Err_Ziel : Bool // Vollpuffer zu Bypass : Trolley-Ziel nicht bekannt + Err_Weichen_DL : Bool // Vollpuffer zu Bypass : Weichen-Datenliste fehlerhaft + Err_Undef_Weiche : Bool // Vollpuffer zu Bypass : undefinierte Weiche + Err_Weiche_belegt : Bool // Vollpuffer zu Bypass : Weiche bleibt belegt + Err_Kein_LeseErgebnis : Bool // Vollpuffer zu Bypass : Kein Ergebnis von LeseEinheit + Err_Leser_nicht_bereit : Bool // Vollpuffer zu Bypass : Leser nicht betriebsbereit + Barcode_nicht_bekannt : Bool // Vollpuffer zu Bypass : Barcode nicht in Datenbank vorhanden + Bereich_3373 : Struct // Outbound (UH07): Bereich MA0063/BG3373 (Zuführung Leerpuffer) + Schleuse_DL : Bool // Bypass zu Leerpuffer : Schleuse-Datenliste fehlerhaft + Undef_Schleuse : Bool // Bypass zu Leerpuffer : undefinierter Schleuse + Err_Trolley_nicht_in_Schleuse : Bool // Bypass zu Leerpuffer : Trolley fährt nicht in Schleuse + Err_Uebzeit : Bool // Bypass zu Leerpuffer : Überwachungzeit ist abgelaufen + Err_Schritt : Bool // Bypass zu Leerpuffer : Schritt-Nummer ist nicht definiert + Err_Stau_Einfahrt : Bool // Bypass zu Leerpuffer : Stau bei Bereich-Einfahrt + Err_BLKMov : Bool // Bypass zu Leerpuffer : Error bei Block kopieren + Err_Trolley_raus : Bool // Bypass zu Leerpuffer : Trolley fährt nicht aus Schleuse + Err_Raus_Sensor : Bool // Bypass zu Leerpuffer : Raus-Sensor wird nicht erreicht (oder dauernd aktiv)! + Err_Ziel : Bool // Bypass zu Leerpuffer : Trolley-Ziel nicht bekannt + Err_Weichen_DL : Bool // Bypass zu Leerpuffer : Weichen-Datenliste fehlerhaft + Err_Undef_Weiche : Bool // Bypass zu Leerpuffer : undefinierte Weiche + Err_Weiche_belegt : Bool // Bypass zu Leerpuffer : Weiche bleibt belegt + Err_Kein_LeseErgebnis : Bool // Bypass zu Leerpuffer : Kein Ergebnis von LeseEinheit + Err_Leser_nicht_bereit : Bool // Bypass zu Leerpuffer : Leser nicht betriebsbereit + Barcode_nicht_bekannt : Bool // Bypass zu Leerpuffer : Barcode nicht in Datenbank vorhanden + Bereich_3731 : Struct // Outbound (UH07): Bereich MA0201/BG3731 (Highway zu Outbound) + Schleuse_DL : Bool // Highway zu OB : Schleuse-Datenliste fehlerhaft + Undef_Schleuse : Bool // Highway zu OB : undefinierter Schleuse + Err_Trolley_nicht_in_Schleuse : Bool // Highway zu OB : Trolley fährt nicht in Schleuse + Err_Uebzeit : Bool // Highway zu OB : Überwachungzeit ist abgelaufen + Err_Schritt : Bool // Highway zu OB : Schritt-Nummer ist nicht definiert + Err_Stau_Einfahrt : Bool // Highway zu OB : Stau bei Bereich-Einfahrt + Err_BLKMov : Bool // Highway zu OB : Error bei Block kopieren + Err_Trolley_raus : Bool // Highway zu OB : Trolley fährt nicht aus Schleuse + Err_Raus_Sensor : Bool // Highway zu OB : Raus-Sensor wird nicht erreicht (oder dauernd aktiv)! + Err_Ziel : Bool // Highway zu OB : Trolley-Ziel nicht bekannt + Err_Weichen_DL : Bool // Highway zu OB : Weichen-Datenliste fehlerhaft + Err_Undef_Weiche : Bool // Highway zu OB : undefinierte Weiche + Err_Weiche_belegt : Bool // Highway zu OB : Weiche bleibt belegt + Err_Kein_LeseErgebnis : Bool // Highway zu OB : Kein Ergebnis von LeseEinheit + Err_Leser_nicht_bereit : Bool // Highway zu OB : Leser nicht betriebsbereit + Barcode_nicht_bekannt : Bool // Highway zu OB : Barcode nicht in Datenbank vorhanden + Bereich_3732 : Struct // Outbound (UH07): Bereich MA0202/BG3732 (Highway zu AMR) + Schleuse_DL : Bool // Highway zu AMR : Schleuse-Datenliste fehlerhaft + Undef_Schleuse : Bool // Highway zu AMR : undefinierter Schleuse + Err_Trolley_nicht_in_Schleuse : Bool // Highway zu AMR : Trolley fährt nicht in Schleuse + Err_Uebzeit : Bool // Highway zu AMR : Überwachungzeit ist abgelaufen + Err_Schritt : Bool // Highway zu AMR : Schritt-Nummer ist nicht definiert + Err_Stau_Einfahrt : Bool // Highway zu AMR : Stau bei Bereich-Einfahrt + Err_BLKMov : Bool // Highway zu AMR : Error bei Block kopieren + Err_Trolley_raus : Bool // Highway zu AMR : Trolley fährt nicht aus Schleuse + Err_Raus_Sensor : Bool // Highway zu AMR : Raus-Sensor wird nicht erreicht (oder dauernd aktiv)! + Err_Ziel : Bool // Highway zu AMR : Trolley-Ziel nicht bekannt + Err_Weichen_DL : Bool // Highway zu AMR : Weichen-Datenliste fehlerhaft + Err_Undef_Weiche : Bool // Highway zu AMR : undefinierte Weiche + Err_Weiche_belegt : Bool // Highway zu AMR : Weiche bleibt belegt + Err_Kein_LeseErgebnis : Bool // Highway zu AMR : Kein Ergebnis von LeseEinheit + Err_Leser_nicht_bereit : Bool // Highway zu AMR : Leser nicht betriebsbereit + Barcode_nicht_bekannt : Bool // Highway zu AMR : Barcode nicht in Datenbank vorhanden + Reserve462 : Struct // Outbound (UH07): Reserve462 + Schleuse_DL : Bool // Highway zu OB : Schleuse-Datenliste fehlerhaft + Undef_Schleuse : Bool // Highway zu OB : undefinierter Schleuse + Err_Trolley_nicht_in_Schleuse : Bool // Highway zu OB : Trolley fährt nicht in Schleuse + Err_Uebzeit : Bool // Highway zu OB : Überwachungzeit ist abgelaufen + Err_Schritt : Bool // Highway zu OB : Schritt-Nummer ist nicht definiert + Err_Stau_Einfahrt : Bool // Highway zu OB : Stau bei Bereich-Einfahrt + Err_BLKMov : Bool // Highway zu OB : Error bei Block kopieren + Err_Trolley_raus : Bool // Highway zu OB : Trolley fährt nicht aus Schleuse + Err_Raus_Sensor : Bool // Highway zu OB : Raus-Sensor wird nicht erreicht (oder dauernd aktiv)! + Err_Ziel : Bool // Highway zu OB : Trolley-Ziel nicht bekannt + Err_Weichen_DL : Bool // Highway zu OB : Weichen-Datenliste fehlerhaft + Err_Undef_Weiche : Bool // Highway zu OB : undefinierte Weiche + Err_Weiche_belegt : Bool // Highway zu OB : Weiche bleibt belegt + Err_Kein_LeseErgebnis : Bool // Highway zu OB : Kein Ergebnis von LeseEinheit + Err_Leser_nicht_bereit : Bool // Highway zu OB : Leser nicht betriebsbereit + Barcode_nicht_bekannt : Bool // Highway zu OB : Barcode nicht in Datenbank vorhanden + Bereich_4203 : Struct // Outbound (UH07): Bereich MA0261/BG4203 (Zuführung Vollpuffer) + Schleuse_DL : Bool // Highway zu OB : Schleuse-Datenliste fehlerhaft + Undef_Schleuse : Bool // Highway zu OB : undefinierter Schleuse + Err_Trolley_nicht_in_Schleuse : Bool // Highway zu OB : Trolley fährt nicht in Schleuse + Err_Uebzeit : Bool // Highway zu OB : Überwachungzeit ist abgelaufen + Err_Schritt : Bool // Highway zu OB : Schritt-Nummer ist nicht definiert + Err_Stau_Einfahrt : Bool // Highway zu OB : Stau bei Bereich-Einfahrt + Err_BLKMov : Bool // Highway zu OB : Error bei Block kopieren + Err_Trolley_raus : Bool // Highway zu OB : Trolley fährt nicht aus Schleuse + Err_Raus_Sensor : Bool // Highway zu OB : Raus-Sensor wird nicht erreicht (oder dauernd aktiv)! + Err_Ziel : Bool // Highway zu OB : Trolley-Ziel nicht bekannt + Err_Weichen_DL : Bool // Highway zu OB : Weichen-Datenliste fehlerhaft + Err_Undef_Weiche : Bool // Highway zu OB : undefinierte Weiche + Err_Weiche_belegt : Bool // Highway zu OB : Weiche bleibt belegt + Err_Kein_LeseErgebnis : Bool // Highway zu OB : Kein Ergebnis von LeseEinheit + Err_Leser_nicht_bereit : Bool // Highway zu OB : Leser nicht betriebsbereit + Barcode_nicht_bekannt : Bool // Highway zu OB : Barcode nicht in Datenbank vorhanden + Übergang_4205 : Struct // Outbound (UH07): Übergang BG4205 (Zuführung Vollpuffer) + Schleuse_DL : Bool // Highway zu OB : Schleuse-Datenliste fehlerhaft + Undef_Schleuse : Bool // Highway zu OB : undefinierter Schleuse + Err_Trolley_nicht_in_Schleuse : Bool // Highway zu OB : Trolley fährt nicht in Schleuse + Err_Uebzeit : Bool // Highway zu OB : Überwachungzeit ist abgelaufen + Err_Schritt : Bool // Highway zu OB : Schritt-Nummer ist nicht definiert + Err_Stau_Einfahrt : Bool // Highway zu OB : Stau bei Bereich-Einfahrt + Err_BLKMov : Bool // Highway zu OB : Error bei Block kopieren + Err_Trolley_raus : Bool // Highway zu OB : Trolley fährt nicht aus Schleuse + Err_Raus_Sensor : Bool // Highway zu OB : Raus-Sensor wird nicht erreicht (oder dauernd aktiv)! + Err_Ziel : Bool // Highway zu OB : Trolley-Ziel nicht bekannt + Err_Weichen_DL : Bool // Highway zu OB : Weichen-Datenliste fehlerhaft + Err_Undef_Weiche : Bool // Highway zu OB : undefinierte Weiche + Err_Weiche_belegt : Bool // Highway zu OB : Weiche bleibt belegt + Err_Kein_LeseErgebnis : Bool // Highway zu OB : Kein Ergebnis von LeseEinheit + Err_Leser_nicht_bereit : Bool // Highway zu OB : Leser nicht betriebsbereit + Barcode_nicht_bekannt : Bool // Highway zu OB : Barcode nicht in Datenbank vorhanden + Übergang_4225 : Struct // Outbound (UH07): Übergang BG4225 (Abführung Leerpuffer) + Schleuse_DL : Bool // Highway zu AMR : Schleuse-Datenliste fehlerhaft + Undef_Schleuse : Bool // Highway zu AMR : undefinierter Schleuse + Err_Trolley_nicht_in_Schleuse : Bool // Highway zu AMR : Trolley fährt nicht in Schleuse + Err_Uebzeit : Bool // Highway zu AMR : Überwachungzeit ist abgelaufen + Err_Schritt : Bool // Highway zu AMR : Schritt-Nummer ist nicht definiert + Err_Stau_Einfahrt : Bool // Highway zu AMR : Stau bei Bereich-Einfahrt + Err_BLKMov : Bool // Highway zu AMR : Error bei Block kopieren + Err_Trolley_raus : Bool // Highway zu AMR : Trolley fährt nicht aus Schleuse + Err_Raus_Sensor : Bool // Highway zu AMR : Raus-Sensor wird nicht erreicht (oder dauernd aktiv)! + Err_Ziel : Bool // Highway zu AMR : Trolley-Ziel nicht bekannt + Err_Weichen_DL : Bool // Highway zu AMR : Weichen-Datenliste fehlerhaft + Err_Undef_Weiche : Bool // Highway zu AMR : undefinierte Weiche + Err_Weiche_belegt : Bool // Highway zu AMR : Weiche bleibt belegt + Err_Kein_LeseErgebnis : Bool // Highway zu AMR : Kein Ergebnis von LeseEinheit + Err_Leser_nicht_bereit : Bool // Highway zu AMR : Leser nicht betriebsbereit + Barcode_nicht_bekannt : Bool // Highway zu AMR : Barcode nicht in Datenbank vorhanden + Bereich_4232 : Struct // Outbound (UH07): Bereich MA0267/BG4232 (Abführung Leerpuffer) + Schleuse_DL : Bool // Highway zu AMR : Schleuse-Datenliste fehlerhaft + Undef_Schleuse : Bool // Highway zu AMR : undefinierter Schleuse + Err_Trolley_nicht_in_Schleuse : Bool // Highway zu AMR : Trolley fährt nicht in Schleuse + Err_Uebzeit : Bool // Highway zu AMR : Überwachungzeit ist abgelaufen + Err_Schritt : Bool // Highway zu AMR : Schritt-Nummer ist nicht definiert + Err_Stau_Einfahrt : Bool // Highway zu AMR : Stau bei Bereich-Einfahrt + Err_BLKMov : Bool // Highway zu AMR : Error bei Block kopieren + Err_Trolley_raus : Bool // Highway zu AMR : Trolley fährt nicht aus Schleuse + Err_Raus_Sensor : Bool // Highway zu AMR : Raus-Sensor wird nicht erreicht (oder dauernd aktiv)! + Err_Ziel : Bool // Highway zu AMR : Trolley-Ziel nicht bekannt + Err_Weichen_DL : Bool // Highway zu AMR : Weichen-Datenliste fehlerhaft + Err_Undef_Weiche : Bool // Highway zu AMR : undefinierte Weiche + Err_Weiche_belegt : Bool // Highway zu AMR : Weiche bleibt belegt + Err_Kein_LeseErgebnis : Bool // Highway zu AMR : Kein Ergebnis von LeseEinheit + Err_Leser_nicht_bereit : Bool // Highway zu AMR : Leser nicht betriebsbereit + Barcode_nicht_bekannt : Bool // Highway zu AMR : Barcode nicht in Datenbank vorhanden + Bereich_4236 : Struct // Outbound (UH07): Bereich MA0066/BG4236 (Abführung Leerpuffer) + Schleuse_DL : Bool // Leerpuffer zu Bypass : Schleuse-Datenliste fehlerhaft + Undef_Schleuse : Bool // Leerpuffer zu Bypass : undefinierter Schleuse + Err_Trolley_nicht_in_Schleuse : Bool // Leerpuffer zu Bypass : Trolley fährt nicht in Schleuse + Err_Uebzeit : Bool // Leerpuffer zu Bypass : Überwachungzeit ist abgelaufen + Err_Schritt : Bool // Leerpuffer zu Bypass : Schritt-Nummer ist nicht definiert + Err_Stau_Einfahrt : Bool // Leerpuffer zu Bypass : Stau bei Bereich-Einfahrt + Err_BLKMov : Bool // Leerpuffer zu Bypass : Error bei Block kopieren + Err_Trolley_raus : Bool // Leerpuffer zu Bypass : Trolley fährt nicht aus Schleuse + Err_Raus_Sensor : Bool // Leerpuffer zu Bypass : Raus-Sensor wird nicht erreicht (oder dauernd aktiv)! + Err_Ziel : Bool // Leerpuffer zu Bypass : Trolley-Ziel nicht bekannt + Err_Weichen_DL : Bool // Leerpuffer zu Bypass : Weichen-Datenliste fehlerhaft + Err_Undef_Weiche : Bool // Leerpuffer zu Bypass : undefinierte Weiche + Err_Weiche_belegt : Bool // Leerpuffer zu Bypass : Weiche bleibt belegt + Err_Kein_LeseErgebnis : Bool // Leerpuffer zu Bypass : Kein Ergebnis von LeseEinheit + Err_Leser_nicht_bereit : Bool // Leerpuffer zu Bypass : Leser nicht betriebsbereit + Barcode_nicht_bekannt : Bool // Leerpuffer zu Bypass : Barcode nicht in Datenbank vorhanden + Bereich_4441 : Struct // Outbound (UH07): Bereich MA0320/BG4441 (Zuführung Entladepuffer) + Schleuse_DL : Bool // Vollpuffer zu Bypass : Schleuse-Datenliste fehlerhaft + Undef_Schleuse : Bool // Vollpuffer zu Bypass : undefinierter Schleuse + Err_Trolley_nicht_in_Schleuse : Bool // Vollpuffer zu Bypass : Trolley fährt nicht in Schleuse + Err_Uebzeit : Bool // Vollpuffer zu Bypass : Überwachungzeit ist abgelaufen + Err_Schritt : Bool // Vollpuffer zu Bypass : Schritt-Nummer ist nicht definiert + Err_Stau_Einfahrt : Bool // Vollpuffer zu Bypass : Stau bei Bereich-Einfahrt + Err_BLKMov : Bool // Vollpuffer zu Bypass : Error bei Block kopieren + Err_Trolley_raus : Bool // Vollpuffer zu Bypass : Trolley fährt nicht aus Schleuse + Err_Raus_Sensor : Bool // Vollpuffer zu Bypass : Raus-Sensor wird nicht erreicht (oder dauernd aktiv)! + Err_Ziel : Bool // Vollpuffer zu Bypass : Trolley-Ziel nicht bekannt + Err_Weichen_DL : Bool // Vollpuffer zu Bypass : Weichen-Datenliste fehlerhaft + Err_Undef_Weiche : Bool // Vollpuffer zu Bypass : undefinierte Weiche + Err_Weiche_belegt : Bool // Vollpuffer zu Bypass : Weiche bleibt belegt + Err_Kein_LeseErgebnis : Bool // Vollpuffer zu Bypass : Kein Ergebnis von LeseEinheit + Err_Leser_nicht_bereit : Bool // Vollpuffer zu Bypass : Leser nicht betriebsbereit + Barcode_nicht_bekannt : Bool // Vollpuffer zu Bypass : Barcode nicht in Datenbank vorhanden + Bereich_4454 : Struct // Outbound (UH07): Bereich MA0323/BG4454 (Zuführung Entladepuffer) + Schleuse_DL : Bool // Bypass zu Entladepuffer : Schleuse-Datenliste fehlerhaft + Undef_Schleuse : Bool // Bypass zu Entladepuffer : undefinierter Schleuse + Err_Trolley_nicht_in_Schleuse : Bool // Bypass zu Entladepuffer : Trolley fährt nicht in Schleuse + Err_Uebzeit : Bool // Bypass zu Entladepuffer : Überwachungzeit ist abgelaufen + Err_Schritt : Bool // Bypass zu Entladepuffer : Schritt-Nummer ist nicht definiert + Err_Stau_Einfahrt : Bool // Bypass zu Entladepuffer : Stau bei Bereich-Einfahrt + Err_BLKMov : Bool // Bypass zu Entladepuffer : Error bei Block kopieren + Err_Trolley_raus : Bool // Bypass zu Entladepuffer : Trolley fährt nicht aus Schleuse + Err_Raus_Sensor : Bool // Bypass zu Entladepuffer : Raus-Sensor wird nicht erreicht (oder dauernd aktiv)! + Err_Ziel : Bool // Bypass zu Entladepuffer : Trolley-Ziel nicht bekannt + Err_Weichen_DL : Bool // Bypass zu Entladepuffer : Weichen-Datenliste fehlerhaft + Err_Undef_Weiche : Bool // Bypass zu Entladepuffer : undefinierte Weiche + Err_Weiche_belegt : Bool // Bypass zu Entladepuffer : Weiche bleibt belegt + Err_Kein_LeseErgebnis : Bool // Bypass zu Entladepuffer : Kein Ergebnis von LeseEinheit + Err_Leser_nicht_bereit : Bool // Bypass zu Entladepuffer : Leser nicht betriebsbereit + Barcode_nicht_bekannt : Bool // Bypass zu Entladepuffer : Barcode nicht in Datenbank vorhanden + Bereich_4456 : Struct // Outbound (UH07): Bereich MA0330/BG4456 (Abführung Entladepuffer) + Schleuse_DL : Bool // Entladepuffer zu Bypass : Schleuse-Datenliste fehlerhaft + Undef_Schleuse : Bool // Entladepuffer zu Bypass : undefinierter Schleuse + Err_Trolley_nicht_in_Schleuse : Bool // Entladepuffer zu Bypass : Trolley fährt nicht in Schleuse + Err_Uebzeit : Bool // Entladepuffer zu Bypass : Überwachungzeit ist abgelaufen + Err_Schritt : Bool // Entladepuffer zu Bypass : Schritt-Nummer ist nicht definiert + Err_Stau_Einfahrt : Bool // Entladepuffer zu Bypass : Stau bei Bereich-Einfahrt + Err_BLKMov : Bool // Entladepuffer zu Bypass : Error bei Block kopieren + Err_Trolley_raus : Bool // Entladepuffer zu Bypass : Trolley fährt nicht aus Schleuse + Err_Raus_Sensor : Bool // Entladepuffer zu Bypass : Raus-Sensor wird nicht erreicht (oder dauernd aktiv)! + Err_Ziel : Bool // Entladepuffer zu Bypass : Trolley-Ziel nicht bekannt + Err_Weichen_DL : Bool // Entladepuffer zu Bypass : Weichen-Datenliste fehlerhaft + Err_Undef_Weiche : Bool // Entladepuffer zu Bypass : undefinierte Weiche + Err_Weiche_belegt : Bool // Entladepuffer zu Bypass : Weiche bleibt belegt + Err_Kein_LeseErgebnis : Bool // Entladepuffer zu Bypass : Kein Ergebnis von LeseEinheit + Err_Leser_nicht_bereit : Bool // Entladepuffer zu Bypass : Leser nicht betriebsbereit + Barcode_nicht_bekannt : Bool // Entladepuffer zu Bypass : Barcode nicht in Datenbank vorhanden + Bereich_4465 : Struct // Outbound (UH07): Bereich MA0333/BG4465 (Abführung Entladepuffer) + Schleuse_DL : Bool // Bypass zu Leerpuffer : Schleuse-Datenliste fehlerhaft + Undef_Schleuse : Bool // Bypass zu Leerpuffer : undefinierter Schleuse + Err_Trolley_nicht_in_Schleuse : Bool // Bypass zu Leerpuffer : Trolley fährt nicht in Schleuse + Err_Uebzeit : Bool // Bypass zu Leerpuffer : Überwachungzeit ist abgelaufen + Err_Schritt : Bool // Bypass zu Leerpuffer : Schritt-Nummer ist nicht definiert + Err_Stau_Einfahrt : Bool // Bypass zu Leerpuffer : Stau bei Bereich-Einfahrt + Err_BLKMov : Bool // Bypass zu Leerpuffer : Error bei Block kopieren + Err_Trolley_raus : Bool // Bypass zu Leerpuffer : Trolley fährt nicht aus Schleuse + Err_Raus_Sensor : Bool // Bypass zu Leerpuffer : Raus-Sensor wird nicht erreicht (oder dauernd aktiv)! + Err_Ziel : Bool // Bypass zu Leerpuffer : Trolley-Ziel nicht bekannt + Err_Weichen_DL : Bool // Bypass zu Leerpuffer : Weichen-Datenliste fehlerhaft + Err_Undef_Weiche : Bool // Bypass zu Leerpuffer : undefinierte Weiche + Err_Weiche_belegt : Bool // Bypass zu Leerpuffer : Weiche bleibt belegt + Err_Kein_LeseErgebnis : Bool // Bypass zu Leerpuffer : Kein Ergebnis von LeseEinheit + Err_Leser_nicht_bereit : Bool // Bypass zu Leerpuffer : Leser nicht betriebsbereit + Barcode_nicht_bekannt : Bool // Bypass zu Leerpuffer : Barcode nicht in Datenbank vorhanden + Übergang_4501 : Struct // Outbound (UH07): Übergang BG4501 (Zuführung Entladepuffer) + Schleuse_DL : Bool // Bypass zu Entladepuffer : Schleuse-Datenliste fehlerhaft + Undef_Schleuse : Bool // Bypass zu Entladepuffer : undefinierter Schleuse + Err_Trolley_nicht_in_Schleuse : Bool // Bypass zu Entladepuffer : Trolley fährt nicht in Schleuse + Err_Uebzeit : Bool // Bypass zu Entladepuffer : Überwachungzeit ist abgelaufen + Err_Schritt : Bool // Bypass zu Entladepuffer : Schritt-Nummer ist nicht definiert + Err_Stau_Einfahrt : Bool // Bypass zu Entladepuffer : Stau bei Bereich-Einfahrt + Err_BLKMov : Bool // Bypass zu Entladepuffer : Error bei Block kopieren + Err_Trolley_raus : Bool // Bypass zu Entladepuffer : Trolley fährt nicht aus Schleuse + Err_Raus_Sensor : Bool // Bypass zu Entladepuffer : Raus-Sensor wird nicht erreicht (oder dauernd aktiv)! + Err_Ziel : Bool // Bypass zu Entladepuffer : Trolley-Ziel nicht bekannt + Err_Weichen_DL : Bool // Bypass zu Entladepuffer : Weichen-Datenliste fehlerhaft + Err_Undef_Weiche : Bool // Bypass zu Entladepuffer : undefinierte Weiche + Err_Weiche_belegt : Bool // Bypass zu Entladepuffer : Weiche bleibt belegt + Err_Kein_LeseErgebnis : Bool // Bypass zu Entladepuffer : Kein Ergebnis von LeseEinheit + Err_Leser_nicht_bereit : Bool // Bypass zu Entladepuffer : Leser nicht betriebsbereit + Barcode_nicht_bekannt : Bool // Bypass zu Entladepuffer : Barcode nicht in Datenbank vorhanden + Übergang_4514 : Struct // Outbound (UH07): Übergang BG4514 (Abführung Entladepuffer) + Schleuse_DL : Bool // Entladepuffer zu Bypass : Schleuse-Datenliste fehlerhaft + Undef_Schleuse : Bool // Entladepuffer zu Bypass : undefinierter Schleuse + Err_Trolley_nicht_in_Schleuse : Bool // Entladepuffer zu Bypass : Trolley fährt nicht in Schleuse + Err_Uebzeit : Bool // Entladepuffer zu Bypass : Überwachungzeit ist abgelaufen + Err_Schritt : Bool // Entladepuffer zu Bypass : Schritt-Nummer ist nicht definiert + Err_Stau_Einfahrt : Bool // Entladepuffer zu Bypass : Stau bei Bereich-Einfahrt + Err_BLKMov : Bool // Entladepuffer zu Bypass : Error bei Block kopieren + Err_Trolley_raus : Bool // Entladepuffer zu Bypass : Trolley fährt nicht aus Schleuse + Err_Raus_Sensor : Bool // Entladepuffer zu Bypass : Raus-Sensor wird nicht erreicht (oder dauernd aktiv)! + Err_Ziel : Bool // Entladepuffer zu Bypass : Trolley-Ziel nicht bekannt + Err_Weichen_DL : Bool // Entladepuffer zu Bypass : Weichen-Datenliste fehlerhaft + Err_Undef_Weiche : Bool // Entladepuffer zu Bypass : undefinierte Weiche + Err_Weiche_belegt : Bool // Entladepuffer zu Bypass : Weiche bleibt belegt + Err_Kein_LeseErgebnis : Bool // Entladepuffer zu Bypass : Kein Ergebnis von LeseEinheit + Err_Leser_nicht_bereit : Bool // Entladepuffer zu Bypass : Leser nicht betriebsbereit + Barcode_nicht_bekannt : Bool // Entladepuffer zu Bypass : Barcode nicht in Datenbank vorhanden + Frei500 : Array[1..7] of Word + Schleuse_MB3121 : Struct // Outbound (UH07): Schleuse MB3121 (Vor Vollpuffer von Kontrollplatz) + Schleuse_DL : Bool // Voll-Puffer-Sorter Normal : Schleuse-Datenliste fehlerhaft + Undef_Schleuse : Bool // Voll-Puffer-Sorter Normal : undefinierter Schleuse + Err_Trolley_nicht_in_Schleuse : Bool // Voll-Puffer-Sorter Normal : Trolley fährt nicht in Schleuse + Err_Uebzeit : Bool // Voll-Puffer-Sorter Normal : Überwachungzeit ist abgelaufen + Err_Schritt : Bool // Voll-Puffer-Sorter Normal : Schritt-Nummer ist nicht definiert + Err_Stau_Einfahrt : Bool // Voll-Puffer-Sorter Normal : Stau bei Bereich-Einfahrt + Err_BLKMov : Bool // Voll-Puffer-Sorter Normal : Error bei Block kopieren + Err_Trolley_raus : Bool // Voll-Puffer-Sorter Normal : Trolley fährt nicht aus Schleuse + Err_Raus_Sensor : Bool // Voll-Puffer-Sorter Normal : Raus-Sensor wird nicht erreicht (oder dauernd aktiv)! + Err_Ziel : Bool // Voll-Puffer-Sorter Normal : Trolley-Ziel nicht bekannt + Err_Weichen_DL : Bool // Voll-Puffer-Sorter Normal : Weichen-Datenliste fehlerhaft + Err_Undef_Weiche : Bool // Voll-Puffer-Sorter Normal : undefinierte Weiche + Err_Weiche_belegt : Bool // Voll-Puffer-Sorter Normal : Weiche bleibt belegt + Err_Kein_LeseErgebnis : Bool // Voll-Puffer-Sorter Normal : Kein Ergebnis von LeseEinheit + Err_Leser_nicht_bereit : Bool // Voll-Puffer-Sorter Normal : Leser nicht betriebsbereit + Barcode_nicht_bekannt : Bool // Voll-Puffer-Sorter Normal : Barcode nicht in Datenbank vorhanden + Schleuse_MB3123 : Struct // Outbound (UH07): Schleuse MB3123 (Vor Vollpuffer von Rückführung) + Schleuse_DL : Bool // Voll-Puffer-Sorter Rückstrecke : Schleuse-Datenliste fehlerhaft + Undef_Schleuse : Bool // Voll-Puffer-Sorter Rückstrecke : undefinierter Schleuse + Err_Trolley_nicht_in_Schleuse : Bool // Voll-Puffer-Sorter Rückstrecke : Trolley fährt nicht in Schleuse + Err_Uebzeit : Bool // Voll-Puffer-Sorter Rückstrecke : Überwachungzeit ist abgelaufen + Err_Schritt : Bool // Voll-Puffer-Sorter Rückstrecke : Schritt-Nummer ist nicht definiert + Err_Stau_Einfahrt : Bool // Voll-Puffer-Sorter Rückstrecke : Stau bei Bereich-Einfahrt + Err_BLKMov : Bool // Voll-Puffer-Sorter Rückstrecke : Error bei Block kopieren + Err_Trolley_raus : Bool // Voll-Puffer-Sorter Rückstrecke : Trolley fährt nicht aus Schleuse + Err_Raus_Sensor : Bool // Voll-Puffer-Sorter Rückstrecke : Raus-Sensor wird nicht erreicht (oder dauernd aktiv)! + Err_Ziel : Bool // Voll-Puffer-Sorter Rückstrecke : Trolley-Ziel nicht bekannt + Err_Weichen_DL : Bool // Voll-Puffer-Sorter Rückstrecke : Weichen-Datenliste fehlerhaft + Err_Undef_Weiche : Bool // Voll-Puffer-Sorter Rückstrecke : undefinierte Weiche + Err_Weiche_belegt : Bool // Voll-Puffer-Sorter Rückstrecke : Weiche bleibt belegt + Err_Kein_LeseErgebnis : Bool // Voll-Puffer-Sorter Rückstrecke : Kein Ergebnis von LeseEinheit + Err_Leser_nicht_bereit : Bool // Voll-Puffer-Sorter Rückstrecke : Leser nicht betriebsbereit + Barcode_nicht_bekannt : Bool // Voll-Puffer-Sorter Rückstrecke : Barcode nicht in Datenbank vorhanden + Schleuse_MB3131 : Struct // Outbound (UH07): Schleuse MB3131 (Zuführung Kontrollplatz) + Schleuse_DL : Bool // Vor Kontrollplatz : Schleuse-Datenliste fehlerhaft + Undef_Schleuse : Bool // Vor Kontrollplatz : undefinierter Schleuse + Err_Trolley_nicht_in_Schleuse : Bool // Vor Kontrollplatz : Trolley fährt nicht in Schleuse + Err_Uebzeit : Bool // Vor Kontrollplatz : Überwachungzeit ist abgelaufen + Err_Schritt : Bool // Vor Kontrollplatz : Schritt-Nummer ist nicht definiert + Err_Stau_Einfahrt : Bool // Vor Kontrollplatz : Stau bei Bereich-Einfahrt + Err_BLKMov : Bool // Vor Kontrollplatz : Error bei Block kopieren + Err_Trolley_raus : Bool // Vor Kontrollplatz : Trolley fährt nicht aus Schleuse + Err_Raus_Sensor : Bool // Vor Kontrollplatz : Raus-Sensor wird nicht erreicht (oder dauernd aktiv)! + Err_Ziel : Bool // Vor Kontrollplatz : Trolley-Ziel nicht bekannt + Err_Weichen_DL : Bool // Vor Kontrollplatz : Weichen-Datenliste fehlerhaft + Err_Undef_Weiche : Bool // Vor Kontrollplatz : undefinierte Weiche + Err_Weiche_belegt : Bool // Vor Kontrollplatz : Weiche bleibt belegt + Err_Kein_LeseErgebnis : Bool // Vor Kontrollplatz : Kein Ergebnis von LeseEinheit + Err_Leser_nicht_bereit : Bool // Vor Kontrollplatz : Leser nicht betriebsbereit + Barcode_nicht_bekannt : Bool // Vor Kontrollplatz : Barcode nicht in Datenbank vorhanden + Schleuse_MB3134 : Struct // Outbound (UH07): Schleuse MB3134 (Kontrollplatz) + Schleuse_DL : Bool // Kontrollplatz : Schleuse-Datenliste fehlerhaft + Undef_Schleuse : Bool // Kontrollplatz : undefinierter Schleuse + Err_Trolley_nicht_in_Schleuse : Bool // Kontrollplatz : Trolley fährt nicht in Schleuse + Err_Uebzeit : Bool // Kontrollplatz : Überwachungzeit ist abgelaufen + Err_Schritt : Bool // Kontrollplatz : Schritt-Nummer ist nicht definiert + Err_Stau_Einfahrt : Bool // Kontrollplatz : Stau bei Bereich-Einfahrt + Err_BLKMov : Bool // Kontrollplatz : Error bei Block kopieren + Err_Trolley_raus : Bool // Kontrollplatz : Trolley fährt nicht aus Schleuse + Err_Raus_Sensor : Bool // Kontrollplatz : Raus-Sensor wird nicht erreicht (oder dauernd aktiv)! + Err_Ziel : Bool // Kontrollplatz : Trolley-Ziel nicht bekannt + Err_Weichen_DL : Bool // Kontrollplatz : Weichen-Datenliste fehlerhaft + Err_Undef_Weiche : Bool // Kontrollplatz : undefinierte Weiche + Err_Weiche_belegt : Bool // Kontrollplatz : Weiche bleibt belegt + Err_Kein_LeseErgebnis : Bool // Kontrollplatz : Kein Ergebnis von LeseEinheit + Err_Leser_nicht_bereit : Bool // Kontrollplatz : Leser nicht betriebsbereit + Barcode_nicht_bekannt : Bool // Kontrollplatz : Barcode nicht in Datenbank vorhanden + Schleuse_MB3136 : Struct // Outbound (UH07): Schleuse MB3136 (Hinter Kontrollplatz) + Schleuse_DL : Bool // Hinter Kontrollplatz : Schleuse-Datenliste fehlerhaft + Undef_Schleuse : Bool // Hinter Kontrollplatz : undefinierter Schleuse + Err_Trolley_nicht_in_Schleuse : Bool // Hinter Kontrollplatz : Trolley fährt nicht in Schleuse + Err_Uebzeit : Bool // Hinter Kontrollplatz : Überwachungzeit ist abgelaufen + Err_Schritt : Bool // Hinter Kontrollplatz : Schritt-Nummer ist nicht definiert + Err_Stau_Einfahrt : Bool // Hinter Kontrollplatz : Stau bei Bereich-Einfahrt + Err_BLKMov : Bool // Hinter Kontrollplatz : Error bei Block kopieren + Err_Trolley_raus : Bool // Hinter Kontrollplatz : Trolley fährt nicht aus Schleuse + Err_Raus_Sensor : Bool // Hinter Kontrollplatz : Raus-Sensor wird nicht erreicht (oder dauernd aktiv)! + Err_Ziel : Bool // Hinter Kontrollplatz : Trolley-Ziel nicht bekannt + Err_Weichen_DL : Bool // Hinter Kontrollplatz : Weichen-Datenliste fehlerhaft + Err_Undef_Weiche : Bool // Hinter Kontrollplatz : undefinierte Weiche + Err_Weiche_belegt : Bool // Hinter Kontrollplatz : Weiche bleibt belegt + Err_Kein_LeseErgebnis : Bool // Hinter Kontrollplatz : Kein Ergebnis von LeseEinheit + Err_Leser_nicht_bereit : Bool // Hinter Kontrollplatz : Leser nicht betriebsbereit + Barcode_nicht_bekannt : Bool // Hinter Kontrollplatz : Barcode nicht in Datenbank vorhanden + Weiche_MB3140 : Struct // Outbound (UH07): Weiche MB3140 (Einfahrt Kontrollplatz) + Weichen_DL : Bool // Bypass zu Vollpuffer: Weichen-Datenliste fehlerhaft + Undef_Weiche : Bool // Bypass zu Vollpuffer: undefinierte Weiche + BLKMov : Bool // Bypass zu Vollpuffer: Fehler bei Block kopieren + Undef_Bereich+1 : Bool // Bypass zu Vollpuffer: Bereich +1 unbekannt + Frei04 : Bool // Bypass zu Vollpuffer: Frei04 + Frei05 : Bool // Bypass zu Vollpuffer: Frei05 + Ziel_undefiniert : Bool // Bypass zu Vollpuffer: Ziel ist undefiniert + Err_Schleusen_DL : Bool // Bypass zu Vollpuffer: Schleusen-Datenliste fehlerhaft + Err_Undef_Schleuse-1 : Bool // Bypass zu Vollpuffer: undefinierte Schleuse -1 + Übzeit_Gerade : Bool // Bypass zu Vollpuffer: Trolley bei Geradefahrt in Weiche verklemmt (-> Antrieb gestoppt) + Übzeit_Abzweig : Bool // Bypass zu Vollpuffer: Trolley bei Abzweigfahrt in Weiche verklemmt (-> Antrieb gestoppt) + Gerade_Sensor_aktiv : Bool // Bypass zu Vollpuffer: Ziel-Sensor Geradefahrt aktiv + Abzweig_Sensor_aktiv : Bool // Bypass zu Vollpuffer: Ziel-Sensor Abzweigfahrt aktiv + Gerade_Bereich_belegt : Bool // Bypass zu Vollpuffer: Bereich Geradefahrt noch belegt + Abzweig_Bereich_belegt : Bool // Bypass zu Vollpuffer: Bereich Abzweigfahrt noch belegt + Reset_aktiv : Bool // Bypass zu Vollpuffer: Reset ist aktiv + Schleuse_MB3141 : Struct // Outbound (UH07): Schleuse MB3141 (Zuführung Vollpuffer) + Schleuse_DL : Bool // Bypass zu Vollpuffer : Schleuse-Datenliste fehlerhaft + Undef_Schleuse : Bool // Bypass zu Vollpuffer : undefinierter Schleuse + Err_Trolley_nicht_in_Schleuse : Bool // Bypass zu Vollpuffer : Trolley fährt nicht in Schleuse + Err_Uebzeit : Bool // Bypass zu Vollpuffer : Überwachungzeit ist abgelaufen + Err_Schritt : Bool // Bypass zu Vollpuffer : Schritt-Nummer ist nicht definiert + Err_Stau_Einfahrt : Bool // Bypass zu Vollpuffer : Stau bei Bereich-Einfahrt + Err_BLKMov : Bool // Bypass zu Vollpuffer : Error bei Block kopieren + Err_Trolley_raus : Bool // Bypass zu Vollpuffer : Trolley fährt nicht aus Schleuse + Err_Raus_Sensor : Bool // Bypass zu Vollpuffer : Raus-Sensor wird nicht erreicht (oder dauernd aktiv)! + Err_Ziel : Bool // Bypass zu Vollpuffer : Trolley-Ziel nicht bekannt + Err_Weichen_DL : Bool // Bypass zu Vollpuffer : Weichen-Datenliste fehlerhaft + Err_Undef_Weiche : Bool // Bypass zu Vollpuffer : undefinierte Weiche + Err_Weiche_belegt : Bool // Bypass zu Vollpuffer : Weiche bleibt belegt + Err_Kein_LeseErgebnis : Bool // Bypass zu Vollpuffer : Kein Ergebnis von LeseEinheit + Err_Leser_nicht_bereit : Bool // Bypass zu Vollpuffer : Leser nicht betriebsbereit + Barcode_nicht_bekannt : Bool // Bypass zu Vollpuffer : Barcode nicht in Datenbank vorhanden + Schleuse_MB3143 : Struct // Outbound (UH07): Schleuse MB3143 (Zuführung Vollpuffer) + Schleuse_DL : Bool // Bypass zu Vollpuffer : Schleuse-Datenliste fehlerhaft + Undef_Schleuse : Bool // Bypass zu Vollpuffer : undefinierter Schleuse + Err_Trolley_nicht_in_Schleuse : Bool // Bypass zu Vollpuffer : Trolley fährt nicht in Schleuse + Err_Uebzeit : Bool // Bypass zu Vollpuffer : Überwachungzeit ist abgelaufen + Err_Schritt : Bool // Bypass zu Vollpuffer : Schritt-Nummer ist nicht definiert + Err_Stau_Einfahrt : Bool // Bypass zu Vollpuffer : Stau bei Bereich-Einfahrt + Err_BLKMov : Bool // Bypass zu Vollpuffer : Error bei Block kopieren + Err_Trolley_raus : Bool // Bypass zu Vollpuffer : Trolley fährt nicht aus Schleuse + Err_Raus_Sensor : Bool // Bypass zu Vollpuffer : Raus-Sensor wird nicht erreicht (oder dauernd aktiv)! + Err_Ziel : Bool // Bypass zu Vollpuffer : Trolley-Ziel nicht bekannt + Err_Weichen_DL : Bool // Bypass zu Vollpuffer : Weichen-Datenliste fehlerhaft + Err_Undef_Weiche : Bool // Bypass zu Vollpuffer : undefinierte Weiche + Err_Weiche_belegt : Bool // Bypass zu Vollpuffer : Weiche bleibt belegt + Err_Kein_LeseErgebnis : Bool // Bypass zu Vollpuffer : Kein Ergebnis von LeseEinheit + Err_Leser_nicht_bereit : Bool // Bypass zu Vollpuffer : Leser nicht betriebsbereit + Barcode_nicht_bekannt : Bool // Bypass zu Vollpuffer : Barcode nicht in Datenbank vorhanden + Schleuse_MB3244 : Struct // Outbound (UH07): Schleuse MB3244 (Ausfahrt Vollpuffer) + Schleuse_DL : Bool // Hinter Voll-Puffer-Sorter : Schleuse-Datenliste fehlerhaft + Undef_Schleuse : Bool // Hinter Voll-Puffer-Sorter : undefinierter Schleuse + Err_Trolley_nicht_in_Schleuse : Bool // Hinter Voll-Puffer-Sorter : Trolley fährt nicht in Schleuse + Err_Uebzeit : Bool // Hinter Voll-Puffer-Sorter : Überwachungzeit ist abgelaufen + Err_Schritt : Bool // Hinter Voll-Puffer-Sorter : Schritt-Nummer ist nicht definiert + Err_Stau_Einfahrt : Bool // Hinter Voll-Puffer-Sorter : Stau bei Bereich-Einfahrt + Err_BLKMov : Bool // Hinter Voll-Puffer-Sorter : Error bei Block kopieren + Err_Trolley_raus : Bool // Hinter Voll-Puffer-Sorter : Trolley fährt nicht aus Schleuse + Err_Raus_Sensor : Bool // Hinter Voll-Puffer-Sorter : Raus-Sensor wird nicht erreicht (oder dauernd aktiv)! + Err_Ziel : Bool // Hinter Voll-Puffer-Sorter : Trolley-Ziel nicht bekannt + Err_Weichen_DL : Bool // Hinter Voll-Puffer-Sorter : Weichen-Datenliste fehlerhaft + Err_Undef_Weiche : Bool // Hinter Voll-Puffer-Sorter : undefinierte Weiche + Err_Weiche_belegt : Bool // Hinter Voll-Puffer-Sorter : Weiche bleibt belegt + Err_Kein_LeseErgebnis : Bool // Hinter Voll-Puffer-Sorter : Kein Ergebnis von LeseEinheit + Err_Leser_nicht_bereit : Bool // Hinter Voll-Puffer-Sorter : Leser nicht betriebsbereit + Barcode_nicht_bekannt : Bool // Hinter Voll-Puffer-Sorter : Barcode nicht in Datenbank vorhanden + Weiche_MB3245 : Struct // Outbound (UH07): Weiche MB3140 (Einfahrt Voll-Puffer-Rückführung) + Weichen_DL : Bool // Hinter Voll-Puffer-Sorter: Weichen-Datenliste fehlerhaft + Undef_Weiche : Bool // Hinter Voll-Puffer-Sorter: undefinierte Weiche + BLKMov : Bool // Hinter Voll-Puffer-Sorter: Fehler bei Block kopieren + Undef_Bereich+1 : Bool // Hinter Voll-Puffer-Sorter: Bereich +1 unbekannt + Frei04 : Bool // Hinter Voll-Puffer-Sorter: Frei04 + Frei05 : Bool // Hinter Voll-Puffer-Sorter: Frei05 + Ziel_undefiniert : Bool // Hinter Voll-Puffer-Sorter: Ziel ist undefiniert + Err_Schleusen_DL : Bool // Hinter Voll-Puffer-Sorter: Schleusen-Datenliste fehlerhaft + Err_Undef_Schleuse-1 : Bool // Hinter Voll-Puffer-Sorter: undefinierte Schleuse -1 + Übzeit_Gerade : Bool // Hinter Voll-Puffer-Sorter: Trolley bei Geradefahrt in Weiche verklemmt (-> Antrieb gestoppt) + Übzeit_Abzweig : Bool // Hinter Voll-Puffer-Sorter: Trolley bei Abzweigfahrt in Weiche verklemmt (-> Antrieb gestoppt) + Gerade_Sensor_aktiv : Bool // Hinter Voll-Puffer-Sorter: Ziel-Sensor Geradefahrt aktiv + Abzweig_Sensor_aktiv : Bool // Hinter Voll-Puffer-Sorter: Ziel-Sensor Abzweigfahrt aktiv + Gerade_Bereich_belegt : Bool // Hinter Voll-Puffer-Sorter: Bereich Geradefahrt noch belegt + Abzweig_Bereich_belegt : Bool // Hinter Voll-Puffer-Sorter: Bereich Abzweigfahrt noch belegt + Reset_aktiv : Bool // Hinter Voll-Puffer-Sorter: Reset ist aktiv + Schleuse_MB3247 : Struct // Outbound (UH07): Schleuse MB3247 (Abführung Vollpuffer) + Schleuse_DL : Bool // Vollpuffer zu Bypass : Schleuse-Datenliste fehlerhaft + Undef_Schleuse : Bool // Vollpuffer zu Bypass : undefinierter Schleuse + Err_Trolley_nicht_in_Schleuse : Bool // Vollpuffer zu Bypass : Trolley fährt nicht in Schleuse + Err_Uebzeit : Bool // Vollpuffer zu Bypass : Überwachungzeit ist abgelaufen + Err_Schritt : Bool // Vollpuffer zu Bypass : Schritt-Nummer ist nicht definiert + Err_Stau_Einfahrt : Bool // Vollpuffer zu Bypass : Stau bei Bereich-Einfahrt + Err_BLKMov : Bool // Vollpuffer zu Bypass : Error bei Block kopieren + Err_Trolley_raus : Bool // Vollpuffer zu Bypass : Trolley fährt nicht aus Schleuse + Err_Raus_Sensor : Bool // Vollpuffer zu Bypass : Raus-Sensor wird nicht erreicht (oder dauernd aktiv)! + Err_Ziel : Bool // Vollpuffer zu Bypass : Trolley-Ziel nicht bekannt + Err_Weichen_DL : Bool // Vollpuffer zu Bypass : Weichen-Datenliste fehlerhaft + Err_Undef_Weiche : Bool // Vollpuffer zu Bypass : undefinierte Weiche + Err_Weiche_belegt : Bool // Vollpuffer zu Bypass : Weiche bleibt belegt + Err_Kein_LeseErgebnis : Bool // Vollpuffer zu Bypass : Kein Ergebnis von LeseEinheit + Err_Leser_nicht_bereit : Bool // Vollpuffer zu Bypass : Leser nicht betriebsbereit + Barcode_nicht_bekannt : Bool // Vollpuffer zu Bypass : Barcode nicht in Datenbank vorhanden + Schleuse_MB3303 : Struct // Outbound (UH07): Schleuse MB3303 (Zuführung Leerpuffer) + Schleuse_DL : Bool // Bypass zu Leerpuffer : Schleuse-Datenliste fehlerhaft + Undef_Schleuse : Bool // Bypass zu Leerpuffer : undefinierter Schleuse + Err_Trolley_nicht_in_Schleuse : Bool // Bypass zu Leerpuffer : Trolley fährt nicht in Schleuse + Err_Uebzeit : Bool // Bypass zu Leerpuffer : Überwachungzeit ist abgelaufen + Err_Schritt : Bool // Bypass zu Leerpuffer : Schritt-Nummer ist nicht definiert + Err_Stau_Einfahrt : Bool // Bypass zu Leerpuffer : Stau bei Bereich-Einfahrt + Err_BLKMov : Bool // Bypass zu Leerpuffer : Error bei Block kopieren + Err_Trolley_raus : Bool // Bypass zu Leerpuffer : Trolley fährt nicht aus Schleuse + Err_Raus_Sensor : Bool // Bypass zu Leerpuffer : Raus-Sensor wird nicht erreicht (oder dauernd aktiv)! + Err_Ziel : Bool // Bypass zu Leerpuffer : Trolley-Ziel nicht bekannt + Err_Weichen_DL : Bool // Bypass zu Leerpuffer : Weichen-Datenliste fehlerhaft + Err_Undef_Weiche : Bool // Bypass zu Leerpuffer : undefinierte Weiche + Err_Weiche_belegt : Bool // Bypass zu Leerpuffer : Weiche bleibt belegt + Err_Kein_LeseErgebnis : Bool // Bypass zu Leerpuffer : Kein Ergebnis von LeseEinheit + Err_Leser_nicht_bereit : Bool // Bypass zu Leerpuffer : Leser nicht betriebsbereit + Barcode_nicht_bekannt : Bool // Bypass zu Leerpuffer : Barcode nicht in Datenbank vorhanden + Schleuse_MB3305 : Struct // Outbound (UH07): Schleuse MB3305 (Vor Leerpuffer) + Schleuse_DL : Bool // Leer-Sorter : Schleuse-Datenliste fehlerhaft + Undef_Schleuse : Bool // Leer-Sorter : undefinierter Schleuse + Err_Trolley_nicht_in_Schleuse : Bool // Leer-Sorter : Trolley fährt nicht in Schleuse + Err_Uebzeit : Bool // Leer-Sorter : Überwachungzeit ist abgelaufen + Err_Schritt : Bool // Leer-Sorter : Schritt-Nummer ist nicht definiert + Err_Stau_Einfahrt : Bool // Leer-Sorter : Stau bei Bereich-Einfahrt + Err_BLKMov : Bool // Leer-Sorter : Error bei Block kopieren + Err_Trolley_raus : Bool // Leer-Sorter : Trolley fährt nicht aus Schleuse + Err_Raus_Sensor : Bool // Leer-Sorter : Raus-Sensor wird nicht erreicht (oder dauernd aktiv)! + Err_Ziel : Bool // Leer-Sorter : Trolley-Ziel nicht bekannt + Err_Weichen_DL : Bool // Leer-Sorter : Weichen-Datenliste fehlerhaft + Err_Undef_Weiche : Bool // Leer-Sorter : undefinierte Weiche + Err_Weiche_belegt : Bool // Leer-Sorter : Weiche bleibt belegt + Err_Kein_LeseErgebnis : Bool // Leer-Sorter : Kein Ergebnis von LeseEinheit + Err_Leser_nicht_bereit : Bool // Leer-Sorter : Leser nicht betriebsbereit + Barcode_nicht_bekannt : Bool // Leer-Sorter : Barcode nicht in Datenbank vorhanden + Schleuse_MB3323 : Struct // Outbound (UH07): Schleuse MB3323 (Sackbeladung) + Schleuse_DL : Bool // Hinter Leer-Sorter : Schleuse-Datenliste fehlerhaft + Undef_Schleuse : Bool // Hinter Leer-Sorter : undefinierter Schleuse + Err_Trolley_nicht_in_Schleuse : Bool // Hinter Leer-Sorter : Trolley fährt nicht in Schleuse + Err_Uebzeit : Bool // Hinter Leer-Sorter : Überwachungzeit ist abgelaufen + Err_Schritt : Bool // Hinter Leer-Sorter : Schritt-Nummer ist nicht definiert + Err_Stau_Einfahrt : Bool // Hinter Leer-Sorter : Stau bei Bereich-Einfahrt + Err_BLKMov : Bool // Hinter Leer-Sorter : Error bei Block kopieren + Err_Trolley_raus : Bool // Hinter Leer-Sorter : Trolley fährt nicht aus Schleuse + Err_Raus_Sensor : Bool // Hinter Leer-Sorter : Raus-Sensor wird nicht erreicht (oder dauernd aktiv)! + Err_Ziel : Bool // Hinter Leer-Sorter : Trolley-Ziel nicht bekannt + Err_Weichen_DL : Bool // Hinter Leer-Sorter : Weichen-Datenliste fehlerhaft + Err_Undef_Weiche : Bool // Hinter Leer-Sorter : undefinierte Weiche + Err_Weiche_belegt : Bool // Hinter Leer-Sorter : Weiche bleibt belegt + Err_Kein_LeseErgebnis : Bool // Hinter Leer-Sorter : Kein Ergebnis von LeseEinheit + Err_Leser_nicht_bereit : Bool // Hinter Leer-Sorter : Leser nicht betriebsbereit + Barcode_nicht_bekannt : Bool // Hinter Leer-Sorter : Barcode nicht in Datenbank vorhanden + Schleuse_MB3363 : Struct // Outbound (UH07): Schleuse MB3363 (Abführung Vollpuffer) + Schleuse_DL : Bool // Vollpuffer zu Bypass : Schleuse-Datenliste fehlerhaft + Undef_Schleuse : Bool // Vollpuffer zu Bypass : undefinierter Schleuse + Err_Trolley_nicht_in_Schleuse : Bool // Vollpuffer zu Bypass : Trolley fährt nicht in Schleuse + Err_Uebzeit : Bool // Vollpuffer zu Bypass : Überwachungzeit ist abgelaufen + Err_Schritt : Bool // Vollpuffer zu Bypass : Schritt-Nummer ist nicht definiert + Err_Stau_Einfahrt : Bool // Vollpuffer zu Bypass : Stau bei Bereich-Einfahrt + Err_BLKMov : Bool // Vollpuffer zu Bypass : Error bei Block kopieren + Err_Trolley_raus : Bool // Vollpuffer zu Bypass : Trolley fährt nicht aus Schleuse + Err_Raus_Sensor : Bool // Vollpuffer zu Bypass : Raus-Sensor wird nicht erreicht (oder dauernd aktiv)! + Err_Ziel : Bool // Vollpuffer zu Bypass : Trolley-Ziel nicht bekannt + Err_Weichen_DL : Bool // Vollpuffer zu Bypass : Weichen-Datenliste fehlerhaft + Err_Undef_Weiche : Bool // Vollpuffer zu Bypass : undefinierte Weiche + Err_Weiche_belegt : Bool // Vollpuffer zu Bypass : Weiche bleibt belegt + Err_Kein_LeseErgebnis : Bool // Vollpuffer zu Bypass : Kein Ergebnis von LeseEinheit + Err_Leser_nicht_bereit : Bool // Vollpuffer zu Bypass : Leser nicht betriebsbereit + Barcode_nicht_bekannt : Bool // Vollpuffer zu Bypass : Barcode nicht in Datenbank vorhanden + Schleuse_MB3366 : Struct // Outbound (UH07): Schleuse MB3366 (Brandschutztür 1) + Schleuse_DL : Bool // Vollpuffer zu Bypass : Schleuse-Datenliste fehlerhaft + Undef_Schleuse : Bool // Vollpuffer zu Bypass : undefinierter Schleuse + Err_Trolley_nicht_in_Schleuse : Bool // Vollpuffer zu Bypass : Trolley fährt nicht in Schleuse + Err_Uebzeit : Bool // Vollpuffer zu Bypass : Überwachungzeit ist abgelaufen + Err_Schritt : Bool // Vollpuffer zu Bypass : Schritt-Nummer ist nicht definiert + Err_Stau_Einfahrt : Bool // Vollpuffer zu Bypass : Stau bei Bereich-Einfahrt + Err_BLKMov : Bool // Vollpuffer zu Bypass : Error bei Block kopieren + Err_Trolley_raus : Bool // Vollpuffer zu Bypass : Trolley fährt nicht aus Schleuse + Err_Raus_Sensor : Bool // Vollpuffer zu Bypass : Raus-Sensor wird nicht erreicht (oder dauernd aktiv)! + Err_Ziel : Bool // Vollpuffer zu Bypass : Trolley-Ziel nicht bekannt + Err_Weichen_DL : Bool // Vollpuffer zu Bypass : Weichen-Datenliste fehlerhaft + Err_Undef_Weiche : Bool // Vollpuffer zu Bypass : undefinierte Weiche + Err_Weiche_belegt : Bool // Vollpuffer zu Bypass : Weiche bleibt belegt + Err_Kein_LeseErgebnis : Bool // Vollpuffer zu Bypass : Kein Ergebnis von LeseEinheit + Err_Leser_nicht_bereit : Bool // Vollpuffer zu Bypass : Leser nicht betriebsbereit + Barcode_nicht_bekannt : Bool // Vollpuffer zu Bypass : Barcode nicht in Datenbank vorhanden + Schleuse_MB3370 : Struct // Outbound (UH07): Schleuse MB3370 (Zuführung Leerpuffer) + Schleuse_DL : Bool // Bypass zu Leerpuffer : Schleuse-Datenliste fehlerhaft + Undef_Schleuse : Bool // Bypass zu Leerpuffer : undefinierter Schleuse + Err_Trolley_nicht_in_Schleuse : Bool // Bypass zu Leerpuffer : Trolley fährt nicht in Schleuse + Err_Uebzeit : Bool // Bypass zu Leerpuffer : Überwachungzeit ist abgelaufen + Err_Schritt : Bool // Bypass zu Leerpuffer : Schritt-Nummer ist nicht definiert + Err_Stau_Einfahrt : Bool // Bypass zu Leerpuffer : Stau bei Bereich-Einfahrt + Err_BLKMov : Bool // Bypass zu Leerpuffer : Error bei Block kopieren + Err_Trolley_raus : Bool // Bypass zu Leerpuffer : Trolley fährt nicht aus Schleuse + Err_Raus_Sensor : Bool // Bypass zu Leerpuffer : Raus-Sensor wird nicht erreicht (oder dauernd aktiv)! + Err_Ziel : Bool // Bypass zu Leerpuffer : Trolley-Ziel nicht bekannt + Err_Weichen_DL : Bool // Bypass zu Leerpuffer : Weichen-Datenliste fehlerhaft + Err_Undef_Weiche : Bool // Bypass zu Leerpuffer : undefinierte Weiche + Err_Weiche_belegt : Bool // Bypass zu Leerpuffer : Weiche bleibt belegt + Err_Kein_LeseErgebnis : Bool // Bypass zu Leerpuffer : Kein Ergebnis von LeseEinheit + Err_Leser_nicht_bereit : Bool // Bypass zu Leerpuffer : Leser nicht betriebsbereit + Barcode_nicht_bekannt : Bool // Bypass zu Leerpuffer : Barcode nicht in Datenbank vorhanden + Schleuse_MB3722 : Struct // Outbound (UH07): Schleuse MB3722 (Highway zu AMR) + Schleuse_DL : Bool // Highway zu AMR : Schleuse-Datenliste fehlerhaft + Undef_Schleuse : Bool // Highway zu AMR : undefinierter Schleuse + Err_Trolley_nicht_in_Schleuse : Bool // Highway zu AMR : Trolley fährt nicht in Schleuse + Err_Uebzeit : Bool // Highway zu AMR : Überwachungzeit ist abgelaufen + Err_Schritt : Bool // Highway zu AMR : Schritt-Nummer ist nicht definiert + Err_Stau_Einfahrt : Bool // Highway zu AMR : Stau bei Bereich-Einfahrt + Err_BLKMov : Bool // Highway zu AMR : Error bei Block kopieren + Err_Trolley_raus : Bool // Highway zu AMR : Trolley fährt nicht aus Schleuse + Err_Raus_Sensor : Bool // Highway zu AMR : Raus-Sensor wird nicht erreicht (oder dauernd aktiv)! + Err_Ziel : Bool // Highway zu AMR : Trolley-Ziel nicht bekannt + Err_Weichen_DL : Bool // Highway zu AMR : Weichen-Datenliste fehlerhaft + Err_Undef_Weiche : Bool // Highway zu AMR : undefinierte Weiche + Err_Weiche_belegt : Bool // Highway zu AMR : Weiche bleibt belegt + Err_Kein_LeseErgebnis : Bool // Highway zu AMR : Kein Ergebnis von LeseEinheit + Err_Leser_nicht_bereit : Bool // Highway zu AMR : Leser nicht betriebsbereit + Barcode_nicht_bekannt : Bool // Highway zu AMR : Barcode nicht in Datenbank vorhanden + Schleuse_MB3725 : Struct // Outbound (UH07): Schleuse MB3725 (Highway zu OB) + Schleuse_DL : Bool // Highway zu OB : Schleuse-Datenliste fehlerhaft + Undef_Schleuse : Bool // Highway zu OB : undefinierter Schleuse + Err_Trolley_nicht_in_Schleuse : Bool // Highway zu OB : Trolley fährt nicht in Schleuse + Err_Uebzeit : Bool // Highway zu OB : Überwachungzeit ist abgelaufen + Err_Schritt : Bool // Highway zu OB : Schritt-Nummer ist nicht definiert + Err_Stau_Einfahrt : Bool // Highway zu OB : Stau bei Bereich-Einfahrt + Err_BLKMov : Bool // Highway zu OB : Error bei Block kopieren + Err_Trolley_raus : Bool // Highway zu OB : Trolley fährt nicht aus Schleuse + Err_Raus_Sensor : Bool // Highway zu OB : Raus-Sensor wird nicht erreicht (oder dauernd aktiv)! + Err_Ziel : Bool // Highway zu OB : Trolley-Ziel nicht bekannt + Err_Weichen_DL : Bool // Highway zu OB : Weichen-Datenliste fehlerhaft + Err_Undef_Weiche : Bool // Highway zu OB : undefinierte Weiche + Err_Weiche_belegt : Bool // Highway zu OB : Weiche bleibt belegt + Err_Kein_LeseErgebnis : Bool // Highway zu OB : Kein Ergebnis von LeseEinheit + Err_Leser_nicht_bereit : Bool // Highway zu OB : Leser nicht betriebsbereit + Barcode_nicht_bekannt : Bool // Highway zu OB : Barcode nicht in Datenbank vorhanden + Schleuse_MB4200 : Struct // Outbound (UH07): Schleuse MB4200 (Zuführung Vollpuffer) + Schleuse_DL : Bool // Highway zu OB : Schleuse-Datenliste fehlerhaft + Undef_Schleuse : Bool // Highway zu OB : undefinierter Schleuse + Err_Trolley_nicht_in_Schleuse : Bool // Highway zu OB : Trolley fährt nicht in Schleuse + Err_Uebzeit : Bool // Highway zu OB : Überwachungzeit ist abgelaufen + Err_Schritt : Bool // Highway zu OB : Schritt-Nummer ist nicht definiert + Err_Stau_Einfahrt : Bool // Highway zu OB : Stau bei Bereich-Einfahrt + Err_BLKMov : Bool // Highway zu OB : Error bei Block kopieren + Err_Trolley_raus : Bool // Highway zu OB : Trolley fährt nicht aus Schleuse + Err_Raus_Sensor : Bool // Highway zu OB : Raus-Sensor wird nicht erreicht (oder dauernd aktiv)! + Err_Ziel : Bool // Highway zu OB : Trolley-Ziel nicht bekannt + Err_Weichen_DL : Bool // Highway zu OB : Weichen-Datenliste fehlerhaft + Err_Undef_Weiche : Bool // Highway zu OB : undefinierte Weiche + Err_Weiche_belegt : Bool // Highway zu OB : Weiche bleibt belegt + Err_Kein_LeseErgebnis : Bool // Highway zu OB : Kein Ergebnis von LeseEinheit + Err_Leser_nicht_bereit : Bool // Highway zu OB : Leser nicht betriebsbereit + Barcode_nicht_bekannt : Bool // Highway zu OB : Barcode nicht in Datenbank vorhanden + Schleuse_MB4207 : Struct // Outbound (UH07): Schleuse MB4207 (Hinter RFID-Gate) + Schleuse_DL : Bool // Highway zu Bypass : Schleuse-Datenliste fehlerhaft + Undef_Schleuse : Bool // Highway zu Bypass : undefinierter Schleuse + Err_Trolley_nicht_in_Schleuse : Bool // Highway zu Bypass : Trolley fährt nicht in Schleuse + Err_Uebzeit : Bool // Highway zu Bypass : Überwachungzeit ist abgelaufen + Err_Schritt : Bool // Highway zu Bypass : Schritt-Nummer ist nicht definiert + Err_Stau_Einfahrt : Bool // Highway zu Bypass : Stau bei Bereich-Einfahrt + Err_BLKMov : Bool // Highway zu Bypass : Error bei Block kopieren + Err_Trolley_raus : Bool // Highway zu Bypass : Trolley fährt nicht aus Schleuse + Err_Raus_Sensor : Bool // Highway zu Bypass : Raus-Sensor wird nicht erreicht (oder dauernd aktiv)! + Err_Ziel : Bool // Highway zu Bypass : Trolley-Ziel nicht bekannt + Err_Weichen_DL : Bool // Highway zu Bypass : Weichen-Datenliste fehlerhaft + Err_Undef_Weiche : Bool // Highway zu Bypass : undefinierte Weiche + Err_Weiche_belegt : Bool // Highway zu Bypass : Weiche bleibt belegt + Err_Kein_LeseErgebnis : Bool // Highway zu Bypass : Kein Ergebnis von LeseEinheit + Err_Leser_nicht_bereit : Bool // Highway zu Bypass : Leser nicht betriebsbereit + Barcode_nicht_bekannt : Bool // Highway zu Bypass : Barcode nicht in Datenbank vorhanden + Schleuse_MB4212 : Struct // Outbound (UH07): Schleuse MB4212 (Zuführung Vollpuffer) + Schleuse_DL : Bool // Highway zu Bypass : Schleuse-Datenliste fehlerhaft + Undef_Schleuse : Bool // Highway zu Bypass : undefinierter Schleuse + Err_Trolley_nicht_in_Schleuse : Bool // Highway zu Bypass : Trolley fährt nicht in Schleuse + Err_Uebzeit : Bool // Highway zu Bypass : Überwachungzeit ist abgelaufen + Err_Schritt : Bool // Highway zu Bypass : Schritt-Nummer ist nicht definiert + Err_Stau_Einfahrt : Bool // Highway zu Bypass : Stau bei Bereich-Einfahrt + Err_BLKMov : Bool // Highway zu Bypass : Error bei Block kopieren + Err_Trolley_raus : Bool // Highway zu Bypass : Trolley fährt nicht aus Schleuse + Err_Raus_Sensor : Bool // Highway zu Bypass : Raus-Sensor wird nicht erreicht (oder dauernd aktiv)! + Err_Ziel : Bool // Highway zu Bypass : Trolley-Ziel nicht bekannt + Err_Weichen_DL : Bool // Highway zu Bypass : Weichen-Datenliste fehlerhaft + Err_Undef_Weiche : Bool // Highway zu Bypass : undefinierte Weiche + Err_Weiche_belegt : Bool // Highway zu Bypass : Weiche bleibt belegt + Err_Kein_LeseErgebnis : Bool // Highway zu Bypass : Kein Ergebnis von LeseEinheit + Err_Leser_nicht_bereit : Bool // Highway zu Bypass : Leser nicht betriebsbereit + Barcode_nicht_bekannt : Bool // Highway zu Bypass : Barcode nicht in Datenbank vorhanden + Schleuse_MB4214 : Struct // Outbound (UH07): Schleuse MB4214 (Zuführung Vollpuffer) + Schleuse_DL : Bool // Highway zu Bypass : Schleuse-Datenliste fehlerhaft + Undef_Schleuse : Bool // Highway zu Bypass : undefinierter Schleuse + Err_Trolley_nicht_in_Schleuse : Bool // Highway zu Bypass : Trolley fährt nicht in Schleuse + Err_Uebzeit : Bool // Highway zu Bypass : Überwachungzeit ist abgelaufen + Err_Schritt : Bool // Highway zu Bypass : Schritt-Nummer ist nicht definiert + Err_Stau_Einfahrt : Bool // Highway zu Bypass : Stau bei Bereich-Einfahrt + Err_BLKMov : Bool // Highway zu Bypass : Error bei Block kopieren + Err_Trolley_raus : Bool // Highway zu Bypass : Trolley fährt nicht aus Schleuse + Err_Raus_Sensor : Bool // Highway zu Bypass : Raus-Sensor wird nicht erreicht (oder dauernd aktiv)! + Err_Ziel : Bool // Highway zu Bypass : Trolley-Ziel nicht bekannt + Err_Weichen_DL : Bool // Highway zu Bypass : Weichen-Datenliste fehlerhaft + Err_Undef_Weiche : Bool // Highway zu Bypass : undefinierte Weiche + Err_Weiche_belegt : Bool // Highway zu Bypass : Weiche bleibt belegt + Err_Kein_LeseErgebnis : Bool // Highway zu Bypass : Kein Ergebnis von LeseEinheit + Err_Leser_nicht_bereit : Bool // Highway zu Bypass : Leser nicht betriebsbereit + Barcode_nicht_bekannt : Bool // Highway zu Bypass : Barcode nicht in Datenbank vorhanden + Weiche_MB4223 : Struct // Outbound (UH07): Weiche MB4223 (ByPass zu Vollpuffer) + Weichen_DL : Bool // Leerpuffer zu Bypass: Weichen-Datenliste fehlerhaft + Undef_Weiche : Bool // Leerpuffer zu Bypass: undefinierte Weiche + BLKMov : Bool // Leerpuffer zu Bypass: Fehler bei Block kopieren + Undef_Bereich+1 : Bool // Leerpuffer zu Bypass: Bereich +1 unbekannt + Frei04 : Bool // Leerpuffer zu Bypass: Frei04 + Frei05 : Bool // Leerpuffer zu Bypass: Frei05 + Ziel_undefiniert : Bool // Leerpuffer zu Bypass: Ziel ist undefiniert + Err_Schleusen_DL : Bool // Leerpuffer zu Bypass: Schleusen-Datenliste fehlerhaft + Err_Undef_Schleuse-1 : Bool // Leerpuffer zu Bypass: undefinierte Schleuse -1 + Übzeit_Gerade : Bool // Leerpuffer zu Bypass: Trolley bei Geradefahrt in Weiche verklemmt (-> Antrieb gestoppt) + Übzeit_Abzweig : Bool // Leerpuffer zu Bypass: Trolley bei Abzweigfahrt in Weiche verklemmt (-> Antrieb gestoppt) + Gerade_Sensor_aktiv : Bool // Leerpuffer zu Bypass: Ziel-Sensor Geradefahrt aktiv + Abzweig_Sensor_aktiv : Bool // Leerpuffer zu Bypass: Ziel-Sensor Abzweigfahrt aktiv + Gerade_Bereich_belegt : Bool // Leerpuffer zu Bypass: Bereich Geradefahrt noch belegt + Abzweig_Bereich_belegt : Bool // Leerpuffer zu Bypass: Bereich Abzweigfahrt noch belegt + Reset_aktiv : Bool // Leerpuffer zu Bypass: Reset ist aktiv + Schleuse_MB4227 : Struct // Outbound (UH07): Schleuse MB4227 (Abführung Leerpuffer) + Schleuse_DL : Bool // Highway zu AMR : Schleuse-Datenliste fehlerhaft + Undef_Schleuse : Bool // Highway zu AMR : undefinierter Schleuse + Err_Trolley_nicht_in_Schleuse : Bool // Highway zu AMR : Trolley fährt nicht in Schleuse + Err_Uebzeit : Bool // Highway zu AMR : Überwachungzeit ist abgelaufen + Err_Schritt : Bool // Highway zu AMR : Schritt-Nummer ist nicht definiert + Err_Stau_Einfahrt : Bool // Highway zu AMR : Stau bei Bereich-Einfahrt + Err_BLKMov : Bool // Highway zu AMR : Error bei Block kopieren + Err_Trolley_raus : Bool // Highway zu AMR : Trolley fährt nicht aus Schleuse + Err_Raus_Sensor : Bool // Highway zu AMR : Raus-Sensor wird nicht erreicht (oder dauernd aktiv)! + Err_Ziel : Bool // Highway zu AMR : Trolley-Ziel nicht bekannt + Err_Weichen_DL : Bool // Highway zu AMR : Weichen-Datenliste fehlerhaft + Err_Undef_Weiche : Bool // Highway zu AMR : undefinierte Weiche + Err_Weiche_belegt : Bool // Highway zu AMR : Weiche bleibt belegt + Err_Kein_LeseErgebnis : Bool // Highway zu AMR : Kein Ergebnis von LeseEinheit + Err_Leser_nicht_bereit : Bool // Highway zu AMR : Leser nicht betriebsbereit + Barcode_nicht_bekannt : Bool // Highway zu AMR : Barcode nicht in Datenbank vorhanden + Schleuse_MB4221 : Struct // Outbound (UH07): Schleuse MB4221 (Abführung Leerpuffer) + Schleuse_DL : Bool // Leerpuffer zu Bypass : Schleuse-Datenliste fehlerhaft + Undef_Schleuse : Bool // Leerpuffer zu Bypass : undefinierter Schleuse + Err_Trolley_nicht_in_Schleuse : Bool // Leerpuffer zu Bypass : Trolley fährt nicht in Schleuse + Err_Uebzeit : Bool // Leerpuffer zu Bypass : Überwachungzeit ist abgelaufen + Err_Schritt : Bool // Leerpuffer zu Bypass : Schritt-Nummer ist nicht definiert + Err_Stau_Einfahrt : Bool // Leerpuffer zu Bypass : Stau bei Bereich-Einfahrt + Err_BLKMov : Bool // Leerpuffer zu Bypass : Error bei Block kopieren + Err_Trolley_raus : Bool // Leerpuffer zu Bypass : Trolley fährt nicht aus Schleuse + Err_Raus_Sensor : Bool // Leerpuffer zu Bypass : Raus-Sensor wird nicht erreicht (oder dauernd aktiv)! + Err_Ziel : Bool // Leerpuffer zu Bypass : Trolley-Ziel nicht bekannt + Err_Weichen_DL : Bool // Leerpuffer zu Bypass : Weichen-Datenliste fehlerhaft + Err_Undef_Weiche : Bool // Leerpuffer zu Bypass : undefinierte Weiche + Err_Weiche_belegt : Bool // Leerpuffer zu Bypass : Weiche bleibt belegt + Err_Kein_LeseErgebnis : Bool // Leerpuffer zu Bypass : Kein Ergebnis von LeseEinheit + Err_Leser_nicht_bereit : Bool // Leerpuffer zu Bypass : Leser nicht betriebsbereit + Barcode_nicht_bekannt : Bool // Leerpuffer zu Bypass : Barcode nicht in Datenbank vorhanden + Schleuse_MB4235 : Struct // Outbound (UH07): Schleuse MB4235 (Brandschutztür 2) + Schleuse_DL : Bool // Highway zu AMR : Schleuse-Datenliste fehlerhaft + Undef_Schleuse : Bool // Highway zu AMR : undefinierter Schleuse + Err_Trolley_nicht_in_Schleuse : Bool // Highway zu AMR : Trolley fährt nicht in Schleuse + Err_Uebzeit : Bool // Highway zu AMR : Überwachungzeit ist abgelaufen + Err_Schritt : Bool // Highway zu AMR : Schritt-Nummer ist nicht definiert + Err_Stau_Einfahrt : Bool // Highway zu AMR : Stau bei Bereich-Einfahrt + Err_BLKMov : Bool // Highway zu AMR : Error bei Block kopieren + Err_Trolley_raus : Bool // Highway zu AMR : Trolley fährt nicht aus Schleuse + Err_Raus_Sensor : Bool // Highway zu AMR : Raus-Sensor wird nicht erreicht (oder dauernd aktiv)! + Err_Ziel : Bool // Highway zu AMR : Trolley-Ziel nicht bekannt + Err_Weichen_DL : Bool // Highway zu AMR : Weichen-Datenliste fehlerhaft + Err_Undef_Weiche : Bool // Highway zu AMR : undefinierte Weiche + Err_Weiche_belegt : Bool // Highway zu AMR : Weiche bleibt belegt + Err_Kein_LeseErgebnis : Bool // Highway zu AMR : Kein Ergebnis von LeseEinheit + Err_Leser_nicht_bereit : Bool // Highway zu AMR : Leser nicht betriebsbereit + Barcode_nicht_bekannt : Bool // Highway zu AMR : Barcode nicht in Datenbank vorhanden + Schleuse_MB4443 : Struct // Outbound (UH07): Schleuse MB4443 (Zuführung Entladepuffer) + Schleuse_DL : Bool // Vollpuffer zu Bypass : Schleuse-Datenliste fehlerhaft + Undef_Schleuse : Bool // Vollpuffer zu Bypass : undefinierter Schleuse + Err_Trolley_nicht_in_Schleuse : Bool // Vollpuffer zu Bypass : Trolley fährt nicht in Schleuse + Err_Uebzeit : Bool // Vollpuffer zu Bypass : Überwachungzeit ist abgelaufen + Err_Schritt : Bool // Vollpuffer zu Bypass : Schritt-Nummer ist nicht definiert + Err_Stau_Einfahrt : Bool // Vollpuffer zu Bypass : Stau bei Bereich-Einfahrt + Err_BLKMov : Bool // Vollpuffer zu Bypass : Error bei Block kopieren + Err_Trolley_raus : Bool // Vollpuffer zu Bypass : Trolley fährt nicht aus Schleuse + Err_Raus_Sensor : Bool // Vollpuffer zu Bypass : Raus-Sensor wird nicht erreicht (oder dauernd aktiv)! + Err_Ziel : Bool // Vollpuffer zu Bypass : Trolley-Ziel nicht bekannt + Err_Weichen_DL : Bool // Vollpuffer zu Bypass : Weichen-Datenliste fehlerhaft + Err_Undef_Weiche : Bool // Vollpuffer zu Bypass : undefinierte Weiche + Err_Weiche_belegt : Bool // Vollpuffer zu Bypass : Weiche bleibt belegt + Err_Kein_LeseErgebnis : Bool // Vollpuffer zu Bypass : Kein Ergebnis von LeseEinheit + Err_Leser_nicht_bereit : Bool // Vollpuffer zu Bypass : Leser nicht betriebsbereit + Barcode_nicht_bekannt : Bool // Vollpuffer zu Bypass : Barcode nicht in Datenbank vorhanden + Weiche_MB4445 : Struct // Outbound (UH07): Weiche MB4445 (ByPass zu Leerpuffer) + Weichen_DL : Bool // Vollpuffer zu Bypass: Weichen-Datenliste fehlerhaft + Undef_Weiche : Bool // Vollpuffer zu Bypass: undefinierte Weiche + BLKMov : Bool // Vollpuffer zu Bypass: Fehler bei Block kopieren + Undef_Bereich+1 : Bool // Vollpuffer zu Bypass: Bereich +1 unbekannt + Frei04 : Bool // Vollpuffer zu Bypass: Frei04 + Frei05 : Bool // Vollpuffer zu Bypass: Frei05 + Ziel_undefiniert : Bool // Vollpuffer zu Bypass: Ziel ist undefiniert + Err_Schleusen_DL : Bool // Vollpuffer zu Bypass: Schleusen-Datenliste fehlerhaft + Err_Undef_Schleuse-1 : Bool // Vollpuffer zu Bypass: undefinierte Schleuse -1 + Übzeit_Gerade : Bool // Vollpuffer zu Bypass: Trolley bei Geradefahrt in Weiche verklemmt (-> Antrieb gestoppt) + Übzeit_Abzweig : Bool // Vollpuffer zu Bypass: Trolley bei Abzweigfahrt in Weiche verklemmt (-> Antrieb gestoppt) + Gerade_Sensor_aktiv : Bool // Vollpuffer zu Bypass: Ziel-Sensor Geradefahrt aktiv + Abzweig_Sensor_aktiv : Bool // Vollpuffer zu Bypass: Ziel-Sensor Abzweigfahrt aktiv + Gerade_Bereich_belegt : Bool // Vollpuffer zu Bypass: Bereich Geradefahrt noch belegt + Abzweig_Bereich_belegt : Bool // Vollpuffer zu Bypass: Bereich Abzweigfahrt noch belegt + Reset_aktiv : Bool // Vollpuffer zu Bypass: Reset ist aktiv + Schleuse_MB4450 : Struct // Outbound (UH07): Schleuse MB4450 (Zuführung Entladepuffer) + Schleuse_DL : Bool // Bypass zu Entladepuffer : Schleuse-Datenliste fehlerhaft + Undef_Schleuse : Bool // Bypass zu Entladepuffer : undefinierter Schleuse + Err_Trolley_nicht_in_Schleuse : Bool // Bypass zu Entladepuffer : Trolley fährt nicht in Schleuse + Err_Uebzeit : Bool // Bypass zu Entladepuffer : Überwachungzeit ist abgelaufen + Err_Schritt : Bool // Bypass zu Entladepuffer : Schritt-Nummer ist nicht definiert + Err_Stau_Einfahrt : Bool // Bypass zu Entladepuffer : Stau bei Bereich-Einfahrt + Err_BLKMov : Bool // Bypass zu Entladepuffer : Error bei Block kopieren + Err_Trolley_raus : Bool // Bypass zu Entladepuffer : Trolley fährt nicht aus Schleuse + Err_Raus_Sensor : Bool // Bypass zu Entladepuffer : Raus-Sensor wird nicht erreicht (oder dauernd aktiv)! + Err_Ziel : Bool // Bypass zu Entladepuffer : Trolley-Ziel nicht bekannt + Err_Weichen_DL : Bool // Bypass zu Entladepuffer : Weichen-Datenliste fehlerhaft + Err_Undef_Weiche : Bool // Bypass zu Entladepuffer : undefinierte Weiche + Err_Weiche_belegt : Bool // Bypass zu Entladepuffer : Weiche bleibt belegt + Err_Kein_LeseErgebnis : Bool // Bypass zu Entladepuffer : Kein Ergebnis von LeseEinheit + Err_Leser_nicht_bereit : Bool // Bypass zu Entladepuffer : Leser nicht betriebsbereit + Barcode_nicht_bekannt : Bool // Bypass zu Entladepuffer : Barcode nicht in Datenbank vorhanden + Schleuse_MB4462 : Struct // Outbound (UH07): Schleuse MB4562 (Abführung Entladepuffer) + Schleuse_DL : Bool // Bypass zu Leerpuffer : Schleuse-Datenliste fehlerhaft + Undef_Schleuse : Bool // Bypass zu Leerpuffer : undefinierter Schleuse + Err_Trolley_nicht_in_Schleuse : Bool // Bypass zu Leerpuffer : Trolley fährt nicht in Schleuse + Err_Uebzeit : Bool // Bypass zu Leerpuffer : Überwachungzeit ist abgelaufen + Err_Schritt : Bool // Bypass zu Leerpuffer : Schritt-Nummer ist nicht definiert + Err_Stau_Einfahrt : Bool // Bypass zu Leerpuffer : Stau bei Bereich-Einfahrt + Err_BLKMov : Bool // Bypass zu Leerpuffer : Error bei Block kopieren + Err_Trolley_raus : Bool // Bypass zu Leerpuffer : Trolley fährt nicht aus Schleuse + Err_Raus_Sensor : Bool // Bypass zu Leerpuffer : Raus-Sensor wird nicht erreicht (oder dauernd aktiv)! + Err_Ziel : Bool // Bypass zu Leerpuffer : Trolley-Ziel nicht bekannt + Err_Weichen_DL : Bool // Bypass zu Leerpuffer : Weichen-Datenliste fehlerhaft + Err_Undef_Weiche : Bool // Bypass zu Leerpuffer : undefinierte Weiche + Err_Weiche_belegt : Bool // Bypass zu Leerpuffer : Weiche bleibt belegt + Err_Kein_LeseErgebnis : Bool // Bypass zu Leerpuffer : Kein Ergebnis von LeseEinheit + Err_Leser_nicht_bereit : Bool // Bypass zu Leerpuffer : Leser nicht betriebsbereit + Barcode_nicht_bekannt : Bool // Bypass zu Leerpuffer : Barcode nicht in Datenbank vorhanden + Schleuse_MB4466 : Struct // Outbound (UH07): Schleuse MB4466 (Abführung Entladepuffer) + Schleuse_DL : Bool // Leerpuffer zu Bypass : Schleuse-Datenliste fehlerhaft + Undef_Schleuse : Bool // Leerpuffer zu Bypass : undefinierter Schleuse + Err_Trolley_nicht_in_Schleuse : Bool // Leerpuffer zu Bypass : Trolley fährt nicht in Schleuse + Err_Uebzeit : Bool // Leerpuffer zu Bypass : Überwachungzeit ist abgelaufen + Err_Schritt : Bool // Leerpuffer zu Bypass : Schritt-Nummer ist nicht definiert + Err_Stau_Einfahrt : Bool // Leerpuffer zu Bypass : Stau bei Bereich-Einfahrt + Err_BLKMov : Bool // Leerpuffer zu Bypass : Error bei Block kopieren + Err_Trolley_raus : Bool // Leerpuffer zu Bypass : Trolley fährt nicht aus Schleuse + Err_Raus_Sensor : Bool // Leerpuffer zu Bypass : Raus-Sensor wird nicht erreicht (oder dauernd aktiv)! + Err_Ziel : Bool // Leerpuffer zu Bypass : Trolley-Ziel nicht bekannt + Err_Weichen_DL : Bool // Leerpuffer zu Bypass : Weichen-Datenliste fehlerhaft + Err_Undef_Weiche : Bool // Leerpuffer zu Bypass : undefinierte Weiche + Err_Weiche_belegt : Bool // Leerpuffer zu Bypass : Weiche bleibt belegt + Err_Kein_LeseErgebnis : Bool // Leerpuffer zu Bypass : Kein Ergebnis von LeseEinheit + Err_Leser_nicht_bereit : Bool // Leerpuffer zu Bypass : Leser nicht betriebsbereit + Barcode_nicht_bekannt : Bool // Leerpuffer zu Bypass : Barcode nicht in Datenbank vorhanden + Schleuse_MB4503 : Struct // Outbound (UH07): Schleuse MB4503 (Vor Entladepuffer) + Schleuse_DL : Bool // Entlade-Sorter : Schleuse-Datenliste fehlerhaft + Undef_Schleuse : Bool // Entlade-Sorter : undefinierter Schleuse + Err_Trolley_nicht_in_Schleuse : Bool // Entlade-Sorter : Trolley fährt nicht in Schleuse + Err_Uebzeit : Bool // Entlade-Sorter : Überwachungzeit ist abgelaufen + Err_Schritt : Bool // Entlade-Sorter : Schritt-Nummer ist nicht definiert + Err_Stau_Einfahrt : Bool // Entlade-Sorter : Stau bei Bereich-Einfahrt + Err_BLKMov : Bool // Entlade-Sorter : Error bei Block kopieren + Err_Trolley_raus : Bool // Entlade-Sorter : Trolley fährt nicht aus Schleuse + Err_Raus_Sensor : Bool // Entlade-Sorter : Raus-Sensor wird nicht erreicht (oder dauernd aktiv)! + Err_Ziel : Bool // Entlade-Sorter : Trolley-Ziel nicht bekannt + Err_Weichen_DL : Bool // Entlade-Sorter : Weichen-Datenliste fehlerhaft + Err_Undef_Weiche : Bool // Entlade-Sorter : undefinierte Weiche + Err_Weiche_belegt : Bool // Entlade-Sorter : Weiche bleibt belegt + Err_Kein_LeseErgebnis : Bool // Entlade-Sorter : Kein Ergebnis von LeseEinheit + Err_Leser_nicht_bereit : Bool // Entlade-Sorter : Leser nicht betriebsbereit + Barcode_nicht_bekannt : Bool // Entlade-Sorter : Barcode nicht in Datenbank vorhanden + Schleuse_MB4516 : Struct // Outbound (UH07): Schleuse MB4516 (Abführung Entladepuffer) + Schleuse_DL : Bool // Entladepuffer zu Bypass : Schleuse-Datenliste fehlerhaft + Undef_Schleuse : Bool // Entladepuffer zu Bypass : undefinierter Schleuse + Err_Trolley_nicht_in_Schleuse : Bool // Entladepuffer zu Bypass : Trolley fährt nicht in Schleuse + Err_Uebzeit : Bool // Entladepuffer zu Bypass : Überwachungzeit ist abgelaufen + Err_Schritt : Bool // Entladepuffer zu Bypass : Schritt-Nummer ist nicht definiert + Err_Stau_Einfahrt : Bool // Entladepuffer zu Bypass : Stau bei Bereich-Einfahrt + Err_BLKMov : Bool // Entladepuffer zu Bypass : Error bei Block kopieren + Err_Trolley_raus : Bool // Entladepuffer zu Bypass : Trolley fährt nicht aus Schleuse + Err_Raus_Sensor : Bool // Entladepuffer zu Bypass : Raus-Sensor wird nicht erreicht (oder dauernd aktiv)! + Err_Ziel : Bool // Entladepuffer zu Bypass : Trolley-Ziel nicht bekannt + Err_Weichen_DL : Bool // Entladepuffer zu Bypass : Weichen-Datenliste fehlerhaft + Err_Undef_Weiche : Bool // Entladepuffer zu Bypass : undefinierte Weiche + Err_Weiche_belegt : Bool // Entladepuffer zu Bypass : Weiche bleibt belegt + Err_Kein_LeseErgebnis : Bool // Entladepuffer zu Bypass : Kein Ergebnis von LeseEinheit + Err_Leser_nicht_bereit : Bool // Entladepuffer zu Bypass : Leser nicht betriebsbereit + Barcode_nicht_bekannt : Bool // Entladepuffer zu Bypass : Barcode nicht in Datenbank vorhanden + Schleuse_MB4520 : Struct // Outbound (UH07): Schleuse MB4520 (Abführung Entladepuffer) + Schleuse_DL : Bool // Entladepuffer zu Bypass : Schleuse-Datenliste fehlerhaft + Undef_Schleuse : Bool // Entladepuffer zu Bypass : undefinierter Schleuse + Err_Trolley_nicht_in_Schleuse : Bool // Entladepuffer zu Bypass : Trolley fährt nicht in Schleuse + Err_Uebzeit : Bool // Entladepuffer zu Bypass : Überwachungzeit ist abgelaufen + Err_Schritt : Bool // Entladepuffer zu Bypass : Schritt-Nummer ist nicht definiert + Err_Stau_Einfahrt : Bool // Entladepuffer zu Bypass : Stau bei Bereich-Einfahrt + Err_BLKMov : Bool // Entladepuffer zu Bypass : Error bei Block kopieren + Err_Trolley_raus : Bool // Entladepuffer zu Bypass : Trolley fährt nicht aus Schleuse + Err_Raus_Sensor : Bool // Entladepuffer zu Bypass : Raus-Sensor wird nicht erreicht (oder dauernd aktiv)! + Err_Ziel : Bool // Entladepuffer zu Bypass : Trolley-Ziel nicht bekannt + Err_Weichen_DL : Bool // Entladepuffer zu Bypass : Weichen-Datenliste fehlerhaft + Err_Undef_Weiche : Bool // Entladepuffer zu Bypass : undefinierte Weiche + Err_Weiche_belegt : Bool // Entladepuffer zu Bypass : Weiche bleibt belegt + Err_Kein_LeseErgebnis : Bool // Entladepuffer zu Bypass : Kein Ergebnis von LeseEinheit + Err_Leser_nicht_bereit : Bool // Entladepuffer zu Bypass : Leser nicht betriebsbereit + Barcode_nicht_bekannt : Bool // Entladepuffer zu Bypass : Barcode nicht in Datenbank vorhanden + Schleuse_MB3275 : Struct // Outbound (UH07): Schleuse MB3275 (Abführung Vollpuffer) + Schleuse_DL : Bool // Entladepuffer zu Bypass : Schleuse-Datenliste fehlerhaft + Undef_Schleuse : Bool // Entladepuffer zu Bypass : undefinierter Schleuse + Err_Trolley_nicht_in_Schleuse : Bool // Entladepuffer zu Bypass : Trolley fährt nicht in Schleuse + Err_Uebzeit : Bool // Entladepuffer zu Bypass : Überwachungzeit ist abgelaufen + Err_Schritt : Bool // Entladepuffer zu Bypass : Schritt-Nummer ist nicht definiert + Err_Stau_Einfahrt : Bool // Entladepuffer zu Bypass : Stau bei Bereich-Einfahrt + Err_BLKMov : Bool // Entladepuffer zu Bypass : Error bei Block kopieren + Err_Trolley_raus : Bool // Entladepuffer zu Bypass : Trolley fährt nicht aus Schleuse + Err_Raus_Sensor : Bool // Entladepuffer zu Bypass : Raus-Sensor wird nicht erreicht (oder dauernd aktiv)! + Err_Ziel : Bool // Entladepuffer zu Bypass : Trolley-Ziel nicht bekannt + Err_Weichen_DL : Bool // Entladepuffer zu Bypass : Weichen-Datenliste fehlerhaft + Err_Undef_Weiche : Bool // Entladepuffer zu Bypass : undefinierte Weiche + Err_Weiche_belegt : Bool // Entladepuffer zu Bypass : Weiche bleibt belegt + Err_Kein_LeseErgebnis : Bool // Entladepuffer zu Bypass : Kein Ergebnis von LeseEinheit + Err_Leser_nicht_bereit : Bool // Entladepuffer zu Bypass : Leser nicht betriebsbereit + Barcode_nicht_bekannt : Bool // Entladepuffer zu Bypass : Barcode nicht in Datenbank vorhanden + Schleuse_MB3342 : Struct // Outbound (UH07): Schleuse MB3342 (vor Sackbeladung) + Schleuse_DL : Bool // Entladepuffer zu Bypass : Schleuse-Datenliste fehlerhaft + Undef_Schleuse : Bool // Entladepuffer zu Bypass : undefinierter Schleuse + Err_Trolley_nicht_in_Schleuse : Bool // Entladepuffer zu Bypass : Trolley fährt nicht in Schleuse + Err_Uebzeit : Bool // Entladepuffer zu Bypass : Überwachungzeit ist abgelaufen + Err_Schritt : Bool // Entladepuffer zu Bypass : Schritt-Nummer ist nicht definiert + Err_Stau_Einfahrt : Bool // Entladepuffer zu Bypass : Stau bei Bereich-Einfahrt + Err_BLKMov : Bool // Entladepuffer zu Bypass : Error bei Block kopieren + Err_Trolley_raus : Bool // Entladepuffer zu Bypass : Trolley fährt nicht aus Schleuse + Err_Raus_Sensor : Bool // Entladepuffer zu Bypass : Raus-Sensor wird nicht erreicht (oder dauernd aktiv)! + Err_Ziel : Bool // Entladepuffer zu Bypass : Trolley-Ziel nicht bekannt + Err_Weichen_DL : Bool // Entladepuffer zu Bypass : Weichen-Datenliste fehlerhaft + Err_Undef_Weiche : Bool // Entladepuffer zu Bypass : undefinierte Weiche + Err_Weiche_belegt : Bool // Entladepuffer zu Bypass : Weiche bleibt belegt + Err_Kein_LeseErgebnis : Bool // Entladepuffer zu Bypass : Kein Ergebnis von LeseEinheit + Err_Leser_nicht_bereit : Bool // Entladepuffer zu Bypass : Leser nicht betriebsbereit + Barcode_nicht_bekannt : Bool // Entladepuffer zu Bypass : Barcode nicht in Datenbank vorhanden + Schleuse_MB3325 : Struct // Outbound (UH07): Schleuse MB3342 (Abführung Leerpuffer) + Schleuse_DL : Bool // Hinter Trolly-Beladung : Schleuse-Datenliste fehlerhaft + Undef_Schleuse : Bool // Hinter Trolly-Beladung : undefinierter Schleuse + Err_Trolley_nicht_in_Schleuse : Bool // Hinter Trolly-Beladung : Trolley fährt nicht in Schleuse + Err_Uebzeit : Bool // Hinter Trolly-Beladung : Überwachungzeit ist abgelaufen + Err_Schritt : Bool // Hinter Trolly-Beladung : Schritt-Nummer ist nicht definiert + Err_Stau_Einfahrt : Bool // Hinter Trolly-Beladung : Stau bei Bereich-Einfahrt + Err_BLKMov : Bool // Hinter Trolly-Beladung : Error bei Block kopieren + Err_Trolley_raus : Bool // Hinter Trolly-Beladung : Trolley fährt nicht aus Schleuse + Err_Raus_Sensor : Bool // Hinter Trolly-Beladung : Raus-Sensor wird nicht erreicht (oder dauernd aktiv)! + Err_Ziel : Bool // Hinter Trolly-Beladung : Trolley-Ziel nicht bekannt + Err_Weichen_DL : Bool // Hinter Trolly-Beladung : Weichen-Datenliste fehlerhaft + Err_Undef_Weiche : Bool // Hinter Trolly-Beladung : undefinierte Weiche + Err_Weiche_belegt : Bool // Hinter Trolly-Beladung : Weiche bleibt belegt + Err_Kein_LeseErgebnis : Bool // Hinter Trolly-Beladung : Kein Ergebnis von LeseEinheit + Err_Leser_nicht_bereit : Bool // Hinter Trolly-Beladung : Leser nicht betriebsbereit + Barcode_nicht_bekannt : Bool // Hinter Trolly-Beladung : Barcode nicht in Datenbank vorhanden + Schleuse_MB4512 : Struct // Outbound (UH07): Schleuse MB4512 (Abführung Entladepuffer) + Schleuse_DL : Bool // Entladepuffer zu Bypass : Schleuse-Datenliste fehlerhaft + Undef_Schleuse : Bool // Entladepuffer zu Bypass : undefinierter Schleuse + Err_Trolley_nicht_in_Schleuse : Bool // Entladepuffer zu Bypass : Trolley fährt nicht in Schleuse + Err_Uebzeit : Bool // Entladepuffer zu Bypass : Überwachungzeit ist abgelaufen + Err_Schritt : Bool // Entladepuffer zu Bypass : Schritt-Nummer ist nicht definiert + Err_Stau_Einfahrt : Bool // Entladepuffer zu Bypass : Stau bei Bereich-Einfahrt + Err_BLKMov : Bool // Entladepuffer zu Bypass : Error bei Block kopieren + Err_Trolley_raus : Bool // Entladepuffer zu Bypass : Trolley fährt nicht aus Schleuse + Err_Raus_Sensor : Bool // Entladepuffer zu Bypass : Raus-Sensor wird nicht erreicht (oder dauernd aktiv)! + Err_Ziel : Bool // Entladepuffer zu Bypass : Trolley-Ziel nicht bekannt + Err_Weichen_DL : Bool // Entladepuffer zu Bypass : Weichen-Datenliste fehlerhaft + Err_Undef_Weiche : Bool // Entladepuffer zu Bypass : undefinierte Weiche + Err_Weiche_belegt : Bool // Entladepuffer zu Bypass : Weiche bleibt belegt + Err_Kein_LeseErgebnis : Bool // Entladepuffer zu Bypass : Kein Ergebnis von LeseEinheit + Err_Leser_nicht_bereit : Bool // Entladepuffer zu Bypass : Leser nicht betriebsbereit + Barcode_nicht_bekannt : Bool // Entladepuffer zu Bypass : Barcode nicht in Datenbank vorhanden + Schleuse_MB4532 : Struct // Outbound (UH07): Schleuse MB4532 (Abführung Entladepuffer) + Schleuse_DL : Bool // Entladepuffer zu Bypass : Schleuse-Datenliste fehlerhaft + Undef_Schleuse : Bool // Entladepuffer zu Bypass : undefinierter Schleuse + Err_Trolley_nicht_in_Schleuse : Bool // Entladepuffer zu Bypass : Trolley fährt nicht in Schleuse + Err_Uebzeit : Bool // Entladepuffer zu Bypass : Überwachungzeit ist abgelaufen + Err_Schritt : Bool // Entladepuffer zu Bypass : Schritt-Nummer ist nicht definiert + Err_Stau_Einfahrt : Bool // Entladepuffer zu Bypass : Stau bei Bereich-Einfahrt + Err_BLKMov : Bool // Entladepuffer zu Bypass : Error bei Block kopieren + Err_Trolley_raus : Bool // Entladepuffer zu Bypass : Trolley fährt nicht aus Schleuse + Err_Raus_Sensor : Bool // Entladepuffer zu Bypass : Raus-Sensor wird nicht erreicht (oder dauernd aktiv)! + Err_Ziel : Bool // Entladepuffer zu Bypass : Trolley-Ziel nicht bekannt + Err_Weichen_DL : Bool // Entladepuffer zu Bypass : Weichen-Datenliste fehlerhaft + Err_Undef_Weiche : Bool // Entladepuffer zu Bypass : undefinierte Weiche + Err_Weiche_belegt : Bool // Entladepuffer zu Bypass : Weiche bleibt belegt + Err_Kein_LeseErgebnis : Bool // Entladepuffer zu Bypass : Kein Ergebnis von LeseEinheit + Err_Leser_nicht_bereit : Bool // Entladepuffer zu Bypass : Leser nicht betriebsbereit + Barcode_nicht_bekannt : Bool // Entladepuffer zu Bypass : Barcode nicht in Datenbank vorhanden + Schleuse_MB4217 : Struct // Outbound (UH07): Schleuse MB4200 (Vor RFID-Gate) + Schleuse_DL : Bool // Highway zu Bypass : Schleuse-Datenliste fehlerhaft + Undef_Schleuse : Bool // Highway zu Bypass : undefinierter Schleuse + Err_Trolley_nicht_in_Schleuse : Bool // Highway zu Bypass : Trolley fährt nicht in Schleuse + Err_Uebzeit : Bool // Highway zu Bypass : Überwachungzeit ist abgelaufen + Err_Schritt : Bool // Highway zu Bypass : Schritt-Nummer ist nicht definiert + Err_Stau_Einfahrt : Bool // Highway zu Bypass : Stau bei Bereich-Einfahrt + Err_BLKMov : Bool // Highway zu Bypass : Error bei Block kopieren + Err_Trolley_raus : Bool // Highway zu Bypass : Trolley fährt nicht aus Schleuse + Err_Raus_Sensor : Bool // Highway zu Bypass : Raus-Sensor wird nicht erreicht (oder dauernd aktiv)! + Err_Ziel : Bool // Highway zu Bypass : Trolley-Ziel nicht bekannt + Err_Weichen_DL : Bool // Highway zu Bypass : Weichen-Datenliste fehlerhaft + Err_Undef_Weiche : Bool // Highway zu Bypass : undefinierte Weiche + Err_Weiche_belegt : Bool // Highway zu Bypass : Weiche bleibt belegt + Err_Kein_LeseErgebnis : Bool // Highway zu Bypass : Kein Ergebnis von LeseEinheit + Err_Leser_nicht_bereit : Bool // Highway zu Bypass : Leser nicht betriebsbereit + Barcode_nicht_bekannt : Bool // Highway zu Bypass : Barcode nicht in Datenbank vorhanden + Schleuse_MB4522 : Struct // Outbound (UH07): Schleuse MB4522 (Abführung Entladepuffer) + Schleuse_DL : Bool // Entladepuffer zu Bypass : Schleuse-Datenliste fehlerhaft + Undef_Schleuse : Bool // Entladepuffer zu Bypass : undefinierter Schleuse + Err_Trolley_nicht_in_Schleuse : Bool // Entladepuffer zu Bypass : Trolley fährt nicht in Schleuse + Err_Uebzeit : Bool // Entladepuffer zu Bypass : Überwachungzeit ist abgelaufen + Err_Schritt : Bool // Entladepuffer zu Bypass : Schritt-Nummer ist nicht definiert + Err_Stau_Einfahrt : Bool // Entladepuffer zu Bypass : Stau bei Bereich-Einfahrt + Err_BLKMov : Bool // Entladepuffer zu Bypass : Error bei Block kopieren + Err_Trolley_raus : Bool // Entladepuffer zu Bypass : Trolley fährt nicht aus Schleuse + Err_Raus_Sensor : Bool // Entladepuffer zu Bypass : Raus-Sensor wird nicht erreicht (oder dauernd aktiv)! + Err_Ziel : Bool // Entladepuffer zu Bypass : Trolley-Ziel nicht bekannt + Err_Weichen_DL : Bool // Entladepuffer zu Bypass : Weichen-Datenliste fehlerhaft + Err_Undef_Weiche : Bool // Entladepuffer zu Bypass : undefinierte Weiche + Err_Weiche_belegt : Bool // Entladepuffer zu Bypass : Weiche bleibt belegt + Err_Kein_LeseErgebnis : Bool // Entladepuffer zu Bypass : Kein Ergebnis von LeseEinheit + Err_Leser_nicht_bereit : Bool // Entladepuffer zu Bypass : Leser nicht betriebsbereit + Barcode_nicht_bekannt : Bool // Entladepuffer zu Bypass : Barcode nicht in Datenbank vorhanden + Schleuse_MB4463 : Struct // Outbound (UH07): Schleuse MB4463 (Abführung Entladepuffer) + Schleuse_DL : Bool // Entladepuffer zu Bypass : Schleuse-Datenliste fehlerhaft + Undef_Schleuse : Bool // Entladepuffer zu Bypass : undefinierter Schleuse + Err_Trolley_nicht_in_Schleuse : Bool // Entladepuffer zu Bypass : Trolley fährt nicht in Schleuse + Err_Uebzeit : Bool // Entladepuffer zu Bypass : Überwachungzeit ist abgelaufen + Err_Schritt : Bool // Entladepuffer zu Bypass : Schritt-Nummer ist nicht definiert + Err_Stau_Einfahrt : Bool // Entladepuffer zu Bypass : Stau bei Bereich-Einfahrt + Err_BLKMov : Bool // Entladepuffer zu Bypass : Error bei Block kopieren + Err_Trolley_raus : Bool // Entladepuffer zu Bypass : Trolley fährt nicht aus Schleuse + Err_Raus_Sensor : Bool // Entladepuffer zu Bypass : Raus-Sensor wird nicht erreicht (oder dauernd aktiv)! + Err_Ziel : Bool // Entladepuffer zu Bypass : Trolley-Ziel nicht bekannt + Err_Weichen_DL : Bool // Entladepuffer zu Bypass : Weichen-Datenliste fehlerhaft + Err_Undef_Weiche : Bool // Entladepuffer zu Bypass : undefinierte Weiche + Err_Weiche_belegt : Bool // Entladepuffer zu Bypass : Weiche bleibt belegt + Err_Kein_LeseErgebnis : Bool // Entladepuffer zu Bypass : Kein Ergebnis von LeseEinheit + Err_Leser_nicht_bereit : Bool // Entladepuffer zu Bypass : Leser nicht betriebsbereit + Barcode_nicht_bekannt : Bool // Entladepuffer zu Bypass : Barcode nicht in Datenbank vorhanden + Schleuse_MB3345 : Struct // Outbound (UH07): Schleuse MB3345 (Abführung Leerpuffer) + Schleuse_DL : Bool // Hinter Trolly-Beladung : Schleuse-Datenliste fehlerhaft + Undef_Schleuse : Bool // Hinter Trolly-Beladung : undefinierter Schleuse + Err_Trolley_nicht_in_Schleuse : Bool // Hinter Trolly-Beladung : Trolley fährt nicht in Schleuse + Err_Uebzeit : Bool // Hinter Trolly-Beladung : Überwachungzeit ist abgelaufen + Err_Schritt : Bool // Hinter Trolly-Beladung : Schritt-Nummer ist nicht definiert + Err_Stau_Einfahrt : Bool // Hinter Trolly-Beladung : Stau bei Bereich-Einfahrt + Err_BLKMov : Bool // Hinter Trolly-Beladung : Error bei Block kopieren + Err_Trolley_raus : Bool // Hinter Trolly-Beladung : Trolley fährt nicht aus Schleuse + Err_Raus_Sensor : Bool // Hinter Trolly-Beladung : Raus-Sensor wird nicht erreicht (oder dauernd aktiv)! + Err_Ziel : Bool // Hinter Trolly-Beladung : Trolley-Ziel nicht bekannt + Err_Weichen_DL : Bool // Hinter Trolly-Beladung : Weichen-Datenliste fehlerhaft + Err_Undef_Weiche : Bool // Hinter Trolly-Beladung : undefinierte Weiche + Err_Weiche_belegt : Bool // Hinter Trolly-Beladung : Weiche bleibt belegt + Err_Kein_LeseErgebnis : Bool // Hinter Trolly-Beladung : Kein Ergebnis von LeseEinheit + Err_Leser_nicht_bereit : Bool // Hinter Trolly-Beladung : Leser nicht betriebsbereit + Barcode_nicht_bekannt : Bool // Hinter Trolly-Beladung : Barcode nicht in Datenbank vorhanden + Frei750 : Array[1..81] of Word diff --git a/=A01+UH07-KF00/Programmbausteine/_All/CYC_INT8_(10ms).awl b/=A01+UH07-KF00/Programmbausteine/_All/CYC_INT8_(10ms).awl new file mode 100644 index 0000000..37e4987 --- /dev/null +++ b/=A01+UH07-KF00/Programmbausteine/_All/CYC_INT8_(10ms).awl @@ -0,0 +1,68 @@ +=== OB 35: CYC_INT8_(10ms) [STL] === +INTERFACE: + Temp: + OB35_EV_CLASS : Byte // Bits 0-3 = 1 (Coming event), Bits 4-7 = 1 (Event class 1) + OB35_STRT_INF : Byte // 16#36 (OB 35 has started) + OB35_PRIORITY : Byte // Priority of OB Execution + OB35_OB_NUMBR : Byte // 35 (Organization block 35, OB35) + OB35_RESERVED_1 : Byte // Reserved for system + OB35_RESERVED_2 : Byte // Reserved for system + OB35_PHASE_OFFSET : Word // Phase offset (msec) + OB35_RESERVED_3 : Int // Reserved for system + OB35_EXC_FREQ : Int // Frequency of execution (msec) + OB35_DATE_TIME : Date_And_Time // Date and time OB35 started + Save1 : DInt + Save2 : DInt + Constant: + +--- NW 1: AR1 und AR2 sichern --- + TAR1 + T Save1 + TAR2 + T Save2 + + +--- NW 2: Sensoren mit kurzen Imuls --- +// / L "PEB112":P +// / T "PEB112" +// / U "TascheOK_M0051" +// / S "DBereich"."Fast-Sensors".B1123 + + +--- NW 3: 10ms Impuls --- + L "MW38" + + 1 // 10ms-Takte aufaddieren + T "MW38" + + CLR + CU "Z35" + + SET + CU "Z35" + + L "Z35" + L 10 + Vollpuffer --- +CALL FC "HWtoOB_Bereich" + + +--- NW 14: 1_Vollpuffer --- +CALL FC "VP_Bereich" + + +--- NW 15: 2_Vollpuffer > Entnahmepuffer --- +CALL FC "VPtoEP_Bereich" + + +--- NW 16: 3_Entnahmepuffer --- +CALL FC "EP_Bereich" + + +--- NW 17: 4_ Entnahmepuffer > Leerpuffer --- +CALL FC "EPtoLP_Bereich" + + +--- NW 18: 5_Leerpuffer --- + L "DLLeerPuffer_ausfahren".Datenlistenkopf.AnzahlEintraege + L 4 // Falls mehr oder gleich Puffer zum Ausfahren, dann kein Saugmodus + T "DLeerPufferStrecken".SaugModus.Ok_Anzahl + + L "DLLeerPuffer_leer".Datenlistenkopf.AnzahlEintraege + L 1 // Falls mehr oder gleich Leerpuffer, dann kein Durchfahrmodus + T "DLeerPufferStrecken".DurchfahrModus.Ok_Anzahl + +CALL FC "LP_Bereich" + + +--- NW 19: 6_Leerpuffer > Highway --- +CALL FC "LPtoHW_Bereich" + + +--- NW 20: Visu-Zeug --- +CALL FB "Visu_Sorter_Rein" , + +CALL FB "Visu_Weiche_Sorter" , + +CALL FB "Visu_StartSync_Visu" , + +CALL FB "Visu_HMOmniSchleuse" , + +CALL FB "Visu_HMOmniSchleuse_Plus" , + +CALL FB "Visu_HMOmniBereich_Plus" , + +CALL FB "Visu_HMOmniWeiche_Plus" , + +CALL FB "Visu_HMVollPuffer" , + +CALL FB "Visu_HMLeerPuffer" , + +CALL FB "Visu_CheckTrolley" , + + +--- NW 21: Lampentest --- +CALL FC "LTest" + + +--- NW 22: Ausgang ansteuern --- + A "Clock_0.5Hz" + = "M1000.0" + +CALL FC "Set_Output" (Enable:="M1000.1", Status:="M1000.0", OutByte:="MD1002", OutBit:="MW1006") + + +--- NW 23: Daten an UH06/AMR senden --- + A "DSchnittstelle_zu_AMR".To_UH06.MA0203_A_vor + = "INTERFACE_TO_UH06_Byte1.x0" + A "DSchnittstelle_zu_AMR".To_UH06.MA0203_A_start + = "INTERFACE_TO_UH06_Byte1.x1" + A "DSchnittstelle_zu_AMR".To_UH06.MA0200_kein_Stau + = "INTERFACE_TO_UH06_Byte1.x2" + A "DSchnittstelle_zu_AMR".To_UH06.MA0200_aktiv + = "INTERFACE_TO_UH06_Byte1.x3" + A "DSchnittstelle_zu_AMR".To_UH06.BG3724_aktiv + = "INTERFACE_TO_UH06_Byte1.x4" + + +--- NW 24: Daten an Host senden --- +CALL FB "Daten_Host_senden" , + + +--- NW 25: Ende --- + BE + + +--- NW 26: Daten in SendFifo schreiben --- + A "M83.1" + R "M83.1" + JCN nix + +CALL FB "Daten_in_SendFIFO_speichern" , (TelegrammKennung[1]:='B', TelegrammKennung[2]:='2', TelegrammKennung[3]:='C', TelegrammKennung[4]:='D', TelegrammKennung[5]:='E', TelegrammKennung[6]:='F', TelegrammKennung[7]:='G', TelegrammKennung[8]:='I', TelegrammKennung[9]:='J', TelegrammKennung[10]:='K', TrolleyID:=DINT#4711, StationsNr:=13, Puffer_LinienNr:=7, StoreGroup:=DINT#0815, Status_1_Int:=83, Status_2_Bit[0]:=1, Status_2_Bit[1]:=0, Status_2_Bit[2]:=1, Status_2_Bit[3]:=0, Status_2_Bit[4]:=1, Status_2_Bit[5]:=0, Status_2_Bit[6]:=1, Status_2_Bit[7]:=1, Reserve[1]_Int:=62, Reserve[2]_Int:=63, Port:=2, Ret_Val_FIFO_IN:="MB199", Error:="M83.0") + +nix: NOP 0 + + +--- NW 27: Test mit DL1000 --- + L "DLPtoHW_OmniFahren".Schleuse_3323.Dyn.TrolleyID_Schleuse + + A "M83.0" + R "M83.0" + JCN more + +CALL FC "Trolleydaten_löschen" (Gesamt_Trolley_DL:=1000, TrolleyID:="DLPtoHW_OmniFahren".Schleuse_3323.Dyn.TrolleyID_Schleuse) + +more: A "M83.1" + R "M83.1" + JCN ready + +CALL FC "Trolleydaten_neu_anlegen" (Gesamt_Trolley_DL:=1000, TrolleyID:="DLPtoHW_OmniFahren".Schleuse_3323.Dyn.TrolleyID_Schleuse, Endziel:=16#B000, ShopGroup:=DINT#-1) + +CALL FC "Trolley_DL_Neue_Pos" (Gesamt_Trolley_DL:=1000, TrolleyID:="DLPtoHW_OmniFahren".Schleuse_3323.Dyn.TrolleyID_Schleuse, Position:=16#3323, ShopGroup:=-1, Err:="M199.0") + + +ready: NOP 0 + + + BEU + + +--- NW 28: Eingang ansteuern --- +CALL FC "Set_Input" (Enable:="M2000.1", Status:="M2000.0", InByte:="MD2002", InBit:="MW2006") + + +--- NW 29: Ausgang ansteuern --- + A "Clock_1Hz" + = "M1000.0" + +CALL FC "Set_Output" (Enable:="M1000.1", Status:="M1000.0", OutByte:="MD1002", OutBit:="MW1006") + + +--- NW 30: Teachen Sorter LP --- +// Nach Teach-Ergebnis anhalten !: + L "DLP_Sorter".Sync_BG3306.Abstands_Ink + L DINT#0 + <>D + A "DLP_Sorter".Sync_BG3306.Dyn.Status.TeachModus_Aktiv + A "DLP_Sorter".Sync_BG3306.Dyn.Status.MoreTeach + A "M900.0" + R "M900.0" + + A "M900.0" + AN "DLP_Sorter".Sync_BG3306.Dyn.Error.Keine_TeachPktdaten + = "MB3305" + = "MA0064" // Zusätzlich im Lastbaustein EP>LP_Antriebe, da Aufruf vor Sorter-FB + + +--- NW 31: Teachen Sorter EP --- +// Nach Teach-Ergebnis anhalten !: + L "DEP_Sorter".Sync_BG4527.Abstands_Ink + L DINT#0 + <>D + A "DEP_Sorter".Sync_BG4527.Dyn.Status.TeachModus_Aktiv + A "DEP_Sorter".Sync_BG4527.Dyn.Status.MoreTeach + A "M902.0" + R "M902.0" + + A "M902.0" + AN "DEP_Sorter".Sync_BG4527.Dyn.Error.Keine_TeachPktdaten + = "MB4503" + = "MA0325" // Zusätzlich im Lastbaustein VP>EP_Antriebe, da Aufruf vor Sorter-FB + + +--- NW 32: Teachen Sorter VP A --- +// Nach Teach-Ergebnis anhalten !: + L "DVP_Sorter_A".Sync_BG3120.Abstands_Ink + L DINT#0 + <>D + A "DVP_Sorter_A".Sync_BG3120.Dyn.Status.TeachModus_Aktiv + A "DVP_Sorter_A".Sync_BG3120.Dyn.Status.MoreTeach + A "M901.1" + R "M901.1" + + A "M901.1" + AN "DVP_Sorter_A".Sync_BG3120.Dyn.Error.Keine_TeachPktdaten + = "MB3121" + = "MA0144" + = "MA0145" + = "MA0152" + + +--- NW 33: Teachen Sorter VP B --- +// Nach Teach-Ergebnis anhalten !: + L "DVP_Sorter_B".Sync_BG3003.Abstands_Ink + L DINT#0 + <>D + A "DVP_Sorter_B".Sync_BG3003.Dyn.Status.TeachModus_Aktiv + A "DVP_Sorter_B".Sync_BG3003.Dyn.Status.MoreTeach + A "M901.2" + R "M901.2" + + A "M901.2" + AN "DVP_Sorter_B".Sync_BG3003.Dyn.Error.Keine_TeachPktdaten + = "MA0146" + = "MA0145" + diff --git a/=A01+UH07-KF00/Programmbausteine/_All/LTest.awl b/=A01+UH07-KF00/Programmbausteine/_All/LTest.awl new file mode 100644 index 0000000..45bb440 --- /dev/null +++ b/=A01+UH07-KF00/Programmbausteine/_All/LTest.awl @@ -0,0 +1,194 @@ +=== FC 1016: LTest [STL] === +INTERFACE: + Input: + Output: + InOut: + Temp: + Constant: + Return: + Ret_Val : Void + +--- NW 1: Anzeigen Anlage ausschalten ? --- + A "DOutbound_Bereich".A01_UH07.AnlageEin + JC Nw02 + +// Anzeigen ausschalten: + SET + R "PF0000" + R "PF0001" + R "PF0002" + R "PF0003" + R "PF0004" + R "PF0005" +// R "PF0006" //Feueralarm +// R "PF0030" //Not-Aus + R "PF0031" + R "PF0032" + R "PF0033" + R "PF0034" + R "PF0040" + R "PF0041" + R "PF0042" + R "PF0043" + R "PF0044" + R "PF0045" + R "PF0046" + R "PF0100" + R "PF0101" + R "PF0102" + R "PF0117" + R "PF0100" + R "PF0101" + R "PF0102" + R "PF0120" + R "PF0121" + R "PF0122" + R "PF0123" + R "PF0124" + R "PF0125" + R "PF0126" + R "PF0127" + R "PF0130" + R "PF0131" + R "PF0132" + R "PF0133" + R "PF0134" + R "PF0135" + R "PF0136" + R "PF0160" + R "PF0161" + R "PF0162" + R "PF0177" + R "PF0180" + R "PF0181" + R "PF0182" + R "PF0183" + R "PF0220" + R "PF0221" + R "PF0222" + R "PF0237" + R "PF0240" + R "PF0241" + R "PF0242" + R "PF0243" + R "PF0244" + R "PF0245" + R "PF0280" + R "PF0281" + R "PF0282" + R "PF0297" + R "PF0300" + R "PF0301" + R "PF0302" + R "PF0303" + R "PF0304" + R "PF0305" + + +--- NW 2: + --- +// Einschalten: +Nw02: A "SF0003" + AN "SGes".Lampentest_aktiv + AN "SGes".I_Lampentest_aktiv // Tastensperre + S "SGes".I_Lampentest_aktiv + S "SGes".Lampentest_aktiv + + AN "SF0003" + R "SGes".I_Lampentest_aktiv // Tastensperre + +// Ausschalten: + A "SF0003" + AN "SGes".I_Lampentest_aktiv // Tastensperre + A "SGes".Lampentest_aktiv + S "SGes".I_Lampentest_aktiv + R "SGes".Lampentest_aktiv + +// Lampentest zeitlang aktiv: + A "SGes".Lampentest_aktiv // Automatisch ausschalten + L S5T#5M // 5min + OnDelay "T16" + A "T16" // Nach 5min automatisch ausschalten + R "SGes".Lampentest_aktiv + + AN "SGes".Lampentest_aktiv + BEC + +// Anzeigen einschalten: + A "SF0003" + = "PF0034" + + SET + S "PF0000" + S "PF0001" + S "PF0002" + S "PF0003" + S "PF0004" + S "PF0005" + S "PF0006" + S "PF0030" + S "PF0031" + S "PF0032" + S "PF0033" + S "PF0040" + S "PF0041" + S "PF0042" + S "PF0043" + S "PF0044" + S "PF0045" + S "PF0046" + S "PF0100" + S "PF0101" + S "PF0102" + S "PF0117" + S "PF0100" + S "PF0101" + S "PF0102" + S "PF0120" + S "PF0121" + S "PF0122" + S "PF0123" + S "PF0124" + S "PF0125" + S "PF0126" + S "PF0127" + S "PF0130" + S "PF0131" + S "PF0132" + S "PF0133" + S "PF0134" + S "PF0135" + S "PF0136" + S "PF0160" + S "PF0161" + S "PF0162" + S "PF0177" + S "PF0180" + S "PF0181" + S "PF0182" + S "PF0183" + S "PF0220" + S "PF0221" + S "PF0222" + S "PF0237" + S "PF0240" + S "PF0241" + S "PF0242" + S "PF0243" + S "PF0244" + S "PF0245" + S "PF0280" + S "PF0281" + S "PF0282" + S "PF0297" + S "PF0300" + S "PF0301" + S "PF0302" + S "PF0303" + S "PF0304" + S "PF0305" + + +--- NW 3: Ende --- + BE + diff --git a/=A01+UH07-KF00/Programmbausteine/_All/SGes.awl b/=A01+UH07-KF00/Programmbausteine/_All/SGes.awl new file mode 100644 index 0000000..07ae6a3 --- /dev/null +++ b/=A01+UH07-KF00/Programmbausteine/_All/SGes.awl @@ -0,0 +1,25 @@ +=== GlobalDB 9: SGes [DB] === +INTERFACE: + Static: + DATE_TIME : "UDate+Time" + Resetaktiv : Bool // Reset ist aktiv + Lampentest_aktiv : Bool // Lampentest ist aktiv + I_Lampentest_aktiv : Bool // Flanke + FpTasterAnlageEin : Bool // Flankenmerker Taster Anlage Ein + AnlageEinHupe : Bool // Vor Anlage Ein Hupe aktivieren + AnlageEinStartOk : Bool // Anlage kann jetzt Eingeschaltet werden + ErrorAnzeige : Bool // Störung zum Anzeigen vorhanden + PC_AnlageAus : Bool // Anlage über PC ausschalten + Ohne_PC_Fahren : Bool // Inbetriebnahme: Ohne PC fahren + Neustart : Bool // SPS wurde neu eingeschaltet + Simulation_ohne_HW_aktiv : Bool // Test auf Simulations-SPS + Test_Multiuser : Bool + IDX : DInt // SPS-Nr. für BT ind MT + Zyklen : Struct + Zyklus1 : Bool // Zyklus 1 aktiv + Zyklus2 : Bool // Zyklus 1 aktiv + Zyklus3 : Bool // Zyklus 1 aktiv + Zyklus4 : Bool // Zyklus 1 aktiv + Zyklus5 : Bool // Zyklus 1 aktiv + Zyklus6 : Bool // Zyklus 1 aktiv + Zyklus7 : Bool // Zyklus 1 aktiv diff --git a/=A01+UH07-KF00/Programmbausteine/_All/Startup.awl b/=A01+UH07-KF00/Programmbausteine/_All/Startup.awl new file mode 100644 index 0000000..5f29c85 --- /dev/null +++ b/=A01+UH07-KF00/Programmbausteine/_All/Startup.awl @@ -0,0 +1,41 @@ +=== OB 100: Startup [STL] === +INTERFACE: + Input: + LostRetentive : Bool // True if retentive data are lost + LostRTC : Bool // True if date and time are lost + Temp: + Constant: + +--- NW 1: Neustart --- + SET + R "DOutbound_Bereich".A01_UH07.AnlageEin + S "SGes".Neustart + + SET + R "DOutbound_Bereich".A01_UH07.Not_Aus.UH07 // Bei Neustart alle Not-Aus löschen! + R "DOutbound_Bereich".A01_UH07.Not_Aus.UC071 + R "DOutbound_Bereich".A01_UH07.Not_Aus.UC073 + R "DOutbound_Bereich".A01_UH07.Not_Aus.UZ0701 + R "DOutbound_Bereich".A01_UH07.Not_Aus.UZ0702 + R "DOutbound_Bereich".A01_UH07.Not_Aus.UZ0703 + R "DOutbound_Bereich".A01_UH07.Not_Aus.UZ7101 + R "DOutbound_Bereich".A01_UH07.Not_Aus.UZ7102 + R "DOutbound_Bereich".A01_UH07.Not_Aus.UZ7103 + R "DOutbound_Bereich".A01_UH07.Not_Aus.UZ7104 + R "DOutbound_Bereich".A01_UH07.Not_Aus.UZ7105 + R "DOutbound_Bereich".A01_UH07.Not_Aus.UZ7106 + R "DOutbound_Bereich".A01_UH07.Not_Aus.UZ7107 + R "DOutbound_Bereich".A01_UH07.Not_Aus.UZ7301 + R "DOutbound_Bereich".A01_UH07.Not_Aus.UZ7302 + R "DOutbound_Bereich".A01_UH07.Not_Aus.UZ7303 + R "DOutbound_Bereich".A01_UC072.Not_Aus.UC072 + R "DOutbound_Bereich".A01_UC072.Not_Aus.UZ7201 + R "DOutbound_Bereich".A01_UC072.Not_Aus.UZ7202 + R "DOutbound_Bereich".A01_UC074.Not_Aus.UC074 + R "DOutbound_Bereich".A01_UC074.Not_Aus.UZ7401 + R "DOutbound_Bereich".A01_UC074.Not_Aus.UZ7402 + + +--- NW 2: Ende --- + BE + diff --git a/=A01+UH07-KF00/Programmbausteine/xBaseSystemLib/DB_Test.awl b/=A01+UH07-KF00/Programmbausteine/xBaseSystemLib/DB_Test.awl new file mode 100644 index 0000000..b09e869 --- /dev/null +++ b/=A01+UH07-KF00/Programmbausteine/xBaseSystemLib/DB_Test.awl @@ -0,0 +1,9 @@ +=== GlobalDB 7: DB_Test [DB] === +INTERFACE: + Static: + Static_1 : "UDT_Telegram_BReqM" + Static_2 : "UDT_Telegram_BRRespM" + Static_3 : "UDT_Telegram_BSRespM" + Static_4 : "UDT_Telegram_GOHDReqM" + Static_5 : "UDT_Telegram_GOHDRespM" + Static_6 : "UDT_Telegram_GOHDUM" diff --git a/=A01+UH07-KF00/Programmbausteine/xBaseSystemLib/GDBs/100_Common/DB_AlarmGlobal.awl b/=A01+UH07-KF00/Programmbausteine/xBaseSystemLib/GDBs/100_Common/DB_AlarmGlobal.awl new file mode 100644 index 0000000..544fe72 --- /dev/null +++ b/=A01+UH07-KF00/Programmbausteine/xBaseSystemLib/GDBs/100_Common/DB_AlarmGlobal.awl @@ -0,0 +1,8 @@ +=== GlobalDB 12: DB_AlarmGlobal [DB] === +INTERFACE: + Static: + nAlarmNoOffsetGlobal : UInt := 10 + nAlarmNoStep : UInt := 5 + nAlarmPrioGlobal : USInt := 15 + xAlarmReOrg : Bool + xAlarmReOrgNextStep : Bool diff --git a/=A01+UH07-KF00/Programmbausteine/xBaseSystemLib/GDBs/100_Common/DB_MachineGlobal.awl b/=A01+UH07-KF00/Programmbausteine/xBaseSystemLib/GDBs/100_Common/DB_MachineGlobal.awl new file mode 100644 index 0000000..21301ec --- /dev/null +++ b/=A01+UH07-KF00/Programmbausteine/xBaseSystemLib/GDBs/100_Common/DB_MachineGlobal.awl @@ -0,0 +1,22 @@ +=== GlobalDB 4: DB_MachineGlobal [DB] === +INTERFACE: + Static: + nMachineMode : Int // Eingang um Simulationslevel festzulegen. Kann verwendet werden, um Eingangssignale zu simulieren + nLogicCycle : UInt + nPrevCycle : DInt + sMachine-Name : String[20] // Name of the Machine + sFL-Name : String[20] // Name of Production Line + sFactory : String[20] // Place of the Factory + xCold_Restart : Bool // (Cold restart scan 1 of OB 1) + xAlwaysFalse : Bool := FALSE // Always FALSE + xAlwaysTrue : Bool := TRUE // Always TRUE + nHourCounter : Int // Betriebsstundenzähler für Automatikbetrieb + xIBN : Bool // Inbetriebnahme aktiv + xSoftwareReset : Bool // Software Reset + DTL_TimePLC : DTL // SPS Zeit DTL + sPLCTimeAsString : String // SPS Zeit als String + stSMCCard : Struct // Speicherkarte + Size : UDInt + AcutalInUse : UDInt + Livespan : UDInt + stStateMain : "IntfMainState" // Hauptzustandsmaschine diff --git a/=A01+UH07-KF00/Programmbausteine/xBaseSystemLib/GDBs/dbDataLogBuffer.awl b/=A01+UH07-KF00/Programmbausteine/xBaseSystemLib/GDBs/dbDataLogBuffer.awl new file mode 100644 index 0000000..59b8a9c --- /dev/null +++ b/=A01+UH07-KF00/Programmbausteine/xBaseSystemLib/GDBs/dbDataLogBuffer.awl @@ -0,0 +1,7 @@ +=== GlobalDB 19: dbDataLogBuffer [DB] === +INTERFACE: + Static: + nIdx : Int + nIdxMax : Int + DataLogBuffer : Array[0.."cNoTempDataLog"] of "DataLogBuffer" + DataLogBufferEmpty : "DataLogBuffer" diff --git a/=A01+UH07-KF00/Programmbausteine/xCommunication/DB_Buffer_CommunicationWCSBL.awl b/=A01+UH07-KF00/Programmbausteine/xCommunication/DB_Buffer_CommunicationWCSBL.awl new file mode 100644 index 0000000..7379c36 --- /dev/null +++ b/=A01+UH07-KF00/Programmbausteine/xCommunication/DB_Buffer_CommunicationWCSBL.awl @@ -0,0 +1,4 @@ +=== GlobalDB 47: DB_Buffer_CommunicationWCSBL [DB] === +INTERFACE: + Static: + BUFFER : Array[1..100] of "UDT_TelegramData_Send" diff --git a/=A01+UH07-KF00/Programmbausteine/xCommunication/DB_Buffer_CommunicationWES_ASRS.awl b/=A01+UH07-KF00/Programmbausteine/xCommunication/DB_Buffer_CommunicationWES_ASRS.awl new file mode 100644 index 0000000..4c5954a --- /dev/null +++ b/=A01+UH07-KF00/Programmbausteine/xCommunication/DB_Buffer_CommunicationWES_ASRS.awl @@ -0,0 +1,4 @@ +=== GlobalDB 29: DB_Buffer_CommunicationWES_ASRS [DB] === +INTERFACE: + Static: + BUFFER : Array[1..100] of "UDT_TelegramData_Send" diff --git a/=A01+UH07-KF00/Programmbausteine/xCommunication/DB_CommunicationParameters.awl b/=A01+UH07-KF00/Programmbausteine/xCommunication/DB_CommunicationParameters.awl new file mode 100644 index 0000000..f4f7c18 --- /dev/null +++ b/=A01+UH07-KF00/Programmbausteine/xCommunication/DB_CommunicationParameters.awl @@ -0,0 +1,5 @@ +=== GlobalDB 64: DB_CommunicationParameters [DB] === +INTERFACE: + Static: + nSeqNumWESASRS : LInt + nSeqNumWCSBL : LInt diff --git a/=A01+UH07-KF00/Programmbausteine/xCommunication/DB_LGF_FIFO_CommWCSBL.awl b/=A01+UH07-KF00/Programmbausteine/xCommunication/DB_LGF_FIFO_CommWCSBL.awl new file mode 100644 index 0000000..165ae1c --- /dev/null +++ b/=A01+UH07-KF00/Programmbausteine/xCommunication/DB_LGF_FIFO_CommWCSBL.awl @@ -0,0 +1,31 @@ +=== InstanceDB 11: DB_LGF_FIFO_CommWCSBL [DB] === +INTERFACE: + Input: + enqueue : Bool + dequeue : Bool + reset : Bool + clear : Bool + initialItem : Variant + maxElementCount : UInt + Output: + error : Bool + status : Word + subFunctionStatus : Word + elementCount : USInt + isEmpty : Bool + isFull : Bool + oldestElement : Int + enqueueDone : Bool + dequeueDone : Bool + InOut: + itemIn : Variant + buffer : Variant + itemOut : Variant + Static: + statEdgesMem : Struct + enqueue : Bool + dequeue : Bool + clear : Bool + statFirstItemIndex : Int + statNextEmptyItemIndex : Int + statElementCount : DInt diff --git a/=A01+UH07-KF00/Programmbausteine/xCommunication/DB_LGF_FIFO_CommWES_ASRS.awl b/=A01+UH07-KF00/Programmbausteine/xCommunication/DB_LGF_FIFO_CommWES_ASRS.awl new file mode 100644 index 0000000..1a1a63e --- /dev/null +++ b/=A01+UH07-KF00/Programmbausteine/xCommunication/DB_LGF_FIFO_CommWES_ASRS.awl @@ -0,0 +1,31 @@ +=== InstanceDB 14: DB_LGF_FIFO_CommWES_ASRS [DB] === +INTERFACE: + Input: + enqueue : Bool + dequeue : Bool + reset : Bool + clear : Bool + initialItem : Variant + maxElementCount : UInt + Output: + error : Bool + status : Word + subFunctionStatus : Word + elementCount : USInt + isEmpty : Bool + isFull : Bool + oldestElement : Int + enqueueDone : Bool + dequeueDone : Bool + InOut: + itemIn : Variant + buffer : Variant + itemOut : Variant + Static: + statEdgesMem : Struct + enqueue : Bool + dequeue : Bool + clear : Bool + statFirstItemIndex : Int + statNextEmptyItemIndex : Int + statElementCount : DInt diff --git a/=A01+UH07-KF00/Programmbausteine/xCommunication/FB_CommunicationWCSBL_DB.awl b/=A01+UH07-KF00/Programmbausteine/xCommunication/FB_CommunicationWCSBL_DB.awl new file mode 100644 index 0000000..294d8cd --- /dev/null +++ b/=A01+UH07-KF00/Programmbausteine/xCommunication/FB_CommunicationWCSBL_DB.awl @@ -0,0 +1,26 @@ +=== InstanceDB 10: FB_CommunicationWCSBL_DB [DB] === +INTERFACE: + Input: + Output: + InOut: + fbInOutSendFIFO : "LGF_FIFO" + arFifoSendBuffer : Array[1..100] of "UDT_TelegramData_Send" + Static: + fbTeleHandler : "FB_TCP_LCOM_TeleHandler" + xReset : Bool + xSendTele : Bool + stTelegramToSend : "UDT_TelegramData_Send" + nState : Int + nStateSend : Int + xRetVal : Bool + stNewTelegram : "UDT_TelegramData" + stTeleGOHDRespM : "UDT_Telegram_GOHDRespM" + arPayloadHelp : Array[0..200] of Byte + cnt : UInt + LStream_JsonDeserializer_Instance : "LStream_JsonDeserializer" + typeElement : Array[0..10] of "LStream_typeElement" + xDone : Bool + rTrigConnectionActive : R_TRIG + xSendHeartbeat : Bool + tOnHeartbeat : TON_TIME + sTelegramKennung : String diff --git a/=A01+UH07-KF00/Programmbausteine/xCommunication/FB_CommunicationWES_ASRS_DB.awl b/=A01+UH07-KF00/Programmbausteine/xCommunication/FB_CommunicationWES_ASRS_DB.awl new file mode 100644 index 0000000..0a5a3dd --- /dev/null +++ b/=A01+UH07-KF00/Programmbausteine/xCommunication/FB_CommunicationWES_ASRS_DB.awl @@ -0,0 +1,26 @@ +=== InstanceDB 13: FB_CommunicationWES_ASRS_DB [DB] === +INTERFACE: + Input: + Output: + InOut: + fbInOutSendFIFO : "LGF_FIFO" + arFifoSendBuffer : Array[1..100] of "UDT_TelegramData_Send" + Static: + fbTeleHandler : "FB_TCP_LCOM_TeleHandler" + xReset : Bool + xSendTele : Bool + stTelegramToSend : "UDT_TelegramData_Send" + nState : Int + nStateSend : Int + xRetVal : Bool + stNewTelegram : "UDT_TelegramData" + stTeleGOHDRespM : "UDT_Telegram_GOHDRespM" + arPayloadHelp : Array[0..200] of Byte + cnt : UInt + LStream_JsonDeserializer_Instance : "LStream_JsonDeserializer" + typeElement : Array[0..10] of "LStream_typeElement" + xDone : Bool + rTrigConnectionActive : R_TRIG + xSendHeartbeat : Bool + tOnHeartbeat : TON_TIME + sTelegramKennung : String diff --git a/=A01+UH07-KF00/Programmbausteine/xCommunication/TCP-Logger/DB_Buffer_CommunicationLogger.awl b/=A01+UH07-KF00/Programmbausteine/xCommunication/TCP-Logger/DB_Buffer_CommunicationLogger.awl new file mode 100644 index 0000000..a198811 --- /dev/null +++ b/=A01+UH07-KF00/Programmbausteine/xCommunication/TCP-Logger/DB_Buffer_CommunicationLogger.awl @@ -0,0 +1,4 @@ +=== GlobalDB 68: DB_Buffer_CommunicationLogger [DB] === +INTERFACE: + Static: + BUFFER : Array[1..100] of "UDT_TelegramData_Send" diff --git a/=A01+UH07-KF00/Programmbausteine/xCommunication/TCP-Logger/DB_CommunciationParametersLogger.awl b/=A01+UH07-KF00/Programmbausteine/xCommunication/TCP-Logger/DB_CommunciationParametersLogger.awl new file mode 100644 index 0000000..3a8ac73 --- /dev/null +++ b/=A01+UH07-KF00/Programmbausteine/xCommunication/TCP-Logger/DB_CommunciationParametersLogger.awl @@ -0,0 +1,5 @@ +=== GlobalDB 71: DB_CommunciationParametersLogger [DB] === +INTERFACE: + Static: + nSeqNum : LInt + xIsLogger : Bool diff --git a/=A01+UH07-KF00/Programmbausteine/xCommunication/TCP-Logger/DB_LGF_FIFO_CommLogger.awl b/=A01+UH07-KF00/Programmbausteine/xCommunication/TCP-Logger/DB_LGF_FIFO_CommLogger.awl new file mode 100644 index 0000000..ae0181b --- /dev/null +++ b/=A01+UH07-KF00/Programmbausteine/xCommunication/TCP-Logger/DB_LGF_FIFO_CommLogger.awl @@ -0,0 +1,31 @@ +=== InstanceDB 69: DB_LGF_FIFO_CommLogger [DB] === +INTERFACE: + Input: + enqueue : Bool + dequeue : Bool + reset : Bool + clear : Bool + initialItem : Variant + maxElementCount : UInt + Output: + error : Bool + status : Word + subFunctionStatus : Word + elementCount : USInt + isEmpty : Bool + isFull : Bool + oldestElement : Int + enqueueDone : Bool + dequeueDone : Bool + InOut: + itemIn : Variant + buffer : Variant + itemOut : Variant + Static: + statEdgesMem : Struct + enqueue : Bool + dequeue : Bool + clear : Bool + statFirstItemIndex : Int + statNextEmptyItemIndex : Int + statElementCount : DInt diff --git a/=A01+UH07-KF00/Programmbausteine/xCommunication/TCP-Logger/FB_CommunicationLogger_DB.awl b/=A01+UH07-KF00/Programmbausteine/xCommunication/TCP-Logger/FB_CommunicationLogger_DB.awl new file mode 100644 index 0000000..2400890 --- /dev/null +++ b/=A01+UH07-KF00/Programmbausteine/xCommunication/TCP-Logger/FB_CommunicationLogger_DB.awl @@ -0,0 +1,24 @@ +=== InstanceDB 67: FB_CommunicationLogger_DB [DB] === +INTERFACE: + Input: + Output: + InOut: + fbInOutSendFIFO : "LGF_FIFO" + arFifoSendBuffer : Array[1..100] of "UDT_TelegramData_Send" + Static: + fbTeleHandler : "FB_TCP_LCOM_TeleHandler" + xReset : Bool + xSendTele : Bool + stTelegramToSend : "UDT_TelegramData_Send" + nState : Int + xRetVal : Bool + stNewTelegram : "UDT_TelegramData" + stTeleGOHDRespM : "UDT_Telegram_GOHDRespM" + arPayloadHelp : Array[0..200] of Byte + cnt : UInt + LStream_JsonDeserializer_Instance : "LStream_JsonDeserializer" + typeElement : Array[0..10] of "LStream_typeElement" + xDone : Bool + rTrigConnectionActive : R_TRIG + xSendHeartbeat : Bool + tOnHeartbeat : TON_TIME