Merge branch 'master' of https://gitea.schoenenberger.de/t.molina/HundM_Fortna
This commit is contained in:
@@ -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
|
||||||
@@ -0,0 +1,22 @@
|
|||||||
|
@echo off
|
||||||
|
REM ================================================================
|
||||||
|
REM HundM_Fortna - DXF-Uebersicht der TROs erzeugen
|
||||||
|
REM
|
||||||
|
REM Liest die Skeleton-Dateien (%PV_RESULTS%\skeleton_UH0x.json) und
|
||||||
|
REM erzeugt %PV_RESULTS%\ST500592_TROs.dxf (TRO-Kaesten als Bloecke,
|
||||||
|
REM Sensoren als Kreise mit Verbindungslinien) fuer AutoCAD/BricsCAD.
|
||||||
|
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%\create_dxf.py" %*
|
||||||
|
if errorlevel 1 (
|
||||||
|
echo FEHLER: create_dxf.py wurde mit Fehler beendet.
|
||||||
|
exit /b 1
|
||||||
|
)
|
||||||
@@ -0,0 +1,22 @@
|
|||||||
|
@echo off
|
||||||
|
REM ================================================================
|
||||||
|
REM HundM_Fortna - Skeleton-Generator aufrufen
|
||||||
|
REM
|
||||||
|
REM Liest die Eingabelisten (%PV_DATA%) und erzeugt je Steuerung
|
||||||
|
REM ein Skeleton der JSON-Zwischendatei sowie ein SCL-Grundgeruest
|
||||||
|
REM nach %PV_RESULTS%.
|
||||||
|
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%\create_skel.py" %*
|
||||||
|
if errorlevel 1 (
|
||||||
|
echo FEHLER: create_skel.py wurde mit Fehler beendet.
|
||||||
|
exit /b 1
|
||||||
|
)
|
||||||
@@ -0,0 +1,41 @@
|
|||||||
|
@echo off
|
||||||
|
REM Erzeugt den TRO-Topologie-Graphen (DOT) aus den FB_Main.scl-Dateien
|
||||||
|
REM und rendert ihn anschliessend mit Graphviz als SVG.
|
||||||
|
REM
|
||||||
|
REM Voraussetzung: Graphviz (dot.exe) muss installiert sein, z.B. per
|
||||||
|
REM winget install --id Graphviz.Graphviz -e
|
||||||
|
|
||||||
|
setlocal
|
||||||
|
set "SCRIPT_DIR=%~dp0"
|
||||||
|
set "REPO_DIR=%SCRIPT_DIR%.."
|
||||||
|
set "DOT_FILE=%REPO_DIR%\doc\TRO_Graph_UH01-UH05.dot"
|
||||||
|
set "SVG_FILE=%REPO_DIR%\doc\TRO_Graph_UH01-UH05.svg"
|
||||||
|
|
||||||
|
echo Erzeuge %DOT_FILE% ...
|
||||||
|
python "%SCRIPT_DIR%generate_tro_graph.py" "%DOT_FILE%"
|
||||||
|
if errorlevel 1 (
|
||||||
|
echo Fehler bei der Erzeugung der DOT-Datei.
|
||||||
|
exit /b 1
|
||||||
|
)
|
||||||
|
|
||||||
|
set "DOT_EXE=dot"
|
||||||
|
where %DOT_EXE% >nul 2>nul
|
||||||
|
if errorlevel 1 (
|
||||||
|
if exist "C:\Program Files\Graphviz\bin\dot.exe" (
|
||||||
|
set "DOT_EXE=C:\Program Files\Graphviz\bin\dot.exe"
|
||||||
|
) else (
|
||||||
|
echo dot.exe wurde nicht gefunden. Bitte Graphviz installieren:
|
||||||
|
echo winget install --id Graphviz.Graphviz -e
|
||||||
|
exit /b 1
|
||||||
|
)
|
||||||
|
)
|
||||||
|
|
||||||
|
echo Rendere %SVG_FILE% ...
|
||||||
|
"%DOT_EXE%" -Tsvg "%DOT_FILE%" -o "%SVG_FILE%"
|
||||||
|
if errorlevel 1 (
|
||||||
|
echo Fehler beim Rendern der SVG-Datei.
|
||||||
|
exit /b 1
|
||||||
|
)
|
||||||
|
|
||||||
|
echo Fertig: %SVG_FILE%
|
||||||
|
endlocal
|
||||||
@@ -0,0 +1,325 @@
|
|||||||
|
# -*- coding: utf-8 -*-
|
||||||
|
"""Extrahiert den TRO-Topologie-Graphen aller 5 UH-Steuerungen aus FB_Main.scl
|
||||||
|
und erzeugt eine Graphviz-DOT-Datei.
|
||||||
|
|
||||||
|
Prinzip: Jeder TRO-Baustein bekommt JamArea-Slots als Parameter
|
||||||
|
(arInOutJamEntr*, arInOutJamExit*, arInOutJamBypass, arInOutJamFinger).
|
||||||
|
Zwei TROs sind verbunden, wenn der Exit-Slot des einen dieselbe JamArea
|
||||||
|
referenziert wie der Entry-Slot des anderen.
|
||||||
|
|
||||||
|
Aufruf:
|
||||||
|
python bin/generate_tro_graph.py [ausgabe.dot]
|
||||||
|
|
||||||
|
Ohne Argument wird nach doc/TRO_Graph_UH01-UH05.dot geschrieben.
|
||||||
|
Zum Rendern als SVG anschliessend:
|
||||||
|
dot -Tsvg doc/TRO_Graph_UH01-UH05.dot -o doc/TRO_Graph_UH01-UH05.svg
|
||||||
|
"""
|
||||||
|
import re
|
||||||
|
import sys
|
||||||
|
from collections import defaultdict
|
||||||
|
from pathlib import Path
|
||||||
|
|
||||||
|
REPO = Path(__file__).resolve().parent.parent
|
||||||
|
UHS = ["UH01", "UH02", "UH03", "UH04", "UH05"]
|
||||||
|
|
||||||
|
decl_re = re.compile(r'^\s*(\w+)\s*(?:\{[^}]*\})?\s*:\s*"([\w.]+)"\s*;')
|
||||||
|
jamparam_re = re.compile(
|
||||||
|
r'arInOut(Jam\w+|StorageLines|CarrierStopper|CarrierExit)'
|
||||||
|
r'\s*:=\s*"([^"]+)"\.(\w+)')
|
||||||
|
call_start_re = re.compile(r'#(\w+)\s*\(')
|
||||||
|
region_re = re.compile(r'^\s*REGION\b\s*(.*)$')
|
||||||
|
endregion_re = re.compile(r'^\s*END_REGION')
|
||||||
|
|
||||||
|
|
||||||
|
def parse_uh(uh):
|
||||||
|
path = REPO / f"=A01+{uh}-KF00" / "Programmbausteine" / "100_Main" / "FB_Main.scl"
|
||||||
|
text = path.read_text(encoding="utf-8-sig")
|
||||||
|
text = re.sub(r'\(\*.*?\*\)', '', text, flags=re.S) # Blockkommentare
|
||||||
|
lines = [re.sub(r'//.*$', '', ln) for ln in text.splitlines()]
|
||||||
|
|
||||||
|
# 1) Instanz-Deklarationen -> FB-Typ
|
||||||
|
types = {}
|
||||||
|
for ln in lines:
|
||||||
|
m = decl_re.match(ln)
|
||||||
|
if m:
|
||||||
|
types[m.group(1)] = m.group(2)
|
||||||
|
|
||||||
|
# 2) Aufrufe finden inkl. REGION-Kontext
|
||||||
|
nodes = {} # inst -> dict(type, region, jams=[(role, jamref)])
|
||||||
|
region_stack = []
|
||||||
|
i = 0
|
||||||
|
while i < len(lines):
|
||||||
|
ln = lines[i]
|
||||||
|
if endregion_re.match(ln):
|
||||||
|
if region_stack:
|
||||||
|
region_stack.pop()
|
||||||
|
i += 1
|
||||||
|
continue
|
||||||
|
m = region_re.match(ln)
|
||||||
|
if m and "END_REGION" not in ln.split("REGION")[0]:
|
||||||
|
region_stack.append(m.group(1).strip())
|
||||||
|
i += 1
|
||||||
|
continue
|
||||||
|
m = call_start_re.search(ln)
|
||||||
|
if m and types.get(m.group(1)):
|
||||||
|
inst = m.group(1)
|
||||||
|
# Parameterblock bis zur schliessenden Klammer einsammeln
|
||||||
|
buf = ln[m.end() - 1:]
|
||||||
|
depth = 0
|
||||||
|
j = i
|
||||||
|
done = False
|
||||||
|
while j < len(lines) and not done:
|
||||||
|
seg = lines[j] if j > i else buf
|
||||||
|
for ch in seg:
|
||||||
|
if ch == "(":
|
||||||
|
depth += 1
|
||||||
|
elif ch == ")":
|
||||||
|
depth -= 1
|
||||||
|
if depth == 0:
|
||||||
|
done = True
|
||||||
|
break
|
||||||
|
j += 1
|
||||||
|
block = "\n".join([buf] + lines[i + 1:j])
|
||||||
|
jams = []
|
||||||
|
for jm in jamparam_re.finditer(block):
|
||||||
|
role, db, member = jm.group(1), jm.group(2), jm.group(3)
|
||||||
|
jams.append((role, f"{db}.{member}"))
|
||||||
|
if jams:
|
||||||
|
# aussagekraeftigste REGION waehlen (generische wie "CALL",
|
||||||
|
# "TRO 101 CALL", "Enable und RequestRun" ueberspringen)
|
||||||
|
region = ""
|
||||||
|
for r in reversed(region_stack):
|
||||||
|
if not re.match(r'^(.*\bCALL\b.*|Enable und RequestRun)$',
|
||||||
|
r, re.I):
|
||||||
|
region = r
|
||||||
|
break
|
||||||
|
node = nodes.setdefault(inst, {
|
||||||
|
"type": types[inst],
|
||||||
|
"region": region,
|
||||||
|
"jams": []})
|
||||||
|
for j2 in jams:
|
||||||
|
if j2 not in node["jams"]:
|
||||||
|
node["jams"].append(j2)
|
||||||
|
i = j
|
||||||
|
continue
|
||||||
|
i += 1
|
||||||
|
return nodes
|
||||||
|
|
||||||
|
|
||||||
|
def role_dir(role):
|
||||||
|
if role.startswith("JamEntr") or role in ("StorageLines",
|
||||||
|
"CarrierStopper"):
|
||||||
|
return "in"
|
||||||
|
if (role.startswith(("JamExit", "JamBypass", "JamFinger"))
|
||||||
|
or role == "CarrierExit"):
|
||||||
|
return "out"
|
||||||
|
return "?"
|
||||||
|
|
||||||
|
|
||||||
|
def short_jam(jamref):
|
||||||
|
# DB_JamArea0101.stJam0101_1 -> JA0101_1
|
||||||
|
m = re.match(r"DB_JamArea(\w+)\.stJam\w+_(\w+)", jamref)
|
||||||
|
if m:
|
||||||
|
return f"JA{m.group(1)}_{m.group(2)}"
|
||||||
|
return jamref.replace("DB_", "").replace(".arLine", "")
|
||||||
|
|
||||||
|
|
||||||
|
def main():
|
||||||
|
all_nodes = {}
|
||||||
|
report = []
|
||||||
|
for uh in UHS:
|
||||||
|
nodes = parse_uh(uh)
|
||||||
|
all_nodes[uh] = nodes
|
||||||
|
report.append(f"{uh}: {len(nodes)} TRO-Knoten")
|
||||||
|
|
||||||
|
# Kanten je UH ueber gemeinsame JamAreas
|
||||||
|
edges = defaultdict(list) # uh -> [(from, to, jam, tag)]
|
||||||
|
externals = defaultdict(list) # uh -> [(node, dir, jam, role)]
|
||||||
|
for uh, nodes in all_nodes.items():
|
||||||
|
jam_users = defaultdict(lambda: {"in": [], "out": []})
|
||||||
|
for inst, nd in nodes.items():
|
||||||
|
for role, jam in nd["jams"]:
|
||||||
|
d = role_dir(role)
|
||||||
|
if d in ("in", "out"):
|
||||||
|
jam_users[jam][d].append((inst, role))
|
||||||
|
for jam, users in sorted(jam_users.items()):
|
||||||
|
for (src, srole) in users["out"]:
|
||||||
|
tag = {"JamExit3": "Dir2", "JamExit4": "Dir3",
|
||||||
|
"JamBypass": "Bypass", "JamFinger": "Finger"
|
||||||
|
}.get(srole, "")
|
||||||
|
if users["in"]:
|
||||||
|
for (dst, drole) in users["in"]:
|
||||||
|
if dst != src:
|
||||||
|
edges[uh].append((src, dst, jam, tag))
|
||||||
|
else:
|
||||||
|
externals[uh].append((src, "out", jam, srole))
|
||||||
|
for (dst, drole) in users["in"]:
|
||||||
|
if not users["out"]:
|
||||||
|
externals[uh].append((dst, "in", jam, drole))
|
||||||
|
|
||||||
|
for uh in UHS:
|
||||||
|
report.append(f"{uh}: {len(edges[uh])} Kanten, "
|
||||||
|
f"{len(externals[uh])} offene Enden")
|
||||||
|
print("\n".join(report))
|
||||||
|
|
||||||
|
# Knoten ohne jede Kante?
|
||||||
|
for uh, nodes in all_nodes.items():
|
||||||
|
connected = set()
|
||||||
|
for (s, d, _, _) in edges[uh]:
|
||||||
|
connected.add(s)
|
||||||
|
connected.add(d)
|
||||||
|
for (n, _, _, _) in externals[uh]:
|
||||||
|
connected.add(n)
|
||||||
|
iso = set(nodes) - connected
|
||||||
|
if iso:
|
||||||
|
print(f"{uh} isoliert: {sorted(iso)}")
|
||||||
|
|
||||||
|
write_dot(all_nodes, edges, externals)
|
||||||
|
|
||||||
|
|
||||||
|
COLORS = {
|
||||||
|
"FB_ILS_MTRO_1Sep": ("#d4e8ff", "box"),
|
||||||
|
"FB_ILS_MTRO_1Sep_SSCC": ("#ffd4d4", "box"),
|
||||||
|
"FB_ILS_MTRO_1Sep1Swi": ("#ffe4a0", "diamond"),
|
||||||
|
"FB_ILS_MTRO_1Sep2Swi": ("#ffc060", "diamond"),
|
||||||
|
"FB_ILS_MTRO_2Sep1Swi": ("#ffe4a0", "diamond"),
|
||||||
|
"FB_ILS_MTRO_Vario": ("#e8d4f0", "parallelogram"),
|
||||||
|
"FB_ILS_MTRO_Vario_workStation": ("#c0f0f0", "parallelogram"),
|
||||||
|
"FB_EmptyCarrBuffer": ("#d4f0d4", "box3d"),
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
def node_style(fbtype):
|
||||||
|
for k in sorted(COLORS, key=len, reverse=True):
|
||||||
|
if fbtype.startswith(k):
|
||||||
|
return COLORS[k]
|
||||||
|
return ("#f0f0f0", "box")
|
||||||
|
|
||||||
|
|
||||||
|
def esc(s):
|
||||||
|
return s.replace("\\", "\\\\").replace('"', '\\"')
|
||||||
|
|
||||||
|
|
||||||
|
HEADER = '''\
|
||||||
|
// ============================================================================
|
||||||
|
// TRO-Topologie-Graph der Gesamtanlage HundM_Fortna (UH01 - UH05)
|
||||||
|
// ============================================================================
|
||||||
|
//
|
||||||
|
// Format: Graphviz DOT (https://graphviz.org)
|
||||||
|
// Rendern z.B. mit: dot -Tsvg TRO_Graph_UH01-UH05.dot -o graph.svg
|
||||||
|
// oder online: https://dreampuf.github.io/GraphvizOnline
|
||||||
|
//
|
||||||
|
// Quelle: Automatisch extrahiert aus den FB_Main.scl der 5 Steuerungen
|
||||||
|
// (=A01+UH01-KF00 ... =A01+UH05-KF00, Ordner 100_Main).
|
||||||
|
// Erzeugt von bin/generate_tro_graph.py.
|
||||||
|
//
|
||||||
|
// Methode: Jeder TRO-Baustein (FB_ILS_MTRO_*, FB_EmptyCarrBuffer,
|
||||||
|
// FB_LoadingBoom_INBOUND) referenziert JamAreas als Parameter:
|
||||||
|
// arInOutJamEntr* / arInOutStorageLines / arInOutCarrierStopper = Eingang
|
||||||
|
// arInOutJamExit* / arInOutJamBypass / arInOutJamFinger /
|
||||||
|
// arInOutCarrierExit = Ausgang
|
||||||
|
// Zwei TROs sind verbunden, wenn der Ausgangs-Slot des einen
|
||||||
|
// dieselbe JamArea referenziert wie der Eingangs-Slot des anderen.
|
||||||
|
// Auskommentierter Code wurde ignoriert.
|
||||||
|
//
|
||||||
|
// Knoten: Ein Knoten je TRO-Instanz, Label: Name, [FB-Typ], REGION-Kommentar
|
||||||
|
// aus FB_Main. Farbe/Form nach FB-Typ:
|
||||||
|
// hellblau/Box = 1Sep (Standard-Separator)
|
||||||
|
// rot/Box = 1Sep_SSCC (SSCC-Scanner + WCS-Telegramm)
|
||||||
|
// gelb/Raute = 1Sep1Swi, 1Sep2Swi, 2Sep1Swi (Weichen)
|
||||||
|
// violett/Parallelogr.= Vario (Kettenfoerderer)
|
||||||
|
// tuerkis/Parallelogr.= Vario_workStation (manueller Arbeitsplatz)
|
||||||
|
// gruen/3D-Box = EmptyCarrBuffer (Leertablar-Puffer)
|
||||||
|
// grau = Sonstige (z.B. LoadingBoom, PinStore)
|
||||||
|
//
|
||||||
|
// Kanten: Label = JamArea-Slot (JAxxxx_y = "DB_JamAreaxxxx".stJamxxxx_y).
|
||||||
|
// Zusatz "Dir2"/"Dir3" = Weichen-Ausgang (arInOutJamExit3/4),
|
||||||
|
// Richtungsentscheidung kommt aus FC_Direction.
|
||||||
|
// Gestrichelt "Bypass" = Bypass-Spur (PinStore),
|
||||||
|
// gestrichelt "Finger" = Finger-Uebergabe eines Vario-Foerderers.
|
||||||
|
//
|
||||||
|
// EXTERN: Graue Kanten zu EXTERN-Knoten = JamAreas, die nur auf einer
|
||||||
|
// Seite belegt sind (Anlagengrenze, Uebergabe an WES/WCS, AMR
|
||||||
|
// oder andere SPS). CPU-CPU-Uebergaben zwischen den Steuerungen
|
||||||
|
// sind an den Labels "IO_Device_UHxx_TO_UHyy..." erkennbar
|
||||||
|
// (PROFINET-Direktkopplung, kein gemeinsamer JamArea-DB).
|
||||||
|
//
|
||||||
|
// Hinweis: Kanten existieren nur innerhalb einer Steuerung, da JamArea-DBs
|
||||||
|
// nicht SPS-uebergreifend geteilt werden. Der physische Fluss
|
||||||
|
// zwischen den UHs laeuft ueber die EXTERN-Uebergaben.
|
||||||
|
//
|
||||||
|
'''
|
||||||
|
|
||||||
|
|
||||||
|
def write_dot(all_nodes, edges, externals):
|
||||||
|
body = []
|
||||||
|
B = body.append
|
||||||
|
B(HEADER.rstrip())
|
||||||
|
total_n = sum(len(v) for v in all_nodes.values())
|
||||||
|
total_e = sum(len(set(v)) for v in edges.values())
|
||||||
|
B(f"// Umfang: {total_n} TRO-Knoten, {total_e} Verbindungen "
|
||||||
|
f"(Stand der Extraktion siehe Git-Historie)")
|
||||||
|
for uh in UHS:
|
||||||
|
B(f"// {uh}: {len(all_nodes[uh])} TROs, "
|
||||||
|
f"{len(set(edges[uh]))} Verbindungen")
|
||||||
|
B("")
|
||||||
|
B("digraph TRO_Topologie {")
|
||||||
|
B(' rankdir = "LR";')
|
||||||
|
B(' fontname = "Arial";')
|
||||||
|
B(' node [fontname="Arial", fontsize=10];')
|
||||||
|
B(' edge [fontname="Arial", fontsize=8];')
|
||||||
|
B(' label = "TRO-Topologie HundM_Fortna (UH01-UH05)";')
|
||||||
|
B(' labelloc = "t";')
|
||||||
|
B("")
|
||||||
|
for uh in UHS:
|
||||||
|
nodes = all_nodes[uh]
|
||||||
|
B(f' subgraph "cluster_{uh}" {{')
|
||||||
|
B(f' label = "{uh} (=A01+{uh}-KF00)";')
|
||||||
|
B(' style = "rounded";')
|
||||||
|
B(' color = "#888888";')
|
||||||
|
for inst in sorted(nodes):
|
||||||
|
nd = nodes[inst]
|
||||||
|
color, shape = node_style(nd["type"])
|
||||||
|
t = nd["type"].replace("FB_ILS_MTRO_", "").replace("FB_", "")
|
||||||
|
reg = esc(nd["region"])
|
||||||
|
B(f' "{uh}.{inst}" [label="{inst}\\n[{t}]\\n{reg}", '
|
||||||
|
f'shape={shape}, style=filled, fillcolor="{color}"];')
|
||||||
|
# Externe Enden als ein Sammel-Knoten je Richtung
|
||||||
|
ext = externals[uh]
|
||||||
|
if any(d == "in" for (_, d, _, _) in ext):
|
||||||
|
B(f' "{uh}.EXTERN_IN" [label="EXTERN\\n(Zulauf)", '
|
||||||
|
f'shape=ellipse, style="filled,dashed", fillcolor="#f8f8f8"];')
|
||||||
|
if any(d == "out" for (_, d, _, _) in ext):
|
||||||
|
B(f' "{uh}.EXTERN_OUT" [label="EXTERN\\n(Ablauf)", '
|
||||||
|
f'shape=ellipse, style="filled,dashed", fillcolor="#f8f8f8"];')
|
||||||
|
seen = set()
|
||||||
|
for (s, d, jam, tag) in edges[uh]:
|
||||||
|
key = (s, d, jam, tag)
|
||||||
|
if key in seen:
|
||||||
|
continue
|
||||||
|
seen.add(key)
|
||||||
|
lbl = short_jam(jam) + (f" {tag}" if tag else "")
|
||||||
|
style = ', style=dashed' if tag in ("Bypass", "Finger") else ""
|
||||||
|
B(f' "{uh}.{s}" -> "{uh}.{d}" [label="{lbl}"{style}];')
|
||||||
|
seen = set()
|
||||||
|
for (n, d, jam, role) in ext:
|
||||||
|
key = (n, d, jam)
|
||||||
|
if key in seen:
|
||||||
|
continue
|
||||||
|
seen.add(key)
|
||||||
|
if d == "in":
|
||||||
|
B(f' "{uh}.EXTERN_IN" -> "{uh}.{n}" '
|
||||||
|
f'[label="{short_jam(jam)}", color="#999999"];')
|
||||||
|
else:
|
||||||
|
B(f' "{uh}.{n}" -> "{uh}.EXTERN_OUT" '
|
||||||
|
f'[label="{short_jam(jam)}", color="#999999"];')
|
||||||
|
B(" }")
|
||||||
|
B("")
|
||||||
|
B("}")
|
||||||
|
dest = Path(sys.argv[1]) if len(sys.argv) > 1 else REPO / "doc" / "TRO_Graph_UH01-UH05.dot"
|
||||||
|
dest.write_text("\n".join(body) + "\n", encoding="utf-8", newline="\n")
|
||||||
|
print("DOT geschrieben:", dest)
|
||||||
|
|
||||||
|
|
||||||
|
if __name__ == "__main__":
|
||||||
|
main()
|
||||||
@@ -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%"
|
||||||
@@ -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.
|
||||||
|
)
|
||||||
@@ -0,0 +1,62 @@
|
|||||||
|
@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_LOG=%PROJECT%\log"
|
||||||
|
set "PV_RESULTS=%PROJECT%\results"
|
||||||
|
set "PV_EXAMPLES=%PROJECT%\examples"
|
||||||
|
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_LOG%" mkdir "%PV_LOG%"
|
||||||
|
if not exist "%PV_RESULTS%" mkdir "%PV_RESULTS%"
|
||||||
|
if not exist "%PV_EXAMPLES%" mkdir "%PV_EXAMPLES%"
|
||||||
|
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.
|
||||||
+146
@@ -0,0 +1,146 @@
|
|||||||
|
{
|
||||||
|
"files": {
|
||||||
|
"tia_xlsx": "ST500592_10_5-14_ILS-{n}_TIA.xlsx",
|
||||||
|
"positions_json": "ST500592_10_5-9_ILS_positions.json",
|
||||||
|
"connect_json": "connect.json",
|
||||||
|
"connect_ini": "connect.ini"
|
||||||
|
},
|
||||||
|
"verw_roles": {
|
||||||
|
"In sep": "sensorInSep",
|
||||||
|
"Sep": "stopperOutput",
|
||||||
|
"Jam detector": "sensorJam",
|
||||||
|
"Jam detector (LP)": "sensorJam",
|
||||||
|
"jam detector (LP)": "sensorJam",
|
||||||
|
"ES branch": "switchOutput",
|
||||||
|
"ES brunch": "switchOutput",
|
||||||
|
"conveyor full": "sensorConvFull",
|
||||||
|
"MT in Position": "sensorCarrInPos",
|
||||||
|
"MT in position": "sensorCarrInPos",
|
||||||
|
"Finger in position": "sensorFinger",
|
||||||
|
"Finger in Position": "sensorFinger",
|
||||||
|
"PIN query": "sensorPinQuery",
|
||||||
|
"Rad dreht ": "sensorWheel",
|
||||||
|
"Rad dreht": "sensorWheel"
|
||||||
|
},
|
||||||
|
"comment_roles": [
|
||||||
|
[
|
||||||
|
"^in Separator",
|
||||||
|
"sensorInSep"
|
||||||
|
],
|
||||||
|
[
|
||||||
|
"^Separator",
|
||||||
|
"stopperOutput"
|
||||||
|
],
|
||||||
|
[
|
||||||
|
"Stausensor|Staumelder",
|
||||||
|
"sensorJam"
|
||||||
|
],
|
||||||
|
[
|
||||||
|
"AE Abzweig",
|
||||||
|
"switchOutput"
|
||||||
|
],
|
||||||
|
[
|
||||||
|
"F.?rderer voll",
|
||||||
|
"sensorConvFull"
|
||||||
|
],
|
||||||
|
[
|
||||||
|
"MT in Position",
|
||||||
|
"sensorCarrInPos"
|
||||||
|
],
|
||||||
|
[
|
||||||
|
"Mitnehmerfinger|Finger in",
|
||||||
|
"sensorFinger"
|
||||||
|
],
|
||||||
|
[
|
||||||
|
"Pin Abfrage|Pr.?fung MT Pos",
|
||||||
|
"sensorPinQuery"
|
||||||
|
],
|
||||||
|
[
|
||||||
|
"Rad dreht",
|
||||||
|
"sensorWheel"
|
||||||
|
],
|
||||||
|
[
|
||||||
|
"^Motor ",
|
||||||
|
"motorOutput"
|
||||||
|
],
|
||||||
|
[
|
||||||
|
"MSS ausgel",
|
||||||
|
"motorProtection"
|
||||||
|
]
|
||||||
|
],
|
||||||
|
"fbtype_rules": [
|
||||||
|
{
|
||||||
|
"roles": [
|
||||||
|
"sensorPinQuery"
|
||||||
|
],
|
||||||
|
"fbType": "FB_ILS_MTRO_PinStore_Auto"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"roles": [
|
||||||
|
"sensorFinger"
|
||||||
|
],
|
||||||
|
"fbType": "FB_ILS_MTRO_Vario"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"roles": [
|
||||||
|
"sensorCarrInPos"
|
||||||
|
],
|
||||||
|
"fbType": "FB_ILS_MTRO_Vario"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"roles": [
|
||||||
|
"switchOutput",
|
||||||
|
"sensorInSep"
|
||||||
|
],
|
||||||
|
"fbType": "FB_ILS_MTRO_1Sep1Swi"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"roles": [
|
||||||
|
"sensorInSep"
|
||||||
|
],
|
||||||
|
"fbType": "FB_ILS_MTRO_1Sep"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"roles": [
|
||||||
|
"motorOutput"
|
||||||
|
],
|
||||||
|
"fbType": "FB_Conveyor"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"roles": [
|
||||||
|
"motorProtection"
|
||||||
|
],
|
||||||
|
"fbType": "FB_Conveyor"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"unit_re": "\\b(KR|CV)[-\\s]{0,2}(P?[MK]\\d{4}(?:_[A-Z])?)\\b",
|
||||||
|
"area_res": [
|
||||||
|
[
|
||||||
|
"Block ?(\\d\\.\\d(?:\\.\\d)?)",
|
||||||
|
"pinStoreBlock",
|
||||||
|
"Block {m}"
|
||||||
|
],
|
||||||
|
[
|
||||||
|
"\\bLS ?(\\d)\\b",
|
||||||
|
"loadingStation",
|
||||||
|
"LS{m}"
|
||||||
|
],
|
||||||
|
[
|
||||||
|
"\\bWS ?(\\d\\.\\d)\\b",
|
||||||
|
"workStation",
|
||||||
|
"WS{m}"
|
||||||
|
],
|
||||||
|
[
|
||||||
|
"\\bUZ(\\d{4})\\b",
|
||||||
|
"safetyZone",
|
||||||
|
"UZ{m}"
|
||||||
|
]
|
||||||
|
],
|
||||||
|
"fbtype_template": {
|
||||||
|
"FB_ILS_MTRO_1Sep": "call_1sep",
|
||||||
|
"FB_ILS_MTRO_1Sep1Swi": "call_1sep1swi",
|
||||||
|
"FB_ILS_MTRO_Vario": "call_vario",
|
||||||
|
"FB_ILS_MTRO_PinStore_Auto": "call_1sep",
|
||||||
|
"FB_Conveyor": "call_conveyor"
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,142 @@
|
|||||||
|
; ================================================================
|
||||||
|
; skel_scl.cfg — SCL-Templates fuer create_skel.py (INI-Style)
|
||||||
|
;
|
||||||
|
; Jede [sektion] ist ein Template; der Inhalt wird VERBATIM
|
||||||
|
; uebernommen (Einrueckung und Leerzeilen gehoeren zum Template,
|
||||||
|
; auch Leerzeilen am Blockende!). Zeilen, die mit ';' beginnen,
|
||||||
|
; sind Kommentare und werden ueberall ignoriert.
|
||||||
|
; Platzhalter im str.format()-Stil: {inst}, {tro_no}, {stopper} ...
|
||||||
|
; geschweifte Klammern im SCL selbst als {{ }} doppeln.
|
||||||
|
; ================================================================
|
||||||
|
; --------------------------------------------------------------
|
||||||
|
[var_decl]
|
||||||
|
{inst} : "{fbtype}"; // {comment}
|
||||||
|
; --------------------------------------------------------------
|
||||||
|
[call_1sep]
|
||||||
|
REGION {inst} ({shorttype}) — {comment}
|
||||||
|
#{inst}.stInSeparator1.Settings.nSeparatorNo := "cSep{tro_no}.1";
|
||||||
|
#{inst}.stInSeparator1.Settings.tDelayToNextItem := "TimeForSepWaiting_Short";
|
||||||
|
#{inst}.stInSeparator1.Settings.tTrailingTime := T#500ms; // TODO Timing
|
||||||
|
#{inst}.stInSeparator1.Settings.tHandlingTime := T#200ms; // TODO Timing
|
||||||
|
#{inst}.stInSeparator1.Settings.tJam := "TimeForSepJam";
|
||||||
|
#{inst}.stInSeparator1.stSenInSep := "DB_Inputs".Sensors["cIn{sen_in_sep}"];
|
||||||
|
#{inst}.stInSenJam2 := "DB_Inputs".Sensors["cIn{sen_jam}"];
|
||||||
|
|
||||||
|
#{inst}.stInPriorityManager.xReleaseOk := TRUE; // TODO Priority
|
||||||
|
|
||||||
|
#{inst}(nInMainTroNo := "cMainTro{tro_no}",
|
||||||
|
xInSftyOk := TRUE, // TODO Safety
|
||||||
|
xInAllRdyToStart := TRUE,
|
||||||
|
xInCarouselRun := TRUE, // TODO Conveyor
|
||||||
|
xInRelease := TRUE, // TODO Release
|
||||||
|
stInOutMachineState := #stInOutControlUnit, // TODO ControlUnit
|
||||||
|
arInOutJamEntr1 := "DB_JamArea{tro_no}".stJam{tro_no}_1.arCarrier, // TODO Topologie
|
||||||
|
stInOutJamEntr1 := "DB_JamArea{tro_no}".stJam{tro_no}_1.stData,
|
||||||
|
arInOutJamExit2 := "DB_JamArea{tro_no}".stJam{tro_no}_2.arCarrier, // TODO Topologie
|
||||||
|
stInOutJamExit2 := "DB_JamArea{tro_no}".stJam{tro_no}_2.stData,
|
||||||
|
xOutStopper1 => "{stopper}",
|
||||||
|
nOutStateLast => "DB_GLOB_TroState".arTroState["cMainTro{tro_no}"],
|
||||||
|
stInOutHMI := "DB_Interface_HMI".stTRO.{inst});
|
||||||
|
END_REGION
|
||||||
|
|
||||||
|
; --------------------------------------------------------------
|
||||||
|
[call_1sep1swi]
|
||||||
|
REGION {inst} ({shorttype}) — {comment}
|
||||||
|
#{inst}.stInSeparator1.Settings.nSeparatorNo := "cSep{tro_no}.1";
|
||||||
|
#{inst}.stInSeparator1.Settings.tDelayToNextItem := "TimeForSepWaiting_Short";
|
||||||
|
#{inst}.stInSeparator1.Settings.tTrailingTime := T#100ms; // TODO Timing
|
||||||
|
#{inst}.stInSeparator1.Settings.tHandlingTime := T#50ms; // TODO Timing
|
||||||
|
#{inst}.stInSeparator1.Settings.tJam := "TimeForSepJam";
|
||||||
|
#{inst}.stInSeparator1.stSenInSep := "DB_Inputs".Sensors["cIn{sen_in_sep}"];
|
||||||
|
#{inst}.stInSenJam2 := "DB_Inputs".Sensors["cIn{sen_jam}"];
|
||||||
|
#{inst}.stInSwitch1.Settings.nSwitchNo := "cSwi{tro_no}.1";
|
||||||
|
|
||||||
|
#{inst}(nInMainTroNo := "cMainTro{tro_no}",
|
||||||
|
xInSftyOk := TRUE, // TODO Safety
|
||||||
|
xInAllRdyToStart := TRUE,
|
||||||
|
xInCarouselRun1 := TRUE, // TODO Conveyor
|
||||||
|
xInRelease := TRUE, // TODO Release
|
||||||
|
stInOutMachineState := #stInOutControlUnit, // TODO ControlUnit
|
||||||
|
arInOutJamEntr1 := "DB_JamArea{tro_no}".stJam{tro_no}_1.arCarrier, // TODO Topologie
|
||||||
|
stInOutJamEntr1 := "DB_JamArea{tro_no}".stJam{tro_no}_1.stData,
|
||||||
|
arInOutJamExit2 := "DB_JamArea{tro_no}".stJam{tro_no}_2.arCarrier, // TODO Topologie (Dir1)
|
||||||
|
stInOutJamExit2 := "DB_JamArea{tro_no}".stJam{tro_no}_2.stData,
|
||||||
|
arInOutJamExit3 := "DB_JamArea{tro_no}".stJam{tro_no}_3.arCarrier, // TODO Topologie (Dir2)
|
||||||
|
stInOutJamExit3 := "DB_JamArea{tro_no}".stJam{tro_no}_3.stData,
|
||||||
|
xOutStopper1 => "{stopper}",
|
||||||
|
xOutSw1ExTo3 => "{switch_out}",
|
||||||
|
nOutStateLast => "DB_GLOB_TroState".arTroState["cMainTro{tro_no}"],
|
||||||
|
stInOutHMI := "DB_Interface_HMI".stTRO.{inst});
|
||||||
|
END_REGION
|
||||||
|
|
||||||
|
; --------------------------------------------------------------
|
||||||
|
[call_vario]
|
||||||
|
REGION {inst} ({shorttype}) — {comment}
|
||||||
|
#{inst}.stInSeparator1.Settings.nSeparatorNo := "cSep{tro_no}.1";
|
||||||
|
#{inst}.stInSeparator1.Settings.tDelayToNextItem := "TimeForSepWaiting_Short";
|
||||||
|
#{inst}.stInSeparator1.stSenInSep := "DB_Inputs".Sensors["cIn{sen_in_sep}"];
|
||||||
|
#{inst}.stInVario.stSenCarrInPos := "DB_Inputs".Sensors["cIn{sen_carr_in_pos}"];
|
||||||
|
#{inst}.stInVario.stSenFinger := "DB_Inputs".Sensors["cIn{sen_finger}"];
|
||||||
|
#{inst}.stInVario.stSenJam := "DB_Inputs".Sensors["cIn{sen_jam}"];
|
||||||
|
|
||||||
|
#{inst}(nInMainTroNo := "cMainTro{tro_no}",
|
||||||
|
xInSftyOk := TRUE, // TODO Safety
|
||||||
|
xInAllRdyToStart := TRUE,
|
||||||
|
xInRelease := TRUE, // TODO Release
|
||||||
|
stInOutMachineState := #stInOutControlUnit, // TODO ControlUnit
|
||||||
|
arInOutJamEntr1 := "DB_JamArea{tro_no}".stJam{tro_no}_1.arCarrier, // TODO Topologie
|
||||||
|
stInOutJamEntr1 := "DB_JamArea{tro_no}".stJam{tro_no}_1.stData,
|
||||||
|
arInOutJamFinger := "DB_JamArea{tro_no}".stJam{tro_no}_2.arCarrier, // TODO Topologie
|
||||||
|
xOutStopper => "{stopper}",
|
||||||
|
xOutVarioMotor => "{motor}",
|
||||||
|
nOutStateLast => "DB_GLOB_TroState".arTroState["cMainTro{tro_no}"],
|
||||||
|
stInOutHMI := "DB_Interface_HMI".stTRO.{inst});
|
||||||
|
END_REGION
|
||||||
|
|
||||||
|
; --------------------------------------------------------------
|
||||||
|
[call_conveyor]
|
||||||
|
REGION {inst} — {comment}
|
||||||
|
#{inst}.Settings.tEnergySafeTime := "cTimeEnergySafe";
|
||||||
|
#{inst}.Settings.xGridActive := FALSE; // TODO Grid
|
||||||
|
#{inst}.Settings.sMotorProtectName := '{motor_protection}';
|
||||||
|
|
||||||
|
#{inst}(xInEnabled := TRUE, // TODO Enable
|
||||||
|
xInMotorProtection := "{motor_protection}",
|
||||||
|
xInPowerContactor := "{motor}",
|
||||||
|
stInOutHMI := "DB_Interface_HMI".stConveyors.{inst});
|
||||||
|
END_REGION
|
||||||
|
|
||||||
|
; --------------------------------------------------------------
|
||||||
|
[call_sensor]
|
||||||
|
// {comment}
|
||||||
|
#fbSensorInput(stInSensorHW := "{bmk}",
|
||||||
|
nInSensorNo := "cIn{bmk}",
|
||||||
|
stInOutSensor := "DB_Inputs".Sensors["cIn{bmk}"]);
|
||||||
|
; --------------------------------------------------------------
|
||||||
|
[fb_main_frame]
|
||||||
|
FUNCTION_BLOCK "FB_Main_skel_{uh}"
|
||||||
|
{{ S7_Optimized_Access := 'TRUE' }}
|
||||||
|
VERSION : 0.1
|
||||||
|
// ============================================================
|
||||||
|
// AUTOMATISCH GENERIERTES GRUNDGERUEST — create_skel.py
|
||||||
|
// Quelle: E/A-Listen {uh} (data/)
|
||||||
|
// TODO-Marken kennzeichnen manuell zu ergaenzende Stellen
|
||||||
|
// (Timings, Topologie/JamAreas, Safety, Release, Priority).
|
||||||
|
// ============================================================
|
||||||
|
VAR
|
||||||
|
{var_block} END_VAR
|
||||||
|
|
||||||
|
BEGIN
|
||||||
|
{call_block}END_FUNCTION_BLOCK
|
||||||
|
; --------------------------------------------------------------
|
||||||
|
[fb_sensors_frame]
|
||||||
|
FUNCTION_BLOCK "FB_CallSensors_skel_{uh}"
|
||||||
|
{{ S7_Optimized_Access := 'TRUE' }}
|
||||||
|
VERSION : 0.1
|
||||||
|
// AUTOMATISCH GENERIERT — create_skel.py ({count} Sensoren)
|
||||||
|
VAR
|
||||||
|
fbSensorInput : "FB_SensorInput";
|
||||||
|
END_VAR
|
||||||
|
|
||||||
|
BEGIN
|
||||||
|
{call_block}END_FUNCTION_BLOCK
|
||||||
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
File diff suppressed because it is too large
Load Diff
@@ -0,0 +1,646 @@
|
|||||||
|
; ============================================================
|
||||||
|
; connect.ini — Routing / Zusammenhalt der TROs (hmf-connect-v1)
|
||||||
|
; Quelle: doc/TRO_Graph_UH01-UH05.dot (inhaltsgleich zu connect.json)
|
||||||
|
;
|
||||||
|
; [UHxx.nodes] TRO = <FB-Kurztyp> | <Kommentar>
|
||||||
|
; [UHxx.connections] cNNN = <von> -> <nach> | <JamArea> | <kind>
|
||||||
|
; kind: normal | dir2 | dir3 | bypass | finger
|
||||||
|
; (dir2/dir3 = Weichenausgang, Richtung aus FC_Direction)
|
||||||
|
; [UHxx.externals] eNNN = EXTERN -> <TRO> | <JamArea> (Zulauf)
|
||||||
|
; eNNN = <TRO> -> EXTERN | <JamArea> (Ablauf)
|
||||||
|
; JamArea JAxxxx_y entspricht "DB_JamAreaxxxx".stJamxxxx_y
|
||||||
|
; ============================================================
|
||||||
|
|
||||||
|
[UH01.nodes]
|
||||||
|
TRO100 = 1Sep | TRO 100 (1Sep)
|
||||||
|
TRO101 = EmptyCarrBuffer | TRO101 (Empty Buffer rechts)
|
||||||
|
TRO101_IN = 1Sep | TRO 101_IN(1Sep)
|
||||||
|
TRO102 = EmptyCarrBuffer | TRO102 (Empty Buffer links)
|
||||||
|
TRO102_IN = 1Sep | TRO 102_IN(1Sep)
|
||||||
|
TRO103 = 1Sep | TRO 103 (1Sep)
|
||||||
|
TRO104 = 1Sep | TRO 104 (1Sep)+Scanner
|
||||||
|
TRO105 = 1Sep_SSCC | TRO 105 (1Sep)+Scanner
|
||||||
|
TRO106 = 1Sep | TRO 106 (1Sep)
|
||||||
|
TRO107 = 1Sep1Swi | TRO 107(1Sep1Swi)
|
||||||
|
TRO108 = 1Sep | TRO 108 (1Sep)
|
||||||
|
TRO109 = 1Sep | TRO 109 (1Sep)+Scanner
|
||||||
|
TRO110 = 1Sep_SSCC | TRO 110 (1Sep)+Scanner
|
||||||
|
TRO111 = 1Sep | TRO 111 (1Sep)
|
||||||
|
TRO112 = 1Sep1Swi | TRO 112 (1Sep1Swi)
|
||||||
|
TRO113 = 1Sep | TRO 113 (1Sep)+Scanner
|
||||||
|
TRO114 = 1Sep1Swi | TRO 114 (1Sep1Switch)+Scanner
|
||||||
|
TRO115 = Vario | TRO 115 (Vario)
|
||||||
|
TRO116 = 1Sep | TRO 116 (1Sep)
|
||||||
|
TRO117 = 1Sep | TRO 117 (1Sep) + Scanner
|
||||||
|
TRO120 = Vario | TRO 120 (Vario)
|
||||||
|
TRO121 = Vario | TRO 121(Vario)
|
||||||
|
TRO122 = 1Sep | TRO 122 (1Sep)
|
||||||
|
TRO123 = Vario | TRO 123 (Vario)
|
||||||
|
TRO124 = 1Sep1Swi | TRO 124 (1Sep1Switch)
|
||||||
|
TRO125 = 1Sep | TRO 125 (1Sep)
|
||||||
|
TRO126 = Vario | TRO 126 (Vario)
|
||||||
|
TRO127 = Vario | TRO 127 (Vario)
|
||||||
|
TRO128 = Vario | TRO 128 (Vario)
|
||||||
|
TRO129 = 1Sep | TRO 129 (1Sep)
|
||||||
|
TRO130 = 1Sep | TRO 130 (1Sep)
|
||||||
|
TRO131 = Vario | TRO 131 (Vario)
|
||||||
|
TRO133 = Vario | TRO 133 (Vario)
|
||||||
|
TRO134 = Vario | TRO 134 (Vario)
|
||||||
|
fbLoadingBoom1 = LoadingBoom_INBOUND | LoadingBoom 1
|
||||||
|
fbLoadingBoom2 = LoadingBoom_INBOUND | LoadingBoom 2
|
||||||
|
|
||||||
|
[UH01.connections]
|
||||||
|
c001 = TRO128 -> TRO100 | JA0100_1 | finger
|
||||||
|
c002 = TRO100 -> TRO101_IN | JA0101_1 | normal
|
||||||
|
c003 = TRO101_IN -> TRO102_IN | JA0101_2 | normal
|
||||||
|
c004 = TRO102 -> TRO107 | JA0102_1 | normal
|
||||||
|
c005 = TRO117 -> TRO107 | JA0102_1 | normal
|
||||||
|
c006 = TRO101 -> TRO112 | JA0102_2 | normal
|
||||||
|
c007 = TRO106 -> TRO112 | JA0102_2 | normal
|
||||||
|
c008 = TRO107 -> TRO112 | JA0102_2 | dir2
|
||||||
|
c009 = TRO111 -> TRO113 | JA0102_3 | normal
|
||||||
|
c010 = TRO112 -> TRO113 | JA0102_3 | dir2
|
||||||
|
c011 = TRO113 -> TRO114 | JA0102_4 | normal
|
||||||
|
c012 = TRO114 -> TRO116 | JA0102_5 | dir2
|
||||||
|
c013 = TRO116 -> TRO117 | JA0102_6 | normal
|
||||||
|
c014 = TRO107 -> TRO103 | JA0103_1 | normal
|
||||||
|
c015 = TRO103 -> TRO104 | JA0104_1 | normal
|
||||||
|
c016 = TRO104 -> fbLoadingBoom1 | JA0104_2 | normal
|
||||||
|
c017 = fbLoadingBoom1 -> TRO105 | JA0104_3 | normal
|
||||||
|
c018 = TRO105 -> TRO106 | JA0106_2 | normal
|
||||||
|
c019 = TRO112 -> TRO108 | JA0107_1 | normal
|
||||||
|
c020 = TRO108 -> TRO109 | JA0108_1 | normal
|
||||||
|
c021 = TRO109 -> fbLoadingBoom2 | JA0108_2 | normal
|
||||||
|
c022 = fbLoadingBoom2 -> TRO110 | JA0108_3 | normal
|
||||||
|
c023 = TRO110 -> TRO111 | JA0110_2 | normal
|
||||||
|
c024 = TRO115 -> TRO120 | JA4103_1 | finger
|
||||||
|
c025 = TRO125 -> TRO126 | JA4203_1 | normal
|
||||||
|
c026 = TRO129 -> TRO130 | JA4204_1 | normal
|
||||||
|
c027 = TRO124 -> TRO125 | JA4204_2 | normal
|
||||||
|
c028 = TRO133 -> TRO129 | JA4302_2 | finger
|
||||||
|
c029 = TRO134 -> TRO131 | JA4403_1 | finger
|
||||||
|
c030 = TRO124 -> TRO127 | JA4501_1 | dir2
|
||||||
|
c031 = TRO130 -> TRO127 | JA4501_1 | normal
|
||||||
|
c032 = TRO127 -> TRO128 | JA4501_2 | finger
|
||||||
|
c033 = TRO122 -> TRO123 | JA4502_1 | normal
|
||||||
|
c034 = TRO123 -> TRO124 | JA4502_2 | finger
|
||||||
|
c035 = TRO121 -> TRO122 | JA4503_2 | finger
|
||||||
|
c036 = TRO101_IN -> TRO101 | JamBuffer101 | normal
|
||||||
|
c037 = TRO102_IN -> TRO102 | JamBuffer102 | normal
|
||||||
|
|
||||||
|
[UH01.externals]
|
||||||
|
e001 = EXTERN -> TRO115 | JA4104_1
|
||||||
|
e002 = EXTERN -> TRO133 | JA4302_1
|
||||||
|
e003 = EXTERN -> TRO134 | JA4402_1
|
||||||
|
e004 = EXTERN -> TRO121 | JA4503_1
|
||||||
|
|
||||||
|
[UH02.nodes]
|
||||||
|
TRO200 = Vario | TRO 200 (Vario)
|
||||||
|
TRO201 = 1Sep | TRO 201 (1Sep)
|
||||||
|
TRO202 = 1Sep1Swi | TRO 202 (1Sep1Switch)+Scanner(BX2103)
|
||||||
|
TRO203 = 1Sep1Swi | TRO 203 (1Sep1Switch) + Scanner (BX2111)
|
||||||
|
TRO204 = 1Sep1Swi | TRO 204(1Sep1Switch) + Scanner(BX2112)
|
||||||
|
TRO205 = 1Sep1Swi | TRO 205 (1Sep1Switch) + Scanner(BX2114)
|
||||||
|
TRO206 = 1Sep1Swi | TRO 206 (1Sep1Switch)+Scanner(BX2113)
|
||||||
|
TRO207 = 1Sep | TRO 207(1Sep)
|
||||||
|
TRO208 = PinStore_Auto | Aufruf: TRO208
|
||||||
|
TRO209 = Vario | TRO 209 (Vario)
|
||||||
|
TRO210 = 1Sep | TRO 210 (1Sep)
|
||||||
|
TRO211 = PinStore_Auto | Aufruf: TRO211
|
||||||
|
TRO212 = Vario | TRO 212 (Vario)
|
||||||
|
TRO213 = 1Sep | TRO 213 (1Sep)
|
||||||
|
TRO214 = PinStore_Auto | Aufruf: TRO214
|
||||||
|
TRO215 = Vario | TRO 215 (Vario)
|
||||||
|
TRO216 = 1Sep | TRO 216 (1Sep)
|
||||||
|
TRO217 = PinStore_Auto | Aufruf: TRO217
|
||||||
|
TRO218 = Vario | TRO 218 (Vario)
|
||||||
|
TRO219 = 1Sep | TRO 219(1Sep)
|
||||||
|
TRO220 = Vario | TRO 220 (Vario)
|
||||||
|
TRO221 = 1Sep | TRO 221 (1Sep)
|
||||||
|
TRO222 = 1Sep1Swi | TRO 222 (1Sep1Switch)+Scanner(BX2121)
|
||||||
|
TRO223 = 1Sep1Swi | TRO 223 (1Sep1Switch)+Scanner(BX2126)
|
||||||
|
TRO224 = 1Sep1Swi | TRO 224 (1Sep1Switch)+Scanner(BX2127)
|
||||||
|
TRO225 = 1Sep1Swi | TRO 225(1Sep1Switch)+Scanner(BX2129)
|
||||||
|
TRO226 = 1Sep1Swi | TRO 226 (1Sep1Switch)+Scanner(BX2128)
|
||||||
|
TRO227 = 1Sep | TRO 227 (1Sep)
|
||||||
|
TRO228 = PinStore_Auto | Aufruf: TRO228
|
||||||
|
TRO229 = Vario | TRO 229 (Vario)
|
||||||
|
TRO230 = 1Sep | TRO 230 (1Sep)
|
||||||
|
TRO231 = PinStore_Auto | Aufruf: TRO231
|
||||||
|
TRO232 = Vario | TRO 232 (Vario)
|
||||||
|
TRO233 = 1Sep | TRO 233 (1Sep)
|
||||||
|
TRO234 = PinStore_Auto | Aufruf: TRO234
|
||||||
|
TRO235 = Vario | TRO 235 (Vario)
|
||||||
|
TRO236 = 1Sep | TRO 236 (1Sep)
|
||||||
|
TRO237 = PinStore_Auto | Aufruf: TRO237
|
||||||
|
TRO238 = Vario | TRO 238 (Vario)
|
||||||
|
TRO239 = 1Sep | TRO 239 (1Sep)
|
||||||
|
TRO240 = Vario | TRO 240 (Vario)
|
||||||
|
TRO241 = 1Sep | TRO 241(1Sep)
|
||||||
|
TRO242 = 1Sep1Swi | TRO 242 (1Sep1Switch)+Scanner(BX2130)
|
||||||
|
TRO243 = 1Sep1Swi | TRO 243 (1Sep1Switch)+Scanner(BX3137)
|
||||||
|
TRO244 = 1Sep1Swi | TRO 244 (1Sep1Switch)+Scanner(BX2136)
|
||||||
|
TRO245 = 1Sep1Swi | TRO 245 (1Sep1Switch)+Scanner(BX2138)
|
||||||
|
TRO246 = 1Sep1Swi | TRO 246 (1Sep1Switch)+Scanner(BX2137)
|
||||||
|
TRO247 = 1Sep | TRO 247(1Sep)
|
||||||
|
TRO248 = PinStore_Auto | Aufruf: TRO248
|
||||||
|
TRO249 = Vario | TRO 249 (Vario)
|
||||||
|
TRO250 = 1Sep | TRO 250 (1Sep)
|
||||||
|
TRO251 = PinStore_Auto | Aufruf: TRO251
|
||||||
|
TRO252 = Vario | TRO 252 (Vario)
|
||||||
|
TRO253 = 1Sep | TRO 253 (1Sep)
|
||||||
|
TRO254 = PinStore_Auto | Aufruf: TRO254
|
||||||
|
TRO255 = Vario | TRO 255 (Vario)
|
||||||
|
TRO256 = 1Sep | TRO 256 (1Sep)
|
||||||
|
TRO257 = PinStore_Auto | Aufruf: TRO257
|
||||||
|
TRO258 = Vario | TRO 258 (Vario)
|
||||||
|
TRO259 = 1Sep | TRO 259 (1Sep)
|
||||||
|
TRO260 = Vario | TRO 260 (Vario) + Scanner (BX2115)
|
||||||
|
TRO261 = 1Sep | TRO 261 (1Sep)
|
||||||
|
TRO262 = Vario | TRO 262 (Vario) + Scanner (BX2109)
|
||||||
|
TRO263 = 1Sep | TRO 263 (1Sep)
|
||||||
|
TRO264 = Vario | TRO 264 (Vario) + Scanner (BX2108)
|
||||||
|
TRO265 = 1Sep | TRO 265 (1Sep)
|
||||||
|
TRO266 = 1Sep | TRO 266(1Sep)
|
||||||
|
TRO267 = 1Sep2Swi | TRO 267 (1Sep2Switch)+Scanner(BX2100)
|
||||||
|
TRO268 = 1Sep2Swi | TRO 268 (1Sep2Switch)+Scanner(BX2101)
|
||||||
|
TRO269 = 1Sep | TRO 269 (1Sep)+Scanner (BX2102)
|
||||||
|
TRO270 = Vario | TRO 270 (Vario)
|
||||||
|
TRO272 = Vario | TRO 272 (Vario)
|
||||||
|
TRO274 = 1Sep | TRO 274 (1Sep)
|
||||||
|
TRO275 = 1Sep | TRO 275 (1Sep)
|
||||||
|
|
||||||
|
[UH02.connections]
|
||||||
|
c001 = TRO202 -> TRO211 | JA1101_1 | dir2
|
||||||
|
c002 = TRO213 -> TRO211 | JA1101_1 | normal
|
||||||
|
c003 = TRO211 -> TRO208 | JA1101_2 | bypass
|
||||||
|
c004 = TRO210 -> TRO208 | JA1101_2 | normal
|
||||||
|
c005 = TRO201 -> TRO202 | JA1102_1 | normal
|
||||||
|
c006 = TRO202 -> TRO214 | JA1102_2 | normal
|
||||||
|
c007 = TRO216 -> TRO214 | JA1102_2 | normal
|
||||||
|
c008 = TRO214 -> TRO217 | JA1102_3 | bypass
|
||||||
|
c009 = TRO219 -> TRO217 | JA1102_3 | normal
|
||||||
|
c010 = TRO208 -> TRO203 | JA1103_1 | normal
|
||||||
|
c011 = TRO211 -> TRO204 | JA1103_2 | normal
|
||||||
|
c012 = TRO203 -> TRO204 | JA1103_2 | dir2
|
||||||
|
c013 = TRO217 -> TRO205 | JA1104_1 | normal
|
||||||
|
c014 = TRO214 -> TRO206 | JA1104_2 | normal
|
||||||
|
c015 = TRO205 -> TRO206 | JA1104_2 | normal
|
||||||
|
c016 = TRO204 -> TRO207 | JA1104_3 | dir2
|
||||||
|
c017 = TRO206 -> TRO207 | JA1104_3 | normal
|
||||||
|
c018 = TRO203 -> TRO209 | JA1105_1 | normal
|
||||||
|
c019 = TRO209 -> TRO210 | JA1105_2 | finger
|
||||||
|
c020 = TRO204 -> TRO212 | JA1106_1 | normal
|
||||||
|
c021 = TRO212 -> TRO213 | JA1106_2 | finger
|
||||||
|
c022 = TRO206 -> TRO215 | JA1107_1 | dir2
|
||||||
|
c023 = TRO215 -> TRO216 | JA1107_2 | finger
|
||||||
|
c024 = TRO205 -> TRO218 | JA1108_1 | dir2
|
||||||
|
c025 = TRO218 -> TRO219 | JA1108_2 | finger
|
||||||
|
c026 = TRO200 -> TRO201 | JA1109_2 | finger
|
||||||
|
c027 = TRO268 -> TRO269 | JA1110_1 | dir3
|
||||||
|
c028 = TRO261 -> TRO274 | JA1110_2 | normal
|
||||||
|
c029 = TRO269 -> TRO274 | JA1110_2 | normal
|
||||||
|
c030 = TRO263 -> TRO266 | JA1110_3 | normal
|
||||||
|
c031 = TRO274 -> TRO266 | JA1110_3 | normal
|
||||||
|
c032 = TRO265 -> TRO267 | JA1110_4 | normal
|
||||||
|
c033 = TRO266 -> TRO267 | JA1110_4 | normal
|
||||||
|
c034 = TRO267 -> TRO275 | JA1110_5 | dir3
|
||||||
|
c035 = TRO275 -> TRO268 | JA1110_6 | normal
|
||||||
|
c036 = TRO222 -> TRO231 | JA1201_1 | dir2
|
||||||
|
c037 = TRO233 -> TRO231 | JA1201_1 | normal
|
||||||
|
c038 = TRO231 -> TRO228 | JA1201_2 | bypass
|
||||||
|
c039 = TRO230 -> TRO228 | JA1201_2 | normal
|
||||||
|
c040 = TRO221 -> TRO222 | JA1202_1 | normal
|
||||||
|
c041 = TRO222 -> TRO234 | JA1202_2 | normal
|
||||||
|
c042 = TRO236 -> TRO234 | JA1202_2 | normal
|
||||||
|
c043 = TRO234 -> TRO237 | JA1202_3 | bypass
|
||||||
|
c044 = TRO239 -> TRO237 | JA1202_3 | normal
|
||||||
|
c045 = TRO228 -> TRO223 | JA1203_1 | normal
|
||||||
|
c046 = TRO231 -> TRO224 | JA1203_2 | normal
|
||||||
|
c047 = TRO223 -> TRO224 | JA1203_2 | dir2
|
||||||
|
c048 = TRO237 -> TRO225 | JA1204_1 | normal
|
||||||
|
c049 = TRO234 -> TRO226 | JA1204_2 | normal
|
||||||
|
c050 = TRO225 -> TRO226 | JA1204_2 | normal
|
||||||
|
c051 = TRO224 -> TRO227 | JA1204_3 | dir2
|
||||||
|
c052 = TRO226 -> TRO227 | JA1204_3 | normal
|
||||||
|
c053 = TRO223 -> TRO229 | JA1205_1 | normal
|
||||||
|
c054 = TRO229 -> TRO230 | JA1205_2 | finger
|
||||||
|
c055 = TRO224 -> TRO232 | JA1206_1 | normal
|
||||||
|
c056 = TRO232 -> TRO233 | JA1206_2 | finger
|
||||||
|
c057 = TRO226 -> TRO235 | JA1207_1 | dir2
|
||||||
|
c058 = TRO235 -> TRO236 | JA1207_2 | finger
|
||||||
|
c059 = TRO225 -> TRO238 | JA1208_1 | dir2
|
||||||
|
c060 = TRO238 -> TRO239 | JA1208_2 | finger
|
||||||
|
c061 = TRO220 -> TRO221 | JA1209_2 | finger
|
||||||
|
c062 = TRO248 -> TRO243 | JA1301_1 | normal
|
||||||
|
c063 = TRO251 -> TRO244 | JA1301_2 | normal
|
||||||
|
c064 = TRO243 -> TRO244 | JA1301_2 | normal
|
||||||
|
c065 = TRO257 -> TRO245 | JA1302_1 | normal
|
||||||
|
c066 = TRO254 -> TRO246 | JA1302_2 | normal
|
||||||
|
c067 = TRO245 -> TRO246 | JA1302_2 | dir2
|
||||||
|
c068 = TRO242 -> TRO251 | JA1303_1 | normal
|
||||||
|
c069 = TRO253 -> TRO251 | JA1303_1 | normal
|
||||||
|
c070 = TRO251 -> TRO248 | JA1303_2 | bypass
|
||||||
|
c071 = TRO250 -> TRO248 | JA1303_2 | normal
|
||||||
|
c072 = TRO241 -> TRO242 | JA1304_1 | normal
|
||||||
|
c073 = TRO242 -> TRO254 | JA1304_2 | dir2
|
||||||
|
c074 = TRO256 -> TRO254 | JA1304_2 | normal
|
||||||
|
c075 = TRO254 -> TRO257 | JA1304_3 | bypass
|
||||||
|
c076 = TRO259 -> TRO257 | JA1304_3 | normal
|
||||||
|
c077 = TRO243 -> TRO249 | JA1305_1 | dir2
|
||||||
|
c078 = TRO249 -> TRO250 | JA1305_2 | finger
|
||||||
|
c079 = TRO244 -> TRO252 | JA1306_1 | dir2
|
||||||
|
c080 = TRO252 -> TRO253 | JA1306_2 | finger
|
||||||
|
c081 = TRO246 -> TRO255 | JA1307_1 | normal
|
||||||
|
c082 = TRO255 -> TRO256 | JA1307_2 | finger
|
||||||
|
c083 = TRO245 -> TRO258 | JA1308_1 | normal
|
||||||
|
c084 = TRO258 -> TRO259 | JA1308_2 | finger
|
||||||
|
c085 = TRO240 -> TRO241 | JA1309_2 | finger
|
||||||
|
c086 = TRO264 -> TRO265 | JA1401_2 | finger
|
||||||
|
c087 = TRO262 -> TRO263 | JA1501_2 | finger
|
||||||
|
c088 = TRO260 -> TRO261 | JA1601_2 | finger
|
||||||
|
|
||||||
|
[UH02.externals]
|
||||||
|
e001 = EXTERN -> TRO200 | JA1109_1
|
||||||
|
e002 = EXTERN -> TRO220 | JA1209_1
|
||||||
|
e003 = TRO244 -> EXTERN | JA1302_3
|
||||||
|
e004 = TRO246 -> EXTERN | JA1302_3
|
||||||
|
e005 = EXTERN -> TRO240 | JA1309_1
|
||||||
|
e006 = EXTERN -> TRO264 | JA1401_1
|
||||||
|
e007 = EXTERN -> TRO262 | JA1501_1
|
||||||
|
e008 = EXTERN -> TRO260 | JA1601_1
|
||||||
|
e009 = EXTERN -> TRO272 | JA1801_1
|
||||||
|
e010 = EXTERN -> TRO270 | JA4701_1
|
||||||
|
e011 = EXTERN -> TRO208 | Storage1.1.1
|
||||||
|
e012 = EXTERN -> TRO211 | Storage1.1.2
|
||||||
|
e013 = EXTERN -> TRO214 | Storage1.1.3
|
||||||
|
e014 = EXTERN -> TRO217 | Storage1.1.4
|
||||||
|
e015 = EXTERN -> TRO228 | Storage1.2.1
|
||||||
|
e016 = EXTERN -> TRO231 | Storage1.2.2
|
||||||
|
e017 = EXTERN -> TRO234 | Storage1.2.3
|
||||||
|
e018 = EXTERN -> TRO237 | Storage1.2.4
|
||||||
|
e019 = EXTERN -> TRO248 | Storage1.3.1
|
||||||
|
e020 = EXTERN -> TRO251 | Storage1.3.2
|
||||||
|
e021 = EXTERN -> TRO254 | Storage1.3.3
|
||||||
|
e022 = EXTERN -> TRO257 | Storage1.3.4
|
||||||
|
e023 = TRO207 -> EXTERN | IO_Device_UH02_TO_UH01.stCARRIER_INFO
|
||||||
|
e024 = TRO227 -> EXTERN | IO_Device_UH02_TO_UH01.stCARRIER_INFO_1
|
||||||
|
e025 = TRO247 -> EXTERN | IO_Device_UH02_TO_UH01.stCARRIER_INFO_2
|
||||||
|
|
||||||
|
[UH03.nodes]
|
||||||
|
TRO300 = Vario | TRO 300 (Vario)
|
||||||
|
TRO301 = 1Sep | TRO 301(1Sep)
|
||||||
|
TRO302 = Vario | TRO 302 (Vario)
|
||||||
|
TRO303 = Vario | TRO 303 (Vario)
|
||||||
|
TRO304 = 1Sep | TRO 304(1Sep)
|
||||||
|
TRO305 = Vario | TRO 305 (Vario)
|
||||||
|
TRO306 = Vario | TRO 306 (Vario)
|
||||||
|
TRO307 = Vario | TRO 307 (Vario)
|
||||||
|
TRO308 = Vario | TRO 308 (Vario)
|
||||||
|
TRO309 = 1Sep | TRO 309 (1Sep)
|
||||||
|
TRO310 = 1Sep | TRO 310 (1Sep)+Scanner (BX3102)
|
||||||
|
TRO311 = 1Sep | TRO 311 (1Sep)+Scanner(BX3101)
|
||||||
|
TRO312 = 1Sep | TRO 312 (1Sep)+Scanner(BX3100)
|
||||||
|
TRO313 = 1Sep1Swi | TRO 313 (1Sep1Switch)+Scanner(BX3103)
|
||||||
|
TRO314 = 1Sep1Swi | TRO 314 (1Sep1Switch)+Scanner(BX3104)
|
||||||
|
TRO315 = 1Sep | TRO 315 (1Sep)
|
||||||
|
TRO316 = 1Sep | TRO 316 (1Sep)
|
||||||
|
TRO317 = 1Sep1Swi | TRO 317 (1Sep1Switch)+Scanner(BX3105)
|
||||||
|
TRO318 = 1Sep1Swi | TRO 318 (1Sep1Switch) + Scanner(BX3106)
|
||||||
|
TRO319 = 1Sep1Swi | TRO 319 (1Sep1Switch) + Scanner (BX3111)
|
||||||
|
TRO320 = 1Sep1Swi | TRO 320 (1Sep1Switch) + Scanner(BX3112)
|
||||||
|
TRO321 = 1Sep1Swi | TRO 321 (1Sep1Switch) + Scanner(BX3114)
|
||||||
|
TRO322 = 1Sep1Swi | TRO 322 (1Sep1Switch)+Scanner(BX3113)
|
||||||
|
TRO323 = 1Sep | TRO 323 (1Sep)
|
||||||
|
TRO324 = Vario | TRO 324 (Vario)
|
||||||
|
TRO325 = 1Sep | TRO 325 (1Sep)
|
||||||
|
TRO326 = 1Sep | TRO 326 (1Sep)
|
||||||
|
TRO327 = PinStore_Auto | Aufruf: TRO327
|
||||||
|
TRO328 = Vario | TRO 328 (Vario)
|
||||||
|
TRO329 = 1Sep | TRO 329 (1Sep)
|
||||||
|
TRO330 = PinStore_Auto | Aufruf: TRO330
|
||||||
|
TRO331 = Vario | TRO 331 (Vario)
|
||||||
|
TRO332 = 1Sep | TRO 332 (1Sep)
|
||||||
|
TRO333 = PinStore_Auto | Aufruf: TRO333
|
||||||
|
TRO334 = Vario | TRO 334 (Vario)
|
||||||
|
TRO335 = 1Sep | TRO 335 (1Sep)
|
||||||
|
TRO336 = PinStore_Auto | Aufruf: TRO336
|
||||||
|
TRO337 = Vario | TRO 337 (Vario)
|
||||||
|
TRO338 = 1Sep | TRO 338 (1Sep)
|
||||||
|
TRO339 = 1Sep1Swi | TRO 339 (1Sep1Switch)+Scanner(BX3120)
|
||||||
|
TRO340 = 1Sep1Swi | TRO 340 (1Sep1Switch)+Scanner(BX3121)
|
||||||
|
TRO341 = 1Sep1Swi | TRO 341 (1Sep1Switch)+Scanner(BX3126)
|
||||||
|
TRO342 = 1Sep1Swi | TRO 342 (1Sep1Switch)+Scanner(BX3127)
|
||||||
|
TRO343 = 1Sep1Swi | TRO 343 (1Sep1Switch)+Scanner(BX3129)
|
||||||
|
TRO344 = 1Sep1Swi | TRO 344 (1Sep1Switch)+Scanner(BX3128)
|
||||||
|
TRO345 = 1Sep | TRO 345 (1Sep)
|
||||||
|
TRO346 = Vario | TRO 346 (Vario)
|
||||||
|
TRO347 = 1Sep | TRO 347 (1Sep)
|
||||||
|
TRO348 = 1Sep | TRO 348 (1Sep)
|
||||||
|
TRO349 = PinStore_Auto | Aufruf: TRO349
|
||||||
|
TRO350 = Vario | TRO 350 (Vario)
|
||||||
|
TRO351 = 1Sep | TRO 351 (1Sep)
|
||||||
|
TRO352 = PinStore_Auto | Aufruf: TRO352
|
||||||
|
TRO353 = Vario | TRO 353 (Vario)
|
||||||
|
TRO354 = 1Sep | TRO 354 (1Sep)
|
||||||
|
TRO355 = PinStore_Auto | Aufruf: TRO355
|
||||||
|
TRO356 = Vario | TRO 356 (Vario)
|
||||||
|
TRO357 = 1Sep | TRO 357 (1Sep)
|
||||||
|
TRO358 = PinStore_Auto | Aufruf: TRO358
|
||||||
|
TRO359 = Vario | TRO 359 (Vario)
|
||||||
|
TRO360 = 1Sep | TRO 360 (1Sep)
|
||||||
|
TRO361 = 1Sep1Swi | TRO 361 (1Sep1Switch)+Scanner(BX3131)
|
||||||
|
TRO362 = 1Sep1Swi | TRO 362 (1Sep1Switch)+Scanner(BX3132)
|
||||||
|
TRO363 = 1Sep1Swi | TRO 363 (1Sep1Switch)+Scanner(BX3137)
|
||||||
|
TRO364 = 1Sep1Swi | TRO 364 (1Sep1Switch)+Scanner(BX3138)
|
||||||
|
TRO365 = 1Sep1Swi | TRO 365 (1Sep1Switch)+Scanner(BX3140)
|
||||||
|
TRO366 = 1Sep1Swi | TRO 366 (1Sep1Switch)+Scanner(BX3139)
|
||||||
|
TRO367 = 1Sep | TRO 367 (1Sep)
|
||||||
|
TRO368 = Vario | TRO 368 (Vario, from Lvl1)
|
||||||
|
TRO369 = 1Sep | TRO 369 (1Sep)
|
||||||
|
TRO370 = 1Sep | TRO 370 (1Sep)
|
||||||
|
TRO371 = PinStore_Auto | Aufruf: TRO371
|
||||||
|
TRO372 = Vario | TRO 372 (Vario)
|
||||||
|
TRO373 = 1Sep | TRO 373 (1Sep)
|
||||||
|
TRO374 = PinStore_Auto | Aufruf: TRO374
|
||||||
|
TRO375 = Vario | TRO 375 (Vario)
|
||||||
|
TRO376 = 1Sep | TRO 376 (1Sep)
|
||||||
|
TRO377 = PinStore_Auto | Aufruf: TRO377
|
||||||
|
TRO378 = Vario | TRO 378 (Vario)
|
||||||
|
TRO379 = 1Sep | TRO 379 (1Sep)
|
||||||
|
TRO380 = PinStore_Auto | Aufruf: TRO380
|
||||||
|
TRO381 = Vario | TRO 381 (Vario)
|
||||||
|
TRO382 = 1Sep | TRO 382 (1Sep)
|
||||||
|
TRO386 = 1Sep | TRO 386 (1Sep) - kam später dazu
|
||||||
|
|
||||||
|
[UH03.connections]
|
||||||
|
c001 = TRO318 -> TRO330 | JA2101_1 | dir2
|
||||||
|
c002 = TRO332 -> TRO330 | JA2101_1 | normal
|
||||||
|
c003 = TRO330 -> TRO327 | JA2101_2 | bypass
|
||||||
|
c004 = TRO329 -> TRO327 | JA2101_2 | normal
|
||||||
|
c005 = TRO315 -> TRO317 | JA2102_1 | normal
|
||||||
|
c006 = TRO317 -> TRO318 | JA2102_2 | normal
|
||||||
|
c007 = TRO318 -> TRO333 | JA2102_3 | normal
|
||||||
|
c008 = TRO335 -> TRO333 | JA2102_3 | normal
|
||||||
|
c009 = TRO333 -> TRO336 | JA2102_4 | bypass
|
||||||
|
c010 = TRO338 -> TRO336 | JA2102_4 | normal
|
||||||
|
c011 = TRO327 -> TRO319 | JA2103_1 | normal
|
||||||
|
c012 = TRO330 -> TRO320 | JA2103_2 | normal
|
||||||
|
c013 = TRO319 -> TRO320 | JA2103_2 | dir2
|
||||||
|
c014 = TRO336 -> TRO321 | JA2104_1 | normal
|
||||||
|
c015 = TRO333 -> TRO322 | JA2104_2 | normal
|
||||||
|
c016 = TRO321 -> TRO322 | JA2104_2 | normal
|
||||||
|
c017 = TRO320 -> TRO323 | JA2104_3 | dir2
|
||||||
|
c018 = TRO322 -> TRO323 | JA2104_3 | normal
|
||||||
|
c019 = TRO323 -> TRO326 | JA2104_4 | normal
|
||||||
|
c020 = TRO325 -> TRO326 | JA2104_4 | normal
|
||||||
|
c021 = TRO319 -> TRO328 | JA2105_1 | normal
|
||||||
|
c022 = TRO328 -> TRO329 | JA2105_2 | finger
|
||||||
|
c023 = TRO320 -> TRO331 | JA2106_1 | normal
|
||||||
|
c024 = TRO331 -> TRO332 | JA2106_2 | finger
|
||||||
|
c025 = TRO322 -> TRO334 | JA2107_1 | dir2
|
||||||
|
c026 = TRO334 -> TRO335 | JA2107_2 | finger
|
||||||
|
c027 = TRO321 -> TRO337 | JA2108_1 | dir2
|
||||||
|
c028 = TRO337 -> TRO338 | JA2108_2 | finger
|
||||||
|
c029 = TRO324 -> TRO325 | JA2109_2 | finger
|
||||||
|
c030 = TRO386 -> TRO310 | JA2110_1 | normal
|
||||||
|
c031 = TRO310 -> TRO313 | JA2110_2 | normal
|
||||||
|
c032 = TRO311 -> TRO313 | JA2110_2 | normal
|
||||||
|
c033 = TRO312 -> TRO313 | JA2110_2 | normal
|
||||||
|
c034 = TRO313 -> TRO314 | JA2110_3 | dir2
|
||||||
|
c035 = TRO314 -> TRO315 | JA2110_4 | dir2
|
||||||
|
c036 = TRO309 -> TRO386 | JA2110_5 | normal
|
||||||
|
c037 = TRO308 -> TRO309 | JA2111_2 | finger
|
||||||
|
c038 = TRO313 -> TRO316 | JA2112_1 | normal
|
||||||
|
c039 = TRO340 -> TRO352 | JA2201_1 | dir2
|
||||||
|
c040 = TRO354 -> TRO352 | JA2201_1 | normal
|
||||||
|
c041 = TRO352 -> TRO349 | JA2201_2 | bypass
|
||||||
|
c042 = TRO351 -> TRO349 | JA2201_2 | normal
|
||||||
|
c043 = TRO314 -> TRO339 | JA2202_1 | normal
|
||||||
|
c044 = TRO339 -> TRO340 | JA2202_2 | normal
|
||||||
|
c045 = TRO340 -> TRO355 | JA2202_3 | normal
|
||||||
|
c046 = TRO357 -> TRO355 | JA2202_3 | normal
|
||||||
|
c047 = TRO355 -> TRO358 | JA2202_4 | bypass
|
||||||
|
c048 = TRO360 -> TRO358 | JA2202_4 | normal
|
||||||
|
c049 = TRO349 -> TRO341 | JA2203_1 | normal
|
||||||
|
c050 = TRO352 -> TRO342 | JA2203_2 | normal
|
||||||
|
c051 = TRO341 -> TRO342 | JA2203_2 | dir2
|
||||||
|
c052 = TRO358 -> TRO343 | JA2204_1 | normal
|
||||||
|
c053 = TRO355 -> TRO344 | JA2204_2 | normal
|
||||||
|
c054 = TRO343 -> TRO344 | JA2204_2 | normal
|
||||||
|
c055 = TRO342 -> TRO345 | JA2204_3 | dir2
|
||||||
|
c056 = TRO344 -> TRO345 | JA2204_3 | normal
|
||||||
|
c057 = TRO345 -> TRO348 | JA2204_4 | normal
|
||||||
|
c058 = TRO347 -> TRO348 | JA2204_4 | normal
|
||||||
|
c059 = TRO341 -> TRO350 | JA2205_1 | normal
|
||||||
|
c060 = TRO350 -> TRO351 | JA2205_2 | finger
|
||||||
|
c061 = TRO342 -> TRO353 | JA2206_1 | normal
|
||||||
|
c062 = TRO353 -> TRO354 | JA2206_2 | finger
|
||||||
|
c063 = TRO344 -> TRO356 | JA2207_1 | dir2
|
||||||
|
c064 = TRO356 -> TRO357 | JA2207_2 | finger
|
||||||
|
c065 = TRO343 -> TRO359 | JA2208_1 | dir2
|
||||||
|
c066 = TRO359 -> TRO360 | JA2208_2 | finger
|
||||||
|
c067 = TRO346 -> TRO347 | JA2209_2 | finger
|
||||||
|
c068 = TRO371 -> TRO363 | JA2301_1 | normal
|
||||||
|
c069 = TRO374 -> TRO364 | JA2301_2 | normal
|
||||||
|
c070 = TRO363 -> TRO364 | JA2301_2 | normal
|
||||||
|
c071 = TRO380 -> TRO365 | JA2302_1 | normal
|
||||||
|
c072 = TRO377 -> TRO366 | JA2302_2 | normal
|
||||||
|
c073 = TRO365 -> TRO366 | JA2302_2 | dir2
|
||||||
|
c074 = TRO364 -> TRO367 | JA2302_3 | normal
|
||||||
|
c075 = TRO366 -> TRO367 | JA2302_3 | dir2
|
||||||
|
c076 = TRO367 -> TRO370 | JA2302_4 | normal
|
||||||
|
c077 = TRO369 -> TRO370 | JA2302_4 | normal
|
||||||
|
c078 = TRO362 -> TRO374 | JA2303_1 | normal
|
||||||
|
c079 = TRO376 -> TRO374 | JA2303_1 | normal
|
||||||
|
c080 = TRO374 -> TRO371 | JA2303_2 | bypass
|
||||||
|
c081 = TRO373 -> TRO371 | JA2303_2 | normal
|
||||||
|
c082 = TRO316 -> TRO361 | JA2304_1 | normal
|
||||||
|
c083 = TRO361 -> TRO362 | JA2304_2 | dir2
|
||||||
|
c084 = TRO362 -> TRO377 | JA2304_3 | dir2
|
||||||
|
c085 = TRO379 -> TRO377 | JA2304_3 | normal
|
||||||
|
c086 = TRO377 -> TRO380 | JA2304_4 | bypass
|
||||||
|
c087 = TRO382 -> TRO380 | JA2304_4 | normal
|
||||||
|
c088 = TRO363 -> TRO372 | JA2305_1 | dir2
|
||||||
|
c089 = TRO372 -> TRO373 | JA2305_2 | finger
|
||||||
|
c090 = TRO364 -> TRO375 | JA2306_1 | dir2
|
||||||
|
c091 = TRO375 -> TRO376 | JA2306_2 | finger
|
||||||
|
c092 = TRO366 -> TRO378 | JA2307_1 | normal
|
||||||
|
c093 = TRO378 -> TRO379 | JA2307_2 | finger
|
||||||
|
c094 = TRO365 -> TRO381 | JA2308_1 | normal
|
||||||
|
c095 = TRO381 -> TRO382 | JA2308_2 | finger
|
||||||
|
c096 = TRO368 -> TRO369 | JA2309_2 | finger
|
||||||
|
c097 = TRO300 -> TRO302 | JA4101_1 | finger
|
||||||
|
c098 = TRO301 -> TRO302 | JA4101_1 | normal
|
||||||
|
c099 = TRO302 -> TRO311 | JA4101_2 | finger
|
||||||
|
c100 = TRO303 -> TRO305 | JA4201_1 | finger
|
||||||
|
c101 = TRO304 -> TRO305 | JA4201_1 | normal
|
||||||
|
c102 = TRO305 -> TRO312 | JA4201_2 | finger
|
||||||
|
|
||||||
|
[UH03.externals]
|
||||||
|
e001 = TRO336 -> EXTERN | JA2102_5
|
||||||
|
e002 = EXTERN -> TRO324 | JA2109_1
|
||||||
|
e003 = EXTERN -> TRO308 | JA2111_1
|
||||||
|
e004 = TRO358 -> EXTERN | JA2202_5
|
||||||
|
e005 = EXTERN -> TRO346 | JA2209_1
|
||||||
|
e006 = EXTERN -> TRO368 | JA2309_1
|
||||||
|
e007 = EXTERN -> TRO300 | JA4102_1
|
||||||
|
e008 = EXTERN -> TRO301 | JA4102_2
|
||||||
|
e009 = EXTERN -> TRO303 | JA4202_1
|
||||||
|
e010 = EXTERN -> TRO304 | JA4202_2
|
||||||
|
e011 = EXTERN -> TRO306 | JA4301_1
|
||||||
|
e012 = EXTERN -> TRO307 | JA4401_1
|
||||||
|
e013 = EXTERN -> TRO327 | Storage2.1.1
|
||||||
|
e014 = EXTERN -> TRO330 | Storage2.1.2
|
||||||
|
e015 = EXTERN -> TRO333 | Storage2.1.3
|
||||||
|
e016 = EXTERN -> TRO336 | Storage2.1.4
|
||||||
|
e017 = EXTERN -> TRO349 | Storage2.2.1
|
||||||
|
e018 = EXTERN -> TRO352 | Storage2.2.2
|
||||||
|
e019 = EXTERN -> TRO355 | Storage2.2.3
|
||||||
|
e020 = EXTERN -> TRO358 | Storage2.2.4
|
||||||
|
e021 = EXTERN -> TRO371 | Storage2.3.1
|
||||||
|
e022 = EXTERN -> TRO374 | Storage2.3.2
|
||||||
|
e023 = EXTERN -> TRO377 | Storage2.3.3
|
||||||
|
e024 = EXTERN -> TRO380 | Storage2.3.4
|
||||||
|
e025 = TRO326 -> EXTERN | IO_Device_UH03_TO_UH01.stCARRIER_INFO
|
||||||
|
e026 = TRO348 -> EXTERN | IO_Device_UH03_TO_UH01.stCARRIER_INFO_1
|
||||||
|
e027 = TRO370 -> EXTERN | IO_Device_UH03_TO_UH01.stCARRIER_INFO_2
|
||||||
|
e028 = TRO317 -> EXTERN | IO_Device_UH03_TO_UH01.stCarrierL2toL1
|
||||||
|
e029 = TRO339 -> EXTERN | IO_Device_UH03_TO_UH01.stCarrierL2toL1_2
|
||||||
|
e030 = TRO361 -> EXTERN | IO_Device_UH03_TO_UH01.stCarrierL2toL1_3
|
||||||
|
|
||||||
|
[UH04.nodes]
|
||||||
|
TRO400 = Vario | TRO 400 (Vario)
|
||||||
|
TRO401 = Vario | TRO 401 (Vario)
|
||||||
|
TRO402 = 1Sep | TRO 402 (1Sep) (Vor Brandschutztor)
|
||||||
|
TRO403 = Vario | TRO 403 (Vario)
|
||||||
|
TRO404 = 1Sep | TRO 404 (1Sep)
|
||||||
|
TRO405 = 1Sep1Swi | TRO 405 (1Sep1Switch) + Scanner (BX4100) + Behangskontrolle
|
||||||
|
TRO406 = 1Sep | TRO 406 (1Sep) + Scanner (BX4101)
|
||||||
|
TRO407 = 1Sep1Swi | TRO 407 (1Sep1Switch) + Scanner (BX4102)
|
||||||
|
TRO408 = Vario | TRO 408 (Vario)
|
||||||
|
TRO409 = 1Sep | TRO 409 (1Sep)
|
||||||
|
TRO410 = 1Sep1Swi | TRO 410 (1Sep1Switch) + Scanner (BX4104)
|
||||||
|
TRO411 = Vario | TRO 411 (Vario)
|
||||||
|
TRO412 = 1Sep | TRO 412 (1Sep)
|
||||||
|
TRO413 = 1Sep1Swi | TRO 413(1Sep1Switch)+Scanner(BX4106)
|
||||||
|
TRO414 = Vario | TRO 414 (Vario)
|
||||||
|
TRO415 = 1Sep | TRO 415 (1Sep)
|
||||||
|
TRO416 = 1Sep | TRO 416 (1Sep) + Beladeprüfung
|
||||||
|
TRO417 = 1Sep | TRO 417 (1Sep)
|
||||||
|
TRO418 = Vario | TRO 418 (Vario)
|
||||||
|
TRO420 = Vario | TRO 420 (Vario)
|
||||||
|
TRO421 = Vario_workStation | TRO 421 (Vario)
|
||||||
|
TRO422 = Vario_workStation | TRO 422 (Vario)
|
||||||
|
TRO423 = Vario_workStation | TRO 423 (Vario)
|
||||||
|
TRO424 = 1Sep | TRO 424 (1Sep) vor Behangskontrolle
|
||||||
|
|
||||||
|
[UH04.connections]
|
||||||
|
c001 = TRO400 -> TRO401 | JA4001_1 | finger
|
||||||
|
c002 = TRO401 -> TRO402 | JA4001_2 | finger
|
||||||
|
c003 = TRO402 -> TRO403 | JA4002_1 | normal
|
||||||
|
c004 = TRO403 -> TRO404 | JA4002_2 | finger
|
||||||
|
c005 = TRO424 -> TRO405 | JA4003_1 | normal
|
||||||
|
c006 = TRO405 -> TRO406 | JA4003_2 | dir2
|
||||||
|
c007 = TRO406 -> TRO407 | JA4003_3 | normal
|
||||||
|
c008 = TRO407 -> TRO410 | JA4003_4 | dir2
|
||||||
|
c009 = TRO409 -> TRO410 | JA4003_4 | normal
|
||||||
|
c010 = TRO410 -> TRO413 | JA4003_5 | dir2
|
||||||
|
c011 = TRO412 -> TRO413 | JA4003_5 | normal
|
||||||
|
c012 = TRO413 -> TRO416 | JA4003_6 | dir2
|
||||||
|
c013 = TRO415 -> TRO416 | JA4003_6 | normal
|
||||||
|
c014 = TRO416 -> TRO417 | JA4003_7 | normal
|
||||||
|
c015 = TRO404 -> TRO424 | JA4003_8 | normal
|
||||||
|
c016 = TRO417 -> TRO424 | JA4003_8 | normal
|
||||||
|
c017 = TRO407 -> TRO408 | JA4004_1 | normal
|
||||||
|
c018 = TRO408 -> TRO421 | JA4004_2 | finger
|
||||||
|
c019 = TRO410 -> TRO411 | JA4006_1 | normal
|
||||||
|
c020 = TRO411 -> TRO422 | JA4006_2 | finger
|
||||||
|
c021 = TRO422 -> TRO412 | JA4007_1 | finger
|
||||||
|
c022 = TRO413 -> TRO414 | JA4008_1 | normal
|
||||||
|
c023 = TRO414 -> TRO423 | JA4008_2 | finger
|
||||||
|
c024 = TRO423 -> TRO415 | JA4009_1 | finger
|
||||||
|
c025 = TRO418 -> TRO420 | JA4011_1 | finger
|
||||||
|
|
||||||
|
[UH04.externals]
|
||||||
|
e001 = EXTERN -> TRO400 | JA4000_1
|
||||||
|
e002 = TRO421 -> EXTERN | JA4005_1
|
||||||
|
e003 = EXTERN -> TRO418 | JA4010_1
|
||||||
|
|
||||||
|
[UH05.nodes]
|
||||||
|
TRO500 = Vario | TRO 500 (Vario) - Stand: Vorbereitet für Umbau!
|
||||||
|
TRO501 = 1Sep | TRO 501 (1Sep) + Scanner (BX5101)
|
||||||
|
TRO502 = Vario | TRO 502 (Vario) - Stand: Vorbereitet für Umbau!
|
||||||
|
TRO503 = 1Sep | TRO 503 (1Sep)+ Scanner (BX5100)
|
||||||
|
TRO504 = 1Sep | TRO 504 (1Sep)
|
||||||
|
TRO505 = 1Sep1Swi | TRO 505 (1Sep1Switch) + Scanner (BX5102)
|
||||||
|
TRO506 = Vario | TRO 506 (Vario)
|
||||||
|
TRO507 = 1Sep | TRO 507 (1Sep)
|
||||||
|
TRO508 = Vario | TRO 508 (Vario)+Scanner(BX5103)
|
||||||
|
TRO509 = 1Sep | TRO 509 (1Sep)
|
||||||
|
TRO510 = 1Sep1Swi | TRO 510 (1Sep1Switch) + Scanner (BX5104)
|
||||||
|
TRO511 = 1Sep | TRO 511 (1Sep)
|
||||||
|
TRO512 = Vario | TRO 512 (Vario)+Scanner(BX5105)
|
||||||
|
TRO513 = 1Sep | TRO 513 (1Sep)
|
||||||
|
TRO514 = 1Sep1Swi | TRO 514 (1Sep1Switch) + Scanner (BX5106)
|
||||||
|
TRO515 = 1Sep | TRO 515 (1Sep)
|
||||||
|
TRO516 = Vario | TRO 516(Vario)+Scanner(BX5107)
|
||||||
|
TRO517 = 1Sep | TRO 517 (1Sep)
|
||||||
|
TRO518 = 1Sep1Swi | TRO 518 (1Sep1Switch) + Scanner (BX5108)
|
||||||
|
TRO519 = 1Sep | TRO 519 (1Sep)
|
||||||
|
TRO520 = Vario | TRO 520 (Vario)+Scanner(BX5109)
|
||||||
|
TRO521 = 1Sep | TRO 521(1Sep)
|
||||||
|
TRO522 = 1Sep1Swi | TRO 522 (1Sep1Switch) + Scanner (BX5110)
|
||||||
|
TRO523 = 1Sep | TRO 523 (1Sep)
|
||||||
|
TRO524 = Vario | TRO 524 (Vario)+Scanner(BX5231)
|
||||||
|
TRO525 = 1Sep | TRO 525(1Sep)
|
||||||
|
TRO526 = 1Sep | TRO 526 (1Sep) + Scanner (BX5112)
|
||||||
|
TRO527 = 1Sep1Swi | TRO 527 (1Sep1Switch)
|
||||||
|
TRO528 = 1Sep | TRO 528 (1Sep)
|
||||||
|
TRO529 = 1Sep | TRO 529 (1Sep) + Scanner (BX5113)
|
||||||
|
TRO530 = Vario | TRO 530 (Vario)
|
||||||
|
TRO531 = Vario | TRO 531 (Vario)
|
||||||
|
|
||||||
|
[UH05.connections]
|
||||||
|
c001 = TRO502 -> TRO531 | JA5000_2 | finger
|
||||||
|
c002 = TRO531 -> TRO503 | JA5000_3 | finger
|
||||||
|
c003 = TRO500 -> TRO530 | JA5001_2 | finger
|
||||||
|
c004 = TRO530 -> TRO501 | JA5001_3 | finger
|
||||||
|
c005 = TRO501 -> TRO504 | JA5002_1 | normal
|
||||||
|
c006 = TRO503 -> TRO504 | JA5002_1 | normal
|
||||||
|
c007 = TRO529 -> TRO504 | JA5002_1 | normal
|
||||||
|
c008 = TRO528 -> TRO529 | JA5002_10 | normal
|
||||||
|
c009 = TRO504 -> TRO505 | JA5002_2 | normal
|
||||||
|
c010 = TRO505 -> TRO510 | JA5002_3 | dir2
|
||||||
|
c011 = TRO509 -> TRO510 | JA5002_3 | normal
|
||||||
|
c012 = TRO510 -> TRO514 | JA5002_4 | dir2
|
||||||
|
c013 = TRO513 -> TRO514 | JA5002_4 | normal
|
||||||
|
c014 = TRO514 -> TRO518 | JA5002_5 | dir2
|
||||||
|
c015 = TRO517 -> TRO518 | JA5002_5 | normal
|
||||||
|
c016 = TRO518 -> TRO522 | JA5002_6 | dir2
|
||||||
|
c017 = TRO521 -> TRO522 | JA5002_6 | normal
|
||||||
|
c018 = TRO522 -> TRO526 | JA5002_7 | dir2
|
||||||
|
c019 = TRO525 -> TRO526 | JA5002_7 | normal
|
||||||
|
c020 = TRO526 -> TRO527 | JA5002_8 | normal
|
||||||
|
c021 = TRO527 -> TRO528 | JA5002_9 | dir2
|
||||||
|
c022 = TRO505 -> TRO506 | JA5003_1 | normal
|
||||||
|
c023 = TRO506 -> TRO507 | JA5003_2 | finger
|
||||||
|
c024 = TRO507 -> TRO508 | JA5004_1 | normal
|
||||||
|
c025 = TRO510 -> TRO511 | JA5005_1 | normal
|
||||||
|
c026 = TRO511 -> TRO512 | JA5005_2 | normal
|
||||||
|
c027 = TRO514 -> TRO515 | JA5006_1 | normal
|
||||||
|
c028 = TRO515 -> TRO516 | JA5006_2 | normal
|
||||||
|
c029 = TRO518 -> TRO519 | JA5007_1 | normal
|
||||||
|
c030 = TRO519 -> TRO520 | JA5007_2 | normal
|
||||||
|
c031 = TRO522 -> TRO523 | JA5008_1 | normal
|
||||||
|
c032 = TRO523 -> TRO524 | JA5008_2 | normal
|
||||||
|
|
||||||
|
[UH05.externals]
|
||||||
|
e001 = EXTERN -> TRO502 | JA5000_1
|
||||||
|
e002 = EXTERN -> TRO500 | JA5001_1
|
||||||
|
e003 = TRO508 -> EXTERN | JA5004_2
|
||||||
|
e004 = TRO512 -> EXTERN | JA5005_3
|
||||||
|
e005 = TRO516 -> EXTERN | JA5006_3
|
||||||
|
e006 = TRO520 -> EXTERN | JA5007_3
|
||||||
|
e007 = TRO524 -> EXTERN | JA5008_3
|
||||||
|
|
||||||
+3451
File diff suppressed because it is too large
Load Diff
@@ -0,0 +1,141 @@
|
|||||||
|
# Analyse der Ein-/Ausgabelisten (data/Eingaben)
|
||||||
|
|
||||||
|
## Kontext
|
||||||
|
|
||||||
|
In `data/Eingaben/` liegen je Steuerung (ILS-1 bis ILS-5, entspricht UH01-UH05) drei Excel-Dateien mit denselben E/A-Punkten in drei Sichten:
|
||||||
|
|
||||||
|
| Datei | Inhalt |
|
||||||
|
| --- | --- |
|
||||||
|
| `..._EA.xlsx` | Rohliste: Adresse (`E000.0`), Kommentar, Zeilenreferenz (Schaltplan) |
|
||||||
|
| `..._TIA.xlsx` | Import-Liste fuers TIA Portal: Blatt "PLC Tags" (BMK-Name, `Data Type`, `%E`/`%A`-Logikadresse, Kommentar, HMI-Flags) + Blatt "Constants" (`cIn<Name>`-Indexkonstanten) |
|
||||||
|
| `..._WSCAD.xlsx` | Import-Liste fuers WSCAD (E-CAD): Anschluss, Kommentar, **Bezug** (Ortskennzeichen, z.B. `=A01+UC2101-KF1DI1`) |
|
||||||
|
|
||||||
|
Alle Signale sind **Bool** (reine Digital-E/A-Listen). Analogwerte (Tilt-/Distanzsensoren), PROFINET-Geraete (Cognex-Scanner BX, RFID) und Antriebsparameter sind **nicht** enthalten — diese werden anderweitig projektiert.
|
||||||
|
|
||||||
|
Umfang: ILS-1 (UH01) 443 Tags, ILS-2 (UH02) 1578 Tags, ILS-3 (UH03) 1608 Tags, ILS-4 (UH04) 203 Tags, ILS-5 (UH05) 243 Tags.
|
||||||
|
|
||||||
|
## Namenspraefixe (BMK-Schema)
|
||||||
|
|
||||||
|
| Praefix | Bedeutung | Beispiel |
|
||||||
|
| --- | --- | --- |
|
||||||
|
| `BG` | Sensor / Geber (Eingang) | `BG0280`: in Separator LS1 |
|
||||||
|
| `SF` | Schalter / Taster / Sicherheitssignal (Eingang) | `SF0025`: Schluesselschalter LS1 |
|
||||||
|
| `DI` | Diagnose-/Feedback-Eingang (Sicherung, Schuetz) | `DI0011`: Feedback Hauptschuetze aktiv |
|
||||||
|
| `BP` | Druckschalter | `BP0004`: Druckschalter Druckluft OK |
|
||||||
|
| `MB` | Ausgang Separator-/Stopper-Ventil | `MB0280`: Separator LS1 |
|
||||||
|
| `MA` | Ausgang Motor (Contactor) | `MA0060`: Motor (ILS-KR-M0101) |
|
||||||
|
| `QA` | Ausgang Motor / Hauptschuetz | `QA0071`: Motor 1 Ausfahren LS1 |
|
||||||
|
| `DQ` | Digitalausgang Sonderfunktion (Fuss, RFID-Handshake) | `DQ0322`: Stuetzfuss aufwaerts LS1 |
|
||||||
|
| `FC` | Motorschutz-Feedback | `FC0060`: MSS ausgeloest (ILS-KR-M0101) |
|
||||||
|
| `PF` | Leuchtmelder / Signalsaeule | `PF0022`: Signalsaeule gruen "Betriebsbereit" |
|
||||||
|
|
||||||
|
## Was daraus automatisch fuers JSON gewinnbar ist
|
||||||
|
|
||||||
|
### Vollstaendig generierbar
|
||||||
|
|
||||||
|
| JSON-Abschnitt / Zielbaustein | Quelle |
|
||||||
|
| --- | --- |
|
||||||
|
| `sensors[]` -> `FB_CallSensors`, Dimensionierung `DB_Inputs` | TIA "PLC Tags" (alle BG-Tags: id, hwInput, Kommentar) + "Constants" (`cInBG...` ist exakt der Sensor-Array-Index) |
|
||||||
|
| Konstanten-Tabelle (TIA-Konstantenliste) | Constants-Blatt 1:1 |
|
||||||
|
| PLC-Variablentabellen (Ordner `PLC-Variablen/Mewa`) | "PLC Tags" — das ist der eigentliche Importzweck der Datei |
|
||||||
|
| `outputs`-Felder der TROs/Conveyors/LoadingBooms | MB (Stopper/Separatorventile), MA/QA/DQ (Motoren), FC (Motorschutz), PF (Leuchtmelder) |
|
||||||
|
|
||||||
|
### Teilweise generierbar — ueber Kommentar-Parsing
|
||||||
|
|
||||||
|
Die Kommentare folgen einem erstaunlich systematischen Muster:
|
||||||
|
|
||||||
|
```text
|
||||||
|
<Funktionsrolle> [<lfd.Nr.>] (<Einheit>) <Bereich>
|
||||||
|
```
|
||||||
|
|
||||||
|
Beispiele: `in Separator 1 (ILS-CV M5003) WS1.1`, `AE Abzweig Str.3 (Block 1.1.1)`, `Pin Abfrage (KR-M1101) Block 1.1.1`.
|
||||||
|
|
||||||
|
Daraus laesst sich je Foerdertechnik-Einheit (M-Nummer) ein **TRO-/Conveyor-Geruest** ableiten:
|
||||||
|
|
||||||
|
- `sensorInSep` aus "in Separator n", Stopper-Output aus "Separator n", `sensorJam*` aus "Stausensor"/"Staumelder Einfahrt"
|
||||||
|
- Der **FB-Typ** ist heuristisch bestimmbar:
|
||||||
|
- "AE Abzweig" -> Weiche (`1SepNSwi`)
|
||||||
|
- "Mitnehmerfinger in Position" / "Foerderer voll" / "MT in Position" -> `Vario`
|
||||||
|
- "Pin Abfrage" / "Pruefung MT Pos.x" -> `PinStore`
|
||||||
|
- mehrere "Str.1"..."Str.8" unter einem Block -> mehrzeiliger Puffer/Block
|
||||||
|
- Anzahl der "in Separator n" (1 vs. 2) -> 1Sep vs. 2Sep
|
||||||
|
- `conveyors[]`-Grundgeruest: FC/MA-Paare je `KR-M...`/`CV-M...` -> `motorProtectName` + `powerContactor`
|
||||||
|
|
||||||
|
Die M-Nummern tauchen unveraendert auch im SCL-Code auf (Beleg: `REGION Carousel KR-M5002` in UH05/FB_Main.scl, `TRO208 : "FB_ILS_MTRO_PinStore_Auto"; // Block 1.1.1` in UH02/FB_Main.scl) — die Zuordnung Liste <-> Code ist also nicht nur Vermutung, sondern nachweisbar identisch.
|
||||||
|
|
||||||
|
### Nicht gewinnbar
|
||||||
|
|
||||||
|
- Timing-Parameter (`trailingTime`, `handlingTime`, `senFree`/`senWait` etc.)
|
||||||
|
- Priority-Manager-Verdrahtung, Release-Ausdruecke
|
||||||
|
- `customCode`-Bloecke
|
||||||
|
- Scanner-Zuordnung (Cognex BX-Geraete sind PROFINET-Teilnehmer, nicht in den Digital-E/A-Listen)
|
||||||
|
- Vor allem die **Topologie**: `connections[]`, `jamAreas[]`, `routing`/`destinations[]`. Die Reihenfolge der M-Nummern liefert nur einen schwachen Hinweis auf Nachbarschaft, keine belastbare Verkettung.
|
||||||
|
|
||||||
|
## Hoehere Ebenen in den Listen
|
||||||
|
|
||||||
|
Die Listen enthalten eine durchgaengige **Anlagenhierarchie**, die im aktuellen JSON-Konzept noch nicht abgebildet ist:
|
||||||
|
|
||||||
|
1. **Signal** — BG/MB/MA/FC/PF/SF/QA/DQ (unterste Ebene)
|
||||||
|
2. **Foerdertechnik-Einheit = M-Nummer** — `KR-M5002` (Kreisel), `CV-M5003` (Foerderer), `KR-K1101` (Kreisel-Einfahrt). Entspricht 1:1 einem Conveyor bzw. einer TRO-Instanz.
|
||||||
|
3. **Bereichs-/Funktionsgruppen = Gruppen von TROs**:
|
||||||
|
- **Block x.y.z** — PinStore-Bloecke, z.B. UH02: Block 1.1.1 – 1.3.4 (3 Gassen x 4 Ebenen = 12 Bloecke), deckungsgleich mit den Datenbausteinen `DB_Storage1.1.1` ... `DB_Storage1.3.4`; darunter je Block bis zu 8 Gassen ("Str.1"..."Str.8")
|
||||||
|
- **LS 1 / LS 2** — Ladeschleifen in UH01 (Boom-, Fuss-, Rad-Signale)
|
||||||
|
- **WS x.y** — Work Stations in UH04/UH05 (manuelle Arbeitsplaetze)
|
||||||
|
- **UZ0x0y** — Umzaeunungs-/Sicherheitszonen (Reset-/Freigabe-Taster je Zone) -> entspricht den `controlUnits` im JSON-Konzept
|
||||||
|
4. **Elektro-Topologie** (nur in den WSCAD-Listen, ueber das Feld "Bezug") — UC-Feldstationen mit Klemmenkarten (`KF1DI1`, `KF1FDQ2` = fehlersichere Karte, 8 oder 16 Kanaele). Die UC-Nummerierung spiegelt die logischen Bereiche: UH02 nutzt z.B. `UC21xx`/`UC22xx`/`UC23xx` fuer die drei PinStore-Bloecke 2.1/2.2/2.3; F-Karten markieren zugleich die Safety-relevanten Signale.
|
||||||
|
5. **Steuerung UH0x** — je Dateitripel eine SPS-Konfiguration, entspricht dem `plc`-Abschnitt im JSON.
|
||||||
|
|
||||||
|
## Verwendung von Positionen
|
||||||
|
|
||||||
|
Zusaetzlich zu den Excel-Listen liegen in `data/Eingaben/` vier JSON-Dateien mit Positions- und Verkabelungsdaten, offenbar Exporte eines WSCAD/CAD-Auswertungstools:
|
||||||
|
|
||||||
|
| Datei | Inhalt |
|
||||||
|
| --- | --- |
|
||||||
|
| `ST500592_10_5-9_ILS_positions.json` | Positionen (x/y in mm) aller Sensoren/Aktoren, Schaltschrankelemente und Verteiler des ILS-Systems (UH01–UH05) |
|
||||||
|
| `ST500592_10_5-9_ILS_todraw.json` | Kabelverbindungen (Verteiler ↔ Signal) mit Routing-Polylinie und -laenge, Kabeltrassen (`rack_geometry`), Fehlerprotokolle |
|
||||||
|
| `ST500592_Omniflo_positionsdraw.json` / `ST500592_10_5-10_Omniflo_todraw.json` | Gleiches Schema, aber fuer ein weiteres System ("Omniflo", `SPS` 6/7 = UH06/UH07) — **keine** SCL-Konfiguration dazu im Repository, also vermutlich eine benachbarte/zukuenftige Anlage ausserhalb des aktuellen Scopes |
|
||||||
|
|
||||||
|
### Struktur
|
||||||
|
|
||||||
|
- **`sensors`** / **`schaltschrank_elemente`**: Dict, Schluessel `<BMK>@<SPS>` (z.B. `BG3260@4`), da BMK-Namen ueber die SPSen hinweg wiederverwendet werden. Werte enthalten u.a. `pos` (x,y in mm), `BEZEICHNUNG` (Kommentartext, identisch zur TIA/EA-Liste), `KENNZEICHNUNG` (WSCAD-Ortskennzeichen), `SPS` und **`VERW`**.
|
||||||
|
- **`VERW`** ist ein kontrolliertes Vokabular fuer die Funktionsrolle des Signals, z.B. `Sep`, `In sep`, `Jam detector`, `ES branch` (Weichen-Abzweig!), `conveyor full`, `MT in Position`, `Finger in position`, `PIN query`, `Sync P1`–`P4`. Das ist eine **zuverlaessigere Quelle fuer die Rollenklassifikation** als das Parsen der freien Kommentartexte (siehe oben) — z.B. laesst sich eine Weiche (`ES branch`) oder ein Vario-Sync-Punkt (`Sync Px`) direkt am `VERW`-Wert erkennen statt ueber Text-Heuristik.
|
||||||
|
- **`mappings`**: Verteiler (`UC0401`, ...) -> Liste der daran angeschlossenen BMK — das ist die **belastbare** (aus der Verkabelung stammende) Zuordnung Signal -> Schaltschrank, nicht nur eine Namenskonvention wie in der WSCAD-Excelliste.
|
||||||
|
- **`distributors`**: Verteiler -> eigene Position (x,y).
|
||||||
|
- **`kabel`** (nur `_todraw.json`): je Verbindung `id` (`"<Verteiler>-<BMK>@<SPS>"`), Routing-Polylinie (`coords`) und `length` (mm) — die tatsaechliche Kabelstrecke inkl. Verlegung ueber Kabeltrassen/Pritschen.
|
||||||
|
- **`rack_geometry`** / **`tunnels`**: Geometrie der Kabeltrassen bzw. Bodentunnel, auf denen die Kabel gefuehrt werden.
|
||||||
|
- **`not_found`** / `errors_*` / `warnings`: Validierungsprotokoll des Exporttools (fehlende Verteilerzuordnung, ungueltige Kennzeichnung, doppelte IDs, Attributsluecken) — kein Topologie-Input, aber wertvoll als **Datenqualitaets-Check** fuer einen Generator.
|
||||||
|
|
||||||
|
### Lassen sich Topologie-Hinweise ableiten?
|
||||||
|
|
||||||
|
Ein Abgleich der bekannten UH01-Kette (siehe [TRO_Graph_UH01-UH05.dot](TRO_Graph_UH01-UH05.dot)) gegen die Sensor-Positionen zeigt ein klares Muster:
|
||||||
|
|
||||||
|
| TRO | Sensor | Position (x, y in mm) | Abstand zum vorherigen |
|
||||||
|
| --- | --- | --- | --- |
|
||||||
|
| TRO100 | BG3242@1 | (341906, 164862) | – |
|
||||||
|
| TRO103 | BG3271@1 | (331115, 163051) | ~10,9 m |
|
||||||
|
| TRO107 | BG3306@1 | (333164, 152428) | ~10,7 m (nach TRO105) |
|
||||||
|
| TRO104 | BG0280@1 | (370801, 187134) | ~46,4 m (Sprung!) |
|
||||||
|
| TRO105 | BG3280@1 | (334141, 159162) | ~46,1 m (Sprung zurueck!) |
|
||||||
|
| TRO109 | BG0340@1 | (376774, 187155) | liegt nahe bei TRO104 |
|
||||||
|
|
||||||
|
Die TROs des Hauptkreislaufs (100, 103, 105, 107, ...) liegen raeumlich dicht beieinander (Abstaende im Bereich 5–15 m), waehrend TRO104/TRO109 (Vorstopper vor den Ladeschleifen LS1/LS2) einen grossen sprunghaften Abstand aufweisen — sie liegen physisch bei den Ladeschleifen, einem raeumlich getrennten Anlagenteil, zu dem die Carrier ausgeschleust und zurueckgefuehrt werden. Das deckt sich exakt mit der bereits aus dem SCL-Code extrahierten Topologie (TRO104 -> LoadingBoom1 -> TRO105).
|
||||||
|
|
||||||
|
**Ergebnis:** Positionen liefern **keine eigenstaendige, vollstaendige Topologie** (dafuer fehlt die Information, in welcher Reihenfolge/Richtung Carrier durch nahe beieinanderliegende Elemente laufen — u.a. bei parallelen Foerderstrecken oder Bloecken mit identischen Abstaenden nicht eindeutig). Sie eignen sich aber sehr gut als:
|
||||||
|
|
||||||
|
1. **Validierungswerkzeug** fuer die aus dem SCL-Code extrahierte `connections`-Topologie: kurze Abstaende zwischen verbundenen TROs bestaetigen Plausibilitaet, groessere Spruenge markieren bewusste Anlagenteile (Ladeschleifen, Storage-Gassen, AMR-Uebergabe) und lassen sich in der Analyse gezielt kommentieren.
|
||||||
|
2. **Raeumliche Clusterbildung**: TROs/Sensoren, die im selben Cluster von Koordinaten liegen, lassen sich automatisch zu den bereits identifizierten Bereichsgruppen (Block, LS, WS, UZ) buendeln oder solche Gruppen erst entdecken, falls die textuelle Kommentar-Zuordnung fehlt oder uneinheitlich ist.
|
||||||
|
3. **Massstabsgetreue Lageplan-Darstellung**: der bestehende TRO-Graph ([TRO_Graph_UH01-UH05.svg](TRO_Graph_UH01-UH05.svg)) nutzt eine automatische Graphviz-Anordnung ohne Bezug zur echten Anlage. Mit den `pos`-Koordinaten liesse sich zusaetzlich ein **massstabsgetreuer Lageplan** rendern (SVG/DXF mit echten x/y-Koordinaten je TRO/Sensor), der die abstrakte Topologie mit der realen Hallenlayout ueberlagert.
|
||||||
|
4. **Cabinet-/Verteilerzuordnung**: `mappings` + `distributors` liefern die **tatsaechliche** (aus der Verkabelung stammende) Zuordnung Sensor -> Schaltschrank/Verteiler samt dessen Position — praeziser als die Namenskonvention der WSCAD-Bezugsfelder, und direkt nutzbar fuer den `controlUnits`-Abschnitt im JSON.
|
||||||
|
5. **Kabel-/Trassendokumentation**: `kabel`, `rack_geometry` und `tunnels` erlauben es, Kabellaengen und -wege je Verbindung automatisch zu dokumentieren (z.B. fuer Stuecklisten/BOM oder Trassenauslastung) — fachlich getrennt von der SPS-Programmlogik, aber ein sinnvoller Zusatznutzen derselben Datenbasis.
|
||||||
|
|
||||||
|
## Konsequenz fuer das JSON-Layout-Konzept
|
||||||
|
|
||||||
|
Um Ebene 2–4 aus den Excel-Listen automatisch befuellen zu koennen, sollte das JSON-Schema (siehe [Json_Layout-Konzept.md](Json_Layout-Konzept.md)) um folgende Punkte erweitert werden:
|
||||||
|
|
||||||
|
1. Ein Feld `unit` bzw. `mNumber` an jedem TRO/Conveyor als expliziter Schluessel zur E/A-Liste (z.B. `"unit": "M5003"`).
|
||||||
|
2. Eine neue Gruppierungsebene `areas`/`groups` (Block, LS, WS, UZ, UC-Station), die TROs/Conveyors buendelt und mit dem "Bezug"-Feld der WSCAD-Liste sowie der UZ-Nummerierung der TIA-Liste verknuepft.
|
||||||
|
3. Ein optionales Feld `pos: {x, y}` je Sensor/TRO/Conveyor (aus den `..._positions.json`), fuer massstabsgetreue Layout-Darstellung und als Validierungsdatum fuer die Topologie.
|
||||||
|
4. Ein Feld `controlUnit`/`cabinet` mit dem Verteiler-BMK (aus `mappings`), zusaetzlich zur bzw. anstelle der bisherigen Ableitung aus der WSCAD-Namenskonvention.
|
||||||
|
5. Nutzung des `VERW`-Vokabulars aus den Positions-JSONs als primaere Quelle fuer die Rollenklassifikation der BG/MB-Signale (statt bzw. ergaenzend zur Kommentar-Textheuristik) — reduziert Fehlklassifikationen bei uneindeutigen Kommentaren.
|
||||||
|
|
||||||
|
Damit waeren die Ebenen Signal, Foerdertechnik-Einheit, Bereichsgruppe, Steuerung und — als Zusatznutzen — die raeumliche Lage vollstaendig aus den Eingabelisten ableitbar. Manuell zu pflegen blieben dann nur noch die eigentliche Verkettungsrichtung der Topologie (`connections`/`destinations`), Timings und projektspezifische Sonderlogik (`customCode`).
|
||||||
@@ -941,6 +941,253 @@ Ermoeglicht automatische Generierung von `FC_Direction` ohne manuelles Pflegen v
|
|||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
|
### 13. Topologie-Graph UH01 — TRO-Ein- und Ausgänge
|
||||||
|
|
||||||
|
Jede Verbindung wird über eine JamArea realisiert. Abkürzung `JAxxxx_y` steht für `"DB_JamAreaxxxx".stJamxxxx_y`.
|
||||||
|
Switch-TROs (Typ `1Sep1Swi`) besitzen zwei Ausgänge (Dir1 / Dir2); ihre Richtungsentscheidung kommt aus `FC_Direction`.
|
||||||
|
|
||||||
|
#### Inbound-Hauptschleife (Mermaid-Diagramm)
|
||||||
|
|
||||||
|
```mermaid
|
||||||
|
flowchart LR
|
||||||
|
classDef sep fill:#d4e8ff,stroke:#3388cc
|
||||||
|
classDef swi fill:#ffe4a0,stroke:#cc8800
|
||||||
|
classDef buf fill:#d4f0d4,stroke:#338833
|
||||||
|
classDef vario fill:#e8d4f0,stroke:#883388
|
||||||
|
classDef sscc fill:#ffd4d4,stroke:#cc3333
|
||||||
|
classDef ext fill:#f0f0f0,stroke:#888,stroke-dasharray:5
|
||||||
|
|
||||||
|
EXT_IN([Externer Eingang]):::ext
|
||||||
|
EXT_OUT([InboundOut to WCS]):::ext
|
||||||
|
|
||||||
|
EXT_IN -->|JA0100_1| TRO100:::sep
|
||||||
|
TRO100 -->|JA0101_1| TRO101_IN:::sep
|
||||||
|
TRO101_IN -->|JamBuf101| TRO101[TRO101 EmptyBuf]:::buf
|
||||||
|
TRO101_IN -->|JA0101_2| TRO102_IN:::sep
|
||||||
|
TRO102_IN -->|JamBuf102| TRO102[TRO102 EmptyBuf]:::buf
|
||||||
|
TRO101 -->|JA0102_2| TRO112:::swi
|
||||||
|
TRO102 -->|JA0102_1| TRO107:::swi
|
||||||
|
|
||||||
|
TRO107 -->|Dir1 JA0103_1| TRO103:::sep
|
||||||
|
TRO107 -->|Dir2 JA0102_2| TRO112
|
||||||
|
TRO103 -->|JA0104_1| TRO104:::sep
|
||||||
|
TRO104 -->|JA0104_2| LB1([LoadingBoom 1]):::ext
|
||||||
|
LB1 -->|JA0104_3| TRO105:::sscc
|
||||||
|
TRO105 -->|JA0106_2| TRO106:::sep
|
||||||
|
TRO106 -->|JA0102_2| TRO112
|
||||||
|
|
||||||
|
TRO112 -->|Dir1 JA0107_1| TRO108:::sep
|
||||||
|
TRO112 -->|Dir2 JA0102_3| TRO113:::sep
|
||||||
|
TRO108 -->|JA0108_1| TRO109:::sep
|
||||||
|
TRO109 -->|JA0108_2| LB2([LoadingBoom 2]):::ext
|
||||||
|
LB2 -->|JA0108_3| TRO110:::sscc
|
||||||
|
TRO110 -->|JA0110_2| TRO111:::sep
|
||||||
|
TRO111 -->|JA0102_3| TRO113
|
||||||
|
|
||||||
|
TRO113 -->|JA0102_4| TRO114:::swi
|
||||||
|
TRO114 -->|Dir1 JA4104_1| TRO115:::vario
|
||||||
|
TRO115 --> EXT_OUT
|
||||||
|
TRO114 -->|Dir2 JA0102_5| TRO116:::sep
|
||||||
|
TRO116 -->|JA0102_6| TRO117:::sep
|
||||||
|
TRO117 -.->|JA0102_1 Clearing-Rückf.| TRO107
|
||||||
|
```
|
||||||
|
|
||||||
|
#### Highway / Storage-Verbindungen (Mermaid-Diagramm)
|
||||||
|
|
||||||
|
```mermaid
|
||||||
|
flowchart LR
|
||||||
|
classDef sep fill:#d4e8ff,stroke:#3388cc
|
||||||
|
classDef swi fill:#ffe4a0,stroke:#cc8800
|
||||||
|
classDef vario fill:#e8d4f0,stroke:#883388
|
||||||
|
classDef ext fill:#f0f0f0,stroke:#888,stroke-dasharray:5
|
||||||
|
|
||||||
|
HWY_IN([Highway Loaded In]):::ext -->|JA4103_1| TRO120:::vario
|
||||||
|
ST_IN1([Storage Empty In]):::ext -->|JA4503_1| TRO121:::vario
|
||||||
|
ST_IN1 -->|JA4503_2| TRO122:::sep
|
||||||
|
TRO122 -->|JA4502_1| TRO123:::vario
|
||||||
|
BORNER1([Borner Eingang 1]):::ext -->|JA4502_2| TRO124:::swi
|
||||||
|
TRO124 -->|Dir1 JA4204_2| TRO125:::sep
|
||||||
|
TRO125 -->|JA4203_1| TRO126:::vario
|
||||||
|
TRO126 --> STORAGE([Storage]):::ext
|
||||||
|
TRO124 -->|Dir2 JA4501_1| TRO127:::vario
|
||||||
|
EMPTY_IN([Leere Carrier von Highway]):::ext -->|JA4501_2| TRO128:::vario
|
||||||
|
BORNER2([Borner Eingang 2]):::ext -->|JA4302_2| TRO129:::sep
|
||||||
|
TRO129 -->|JA4204_1| TRO130:::sep
|
||||||
|
TRO130 -->|JA4501_1| TRO127
|
||||||
|
AMR_IN([Loaded to AMR]):::ext -->|JA4403_1| TRO131:::vario
|
||||||
|
TRO131 --> AMR([AMR-System]):::ext
|
||||||
|
HWY_IN2([Highway Eingang 2]):::ext -->|JA4302_1| TRO133:::vario
|
||||||
|
AMR_HWY([AMR Highway]):::ext -->|JA4402_1| TRO134:::vario
|
||||||
|
```
|
||||||
|
|
||||||
|
#### TRO-Tabelle: Zone A — Eingang / Leere-Carrier-Puffer
|
||||||
|
|
||||||
|
| TRO | Typ | Beschreibung | Eingang JamArea | Eingang von | Ausgang JamArea | Ausgang zu |
|
||||||
|
|---|---|---|---|---|---|---|
|
||||||
|
| TRO100 | 1Sep | Anlageneingang | JA0100.stJam0100_1 | Externer Eingang | JA0101.stJam0101_1 | TRO101_IN |
|
||||||
|
| TRO101_IN | 1Sep | Separator Empty Buffer rechts | JA0101.stJam0101_1 | TRO100 | DB_JamBuffer101 / JA0101.stJam0101_2 | TRO101 / TRO102_IN |
|
||||||
|
| TRO101 | EmptyCarrBuffer | Leere-Carrier-Puffer rechts | DB_JamBuffer101 | TRO101_IN | JA0102.stJam0102_2 | TRO112 |
|
||||||
|
| TRO102_IN | 1Sep | Separator Empty Buffer links | JA0101.stJam0101_2 | TRO101_IN | DB_JamBuffer102 | TRO102 |
|
||||||
|
| TRO102 | EmptyCarrBuffer | Leere-Carrier-Puffer links | DB_JamBuffer102 | TRO102_IN | JA0102.stJam0102_1 | TRO107 |
|
||||||
|
|
||||||
|
#### TRO-Tabelle: Zone B — Loading Station 1
|
||||||
|
|
||||||
|
| TRO | Typ | Beschreibung | Eingang JamArea | Eingang von | Ausgang JamArea | Ausgang zu |
|
||||||
|
|---|---|---|---|---|---|---|
|
||||||
|
| TRO103 | 1Sep | Zufahrt Loading Station 1 | JA0103.stJam0103_1 | TRO107 (Dir1) | JA0104.stJam0104_1 | TRO104 |
|
||||||
|
| TRO104 | 1Sep | Vorstopper LS1 + Barcode-Scanner | JA0104.stJam0104_1 | TRO103 | JA0104.stJam0104_2 | LoadingBoom1 (Stopper) |
|
||||||
|
| TRO105 | 1Sep_SSCC | SSCC-Scanner nach LS1 | JA0104.stJam0104_3 | LoadingBoom1 (nach Beladung) | JA0106.stJam0106_2 | TRO106 |
|
||||||
|
| TRO106 | 1Sep | Abfuhr Loading Station 1 | JA0106.stJam0106_2 | TRO105 | JA0102.stJam0102_2 | TRO112 |
|
||||||
|
|
||||||
|
#### TRO-Tabelle: Zone C — Loading Station 2
|
||||||
|
|
||||||
|
| TRO | Typ | Beschreibung | Eingang JamArea | Eingang von | Ausgang JamArea | Ausgang zu |
|
||||||
|
|---|---|---|---|---|---|---|
|
||||||
|
| TRO108 | 1Sep | Zufahrt Loading Station 2 | JA0107.stJam0107_1 | TRO112 (Dir1) | JA0108.stJam0108_1 | TRO109 |
|
||||||
|
| TRO109 | 1Sep | Vorstopper LS2 + Barcode-Scanner | JA0108.stJam0108_1 | TRO108 | JA0108.stJam0108_2 | LoadingBoom2 (Stopper) |
|
||||||
|
| TRO110 | 1Sep_SSCC | SSCC-Scanner nach LS2 | JA0108.stJam0108_3 | LoadingBoom2 (nach Beladung) | JA0110.stJam0110_2 | TRO111 |
|
||||||
|
| TRO111 | 1Sep | Abfuhr Loading Station 2 | JA0110.stJam0110_2 | TRO110 | JA0102.stJam0102_3 | TRO113 |
|
||||||
|
|
||||||
|
#### TRO-Tabelle: Zone D — Switches / Hauptrouting
|
||||||
|
|
||||||
|
| TRO | Typ | Beschreibung | Eingang JamArea | Eingang von | Ausgang Dir1 | Ausgang Dir2 |
|
||||||
|
|---|---|---|---|---|---|---|
|
||||||
|
| TRO107 | 1Sep1Swi | Switch: LS1 / LS2+Clearing | JA0102.stJam0102_1 | TRO102, TRO117 (Rückf.) | JA0103.stJam0103_1 → TRO103 | JA0102.stJam0102_2 → TRO112 |
|
||||||
|
| TRO112 | 1Sep1Swi | Switch: LS2 / Clearing+Ausgang | JA0102.stJam0102_2 | TRO101, TRO106, TRO107(D2) | JA0107.stJam0107_1 → TRO108 | JA0102.stJam0102_3 → TRO113 |
|
||||||
|
| TRO113 | 1Sep | Zufahrt Clearing + Barcode-Scanner | JA0102.stJam0102_3 | TRO111, TRO112 (Dir2) | JA0102.stJam0102_4 → TRO114 | — |
|
||||||
|
| TRO114 | 1Sep1Swi | Switch: InboundOut / Clearing + Scanner | JA0102.stJam0102_4 | TRO113 | JA4104.stJam4104_1 → TRO115 | JA0102.stJam0102_5 → TRO116 |
|
||||||
|
|
||||||
|
#### TRO-Tabelle: Zone E — Clearing-Station
|
||||||
|
|
||||||
|
| TRO | Typ | Beschreibung | Eingang JamArea | Eingang von | Ausgang JamArea | Ausgang zu |
|
||||||
|
|---|---|---|---|---|---|---|
|
||||||
|
| TRO116 | 1Sep | Zufahrt Clearing-Station | JA0102.stJam0102_5 | TRO114 (Dir2) | JA0102.stJam0102_6 | TRO117 |
|
||||||
|
| TRO117 | 1Sep | Clearing-Station (HMI + customCode) | JA0102.stJam0102_6 | TRO116 | JA0102.stJam0102_1 | TRO107 (Clearing-Rückführung) |
|
||||||
|
|
||||||
|
#### TRO-Tabelle: Zone F — InboundOut
|
||||||
|
|
||||||
|
| TRO | Typ | Beschreibung | Eingang JamArea | Eingang von | Ausgang | Ausgang zu |
|
||||||
|
|---|---|---|---|---|---|---|
|
||||||
|
| TRO115 | Vario | Übergabe InboundOut | JA4104.stJam4104_1 | TRO114 (Dir1) | WCS-Telegramm | Externes System (WCS/UH04) |
|
||||||
|
|
||||||
|
#### TRO-Tabelle: Zone G — Highway / Storage (Cross-UH-Verbindungen)
|
||||||
|
|
||||||
|
| TRO | Typ | Beschreibung | Eingang JamArea | Eingang von | Ausgang JamArea | Ausgang zu |
|
||||||
|
|---|---|---|---|---|---|---|
|
||||||
|
| TRO120 | Vario | Loaded Carrier von Highway eingehend | JA4103.stJam4103_1 | Highway-Extern | — | Borner-Einspeisung |
|
||||||
|
| TRO121 | Vario | Eingang Speicher-Kreislauf 1 | JA4503.stJam4503_1 | Extern | — | — |
|
||||||
|
| TRO122 | 1Sep | Speicher-Transition | JA4503.stJam4503_2 | Extern | JA4502.stJam4502_1 | TRO123 |
|
||||||
|
| TRO123 | Vario | Speicher-Übergabe | JA4502.stJam4502_1 | TRO122 | — | — |
|
||||||
|
| TRO124 | 1Sep1Swi | Switch: Carousel / Highway-Storage | JA4502.stJam4502_2 | Extern | Dir1: JA4204.stJam4204_2 → TRO125 | Dir2: JA4501.stJam4501_1 → TRO127 |
|
||||||
|
| TRO125 | 1Sep | Highway-Exit Richtung Carousel | JA4204.stJam4204_2 | TRO124 (Dir1) | JA4203.stJam4203_1 | TRO126 |
|
||||||
|
| TRO126 | Vario | Leere Carrier → Storage | JA4203.stJam4203_1 | TRO125 | — | Storage |
|
||||||
|
| TRO127 | Vario | Highway-Ausgang | JA4501.stJam4501_1 | TRO124(D2), TRO130 | — | — |
|
||||||
|
| TRO128 | Vario | Leere Carrier → Inbound (von Highway) | JA4501.stJam4501_2 | Extern | — | — |
|
||||||
|
| TRO129 | 1Sep | Borner-Eingang Seite 2 | JA4302.stJam4302_2 | Extern | JA4204.stJam4204_1 | TRO130 |
|
||||||
|
| TRO130 | 1Sep | Transition zu Highway | JA4204.stJam4204_1 | TRO129 | JA4501.stJam4501_1 | TRO127 |
|
||||||
|
| TRO131 | Vario | Loaded Carrier → AMR | JA4403.stJam4403_1 | Extern | — | AMR-System |
|
||||||
|
| TRO132 | 1Sep | (auskommentiert — nicht aktiv) | — | — | — | — |
|
||||||
|
| TRO133 | Vario | Highway-Eingang 2 | JA4302.stJam4302_1 | Extern | — | — |
|
||||||
|
| TRO134 | Vario | AMR Highway | JA4402.stJam4402_1 | Extern | — | — |
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
### 14. Erweiterungen aus der E/A-Listen- und Positionsdaten-Analyse
|
||||||
|
|
||||||
|
Die Analyse der Eingabelisten in `data/Eingaben/` (siehe [EA-Listen-Analyse.md](EA-Listen-Analyse.md)) hat gezeigt, dass grosse Teile des JSON automatisch aus den Projektierungsdaten befuellbar sind. Dafuer werden folgende Schema-Erweiterungen eingefuehrt:
|
||||||
|
|
||||||
|
#### 14.1 Feld `unit` je TRO/Conveyor (Schluessel zur E/A-Liste)
|
||||||
|
|
||||||
|
Jede TRO-/Conveyor-Instanz erhaelt die Foerdertechnik-Einheit (M-Nummer) als expliziten Schluessel. Die M-Nummern stehen in den Kommentaren der E/A-Listen und identisch in den REGION-Namen des SCL-Codes:
|
||||||
|
|
||||||
|
```json
|
||||||
|
{
|
||||||
|
"id": "TRO115",
|
||||||
|
"unit": "M4104",
|
||||||
|
"unitKind": "CV",
|
||||||
|
"type": "Vario",
|
||||||
|
"pos": { "x": 341906, "y": 164862 },
|
||||||
|
"cabinet": "UC1101"
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
||||||
|
| Feld | Quelle | Bedeutung |
|
||||||
|
|---|---|---|
|
||||||
|
| `unit` | Kommentar E/A-Liste (`(ILS-CV M4104)`) | M-Nummer der mechanischen Einheit |
|
||||||
|
| `unitKind` | dito | `KR` = Kreisel/Carousel, `CV` = Conveyor, `K` = Kreisel-Einfahrt |
|
||||||
|
| `pos` | `..._positions.json` -> `sensors[<BMK>@<SPS>].pos` | x/y-Lage in mm (Referenzsensor der Einheit) |
|
||||||
|
| `cabinet` | `..._positions.json` -> `mappings` | Verteiler/Schaltschrank aus der realen Verkabelung |
|
||||||
|
|
||||||
|
#### 14.2 Gruppierungsebene `areas`
|
||||||
|
|
||||||
|
Neue Top-Level-Ebene, die TROs/Conveyors zu den in den Listen gefundenen Bereichsgruppen buendelt:
|
||||||
|
|
||||||
|
```json
|
||||||
|
"areas": [
|
||||||
|
{
|
||||||
|
"id": "Block 1.1.1",
|
||||||
|
"kind": "pinStoreBlock",
|
||||||
|
"members": ["TRO208", "TRO209", "TRO210"],
|
||||||
|
"ucStations": ["UC2101"],
|
||||||
|
"safetyZone": "UZ0201",
|
||||||
|
"storageDb": "DB_Storage1.1.1",
|
||||||
|
"lines": 8
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": "LS1",
|
||||||
|
"kind": "loadingStation",
|
||||||
|
"members": ["TRO103", "TRO104", "TRO105", "TRO106", "LoadingBoom1"],
|
||||||
|
"safetyZone": "UZ0110"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": "WS1.1",
|
||||||
|
"kind": "workStation",
|
||||||
|
"members": ["TRO421"]
|
||||||
|
}
|
||||||
|
]
|
||||||
|
```
|
||||||
|
|
||||||
|
Gefundene `kind`-Werte: `pinStoreBlock` (Block x.y.z, UH02/UH03), `loadingStation` (LS 1/2, UH01), `workStation` (WS x.y, UH04/UH05), `safetyZone` (UZ0x0y), `ucStation` (Feldstation/Verteiler).
|
||||||
|
|
||||||
|
#### 14.3 Rollenklassifikation ueber das `VERW`-Vokabular
|
||||||
|
|
||||||
|
Die Positions-JSONs (`..._positions.json`) enthalten je Signal das Feld `VERW` — ein kontrolliertes Vokabular, das zuverlaessiger ist als das Parsen der freien Kommentartexte:
|
||||||
|
|
||||||
|
| `VERW`-Wert | Rolle im JSON | Hinweis auf FB-Typ |
|
||||||
|
|---|---|---|
|
||||||
|
| `In sep` | `separator.sensorInSep` | — |
|
||||||
|
| `Sep` | `outputs.stopper*` (MB-Ausgang) | — |
|
||||||
|
| `Jam detector` / `Jam detector (LP)` | `sensorJam*` | — |
|
||||||
|
| `ES branch` | `outputs.sw*ExTo*` (Weichenausgang) | `1SepNSwi` |
|
||||||
|
| `conveyor full` | `vario.sensors.jam` / Puffer voll | `Vario` |
|
||||||
|
| `MT in Position` | `vario.sensors.carrInPos` | `Vario` |
|
||||||
|
| `Finger in position` | `vario.sensors.finger` | `Vario` |
|
||||||
|
| `PIN query` | PinStore-Abfrage | `PinStore_Auto` |
|
||||||
|
| `Sync P1`..`P4` | Synchronisationspunkte | PinStore/Vario-Sonderform |
|
||||||
|
| `Rad dreht` | LoadingBoom Rad-Sensor | LoadingBoom |
|
||||||
|
|
||||||
|
Heuristik fuer den FB-Typ je Einheit: `ES branch` vorhanden -> Weiche; `Finger`/`MT in Position`/`conveyor full` -> `Vario`; `PIN query` -> `PinStore_Auto`; Anzahl `In sep` (1/2) -> `1Sep`/`2Sep`; nur FC/MA-Paar ohne Separator -> `FB_Conveyor`.
|
||||||
|
|
||||||
|
#### 14.4 Quellen-Uebersicht
|
||||||
|
|
||||||
|
| Datenquelle | Liefert |
|
||||||
|
|---|---|
|
||||||
|
| `..._TIA.xlsx` "PLC Tags" | BMK-Name, Datentyp, `%E/%A`-Adresse, Kommentar -> `sensors[]`, `outputs` |
|
||||||
|
| `..._TIA.xlsx` "Constants" | `cIn...`-Indexkonstanten -> Konstanten-Tabelle, `sensors[].constant` |
|
||||||
|
| `..._WSCAD.xlsx` "Bezug" | Ortskennzeichen `=A01+UCxxxx-KF1DIx` -> Karten-/Stationszuordnung |
|
||||||
|
| `..._positions.json` | `pos` (x/y), `VERW` (Rolle), `mappings` (Signal->Verteiler), `distributors` (Verteiler-Position) |
|
||||||
|
| `..._todraw.json` | Kabelwege und -laengen (Doku/BOM, nicht SPS-relevant) |
|
||||||
|
|
||||||
|
Nicht aus den Listen ableitbar bleiben: Timings, Priority-Manager, Release-Ausdruecke, Scanner-Zuordnung (BX = PROFINET), `customCode` und die Verkettungsrichtung der Topologie (`connections`/`destinations`). Die Positionen dienen dabei als Plausibilitaets-Check der Topologie (kurze Abstaende = wahrscheinliche Nachbarn) und fuer massstabsgetreue Lageplaene.
|
||||||
|
|
||||||
|
#### 14.5 Skeleton-Generator
|
||||||
|
|
||||||
|
Das Skript [lib/create_skel.py](../lib/create_skel.py) (Aufruf ueber `bin\create_skel.bat`) liest die Eingabelisten und erzeugt je Steuerung ein Skeleton der JSON-Zwischendatei (`results/skeleton_UH0x.json`) sowie ein SCL-Grundgeruest. Die globalen Definitionen werden beim Programmstart aus `PV_CFG` geladen: [cfg/skel.cfg](../cfg/skel.cfg) (JSON: Dateinamen, `VERW`-Vokabular, FB-Typ-Regeln) und [cfg/skel_scl.cfg](../cfg/skel_scl.cfg) (INI-Style: die SCL-Aufruf-Templates, zeilenweise lesbar — jede `[sektion]` ist ein Template, der Inhalt wird verbatim inkl. Einrueckung und Leerzeilen uebernommen). Fehlende Konfigurationsdateien fallen auf die im Skript eingebauten Defaults zurueck (Cold-Start-faehig).
|
||||||
|
|
||||||
|
Mit `--con-ini` bzw. `--con-json` liest der Generator zusaetzlich die TRO-Topologie aus [data/connect.ini](../data/connect.ini) bzw. [data/connect.json](../data/connect.json) (Format `hmf-connect-v1`, extrahiert aus [TRO_Graph_UH01-UH05.dot](TRO_Graph_UH01-UH05.dot)) und ergaenzt jedes Skeleton um einen `topology`-Abschnitt: je TRO die aufgeloeste JamArea-Verdrahtung (`entries`/`exits` inkl. `dbRef` auf `"DB_JamAreaxxxx".stJamxxxx_y`), dazu die rohen `connections`/`externals`-Listen. Beide Eingabewege liefern identische Ergebnisse.
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
## Welche SCL-Bausteine werden daraus generiert?
|
## Welche SCL-Bausteine werden daraus generiert?
|
||||||
|
|
||||||
| Ziel-Baustein | Generiert aus JSON-Abschnitt |
|
| Ziel-Baustein | Generiert aus JSON-Abschnitt |
|
||||||
|
|||||||
@@ -0,0 +1,705 @@
|
|||||||
|
// ============================================================================
|
||||||
|
// TRO-Topologie-Graph der Gesamtanlage HundM_Fortna (UH01 - UH05)
|
||||||
|
// ============================================================================
|
||||||
|
//
|
||||||
|
// Format: Graphviz DOT (https://graphviz.org)
|
||||||
|
// Rendern z.B. mit: dot -Tsvg TRO_Graph_UH01-UH05.dot -o graph.svg
|
||||||
|
// oder online: https://dreampuf.github.io/GraphvizOnline
|
||||||
|
//
|
||||||
|
// Quelle: Automatisch extrahiert aus den FB_Main.scl der 5 Steuerungen
|
||||||
|
// (=A01+UH01-KF00 ... =A01+UH05-KF00, Ordner 100_Main).
|
||||||
|
// Erzeugt von bin/generate_tro_graph.py.
|
||||||
|
//
|
||||||
|
// Methode: Jeder TRO-Baustein (FB_ILS_MTRO_*, FB_EmptyCarrBuffer,
|
||||||
|
// FB_LoadingBoom_INBOUND) referenziert JamAreas als Parameter:
|
||||||
|
// arInOutJamEntr* / arInOutStorageLines / arInOutCarrierStopper = Eingang
|
||||||
|
// arInOutJamExit* / arInOutJamBypass / arInOutJamFinger /
|
||||||
|
// arInOutCarrierExit = Ausgang
|
||||||
|
// Zwei TROs sind verbunden, wenn der Ausgangs-Slot des einen
|
||||||
|
// dieselbe JamArea referenziert wie der Eingangs-Slot des anderen.
|
||||||
|
// Auskommentierter Code wurde ignoriert.
|
||||||
|
//
|
||||||
|
// Knoten: Ein Knoten je TRO-Instanz, Label: Name, [FB-Typ], REGION-Kommentar
|
||||||
|
// aus FB_Main. Farbe/Form nach FB-Typ:
|
||||||
|
// hellblau/Box = 1Sep (Standard-Separator)
|
||||||
|
// rot/Box = 1Sep_SSCC (SSCC-Scanner + WCS-Telegramm)
|
||||||
|
// gelb/Raute = 1Sep1Swi, 1Sep2Swi, 2Sep1Swi (Weichen)
|
||||||
|
// violett/Parallelogr.= Vario (Kettenfoerderer)
|
||||||
|
// tuerkis/Parallelogr.= Vario_workStation (manueller Arbeitsplatz)
|
||||||
|
// gruen/3D-Box = EmptyCarrBuffer (Leertablar-Puffer)
|
||||||
|
// grau = Sonstige (z.B. LoadingBoom, PinStore)
|
||||||
|
//
|
||||||
|
// Kanten: Label = JamArea-Slot (JAxxxx_y = "DB_JamAreaxxxx".stJamxxxx_y).
|
||||||
|
// Zusatz "Dir2"/"Dir3" = Weichen-Ausgang (arInOutJamExit3/4),
|
||||||
|
// Richtungsentscheidung kommt aus FC_Direction.
|
||||||
|
// Gestrichelt "Bypass" = Bypass-Spur (PinStore),
|
||||||
|
// gestrichelt "Finger" = Finger-Uebergabe eines Vario-Foerderers.
|
||||||
|
//
|
||||||
|
// EXTERN: Graue Kanten zu EXTERN-Knoten = JamAreas, die nur auf einer
|
||||||
|
// Seite belegt sind (Anlagengrenze, Uebergabe an WES/WCS, AMR
|
||||||
|
// oder andere SPS). CPU-CPU-Uebergaben zwischen den Steuerungen
|
||||||
|
// sind an den Labels "IO_Device_UHxx_TO_UHyy..." erkennbar
|
||||||
|
// (PROFINET-Direktkopplung, kein gemeinsamer JamArea-DB).
|
||||||
|
//
|
||||||
|
// Hinweis: Kanten existieren nur innerhalb einer Steuerung, da JamArea-DBs
|
||||||
|
// nicht SPS-uebergreifend geteilt werden. Der physische Fluss
|
||||||
|
// zwischen den UHs laeuft ueber die EXTERN-Uebergaben.
|
||||||
|
//
|
||||||
|
// Umfang: 250 TRO-Knoten, 284 Verbindungen (Stand der Extraktion siehe Git-Historie)
|
||||||
|
// UH01: 36 TROs, 37 Verbindungen
|
||||||
|
// UH02: 74 TROs, 88 Verbindungen
|
||||||
|
// UH03: 84 TROs, 102 Verbindungen
|
||||||
|
// UH04: 24 TROs, 25 Verbindungen
|
||||||
|
// UH05: 32 TROs, 32 Verbindungen
|
||||||
|
|
||||||
|
digraph TRO_Topologie {
|
||||||
|
rankdir = "LR";
|
||||||
|
fontname = "Arial";
|
||||||
|
node [fontname="Arial", fontsize=10];
|
||||||
|
edge [fontname="Arial", fontsize=8];
|
||||||
|
label = "TRO-Topologie HundM_Fortna (UH01-UH05)";
|
||||||
|
labelloc = "t";
|
||||||
|
|
||||||
|
subgraph "cluster_UH01" {
|
||||||
|
label = "UH01 (=A01+UH01-KF00)";
|
||||||
|
style = "rounded";
|
||||||
|
color = "#888888";
|
||||||
|
"UH01.TRO100" [label="TRO100\n[1Sep]\nTRO 100 (1Sep)", shape=box, style=filled, fillcolor="#d4e8ff"];
|
||||||
|
"UH01.TRO101" [label="TRO101\n[EmptyCarrBuffer]\nTRO101 (Empty Buffer rechts)", shape=box3d, style=filled, fillcolor="#d4f0d4"];
|
||||||
|
"UH01.TRO101_IN" [label="TRO101_IN\n[1Sep]\nTRO 101_IN(1Sep)", shape=box, style=filled, fillcolor="#d4e8ff"];
|
||||||
|
"UH01.TRO102" [label="TRO102\n[EmptyCarrBuffer]\nTRO102 (Empty Buffer links)", shape=box3d, style=filled, fillcolor="#d4f0d4"];
|
||||||
|
"UH01.TRO102_IN" [label="TRO102_IN\n[1Sep]\nTRO 102_IN(1Sep)", shape=box, style=filled, fillcolor="#d4e8ff"];
|
||||||
|
"UH01.TRO103" [label="TRO103\n[1Sep]\nTRO 103 (1Sep)", shape=box, style=filled, fillcolor="#d4e8ff"];
|
||||||
|
"UH01.TRO104" [label="TRO104\n[1Sep]\nTRO 104 (1Sep)+Scanner", shape=box, style=filled, fillcolor="#d4e8ff"];
|
||||||
|
"UH01.TRO105" [label="TRO105\n[1Sep_SSCC]\nTRO 105 (1Sep)+Scanner", shape=box, style=filled, fillcolor="#ffd4d4"];
|
||||||
|
"UH01.TRO106" [label="TRO106\n[1Sep]\nTRO 106 (1Sep)", shape=box, style=filled, fillcolor="#d4e8ff"];
|
||||||
|
"UH01.TRO107" [label="TRO107\n[1Sep1Swi]\nTRO 107(1Sep1Swi)", shape=diamond, style=filled, fillcolor="#ffe4a0"];
|
||||||
|
"UH01.TRO108" [label="TRO108\n[1Sep]\nTRO 108 (1Sep)", shape=box, style=filled, fillcolor="#d4e8ff"];
|
||||||
|
"UH01.TRO109" [label="TRO109\n[1Sep]\nTRO 109 (1Sep)+Scanner", shape=box, style=filled, fillcolor="#d4e8ff"];
|
||||||
|
"UH01.TRO110" [label="TRO110\n[1Sep_SSCC]\nTRO 110 (1Sep)+Scanner", shape=box, style=filled, fillcolor="#ffd4d4"];
|
||||||
|
"UH01.TRO111" [label="TRO111\n[1Sep]\nTRO 111 (1Sep)", shape=box, style=filled, fillcolor="#d4e8ff"];
|
||||||
|
"UH01.TRO112" [label="TRO112\n[1Sep1Swi]\nTRO 112 (1Sep1Swi)", shape=diamond, style=filled, fillcolor="#ffe4a0"];
|
||||||
|
"UH01.TRO113" [label="TRO113\n[1Sep]\nTRO 113 (1Sep)+Scanner", shape=box, style=filled, fillcolor="#d4e8ff"];
|
||||||
|
"UH01.TRO114" [label="TRO114\n[1Sep1Swi]\nTRO 114 (1Sep1Switch)+Scanner", shape=diamond, style=filled, fillcolor="#ffe4a0"];
|
||||||
|
"UH01.TRO115" [label="TRO115\n[Vario]\nTRO 115 (Vario)", shape=parallelogram, style=filled, fillcolor="#e8d4f0"];
|
||||||
|
"UH01.TRO116" [label="TRO116\n[1Sep]\nTRO 116 (1Sep)", shape=box, style=filled, fillcolor="#d4e8ff"];
|
||||||
|
"UH01.TRO117" [label="TRO117\n[1Sep]\nTRO 117 (1Sep) + Scanner", shape=box, style=filled, fillcolor="#d4e8ff"];
|
||||||
|
"UH01.TRO120" [label="TRO120\n[Vario]\nTRO 120 (Vario)", shape=parallelogram, style=filled, fillcolor="#e8d4f0"];
|
||||||
|
"UH01.TRO121" [label="TRO121\n[Vario]\nTRO 121(Vario)", shape=parallelogram, style=filled, fillcolor="#e8d4f0"];
|
||||||
|
"UH01.TRO122" [label="TRO122\n[1Sep]\nTRO 122 (1Sep)", shape=box, style=filled, fillcolor="#d4e8ff"];
|
||||||
|
"UH01.TRO123" [label="TRO123\n[Vario]\nTRO 123 (Vario)", shape=parallelogram, style=filled, fillcolor="#e8d4f0"];
|
||||||
|
"UH01.TRO124" [label="TRO124\n[1Sep1Swi]\nTRO 124 (1Sep1Switch)", shape=diamond, style=filled, fillcolor="#ffe4a0"];
|
||||||
|
"UH01.TRO125" [label="TRO125\n[1Sep]\nTRO 125 (1Sep)", shape=box, style=filled, fillcolor="#d4e8ff"];
|
||||||
|
"UH01.TRO126" [label="TRO126\n[Vario]\nTRO 126 (Vario)", shape=parallelogram, style=filled, fillcolor="#e8d4f0"];
|
||||||
|
"UH01.TRO127" [label="TRO127\n[Vario]\nTRO 127 (Vario)", shape=parallelogram, style=filled, fillcolor="#e8d4f0"];
|
||||||
|
"UH01.TRO128" [label="TRO128\n[Vario]\nTRO 128 (Vario)", shape=parallelogram, style=filled, fillcolor="#e8d4f0"];
|
||||||
|
"UH01.TRO129" [label="TRO129\n[1Sep]\nTRO 129 (1Sep)", shape=box, style=filled, fillcolor="#d4e8ff"];
|
||||||
|
"UH01.TRO130" [label="TRO130\n[1Sep]\nTRO 130 (1Sep)", shape=box, style=filled, fillcolor="#d4e8ff"];
|
||||||
|
"UH01.TRO131" [label="TRO131\n[Vario]\nTRO 131 (Vario)", shape=parallelogram, style=filled, fillcolor="#e8d4f0"];
|
||||||
|
"UH01.TRO133" [label="TRO133\n[Vario]\nTRO 133 (Vario)", shape=parallelogram, style=filled, fillcolor="#e8d4f0"];
|
||||||
|
"UH01.TRO134" [label="TRO134\n[Vario]\nTRO 134 (Vario)", shape=parallelogram, style=filled, fillcolor="#e8d4f0"];
|
||||||
|
"UH01.fbLoadingBoom1" [label="fbLoadingBoom1\n[LoadingBoom_INBOUND]\nLoadingBoom 1", shape=box, style=filled, fillcolor="#f0f0f0"];
|
||||||
|
"UH01.fbLoadingBoom2" [label="fbLoadingBoom2\n[LoadingBoom_INBOUND]\nLoadingBoom 2", shape=box, style=filled, fillcolor="#f0f0f0"];
|
||||||
|
"UH01.EXTERN_IN" [label="EXTERN\n(Zulauf)", shape=ellipse, style="filled,dashed", fillcolor="#f8f8f8"];
|
||||||
|
"UH01.TRO128" -> "UH01.TRO100" [label="JA0100_1 Finger", style=dashed];
|
||||||
|
"UH01.TRO100" -> "UH01.TRO101_IN" [label="JA0101_1"];
|
||||||
|
"UH01.TRO101_IN" -> "UH01.TRO102_IN" [label="JA0101_2"];
|
||||||
|
"UH01.TRO102" -> "UH01.TRO107" [label="JA0102_1"];
|
||||||
|
"UH01.TRO117" -> "UH01.TRO107" [label="JA0102_1"];
|
||||||
|
"UH01.TRO101" -> "UH01.TRO112" [label="JA0102_2"];
|
||||||
|
"UH01.TRO106" -> "UH01.TRO112" [label="JA0102_2"];
|
||||||
|
"UH01.TRO107" -> "UH01.TRO112" [label="JA0102_2 Dir2"];
|
||||||
|
"UH01.TRO111" -> "UH01.TRO113" [label="JA0102_3"];
|
||||||
|
"UH01.TRO112" -> "UH01.TRO113" [label="JA0102_3 Dir2"];
|
||||||
|
"UH01.TRO113" -> "UH01.TRO114" [label="JA0102_4"];
|
||||||
|
"UH01.TRO114" -> "UH01.TRO116" [label="JA0102_5 Dir2"];
|
||||||
|
"UH01.TRO116" -> "UH01.TRO117" [label="JA0102_6"];
|
||||||
|
"UH01.TRO107" -> "UH01.TRO103" [label="JA0103_1"];
|
||||||
|
"UH01.TRO103" -> "UH01.TRO104" [label="JA0104_1"];
|
||||||
|
"UH01.TRO104" -> "UH01.fbLoadingBoom1" [label="JA0104_2"];
|
||||||
|
"UH01.fbLoadingBoom1" -> "UH01.TRO105" [label="JA0104_3"];
|
||||||
|
"UH01.TRO105" -> "UH01.TRO106" [label="JA0106_2"];
|
||||||
|
"UH01.TRO112" -> "UH01.TRO108" [label="JA0107_1"];
|
||||||
|
"UH01.TRO108" -> "UH01.TRO109" [label="JA0108_1"];
|
||||||
|
"UH01.TRO109" -> "UH01.fbLoadingBoom2" [label="JA0108_2"];
|
||||||
|
"UH01.fbLoadingBoom2" -> "UH01.TRO110" [label="JA0108_3"];
|
||||||
|
"UH01.TRO110" -> "UH01.TRO111" [label="JA0110_2"];
|
||||||
|
"UH01.TRO115" -> "UH01.TRO120" [label="JA4103_1 Finger", style=dashed];
|
||||||
|
"UH01.TRO125" -> "UH01.TRO126" [label="JA4203_1"];
|
||||||
|
"UH01.TRO129" -> "UH01.TRO130" [label="JA4204_1"];
|
||||||
|
"UH01.TRO124" -> "UH01.TRO125" [label="JA4204_2"];
|
||||||
|
"UH01.TRO133" -> "UH01.TRO129" [label="JA4302_2 Finger", style=dashed];
|
||||||
|
"UH01.TRO134" -> "UH01.TRO131" [label="JA4403_1 Finger", style=dashed];
|
||||||
|
"UH01.TRO124" -> "UH01.TRO127" [label="JA4501_1 Dir2"];
|
||||||
|
"UH01.TRO130" -> "UH01.TRO127" [label="JA4501_1"];
|
||||||
|
"UH01.TRO127" -> "UH01.TRO128" [label="JA4501_2 Finger", style=dashed];
|
||||||
|
"UH01.TRO122" -> "UH01.TRO123" [label="JA4502_1"];
|
||||||
|
"UH01.TRO123" -> "UH01.TRO124" [label="JA4502_2 Finger", style=dashed];
|
||||||
|
"UH01.TRO121" -> "UH01.TRO122" [label="JA4503_2 Finger", style=dashed];
|
||||||
|
"UH01.TRO101_IN" -> "UH01.TRO101" [label="JamBuffer101"];
|
||||||
|
"UH01.TRO102_IN" -> "UH01.TRO102" [label="JamBuffer102"];
|
||||||
|
"UH01.EXTERN_IN" -> "UH01.TRO115" [label="JA4104_1", color="#999999"];
|
||||||
|
"UH01.EXTERN_IN" -> "UH01.TRO133" [label="JA4302_1", color="#999999"];
|
||||||
|
"UH01.EXTERN_IN" -> "UH01.TRO134" [label="JA4402_1", color="#999999"];
|
||||||
|
"UH01.EXTERN_IN" -> "UH01.TRO121" [label="JA4503_1", color="#999999"];
|
||||||
|
}
|
||||||
|
|
||||||
|
subgraph "cluster_UH02" {
|
||||||
|
label = "UH02 (=A01+UH02-KF00)";
|
||||||
|
style = "rounded";
|
||||||
|
color = "#888888";
|
||||||
|
"UH02.TRO200" [label="TRO200\n[Vario]\nTRO 200 (Vario)", shape=parallelogram, style=filled, fillcolor="#e8d4f0"];
|
||||||
|
"UH02.TRO201" [label="TRO201\n[1Sep]\nTRO 201 (1Sep)", shape=box, style=filled, fillcolor="#d4e8ff"];
|
||||||
|
"UH02.TRO202" [label="TRO202\n[1Sep1Swi]\nTRO 202 (1Sep1Switch)+Scanner(BX2103)", shape=diamond, style=filled, fillcolor="#ffe4a0"];
|
||||||
|
"UH02.TRO203" [label="TRO203\n[1Sep1Swi]\nTRO 203 (1Sep1Switch) + Scanner (BX2111)", shape=diamond, style=filled, fillcolor="#ffe4a0"];
|
||||||
|
"UH02.TRO204" [label="TRO204\n[1Sep1Swi]\nTRO 204(1Sep1Switch) + Scanner(BX2112)", shape=diamond, style=filled, fillcolor="#ffe4a0"];
|
||||||
|
"UH02.TRO205" [label="TRO205\n[1Sep1Swi]\nTRO 205 (1Sep1Switch) + Scanner(BX2114)", shape=diamond, style=filled, fillcolor="#ffe4a0"];
|
||||||
|
"UH02.TRO206" [label="TRO206\n[1Sep1Swi]\nTRO 206 (1Sep1Switch)+Scanner(BX2113)", shape=diamond, style=filled, fillcolor="#ffe4a0"];
|
||||||
|
"UH02.TRO207" [label="TRO207\n[1Sep]\nTRO 207(1Sep)", shape=box, style=filled, fillcolor="#d4e8ff"];
|
||||||
|
"UH02.TRO208" [label="TRO208\n[PinStore_Auto]\nAufruf: TRO208", shape=box, style=filled, fillcolor="#f0f0f0"];
|
||||||
|
"UH02.TRO209" [label="TRO209\n[Vario]\nTRO 209 (Vario)", shape=parallelogram, style=filled, fillcolor="#e8d4f0"];
|
||||||
|
"UH02.TRO210" [label="TRO210\n[1Sep]\nTRO 210 (1Sep)", shape=box, style=filled, fillcolor="#d4e8ff"];
|
||||||
|
"UH02.TRO211" [label="TRO211\n[PinStore_Auto]\nAufruf: TRO211", shape=box, style=filled, fillcolor="#f0f0f0"];
|
||||||
|
"UH02.TRO212" [label="TRO212\n[Vario]\nTRO 212 (Vario)", shape=parallelogram, style=filled, fillcolor="#e8d4f0"];
|
||||||
|
"UH02.TRO213" [label="TRO213\n[1Sep]\nTRO 213 (1Sep)", shape=box, style=filled, fillcolor="#d4e8ff"];
|
||||||
|
"UH02.TRO214" [label="TRO214\n[PinStore_Auto]\nAufruf: TRO214", shape=box, style=filled, fillcolor="#f0f0f0"];
|
||||||
|
"UH02.TRO215" [label="TRO215\n[Vario]\nTRO 215 (Vario)", shape=parallelogram, style=filled, fillcolor="#e8d4f0"];
|
||||||
|
"UH02.TRO216" [label="TRO216\n[1Sep]\nTRO 216 (1Sep)", shape=box, style=filled, fillcolor="#d4e8ff"];
|
||||||
|
"UH02.TRO217" [label="TRO217\n[PinStore_Auto]\nAufruf: TRO217", shape=box, style=filled, fillcolor="#f0f0f0"];
|
||||||
|
"UH02.TRO218" [label="TRO218\n[Vario]\nTRO 218 (Vario)", shape=parallelogram, style=filled, fillcolor="#e8d4f0"];
|
||||||
|
"UH02.TRO219" [label="TRO219\n[1Sep]\nTRO 219(1Sep)", shape=box, style=filled, fillcolor="#d4e8ff"];
|
||||||
|
"UH02.TRO220" [label="TRO220\n[Vario]\nTRO 220 (Vario)", shape=parallelogram, style=filled, fillcolor="#e8d4f0"];
|
||||||
|
"UH02.TRO221" [label="TRO221\n[1Sep]\nTRO 221 (1Sep)", shape=box, style=filled, fillcolor="#d4e8ff"];
|
||||||
|
"UH02.TRO222" [label="TRO222\n[1Sep1Swi]\nTRO 222 (1Sep1Switch)+Scanner(BX2121)", shape=diamond, style=filled, fillcolor="#ffe4a0"];
|
||||||
|
"UH02.TRO223" [label="TRO223\n[1Sep1Swi]\nTRO 223 (1Sep1Switch)+Scanner(BX2126)", shape=diamond, style=filled, fillcolor="#ffe4a0"];
|
||||||
|
"UH02.TRO224" [label="TRO224\n[1Sep1Swi]\nTRO 224 (1Sep1Switch)+Scanner(BX2127)", shape=diamond, style=filled, fillcolor="#ffe4a0"];
|
||||||
|
"UH02.TRO225" [label="TRO225\n[1Sep1Swi]\nTRO 225(1Sep1Switch)+Scanner(BX2129)", shape=diamond, style=filled, fillcolor="#ffe4a0"];
|
||||||
|
"UH02.TRO226" [label="TRO226\n[1Sep1Swi]\nTRO 226 (1Sep1Switch)+Scanner(BX2128)", shape=diamond, style=filled, fillcolor="#ffe4a0"];
|
||||||
|
"UH02.TRO227" [label="TRO227\n[1Sep]\nTRO 227 (1Sep)", shape=box, style=filled, fillcolor="#d4e8ff"];
|
||||||
|
"UH02.TRO228" [label="TRO228\n[PinStore_Auto]\nAufruf: TRO228", shape=box, style=filled, fillcolor="#f0f0f0"];
|
||||||
|
"UH02.TRO229" [label="TRO229\n[Vario]\nTRO 229 (Vario)", shape=parallelogram, style=filled, fillcolor="#e8d4f0"];
|
||||||
|
"UH02.TRO230" [label="TRO230\n[1Sep]\nTRO 230 (1Sep)", shape=box, style=filled, fillcolor="#d4e8ff"];
|
||||||
|
"UH02.TRO231" [label="TRO231\n[PinStore_Auto]\nAufruf: TRO231", shape=box, style=filled, fillcolor="#f0f0f0"];
|
||||||
|
"UH02.TRO232" [label="TRO232\n[Vario]\nTRO 232 (Vario)", shape=parallelogram, style=filled, fillcolor="#e8d4f0"];
|
||||||
|
"UH02.TRO233" [label="TRO233\n[1Sep]\nTRO 233 (1Sep)", shape=box, style=filled, fillcolor="#d4e8ff"];
|
||||||
|
"UH02.TRO234" [label="TRO234\n[PinStore_Auto]\nAufruf: TRO234", shape=box, style=filled, fillcolor="#f0f0f0"];
|
||||||
|
"UH02.TRO235" [label="TRO235\n[Vario]\nTRO 235 (Vario)", shape=parallelogram, style=filled, fillcolor="#e8d4f0"];
|
||||||
|
"UH02.TRO236" [label="TRO236\n[1Sep]\nTRO 236 (1Sep)", shape=box, style=filled, fillcolor="#d4e8ff"];
|
||||||
|
"UH02.TRO237" [label="TRO237\n[PinStore_Auto]\nAufruf: TRO237", shape=box, style=filled, fillcolor="#f0f0f0"];
|
||||||
|
"UH02.TRO238" [label="TRO238\n[Vario]\nTRO 238 (Vario)", shape=parallelogram, style=filled, fillcolor="#e8d4f0"];
|
||||||
|
"UH02.TRO239" [label="TRO239\n[1Sep]\nTRO 239 (1Sep)", shape=box, style=filled, fillcolor="#d4e8ff"];
|
||||||
|
"UH02.TRO240" [label="TRO240\n[Vario]\nTRO 240 (Vario)", shape=parallelogram, style=filled, fillcolor="#e8d4f0"];
|
||||||
|
"UH02.TRO241" [label="TRO241\n[1Sep]\nTRO 241(1Sep)", shape=box, style=filled, fillcolor="#d4e8ff"];
|
||||||
|
"UH02.TRO242" [label="TRO242\n[1Sep1Swi]\nTRO 242 (1Sep1Switch)+Scanner(BX2130)", shape=diamond, style=filled, fillcolor="#ffe4a0"];
|
||||||
|
"UH02.TRO243" [label="TRO243\n[1Sep1Swi]\nTRO 243 (1Sep1Switch)+Scanner(BX3137)", shape=diamond, style=filled, fillcolor="#ffe4a0"];
|
||||||
|
"UH02.TRO244" [label="TRO244\n[1Sep1Swi]\nTRO 244 (1Sep1Switch)+Scanner(BX2136)", shape=diamond, style=filled, fillcolor="#ffe4a0"];
|
||||||
|
"UH02.TRO245" [label="TRO245\n[1Sep1Swi]\nTRO 245 (1Sep1Switch)+Scanner(BX2138)", shape=diamond, style=filled, fillcolor="#ffe4a0"];
|
||||||
|
"UH02.TRO246" [label="TRO246\n[1Sep1Swi]\nTRO 246 (1Sep1Switch)+Scanner(BX2137)", shape=diamond, style=filled, fillcolor="#ffe4a0"];
|
||||||
|
"UH02.TRO247" [label="TRO247\n[1Sep]\nTRO 247(1Sep)", shape=box, style=filled, fillcolor="#d4e8ff"];
|
||||||
|
"UH02.TRO248" [label="TRO248\n[PinStore_Auto]\nAufruf: TRO248", shape=box, style=filled, fillcolor="#f0f0f0"];
|
||||||
|
"UH02.TRO249" [label="TRO249\n[Vario]\nTRO 249 (Vario)", shape=parallelogram, style=filled, fillcolor="#e8d4f0"];
|
||||||
|
"UH02.TRO250" [label="TRO250\n[1Sep]\nTRO 250 (1Sep)", shape=box, style=filled, fillcolor="#d4e8ff"];
|
||||||
|
"UH02.TRO251" [label="TRO251\n[PinStore_Auto]\nAufruf: TRO251", shape=box, style=filled, fillcolor="#f0f0f0"];
|
||||||
|
"UH02.TRO252" [label="TRO252\n[Vario]\nTRO 252 (Vario)", shape=parallelogram, style=filled, fillcolor="#e8d4f0"];
|
||||||
|
"UH02.TRO253" [label="TRO253\n[1Sep]\nTRO 253 (1Sep)", shape=box, style=filled, fillcolor="#d4e8ff"];
|
||||||
|
"UH02.TRO254" [label="TRO254\n[PinStore_Auto]\nAufruf: TRO254", shape=box, style=filled, fillcolor="#f0f0f0"];
|
||||||
|
"UH02.TRO255" [label="TRO255\n[Vario]\nTRO 255 (Vario)", shape=parallelogram, style=filled, fillcolor="#e8d4f0"];
|
||||||
|
"UH02.TRO256" [label="TRO256\n[1Sep]\nTRO 256 (1Sep)", shape=box, style=filled, fillcolor="#d4e8ff"];
|
||||||
|
"UH02.TRO257" [label="TRO257\n[PinStore_Auto]\nAufruf: TRO257", shape=box, style=filled, fillcolor="#f0f0f0"];
|
||||||
|
"UH02.TRO258" [label="TRO258\n[Vario]\nTRO 258 (Vario)", shape=parallelogram, style=filled, fillcolor="#e8d4f0"];
|
||||||
|
"UH02.TRO259" [label="TRO259\n[1Sep]\nTRO 259 (1Sep)", shape=box, style=filled, fillcolor="#d4e8ff"];
|
||||||
|
"UH02.TRO260" [label="TRO260\n[Vario]\nTRO 260 (Vario) + Scanner (BX2115)", shape=parallelogram, style=filled, fillcolor="#e8d4f0"];
|
||||||
|
"UH02.TRO261" [label="TRO261\n[1Sep]\nTRO 261 (1Sep)", shape=box, style=filled, fillcolor="#d4e8ff"];
|
||||||
|
"UH02.TRO262" [label="TRO262\n[Vario]\nTRO 262 (Vario) + Scanner (BX2109)", shape=parallelogram, style=filled, fillcolor="#e8d4f0"];
|
||||||
|
"UH02.TRO263" [label="TRO263\n[1Sep]\nTRO 263 (1Sep)", shape=box, style=filled, fillcolor="#d4e8ff"];
|
||||||
|
"UH02.TRO264" [label="TRO264\n[Vario]\nTRO 264 (Vario) + Scanner (BX2108)", shape=parallelogram, style=filled, fillcolor="#e8d4f0"];
|
||||||
|
"UH02.TRO265" [label="TRO265\n[1Sep]\nTRO 265 (1Sep)", shape=box, style=filled, fillcolor="#d4e8ff"];
|
||||||
|
"UH02.TRO266" [label="TRO266\n[1Sep]\nTRO 266(1Sep)", shape=box, style=filled, fillcolor="#d4e8ff"];
|
||||||
|
"UH02.TRO267" [label="TRO267\n[1Sep2Swi]\nTRO 267 (1Sep2Switch)+Scanner(BX2100)", shape=diamond, style=filled, fillcolor="#ffc060"];
|
||||||
|
"UH02.TRO268" [label="TRO268\n[1Sep2Swi]\nTRO 268 (1Sep2Switch)+Scanner(BX2101)", shape=diamond, style=filled, fillcolor="#ffc060"];
|
||||||
|
"UH02.TRO269" [label="TRO269\n[1Sep]\nTRO 269 (1Sep)+Scanner (BX2102)", shape=box, style=filled, fillcolor="#d4e8ff"];
|
||||||
|
"UH02.TRO270" [label="TRO270\n[Vario]\nTRO 270 (Vario)", shape=parallelogram, style=filled, fillcolor="#e8d4f0"];
|
||||||
|
"UH02.TRO272" [label="TRO272\n[Vario]\nTRO 272 (Vario)", shape=parallelogram, style=filled, fillcolor="#e8d4f0"];
|
||||||
|
"UH02.TRO274" [label="TRO274\n[1Sep]\nTRO 274 (1Sep)", shape=box, style=filled, fillcolor="#d4e8ff"];
|
||||||
|
"UH02.TRO275" [label="TRO275\n[1Sep]\nTRO 275 (1Sep)", shape=box, style=filled, fillcolor="#d4e8ff"];
|
||||||
|
"UH02.EXTERN_IN" [label="EXTERN\n(Zulauf)", shape=ellipse, style="filled,dashed", fillcolor="#f8f8f8"];
|
||||||
|
"UH02.EXTERN_OUT" [label="EXTERN\n(Ablauf)", shape=ellipse, style="filled,dashed", fillcolor="#f8f8f8"];
|
||||||
|
"UH02.TRO202" -> "UH02.TRO211" [label="JA1101_1 Dir2"];
|
||||||
|
"UH02.TRO213" -> "UH02.TRO211" [label="JA1101_1"];
|
||||||
|
"UH02.TRO211" -> "UH02.TRO208" [label="JA1101_2 Bypass", style=dashed];
|
||||||
|
"UH02.TRO210" -> "UH02.TRO208" [label="JA1101_2"];
|
||||||
|
"UH02.TRO201" -> "UH02.TRO202" [label="JA1102_1"];
|
||||||
|
"UH02.TRO202" -> "UH02.TRO214" [label="JA1102_2"];
|
||||||
|
"UH02.TRO216" -> "UH02.TRO214" [label="JA1102_2"];
|
||||||
|
"UH02.TRO214" -> "UH02.TRO217" [label="JA1102_3 Bypass", style=dashed];
|
||||||
|
"UH02.TRO219" -> "UH02.TRO217" [label="JA1102_3"];
|
||||||
|
"UH02.TRO208" -> "UH02.TRO203" [label="JA1103_1"];
|
||||||
|
"UH02.TRO211" -> "UH02.TRO204" [label="JA1103_2"];
|
||||||
|
"UH02.TRO203" -> "UH02.TRO204" [label="JA1103_2 Dir2"];
|
||||||
|
"UH02.TRO217" -> "UH02.TRO205" [label="JA1104_1"];
|
||||||
|
"UH02.TRO214" -> "UH02.TRO206" [label="JA1104_2"];
|
||||||
|
"UH02.TRO205" -> "UH02.TRO206" [label="JA1104_2"];
|
||||||
|
"UH02.TRO204" -> "UH02.TRO207" [label="JA1104_3 Dir2"];
|
||||||
|
"UH02.TRO206" -> "UH02.TRO207" [label="JA1104_3"];
|
||||||
|
"UH02.TRO203" -> "UH02.TRO209" [label="JA1105_1"];
|
||||||
|
"UH02.TRO209" -> "UH02.TRO210" [label="JA1105_2 Finger", style=dashed];
|
||||||
|
"UH02.TRO204" -> "UH02.TRO212" [label="JA1106_1"];
|
||||||
|
"UH02.TRO212" -> "UH02.TRO213" [label="JA1106_2 Finger", style=dashed];
|
||||||
|
"UH02.TRO206" -> "UH02.TRO215" [label="JA1107_1 Dir2"];
|
||||||
|
"UH02.TRO215" -> "UH02.TRO216" [label="JA1107_2 Finger", style=dashed];
|
||||||
|
"UH02.TRO205" -> "UH02.TRO218" [label="JA1108_1 Dir2"];
|
||||||
|
"UH02.TRO218" -> "UH02.TRO219" [label="JA1108_2 Finger", style=dashed];
|
||||||
|
"UH02.TRO200" -> "UH02.TRO201" [label="JA1109_2 Finger", style=dashed];
|
||||||
|
"UH02.TRO268" -> "UH02.TRO269" [label="JA1110_1 Dir3"];
|
||||||
|
"UH02.TRO261" -> "UH02.TRO274" [label="JA1110_2"];
|
||||||
|
"UH02.TRO269" -> "UH02.TRO274" [label="JA1110_2"];
|
||||||
|
"UH02.TRO263" -> "UH02.TRO266" [label="JA1110_3"];
|
||||||
|
"UH02.TRO274" -> "UH02.TRO266" [label="JA1110_3"];
|
||||||
|
"UH02.TRO265" -> "UH02.TRO267" [label="JA1110_4"];
|
||||||
|
"UH02.TRO266" -> "UH02.TRO267" [label="JA1110_4"];
|
||||||
|
"UH02.TRO267" -> "UH02.TRO275" [label="JA1110_5 Dir3"];
|
||||||
|
"UH02.TRO275" -> "UH02.TRO268" [label="JA1110_6"];
|
||||||
|
"UH02.TRO222" -> "UH02.TRO231" [label="JA1201_1 Dir2"];
|
||||||
|
"UH02.TRO233" -> "UH02.TRO231" [label="JA1201_1"];
|
||||||
|
"UH02.TRO231" -> "UH02.TRO228" [label="JA1201_2 Bypass", style=dashed];
|
||||||
|
"UH02.TRO230" -> "UH02.TRO228" [label="JA1201_2"];
|
||||||
|
"UH02.TRO221" -> "UH02.TRO222" [label="JA1202_1"];
|
||||||
|
"UH02.TRO222" -> "UH02.TRO234" [label="JA1202_2"];
|
||||||
|
"UH02.TRO236" -> "UH02.TRO234" [label="JA1202_2"];
|
||||||
|
"UH02.TRO234" -> "UH02.TRO237" [label="JA1202_3 Bypass", style=dashed];
|
||||||
|
"UH02.TRO239" -> "UH02.TRO237" [label="JA1202_3"];
|
||||||
|
"UH02.TRO228" -> "UH02.TRO223" [label="JA1203_1"];
|
||||||
|
"UH02.TRO231" -> "UH02.TRO224" [label="JA1203_2"];
|
||||||
|
"UH02.TRO223" -> "UH02.TRO224" [label="JA1203_2 Dir2"];
|
||||||
|
"UH02.TRO237" -> "UH02.TRO225" [label="JA1204_1"];
|
||||||
|
"UH02.TRO234" -> "UH02.TRO226" [label="JA1204_2"];
|
||||||
|
"UH02.TRO225" -> "UH02.TRO226" [label="JA1204_2"];
|
||||||
|
"UH02.TRO224" -> "UH02.TRO227" [label="JA1204_3 Dir2"];
|
||||||
|
"UH02.TRO226" -> "UH02.TRO227" [label="JA1204_3"];
|
||||||
|
"UH02.TRO223" -> "UH02.TRO229" [label="JA1205_1"];
|
||||||
|
"UH02.TRO229" -> "UH02.TRO230" [label="JA1205_2 Finger", style=dashed];
|
||||||
|
"UH02.TRO224" -> "UH02.TRO232" [label="JA1206_1"];
|
||||||
|
"UH02.TRO232" -> "UH02.TRO233" [label="JA1206_2 Finger", style=dashed];
|
||||||
|
"UH02.TRO226" -> "UH02.TRO235" [label="JA1207_1 Dir2"];
|
||||||
|
"UH02.TRO235" -> "UH02.TRO236" [label="JA1207_2 Finger", style=dashed];
|
||||||
|
"UH02.TRO225" -> "UH02.TRO238" [label="JA1208_1 Dir2"];
|
||||||
|
"UH02.TRO238" -> "UH02.TRO239" [label="JA1208_2 Finger", style=dashed];
|
||||||
|
"UH02.TRO220" -> "UH02.TRO221" [label="JA1209_2 Finger", style=dashed];
|
||||||
|
"UH02.TRO248" -> "UH02.TRO243" [label="JA1301_1"];
|
||||||
|
"UH02.TRO251" -> "UH02.TRO244" [label="JA1301_2"];
|
||||||
|
"UH02.TRO243" -> "UH02.TRO244" [label="JA1301_2"];
|
||||||
|
"UH02.TRO257" -> "UH02.TRO245" [label="JA1302_1"];
|
||||||
|
"UH02.TRO254" -> "UH02.TRO246" [label="JA1302_2"];
|
||||||
|
"UH02.TRO245" -> "UH02.TRO246" [label="JA1302_2 Dir2"];
|
||||||
|
"UH02.TRO242" -> "UH02.TRO251" [label="JA1303_1"];
|
||||||
|
"UH02.TRO253" -> "UH02.TRO251" [label="JA1303_1"];
|
||||||
|
"UH02.TRO251" -> "UH02.TRO248" [label="JA1303_2 Bypass", style=dashed];
|
||||||
|
"UH02.TRO250" -> "UH02.TRO248" [label="JA1303_2"];
|
||||||
|
"UH02.TRO241" -> "UH02.TRO242" [label="JA1304_1"];
|
||||||
|
"UH02.TRO242" -> "UH02.TRO254" [label="JA1304_2 Dir2"];
|
||||||
|
"UH02.TRO256" -> "UH02.TRO254" [label="JA1304_2"];
|
||||||
|
"UH02.TRO254" -> "UH02.TRO257" [label="JA1304_3 Bypass", style=dashed];
|
||||||
|
"UH02.TRO259" -> "UH02.TRO257" [label="JA1304_3"];
|
||||||
|
"UH02.TRO243" -> "UH02.TRO249" [label="JA1305_1 Dir2"];
|
||||||
|
"UH02.TRO249" -> "UH02.TRO250" [label="JA1305_2 Finger", style=dashed];
|
||||||
|
"UH02.TRO244" -> "UH02.TRO252" [label="JA1306_1 Dir2"];
|
||||||
|
"UH02.TRO252" -> "UH02.TRO253" [label="JA1306_2 Finger", style=dashed];
|
||||||
|
"UH02.TRO246" -> "UH02.TRO255" [label="JA1307_1"];
|
||||||
|
"UH02.TRO255" -> "UH02.TRO256" [label="JA1307_2 Finger", style=dashed];
|
||||||
|
"UH02.TRO245" -> "UH02.TRO258" [label="JA1308_1"];
|
||||||
|
"UH02.TRO258" -> "UH02.TRO259" [label="JA1308_2 Finger", style=dashed];
|
||||||
|
"UH02.TRO240" -> "UH02.TRO241" [label="JA1309_2 Finger", style=dashed];
|
||||||
|
"UH02.TRO264" -> "UH02.TRO265" [label="JA1401_2 Finger", style=dashed];
|
||||||
|
"UH02.TRO262" -> "UH02.TRO263" [label="JA1501_2 Finger", style=dashed];
|
||||||
|
"UH02.TRO260" -> "UH02.TRO261" [label="JA1601_2 Finger", style=dashed];
|
||||||
|
"UH02.EXTERN_IN" -> "UH02.TRO200" [label="JA1109_1", color="#999999"];
|
||||||
|
"UH02.EXTERN_IN" -> "UH02.TRO220" [label="JA1209_1", color="#999999"];
|
||||||
|
"UH02.TRO244" -> "UH02.EXTERN_OUT" [label="JA1302_3", color="#999999"];
|
||||||
|
"UH02.TRO246" -> "UH02.EXTERN_OUT" [label="JA1302_3", color="#999999"];
|
||||||
|
"UH02.EXTERN_IN" -> "UH02.TRO240" [label="JA1309_1", color="#999999"];
|
||||||
|
"UH02.EXTERN_IN" -> "UH02.TRO264" [label="JA1401_1", color="#999999"];
|
||||||
|
"UH02.EXTERN_IN" -> "UH02.TRO262" [label="JA1501_1", color="#999999"];
|
||||||
|
"UH02.EXTERN_IN" -> "UH02.TRO260" [label="JA1601_1", color="#999999"];
|
||||||
|
"UH02.EXTERN_IN" -> "UH02.TRO272" [label="JA1801_1", color="#999999"];
|
||||||
|
"UH02.EXTERN_IN" -> "UH02.TRO270" [label="JA4701_1", color="#999999"];
|
||||||
|
"UH02.EXTERN_IN" -> "UH02.TRO208" [label="Storage1.1.1", color="#999999"];
|
||||||
|
"UH02.EXTERN_IN" -> "UH02.TRO211" [label="Storage1.1.2", color="#999999"];
|
||||||
|
"UH02.EXTERN_IN" -> "UH02.TRO214" [label="Storage1.1.3", color="#999999"];
|
||||||
|
"UH02.EXTERN_IN" -> "UH02.TRO217" [label="Storage1.1.4", color="#999999"];
|
||||||
|
"UH02.EXTERN_IN" -> "UH02.TRO228" [label="Storage1.2.1", color="#999999"];
|
||||||
|
"UH02.EXTERN_IN" -> "UH02.TRO231" [label="Storage1.2.2", color="#999999"];
|
||||||
|
"UH02.EXTERN_IN" -> "UH02.TRO234" [label="Storage1.2.3", color="#999999"];
|
||||||
|
"UH02.EXTERN_IN" -> "UH02.TRO237" [label="Storage1.2.4", color="#999999"];
|
||||||
|
"UH02.EXTERN_IN" -> "UH02.TRO248" [label="Storage1.3.1", color="#999999"];
|
||||||
|
"UH02.EXTERN_IN" -> "UH02.TRO251" [label="Storage1.3.2", color="#999999"];
|
||||||
|
"UH02.EXTERN_IN" -> "UH02.TRO254" [label="Storage1.3.3", color="#999999"];
|
||||||
|
"UH02.EXTERN_IN" -> "UH02.TRO257" [label="Storage1.3.4", color="#999999"];
|
||||||
|
"UH02.TRO207" -> "UH02.EXTERN_OUT" [label="IO_Device_UH02_TO_UH01.stCARRIER_INFO", color="#999999"];
|
||||||
|
"UH02.TRO227" -> "UH02.EXTERN_OUT" [label="IO_Device_UH02_TO_UH01.stCARRIER_INFO_1", color="#999999"];
|
||||||
|
"UH02.TRO247" -> "UH02.EXTERN_OUT" [label="IO_Device_UH02_TO_UH01.stCARRIER_INFO_2", color="#999999"];
|
||||||
|
}
|
||||||
|
|
||||||
|
subgraph "cluster_UH03" {
|
||||||
|
label = "UH03 (=A01+UH03-KF00)";
|
||||||
|
style = "rounded";
|
||||||
|
color = "#888888";
|
||||||
|
"UH03.TRO300" [label="TRO300\n[Vario]\nTRO 300 (Vario)", shape=parallelogram, style=filled, fillcolor="#e8d4f0"];
|
||||||
|
"UH03.TRO301" [label="TRO301\n[1Sep]\nTRO 301(1Sep)", shape=box, style=filled, fillcolor="#d4e8ff"];
|
||||||
|
"UH03.TRO302" [label="TRO302\n[Vario]\nTRO 302 (Vario)", shape=parallelogram, style=filled, fillcolor="#e8d4f0"];
|
||||||
|
"UH03.TRO303" [label="TRO303\n[Vario]\nTRO 303 (Vario)", shape=parallelogram, style=filled, fillcolor="#e8d4f0"];
|
||||||
|
"UH03.TRO304" [label="TRO304\n[1Sep]\nTRO 304(1Sep)", shape=box, style=filled, fillcolor="#d4e8ff"];
|
||||||
|
"UH03.TRO305" [label="TRO305\n[Vario]\nTRO 305 (Vario)", shape=parallelogram, style=filled, fillcolor="#e8d4f0"];
|
||||||
|
"UH03.TRO306" [label="TRO306\n[Vario]\nTRO 306 (Vario)", shape=parallelogram, style=filled, fillcolor="#e8d4f0"];
|
||||||
|
"UH03.TRO307" [label="TRO307\n[Vario]\nTRO 307 (Vario)", shape=parallelogram, style=filled, fillcolor="#e8d4f0"];
|
||||||
|
"UH03.TRO308" [label="TRO308\n[Vario]\nTRO 308 (Vario)", shape=parallelogram, style=filled, fillcolor="#e8d4f0"];
|
||||||
|
"UH03.TRO309" [label="TRO309\n[1Sep]\nTRO 309 (1Sep)", shape=box, style=filled, fillcolor="#d4e8ff"];
|
||||||
|
"UH03.TRO310" [label="TRO310\n[1Sep]\nTRO 310 (1Sep)+Scanner (BX3102)", shape=box, style=filled, fillcolor="#d4e8ff"];
|
||||||
|
"UH03.TRO311" [label="TRO311\n[1Sep]\nTRO 311 (1Sep)+Scanner(BX3101)", shape=box, style=filled, fillcolor="#d4e8ff"];
|
||||||
|
"UH03.TRO312" [label="TRO312\n[1Sep]\nTRO 312 (1Sep)+Scanner(BX3100)", shape=box, style=filled, fillcolor="#d4e8ff"];
|
||||||
|
"UH03.TRO313" [label="TRO313\n[1Sep1Swi]\nTRO 313 (1Sep1Switch)+Scanner(BX3103)", shape=diamond, style=filled, fillcolor="#ffe4a0"];
|
||||||
|
"UH03.TRO314" [label="TRO314\n[1Sep1Swi]\nTRO 314 (1Sep1Switch)+Scanner(BX3104)", shape=diamond, style=filled, fillcolor="#ffe4a0"];
|
||||||
|
"UH03.TRO315" [label="TRO315\n[1Sep]\nTRO 315 (1Sep)", shape=box, style=filled, fillcolor="#d4e8ff"];
|
||||||
|
"UH03.TRO316" [label="TRO316\n[1Sep]\nTRO 316 (1Sep)", shape=box, style=filled, fillcolor="#d4e8ff"];
|
||||||
|
"UH03.TRO317" [label="TRO317\n[1Sep1Swi]\nTRO 317 (1Sep1Switch)+Scanner(BX3105)", shape=diamond, style=filled, fillcolor="#ffe4a0"];
|
||||||
|
"UH03.TRO318" [label="TRO318\n[1Sep1Swi]\nTRO 318 (1Sep1Switch) + Scanner(BX3106)", shape=diamond, style=filled, fillcolor="#ffe4a0"];
|
||||||
|
"UH03.TRO319" [label="TRO319\n[1Sep1Swi]\nTRO 319 (1Sep1Switch) + Scanner (BX3111)", shape=diamond, style=filled, fillcolor="#ffe4a0"];
|
||||||
|
"UH03.TRO320" [label="TRO320\n[1Sep1Swi]\nTRO 320 (1Sep1Switch) + Scanner(BX3112)", shape=diamond, style=filled, fillcolor="#ffe4a0"];
|
||||||
|
"UH03.TRO321" [label="TRO321\n[1Sep1Swi]\nTRO 321 (1Sep1Switch) + Scanner(BX3114)", shape=diamond, style=filled, fillcolor="#ffe4a0"];
|
||||||
|
"UH03.TRO322" [label="TRO322\n[1Sep1Swi]\nTRO 322 (1Sep1Switch)+Scanner(BX3113)", shape=diamond, style=filled, fillcolor="#ffe4a0"];
|
||||||
|
"UH03.TRO323" [label="TRO323\n[1Sep]\nTRO 323 (1Sep)", shape=box, style=filled, fillcolor="#d4e8ff"];
|
||||||
|
"UH03.TRO324" [label="TRO324\n[Vario]\nTRO 324 (Vario)", shape=parallelogram, style=filled, fillcolor="#e8d4f0"];
|
||||||
|
"UH03.TRO325" [label="TRO325\n[1Sep]\nTRO 325 (1Sep)", shape=box, style=filled, fillcolor="#d4e8ff"];
|
||||||
|
"UH03.TRO326" [label="TRO326\n[1Sep]\nTRO 326 (1Sep)", shape=box, style=filled, fillcolor="#d4e8ff"];
|
||||||
|
"UH03.TRO327" [label="TRO327\n[PinStore_Auto]\nAufruf: TRO327", shape=box, style=filled, fillcolor="#f0f0f0"];
|
||||||
|
"UH03.TRO328" [label="TRO328\n[Vario]\nTRO 328 (Vario)", shape=parallelogram, style=filled, fillcolor="#e8d4f0"];
|
||||||
|
"UH03.TRO329" [label="TRO329\n[1Sep]\nTRO 329 (1Sep)", shape=box, style=filled, fillcolor="#d4e8ff"];
|
||||||
|
"UH03.TRO330" [label="TRO330\n[PinStore_Auto]\nAufruf: TRO330", shape=box, style=filled, fillcolor="#f0f0f0"];
|
||||||
|
"UH03.TRO331" [label="TRO331\n[Vario]\nTRO 331 (Vario)", shape=parallelogram, style=filled, fillcolor="#e8d4f0"];
|
||||||
|
"UH03.TRO332" [label="TRO332\n[1Sep]\nTRO 332 (1Sep)", shape=box, style=filled, fillcolor="#d4e8ff"];
|
||||||
|
"UH03.TRO333" [label="TRO333\n[PinStore_Auto]\nAufruf: TRO333", shape=box, style=filled, fillcolor="#f0f0f0"];
|
||||||
|
"UH03.TRO334" [label="TRO334\n[Vario]\nTRO 334 (Vario)", shape=parallelogram, style=filled, fillcolor="#e8d4f0"];
|
||||||
|
"UH03.TRO335" [label="TRO335\n[1Sep]\nTRO 335 (1Sep)", shape=box, style=filled, fillcolor="#d4e8ff"];
|
||||||
|
"UH03.TRO336" [label="TRO336\n[PinStore_Auto]\nAufruf: TRO336", shape=box, style=filled, fillcolor="#f0f0f0"];
|
||||||
|
"UH03.TRO337" [label="TRO337\n[Vario]\nTRO 337 (Vario)", shape=parallelogram, style=filled, fillcolor="#e8d4f0"];
|
||||||
|
"UH03.TRO338" [label="TRO338\n[1Sep]\nTRO 338 (1Sep)", shape=box, style=filled, fillcolor="#d4e8ff"];
|
||||||
|
"UH03.TRO339" [label="TRO339\n[1Sep1Swi]\nTRO 339 (1Sep1Switch)+Scanner(BX3120)", shape=diamond, style=filled, fillcolor="#ffe4a0"];
|
||||||
|
"UH03.TRO340" [label="TRO340\n[1Sep1Swi]\nTRO 340 (1Sep1Switch)+Scanner(BX3121)", shape=diamond, style=filled, fillcolor="#ffe4a0"];
|
||||||
|
"UH03.TRO341" [label="TRO341\n[1Sep1Swi]\nTRO 341 (1Sep1Switch)+Scanner(BX3126)", shape=diamond, style=filled, fillcolor="#ffe4a0"];
|
||||||
|
"UH03.TRO342" [label="TRO342\n[1Sep1Swi]\nTRO 342 (1Sep1Switch)+Scanner(BX3127)", shape=diamond, style=filled, fillcolor="#ffe4a0"];
|
||||||
|
"UH03.TRO343" [label="TRO343\n[1Sep1Swi]\nTRO 343 (1Sep1Switch)+Scanner(BX3129)", shape=diamond, style=filled, fillcolor="#ffe4a0"];
|
||||||
|
"UH03.TRO344" [label="TRO344\n[1Sep1Swi]\nTRO 344 (1Sep1Switch)+Scanner(BX3128)", shape=diamond, style=filled, fillcolor="#ffe4a0"];
|
||||||
|
"UH03.TRO345" [label="TRO345\n[1Sep]\nTRO 345 (1Sep)", shape=box, style=filled, fillcolor="#d4e8ff"];
|
||||||
|
"UH03.TRO346" [label="TRO346\n[Vario]\nTRO 346 (Vario)", shape=parallelogram, style=filled, fillcolor="#e8d4f0"];
|
||||||
|
"UH03.TRO347" [label="TRO347\n[1Sep]\nTRO 347 (1Sep)", shape=box, style=filled, fillcolor="#d4e8ff"];
|
||||||
|
"UH03.TRO348" [label="TRO348\n[1Sep]\nTRO 348 (1Sep)", shape=box, style=filled, fillcolor="#d4e8ff"];
|
||||||
|
"UH03.TRO349" [label="TRO349\n[PinStore_Auto]\nAufruf: TRO349", shape=box, style=filled, fillcolor="#f0f0f0"];
|
||||||
|
"UH03.TRO350" [label="TRO350\n[Vario]\nTRO 350 (Vario)", shape=parallelogram, style=filled, fillcolor="#e8d4f0"];
|
||||||
|
"UH03.TRO351" [label="TRO351\n[1Sep]\nTRO 351 (1Sep)", shape=box, style=filled, fillcolor="#d4e8ff"];
|
||||||
|
"UH03.TRO352" [label="TRO352\n[PinStore_Auto]\nAufruf: TRO352", shape=box, style=filled, fillcolor="#f0f0f0"];
|
||||||
|
"UH03.TRO353" [label="TRO353\n[Vario]\nTRO 353 (Vario)", shape=parallelogram, style=filled, fillcolor="#e8d4f0"];
|
||||||
|
"UH03.TRO354" [label="TRO354\n[1Sep]\nTRO 354 (1Sep)", shape=box, style=filled, fillcolor="#d4e8ff"];
|
||||||
|
"UH03.TRO355" [label="TRO355\n[PinStore_Auto]\nAufruf: TRO355", shape=box, style=filled, fillcolor="#f0f0f0"];
|
||||||
|
"UH03.TRO356" [label="TRO356\n[Vario]\nTRO 356 (Vario)", shape=parallelogram, style=filled, fillcolor="#e8d4f0"];
|
||||||
|
"UH03.TRO357" [label="TRO357\n[1Sep]\nTRO 357 (1Sep)", shape=box, style=filled, fillcolor="#d4e8ff"];
|
||||||
|
"UH03.TRO358" [label="TRO358\n[PinStore_Auto]\nAufruf: TRO358", shape=box, style=filled, fillcolor="#f0f0f0"];
|
||||||
|
"UH03.TRO359" [label="TRO359\n[Vario]\nTRO 359 (Vario)", shape=parallelogram, style=filled, fillcolor="#e8d4f0"];
|
||||||
|
"UH03.TRO360" [label="TRO360\n[1Sep]\nTRO 360 (1Sep)", shape=box, style=filled, fillcolor="#d4e8ff"];
|
||||||
|
"UH03.TRO361" [label="TRO361\n[1Sep1Swi]\nTRO 361 (1Sep1Switch)+Scanner(BX3131)", shape=diamond, style=filled, fillcolor="#ffe4a0"];
|
||||||
|
"UH03.TRO362" [label="TRO362\n[1Sep1Swi]\nTRO 362 (1Sep1Switch)+Scanner(BX3132)", shape=diamond, style=filled, fillcolor="#ffe4a0"];
|
||||||
|
"UH03.TRO363" [label="TRO363\n[1Sep1Swi]\nTRO 363 (1Sep1Switch)+Scanner(BX3137)", shape=diamond, style=filled, fillcolor="#ffe4a0"];
|
||||||
|
"UH03.TRO364" [label="TRO364\n[1Sep1Swi]\nTRO 364 (1Sep1Switch)+Scanner(BX3138)", shape=diamond, style=filled, fillcolor="#ffe4a0"];
|
||||||
|
"UH03.TRO365" [label="TRO365\n[1Sep1Swi]\nTRO 365 (1Sep1Switch)+Scanner(BX3140)", shape=diamond, style=filled, fillcolor="#ffe4a0"];
|
||||||
|
"UH03.TRO366" [label="TRO366\n[1Sep1Swi]\nTRO 366 (1Sep1Switch)+Scanner(BX3139)", shape=diamond, style=filled, fillcolor="#ffe4a0"];
|
||||||
|
"UH03.TRO367" [label="TRO367\n[1Sep]\nTRO 367 (1Sep)", shape=box, style=filled, fillcolor="#d4e8ff"];
|
||||||
|
"UH03.TRO368" [label="TRO368\n[Vario]\nTRO 368 (Vario, from Lvl1)", shape=parallelogram, style=filled, fillcolor="#e8d4f0"];
|
||||||
|
"UH03.TRO369" [label="TRO369\n[1Sep]\nTRO 369 (1Sep)", shape=box, style=filled, fillcolor="#d4e8ff"];
|
||||||
|
"UH03.TRO370" [label="TRO370\n[1Sep]\nTRO 370 (1Sep)", shape=box, style=filled, fillcolor="#d4e8ff"];
|
||||||
|
"UH03.TRO371" [label="TRO371\n[PinStore_Auto]\nAufruf: TRO371", shape=box, style=filled, fillcolor="#f0f0f0"];
|
||||||
|
"UH03.TRO372" [label="TRO372\n[Vario]\nTRO 372 (Vario)", shape=parallelogram, style=filled, fillcolor="#e8d4f0"];
|
||||||
|
"UH03.TRO373" [label="TRO373\n[1Sep]\nTRO 373 (1Sep)", shape=box, style=filled, fillcolor="#d4e8ff"];
|
||||||
|
"UH03.TRO374" [label="TRO374\n[PinStore_Auto]\nAufruf: TRO374", shape=box, style=filled, fillcolor="#f0f0f0"];
|
||||||
|
"UH03.TRO375" [label="TRO375\n[Vario]\nTRO 375 (Vario)", shape=parallelogram, style=filled, fillcolor="#e8d4f0"];
|
||||||
|
"UH03.TRO376" [label="TRO376\n[1Sep]\nTRO 376 (1Sep)", shape=box, style=filled, fillcolor="#d4e8ff"];
|
||||||
|
"UH03.TRO377" [label="TRO377\n[PinStore_Auto]\nAufruf: TRO377", shape=box, style=filled, fillcolor="#f0f0f0"];
|
||||||
|
"UH03.TRO378" [label="TRO378\n[Vario]\nTRO 378 (Vario)", shape=parallelogram, style=filled, fillcolor="#e8d4f0"];
|
||||||
|
"UH03.TRO379" [label="TRO379\n[1Sep]\nTRO 379 (1Sep)", shape=box, style=filled, fillcolor="#d4e8ff"];
|
||||||
|
"UH03.TRO380" [label="TRO380\n[PinStore_Auto]\nAufruf: TRO380", shape=box, style=filled, fillcolor="#f0f0f0"];
|
||||||
|
"UH03.TRO381" [label="TRO381\n[Vario]\nTRO 381 (Vario)", shape=parallelogram, style=filled, fillcolor="#e8d4f0"];
|
||||||
|
"UH03.TRO382" [label="TRO382\n[1Sep]\nTRO 382 (1Sep)", shape=box, style=filled, fillcolor="#d4e8ff"];
|
||||||
|
"UH03.TRO386" [label="TRO386\n[1Sep]\nTRO 386 (1Sep) - kam später dazu", shape=box, style=filled, fillcolor="#d4e8ff"];
|
||||||
|
"UH03.EXTERN_IN" [label="EXTERN\n(Zulauf)", shape=ellipse, style="filled,dashed", fillcolor="#f8f8f8"];
|
||||||
|
"UH03.EXTERN_OUT" [label="EXTERN\n(Ablauf)", shape=ellipse, style="filled,dashed", fillcolor="#f8f8f8"];
|
||||||
|
"UH03.TRO318" -> "UH03.TRO330" [label="JA2101_1 Dir2"];
|
||||||
|
"UH03.TRO332" -> "UH03.TRO330" [label="JA2101_1"];
|
||||||
|
"UH03.TRO330" -> "UH03.TRO327" [label="JA2101_2 Bypass", style=dashed];
|
||||||
|
"UH03.TRO329" -> "UH03.TRO327" [label="JA2101_2"];
|
||||||
|
"UH03.TRO315" -> "UH03.TRO317" [label="JA2102_1"];
|
||||||
|
"UH03.TRO317" -> "UH03.TRO318" [label="JA2102_2"];
|
||||||
|
"UH03.TRO318" -> "UH03.TRO333" [label="JA2102_3"];
|
||||||
|
"UH03.TRO335" -> "UH03.TRO333" [label="JA2102_3"];
|
||||||
|
"UH03.TRO333" -> "UH03.TRO336" [label="JA2102_4 Bypass", style=dashed];
|
||||||
|
"UH03.TRO338" -> "UH03.TRO336" [label="JA2102_4"];
|
||||||
|
"UH03.TRO327" -> "UH03.TRO319" [label="JA2103_1"];
|
||||||
|
"UH03.TRO330" -> "UH03.TRO320" [label="JA2103_2"];
|
||||||
|
"UH03.TRO319" -> "UH03.TRO320" [label="JA2103_2 Dir2"];
|
||||||
|
"UH03.TRO336" -> "UH03.TRO321" [label="JA2104_1"];
|
||||||
|
"UH03.TRO333" -> "UH03.TRO322" [label="JA2104_2"];
|
||||||
|
"UH03.TRO321" -> "UH03.TRO322" [label="JA2104_2"];
|
||||||
|
"UH03.TRO320" -> "UH03.TRO323" [label="JA2104_3 Dir2"];
|
||||||
|
"UH03.TRO322" -> "UH03.TRO323" [label="JA2104_3"];
|
||||||
|
"UH03.TRO323" -> "UH03.TRO326" [label="JA2104_4"];
|
||||||
|
"UH03.TRO325" -> "UH03.TRO326" [label="JA2104_4"];
|
||||||
|
"UH03.TRO319" -> "UH03.TRO328" [label="JA2105_1"];
|
||||||
|
"UH03.TRO328" -> "UH03.TRO329" [label="JA2105_2 Finger", style=dashed];
|
||||||
|
"UH03.TRO320" -> "UH03.TRO331" [label="JA2106_1"];
|
||||||
|
"UH03.TRO331" -> "UH03.TRO332" [label="JA2106_2 Finger", style=dashed];
|
||||||
|
"UH03.TRO322" -> "UH03.TRO334" [label="JA2107_1 Dir2"];
|
||||||
|
"UH03.TRO334" -> "UH03.TRO335" [label="JA2107_2 Finger", style=dashed];
|
||||||
|
"UH03.TRO321" -> "UH03.TRO337" [label="JA2108_1 Dir2"];
|
||||||
|
"UH03.TRO337" -> "UH03.TRO338" [label="JA2108_2 Finger", style=dashed];
|
||||||
|
"UH03.TRO324" -> "UH03.TRO325" [label="JA2109_2 Finger", style=dashed];
|
||||||
|
"UH03.TRO386" -> "UH03.TRO310" [label="JA2110_1"];
|
||||||
|
"UH03.TRO310" -> "UH03.TRO313" [label="JA2110_2"];
|
||||||
|
"UH03.TRO311" -> "UH03.TRO313" [label="JA2110_2"];
|
||||||
|
"UH03.TRO312" -> "UH03.TRO313" [label="JA2110_2"];
|
||||||
|
"UH03.TRO313" -> "UH03.TRO314" [label="JA2110_3 Dir2"];
|
||||||
|
"UH03.TRO314" -> "UH03.TRO315" [label="JA2110_4 Dir2"];
|
||||||
|
"UH03.TRO309" -> "UH03.TRO386" [label="JA2110_5"];
|
||||||
|
"UH03.TRO308" -> "UH03.TRO309" [label="JA2111_2 Finger", style=dashed];
|
||||||
|
"UH03.TRO313" -> "UH03.TRO316" [label="JA2112_1"];
|
||||||
|
"UH03.TRO340" -> "UH03.TRO352" [label="JA2201_1 Dir2"];
|
||||||
|
"UH03.TRO354" -> "UH03.TRO352" [label="JA2201_1"];
|
||||||
|
"UH03.TRO352" -> "UH03.TRO349" [label="JA2201_2 Bypass", style=dashed];
|
||||||
|
"UH03.TRO351" -> "UH03.TRO349" [label="JA2201_2"];
|
||||||
|
"UH03.TRO314" -> "UH03.TRO339" [label="JA2202_1"];
|
||||||
|
"UH03.TRO339" -> "UH03.TRO340" [label="JA2202_2"];
|
||||||
|
"UH03.TRO340" -> "UH03.TRO355" [label="JA2202_3"];
|
||||||
|
"UH03.TRO357" -> "UH03.TRO355" [label="JA2202_3"];
|
||||||
|
"UH03.TRO355" -> "UH03.TRO358" [label="JA2202_4 Bypass", style=dashed];
|
||||||
|
"UH03.TRO360" -> "UH03.TRO358" [label="JA2202_4"];
|
||||||
|
"UH03.TRO349" -> "UH03.TRO341" [label="JA2203_1"];
|
||||||
|
"UH03.TRO352" -> "UH03.TRO342" [label="JA2203_2"];
|
||||||
|
"UH03.TRO341" -> "UH03.TRO342" [label="JA2203_2 Dir2"];
|
||||||
|
"UH03.TRO358" -> "UH03.TRO343" [label="JA2204_1"];
|
||||||
|
"UH03.TRO355" -> "UH03.TRO344" [label="JA2204_2"];
|
||||||
|
"UH03.TRO343" -> "UH03.TRO344" [label="JA2204_2"];
|
||||||
|
"UH03.TRO342" -> "UH03.TRO345" [label="JA2204_3 Dir2"];
|
||||||
|
"UH03.TRO344" -> "UH03.TRO345" [label="JA2204_3"];
|
||||||
|
"UH03.TRO345" -> "UH03.TRO348" [label="JA2204_4"];
|
||||||
|
"UH03.TRO347" -> "UH03.TRO348" [label="JA2204_4"];
|
||||||
|
"UH03.TRO341" -> "UH03.TRO350" [label="JA2205_1"];
|
||||||
|
"UH03.TRO350" -> "UH03.TRO351" [label="JA2205_2 Finger", style=dashed];
|
||||||
|
"UH03.TRO342" -> "UH03.TRO353" [label="JA2206_1"];
|
||||||
|
"UH03.TRO353" -> "UH03.TRO354" [label="JA2206_2 Finger", style=dashed];
|
||||||
|
"UH03.TRO344" -> "UH03.TRO356" [label="JA2207_1 Dir2"];
|
||||||
|
"UH03.TRO356" -> "UH03.TRO357" [label="JA2207_2 Finger", style=dashed];
|
||||||
|
"UH03.TRO343" -> "UH03.TRO359" [label="JA2208_1 Dir2"];
|
||||||
|
"UH03.TRO359" -> "UH03.TRO360" [label="JA2208_2 Finger", style=dashed];
|
||||||
|
"UH03.TRO346" -> "UH03.TRO347" [label="JA2209_2 Finger", style=dashed];
|
||||||
|
"UH03.TRO371" -> "UH03.TRO363" [label="JA2301_1"];
|
||||||
|
"UH03.TRO374" -> "UH03.TRO364" [label="JA2301_2"];
|
||||||
|
"UH03.TRO363" -> "UH03.TRO364" [label="JA2301_2"];
|
||||||
|
"UH03.TRO380" -> "UH03.TRO365" [label="JA2302_1"];
|
||||||
|
"UH03.TRO377" -> "UH03.TRO366" [label="JA2302_2"];
|
||||||
|
"UH03.TRO365" -> "UH03.TRO366" [label="JA2302_2 Dir2"];
|
||||||
|
"UH03.TRO364" -> "UH03.TRO367" [label="JA2302_3"];
|
||||||
|
"UH03.TRO366" -> "UH03.TRO367" [label="JA2302_3 Dir2"];
|
||||||
|
"UH03.TRO367" -> "UH03.TRO370" [label="JA2302_4"];
|
||||||
|
"UH03.TRO369" -> "UH03.TRO370" [label="JA2302_4"];
|
||||||
|
"UH03.TRO362" -> "UH03.TRO374" [label="JA2303_1"];
|
||||||
|
"UH03.TRO376" -> "UH03.TRO374" [label="JA2303_1"];
|
||||||
|
"UH03.TRO374" -> "UH03.TRO371" [label="JA2303_2 Bypass", style=dashed];
|
||||||
|
"UH03.TRO373" -> "UH03.TRO371" [label="JA2303_2"];
|
||||||
|
"UH03.TRO316" -> "UH03.TRO361" [label="JA2304_1"];
|
||||||
|
"UH03.TRO361" -> "UH03.TRO362" [label="JA2304_2 Dir2"];
|
||||||
|
"UH03.TRO362" -> "UH03.TRO377" [label="JA2304_3 Dir2"];
|
||||||
|
"UH03.TRO379" -> "UH03.TRO377" [label="JA2304_3"];
|
||||||
|
"UH03.TRO377" -> "UH03.TRO380" [label="JA2304_4 Bypass", style=dashed];
|
||||||
|
"UH03.TRO382" -> "UH03.TRO380" [label="JA2304_4"];
|
||||||
|
"UH03.TRO363" -> "UH03.TRO372" [label="JA2305_1 Dir2"];
|
||||||
|
"UH03.TRO372" -> "UH03.TRO373" [label="JA2305_2 Finger", style=dashed];
|
||||||
|
"UH03.TRO364" -> "UH03.TRO375" [label="JA2306_1 Dir2"];
|
||||||
|
"UH03.TRO375" -> "UH03.TRO376" [label="JA2306_2 Finger", style=dashed];
|
||||||
|
"UH03.TRO366" -> "UH03.TRO378" [label="JA2307_1"];
|
||||||
|
"UH03.TRO378" -> "UH03.TRO379" [label="JA2307_2 Finger", style=dashed];
|
||||||
|
"UH03.TRO365" -> "UH03.TRO381" [label="JA2308_1"];
|
||||||
|
"UH03.TRO381" -> "UH03.TRO382" [label="JA2308_2 Finger", style=dashed];
|
||||||
|
"UH03.TRO368" -> "UH03.TRO369" [label="JA2309_2 Finger", style=dashed];
|
||||||
|
"UH03.TRO300" -> "UH03.TRO302" [label="JA4101_1 Finger", style=dashed];
|
||||||
|
"UH03.TRO301" -> "UH03.TRO302" [label="JA4101_1"];
|
||||||
|
"UH03.TRO302" -> "UH03.TRO311" [label="JA4101_2 Finger", style=dashed];
|
||||||
|
"UH03.TRO303" -> "UH03.TRO305" [label="JA4201_1 Finger", style=dashed];
|
||||||
|
"UH03.TRO304" -> "UH03.TRO305" [label="JA4201_1"];
|
||||||
|
"UH03.TRO305" -> "UH03.TRO312" [label="JA4201_2 Finger", style=dashed];
|
||||||
|
"UH03.TRO336" -> "UH03.EXTERN_OUT" [label="JA2102_5", color="#999999"];
|
||||||
|
"UH03.EXTERN_IN" -> "UH03.TRO324" [label="JA2109_1", color="#999999"];
|
||||||
|
"UH03.EXTERN_IN" -> "UH03.TRO308" [label="JA2111_1", color="#999999"];
|
||||||
|
"UH03.TRO358" -> "UH03.EXTERN_OUT" [label="JA2202_5", color="#999999"];
|
||||||
|
"UH03.EXTERN_IN" -> "UH03.TRO346" [label="JA2209_1", color="#999999"];
|
||||||
|
"UH03.EXTERN_IN" -> "UH03.TRO368" [label="JA2309_1", color="#999999"];
|
||||||
|
"UH03.EXTERN_IN" -> "UH03.TRO300" [label="JA4102_1", color="#999999"];
|
||||||
|
"UH03.EXTERN_IN" -> "UH03.TRO301" [label="JA4102_2", color="#999999"];
|
||||||
|
"UH03.EXTERN_IN" -> "UH03.TRO303" [label="JA4202_1", color="#999999"];
|
||||||
|
"UH03.EXTERN_IN" -> "UH03.TRO304" [label="JA4202_2", color="#999999"];
|
||||||
|
"UH03.EXTERN_IN" -> "UH03.TRO306" [label="JA4301_1", color="#999999"];
|
||||||
|
"UH03.EXTERN_IN" -> "UH03.TRO307" [label="JA4401_1", color="#999999"];
|
||||||
|
"UH03.EXTERN_IN" -> "UH03.TRO327" [label="Storage2.1.1", color="#999999"];
|
||||||
|
"UH03.EXTERN_IN" -> "UH03.TRO330" [label="Storage2.1.2", color="#999999"];
|
||||||
|
"UH03.EXTERN_IN" -> "UH03.TRO333" [label="Storage2.1.3", color="#999999"];
|
||||||
|
"UH03.EXTERN_IN" -> "UH03.TRO336" [label="Storage2.1.4", color="#999999"];
|
||||||
|
"UH03.EXTERN_IN" -> "UH03.TRO349" [label="Storage2.2.1", color="#999999"];
|
||||||
|
"UH03.EXTERN_IN" -> "UH03.TRO352" [label="Storage2.2.2", color="#999999"];
|
||||||
|
"UH03.EXTERN_IN" -> "UH03.TRO355" [label="Storage2.2.3", color="#999999"];
|
||||||
|
"UH03.EXTERN_IN" -> "UH03.TRO358" [label="Storage2.2.4", color="#999999"];
|
||||||
|
"UH03.EXTERN_IN" -> "UH03.TRO371" [label="Storage2.3.1", color="#999999"];
|
||||||
|
"UH03.EXTERN_IN" -> "UH03.TRO374" [label="Storage2.3.2", color="#999999"];
|
||||||
|
"UH03.EXTERN_IN" -> "UH03.TRO377" [label="Storage2.3.3", color="#999999"];
|
||||||
|
"UH03.EXTERN_IN" -> "UH03.TRO380" [label="Storage2.3.4", color="#999999"];
|
||||||
|
"UH03.TRO326" -> "UH03.EXTERN_OUT" [label="IO_Device_UH03_TO_UH01.stCARRIER_INFO", color="#999999"];
|
||||||
|
"UH03.TRO348" -> "UH03.EXTERN_OUT" [label="IO_Device_UH03_TO_UH01.stCARRIER_INFO_1", color="#999999"];
|
||||||
|
"UH03.TRO370" -> "UH03.EXTERN_OUT" [label="IO_Device_UH03_TO_UH01.stCARRIER_INFO_2", color="#999999"];
|
||||||
|
"UH03.TRO317" -> "UH03.EXTERN_OUT" [label="IO_Device_UH03_TO_UH01.stCarrierL2toL1", color="#999999"];
|
||||||
|
"UH03.TRO339" -> "UH03.EXTERN_OUT" [label="IO_Device_UH03_TO_UH01.stCarrierL2toL1_2", color="#999999"];
|
||||||
|
"UH03.TRO361" -> "UH03.EXTERN_OUT" [label="IO_Device_UH03_TO_UH01.stCarrierL2toL1_3", color="#999999"];
|
||||||
|
}
|
||||||
|
|
||||||
|
subgraph "cluster_UH04" {
|
||||||
|
label = "UH04 (=A01+UH04-KF00)";
|
||||||
|
style = "rounded";
|
||||||
|
color = "#888888";
|
||||||
|
"UH04.TRO400" [label="TRO400\n[Vario]\nTRO 400 (Vario)", shape=parallelogram, style=filled, fillcolor="#e8d4f0"];
|
||||||
|
"UH04.TRO401" [label="TRO401\n[Vario]\nTRO 401 (Vario)", shape=parallelogram, style=filled, fillcolor="#e8d4f0"];
|
||||||
|
"UH04.TRO402" [label="TRO402\n[1Sep]\nTRO 402 (1Sep) (Vor Brandschutztor)", shape=box, style=filled, fillcolor="#d4e8ff"];
|
||||||
|
"UH04.TRO403" [label="TRO403\n[Vario]\nTRO 403 (Vario)", shape=parallelogram, style=filled, fillcolor="#e8d4f0"];
|
||||||
|
"UH04.TRO404" [label="TRO404\n[1Sep]\nTRO 404 (1Sep)", shape=box, style=filled, fillcolor="#d4e8ff"];
|
||||||
|
"UH04.TRO405" [label="TRO405\n[1Sep1Swi]\nTRO 405 (1Sep1Switch) + Scanner (BX4100) + Behangskontrolle", shape=diamond, style=filled, fillcolor="#ffe4a0"];
|
||||||
|
"UH04.TRO406" [label="TRO406\n[1Sep]\nTRO 406 (1Sep) + Scanner (BX4101)", shape=box, style=filled, fillcolor="#d4e8ff"];
|
||||||
|
"UH04.TRO407" [label="TRO407\n[1Sep1Swi]\nTRO 407 (1Sep1Switch) + Scanner (BX4102)", shape=diamond, style=filled, fillcolor="#ffe4a0"];
|
||||||
|
"UH04.TRO408" [label="TRO408\n[Vario]\nTRO 408 (Vario)", shape=parallelogram, style=filled, fillcolor="#e8d4f0"];
|
||||||
|
"UH04.TRO409" [label="TRO409\n[1Sep]\nTRO 409 (1Sep)", shape=box, style=filled, fillcolor="#d4e8ff"];
|
||||||
|
"UH04.TRO410" [label="TRO410\n[1Sep1Swi]\nTRO 410 (1Sep1Switch) + Scanner (BX4104)", shape=diamond, style=filled, fillcolor="#ffe4a0"];
|
||||||
|
"UH04.TRO411" [label="TRO411\n[Vario]\nTRO 411 (Vario)", shape=parallelogram, style=filled, fillcolor="#e8d4f0"];
|
||||||
|
"UH04.TRO412" [label="TRO412\n[1Sep]\nTRO 412 (1Sep)", shape=box, style=filled, fillcolor="#d4e8ff"];
|
||||||
|
"UH04.TRO413" [label="TRO413\n[1Sep1Swi]\nTRO 413(1Sep1Switch)+Scanner(BX4106)", shape=diamond, style=filled, fillcolor="#ffe4a0"];
|
||||||
|
"UH04.TRO414" [label="TRO414\n[Vario]\nTRO 414 (Vario)", shape=parallelogram, style=filled, fillcolor="#e8d4f0"];
|
||||||
|
"UH04.TRO415" [label="TRO415\n[1Sep]\nTRO 415 (1Sep)", shape=box, style=filled, fillcolor="#d4e8ff"];
|
||||||
|
"UH04.TRO416" [label="TRO416\n[1Sep]\nTRO 416 (1Sep) + Beladeprüfung", shape=box, style=filled, fillcolor="#d4e8ff"];
|
||||||
|
"UH04.TRO417" [label="TRO417\n[1Sep]\nTRO 417 (1Sep)", shape=box, style=filled, fillcolor="#d4e8ff"];
|
||||||
|
"UH04.TRO418" [label="TRO418\n[Vario]\nTRO 418 (Vario)", shape=parallelogram, style=filled, fillcolor="#e8d4f0"];
|
||||||
|
"UH04.TRO420" [label="TRO420\n[Vario]\nTRO 420 (Vario)", shape=parallelogram, style=filled, fillcolor="#e8d4f0"];
|
||||||
|
"UH04.TRO421" [label="TRO421\n[Vario_workStation]\nTRO 421 (Vario)", shape=parallelogram, style=filled, fillcolor="#c0f0f0"];
|
||||||
|
"UH04.TRO422" [label="TRO422\n[Vario_workStation]\nTRO 422 (Vario)", shape=parallelogram, style=filled, fillcolor="#c0f0f0"];
|
||||||
|
"UH04.TRO423" [label="TRO423\n[Vario_workStation]\nTRO 423 (Vario)", shape=parallelogram, style=filled, fillcolor="#c0f0f0"];
|
||||||
|
"UH04.TRO424" [label="TRO424\n[1Sep]\nTRO 424 (1Sep) vor Behangskontrolle", shape=box, style=filled, fillcolor="#d4e8ff"];
|
||||||
|
"UH04.EXTERN_IN" [label="EXTERN\n(Zulauf)", shape=ellipse, style="filled,dashed", fillcolor="#f8f8f8"];
|
||||||
|
"UH04.EXTERN_OUT" [label="EXTERN\n(Ablauf)", shape=ellipse, style="filled,dashed", fillcolor="#f8f8f8"];
|
||||||
|
"UH04.TRO400" -> "UH04.TRO401" [label="JA4001_1 Finger", style=dashed];
|
||||||
|
"UH04.TRO401" -> "UH04.TRO402" [label="JA4001_2 Finger", style=dashed];
|
||||||
|
"UH04.TRO402" -> "UH04.TRO403" [label="JA4002_1"];
|
||||||
|
"UH04.TRO403" -> "UH04.TRO404" [label="JA4002_2 Finger", style=dashed];
|
||||||
|
"UH04.TRO424" -> "UH04.TRO405" [label="JA4003_1"];
|
||||||
|
"UH04.TRO405" -> "UH04.TRO406" [label="JA4003_2 Dir2"];
|
||||||
|
"UH04.TRO406" -> "UH04.TRO407" [label="JA4003_3"];
|
||||||
|
"UH04.TRO407" -> "UH04.TRO410" [label="JA4003_4 Dir2"];
|
||||||
|
"UH04.TRO409" -> "UH04.TRO410" [label="JA4003_4"];
|
||||||
|
"UH04.TRO410" -> "UH04.TRO413" [label="JA4003_5 Dir2"];
|
||||||
|
"UH04.TRO412" -> "UH04.TRO413" [label="JA4003_5"];
|
||||||
|
"UH04.TRO413" -> "UH04.TRO416" [label="JA4003_6 Dir2"];
|
||||||
|
"UH04.TRO415" -> "UH04.TRO416" [label="JA4003_6"];
|
||||||
|
"UH04.TRO416" -> "UH04.TRO417" [label="JA4003_7"];
|
||||||
|
"UH04.TRO404" -> "UH04.TRO424" [label="JA4003_8"];
|
||||||
|
"UH04.TRO417" -> "UH04.TRO424" [label="JA4003_8"];
|
||||||
|
"UH04.TRO407" -> "UH04.TRO408" [label="JA4004_1"];
|
||||||
|
"UH04.TRO408" -> "UH04.TRO421" [label="JA4004_2 Finger", style=dashed];
|
||||||
|
"UH04.TRO410" -> "UH04.TRO411" [label="JA4006_1"];
|
||||||
|
"UH04.TRO411" -> "UH04.TRO422" [label="JA4006_2 Finger", style=dashed];
|
||||||
|
"UH04.TRO422" -> "UH04.TRO412" [label="JA4007_1 Finger", style=dashed];
|
||||||
|
"UH04.TRO413" -> "UH04.TRO414" [label="JA4008_1"];
|
||||||
|
"UH04.TRO414" -> "UH04.TRO423" [label="JA4008_2 Finger", style=dashed];
|
||||||
|
"UH04.TRO423" -> "UH04.TRO415" [label="JA4009_1 Finger", style=dashed];
|
||||||
|
"UH04.TRO418" -> "UH04.TRO420" [label="JA4011_1 Finger", style=dashed];
|
||||||
|
"UH04.EXTERN_IN" -> "UH04.TRO400" [label="JA4000_1", color="#999999"];
|
||||||
|
"UH04.TRO421" -> "UH04.EXTERN_OUT" [label="JA4005_1", color="#999999"];
|
||||||
|
"UH04.EXTERN_IN" -> "UH04.TRO418" [label="JA4010_1", color="#999999"];
|
||||||
|
}
|
||||||
|
|
||||||
|
subgraph "cluster_UH05" {
|
||||||
|
label = "UH05 (=A01+UH05-KF00)";
|
||||||
|
style = "rounded";
|
||||||
|
color = "#888888";
|
||||||
|
"UH05.TRO500" [label="TRO500\n[Vario]\nTRO 500 (Vario) - Stand: Vorbereitet für Umbau!", shape=parallelogram, style=filled, fillcolor="#e8d4f0"];
|
||||||
|
"UH05.TRO501" [label="TRO501\n[1Sep]\nTRO 501 (1Sep) + Scanner (BX5101)", shape=box, style=filled, fillcolor="#d4e8ff"];
|
||||||
|
"UH05.TRO502" [label="TRO502\n[Vario]\nTRO 502 (Vario) - Stand: Vorbereitet für Umbau!", shape=parallelogram, style=filled, fillcolor="#e8d4f0"];
|
||||||
|
"UH05.TRO503" [label="TRO503\n[1Sep]\nTRO 503 (1Sep)+ Scanner (BX5100)", shape=box, style=filled, fillcolor="#d4e8ff"];
|
||||||
|
"UH05.TRO504" [label="TRO504\n[1Sep]\nTRO 504 (1Sep)", shape=box, style=filled, fillcolor="#d4e8ff"];
|
||||||
|
"UH05.TRO505" [label="TRO505\n[1Sep1Swi]\nTRO 505 (1Sep1Switch) + Scanner (BX5102)", shape=diamond, style=filled, fillcolor="#ffe4a0"];
|
||||||
|
"UH05.TRO506" [label="TRO506\n[Vario]\nTRO 506 (Vario)", shape=parallelogram, style=filled, fillcolor="#e8d4f0"];
|
||||||
|
"UH05.TRO507" [label="TRO507\n[1Sep]\nTRO 507 (1Sep)", shape=box, style=filled, fillcolor="#d4e8ff"];
|
||||||
|
"UH05.TRO508" [label="TRO508\n[Vario]\nTRO 508 (Vario)+Scanner(BX5103)", shape=parallelogram, style=filled, fillcolor="#e8d4f0"];
|
||||||
|
"UH05.TRO509" [label="TRO509\n[1Sep]\nTRO 509 (1Sep)", shape=box, style=filled, fillcolor="#d4e8ff"];
|
||||||
|
"UH05.TRO510" [label="TRO510\n[1Sep1Swi]\nTRO 510 (1Sep1Switch) + Scanner (BX5104)", shape=diamond, style=filled, fillcolor="#ffe4a0"];
|
||||||
|
"UH05.TRO511" [label="TRO511\n[1Sep]\nTRO 511 (1Sep)", shape=box, style=filled, fillcolor="#d4e8ff"];
|
||||||
|
"UH05.TRO512" [label="TRO512\n[Vario]\nTRO 512 (Vario)+Scanner(BX5105)", shape=parallelogram, style=filled, fillcolor="#e8d4f0"];
|
||||||
|
"UH05.TRO513" [label="TRO513\n[1Sep]\nTRO 513 (1Sep)", shape=box, style=filled, fillcolor="#d4e8ff"];
|
||||||
|
"UH05.TRO514" [label="TRO514\n[1Sep1Swi]\nTRO 514 (1Sep1Switch) + Scanner (BX5106)", shape=diamond, style=filled, fillcolor="#ffe4a0"];
|
||||||
|
"UH05.TRO515" [label="TRO515\n[1Sep]\nTRO 515 (1Sep)", shape=box, style=filled, fillcolor="#d4e8ff"];
|
||||||
|
"UH05.TRO516" [label="TRO516\n[Vario]\nTRO 516(Vario)+Scanner(BX5107)", shape=parallelogram, style=filled, fillcolor="#e8d4f0"];
|
||||||
|
"UH05.TRO517" [label="TRO517\n[1Sep]\nTRO 517 (1Sep)", shape=box, style=filled, fillcolor="#d4e8ff"];
|
||||||
|
"UH05.TRO518" [label="TRO518\n[1Sep1Swi]\nTRO 518 (1Sep1Switch) + Scanner (BX5108)", shape=diamond, style=filled, fillcolor="#ffe4a0"];
|
||||||
|
"UH05.TRO519" [label="TRO519\n[1Sep]\nTRO 519 (1Sep)", shape=box, style=filled, fillcolor="#d4e8ff"];
|
||||||
|
"UH05.TRO520" [label="TRO520\n[Vario]\nTRO 520 (Vario)+Scanner(BX5109)", shape=parallelogram, style=filled, fillcolor="#e8d4f0"];
|
||||||
|
"UH05.TRO521" [label="TRO521\n[1Sep]\nTRO 521(1Sep)", shape=box, style=filled, fillcolor="#d4e8ff"];
|
||||||
|
"UH05.TRO522" [label="TRO522\n[1Sep1Swi]\nTRO 522 (1Sep1Switch) + Scanner (BX5110)", shape=diamond, style=filled, fillcolor="#ffe4a0"];
|
||||||
|
"UH05.TRO523" [label="TRO523\n[1Sep]\nTRO 523 (1Sep)", shape=box, style=filled, fillcolor="#d4e8ff"];
|
||||||
|
"UH05.TRO524" [label="TRO524\n[Vario]\nTRO 524 (Vario)+Scanner(BX5231)", shape=parallelogram, style=filled, fillcolor="#e8d4f0"];
|
||||||
|
"UH05.TRO525" [label="TRO525\n[1Sep]\nTRO 525(1Sep)", shape=box, style=filled, fillcolor="#d4e8ff"];
|
||||||
|
"UH05.TRO526" [label="TRO526\n[1Sep]\nTRO 526 (1Sep) + Scanner (BX5112)", shape=box, style=filled, fillcolor="#d4e8ff"];
|
||||||
|
"UH05.TRO527" [label="TRO527\n[1Sep1Swi]\nTRO 527 (1Sep1Switch)", shape=diamond, style=filled, fillcolor="#ffe4a0"];
|
||||||
|
"UH05.TRO528" [label="TRO528\n[1Sep]\nTRO 528 (1Sep)", shape=box, style=filled, fillcolor="#d4e8ff"];
|
||||||
|
"UH05.TRO529" [label="TRO529\n[1Sep]\nTRO 529 (1Sep) + Scanner (BX5113)", shape=box, style=filled, fillcolor="#d4e8ff"];
|
||||||
|
"UH05.TRO530" [label="TRO530\n[Vario]\nTRO 530 (Vario)", shape=parallelogram, style=filled, fillcolor="#e8d4f0"];
|
||||||
|
"UH05.TRO531" [label="TRO531\n[Vario]\nTRO 531 (Vario)", shape=parallelogram, style=filled, fillcolor="#e8d4f0"];
|
||||||
|
"UH05.EXTERN_IN" [label="EXTERN\n(Zulauf)", shape=ellipse, style="filled,dashed", fillcolor="#f8f8f8"];
|
||||||
|
"UH05.EXTERN_OUT" [label="EXTERN\n(Ablauf)", shape=ellipse, style="filled,dashed", fillcolor="#f8f8f8"];
|
||||||
|
"UH05.TRO502" -> "UH05.TRO531" [label="JA5000_2 Finger", style=dashed];
|
||||||
|
"UH05.TRO531" -> "UH05.TRO503" [label="JA5000_3 Finger", style=dashed];
|
||||||
|
"UH05.TRO500" -> "UH05.TRO530" [label="JA5001_2 Finger", style=dashed];
|
||||||
|
"UH05.TRO530" -> "UH05.TRO501" [label="JA5001_3 Finger", style=dashed];
|
||||||
|
"UH05.TRO501" -> "UH05.TRO504" [label="JA5002_1"];
|
||||||
|
"UH05.TRO503" -> "UH05.TRO504" [label="JA5002_1"];
|
||||||
|
"UH05.TRO529" -> "UH05.TRO504" [label="JA5002_1"];
|
||||||
|
"UH05.TRO528" -> "UH05.TRO529" [label="JA5002_10"];
|
||||||
|
"UH05.TRO504" -> "UH05.TRO505" [label="JA5002_2"];
|
||||||
|
"UH05.TRO505" -> "UH05.TRO510" [label="JA5002_3 Dir2"];
|
||||||
|
"UH05.TRO509" -> "UH05.TRO510" [label="JA5002_3"];
|
||||||
|
"UH05.TRO510" -> "UH05.TRO514" [label="JA5002_4 Dir2"];
|
||||||
|
"UH05.TRO513" -> "UH05.TRO514" [label="JA5002_4"];
|
||||||
|
"UH05.TRO514" -> "UH05.TRO518" [label="JA5002_5 Dir2"];
|
||||||
|
"UH05.TRO517" -> "UH05.TRO518" [label="JA5002_5"];
|
||||||
|
"UH05.TRO518" -> "UH05.TRO522" [label="JA5002_6 Dir2"];
|
||||||
|
"UH05.TRO521" -> "UH05.TRO522" [label="JA5002_6"];
|
||||||
|
"UH05.TRO522" -> "UH05.TRO526" [label="JA5002_7 Dir2"];
|
||||||
|
"UH05.TRO525" -> "UH05.TRO526" [label="JA5002_7"];
|
||||||
|
"UH05.TRO526" -> "UH05.TRO527" [label="JA5002_8"];
|
||||||
|
"UH05.TRO527" -> "UH05.TRO528" [label="JA5002_9 Dir2"];
|
||||||
|
"UH05.TRO505" -> "UH05.TRO506" [label="JA5003_1"];
|
||||||
|
"UH05.TRO506" -> "UH05.TRO507" [label="JA5003_2 Finger", style=dashed];
|
||||||
|
"UH05.TRO507" -> "UH05.TRO508" [label="JA5004_1"];
|
||||||
|
"UH05.TRO510" -> "UH05.TRO511" [label="JA5005_1"];
|
||||||
|
"UH05.TRO511" -> "UH05.TRO512" [label="JA5005_2"];
|
||||||
|
"UH05.TRO514" -> "UH05.TRO515" [label="JA5006_1"];
|
||||||
|
"UH05.TRO515" -> "UH05.TRO516" [label="JA5006_2"];
|
||||||
|
"UH05.TRO518" -> "UH05.TRO519" [label="JA5007_1"];
|
||||||
|
"UH05.TRO519" -> "UH05.TRO520" [label="JA5007_2"];
|
||||||
|
"UH05.TRO522" -> "UH05.TRO523" [label="JA5008_1"];
|
||||||
|
"UH05.TRO523" -> "UH05.TRO524" [label="JA5008_2"];
|
||||||
|
"UH05.EXTERN_IN" -> "UH05.TRO502" [label="JA5000_1", color="#999999"];
|
||||||
|
"UH05.EXTERN_IN" -> "UH05.TRO500" [label="JA5001_1", color="#999999"];
|
||||||
|
"UH05.TRO508" -> "UH05.EXTERN_OUT" [label="JA5004_2", color="#999999"];
|
||||||
|
"UH05.TRO512" -> "UH05.EXTERN_OUT" [label="JA5005_3", color="#999999"];
|
||||||
|
"UH05.TRO516" -> "UH05.EXTERN_OUT" [label="JA5006_3", color="#999999"];
|
||||||
|
"UH05.TRO520" -> "UH05.EXTERN_OUT" [label="JA5007_3", color="#999999"];
|
||||||
|
"UH05.TRO524" -> "UH05.EXTERN_OUT" [label="JA5008_3", color="#999999"];
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
File diff suppressed because it is too large
Load Diff
|
After Width: | Height: | Size: 331 KiB |
@@ -0,0 +1,259 @@
|
|||||||
|
# -*- coding: utf-8 -*-
|
||||||
|
"""create_dxf.py — erzeugt eine DXF-Uebersicht aller TROs mit ihren Sensoren.
|
||||||
|
|
||||||
|
Quelle sind die vom Skeleton-Generator erzeugten results/skeleton_UH0x.json
|
||||||
|
(Sensor-Positionen aus der Positions-JSON, Einheiten mit IO-Zuordnung).
|
||||||
|
|
||||||
|
Je TRO-Einheit wird ein Block "TRO_BOX" (Rechteck + eingerahmter Name)
|
||||||
|
am Schwerpunkt seiner Sensoren eingefuegt; die TRO-Namen entsprechen der
|
||||||
|
Nummerierung des SCL-Grundgeruests (create_skel.py). Jeder Sensor wird als
|
||||||
|
Block "SENSOR" (Kreis + Name) an seiner x/y-Position eingefuegt und per
|
||||||
|
Linie mit seinem TRO verbunden.
|
||||||
|
|
||||||
|
Block-Attribute (fuer Identifikation im CAD, teils unsichtbar):
|
||||||
|
TRO_BOX: NAME, FBTYPE (sichtbar) — UNIT, PLC, AREAS, SENSORS, IO (unsichtbar)
|
||||||
|
SENSOR: NAME (sichtbar) — ROLE, TRO, PLC (unsichtbar)
|
||||||
|
|
||||||
|
Pfade ueber Umgebungsvariablen aus bin\\setenv.bat:
|
||||||
|
PV_RESULTS Eingabe (skeleton_UH0x.json) und Ausgabe (DXF)
|
||||||
|
|
||||||
|
Mit --colors werden die TRO-Kaesten zusaetzlich nach FB-Typ eingefaerbt
|
||||||
|
(SOLID-Fuellung auf Layer TRO_FUELL, gleiche Palette wie im Topologie-
|
||||||
|
Graphen doc/TRO_Graph_UH01-UH05.dot); ohne den Schalter bleiben die
|
||||||
|
Kaesten ungefuellt.
|
||||||
|
|
||||||
|
Aufruf: bin\\create_dxf.bat [--uh 1..5] [--out DATEI.dxf] [--colors]
|
||||||
|
"""
|
||||||
|
|
||||||
|
import argparse
|
||||||
|
import json
|
||||||
|
import os
|
||||||
|
import sys
|
||||||
|
from pathlib import Path
|
||||||
|
|
||||||
|
try:
|
||||||
|
import ezdxf
|
||||||
|
from ezdxf.enums import TextEntityAlignment
|
||||||
|
except ImportError:
|
||||||
|
sys.exit("ezdxf fehlt — bitte bin\\install_py.bat ausfuehren.")
|
||||||
|
|
||||||
|
# ============================================================================
|
||||||
|
# GLOBALE DEFINITIONEN (Geometrie in mm, Layer, Farben)
|
||||||
|
# ============================================================================
|
||||||
|
|
||||||
|
OUT_NAME = "ST500592_TROs.dxf"
|
||||||
|
|
||||||
|
BOX_W = 2500 # TRO-Kasten Breite
|
||||||
|
BOX_H = 1200 # TRO-Kasten Hoehe
|
||||||
|
BOX_TEXT_H = 380 # Texthoehe TRO-Name
|
||||||
|
BOX_SUB_H = 220 # Texthoehe FB-Typ
|
||||||
|
SEN_RADIUS = 120 # Sensor-Kreisradius
|
||||||
|
SEN_TEXT_H = 150 # Texthoehe Sensorname
|
||||||
|
ATTR_MAXLEN = 250 # DXF-Attributwerte kuerzen
|
||||||
|
|
||||||
|
LAYERS = {
|
||||||
|
"TRO": 7, # Kaesten (Farbe je PLC am Insert)
|
||||||
|
"TRO_FUELL": 7, # Kasten-Fuellung (Truecolor je FB-Typ)
|
||||||
|
"SENSOR": 8, # Sensoren mit TRO-Zuordnung
|
||||||
|
"SENSOR_FREI": 9, # Sensoren ohne Einheit (nur Position)
|
||||||
|
"VERBINDUNG": 253, # Linien Sensor -> TRO
|
||||||
|
}
|
||||||
|
|
||||||
|
#: ACI-Farbe je Steuerung
|
||||||
|
PLC_COLOR = {1: 1, 2: 2, 3: 3, 4: 4, 5: 6} # rot, gelb, gruen, cyan, magenta
|
||||||
|
|
||||||
|
#: Fuellfarbe je FB-Typ (Truecolor) — gleiche Palette wie im
|
||||||
|
#: Topologie-Graphen doc/TRO_Graph_UH01-UH05.dot
|
||||||
|
TYPE_COLOR = {
|
||||||
|
"FB_ILS_MTRO_1Sep": 0xD4E8FF, # hellblau
|
||||||
|
"FB_ILS_MTRO_1Sep_SSCC": 0xFFD4D4, # rot
|
||||||
|
"FB_ILS_MTRO_1Sep1Swi": 0xFFE4A0, # gelb (Weiche)
|
||||||
|
"FB_ILS_MTRO_1Sep2Swi": 0xFFC060, # orange (Weiche)
|
||||||
|
"FB_ILS_MTRO_2Sep1Swi": 0xFFE4A0, # gelb (Weiche)
|
||||||
|
"FB_ILS_MTRO_Vario": 0xE8D4F0, # violett
|
||||||
|
"FB_ILS_MTRO_Vario_workStation": 0xC0F0F0, # tuerkis
|
||||||
|
"FB_ILS_MTRO_PinStore_Auto": 0xD4F0D4, # gruen (Lager)
|
||||||
|
"FB_EmptyCarrBuffer": 0xD4F0D4, # gruen (Puffer)
|
||||||
|
"FB_Conveyor": 0xF0F0F0, # grau
|
||||||
|
}
|
||||||
|
TYPE_COLOR_DEFAULT = 0xF0F0F0 # grau (Sonstige/UNBEKANNT)
|
||||||
|
|
||||||
|
|
||||||
|
def type_color(fbtype):
|
||||||
|
for key in sorted(TYPE_COLOR, key=len, reverse=True):
|
||||||
|
if fbtype.startswith(key):
|
||||||
|
return TYPE_COLOR[key]
|
||||||
|
return TYPE_COLOR_DEFAULT
|
||||||
|
|
||||||
|
# ============================================================================
|
||||||
|
|
||||||
|
|
||||||
|
def project_paths():
|
||||||
|
root = Path(os.environ.get("PROJECT", Path(__file__).resolve().parent.parent))
|
||||||
|
results = Path(os.environ.get("PV_RESULTS", root / "results"))
|
||||||
|
return results
|
||||||
|
|
||||||
|
|
||||||
|
def build_blocks(doc):
|
||||||
|
"""Blockdefinitionen TRO_BOX und SENSOR anlegen."""
|
||||||
|
tro = doc.blocks.new(name="TRO_BOX")
|
||||||
|
w2, h2 = BOX_W / 2, BOX_H / 2
|
||||||
|
tro.add_lwpolyline([(-w2, -h2), (w2, -h2), (w2, h2), (-w2, h2)],
|
||||||
|
close=True)
|
||||||
|
att = tro.add_attdef("NAME", height=BOX_TEXT_H)
|
||||||
|
att.set_placement((0, BOX_H * 0.12), align=TextEntityAlignment.MIDDLE_CENTER)
|
||||||
|
att = tro.add_attdef("FBTYPE", height=BOX_SUB_H)
|
||||||
|
att.set_placement((0, -BOX_H * 0.28), align=TextEntityAlignment.MIDDLE_CENTER)
|
||||||
|
for tag in ("UNIT", "PLC", "AREAS", "SENSORS", "IO"):
|
||||||
|
att = tro.add_attdef(tag, height=BOX_SUB_H)
|
||||||
|
att.set_placement((0, 0), align=TextEntityAlignment.MIDDLE_CENTER)
|
||||||
|
att.dxf.invisible = 1
|
||||||
|
|
||||||
|
sen = doc.blocks.new(name="SENSOR")
|
||||||
|
sen.add_circle((0, 0), SEN_RADIUS)
|
||||||
|
att = sen.add_attdef("NAME", height=SEN_TEXT_H)
|
||||||
|
att.set_placement((SEN_RADIUS * 1.4, SEN_RADIUS * 1.2),
|
||||||
|
align=TextEntityAlignment.BOTTOM_LEFT)
|
||||||
|
for tag in ("ROLE", "TRO", "PLC"):
|
||||||
|
att = sen.add_attdef(tag, height=SEN_TEXT_H)
|
||||||
|
att.set_placement((0, 0), align=TextEntityAlignment.MIDDLE_CENTER)
|
||||||
|
att.dxf.invisible = 1
|
||||||
|
|
||||||
|
|
||||||
|
def instance_names(skel, uh_digit):
|
||||||
|
"""TRO-Instanznamen je Einheit — identische Nummerierung wie
|
||||||
|
render_scl() in create_skel.py (Conveyor verbraucht eine lfd. Nummer)."""
|
||||||
|
names = {}
|
||||||
|
seq = 0
|
||||||
|
for u in skel["units"]:
|
||||||
|
if u["fbType"] == "UNBEKANNT":
|
||||||
|
names[u["unit"]] = u["unit"] # kein TRO-Name vergeben
|
||||||
|
continue
|
||||||
|
seq += 1
|
||||||
|
if u["fbType"] == "FB_Conveyor":
|
||||||
|
names[u["unit"]] = f"fbConveyor{u['unit'][1:]}"
|
||||||
|
else:
|
||||||
|
names[u["unit"]] = f"TRO{uh_digit}{seq:02d}"
|
||||||
|
return names
|
||||||
|
|
||||||
|
|
||||||
|
def cut(s):
|
||||||
|
return s if len(s) <= ATTR_MAXLEN else s[:ATTR_MAXLEN - 3] + "..."
|
||||||
|
|
||||||
|
|
||||||
|
def draw_plc(msp, skel, n, colors=False):
|
||||||
|
"""Alle Einheiten + Sensoren einer Steuerung zeichnen."""
|
||||||
|
uh = f"UH0{n}"
|
||||||
|
color = PLC_COLOR[n]
|
||||||
|
names = instance_names(skel, str(n))
|
||||||
|
|
||||||
|
# Sensoren je Einheit sammeln (nur mit Position)
|
||||||
|
unit_sensors = {}
|
||||||
|
free_sensors = []
|
||||||
|
for s in skel["sensors"]:
|
||||||
|
if not s.get("pos"):
|
||||||
|
continue
|
||||||
|
if s.get("unit"):
|
||||||
|
unit_sensors.setdefault(s["unit"], []).append(s)
|
||||||
|
else:
|
||||||
|
free_sensors.append(s)
|
||||||
|
|
||||||
|
boxes = lines = 0
|
||||||
|
for u in skel["units"]:
|
||||||
|
sens = unit_sensors.get(u["unit"], [])
|
||||||
|
if sens: # Schwerpunkt der Sensoren
|
||||||
|
cx = sum(s["pos"][0] for s in sens) / len(sens)
|
||||||
|
cy = sum(s["pos"][1] for s in sens) / len(sens)
|
||||||
|
elif u.get("pos"):
|
||||||
|
cx, cy = u["pos"][0], u["pos"][1]
|
||||||
|
else:
|
||||||
|
print(f" {uh} {u['unit']}: keine Position — uebersprungen")
|
||||||
|
continue
|
||||||
|
|
||||||
|
io_txt = ";".join(f"{role}={','.join(v)}"
|
||||||
|
for role, v in sorted(u["io"].items()))
|
||||||
|
if colors:
|
||||||
|
# Fuellung in FB-Typ-Farbe (vor dem Insert -> liegt dahinter)
|
||||||
|
w2, h2 = BOX_W / 2, BOX_H / 2
|
||||||
|
msp.add_solid(
|
||||||
|
[(cx - w2, cy - h2), (cx + w2, cy - h2),
|
||||||
|
(cx - w2, cy + h2), (cx + w2, cy + h2)],
|
||||||
|
dxfattribs={"layer": "TRO_FUELL",
|
||||||
|
"true_color": type_color(u["fbType"])})
|
||||||
|
blk = msp.add_blockref("TRO_BOX", (cx, cy),
|
||||||
|
dxfattribs={"layer": "TRO", "color": color})
|
||||||
|
blk.add_auto_attribs({
|
||||||
|
"NAME": names[u["unit"]],
|
||||||
|
"FBTYPE": u["fbType"].replace("FB_ILS_MTRO_", "").replace("FB_", ""),
|
||||||
|
"UNIT": u["unit"],
|
||||||
|
"PLC": uh,
|
||||||
|
"AREAS": cut(",".join(a["id"] for a in u["areas"])),
|
||||||
|
"SENSORS": cut(",".join(s["id"] for s in sens)),
|
||||||
|
"IO": cut(io_txt),
|
||||||
|
})
|
||||||
|
boxes += 1
|
||||||
|
|
||||||
|
for s in sens:
|
||||||
|
sx, sy = s["pos"][0], s["pos"][1]
|
||||||
|
sb = msp.add_blockref("SENSOR", (sx, sy),
|
||||||
|
dxfattribs={"layer": "SENSOR",
|
||||||
|
"color": color})
|
||||||
|
sb.add_auto_attribs({
|
||||||
|
"NAME": s["id"],
|
||||||
|
"ROLE": s.get("role") or "",
|
||||||
|
"TRO": names[u["unit"]],
|
||||||
|
"PLC": uh,
|
||||||
|
})
|
||||||
|
msp.add_line((sx, sy), (cx, cy),
|
||||||
|
dxfattribs={"layer": "VERBINDUNG"})
|
||||||
|
lines += 1
|
||||||
|
|
||||||
|
for s in free_sensors:
|
||||||
|
sb = msp.add_blockref("SENSOR", (s["pos"][0], s["pos"][1]),
|
||||||
|
dxfattribs={"layer": "SENSOR_FREI"})
|
||||||
|
sb.add_auto_attribs({
|
||||||
|
"NAME": s["id"],
|
||||||
|
"ROLE": s.get("role") or "",
|
||||||
|
"TRO": "",
|
||||||
|
"PLC": uh,
|
||||||
|
})
|
||||||
|
|
||||||
|
print(f" {uh}: {boxes} TRO-Kaesten, {lines} Sensor-Verbindungen, "
|
||||||
|
f"{len(free_sensors)} freie Sensoren")
|
||||||
|
|
||||||
|
|
||||||
|
def main():
|
||||||
|
ap = argparse.ArgumentParser(description=__doc__)
|
||||||
|
ap.add_argument("--uh", type=int, choices=range(1, 6),
|
||||||
|
help="nur diese Steuerung (1..5), sonst alle")
|
||||||
|
ap.add_argument("--out", default=OUT_NAME,
|
||||||
|
help=f"Ausgabedatei (Default: {OUT_NAME})")
|
||||||
|
ap.add_argument("--colors", action="store_true",
|
||||||
|
help="TRO-Kaesten nach FB-Typ einfaerben "
|
||||||
|
"(Palette wie doc/TRO_Graph_UH01-UH05.dot)")
|
||||||
|
args = ap.parse_args()
|
||||||
|
|
||||||
|
results = project_paths()
|
||||||
|
doc = ezdxf.new("R2010", setup=True)
|
||||||
|
doc.header["$INSUNITS"] = 4 # Millimeter
|
||||||
|
for name, aci in LAYERS.items():
|
||||||
|
doc.layers.add(name, color=aci)
|
||||||
|
build_blocks(doc)
|
||||||
|
msp = doc.modelspace()
|
||||||
|
|
||||||
|
print("Erzeuge DXF aus Skeleton-Dateien:")
|
||||||
|
for n in ([args.uh] if args.uh else range(1, 6)):
|
||||||
|
skel_file = results / f"skeleton_UH0{n}.json"
|
||||||
|
if not skel_file.exists():
|
||||||
|
sys.exit(f"FEHLER: {skel_file} fehlt — zuerst bin\\create_skel.bat "
|
||||||
|
f"ausfuehren.")
|
||||||
|
skel = json.loads(skel_file.read_text(encoding="utf-8"))
|
||||||
|
draw_plc(msp, skel, n, colors=args.colors)
|
||||||
|
|
||||||
|
out = results / args.out
|
||||||
|
doc.saveas(out)
|
||||||
|
print(f"DXF geschrieben: {out}")
|
||||||
|
|
||||||
|
|
||||||
|
if __name__ == "__main__":
|
||||||
|
main()
|
||||||
@@ -0,0 +1,808 @@
|
|||||||
|
# -*- coding: utf-8 -*-
|
||||||
|
"""create_skel.py — Skeleton-Generator fuer die JSON-Zwischendatei und ein
|
||||||
|
SCL-Grundgeruest, abgeleitet aus den Eingabelisten in data/.
|
||||||
|
|
||||||
|
Datenquellen (Pfade ueber Umgebungsvariablen aus bin\\setenv.bat):
|
||||||
|
PV_DATA Ordner mit den Eingabelisten
|
||||||
|
ST500592_10_5-14_ILS-<n>_TIA.xlsx (PLC Tags + Constants)
|
||||||
|
ST500592_10_5-9_ILS_positions.json (Positionen, VERW, mappings)
|
||||||
|
PV_RESULTS Zielordner fuer die erzeugten Dateien
|
||||||
|
PV_CFG Ordner mit den Konfigurationsdateien, geladen beim Start:
|
||||||
|
skel.cfg (JSON) Dateinamen, Vokabular, FB-Typ-Regeln
|
||||||
|
skel_scl.cfg (INI-Style) SCL-Templates, zeilenweise
|
||||||
|
lesbar; jede [sektion] = ein Template,
|
||||||
|
Inhalt verbatim (Einrueckung/Leerzeilen
|
||||||
|
gehoeren zum Template)
|
||||||
|
Fehlende Dateien fallen auf die eingebauten Defaults zurueck.
|
||||||
|
|
||||||
|
Erzeugt je Steuerung UH01..UH05:
|
||||||
|
skeleton_UH0x.json JSON-Zwischendatei-Skeleton (Kap. 14 im
|
||||||
|
Json_Layout-Konzept.md)
|
||||||
|
FB_Main_skel_UH0x.scl SCL-Grundgeruest (VAR-Deklaration + Aufrufe)
|
||||||
|
FB_CallSensors_skel_UH0x.scl Sensor-Aufrufe
|
||||||
|
|
||||||
|
Mit --con-ini bzw. --con-json wird zusaetzlich die TRO-Topologie
|
||||||
|
(Routing / Zusammenhalt, Format hmf-connect-v1) aus data\\connect.ini
|
||||||
|
bzw. data\\connect.json eingelesen und als "topology"-Abschnitt in die
|
||||||
|
Skeleton-JSONs uebernommen (Verbindungen, offene Enden und je TRO die
|
||||||
|
aufgeloeste JamArea-Verdrahtung).
|
||||||
|
|
||||||
|
Aufruf: bin\\create_skel.bat [--uh 1..5] [--no-scl] [--con-ini | --con-json]
|
||||||
|
"""
|
||||||
|
|
||||||
|
import argparse
|
||||||
|
import configparser
|
||||||
|
import json
|
||||||
|
import os
|
||||||
|
import re
|
||||||
|
import sys
|
||||||
|
from collections import defaultdict
|
||||||
|
from pathlib import Path
|
||||||
|
|
||||||
|
try:
|
||||||
|
import openpyxl
|
||||||
|
except ImportError:
|
||||||
|
sys.exit("openpyxl fehlt — bitte bin\\install_py.bat ausfuehren.")
|
||||||
|
|
||||||
|
# ============================================================================
|
||||||
|
# GLOBALE DEFINITIONEN (eingebaute Defaults)
|
||||||
|
# Alle folgenden Bloecke sind bewusst als Modul-Konstanten definiert. Sie
|
||||||
|
# sind zugleich der Inhalt von cfg\\skel.cfg (JSON) — load_cfg() liest diese
|
||||||
|
# Datei aus PV_CFG beim Programmstart und ersetzt die Defaults hier 1:1
|
||||||
|
# durch ihren Inhalt. Ohne skel.cfg (z.B. Erststart, Datei geloescht) bleiben
|
||||||
|
# die Defaults unten aktiv, das Skript funktioniert also auch dann.
|
||||||
|
# ============================================================================
|
||||||
|
|
||||||
|
#: Dateinamen der Eingabelisten ({n} = ILS-Nummer 1..5)
|
||||||
|
FILES = {
|
||||||
|
"tia_xlsx": "ST500592_10_5-14_ILS-{n}_TIA.xlsx",
|
||||||
|
"positions_json": "ST500592_10_5-9_ILS_positions.json",
|
||||||
|
# Routing / Zusammenhalt der TROs (hmf-connect-v1, extrahiert aus
|
||||||
|
# doc/TRO_Graph_UH01-UH05.dot) — fuer die kuenftige Topologie-Auswertung
|
||||||
|
"connect_json": "connect.json",
|
||||||
|
"connect_ini": "connect.ini",
|
||||||
|
}
|
||||||
|
|
||||||
|
#: VERW-Vokabular (Positions-JSON) -> Signalrolle
|
||||||
|
#: (siehe doc/EA-Listen-Analyse.md, Abschnitt "Verwendung von Positionen")
|
||||||
|
VERW_ROLES = {
|
||||||
|
"In sep": "sensorInSep",
|
||||||
|
"Sep": "stopperOutput",
|
||||||
|
"Jam detector": "sensorJam",
|
||||||
|
"Jam detector (LP)": "sensorJam",
|
||||||
|
"jam detector (LP)": "sensorJam",
|
||||||
|
"ES branch": "switchOutput",
|
||||||
|
"ES brunch": "switchOutput", # Schreibvariante in den Daten
|
||||||
|
"conveyor full": "sensorConvFull",
|
||||||
|
"MT in Position": "sensorCarrInPos",
|
||||||
|
"MT in position": "sensorCarrInPos",
|
||||||
|
"Finger in position": "sensorFinger",
|
||||||
|
"Finger in Position": "sensorFinger",
|
||||||
|
"PIN query": "sensorPinQuery",
|
||||||
|
"Rad dreht ": "sensorWheel",
|
||||||
|
"Rad dreht": "sensorWheel",
|
||||||
|
}
|
||||||
|
|
||||||
|
#: Fallback: Regex auf den Kommentartext -> Signalrolle
|
||||||
|
#: (falls kein VERW vorliegt, z.B. Signal nicht im Positions-JSON)
|
||||||
|
COMMENT_ROLES = [
|
||||||
|
(r"^in Separator", "sensorInSep"),
|
||||||
|
(r"^Separator", "stopperOutput"),
|
||||||
|
(r"Stausensor|Staumelder", "sensorJam"),
|
||||||
|
(r"AE Abzweig", "switchOutput"),
|
||||||
|
(r"F.?rderer voll", "sensorConvFull"),
|
||||||
|
(r"MT in Position", "sensorCarrInPos"),
|
||||||
|
(r"Mitnehmerfinger|Finger in", "sensorFinger"),
|
||||||
|
(r"Pin Abfrage|Pr.?fung MT Pos", "sensorPinQuery"),
|
||||||
|
(r"Rad dreht", "sensorWheel"),
|
||||||
|
(r"^Motor ", "motorOutput"),
|
||||||
|
(r"MSS ausgel", "motorProtection"),
|
||||||
|
]
|
||||||
|
|
||||||
|
#: Regeln zur FB-Typ-Bestimmung je Einheit.
|
||||||
|
#: Reihenfolge = Prioritaet; "roles" muessen alle vorhanden sein.
|
||||||
|
FBTYPE_RULES = [
|
||||||
|
{"roles": ["sensorPinQuery"], "fbType": "FB_ILS_MTRO_PinStore_Auto"},
|
||||||
|
{"roles": ["sensorFinger"], "fbType": "FB_ILS_MTRO_Vario"},
|
||||||
|
{"roles": ["sensorCarrInPos"], "fbType": "FB_ILS_MTRO_Vario"},
|
||||||
|
{"roles": ["switchOutput", "sensorInSep"], "fbType": "FB_ILS_MTRO_1Sep1Swi"},
|
||||||
|
{"roles": ["sensorInSep"], "fbType": "FB_ILS_MTRO_1Sep"},
|
||||||
|
{"roles": ["motorOutput"], "fbType": "FB_Conveyor"},
|
||||||
|
{"roles": ["motorProtection"], "fbType": "FB_Conveyor"},
|
||||||
|
]
|
||||||
|
|
||||||
|
#: Erkennung der Foerdertechnik-Einheit (M-Nummer) im Kommentartext
|
||||||
|
UNIT_RE = r"\b(KR|CV)[-\s]{0,2}(P?[MK]\d{4}(?:_[A-Z])?)\b"
|
||||||
|
|
||||||
|
#: Erkennung der Bereichsgruppen im Kommentartext
|
||||||
|
AREA_RES = [
|
||||||
|
(r"Block ?(\d\.\d(?:\.\d)?)", "pinStoreBlock", "Block {m}"),
|
||||||
|
(r"\bLS ?(\d)\b", "loadingStation", "LS{m}"),
|
||||||
|
(r"\bWS ?(\d\.\d)\b", "workStation", "WS{m}"),
|
||||||
|
(r"\bUZ(\d{4})\b", "safetyZone", "UZ{m}"),
|
||||||
|
]
|
||||||
|
|
||||||
|
# ----------------------------------------------------------------------------
|
||||||
|
# SCL-Templates: die "ueblichen Codebloecke" fuer die Aufrufe in FB_Main /
|
||||||
|
# FB_CallSensors. Platzhalter im str.format()-Stil.
|
||||||
|
# Eingebaute Defaults — die gepflegte, zeilenweise lesbare Fassung liegt in
|
||||||
|
# cfg\skel_scl.cfg (INI-Style) und ueberschreibt diese beim Programmstart.
|
||||||
|
# ----------------------------------------------------------------------------
|
||||||
|
SCL_TEMPLATES = {
|
||||||
|
# VAR-Deklaration einer Instanz
|
||||||
|
"var_decl": ' {inst} : "{fbtype}"; // {comment}\n',
|
||||||
|
|
||||||
|
# Aufruf FB_ILS_MTRO_1Sep (Standard-Separator)
|
||||||
|
"call_1sep": """\
|
||||||
|
REGION {inst} ({shorttype}) — {comment}
|
||||||
|
#{inst}.stInSeparator1.Settings.nSeparatorNo := "cSep{tro_no}.1";
|
||||||
|
#{inst}.stInSeparator1.Settings.tDelayToNextItem := "TimeForSepWaiting_Short";
|
||||||
|
#{inst}.stInSeparator1.Settings.tTrailingTime := T#500ms; // TODO Timing
|
||||||
|
#{inst}.stInSeparator1.Settings.tHandlingTime := T#200ms; // TODO Timing
|
||||||
|
#{inst}.stInSeparator1.Settings.tJam := "TimeForSepJam";
|
||||||
|
#{inst}.stInSeparator1.stSenInSep := "DB_Inputs".Sensors["cIn{sen_in_sep}"];
|
||||||
|
#{inst}.stInSenJam2 := "DB_Inputs".Sensors["cIn{sen_jam}"];
|
||||||
|
|
||||||
|
#{inst}.stInPriorityManager.xReleaseOk := TRUE; // TODO Priority
|
||||||
|
|
||||||
|
#{inst}(nInMainTroNo := "cMainTro{tro_no}",
|
||||||
|
xInSftyOk := TRUE, // TODO Safety
|
||||||
|
xInAllRdyToStart := TRUE,
|
||||||
|
xInCarouselRun := TRUE, // TODO Conveyor
|
||||||
|
xInRelease := TRUE, // TODO Release
|
||||||
|
stInOutMachineState := #stInOutControlUnit, // TODO ControlUnit
|
||||||
|
arInOutJamEntr1 := "DB_JamArea{tro_no}".stJam{tro_no}_1.arCarrier, // TODO Topologie
|
||||||
|
stInOutJamEntr1 := "DB_JamArea{tro_no}".stJam{tro_no}_1.stData,
|
||||||
|
arInOutJamExit2 := "DB_JamArea{tro_no}".stJam{tro_no}_2.arCarrier, // TODO Topologie
|
||||||
|
stInOutJamExit2 := "DB_JamArea{tro_no}".stJam{tro_no}_2.stData,
|
||||||
|
xOutStopper1 => "{stopper}",
|
||||||
|
nOutStateLast => "DB_GLOB_TroState".arTroState["cMainTro{tro_no}"],
|
||||||
|
stInOutHMI := "DB_Interface_HMI".stTRO.{inst});
|
||||||
|
END_REGION
|
||||||
|
|
||||||
|
""",
|
||||||
|
|
||||||
|
# Aufruf FB_ILS_MTRO_1Sep1Swi (Separator + Weiche)
|
||||||
|
"call_1sep1swi": """\
|
||||||
|
REGION {inst} ({shorttype}) — {comment}
|
||||||
|
#{inst}.stInSeparator1.Settings.nSeparatorNo := "cSep{tro_no}.1";
|
||||||
|
#{inst}.stInSeparator1.Settings.tDelayToNextItem := "TimeForSepWaiting_Short";
|
||||||
|
#{inst}.stInSeparator1.Settings.tTrailingTime := T#100ms; // TODO Timing
|
||||||
|
#{inst}.stInSeparator1.Settings.tHandlingTime := T#50ms; // TODO Timing
|
||||||
|
#{inst}.stInSeparator1.Settings.tJam := "TimeForSepJam";
|
||||||
|
#{inst}.stInSeparator1.stSenInSep := "DB_Inputs".Sensors["cIn{sen_in_sep}"];
|
||||||
|
#{inst}.stInSenJam2 := "DB_Inputs".Sensors["cIn{sen_jam}"];
|
||||||
|
#{inst}.stInSwitch1.Settings.nSwitchNo := "cSwi{tro_no}.1";
|
||||||
|
|
||||||
|
#{inst}(nInMainTroNo := "cMainTro{tro_no}",
|
||||||
|
xInSftyOk := TRUE, // TODO Safety
|
||||||
|
xInAllRdyToStart := TRUE,
|
||||||
|
xInCarouselRun1 := TRUE, // TODO Conveyor
|
||||||
|
xInRelease := TRUE, // TODO Release
|
||||||
|
stInOutMachineState := #stInOutControlUnit, // TODO ControlUnit
|
||||||
|
arInOutJamEntr1 := "DB_JamArea{tro_no}".stJam{tro_no}_1.arCarrier, // TODO Topologie
|
||||||
|
stInOutJamEntr1 := "DB_JamArea{tro_no}".stJam{tro_no}_1.stData,
|
||||||
|
arInOutJamExit2 := "DB_JamArea{tro_no}".stJam{tro_no}_2.arCarrier, // TODO Topologie (Dir1)
|
||||||
|
stInOutJamExit2 := "DB_JamArea{tro_no}".stJam{tro_no}_2.stData,
|
||||||
|
arInOutJamExit3 := "DB_JamArea{tro_no}".stJam{tro_no}_3.arCarrier, // TODO Topologie (Dir2)
|
||||||
|
stInOutJamExit3 := "DB_JamArea{tro_no}".stJam{tro_no}_3.stData,
|
||||||
|
xOutStopper1 => "{stopper}",
|
||||||
|
xOutSw1ExTo3 => "{switch_out}",
|
||||||
|
nOutStateLast => "DB_GLOB_TroState".arTroState["cMainTro{tro_no}"],
|
||||||
|
stInOutHMI := "DB_Interface_HMI".stTRO.{inst});
|
||||||
|
END_REGION
|
||||||
|
|
||||||
|
""",
|
||||||
|
|
||||||
|
# Aufruf FB_ILS_MTRO_Vario (Kettenfoerderer)
|
||||||
|
"call_vario": """\
|
||||||
|
REGION {inst} ({shorttype}) — {comment}
|
||||||
|
#{inst}.stInSeparator1.Settings.nSeparatorNo := "cSep{tro_no}.1";
|
||||||
|
#{inst}.stInSeparator1.Settings.tDelayToNextItem := "TimeForSepWaiting_Short";
|
||||||
|
#{inst}.stInSeparator1.stSenInSep := "DB_Inputs".Sensors["cIn{sen_in_sep}"];
|
||||||
|
#{inst}.stInVario.stSenCarrInPos := "DB_Inputs".Sensors["cIn{sen_carr_in_pos}"];
|
||||||
|
#{inst}.stInVario.stSenFinger := "DB_Inputs".Sensors["cIn{sen_finger}"];
|
||||||
|
#{inst}.stInVario.stSenJam := "DB_Inputs".Sensors["cIn{sen_jam}"];
|
||||||
|
|
||||||
|
#{inst}(nInMainTroNo := "cMainTro{tro_no}",
|
||||||
|
xInSftyOk := TRUE, // TODO Safety
|
||||||
|
xInAllRdyToStart := TRUE,
|
||||||
|
xInRelease := TRUE, // TODO Release
|
||||||
|
stInOutMachineState := #stInOutControlUnit, // TODO ControlUnit
|
||||||
|
arInOutJamEntr1 := "DB_JamArea{tro_no}".stJam{tro_no}_1.arCarrier, // TODO Topologie
|
||||||
|
stInOutJamEntr1 := "DB_JamArea{tro_no}".stJam{tro_no}_1.stData,
|
||||||
|
arInOutJamFinger := "DB_JamArea{tro_no}".stJam{tro_no}_2.arCarrier, // TODO Topologie
|
||||||
|
xOutStopper => "{stopper}",
|
||||||
|
xOutVarioMotor => "{motor}",
|
||||||
|
nOutStateLast => "DB_GLOB_TroState".arTroState["cMainTro{tro_no}"],
|
||||||
|
stInOutHMI := "DB_Interface_HMI".stTRO.{inst});
|
||||||
|
END_REGION
|
||||||
|
|
||||||
|
""",
|
||||||
|
|
||||||
|
# Aufruf FB_Conveyor (Kreisel / Foerderer ohne TRO-Logik)
|
||||||
|
"call_conveyor": """\
|
||||||
|
REGION {inst} — {comment}
|
||||||
|
#{inst}.Settings.tEnergySafeTime := "cTimeEnergySafe";
|
||||||
|
#{inst}.Settings.xGridActive := FALSE; // TODO Grid
|
||||||
|
#{inst}.Settings.sMotorProtectName := '{motor_protection}';
|
||||||
|
|
||||||
|
#{inst}(xInEnabled := TRUE, // TODO Enable
|
||||||
|
xInMotorProtection := "{motor_protection}",
|
||||||
|
xInPowerContactor := "{motor}",
|
||||||
|
stInOutHMI := "DB_Interface_HMI".stConveyors.{inst});
|
||||||
|
END_REGION
|
||||||
|
|
||||||
|
""",
|
||||||
|
|
||||||
|
# Eintrag in FB_CallSensors je Sensor
|
||||||
|
"call_sensor": """\
|
||||||
|
// {comment}
|
||||||
|
#fbSensorInput(stInSensorHW := "{bmk}",
|
||||||
|
nInSensorNo := "cIn{bmk}",
|
||||||
|
stInOutSensor := "DB_Inputs".Sensors["cIn{bmk}"]);
|
||||||
|
""",
|
||||||
|
|
||||||
|
# Rahmen FB_Main
|
||||||
|
"fb_main_frame": """\
|
||||||
|
FUNCTION_BLOCK "FB_Main_skel_{uh}"
|
||||||
|
{{ S7_Optimized_Access := 'TRUE' }}
|
||||||
|
VERSION : 0.1
|
||||||
|
// ============================================================
|
||||||
|
// AUTOMATISCH GENERIERTES GRUNDGERUEST — create_skel.py
|
||||||
|
// Quelle: E/A-Listen {uh} (data/)
|
||||||
|
// TODO-Marken kennzeichnen manuell zu ergaenzende Stellen
|
||||||
|
// (Timings, Topologie/JamAreas, Safety, Release, Priority).
|
||||||
|
// ============================================================
|
||||||
|
VAR
|
||||||
|
{var_block} END_VAR
|
||||||
|
|
||||||
|
BEGIN
|
||||||
|
{call_block}END_FUNCTION_BLOCK
|
||||||
|
""",
|
||||||
|
|
||||||
|
# Rahmen FB_CallSensors
|
||||||
|
"fb_sensors_frame": """\
|
||||||
|
FUNCTION_BLOCK "FB_CallSensors_skel_{uh}"
|
||||||
|
{{ S7_Optimized_Access := 'TRUE' }}
|
||||||
|
VERSION : 0.1
|
||||||
|
// AUTOMATISCH GENERIERT — create_skel.py ({count} Sensoren)
|
||||||
|
VAR
|
||||||
|
fbSensorInput : "FB_SensorInput";
|
||||||
|
END_VAR
|
||||||
|
|
||||||
|
BEGIN
|
||||||
|
{call_block}END_FUNCTION_BLOCK
|
||||||
|
""",
|
||||||
|
}
|
||||||
|
|
||||||
|
# Zuordnung FB-Typ -> Template-Schluessel
|
||||||
|
FBTYPE_TEMPLATE = {
|
||||||
|
"FB_ILS_MTRO_1Sep": "call_1sep",
|
||||||
|
"FB_ILS_MTRO_1Sep1Swi": "call_1sep1swi",
|
||||||
|
"FB_ILS_MTRO_Vario": "call_vario",
|
||||||
|
"FB_ILS_MTRO_PinStore_Auto": "call_1sep", # eigenes Template folgt spaeter
|
||||||
|
"FB_Conveyor": "call_conveyor",
|
||||||
|
}
|
||||||
|
|
||||||
|
# ============================================================================
|
||||||
|
# Ende der globalen Definitionen
|
||||||
|
# ============================================================================
|
||||||
|
|
||||||
|
#: Schluessel in skel.cfg -> Modul-Konstante, die beim Laden ersetzt wird
|
||||||
|
_CFG_KEYS = {
|
||||||
|
"files": "FILES",
|
||||||
|
"verw_roles": "VERW_ROLES",
|
||||||
|
"comment_roles": "COMMENT_ROLES",
|
||||||
|
"fbtype_rules": "FBTYPE_RULES",
|
||||||
|
"unit_re": "UNIT_RE",
|
||||||
|
"area_res": "AREA_RES",
|
||||||
|
"scl_templates": "SCL_TEMPLATES",
|
||||||
|
"fbtype_template": "FBTYPE_TEMPLATE",
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
def load_cfg():
|
||||||
|
"""Laedt cfg\\skel.cfg (JSON) aus PV_CFG und ersetzt die globalen
|
||||||
|
Definitionen (FILES, VERW_ROLES, ..., SCL_TEMPLATES) durch ihren Inhalt.
|
||||||
|
|
||||||
|
Fehlt PV_CFG oder die Datei, bleiben die eingebauten Defaults oben aktiv
|
||||||
|
(Cold-Start-Faehigkeit ohne Konfigurationsdatei).
|
||||||
|
"""
|
||||||
|
cfg_dir = os.environ.get("PV_CFG", Path(__file__).resolve().parent.parent / "cfg")
|
||||||
|
cfg_file = Path(cfg_dir) / "skel.cfg"
|
||||||
|
if not cfg_file.exists():
|
||||||
|
print(f"Hinweis: {cfg_file} nicht gefunden — verwende eingebaute Defaults.")
|
||||||
|
return
|
||||||
|
|
||||||
|
print(f"Lade Konfiguration: {cfg_file}")
|
||||||
|
data = json.loads(cfg_file.read_text(encoding="utf-8"))
|
||||||
|
|
||||||
|
globals_ = globals()
|
||||||
|
for cfg_key, const_name in _CFG_KEYS.items():
|
||||||
|
if cfg_key not in data:
|
||||||
|
continue
|
||||||
|
value = data[cfg_key]
|
||||||
|
# Listen von Listen (comment_roles, fbtype_rules, area_res) als
|
||||||
|
# Tupel normalisieren, damit das Unpacking im Code unveraendert bleibt
|
||||||
|
if const_name in ("COMMENT_ROLES", "AREA_RES"):
|
||||||
|
value = [tuple(item) for item in value]
|
||||||
|
globals_[const_name] = value
|
||||||
|
|
||||||
|
|
||||||
|
def load_scl_cfg():
|
||||||
|
"""Laedt die SCL-Templates aus PV_CFG\\skel_scl.cfg (INI-Style).
|
||||||
|
|
||||||
|
Format: jede [sektion] ist ein Template-Schluessel (var_decl, call_1sep,
|
||||||
|
...); der Sektionsinhalt wird VERBATIM uebernommen — Einrueckung und
|
||||||
|
Leerzeilen (auch am Blockende) gehoeren zum Template. Zeilen, die mit
|
||||||
|
';' beginnen, sind Kommentare. SCL selbst beginnt nie mit ';', daher
|
||||||
|
ist das kollisionsfrei.
|
||||||
|
|
||||||
|
Fehlt die Datei, bleiben die Templates aus skel.cfg bzw. den eingebauten
|
||||||
|
Defaults aktiv.
|
||||||
|
"""
|
||||||
|
cfg_dir = os.environ.get("PV_CFG", Path(__file__).resolve().parent.parent / "cfg")
|
||||||
|
cfg_file = Path(cfg_dir) / "skel_scl.cfg"
|
||||||
|
if not cfg_file.exists():
|
||||||
|
print(f"Hinweis: {cfg_file} nicht gefunden — "
|
||||||
|
f"verwende SCL-Templates aus skel.cfg/Defaults.")
|
||||||
|
return
|
||||||
|
|
||||||
|
print(f"Lade SCL-Templates: {cfg_file}")
|
||||||
|
templates = {}
|
||||||
|
name, buf = None, []
|
||||||
|
|
||||||
|
def flush():
|
||||||
|
if name is not None:
|
||||||
|
templates[name] = "\n".join(buf) + "\n"
|
||||||
|
|
||||||
|
for line in cfg_file.read_text(encoding="utf-8").splitlines():
|
||||||
|
if line.startswith(";"):
|
||||||
|
continue
|
||||||
|
m = re.fullmatch(r"\[(\w+)\]\s*", line)
|
||||||
|
if m:
|
||||||
|
flush()
|
||||||
|
name, buf = m.group(1), []
|
||||||
|
elif name is not None:
|
||||||
|
buf.append(line)
|
||||||
|
flush()
|
||||||
|
SCL_TEMPLATES.update(templates)
|
||||||
|
print(f"SCL-Templates geladen: {', '.join(templates)}")
|
||||||
|
|
||||||
|
|
||||||
|
def project_paths():
|
||||||
|
"""Pfade aus den setenv.bat-Umgebungsvariablen (mit Fallbacks)."""
|
||||||
|
root = Path(os.environ.get("PROJECT", Path(__file__).resolve().parent.parent))
|
||||||
|
data_dir = Path(os.environ.get("PV_DATA", root / "data"))
|
||||||
|
results = Path(os.environ.get("PV_RESULTS", root / "results"))
|
||||||
|
results.mkdir(parents=True, exist_ok=True)
|
||||||
|
return root, data_dir, results
|
||||||
|
|
||||||
|
|
||||||
|
# ----------------------------------------------------------------------------
|
||||||
|
# Einlesen
|
||||||
|
# ----------------------------------------------------------------------------
|
||||||
|
|
||||||
|
def read_positions(data_dir):
|
||||||
|
"""Positions-JSON: (BMK, SPS) -> {verw, pos, cabinet, bezeichnung}."""
|
||||||
|
path = data_dir / FILES["positions_json"]
|
||||||
|
if not path.exists():
|
||||||
|
print(f"WARNUNG: {path} nicht gefunden — Positionen/VERW entfallen.")
|
||||||
|
return {}
|
||||||
|
data = json.loads(path.read_text(encoding="utf-8"))
|
||||||
|
index = {}
|
||||||
|
for section in ("sensors", "schaltschrank_elemente"):
|
||||||
|
for key, val in data.get(section, {}).items():
|
||||||
|
if "@" not in key:
|
||||||
|
continue
|
||||||
|
bmk, sps = key.rsplit("@", 1)
|
||||||
|
index[(bmk, sps)] = {
|
||||||
|
"verw": (val.get("VERW") or "").strip(),
|
||||||
|
"pos": val.get("pos"),
|
||||||
|
"bezeichnung": val.get("BEZEICHNUNG") or "",
|
||||||
|
"kennzeichnung": val.get("KENNZEICHNUNG") or "",
|
||||||
|
}
|
||||||
|
# mappings: Verteiler -> [BMK@SPS] umdrehen zu (BMK, SPS) -> Verteiler
|
||||||
|
for dist, members in data.get("mappings", {}).items():
|
||||||
|
for key in members:
|
||||||
|
if "@" not in key:
|
||||||
|
continue
|
||||||
|
bmk, sps = key.rsplit("@", 1)
|
||||||
|
index.setdefault((bmk, sps), {})["cabinet"] = dist
|
||||||
|
return index
|
||||||
|
|
||||||
|
|
||||||
|
def read_tia(data_dir, n):
|
||||||
|
"""TIA-Liste ILS-n: Liste von Tag-Dicts + Konstanten-Map."""
|
||||||
|
path = data_dir / FILES["tia_xlsx"].format(n=n)
|
||||||
|
wb = openpyxl.load_workbook(path, read_only=True, data_only=True)
|
||||||
|
tags = []
|
||||||
|
for row in wb["PLC Tags"].iter_rows(min_row=2, values_only=True):
|
||||||
|
name, _path, dtype, addr, comment = (tuple(row) + (None,) * 5)[:5]
|
||||||
|
if not name:
|
||||||
|
continue
|
||||||
|
tags.append({
|
||||||
|
"name": str(name),
|
||||||
|
"dataType": str(dtype) if dtype else "Bool",
|
||||||
|
"address": str(addr) if addr else "",
|
||||||
|
"comment": str(comment) if comment else "",
|
||||||
|
})
|
||||||
|
constants = {}
|
||||||
|
if "Constants" in wb.sheetnames:
|
||||||
|
for row in wb["Constants"].iter_rows(min_row=2, values_only=True):
|
||||||
|
cname, _path, _dt, value = (tuple(row) + (None,) * 4)[:4]
|
||||||
|
if cname:
|
||||||
|
constants[str(cname)] = value
|
||||||
|
return tags, constants
|
||||||
|
|
||||||
|
|
||||||
|
# ----------------------------------------------------------------------------
|
||||||
|
# Connect-Daten (Topologie, Format hmf-connect-v1)
|
||||||
|
# ----------------------------------------------------------------------------
|
||||||
|
|
||||||
|
def expand_jam(short):
|
||||||
|
"""JA0101_1 -> "DB_JamArea0101".stJam0101_1 ; sonst unveraendert."""
|
||||||
|
m = re.fullmatch(r"JA(\w+)_(\w+)", short)
|
||||||
|
if m:
|
||||||
|
return f'"DB_JamArea{m.group(1)}".stJam{m.group(1)}_{m.group(2)}'
|
||||||
|
return short
|
||||||
|
|
||||||
|
|
||||||
|
def read_connect_json(data_dir):
|
||||||
|
"""connect.json -> {UHxx: {nodes, connections, externals}}."""
|
||||||
|
path = data_dir / FILES["connect_json"]
|
||||||
|
data = json.loads(path.read_text(encoding="utf-8"))
|
||||||
|
return data.get("plcs", {})
|
||||||
|
|
||||||
|
|
||||||
|
def read_connect_ini(data_dir):
|
||||||
|
"""connect.ini -> gleiche Struktur wie read_connect_json()."""
|
||||||
|
path = data_dir / FILES["connect_ini"]
|
||||||
|
cp = configparser.ConfigParser(interpolation=None)
|
||||||
|
cp.optionxform = str # Gross-/Kleinschreibung der TRO-Namen erhalten
|
||||||
|
cp.read(path, encoding="utf-8")
|
||||||
|
plcs = {}
|
||||||
|
for section in cp.sections():
|
||||||
|
uh, _, part = section.partition(".")
|
||||||
|
plc = plcs.setdefault(uh, {"nodes": {}, "connections": [],
|
||||||
|
"externals": []})
|
||||||
|
if part == "nodes":
|
||||||
|
for name, val in cp[section].items():
|
||||||
|
fbtype, _, comment = (x.strip() for x in val.partition("|"))
|
||||||
|
plc["nodes"][name] = {"fbType": fbtype, "comment": comment}
|
||||||
|
elif part == "connections":
|
||||||
|
for _, val in cp[section].items():
|
||||||
|
fields = [x.strip() for x in val.split("|")]
|
||||||
|
src, _, dst = (x.strip() for x in fields[0].partition("->"))
|
||||||
|
plc["connections"].append({
|
||||||
|
"from": src, "to": dst, "jamArea": fields[1],
|
||||||
|
"kind": fields[2] if len(fields) > 2 else "normal",
|
||||||
|
"dbRef": expand_jam(fields[1])})
|
||||||
|
elif part == "externals":
|
||||||
|
for _, val in cp[section].items():
|
||||||
|
route, _, jam = (x.strip() for x in val.partition("|"))
|
||||||
|
src, _, dst = (x.strip() for x in route.partition("->"))
|
||||||
|
node, direction = (dst, "in") if src == "EXTERN" else (src, "out")
|
||||||
|
plc["externals"].append({
|
||||||
|
"node": node, "direction": direction, "jamArea": jam,
|
||||||
|
"dbRef": expand_jam(jam)})
|
||||||
|
return plcs
|
||||||
|
|
||||||
|
|
||||||
|
def derive_topology(topo):
|
||||||
|
"""Bereitet die Connect-Daten einer Steuerung fuer das Skeleton auf:
|
||||||
|
je TRO die aufgeloeste JamArea-Verdrahtung (entries/exits)."""
|
||||||
|
tros = {name: {"id": name, "fbType": nd["fbType"], "comment": nd["comment"],
|
||||||
|
"entries": [], "exits": []}
|
||||||
|
for name, nd in topo["nodes"].items()}
|
||||||
|
for c in topo["connections"]:
|
||||||
|
db = c.get("dbRef") or expand_jam(c["jamArea"])
|
||||||
|
if c["from"] in tros:
|
||||||
|
tros[c["from"]]["exits"].append(
|
||||||
|
{"jamArea": c["jamArea"], "dbRef": db, "to": c["to"],
|
||||||
|
"kind": c["kind"]})
|
||||||
|
if c["to"] in tros:
|
||||||
|
tros[c["to"]]["entries"].append(
|
||||||
|
{"jamArea": c["jamArea"], "dbRef": db, "from": c["from"],
|
||||||
|
"kind": c["kind"]})
|
||||||
|
for e in topo["externals"]:
|
||||||
|
if e["node"] not in tros:
|
||||||
|
continue
|
||||||
|
db = e.get("dbRef") or expand_jam(e["jamArea"])
|
||||||
|
side = "entries" if e["direction"] == "in" else "exits"
|
||||||
|
peer = "from" if e["direction"] == "in" else "to"
|
||||||
|
tros[e["node"]][side].append(
|
||||||
|
{"jamArea": e["jamArea"], "dbRef": db, peer: "EXTERN",
|
||||||
|
"kind": "extern"})
|
||||||
|
return {
|
||||||
|
"format": "hmf-connect-v1",
|
||||||
|
"tros": [tros[k] for k in sorted(tros)],
|
||||||
|
"connections": topo["connections"],
|
||||||
|
"externals": topo["externals"],
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
# ----------------------------------------------------------------------------
|
||||||
|
# Klassifikation
|
||||||
|
# ----------------------------------------------------------------------------
|
||||||
|
|
||||||
|
def classify_role(tag, posinfo):
|
||||||
|
"""Signalrolle: primaer VERW-Vokabular, sonst Kommentar-Heuristik."""
|
||||||
|
verw = (posinfo or {}).get("verw", "")
|
||||||
|
if verw in VERW_ROLES:
|
||||||
|
return VERW_ROLES[verw]
|
||||||
|
for pattern, role in COMMENT_ROLES:
|
||||||
|
if re.search(pattern, tag["comment"], re.I):
|
||||||
|
return role
|
||||||
|
return ""
|
||||||
|
|
||||||
|
|
||||||
|
def extract_unit(comment):
|
||||||
|
"""M-Nummer der Foerdertechnik-Einheit aus dem Kommentar."""
|
||||||
|
m = re.search(UNIT_RE, comment)
|
||||||
|
if m:
|
||||||
|
return m.group(2), m.group(1) # ("M0101", "KR")
|
||||||
|
return None, None
|
||||||
|
|
||||||
|
|
||||||
|
def extract_areas(comment):
|
||||||
|
"""Bereichsgruppen (Block/LS/WS/UZ) aus dem Kommentar."""
|
||||||
|
found = []
|
||||||
|
for pattern, kind, fmt in AREA_RES:
|
||||||
|
for m in re.finditer(pattern, comment, re.I):
|
||||||
|
found.append({"id": fmt.format(m=m.group(1)), "kind": kind})
|
||||||
|
return found
|
||||||
|
|
||||||
|
|
||||||
|
def guess_fbtype(roles):
|
||||||
|
"""FB-Typ einer Einheit aus der Menge ihrer Signalrollen."""
|
||||||
|
for rule in FBTYPE_RULES:
|
||||||
|
if all(r in roles for r in rule["roles"]):
|
||||||
|
return rule["fbType"]
|
||||||
|
return "UNBEKANNT"
|
||||||
|
|
||||||
|
|
||||||
|
# ----------------------------------------------------------------------------
|
||||||
|
# Skeleton-Aufbau
|
||||||
|
# ----------------------------------------------------------------------------
|
||||||
|
|
||||||
|
def build_skeleton(n, tags, constants, positions, connect=None):
|
||||||
|
"""Baut das JSON-Skeleton fuer eine Steuerung (ILS-n = UH0n)."""
|
||||||
|
uh = f"UH0{n}"
|
||||||
|
sps = str(n)
|
||||||
|
|
||||||
|
sensors = []
|
||||||
|
units = defaultdict(lambda: {"signals": [], "roles": set(), "areas": [],
|
||||||
|
"kind": None, "pos": None, "cabinets": set()})
|
||||||
|
areas = defaultdict(lambda: {"kind": None, "members": set(),
|
||||||
|
"cabinets": set()})
|
||||||
|
unassigned = []
|
||||||
|
|
||||||
|
for tag in tags:
|
||||||
|
posinfo = positions.get((tag["name"], sps))
|
||||||
|
role = classify_role(tag, posinfo)
|
||||||
|
unit_id, unit_kind = extract_unit(tag["comment"])
|
||||||
|
area_hits = extract_areas(tag["comment"])
|
||||||
|
cabinet = (posinfo or {}).get("cabinet")
|
||||||
|
|
||||||
|
entry = {
|
||||||
|
"id": tag["name"],
|
||||||
|
"constant": f"cIn{tag['name']}" if tag["address"].startswith("%E") else None,
|
||||||
|
"hwAddress": tag["address"],
|
||||||
|
"comment": tag["comment"],
|
||||||
|
"role": role or None,
|
||||||
|
"unit": unit_id,
|
||||||
|
"cabinet": cabinet,
|
||||||
|
"pos": (posinfo or {}).get("pos"),
|
||||||
|
}
|
||||||
|
if tag["address"].startswith("%E"):
|
||||||
|
sensors.append(entry)
|
||||||
|
|
||||||
|
if unit_id:
|
||||||
|
u = units[unit_id]
|
||||||
|
u["kind"] = unit_kind
|
||||||
|
u["signals"].append(entry)
|
||||||
|
if role:
|
||||||
|
u["roles"].add(role)
|
||||||
|
if u["pos"] is None and entry["pos"]:
|
||||||
|
u["pos"] = entry["pos"]
|
||||||
|
if cabinet:
|
||||||
|
u["cabinets"].add(cabinet)
|
||||||
|
for a in area_hits:
|
||||||
|
if a not in u["areas"]:
|
||||||
|
u["areas"].append(a)
|
||||||
|
elif not area_hits and not role:
|
||||||
|
unassigned.append(tag["name"])
|
||||||
|
|
||||||
|
for a in area_hits:
|
||||||
|
ar = areas[a["id"]]
|
||||||
|
ar["kind"] = a["kind"]
|
||||||
|
if unit_id:
|
||||||
|
ar["members"].add(unit_id)
|
||||||
|
if cabinet:
|
||||||
|
ar["cabinets"].add(cabinet)
|
||||||
|
|
||||||
|
unit_list = []
|
||||||
|
for unit_id in sorted(units):
|
||||||
|
u = units[unit_id]
|
||||||
|
fbtype = guess_fbtype(u["roles"])
|
||||||
|
io = {}
|
||||||
|
for sig in u["signals"]:
|
||||||
|
if sig["role"]:
|
||||||
|
io.setdefault(sig["role"], []).append(sig["id"])
|
||||||
|
unit_list.append({
|
||||||
|
"unit": unit_id,
|
||||||
|
"unitKind": u["kind"],
|
||||||
|
"fbType": fbtype,
|
||||||
|
"areas": u["areas"],
|
||||||
|
"cabinet": sorted(u["cabinets"])[0] if u["cabinets"] else None,
|
||||||
|
"pos": u["pos"],
|
||||||
|
"io": io,
|
||||||
|
"signalCount": len(u["signals"]),
|
||||||
|
})
|
||||||
|
|
||||||
|
area_list = [{
|
||||||
|
"id": aid,
|
||||||
|
"kind": a["kind"],
|
||||||
|
"members": sorted(a["members"]),
|
||||||
|
"cabinets": sorted(a["cabinets"]),
|
||||||
|
} for aid, a in sorted(areas.items())]
|
||||||
|
|
||||||
|
skel = {
|
||||||
|
"$schema": "hmf-layout-v1.schema.json",
|
||||||
|
"generatedBy": "create_skel.py",
|
||||||
|
"plc": {"id": uh, "configName": f"=A01+{uh}-KF00"},
|
||||||
|
"statistics": {
|
||||||
|
"tags": len(tags),
|
||||||
|
"sensors": len(sensors),
|
||||||
|
"constants": len(constants),
|
||||||
|
"units": len(unit_list),
|
||||||
|
"areas": len(area_list),
|
||||||
|
"unassignedSignals": len(unassigned),
|
||||||
|
},
|
||||||
|
"sensors": sensors,
|
||||||
|
"units": unit_list,
|
||||||
|
"areas": area_list,
|
||||||
|
"unassignedSignals": sorted(unassigned),
|
||||||
|
"todo": [
|
||||||
|
"connections[] (Topologie) manuell ergaenzen oder aus SCL extrahieren",
|
||||||
|
"Timings, Priority, Release, customCode manuell pflegen",
|
||||||
|
"TRO-IDs den Einheiten zuweisen (Schema TRO<UH><lfd>)",
|
||||||
|
],
|
||||||
|
}
|
||||||
|
|
||||||
|
if connect is not None:
|
||||||
|
topo = connect.get(uh)
|
||||||
|
if topo:
|
||||||
|
skel["topology"] = derive_topology(topo)
|
||||||
|
skel["statistics"]["troNodes"] = len(topo["nodes"])
|
||||||
|
skel["statistics"]["connections"] = len(topo["connections"])
|
||||||
|
skel["statistics"]["externals"] = len(topo["externals"])
|
||||||
|
skel["todo"] = [
|
||||||
|
"topology[] aus connect-Daten uebernommen — TRO-IDs den "
|
||||||
|
"Einheiten (units[]) noch zuordnen",
|
||||||
|
"Timings, Priority, Release, customCode manuell pflegen",
|
||||||
|
]
|
||||||
|
else:
|
||||||
|
print(f"WARNUNG: keine Connect-Daten fuer {uh} gefunden.")
|
||||||
|
|
||||||
|
return skel
|
||||||
|
|
||||||
|
|
||||||
|
# ----------------------------------------------------------------------------
|
||||||
|
# SCL-Rendering
|
||||||
|
# ----------------------------------------------------------------------------
|
||||||
|
|
||||||
|
def first(io, role, default="BGxxxx"):
|
||||||
|
vals = io.get(role)
|
||||||
|
return vals[0] if vals else default
|
||||||
|
|
||||||
|
|
||||||
|
def render_scl(skeleton, uh):
|
||||||
|
"""FB_Main- und FB_CallSensors-Grundgeruest aus den Templates."""
|
||||||
|
var_block = []
|
||||||
|
call_block = []
|
||||||
|
tro_seq = 0
|
||||||
|
for u in skeleton["units"]:
|
||||||
|
fbtype = u["fbType"]
|
||||||
|
if fbtype == "UNBEKANNT":
|
||||||
|
continue
|
||||||
|
tro_seq += 1
|
||||||
|
inst = f"TRO{uh[-1]}{tro_seq:02d}" if fbtype != "FB_Conveyor" \
|
||||||
|
else f"fbConveyor{u['unit'][1:]}"
|
||||||
|
comment = f"{u['unitKind']}-{u['unit']}" + \
|
||||||
|
(f" / {u['areas'][0]['id']}" if u["areas"] else "")
|
||||||
|
var_block.append(SCL_TEMPLATES["var_decl"].format(
|
||||||
|
inst=inst, fbtype=fbtype, comment=comment))
|
||||||
|
|
||||||
|
tpl = SCL_TEMPLATES[FBTYPE_TEMPLATE[fbtype]]
|
||||||
|
io = u["io"]
|
||||||
|
call_block.append(tpl.format(
|
||||||
|
inst=inst,
|
||||||
|
shorttype=fbtype.replace("FB_ILS_MTRO_", "").replace("FB_", ""),
|
||||||
|
comment=comment,
|
||||||
|
tro_no=f"{uh[-1]}{tro_seq:02d}",
|
||||||
|
sen_in_sep=first(io, "sensorInSep"),
|
||||||
|
sen_jam=first(io, "sensorJam"),
|
||||||
|
sen_finger=first(io, "sensorFinger"),
|
||||||
|
sen_carr_in_pos=first(io, "sensorCarrInPos"),
|
||||||
|
stopper=first(io, "stopperOutput", "MBxxxx"),
|
||||||
|
switch_out=first(io, "switchOutput", "MBxxxx"),
|
||||||
|
motor=first(io, "motorOutput", "MAxxxx"),
|
||||||
|
motor_protection=first(io, "motorProtection", "FCxxxx"),
|
||||||
|
))
|
||||||
|
|
||||||
|
fb_main = SCL_TEMPLATES["fb_main_frame"].format(
|
||||||
|
uh=uh, var_block="".join(var_block), call_block="".join(call_block))
|
||||||
|
|
||||||
|
sensor_calls = [SCL_TEMPLATES["call_sensor"].format(
|
||||||
|
bmk=s["id"], comment=s["comment"]) for s in skeleton["sensors"]]
|
||||||
|
fb_sensors = SCL_TEMPLATES["fb_sensors_frame"].format(
|
||||||
|
uh=uh, count=len(sensor_calls), call_block="".join(sensor_calls))
|
||||||
|
|
||||||
|
return fb_main, fb_sensors
|
||||||
|
|
||||||
|
|
||||||
|
# ----------------------------------------------------------------------------
|
||||||
|
# main
|
||||||
|
# ----------------------------------------------------------------------------
|
||||||
|
|
||||||
|
def main():
|
||||||
|
ap = argparse.ArgumentParser(description=__doc__)
|
||||||
|
ap.add_argument("--uh", type=int, choices=range(1, 6),
|
||||||
|
help="nur diese Steuerung (1..5), sonst alle")
|
||||||
|
ap.add_argument("--no-scl", action="store_true",
|
||||||
|
help="nur JSON-Skeleton, kein SCL-Grundgeruest")
|
||||||
|
con = ap.add_mutually_exclusive_group()
|
||||||
|
con.add_argument("--con-ini", action="store_true",
|
||||||
|
help="Topologie aus data\\connect.ini uebernehmen")
|
||||||
|
con.add_argument("--con-json", action="store_true",
|
||||||
|
help="Topologie aus data\\connect.json uebernehmen")
|
||||||
|
args = ap.parse_args()
|
||||||
|
|
||||||
|
load_cfg()
|
||||||
|
load_scl_cfg()
|
||||||
|
root, data_dir, results = project_paths()
|
||||||
|
print(f"Daten: {data_dir}")
|
||||||
|
print(f"Results: {results}")
|
||||||
|
|
||||||
|
positions = read_positions(data_dir)
|
||||||
|
print(f"Positions-JSON: {len(positions)} Signale indiziert")
|
||||||
|
|
||||||
|
connect = None
|
||||||
|
if args.con_ini or args.con_json:
|
||||||
|
src = FILES["connect_ini"] if args.con_ini else FILES["connect_json"]
|
||||||
|
if not (data_dir / src).exists():
|
||||||
|
sys.exit(f"FEHLER: {data_dir / src} nicht gefunden.")
|
||||||
|
connect = (read_connect_ini if args.con_ini
|
||||||
|
else read_connect_json)(data_dir)
|
||||||
|
total = sum(len(p["connections"]) for p in connect.values())
|
||||||
|
print(f"Connect-Daten: {src} — {len(connect)} PLCs, "
|
||||||
|
f"{total} Verbindungen")
|
||||||
|
|
||||||
|
for n in ([args.uh] if args.uh else range(1, 6)):
|
||||||
|
uh = f"UH0{n}"
|
||||||
|
tags, constants = read_tia(data_dir, n)
|
||||||
|
skel = build_skeleton(n, tags, constants, positions, connect)
|
||||||
|
|
||||||
|
out_json = results / f"skeleton_{uh}.json"
|
||||||
|
out_json.write_text(json.dumps(skel, indent=2, ensure_ascii=False),
|
||||||
|
encoding="utf-8", newline="\n")
|
||||||
|
s = skel["statistics"]
|
||||||
|
topo_info = (f", {s['connections']} Verbindungen"
|
||||||
|
if "connections" in s else "")
|
||||||
|
print(f"{uh}: {s['tags']} Tags, {s['units']} Einheiten, "
|
||||||
|
f"{s['areas']} Bereiche{topo_info} -> {out_json.name}")
|
||||||
|
|
||||||
|
if not args.no_scl:
|
||||||
|
fb_main, fb_sensors = render_scl(skel, uh)
|
||||||
|
(results / f"FB_Main_skel_{uh}.scl").write_text(
|
||||||
|
fb_main, encoding="utf-8", newline="\n")
|
||||||
|
(results / f"FB_CallSensors_skel_{uh}.scl").write_text(
|
||||||
|
fb_sensors, encoding="utf-8", newline="\n")
|
||||||
|
print(f"{uh}: FB_Main_skel_{uh}.scl, FB_CallSensors_skel_{uh}.scl")
|
||||||
|
|
||||||
|
|
||||||
|
if __name__ == "__main__":
|
||||||
|
main()
|
||||||
@@ -0,0 +1,3 @@
|
|||||||
|
# Python-Abhaengigkeiten HundM_Fortna
|
||||||
|
openpyxl>=3.1
|
||||||
|
ezdxf>=1.3
|
||||||
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
@@ -0,0 +1,546 @@
|
|||||||
|
FUNCTION_BLOCK "FB_CallSensors_skel_UH04"
|
||||||
|
{ S7_Optimized_Access := 'TRUE' }
|
||||||
|
VERSION : 0.1
|
||||||
|
// AUTOMATISCH GENERIERT — create_skel.py (134 Sensoren)
|
||||||
|
VAR
|
||||||
|
fbSensorInput : "FB_SensorInput";
|
||||||
|
END_VAR
|
||||||
|
|
||||||
|
BEGIN
|
||||||
|
// DT Anlage Aus
|
||||||
|
#fbSensorInput(stInSensorHW := "SF0000",
|
||||||
|
nInSensorNo := "cInSF0000",
|
||||||
|
stInOutSensor := "DB_Inputs".Sensors["cInSF0000"]);
|
||||||
|
// LDT Anlage Ein
|
||||||
|
#fbSensorInput(stInSensorHW := "SF0001",
|
||||||
|
nInSensorNo := "cInSF0001",
|
||||||
|
stInOutSensor := "DB_Inputs".Sensors["cInSF0001"]);
|
||||||
|
// LDT Reset
|
||||||
|
#fbSensorInput(stInSensorHW := "SF0002",
|
||||||
|
nInSensorNo := "cInSF0002",
|
||||||
|
stInOutSensor := "DB_Inputs".Sensors["cInSF0002"]);
|
||||||
|
// DT Lampentest
|
||||||
|
#fbSensorInput(stInSensorHW := "SF0003",
|
||||||
|
nInSensorNo := "cInSF0003",
|
||||||
|
stInOutSensor := "DB_Inputs".Sensors["cInSF0003"]);
|
||||||
|
// Druckschalter Druckluft OK
|
||||||
|
#fbSensorInput(stInSensorHW := "BP0004",
|
||||||
|
nInSensorNo := "cInBP0004",
|
||||||
|
stInOutSensor := "DB_Inputs".Sensors["cInBP0004"]);
|
||||||
|
// Phasenausfall 400V
|
||||||
|
#fbSensorInput(stInSensorHW := "DI0005",
|
||||||
|
nInSensorNo := "cInDI0005",
|
||||||
|
stInOutSensor := "DB_Inputs".Sensors["cInDI0005"]);
|
||||||
|
// Vorsicherung 400V UC Reserve
|
||||||
|
#fbSensorInput(stInSensorHW := "DI0006",
|
||||||
|
nInSensorNo := "cInDI0006",
|
||||||
|
stInOutSensor := "DB_Inputs".Sensors["cInDI0006"]);
|
||||||
|
// Feedback Hauptschütze aktiv
|
||||||
|
#fbSensorInput(stInSensorHW := "DI0013",
|
||||||
|
nInSensorNo := "cInDI0013",
|
||||||
|
stInOutSensor := "DB_Inputs".Sensors["cInDI0013"]);
|
||||||
|
// Feedback Koppelrelais E-Stop-IF (QA0660/QA0661)
|
||||||
|
#fbSensorInput(stInSensorHW := "DI0014",
|
||||||
|
nInSensorNo := "cInDI0014",
|
||||||
|
stInOutSensor := "DB_Inputs".Sensors["cInDI0014"]);
|
||||||
|
// Feedback Koppelrelais E-Stop-IF
|
||||||
|
#fbSensorInput(stInSensorHW := "DI0015",
|
||||||
|
nInSensorNo := "cInDI0015",
|
||||||
|
stInOutSensor := "DB_Inputs".Sensors["cInDI0015"]);
|
||||||
|
// Sicherungsautomatenfall
|
||||||
|
#fbSensorInput(stInSensorHW := "DI0016",
|
||||||
|
nInSensorNo := "cInDI0016",
|
||||||
|
stInOutSensor := "DB_Inputs".Sensors["cInDI0016"]);
|
||||||
|
// Vorsicherung 24V OK (FC021)
|
||||||
|
#fbSensorInput(stInSensorHW := "DI0021",
|
||||||
|
nInSensorNo := "cInDI0021",
|
||||||
|
stInOutSensor := "DB_Inputs".Sensors["cInDI0021"]);
|
||||||
|
// Vorsicherung 24V OK (FC022)
|
||||||
|
#fbSensorInput(stInSensorHW := "DI0022",
|
||||||
|
nInSensorNo := "cInDI0022",
|
||||||
|
stInOutSensor := "DB_Inputs".Sensors["cInDI0022"]);
|
||||||
|
// Vorsicherung 24V OK (FC023)
|
||||||
|
#fbSensorInput(stInSensorHW := "DI0023",
|
||||||
|
nInSensorNo := "cInDI0023",
|
||||||
|
stInOutSensor := "DB_Inputs".Sensors["cInDI0023"]);
|
||||||
|
// MT freigeben UZ0403, Workstation MPS 3
|
||||||
|
#fbSensorInput(stInSensorHW := "SF0025",
|
||||||
|
nInSensorNo := "cInSF0025",
|
||||||
|
stInOutSensor := "DB_Inputs".Sensors["cInSF0025"]);
|
||||||
|
// MT freigeben UZ0402, Workstation MPS 2
|
||||||
|
#fbSensorInput(stInSensorHW := "SF0026",
|
||||||
|
nInSensorNo := "cInSF0026",
|
||||||
|
stInOutSensor := "DB_Inputs".Sensors["cInSF0026"]);
|
||||||
|
// MT freigeben UZ0401, Workstation MPS 1
|
||||||
|
#fbSensorInput(stInSensorHW := "SF0027",
|
||||||
|
nInSensorNo := "cInSF0027",
|
||||||
|
stInOutSensor := "DB_Inputs".Sensors["cInSF0027"]);
|
||||||
|
// IF BMZ "fire alarm" 2
|
||||||
|
#fbSensorInput(stInSensorHW := "DI0033",
|
||||||
|
nInSensorNo := "cInDI0033",
|
||||||
|
stInOutSensor := "DB_Inputs".Sensors["cInDI0033"]);
|
||||||
|
// IF BMZ "fire alarm" 1
|
||||||
|
#fbSensorInput(stInSensorHW := "DI0034",
|
||||||
|
nInSensorNo := "cInDI0034",
|
||||||
|
stInOutSensor := "DB_Inputs".Sensors["cInDI0034"]);
|
||||||
|
// IF BST 4 "No fire alarm"
|
||||||
|
#fbSensorInput(stInSensorHW := "DI0035",
|
||||||
|
nInSensorNo := "cInDI0035",
|
||||||
|
stInOutSensor := "DB_Inputs".Sensors["cInDI0035"]);
|
||||||
|
// IF BST 4 "Non fault"
|
||||||
|
#fbSensorInput(stInSensorHW := "DI0036",
|
||||||
|
nInSensorNo := "cInDI0036",
|
||||||
|
stInOutSensor := "DB_Inputs".Sensors["cInDI0036"]);
|
||||||
|
// IF BST 4 "FPC opened"
|
||||||
|
#fbSensorInput(stInSensorHW := "DI0037",
|
||||||
|
nInSensorNo := "cInDI0037",
|
||||||
|
stInOutSensor := "DB_Inputs".Sensors["cInDI0037"]);
|
||||||
|
// Reset UZ0409
|
||||||
|
#fbSensorInput(stInSensorHW := "SF0051",
|
||||||
|
nInSensorNo := "cInSF0051",
|
||||||
|
stInOutSensor := "DB_Inputs".Sensors["cInSF0051"]);
|
||||||
|
// Reset UZ0403
|
||||||
|
#fbSensorInput(stInSensorHW := "SF0053",
|
||||||
|
nInSensorNo := "cInSF0053",
|
||||||
|
stInOutSensor := "DB_Inputs".Sensors["cInSF0053"]);
|
||||||
|
// Reset UZ0402
|
||||||
|
#fbSensorInput(stInSensorHW := "SF0055",
|
||||||
|
nInSensorNo := "cInSF0055",
|
||||||
|
stInOutSensor := "DB_Inputs".Sensors["cInSF0055"]);
|
||||||
|
// Reset UZ0401
|
||||||
|
#fbSensorInput(stInSensorHW := "SF0057",
|
||||||
|
nInSensorNo := "cInSF0057",
|
||||||
|
stInOutSensor := "DB_Inputs".Sensors["cInSF0057"]);
|
||||||
|
// MSS ausgelöst FC0060
|
||||||
|
#fbSensorInput(stInSensorHW := "FC0060",
|
||||||
|
nInSensorNo := "cInFC0060",
|
||||||
|
stInOutSensor := "DB_Inputs".Sensors["cInFC0060"]);
|
||||||
|
// MSS ausgelöst FC0061
|
||||||
|
#fbSensorInput(stInSensorHW := "FC0061",
|
||||||
|
nInSensorNo := "cInFC0061",
|
||||||
|
stInOutSensor := "DB_Inputs".Sensors["cInFC0061"]);
|
||||||
|
// MSS ausgelöst FC0062
|
||||||
|
#fbSensorInput(stInSensorHW := "FC0062",
|
||||||
|
nInSensorNo := "cInFC0062",
|
||||||
|
stInOutSensor := "DB_Inputs".Sensors["cInFC0062"]);
|
||||||
|
// MSS ausgelöst FC0063
|
||||||
|
#fbSensorInput(stInSensorHW := "FC0063",
|
||||||
|
nInSensorNo := "cInFC0063",
|
||||||
|
stInOutSensor := "DB_Inputs".Sensors["cInFC0063"]);
|
||||||
|
// MSS ausgelöst FC0064
|
||||||
|
#fbSensorInput(stInSensorHW := "FC0064",
|
||||||
|
nInSensorNo := "cInFC0064",
|
||||||
|
stInOutSensor := "DB_Inputs".Sensors["cInFC0064"]);
|
||||||
|
// MSS ausgelöst FC0065
|
||||||
|
#fbSensorInput(stInSensorHW := "FC0065",
|
||||||
|
nInSensorNo := "cInFC0065",
|
||||||
|
stInOutSensor := "DB_Inputs".Sensors["cInFC0065"]);
|
||||||
|
// MSS ausgelöst FC0066
|
||||||
|
#fbSensorInput(stInSensorHW := "FC0066",
|
||||||
|
nInSensorNo := "cInFC0066",
|
||||||
|
stInOutSensor := "DB_Inputs".Sensors["cInFC0066"]);
|
||||||
|
// MSS ausgelöst FC0070
|
||||||
|
#fbSensorInput(stInSensorHW := "FC0070",
|
||||||
|
nInSensorNo := "cInFC0070",
|
||||||
|
stInOutSensor := "DB_Inputs".Sensors["cInFC0070"]);
|
||||||
|
// MSS ausgelöst FC0071
|
||||||
|
#fbSensorInput(stInSensorHW := "FC0071",
|
||||||
|
nInSensorNo := "cInFC0071",
|
||||||
|
stInOutSensor := "DB_Inputs".Sensors["cInFC0071"]);
|
||||||
|
// MSS ausgelöst FC0072
|
||||||
|
#fbSensorInput(stInSensorHW := "FC0072",
|
||||||
|
nInSensorNo := "cInFC0072",
|
||||||
|
stInOutSensor := "DB_Inputs".Sensors["cInFC0072"]);
|
||||||
|
// MSS ausgelöst FC0073
|
||||||
|
#fbSensorInput(stInSensorHW := "FC0073",
|
||||||
|
nInSensorNo := "cInFC0073",
|
||||||
|
stInOutSensor := "DB_Inputs".Sensors["cInFC0073"]);
|
||||||
|
// MSS ausgelöst FC0074
|
||||||
|
#fbSensorInput(stInSensorHW := "FC0074",
|
||||||
|
nInSensorNo := "cInFC0074",
|
||||||
|
stInOutSensor := "DB_Inputs".Sensors["cInFC0074"]);
|
||||||
|
// MSS ausgelöst FC0075 (Reserve)
|
||||||
|
#fbSensorInput(stInSensorHW := "FC0075",
|
||||||
|
nInSensorNo := "cInFC0075",
|
||||||
|
stInOutSensor := "DB_Inputs".Sensors["cInFC0075"]);
|
||||||
|
// Not Halt Kanal 1 UH04
|
||||||
|
#fbSensorInput(stInSensorHW := "SF0400",
|
||||||
|
nInSensorNo := "cInSF0400",
|
||||||
|
stInOutSensor := "DB_Inputs".Sensors["cInSF0400"]);
|
||||||
|
// Not Halt Kanal 2 UH04
|
||||||
|
#fbSensorInput(stInSensorHW := "SF0404",
|
||||||
|
nInSensorNo := "cInSF0404",
|
||||||
|
stInOutSensor := "DB_Inputs".Sensors["cInSF0404"]);
|
||||||
|
// Not Halt Schnittstelle CH1 (UH06)
|
||||||
|
#fbSensorInput(stInSensorHW := "SF0471",
|
||||||
|
nInSensorNo := "cInSF0471",
|
||||||
|
stInOutSensor := "DB_Inputs".Sensors["cInSF0471"]);
|
||||||
|
// Not Halt Schnittstelle CH2 (Reserve)
|
||||||
|
#fbSensorInput(stInSensorHW := "SF0472",
|
||||||
|
nInSensorNo := "cInSF0472",
|
||||||
|
stInOutSensor := "DB_Inputs".Sensors["cInSF0472"]);
|
||||||
|
// Not Halt Kanal 1 UZ0409
|
||||||
|
#fbSensorInput(stInSensorHW := "SF0473",
|
||||||
|
nInSensorNo := "cInSF0473",
|
||||||
|
stInOutSensor := "DB_Inputs".Sensors["cInSF0473"]);
|
||||||
|
// Not Halt Schnittstelle CH1 (UH06)
|
||||||
|
#fbSensorInput(stInSensorHW := "SF0475",
|
||||||
|
nInSensorNo := "cInSF0475",
|
||||||
|
stInOutSensor := "DB_Inputs".Sensors["cInSF0475"]);
|
||||||
|
// Not Halt Schnittstelle CH2 (Reserve)
|
||||||
|
#fbSensorInput(stInSensorHW := "SF0476",
|
||||||
|
nInSensorNo := "cInSF0476",
|
||||||
|
stInOutSensor := "DB_Inputs".Sensors["cInSF0476"]);
|
||||||
|
// Not Halt Kanal 2 UZ0409
|
||||||
|
#fbSensorInput(stInSensorHW := "SF0477",
|
||||||
|
nInSensorNo := "cInSF0477",
|
||||||
|
stInOutSensor := "DB_Inputs".Sensors["cInSF0477"]);
|
||||||
|
// Sensor Förderer voll (ILS-CV M4000)
|
||||||
|
#fbSensorInput(stInSensorHW := "BG3240",
|
||||||
|
nInSensorNo := "cInBG3240",
|
||||||
|
stInOutSensor := "DB_Inputs".Sensors["cInBG3240"]);
|
||||||
|
// MT in Position MPS 3 (AMR ILS-CV M04001)
|
||||||
|
#fbSensorInput(stInSensorHW := "BG3241",
|
||||||
|
nInSensorNo := "cInBG3241",
|
||||||
|
stInOutSensor := "DB_Inputs".Sensors["cInBG3241"]);
|
||||||
|
// in Separator (ILS-CV M4001)
|
||||||
|
#fbSensorInput(stInSensorHW := "BG3242",
|
||||||
|
nInSensorNo := "cInBG3242",
|
||||||
|
stInOutSensor := "DB_Inputs".Sensors["cInBG3242"]);
|
||||||
|
// Stausensor (AMR ILS-CV M4000)
|
||||||
|
#fbSensorInput(stInSensorHW := "BG3243",
|
||||||
|
nInSensorNo := "cInBG3243",
|
||||||
|
stInOutSensor := "DB_Inputs".Sensors["cInBG3243"]);
|
||||||
|
// Abfrage Mitnehmerfinger in Position (ILS-CV M4001)
|
||||||
|
#fbSensorInput(stInSensorHW := "BG3244",
|
||||||
|
nInSensorNo := "cInBG3244",
|
||||||
|
stInOutSensor := "DB_Inputs".Sensors["cInBG3244"]);
|
||||||
|
// Sensor Förderer voll (ILS-CV M4001)
|
||||||
|
#fbSensorInput(stInSensorHW := "BG3245",
|
||||||
|
nInSensorNo := "cInBG3245",
|
||||||
|
stInOutSensor := "DB_Inputs".Sensors["cInBG3245"]);
|
||||||
|
// Stausensor vor Vario Förderer (ILS-CV M4001)
|
||||||
|
#fbSensorInput(stInSensorHW := "BG3246",
|
||||||
|
nInSensorNo := "cInBG3246",
|
||||||
|
stInOutSensor := "DB_Inputs".Sensors["cInBG3246"]);
|
||||||
|
// in Separator vor BST 4 (ILS-CV M4001)
|
||||||
|
#fbSensorInput(stInSensorHW := "BG3247",
|
||||||
|
nInSensorNo := "cInBG3247",
|
||||||
|
stInOutSensor := "DB_Inputs".Sensors["cInBG3247"]);
|
||||||
|
// in Separator (ILS-CV M4011)
|
||||||
|
#fbSensorInput(stInSensorHW := "BG3250",
|
||||||
|
nInSensorNo := "cInBG3250",
|
||||||
|
stInOutSensor := "DB_Inputs".Sensors["cInBG3250"]);
|
||||||
|
// Stausensor (AMR ILS-CV M4503)
|
||||||
|
#fbSensorInput(stInSensorHW := "BG3251",
|
||||||
|
nInSensorNo := "cInBG3251",
|
||||||
|
stInOutSensor := "DB_Inputs".Sensors["cInBG3251"]);
|
||||||
|
// Abfrage Mitnehmerfinger in Position (ILS-CV M4011)
|
||||||
|
#fbSensorInput(stInSensorHW := "BG3253",
|
||||||
|
nInSensorNo := "cInBG3253",
|
||||||
|
stInOutSensor := "DB_Inputs".Sensors["cInBG3253"]);
|
||||||
|
// MT in Position (ILS-CV M4011)
|
||||||
|
#fbSensorInput(stInSensorHW := "BG3255",
|
||||||
|
nInSensorNo := "cInBG3255",
|
||||||
|
stInOutSensor := "DB_Inputs".Sensors["cInBG3255"]);
|
||||||
|
// Sensor Förderer voll (ILS-CV M4011)
|
||||||
|
#fbSensorInput(stInSensorHW := "BG3256",
|
||||||
|
nInSensorNo := "cInBG3256",
|
||||||
|
stInOutSensor := "DB_Inputs".Sensors["cInBG3256"]);
|
||||||
|
// in Separator 4 (ILS-CV M0401)
|
||||||
|
#fbSensorInput(stInSensorHW := "BG3260",
|
||||||
|
nInSensorNo := "cInBG3260",
|
||||||
|
stInOutSensor := "DB_Inputs".Sensors["cInBG3260"]);
|
||||||
|
// MT in Position (AMR ILS-CV M0401)
|
||||||
|
#fbSensorInput(stInSensorHW := "BG3261",
|
||||||
|
nInSensorNo := "cInBG3261",
|
||||||
|
stInOutSensor := "DB_Inputs".Sensors["cInBG3261"]);
|
||||||
|
// Abfrage Mitnehmerfinger in Position (AMR ILS-CV M0401)
|
||||||
|
#fbSensorInput(stInSensorHW := "BG3262",
|
||||||
|
nInSensorNo := "cInBG3262",
|
||||||
|
stInOutSensor := "DB_Inputs".Sensors["cInBG3262"]);
|
||||||
|
// Stausensor nach BST 4 (AMR ILS-CV M4011)
|
||||||
|
#fbSensorInput(stInSensorHW := "BG3264",
|
||||||
|
nInSensorNo := "cInBG3264",
|
||||||
|
stInOutSensor := "DB_Inputs".Sensors["cInBG3264"]);
|
||||||
|
// in Separator 6 (AMR KR-M4003)
|
||||||
|
#fbSensorInput(stInSensorHW := "BG3300",
|
||||||
|
nInSensorNo := "cInBG3300",
|
||||||
|
stInOutSensor := "DB_Inputs".Sensors["cInBG3300"]);
|
||||||
|
// Stausensor 6 (AMR ILS-KR M4003)
|
||||||
|
#fbSensorInput(stInSensorHW := "BG3301",
|
||||||
|
nInSensorNo := "cInBG3301",
|
||||||
|
stInOutSensor := "DB_Inputs".Sensors["cInBG3301"]);
|
||||||
|
// Stausensor (AMR KR-M4003)
|
||||||
|
#fbSensorInput(stInSensorHW := "BG3303",
|
||||||
|
nInSensorNo := "cInBG3303",
|
||||||
|
stInOutSensor := "DB_Inputs".Sensors["cInBG3303"]);
|
||||||
|
// in Separator vor MPS 3 (AMR KR-M4003)
|
||||||
|
#fbSensorInput(stInSensorHW := "BG3304",
|
||||||
|
nInSensorNo := "cInBG3304",
|
||||||
|
stInOutSensor := "DB_Inputs".Sensors["cInBG3304"]);
|
||||||
|
// Stausensor (AMR ILS-CV M4004)
|
||||||
|
#fbSensorInput(stInSensorHW := "BG3311",
|
||||||
|
nInSensorNo := "cInBG3311",
|
||||||
|
stInOutSensor := "DB_Inputs".Sensors["cInBG3311"]);
|
||||||
|
// Abfrage Mitnehmerfinger in Position (AMR ILS-CV M4004)
|
||||||
|
#fbSensorInput(stInSensorHW := "BG3312",
|
||||||
|
nInSensorNo := "cInBG3312",
|
||||||
|
stInOutSensor := "DB_Inputs".Sensors["cInBG3312"]);
|
||||||
|
// Sensor Förderer voll (AMR ILS-CV M4004) MPS 3
|
||||||
|
#fbSensorInput(stInSensorHW := "BG3313",
|
||||||
|
nInSensorNo := "cInBG3313",
|
||||||
|
stInOutSensor := "DB_Inputs".Sensors["cInBG3313"]);
|
||||||
|
// MT in Entladeposition MPS 3 (AMR ILS-CV M4005)
|
||||||
|
#fbSensorInput(stInSensorHW := "BG3314",
|
||||||
|
nInSensorNo := "cInBG3314",
|
||||||
|
stInOutSensor := "DB_Inputs".Sensors["cInBG3314"]);
|
||||||
|
// Abfrage Mitnehmerfinger in Position (AMR ILS-CV M4005) MPS 3
|
||||||
|
#fbSensorInput(stInSensorHW := "BG3315",
|
||||||
|
nInSensorNo := "cInBG3315",
|
||||||
|
stInOutSensor := "DB_Inputs".Sensors["cInBG3315"]);
|
||||||
|
// MT in Position MPS 3 (AMR ILS-CV M4004)
|
||||||
|
#fbSensorInput(stInSensorHW := "BG3316",
|
||||||
|
nInSensorNo := "cInBG3316",
|
||||||
|
stInOutSensor := "DB_Inputs".Sensors["cInBG3316"]);
|
||||||
|
// Sensor Förderer voll (AMR ILS-CV M4005)
|
||||||
|
#fbSensorInput(stInSensorHW := "BG3317",
|
||||||
|
nInSensorNo := "cInBG3317",
|
||||||
|
stInOutSensor := "DB_Inputs".Sensors["cInBG3317"]);
|
||||||
|
// Stausensor (AMR ILS-CV M4005)
|
||||||
|
#fbSensorInput(stInSensorHW := "BG3320",
|
||||||
|
nInSensorNo := "cInBG3320",
|
||||||
|
stInOutSensor := "DB_Inputs".Sensors["cInBG3320"]);
|
||||||
|
// in Separator Ausfahrt MPS 3 (AMR ILS-CV M4005)
|
||||||
|
#fbSensorInput(stInSensorHW := "BG3321",
|
||||||
|
nInSensorNo := "cInBG3321",
|
||||||
|
stInOutSensor := "DB_Inputs".Sensors["cInBG3321"]);
|
||||||
|
// Stausensor Ausfahrt MPS 03 (AMR ILS-KR M4003)
|
||||||
|
#fbSensorInput(stInSensorHW := "BG3322",
|
||||||
|
nInSensorNo := "cInBG3322",
|
||||||
|
stInOutSensor := "DB_Inputs".Sensors["cInBG3322"]);
|
||||||
|
// MT in Position MPS 3 (AMR ILS-CV M4005)
|
||||||
|
#fbSensorInput(stInSensorHW := "BG3324",
|
||||||
|
nInSensorNo := "cInBG3324",
|
||||||
|
stInOutSensor := "DB_Inputs".Sensors["cInBG3324"]);
|
||||||
|
// MT ist beladen MPS 3 (AMR ILS-CV M4005)
|
||||||
|
#fbSensorInput(stInSensorHW := "BG3325",
|
||||||
|
nInSensorNo := "cInBG3325",
|
||||||
|
stInOutSensor := "DB_Inputs".Sensors["cInBG3325"]);
|
||||||
|
// in Separator (AMR ILS-CV M4005)
|
||||||
|
#fbSensorInput(stInSensorHW := "BG3326",
|
||||||
|
nInSensorNo := "cInBG3326",
|
||||||
|
stInOutSensor := "DB_Inputs".Sensors["cInBG3326"]);
|
||||||
|
// Stausensor (AMR ILS-CV M4004)
|
||||||
|
#fbSensorInput(stInSensorHW := "BG3327",
|
||||||
|
nInSensorNo := "cInBG3327",
|
||||||
|
stInOutSensor := "DB_Inputs".Sensors["cInBG3327"]);
|
||||||
|
// in Separator (AMR ILS-KR M4003)
|
||||||
|
#fbSensorInput(stInSensorHW := "BG3360",
|
||||||
|
nInSensorNo := "cInBG3360",
|
||||||
|
stInOutSensor := "DB_Inputs".Sensors["cInBG3360"]);
|
||||||
|
// MT ist beladen (AMR KR-M4003)
|
||||||
|
#fbSensorInput(stInSensorHW := "BG3361",
|
||||||
|
nInSensorNo := "cInBG3361",
|
||||||
|
stInOutSensor := "DB_Inputs".Sensors["cInBG3361"]);
|
||||||
|
// Stausensor 5 (AMR ILS-KR M4003)
|
||||||
|
#fbSensorInput(stInSensorHW := "BG3362",
|
||||||
|
nInSensorNo := "cInBG3362",
|
||||||
|
stInOutSensor := "DB_Inputs".Sensors["cInBG3362"]);
|
||||||
|
// in Separator 5 (AMR ILS-KR M4003)
|
||||||
|
#fbSensorInput(stInSensorHW := "BG3363",
|
||||||
|
nInSensorNo := "cInBG3363",
|
||||||
|
stInOutSensor := "DB_Inputs".Sensors["cInBG3363"]);
|
||||||
|
// Stausensor 4 (AMR ILS-KR M4003)
|
||||||
|
#fbSensorInput(stInSensorHW := "BG3367",
|
||||||
|
nInSensorNo := "cInBG3367",
|
||||||
|
stInOutSensor := "DB_Inputs".Sensors["cInBG3367"]);
|
||||||
|
// in Separator (AMR ILS-CV M4006)
|
||||||
|
#fbSensorInput(stInSensorHW := "BG3370",
|
||||||
|
nInSensorNo := "cInBG3370",
|
||||||
|
stInOutSensor := "DB_Inputs".Sensors["cInBG3370"]);
|
||||||
|
// Stausensor 3 (AMR ILS-CV M4006)
|
||||||
|
#fbSensorInput(stInSensorHW := "BG3371",
|
||||||
|
nInSensorNo := "cInBG3371",
|
||||||
|
stInOutSensor := "DB_Inputs".Sensors["cInBG3371"]);
|
||||||
|
// Abfrage Mitnehmerfinger in Position (AMR ILS-CV M4006)
|
||||||
|
#fbSensorInput(stInSensorHW := "BG3372",
|
||||||
|
nInSensorNo := "cInBG3372",
|
||||||
|
stInOutSensor := "DB_Inputs".Sensors["cInBG3372"]);
|
||||||
|
// Sensor Förderer voll (AMR ILS-CV M4006)
|
||||||
|
#fbSensorInput(stInSensorHW := "BG3373",
|
||||||
|
nInSensorNo := "cInBG3373",
|
||||||
|
stInOutSensor := "DB_Inputs".Sensors["cInBG3373"]);
|
||||||
|
// MT IN Entladeposition MPS- (AMR ILS-CV M4007)
|
||||||
|
#fbSensorInput(stInSensorHW := "BG3374",
|
||||||
|
nInSensorNo := "cInBG3374",
|
||||||
|
stInOutSensor := "DB_Inputs".Sensors["cInBG3374"]);
|
||||||
|
// Abfrage Mitnehmerfinger in Position (AMR ILS-CV M4007) MPS 2
|
||||||
|
#fbSensorInput(stInSensorHW := "BG3375",
|
||||||
|
nInSensorNo := "cInBG3375",
|
||||||
|
stInOutSensor := "DB_Inputs".Sensors["cInBG3375"]);
|
||||||
|
// MT in Position MPS 2 (AMR ILS-CV M4006)
|
||||||
|
#fbSensorInput(stInSensorHW := "BG3376",
|
||||||
|
nInSensorNo := "cInBG3376",
|
||||||
|
stInOutSensor := "DB_Inputs".Sensors["cInBG3376"]);
|
||||||
|
// Sensor Förderer voll (AMR ILS-CV M4007)
|
||||||
|
#fbSensorInput(stInSensorHW := "BG3377",
|
||||||
|
nInSensorNo := "cInBG3377",
|
||||||
|
stInOutSensor := "DB_Inputs".Sensors["cInBG3377"]);
|
||||||
|
// Stausensor (AMR ILS-CV M4007)
|
||||||
|
#fbSensorInput(stInSensorHW := "BG3380",
|
||||||
|
nInSensorNo := "cInBG3380",
|
||||||
|
stInOutSensor := "DB_Inputs".Sensors["cInBG3380"]);
|
||||||
|
// in Separator Ausfahrt MPS 2 (AMR ILS-CV M4007)
|
||||||
|
#fbSensorInput(stInSensorHW := "BG3381",
|
||||||
|
nInSensorNo := "cInBG3381",
|
||||||
|
stInOutSensor := "DB_Inputs".Sensors["cInBG3381"]);
|
||||||
|
// Stausensor Ausfahrt MPS 02 (AMR ILS-KR M04003)
|
||||||
|
#fbSensorInput(stInSensorHW := "BG3382",
|
||||||
|
nInSensorNo := "cInBG3382",
|
||||||
|
stInOutSensor := "DB_Inputs".Sensors["cInBG3382"]);
|
||||||
|
// in Separator (AMR ILS-KR M4003)
|
||||||
|
#fbSensorInput(stInSensorHW := "BG3383",
|
||||||
|
nInSensorNo := "cInBG3383",
|
||||||
|
stInOutSensor := "DB_Inputs".Sensors["cInBG3383"]);
|
||||||
|
// MT in Position MPS 2 (AMR ILS-CV M4007)
|
||||||
|
#fbSensorInput(stInSensorHW := "BG3384",
|
||||||
|
nInSensorNo := "cInBG3384",
|
||||||
|
stInOutSensor := "DB_Inputs".Sensors["cInBG3384"]);
|
||||||
|
// MT ist beladen MPS 2 (AMR ILS-CV M4007)
|
||||||
|
#fbSensorInput(stInSensorHW := "BG3385",
|
||||||
|
nInSensorNo := "cInBG3385",
|
||||||
|
stInOutSensor := "DB_Inputs".Sensors["cInBG3385"]);
|
||||||
|
// in Separator (AMR ILS-CV M4002)
|
||||||
|
#fbSensorInput(stInSensorHW := "BG3386",
|
||||||
|
nInSensorNo := "cInBG3386",
|
||||||
|
stInOutSensor := "DB_Inputs".Sensors["cInBG3386"]);
|
||||||
|
// Stausensor 3 (AMR ILS-CV M4002)
|
||||||
|
#fbSensorInput(stInSensorHW := "BG3387",
|
||||||
|
nInSensorNo := "cInBG3387",
|
||||||
|
stInOutSensor := "DB_Inputs".Sensors["cInBG3387"]);
|
||||||
|
// Sensor Förderer voll (AMR ILS-CV M4002)
|
||||||
|
#fbSensorInput(stInSensorHW := "BG3390",
|
||||||
|
nInSensorNo := "cInBG3390",
|
||||||
|
stInOutSensor := "DB_Inputs".Sensors["cInBG3390"]);
|
||||||
|
// in Separator (AMR ILS-CV M4010)
|
||||||
|
#fbSensorInput(stInSensorHW := "BG3391",
|
||||||
|
nInSensorNo := "cInBG3391",
|
||||||
|
stInOutSensor := "DB_Inputs".Sensors["cInBG3391"]);
|
||||||
|
// MT in Position (ILS-CV M4010)
|
||||||
|
#fbSensorInput(stInSensorHW := "BG3392",
|
||||||
|
nInSensorNo := "cInBG3392",
|
||||||
|
stInOutSensor := "DB_Inputs".Sensors["cInBG3392"]);
|
||||||
|
// Abfrage Mitnehmerfinger in Position (AMR ILS-CV M4010)
|
||||||
|
#fbSensorInput(stInSensorHW := "BG3393",
|
||||||
|
nInSensorNo := "cInBG3393",
|
||||||
|
stInOutSensor := "DB_Inputs".Sensors["cInBG3393"]);
|
||||||
|
// Stausensor (AMR ILS-CV M4006)
|
||||||
|
#fbSensorInput(stInSensorHW := "BG3396",
|
||||||
|
nInSensorNo := "cInBG3396",
|
||||||
|
stInOutSensor := "DB_Inputs".Sensors["cInBG3396"]);
|
||||||
|
// in Separator (AMR ILS-CV M4007)
|
||||||
|
#fbSensorInput(stInSensorHW := "BG3397",
|
||||||
|
nInSensorNo := "cInBG3397",
|
||||||
|
stInOutSensor := "DB_Inputs".Sensors["cInBG3397"]);
|
||||||
|
// in Separator (AMR ILS-KR M4003)
|
||||||
|
#fbSensorInput(stInSensorHW := "BG3400",
|
||||||
|
nInSensorNo := "cInBG3400",
|
||||||
|
stInOutSensor := "DB_Inputs".Sensors["cInBG3400"]);
|
||||||
|
// in Separator (AMR ILS-CV M4002)
|
||||||
|
#fbSensorInput(stInSensorHW := "BG3420",
|
||||||
|
nInSensorNo := "cInBG3420",
|
||||||
|
stInOutSensor := "DB_Inputs".Sensors["cInBG3420"]);
|
||||||
|
// Abfrage Mitnehmerfinger in Position (AMR ILS-CV M4002)
|
||||||
|
#fbSensorInput(stInSensorHW := "BG3421",
|
||||||
|
nInSensorNo := "cInBG3421",
|
||||||
|
stInOutSensor := "DB_Inputs".Sensors["cInBG3421"]);
|
||||||
|
// Stausensor nach BST 4 (AMR ILS-CV M4010)
|
||||||
|
#fbSensorInput(stInSensorHW := "BG3423",
|
||||||
|
nInSensorNo := "cInBG3423",
|
||||||
|
stInOutSensor := "DB_Inputs".Sensors["cInBG3423"]);
|
||||||
|
// Sensor Förderer voll (ILS-CV M4010)
|
||||||
|
#fbSensorInput(stInSensorHW := "BG3425",
|
||||||
|
nInSensorNo := "cInBG3425",
|
||||||
|
stInOutSensor := "DB_Inputs".Sensors["cInBG3425"]);
|
||||||
|
// MT in Position (ILS-CV M4002)
|
||||||
|
#fbSensorInput(stInSensorHW := "BG3426",
|
||||||
|
nInSensorNo := "cInBG3426",
|
||||||
|
stInOutSensor := "DB_Inputs".Sensors["cInBG3426"]);
|
||||||
|
// in Separator vor MPS 1 (AMR KR-M4003)
|
||||||
|
#fbSensorInput(stInSensorHW := "BG3430",
|
||||||
|
nInSensorNo := "cInBG3430",
|
||||||
|
stInOutSensor := "DB_Inputs".Sensors["cInBG3430"]);
|
||||||
|
// Stausensor (AMR ILS-CV M4009)
|
||||||
|
#fbSensorInput(stInSensorHW := "BG3431",
|
||||||
|
nInSensorNo := "cInBG3431",
|
||||||
|
stInOutSensor := "DB_Inputs".Sensors["cInBG3431"]);
|
||||||
|
// Rad dreht (AMR KR-M4003)
|
||||||
|
#fbSensorInput(stInSensorHW := "BG3432",
|
||||||
|
nInSensorNo := "cInBG3432",
|
||||||
|
stInOutSensor := "DB_Inputs".Sensors["cInBG3432"]);
|
||||||
|
// Stausensor (AMR ILS-KR M4003)
|
||||||
|
#fbSensorInput(stInSensorHW := "BG3433",
|
||||||
|
nInSensorNo := "cInBG3433",
|
||||||
|
stInOutSensor := "DB_Inputs".Sensors["cInBG3433"]);
|
||||||
|
// in Separator (AMR KR-M4003)
|
||||||
|
#fbSensorInput(stInSensorHW := "BG3435",
|
||||||
|
nInSensorNo := "cInBG3435",
|
||||||
|
stInOutSensor := "DB_Inputs".Sensors["cInBG3435"]);
|
||||||
|
// in Separator (AMR ILS-CV M4009)
|
||||||
|
#fbSensorInput(stInSensorHW := "BG3436",
|
||||||
|
nInSensorNo := "cInBG3436",
|
||||||
|
stInOutSensor := "DB_Inputs".Sensors["cInBG3436"]);
|
||||||
|
// Stausensor (AMR ILS-CV M4008)
|
||||||
|
#fbSensorInput(stInSensorHW := "BG3437",
|
||||||
|
nInSensorNo := "cInBG3437",
|
||||||
|
stInOutSensor := "DB_Inputs".Sensors["cInBG3437"]);
|
||||||
|
// in Separator (AMR ILS-CV M4008)
|
||||||
|
#fbSensorInput(stInSensorHW := "BG3440",
|
||||||
|
nInSensorNo := "cInBG3440",
|
||||||
|
stInOutSensor := "DB_Inputs".Sensors["cInBG3440"]);
|
||||||
|
// Stausensor 3 (AMR ILS-CV M4008)
|
||||||
|
#fbSensorInput(stInSensorHW := "BG3441",
|
||||||
|
nInSensorNo := "cInBG3441",
|
||||||
|
stInOutSensor := "DB_Inputs".Sensors["cInBG3441"]);
|
||||||
|
// Abfrage Mitnehmerfinger in Position (AMR ILS-CV M4008)
|
||||||
|
#fbSensorInput(stInSensorHW := "BG3442",
|
||||||
|
nInSensorNo := "cInBG3442",
|
||||||
|
stInOutSensor := "DB_Inputs".Sensors["cInBG3442"]);
|
||||||
|
// Sensor Förderer voll (AMR ILS-CV M4008)
|
||||||
|
#fbSensorInput(stInSensorHW := "BG3443",
|
||||||
|
nInSensorNo := "cInBG3443",
|
||||||
|
stInOutSensor := "DB_Inputs".Sensors["cInBG3443"]);
|
||||||
|
// MT IN Entladeposition MPS- (AMR ILS-CV M4009)
|
||||||
|
#fbSensorInput(stInSensorHW := "BG3444",
|
||||||
|
nInSensorNo := "cInBG3444",
|
||||||
|
stInOutSensor := "DB_Inputs".Sensors["cInBG3444"]);
|
||||||
|
// Abfrage Mitnehmerfinger in Position (AMR ILS-CV M4009)
|
||||||
|
#fbSensorInput(stInSensorHW := "BG3445",
|
||||||
|
nInSensorNo := "cInBG3445",
|
||||||
|
stInOutSensor := "DB_Inputs".Sensors["cInBG3445"]);
|
||||||
|
// MT in Position MPS 1 (AMR ILS-CV M4008)
|
||||||
|
#fbSensorInput(stInSensorHW := "BG3446",
|
||||||
|
nInSensorNo := "cInBG3446",
|
||||||
|
stInOutSensor := "DB_Inputs".Sensors["cInBG3446"]);
|
||||||
|
// Sensor Förderer voll (AMR ILS-CV M4009)
|
||||||
|
#fbSensorInput(stInSensorHW := "BG3447",
|
||||||
|
nInSensorNo := "cInBG3447",
|
||||||
|
stInOutSensor := "DB_Inputs".Sensors["cInBG3447"]);
|
||||||
|
// Stausensor Ausfahrt MPS 01 (AMR ILS-KR M4003)
|
||||||
|
#fbSensorInput(stInSensorHW := "BG3450",
|
||||||
|
nInSensorNo := "cInBG3450",
|
||||||
|
stInOutSensor := "DB_Inputs".Sensors["cInBG3450"]);
|
||||||
|
// in Separator Ausfahrt MPS 1 (AMR ILS-CV M4009)
|
||||||
|
#fbSensorInput(stInSensorHW := "BG3451",
|
||||||
|
nInSensorNo := "cInBG3451",
|
||||||
|
stInOutSensor := "DB_Inputs".Sensors["cInBG3451"]);
|
||||||
|
// MT in Position MPS 1 (AMR ILS-CV M4009)
|
||||||
|
#fbSensorInput(stInSensorHW := "BG3454",
|
||||||
|
nInSensorNo := "cInBG3454",
|
||||||
|
stInOutSensor := "DB_Inputs".Sensors["cInBG3454"]);
|
||||||
|
// MT ist beladen MPS 1 (AMR ILS-CV M4009)
|
||||||
|
#fbSensorInput(stInSensorHW := "BG3455",
|
||||||
|
nInSensorNo := "cInBG3455",
|
||||||
|
stInOutSensor := "DB_Inputs".Sensors["cInBG3455"]);
|
||||||
|
END_FUNCTION_BLOCK
|
||||||
@@ -0,0 +1,654 @@
|
|||||||
|
FUNCTION_BLOCK "FB_CallSensors_skel_UH05"
|
||||||
|
{ S7_Optimized_Access := 'TRUE' }
|
||||||
|
VERSION : 0.1
|
||||||
|
// AUTOMATISCH GENERIERT — create_skel.py (161 Sensoren)
|
||||||
|
VAR
|
||||||
|
fbSensorInput : "FB_SensorInput";
|
||||||
|
END_VAR
|
||||||
|
|
||||||
|
BEGIN
|
||||||
|
// DT Anlage Aus
|
||||||
|
#fbSensorInput(stInSensorHW := "SF0000",
|
||||||
|
nInSensorNo := "cInSF0000",
|
||||||
|
stInOutSensor := "DB_Inputs".Sensors["cInSF0000"]);
|
||||||
|
// LDT Anlage Ein
|
||||||
|
#fbSensorInput(stInSensorHW := "SF0001",
|
||||||
|
nInSensorNo := "cInSF0001",
|
||||||
|
stInOutSensor := "DB_Inputs".Sensors["cInSF0001"]);
|
||||||
|
// LDT Reset
|
||||||
|
#fbSensorInput(stInSensorHW := "SF0002",
|
||||||
|
nInSensorNo := "cInSF0002",
|
||||||
|
stInOutSensor := "DB_Inputs".Sensors["cInSF0002"]);
|
||||||
|
// DT Lampentest
|
||||||
|
#fbSensorInput(stInSensorHW := "SF0003",
|
||||||
|
nInSensorNo := "cInSF0003",
|
||||||
|
stInOutSensor := "DB_Inputs".Sensors["cInSF0003"]);
|
||||||
|
// Druckschalter Druckluft OK
|
||||||
|
#fbSensorInput(stInSensorHW := "BP0004",
|
||||||
|
nInSensorNo := "cInBP0004",
|
||||||
|
stInOutSensor := "DB_Inputs".Sensors["cInBP0004"]);
|
||||||
|
// Phasenausfall 400V
|
||||||
|
#fbSensorInput(stInSensorHW := "DI0005",
|
||||||
|
nInSensorNo := "cInDI0005",
|
||||||
|
stInOutSensor := "DB_Inputs".Sensors["cInDI0005"]);
|
||||||
|
// Vorsicherung 400V UC Reserve
|
||||||
|
#fbSensorInput(stInSensorHW := "DI0006",
|
||||||
|
nInSensorNo := "cInDI0006",
|
||||||
|
stInOutSensor := "DB_Inputs".Sensors["cInDI0006"]);
|
||||||
|
// Feedback Koppelrelais E-Stop-IF UH07 (QA0612/QA0613)
|
||||||
|
#fbSensorInput(stInSensorHW := "DI0012",
|
||||||
|
nInSensorNo := "cInDI0012",
|
||||||
|
stInOutSensor := "DB_Inputs".Sensors["cInDI0012"]);
|
||||||
|
// Feedback Hauptschütze aktiv (QA0060 - QA0070)
|
||||||
|
#fbSensorInput(stInSensorHW := "DI0013",
|
||||||
|
nInSensorNo := "cInDI0013",
|
||||||
|
stInOutSensor := "DB_Inputs".Sensors["cInDI0013"]);
|
||||||
|
// Feedback Koppelrelais E-Stop-IF (QA0660/QA0661)
|
||||||
|
#fbSensorInput(stInSensorHW := "DI0014",
|
||||||
|
nInSensorNo := "cInDI0014",
|
||||||
|
stInOutSensor := "DB_Inputs".Sensors["cInDI0014"]);
|
||||||
|
// Feedback Koppelrelais E-Stop-IF
|
||||||
|
#fbSensorInput(stInSensorHW := "DI0015",
|
||||||
|
nInSensorNo := "cInDI0015",
|
||||||
|
stInOutSensor := "DB_Inputs".Sensors["cInDI0015"]);
|
||||||
|
// Sicherungsautomatenfall
|
||||||
|
#fbSensorInput(stInSensorHW := "DI0016",
|
||||||
|
nInSensorNo := "cInDI0016",
|
||||||
|
stInOutSensor := "DB_Inputs".Sensors["cInDI0016"]);
|
||||||
|
// Vorsicherung 24V OK (FC021)
|
||||||
|
#fbSensorInput(stInSensorHW := "DI0021",
|
||||||
|
nInSensorNo := "cInDI0021",
|
||||||
|
stInOutSensor := "DB_Inputs".Sensors["cInDI0021"]);
|
||||||
|
// Vorsicherung 24V OK (FC022)
|
||||||
|
#fbSensorInput(stInSensorHW := "DI0022",
|
||||||
|
nInSensorNo := "cInDI0022",
|
||||||
|
stInOutSensor := "DB_Inputs".Sensors["cInDI0022"]);
|
||||||
|
// Vorsicherung 24V OK (FC023)
|
||||||
|
#fbSensorInput(stInSensorHW := "DI0023",
|
||||||
|
nInSensorNo := "cInDI0023",
|
||||||
|
stInOutSensor := "DB_Inputs".Sensors["cInDI0023"]);
|
||||||
|
// IF BMZ "fire alarm"
|
||||||
|
#fbSensorInput(stInSensorHW := "DI0034",
|
||||||
|
nInSensorNo := "cInDI0034",
|
||||||
|
stInOutSensor := "DB_Inputs".Sensors["cInDI0034"]);
|
||||||
|
// IF BST "No fire alarm"
|
||||||
|
#fbSensorInput(stInSensorHW := "DI0035",
|
||||||
|
nInSensorNo := "cInDI0035",
|
||||||
|
stInOutSensor := "DB_Inputs".Sensors["cInDI0035"]);
|
||||||
|
// IF BST "Non fault"
|
||||||
|
#fbSensorInput(stInSensorHW := "DI0036",
|
||||||
|
nInSensorNo := "cInDI0036",
|
||||||
|
stInOutSensor := "DB_Inputs".Sensors["cInDI0036"]);
|
||||||
|
// IF BST "FPC opened"
|
||||||
|
#fbSensorInput(stInSensorHW := "DI0037",
|
||||||
|
nInSensorNo := "cInDI0037",
|
||||||
|
stInOutSensor := "DB_Inputs".Sensors["cInDI0037"]);
|
||||||
|
// Reset UZ0501
|
||||||
|
#fbSensorInput(stInSensorHW := "SF0041",
|
||||||
|
nInSensorNo := "cInSF0041",
|
||||||
|
stInOutSensor := "DB_Inputs".Sensors["cInSF0041"]);
|
||||||
|
// Freigabe UZ0502
|
||||||
|
#fbSensorInput(stInSensorHW := "SF0042",
|
||||||
|
nInSensorNo := "cInSF0042",
|
||||||
|
stInOutSensor := "DB_Inputs".Sensors["cInSF0042"]);
|
||||||
|
// Reset UZ0502
|
||||||
|
#fbSensorInput(stInSensorHW := "SF0043",
|
||||||
|
nInSensorNo := "cInSF0043",
|
||||||
|
stInOutSensor := "DB_Inputs".Sensors["cInSF0043"]);
|
||||||
|
// Freigabe UZ0504
|
||||||
|
#fbSensorInput(stInSensorHW := "SF0046",
|
||||||
|
nInSensorNo := "cInSF0046",
|
||||||
|
stInOutSensor := "DB_Inputs".Sensors["cInSF0046"]);
|
||||||
|
// Reset UZ0504
|
||||||
|
#fbSensorInput(stInSensorHW := "SF0047",
|
||||||
|
nInSensorNo := "cInSF0047",
|
||||||
|
stInOutSensor := "DB_Inputs".Sensors["cInSF0047"]);
|
||||||
|
// Freigeben UZ0506
|
||||||
|
#fbSensorInput(stInSensorHW := "SF0052",
|
||||||
|
nInSensorNo := "cInSF0052",
|
||||||
|
stInOutSensor := "DB_Inputs".Sensors["cInSF0052"]);
|
||||||
|
// Reset UZ0506
|
||||||
|
#fbSensorInput(stInSensorHW := "SF0053",
|
||||||
|
nInSensorNo := "cInSF0053",
|
||||||
|
stInOutSensor := "DB_Inputs".Sensors["cInSF0053"]);
|
||||||
|
// Reset UZ0507
|
||||||
|
#fbSensorInput(stInSensorHW := "SF0055",
|
||||||
|
nInSensorNo := "cInSF0055",
|
||||||
|
stInOutSensor := "DB_Inputs".Sensors["cInSF0055"]);
|
||||||
|
// Freigabe UZ0501
|
||||||
|
#fbSensorInput(stInSensorHW := "SF0056",
|
||||||
|
nInSensorNo := "cInSF0056",
|
||||||
|
stInOutSensor := "DB_Inputs".Sensors["cInSF0056"]);
|
||||||
|
// MSS ausgelöst FC0060
|
||||||
|
#fbSensorInput(stInSensorHW := "FC0060",
|
||||||
|
nInSensorNo := "cInFC0060",
|
||||||
|
stInOutSensor := "DB_Inputs".Sensors["cInFC0060"]);
|
||||||
|
// MSS ausgelöst FC0061
|
||||||
|
#fbSensorInput(stInSensorHW := "FC0061",
|
||||||
|
nInSensorNo := "cInFC0061",
|
||||||
|
stInOutSensor := "DB_Inputs".Sensors["cInFC0061"]);
|
||||||
|
// MSS ausgelöst FC0062
|
||||||
|
#fbSensorInput(stInSensorHW := "FC0062",
|
||||||
|
nInSensorNo := "cInFC0062",
|
||||||
|
stInOutSensor := "DB_Inputs".Sensors["cInFC0062"]);
|
||||||
|
// MSS ausgelöst FC0063
|
||||||
|
#fbSensorInput(stInSensorHW := "FC0063",
|
||||||
|
nInSensorNo := "cInFC0063",
|
||||||
|
stInOutSensor := "DB_Inputs".Sensors["cInFC0063"]);
|
||||||
|
// MSS ausgelöst FC0064
|
||||||
|
#fbSensorInput(stInSensorHW := "FC0064",
|
||||||
|
nInSensorNo := "cInFC0064",
|
||||||
|
stInOutSensor := "DB_Inputs".Sensors["cInFC0064"]);
|
||||||
|
// MSS ausgelöst FC0065
|
||||||
|
#fbSensorInput(stInSensorHW := "FC0065",
|
||||||
|
nInSensorNo := "cInFC0065",
|
||||||
|
stInOutSensor := "DB_Inputs".Sensors["cInFC0065"]);
|
||||||
|
// MSS ausgelöst FC0066
|
||||||
|
#fbSensorInput(stInSensorHW := "FC0066",
|
||||||
|
nInSensorNo := "cInFC0066",
|
||||||
|
stInOutSensor := "DB_Inputs".Sensors["cInFC0066"]);
|
||||||
|
// MSS ausgelöst FC0067
|
||||||
|
#fbSensorInput(stInSensorHW := "FC0067",
|
||||||
|
nInSensorNo := "cInFC0067",
|
||||||
|
stInOutSensor := "DB_Inputs".Sensors["cInFC0067"]);
|
||||||
|
// MSS ausgelöst FC0070
|
||||||
|
#fbSensorInput(stInSensorHW := "FC0070",
|
||||||
|
nInSensorNo := "cInFC0070",
|
||||||
|
stInOutSensor := "DB_Inputs".Sensors["cInFC0070"]);
|
||||||
|
// MSS ausgelöst FC0071
|
||||||
|
#fbSensorInput(stInSensorHW := "FC0071",
|
||||||
|
nInSensorNo := "cInFC0071",
|
||||||
|
stInOutSensor := "DB_Inputs".Sensors["cInFC0071"]);
|
||||||
|
// MSS ausgelöst FC0072
|
||||||
|
#fbSensorInput(stInSensorHW := "FC0072",
|
||||||
|
nInSensorNo := "cInFC0072",
|
||||||
|
stInOutSensor := "DB_Inputs".Sensors["cInFC0072"]);
|
||||||
|
// Not Halt Kanal 1 UH05
|
||||||
|
#fbSensorInput(stInSensorHW := "SF0400",
|
||||||
|
nInSensorNo := "cInSF0400",
|
||||||
|
stInOutSensor := "DB_Inputs".Sensors["cInSF0400"]);
|
||||||
|
// Not Halt Kanal 1 UZ0501
|
||||||
|
#fbSensorInput(stInSensorHW := "SF0401",
|
||||||
|
nInSensorNo := "cInSF0401",
|
||||||
|
stInOutSensor := "DB_Inputs".Sensors["cInSF0401"]);
|
||||||
|
// Not Halt Kanal 1 UZ0502
|
||||||
|
#fbSensorInput(stInSensorHW := "SF0402",
|
||||||
|
nInSensorNo := "cInSF0402",
|
||||||
|
stInOutSensor := "DB_Inputs".Sensors["cInSF0402"]);
|
||||||
|
// Not Halt Kanal 2 UH05
|
||||||
|
#fbSensorInput(stInSensorHW := "SF0404",
|
||||||
|
nInSensorNo := "cInSF0404",
|
||||||
|
stInOutSensor := "DB_Inputs".Sensors["cInSF0404"]);
|
||||||
|
// Not Halt Kanal 2 UZ0501
|
||||||
|
#fbSensorInput(stInSensorHW := "SF0405",
|
||||||
|
nInSensorNo := "cInSF0405",
|
||||||
|
stInOutSensor := "DB_Inputs".Sensors["cInSF0405"]);
|
||||||
|
// Not Halt Kanal 2 UZ0502
|
||||||
|
#fbSensorInput(stInSensorHW := "SF0406",
|
||||||
|
nInSensorNo := "cInSF0406",
|
||||||
|
stInOutSensor := "DB_Inputs".Sensors["cInSF0406"]);
|
||||||
|
// Not Halt Kanal 1 UZ0504
|
||||||
|
#fbSensorInput(stInSensorHW := "SF0470",
|
||||||
|
nInSensorNo := "cInSF0470",
|
||||||
|
stInOutSensor := "DB_Inputs".Sensors["cInSF0470"]);
|
||||||
|
// Not Halt Kanal 1 UZ0506
|
||||||
|
#fbSensorInput(stInSensorHW := "SF0472",
|
||||||
|
nInSensorNo := "cInSF0472",
|
||||||
|
stInOutSensor := "DB_Inputs".Sensors["cInSF0472"]);
|
||||||
|
// Not Halt Kanal 1 UZ0507
|
||||||
|
#fbSensorInput(stInSensorHW := "SF0473",
|
||||||
|
nInSensorNo := "cInSF0473",
|
||||||
|
stInOutSensor := "DB_Inputs".Sensors["cInSF0473"]);
|
||||||
|
// Not Halt Kanal 2 UZ0504
|
||||||
|
#fbSensorInput(stInSensorHW := "SF0474",
|
||||||
|
nInSensorNo := "cInSF0474",
|
||||||
|
stInOutSensor := "DB_Inputs".Sensors["cInSF0474"]);
|
||||||
|
// Not Halt Kanal 2 UZ0506
|
||||||
|
#fbSensorInput(stInSensorHW := "SF0476",
|
||||||
|
nInSensorNo := "cInSF0476",
|
||||||
|
stInOutSensor := "DB_Inputs".Sensors["cInSF0476"]);
|
||||||
|
// Not Halt Kanal 2 UZ0507
|
||||||
|
#fbSensorInput(stInSensorHW := "SF0477",
|
||||||
|
nInSensorNo := "cInSF0477",
|
||||||
|
stInOutSensor := "DB_Inputs".Sensors["cInSF0477"]);
|
||||||
|
// Not Halt Schnittstelle von UH02 CH1
|
||||||
|
#fbSensorInput(stInSensorHW := "SF0541",
|
||||||
|
nInSensorNo := "cInSF0541",
|
||||||
|
stInOutSensor := "DB_Inputs".Sensors["cInSF0541"]);
|
||||||
|
// Not Halt Schnittstelle von System Fortna C, CH1
|
||||||
|
#fbSensorInput(stInSensorHW := "SF0542",
|
||||||
|
nInSensorNo := "cInSF0542",
|
||||||
|
stInOutSensor := "DB_Inputs".Sensors["cInSF0542"]);
|
||||||
|
// Not Halt Schnittstelle von UH07 CH1
|
||||||
|
#fbSensorInput(stInSensorHW := "SF0543",
|
||||||
|
nInSensorNo := "cInSF0543",
|
||||||
|
stInOutSensor := "DB_Inputs".Sensors["cInSF0543"]);
|
||||||
|
// Not Halt Schnittstelle von UH02 CH2
|
||||||
|
#fbSensorInput(stInSensorHW := "SF0545",
|
||||||
|
nInSensorNo := "cInSF0545",
|
||||||
|
stInOutSensor := "DB_Inputs".Sensors["cInSF0545"]);
|
||||||
|
// Not Halt Schnittstelle von System Fortna C, CH2
|
||||||
|
#fbSensorInput(stInSensorHW := "SF0546",
|
||||||
|
nInSensorNo := "cInSF0546",
|
||||||
|
stInOutSensor := "DB_Inputs".Sensors["cInSF0546"]);
|
||||||
|
// Not Halt Schnittstelle von UH07 CH2
|
||||||
|
#fbSensorInput(stInSensorHW := "SF0547",
|
||||||
|
nInSensorNo := "cInSF0547",
|
||||||
|
stInOutSensor := "DB_Inputs".Sensors["cInSF0547"]);
|
||||||
|
// in Separator (ILS KR-M5002)
|
||||||
|
#fbSensorInput(stInSensorHW := "BG3240",
|
||||||
|
nInSensorNo := "cInBG3240",
|
||||||
|
stInOutSensor := "DB_Inputs".Sensors["cInBG3240"]);
|
||||||
|
// Stausensor (ILS KR-M5002)
|
||||||
|
#fbSensorInput(stInSensorHW := "BG3241",
|
||||||
|
nInSensorNo := "cInBG3241",
|
||||||
|
stInOutSensor := "DB_Inputs".Sensors["cInBG3241"]);
|
||||||
|
// in Separator (ILS KR-M5002)
|
||||||
|
#fbSensorInput(stInSensorHW := "BG3242",
|
||||||
|
nInSensorNo := "cInBG3242",
|
||||||
|
stInOutSensor := "DB_Inputs".Sensors["cInBG3242"]);
|
||||||
|
// Staumelder, Einfahrt (ILS-CV-M5003)
|
||||||
|
#fbSensorInput(stInSensorHW := "BG3243",
|
||||||
|
nInSensorNo := "cInBG3243",
|
||||||
|
stInOutSensor := "DB_Inputs".Sensors["cInBG3243"]);
|
||||||
|
// Staumelder, Einfahrt (ILS-CV M5003) WS1.1
|
||||||
|
#fbSensorInput(stInSensorHW := "BG3244",
|
||||||
|
nInSensorNo := "cInBG3244",
|
||||||
|
stInOutSensor := "DB_Inputs".Sensors["cInBG3244"]);
|
||||||
|
// in Separator 1 (ILS-CV M5003) WS1.1
|
||||||
|
#fbSensorInput(stInSensorHW := "BG3245",
|
||||||
|
nInSensorNo := "cInBG3245",
|
||||||
|
stInOutSensor := "DB_Inputs".Sensors["cInBG3245"]);
|
||||||
|
// Abfrage Mitnehmerfinger in Position (ILS-CV M5003) WS1.1
|
||||||
|
#fbSensorInput(stInSensorHW := "BG3246",
|
||||||
|
nInSensorNo := "cInBG3246",
|
||||||
|
stInOutSensor := "DB_Inputs".Sensors["cInBG3246"]);
|
||||||
|
// Sensor Förderer voll (ILS-CV M5003) WS1.1
|
||||||
|
#fbSensorInput(stInSensorHW := "BG3247",
|
||||||
|
nInSensorNo := "cInBG3247",
|
||||||
|
stInOutSensor := "DB_Inputs".Sensors["cInBG3247"]);
|
||||||
|
// Stausensor (ILS-CV M5003) WS1.1
|
||||||
|
#fbSensorInput(stInSensorHW := "BG3250",
|
||||||
|
nInSensorNo := "cInBG3250",
|
||||||
|
stInOutSensor := "DB_Inputs".Sensors["cInBG3250"]);
|
||||||
|
// in Separator 2 (ILS-CV M5004) WS1.1
|
||||||
|
#fbSensorInput(stInSensorHW := "BG3251",
|
||||||
|
nInSensorNo := "cInBG3251",
|
||||||
|
stInOutSensor := "DB_Inputs".Sensors["cInBG3251"]);
|
||||||
|
// Staumelder, Einfahrt (ILS-CV M5004) WS1.1
|
||||||
|
#fbSensorInput(stInSensorHW := "BG3252",
|
||||||
|
nInSensorNo := "cInBG3252",
|
||||||
|
stInOutSensor := "DB_Inputs".Sensors["cInBG3252"]);
|
||||||
|
// in Separator 3 (ILS-CV M5004) WS1.1
|
||||||
|
#fbSensorInput(stInSensorHW := "BG3253",
|
||||||
|
nInSensorNo := "cInBG3253",
|
||||||
|
stInOutSensor := "DB_Inputs".Sensors["cInBG3253"]);
|
||||||
|
// Abfrage Mitnehmerfinger in Position (ILS-CV M5004) WS1.1
|
||||||
|
#fbSensorInput(stInSensorHW := "BG3254",
|
||||||
|
nInSensorNo := "cInBG3254",
|
||||||
|
stInOutSensor := "DB_Inputs".Sensors["cInBG3254"]);
|
||||||
|
// MT in Position (ILS-CV M5004) WS1.1
|
||||||
|
#fbSensorInput(stInSensorHW := "BG3255",
|
||||||
|
nInSensorNo := "cInBG3255",
|
||||||
|
stInOutSensor := "DB_Inputs".Sensors["cInBG3255"]);
|
||||||
|
// Sensor Förderer voll (ILS-CV M5004) WS1.1
|
||||||
|
#fbSensorInput(stInSensorHW := "BG3256",
|
||||||
|
nInSensorNo := "cInBG3256",
|
||||||
|
stInOutSensor := "DB_Inputs".Sensors["cInBG3256"]);
|
||||||
|
// in Separator 4 (ILS-CV M5004) WS1.1
|
||||||
|
#fbSensorInput(stInSensorHW := "BG3257",
|
||||||
|
nInSensorNo := "cInBG3257",
|
||||||
|
stInOutSensor := "DB_Inputs".Sensors["cInBG3257"]);
|
||||||
|
// Staumelder, Einfahrt (ILS-KR-M5002)
|
||||||
|
#fbSensorInput(stInSensorHW := "BG3260",
|
||||||
|
nInSensorNo := "cInBG3260",
|
||||||
|
stInOutSensor := "DB_Inputs".Sensors["cInBG3260"]);
|
||||||
|
// Stausensor (ILS KR-M5002)
|
||||||
|
#fbSensorInput(stInSensorHW := "BG3261",
|
||||||
|
nInSensorNo := "cInBG3261",
|
||||||
|
stInOutSensor := "DB_Inputs".Sensors["cInBG3261"]);
|
||||||
|
// Stausensor 1 (ILS-CV M5004) WS1.1
|
||||||
|
#fbSensorInput(stInSensorHW := "BG3262",
|
||||||
|
nInSensorNo := "cInBG3262",
|
||||||
|
stInOutSensor := "DB_Inputs".Sensors["cInBG3262"]);
|
||||||
|
// Sensor Förderer voll (ILS CV-M5000)
|
||||||
|
#fbSensorInput(stInSensorHW := "BG3300",
|
||||||
|
nInSensorNo := "cInBG3300",
|
||||||
|
stInOutSensor := "DB_Inputs".Sensors["cInBG3300"]);
|
||||||
|
// in Separator (ILS CV-M5000)
|
||||||
|
#fbSensorInput(stInSensorHW := "BG3301",
|
||||||
|
nInSensorNo := "cInBG3301",
|
||||||
|
stInOutSensor := "DB_Inputs".Sensors["cInBG3301"]);
|
||||||
|
// Stausensor (ILS KR-M5002)
|
||||||
|
#fbSensorInput(stInSensorHW := "BG3302",
|
||||||
|
nInSensorNo := "cInBG3302",
|
||||||
|
stInOutSensor := "DB_Inputs".Sensors["cInBG3302"]);
|
||||||
|
// Sensor Förderer voll (ILS CV-M5001)
|
||||||
|
#fbSensorInput(stInSensorHW := "BG3303",
|
||||||
|
nInSensorNo := "cInBG3303",
|
||||||
|
stInOutSensor := "DB_Inputs".Sensors["cInBG3303"]);
|
||||||
|
// in Separator (ILS CV-M5001)
|
||||||
|
#fbSensorInput(stInSensorHW := "BG3304",
|
||||||
|
nInSensorNo := "cInBG3304",
|
||||||
|
stInOutSensor := "DB_Inputs".Sensors["cInBG3304"]);
|
||||||
|
// Stausensor (ILS CV-M5001)
|
||||||
|
#fbSensorInput(stInSensorHW := "BG3305",
|
||||||
|
nInSensorNo := "cInBG3305",
|
||||||
|
stInOutSensor := "DB_Inputs".Sensors["cInBG3305"]);
|
||||||
|
// in Separator (ILS KR-M5002)
|
||||||
|
#fbSensorInput(stInSensorHW := "BG3306",
|
||||||
|
nInSensorNo := "cInBG3306",
|
||||||
|
stInOutSensor := "DB_Inputs".Sensors["cInBG3306"]);
|
||||||
|
// in Separator (ILS CV-M5002)
|
||||||
|
#fbSensorInput(stInSensorHW := "BG3307",
|
||||||
|
nInSensorNo := "cInBG3307",
|
||||||
|
stInOutSensor := "DB_Inputs".Sensors["cInBG3307"]);
|
||||||
|
// Stausensor (ILS KR-M5000)
|
||||||
|
#fbSensorInput(stInSensorHW := "BG3310",
|
||||||
|
nInSensorNo := "cInBG3310",
|
||||||
|
stInOutSensor := "DB_Inputs".Sensors["cInBG3310"]);
|
||||||
|
// Stausensor 1 (ILS CV-M5000)
|
||||||
|
#fbSensorInput(stInSensorHW := "BG3311",
|
||||||
|
nInSensorNo := "cInBG3311",
|
||||||
|
stInOutSensor := "DB_Inputs".Sensors["cInBG3311"]);
|
||||||
|
// in Separator(ILS-KR-M5002)
|
||||||
|
#fbSensorInput(stInSensorHW := "BG3312",
|
||||||
|
nInSensorNo := "cInBG3312",
|
||||||
|
stInOutSensor := "DB_Inputs".Sensors["cInBG3312"]);
|
||||||
|
// Staumelder, Einfahrt (ILS-CV M5005)
|
||||||
|
#fbSensorInput(stInSensorHW := "BG3313",
|
||||||
|
nInSensorNo := "cInBG3313",
|
||||||
|
stInOutSensor := "DB_Inputs".Sensors["cInBG3313"]);
|
||||||
|
// in Separator (ILS-CV M5005) WS 1.0
|
||||||
|
#fbSensorInput(stInSensorHW := "BG3314",
|
||||||
|
nInSensorNo := "cInBG3314",
|
||||||
|
stInOutSensor := "DB_Inputs".Sensors["cInBG3314"]);
|
||||||
|
// Staumelder, Einfahrt (ILS-CV M5005) WS 1.0
|
||||||
|
#fbSensorInput(stInSensorHW := "BG3315",
|
||||||
|
nInSensorNo := "cInBG3315",
|
||||||
|
stInOutSensor := "DB_Inputs".Sensors["cInBG3315"]);
|
||||||
|
// in Separator 3 (ILS-CV M5005) WS 1.0
|
||||||
|
#fbSensorInput(stInSensorHW := "BG3316",
|
||||||
|
nInSensorNo := "cInBG3316",
|
||||||
|
stInOutSensor := "DB_Inputs".Sensors["cInBG3316"]);
|
||||||
|
// Abfrage Mitnehmerfinger in Position (ILS-CV M5005) WS 1.0
|
||||||
|
#fbSensorInput(stInSensorHW := "BG3317",
|
||||||
|
nInSensorNo := "cInBG3317",
|
||||||
|
stInOutSensor := "DB_Inputs".Sensors["cInBG3317"]);
|
||||||
|
// MT in Position (ILS-CV M5005) WS 1.0
|
||||||
|
#fbSensorInput(stInSensorHW := "BG3320",
|
||||||
|
nInSensorNo := "cInBG3320",
|
||||||
|
stInOutSensor := "DB_Inputs".Sensors["cInBG3320"]);
|
||||||
|
// Sensor Förderer voll (ILS-CV M5005) WS 1.0
|
||||||
|
#fbSensorInput(stInSensorHW := "BG3321",
|
||||||
|
nInSensorNo := "cInBG3321",
|
||||||
|
stInOutSensor := "DB_Inputs".Sensors["cInBG3321"]);
|
||||||
|
// in Separator (ILS-CV M5005) WS 1.0
|
||||||
|
#fbSensorInput(stInSensorHW := "BG3322",
|
||||||
|
nInSensorNo := "cInBG3322",
|
||||||
|
stInOutSensor := "DB_Inputs".Sensors["cInBG3322"]);
|
||||||
|
// Staumelder, Einfahrt (ILS-KR M5002)
|
||||||
|
#fbSensorInput(stInSensorHW := "BG3323",
|
||||||
|
nInSensorNo := "cInBG3323",
|
||||||
|
stInOutSensor := "DB_Inputs".Sensors["cInBG3323"]);
|
||||||
|
// Stausensor (ILS KR-M5002)
|
||||||
|
#fbSensorInput(stInSensorHW := "BG3324",
|
||||||
|
nInSensorNo := "cInBG3324",
|
||||||
|
stInOutSensor := "DB_Inputs".Sensors["cInBG3324"]);
|
||||||
|
// Stausensor 1 (ILS CV-M5001)
|
||||||
|
#fbSensorInput(stInSensorHW := "BG3325",
|
||||||
|
nInSensorNo := "cInBG3325",
|
||||||
|
stInOutSensor := "DB_Inputs".Sensors["cInBG3325"]);
|
||||||
|
// Stausensor (ILS-CV M5005) WS 1.0
|
||||||
|
#fbSensorInput(stInSensorHW := "BG3326",
|
||||||
|
nInSensorNo := "cInBG3326",
|
||||||
|
stInOutSensor := "DB_Inputs".Sensors["cInBG3326"]);
|
||||||
|
// Teil auf MT (Sep 5MB3307)
|
||||||
|
#fbSensorInput(stInSensorHW := "BG3327",
|
||||||
|
nInSensorNo := "cInBG3327",
|
||||||
|
stInOutSensor := "DB_Inputs".Sensors["cInBG3327"]);
|
||||||
|
// in Separator (ILS-CV M0510)
|
||||||
|
#fbSensorInput(stInSensorHW := "BG3330",
|
||||||
|
nInSensorNo := "cInBG3330",
|
||||||
|
stInOutSensor := "DB_Inputs".Sensors["cInBG3330"]);
|
||||||
|
// Abfrage Mitnehmerfinger in Position (ILS-CV M5000_A)
|
||||||
|
#fbSensorInput(stInSensorHW := "BG3331",
|
||||||
|
nInSensorNo := "cInBG3331",
|
||||||
|
stInOutSensor := "DB_Inputs".Sensors["cInBG3331"]);
|
||||||
|
// MT in Position (ILS-CV M5000_A)
|
||||||
|
#fbSensorInput(stInSensorHW := "BG3332",
|
||||||
|
nInSensorNo := "cInBG3332",
|
||||||
|
stInOutSensor := "DB_Inputs".Sensors["cInBG3332"]);
|
||||||
|
// in Separator (ILS-CV M5001_A)
|
||||||
|
#fbSensorInput(stInSensorHW := "BG3333",
|
||||||
|
nInSensorNo := "cInBG3333",
|
||||||
|
stInOutSensor := "DB_Inputs".Sensors["cInBG3333"]);
|
||||||
|
// Abfrage Mitnehmerfinger in Position (ILS-CV M5001_A)
|
||||||
|
#fbSensorInput(stInSensorHW := "BG3334",
|
||||||
|
nInSensorNo := "cInBG3334",
|
||||||
|
stInOutSensor := "DB_Inputs".Sensors["cInBG3334"]);
|
||||||
|
// MT in Position (ILS-CV M5001_A)
|
||||||
|
#fbSensorInput(stInSensorHW := "BG3335",
|
||||||
|
nInSensorNo := "cInBG3335",
|
||||||
|
stInOutSensor := "DB_Inputs".Sensors["cInBG3335"]);
|
||||||
|
// in Separator(ILS-KR-M5002)
|
||||||
|
#fbSensorInput(stInSensorHW := "BG3360",
|
||||||
|
nInSensorNo := "cInBG3360",
|
||||||
|
stInOutSensor := "DB_Inputs".Sensors["cInBG3360"]);
|
||||||
|
// Staumelder, Einfahrt (ILS-CV M5006)
|
||||||
|
#fbSensorInput(stInSensorHW := "BG3361",
|
||||||
|
nInSensorNo := "cInBG3361",
|
||||||
|
stInOutSensor := "DB_Inputs".Sensors["cInBG3361"]);
|
||||||
|
// in Separator (ILS-CV M5006) WS 2.0
|
||||||
|
#fbSensorInput(stInSensorHW := "BG3362",
|
||||||
|
nInSensorNo := "cInBG3362",
|
||||||
|
stInOutSensor := "DB_Inputs".Sensors["cInBG3362"]);
|
||||||
|
// Staumelder, Einfahrt (ILS-CV M5006) WS 2.0
|
||||||
|
#fbSensorInput(stInSensorHW := "BG3363",
|
||||||
|
nInSensorNo := "cInBG3363",
|
||||||
|
stInOutSensor := "DB_Inputs".Sensors["cInBG3363"]);
|
||||||
|
// in Separator 3 (ILS-CV M5006) WS 2.0
|
||||||
|
#fbSensorInput(stInSensorHW := "BG3364",
|
||||||
|
nInSensorNo := "cInBG3364",
|
||||||
|
stInOutSensor := "DB_Inputs".Sensors["cInBG3364"]);
|
||||||
|
// Abfrage Mitnehmerfinger in Position (ILS-CV M5006) WS 2.0
|
||||||
|
#fbSensorInput(stInSensorHW := "BG3365",
|
||||||
|
nInSensorNo := "cInBG3365",
|
||||||
|
stInOutSensor := "DB_Inputs".Sensors["cInBG3365"]);
|
||||||
|
// MT in Position (ILS-CV M5006) WS 2.0
|
||||||
|
#fbSensorInput(stInSensorHW := "BG3366",
|
||||||
|
nInSensorNo := "cInBG3366",
|
||||||
|
stInOutSensor := "DB_Inputs".Sensors["cInBG3366"]);
|
||||||
|
// Sensor Förderer voll (ILS-CV M5006) WS 2.0
|
||||||
|
#fbSensorInput(stInSensorHW := "BG3367",
|
||||||
|
nInSensorNo := "cInBG3367",
|
||||||
|
stInOutSensor := "DB_Inputs".Sensors["cInBG3367"]);
|
||||||
|
// in Separator (ILS-CV M5006) WS 2.0
|
||||||
|
#fbSensorInput(stInSensorHW := "BG3370",
|
||||||
|
nInSensorNo := "cInBG3370",
|
||||||
|
stInOutSensor := "DB_Inputs".Sensors["cInBG3370"]);
|
||||||
|
// Staumelder, Einfahrt (ILS-KR M5002)
|
||||||
|
#fbSensorInput(stInSensorHW := "BG3371",
|
||||||
|
nInSensorNo := "cInBG3371",
|
||||||
|
stInOutSensor := "DB_Inputs".Sensors["cInBG3371"]);
|
||||||
|
// in Separator(ILS-KR-M0500)
|
||||||
|
#fbSensorInput(stInSensorHW := "BG3372",
|
||||||
|
nInSensorNo := "cInBG3372",
|
||||||
|
stInOutSensor := "DB_Inputs".Sensors["cInBG3372"]);
|
||||||
|
// Staumelder, Einfahrt (ILS-CV M5007
|
||||||
|
#fbSensorInput(stInSensorHW := "BG3373",
|
||||||
|
nInSensorNo := "cInBG3373",
|
||||||
|
stInOutSensor := "DB_Inputs".Sensors["cInBG3373"]);
|
||||||
|
// in Separator (ILS-CV M5007) WS 3.0
|
||||||
|
#fbSensorInput(stInSensorHW := "BG3374",
|
||||||
|
nInSensorNo := "cInBG3374",
|
||||||
|
stInOutSensor := "DB_Inputs".Sensors["cInBG3374"]);
|
||||||
|
// Staumelder, Einfahrt (ILS-CV M5007) WS 3.0
|
||||||
|
#fbSensorInput(stInSensorHW := "BG3375",
|
||||||
|
nInSensorNo := "cInBG3375",
|
||||||
|
stInOutSensor := "DB_Inputs".Sensors["cInBG3375"]);
|
||||||
|
// in Separator 3 (ILS-CV M5007) WS 3.0
|
||||||
|
#fbSensorInput(stInSensorHW := "BG3376",
|
||||||
|
nInSensorNo := "cInBG3376",
|
||||||
|
stInOutSensor := "DB_Inputs".Sensors["cInBG3376"]);
|
||||||
|
// Abfrage Mitnehmerfinger in Position (ILS-CV M5007) WS 3.0
|
||||||
|
#fbSensorInput(stInSensorHW := "BG3377",
|
||||||
|
nInSensorNo := "cInBG3377",
|
||||||
|
stInOutSensor := "DB_Inputs".Sensors["cInBG3377"]);
|
||||||
|
// MT in Position (ILS-CV M5007) WS 3.0
|
||||||
|
#fbSensorInput(stInSensorHW := "BG3380",
|
||||||
|
nInSensorNo := "cInBG3380",
|
||||||
|
stInOutSensor := "DB_Inputs".Sensors["cInBG3380"]);
|
||||||
|
// Sensor Förderer voll (ILS-CV M5007) WS 3.0
|
||||||
|
#fbSensorInput(stInSensorHW := "BG3381",
|
||||||
|
nInSensorNo := "cInBG3381",
|
||||||
|
stInOutSensor := "DB_Inputs".Sensors["cInBG3381"]);
|
||||||
|
// in Separator (ILS-CV M5007) WS 3.0
|
||||||
|
#fbSensorInput(stInSensorHW := "BG3382",
|
||||||
|
nInSensorNo := "cInBG3382",
|
||||||
|
stInOutSensor := "DB_Inputs".Sensors["cInBG3382"]);
|
||||||
|
// Staumelder, Einfahrt (ILS-KR M5002)
|
||||||
|
#fbSensorInput(stInSensorHW := "BG3383",
|
||||||
|
nInSensorNo := "cInBG3383",
|
||||||
|
stInOutSensor := "DB_Inputs".Sensors["cInBG3383"]);
|
||||||
|
// Stausensor (ILS KR-M5002)
|
||||||
|
#fbSensorInput(stInSensorHW := "BG3384",
|
||||||
|
nInSensorNo := "cInBG3384",
|
||||||
|
stInOutSensor := "DB_Inputs".Sensors["cInBG3384"]);
|
||||||
|
// Stausensor (ILS KR-M5002)
|
||||||
|
#fbSensorInput(stInSensorHW := "BG3385",
|
||||||
|
nInSensorNo := "cInBG3385",
|
||||||
|
stInOutSensor := "DB_Inputs".Sensors["cInBG3385"]);
|
||||||
|
// Stausensor (ILS-CV M5006) WS 2.0
|
||||||
|
#fbSensorInput(stInSensorHW := "BG3386",
|
||||||
|
nInSensorNo := "cInBG3386",
|
||||||
|
stInOutSensor := "DB_Inputs".Sensors["cInBG3386"]);
|
||||||
|
// Stausensor (ILS-CV M5007) WS 3.0
|
||||||
|
#fbSensorInput(stInSensorHW := "BG3387",
|
||||||
|
nInSensorNo := "cInBG3387",
|
||||||
|
stInOutSensor := "DB_Inputs".Sensors["cInBG3387"]);
|
||||||
|
// in Separator(ILS-KR-M5002)
|
||||||
|
#fbSensorInput(stInSensorHW := "BG3420",
|
||||||
|
nInSensorNo := "cInBG3420",
|
||||||
|
stInOutSensor := "DB_Inputs".Sensors["cInBG3420"]);
|
||||||
|
// Staumelder, Einfahrt (ILS-CV M5008)
|
||||||
|
#fbSensorInput(stInSensorHW := "BG3421",
|
||||||
|
nInSensorNo := "cInBG3421",
|
||||||
|
stInOutSensor := "DB_Inputs".Sensors["cInBG3421"]);
|
||||||
|
// in Separator (ILS-CV M5008) WS 4.0
|
||||||
|
#fbSensorInput(stInSensorHW := "BG3422",
|
||||||
|
nInSensorNo := "cInBG3422",
|
||||||
|
stInOutSensor := "DB_Inputs".Sensors["cInBG3422"]);
|
||||||
|
// Staumelder, Einfahrt (ILS-CV M5008) WS 4.0
|
||||||
|
#fbSensorInput(stInSensorHW := "BG3423",
|
||||||
|
nInSensorNo := "cInBG3423",
|
||||||
|
stInOutSensor := "DB_Inputs".Sensors["cInBG3423"]);
|
||||||
|
// in Separator (ILS-CV M5008) WS 4.0
|
||||||
|
#fbSensorInput(stInSensorHW := "BG3424",
|
||||||
|
nInSensorNo := "cInBG3424",
|
||||||
|
stInOutSensor := "DB_Inputs".Sensors["cInBG3424"]);
|
||||||
|
// Abfrage Mitnehmerfinger in Position (ILS-CV M5008) WS 4.0
|
||||||
|
#fbSensorInput(stInSensorHW := "BG3425",
|
||||||
|
nInSensorNo := "cInBG3425",
|
||||||
|
stInOutSensor := "DB_Inputs".Sensors["cInBG3425"]);
|
||||||
|
// MT in Position (ILS-CV M5008) WS 4.0
|
||||||
|
#fbSensorInput(stInSensorHW := "BG3426",
|
||||||
|
nInSensorNo := "cInBG3426",
|
||||||
|
stInOutSensor := "DB_Inputs".Sensors["cInBG3426"]);
|
||||||
|
// Sensor Förderer voll (ILS-CV M5008) WS 4.0
|
||||||
|
#fbSensorInput(stInSensorHW := "BG3427",
|
||||||
|
nInSensorNo := "cInBG3427",
|
||||||
|
stInOutSensor := "DB_Inputs".Sensors["cInBG3427"]);
|
||||||
|
// in Separator (ILS-CV M5008) WS 4.0
|
||||||
|
#fbSensorInput(stInSensorHW := "BG3430",
|
||||||
|
nInSensorNo := "cInBG3430",
|
||||||
|
stInOutSensor := "DB_Inputs".Sensors["cInBG3430"]);
|
||||||
|
// Staumelder, Einfahrt (ILS-KR M0500)
|
||||||
|
#fbSensorInput(stInSensorHW := "BG3431",
|
||||||
|
nInSensorNo := "cInBG3431",
|
||||||
|
stInOutSensor := "DB_Inputs".Sensors["cInBG3431"]);
|
||||||
|
// in Separator(ILS-KR-M5002)
|
||||||
|
#fbSensorInput(stInSensorHW := "BG3432",
|
||||||
|
nInSensorNo := "cInBG3432",
|
||||||
|
stInOutSensor := "DB_Inputs".Sensors["cInBG3432"]);
|
||||||
|
// in Separator(ILS-KR-M5002)
|
||||||
|
#fbSensorInput(stInSensorHW := "BG3433",
|
||||||
|
nInSensorNo := "cInBG3433",
|
||||||
|
stInOutSensor := "DB_Inputs".Sensors["cInBG3433"]);
|
||||||
|
// Stausensor (ILS-KR M5002)
|
||||||
|
#fbSensorInput(stInSensorHW := "BG3434",
|
||||||
|
nInSensorNo := "cInBG3434",
|
||||||
|
stInOutSensor := "DB_Inputs".Sensors["cInBG3434"]);
|
||||||
|
// Rad dreht (ILS-CV KR-M5002)
|
||||||
|
#fbSensorInput(stInSensorHW := "BG3435",
|
||||||
|
nInSensorNo := "cInBG3435",
|
||||||
|
stInOutSensor := "DB_Inputs".Sensors["cInBG3435"]);
|
||||||
|
// Staumelder, Einfahrt (ILS-CV M2111)
|
||||||
|
#fbSensorInput(stInSensorHW := "BG3436",
|
||||||
|
nInSensorNo := "cInBG3436",
|
||||||
|
stInOutSensor := "DB_Inputs".Sensors["cInBG3436"]);
|
||||||
|
// Stausensor (ILS KR-M5002)
|
||||||
|
#fbSensorInput(stInSensorHW := "BG3437",
|
||||||
|
nInSensorNo := "cInBG3437",
|
||||||
|
stInOutSensor := "DB_Inputs".Sensors["cInBG3437"]);
|
||||||
|
// Längenabfrage Grenze kurz (ILS-CV)
|
||||||
|
#fbSensorInput(stInSensorHW := "BG3440",
|
||||||
|
nInSensorNo := "cInBG3440",
|
||||||
|
stInOutSensor := "DB_Inputs".Sensors["cInBG3440"]);
|
||||||
|
// Längenabfrage Grenze lang (ILS-CV)
|
||||||
|
#fbSensorInput(stInSensorHW := "BG3441",
|
||||||
|
nInSensorNo := "cInBG3441",
|
||||||
|
stInOutSensor := "DB_Inputs".Sensors["cInBG3441"]);
|
||||||
|
// Längenabfrage Grenze zu lang (ILS-CV)
|
||||||
|
#fbSensorInput(stInSensorHW := "BG3442",
|
||||||
|
nInSensorNo := "cInBG3442",
|
||||||
|
stInOutSensor := "DB_Inputs".Sensors["cInBG3442"]);
|
||||||
|
// Verlassensensor Längenmessung (ILS-CV)
|
||||||
|
#fbSensorInput(stInSensorHW := "BG3443",
|
||||||
|
nInSensorNo := "cInBG3443",
|
||||||
|
stInOutSensor := "DB_Inputs".Sensors["cInBG3443"]);
|
||||||
|
// Stausensor (ILS-CV M5008) WS 4.0
|
||||||
|
#fbSensorInput(stInSensorHW := "BG3444",
|
||||||
|
nInSensorNo := "cInBG3444",
|
||||||
|
stInOutSensor := "DB_Inputs".Sensors["cInBG3444"]);
|
||||||
|
// Sensor Förderer voll (ILS CV-M5000_A)
|
||||||
|
#fbSensorInput(stInSensorHW := "BG3450",
|
||||||
|
nInSensorNo := "cInBG3450",
|
||||||
|
stInOutSensor := "DB_Inputs".Sensors["cInBG3450"]);
|
||||||
|
// Stausensor (ILS CV-M5000_A)
|
||||||
|
#fbSensorInput(stInSensorHW := "BG3451",
|
||||||
|
nInSensorNo := "cInBG3451",
|
||||||
|
stInOutSensor := "DB_Inputs".Sensors["cInBG3451"]);
|
||||||
|
// in Separator (ILS CV-M5000_B)
|
||||||
|
#fbSensorInput(stInSensorHW := "BG3452",
|
||||||
|
nInSensorNo := "cInBG3452",
|
||||||
|
stInOutSensor := "DB_Inputs".Sensors["cInBG3452"]);
|
||||||
|
// Abfrage Mitnehmerfinger in Position (ILS-CV M5000_B)
|
||||||
|
#fbSensorInput(stInSensorHW := "BG3453",
|
||||||
|
nInSensorNo := "cInBG3453",
|
||||||
|
stInOutSensor := "DB_Inputs".Sensors["cInBG3453"]);
|
||||||
|
// MT in Position (ILS-CV M5000_B)
|
||||||
|
#fbSensorInput(stInSensorHW := "BG3454",
|
||||||
|
nInSensorNo := "cInBG3454",
|
||||||
|
stInOutSensor := "DB_Inputs".Sensors["cInBG3454"]);
|
||||||
|
// Sensor Förderer voll (ILS CV-M5001_A)
|
||||||
|
#fbSensorInput(stInSensorHW := "BG3455",
|
||||||
|
nInSensorNo := "cInBG3455",
|
||||||
|
stInOutSensor := "DB_Inputs".Sensors["cInBG3455"]);
|
||||||
|
// Stausensor (ILS CV-M5001_A)
|
||||||
|
#fbSensorInput(stInSensorHW := "BG3456",
|
||||||
|
nInSensorNo := "cInBG3456",
|
||||||
|
stInOutSensor := "DB_Inputs".Sensors["cInBG3456"]);
|
||||||
|
// in Separator (ILS CV-M5001_B)
|
||||||
|
#fbSensorInput(stInSensorHW := "BG3457",
|
||||||
|
nInSensorNo := "cInBG3457",
|
||||||
|
stInOutSensor := "DB_Inputs".Sensors["cInBG3457"]);
|
||||||
|
// Abfrage Mitnehmerfinger in Position (ILS-CV M5001_B)
|
||||||
|
#fbSensorInput(stInSensorHW := "BG3460",
|
||||||
|
nInSensorNo := "cInBG3460",
|
||||||
|
stInOutSensor := "DB_Inputs".Sensors["cInBG3460"]);
|
||||||
|
// MT in Position (ILS-CV M5001_B)
|
||||||
|
#fbSensorInput(stInSensorHW := "BG3461",
|
||||||
|
nInSensorNo := "cInBG3461",
|
||||||
|
stInOutSensor := "DB_Inputs".Sensors["cInBG3461"]);
|
||||||
|
END_FUNCTION_BLOCK
|
||||||
@@ -0,0 +1,582 @@
|
|||||||
|
FUNCTION_BLOCK "FB_Main_skel_UH01"
|
||||||
|
{ S7_Optimized_Access := 'TRUE' }
|
||||||
|
VERSION : 0.1
|
||||||
|
// ============================================================
|
||||||
|
// AUTOMATISCH GENERIERTES GRUNDGERUEST — create_skel.py
|
||||||
|
// Quelle: E/A-Listen UH01 (data/)
|
||||||
|
// TODO-Marken kennzeichnen manuell zu ergaenzende Stellen
|
||||||
|
// (Timings, Topologie/JamAreas, Safety, Release, Priority).
|
||||||
|
// ============================================================
|
||||||
|
VAR
|
||||||
|
TRO101 : "FB_ILS_MTRO_Vario"; // CV-M0100
|
||||||
|
TRO102 : "FB_ILS_MTRO_1Sep"; // KR-M0101 / LS2
|
||||||
|
TRO103 : "FB_ILS_MTRO_1Sep1Swi"; // KR-M0102
|
||||||
|
TRO104 : "FB_ILS_MTRO_Vario"; // CV-M0103
|
||||||
|
fbConveyor0105 : "FB_Conveyor"; // CV-M0105
|
||||||
|
TRO106 : "FB_ILS_MTRO_Vario"; // CV-M0106
|
||||||
|
TRO107 : "FB_ILS_MTRO_Vario"; // CV-M0107
|
||||||
|
fbConveyor0109 : "FB_Conveyor"; // CV-M0109
|
||||||
|
TRO109 : "FB_ILS_MTRO_Vario"; // CV-M0110
|
||||||
|
fbConveyor4103 : "FB_Conveyor"; // CV-M4103
|
||||||
|
TRO111 : "FB_ILS_MTRO_Vario"; // CV-M4103_A
|
||||||
|
fbConveyor4103_B : "FB_Conveyor"; // CV-M4103_B
|
||||||
|
TRO113 : "FB_ILS_MTRO_Vario"; // CV-M4104
|
||||||
|
TRO114 : "FB_ILS_MTRO_1Sep"; // CV-M4203
|
||||||
|
TRO115 : "FB_ILS_MTRO_Vario"; // CV-M4203_A
|
||||||
|
fbConveyor4203_B : "FB_Conveyor"; // CV-M4203_B
|
||||||
|
TRO117 : "FB_ILS_MTRO_1Sep1Swi"; // KR-M4204
|
||||||
|
TRO118 : "FB_ILS_MTRO_1Sep"; // CV-M4302
|
||||||
|
TRO119 : "FB_ILS_MTRO_Vario"; // CV-M4302_A
|
||||||
|
TRO120 : "FB_ILS_MTRO_Vario"; // CV-M4302_B
|
||||||
|
fbConveyor4402_A : "FB_Conveyor"; // CV-M4402_A
|
||||||
|
TRO122 : "FB_ILS_MTRO_Vario"; // CV-M4402_B
|
||||||
|
TRO123 : "FB_ILS_MTRO_Vario"; // CV-M4403
|
||||||
|
TRO124 : "FB_ILS_MTRO_Vario"; // CV-M4501
|
||||||
|
TRO125 : "FB_ILS_MTRO_Vario"; // CV-M4502
|
||||||
|
TRO126 : "FB_ILS_MTRO_Vario"; // CV-M4503
|
||||||
|
fbConveyorM0103 : "FB_Conveyor"; // CV-PM0103
|
||||||
|
END_VAR
|
||||||
|
|
||||||
|
BEGIN
|
||||||
|
REGION TRO101 (Vario) — CV-M0100
|
||||||
|
#TRO101.stInSeparator1.Settings.nSeparatorNo := "cSep101.1";
|
||||||
|
#TRO101.stInSeparator1.Settings.tDelayToNextItem := "TimeForSepWaiting_Short";
|
||||||
|
#TRO101.stInSeparator1.stSenInSep := "DB_Inputs".Sensors["cInBG3242"];
|
||||||
|
#TRO101.stInVario.stSenCarrInPos := "DB_Inputs".Sensors["cInBG3292"];
|
||||||
|
#TRO101.stInVario.stSenFinger := "DB_Inputs".Sensors["cInBG3291"];
|
||||||
|
#TRO101.stInVario.stSenJam := "DB_Inputs".Sensors["cInBG3241"];
|
||||||
|
|
||||||
|
#TRO101(nInMainTroNo := "cMainTro101",
|
||||||
|
xInSftyOk := TRUE, // TODO Safety
|
||||||
|
xInAllRdyToStart := TRUE,
|
||||||
|
xInRelease := TRUE, // TODO Release
|
||||||
|
stInOutMachineState := #stInOutControlUnit, // TODO ControlUnit
|
||||||
|
arInOutJamEntr1 := "DB_JamArea101".stJam101_1.arCarrier, // TODO Topologie
|
||||||
|
stInOutJamEntr1 := "DB_JamArea101".stJam101_1.stData,
|
||||||
|
arInOutJamFinger := "DB_JamArea101".stJam101_2.arCarrier, // TODO Topologie
|
||||||
|
xOutStopper => "MB3290",
|
||||||
|
xOutVarioMotor => "MA0057",
|
||||||
|
nOutStateLast => "DB_GLOB_TroState".arTroState["cMainTro101"],
|
||||||
|
stInOutHMI := "DB_Interface_HMI".stTRO.TRO101);
|
||||||
|
END_REGION
|
||||||
|
|
||||||
|
REGION TRO102 (1Sep) — KR-M0101 / LS2
|
||||||
|
#TRO102.stInSeparator1.Settings.nSeparatorNo := "cSep102.1";
|
||||||
|
#TRO102.stInSeparator1.Settings.tDelayToNextItem := "TimeForSepWaiting_Short";
|
||||||
|
#TRO102.stInSeparator1.Settings.tTrailingTime := T#500ms; // TODO Timing
|
||||||
|
#TRO102.stInSeparator1.Settings.tHandlingTime := T#200ms; // TODO Timing
|
||||||
|
#TRO102.stInSeparator1.Settings.tJam := "TimeForSepJam";
|
||||||
|
#TRO102.stInSeparator1.stSenInSep := "DB_Inputs".Sensors["cInBG3246"];
|
||||||
|
#TRO102.stInSenJam2 := "DB_Inputs".Sensors["cInBGxxxx"];
|
||||||
|
|
||||||
|
#TRO102.stInPriorityManager.xReleaseOk := TRUE; // TODO Priority
|
||||||
|
|
||||||
|
#TRO102(nInMainTroNo := "cMainTro102",
|
||||||
|
xInSftyOk := TRUE, // TODO Safety
|
||||||
|
xInAllRdyToStart := TRUE,
|
||||||
|
xInCarouselRun := TRUE, // TODO Conveyor
|
||||||
|
xInRelease := TRUE, // TODO Release
|
||||||
|
stInOutMachineState := #stInOutControlUnit, // TODO ControlUnit
|
||||||
|
arInOutJamEntr1 := "DB_JamArea102".stJam102_1.arCarrier, // TODO Topologie
|
||||||
|
stInOutJamEntr1 := "DB_JamArea102".stJam102_1.stData,
|
||||||
|
arInOutJamExit2 := "DB_JamArea102".stJam102_2.arCarrier, // TODO Topologie
|
||||||
|
stInOutJamExit2 := "DB_JamArea102".stJam102_2.stData,
|
||||||
|
xOutStopper1 => "MB3246",
|
||||||
|
nOutStateLast => "DB_GLOB_TroState".arTroState["cMainTro102"],
|
||||||
|
stInOutHMI := "DB_Interface_HMI".stTRO.TRO102);
|
||||||
|
END_REGION
|
||||||
|
|
||||||
|
REGION TRO103 (1Sep1Swi) — KR-M0102
|
||||||
|
#TRO103.stInSeparator1.Settings.nSeparatorNo := "cSep103.1";
|
||||||
|
#TRO103.stInSeparator1.Settings.tDelayToNextItem := "TimeForSepWaiting_Short";
|
||||||
|
#TRO103.stInSeparator1.Settings.tTrailingTime := T#100ms; // TODO Timing
|
||||||
|
#TRO103.stInSeparator1.Settings.tHandlingTime := T#50ms; // TODO Timing
|
||||||
|
#TRO103.stInSeparator1.Settings.tJam := "TimeForSepJam";
|
||||||
|
#TRO103.stInSeparator1.stSenInSep := "DB_Inputs".Sensors["cInBG3300"];
|
||||||
|
#TRO103.stInSenJam2 := "DB_Inputs".Sensors["cInBG3304"];
|
||||||
|
#TRO103.stInSwitch1.Settings.nSwitchNo := "cSwi103.1";
|
||||||
|
|
||||||
|
#TRO103(nInMainTroNo := "cMainTro103",
|
||||||
|
xInSftyOk := TRUE, // TODO Safety
|
||||||
|
xInAllRdyToStart := TRUE,
|
||||||
|
xInCarouselRun1 := TRUE, // TODO Conveyor
|
||||||
|
xInRelease := TRUE, // TODO Release
|
||||||
|
stInOutMachineState := #stInOutControlUnit, // TODO ControlUnit
|
||||||
|
arInOutJamEntr1 := "DB_JamArea103".stJam103_1.arCarrier, // TODO Topologie
|
||||||
|
stInOutJamEntr1 := "DB_JamArea103".stJam103_1.stData,
|
||||||
|
arInOutJamExit2 := "DB_JamArea103".stJam103_2.arCarrier, // TODO Topologie (Dir1)
|
||||||
|
stInOutJamExit2 := "DB_JamArea103".stJam103_2.stData,
|
||||||
|
arInOutJamExit3 := "DB_JamArea103".stJam103_3.arCarrier, // TODO Topologie (Dir2)
|
||||||
|
stInOutJamExit3 := "DB_JamArea103".stJam103_3.stData,
|
||||||
|
xOutStopper1 => "MB3300",
|
||||||
|
xOutSw1ExTo3 => "MB3304",
|
||||||
|
nOutStateLast => "DB_GLOB_TroState".arTroState["cMainTro103"],
|
||||||
|
stInOutHMI := "DB_Interface_HMI".stTRO.TRO103);
|
||||||
|
END_REGION
|
||||||
|
|
||||||
|
REGION TRO104 (Vario) — CV-M0103
|
||||||
|
#TRO104.stInSeparator1.Settings.nSeparatorNo := "cSep104.1";
|
||||||
|
#TRO104.stInSeparator1.Settings.tDelayToNextItem := "TimeForSepWaiting_Short";
|
||||||
|
#TRO104.stInSeparator1.stSenInSep := "DB_Inputs".Sensors["cInBG3271"];
|
||||||
|
#TRO104.stInVario.stSenCarrInPos := "DB_Inputs".Sensors["cInBG3272"];
|
||||||
|
#TRO104.stInVario.stSenFinger := "DB_Inputs".Sensors["cInBG3270"];
|
||||||
|
#TRO104.stInVario.stSenJam := "DB_Inputs".Sensors["cInBG3305"];
|
||||||
|
|
||||||
|
#TRO104(nInMainTroNo := "cMainTro104",
|
||||||
|
xInSftyOk := TRUE, // TODO Safety
|
||||||
|
xInAllRdyToStart := TRUE,
|
||||||
|
xInRelease := TRUE, // TODO Release
|
||||||
|
stInOutMachineState := #stInOutControlUnit, // TODO ControlUnit
|
||||||
|
arInOutJamEntr1 := "DB_JamArea104".stJam104_1.arCarrier, // TODO Topologie
|
||||||
|
stInOutJamEntr1 := "DB_JamArea104".stJam104_1.stData,
|
||||||
|
arInOutJamFinger := "DB_JamArea104".stJam104_2.arCarrier, // TODO Topologie
|
||||||
|
xOutStopper => "MB3271",
|
||||||
|
xOutVarioMotor => "MAxxxx",
|
||||||
|
nOutStateLast => "DB_GLOB_TroState".arTroState["cMainTro104"],
|
||||||
|
stInOutHMI := "DB_Interface_HMI".stTRO.TRO104);
|
||||||
|
END_REGION
|
||||||
|
|
||||||
|
REGION fbConveyor0105 — CV-M0105
|
||||||
|
#fbConveyor0105.Settings.tEnergySafeTime := "cTimeEnergySafe";
|
||||||
|
#fbConveyor0105.Settings.xGridActive := FALSE; // TODO Grid
|
||||||
|
#fbConveyor0105.Settings.sMotorProtectName := 'FC0063';
|
||||||
|
|
||||||
|
#fbConveyor0105(xInEnabled := TRUE, // TODO Enable
|
||||||
|
xInMotorProtection := "FC0063",
|
||||||
|
xInPowerContactor := "MAxxxx",
|
||||||
|
stInOutHMI := "DB_Interface_HMI".stConveyors.fbConveyor0105);
|
||||||
|
END_REGION
|
||||||
|
|
||||||
|
REGION TRO106 (Vario) — CV-M0106
|
||||||
|
#TRO106.stInSeparator1.Settings.nSeparatorNo := "cSep106.1";
|
||||||
|
#TRO106.stInSeparator1.Settings.tDelayToNextItem := "TimeForSepWaiting_Short";
|
||||||
|
#TRO106.stInSeparator1.stSenInSep := "DB_Inputs".Sensors["cInBGxxxx"];
|
||||||
|
#TRO106.stInVario.stSenCarrInPos := "DB_Inputs".Sensors["cInBGxxxx"];
|
||||||
|
#TRO106.stInVario.stSenFinger := "DB_Inputs".Sensors["cInBG3273"];
|
||||||
|
#TRO106.stInVario.stSenJam := "DB_Inputs".Sensors["cInBG3276"];
|
||||||
|
|
||||||
|
#TRO106(nInMainTroNo := "cMainTro106",
|
||||||
|
xInSftyOk := TRUE, // TODO Safety
|
||||||
|
xInAllRdyToStart := TRUE,
|
||||||
|
xInRelease := TRUE, // TODO Release
|
||||||
|
stInOutMachineState := #stInOutControlUnit, // TODO ControlUnit
|
||||||
|
arInOutJamEntr1 := "DB_JamArea106".stJam106_1.arCarrier, // TODO Topologie
|
||||||
|
stInOutJamEntr1 := "DB_JamArea106".stJam106_1.stData,
|
||||||
|
arInOutJamFinger := "DB_JamArea106".stJam106_2.arCarrier, // TODO Topologie
|
||||||
|
xOutStopper => "MBxxxx",
|
||||||
|
xOutVarioMotor => "MA0064",
|
||||||
|
nOutStateLast => "DB_GLOB_TroState".arTroState["cMainTro106"],
|
||||||
|
stInOutHMI := "DB_Interface_HMI".stTRO.TRO106);
|
||||||
|
END_REGION
|
||||||
|
|
||||||
|
REGION TRO107 (Vario) — CV-M0107
|
||||||
|
#TRO107.stInSeparator1.Settings.nSeparatorNo := "cSep107.1";
|
||||||
|
#TRO107.stInSeparator1.Settings.tDelayToNextItem := "TimeForSepWaiting_Short";
|
||||||
|
#TRO107.stInSeparator1.stSenInSep := "DB_Inputs".Sensors["cInBG3283"];
|
||||||
|
#TRO107.stInVario.stSenCarrInPos := "DB_Inputs".Sensors["cInBG3282"];
|
||||||
|
#TRO107.stInVario.stSenFinger := "DB_Inputs".Sensors["cInBG3284"];
|
||||||
|
#TRO107.stInVario.stSenJam := "DB_Inputs".Sensors["cInBGxxxx"];
|
||||||
|
|
||||||
|
#TRO107(nInMainTroNo := "cMainTro107",
|
||||||
|
xInSftyOk := TRUE, // TODO Safety
|
||||||
|
xInAllRdyToStart := TRUE,
|
||||||
|
xInRelease := TRUE, // TODO Release
|
||||||
|
stInOutMachineState := #stInOutControlUnit, // TODO ControlUnit
|
||||||
|
arInOutJamEntr1 := "DB_JamArea107".stJam107_1.arCarrier, // TODO Topologie
|
||||||
|
stInOutJamEntr1 := "DB_JamArea107".stJam107_1.stData,
|
||||||
|
arInOutJamFinger := "DB_JamArea107".stJam107_2.arCarrier, // TODO Topologie
|
||||||
|
xOutStopper => "MB3283",
|
||||||
|
xOutVarioMotor => "MA0065",
|
||||||
|
nOutStateLast => "DB_GLOB_TroState".arTroState["cMainTro107"],
|
||||||
|
stInOutHMI := "DB_Interface_HMI".stTRO.TRO107);
|
||||||
|
END_REGION
|
||||||
|
|
||||||
|
REGION fbConveyor0109 — CV-M0109
|
||||||
|
#fbConveyor0109.Settings.tEnergySafeTime := "cTimeEnergySafe";
|
||||||
|
#fbConveyor0109.Settings.xGridActive := FALSE; // TODO Grid
|
||||||
|
#fbConveyor0109.Settings.sMotorProtectName := 'FC0066';
|
||||||
|
|
||||||
|
#fbConveyor0109(xInEnabled := TRUE, // TODO Enable
|
||||||
|
xInMotorProtection := "FC0066",
|
||||||
|
xInPowerContactor := "MAxxxx",
|
||||||
|
stInOutHMI := "DB_Interface_HMI".stConveyors.fbConveyor0109);
|
||||||
|
END_REGION
|
||||||
|
|
||||||
|
REGION TRO109 (Vario) — CV-M0110
|
||||||
|
#TRO109.stInSeparator1.Settings.nSeparatorNo := "cSep109.1";
|
||||||
|
#TRO109.stInSeparator1.Settings.tDelayToNextItem := "TimeForSepWaiting_Short";
|
||||||
|
#TRO109.stInSeparator1.stSenInSep := "DB_Inputs".Sensors["cInBGxxxx"];
|
||||||
|
#TRO109.stInVario.stSenCarrInPos := "DB_Inputs".Sensors["cInBGxxxx"];
|
||||||
|
#TRO109.stInVario.stSenFinger := "DB_Inputs".Sensors["cInBG3285"];
|
||||||
|
#TRO109.stInVario.stSenJam := "DB_Inputs".Sensors["cInBG3294"];
|
||||||
|
|
||||||
|
#TRO109(nInMainTroNo := "cMainTro109",
|
||||||
|
xInSftyOk := TRUE, // TODO Safety
|
||||||
|
xInAllRdyToStart := TRUE,
|
||||||
|
xInRelease := TRUE, // TODO Release
|
||||||
|
stInOutMachineState := #stInOutControlUnit, // TODO ControlUnit
|
||||||
|
arInOutJamEntr1 := "DB_JamArea109".stJam109_1.arCarrier, // TODO Topologie
|
||||||
|
stInOutJamEntr1 := "DB_JamArea109".stJam109_1.stData,
|
||||||
|
arInOutJamFinger := "DB_JamArea109".stJam109_2.arCarrier, // TODO Topologie
|
||||||
|
xOutStopper => "MBxxxx",
|
||||||
|
xOutVarioMotor => "MA0067",
|
||||||
|
nOutStateLast => "DB_GLOB_TroState".arTroState["cMainTro109"],
|
||||||
|
stInOutHMI := "DB_Interface_HMI".stTRO.TRO109);
|
||||||
|
END_REGION
|
||||||
|
|
||||||
|
REGION fbConveyor4103 — CV-M4103
|
||||||
|
#fbConveyor4103.Settings.tEnergySafeTime := "cTimeEnergySafe";
|
||||||
|
#fbConveyor4103.Settings.xGridActive := FALSE; // TODO Grid
|
||||||
|
#fbConveyor4103.Settings.sMotorProtectName := 'FC0146';
|
||||||
|
|
||||||
|
#fbConveyor4103(xInEnabled := TRUE, // TODO Enable
|
||||||
|
xInMotorProtection := "FC0146",
|
||||||
|
xInPowerContactor := "MAxxxx",
|
||||||
|
stInOutHMI := "DB_Interface_HMI".stConveyors.fbConveyor4103);
|
||||||
|
END_REGION
|
||||||
|
|
||||||
|
REGION TRO111 (Vario) — CV-M4103_A
|
||||||
|
#TRO111.stInSeparator1.Settings.nSeparatorNo := "cSep111.1";
|
||||||
|
#TRO111.stInSeparator1.Settings.tDelayToNextItem := "TimeForSepWaiting_Short";
|
||||||
|
#TRO111.stInSeparator1.stSenInSep := "DB_Inputs".Sensors["cInBG3003"];
|
||||||
|
#TRO111.stInVario.stSenCarrInPos := "DB_Inputs".Sensors["cInBG3004"];
|
||||||
|
#TRO111.stInVario.stSenFinger := "DB_Inputs".Sensors["cInBG3002"];
|
||||||
|
#TRO111.stInVario.stSenJam := "DB_Inputs".Sensors["cInBG3005"];
|
||||||
|
|
||||||
|
#TRO111(nInMainTroNo := "cMainTro111",
|
||||||
|
xInSftyOk := TRUE, // TODO Safety
|
||||||
|
xInAllRdyToStart := TRUE,
|
||||||
|
xInRelease := TRUE, // TODO Release
|
||||||
|
stInOutMachineState := #stInOutControlUnit, // TODO ControlUnit
|
||||||
|
arInOutJamEntr1 := "DB_JamArea111".stJam111_1.arCarrier, // TODO Topologie
|
||||||
|
stInOutJamEntr1 := "DB_JamArea111".stJam111_1.stData,
|
||||||
|
arInOutJamFinger := "DB_JamArea111".stJam111_2.arCarrier, // TODO Topologie
|
||||||
|
xOutStopper => "MB3003",
|
||||||
|
xOutVarioMotor => "MA0146",
|
||||||
|
nOutStateLast => "DB_GLOB_TroState".arTroState["cMainTro111"],
|
||||||
|
stInOutHMI := "DB_Interface_HMI".stTRO.TRO111);
|
||||||
|
END_REGION
|
||||||
|
|
||||||
|
REGION fbConveyor4103_B — CV-M4103_B
|
||||||
|
#fbConveyor4103_B.Settings.tEnergySafeTime := "cTimeEnergySafe";
|
||||||
|
#fbConveyor4103_B.Settings.xGridActive := FALSE; // TODO Grid
|
||||||
|
#fbConveyor4103_B.Settings.sMotorProtectName := 'FC0152';
|
||||||
|
|
||||||
|
#fbConveyor4103_B(xInEnabled := TRUE, // TODO Enable
|
||||||
|
xInMotorProtection := "FC0152",
|
||||||
|
xInPowerContactor := "MA0152",
|
||||||
|
stInOutHMI := "DB_Interface_HMI".stConveyors.fbConveyor4103_B);
|
||||||
|
END_REGION
|
||||||
|
|
||||||
|
REGION TRO113 (Vario) — CV-M4104
|
||||||
|
#TRO113.stInSeparator1.Settings.nSeparatorNo := "cSep113.1";
|
||||||
|
#TRO113.stInSeparator1.Settings.tDelayToNextItem := "TimeForSepWaiting_Short";
|
||||||
|
#TRO113.stInSeparator1.stSenInSep := "DB_Inputs".Sensors["cInBG3025"];
|
||||||
|
#TRO113.stInVario.stSenCarrInPos := "DB_Inputs".Sensors["cInBG3026"];
|
||||||
|
#TRO113.stInVario.stSenFinger := "DB_Inputs".Sensors["cInBG3027"];
|
||||||
|
#TRO113.stInVario.stSenJam := "DB_Inputs".Sensors["cInBG3001"];
|
||||||
|
|
||||||
|
#TRO113(nInMainTroNo := "cMainTro113",
|
||||||
|
xInSftyOk := TRUE, // TODO Safety
|
||||||
|
xInAllRdyToStart := TRUE,
|
||||||
|
xInRelease := TRUE, // TODO Release
|
||||||
|
stInOutMachineState := #stInOutControlUnit, // TODO ControlUnit
|
||||||
|
arInOutJamEntr1 := "DB_JamArea113".stJam113_1.arCarrier, // TODO Topologie
|
||||||
|
stInOutJamEntr1 := "DB_JamArea113".stJam113_1.stData,
|
||||||
|
arInOutJamFinger := "DB_JamArea113".stJam113_2.arCarrier, // TODO Topologie
|
||||||
|
xOutStopper => "MB3025",
|
||||||
|
xOutVarioMotor => "MA0145",
|
||||||
|
nOutStateLast => "DB_GLOB_TroState".arTroState["cMainTro113"],
|
||||||
|
stInOutHMI := "DB_Interface_HMI".stTRO.TRO113);
|
||||||
|
END_REGION
|
||||||
|
|
||||||
|
REGION TRO114 (1Sep) — CV-M4203
|
||||||
|
#TRO114.stInSeparator1.Settings.nSeparatorNo := "cSep114.1";
|
||||||
|
#TRO114.stInSeparator1.Settings.tDelayToNextItem := "TimeForSepWaiting_Short";
|
||||||
|
#TRO114.stInSeparator1.Settings.tTrailingTime := T#500ms; // TODO Timing
|
||||||
|
#TRO114.stInSeparator1.Settings.tHandlingTime := T#200ms; // TODO Timing
|
||||||
|
#TRO114.stInSeparator1.Settings.tJam := "TimeForSepJam";
|
||||||
|
#TRO114.stInSeparator1.stSenInSep := "DB_Inputs".Sensors["cInBG3024"];
|
||||||
|
#TRO114.stInSenJam2 := "DB_Inputs".Sensors["cInBGxxxx"];
|
||||||
|
|
||||||
|
#TRO114.stInPriorityManager.xReleaseOk := TRUE; // TODO Priority
|
||||||
|
|
||||||
|
#TRO114(nInMainTroNo := "cMainTro114",
|
||||||
|
xInSftyOk := TRUE, // TODO Safety
|
||||||
|
xInAllRdyToStart := TRUE,
|
||||||
|
xInCarouselRun := TRUE, // TODO Conveyor
|
||||||
|
xInRelease := TRUE, // TODO Release
|
||||||
|
stInOutMachineState := #stInOutControlUnit, // TODO ControlUnit
|
||||||
|
arInOutJamEntr1 := "DB_JamArea114".stJam114_1.arCarrier, // TODO Topologie
|
||||||
|
stInOutJamEntr1 := "DB_JamArea114".stJam114_1.stData,
|
||||||
|
arInOutJamExit2 := "DB_JamArea114".stJam114_2.arCarrier, // TODO Topologie
|
||||||
|
stInOutJamExit2 := "DB_JamArea114".stJam114_2.stData,
|
||||||
|
xOutStopper1 => "MB3024",
|
||||||
|
nOutStateLast => "DB_GLOB_TroState".arTroState["cMainTro114"],
|
||||||
|
stInOutHMI := "DB_Interface_HMI".stTRO.TRO114);
|
||||||
|
END_REGION
|
||||||
|
|
||||||
|
REGION TRO115 (Vario) — CV-M4203_A
|
||||||
|
#TRO115.stInSeparator1.Settings.nSeparatorNo := "cSep115.1";
|
||||||
|
#TRO115.stInSeparator1.Settings.tDelayToNextItem := "TimeForSepWaiting_Short";
|
||||||
|
#TRO115.stInSeparator1.stSenInSep := "DB_Inputs".Sensors["cInBG3120"];
|
||||||
|
#TRO115.stInVario.stSenCarrInPos := "DB_Inputs".Sensors["cInBG3121"];
|
||||||
|
#TRO115.stInVario.stSenFinger := "DB_Inputs".Sensors["cInBGxxxx"];
|
||||||
|
#TRO115.stInVario.stSenJam := "DB_Inputs".Sensors["cInBG3124"];
|
||||||
|
|
||||||
|
#TRO115(nInMainTroNo := "cMainTro115",
|
||||||
|
xInSftyOk := TRUE, // TODO Safety
|
||||||
|
xInAllRdyToStart := TRUE,
|
||||||
|
xInRelease := TRUE, // TODO Release
|
||||||
|
stInOutMachineState := #stInOutControlUnit, // TODO ControlUnit
|
||||||
|
arInOutJamEntr1 := "DB_JamArea115".stJam115_1.arCarrier, // TODO Topologie
|
||||||
|
stInOutJamEntr1 := "DB_JamArea115".stJam115_1.stData,
|
||||||
|
arInOutJamFinger := "DB_JamArea115".stJam115_2.arCarrier, // TODO Topologie
|
||||||
|
xOutStopper => "MB3120",
|
||||||
|
xOutVarioMotor => "MA0147",
|
||||||
|
nOutStateLast => "DB_GLOB_TroState".arTroState["cMainTro115"],
|
||||||
|
stInOutHMI := "DB_Interface_HMI".stTRO.TRO115);
|
||||||
|
END_REGION
|
||||||
|
|
||||||
|
REGION fbConveyor4203_B — CV-M4203_B
|
||||||
|
#fbConveyor4203_B.Settings.tEnergySafeTime := "cTimeEnergySafe";
|
||||||
|
#fbConveyor4203_B.Settings.xGridActive := FALSE; // TODO Grid
|
||||||
|
#fbConveyor4203_B.Settings.sMotorProtectName := 'FC0153';
|
||||||
|
|
||||||
|
#fbConveyor4203_B(xInEnabled := TRUE, // TODO Enable
|
||||||
|
xInMotorProtection := "FC0153",
|
||||||
|
xInPowerContactor := "MA0153",
|
||||||
|
stInOutHMI := "DB_Interface_HMI".stConveyors.fbConveyor4203_B);
|
||||||
|
END_REGION
|
||||||
|
|
||||||
|
REGION TRO117 (1Sep1Swi) — KR-M4204
|
||||||
|
#TRO117.stInSeparator1.Settings.nSeparatorNo := "cSep117.1";
|
||||||
|
#TRO117.stInSeparator1.Settings.tDelayToNextItem := "TimeForSepWaiting_Short";
|
||||||
|
#TRO117.stInSeparator1.Settings.tTrailingTime := T#100ms; // TODO Timing
|
||||||
|
#TRO117.stInSeparator1.Settings.tHandlingTime := T#50ms; // TODO Timing
|
||||||
|
#TRO117.stInSeparator1.Settings.tJam := "TimeForSepJam";
|
||||||
|
#TRO117.stInSeparator1.stSenInSep := "DB_Inputs".Sensors["cInBG3010"];
|
||||||
|
#TRO117.stInSenJam2 := "DB_Inputs".Sensors["cInBG3012"];
|
||||||
|
#TRO117.stInSwitch1.Settings.nSwitchNo := "cSwi117.1";
|
||||||
|
|
||||||
|
#TRO117(nInMainTroNo := "cMainTro117",
|
||||||
|
xInSftyOk := TRUE, // TODO Safety
|
||||||
|
xInAllRdyToStart := TRUE,
|
||||||
|
xInCarouselRun1 := TRUE, // TODO Conveyor
|
||||||
|
xInRelease := TRUE, // TODO Release
|
||||||
|
stInOutMachineState := #stInOutControlUnit, // TODO ControlUnit
|
||||||
|
arInOutJamEntr1 := "DB_JamArea117".stJam117_1.arCarrier, // TODO Topologie
|
||||||
|
stInOutJamEntr1 := "DB_JamArea117".stJam117_1.stData,
|
||||||
|
arInOutJamExit2 := "DB_JamArea117".stJam117_2.arCarrier, // TODO Topologie (Dir1)
|
||||||
|
stInOutJamExit2 := "DB_JamArea117".stJam117_2.stData,
|
||||||
|
arInOutJamExit3 := "DB_JamArea117".stJam117_3.arCarrier, // TODO Topologie (Dir2)
|
||||||
|
stInOutJamExit3 := "DB_JamArea117".stJam117_3.stData,
|
||||||
|
xOutStopper1 => "MB3010",
|
||||||
|
xOutSw1ExTo3 => "MB3015",
|
||||||
|
nOutStateLast => "DB_GLOB_TroState".arTroState["cMainTro117"],
|
||||||
|
stInOutHMI := "DB_Interface_HMI".stTRO.TRO117);
|
||||||
|
END_REGION
|
||||||
|
|
||||||
|
REGION TRO118 (1Sep) — CV-M4302
|
||||||
|
#TRO118.stInSeparator1.Settings.nSeparatorNo := "cSep118.1";
|
||||||
|
#TRO118.stInSeparator1.Settings.tDelayToNextItem := "TimeForSepWaiting_Short";
|
||||||
|
#TRO118.stInSeparator1.Settings.tTrailingTime := T#500ms; // TODO Timing
|
||||||
|
#TRO118.stInSeparator1.Settings.tHandlingTime := T#200ms; // TODO Timing
|
||||||
|
#TRO118.stInSeparator1.Settings.tJam := "TimeForSepJam";
|
||||||
|
#TRO118.stInSeparator1.stSenInSep := "DB_Inputs".Sensors["cInBG3125"];
|
||||||
|
#TRO118.stInSenJam2 := "DB_Inputs".Sensors["cInBGxxxx"];
|
||||||
|
|
||||||
|
#TRO118.stInPriorityManager.xReleaseOk := TRUE; // TODO Priority
|
||||||
|
|
||||||
|
#TRO118(nInMainTroNo := "cMainTro118",
|
||||||
|
xInSftyOk := TRUE, // TODO Safety
|
||||||
|
xInAllRdyToStart := TRUE,
|
||||||
|
xInCarouselRun := TRUE, // TODO Conveyor
|
||||||
|
xInRelease := TRUE, // TODO Release
|
||||||
|
stInOutMachineState := #stInOutControlUnit, // TODO ControlUnit
|
||||||
|
arInOutJamEntr1 := "DB_JamArea118".stJam118_1.arCarrier, // TODO Topologie
|
||||||
|
stInOutJamEntr1 := "DB_JamArea118".stJam118_1.stData,
|
||||||
|
arInOutJamExit2 := "DB_JamArea118".stJam118_2.arCarrier, // TODO Topologie
|
||||||
|
stInOutJamExit2 := "DB_JamArea118".stJam118_2.stData,
|
||||||
|
xOutStopper1 => "MB3125",
|
||||||
|
nOutStateLast => "DB_GLOB_TroState".arTroState["cMainTro118"],
|
||||||
|
stInOutHMI := "DB_Interface_HMI".stTRO.TRO118);
|
||||||
|
END_REGION
|
||||||
|
|
||||||
|
REGION TRO119 (Vario) — CV-M4302_A
|
||||||
|
#TRO119.stInSeparator1.Settings.nSeparatorNo := "cSep119.1";
|
||||||
|
#TRO119.stInSeparator1.Settings.tDelayToNextItem := "TimeForSepWaiting_Short";
|
||||||
|
#TRO119.stInSeparator1.stSenInSep := "DB_Inputs".Sensors["cInBGxxxx"];
|
||||||
|
#TRO119.stInVario.stSenCarrInPos := "DB_Inputs".Sensors["cInBGxxxx"];
|
||||||
|
#TRO119.stInVario.stSenFinger := "DB_Inputs".Sensors["cInBG3122"];
|
||||||
|
#TRO119.stInVario.stSenJam := "DB_Inputs".Sensors["cInBG3150"];
|
||||||
|
|
||||||
|
#TRO119(nInMainTroNo := "cMainTro119",
|
||||||
|
xInSftyOk := TRUE, // TODO Safety
|
||||||
|
xInAllRdyToStart := TRUE,
|
||||||
|
xInRelease := TRUE, // TODO Release
|
||||||
|
stInOutMachineState := #stInOutControlUnit, // TODO ControlUnit
|
||||||
|
arInOutJamEntr1 := "DB_JamArea119".stJam119_1.arCarrier, // TODO Topologie
|
||||||
|
stInOutJamEntr1 := "DB_JamArea119".stJam119_1.stData,
|
||||||
|
arInOutJamFinger := "DB_JamArea119".stJam119_2.arCarrier, // TODO Topologie
|
||||||
|
xOutStopper => "MBxxxx",
|
||||||
|
xOutVarioMotor => "MA0154",
|
||||||
|
nOutStateLast => "DB_GLOB_TroState".arTroState["cMainTro119"],
|
||||||
|
stInOutHMI := "DB_Interface_HMI".stTRO.TRO119);
|
||||||
|
END_REGION
|
||||||
|
|
||||||
|
REGION TRO120 (Vario) — CV-M4302_B
|
||||||
|
#TRO120.stInSeparator1.Settings.nSeparatorNo := "cSep120.1";
|
||||||
|
#TRO120.stInSeparator1.Settings.tDelayToNextItem := "TimeForSepWaiting_Short";
|
||||||
|
#TRO120.stInSeparator1.stSenInSep := "DB_Inputs".Sensors["cInBG3130"];
|
||||||
|
#TRO120.stInVario.stSenCarrInPos := "DB_Inputs".Sensors["cInBG3131"];
|
||||||
|
#TRO120.stInVario.stSenFinger := "DB_Inputs".Sensors["cInBG3132"];
|
||||||
|
#TRO120.stInVario.stSenJam := "DB_Inputs".Sensors["cInBG3126"];
|
||||||
|
|
||||||
|
#TRO120(nInMainTroNo := "cMainTro120",
|
||||||
|
xInSftyOk := TRUE, // TODO Safety
|
||||||
|
xInAllRdyToStart := TRUE,
|
||||||
|
xInRelease := TRUE, // TODO Release
|
||||||
|
stInOutMachineState := #stInOutControlUnit, // TODO ControlUnit
|
||||||
|
arInOutJamEntr1 := "DB_JamArea120".stJam120_1.arCarrier, // TODO Topologie
|
||||||
|
stInOutJamEntr1 := "DB_JamArea120".stJam120_1.stData,
|
||||||
|
arInOutJamFinger := "DB_JamArea120".stJam120_2.arCarrier, // TODO Topologie
|
||||||
|
xOutStopper => "MB3130",
|
||||||
|
xOutVarioMotor => "MA0150",
|
||||||
|
nOutStateLast => "DB_GLOB_TroState".arTroState["cMainTro120"],
|
||||||
|
stInOutHMI := "DB_Interface_HMI".stTRO.TRO120);
|
||||||
|
END_REGION
|
||||||
|
|
||||||
|
REGION fbConveyor4402_A — CV-M4402_A
|
||||||
|
#fbConveyor4402_A.Settings.tEnergySafeTime := "cTimeEnergySafe";
|
||||||
|
#fbConveyor4402_A.Settings.xGridActive := FALSE; // TODO Grid
|
||||||
|
#fbConveyor4402_A.Settings.sMotorProtectName := 'FC0155';
|
||||||
|
|
||||||
|
#fbConveyor4402_A(xInEnabled := TRUE, // TODO Enable
|
||||||
|
xInMotorProtection := "FC0155",
|
||||||
|
xInPowerContactor := "MA0155",
|
||||||
|
stInOutHMI := "DB_Interface_HMI".stConveyors.fbConveyor4402_A);
|
||||||
|
END_REGION
|
||||||
|
|
||||||
|
REGION TRO122 (Vario) — CV-M4402_B
|
||||||
|
#TRO122.stInSeparator1.Settings.nSeparatorNo := "cSep122.1";
|
||||||
|
#TRO122.stInSeparator1.Settings.tDelayToNextItem := "TimeForSepWaiting_Short";
|
||||||
|
#TRO122.stInSeparator1.stSenInSep := "DB_Inputs".Sensors["cInBG3135"];
|
||||||
|
#TRO122.stInVario.stSenCarrInPos := "DB_Inputs".Sensors["cInBG3136"];
|
||||||
|
#TRO122.stInVario.stSenFinger := "DB_Inputs".Sensors["cInBG3137"];
|
||||||
|
#TRO122.stInVario.stSenJam := "DB_Inputs".Sensors["cInBG3134"];
|
||||||
|
|
||||||
|
#TRO122(nInMainTroNo := "cMainTro122",
|
||||||
|
xInSftyOk := TRUE, // TODO Safety
|
||||||
|
xInAllRdyToStart := TRUE,
|
||||||
|
xInRelease := TRUE, // TODO Release
|
||||||
|
stInOutMachineState := #stInOutControlUnit, // TODO ControlUnit
|
||||||
|
arInOutJamEntr1 := "DB_JamArea122".stJam122_1.arCarrier, // TODO Topologie
|
||||||
|
stInOutJamEntr1 := "DB_JamArea122".stJam122_1.stData,
|
||||||
|
arInOutJamFinger := "DB_JamArea122".stJam122_2.arCarrier, // TODO Topologie
|
||||||
|
xOutStopper => "MB3135",
|
||||||
|
xOutVarioMotor => "MA0151",
|
||||||
|
nOutStateLast => "DB_GLOB_TroState".arTroState["cMainTro122"],
|
||||||
|
stInOutHMI := "DB_Interface_HMI".stTRO.TRO122);
|
||||||
|
END_REGION
|
||||||
|
|
||||||
|
REGION TRO123 (Vario) — CV-M4403
|
||||||
|
#TRO123.stInSeparator1.Settings.nSeparatorNo := "cSep123.1";
|
||||||
|
#TRO123.stInSeparator1.Settings.tDelayToNextItem := "TimeForSepWaiting_Short";
|
||||||
|
#TRO123.stInSeparator1.stSenInSep := "DB_Inputs".Sensors["cInBG3073"];
|
||||||
|
#TRO123.stInVario.stSenCarrInPos := "DB_Inputs".Sensors["cInBG3074"];
|
||||||
|
#TRO123.stInVario.stSenFinger := "DB_Inputs".Sensors["cInBG3075"];
|
||||||
|
#TRO123.stInVario.stSenJam := "DB_Inputs".Sensors["cInBG3071"];
|
||||||
|
|
||||||
|
#TRO123(nInMainTroNo := "cMainTro123",
|
||||||
|
xInSftyOk := TRUE, // TODO Safety
|
||||||
|
xInAllRdyToStart := TRUE,
|
||||||
|
xInRelease := TRUE, // TODO Release
|
||||||
|
stInOutMachineState := #stInOutControlUnit, // TODO ControlUnit
|
||||||
|
arInOutJamEntr1 := "DB_JamArea123".stJam123_1.arCarrier, // TODO Topologie
|
||||||
|
stInOutJamEntr1 := "DB_JamArea123".stJam123_1.stData,
|
||||||
|
arInOutJamFinger := "DB_JamArea123".stJam123_2.arCarrier, // TODO Topologie
|
||||||
|
xOutStopper => "MB3073",
|
||||||
|
xOutVarioMotor => "MA0143",
|
||||||
|
nOutStateLast => "DB_GLOB_TroState".arTroState["cMainTro123"],
|
||||||
|
stInOutHMI := "DB_Interface_HMI".stTRO.TRO123);
|
||||||
|
END_REGION
|
||||||
|
|
||||||
|
REGION TRO124 (Vario) — CV-M4501
|
||||||
|
#TRO124.stInSeparator1.Settings.nSeparatorNo := "cSep124.1";
|
||||||
|
#TRO124.stInSeparator1.Settings.tDelayToNextItem := "TimeForSepWaiting_Short";
|
||||||
|
#TRO124.stInSeparator1.stSenInSep := "DB_Inputs".Sensors["cInBG3020"];
|
||||||
|
#TRO124.stInVario.stSenCarrInPos := "DB_Inputs".Sensors["cInBG3011"];
|
||||||
|
#TRO124.stInVario.stSenFinger := "DB_Inputs".Sensors["cInBG3021"];
|
||||||
|
#TRO124.stInVario.stSenJam := "DB_Inputs".Sensors["cInBG3017"];
|
||||||
|
|
||||||
|
#TRO124(nInMainTroNo := "cMainTro124",
|
||||||
|
xInSftyOk := TRUE, // TODO Safety
|
||||||
|
xInAllRdyToStart := TRUE,
|
||||||
|
xInRelease := TRUE, // TODO Release
|
||||||
|
stInOutMachineState := #stInOutControlUnit, // TODO ControlUnit
|
||||||
|
arInOutJamEntr1 := "DB_JamArea124".stJam124_1.arCarrier, // TODO Topologie
|
||||||
|
stInOutJamEntr1 := "DB_JamArea124".stJam124_1.stData,
|
||||||
|
arInOutJamFinger := "DB_JamArea124".stJam124_2.arCarrier, // TODO Topologie
|
||||||
|
xOutStopper => "MB3020",
|
||||||
|
xOutVarioMotor => "MA0144",
|
||||||
|
nOutStateLast => "DB_GLOB_TroState".arTroState["cMainTro124"],
|
||||||
|
stInOutHMI := "DB_Interface_HMI".stTRO.TRO124);
|
||||||
|
END_REGION
|
||||||
|
|
||||||
|
REGION TRO125 (Vario) — CV-M4502
|
||||||
|
#TRO125.stInSeparator1.Settings.nSeparatorNo := "cSep125.1";
|
||||||
|
#TRO125.stInSeparator1.Settings.tDelayToNextItem := "TimeForSepWaiting_Short";
|
||||||
|
#TRO125.stInSeparator1.stSenInSep := "DB_Inputs".Sensors["cInBG3063"];
|
||||||
|
#TRO125.stInVario.stSenCarrInPos := "DB_Inputs".Sensors["cInBG3064"];
|
||||||
|
#TRO125.stInVario.stSenFinger := "DB_Inputs".Sensors["cInBG3065"];
|
||||||
|
#TRO125.stInVario.stSenJam := "DB_Inputs".Sensors["cInBG3067"];
|
||||||
|
|
||||||
|
#TRO125(nInMainTroNo := "cMainTro125",
|
||||||
|
xInSftyOk := TRUE, // TODO Safety
|
||||||
|
xInAllRdyToStart := TRUE,
|
||||||
|
xInRelease := TRUE, // TODO Release
|
||||||
|
stInOutMachineState := #stInOutControlUnit, // TODO ControlUnit
|
||||||
|
arInOutJamEntr1 := "DB_JamArea125".stJam125_1.arCarrier, // TODO Topologie
|
||||||
|
stInOutJamEntr1 := "DB_JamArea125".stJam125_1.stData,
|
||||||
|
arInOutJamFinger := "DB_JamArea125".stJam125_2.arCarrier, // TODO Topologie
|
||||||
|
xOutStopper => "MB3063",
|
||||||
|
xOutVarioMotor => "MA0142",
|
||||||
|
nOutStateLast => "DB_GLOB_TroState".arTroState["cMainTro125"],
|
||||||
|
stInOutHMI := "DB_Interface_HMI".stTRO.TRO125);
|
||||||
|
END_REGION
|
||||||
|
|
||||||
|
REGION TRO126 (Vario) — CV-M4503
|
||||||
|
#TRO126.stInSeparator1.Settings.nSeparatorNo := "cSep126.1";
|
||||||
|
#TRO126.stInSeparator1.Settings.tDelayToNextItem := "TimeForSepWaiting_Short";
|
||||||
|
#TRO126.stInSeparator1.stSenInSep := "DB_Inputs".Sensors["cInBG3060"];
|
||||||
|
#TRO126.stInVario.stSenCarrInPos := "DB_Inputs".Sensors["cInBG3082"];
|
||||||
|
#TRO126.stInVario.stSenFinger := "DB_Inputs".Sensors["cInBG3081"];
|
||||||
|
#TRO126.stInVario.stSenJam := "DB_Inputs".Sensors["cInBG3061"];
|
||||||
|
|
||||||
|
#TRO126(nInMainTroNo := "cMainTro126",
|
||||||
|
xInSftyOk := TRUE, // TODO Safety
|
||||||
|
xInAllRdyToStart := TRUE,
|
||||||
|
xInRelease := TRUE, // TODO Release
|
||||||
|
stInOutMachineState := #stInOutControlUnit, // TODO ControlUnit
|
||||||
|
arInOutJamEntr1 := "DB_JamArea126".stJam126_1.arCarrier, // TODO Topologie
|
||||||
|
stInOutJamEntr1 := "DB_JamArea126".stJam126_1.stData,
|
||||||
|
arInOutJamFinger := "DB_JamArea126".stJam126_2.arCarrier, // TODO Topologie
|
||||||
|
xOutStopper => "MB3060",
|
||||||
|
xOutVarioMotor => "MA0141",
|
||||||
|
nOutStateLast => "DB_GLOB_TroState".arTroState["cMainTro126"],
|
||||||
|
stInOutHMI := "DB_Interface_HMI".stTRO.TRO126);
|
||||||
|
END_REGION
|
||||||
|
|
||||||
|
REGION fbConveyorM0103 — CV-PM0103
|
||||||
|
#fbConveyorM0103.Settings.tEnergySafeTime := "cTimeEnergySafe";
|
||||||
|
#fbConveyorM0103.Settings.xGridActive := FALSE; // TODO Grid
|
||||||
|
#fbConveyorM0103.Settings.sMotorProtectName := 'FCxxxx';
|
||||||
|
|
||||||
|
#fbConveyorM0103(xInEnabled := TRUE, // TODO Enable
|
||||||
|
xInMotorProtection := "FCxxxx",
|
||||||
|
xInPowerContactor := "MA0062",
|
||||||
|
stInOutHMI := "DB_Interface_HMI".stConveyors.fbConveyorM0103);
|
||||||
|
END_REGION
|
||||||
|
|
||||||
|
END_FUNCTION_BLOCK
|
||||||
@@ -0,0 +1,988 @@
|
|||||||
|
FUNCTION_BLOCK "FB_Main_skel_UH02"
|
||||||
|
{ S7_Optimized_Access := 'TRUE' }
|
||||||
|
VERSION : 0.1
|
||||||
|
// ============================================================
|
||||||
|
// AUTOMATISCH GENERIERTES GRUNDGERUEST — create_skel.py
|
||||||
|
// Quelle: E/A-Listen UH02 (data/)
|
||||||
|
// TODO-Marken kennzeichnen manuell zu ergaenzende Stellen
|
||||||
|
// (Timings, Topologie/JamAreas, Safety, Release, Priority).
|
||||||
|
// ============================================================
|
||||||
|
VAR
|
||||||
|
TRO201 : "FB_ILS_MTRO_PinStore_Auto"; // KR-K1101 / Block 1.1.1
|
||||||
|
TRO202 : "FB_ILS_MTRO_PinStore_Auto"; // KR-K1102 / Block 1.1.3
|
||||||
|
TRO203 : "FB_ILS_MTRO_PinStore_Auto"; // KR-K1201 / Block 1.2.1
|
||||||
|
TRO204 : "FB_ILS_MTRO_PinStore_Auto"; // KR-K1202 / Block 1.2.3
|
||||||
|
TRO205 : "FB_ILS_MTRO_PinStore_Auto"; // KR-K1303 / Block 1.3.1
|
||||||
|
TRO206 : "FB_ILS_MTRO_PinStore_Auto"; // KR-K1304 / Block 1.3.3
|
||||||
|
TRO207 : "FB_ILS_MTRO_1Sep"; // KR-M1100
|
||||||
|
TRO208 : "FB_ILS_MTRO_PinStore_Auto"; // KR-M1101 / Block 1.1.1
|
||||||
|
TRO209 : "FB_ILS_MTRO_PinStore_Auto"; // KR-M1102 / Block 1.1.3
|
||||||
|
TRO210 : "FB_ILS_MTRO_1Sep"; // KR-M1103
|
||||||
|
TRO211 : "FB_ILS_MTRO_1Sep"; // CV-M1104
|
||||||
|
TRO212 : "FB_ILS_MTRO_Vario"; // CV-M1105
|
||||||
|
TRO213 : "FB_ILS_MTRO_Vario"; // CV-M1106 / Block 1.1.2
|
||||||
|
TRO214 : "FB_ILS_MTRO_Vario"; // CV-M1107
|
||||||
|
TRO215 : "FB_ILS_MTRO_Vario"; // CV-M1108 / Block 1.1.4
|
||||||
|
TRO216 : "FB_ILS_MTRO_Vario"; // CV-M1109
|
||||||
|
fbConveyor1110 : "FB_Conveyor"; // KR-M1110
|
||||||
|
TRO218 : "FB_ILS_MTRO_PinStore_Auto"; // KR-M1201 / Block 1.2.1
|
||||||
|
TRO219 : "FB_ILS_MTRO_PinStore_Auto"; // KR-M1202 / Block 1.2.3
|
||||||
|
TRO220 : "FB_ILS_MTRO_1Sep"; // KR-M1203
|
||||||
|
fbConveyor1204 : "FB_Conveyor"; // KR-M1204
|
||||||
|
TRO222 : "FB_ILS_MTRO_Vario"; // CV-M1205
|
||||||
|
TRO223 : "FB_ILS_MTRO_Vario"; // CV-M1206
|
||||||
|
TRO224 : "FB_ILS_MTRO_Vario"; // CV-M1207 / Block 1.2.3
|
||||||
|
TRO225 : "FB_ILS_MTRO_Vario"; // CV-M1208
|
||||||
|
TRO226 : "FB_ILS_MTRO_Vario"; // CV-M1209
|
||||||
|
TRO227 : "FB_ILS_MTRO_1Sep"; // KR-M1301
|
||||||
|
TRO228 : "FB_ILS_MTRO_1Sep"; // KR-M1302
|
||||||
|
TRO229 : "FB_ILS_MTRO_PinStore_Auto"; // KR-M1303 / Block 1.3.1
|
||||||
|
TRO230 : "FB_ILS_MTRO_PinStore_Auto"; // KR-M1304 / Block 1.3.3
|
||||||
|
TRO231 : "FB_ILS_MTRO_Vario"; // CV-M1305
|
||||||
|
TRO232 : "FB_ILS_MTRO_Vario"; // CV-M1306 / Block 1.3.2
|
||||||
|
TRO233 : "FB_ILS_MTRO_Vario"; // CV-M1307
|
||||||
|
TRO234 : "FB_ILS_MTRO_Vario"; // CV-M1308
|
||||||
|
TRO235 : "FB_ILS_MTRO_Vario"; // CV-M1309
|
||||||
|
TRO236 : "FB_ILS_MTRO_Vario"; // CV-M1401
|
||||||
|
TRO237 : "FB_ILS_MTRO_Vario"; // CV-M1501
|
||||||
|
TRO238 : "FB_ILS_MTRO_Vario"; // CV-M1601
|
||||||
|
TRO239 : "FB_ILS_MTRO_1Sep"; // CV-M1801
|
||||||
|
TRO240 : "FB_ILS_MTRO_Vario"; // CV-M4701
|
||||||
|
END_VAR
|
||||||
|
|
||||||
|
BEGIN
|
||||||
|
REGION TRO201 (PinStore_Auto) — KR-K1101 / Block 1.1.1
|
||||||
|
#TRO201.stInSeparator1.Settings.nSeparatorNo := "cSep201.1";
|
||||||
|
#TRO201.stInSeparator1.Settings.tDelayToNextItem := "TimeForSepWaiting_Short";
|
||||||
|
#TRO201.stInSeparator1.Settings.tTrailingTime := T#500ms; // TODO Timing
|
||||||
|
#TRO201.stInSeparator1.Settings.tHandlingTime := T#200ms; // TODO Timing
|
||||||
|
#TRO201.stInSeparator1.Settings.tJam := "TimeForSepJam";
|
||||||
|
#TRO201.stInSeparator1.stSenInSep := "DB_Inputs".Sensors["cInBGxxxx"];
|
||||||
|
#TRO201.stInSenJam2 := "DB_Inputs".Sensors["cInBG3065"];
|
||||||
|
|
||||||
|
#TRO201.stInPriorityManager.xReleaseOk := TRUE; // TODO Priority
|
||||||
|
|
||||||
|
#TRO201(nInMainTroNo := "cMainTro201",
|
||||||
|
xInSftyOk := TRUE, // TODO Safety
|
||||||
|
xInAllRdyToStart := TRUE,
|
||||||
|
xInCarouselRun := TRUE, // TODO Conveyor
|
||||||
|
xInRelease := TRUE, // TODO Release
|
||||||
|
stInOutMachineState := #stInOutControlUnit, // TODO ControlUnit
|
||||||
|
arInOutJamEntr1 := "DB_JamArea201".stJam201_1.arCarrier, // TODO Topologie
|
||||||
|
stInOutJamEntr1 := "DB_JamArea201".stJam201_1.stData,
|
||||||
|
arInOutJamExit2 := "DB_JamArea201".stJam201_2.arCarrier, // TODO Topologie
|
||||||
|
stInOutJamExit2 := "DB_JamArea201".stJam201_2.stData,
|
||||||
|
xOutStopper1 => "MBxxxx",
|
||||||
|
nOutStateLast => "DB_GLOB_TroState".arTroState["cMainTro201"],
|
||||||
|
stInOutHMI := "DB_Interface_HMI".stTRO.TRO201);
|
||||||
|
END_REGION
|
||||||
|
|
||||||
|
REGION TRO202 (PinStore_Auto) — KR-K1102 / Block 1.1.3
|
||||||
|
#TRO202.stInSeparator1.Settings.nSeparatorNo := "cSep202.1";
|
||||||
|
#TRO202.stInSeparator1.Settings.tDelayToNextItem := "TimeForSepWaiting_Short";
|
||||||
|
#TRO202.stInSeparator1.Settings.tTrailingTime := T#500ms; // TODO Timing
|
||||||
|
#TRO202.stInSeparator1.Settings.tHandlingTime := T#200ms; // TODO Timing
|
||||||
|
#TRO202.stInSeparator1.Settings.tJam := "TimeForSepJam";
|
||||||
|
#TRO202.stInSeparator1.stSenInSep := "DB_Inputs".Sensors["cInBGxxxx"];
|
||||||
|
#TRO202.stInSenJam2 := "DB_Inputs".Sensors["cInBG3125"];
|
||||||
|
|
||||||
|
#TRO202.stInPriorityManager.xReleaseOk := TRUE; // TODO Priority
|
||||||
|
|
||||||
|
#TRO202(nInMainTroNo := "cMainTro202",
|
||||||
|
xInSftyOk := TRUE, // TODO Safety
|
||||||
|
xInAllRdyToStart := TRUE,
|
||||||
|
xInCarouselRun := TRUE, // TODO Conveyor
|
||||||
|
xInRelease := TRUE, // TODO Release
|
||||||
|
stInOutMachineState := #stInOutControlUnit, // TODO ControlUnit
|
||||||
|
arInOutJamEntr1 := "DB_JamArea202".stJam202_1.arCarrier, // TODO Topologie
|
||||||
|
stInOutJamEntr1 := "DB_JamArea202".stJam202_1.stData,
|
||||||
|
arInOutJamExit2 := "DB_JamArea202".stJam202_2.arCarrier, // TODO Topologie
|
||||||
|
stInOutJamExit2 := "DB_JamArea202".stJam202_2.stData,
|
||||||
|
xOutStopper1 => "MBxxxx",
|
||||||
|
nOutStateLast => "DB_GLOB_TroState".arTroState["cMainTro202"],
|
||||||
|
stInOutHMI := "DB_Interface_HMI".stTRO.TRO202);
|
||||||
|
END_REGION
|
||||||
|
|
||||||
|
REGION TRO203 (PinStore_Auto) — KR-K1201 / Block 1.2.1
|
||||||
|
#TRO203.stInSeparator1.Settings.nSeparatorNo := "cSep203.1";
|
||||||
|
#TRO203.stInSeparator1.Settings.tDelayToNextItem := "TimeForSepWaiting_Short";
|
||||||
|
#TRO203.stInSeparator1.Settings.tTrailingTime := T#500ms; // TODO Timing
|
||||||
|
#TRO203.stInSeparator1.Settings.tHandlingTime := T#200ms; // TODO Timing
|
||||||
|
#TRO203.stInSeparator1.Settings.tJam := "TimeForSepJam";
|
||||||
|
#TRO203.stInSeparator1.stSenInSep := "DB_Inputs".Sensors["cInBGxxxx"];
|
||||||
|
#TRO203.stInSenJam2 := "DB_Inputs".Sensors["cInBG3553"];
|
||||||
|
|
||||||
|
#TRO203.stInPriorityManager.xReleaseOk := TRUE; // TODO Priority
|
||||||
|
|
||||||
|
#TRO203(nInMainTroNo := "cMainTro203",
|
||||||
|
xInSftyOk := TRUE, // TODO Safety
|
||||||
|
xInAllRdyToStart := TRUE,
|
||||||
|
xInCarouselRun := TRUE, // TODO Conveyor
|
||||||
|
xInRelease := TRUE, // TODO Release
|
||||||
|
stInOutMachineState := #stInOutControlUnit, // TODO ControlUnit
|
||||||
|
arInOutJamEntr1 := "DB_JamArea203".stJam203_1.arCarrier, // TODO Topologie
|
||||||
|
stInOutJamEntr1 := "DB_JamArea203".stJam203_1.stData,
|
||||||
|
arInOutJamExit2 := "DB_JamArea203".stJam203_2.arCarrier, // TODO Topologie
|
||||||
|
stInOutJamExit2 := "DB_JamArea203".stJam203_2.stData,
|
||||||
|
xOutStopper1 => "MBxxxx",
|
||||||
|
nOutStateLast => "DB_GLOB_TroState".arTroState["cMainTro203"],
|
||||||
|
stInOutHMI := "DB_Interface_HMI".stTRO.TRO203);
|
||||||
|
END_REGION
|
||||||
|
|
||||||
|
REGION TRO204 (PinStore_Auto) — KR-K1202 / Block 1.2.3
|
||||||
|
#TRO204.stInSeparator1.Settings.nSeparatorNo := "cSep204.1";
|
||||||
|
#TRO204.stInSeparator1.Settings.tDelayToNextItem := "TimeForSepWaiting_Short";
|
||||||
|
#TRO204.stInSeparator1.Settings.tTrailingTime := T#500ms; // TODO Timing
|
||||||
|
#TRO204.stInSeparator1.Settings.tHandlingTime := T#200ms; // TODO Timing
|
||||||
|
#TRO204.stInSeparator1.Settings.tJam := "TimeForSepJam";
|
||||||
|
#TRO204.stInSeparator1.stSenInSep := "DB_Inputs".Sensors["cInBGxxxx"];
|
||||||
|
#TRO204.stInSenJam2 := "DB_Inputs".Sensors["cInBGxxxx"];
|
||||||
|
|
||||||
|
#TRO204.stInPriorityManager.xReleaseOk := TRUE; // TODO Priority
|
||||||
|
|
||||||
|
#TRO204(nInMainTroNo := "cMainTro204",
|
||||||
|
xInSftyOk := TRUE, // TODO Safety
|
||||||
|
xInAllRdyToStart := TRUE,
|
||||||
|
xInCarouselRun := TRUE, // TODO Conveyor
|
||||||
|
xInRelease := TRUE, // TODO Release
|
||||||
|
stInOutMachineState := #stInOutControlUnit, // TODO ControlUnit
|
||||||
|
arInOutJamEntr1 := "DB_JamArea204".stJam204_1.arCarrier, // TODO Topologie
|
||||||
|
stInOutJamEntr1 := "DB_JamArea204".stJam204_1.stData,
|
||||||
|
arInOutJamExit2 := "DB_JamArea204".stJam204_2.arCarrier, // TODO Topologie
|
||||||
|
stInOutJamExit2 := "DB_JamArea204".stJam204_2.stData,
|
||||||
|
xOutStopper1 => "MBxxxx",
|
||||||
|
nOutStateLast => "DB_GLOB_TroState".arTroState["cMainTro204"],
|
||||||
|
stInOutHMI := "DB_Interface_HMI".stTRO.TRO204);
|
||||||
|
END_REGION
|
||||||
|
|
||||||
|
REGION TRO205 (PinStore_Auto) — KR-K1303 / Block 1.3.1
|
||||||
|
#TRO205.stInSeparator1.Settings.nSeparatorNo := "cSep205.1";
|
||||||
|
#TRO205.stInSeparator1.Settings.tDelayToNextItem := "TimeForSepWaiting_Short";
|
||||||
|
#TRO205.stInSeparator1.Settings.tTrailingTime := T#500ms; // TODO Timing
|
||||||
|
#TRO205.stInSeparator1.Settings.tHandlingTime := T#200ms; // TODO Timing
|
||||||
|
#TRO205.stInSeparator1.Settings.tJam := "TimeForSepJam";
|
||||||
|
#TRO205.stInSeparator1.stSenInSep := "DB_Inputs".Sensors["cInBGxxxx"];
|
||||||
|
#TRO205.stInSenJam2 := "DB_Inputs".Sensors["cInBG4273"];
|
||||||
|
|
||||||
|
#TRO205.stInPriorityManager.xReleaseOk := TRUE; // TODO Priority
|
||||||
|
|
||||||
|
#TRO205(nInMainTroNo := "cMainTro205",
|
||||||
|
xInSftyOk := TRUE, // TODO Safety
|
||||||
|
xInAllRdyToStart := TRUE,
|
||||||
|
xInCarouselRun := TRUE, // TODO Conveyor
|
||||||
|
xInRelease := TRUE, // TODO Release
|
||||||
|
stInOutMachineState := #stInOutControlUnit, // TODO ControlUnit
|
||||||
|
arInOutJamEntr1 := "DB_JamArea205".stJam205_1.arCarrier, // TODO Topologie
|
||||||
|
stInOutJamEntr1 := "DB_JamArea205".stJam205_1.stData,
|
||||||
|
arInOutJamExit2 := "DB_JamArea205".stJam205_2.arCarrier, // TODO Topologie
|
||||||
|
stInOutJamExit2 := "DB_JamArea205".stJam205_2.stData,
|
||||||
|
xOutStopper1 => "MBxxxx",
|
||||||
|
nOutStateLast => "DB_GLOB_TroState".arTroState["cMainTro205"],
|
||||||
|
stInOutHMI := "DB_Interface_HMI".stTRO.TRO205);
|
||||||
|
END_REGION
|
||||||
|
|
||||||
|
REGION TRO206 (PinStore_Auto) — KR-K1304 / Block 1.3.3
|
||||||
|
#TRO206.stInSeparator1.Settings.nSeparatorNo := "cSep206.1";
|
||||||
|
#TRO206.stInSeparator1.Settings.tDelayToNextItem := "TimeForSepWaiting_Short";
|
||||||
|
#TRO206.stInSeparator1.Settings.tTrailingTime := T#500ms; // TODO Timing
|
||||||
|
#TRO206.stInSeparator1.Settings.tHandlingTime := T#200ms; // TODO Timing
|
||||||
|
#TRO206.stInSeparator1.Settings.tJam := "TimeForSepJam";
|
||||||
|
#TRO206.stInSeparator1.stSenInSep := "DB_Inputs".Sensors["cInBGxxxx"];
|
||||||
|
#TRO206.stInSenJam2 := "DB_Inputs".Sensors["cInBG4375"];
|
||||||
|
|
||||||
|
#TRO206.stInPriorityManager.xReleaseOk := TRUE; // TODO Priority
|
||||||
|
|
||||||
|
#TRO206(nInMainTroNo := "cMainTro206",
|
||||||
|
xInSftyOk := TRUE, // TODO Safety
|
||||||
|
xInAllRdyToStart := TRUE,
|
||||||
|
xInCarouselRun := TRUE, // TODO Conveyor
|
||||||
|
xInRelease := TRUE, // TODO Release
|
||||||
|
stInOutMachineState := #stInOutControlUnit, // TODO ControlUnit
|
||||||
|
arInOutJamEntr1 := "DB_JamArea206".stJam206_1.arCarrier, // TODO Topologie
|
||||||
|
stInOutJamEntr1 := "DB_JamArea206".stJam206_1.stData,
|
||||||
|
arInOutJamExit2 := "DB_JamArea206".stJam206_2.arCarrier, // TODO Topologie
|
||||||
|
stInOutJamExit2 := "DB_JamArea206".stJam206_2.stData,
|
||||||
|
xOutStopper1 => "MBxxxx",
|
||||||
|
nOutStateLast => "DB_GLOB_TroState".arTroState["cMainTro206"],
|
||||||
|
stInOutHMI := "DB_Interface_HMI".stTRO.TRO206);
|
||||||
|
END_REGION
|
||||||
|
|
||||||
|
REGION TRO207 (1Sep) — KR-M1100
|
||||||
|
#TRO207.stInSeparator1.Settings.nSeparatorNo := "cSep207.1";
|
||||||
|
#TRO207.stInSeparator1.Settings.tDelayToNextItem := "TimeForSepWaiting_Short";
|
||||||
|
#TRO207.stInSeparator1.Settings.tTrailingTime := T#500ms; // TODO Timing
|
||||||
|
#TRO207.stInSeparator1.Settings.tHandlingTime := T#200ms; // TODO Timing
|
||||||
|
#TRO207.stInSeparator1.Settings.tJam := "TimeForSepJam";
|
||||||
|
#TRO207.stInSeparator1.stSenInSep := "DB_Inputs".Sensors["cInBG4440"];
|
||||||
|
#TRO207.stInSenJam2 := "DB_Inputs".Sensors["cInBG4442"];
|
||||||
|
|
||||||
|
#TRO207.stInPriorityManager.xReleaseOk := TRUE; // TODO Priority
|
||||||
|
|
||||||
|
#TRO207(nInMainTroNo := "cMainTro207",
|
||||||
|
xInSftyOk := TRUE, // TODO Safety
|
||||||
|
xInAllRdyToStart := TRUE,
|
||||||
|
xInCarouselRun := TRUE, // TODO Conveyor
|
||||||
|
xInRelease := TRUE, // TODO Release
|
||||||
|
stInOutMachineState := #stInOutControlUnit, // TODO ControlUnit
|
||||||
|
arInOutJamEntr1 := "DB_JamArea207".stJam207_1.arCarrier, // TODO Topologie
|
||||||
|
stInOutJamEntr1 := "DB_JamArea207".stJam207_1.stData,
|
||||||
|
arInOutJamExit2 := "DB_JamArea207".stJam207_2.arCarrier, // TODO Topologie
|
||||||
|
stInOutJamExit2 := "DB_JamArea207".stJam207_2.stData,
|
||||||
|
xOutStopper1 => "MB4440",
|
||||||
|
nOutStateLast => "DB_GLOB_TroState".arTroState["cMainTro207"],
|
||||||
|
stInOutHMI := "DB_Interface_HMI".stTRO.TRO207);
|
||||||
|
END_REGION
|
||||||
|
|
||||||
|
REGION TRO208 (PinStore_Auto) — KR-M1101 / Block 1.1.1
|
||||||
|
#TRO208.stInSeparator1.Settings.nSeparatorNo := "cSep208.1";
|
||||||
|
#TRO208.stInSeparator1.Settings.tDelayToNextItem := "TimeForSepWaiting_Short";
|
||||||
|
#TRO208.stInSeparator1.Settings.tTrailingTime := T#500ms; // TODO Timing
|
||||||
|
#TRO208.stInSeparator1.Settings.tHandlingTime := T#200ms; // TODO Timing
|
||||||
|
#TRO208.stInSeparator1.Settings.tJam := "TimeForSepJam";
|
||||||
|
#TRO208.stInSeparator1.stSenInSep := "DB_Inputs".Sensors["cInBGxxxx"];
|
||||||
|
#TRO208.stInSenJam2 := "DB_Inputs".Sensors["cInBG3003"];
|
||||||
|
|
||||||
|
#TRO208.stInPriorityManager.xReleaseOk := TRUE; // TODO Priority
|
||||||
|
|
||||||
|
#TRO208(nInMainTroNo := "cMainTro208",
|
||||||
|
xInSftyOk := TRUE, // TODO Safety
|
||||||
|
xInAllRdyToStart := TRUE,
|
||||||
|
xInCarouselRun := TRUE, // TODO Conveyor
|
||||||
|
xInRelease := TRUE, // TODO Release
|
||||||
|
stInOutMachineState := #stInOutControlUnit, // TODO ControlUnit
|
||||||
|
arInOutJamEntr1 := "DB_JamArea208".stJam208_1.arCarrier, // TODO Topologie
|
||||||
|
stInOutJamEntr1 := "DB_JamArea208".stJam208_1.stData,
|
||||||
|
arInOutJamExit2 := "DB_JamArea208".stJam208_2.arCarrier, // TODO Topologie
|
||||||
|
stInOutJamExit2 := "DB_JamArea208".stJam208_2.stData,
|
||||||
|
xOutStopper1 => "MBxxxx",
|
||||||
|
nOutStateLast => "DB_GLOB_TroState".arTroState["cMainTro208"],
|
||||||
|
stInOutHMI := "DB_Interface_HMI".stTRO.TRO208);
|
||||||
|
END_REGION
|
||||||
|
|
||||||
|
REGION TRO209 (PinStore_Auto) — KR-M1102 / Block 1.1.3
|
||||||
|
#TRO209.stInSeparator1.Settings.nSeparatorNo := "cSep209.1";
|
||||||
|
#TRO209.stInSeparator1.Settings.tDelayToNextItem := "TimeForSepWaiting_Short";
|
||||||
|
#TRO209.stInSeparator1.Settings.tTrailingTime := T#500ms; // TODO Timing
|
||||||
|
#TRO209.stInSeparator1.Settings.tHandlingTime := T#200ms; // TODO Timing
|
||||||
|
#TRO209.stInSeparator1.Settings.tJam := "TimeForSepJam";
|
||||||
|
#TRO209.stInSeparator1.stSenInSep := "DB_Inputs".Sensors["cInBGxxxx"];
|
||||||
|
#TRO209.stInSenJam2 := "DB_Inputs".Sensors["cInBG3123"];
|
||||||
|
|
||||||
|
#TRO209.stInPriorityManager.xReleaseOk := TRUE; // TODO Priority
|
||||||
|
|
||||||
|
#TRO209(nInMainTroNo := "cMainTro209",
|
||||||
|
xInSftyOk := TRUE, // TODO Safety
|
||||||
|
xInAllRdyToStart := TRUE,
|
||||||
|
xInCarouselRun := TRUE, // TODO Conveyor
|
||||||
|
xInRelease := TRUE, // TODO Release
|
||||||
|
stInOutMachineState := #stInOutControlUnit, // TODO ControlUnit
|
||||||
|
arInOutJamEntr1 := "DB_JamArea209".stJam209_1.arCarrier, // TODO Topologie
|
||||||
|
stInOutJamEntr1 := "DB_JamArea209".stJam209_1.stData,
|
||||||
|
arInOutJamExit2 := "DB_JamArea209".stJam209_2.arCarrier, // TODO Topologie
|
||||||
|
stInOutJamExit2 := "DB_JamArea209".stJam209_2.stData,
|
||||||
|
xOutStopper1 => "MBxxxx",
|
||||||
|
nOutStateLast => "DB_GLOB_TroState".arTroState["cMainTro209"],
|
||||||
|
stInOutHMI := "DB_Interface_HMI".stTRO.TRO209);
|
||||||
|
END_REGION
|
||||||
|
|
||||||
|
REGION TRO210 (1Sep) — KR-M1103
|
||||||
|
#TRO210.stInSeparator1.Settings.nSeparatorNo := "cSep210.1";
|
||||||
|
#TRO210.stInSeparator1.Settings.tDelayToNextItem := "TimeForSepWaiting_Short";
|
||||||
|
#TRO210.stInSeparator1.Settings.tTrailingTime := T#500ms; // TODO Timing
|
||||||
|
#TRO210.stInSeparator1.Settings.tHandlingTime := T#200ms; // TODO Timing
|
||||||
|
#TRO210.stInSeparator1.Settings.tJam := "TimeForSepJam";
|
||||||
|
#TRO210.stInSeparator1.stSenInSep := "DB_Inputs".Sensors["cInBG3245"];
|
||||||
|
#TRO210.stInSenJam2 := "DB_Inputs".Sensors["cInBG3242"];
|
||||||
|
|
||||||
|
#TRO210.stInPriorityManager.xReleaseOk := TRUE; // TODO Priority
|
||||||
|
|
||||||
|
#TRO210(nInMainTroNo := "cMainTro210",
|
||||||
|
xInSftyOk := TRUE, // TODO Safety
|
||||||
|
xInAllRdyToStart := TRUE,
|
||||||
|
xInCarouselRun := TRUE, // TODO Conveyor
|
||||||
|
xInRelease := TRUE, // TODO Release
|
||||||
|
stInOutMachineState := #stInOutControlUnit, // TODO ControlUnit
|
||||||
|
arInOutJamEntr1 := "DB_JamArea210".stJam210_1.arCarrier, // TODO Topologie
|
||||||
|
stInOutJamEntr1 := "DB_JamArea210".stJam210_1.stData,
|
||||||
|
arInOutJamExit2 := "DB_JamArea210".stJam210_2.arCarrier, // TODO Topologie
|
||||||
|
stInOutJamExit2 := "DB_JamArea210".stJam210_2.stData,
|
||||||
|
xOutStopper1 => "MB3245",
|
||||||
|
nOutStateLast => "DB_GLOB_TroState".arTroState["cMainTro210"],
|
||||||
|
stInOutHMI := "DB_Interface_HMI".stTRO.TRO210);
|
||||||
|
END_REGION
|
||||||
|
|
||||||
|
REGION TRO211 (1Sep) — CV-M1104
|
||||||
|
#TRO211.stInSeparator1.Settings.nSeparatorNo := "cSep211.1";
|
||||||
|
#TRO211.stInSeparator1.Settings.tDelayToNextItem := "TimeForSepWaiting_Short";
|
||||||
|
#TRO211.stInSeparator1.Settings.tTrailingTime := T#500ms; // TODO Timing
|
||||||
|
#TRO211.stInSeparator1.Settings.tHandlingTime := T#200ms; // TODO Timing
|
||||||
|
#TRO211.stInSeparator1.Settings.tJam := "TimeForSepJam";
|
||||||
|
#TRO211.stInSeparator1.stSenInSep := "DB_Inputs".Sensors["cInBG3425"];
|
||||||
|
#TRO211.stInSenJam2 := "DB_Inputs".Sensors["cInBG3362"];
|
||||||
|
|
||||||
|
#TRO211.stInPriorityManager.xReleaseOk := TRUE; // TODO Priority
|
||||||
|
|
||||||
|
#TRO211(nInMainTroNo := "cMainTro211",
|
||||||
|
xInSftyOk := TRUE, // TODO Safety
|
||||||
|
xInAllRdyToStart := TRUE,
|
||||||
|
xInCarouselRun := TRUE, // TODO Conveyor
|
||||||
|
xInRelease := TRUE, // TODO Release
|
||||||
|
stInOutMachineState := #stInOutControlUnit, // TODO ControlUnit
|
||||||
|
arInOutJamEntr1 := "DB_JamArea211".stJam211_1.arCarrier, // TODO Topologie
|
||||||
|
stInOutJamEntr1 := "DB_JamArea211".stJam211_1.stData,
|
||||||
|
arInOutJamExit2 := "DB_JamArea211".stJam211_2.arCarrier, // TODO Topologie
|
||||||
|
stInOutJamExit2 := "DB_JamArea211".stJam211_2.stData,
|
||||||
|
xOutStopper1 => "MB3425",
|
||||||
|
nOutStateLast => "DB_GLOB_TroState".arTroState["cMainTro211"],
|
||||||
|
stInOutHMI := "DB_Interface_HMI".stTRO.TRO211);
|
||||||
|
END_REGION
|
||||||
|
|
||||||
|
REGION TRO212 (Vario) — CV-M1105
|
||||||
|
#TRO212.stInSeparator1.Settings.nSeparatorNo := "cSep212.1";
|
||||||
|
#TRO212.stInSeparator1.Settings.tDelayToNextItem := "TimeForSepWaiting_Short";
|
||||||
|
#TRO212.stInSeparator1.stSenInSep := "DB_Inputs".Sensors["cInBG3000"];
|
||||||
|
#TRO212.stInVario.stSenCarrInPos := "DB_Inputs".Sensors["cInBG3247"];
|
||||||
|
#TRO212.stInVario.stSenFinger := "DB_Inputs".Sensors["cInBG3243"];
|
||||||
|
#TRO212.stInVario.stSenJam := "DB_Inputs".Sensors["cInBG3005"];
|
||||||
|
|
||||||
|
#TRO212(nInMainTroNo := "cMainTro212",
|
||||||
|
xInSftyOk := TRUE, // TODO Safety
|
||||||
|
xInAllRdyToStart := TRUE,
|
||||||
|
xInRelease := TRUE, // TODO Release
|
||||||
|
stInOutMachineState := #stInOutControlUnit, // TODO ControlUnit
|
||||||
|
arInOutJamEntr1 := "DB_JamArea212".stJam212_1.arCarrier, // TODO Topologie
|
||||||
|
stInOutJamEntr1 := "DB_JamArea212".stJam212_1.stData,
|
||||||
|
arInOutJamFinger := "DB_JamArea212".stJam212_2.arCarrier, // TODO Topologie
|
||||||
|
xOutStopper => "MB3000",
|
||||||
|
xOutVarioMotor => "MA0142",
|
||||||
|
nOutStateLast => "DB_GLOB_TroState".arTroState["cMainTro212"],
|
||||||
|
stInOutHMI := "DB_Interface_HMI".stTRO.TRO212);
|
||||||
|
END_REGION
|
||||||
|
|
||||||
|
REGION TRO213 (Vario) — CV-M1106 / Block 1.1.2
|
||||||
|
#TRO213.stInSeparator1.Settings.nSeparatorNo := "cSep213.1";
|
||||||
|
#TRO213.stInSeparator1.Settings.tDelayToNextItem := "TimeForSepWaiting_Short";
|
||||||
|
#TRO213.stInSeparator1.stSenInSep := "DB_Inputs".Sensors["cInBG3060"];
|
||||||
|
#TRO213.stInVario.stSenCarrInPos := "DB_Inputs".Sensors["cInBG3307"];
|
||||||
|
#TRO213.stInVario.stSenFinger := "DB_Inputs".Sensors["cInBGxxxx"];
|
||||||
|
#TRO213.stInVario.stSenJam := "DB_Inputs".Sensors["cInBG3301"];
|
||||||
|
|
||||||
|
#TRO213(nInMainTroNo := "cMainTro213",
|
||||||
|
xInSftyOk := TRUE, // TODO Safety
|
||||||
|
xInAllRdyToStart := TRUE,
|
||||||
|
xInRelease := TRUE, // TODO Release
|
||||||
|
stInOutMachineState := #stInOutControlUnit, // TODO ControlUnit
|
||||||
|
arInOutJamEntr1 := "DB_JamArea213".stJam213_1.arCarrier, // TODO Topologie
|
||||||
|
stInOutJamEntr1 := "DB_JamArea213".stJam213_1.stData,
|
||||||
|
arInOutJamFinger := "DB_JamArea213".stJam213_2.arCarrier, // TODO Topologie
|
||||||
|
xOutStopper => "MB3060",
|
||||||
|
xOutVarioMotor => "MA0143",
|
||||||
|
nOutStateLast => "DB_GLOB_TroState".arTroState["cMainTro213"],
|
||||||
|
stInOutHMI := "DB_Interface_HMI".stTRO.TRO213);
|
||||||
|
END_REGION
|
||||||
|
|
||||||
|
REGION TRO214 (Vario) — CV-M1107
|
||||||
|
#TRO214.stInSeparator1.Settings.nSeparatorNo := "cSep214.1";
|
||||||
|
#TRO214.stInSeparator1.Settings.tDelayToNextItem := "TimeForSepWaiting_Short";
|
||||||
|
#TRO214.stInSeparator1.stSenInSep := "DB_Inputs".Sensors["cInBG3364"];
|
||||||
|
#TRO214.stInVario.stSenCarrInPos := "DB_Inputs".Sensors["cInBG3367"];
|
||||||
|
#TRO214.stInVario.stSenFinger := "DB_Inputs".Sensors["cInBG3363"];
|
||||||
|
#TRO214.stInVario.stSenJam := "DB_Inputs".Sensors["cInBG3361"];
|
||||||
|
|
||||||
|
#TRO214(nInMainTroNo := "cMainTro214",
|
||||||
|
xInSftyOk := TRUE, // TODO Safety
|
||||||
|
xInAllRdyToStart := TRUE,
|
||||||
|
xInRelease := TRUE, // TODO Release
|
||||||
|
stInOutMachineState := #stInOutControlUnit, // TODO ControlUnit
|
||||||
|
arInOutJamEntr1 := "DB_JamArea214".stJam214_1.arCarrier, // TODO Topologie
|
||||||
|
stInOutJamEntr1 := "DB_JamArea214".stJam214_1.stData,
|
||||||
|
arInOutJamFinger := "DB_JamArea214".stJam214_2.arCarrier, // TODO Topologie
|
||||||
|
xOutStopper => "MB3364",
|
||||||
|
xOutVarioMotor => "MA0144",
|
||||||
|
nOutStateLast => "DB_GLOB_TroState".arTroState["cMainTro214"],
|
||||||
|
stInOutHMI := "DB_Interface_HMI".stTRO.TRO214);
|
||||||
|
END_REGION
|
||||||
|
|
||||||
|
REGION TRO215 (Vario) — CV-M1108 / Block 1.1.4
|
||||||
|
#TRO215.stInSeparator1.Settings.nSeparatorNo := "cSep215.1";
|
||||||
|
#TRO215.stInSeparator1.Settings.tDelayToNextItem := "TimeForSepWaiting_Short";
|
||||||
|
#TRO215.stInSeparator1.stSenInSep := "DB_Inputs".Sensors["cInBG3424"];
|
||||||
|
#TRO215.stInVario.stSenCarrInPos := "DB_Inputs".Sensors["cInBG3427"];
|
||||||
|
#TRO215.stInVario.stSenFinger := "DB_Inputs".Sensors["cInBG3423"];
|
||||||
|
#TRO215.stInVario.stSenJam := "DB_Inputs".Sensors["cInBG3421"];
|
||||||
|
|
||||||
|
#TRO215(nInMainTroNo := "cMainTro215",
|
||||||
|
xInSftyOk := TRUE, // TODO Safety
|
||||||
|
xInAllRdyToStart := TRUE,
|
||||||
|
xInRelease := TRUE, // TODO Release
|
||||||
|
stInOutMachineState := #stInOutControlUnit, // TODO ControlUnit
|
||||||
|
arInOutJamEntr1 := "DB_JamArea215".stJam215_1.arCarrier, // TODO Topologie
|
||||||
|
stInOutJamEntr1 := "DB_JamArea215".stJam215_1.stData,
|
||||||
|
arInOutJamFinger := "DB_JamArea215".stJam215_2.arCarrier, // TODO Topologie
|
||||||
|
xOutStopper => "MB3424",
|
||||||
|
xOutVarioMotor => "MA0145",
|
||||||
|
nOutStateLast => "DB_GLOB_TroState".arTroState["cMainTro215"],
|
||||||
|
stInOutHMI := "DB_Interface_HMI".stTRO.TRO215);
|
||||||
|
END_REGION
|
||||||
|
|
||||||
|
REGION TRO216 (Vario) — CV-M1109
|
||||||
|
#TRO216.stInSeparator1.Settings.nSeparatorNo := "cSep216.1";
|
||||||
|
#TRO216.stInSeparator1.Settings.tDelayToNextItem := "TimeForSepWaiting_Short";
|
||||||
|
#TRO216.stInSeparator1.stSenInSep := "DB_Inputs".Sensors["cInBG3143"];
|
||||||
|
#TRO216.stInVario.stSenCarrInPos := "DB_Inputs".Sensors["cInBG3145"];
|
||||||
|
#TRO216.stInVario.stSenFinger := "DB_Inputs".Sensors["cInBG3144"];
|
||||||
|
#TRO216.stInVario.stSenJam := "DB_Inputs".Sensors["cInBGxxxx"];
|
||||||
|
|
||||||
|
#TRO216(nInMainTroNo := "cMainTro216",
|
||||||
|
xInSftyOk := TRUE, // TODO Safety
|
||||||
|
xInAllRdyToStart := TRUE,
|
||||||
|
xInRelease := TRUE, // TODO Release
|
||||||
|
stInOutMachineState := #stInOutControlUnit, // TODO ControlUnit
|
||||||
|
arInOutJamEntr1 := "DB_JamArea216".stJam216_1.arCarrier, // TODO Topologie
|
||||||
|
stInOutJamEntr1 := "DB_JamArea216".stJam216_1.stData,
|
||||||
|
arInOutJamFinger := "DB_JamArea216".stJam216_2.arCarrier, // TODO Topologie
|
||||||
|
xOutStopper => "MB3143",
|
||||||
|
xOutVarioMotor => "MA0146",
|
||||||
|
nOutStateLast => "DB_GLOB_TroState".arTroState["cMainTro216"],
|
||||||
|
stInOutHMI := "DB_Interface_HMI".stTRO.TRO216);
|
||||||
|
END_REGION
|
||||||
|
|
||||||
|
REGION fbConveyor1110 — KR-M1110
|
||||||
|
#fbConveyor1110.Settings.tEnergySafeTime := "cTimeEnergySafe";
|
||||||
|
#fbConveyor1110.Settings.xGridActive := FALSE; // TODO Grid
|
||||||
|
#fbConveyor1110.Settings.sMotorProtectName := 'FC0075';
|
||||||
|
|
||||||
|
#fbConveyor1110(xInEnabled := TRUE, // TODO Enable
|
||||||
|
xInMotorProtection := "FC0075",
|
||||||
|
xInPowerContactor := "MA0075",
|
||||||
|
stInOutHMI := "DB_Interface_HMI".stConveyors.fbConveyor1110);
|
||||||
|
END_REGION
|
||||||
|
|
||||||
|
REGION TRO218 (PinStore_Auto) — KR-M1201 / Block 1.2.1
|
||||||
|
#TRO218.stInSeparator1.Settings.nSeparatorNo := "cSep218.1";
|
||||||
|
#TRO218.stInSeparator1.Settings.tDelayToNextItem := "TimeForSepWaiting_Short";
|
||||||
|
#TRO218.stInSeparator1.Settings.tTrailingTime := T#500ms; // TODO Timing
|
||||||
|
#TRO218.stInSeparator1.Settings.tHandlingTime := T#200ms; // TODO Timing
|
||||||
|
#TRO218.stInSeparator1.Settings.tJam := "TimeForSepJam";
|
||||||
|
#TRO218.stInSeparator1.stSenInSep := "DB_Inputs".Sensors["cInBGxxxx"];
|
||||||
|
#TRO218.stInSenJam2 := "DB_Inputs".Sensors["cInBG3483"];
|
||||||
|
|
||||||
|
#TRO218.stInPriorityManager.xReleaseOk := TRUE; // TODO Priority
|
||||||
|
|
||||||
|
#TRO218(nInMainTroNo := "cMainTro218",
|
||||||
|
xInSftyOk := TRUE, // TODO Safety
|
||||||
|
xInAllRdyToStart := TRUE,
|
||||||
|
xInCarouselRun := TRUE, // TODO Conveyor
|
||||||
|
xInRelease := TRUE, // TODO Release
|
||||||
|
stInOutMachineState := #stInOutControlUnit, // TODO ControlUnit
|
||||||
|
arInOutJamEntr1 := "DB_JamArea218".stJam218_1.arCarrier, // TODO Topologie
|
||||||
|
stInOutJamEntr1 := "DB_JamArea218".stJam218_1.stData,
|
||||||
|
arInOutJamExit2 := "DB_JamArea218".stJam218_2.arCarrier, // TODO Topologie
|
||||||
|
stInOutJamExit2 := "DB_JamArea218".stJam218_2.stData,
|
||||||
|
xOutStopper1 => "MBxxxx",
|
||||||
|
nOutStateLast => "DB_GLOB_TroState".arTroState["cMainTro218"],
|
||||||
|
stInOutHMI := "DB_Interface_HMI".stTRO.TRO218);
|
||||||
|
END_REGION
|
||||||
|
|
||||||
|
REGION TRO219 (PinStore_Auto) — KR-M1202 / Block 1.2.3
|
||||||
|
#TRO219.stInSeparator1.Settings.nSeparatorNo := "cSep219.1";
|
||||||
|
#TRO219.stInSeparator1.Settings.tDelayToNextItem := "TimeForSepWaiting_Short";
|
||||||
|
#TRO219.stInSeparator1.Settings.tTrailingTime := T#500ms; // TODO Timing
|
||||||
|
#TRO219.stInSeparator1.Settings.tHandlingTime := T#200ms; // TODO Timing
|
||||||
|
#TRO219.stInSeparator1.Settings.tJam := "TimeForSepJam";
|
||||||
|
#TRO219.stInSeparator1.stSenInSep := "DB_Inputs".Sensors["cInBGxxxx"];
|
||||||
|
#TRO219.stInSenJam2 := "DB_Inputs".Sensors["cInBG3603"];
|
||||||
|
|
||||||
|
#TRO219.stInPriorityManager.xReleaseOk := TRUE; // TODO Priority
|
||||||
|
|
||||||
|
#TRO219(nInMainTroNo := "cMainTro219",
|
||||||
|
xInSftyOk := TRUE, // TODO Safety
|
||||||
|
xInAllRdyToStart := TRUE,
|
||||||
|
xInCarouselRun := TRUE, // TODO Conveyor
|
||||||
|
xInRelease := TRUE, // TODO Release
|
||||||
|
stInOutMachineState := #stInOutControlUnit, // TODO ControlUnit
|
||||||
|
arInOutJamEntr1 := "DB_JamArea219".stJam219_1.arCarrier, // TODO Topologie
|
||||||
|
stInOutJamEntr1 := "DB_JamArea219".stJam219_1.stData,
|
||||||
|
arInOutJamExit2 := "DB_JamArea219".stJam219_2.arCarrier, // TODO Topologie
|
||||||
|
stInOutJamExit2 := "DB_JamArea219".stJam219_2.stData,
|
||||||
|
xOutStopper1 => "MBxxxx",
|
||||||
|
nOutStateLast => "DB_GLOB_TroState".arTroState["cMainTro219"],
|
||||||
|
stInOutHMI := "DB_Interface_HMI".stTRO.TRO219);
|
||||||
|
END_REGION
|
||||||
|
|
||||||
|
REGION TRO220 (1Sep) — KR-M1203
|
||||||
|
#TRO220.stInSeparator1.Settings.nSeparatorNo := "cSep220.1";
|
||||||
|
#TRO220.stInSeparator1.Settings.tDelayToNextItem := "TimeForSepWaiting_Short";
|
||||||
|
#TRO220.stInSeparator1.Settings.tTrailingTime := T#500ms; // TODO Timing
|
||||||
|
#TRO220.stInSeparator1.Settings.tHandlingTime := T#200ms; // TODO Timing
|
||||||
|
#TRO220.stInSeparator1.Settings.tJam := "TimeForSepJam";
|
||||||
|
#TRO220.stInSeparator1.stSenInSep := "DB_Inputs".Sensors["cInBG3725"];
|
||||||
|
#TRO220.stInSenJam2 := "DB_Inputs".Sensors["cInBG3722"];
|
||||||
|
|
||||||
|
#TRO220.stInPriorityManager.xReleaseOk := TRUE; // TODO Priority
|
||||||
|
|
||||||
|
#TRO220(nInMainTroNo := "cMainTro220",
|
||||||
|
xInSftyOk := TRUE, // TODO Safety
|
||||||
|
xInAllRdyToStart := TRUE,
|
||||||
|
xInCarouselRun := TRUE, // TODO Conveyor
|
||||||
|
xInRelease := TRUE, // TODO Release
|
||||||
|
stInOutMachineState := #stInOutControlUnit, // TODO ControlUnit
|
||||||
|
arInOutJamEntr1 := "DB_JamArea220".stJam220_1.arCarrier, // TODO Topologie
|
||||||
|
stInOutJamEntr1 := "DB_JamArea220".stJam220_1.stData,
|
||||||
|
arInOutJamExit2 := "DB_JamArea220".stJam220_2.arCarrier, // TODO Topologie
|
||||||
|
stInOutJamExit2 := "DB_JamArea220".stJam220_2.stData,
|
||||||
|
xOutStopper1 => "MB3725",
|
||||||
|
nOutStateLast => "DB_GLOB_TroState".arTroState["cMainTro220"],
|
||||||
|
stInOutHMI := "DB_Interface_HMI".stTRO.TRO220);
|
||||||
|
END_REGION
|
||||||
|
|
||||||
|
REGION fbConveyor1204 — KR-M1204
|
||||||
|
#fbConveyor1204.Settings.tEnergySafeTime := "cTimeEnergySafe";
|
||||||
|
#fbConveyor1204.Settings.xGridActive := FALSE; // TODO Grid
|
||||||
|
#fbConveyor1204.Settings.sMotorProtectName := 'FC0201';
|
||||||
|
|
||||||
|
#fbConveyor1204(xInEnabled := TRUE, // TODO Enable
|
||||||
|
xInMotorProtection := "FC0201",
|
||||||
|
xInPowerContactor := "MA0201",
|
||||||
|
stInOutHMI := "DB_Interface_HMI".stConveyors.fbConveyor1204);
|
||||||
|
END_REGION
|
||||||
|
|
||||||
|
REGION TRO222 (Vario) — CV-M1205
|
||||||
|
#TRO222.stInSeparator1.Settings.nSeparatorNo := "cSep222.1";
|
||||||
|
#TRO222.stInSeparator1.Settings.tDelayToNextItem := "TimeForSepWaiting_Short";
|
||||||
|
#TRO222.stInSeparator1.stSenInSep := "DB_Inputs".Sensors["cInBG3480"];
|
||||||
|
#TRO222.stInVario.stSenCarrInPos := "DB_Inputs".Sensors["cInBG3727"];
|
||||||
|
#TRO222.stInVario.stSenFinger := "DB_Inputs".Sensors["cInBG3723"];
|
||||||
|
#TRO222.stInVario.stSenJam := "DB_Inputs".Sensors["cInBG3485"];
|
||||||
|
|
||||||
|
#TRO222(nInMainTroNo := "cMainTro222",
|
||||||
|
xInSftyOk := TRUE, // TODO Safety
|
||||||
|
xInAllRdyToStart := TRUE,
|
||||||
|
xInRelease := TRUE, // TODO Release
|
||||||
|
stInOutMachineState := #stInOutControlUnit, // TODO ControlUnit
|
||||||
|
arInOutJamEntr1 := "DB_JamArea222".stJam222_1.arCarrier, // TODO Topologie
|
||||||
|
stInOutJamEntr1 := "DB_JamArea222".stJam222_1.stData,
|
||||||
|
arInOutJamFinger := "DB_JamArea222".stJam222_2.arCarrier, // TODO Topologie
|
||||||
|
xOutStopper => "MB3480",
|
||||||
|
xOutVarioMotor => "MA0064",
|
||||||
|
nOutStateLast => "DB_GLOB_TroState".arTroState["cMainTro222"],
|
||||||
|
stInOutHMI := "DB_Interface_HMI".stTRO.TRO222);
|
||||||
|
END_REGION
|
||||||
|
|
||||||
|
REGION TRO223 (Vario) — CV-M1206
|
||||||
|
#TRO223.stInSeparator1.Settings.nSeparatorNo := "cSep223.1";
|
||||||
|
#TRO223.stInSeparator1.Settings.tDelayToNextItem := "TimeForSepWaiting_Short";
|
||||||
|
#TRO223.stInSeparator1.stSenInSep := "DB_Inputs".Sensors["cInBG3540"];
|
||||||
|
#TRO223.stInVario.stSenCarrInPos := "DB_Inputs".Sensors["cInBG3787"];
|
||||||
|
#TRO223.stInVario.stSenFinger := "DB_Inputs".Sensors["cInBG3783"];
|
||||||
|
#TRO223.stInVario.stSenJam := "DB_Inputs".Sensors["cInBG3545"];
|
||||||
|
|
||||||
|
#TRO223(nInMainTroNo := "cMainTro223",
|
||||||
|
xInSftyOk := TRUE, // TODO Safety
|
||||||
|
xInAllRdyToStart := TRUE,
|
||||||
|
xInRelease := TRUE, // TODO Release
|
||||||
|
stInOutMachineState := #stInOutControlUnit, // TODO ControlUnit
|
||||||
|
arInOutJamEntr1 := "DB_JamArea223".stJam223_1.arCarrier, // TODO Topologie
|
||||||
|
stInOutJamEntr1 := "DB_JamArea223".stJam223_1.stData,
|
||||||
|
arInOutJamFinger := "DB_JamArea223".stJam223_2.arCarrier, // TODO Topologie
|
||||||
|
xOutStopper => "MB3540",
|
||||||
|
xOutVarioMotor => "MA0065",
|
||||||
|
nOutStateLast => "DB_GLOB_TroState".arTroState["cMainTro223"],
|
||||||
|
stInOutHMI := "DB_Interface_HMI".stTRO.TRO223);
|
||||||
|
END_REGION
|
||||||
|
|
||||||
|
REGION TRO224 (Vario) — CV-M1207 / Block 1.2.3
|
||||||
|
#TRO224.stInSeparator1.Settings.nSeparatorNo := "cSep224.1";
|
||||||
|
#TRO224.stInSeparator1.Settings.tDelayToNextItem := "TimeForSepWaiting_Short";
|
||||||
|
#TRO224.stInSeparator1.stSenInSep := "DB_Inputs".Sensors["cInBG3604"];
|
||||||
|
#TRO224.stInVario.stSenCarrInPos := "DB_Inputs".Sensors["cInBG3847"];
|
||||||
|
#TRO224.stInVario.stSenFinger := "DB_Inputs".Sensors["cInBG3843"];
|
||||||
|
#TRO224.stInVario.stSenJam := "DB_Inputs".Sensors["cInBG3841"];
|
||||||
|
|
||||||
|
#TRO224(nInMainTroNo := "cMainTro224",
|
||||||
|
xInSftyOk := TRUE, // TODO Safety
|
||||||
|
xInAllRdyToStart := TRUE,
|
||||||
|
xInRelease := TRUE, // TODO Release
|
||||||
|
stInOutMachineState := #stInOutControlUnit, // TODO ControlUnit
|
||||||
|
arInOutJamEntr1 := "DB_JamArea224".stJam224_1.arCarrier, // TODO Topologie
|
||||||
|
stInOutJamEntr1 := "DB_JamArea224".stJam224_1.stData,
|
||||||
|
arInOutJamFinger := "DB_JamArea224".stJam224_2.arCarrier, // TODO Topologie
|
||||||
|
xOutStopper => "MB3604",
|
||||||
|
xOutVarioMotor => "MA0066",
|
||||||
|
nOutStateLast => "DB_GLOB_TroState".arTroState["cMainTro224"],
|
||||||
|
stInOutHMI := "DB_Interface_HMI".stTRO.TRO224);
|
||||||
|
END_REGION
|
||||||
|
|
||||||
|
REGION TRO225 (Vario) — CV-M1208
|
||||||
|
#TRO225.stInSeparator1.Settings.nSeparatorNo := "cSep225.1";
|
||||||
|
#TRO225.stInSeparator1.Settings.tDelayToNextItem := "TimeForSepWaiting_Short";
|
||||||
|
#TRO225.stInSeparator1.stSenInSep := "DB_Inputs".Sensors["cInBG3660"];
|
||||||
|
#TRO225.stInVario.stSenCarrInPos := "DB_Inputs".Sensors["cInBG3907"];
|
||||||
|
#TRO225.stInVario.stSenFinger := "DB_Inputs".Sensors["cInBG3903"];
|
||||||
|
#TRO225.stInVario.stSenJam := "DB_Inputs".Sensors["cInBG3665"];
|
||||||
|
|
||||||
|
#TRO225(nInMainTroNo := "cMainTro225",
|
||||||
|
xInSftyOk := TRUE, // TODO Safety
|
||||||
|
xInAllRdyToStart := TRUE,
|
||||||
|
xInRelease := TRUE, // TODO Release
|
||||||
|
stInOutMachineState := #stInOutControlUnit, // TODO ControlUnit
|
||||||
|
arInOutJamEntr1 := "DB_JamArea225".stJam225_1.arCarrier, // TODO Topologie
|
||||||
|
stInOutJamEntr1 := "DB_JamArea225".stJam225_1.stData,
|
||||||
|
arInOutJamFinger := "DB_JamArea225".stJam225_2.arCarrier, // TODO Topologie
|
||||||
|
xOutStopper => "MB3660",
|
||||||
|
xOutVarioMotor => "MA0067",
|
||||||
|
nOutStateLast => "DB_GLOB_TroState".arTroState["cMainTro225"],
|
||||||
|
stInOutHMI := "DB_Interface_HMI".stTRO.TRO225);
|
||||||
|
END_REGION
|
||||||
|
|
||||||
|
REGION TRO226 (Vario) — CV-M1209
|
||||||
|
#TRO226.stInSeparator1.Settings.nSeparatorNo := "cSep226.1";
|
||||||
|
#TRO226.stInSeparator1.Settings.tDelayToNextItem := "TimeForSepWaiting_Short";
|
||||||
|
#TRO226.stInSeparator1.stSenInSep := "DB_Inputs".Sensors["cInBG3622"];
|
||||||
|
#TRO226.stInVario.stSenCarrInPos := "DB_Inputs".Sensors["cInBG3624"];
|
||||||
|
#TRO226.stInVario.stSenFinger := "DB_Inputs".Sensors["cInBG3623"];
|
||||||
|
#TRO226.stInVario.stSenJam := "DB_Inputs".Sensors["cInBGxxxx"];
|
||||||
|
|
||||||
|
#TRO226(nInMainTroNo := "cMainTro226",
|
||||||
|
xInSftyOk := TRUE, // TODO Safety
|
||||||
|
xInAllRdyToStart := TRUE,
|
||||||
|
xInRelease := TRUE, // TODO Release
|
||||||
|
stInOutMachineState := #stInOutControlUnit, // TODO ControlUnit
|
||||||
|
arInOutJamEntr1 := "DB_JamArea226".stJam226_1.arCarrier, // TODO Topologie
|
||||||
|
stInOutJamEntr1 := "DB_JamArea226".stJam226_1.stData,
|
||||||
|
arInOutJamFinger := "DB_JamArea226".stJam226_2.arCarrier, // TODO Topologie
|
||||||
|
xOutStopper => "MB3622",
|
||||||
|
xOutVarioMotor => "MA0070",
|
||||||
|
nOutStateLast => "DB_GLOB_TroState".arTroState["cMainTro226"],
|
||||||
|
stInOutHMI := "DB_Interface_HMI".stTRO.TRO226);
|
||||||
|
END_REGION
|
||||||
|
|
||||||
|
REGION TRO227 (1Sep) — KR-M1301
|
||||||
|
#TRO227.stInSeparator1.Settings.nSeparatorNo := "cSep227.1";
|
||||||
|
#TRO227.stInSeparator1.Settings.tDelayToNextItem := "TimeForSepWaiting_Short";
|
||||||
|
#TRO227.stInSeparator1.Settings.tTrailingTime := T#500ms; // TODO Timing
|
||||||
|
#TRO227.stInSeparator1.Settings.tHandlingTime := T#200ms; // TODO Timing
|
||||||
|
#TRO227.stInSeparator1.Settings.tJam := "TimeForSepJam";
|
||||||
|
#TRO227.stInSeparator1.stSenInSep := "DB_Inputs".Sensors["cInBG3965"];
|
||||||
|
#TRO227.stInSenJam2 := "DB_Inputs".Sensors["cInBG3962"];
|
||||||
|
|
||||||
|
#TRO227.stInPriorityManager.xReleaseOk := TRUE; // TODO Priority
|
||||||
|
|
||||||
|
#TRO227(nInMainTroNo := "cMainTro227",
|
||||||
|
xInSftyOk := TRUE, // TODO Safety
|
||||||
|
xInAllRdyToStart := TRUE,
|
||||||
|
xInCarouselRun := TRUE, // TODO Conveyor
|
||||||
|
xInRelease := TRUE, // TODO Release
|
||||||
|
stInOutMachineState := #stInOutControlUnit, // TODO ControlUnit
|
||||||
|
arInOutJamEntr1 := "DB_JamArea227".stJam227_1.arCarrier, // TODO Topologie
|
||||||
|
stInOutJamEntr1 := "DB_JamArea227".stJam227_1.stData,
|
||||||
|
arInOutJamExit2 := "DB_JamArea227".stJam227_2.arCarrier, // TODO Topologie
|
||||||
|
stInOutJamExit2 := "DB_JamArea227".stJam227_2.stData,
|
||||||
|
xOutStopper1 => "MB3965",
|
||||||
|
nOutStateLast => "DB_GLOB_TroState".arTroState["cMainTro227"],
|
||||||
|
stInOutHMI := "DB_Interface_HMI".stTRO.TRO227);
|
||||||
|
END_REGION
|
||||||
|
|
||||||
|
REGION TRO228 (1Sep) — KR-M1302
|
||||||
|
#TRO228.stInSeparator1.Settings.nSeparatorNo := "cSep228.1";
|
||||||
|
#TRO228.stInSeparator1.Settings.tDelayToNextItem := "TimeForSepWaiting_Short";
|
||||||
|
#TRO228.stInSeparator1.Settings.tTrailingTime := T#500ms; // TODO Timing
|
||||||
|
#TRO228.stInSeparator1.Settings.tHandlingTime := T#200ms; // TODO Timing
|
||||||
|
#TRO228.stInSeparator1.Settings.tJam := "TimeForSepJam";
|
||||||
|
#TRO228.stInSeparator1.stSenInSep := "DB_Inputs".Sensors["cInBG4080"];
|
||||||
|
#TRO228.stInSenJam2 := "DB_Inputs".Sensors["cInBG4082"];
|
||||||
|
|
||||||
|
#TRO228.stInPriorityManager.xReleaseOk := TRUE; // TODO Priority
|
||||||
|
|
||||||
|
#TRO228(nInMainTroNo := "cMainTro228",
|
||||||
|
xInSftyOk := TRUE, // TODO Safety
|
||||||
|
xInAllRdyToStart := TRUE,
|
||||||
|
xInCarouselRun := TRUE, // TODO Conveyor
|
||||||
|
xInRelease := TRUE, // TODO Release
|
||||||
|
stInOutMachineState := #stInOutControlUnit, // TODO ControlUnit
|
||||||
|
arInOutJamEntr1 := "DB_JamArea228".stJam228_1.arCarrier, // TODO Topologie
|
||||||
|
stInOutJamEntr1 := "DB_JamArea228".stJam228_1.stData,
|
||||||
|
arInOutJamExit2 := "DB_JamArea228".stJam228_2.arCarrier, // TODO Topologie
|
||||||
|
stInOutJamExit2 := "DB_JamArea228".stJam228_2.stData,
|
||||||
|
xOutStopper1 => "MB4080",
|
||||||
|
nOutStateLast => "DB_GLOB_TroState".arTroState["cMainTro228"],
|
||||||
|
stInOutHMI := "DB_Interface_HMI".stTRO.TRO228);
|
||||||
|
END_REGION
|
||||||
|
|
||||||
|
REGION TRO229 (PinStore_Auto) — KR-M1303 / Block 1.3.1
|
||||||
|
#TRO229.stInSeparator1.Settings.nSeparatorNo := "cSep229.1";
|
||||||
|
#TRO229.stInSeparator1.Settings.tDelayToNextItem := "TimeForSepWaiting_Short";
|
||||||
|
#TRO229.stInSeparator1.Settings.tTrailingTime := T#500ms; // TODO Timing
|
||||||
|
#TRO229.stInSeparator1.Settings.tHandlingTime := T#200ms; // TODO Timing
|
||||||
|
#TRO229.stInSeparator1.Settings.tJam := "TimeForSepJam";
|
||||||
|
#TRO229.stInSeparator1.stSenInSep := "DB_Inputs".Sensors["cInBGxxxx"];
|
||||||
|
#TRO229.stInSenJam2 := "DB_Inputs".Sensors["cInBG4203"];
|
||||||
|
|
||||||
|
#TRO229.stInPriorityManager.xReleaseOk := TRUE; // TODO Priority
|
||||||
|
|
||||||
|
#TRO229(nInMainTroNo := "cMainTro229",
|
||||||
|
xInSftyOk := TRUE, // TODO Safety
|
||||||
|
xInAllRdyToStart := TRUE,
|
||||||
|
xInCarouselRun := TRUE, // TODO Conveyor
|
||||||
|
xInRelease := TRUE, // TODO Release
|
||||||
|
stInOutMachineState := #stInOutControlUnit, // TODO ControlUnit
|
||||||
|
arInOutJamEntr1 := "DB_JamArea229".stJam229_1.arCarrier, // TODO Topologie
|
||||||
|
stInOutJamEntr1 := "DB_JamArea229".stJam229_1.stData,
|
||||||
|
arInOutJamExit2 := "DB_JamArea229".stJam229_2.arCarrier, // TODO Topologie
|
||||||
|
stInOutJamExit2 := "DB_JamArea229".stJam229_2.stData,
|
||||||
|
xOutStopper1 => "MBxxxx",
|
||||||
|
nOutStateLast => "DB_GLOB_TroState".arTroState["cMainTro229"],
|
||||||
|
stInOutHMI := "DB_Interface_HMI".stTRO.TRO229);
|
||||||
|
END_REGION
|
||||||
|
|
||||||
|
REGION TRO230 (PinStore_Auto) — KR-M1304 / Block 1.3.3
|
||||||
|
#TRO230.stInSeparator1.Settings.nSeparatorNo := "cSep230.1";
|
||||||
|
#TRO230.stInSeparator1.Settings.tDelayToNextItem := "TimeForSepWaiting_Short";
|
||||||
|
#TRO230.stInSeparator1.Settings.tTrailingTime := T#500ms; // TODO Timing
|
||||||
|
#TRO230.stInSeparator1.Settings.tHandlingTime := T#200ms; // TODO Timing
|
||||||
|
#TRO230.stInSeparator1.Settings.tJam := "TimeForSepJam";
|
||||||
|
#TRO230.stInSeparator1.stSenInSep := "DB_Inputs".Sensors["cInBGxxxx"];
|
||||||
|
#TRO230.stInSenJam2 := "DB_Inputs".Sensors["cInBG4323"];
|
||||||
|
|
||||||
|
#TRO230.stInPriorityManager.xReleaseOk := TRUE; // TODO Priority
|
||||||
|
|
||||||
|
#TRO230(nInMainTroNo := "cMainTro230",
|
||||||
|
xInSftyOk := TRUE, // TODO Safety
|
||||||
|
xInAllRdyToStart := TRUE,
|
||||||
|
xInCarouselRun := TRUE, // TODO Conveyor
|
||||||
|
xInRelease := TRUE, // TODO Release
|
||||||
|
stInOutMachineState := #stInOutControlUnit, // TODO ControlUnit
|
||||||
|
arInOutJamEntr1 := "DB_JamArea230".stJam230_1.arCarrier, // TODO Topologie
|
||||||
|
stInOutJamEntr1 := "DB_JamArea230".stJam230_1.stData,
|
||||||
|
arInOutJamExit2 := "DB_JamArea230".stJam230_2.arCarrier, // TODO Topologie
|
||||||
|
stInOutJamExit2 := "DB_JamArea230".stJam230_2.stData,
|
||||||
|
xOutStopper1 => "MBxxxx",
|
||||||
|
nOutStateLast => "DB_GLOB_TroState".arTroState["cMainTro230"],
|
||||||
|
stInOutHMI := "DB_Interface_HMI".stTRO.TRO230);
|
||||||
|
END_REGION
|
||||||
|
|
||||||
|
REGION TRO231 (Vario) — CV-M1305
|
||||||
|
#TRO231.stInSeparator1.Settings.nSeparatorNo := "cSep231.1";
|
||||||
|
#TRO231.stInSeparator1.Settings.tDelayToNextItem := "TimeForSepWaiting_Short";
|
||||||
|
#TRO231.stInSeparator1.stSenInSep := "DB_Inputs".Sensors["cInBG3960"];
|
||||||
|
#TRO231.stInVario.stSenCarrInPos := "DB_Inputs".Sensors["cInBG3967"];
|
||||||
|
#TRO231.stInVario.stSenFinger := "DB_Inputs".Sensors["cInBG3963"];
|
||||||
|
#TRO231.stInVario.stSenJam := "DB_Inputs".Sensors["cInBG3961"];
|
||||||
|
|
||||||
|
#TRO231(nInMainTroNo := "cMainTro231",
|
||||||
|
xInSftyOk := TRUE, // TODO Safety
|
||||||
|
xInAllRdyToStart := TRUE,
|
||||||
|
xInRelease := TRUE, // TODO Release
|
||||||
|
stInOutMachineState := #stInOutControlUnit, // TODO ControlUnit
|
||||||
|
arInOutJamEntr1 := "DB_JamArea231".stJam231_1.arCarrier, // TODO Topologie
|
||||||
|
stInOutJamEntr1 := "DB_JamArea231".stJam231_1.stData,
|
||||||
|
arInOutJamFinger := "DB_JamArea231".stJam231_2.arCarrier, // TODO Topologie
|
||||||
|
xOutStopper => "MB3960",
|
||||||
|
xOutVarioMotor => "MA0262",
|
||||||
|
nOutStateLast => "DB_GLOB_TroState".arTroState["cMainTro231"],
|
||||||
|
stInOutHMI := "DB_Interface_HMI".stTRO.TRO231);
|
||||||
|
END_REGION
|
||||||
|
|
||||||
|
REGION TRO232 (Vario) — CV-M1306 / Block 1.3.2
|
||||||
|
#TRO232.stInSeparator1.Settings.nSeparatorNo := "cSep232.1";
|
||||||
|
#TRO232.stInSeparator1.Settings.tDelayToNextItem := "TimeForSepWaiting_Short";
|
||||||
|
#TRO232.stInSeparator1.stSenInSep := "DB_Inputs".Sensors["cInBG4024"];
|
||||||
|
#TRO232.stInVario.stSenCarrInPos := "DB_Inputs".Sensors["cInBG4027"];
|
||||||
|
#TRO232.stInVario.stSenFinger := "DB_Inputs".Sensors["cInBG4023"];
|
||||||
|
#TRO232.stInVario.stSenJam := "DB_Inputs".Sensors["cInBG4021"];
|
||||||
|
|
||||||
|
#TRO232(nInMainTroNo := "cMainTro232",
|
||||||
|
xInSftyOk := TRUE, // TODO Safety
|
||||||
|
xInAllRdyToStart := TRUE,
|
||||||
|
xInRelease := TRUE, // TODO Release
|
||||||
|
stInOutMachineState := #stInOutControlUnit, // TODO ControlUnit
|
||||||
|
arInOutJamEntr1 := "DB_JamArea232".stJam232_1.arCarrier, // TODO Topologie
|
||||||
|
stInOutJamEntr1 := "DB_JamArea232".stJam232_1.stData,
|
||||||
|
arInOutJamFinger := "DB_JamArea232".stJam232_2.arCarrier, // TODO Topologie
|
||||||
|
xOutStopper => "MB4024",
|
||||||
|
xOutVarioMotor => "MA0263",
|
||||||
|
nOutStateLast => "DB_GLOB_TroState".arTroState["cMainTro232"],
|
||||||
|
stInOutHMI := "DB_Interface_HMI".stTRO.TRO232);
|
||||||
|
END_REGION
|
||||||
|
|
||||||
|
REGION TRO233 (Vario) — CV-M1307
|
||||||
|
#TRO233.stInSeparator1.Settings.nSeparatorNo := "cSep233.1";
|
||||||
|
#TRO233.stInSeparator1.Settings.tDelayToNextItem := "TimeForSepWaiting_Short";
|
||||||
|
#TRO233.stInSeparator1.stSenInSep := "DB_Inputs".Sensors["cInBG4084"];
|
||||||
|
#TRO233.stInVario.stSenCarrInPos := "DB_Inputs".Sensors["cInBG4087"];
|
||||||
|
#TRO233.stInVario.stSenFinger := "DB_Inputs".Sensors["cInBG4083"];
|
||||||
|
#TRO233.stInVario.stSenJam := "DB_Inputs".Sensors["cInBG4081"];
|
||||||
|
|
||||||
|
#TRO233(nInMainTroNo := "cMainTro233",
|
||||||
|
xInSftyOk := TRUE, // TODO Safety
|
||||||
|
xInAllRdyToStart := TRUE,
|
||||||
|
xInRelease := TRUE, // TODO Release
|
||||||
|
stInOutMachineState := #stInOutControlUnit, // TODO ControlUnit
|
||||||
|
arInOutJamEntr1 := "DB_JamArea233".stJam233_1.arCarrier, // TODO Topologie
|
||||||
|
stInOutJamEntr1 := "DB_JamArea233".stJam233_1.stData,
|
||||||
|
arInOutJamFinger := "DB_JamArea233".stJam233_2.arCarrier, // TODO Topologie
|
||||||
|
xOutStopper => "MB4084",
|
||||||
|
xOutVarioMotor => "MA0264",
|
||||||
|
nOutStateLast => "DB_GLOB_TroState".arTroState["cMainTro233"],
|
||||||
|
stInOutHMI := "DB_Interface_HMI".stTRO.TRO233);
|
||||||
|
END_REGION
|
||||||
|
|
||||||
|
REGION TRO234 (Vario) — CV-M1308
|
||||||
|
#TRO234.stInSeparator1.Settings.nSeparatorNo := "cSep234.1";
|
||||||
|
#TRO234.stInSeparator1.Settings.tDelayToNextItem := "TimeForSepWaiting_Short";
|
||||||
|
#TRO234.stInSeparator1.stSenInSep := "DB_Inputs".Sensors["cInBG4144"];
|
||||||
|
#TRO234.stInVario.stSenCarrInPos := "DB_Inputs".Sensors["cInBG4147"];
|
||||||
|
#TRO234.stInVario.stSenFinger := "DB_Inputs".Sensors["cInBG4143"];
|
||||||
|
#TRO234.stInVario.stSenJam := "DB_Inputs".Sensors["cInBG4141"];
|
||||||
|
|
||||||
|
#TRO234(nInMainTroNo := "cMainTro234",
|
||||||
|
xInSftyOk := TRUE, // TODO Safety
|
||||||
|
xInAllRdyToStart := TRUE,
|
||||||
|
xInRelease := TRUE, // TODO Release
|
||||||
|
stInOutMachineState := #stInOutControlUnit, // TODO ControlUnit
|
||||||
|
arInOutJamEntr1 := "DB_JamArea234".stJam234_1.arCarrier, // TODO Topologie
|
||||||
|
stInOutJamEntr1 := "DB_JamArea234".stJam234_1.stData,
|
||||||
|
arInOutJamFinger := "DB_JamArea234".stJam234_2.arCarrier, // TODO Topologie
|
||||||
|
xOutStopper => "MB4144",
|
||||||
|
xOutVarioMotor => "MA0265",
|
||||||
|
nOutStateLast => "DB_GLOB_TroState".arTroState["cMainTro234"],
|
||||||
|
stInOutHMI := "DB_Interface_HMI".stTRO.TRO234);
|
||||||
|
END_REGION
|
||||||
|
|
||||||
|
REGION TRO235 (Vario) — CV-M1309
|
||||||
|
#TRO235.stInSeparator1.Settings.nSeparatorNo := "cSep235.1";
|
||||||
|
#TRO235.stInSeparator1.Settings.tDelayToNextItem := "TimeForSepWaiting_Short";
|
||||||
|
#TRO235.stInSeparator1.stSenInSep := "DB_Inputs".Sensors["cInBG4334"];
|
||||||
|
#TRO235.stInVario.stSenCarrInPos := "DB_Inputs".Sensors["cInBG4344"];
|
||||||
|
#TRO235.stInVario.stSenFinger := "DB_Inputs".Sensors["cInBG4343"];
|
||||||
|
#TRO235.stInVario.stSenJam := "DB_Inputs".Sensors["cInBGxxxx"];
|
||||||
|
|
||||||
|
#TRO235(nInMainTroNo := "cMainTro235",
|
||||||
|
xInSftyOk := TRUE, // TODO Safety
|
||||||
|
xInAllRdyToStart := TRUE,
|
||||||
|
xInRelease := TRUE, // TODO Release
|
||||||
|
stInOutMachineState := #stInOutControlUnit, // TODO ControlUnit
|
||||||
|
arInOutJamEntr1 := "DB_JamArea235".stJam235_1.arCarrier, // TODO Topologie
|
||||||
|
stInOutJamEntr1 := "DB_JamArea235".stJam235_1.stData,
|
||||||
|
arInOutJamFinger := "DB_JamArea235".stJam235_2.arCarrier, // TODO Topologie
|
||||||
|
xOutStopper => "MB4342",
|
||||||
|
xOutVarioMotor => "MA0266",
|
||||||
|
nOutStateLast => "DB_GLOB_TroState".arTroState["cMainTro235"],
|
||||||
|
stInOutHMI := "DB_Interface_HMI".stTRO.TRO235);
|
||||||
|
END_REGION
|
||||||
|
|
||||||
|
REGION TRO236 (Vario) — CV-M1401
|
||||||
|
#TRO236.stInSeparator1.Settings.nSeparatorNo := "cSep236.1";
|
||||||
|
#TRO236.stInSeparator1.Settings.tDelayToNextItem := "TimeForSepWaiting_Short";
|
||||||
|
#TRO236.stInSeparator1.stSenInSep := "DB_Inputs".Sensors["cInBG4445"];
|
||||||
|
#TRO236.stInVario.stSenCarrInPos := "DB_Inputs".Sensors["cInBG4461"];
|
||||||
|
#TRO236.stInVario.stSenFinger := "DB_Inputs".Sensors["cInBG4462"];
|
||||||
|
#TRO236.stInVario.stSenJam := "DB_Inputs".Sensors["cInBG4447"];
|
||||||
|
|
||||||
|
#TRO236(nInMainTroNo := "cMainTro236",
|
||||||
|
xInSftyOk := TRUE, // TODO Safety
|
||||||
|
xInAllRdyToStart := TRUE,
|
||||||
|
xInRelease := TRUE, // TODO Release
|
||||||
|
stInOutMachineState := #stInOutControlUnit, // TODO ControlUnit
|
||||||
|
arInOutJamEntr1 := "DB_JamArea236".stJam236_1.arCarrier, // TODO Topologie
|
||||||
|
stInOutJamEntr1 := "DB_JamArea236".stJam236_1.stData,
|
||||||
|
arInOutJamFinger := "DB_JamArea236".stJam236_2.arCarrier, // TODO Topologie
|
||||||
|
xOutStopper => "MB4460",
|
||||||
|
xOutVarioMotor => "MA0071",
|
||||||
|
nOutStateLast => "DB_GLOB_TroState".arTroState["cMainTro236"],
|
||||||
|
stInOutHMI := "DB_Interface_HMI".stTRO.TRO236);
|
||||||
|
END_REGION
|
||||||
|
|
||||||
|
REGION TRO237 (Vario) — CV-M1501
|
||||||
|
#TRO237.stInSeparator1.Settings.nSeparatorNo := "cSep237.1";
|
||||||
|
#TRO237.stInSeparator1.Settings.tDelayToNextItem := "TimeForSepWaiting_Short";
|
||||||
|
#TRO237.stInSeparator1.stSenInSep := "DB_Inputs".Sensors["cInBG4522"];
|
||||||
|
#TRO237.stInVario.stSenCarrInPos := "DB_Inputs".Sensors["cInBG4542"];
|
||||||
|
#TRO237.stInVario.stSenFinger := "DB_Inputs".Sensors["cInBG4541"];
|
||||||
|
#TRO237.stInVario.stSenJam := "DB_Inputs".Sensors["cInBGxxxx"];
|
||||||
|
|
||||||
|
#TRO237(nInMainTroNo := "cMainTro237",
|
||||||
|
xInSftyOk := TRUE, // TODO Safety
|
||||||
|
xInAllRdyToStart := TRUE,
|
||||||
|
xInRelease := TRUE, // TODO Release
|
||||||
|
stInOutMachineState := #stInOutControlUnit, // TODO ControlUnit
|
||||||
|
arInOutJamEntr1 := "DB_JamArea237".stJam237_1.arCarrier, // TODO Topologie
|
||||||
|
stInOutJamEntr1 := "DB_JamArea237".stJam237_1.stData,
|
||||||
|
arInOutJamFinger := "DB_JamArea237".stJam237_2.arCarrier, // TODO Topologie
|
||||||
|
xOutStopper => "MB4512",
|
||||||
|
xOutVarioMotor => "MA0072",
|
||||||
|
nOutStateLast => "DB_GLOB_TroState".arTroState["cMainTro237"],
|
||||||
|
stInOutHMI := "DB_Interface_HMI".stTRO.TRO237);
|
||||||
|
END_REGION
|
||||||
|
|
||||||
|
REGION TRO238 (Vario) — CV-M1601
|
||||||
|
#TRO238.stInSeparator1.Settings.nSeparatorNo := "cSep238.1";
|
||||||
|
#TRO238.stInSeparator1.Settings.tDelayToNextItem := "TimeForSepWaiting_Short";
|
||||||
|
#TRO238.stInSeparator1.stSenInSep := "DB_Inputs".Sensors["cInBG4526"];
|
||||||
|
#TRO238.stInVario.stSenCarrInPos := "DB_Inputs".Sensors["cInBG4545"];
|
||||||
|
#TRO238.stInVario.stSenFinger := "DB_Inputs".Sensors["cInBG4544"];
|
||||||
|
#TRO238.stInVario.stSenJam := "DB_Inputs".Sensors["cInBG4525"];
|
||||||
|
|
||||||
|
#TRO238(nInMainTroNo := "cMainTro238",
|
||||||
|
xInSftyOk := TRUE, // TODO Safety
|
||||||
|
xInAllRdyToStart := TRUE,
|
||||||
|
xInRelease := TRUE, // TODO Release
|
||||||
|
stInOutMachineState := #stInOutControlUnit, // TODO ControlUnit
|
||||||
|
arInOutJamEntr1 := "DB_JamArea238".stJam238_1.arCarrier, // TODO Topologie
|
||||||
|
stInOutJamEntr1 := "DB_JamArea238".stJam238_1.stData,
|
||||||
|
arInOutJamFinger := "DB_JamArea238".stJam238_2.arCarrier, // TODO Topologie
|
||||||
|
xOutStopper => "MB4526",
|
||||||
|
xOutVarioMotor => "MA0073",
|
||||||
|
nOutStateLast => "DB_GLOB_TroState".arTroState["cMainTro238"],
|
||||||
|
stInOutHMI := "DB_Interface_HMI".stTRO.TRO238);
|
||||||
|
END_REGION
|
||||||
|
|
||||||
|
REGION TRO239 (1Sep) — CV-M1801
|
||||||
|
#TRO239.stInSeparator1.Settings.nSeparatorNo := "cSep239.1";
|
||||||
|
#TRO239.stInSeparator1.Settings.tDelayToNextItem := "TimeForSepWaiting_Short";
|
||||||
|
#TRO239.stInSeparator1.Settings.tTrailingTime := T#500ms; // TODO Timing
|
||||||
|
#TRO239.stInSeparator1.Settings.tHandlingTime := T#200ms; // TODO Timing
|
||||||
|
#TRO239.stInSeparator1.Settings.tJam := "TimeForSepJam";
|
||||||
|
#TRO239.stInSeparator1.stSenInSep := "DB_Inputs".Sensors["cInBG4535"];
|
||||||
|
#TRO239.stInSenJam2 := "DB_Inputs".Sensors["cInBG4534"];
|
||||||
|
|
||||||
|
#TRO239.stInPriorityManager.xReleaseOk := TRUE; // TODO Priority
|
||||||
|
|
||||||
|
#TRO239(nInMainTroNo := "cMainTro239",
|
||||||
|
xInSftyOk := TRUE, // TODO Safety
|
||||||
|
xInAllRdyToStart := TRUE,
|
||||||
|
xInCarouselRun := TRUE, // TODO Conveyor
|
||||||
|
xInRelease := TRUE, // TODO Release
|
||||||
|
stInOutMachineState := #stInOutControlUnit, // TODO ControlUnit
|
||||||
|
arInOutJamEntr1 := "DB_JamArea239".stJam239_1.arCarrier, // TODO Topologie
|
||||||
|
stInOutJamEntr1 := "DB_JamArea239".stJam239_1.stData,
|
||||||
|
arInOutJamExit2 := "DB_JamArea239".stJam239_2.arCarrier, // TODO Topologie
|
||||||
|
stInOutJamExit2 := "DB_JamArea239".stJam239_2.stData,
|
||||||
|
xOutStopper1 => "MB4535",
|
||||||
|
nOutStateLast => "DB_GLOB_TroState".arTroState["cMainTro239"],
|
||||||
|
stInOutHMI := "DB_Interface_HMI".stTRO.TRO239);
|
||||||
|
END_REGION
|
||||||
|
|
||||||
|
REGION TRO240 (Vario) — CV-M4701
|
||||||
|
#TRO240.stInSeparator1.Settings.nSeparatorNo := "cSep240.1";
|
||||||
|
#TRO240.stInSeparator1.Settings.tDelayToNextItem := "TimeForSepWaiting_Short";
|
||||||
|
#TRO240.stInSeparator1.stSenInSep := "DB_Inputs".Sensors["cInBG4530"];
|
||||||
|
#TRO240.stInVario.stSenCarrInPos := "DB_Inputs".Sensors["cInBG4533"];
|
||||||
|
#TRO240.stInVario.stSenFinger := "DB_Inputs".Sensors["cInBG4531"];
|
||||||
|
#TRO240.stInVario.stSenJam := "DB_Inputs".Sensors["cInBG4532"];
|
||||||
|
|
||||||
|
#TRO240(nInMainTroNo := "cMainTro240",
|
||||||
|
xInSftyOk := TRUE, // TODO Safety
|
||||||
|
xInAllRdyToStart := TRUE,
|
||||||
|
xInRelease := TRUE, // TODO Release
|
||||||
|
stInOutMachineState := #stInOutControlUnit, // TODO ControlUnit
|
||||||
|
arInOutJamEntr1 := "DB_JamArea240".stJam240_1.arCarrier, // TODO Topologie
|
||||||
|
stInOutJamEntr1 := "DB_JamArea240".stJam240_1.stData,
|
||||||
|
arInOutJamFinger := "DB_JamArea240".stJam240_2.arCarrier, // TODO Topologie
|
||||||
|
xOutStopper => "MB4530",
|
||||||
|
xOutVarioMotor => "MA0074",
|
||||||
|
nOutStateLast => "DB_GLOB_TroState".arTroState["cMainTro240"],
|
||||||
|
stInOutHMI := "DB_Interface_HMI".stTRO.TRO240);
|
||||||
|
END_REGION
|
||||||
|
|
||||||
|
END_FUNCTION_BLOCK
|
||||||
File diff suppressed because it is too large
Load Diff
@@ -0,0 +1,308 @@
|
|||||||
|
FUNCTION_BLOCK "FB_Main_skel_UH04"
|
||||||
|
{ S7_Optimized_Access := 'TRUE' }
|
||||||
|
VERSION : 0.1
|
||||||
|
// ============================================================
|
||||||
|
// AUTOMATISCH GENERIERTES GRUNDGERUEST — create_skel.py
|
||||||
|
// Quelle: E/A-Listen UH04 (data/)
|
||||||
|
// TODO-Marken kennzeichnen manuell zu ergaenzende Stellen
|
||||||
|
// (Timings, Topologie/JamAreas, Safety, Release, Priority).
|
||||||
|
// ============================================================
|
||||||
|
VAR
|
||||||
|
TRO401 : "FB_ILS_MTRO_Vario"; // CV-M0401
|
||||||
|
fbConveyor4000 : "FB_Conveyor"; // CV-M4000
|
||||||
|
TRO403 : "FB_ILS_MTRO_Vario"; // CV-M4001
|
||||||
|
TRO404 : "FB_ILS_MTRO_Vario"; // CV-M4002
|
||||||
|
TRO405 : "FB_ILS_MTRO_1Sep1Swi"; // KR-M4003
|
||||||
|
TRO406 : "FB_ILS_MTRO_Vario"; // CV-M4004
|
||||||
|
TRO407 : "FB_ILS_MTRO_Vario"; // CV-M4005
|
||||||
|
TRO408 : "FB_ILS_MTRO_Vario"; // CV-M4006
|
||||||
|
TRO409 : "FB_ILS_MTRO_Vario"; // CV-M4007
|
||||||
|
TRO410 : "FB_ILS_MTRO_Vario"; // CV-M4008
|
||||||
|
TRO411 : "FB_ILS_MTRO_Vario"; // CV-M4009
|
||||||
|
TRO412 : "FB_ILS_MTRO_Vario"; // CV-M4010
|
||||||
|
TRO413 : "FB_ILS_MTRO_Vario"; // CV-M4011
|
||||||
|
END_VAR
|
||||||
|
|
||||||
|
BEGIN
|
||||||
|
REGION TRO401 (Vario) — CV-M0401
|
||||||
|
#TRO401.stInSeparator1.Settings.nSeparatorNo := "cSep401.1";
|
||||||
|
#TRO401.stInSeparator1.Settings.tDelayToNextItem := "TimeForSepWaiting_Short";
|
||||||
|
#TRO401.stInSeparator1.stSenInSep := "DB_Inputs".Sensors["cInBG3260"];
|
||||||
|
#TRO401.stInVario.stSenCarrInPos := "DB_Inputs".Sensors["cInBG3261"];
|
||||||
|
#TRO401.stInVario.stSenFinger := "DB_Inputs".Sensors["cInBG3262"];
|
||||||
|
#TRO401.stInVario.stSenJam := "DB_Inputs".Sensors["cInBGxxxx"];
|
||||||
|
|
||||||
|
#TRO401(nInMainTroNo := "cMainTro401",
|
||||||
|
xInSftyOk := TRUE, // TODO Safety
|
||||||
|
xInAllRdyToStart := TRUE,
|
||||||
|
xInRelease := TRUE, // TODO Release
|
||||||
|
stInOutMachineState := #stInOutControlUnit, // TODO ControlUnit
|
||||||
|
arInOutJamEntr1 := "DB_JamArea401".stJam401_1.arCarrier, // TODO Topologie
|
||||||
|
stInOutJamEntr1 := "DB_JamArea401".stJam401_1.stData,
|
||||||
|
arInOutJamFinger := "DB_JamArea401".stJam401_2.arCarrier, // TODO Topologie
|
||||||
|
xOutStopper => "MB3260",
|
||||||
|
xOutVarioMotor => "MAxxxx",
|
||||||
|
nOutStateLast => "DB_GLOB_TroState".arTroState["cMainTro401"],
|
||||||
|
stInOutHMI := "DB_Interface_HMI".stTRO.TRO401);
|
||||||
|
END_REGION
|
||||||
|
|
||||||
|
REGION fbConveyor4000 — CV-M4000
|
||||||
|
#fbConveyor4000.Settings.tEnergySafeTime := "cTimeEnergySafe";
|
||||||
|
#fbConveyor4000.Settings.xGridActive := FALSE; // TODO Grid
|
||||||
|
#fbConveyor4000.Settings.sMotorProtectName := 'FCxxxx';
|
||||||
|
|
||||||
|
#fbConveyor4000(xInEnabled := TRUE, // TODO Enable
|
||||||
|
xInMotorProtection := "FCxxxx",
|
||||||
|
xInPowerContactor := "MA0070",
|
||||||
|
stInOutHMI := "DB_Interface_HMI".stConveyors.fbConveyor4000);
|
||||||
|
END_REGION
|
||||||
|
|
||||||
|
REGION TRO403 (Vario) — CV-M4001
|
||||||
|
#TRO403.stInSeparator1.Settings.nSeparatorNo := "cSep403.1";
|
||||||
|
#TRO403.stInSeparator1.Settings.tDelayToNextItem := "TimeForSepWaiting_Short";
|
||||||
|
#TRO403.stInSeparator1.stSenInSep := "DB_Inputs".Sensors["cInBG3242"];
|
||||||
|
#TRO403.stInVario.stSenCarrInPos := "DB_Inputs".Sensors["cInBGxxxx"];
|
||||||
|
#TRO403.stInVario.stSenFinger := "DB_Inputs".Sensors["cInBG3244"];
|
||||||
|
#TRO403.stInVario.stSenJam := "DB_Inputs".Sensors["cInBG3246"];
|
||||||
|
|
||||||
|
#TRO403(nInMainTroNo := "cMainTro403",
|
||||||
|
xInSftyOk := TRUE, // TODO Safety
|
||||||
|
xInAllRdyToStart := TRUE,
|
||||||
|
xInRelease := TRUE, // TODO Release
|
||||||
|
stInOutMachineState := #stInOutControlUnit, // TODO ControlUnit
|
||||||
|
arInOutJamEntr1 := "DB_JamArea403".stJam403_1.arCarrier, // TODO Topologie
|
||||||
|
stInOutJamEntr1 := "DB_JamArea403".stJam403_1.stData,
|
||||||
|
arInOutJamFinger := "DB_JamArea403".stJam403_2.arCarrier, // TODO Topologie
|
||||||
|
xOutStopper => "MB3242",
|
||||||
|
xOutVarioMotor => "MA0071",
|
||||||
|
nOutStateLast => "DB_GLOB_TroState".arTroState["cMainTro403"],
|
||||||
|
stInOutHMI := "DB_Interface_HMI".stTRO.TRO403);
|
||||||
|
END_REGION
|
||||||
|
|
||||||
|
REGION TRO404 (Vario) — CV-M4002
|
||||||
|
#TRO404.stInSeparator1.Settings.nSeparatorNo := "cSep404.1";
|
||||||
|
#TRO404.stInSeparator1.Settings.tDelayToNextItem := "TimeForSepWaiting_Short";
|
||||||
|
#TRO404.stInSeparator1.stSenInSep := "DB_Inputs".Sensors["cInBG3386"];
|
||||||
|
#TRO404.stInVario.stSenCarrInPos := "DB_Inputs".Sensors["cInBG3426"];
|
||||||
|
#TRO404.stInVario.stSenFinger := "DB_Inputs".Sensors["cInBG3421"];
|
||||||
|
#TRO404.stInVario.stSenJam := "DB_Inputs".Sensors["cInBG3387"];
|
||||||
|
|
||||||
|
#TRO404(nInMainTroNo := "cMainTro404",
|
||||||
|
xInSftyOk := TRUE, // TODO Safety
|
||||||
|
xInAllRdyToStart := TRUE,
|
||||||
|
xInRelease := TRUE, // TODO Release
|
||||||
|
stInOutMachineState := #stInOutControlUnit, // TODO ControlUnit
|
||||||
|
arInOutJamEntr1 := "DB_JamArea404".stJam404_1.arCarrier, // TODO Topologie
|
||||||
|
stInOutJamEntr1 := "DB_JamArea404".stJam404_1.stData,
|
||||||
|
arInOutJamFinger := "DB_JamArea404".stJam404_2.arCarrier, // TODO Topologie
|
||||||
|
xOutStopper => "MB3386",
|
||||||
|
xOutVarioMotor => "MA0073",
|
||||||
|
nOutStateLast => "DB_GLOB_TroState".arTroState["cMainTro404"],
|
||||||
|
stInOutHMI := "DB_Interface_HMI".stTRO.TRO404);
|
||||||
|
END_REGION
|
||||||
|
|
||||||
|
REGION TRO405 (1Sep1Swi) — KR-M4003
|
||||||
|
#TRO405.stInSeparator1.Settings.nSeparatorNo := "cSep405.1";
|
||||||
|
#TRO405.stInSeparator1.Settings.tDelayToNextItem := "TimeForSepWaiting_Short";
|
||||||
|
#TRO405.stInSeparator1.Settings.tTrailingTime := T#100ms; // TODO Timing
|
||||||
|
#TRO405.stInSeparator1.Settings.tHandlingTime := T#50ms; // TODO Timing
|
||||||
|
#TRO405.stInSeparator1.Settings.tJam := "TimeForSepJam";
|
||||||
|
#TRO405.stInSeparator1.stSenInSep := "DB_Inputs".Sensors["cInBG3300"];
|
||||||
|
#TRO405.stInSenJam2 := "DB_Inputs".Sensors["cInBG3301"];
|
||||||
|
#TRO405.stInSwitch1.Settings.nSwitchNo := "cSwi405.1";
|
||||||
|
|
||||||
|
#TRO405(nInMainTroNo := "cMainTro405",
|
||||||
|
xInSftyOk := TRUE, // TODO Safety
|
||||||
|
xInAllRdyToStart := TRUE,
|
||||||
|
xInCarouselRun1 := TRUE, // TODO Conveyor
|
||||||
|
xInRelease := TRUE, // TODO Release
|
||||||
|
stInOutMachineState := #stInOutControlUnit, // TODO ControlUnit
|
||||||
|
arInOutJamEntr1 := "DB_JamArea405".stJam405_1.arCarrier, // TODO Topologie
|
||||||
|
stInOutJamEntr1 := "DB_JamArea405".stJam405_1.stData,
|
||||||
|
arInOutJamExit2 := "DB_JamArea405".stJam405_2.arCarrier, // TODO Topologie (Dir1)
|
||||||
|
stInOutJamExit2 := "DB_JamArea405".stJam405_2.stData,
|
||||||
|
arInOutJamExit3 := "DB_JamArea405".stJam405_3.arCarrier, // TODO Topologie (Dir2)
|
||||||
|
stInOutJamExit3 := "DB_JamArea405".stJam405_3.stData,
|
||||||
|
xOutStopper1 => "MB3300",
|
||||||
|
xOutSw1ExTo3 => "MB3362",
|
||||||
|
nOutStateLast => "DB_GLOB_TroState".arTroState["cMainTro405"],
|
||||||
|
stInOutHMI := "DB_Interface_HMI".stTRO.TRO405);
|
||||||
|
END_REGION
|
||||||
|
|
||||||
|
REGION TRO406 (Vario) — CV-M4004
|
||||||
|
#TRO406.stInSeparator1.Settings.nSeparatorNo := "cSep406.1";
|
||||||
|
#TRO406.stInSeparator1.Settings.tDelayToNextItem := "TimeForSepWaiting_Short";
|
||||||
|
#TRO406.stInSeparator1.stSenInSep := "DB_Inputs".Sensors["cInBGxxxx"];
|
||||||
|
#TRO406.stInVario.stSenCarrInPos := "DB_Inputs".Sensors["cInBG3316"];
|
||||||
|
#TRO406.stInVario.stSenFinger := "DB_Inputs".Sensors["cInBG3312"];
|
||||||
|
#TRO406.stInVario.stSenJam := "DB_Inputs".Sensors["cInBG3311"];
|
||||||
|
|
||||||
|
#TRO406(nInMainTroNo := "cMainTro406",
|
||||||
|
xInSftyOk := TRUE, // TODO Safety
|
||||||
|
xInAllRdyToStart := TRUE,
|
||||||
|
xInRelease := TRUE, // TODO Release
|
||||||
|
stInOutMachineState := #stInOutControlUnit, // TODO ControlUnit
|
||||||
|
arInOutJamEntr1 := "DB_JamArea406".stJam406_1.arCarrier, // TODO Topologie
|
||||||
|
stInOutJamEntr1 := "DB_JamArea406".stJam406_1.stData,
|
||||||
|
arInOutJamFinger := "DB_JamArea406".stJam406_2.arCarrier, // TODO Topologie
|
||||||
|
xOutStopper => "MBxxxx",
|
||||||
|
xOutVarioMotor => "MA0061",
|
||||||
|
nOutStateLast => "DB_GLOB_TroState".arTroState["cMainTro406"],
|
||||||
|
stInOutHMI := "DB_Interface_HMI".stTRO.TRO406);
|
||||||
|
END_REGION
|
||||||
|
|
||||||
|
REGION TRO407 (Vario) — CV-M4005
|
||||||
|
#TRO407.stInSeparator1.Settings.nSeparatorNo := "cSep407.1";
|
||||||
|
#TRO407.stInSeparator1.Settings.tDelayToNextItem := "TimeForSepWaiting_Short";
|
||||||
|
#TRO407.stInSeparator1.stSenInSep := "DB_Inputs".Sensors["cInBG3321"];
|
||||||
|
#TRO407.stInVario.stSenCarrInPos := "DB_Inputs".Sensors["cInBG3314"];
|
||||||
|
#TRO407.stInVario.stSenFinger := "DB_Inputs".Sensors["cInBG3315"];
|
||||||
|
#TRO407.stInVario.stSenJam := "DB_Inputs".Sensors["cInBG3320"];
|
||||||
|
|
||||||
|
#TRO407(nInMainTroNo := "cMainTro407",
|
||||||
|
xInSftyOk := TRUE, // TODO Safety
|
||||||
|
xInAllRdyToStart := TRUE,
|
||||||
|
xInRelease := TRUE, // TODO Release
|
||||||
|
stInOutMachineState := #stInOutControlUnit, // TODO ControlUnit
|
||||||
|
arInOutJamEntr1 := "DB_JamArea407".stJam407_1.arCarrier, // TODO Topologie
|
||||||
|
stInOutJamEntr1 := "DB_JamArea407".stJam407_1.stData,
|
||||||
|
arInOutJamFinger := "DB_JamArea407".stJam407_2.arCarrier, // TODO Topologie
|
||||||
|
xOutStopper => "MB3321",
|
||||||
|
xOutVarioMotor => "MA0062",
|
||||||
|
nOutStateLast => "DB_GLOB_TroState".arTroState["cMainTro407"],
|
||||||
|
stInOutHMI := "DB_Interface_HMI".stTRO.TRO407);
|
||||||
|
END_REGION
|
||||||
|
|
||||||
|
REGION TRO408 (Vario) — CV-M4006
|
||||||
|
#TRO408.stInSeparator1.Settings.nSeparatorNo := "cSep408.1";
|
||||||
|
#TRO408.stInSeparator1.Settings.tDelayToNextItem := "TimeForSepWaiting_Short";
|
||||||
|
#TRO408.stInSeparator1.stSenInSep := "DB_Inputs".Sensors["cInBG3370"];
|
||||||
|
#TRO408.stInVario.stSenCarrInPos := "DB_Inputs".Sensors["cInBG3376"];
|
||||||
|
#TRO408.stInVario.stSenFinger := "DB_Inputs".Sensors["cInBG3372"];
|
||||||
|
#TRO408.stInVario.stSenJam := "DB_Inputs".Sensors["cInBG3371"];
|
||||||
|
|
||||||
|
#TRO408(nInMainTroNo := "cMainTro408",
|
||||||
|
xInSftyOk := TRUE, // TODO Safety
|
||||||
|
xInAllRdyToStart := TRUE,
|
||||||
|
xInRelease := TRUE, // TODO Release
|
||||||
|
stInOutMachineState := #stInOutControlUnit, // TODO ControlUnit
|
||||||
|
arInOutJamEntr1 := "DB_JamArea408".stJam408_1.arCarrier, // TODO Topologie
|
||||||
|
stInOutJamEntr1 := "DB_JamArea408".stJam408_1.stData,
|
||||||
|
arInOutJamFinger := "DB_JamArea408".stJam408_2.arCarrier, // TODO Topologie
|
||||||
|
xOutStopper => "MB3370",
|
||||||
|
xOutVarioMotor => "MA0063",
|
||||||
|
nOutStateLast => "DB_GLOB_TroState".arTroState["cMainTro408"],
|
||||||
|
stInOutHMI := "DB_Interface_HMI".stTRO.TRO408);
|
||||||
|
END_REGION
|
||||||
|
|
||||||
|
REGION TRO409 (Vario) — CV-M4007
|
||||||
|
#TRO409.stInSeparator1.Settings.nSeparatorNo := "cSep409.1";
|
||||||
|
#TRO409.stInSeparator1.Settings.tDelayToNextItem := "TimeForSepWaiting_Short";
|
||||||
|
#TRO409.stInSeparator1.stSenInSep := "DB_Inputs".Sensors["cInBG3381"];
|
||||||
|
#TRO409.stInVario.stSenCarrInPos := "DB_Inputs".Sensors["cInBG3374"];
|
||||||
|
#TRO409.stInVario.stSenFinger := "DB_Inputs".Sensors["cInBG3375"];
|
||||||
|
#TRO409.stInVario.stSenJam := "DB_Inputs".Sensors["cInBG3380"];
|
||||||
|
|
||||||
|
#TRO409(nInMainTroNo := "cMainTro409",
|
||||||
|
xInSftyOk := TRUE, // TODO Safety
|
||||||
|
xInAllRdyToStart := TRUE,
|
||||||
|
xInRelease := TRUE, // TODO Release
|
||||||
|
stInOutMachineState := #stInOutControlUnit, // TODO ControlUnit
|
||||||
|
arInOutJamEntr1 := "DB_JamArea409".stJam409_1.arCarrier, // TODO Topologie
|
||||||
|
stInOutJamEntr1 := "DB_JamArea409".stJam409_1.stData,
|
||||||
|
arInOutJamFinger := "DB_JamArea409".stJam409_2.arCarrier, // TODO Topologie
|
||||||
|
xOutStopper => "MB3381",
|
||||||
|
xOutVarioMotor => "MA0064",
|
||||||
|
nOutStateLast => "DB_GLOB_TroState".arTroState["cMainTro409"],
|
||||||
|
stInOutHMI := "DB_Interface_HMI".stTRO.TRO409);
|
||||||
|
END_REGION
|
||||||
|
|
||||||
|
REGION TRO410 (Vario) — CV-M4008
|
||||||
|
#TRO410.stInSeparator1.Settings.nSeparatorNo := "cSep410.1";
|
||||||
|
#TRO410.stInSeparator1.Settings.tDelayToNextItem := "TimeForSepWaiting_Short";
|
||||||
|
#TRO410.stInSeparator1.stSenInSep := "DB_Inputs".Sensors["cInBG3440"];
|
||||||
|
#TRO410.stInVario.stSenCarrInPos := "DB_Inputs".Sensors["cInBG3446"];
|
||||||
|
#TRO410.stInVario.stSenFinger := "DB_Inputs".Sensors["cInBG3442"];
|
||||||
|
#TRO410.stInVario.stSenJam := "DB_Inputs".Sensors["cInBG3437"];
|
||||||
|
|
||||||
|
#TRO410(nInMainTroNo := "cMainTro410",
|
||||||
|
xInSftyOk := TRUE, // TODO Safety
|
||||||
|
xInAllRdyToStart := TRUE,
|
||||||
|
xInRelease := TRUE, // TODO Release
|
||||||
|
stInOutMachineState := #stInOutControlUnit, // TODO ControlUnit
|
||||||
|
arInOutJamEntr1 := "DB_JamArea410".stJam410_1.arCarrier, // TODO Topologie
|
||||||
|
stInOutJamEntr1 := "DB_JamArea410".stJam410_1.stData,
|
||||||
|
arInOutJamFinger := "DB_JamArea410".stJam410_2.arCarrier, // TODO Topologie
|
||||||
|
xOutStopper => "MB3440",
|
||||||
|
xOutVarioMotor => "MA0065",
|
||||||
|
nOutStateLast => "DB_GLOB_TroState".arTroState["cMainTro410"],
|
||||||
|
stInOutHMI := "DB_Interface_HMI".stTRO.TRO410);
|
||||||
|
END_REGION
|
||||||
|
|
||||||
|
REGION TRO411 (Vario) — CV-M4009
|
||||||
|
#TRO411.stInSeparator1.Settings.nSeparatorNo := "cSep411.1";
|
||||||
|
#TRO411.stInSeparator1.Settings.tDelayToNextItem := "TimeForSepWaiting_Short";
|
||||||
|
#TRO411.stInSeparator1.stSenInSep := "DB_Inputs".Sensors["cInBG3436"];
|
||||||
|
#TRO411.stInVario.stSenCarrInPos := "DB_Inputs".Sensors["cInBG3444"];
|
||||||
|
#TRO411.stInVario.stSenFinger := "DB_Inputs".Sensors["cInBG3445"];
|
||||||
|
#TRO411.stInVario.stSenJam := "DB_Inputs".Sensors["cInBG3431"];
|
||||||
|
|
||||||
|
#TRO411(nInMainTroNo := "cMainTro411",
|
||||||
|
xInSftyOk := TRUE, // TODO Safety
|
||||||
|
xInAllRdyToStart := TRUE,
|
||||||
|
xInRelease := TRUE, // TODO Release
|
||||||
|
stInOutMachineState := #stInOutControlUnit, // TODO ControlUnit
|
||||||
|
arInOutJamEntr1 := "DB_JamArea411".stJam411_1.arCarrier, // TODO Topologie
|
||||||
|
stInOutJamEntr1 := "DB_JamArea411".stJam411_1.stData,
|
||||||
|
arInOutJamFinger := "DB_JamArea411".stJam411_2.arCarrier, // TODO Topologie
|
||||||
|
xOutStopper => "MB3436",
|
||||||
|
xOutVarioMotor => "MA0066",
|
||||||
|
nOutStateLast => "DB_GLOB_TroState".arTroState["cMainTro411"],
|
||||||
|
stInOutHMI := "DB_Interface_HMI".stTRO.TRO411);
|
||||||
|
END_REGION
|
||||||
|
|
||||||
|
REGION TRO412 (Vario) — CV-M4010
|
||||||
|
#TRO412.stInSeparator1.Settings.nSeparatorNo := "cSep412.1";
|
||||||
|
#TRO412.stInSeparator1.Settings.tDelayToNextItem := "TimeForSepWaiting_Short";
|
||||||
|
#TRO412.stInSeparator1.stSenInSep := "DB_Inputs".Sensors["cInBG3391"];
|
||||||
|
#TRO412.stInVario.stSenCarrInPos := "DB_Inputs".Sensors["cInBG3392"];
|
||||||
|
#TRO412.stInVario.stSenFinger := "DB_Inputs".Sensors["cInBG3393"];
|
||||||
|
#TRO412.stInVario.stSenJam := "DB_Inputs".Sensors["cInBG3423"];
|
||||||
|
|
||||||
|
#TRO412(nInMainTroNo := "cMainTro412",
|
||||||
|
xInSftyOk := TRUE, // TODO Safety
|
||||||
|
xInAllRdyToStart := TRUE,
|
||||||
|
xInRelease := TRUE, // TODO Release
|
||||||
|
stInOutMachineState := #stInOutControlUnit, // TODO ControlUnit
|
||||||
|
arInOutJamEntr1 := "DB_JamArea412".stJam412_1.arCarrier, // TODO Topologie
|
||||||
|
stInOutJamEntr1 := "DB_JamArea412".stJam412_1.stData,
|
||||||
|
arInOutJamFinger := "DB_JamArea412".stJam412_2.arCarrier, // TODO Topologie
|
||||||
|
xOutStopper => "MB3391",
|
||||||
|
xOutVarioMotor => "MA0074",
|
||||||
|
nOutStateLast => "DB_GLOB_TroState".arTroState["cMainTro412"],
|
||||||
|
stInOutHMI := "DB_Interface_HMI".stTRO.TRO412);
|
||||||
|
END_REGION
|
||||||
|
|
||||||
|
REGION TRO413 (Vario) — CV-M4011
|
||||||
|
#TRO413.stInSeparator1.Settings.nSeparatorNo := "cSep413.1";
|
||||||
|
#TRO413.stInSeparator1.Settings.tDelayToNextItem := "TimeForSepWaiting_Short";
|
||||||
|
#TRO413.stInSeparator1.stSenInSep := "DB_Inputs".Sensors["cInBG3250"];
|
||||||
|
#TRO413.stInVario.stSenCarrInPos := "DB_Inputs".Sensors["cInBG3255"];
|
||||||
|
#TRO413.stInVario.stSenFinger := "DB_Inputs".Sensors["cInBG3253"];
|
||||||
|
#TRO413.stInVario.stSenJam := "DB_Inputs".Sensors["cInBG3264"];
|
||||||
|
|
||||||
|
#TRO413(nInMainTroNo := "cMainTro413",
|
||||||
|
xInSftyOk := TRUE, // TODO Safety
|
||||||
|
xInAllRdyToStart := TRUE,
|
||||||
|
xInRelease := TRUE, // TODO Release
|
||||||
|
stInOutMachineState := #stInOutControlUnit, // TODO ControlUnit
|
||||||
|
arInOutJamEntr1 := "DB_JamArea413".stJam413_1.arCarrier, // TODO Topologie
|
||||||
|
stInOutJamEntr1 := "DB_JamArea413".stJam413_1.stData,
|
||||||
|
arInOutJamFinger := "DB_JamArea413".stJam413_2.arCarrier, // TODO Topologie
|
||||||
|
xOutStopper => "MB3250",
|
||||||
|
xOutVarioMotor => "MA0072",
|
||||||
|
nOutStateLast => "DB_GLOB_TroState".arTroState["cMainTro413"],
|
||||||
|
stInOutHMI := "DB_Interface_HMI".stTRO.TRO413);
|
||||||
|
END_REGION
|
||||||
|
|
||||||
|
END_FUNCTION_BLOCK
|
||||||
@@ -0,0 +1,379 @@
|
|||||||
|
FUNCTION_BLOCK "FB_Main_skel_UH05"
|
||||||
|
{ S7_Optimized_Access := 'TRUE' }
|
||||||
|
VERSION : 0.1
|
||||||
|
// ============================================================
|
||||||
|
// AUTOMATISCH GENERIERTES GRUNDGERUEST — create_skel.py
|
||||||
|
// Quelle: E/A-Listen UH05 (data/)
|
||||||
|
// TODO-Marken kennzeichnen manuell zu ergaenzende Stellen
|
||||||
|
// (Timings, Topologie/JamAreas, Safety, Release, Priority).
|
||||||
|
// ============================================================
|
||||||
|
VAR
|
||||||
|
TRO501 : "FB_ILS_MTRO_1Sep"; // KR-M0500
|
||||||
|
TRO502 : "FB_ILS_MTRO_1Sep"; // CV-M0510
|
||||||
|
TRO503 : "FB_ILS_MTRO_1Sep"; // CV-M5000
|
||||||
|
TRO504 : "FB_ILS_MTRO_Vario"; // CV-M5000_A
|
||||||
|
TRO505 : "FB_ILS_MTRO_Vario"; // CV-M5000_B
|
||||||
|
TRO506 : "FB_ILS_MTRO_1Sep"; // CV-M5001
|
||||||
|
TRO507 : "FB_ILS_MTRO_Vario"; // CV-M5001_A
|
||||||
|
TRO508 : "FB_ILS_MTRO_Vario"; // CV-M5001_B
|
||||||
|
TRO509 : "FB_ILS_MTRO_1Sep"; // KR-M5002
|
||||||
|
TRO510 : "FB_ILS_MTRO_Vario"; // CV-M5003 / WS1.1
|
||||||
|
TRO511 : "FB_ILS_MTRO_Vario"; // CV-M5004 / WS1.1
|
||||||
|
TRO512 : "FB_ILS_MTRO_Vario"; // CV-M5005 / WS1.0
|
||||||
|
TRO513 : "FB_ILS_MTRO_Vario"; // CV-M5006 / WS2.0
|
||||||
|
TRO514 : "FB_ILS_MTRO_Vario"; // CV-M5007 / WS3.0
|
||||||
|
TRO515 : "FB_ILS_MTRO_Vario"; // CV-M5008 / WS4.0
|
||||||
|
END_VAR
|
||||||
|
|
||||||
|
BEGIN
|
||||||
|
REGION TRO501 (1Sep) — KR-M0500
|
||||||
|
#TRO501.stInSeparator1.Settings.nSeparatorNo := "cSep501.1";
|
||||||
|
#TRO501.stInSeparator1.Settings.tDelayToNextItem := "TimeForSepWaiting_Short";
|
||||||
|
#TRO501.stInSeparator1.Settings.tTrailingTime := T#500ms; // TODO Timing
|
||||||
|
#TRO501.stInSeparator1.Settings.tHandlingTime := T#200ms; // TODO Timing
|
||||||
|
#TRO501.stInSeparator1.Settings.tJam := "TimeForSepJam";
|
||||||
|
#TRO501.stInSeparator1.stSenInSep := "DB_Inputs".Sensors["cInBG3372"];
|
||||||
|
#TRO501.stInSenJam2 := "DB_Inputs".Sensors["cInBG3431"];
|
||||||
|
|
||||||
|
#TRO501.stInPriorityManager.xReleaseOk := TRUE; // TODO Priority
|
||||||
|
|
||||||
|
#TRO501(nInMainTroNo := "cMainTro501",
|
||||||
|
xInSftyOk := TRUE, // TODO Safety
|
||||||
|
xInAllRdyToStart := TRUE,
|
||||||
|
xInCarouselRun := TRUE, // TODO Conveyor
|
||||||
|
xInRelease := TRUE, // TODO Release
|
||||||
|
stInOutMachineState := #stInOutControlUnit, // TODO ControlUnit
|
||||||
|
arInOutJamEntr1 := "DB_JamArea501".stJam501_1.arCarrier, // TODO Topologie
|
||||||
|
stInOutJamEntr1 := "DB_JamArea501".stJam501_1.stData,
|
||||||
|
arInOutJamExit2 := "DB_JamArea501".stJam501_2.arCarrier, // TODO Topologie
|
||||||
|
stInOutJamExit2 := "DB_JamArea501".stJam501_2.stData,
|
||||||
|
xOutStopper1 => "MB3372",
|
||||||
|
nOutStateLast => "DB_GLOB_TroState".arTroState["cMainTro501"],
|
||||||
|
stInOutHMI := "DB_Interface_HMI".stTRO.TRO501);
|
||||||
|
END_REGION
|
||||||
|
|
||||||
|
REGION TRO502 (1Sep) — CV-M0510
|
||||||
|
#TRO502.stInSeparator1.Settings.nSeparatorNo := "cSep502.1";
|
||||||
|
#TRO502.stInSeparator1.Settings.tDelayToNextItem := "TimeForSepWaiting_Short";
|
||||||
|
#TRO502.stInSeparator1.Settings.tTrailingTime := T#500ms; // TODO Timing
|
||||||
|
#TRO502.stInSeparator1.Settings.tHandlingTime := T#200ms; // TODO Timing
|
||||||
|
#TRO502.stInSeparator1.Settings.tJam := "TimeForSepJam";
|
||||||
|
#TRO502.stInSeparator1.stSenInSep := "DB_Inputs".Sensors["cInBG3330"];
|
||||||
|
#TRO502.stInSenJam2 := "DB_Inputs".Sensors["cInBGxxxx"];
|
||||||
|
|
||||||
|
#TRO502.stInPriorityManager.xReleaseOk := TRUE; // TODO Priority
|
||||||
|
|
||||||
|
#TRO502(nInMainTroNo := "cMainTro502",
|
||||||
|
xInSftyOk := TRUE, // TODO Safety
|
||||||
|
xInAllRdyToStart := TRUE,
|
||||||
|
xInCarouselRun := TRUE, // TODO Conveyor
|
||||||
|
xInRelease := TRUE, // TODO Release
|
||||||
|
stInOutMachineState := #stInOutControlUnit, // TODO ControlUnit
|
||||||
|
arInOutJamEntr1 := "DB_JamArea502".stJam502_1.arCarrier, // TODO Topologie
|
||||||
|
stInOutJamEntr1 := "DB_JamArea502".stJam502_1.stData,
|
||||||
|
arInOutJamExit2 := "DB_JamArea502".stJam502_2.arCarrier, // TODO Topologie
|
||||||
|
stInOutJamExit2 := "DB_JamArea502".stJam502_2.stData,
|
||||||
|
xOutStopper1 => "MBxxxx",
|
||||||
|
nOutStateLast => "DB_GLOB_TroState".arTroState["cMainTro502"],
|
||||||
|
stInOutHMI := "DB_Interface_HMI".stTRO.TRO502);
|
||||||
|
END_REGION
|
||||||
|
|
||||||
|
REGION TRO503 (1Sep) — CV-M5000
|
||||||
|
#TRO503.stInSeparator1.Settings.nSeparatorNo := "cSep503.1";
|
||||||
|
#TRO503.stInSeparator1.Settings.tDelayToNextItem := "TimeForSepWaiting_Short";
|
||||||
|
#TRO503.stInSeparator1.Settings.tTrailingTime := T#500ms; // TODO Timing
|
||||||
|
#TRO503.stInSeparator1.Settings.tHandlingTime := T#200ms; // TODO Timing
|
||||||
|
#TRO503.stInSeparator1.Settings.tJam := "TimeForSepJam";
|
||||||
|
#TRO503.stInSeparator1.stSenInSep := "DB_Inputs".Sensors["cInBG3301"];
|
||||||
|
#TRO503.stInSenJam2 := "DB_Inputs".Sensors["cInBG3310"];
|
||||||
|
|
||||||
|
#TRO503.stInPriorityManager.xReleaseOk := TRUE; // TODO Priority
|
||||||
|
|
||||||
|
#TRO503(nInMainTroNo := "cMainTro503",
|
||||||
|
xInSftyOk := TRUE, // TODO Safety
|
||||||
|
xInAllRdyToStart := TRUE,
|
||||||
|
xInCarouselRun := TRUE, // TODO Conveyor
|
||||||
|
xInRelease := TRUE, // TODO Release
|
||||||
|
stInOutMachineState := #stInOutControlUnit, // TODO ControlUnit
|
||||||
|
arInOutJamEntr1 := "DB_JamArea503".stJam503_1.arCarrier, // TODO Topologie
|
||||||
|
stInOutJamEntr1 := "DB_JamArea503".stJam503_1.stData,
|
||||||
|
arInOutJamExit2 := "DB_JamArea503".stJam503_2.arCarrier, // TODO Topologie
|
||||||
|
stInOutJamExit2 := "DB_JamArea503".stJam503_2.stData,
|
||||||
|
xOutStopper1 => "MB3301",
|
||||||
|
nOutStateLast => "DB_GLOB_TroState".arTroState["cMainTro503"],
|
||||||
|
stInOutHMI := "DB_Interface_HMI".stTRO.TRO503);
|
||||||
|
END_REGION
|
||||||
|
|
||||||
|
REGION TRO504 (Vario) — CV-M5000_A
|
||||||
|
#TRO504.stInSeparator1.Settings.nSeparatorNo := "cSep504.1";
|
||||||
|
#TRO504.stInSeparator1.Settings.tDelayToNextItem := "TimeForSepWaiting_Short";
|
||||||
|
#TRO504.stInSeparator1.stSenInSep := "DB_Inputs".Sensors["cInBGxxxx"];
|
||||||
|
#TRO504.stInVario.stSenCarrInPos := "DB_Inputs".Sensors["cInBG3332"];
|
||||||
|
#TRO504.stInVario.stSenFinger := "DB_Inputs".Sensors["cInBG3331"];
|
||||||
|
#TRO504.stInVario.stSenJam := "DB_Inputs".Sensors["cInBG3451"];
|
||||||
|
|
||||||
|
#TRO504(nInMainTroNo := "cMainTro504",
|
||||||
|
xInSftyOk := TRUE, // TODO Safety
|
||||||
|
xInAllRdyToStart := TRUE,
|
||||||
|
xInRelease := TRUE, // TODO Release
|
||||||
|
stInOutMachineState := #stInOutControlUnit, // TODO ControlUnit
|
||||||
|
arInOutJamEntr1 := "DB_JamArea504".stJam504_1.arCarrier, // TODO Topologie
|
||||||
|
stInOutJamEntr1 := "DB_JamArea504".stJam504_1.stData,
|
||||||
|
arInOutJamFinger := "DB_JamArea504".stJam504_2.arCarrier, // TODO Topologie
|
||||||
|
xOutStopper => "MB3330",
|
||||||
|
xOutVarioMotor => "MA0071",
|
||||||
|
nOutStateLast => "DB_GLOB_TroState".arTroState["cMainTro504"],
|
||||||
|
stInOutHMI := "DB_Interface_HMI".stTRO.TRO504);
|
||||||
|
END_REGION
|
||||||
|
|
||||||
|
REGION TRO505 (Vario) — CV-M5000_B
|
||||||
|
#TRO505.stInSeparator1.Settings.nSeparatorNo := "cSep505.1";
|
||||||
|
#TRO505.stInSeparator1.Settings.tDelayToNextItem := "TimeForSepWaiting_Short";
|
||||||
|
#TRO505.stInSeparator1.stSenInSep := "DB_Inputs".Sensors["cInBG3452"];
|
||||||
|
#TRO505.stInVario.stSenCarrInPos := "DB_Inputs".Sensors["cInBG3454"];
|
||||||
|
#TRO505.stInVario.stSenFinger := "DB_Inputs".Sensors["cInBG3453"];
|
||||||
|
#TRO505.stInVario.stSenJam := "DB_Inputs".Sensors["cInBGxxxx"];
|
||||||
|
|
||||||
|
#TRO505(nInMainTroNo := "cMainTro505",
|
||||||
|
xInSftyOk := TRUE, // TODO Safety
|
||||||
|
xInAllRdyToStart := TRUE,
|
||||||
|
xInRelease := TRUE, // TODO Release
|
||||||
|
stInOutMachineState := #stInOutControlUnit, // TODO ControlUnit
|
||||||
|
arInOutJamEntr1 := "DB_JamArea505".stJam505_1.arCarrier, // TODO Topologie
|
||||||
|
stInOutJamEntr1 := "DB_JamArea505".stJam505_1.stData,
|
||||||
|
arInOutJamFinger := "DB_JamArea505".stJam505_2.arCarrier, // TODO Topologie
|
||||||
|
xOutStopper => "MB3452",
|
||||||
|
xOutVarioMotor => "MA0060",
|
||||||
|
nOutStateLast => "DB_GLOB_TroState".arTroState["cMainTro505"],
|
||||||
|
stInOutHMI := "DB_Interface_HMI".stTRO.TRO505);
|
||||||
|
END_REGION
|
||||||
|
|
||||||
|
REGION TRO506 (1Sep) — CV-M5001
|
||||||
|
#TRO506.stInSeparator1.Settings.nSeparatorNo := "cSep506.1";
|
||||||
|
#TRO506.stInSeparator1.Settings.tDelayToNextItem := "TimeForSepWaiting_Short";
|
||||||
|
#TRO506.stInSeparator1.Settings.tTrailingTime := T#500ms; // TODO Timing
|
||||||
|
#TRO506.stInSeparator1.Settings.tHandlingTime := T#200ms; // TODO Timing
|
||||||
|
#TRO506.stInSeparator1.Settings.tJam := "TimeForSepJam";
|
||||||
|
#TRO506.stInSeparator1.stSenInSep := "DB_Inputs".Sensors["cInBG3304"];
|
||||||
|
#TRO506.stInSenJam2 := "DB_Inputs".Sensors["cInBG3305"];
|
||||||
|
|
||||||
|
#TRO506.stInPriorityManager.xReleaseOk := TRUE; // TODO Priority
|
||||||
|
|
||||||
|
#TRO506(nInMainTroNo := "cMainTro506",
|
||||||
|
xInSftyOk := TRUE, // TODO Safety
|
||||||
|
xInAllRdyToStart := TRUE,
|
||||||
|
xInCarouselRun := TRUE, // TODO Conveyor
|
||||||
|
xInRelease := TRUE, // TODO Release
|
||||||
|
stInOutMachineState := #stInOutControlUnit, // TODO ControlUnit
|
||||||
|
arInOutJamEntr1 := "DB_JamArea506".stJam506_1.arCarrier, // TODO Topologie
|
||||||
|
stInOutJamEntr1 := "DB_JamArea506".stJam506_1.stData,
|
||||||
|
arInOutJamExit2 := "DB_JamArea506".stJam506_2.arCarrier, // TODO Topologie
|
||||||
|
stInOutJamExit2 := "DB_JamArea506".stJam506_2.stData,
|
||||||
|
xOutStopper1 => "MB3304",
|
||||||
|
nOutStateLast => "DB_GLOB_TroState".arTroState["cMainTro506"],
|
||||||
|
stInOutHMI := "DB_Interface_HMI".stTRO.TRO506);
|
||||||
|
END_REGION
|
||||||
|
|
||||||
|
REGION TRO507 (Vario) — CV-M5001_A
|
||||||
|
#TRO507.stInSeparator1.Settings.nSeparatorNo := "cSep507.1";
|
||||||
|
#TRO507.stInSeparator1.Settings.tDelayToNextItem := "TimeForSepWaiting_Short";
|
||||||
|
#TRO507.stInSeparator1.stSenInSep := "DB_Inputs".Sensors["cInBG3333"];
|
||||||
|
#TRO507.stInVario.stSenCarrInPos := "DB_Inputs".Sensors["cInBG3335"];
|
||||||
|
#TRO507.stInVario.stSenFinger := "DB_Inputs".Sensors["cInBG3334"];
|
||||||
|
#TRO507.stInVario.stSenJam := "DB_Inputs".Sensors["cInBG3456"];
|
||||||
|
|
||||||
|
#TRO507(nInMainTroNo := "cMainTro507",
|
||||||
|
xInSftyOk := TRUE, // TODO Safety
|
||||||
|
xInAllRdyToStart := TRUE,
|
||||||
|
xInRelease := TRUE, // TODO Release
|
||||||
|
stInOutMachineState := #stInOutControlUnit, // TODO ControlUnit
|
||||||
|
arInOutJamEntr1 := "DB_JamArea507".stJam507_1.arCarrier, // TODO Topologie
|
||||||
|
stInOutJamEntr1 := "DB_JamArea507".stJam507_1.stData,
|
||||||
|
arInOutJamFinger := "DB_JamArea507".stJam507_2.arCarrier, // TODO Topologie
|
||||||
|
xOutStopper => "MB3333",
|
||||||
|
xOutVarioMotor => "MA0072",
|
||||||
|
nOutStateLast => "DB_GLOB_TroState".arTroState["cMainTro507"],
|
||||||
|
stInOutHMI := "DB_Interface_HMI".stTRO.TRO507);
|
||||||
|
END_REGION
|
||||||
|
|
||||||
|
REGION TRO508 (Vario) — CV-M5001_B
|
||||||
|
#TRO508.stInSeparator1.Settings.nSeparatorNo := "cSep508.1";
|
||||||
|
#TRO508.stInSeparator1.Settings.tDelayToNextItem := "TimeForSepWaiting_Short";
|
||||||
|
#TRO508.stInSeparator1.stSenInSep := "DB_Inputs".Sensors["cInBG3457"];
|
||||||
|
#TRO508.stInVario.stSenCarrInPos := "DB_Inputs".Sensors["cInBG3461"];
|
||||||
|
#TRO508.stInVario.stSenFinger := "DB_Inputs".Sensors["cInBG3460"];
|
||||||
|
#TRO508.stInVario.stSenJam := "DB_Inputs".Sensors["cInBGxxxx"];
|
||||||
|
|
||||||
|
#TRO508(nInMainTroNo := "cMainTro508",
|
||||||
|
xInSftyOk := TRUE, // TODO Safety
|
||||||
|
xInAllRdyToStart := TRUE,
|
||||||
|
xInRelease := TRUE, // TODO Release
|
||||||
|
stInOutMachineState := #stInOutControlUnit, // TODO ControlUnit
|
||||||
|
arInOutJamEntr1 := "DB_JamArea508".stJam508_1.arCarrier, // TODO Topologie
|
||||||
|
stInOutJamEntr1 := "DB_JamArea508".stJam508_1.stData,
|
||||||
|
arInOutJamFinger := "DB_JamArea508".stJam508_2.arCarrier, // TODO Topologie
|
||||||
|
xOutStopper => "MB3457",
|
||||||
|
xOutVarioMotor => "MA0061",
|
||||||
|
nOutStateLast => "DB_GLOB_TroState".arTroState["cMainTro508"],
|
||||||
|
stInOutHMI := "DB_Interface_HMI".stTRO.TRO508);
|
||||||
|
END_REGION
|
||||||
|
|
||||||
|
REGION TRO509 (1Sep) — KR-M5002
|
||||||
|
#TRO509.stInSeparator1.Settings.nSeparatorNo := "cSep509.1";
|
||||||
|
#TRO509.stInSeparator1.Settings.tDelayToNextItem := "TimeForSepWaiting_Short";
|
||||||
|
#TRO509.stInSeparator1.Settings.tTrailingTime := T#500ms; // TODO Timing
|
||||||
|
#TRO509.stInSeparator1.Settings.tHandlingTime := T#200ms; // TODO Timing
|
||||||
|
#TRO509.stInSeparator1.Settings.tJam := "TimeForSepJam";
|
||||||
|
#TRO509.stInSeparator1.stSenInSep := "DB_Inputs".Sensors["cInBG3240"];
|
||||||
|
#TRO509.stInSenJam2 := "DB_Inputs".Sensors["cInBG3241"];
|
||||||
|
|
||||||
|
#TRO509.stInPriorityManager.xReleaseOk := TRUE; // TODO Priority
|
||||||
|
|
||||||
|
#TRO509(nInMainTroNo := "cMainTro509",
|
||||||
|
xInSftyOk := TRUE, // TODO Safety
|
||||||
|
xInAllRdyToStart := TRUE,
|
||||||
|
xInCarouselRun := TRUE, // TODO Conveyor
|
||||||
|
xInRelease := TRUE, // TODO Release
|
||||||
|
stInOutMachineState := #stInOutControlUnit, // TODO ControlUnit
|
||||||
|
arInOutJamEntr1 := "DB_JamArea509".stJam509_1.arCarrier, // TODO Topologie
|
||||||
|
stInOutJamEntr1 := "DB_JamArea509".stJam509_1.stData,
|
||||||
|
arInOutJamExit2 := "DB_JamArea509".stJam509_2.arCarrier, // TODO Topologie
|
||||||
|
stInOutJamExit2 := "DB_JamArea509".stJam509_2.stData,
|
||||||
|
xOutStopper1 => "MB3240",
|
||||||
|
nOutStateLast => "DB_GLOB_TroState".arTroState["cMainTro509"],
|
||||||
|
stInOutHMI := "DB_Interface_HMI".stTRO.TRO509);
|
||||||
|
END_REGION
|
||||||
|
|
||||||
|
REGION TRO510 (Vario) — CV-M5003 / WS1.1
|
||||||
|
#TRO510.stInSeparator1.Settings.nSeparatorNo := "cSep510.1";
|
||||||
|
#TRO510.stInSeparator1.Settings.tDelayToNextItem := "TimeForSepWaiting_Short";
|
||||||
|
#TRO510.stInSeparator1.stSenInSep := "DB_Inputs".Sensors["cInBG3245"];
|
||||||
|
#TRO510.stInVario.stSenCarrInPos := "DB_Inputs".Sensors["cInBG3244"];
|
||||||
|
#TRO510.stInVario.stSenFinger := "DB_Inputs".Sensors["cInBG3246"];
|
||||||
|
#TRO510.stInVario.stSenJam := "DB_Inputs".Sensors["cInBG3243"];
|
||||||
|
|
||||||
|
#TRO510(nInMainTroNo := "cMainTro510",
|
||||||
|
xInSftyOk := TRUE, // TODO Safety
|
||||||
|
xInAllRdyToStart := TRUE,
|
||||||
|
xInRelease := TRUE, // TODO Release
|
||||||
|
stInOutMachineState := #stInOutControlUnit, // TODO ControlUnit
|
||||||
|
arInOutJamEntr1 := "DB_JamArea510".stJam510_1.arCarrier, // TODO Topologie
|
||||||
|
stInOutJamEntr1 := "DB_JamArea510".stJam510_1.stData,
|
||||||
|
arInOutJamFinger := "DB_JamArea510".stJam510_2.arCarrier, // TODO Topologie
|
||||||
|
xOutStopper => "MB3245",
|
||||||
|
xOutVarioMotor => "MA0063",
|
||||||
|
nOutStateLast => "DB_GLOB_TroState".arTroState["cMainTro510"],
|
||||||
|
stInOutHMI := "DB_Interface_HMI".stTRO.TRO510);
|
||||||
|
END_REGION
|
||||||
|
|
||||||
|
REGION TRO511 (Vario) — CV-M5004 / WS1.1
|
||||||
|
#TRO511.stInSeparator1.Settings.nSeparatorNo := "cSep511.1";
|
||||||
|
#TRO511.stInSeparator1.Settings.tDelayToNextItem := "TimeForSepWaiting_Short";
|
||||||
|
#TRO511.stInSeparator1.stSenInSep := "DB_Inputs".Sensors["cInBG3251"];
|
||||||
|
#TRO511.stInVario.stSenCarrInPos := "DB_Inputs".Sensors["cInBG3255"];
|
||||||
|
#TRO511.stInVario.stSenFinger := "DB_Inputs".Sensors["cInBG3254"];
|
||||||
|
#TRO511.stInVario.stSenJam := "DB_Inputs".Sensors["cInBG3252"];
|
||||||
|
|
||||||
|
#TRO511(nInMainTroNo := "cMainTro511",
|
||||||
|
xInSftyOk := TRUE, // TODO Safety
|
||||||
|
xInAllRdyToStart := TRUE,
|
||||||
|
xInRelease := TRUE, // TODO Release
|
||||||
|
stInOutMachineState := #stInOutControlUnit, // TODO ControlUnit
|
||||||
|
arInOutJamEntr1 := "DB_JamArea511".stJam511_1.arCarrier, // TODO Topologie
|
||||||
|
stInOutJamEntr1 := "DB_JamArea511".stJam511_1.stData,
|
||||||
|
arInOutJamFinger := "DB_JamArea511".stJam511_2.arCarrier, // TODO Topologie
|
||||||
|
xOutStopper => "MB3251",
|
||||||
|
xOutVarioMotor => "MA0064",
|
||||||
|
nOutStateLast => "DB_GLOB_TroState".arTroState["cMainTro511"],
|
||||||
|
stInOutHMI := "DB_Interface_HMI".stTRO.TRO511);
|
||||||
|
END_REGION
|
||||||
|
|
||||||
|
REGION TRO512 (Vario) — CV-M5005 / WS1.0
|
||||||
|
#TRO512.stInSeparator1.Settings.nSeparatorNo := "cSep512.1";
|
||||||
|
#TRO512.stInSeparator1.Settings.tDelayToNextItem := "TimeForSepWaiting_Short";
|
||||||
|
#TRO512.stInSeparator1.stSenInSep := "DB_Inputs".Sensors["cInBG3314"];
|
||||||
|
#TRO512.stInVario.stSenCarrInPos := "DB_Inputs".Sensors["cInBG3320"];
|
||||||
|
#TRO512.stInVario.stSenFinger := "DB_Inputs".Sensors["cInBG3317"];
|
||||||
|
#TRO512.stInVario.stSenJam := "DB_Inputs".Sensors["cInBG3313"];
|
||||||
|
|
||||||
|
#TRO512(nInMainTroNo := "cMainTro512",
|
||||||
|
xInSftyOk := TRUE, // TODO Safety
|
||||||
|
xInAllRdyToStart := TRUE,
|
||||||
|
xInRelease := TRUE, // TODO Release
|
||||||
|
stInOutMachineState := #stInOutControlUnit, // TODO ControlUnit
|
||||||
|
arInOutJamEntr1 := "DB_JamArea512".stJam512_1.arCarrier, // TODO Topologie
|
||||||
|
stInOutJamEntr1 := "DB_JamArea512".stJam512_1.stData,
|
||||||
|
arInOutJamFinger := "DB_JamArea512".stJam512_2.arCarrier, // TODO Topologie
|
||||||
|
xOutStopper => "MB3314",
|
||||||
|
xOutVarioMotor => "MA0065",
|
||||||
|
nOutStateLast => "DB_GLOB_TroState".arTroState["cMainTro512"],
|
||||||
|
stInOutHMI := "DB_Interface_HMI".stTRO.TRO512);
|
||||||
|
END_REGION
|
||||||
|
|
||||||
|
REGION TRO513 (Vario) — CV-M5006 / WS2.0
|
||||||
|
#TRO513.stInSeparator1.Settings.nSeparatorNo := "cSep513.1";
|
||||||
|
#TRO513.stInSeparator1.Settings.tDelayToNextItem := "TimeForSepWaiting_Short";
|
||||||
|
#TRO513.stInSeparator1.stSenInSep := "DB_Inputs".Sensors["cInBG3362"];
|
||||||
|
#TRO513.stInVario.stSenCarrInPos := "DB_Inputs".Sensors["cInBG3366"];
|
||||||
|
#TRO513.stInVario.stSenFinger := "DB_Inputs".Sensors["cInBG3365"];
|
||||||
|
#TRO513.stInVario.stSenJam := "DB_Inputs".Sensors["cInBG3361"];
|
||||||
|
|
||||||
|
#TRO513(nInMainTroNo := "cMainTro513",
|
||||||
|
xInSftyOk := TRUE, // TODO Safety
|
||||||
|
xInAllRdyToStart := TRUE,
|
||||||
|
xInRelease := TRUE, // TODO Release
|
||||||
|
stInOutMachineState := #stInOutControlUnit, // TODO ControlUnit
|
||||||
|
arInOutJamEntr1 := "DB_JamArea513".stJam513_1.arCarrier, // TODO Topologie
|
||||||
|
stInOutJamEntr1 := "DB_JamArea513".stJam513_1.stData,
|
||||||
|
arInOutJamFinger := "DB_JamArea513".stJam513_2.arCarrier, // TODO Topologie
|
||||||
|
xOutStopper => "MB3362",
|
||||||
|
xOutVarioMotor => "MA0066",
|
||||||
|
nOutStateLast => "DB_GLOB_TroState".arTroState["cMainTro513"],
|
||||||
|
stInOutHMI := "DB_Interface_HMI".stTRO.TRO513);
|
||||||
|
END_REGION
|
||||||
|
|
||||||
|
REGION TRO514 (Vario) — CV-M5007 / WS3.0
|
||||||
|
#TRO514.stInSeparator1.Settings.nSeparatorNo := "cSep514.1";
|
||||||
|
#TRO514.stInSeparator1.Settings.tDelayToNextItem := "TimeForSepWaiting_Short";
|
||||||
|
#TRO514.stInSeparator1.stSenInSep := "DB_Inputs".Sensors["cInBG3374"];
|
||||||
|
#TRO514.stInVario.stSenCarrInPos := "DB_Inputs".Sensors["cInBG3380"];
|
||||||
|
#TRO514.stInVario.stSenFinger := "DB_Inputs".Sensors["cInBG3377"];
|
||||||
|
#TRO514.stInVario.stSenJam := "DB_Inputs".Sensors["cInBG3373"];
|
||||||
|
|
||||||
|
#TRO514(nInMainTroNo := "cMainTro514",
|
||||||
|
xInSftyOk := TRUE, // TODO Safety
|
||||||
|
xInAllRdyToStart := TRUE,
|
||||||
|
xInRelease := TRUE, // TODO Release
|
||||||
|
stInOutMachineState := #stInOutControlUnit, // TODO ControlUnit
|
||||||
|
arInOutJamEntr1 := "DB_JamArea514".stJam514_1.arCarrier, // TODO Topologie
|
||||||
|
stInOutJamEntr1 := "DB_JamArea514".stJam514_1.stData,
|
||||||
|
arInOutJamFinger := "DB_JamArea514".stJam514_2.arCarrier, // TODO Topologie
|
||||||
|
xOutStopper => "MB3374",
|
||||||
|
xOutVarioMotor => "MA0067",
|
||||||
|
nOutStateLast => "DB_GLOB_TroState".arTroState["cMainTro514"],
|
||||||
|
stInOutHMI := "DB_Interface_HMI".stTRO.TRO514);
|
||||||
|
END_REGION
|
||||||
|
|
||||||
|
REGION TRO515 (Vario) — CV-M5008 / WS4.0
|
||||||
|
#TRO515.stInSeparator1.Settings.nSeparatorNo := "cSep515.1";
|
||||||
|
#TRO515.stInSeparator1.Settings.tDelayToNextItem := "TimeForSepWaiting_Short";
|
||||||
|
#TRO515.stInSeparator1.stSenInSep := "DB_Inputs".Sensors["cInBG3422"];
|
||||||
|
#TRO515.stInVario.stSenCarrInPos := "DB_Inputs".Sensors["cInBG3426"];
|
||||||
|
#TRO515.stInVario.stSenFinger := "DB_Inputs".Sensors["cInBG3425"];
|
||||||
|
#TRO515.stInVario.stSenJam := "DB_Inputs".Sensors["cInBG3421"];
|
||||||
|
|
||||||
|
#TRO515(nInMainTroNo := "cMainTro515",
|
||||||
|
xInSftyOk := TRUE, // TODO Safety
|
||||||
|
xInAllRdyToStart := TRUE,
|
||||||
|
xInRelease := TRUE, // TODO Release
|
||||||
|
stInOutMachineState := #stInOutControlUnit, // TODO ControlUnit
|
||||||
|
arInOutJamEntr1 := "DB_JamArea515".stJam515_1.arCarrier, // TODO Topologie
|
||||||
|
stInOutJamEntr1 := "DB_JamArea515".stJam515_1.stData,
|
||||||
|
arInOutJamFinger := "DB_JamArea515".stJam515_2.arCarrier, // TODO Topologie
|
||||||
|
xOutStopper => "MB3422",
|
||||||
|
xOutVarioMotor => "MA0070",
|
||||||
|
nOutStateLast => "DB_GLOB_TroState".arTroState["cMainTro515"],
|
||||||
|
stInOutHMI := "DB_Interface_HMI".stTRO.TRO515);
|
||||||
|
END_REGION
|
||||||
|
|
||||||
|
END_FUNCTION_BLOCK
|
||||||
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
Reference in New Issue
Block a user