This commit is contained in:
2025-11-18 11:30:44 +01:00
32 changed files with 223693 additions and 143 deletions
+8 -5
View File
@@ -7,6 +7,7 @@ for %%i in ("%~1") do (
set "DIR=%%~dpi"
)
call C:\kabellaengen\bin\setenv.bat
REM call C:\10-Develop\gitrepos\kabellaengen\bin\setenv.bat
REM echo Dateiname ohne Erweiterung: %FILENAME%
REM echo Erweiterung: %EXT%
@@ -24,15 +25,18 @@ if exist "%~dp0_setenv.bat" (
echo Lade lokale Umgebungseinstellungen aus _setenv.bat...
call "%~dp0_setenv.bat"
)
REM Zielverzeichnis
set TARGET_DIR=%PROJECT_BOM_RESULTS%\%FILENAME%
mkdir "%TARGET_DIR%"
echo on
echo.
echo === Fetching Positions ===
call getpositions.bat --filename %1 -s -r -w %JSON_POS% -e %ERROR_DOUBLE%
if exist "%PROJECT_WORK%\%ERROR_DOUBLE%" (
@echo -failed- duplicate IDs in given layout
@echo -failed- errors found, e.g. duplicate IDs in given layout
pause
move %PROJECT_WORK%\%ERROR_DOUBLE% %PROJECT_BOM_RESULTS%
move %PROJECT_WORK%\%ERROR_DOUBLE% %TARGET_DIR%
move %PROJECT_WORK%\%JSON_TODRAW% %TARGET_DIR%
goto :eof
)
if not exist "%PROJECT_WORK%\%JSON_POS%" (
@@ -58,8 +62,7 @@ if not exist "%PROJECT_WORK%\%EXCEL_RES%" (
)
echo.
mkdir %PROJECT_BOM_RESULTS%\%FILENAME%
move %PROJECT_WORK%\%FILENAME%_* %PROJECT_BOM_RESULTS%\%FILENAME%
move %PROJECT_WORK%\%FILENAME%_* %TARGET_DIR%
pause
+10 -6
View File
@@ -7,6 +7,7 @@ for %%i in ("%~1") do (
set "DIR=%%~dpi"
)
call C:\kabellaengen\bin\setenv.bat
REM call C:\10-Develop\gitrepos\kabellaengen\bin\setenv.bat
REM echo Dateiname ohne Erweiterung: %FILENAME%
REM echo Erweiterung: %EXT%
@@ -23,16 +24,20 @@ if exist "%~dp0_setenv.bat" (
echo Lade lokale Umgebungseinstellungen aus _setenv.bat...
call "%~dp0_setenv.bat"
)
REM Zielverzeichnis
set TARGET_DIR=%PROJECT_IO_RESULTS%\%FILENAME%
mkdir "%TARGET_DIR%"
echo.
echo === Fetching Positions ===
call getpositions.bat --filename %1 -s -r -w %JSON_POS% -e %ERROR_DOUBLE%
if exist "%PROJECT_WORK%\%ERROR_DOUBLE%" (
@echo == failed: duplicate IDs in given layout
@echo == failed: errors, e.g. duplicate IDs in given layout
pause
move %PROJECT_WORK%\%ERROR_DOUBLE% %PROJECT_IO_RESULTS%
move %PROJECT_WORK%\%ERROR_DOUBLE% %TARGET_DIR%
move %PROJECT_WORK%\%JSON_TODRAW% %TARGET_DIR%
goto :eof
)
if not exist "%PROJECT_WORK%\%JSON_POS%" (
@@ -47,9 +52,8 @@ if not exist "%PROJECT_WORK%\%RESULT_TIA%" (
pause
goto :eof
)
mkdir %PROJECT_IO_RESULTS%\%FILENAME%
echo move %PROJECT_WORK%\%FILENAME%-* %PROJECT_IO_RESULTS%\%FILENAME%
move %PROJECT_WORK%\%FILENAME%-* %PROJECT_IO_RESULTS%\%FILENAME%
echo move %PROJECT_WORK%\%FILENAME%-* %TARGET_DIR%
move %PROJECT_WORK%\%FILENAME%-* %TARGET_DIR%
pause
goto :eof
+27
View File
@@ -0,0 +1,27 @@
@echo off
REM Test runner batch script for kabellaengen project
REM Calls run_tests.py to execute all tests
call %~dp0setenv.bat
CALL manage_interpreter.bat activate_interpreter
if %ERRORLEVEL% NEQ 0 (
echo.
echo Failed to activate the Python interpreter!
pause
exit /B 1
)
python %PROJECT_LIB%\run_tests.py %*
if %ERRORLEVEL% NEQ 0 (
echo.
echo Tests failed!
CALL manage_interpreter.bat deactivate_interpreter
exit /B 1
) else (
echo.
echo All tests passed!
CALL manage_interpreter.bat deactivate_interpreter
exit /B 0
)
+17 -1
View File
@@ -27,6 +27,22 @@ DQ
QA
# Muster für die Erkennung von Schaltschränken (z.B. A01+UH00, A02+UC001, A03+UC0001)
# Patterns for the recognition of Control-Cabinets (e.g. A01+UH00, A02+UC001, A03+UC0001)
[Cabinet-Pattern]
A\d\d\+(UH0\d)
A\d\d\+(UC\d\d\d)
\+(UC\d\d\d\d)
\+(UH\d\d)
# Muster für die Erkennung von Tunneln (z.B. Tunnel1, Tunnel_2, Tunnel-3)
# Patterns for the recognition of Tunnels (e.g. Tunnel1, Tunnel_2, Tunnel-3)
[Tunnel-Pattern]
Tunnel\d+
Tunnel_\d+
Tunnel-\d+
TUNNEL\d+
# Zuordnung von Kürzeln zu Kabeltypen in kabel.cfg (ier zugewiesene Kabel-Sektion muss in kabel.cfg vorhanden sein und SIVAS-Nummern enthalten!)
# Mapping of Equipment-Prefixes to Cable Types found in kabel.cfg (Cable-Section must be included in kabel.cfg!!)
@@ -49,4 +65,4 @@ PF = WD_Q
# Adjustment of Cable-Lenght's due to for example existing connection cables on sensor
[Length-Adjustments]
# Format: PREFIX = Length (m) to subtract
BX = 4
BX = 4
+332 -128
View File
@@ -22,6 +22,62 @@ Dieses Programm:
"""
class ErrorCollector:
"""Sammelt alle Fehler und Warnungen während der Verarbeitung."""
def __init__(self):
self.errors = {}
self.warnings = {}
def add_errors(self, error_dict):
"""Fügt Fehler aus einem Dictionary hinzu."""
for key, value in error_dict.items():
if key in self.errors:
if isinstance(self.errors[key], list) and isinstance(value, list):
self.errors[key].extend(value)
else:
self.errors[key] = [self.errors[key], value]
else:
self.errors[key] = value
def add_warnings(self, warning_dict):
"""Fügt Warnungen aus einem Dictionary hinzu."""
for key, value in warning_dict.items():
if key in self.warnings:
if isinstance(self.warnings[key], list) and isinstance(value, list):
self.warnings[key].extend(value)
else:
self.warnings[key] = [self.warnings[key], value]
else:
self.warnings[key] = value
def has_errors_or_warnings(self):
"""Prüft ob Fehler oder Warnungen vorhanden sind."""
return bool(self.errors) or bool(self.warnings)
def has_errors(self):
"""Prüft ob Fehlervorhanden sind."""
return bool(self.errors)
def get_all_issues(self):
"""Gibt alle Fehler und Warnungen als Dictionary zurück."""
result = {}
if self.errors:
result["errors"] = self.errors
if self.warnings:
result["warnings"] = self.warnings
return result
def write_errorfile(self, work_dir: Path, filename: str):
"""Schreibt Fehlerdatei nur wenn Fehler oder Warnungen vorhanden sind."""
if self.has_errors():
print("Fehler gefunden. Schreibe Error-Datei.")
all_issues = self.get_all_issues()
write_results(to_json(all_issues), work_dir, filename)
else:
print("Keine Fehler oder Warnungen gefunden. Keine Error-Datei geschrieben.")
def write_results(jsn_results: str, out_dir: Path, filename: str) -> None:
"""Write results to a JSON file."""
print("writing results to a json file ...")
@@ -48,6 +104,38 @@ def get_type_of_name_cfg(name: str) -> str:
return "unknown"
def matches_cabinet_pattern(name: str) -> [bool, str]:
"""Check if the given name matches any Cabinet-Pattern from BMK.cfg"""
if not config_BMK.has_section("Cabinet-Pattern"):
return (False, "")
patterns = [pattern for pattern, _ in config_BMK.items("Cabinet-Pattern")]
for pattern in patterns:
m = re.search(pattern, name)
if m:
res = m.group(1)
return (True, res)
return (False, "")
def matches_tunnel_pattern(name: str) -> bool:
"""Check if the given name matches any Tunnel-Pattern from BMK.cfg"""
if not config_BMK.has_section("Tunnel-Pattern"):
return False
patterns = [pattern for pattern, _ in config_BMK.items("Tunnel-Pattern")]
for pattern in patterns:
m = re.search(pattern, name)
if m:
return True
return False
def get_attributes_of_insert(d_insert: dict, d_pos: dict) -> tuple[dict, str, str]:
"""
Diese Funktion schaut nach den aktuell definierten Attributen in den Blöcken
@@ -99,7 +187,7 @@ def get_attributes_of_insert(d_insert: dict, d_pos: dict) -> tuple[dict, str, st
else:
ld["pos"] = (pos[0], pos[1])
# die neueren Bläcke heissen nicht IO, sondern haben einen Namen
# die neueren Blöcke heissen nicht IO, sondern haben einen Namen
if "NAME" in d_insert:
typ = get_type_of_name_cfg(d_insert["NAME"])
id_ = d_insert["NAME"]
@@ -193,7 +281,7 @@ class CompareBuffer:
l.append(b)
return l
def extract_input_positions(insert_iterable) -> tuple[dict, dict, dict, dict]:
def extract_input_positions(all_inserts, all_positions, error_collector: ErrorCollector = None) -> tuple[dict, dict]:
"""
Extracts and organizes input positions from an iterable of inserts.
@@ -204,14 +292,14 @@ def extract_input_positions(insert_iterable) -> tuple[dict, dict, dict, dict]:
attributes and duplicate IDs for further error handling.
Args:
insert_iterable: An iterable of insert objects to process.
all_inserts: List of insert objects to process.
all_positions: List of position objects corresponding to inserts.
error_collector: ErrorCollector instance to collect errors and warnings.
Returns:
A tuple containing:
- all_sensors: dict of sensor IDs to sensor attribute dicts
- all_schaltschrank: dict of Schaltschrankelement IDs to their attribute dicts
- double_ids: dict of IDs with multiple associated blocks (potential duplicates)
- missing_attribs: dict of IDs with missing or incomplete attributes
"""
all_sensors = dict()
all_cables = dict()
@@ -219,7 +307,6 @@ def extract_input_positions(insert_iterable) -> tuple[dict, dict, dict, dict]:
all_unknowns = list()
wp = CompareBuffer()
all_inserts, all_positions = attribs_to_dicts(insert_iterable)
for insert, pos in zip(all_inserts, all_positions):
ld, id_, typ = get_attributes_of_insert(insert, pos)
@@ -244,16 +331,16 @@ def extract_input_positions(insert_iterable) -> tuple[dict, dict, dict, dict]:
# spezialbehandlung der Sensoren, da diese in IO und A,B,C Blöcke geteilt sind
# Die Funktion sucht die übereinanderliegenen Elemente und baut ein Dict daraus
allocate_blocks_together(all_sensors, wp)
allocate_blocks_together(all_sensors, wp, error_collector)
set_single_frames_with_unique_sps(all_schaltschrank, wp)
# die noch übrigen Blöcke melden
missing_attribs, double_ids = get_errors_double_and_attributes(wp)
get_errors_double_and_attributes(wp, error_collector)
return all_sensors, all_schaltschrank, double_ids, missing_attribs
return all_sensors, all_schaltschrank
def get_errors_double_and_attributes(wp: CompareBuffer) -> tuple[dict, dict]:
def get_errors_double_and_attributes(wp: CompareBuffer, error_collector: ErrorCollector = None):
"""
Analyze the CompareBuffer for blocks that could not be merged or assigned.
@@ -261,9 +348,9 @@ def get_errors_double_and_attributes(wp: CompareBuffer) -> tuple[dict, dict]:
- IDs with only a single associated block, which likely indicates missing or incomplete attributes.
- IDs with multiple associated blocks, which may indicate duplicate or ambiguous entries.
Returns:
missing_attribs: dict mapping IDs to a message about missing or incomplete attributes.
double_ids: dict mapping IDs to a list of positions for blocks with duplicate IDs.
Args:
wp: CompareBuffer to analyze
error_collector: ErrorCollector instance to collect errors and warnings
"""
missing_attribs = dict()
double_ids = dict()
@@ -280,7 +367,13 @@ def get_errors_double_and_attributes(wp: CompareBuffer) -> tuple[dict, dict]:
if id_ not in double_ids:
double_ids[id_] = []
double_ids[id_].append(block['pos'])
return missing_attribs, double_ids
# Füge Fehler und Warnungen zum ErrorCollector hinzu, falls vorhanden
if error_collector:
if double_ids:
error_collector.add_errors({"double_ids": double_ids})
if missing_attribs:
error_collector.add_warnings({"missing_attributes": missing_attribs})
def set_single_frames_with_unique_sps(all_sensors: dict, wp: CompareBuffer):
all_sensors_ids = wp.get_block_ids()
@@ -296,7 +389,7 @@ def set_single_frames_with_unique_sps(all_sensors: dict, wp: CompareBuffer):
all_sensors[new_id] = block_with_sps
wp.remove_block(id_, block_with_sps)
def allocate_blocks_together(all_sensors: dict, wp: CompareBuffer) -> None:
def allocate_blocks_together(all_sensors: dict, wp: CompareBuffer, error_collector: ErrorCollector = None) -> None:
"""
Merge sensor blocks with the same ID that are split across multiple DXF blocks.
@@ -321,19 +414,21 @@ def allocate_blocks_together(all_sensors: dict, wp: CompareBuffer) -> None:
for block_without_sps in blks_other:
# Vergleiche alle Blöcke mit SPS und denen ohne auf die gleiche Position
if wp.positions_are_close(block_with_sps, block_without_sps, 1000):
new_id = create_new_id(id_, block_with_sps, block_without_sps) # hier das Präfix davor
new_id = create_new_id(id_, block_with_sps, block_without_sps, error_collector) # hier das Präfix davor
all_sensors[new_id] = merge_two_dicts(block_without_sps, block_with_sps) #Kombiniert alle infos aus dxf und "pos"
wp.remove_block(id_, block_with_sps)
wp.remove_block(id_, block_without_sps)
def create_new_id(id_: str, dict1: dict, dict2: dict) -> str:
def create_new_id(id_: str, dict1: dict, dict2: dict, error_collector: ErrorCollector = None) -> str:
sps_praefix = None
if "SPS" in dict1:
sps_praefix = dict1["SPS"]
if "SPS" in dict2:
sps_praefix = dict2["SPS"]
if not sps_praefix:
raise Exception
if error_collector:
error_collector.add_errors({"missing_sps_prefix": {id_: "SPS Präfix fehlt für Block-ID"}})
return f"{id_}@UNKNOWN" # Fallback für fehlenden SPS-Präfix
return f"{id_}@{sps_praefix}"
def attribs_to_dicts(insert_iterable) -> tuple[list, list]:
@@ -366,12 +461,6 @@ def attribs_to_dicts(insert_iterable) -> tuple[list, list]:
all_positions.append(positions)
return all_inserts, all_positions
def get_input_positions(msp) -> tuple[dict, dict, dict, dict]:
return extract_input_positions(msp.query('INSERT'))
def get_input_positions_iter(dxf_path) -> tuple[dict, dict, dict, dict]:
return extract_input_positions(iterdxf.modelspace(dxf_path))
def create_mappings(positions: dict) -> tuple[dict, dict]:
unterverteiler_pfad = ""
dnamen = dict()
@@ -414,96 +503,194 @@ def create_mappings(positions: dict) -> tuple[dict, dict]:
return (uv2sensor, warnings)
def get_subdistributor_positions(msp, dist2sensors: dict) -> dict:
"""Hole alle Positionen der Unterverteiler !!UV-Positionen bereits 'Mitte-Mitte'!!"""
ret = dict()
all_distributors = dist2sensors.keys()
all_layers = config.items('GetPos-Layer_Distributors')
for (layer, v) in all_layers:
for distname in all_distributors:
selectstr = f'MTEXT[layer=="{layer}"]'
for text in msp.query(selectstr):
match = re.search("-" + distname, text.dxf.text)
if match:
ret[distname] = (round(text.dxf.insert[0], 1), round(text.dxf.insert[1], 1))
return ret
def get_subdistributor_position_of_symbol(d_insert: dict, d_pos: dict) -> tuple[dict, str]:
"""
Diese Funktion schaut nach den aktuell definierten Attributen in allen Unterverteiler Blöcken
Sie müssen auch UH heissen
def get_subdistributor_positions_iter(dxf_path, dist2sensors: dict) -> dict:
"""Hole alle Positionen der Unterverteiler aus MTEXT-Objekten mithilfe von iterdxf."""
"""
id_ = ""
ld = d_insert
# die neueren Blöcke haben einen Namen
if "NAME" in d_insert:
id_ = d_insert["NAME"]
pos = d_pos["NAME"]
ld["pos"] = (pos[0], pos[1])
if "REALE_POSITION" in d_insert and d_insert["REALE_POSITION"] == 'x':
pos = d_pos["REALE_POSITION"]
# Hoehe und Breite von "x" addieren, um Mittelpunkt zu finden
breite_marker = config.getfloat("GetPos-Geom-Sensor", "Breite")
hoehe_marker = config.getfloat("GetPos-Geom-Sensor", "Hoehe")
midx = pos[0] + breite_marker * 0.5
midy = pos[1] + hoehe_marker * 0.5
ld["pos"] = (round(midx, 1), round(midy, 1))
return ld, id_
return None, None
def get_tunnel_position_of_symbol(d_insert: dict, d_pos: dict) -> tuple[dict, str]:
"""
Diese Funktion schaut nach den aktuell definierten Attributen in allen Tunnel Blöcken
Tunnel haben einen Namen der den Tunnel-Mustern aus BMK.cfg entspricht
"""
id_ = ""
ld = d_insert
# Tunnel haben einen Namen
if "NAME" in d_insert:
id_ = d_insert["NAME"]
pos = d_pos["NAME"]
ld["pos"] = (pos[0], pos[1])
# Länge des Tunnels aus dem LAENGE Attribut extrahieren
if "LAENGE" in d_insert:
ld["laenge"] = d_insert["LAENGE"]
if "REALE_POSITION" in d_insert and d_insert["REALE_POSITION"] == 'x':
pos = d_pos["REALE_POSITION"]
# Hoehe und Breite von "x" addieren, um Mittelpunkt zu finden
breite_marker = config.getfloat("GetPos-Geom-Sensor", "Breite")
hoehe_marker = config.getfloat("GetPos-Geom-Sensor", "Hoehe")
midx = pos[0] + breite_marker * 0.5
midy = pos[1] + hoehe_marker * 0.5
ld["pos"] = (round(midx, 1), round(midy, 1))
return ld, id_
return None, None
def get_subdistributor_positions_from_symbols(all_inserts:list, all_positions:list, dist2sensors: dict) -> dict:
"""Ermittelt Unterverteiler-Positionen aus allen Symbolen
"""
ret = {}
all_distributors = dist2sensors.keys()
all_layers = config.items('GetPos-Layer_Distributors')
for insert, pos in zip(all_inserts, all_positions):
if "NAME" not in insert: # Unterverteiler haben immer einen eindeutigen Namen
continue
ld, id_ = get_subdistributor_position_of_symbol(insert, pos)
for entity in iterdxf.modelspace(dxf_path):
# Check if id_ matches Cabinet-Pattern from BMK.cfg
(matches, res) = matches_cabinet_pattern(id_)
if not matches:
continue
if res in dist2sensors:
ret[res] = ld["pos"]
return ret
def get_tunnel_positions_from_symbols(all_inserts: list, all_positions: list) -> dict:
"""Ermittelt Tunnel-Positionen aus allen Symbolen
Args:
all_inserts: Liste von Dictionaries mit Attribut-Tags und deren Textwerten
all_positions: Liste von Dictionaries mit Attribut-Tags und deren (x, y, z)-Positionen
Returns:
Dictionary mit Tunnelnamen als Keys und Listen von Positionen als Values
Format: {'Tunnel1': [(x1, y1), (x2, y2)], ..., 'length': {'Tunnel1': 'laenge_wert', ...}}
"""
ret = {}
tunnel_length = {}
default_length = "5" # Default-Länge in Metern
for insert, pos in zip(all_inserts, all_positions):
if "NAME" not in insert: # Tunnel haben immer einen eindeutigen Namen
continue
ld, id_ = get_tunnel_position_of_symbol(insert, pos)
if not ld or not id_:
continue
# Check if id_ matches Tunnel-Pattern from BMK.cfg
if not matches_tunnel_pattern(id_):
continue
# Sammle alle Positionen für den gleichen Tunnelnamen
if id_ not in ret:
ret[id_] = []
ret[id_].append(ld["pos"])
# Sammle Längeninformation falls vorhanden, sonst Default verwenden
if "laenge" in ld and ld["laenge"]:
tunnel_length[id_] = ld["laenge"]
else:
print(f"WARNUNG: Tunnel '{id_}' hat keine LAENGE-Angabe. Verwende Default-Länge: {default_length}m")
tunnel_length[id_] = default_length
# Füge Längeninformation hinzu, falls Tunnel gefunden wurden
if len(tunnel_length) > 0:
ret['length'] = tunnel_length
return ret
def get_subdistributor_positions_from_entities(entities, dist2sensors: dict) -> dict:
"""Ermittelt Unterverteiler-Positionen aus einer beliebigen Entity-Iterable.
Erwartet eine Iterable von DXF-Entities (z. B. aus `msp.query("MTEXT")` oder
`iterdxf.modelspace(dxf_path)`) und filtert nach den in der Config erlaubten
Layern. Es werden beide bisher verwendeten Suchmuster in der MTEXT-Zeile
unterstützt ("-<distname>" und "+<distname>").
"""
ret = {}
all_distributors = dist2sensors.keys()
allowed_layers = {layer for (layer, _) in config.items('GetPos-Layer_Distributors')}
for entity in entities:
if entity.dxftype() != "MTEXT":
continue
entity_text = entity.dxf.text
entity_layer = entity.dxf.layer
layer = entity.dxf.layer
if layer not in allowed_layers:
continue
text = entity.dxf.text
insert_point = entity.dxf.insert
for (layer_name, _) in all_layers:
if entity_layer != layer_name:
continue
for distname in all_distributors:
if f"+{distname}" in entity_text:
ret[distname] = (round(insert_point[0], 1), round(insert_point[1], 1))
for distname in all_distributors:
if f"-{distname}" in text or f"+{distname}" in text:
ret[distname] = (round(insert_point[0], 1), round(insert_point[1], 1))
return ret
def get_tunnel_positions(msp) -> dict:
"""Hole alle Positionen aller Tunnel Ein und Ausgänge."""
def get_tunnel_positions_from_entities(entities) -> dict:
"""Ermittelt Tunnel-Ein/Ausgangs-Positionen aus einer beliebigen Entity-Iterable.
Erwartet eine Iterable von DXF-Entities (z. B. aus `msp.query("MTEXT")` oder
`iterdxf.modelspace(dxf_path)`) und filtert nach den in der Config erlaubten
Layern. Erkennt Tunnel anhand des Musters "TUNNEL<nr>-<laenge>" und sammelt
pro Tunnelname die gefundenen Positionen sowie die Länge.
"""
all_tunnels = dict()
tunnel_length = dict()
all_layers = config.items('GetPos-Layer_Tunnel')
for (layer, v) in all_layers:
selectstr = f'MTEXT[layer=="{layer}"]'
for text in msp.query(selectstr):
txt = text.dxf.text
pattern = r"(TUNNEL\d+)-(\d+)"
match = re.search(pattern, txt)
if match:
pos = (round(text.dxf.insert[0], 1), round(text.dxf.insert[1], 1))
tunnelname = match.group(1)
laenge = match.group(2)
tunnel_length[tunnelname] = laenge
if tunnelname not in all_tunnels:
all_tunnels[tunnelname] = list()
all_tunnels[tunnelname].append(pos)
else:
all_tunnels[tunnelname].append(pos)
if len(all_tunnels.keys()) > 0:
all_tunnels['length'] = tunnel_length
return all_tunnels
allowed_layers = {layer for (layer, _) in config.items('GetPos-Layer_Tunnel')}
def get_tunnel_positions_iter(dxf_path) -> dict:
"""Hole alle Positionen aller Tunnel Ein- und Ausgänge mithilfe von iterdxf."""
all_tunnels = dict()
tunnel_length = dict()
all_layers = config.items('GetPos-Layer_Tunnel')
for entity in iterdxf.modelspace(dxf_path):
for entity in entities:
if entity.dxftype() != "MTEXT":
continue
if entity.dxf.layer not in allowed_layers:
continue
txt = entity.dxf.text
layer = entity.dxf.layer
insert = entity.dxf.insert
for (layer_name, _) in all_layers:
if layer != layer_name:
continue
pattern = r"(TUNNEL\d+)-(\d+)"
match = re.search(pattern, txt)
if not match:
continue
pattern = r"(TUNNEL\d+)-(\d+)"
match = re.search(pattern, txt)
if match:
tunnelname = match.group(1)
laenge = match.group(2)
pos = (round(insert[0], 1), round(insert[1], 1))
tunnelname = match.group(1)
laenge = match.group(2)
pos = (round(insert[0], 1), round(insert[1], 1))
if tunnelname not in all_tunnels:
all_tunnels[tunnelname] = []
all_tunnels[tunnelname].append(pos)
tunnel_length[tunnelname] = laenge
if tunnelname not in all_tunnels:
all_tunnels[tunnelname] = []
all_tunnels[tunnelname].append(pos)
tunnel_length[tunnelname] = laenge
if len(tunnel_length.keys()) > 0:
all_tunnels['length'] = tunnel_length
return all_tunnels
@@ -623,20 +810,24 @@ def check_file_in_work(work_dir: Path, filename: Path) -> tuple[Path, bool]:
def check_existance(res_mappings: dict, res_dist: dict, res_pos: dict, res_tunnel: dict) -> dict:
ret = dict()
ret["missing_distributors"] = list()
ret["missing_sensors"] = list()
ret["missing_tunnel"] = list()
for dname in res_mappings.keys():
if dname not in res_dist:
if "missing_distributors" not in ret:
ret["missing_distributors"] = list()
ret["missing_distributors"].append(dname)
for sname, lofsensors in res_mappings.items():
for s in lofsensors:
if s not in res_pos:
if "missing_sensors" not in ret:
ret["missing_sensors"] = list()
ret['missing_sensors'].append(s)
for tname in res_tunnel.keys():
if tname == "length": # dict enthält auch die Länge aller Tunnels in einem Key
continue
if len(res_tunnel[tname]) < 2 :
if "missing_tunnel" not in ret:
ret["missing_tunnel"] = list()
ret["missing_tunnel"].append(tname)
if len(res_tunnel[tname]) > 2 :
if "overdefined_tunnel" not in ret:
@@ -691,12 +882,6 @@ def check_environment_var(env_str: str) -> Path:
print(f"Umgebungsvariable {env_str} ist nicht gesetzt oder leer.")
exit()
def get_input_positions_combined(source: str, use_iter: bool) -> tuple[dict, dict, dict, dict]:
if use_iter:
return get_input_positions_iter(source)
else:
return get_input_positions(source)
if __name__ == '__main__':
parser = argparse.ArgumentParser(description='fetches the x/y positions from a dxf file', prog='getpositions')
parser.add_argument('-f', '--filename', action='store', required=True, default="ST_6300_Steuerungstestlayout1_neueBloecke.dwg", help='which file should be fetched', metavar='myfile.dxf')
@@ -760,15 +945,17 @@ if __name__ == '__main__':
output_results = dict()
if args.sensors:
# Sensoren auslesen
res_sens, res_schaltschrank_elemente, res_double, missing_attribs = get_input_positions_combined(dxf_path if use_iter else msp, use_iter)
if args.errors and len(res_double) > 0:
print("Duplicate blocks found. Writing errors-file.")
err_ids = list(res_double.keys())
write_results(to_json(list(err_ids)), work_dir, args.errors)
# ErrorCollector für alle Fehler und Warnungen initialisieren
error_collector = ErrorCollector()
if args.sensors:
# Sensoren auslesen aus den Symbolen
if use_iter:
all_inserts, all_positions = attribs_to_dicts(iterdxf.modelspace(dxf_path))
else:
all_inserts, all_positions = attribs_to_dicts(msp)
res_sens, res_schaltschrank_elemente = extract_input_positions(all_inserts, all_positions, error_collector)
output_results['sensors'] = res_sens
output_results['schaltschrank_elemente'] = res_schaltschrank_elemente
@@ -780,28 +967,37 @@ if __name__ == '__main__':
# Mapping zu Sensoren auslesen
(res_mappings, warnings) = create_mappings(res_sens)
output_results['mappings'] = res_mappings
# Mapping-Warnungen zum ErrorCollector hinzufügen
if warnings:
error_collector.add_warnings({"mapping_warnings": warnings})
if args.console:
print(to_json(res_mappings))
# Distributoren auslesen
# Distributoren auslesen (generisch über Entities)
if use_iter:
res_dist = get_subdistributor_positions_iter(dxf_path, res_mappings)
entities = iterdxf.modelspace(dxf_path)
else:
res_dist = get_subdistributor_positions(msp, res_mappings)
entities = msp.query('MTEXT')
# die Infos aus den Texten (alter Stil)
res_dist = get_subdistributor_positions_from_entities(entities, res_mappings)
# die Infos aus den Blöcken
symbol_dists = get_subdistributor_positions_from_symbols(all_inserts, all_positions, res_mappings)
res_dist = merge_two_dicts(res_dist, symbol_dists)
output_results['distributors'] = res_dist
if args.console:
print(to_json(res_dist))
# Tunnel auslesen
# Tunnel auslesen (generisch über Entities)
if use_iter:
res_tunnel = get_tunnel_positions_iter(dxf_path)
t_entities = iterdxf.modelspace(dxf_path)
else:
res_tunnel = get_tunnel_positions(msp)
t_entities = msp.query('MTEXT')
# die Infos aus den Texten (alter Stil)
res_tunnel = get_tunnel_positions_from_entities(t_entities)
# die Infos aus den Blöcken (neuer Stil)
symbol_tunnels = get_tunnel_positions_from_symbols(all_inserts, all_positions)
res_tunnel = merge_two_dicts(res_tunnel, symbol_tunnels)
output_results['tunnels'] = res_tunnel
if args.console:
print(to_json(res_tunnel))
@@ -819,16 +1015,24 @@ if __name__ == '__main__':
if args.write:
basename = os.path.splitext(args.write)[0]
res_not_found = check_existance(res_mappings, res_dist, res_sens, res_tunnel)
if args.errors and "overdefined_tunnel" in res_not_found:
print("unorrect tunnels found. Writing errors-file.")
err_ids = list(res_not_found["overdefined_tunnel"])
write_results(to_json(list(err_ids)), work_dir, args.errors)
added_warnings = merge_two_dicts(warnings, missing_attribs)
res_not_found["missing_attributes"] = added_warnings
output_results["not_found"] = res_not_found
output_results["double_ids"] = res_double
res_not_found = check_existance(res_mappings, res_dist, res_sens, res_tunnel)
# Alle weiteren Fehler zum ErrorCollector hinzufügen
error_collector.add_errors(res_not_found)
# ErrorCollector schreibt Datei nur wenn Fehler/Warnungen vorhanden
if args.errors:
error_collector.write_errorfile(work_dir, args.errors)
# Für Kompatibilität mit Ausgabe-JSON: Fehler und Warnungen aus ErrorCollector holen
all_issues = error_collector.get_all_issues()
if "errors" in all_issues:
output_results["not_found"] = all_issues["errors"].get("not_found", {})
if "double_ids" in all_issues["errors"]:
output_results["double_ids"] = all_issues["errors"]["double_ids"]
if "missing_attributes" in all_issues.get("warnings", {}):
output_results["not_found"]["missing_attributes"] = all_issues["warnings"]["missing_attributes"]
write_results(to_json(output_results), work_dir, f"{basename}.json")
+10 -3
View File
@@ -150,9 +150,16 @@ def prepare_data(rawdata:dict):
dtunlength = rawdata["tunnels"]["length"]
# Fehler, welche im getpositions auftreten weiterführen: im Layout fehlende Dists / Sensoren / fehlende Attribute
errors_dists = rawdata["not_found"]["missing_distributors"]
errors_sensors = rawdata["not_found"]["missing_sensors"]
errors_attributes = rawdata["not_found"]["missing_attributes"]
errors_dists = list()
errors_sensors = list()
errors_attributes = dict()
if "not_found" in rawdata:
if "missing_distributors" in rawdata["not_found"]:
errors_dists = rawdata["not_found"]["missing_distributors"]
if "missing_sensors" in rawdata["not_found"]:
errors_sensors = rawdata["not_found"]["missing_sensors"]
if "missing_attributes" in rawdata["not_found"]:
errors_attributes = rawdata["not_found"]["missing_attributes"]
return (dracks, dsensors, dsubdists, mapping, dtunnels, dtunlength, errors_dists, errors_sensors, errors_attributes)
+389
View File
@@ -0,0 +1,389 @@
#!/usr/bin/env python3
"""
Test runner for kabellaengen project
Executes getexdraw.bat for all DXF files in testdata directory and compares outputs
"""
import os
import sys
import json
import subprocess
import glob
from pathlib import Path
import difflib
import argparse
class TestResult:
def __init__(self, test_name):
self.test_name = test_name
self.passed = False
self.error_msg = ""
self.differences = []
class TestRunner:
def __init__(self, create_references=False, mode='getexdraw', clean=False, target_file=None):
# Use environment variables set by setenv.bat
self.project_root = Path(os.environ['PROJECT'])
self.testdata_dir = Path(os.environ.get('PROJECT_TEST', self.project_root / "testdata"))
self.work_dir = Path(os.environ.get('PROJECT_WORK', self.project_root / "work"))
self.bin_dir = Path(os.environ.get('PROJECT_BIN', self.project_root / "bin"))
self.getexdraw_bat = self.bin_dir / "getexdraw.bat"
self.ioconverter_bat = self.bin_dir / "ioconverter.bat"
self.test_results = []
self.failed_tests = []
self.create_references = create_references
self.mode = mode
self.clean = clean
self.target_file = target_file
def find_test_files(self):
"""Find DXF files in testdata directory - all files or specific file"""
if self.target_file:
# Remove .dxf suffix if present to avoid double extension
clean_target = self.target_file
if clean_target.endswith('.dxf'):
clean_target = clean_target[:-4]
# Check if specific file exists
target_dxf = self.testdata_dir / f"{clean_target}.dxf"
if target_dxf.exists():
return [clean_target]
else:
print(f"Error: Test file {target_dxf} not found")
return []
else:
# Return all DXF files
dxf_files = list(self.testdata_dir.glob("*.dxf"))
return [f.stem for f in dxf_files] # Return filenames without extension
def run_getexdraw(self, test_filename):
"""Execute getexdraw.bat for given test file"""
dxf_file = self.testdata_dir / f"{test_filename}.dxf"
if not dxf_file.exists():
return False, f"Test file {dxf_file} not found"
try:
# Change to bin directory for execution (where batch scripts expect to run from)
os.chdir(self.bin_dir)
# Execute getexdraw.bat with automated input to handle pause
cmd = [str(self.getexdraw_bat), str(dxf_file)]
# Send newline to handle the pause command
result = subprocess.run(cmd, capture_output=True, text=True, shell=True, input="\n")
# Check if the expected output files were created instead of relying on return code
# The batch script always exits with code 1 due to interactive design, but files are created
expected_positions_file = self.work_dir / test_filename / f"{test_filename}_positionsdraw.json"
expected_todraw_file = self.work_dir / test_filename / f"{test_filename}_todraw.json"
expected_errors_file = self.work_dir / test_filename / f"{test_filename}_errors.json"
# Success case: both normal files exist
if expected_positions_file.exists() and expected_todraw_file.exists():
return True, "Success"
# Error case: positions file missing but errors file exists
elif not expected_positions_file.exists() and expected_errors_file.exists():
return True, "Success (with errors)"
else:
missing_files = []
if not expected_positions_file.exists() and not expected_errors_file.exists():
missing_files.append(f"{test_filename}_positionsdraw.json or {test_filename}_errors.json")
if not expected_todraw_file.exists():
missing_files.append(str(expected_todraw_file))
return False, f"getexdraw.bat failed - expected output files not found: {', '.join(missing_files)}\nSTDOUT: {result.stdout}\nSTDERR: {result.stderr}"
except Exception as e:
return False, f"Exception during execution: {str(e)}"
def run_ioconverter(self, test_filename):
"""Execute ioconverter.bat for given test file"""
dxf_file = self.testdata_dir / f"{test_filename}.dxf"
if not dxf_file.exists():
return False, f"Test file {dxf_file} not found"
try:
# Change to bin directory for execution (where batch scripts expect to run from)
os.chdir(self.bin_dir)
# Execute ioconverter.bat with automated input to handle pause
cmd = [str(self.ioconverter_bat), str(dxf_file)]
# Send newline to handle the pause command
result = subprocess.run(cmd, capture_output=True, text=True, shell=True, input="\n")
# Check if the expected output files were created
expected_positions_file = self.work_dir / test_filename / f"{test_filename}_positionsconv.json"
expected_errors_file = self.work_dir / test_filename / f"{test_filename}_errors.json"
# Success case: positions file exists
if expected_positions_file.exists():
return True, "Success"
# Error case: positions file missing but errors file exists
elif expected_errors_file.exists():
return True, "Success (with errors)"
else:
return False, f"ioconverter.bat failed - expected output file not found: {expected_positions_file} or {expected_errors_file}\nSTDOUT: {result.stdout}\nSTDERR: {result.stderr}"
except Exception as e:
return False, f"Exception during execution: {str(e)}"
def cleanup_test_files(self, test_filename):
"""Remove the work folder for the given test"""
if not self.clean:
return
test_work_dir = self.work_dir / test_filename
if test_work_dir.exists():
try:
import shutil
shutil.rmtree(test_work_dir)
print(f" [cleaned up {test_work_dir}]")
except Exception as e:
print(f" [cleanup failed: {e}]")
def compare_json_files(self, test_filename):
"""Compare generated JSON files with reference JSON files"""
all_diffs = []
# Check what files actually exist and determine comparison strategy based on mode
errors_file = self.work_dir / test_filename / f"{test_filename}_errors.json"
if self.mode == 'ioconverter':
# For ioconverter mode: check for _positionsconv.json
positions_file = self.work_dir / test_filename / f"{test_filename}_positionsconv.json"
# Determine which files to compare based on what exists
if positions_file.exists():
# Normal case: compare _positionsconv only
file_suffixes = ['_positionsconv']
elif errors_file.exists():
# Error case: compare _errors only
file_suffixes = ['_errors']
else:
return False, f"No generated files found for {test_filename}", []
else:
# For getexdraw mode: check for _positionsdraw.json and _todraw.json
positions_file = self.work_dir / test_filename / f"{test_filename}_positionsdraw.json"
todraw_file = self.work_dir / test_filename / f"{test_filename}_todraw.json"
# Determine which files to compare based on what exists
if positions_file.exists():
# Normal case: compare _positionsdraw and _todraw
file_suffixes = ['_positionsdraw', '_todraw']
elif errors_file.exists():
# Error case: compare _errors only (no _todraw expected when errors occur)
file_suffixes = ['_errors']
else:
return False, f"No generated files found for {test_filename}", []
for suffix in file_suffixes:
# Generated file should be in work/<testfilename>/<testfilename><suffix>.json
generated_file = self.work_dir / test_filename / f"{test_filename}{suffix}.json"
# Reference file should be in testdata/<testfilename><suffix>.json
reference_file = self.testdata_dir / f"{test_filename}{suffix}.json"
if not generated_file.exists():
return False, f"Generated file {generated_file} not found", []
if not reference_file.exists():
if self.create_references:
# Copy generated file as reference
import shutil
shutil.copy2(generated_file, reference_file)
print(f"\nCreated reference file: {reference_file}")
continue
else:
return False, f"Reference file {reference_file} not found", []
try:
# Load and compare JSON files
with open(generated_file, 'r', encoding='utf-8') as f:
generated_data = json.load(f)
with open(reference_file, 'r', encoding='utf-8') as f:
reference_data = json.load(f)
if generated_data != reference_data:
# Generate diff for debugging
generated_str = json.dumps(generated_data, indent=2, sort_keys=True)
reference_str = json.dumps(reference_data, indent=2, sort_keys=True)
diff = list(difflib.unified_diff(
reference_str.splitlines(keepends=True),
generated_str.splitlines(keepends=True),
fromfile=str(reference_file),
tofile=str(generated_file),
n=3
))
all_diffs.extend([f"\n=== Differences in {suffix}.json ==="])
all_diffs.extend(diff)
except json.JSONDecodeError as e:
return False, f"JSON decode error in {suffix}.json: {str(e)}", []
except Exception as e:
return False, f"Exception during comparison of {suffix}.json: {str(e)}", []
if all_diffs:
return False, "Files differ", all_diffs
else:
return True, "All files match", []
def run_single_test(self, test_filename):
"""Run a single test case"""
print(f"Running test: {test_filename} ... ", end="")
result = TestResult(test_filename)
# Step 1: Run the appropriate batch script based on mode
if self.mode == 'ioconverter':
success, msg = self.run_ioconverter(test_filename)
else:
success, msg = self.run_getexdraw(test_filename)
if not success:
result.error_msg = f"Execution failed: {msg}"
print("FAIL", end="")
self.cleanup_test_files(test_filename)
if not self.clean:
print()
return result
# Step 2: Compare JSON files
success, msg, diff = self.compare_json_files(test_filename)
if not success:
result.error_msg = f"Comparison failed: {msg}"
result.differences = diff
print("FAIL", end="")
self.cleanup_test_files(test_filename)
if not self.clean:
print()
return result
result.passed = True
print("OK", end="")
# Step 3: Cleanup if requested
self.cleanup_test_files(test_filename)
if not self.clean:
print() # Add newline if no cleanup message was printed
return result
def run_all_tests(self):
"""Run all tests and collect results"""
test_files = self.find_test_files()
if not test_files:
if self.target_file:
print(f"Test file {self.target_file}.dxf not found in testdata directory")
else:
print("No test files found in testdata directory")
return False
if self.target_file:
print(f"Running test for file: {self.target_file}")
else:
print(f"Found {len(test_files)} test files")
print("=" * 70)
for test_file in test_files:
result = self.run_single_test(test_file)
self.test_results.append(result)
if not result.passed:
self.failed_tests.append(test_file)
print("=" * 70)
return self.print_summary()
def print_summary(self):
"""Print test summary similar to unittest"""
total_tests = len(self.test_results)
passed_tests = sum(1 for r in self.test_results if r.passed)
failed_tests = total_tests - passed_tests
print(f"\nRan {total_tests} tests in {self.testdata_dir}")
print()
if failed_tests > 0:
print("FAILURES:")
print("=" * 70)
for result in self.test_results:
if not result.passed:
print(f"FAIL: {result.test_name}")
print("-" * 70)
print(result.error_msg)
if result.differences:
print("\nDifferences:")
for line in result.differences[:50]: # Limit diff output
print(line.rstrip())
if len(result.differences) > 50:
print(f"... ({len(result.differences) - 50} more lines)")
print()
print("=" * 70)
print(f"FAILED (failures={failed_tests})")
print(f"\nFailed test files: {', '.join(self.failed_tests)}")
else:
print("OK")
return failed_tests == 0
def main():
"""Main entry point"""
parser = argparse.ArgumentParser(
description="Runs batch scripts for all DXF files in testdata and compares results"
)
parser.add_argument(
'--create-references',
action='store_true',
help='Create reference JSON files from current outputs'
)
parser.add_argument(
'--clean',
action='store_true',
help='Remove work/filename folders after each test run'
)
parser.add_argument(
'--file',
type=str,
help='Run test for specific filename (without .dxf extension)'
)
# Mode selection (mutually exclusive)
mode_group = parser.add_mutually_exclusive_group()
mode_group.add_argument(
'--getexdraw',
action='store_true',
help='Run getexdraw.bat tests (default)'
)
mode_group.add_argument(
'--ioconverter',
action='store_true',
help='Run ioconverter.bat tests'
)
args = parser.parse_args()
# Determine mode - default to getexdraw if neither is specified
if args.ioconverter:
mode = 'ioconverter'
else:
mode = 'getexdraw'
runner = TestRunner(create_references=args.create_references, mode=mode, clean=args.clean, target_file=args.file)
success = runner.run_all_tests()
return 0 if success else 1
if __name__ == "__main__":
sys.exit(main())
+75
View File
@@ -0,0 +1,75 @@
{
"sensors": {
"POT-RA-3036": {
"REALE_POSITION": "x",
"NAME": "POT-RA-3036",
"KENNZEICHNUNG": "AH01+UC0101-x",
"pos": [
22624.4,
13807.7
]
},
"POT-RA-3122": {
"REALE_POSITION": "x",
"NAME": "POT-RA-3122",
"KENNZEICHNUNG": "AH01-UC0102-x",
"pos": [
19150.5,
14361.8
]
}
},
"schaltschrank_elemente": {},
"mappings": {
"UC0101": [
"POT-RA-3036"
],
"UC0102": [
"POT-RA-3122"
]
},
"distributors": {
"UC0101": [
20963.1,
8705.7
],
"UC0102": [
19581.2,
5559.7
]
},
"tunnels": {},
"racks": {
"Rack_1": [
[
18561.2,
14141.3,
0
],
[
23052.9,
14141.3,
0
]
],
"Rack_2": [
[
20282.5,
15960.6,
0
],
[
20282.5,
4064.6,
0
]
]
},
"not_found": {
"missing_distributors": [],
"missing_sensors": [],
"missing_tunnel": [],
"missing_attributes": {}
},
"double_ids": {}
}
+75
View File
@@ -0,0 +1,75 @@
{
"sensors": {
"POT-RA-3036": {
"REALE_POSITION": "x",
"NAME": "POT-RA-3036",
"KENNZEICHNUNG": "AH01+UC0101-x",
"pos": [
22624.4,
13807.7
]
},
"POT-RA-3122": {
"REALE_POSITION": "x",
"NAME": "POT-RA-3122",
"KENNZEICHNUNG": "AH01-UC0102-x",
"pos": [
19150.5,
14361.8
]
}
},
"schaltschrank_elemente": {},
"mappings": {
"UC0101": [
"POT-RA-3036"
],
"UC0102": [
"POT-RA-3122"
]
},
"distributors": {
"UC0101": [
20963.1,
8705.7
],
"UC0102": [
19581.2,
5559.7
]
},
"tunnels": {},
"racks": {
"Rack_1": [
[
18561.2,
14141.3,
0
],
[
23052.9,
14141.3,
0
]
],
"Rack_2": [
[
20282.5,
15960.6,
0
],
[
20282.5,
4064.6,
0
]
]
},
"not_found": {
"missing_distributors": [],
"missing_sensors": [],
"missing_tunnel": [],
"missing_attributes": {}
},
"double_ids": {}
}
+193
View File
@@ -0,0 +1,193 @@
{
"kabel": [
{
"id": "UC0101-POT-RA-3036",
"s_artinr": "",
"coords": [
{
"x": 20963.1,
"y": 8705.7
},
{
"x": 20282.5,
"y": 8705.7
},
{
"x": 20282.5,
"y": 14141.3
},
{
"x": 22624.4,
"y": 14141.3
},
{
"x": 22624.4,
"y": 13807.7
}
],
"length": 8791.7,
"tunnel_indices": []
},
{
"id": "UC0102-POT-RA-3122",
"s_artinr": "",
"coords": [
{
"x": 19581.2,
"y": 5559.7
},
{
"x": 20282.5,
"y": 5559.7
},
{
"x": 20282.5,
"y": 8705.7
},
{
"x": 20282.5,
"y": 14141.3
},
{
"x": 19150.5,
"y": 14141.3
},
{
"x": 19150.5,
"y": 14361.8
}
],
"length": 10635.4,
"tunnel_indices": []
}
],
"rack_geometry": {
"Rack_1": {
"length": 4.4,
"coordinates": [
{
"x": 18561.2,
"y": 14141.3,
"z": 0.0
},
{
"x": 19150.5,
"y": 14141.3,
"z": 0.0
},
{
"x": 20282.5,
"y": 14141.3,
"z": 0.0
},
{
"x": 22624.4,
"y": 14141.3,
"z": 0.0
},
{
"x": 23052.9,
"y": 14141.3,
"z": 0.0
}
]
},
"Rack_2": {
"length": 11.8,
"coordinates": [
{
"x": 20282.5,
"y": 4064.6,
"z": 0.0
},
{
"x": 20282.5,
"y": 5559.7,
"z": 0.0
},
{
"x": 20282.5,
"y": 8705.7,
"z": 0.0
},
{
"x": 20282.5,
"y": 14141.3,
"z": 0.0
},
{
"x": 20282.5,
"y": 15960.6,
"z": 0.0
}
]
},
"v-POT-RA-3036-Rack_1": {
"length": 0.3,
"coordinates": [
{
"x": 22624.4,
"y": 13807.7,
"z": 0.0
},
{
"x": 22624.4,
"y": 14141.3,
"z": 0.0
}
]
},
"v-POT-RA-3122-Rack_1": {
"length": 0.2,
"coordinates": [
{
"x": 19150.5,
"y": 14141.3,
"z": 0.0
},
{
"x": 19150.5,
"y": 14361.8,
"z": 0.0
}
]
},
"v-UC0101-Rack_2": {
"length": 0.7,
"coordinates": [
{
"x": 20282.5,
"y": 8705.7,
"z": 0.0
},
{
"x": 20963.1,
"y": 8705.7,
"z": 0.0
}
]
},
"v-UC0102-Rack_2": {
"length": 0.7,
"coordinates": [
{
"x": 20282.5,
"y": 5559.7,
"z": 0.0
},
{
"x": 19581.2,
"y": 5559.7,
"z": 0.0
}
]
}
},
"errors_routing": [],
"errors_sensors": [],
"errors_dists": [],
"errors_tunnels": [],
"errors_dists_not_in_layout": [],
"errors_sensors_not_in_layout": [],
"errors_missing_attributes": {}
}
+340
View File
@@ -0,0 +1,340 @@
{
"sensors": {
"BG3241@1": {
"A": "0",
"B": "BG3241",
"C": "20073710081010151939",
"ARTINR": "200000248",
"BESCHR": "STAUABFRAGE[LT] KPL.",
"MENGE": "1",
"POSITION": "0",
"GRUPPE": "9",
"ETIKETTE": "0",
"AUFLOESE": "N",
"pos": [
38.8,
1280.2
],
"IO": "BG3241",
"ID": "",
"VERW": "Jam detector",
"BEZEICHNUNG": "Stausensor 1 (ILS-CV M0108)",
"KENNZEICHNUNG": "=A01+UC0101-KF1DI1",
"TEXT-E": "",
"TEXT-ES": "",
"TEXT-F": "",
"SPS": "1",
"REALE_POSITION": "x"
},
"MA0062@1": {
"A": "0",
"B": "MA0062",
"C": "20073710081010151939",
"ARTINR": "790902001",
"BESCHR": "E-Teile für SEW Motor ASE1/HAN10ES - BG",
"MENGE": "1",
"POSITION": "0",
"GRUPPE": "9",
"ETIKETTE": "0",
"AUFLOESE": "N",
"pos": [
4967.0,
8072.5
],
"IO": "MA0062",
"ID": "",
"VERW": "CV-M0062_0,75",
"BEZEICHNUNG": "Motor MA0062",
"KENNZEICHNUNG": "=A01+UH01-KF1DQ04",
"TEXT-E": "Motor MA0062",
"TEXT-ES": "",
"TEXT-F": "",
"SPS": "1",
"REALE_POSITION": "x"
},
"BG3240@1": {
"A": "0",
"B": "BG3240",
"C": "20073710081010151939",
"ARTINR": "200000248",
"BESCHR": "STAUABFRAGE[LT] KPL.",
"MENGE": "1",
"POSITION": "0",
"GRUPPE": "9",
"ETIKETTE": "0",
"AUFLOESE": "N",
"pos": [
4961.9,
5609.0
],
"IO": "BG3240",
"ID": "",
"VERW": "Jam detector",
"BEZEICHNUNG": "Stausensor 1 (ILS-CV M0108)",
"KENNZEICHNUNG": "=A01+UC0101-KF1DI1",
"TEXT-E": "conveyor full",
"TEXT-ES": "",
"TEXT-F": "",
"SPS": "1",
"REALE_POSITION": "x"
},
"BG3270@1": {
"A": "0",
"B": "BG3270",
"C": "20073710081010151939",
"ARTINR": "200000248",
"BESCHR": "STAUABFRAGE[LT] KPL.",
"MENGE": "1",
"POSITION": "0",
"GRUPPE": "9",
"ETIKETTE": "0",
"AUFLOESE": "N",
"pos": [
5893.0,
12968.1
],
"IO": "BG3270",
"ID": "",
"VERW": "Jam detector",
"BEZEICHNUNG": "Stausensor 1 (ILS-CV M0108)",
"KENNZEICHNUNG": "=A01+UC0101-KF1DI1",
"TEXT-E": "conveyor full",
"TEXT-ES": "",
"TEXT-F": "",
"SPS": "1",
"REALE_POSITION": ""
},
"BG3260@1": {
"A": "0",
"B": "BG3260",
"C": "20073710081010151939",
"ARTINR": "200000248",
"BESCHR": "STAUABFRAGE[LT] KPL.",
"MENGE": "1",
"POSITION": "0",
"GRUPPE": "9",
"ETIKETTE": "0",
"AUFLOESE": "N",
"pos": [
22355.3,
13524.1
],
"IO": "BG3260",
"ID": "",
"VERW": "Jam detector",
"BEZEICHNUNG": "Stausensor 1 (ILS-CV M0108)",
"KENNZEICHNUNG": "=A01+UC0101-KF1DI1",
"TEXT-E": "conveyor full",
"TEXT-ES": "",
"TEXT-F": "",
"SPS": "1",
"REALE_POSITION": "x"
}
},
"schaltschrank_elemente": {
"FC0062": {
"A": "0",
"B": "FC0062",
"C": "20073710081010151939",
"ARTINR": "703001017",
"BESCHR": "Hilfschalter für 3RV2011 ",
"MENGE": "1",
"POSITION": "0",
"GRUPPE": "9",
"ETIKETTE": "0",
"AUFLOESE": "N",
"pos": [
5272.5,
8378.8
]
},
"FC0062@1": {
"IO": "FC0062",
"ID": "",
"VERW": "MS FC0062",
"BEZEICHNUNG": "Meldekontakt Motorschutzschalter FC0062",
"KENNZEICHNUNG": "=A01+UH01-KF1DI2",
"TEXT-E": "Motor protection switch signaling contact FC0062",
"TEXT-ES": "",
"TEXT-F": "",
"SPS": "1",
"REALE_POSITION": "x",
"pos": [
4973.9,
8072.5
]
}
},
"mappings": {
"UC0101": [
"BG3241@1",
"BG3240@1",
"BG3270@1",
"BG3260@1"
],
"UH01": [
"MA0062@1"
]
},
"distributors": {
"UC0101": [
0.0,
4162.8
],
"UH01": [
7000.0,
16300.0
]
},
"tunnels": {
"TUNNEL1": [
[
9800.0,
9000.0
],
[
21282.5,
9295.2
]
],
"length": {
"TUNNEL1": "3500"
}
},
"racks": {
"Rack_1": [
[
5000.0,
10000.0,
0
],
[
5000.0,
3500.0,
0
]
],
"Rack_2": [
[
0.0,
0.0,
0
],
[
0.0,
3500.0,
0
],
[
15000.0,
3500.0,
0
]
],
"Rack_3": [
[
1000.0,
15000.0,
0
],
[
12000.0,
15000.0,
0
]
],
"Rack_4": [
[
18561.2,
14141.3,
0
],
[
23052.9,
14141.3,
0
]
],
"Rack_5": [
[
2800.0,
10000.0,
0
],
[
2800.0,
3500.0,
0
]
],
"Rack_6": [
[
9000.0,
10000.0,
0
],
[
9000.0,
3500.0,
0
]
],
"Rack_7": [
[
20282.5,
15960.6,
0
],
[
20282.5,
4064.6,
0
]
],
"Rack_8": [
[
2800.0,
10000.0,
0.0
],
[
2800.0,
15000.0,
0.0
]
],
"Rack_9": [
[
5000.0,
10000.0,
0.0
],
[
5000.0,
15000.0,
0.0
]
],
"Rack_10": [
[
9000.0,
10000.0,
0.0
],
[
9000.0,
15000.0,
0.0
]
]
},
"not_found": {
"missing_distributors": [],
"missing_sensors": [],
"missing_tunnel": [],
"missing_attributes": {
"BX0101": "Nur ein Block und/oder fehlende Attribute: dict_keys(['A', 'B', 'C', 'ARTINR', 'BESCHR', 'MENGE', 'POSITION', 'GRUPPE', 'ETIKETTE', 'AUFLOESE', 'pos'])"
}
},
"double_ids": {}
}
+103882
View File
File diff suppressed because it is too large Load Diff
+15
View File
@@ -0,0 +1,15 @@
{
"errors": {
"missing_distributors": [],
"missing_sensors": [],
"missing_tunnel": [],
"overdefined_tunnel": [
"TUNNEL2"
]
},
"warnings": {
"missing_attributes": {
"BX0101": "Nur ein Block und/oder fehlende Attribute: dict_keys(['A', 'B', 'C', 'ARTINR', 'BESCHR', 'MENGE', 'POSITION', 'GRUPPE', 'ETIKETTE', 'AUFLOESE', 'pos'])"
}
}
}
+292
View File
@@ -0,0 +1,292 @@
{
"sensors": {
"MA0062@1": {
"IO": "MA0062",
"B": "MA0062",
"VERW": "CV-M0062_0,75",
"BEZEICHNUNG": "Meldekontakt Motorschutzschalter FC0062",
"KENNZEICHNUNG": "=A01+UH01-KF1DQ04",
"TEXT-E": "Motor MA0062",
"TEXT-ES": "",
"TEXT-F": "",
"SPS": "1",
"TEXT-D": "",
"REALE_POSITION": "x",
"BESCHR": "E-Teile für SEW Motor ASE1/HAN10ES - BG",
"ARTINR": "790902001",
"pos": [
5274.5,
7605.7
]
},
"BG3240@1": {
"IO": "BG3240",
"B": "BG3240",
"VERW": "Jam detector",
"BEZEICHNUNG": "Stausensor 1 (ILS-CV M0108)",
"KENNZEICHNUNG": "=A01+UC0101-KF1DI1",
"TEXT-E": "conveyor full",
"TEXT-ES": "",
"TEXT-F": "",
"SPS": "1",
"TEXT-D": "",
"REALE_POSITION": "x",
"BESCHR": "STAUABFRAGE[LT] KPL.",
"ARTINR": "200000248",
"pos": [
5274.5,
5889.0
]
},
"BG3241@1": {
"IO": "BG3241",
"B": "BG3241",
"VERW": "Jam detector",
"BEZEICHNUNG": "Stausensor 1 (ILS-CV M0108)",
"KENNZEICHNUNG": "=A01+UC0101-KF1DI1",
"TEXT-E": "",
"TEXT-ES": "",
"TEXT-F": "",
"SPS": "1",
"TEXT-D": "",
"REALE_POSITION": "x",
"BESCHR": "STAUABFRAGE[LT] KPL.",
"ARTINR": "200000248",
"pos": [
461.6,
1904.3
]
},
"BG3260@1": {
"IO": "BG3260",
"B": "BG3260",
"VERW": "Jam detector",
"BEZEICHNUNG": "Stausensor 1 (ILS-CV M0108)",
"KENNZEICHNUNG": "=A01+UC0101-KF1DI1",
"TEXT-E": "conveyor full",
"TEXT-ES": "",
"TEXT-F": "",
"SPS": "1",
"TEXT-D": "",
"REALE_POSITION": "x",
"BESCHR": "STAUABFRAGE[LT] KPL.",
"ARTINR": "200000248",
"pos": [
22751.5,
13404.9
]
},
"BG3270@1": {
"IO": "BG3270",
"B": "BG3270",
"VERW": "Jam detector",
"BEZEICHNUNG": "Stausensor 1 (ILS-CV M0108)",
"KENNZEICHNUNG": "=A01+UC0101-KF1DI1",
"TEXT-E": "conveyor full",
"TEXT-ES": "",
"TEXT-F": "",
"SPS": "1",
"TEXT-D": "",
"REALE_POSITION": "x",
"BESCHR": "STAUABFRAGE[LT] KPL.",
"ARTINR": "200000248",
"pos": [
5891.5,
13244.9
]
}
},
"schaltschrank_elemente": {
"FC0062@1": {
"IO": "FC0062",
"B": "FC0062",
"VERW": "MS FC0062",
"BEZEICHNUNG": "Meldekontakt Motorschutzschalter FC0062",
"KENNZEICHNUNG": "=A01+UH01-KF1DI2",
"TEXT-E": "Motor protection switch signaling contact FC0062",
"TEXT-ES": "",
"TEXT-F": "",
"SPS": "1",
"TEXT-D": "",
"REALE_POSITION": "x",
"BESCHR": "Hilfschalter für 3RV2011 ",
"ARTINR": "703001017",
"pos": [
5274.5,
8545.2
]
}
},
"mappings": {
"UH01": [
"MA0062@1"
],
"UC0101": [
"BG3240@1",
"BG3241@1",
"BG3260@1",
"BG3270@1"
]
},
"distributors": {
"UC0101": [
0.0,
4162.8
],
"UH01": [
7000.0,
16300.0
]
},
"tunnels": {
"TUNNEL1": [
[
9800.0,
9000.0
],
[
21282.5,
9295.2
]
],
"length": {
"TUNNEL1": "3500"
}
},
"racks": {
"Rack_1": [
[
5000.0,
10000.0,
0
],
[
5000.0,
3500.0,
0
]
],
"Rack_2": [
[
0.0,
0.0,
0
],
[
0.0,
3500.0,
0
],
[
15000.0,
3500.0,
0
]
],
"Rack_3": [
[
1000.0,
15000.0,
1000.0
],
[
12000.0,
15000.0,
1000.0
]
],
"Rack_4": [
[
18561.2,
14141.3,
0
],
[
23052.9,
14141.3,
0
]
],
"Rack_5": [
[
2800.0,
10000.0,
0
],
[
2800.0,
3500.0,
0
]
],
"Rack_6": [
[
9000.0,
10000.0,
0
],
[
9000.0,
3500.0,
0
]
],
"Rack_7": [
[
20282.5,
15960.6,
0
],
[
20282.5,
4064.6,
0
]
],
"Rack_8": [
[
2800.0,
10000.0,
0.0
],
[
2800.0,
15000.0,
1000.0
]
],
"Rack_9": [
[
5000.0,
10000.0,
0.0
],
[
5000.0,
15000.0,
1000.0
]
],
"Rack_10": [
[
9000.0,
10000.0,
0.0
],
[
9000.0,
15000.0,
1000.0
]
]
},
"not_found": {
"missing_distributors": [],
"missing_sensors": [],
"missing_tunnel": [],
"missing_attributes": {
"BX0101": "Nur ein Block und/oder fehlende Attribute: dict_keys(['A', 'B', 'C', 'ARTINR', 'BESCHR', 'MENGE', 'POSITION', 'GRUPPE', 'ETIKETTE', 'AUFLOESE', 'pos'])"
}
},
"double_ids": {}
}
+292
View File
@@ -0,0 +1,292 @@
{
"sensors": {
"MA0062@1": {
"IO": "MA0062",
"B": "MA0062",
"VERW": "CV-M0062_0,75",
"BEZEICHNUNG": "Meldekontakt Motorschutzschalter FC0062",
"KENNZEICHNUNG": "=A01+UH01-KF1DQ04",
"TEXT-E": "Motor MA0062",
"TEXT-ES": "",
"TEXT-F": "",
"SPS": "1",
"TEXT-D": "",
"REALE_POSITION": "x",
"BESCHR": "E-Teile für SEW Motor ASE1/HAN10ES - BG",
"ARTINR": "790902001",
"pos": [
5274.5,
7605.7
]
},
"BG3240@1": {
"IO": "BG3240",
"B": "BG3240",
"VERW": "Jam detector",
"BEZEICHNUNG": "Stausensor 1 (ILS-CV M0108)",
"KENNZEICHNUNG": "=A01+UC0101-KF1DI1",
"TEXT-E": "conveyor full",
"TEXT-ES": "",
"TEXT-F": "",
"SPS": "1",
"TEXT-D": "",
"REALE_POSITION": "x",
"BESCHR": "STAUABFRAGE[LT] KPL.",
"ARTINR": "200000248",
"pos": [
5274.5,
5889.0
]
},
"BG3241@1": {
"IO": "BG3241",
"B": "BG3241",
"VERW": "Jam detector",
"BEZEICHNUNG": "Stausensor 1 (ILS-CV M0108)",
"KENNZEICHNUNG": "=A01+UC0101-KF1DI1",
"TEXT-E": "",
"TEXT-ES": "",
"TEXT-F": "",
"SPS": "1",
"TEXT-D": "",
"REALE_POSITION": "x",
"BESCHR": "STAUABFRAGE[LT] KPL.",
"ARTINR": "200000248",
"pos": [
461.6,
1904.3
]
},
"BG3260@1": {
"IO": "BG3260",
"B": "BG3260",
"VERW": "Jam detector",
"BEZEICHNUNG": "Stausensor 1 (ILS-CV M0108)",
"KENNZEICHNUNG": "=A01+UC0101-KF1DI1",
"TEXT-E": "conveyor full",
"TEXT-ES": "",
"TEXT-F": "",
"SPS": "1",
"TEXT-D": "",
"REALE_POSITION": "x",
"BESCHR": "STAUABFRAGE[LT] KPL.",
"ARTINR": "200000248",
"pos": [
22751.5,
13404.9
]
},
"BG3270@1": {
"IO": "BG3270",
"B": "BG3270",
"VERW": "Jam detector",
"BEZEICHNUNG": "Stausensor 1 (ILS-CV M0108)",
"KENNZEICHNUNG": "=A01+UC0101-KF1DI1",
"TEXT-E": "conveyor full",
"TEXT-ES": "",
"TEXT-F": "",
"SPS": "1",
"TEXT-D": "",
"REALE_POSITION": "x",
"BESCHR": "STAUABFRAGE[LT] KPL.",
"ARTINR": "200000248",
"pos": [
5891.5,
13244.9
]
}
},
"schaltschrank_elemente": {
"FC0062@1": {
"IO": "FC0062",
"B": "FC0062",
"VERW": "MS FC0062",
"BEZEICHNUNG": "Meldekontakt Motorschutzschalter FC0062",
"KENNZEICHNUNG": "=A01+UH01-KF1DI2",
"TEXT-E": "Motor protection switch signaling contact FC0062",
"TEXT-ES": "",
"TEXT-F": "",
"SPS": "1",
"TEXT-D": "",
"REALE_POSITION": "x",
"BESCHR": "Hilfschalter für 3RV2011 ",
"ARTINR": "703001017",
"pos": [
5274.5,
8545.2
]
}
},
"mappings": {
"UH01": [
"MA0062@1"
],
"UC0101": [
"BG3240@1",
"BG3241@1",
"BG3260@1",
"BG3270@1"
]
},
"distributors": {
"UC0101": [
0.0,
4162.8
],
"UH01": [
7000.0,
16300.0
]
},
"tunnels": {
"TUNNEL1": [
[
9800.0,
9000.0
],
[
21282.5,
9295.2
]
],
"length": {
"TUNNEL1": "3500"
}
},
"racks": {
"Rack_1": [
[
5000.0,
10000.0,
0
],
[
5000.0,
3500.0,
0
]
],
"Rack_2": [
[
0.0,
0.0,
0
],
[
0.0,
3500.0,
0
],
[
15000.0,
3500.0,
0
]
],
"Rack_3": [
[
1000.0,
15000.0,
1000.0
],
[
12000.0,
15000.0,
1000.0
]
],
"Rack_4": [
[
18561.2,
14141.3,
0
],
[
23052.9,
14141.3,
0
]
],
"Rack_5": [
[
2800.0,
10000.0,
0
],
[
2800.0,
3500.0,
0
]
],
"Rack_6": [
[
9000.0,
10000.0,
0
],
[
9000.0,
3500.0,
0
]
],
"Rack_7": [
[
20282.5,
15960.6,
0
],
[
20282.5,
4064.6,
0
]
],
"Rack_8": [
[
2800.0,
10000.0,
0.0
],
[
2800.0,
15000.0,
1000.0
]
],
"Rack_9": [
[
5000.0,
10000.0,
0.0
],
[
5000.0,
15000.0,
1000.0
]
],
"Rack_10": [
[
9000.0,
10000.0,
0.0
],
[
9000.0,
15000.0,
1000.0
]
]
},
"not_found": {
"missing_distributors": [],
"missing_sensors": [],
"missing_tunnel": [],
"missing_attributes": {
"BX0101": "Nur ein Block und/oder fehlende Attribute: dict_keys(['A', 'B', 'C', 'ARTINR', 'BESCHR', 'MENGE', 'POSITION', 'GRUPPE', 'ETIKETTE', 'AUFLOESE', 'pos'])"
}
},
"double_ids": {}
}
+605
View File
@@ -0,0 +1,605 @@
{
"kabel": [
{
"id": "UH01-MA0062@1",
"s_artinr": "790902001",
"coords": [
{
"x": 7000.0,
"y": 16300.0
},
{
"x": 7000.0,
"y": 15000.0
},
{
"x": 5000.0,
"y": 15000.0
},
{
"x": 5000.0,
"y": 13244.9
},
{
"x": 5000.0,
"y": 10000.0
},
{
"x": 5000.0,
"y": 7605.7
},
{
"x": 5274.5,
"y": 7605.7
}
],
"length": 11067.8,
"tunnel_indices": []
},
{
"id": "UC0101-BG3240@1",
"s_artinr": "200000248",
"coords": [
{
"x": 0.0,
"y": 4162.8
},
{
"x": 0.0,
"y": 3500.0
},
{
"x": 2800.0,
"y": 3500.0
},
{
"x": 5000.0,
"y": 3500.0
},
{
"x": 5000.0,
"y": 5889.0
},
{
"x": 5274.5,
"y": 5889.0
}
],
"length": 8326.3,
"tunnel_indices": []
},
{
"id": "UC0101-BG3241@1",
"s_artinr": "200000248",
"coords": [
{
"x": 0.0,
"y": 4162.8
},
{
"x": 0.0,
"y": 3500.0
},
{
"x": 0.0,
"y": 1904.3
},
{
"x": 461.6,
"y": 1904.3
}
],
"length": 2720.1,
"tunnel_indices": []
},
{
"id": "UC0101-BG3260@1",
"s_artinr": "200000248",
"coords": [
{
"x": 0.0,
"y": 4162.8
},
{
"x": 0.0,
"y": 3500.0
},
{
"x": 2800.0,
"y": 3500.0
},
{
"x": 5000.0,
"y": 3500.0
},
{
"x": 9000.0,
"y": 3500.0
},
{
"x": 9000.0,
"y": 9000.0
},
{
"x": 9800.0,
"y": 9000.0
},
{
"x": 21282.5,
"y": 9295.2
},
{
"x": 20282.5,
"y": 9295.2
},
{
"x": 20282.5,
"y": 14141.3
},
{
"x": 22751.5,
"y": 14141.3
},
{
"x": 22751.5,
"y": 13404.9
}
],
"length": 28514.3,
"tunnel_indices": [
6,
7
]
},
{
"id": "UC0101-BG3270@1",
"s_artinr": "200000248",
"coords": [
{
"x": 0.0,
"y": 4162.8
},
{
"x": 0.0,
"y": 3500.0
},
{
"x": 2800.0,
"y": 3500.0
},
{
"x": 5000.0,
"y": 3500.0
},
{
"x": 5000.0,
"y": 5889.0
},
{
"x": 5000.0,
"y": 7605.7
},
{
"x": 5000.0,
"y": 10000.0
},
{
"x": 5000.0,
"y": 13244.9
},
{
"x": 5891.5,
"y": 13244.9
}
],
"length": 16363.5,
"tunnel_indices": []
}
],
"rack_geometry": {
"Rack_1": {
"length": 6.5,
"coordinates": [
{
"x": 5000.0,
"y": 3500.0,
"z": 0.0
},
{
"x": 5000.0,
"y": 5889.0,
"z": 0.0
},
{
"x": 5000.0,
"y": 7605.7,
"z": 0.0
},
{
"x": 5000.0,
"y": 10000.0,
"z": 0.0
}
]
},
"Rack_2-1": {
"length": 3.5,
"coordinates": [
{
"x": 0.0,
"y": 0.0,
"z": 0.0
},
{
"x": 0.0,
"y": 1904.3,
"z": 0.0
},
{
"x": 0.0,
"y": 3500.0,
"z": 0.0
}
]
},
"Rack_2-2": {
"length": 15.0,
"coordinates": [
{
"x": 0.0,
"y": 3500.0,
"z": 0.0
},
{
"x": 2800.0,
"y": 3500.0,
"z": 0.0
},
{
"x": 5000.0,
"y": 3500.0,
"z": 0.0
},
{
"x": 9000.0,
"y": 3500.0,
"z": 0.0
},
{
"x": 15000.0,
"y": 3500.0,
"z": 0.0
}
]
},
"Rack_3": {
"length": 11.0,
"coordinates": [
{
"x": 1000.0,
"y": 15000.0,
"z": 1000.0
},
{
"x": 2800.0,
"y": 15000.0,
"z": 1000.0
},
{
"x": 5000.0,
"y": 15000.0,
"z": 1000.0
},
{
"x": 7000.0,
"y": 15000.0,
"z": 1000.0
},
{
"x": 9000.0,
"y": 15000.0,
"z": 1000.0
},
{
"x": 12000.0,
"y": 15000.0,
"z": 1000.0
}
]
},
"Rack_4": {
"length": 4.5,
"coordinates": [
{
"x": 18561.2,
"y": 14141.3,
"z": 0.0
},
{
"x": 20282.5,
"y": 14141.3,
"z": 0.0
},
{
"x": 22751.5,
"y": 14141.3,
"z": 0.0
},
{
"x": 23052.9,
"y": 14141.3,
"z": 0.0
}
]
},
"Rack_5": {
"length": 6.5,
"coordinates": [
{
"x": 2800.0,
"y": 3500.0,
"z": 0.0
},
{
"x": 2800.0,
"y": 10000.0,
"z": 0.0
}
]
},
"Rack_6": {
"length": 6.5,
"coordinates": [
{
"x": 9000.0,
"y": 3500.0,
"z": 0.0
},
{
"x": 9000.0,
"y": 9000.0,
"z": 0.0
},
{
"x": 9000.0,
"y": 10000.0,
"z": 0.0
}
]
},
"Rack_7": {
"length": 11.8,
"coordinates": [
{
"x": 20282.5,
"y": 4064.6,
"z": 0.0
},
{
"x": 20282.5,
"y": 9295.2,
"z": 0.0
},
{
"x": 20282.5,
"y": 14141.3,
"z": 0.0
},
{
"x": 20282.5,
"y": 15960.6,
"z": 0.0
}
]
},
"Rack_8": {
"length": 5.1,
"coordinates": [
{
"x": 2800.0,
"y": 10000.0,
"z": 0.0
},
{
"x": 2800.0,
"y": 15000.0,
"z": 1000.0
}
]
},
"Rack_9": {
"length": 5.1,
"coordinates": [
{
"x": 5000.0,
"y": 10000.0,
"z": 0.0
},
{
"x": 5000.0,
"y": 13244.9,
"z": 649.0
},
{
"x": 5000.0,
"y": 15000.0,
"z": 1000.0
}
]
},
"Rack_10": {
"length": 5.1,
"coordinates": [
{
"x": 9000.0,
"y": 10000.0,
"z": 0.0
},
{
"x": 9000.0,
"y": 15000.0,
"z": 1000.0
}
]
},
"v-MA0062@1-Rack_1": {
"length": 0.3,
"coordinates": [
{
"x": 5000.0,
"y": 7605.7,
"z": 0.0
},
{
"x": 5274.5,
"y": 7605.7,
"z": 0.0
}
]
},
"v-BG3240@1-Rack_1": {
"length": 0.3,
"coordinates": [
{
"x": 5000.0,
"y": 5889.0,
"z": 0.0
},
{
"x": 5274.5,
"y": 5889.0,
"z": 0.0
}
]
},
"v-BG3241@1-Rack_2-1": {
"length": 0.5,
"coordinates": [
{
"x": 0.0,
"y": 1904.3,
"z": 0.0
},
{
"x": 461.6,
"y": 1904.3,
"z": 0.0
}
]
},
"v-BG3260@1-Rack_4": {
"length": 0.7,
"coordinates": [
{
"x": 22751.5,
"y": 13404.9,
"z": 0.0
},
{
"x": 22751.5,
"y": 14141.3,
"z": 0.0
}
]
},
"v-BG3270@1-Rack_9": {
"length": 0.9,
"coordinates": [
{
"x": 5000.0,
"y": 13244.9,
"z": 649.0
},
{
"x": 5891.5,
"y": 13244.9,
"z": 0.0
}
]
},
"v-UC0101-Rack_2-1": {
"length": 0.7,
"coordinates": [
{
"x": 0.0,
"y": 3500.0,
"z": 0.0
},
{
"x": 0.0,
"y": 4162.8,
"z": 0.0
}
]
},
"v-UH01-Rack_3": {
"length": 1.3,
"coordinates": [
{
"x": 7000.0,
"y": 15000.0,
"z": 1000.0
},
{
"x": 7000.0,
"y": 16300.0,
"z": 0.0
}
]
},
"t-Rack-TUNNEL1": {
"length": 3.5,
"coordinates": [
{
"x": 9800.0,
"y": 9000.0,
"z": 0.0
},
{
"x": 21282.5,
"y": 9295.2,
"z": 0.0
}
]
},
"v-TUNNEL1-A-Rack_6": {
"length": 0.8,
"coordinates": [
{
"x": 9000.0,
"y": 9000.0,
"z": 0.0
},
{
"x": 9800.0,
"y": 9000.0,
"z": 0.0
}
]
},
"v-TUNNEL1-E-Rack_7": {
"length": 1.0,
"coordinates": [
{
"x": 20282.5,
"y": 9295.2,
"z": 0.0
},
{
"x": 21282.5,
"y": 9295.2,
"z": 0.0
}
]
}
},
"errors_routing": [],
"errors_sensors": [],
"errors_dists": [],
"errors_tunnels": [],
"errors_dists_not_in_layout": [],
"errors_sensors_not_in_layout": [],
"errors_missing_attributes": {
"BX0101": "Nur ein Block und/oder fehlende Attribute: dict_keys(['A', 'B', 'C', 'ARTINR', 'BESCHR', 'MENGE', 'POSITION', 'GRUPPE', 'ETIKETTE', 'AUFLOESE', 'pos'])"
}
}
+340
View File
@@ -0,0 +1,340 @@
{
"sensors": {
"BG3241@1": {
"A": "0",
"B": "BG3241",
"C": "20073710081010151939",
"ARTINR": "200000248",
"BESCHR": "STAUABFRAGE[LT] KPL.",
"MENGE": "1",
"POSITION": "0",
"GRUPPE": "9",
"ETIKETTE": "0",
"AUFLOESE": "N",
"pos": [
38.8,
1280.2
],
"IO": "BG3241",
"ID": "",
"VERW": "Jam detector",
"BEZEICHNUNG": "Stausensor 1 (ILS-CV M0108)",
"KENNZEICHNUNG": "=A01+UC0101-KF1DI1",
"TEXT-E": "",
"TEXT-ES": "",
"TEXT-F": "",
"SPS": "1",
"REALE_POSITION": "x"
},
"MA0062@1": {
"A": "0",
"B": "MA0062",
"C": "20073710081010151939",
"ARTINR": "790902001",
"BESCHR": "E-Teile für SEW Motor ASE1/HAN10ES - BG",
"MENGE": "1",
"POSITION": "0",
"GRUPPE": "9",
"ETIKETTE": "0",
"AUFLOESE": "N",
"pos": [
4967.0,
8072.5
],
"IO": "MA0062",
"ID": "",
"VERW": "CV-M0062_0,75",
"BEZEICHNUNG": "Motor MA0062",
"KENNZEICHNUNG": "=A01+UH01-KF1DQ04",
"TEXT-E": "Motor MA0062",
"TEXT-ES": "",
"TEXT-F": "",
"SPS": "1",
"REALE_POSITION": "x"
},
"BG3240@1": {
"A": "0",
"B": "BG3240",
"C": "20073710081010151939",
"ARTINR": "200000248",
"BESCHR": "STAUABFRAGE[LT] KPL.",
"MENGE": "1",
"POSITION": "0",
"GRUPPE": "9",
"ETIKETTE": "0",
"AUFLOESE": "N",
"pos": [
4961.9,
5609.0
],
"IO": "BG3240",
"ID": "",
"VERW": "Jam detector",
"BEZEICHNUNG": "Stausensor 1 (ILS-CV M0108)",
"KENNZEICHNUNG": "=A01+UC0101-KF1DI1",
"TEXT-E": "conveyor full",
"TEXT-ES": "",
"TEXT-F": "",
"SPS": "1",
"REALE_POSITION": "x"
},
"BG3270@1": {
"A": "0",
"B": "BG3270",
"C": "20073710081010151939",
"ARTINR": "200000248",
"BESCHR": "STAUABFRAGE[LT] KPL.",
"MENGE": "1",
"POSITION": "0",
"GRUPPE": "9",
"ETIKETTE": "0",
"AUFLOESE": "N",
"pos": [
5893.0,
12968.1
],
"IO": "BG3270",
"ID": "",
"VERW": "Jam detector",
"BEZEICHNUNG": "Stausensor 1 (ILS-CV M0108)",
"KENNZEICHNUNG": "=A01+UC0101-KF1DI1",
"TEXT-E": "conveyor full",
"TEXT-ES": "",
"TEXT-F": "",
"SPS": "1",
"REALE_POSITION": ""
},
"BG3260@1": {
"A": "0",
"B": "BG3260",
"C": "20073710081010151939",
"ARTINR": "200000248",
"BESCHR": "STAUABFRAGE[LT] KPL.",
"MENGE": "1",
"POSITION": "0",
"GRUPPE": "9",
"ETIKETTE": "0",
"AUFLOESE": "N",
"pos": [
22355.3,
13524.1
],
"IO": "BG3260",
"ID": "",
"VERW": "Jam detector",
"BEZEICHNUNG": "Stausensor 1 (ILS-CV M0108)",
"KENNZEICHNUNG": "=A01+UC0101-KF1DI1",
"TEXT-E": "conveyor full",
"TEXT-ES": "",
"TEXT-F": "",
"SPS": "1",
"REALE_POSITION": "x"
}
},
"schaltschrank_elemente": {
"FC0062": {
"A": "0",
"B": "FC0062",
"C": "20073710081010151939",
"ARTINR": "703001017",
"BESCHR": "Hilfschalter für 3RV2011 ",
"MENGE": "1",
"POSITION": "0",
"GRUPPE": "9",
"ETIKETTE": "0",
"AUFLOESE": "N",
"pos": [
5272.5,
8378.8
]
},
"FC0062@1": {
"IO": "FC0062",
"ID": "",
"VERW": "MS FC0062",
"BEZEICHNUNG": "Meldekontakt Motorschutzschalter FC0062",
"KENNZEICHNUNG": "=A01+UH01-KF1DI2",
"TEXT-E": "Motor protection switch signaling contact FC0062",
"TEXT-ES": "",
"TEXT-F": "",
"SPS": "1",
"REALE_POSITION": "x",
"pos": [
4973.9,
8072.5
]
}
},
"mappings": {
"UC0101": [
"BG3241@1",
"BG3240@1",
"BG3270@1",
"BG3260@1"
],
"UH01": [
"MA0062@1"
]
},
"distributors": {
"UC0101": [
0.0,
4162.8
],
"UH01": [
7000.0,
16300.0
]
},
"tunnels": {
"TUNNEL1": [
[
9800.0,
9000.0
],
[
21282.5,
9295.2
]
],
"length": {
"TUNNEL1": "3500"
}
},
"racks": {
"Rack_1": [
[
5000.0,
10000.0,
0
],
[
5000.0,
3500.0,
0
]
],
"Rack_2": [
[
0.0,
0.0,
0
],
[
0.0,
3500.0,
0
],
[
15000.0,
3500.0,
0
]
],
"Rack_3": [
[
1000.0,
15000.0,
1000.0
],
[
12000.0,
15000.0,
1000.0
]
],
"Rack_4": [
[
18561.2,
14141.3,
0
],
[
23052.9,
14141.3,
0
]
],
"Rack_5": [
[
2800.0,
10000.0,
0
],
[
2800.0,
3500.0,
0
]
],
"Rack_6": [
[
9000.0,
10000.0,
0
],
[
9000.0,
3500.0,
0
]
],
"Rack_7": [
[
20282.5,
15960.6,
0
],
[
20282.5,
4064.6,
0
]
],
"Rack_8": [
[
2800.0,
10000.0,
0.0
],
[
2800.0,
15000.0,
1000.0
]
],
"Rack_9": [
[
5000.0,
10000.0,
0.0
],
[
5000.0,
15000.0,
1000.0
]
],
"Rack_10": [
[
9000.0,
10000.0,
0.0
],
[
9000.0,
15000.0,
1000.0
]
]
},
"not_found": {
"missing_distributors": [],
"missing_sensors": [],
"missing_tunnel": [],
"missing_attributes": {
"BX0101": "Nur ein Block und/oder fehlende Attribute: dict_keys(['A', 'B', 'C', 'ARTINR', 'BESCHR', 'MENGE', 'POSITION', 'GRUPPE', 'ETIKETTE', 'AUFLOESE', 'pos'])"
}
},
"double_ids": {}
}
+340
View File
@@ -0,0 +1,340 @@
{
"sensors": {
"BG3241@1": {
"A": "0",
"B": "BG3241",
"C": "20073710081010151939",
"ARTINR": "200000248",
"BESCHR": "STAUABFRAGE[LT] KPL.",
"MENGE": "1",
"POSITION": "0",
"GRUPPE": "9",
"ETIKETTE": "0",
"AUFLOESE": "N",
"pos": [
38.8,
1280.2
],
"IO": "BG3241",
"ID": "",
"VERW": "Jam detector",
"BEZEICHNUNG": "Stausensor 1 (ILS-CV M0108)",
"KENNZEICHNUNG": "=A01+UC0101-KF1DI1",
"TEXT-E": "",
"TEXT-ES": "",
"TEXT-F": "",
"SPS": "1",
"REALE_POSITION": "x"
},
"MA0062@1": {
"A": "0",
"B": "MA0062",
"C": "20073710081010151939",
"ARTINR": "790902001",
"BESCHR": "E-Teile für SEW Motor ASE1/HAN10ES - BG",
"MENGE": "1",
"POSITION": "0",
"GRUPPE": "9",
"ETIKETTE": "0",
"AUFLOESE": "N",
"pos": [
4967.0,
8072.5
],
"IO": "MA0062",
"ID": "",
"VERW": "CV-M0062_0,75",
"BEZEICHNUNG": "Motor MA0062",
"KENNZEICHNUNG": "=A01+UH01-KF1DQ04",
"TEXT-E": "Motor MA0062",
"TEXT-ES": "",
"TEXT-F": "",
"SPS": "1",
"REALE_POSITION": "x"
},
"BG3240@1": {
"A": "0",
"B": "BG3240",
"C": "20073710081010151939",
"ARTINR": "200000248",
"BESCHR": "STAUABFRAGE[LT] KPL.",
"MENGE": "1",
"POSITION": "0",
"GRUPPE": "9",
"ETIKETTE": "0",
"AUFLOESE": "N",
"pos": [
4961.9,
5609.0
],
"IO": "BG3240",
"ID": "",
"VERW": "Jam detector",
"BEZEICHNUNG": "Stausensor 1 (ILS-CV M0108)",
"KENNZEICHNUNG": "=A01+UC0101-KF1DI1",
"TEXT-E": "conveyor full",
"TEXT-ES": "",
"TEXT-F": "",
"SPS": "1",
"REALE_POSITION": "x"
},
"BG3270@1": {
"A": "0",
"B": "BG3270",
"C": "20073710081010151939",
"ARTINR": "200000248",
"BESCHR": "STAUABFRAGE[LT] KPL.",
"MENGE": "1",
"POSITION": "0",
"GRUPPE": "9",
"ETIKETTE": "0",
"AUFLOESE": "N",
"pos": [
5893.0,
12968.1
],
"IO": "BG3270",
"ID": "",
"VERW": "Jam detector",
"BEZEICHNUNG": "Stausensor 1 (ILS-CV M0108)",
"KENNZEICHNUNG": "=A01+UC0101-KF1DI1",
"TEXT-E": "conveyor full",
"TEXT-ES": "",
"TEXT-F": "",
"SPS": "1",
"REALE_POSITION": ""
},
"BG3260@1": {
"A": "0",
"B": "BG3260",
"C": "20073710081010151939",
"ARTINR": "200000248",
"BESCHR": "STAUABFRAGE[LT] KPL.",
"MENGE": "1",
"POSITION": "0",
"GRUPPE": "9",
"ETIKETTE": "0",
"AUFLOESE": "N",
"pos": [
22355.3,
13524.1
],
"IO": "BG3260",
"ID": "",
"VERW": "Jam detector",
"BEZEICHNUNG": "Stausensor 1 (ILS-CV M0108)",
"KENNZEICHNUNG": "=A01+UC0101-KF1DI1",
"TEXT-E": "conveyor full",
"TEXT-ES": "",
"TEXT-F": "",
"SPS": "1",
"REALE_POSITION": "x"
}
},
"schaltschrank_elemente": {
"FC0062": {
"A": "0",
"B": "FC0062",
"C": "20073710081010151939",
"ARTINR": "703001017",
"BESCHR": "Hilfschalter für 3RV2011 ",
"MENGE": "1",
"POSITION": "0",
"GRUPPE": "9",
"ETIKETTE": "0",
"AUFLOESE": "N",
"pos": [
5272.5,
8378.8
]
},
"FC0062@1": {
"IO": "FC0062",
"ID": "",
"VERW": "MS FC0062",
"BEZEICHNUNG": "Meldekontakt Motorschutzschalter FC0062",
"KENNZEICHNUNG": "=A01+UH01-KF1DI2",
"TEXT-E": "Motor protection switch signaling contact FC0062",
"TEXT-ES": "",
"TEXT-F": "",
"SPS": "1",
"REALE_POSITION": "x",
"pos": [
4973.9,
8072.5
]
}
},
"mappings": {
"UC0101": [
"BG3241@1",
"BG3240@1",
"BG3270@1",
"BG3260@1"
],
"UH01": [
"MA0062@1"
]
},
"distributors": {
"UC0101": [
0.0,
4162.8
],
"UH01": [
7000.0,
16300.0
]
},
"tunnels": {
"TUNNEL1": [
[
9800.0,
9000.0
],
[
21282.5,
9295.2
]
],
"length": {
"TUNNEL1": "3500"
}
},
"racks": {
"Rack_1": [
[
5000.0,
10000.0,
0
],
[
5000.0,
3500.0,
0
]
],
"Rack_2": [
[
0.0,
0.0,
0
],
[
0.0,
3500.0,
0
],
[
15000.0,
3500.0,
0
]
],
"Rack_3": [
[
1000.0,
15000.0,
1000.0
],
[
12000.0,
15000.0,
1000.0
]
],
"Rack_4": [
[
18561.2,
14141.3,
0
],
[
23052.9,
14141.3,
0
]
],
"Rack_5": [
[
2800.0,
10000.0,
0
],
[
2800.0,
3500.0,
0
]
],
"Rack_6": [
[
9000.0,
10000.0,
0
],
[
9000.0,
3500.0,
0
]
],
"Rack_7": [
[
20282.5,
15960.6,
0
],
[
20282.5,
4064.6,
0
]
],
"Rack_8": [
[
2800.0,
10000.0,
0.0
],
[
2800.0,
15000.0,
1000.0
]
],
"Rack_9": [
[
5000.0,
10000.0,
0.0
],
[
5000.0,
15000.0,
1000.0
]
],
"Rack_10": [
[
9000.0,
10000.0,
0.0
],
[
9000.0,
15000.0,
1000.0
]
]
},
"not_found": {
"missing_distributors": [],
"missing_sensors": [],
"missing_tunnel": [],
"missing_attributes": {
"BX0101": "Nur ein Block und/oder fehlende Attribute: dict_keys(['A', 'B', 'C', 'ARTINR', 'BESCHR', 'MENGE', 'POSITION', 'GRUPPE', 'ETIKETTE', 'AUFLOESE', 'pos'])"
}
},
"double_ids": {}
}
+605
View File
@@ -0,0 +1,605 @@
{
"kabel": [
{
"id": "UC0101-BG3241@1",
"s_artinr": "200000248",
"coords": [
{
"x": 0.0,
"y": 4162.8
},
{
"x": 0.0,
"y": 3500.0
},
{
"x": 0.0,
"y": 1280.2
},
{
"x": 38.8,
"y": 1280.2
}
],
"length": 2921.4,
"tunnel_indices": []
},
{
"id": "UC0101-BG3240@1",
"s_artinr": "200000248",
"coords": [
{
"x": 0.0,
"y": 4162.8
},
{
"x": 0.0,
"y": 3500.0
},
{
"x": 2800.0,
"y": 3500.0
},
{
"x": 5000.0,
"y": 3500.0
},
{
"x": 5000.0,
"y": 5609.0
},
{
"x": 4961.9,
"y": 5609.0
}
],
"length": 7809.9,
"tunnel_indices": []
},
{
"id": "UC0101-BG3270@1",
"s_artinr": "200000248",
"coords": [
{
"x": 0.0,
"y": 4162.8
},
{
"x": 0.0,
"y": 3500.0
},
{
"x": 2800.0,
"y": 3500.0
},
{
"x": 5000.0,
"y": 3500.0
},
{
"x": 5000.0,
"y": 5609.0
},
{
"x": 5000.0,
"y": 8072.5
},
{
"x": 5000.0,
"y": 10000.0
},
{
"x": 5000.0,
"y": 12968.1
},
{
"x": 5893.0,
"y": 12968.1
}
],
"length": 16082.7,
"tunnel_indices": []
},
{
"id": "UC0101-BG3260@1",
"s_artinr": "200000248",
"coords": [
{
"x": 0.0,
"y": 4162.8
},
{
"x": 0.0,
"y": 3500.0
},
{
"x": 2800.0,
"y": 3500.0
},
{
"x": 5000.0,
"y": 3500.0
},
{
"x": 9000.0,
"y": 3500.0
},
{
"x": 9000.0,
"y": 9000.0
},
{
"x": 9800.0,
"y": 9000.0
},
{
"x": 21282.5,
"y": 9295.2
},
{
"x": 20282.5,
"y": 9295.2
},
{
"x": 20282.5,
"y": 14141.3
},
{
"x": 22355.3,
"y": 14141.3
},
{
"x": 22355.3,
"y": 13524.1
}
],
"length": 27998.9,
"tunnel_indices": [
6,
7
]
},
{
"id": "UH01-MA0062@1",
"s_artinr": "790902001",
"coords": [
{
"x": 7000.0,
"y": 16300.0
},
{
"x": 7000.0,
"y": 15000.0
},
{
"x": 5000.0,
"y": 15000.0
},
{
"x": 5000.0,
"y": 12968.1
},
{
"x": 5000.0,
"y": 10000.0
},
{
"x": 5000.0,
"y": 8072.5
},
{
"x": 4967.0,
"y": 8072.5
}
],
"length": 10359.5,
"tunnel_indices": []
}
],
"rack_geometry": {
"Rack_1": {
"length": 6.5,
"coordinates": [
{
"x": 5000.0,
"y": 3500.0,
"z": 0.0
},
{
"x": 5000.0,
"y": 5609.0,
"z": 0.0
},
{
"x": 5000.0,
"y": 8072.5,
"z": 0.0
},
{
"x": 5000.0,
"y": 10000.0,
"z": 0.0
}
]
},
"Rack_2-1": {
"length": 3.5,
"coordinates": [
{
"x": 0.0,
"y": 0.0,
"z": 0.0
},
{
"x": 0.0,
"y": 1280.2,
"z": 0.0
},
{
"x": 0.0,
"y": 3500.0,
"z": 0.0
}
]
},
"Rack_2-2": {
"length": 15.0,
"coordinates": [
{
"x": 0.0,
"y": 3500.0,
"z": 0.0
},
{
"x": 2800.0,
"y": 3500.0,
"z": 0.0
},
{
"x": 5000.0,
"y": 3500.0,
"z": 0.0
},
{
"x": 9000.0,
"y": 3500.0,
"z": 0.0
},
{
"x": 15000.0,
"y": 3500.0,
"z": 0.0
}
]
},
"Rack_3": {
"length": 11.0,
"coordinates": [
{
"x": 1000.0,
"y": 15000.0,
"z": 1000.0
},
{
"x": 2800.0,
"y": 15000.0,
"z": 1000.0
},
{
"x": 5000.0,
"y": 15000.0,
"z": 1000.0
},
{
"x": 7000.0,
"y": 15000.0,
"z": 1000.0
},
{
"x": 9000.0,
"y": 15000.0,
"z": 1000.0
},
{
"x": 12000.0,
"y": 15000.0,
"z": 1000.0
}
]
},
"Rack_4": {
"length": 4.5,
"coordinates": [
{
"x": 18561.2,
"y": 14141.3,
"z": 0.0
},
{
"x": 20282.5,
"y": 14141.3,
"z": 0.0
},
{
"x": 22355.3,
"y": 14141.3,
"z": 0.0
},
{
"x": 23052.9,
"y": 14141.3,
"z": 0.0
}
]
},
"Rack_5": {
"length": 6.5,
"coordinates": [
{
"x": 2800.0,
"y": 3500.0,
"z": 0.0
},
{
"x": 2800.0,
"y": 10000.0,
"z": 0.0
}
]
},
"Rack_6": {
"length": 6.5,
"coordinates": [
{
"x": 9000.0,
"y": 3500.0,
"z": 0.0
},
{
"x": 9000.0,
"y": 9000.0,
"z": 0.0
},
{
"x": 9000.0,
"y": 10000.0,
"z": 0.0
}
]
},
"Rack_7": {
"length": 11.8,
"coordinates": [
{
"x": 20282.5,
"y": 4064.6,
"z": 0.0
},
{
"x": 20282.5,
"y": 9295.2,
"z": 0.0
},
{
"x": 20282.5,
"y": 14141.3,
"z": 0.0
},
{
"x": 20282.5,
"y": 15960.6,
"z": 0.0
}
]
},
"Rack_8": {
"length": 5.1,
"coordinates": [
{
"x": 2800.0,
"y": 10000.0,
"z": 0.0
},
{
"x": 2800.0,
"y": 15000.0,
"z": 1000.0
}
]
},
"Rack_9": {
"length": 5.1,
"coordinates": [
{
"x": 5000.0,
"y": 10000.0,
"z": 0.0
},
{
"x": 5000.0,
"y": 12968.1,
"z": 593.6
},
{
"x": 5000.0,
"y": 15000.0,
"z": 1000.0
}
]
},
"Rack_10": {
"length": 5.1,
"coordinates": [
{
"x": 9000.0,
"y": 10000.0,
"z": 0.0
},
{
"x": 9000.0,
"y": 15000.0,
"z": 1000.0
}
]
},
"v-BG3241@1-Rack_2-1": {
"length": 0.0,
"coordinates": [
{
"x": 0.0,
"y": 1280.2,
"z": 0.0
},
{
"x": 38.8,
"y": 1280.2,
"z": 0.0
}
]
},
"v-MA0062@1-Rack_1": {
"length": 0.0,
"coordinates": [
{
"x": 4967.0,
"y": 8072.5,
"z": 0.0
},
{
"x": 5000.0,
"y": 8072.5,
"z": 0.0
}
]
},
"v-BG3240@1-Rack_1": {
"length": 0.0,
"coordinates": [
{
"x": 4961.9,
"y": 5609.0,
"z": 0.0
},
{
"x": 5000.0,
"y": 5609.0,
"z": 0.0
}
]
},
"v-BG3270@1-Rack_9": {
"length": 0.9,
"coordinates": [
{
"x": 5000.0,
"y": 12968.1,
"z": 593.6
},
{
"x": 5893.0,
"y": 12968.1,
"z": 0.0
}
]
},
"v-BG3260@1-Rack_4": {
"length": 0.6,
"coordinates": [
{
"x": 22355.3,
"y": 13524.1,
"z": 0.0
},
{
"x": 22355.3,
"y": 14141.3,
"z": 0.0
}
]
},
"v-UC0101-Rack_2-1": {
"length": 0.7,
"coordinates": [
{
"x": 0.0,
"y": 3500.0,
"z": 0.0
},
{
"x": 0.0,
"y": 4162.8,
"z": 0.0
}
]
},
"v-UH01-Rack_3": {
"length": 1.3,
"coordinates": [
{
"x": 7000.0,
"y": 15000.0,
"z": 1000.0
},
{
"x": 7000.0,
"y": 16300.0,
"z": 0.0
}
]
},
"t-Rack-TUNNEL1": {
"length": 3.5,
"coordinates": [
{
"x": 9800.0,
"y": 9000.0,
"z": 0.0
},
{
"x": 21282.5,
"y": 9295.2,
"z": 0.0
}
]
},
"v-TUNNEL1-A-Rack_6": {
"length": 0.8,
"coordinates": [
{
"x": 9000.0,
"y": 9000.0,
"z": 0.0
},
{
"x": 9800.0,
"y": 9000.0,
"z": 0.0
}
]
},
"v-TUNNEL1-E-Rack_7": {
"length": 1.0,
"coordinates": [
{
"x": 20282.5,
"y": 9295.2,
"z": 0.0
},
{
"x": 21282.5,
"y": 9295.2,
"z": 0.0
}
]
}
},
"errors_routing": [],
"errors_sensors": [],
"errors_dists": [],
"errors_tunnels": [],
"errors_dists_not_in_layout": [],
"errors_sensors_not_in_layout": [],
"errors_missing_attributes": {
"BX0101": "Nur ein Block und/oder fehlende Attribute: dict_keys(['A', 'B', 'C', 'ARTINR', 'BESCHR', 'MENGE', 'POSITION', 'GRUPPE', 'ETIKETTE', 'AUFLOESE', 'pos'])"
}
}
+340
View File
@@ -0,0 +1,340 @@
{
"sensors": {
"BG3241@1": {
"A": "0",
"B": "BG3241",
"C": "20073710081010151939",
"ARTINR": "200000248",
"BESCHR": "STAUABFRAGE[LT] KPL.",
"MENGE": "1",
"POSITION": "0",
"GRUPPE": "9",
"ETIKETTE": "0",
"AUFLOESE": "N",
"pos": [
38.8,
1280.2
],
"IO": "BG3241",
"ID": "",
"VERW": "Jam detector",
"BEZEICHNUNG": "Stausensor 1 (ILS-CV M0108)",
"KENNZEICHNUNG": "=A01+UC0101-KF1DI1",
"TEXT-E": "",
"TEXT-ES": "",
"TEXT-F": "",
"SPS": "1",
"REALE_POSITION": "x"
},
"MA0062@1": {
"A": "0",
"B": "MA0062",
"C": "20073710081010151939",
"ARTINR": "790902001",
"BESCHR": "E-Teile für SEW Motor ASE1/HAN10ES - BG",
"MENGE": "1",
"POSITION": "0",
"GRUPPE": "9",
"ETIKETTE": "0",
"AUFLOESE": "N",
"pos": [
4967.0,
8072.5
],
"IO": "MA0062",
"ID": "",
"VERW": "CV-M0062_0,75",
"BEZEICHNUNG": "Motor MA0062",
"KENNZEICHNUNG": "=A01+UH01-KF1DQ04",
"TEXT-E": "Motor MA0062",
"TEXT-ES": "",
"TEXT-F": "",
"SPS": "1",
"REALE_POSITION": "x"
},
"BG3240@1": {
"A": "0",
"B": "BG3240",
"C": "20073710081010151939",
"ARTINR": "200000248",
"BESCHR": "STAUABFRAGE[LT] KPL.",
"MENGE": "1",
"POSITION": "0",
"GRUPPE": "9",
"ETIKETTE": "0",
"AUFLOESE": "N",
"pos": [
4961.9,
5609.0
],
"IO": "BG3240",
"ID": "",
"VERW": "Jam detector",
"BEZEICHNUNG": "Stausensor 1 (ILS-CV M0108)",
"KENNZEICHNUNG": "=A01+UC0101-KF1DI1",
"TEXT-E": "conveyor full",
"TEXT-ES": "",
"TEXT-F": "",
"SPS": "1",
"REALE_POSITION": "x"
},
"BG3270@1": {
"A": "0",
"B": "BG3270",
"C": "20073710081010151939",
"ARTINR": "200000248",
"BESCHR": "STAUABFRAGE[LT] KPL.",
"MENGE": "1",
"POSITION": "0",
"GRUPPE": "9",
"ETIKETTE": "0",
"AUFLOESE": "N",
"pos": [
5893.0,
12968.1
],
"IO": "BG3270",
"ID": "",
"VERW": "Jam detector",
"BEZEICHNUNG": "Stausensor 1 (ILS-CV M0108)",
"KENNZEICHNUNG": "=A01+UC0101-KF1DI1",
"TEXT-E": "conveyor full",
"TEXT-ES": "",
"TEXT-F": "",
"SPS": "1",
"REALE_POSITION": ""
},
"BG3260@1": {
"A": "0",
"B": "BG3260",
"C": "20073710081010151939",
"ARTINR": "200000248",
"BESCHR": "STAUABFRAGE[LT] KPL.",
"MENGE": "1",
"POSITION": "0",
"GRUPPE": "9",
"ETIKETTE": "0",
"AUFLOESE": "N",
"pos": [
22355.3,
13524.1
],
"IO": "BG3260",
"ID": "",
"VERW": "Jam detector",
"BEZEICHNUNG": "Stausensor 1 (ILS-CV M0108)",
"KENNZEICHNUNG": "=A01+UC0101-KF1DI1",
"TEXT-E": "conveyor full",
"TEXT-ES": "",
"TEXT-F": "",
"SPS": "1",
"REALE_POSITION": "x"
}
},
"schaltschrank_elemente": {
"FC0062": {
"A": "0",
"B": "FC0062",
"C": "20073710081010151939",
"ARTINR": "703001017",
"BESCHR": "Hilfschalter für 3RV2011 ",
"MENGE": "1",
"POSITION": "0",
"GRUPPE": "9",
"ETIKETTE": "0",
"AUFLOESE": "N",
"pos": [
5272.5,
8378.8
]
},
"FC0062@1": {
"IO": "FC0062",
"ID": "",
"VERW": "MS FC0062",
"BEZEICHNUNG": "Meldekontakt Motorschutzschalter FC0062",
"KENNZEICHNUNG": "=A01+UH01-KF1DI2",
"TEXT-E": "Motor protection switch signaling contact FC0062",
"TEXT-ES": "",
"TEXT-F": "",
"SPS": "1",
"REALE_POSITION": "x",
"pos": [
4973.9,
8072.5
]
}
},
"mappings": {
"UC0101": [
"BG3241@1",
"BG3240@1",
"BG3270@1",
"BG3260@1"
],
"UH01": [
"MA0062@1"
]
},
"distributors": {
"UC0101": [
0.0,
4162.8
],
"UH01": [
7000.0,
16300.0
]
},
"tunnels": {
"TUNNEL1": [
[
9800.0,
9000.0
],
[
21282.5,
9295.2
]
],
"length": {
"TUNNEL1": "3500"
}
},
"racks": {
"Rack_1": [
[
5000.0,
10000.0,
0
],
[
5000.0,
3500.0,
0
]
],
"Rack_2": [
[
0.0,
0.0,
0
],
[
0.0,
3500.0,
0
],
[
15000.0,
3500.0,
0
]
],
"Rack_3": [
[
1000.0,
15000.0,
0
],
[
12000.0,
15000.0,
0
]
],
"Rack_4": [
[
18561.2,
14141.3,
0
],
[
23052.9,
14141.3,
0
]
],
"Rack_5": [
[
2800.0,
10000.0,
0
],
[
2800.0,
3500.0,
0
]
],
"Rack_6": [
[
9000.0,
10000.0,
0
],
[
9000.0,
3500.0,
0
]
],
"Rack_7": [
[
20282.5,
15960.6,
0
],
[
20282.5,
4064.6,
0
]
],
"Rack_8": [
[
2800.0,
10000.0,
0.0
],
[
2800.0,
15000.0,
0.0
]
],
"Rack_9": [
[
5000.0,
10000.0,
0.0
],
[
5000.0,
15000.0,
0.0
]
],
"Rack_10": [
[
9000.0,
10000.0,
0.0
],
[
9000.0,
15000.0,
0.0
]
]
},
"not_found": {
"missing_distributors": [],
"missing_sensors": [],
"missing_tunnel": [],
"missing_attributes": {
"BX0101": "Nur ein Block und/oder fehlende Attribute: dict_keys(['A', 'B', 'C', 'ARTINR', 'BESCHR', 'MENGE', 'POSITION', 'GRUPPE', 'ETIKETTE', 'AUFLOESE', 'pos'])"
}
},
"double_ids": {}
}
+331
View File
@@ -0,0 +1,331 @@
{
"sensors": {
"BG3241@1": {
"A": "0",
"B": "BG3241",
"C": "20073710081010151939",
"ARTINR": "200000248",
"BESCHR": "STAUABFRAGE[LT] KPL.",
"MENGE": "1",
"POSITION": "0",
"GRUPPE": "9",
"ETIKETTE": "0",
"AUFLOESE": "N",
"pos": [
38.8,
1280.2
],
"IO": "BG3241",
"ID": "",
"VERW": "Jam detector",
"BEZEICHNUNG": "Stausensor 1 (ILS-CV M0108)",
"KENNZEICHNUNG": "=A01+UC0101-KF1DI1",
"TEXT-E": "",
"TEXT-ES": "",
"TEXT-F": "",
"SPS": "1",
"REALE_POSITION": "x"
},
"MA0062@1": {
"A": "0",
"B": "MA0062",
"C": "20073710081010151939",
"ARTINR": "790902001",
"BESCHR": "E-Teile für SEW Motor ASE1/HAN10ES - BG",
"MENGE": "1",
"POSITION": "0",
"GRUPPE": "9",
"ETIKETTE": "0",
"AUFLOESE": "N",
"pos": [
4967.0,
8072.5
],
"IO": "MA0062",
"ID": "",
"VERW": "CV-M0062_0,75",
"BEZEICHNUNG": "Motor MA0062",
"KENNZEICHNUNG": "=A01+UH01-KF1DQ04",
"TEXT-E": "Motor MA0062",
"TEXT-ES": "",
"TEXT-F": "",
"SPS": "1",
"REALE_POSITION": "x"
},
"BG3240@1": {
"A": "0",
"B": "BG3240",
"C": "20073710081010151939",
"ARTINR": "200000248",
"BESCHR": "STAUABFRAGE[LT] KPL.",
"MENGE": "1",
"POSITION": "0",
"GRUPPE": "9",
"ETIKETTE": "0",
"AUFLOESE": "N",
"pos": [
4961.9,
5609.0
],
"IO": "BG3240",
"ID": "",
"VERW": "Jam detector",
"BEZEICHNUNG": "Stausensor 1 (ILS-CV M0108)",
"KENNZEICHNUNG": "=A01+UC0101-KF1DI1",
"TEXT-E": "conveyor full",
"TEXT-ES": "",
"TEXT-F": "",
"SPS": "1",
"REALE_POSITION": "x"
},
"BG3270@1": {
"A": "0",
"B": "BG3270",
"C": "20073710081010151939",
"ARTINR": "200000248",
"BESCHR": "STAUABFRAGE[LT] KPL.",
"MENGE": "1",
"POSITION": "0",
"GRUPPE": "9",
"ETIKETTE": "0",
"AUFLOESE": "N",
"pos": [
5893.0,
12968.1
],
"IO": "BG3270",
"ID": "",
"VERW": "Jam detector",
"BEZEICHNUNG": "Stausensor 1 (ILS-CV M0108)",
"KENNZEICHNUNG": "=A01+UC0101-KF1DI1",
"TEXT-E": "conveyor full",
"TEXT-ES": "",
"TEXT-F": "",
"SPS": "1",
"REALE_POSITION": ""
},
"BG3260@1": {
"A": "0",
"B": "BG3260",
"C": "20073710081010151939",
"ARTINR": "200000248",
"BESCHR": "STAUABFRAGE[LT] KPL.",
"MENGE": "1",
"POSITION": "0",
"GRUPPE": "9",
"ETIKETTE": "0",
"AUFLOESE": "N",
"pos": [
22355.3,
13524.1
],
"IO": "BG3260",
"ID": "",
"VERW": "Jam detector",
"BEZEICHNUNG": "Stausensor 1 (ILS-CV M0108)",
"KENNZEICHNUNG": "=A01+UC0101-KF1DI1",
"TEXT-E": "conveyor full",
"TEXT-ES": "",
"TEXT-F": "",
"SPS": "1",
"REALE_POSITION": "x"
}
},
"schaltschrank_elemente": {
"FC0062": {
"A": "0",
"B": "FC0062",
"C": "20073710081010151939",
"ARTINR": "703001017",
"BESCHR": "Hilfschalter für 3RV2011 ",
"MENGE": "1",
"POSITION": "0",
"GRUPPE": "9",
"ETIKETTE": "0",
"AUFLOESE": "N",
"pos": [
5272.5,
8378.8
]
},
"FC0062@1": {
"IO": "FC0062",
"ID": "",
"VERW": "MS FC0062",
"BEZEICHNUNG": "Meldekontakt Motorschutzschalter FC0062",
"KENNZEICHNUNG": "=A01+UH01-KF1DI2",
"TEXT-E": "Motor protection switch signaling contact FC0062",
"TEXT-ES": "",
"TEXT-F": "",
"SPS": "1",
"REALE_POSITION": "x",
"pos": [
4973.9,
8072.5
]
}
},
"mappings": {
"UC0101": [
"BG3241@1",
"BG3240@1",
"BG3270@1",
"BG3260@1"
],
"UH01": [
"MA0062@1"
]
},
"distributors": {
"UC0101": [
0.0,
4162.8
],
"UH01": [
7000.0,
16300.0
]
},
"tunnels": {
"TUNNEL1": [
[
9800.0,
9000.0
],
[
21282.5,
9295.2
]
],
"length": {
"TUNNEL1": "3500"
}
},
"racks": {
"Rack_1": [
[
5000.0,
10000.0,
0
],
[
5000.0,
3500.0,
0
]
],
"Rack_2": [
[
0.0,
0.0,
0
],
[
0.0,
3500.0,
0
],
[
15000.0,
3500.0,
0
]
],
"Rack_3": [
[
1000.0,
15000.0,
0
],
[
12000.0,
15000.0,
0
]
],
"Rack_4": [
[
18561.2,
14141.3,
0
],
[
23052.9,
14141.3,
0
]
],
"Rack_5": [
[
2800.0,
10000.0,
0
],
[
2800.0,
3500.0,
0
]
],
"Rack_6": [
[
9000.0,
10000.0,
0
],
[
9000.0,
3500.0,
0
]
],
"Rack_7": [
[
20282.5,
15960.6,
0
],
[
20282.5,
4064.6,
0
]
],
"Rack_8": [
[
2800.0,
10000.0,
0.0
],
[
2800.0,
15000.0,
0.0
]
],
"Rack_9": [
[
5000.0,
10000.0,
0.0
],
[
5000.0,
15000.0,
0.0
]
],
"Rack_10": [
[
9000.0,
10000.0,
0.0
],
[
9000.0,
15000.0,
0.0
]
]
}
}
View File
+619
View File
@@ -0,0 +1,619 @@
{
"sensors": {
"BG3241@1": {
"A": "0",
"B": "BG3241",
"C": "20073710081010151939",
"ARTINR": "200000248",
"BESCHR": "STAUABFRAGE[LT] KPL.",
"MENGE": "1",
"POSITION": "0",
"GRUPPE": "9",
"ETIKETTE": "0",
"AUFLOESE": "N",
"pos": [
38.8,
1280.2
],
"IO": "BG3241",
"ID": "",
"VERW": "Jam detector",
"BEZEICHNUNG": "Stausensor 1 (ILS-CV M0108)",
"KENNZEICHNUNG": "=A01+UC0101-KF1DI1",
"TEXT-E": "",
"TEXT-ES": "",
"TEXT-F": "",
"SPS": "1",
"REALE_POSITION": "x"
},
"MA0062@1": {
"A": "0",
"B": "MA0062",
"C": "20073710081010151939",
"ARTINR": "790902001",
"BESCHR": "E-Teile für SEW Motor ASE1/HAN10ES - BG",
"MENGE": "1",
"POSITION": "0",
"GRUPPE": "9",
"ETIKETTE": "0",
"AUFLOESE": "N",
"pos": [
4967.0,
8072.5
],
"IO": "MA0062",
"ID": "",
"VERW": "CV-M0062_0,75",
"BEZEICHNUNG": "Motor MA0062",
"KENNZEICHNUNG": "=A01+UH01-KF1DQ04",
"TEXT-E": "Motor MA0062",
"TEXT-ES": "",
"TEXT-F": "",
"SPS": "1",
"REALE_POSITION": "x"
},
"BG3240@1": {
"A": "0",
"B": "BG3240",
"C": "20073710081010151939",
"ARTINR": "200000248",
"BESCHR": "STAUABFRAGE[LT] KPL.",
"MENGE": "1",
"POSITION": "0",
"GRUPPE": "9",
"ETIKETTE": "0",
"AUFLOESE": "N",
"pos": [
4961.9,
5609.0
],
"IO": "BG3240",
"ID": "",
"VERW": "Jam detector",
"BEZEICHNUNG": "Stausensor 1 (ILS-CV M0108)",
"KENNZEICHNUNG": "=A01+UC0101-KF1DI1",
"TEXT-E": "conveyor full",
"TEXT-ES": "",
"TEXT-F": "",
"SPS": "1",
"REALE_POSITION": "x"
},
"BG3270@1": {
"A": "0",
"B": "BG3270",
"C": "20073710081010151939",
"ARTINR": "200000248",
"BESCHR": "STAUABFRAGE[LT] KPL.",
"MENGE": "1",
"POSITION": "0",
"GRUPPE": "9",
"ETIKETTE": "0",
"AUFLOESE": "N",
"pos": [
5893.0,
12968.1
],
"IO": "BG3270",
"ID": "",
"VERW": "Jam detector",
"BEZEICHNUNG": "Stausensor 1 (ILS-CV M0108)",
"KENNZEICHNUNG": "=A01+UC0101-KF1DI1",
"TEXT-E": "conveyor full",
"TEXT-ES": "",
"TEXT-F": "",
"SPS": "1",
"REALE_POSITION": ""
},
"BG3270@2": {
"A": "0",
"B": "BG3270",
"C": "20073710081010151939",
"ARTINR": "200000248",
"BESCHR": "STAUABFRAGE[LT] KPL.",
"MENGE": "1",
"POSITION": "0",
"GRUPPE": "9",
"ETIKETTE": "0",
"AUFLOESE": "N",
"pos": [
5926.6,
12188.4
],
"IO": "BG3270",
"ID": "",
"VERW": "Jam detector",
"BEZEICHNUNG": "Stausensor 1 (ILS-CV M0108)",
"KENNZEICHNUNG": "=A01+UC0101-KF1DI1",
"TEXT-E": "conveyor full",
"TEXT-ES": "",
"TEXT-F": "",
"SPS": "2",
"REALE_POSITION": ""
},
"BG3260@1": {
"A": "0",
"B": "BG3260",
"C": "20073710081010151939",
"ARTINR": "200000248",
"BESCHR": "STAUABFRAGE[LT] KPL.",
"MENGE": "1",
"POSITION": "0",
"GRUPPE": "9",
"ETIKETTE": "0",
"AUFLOESE": "N",
"pos": [
22355.3,
13524.1
],
"IO": "BG3260",
"ID": "",
"VERW": "Jam detector",
"BEZEICHNUNG": "Stausensor 1 (ILS-CV M0108)",
"KENNZEICHNUNG": "=A01+UC0101-KF1DI1",
"TEXT-E": "conveyor full",
"TEXT-ES": "",
"TEXT-F": "",
"SPS": "1",
"REALE_POSITION": "x"
},
"PF0000@6": {
"A": "0",
"B": "PF0000",
"C": "20092710081010151939",
"ARTINR": "",
"BESCHR": "",
"MENGE": "1",
"POSITION": "0",
"GRUPPE": "9",
"ETIKETTE": "0",
"AUFLOESE": "N",
"pos": [
-2662.9,
13821.7
],
"IO": "PF0000",
"ID": "9999",
"VERW": "IL-YE-LED",
"BEZEICHNUNG": "LM Störung ",
"KENNZEICHNUNG": "=A01+UH06-KF1DQ1",
"TEXT-D": "LM Störung",
"TEXT-E": "IL Trouble",
"TEXT-ES": "",
"TEXT-F": "",
"SPS": "6"
},
"SF0003@6": {
"A": "0",
"B": "SF0003",
"C": "20092710081010151939",
"ARTINR": "",
"BESCHR": "",
"MENGE": "1",
"POSITION": "0",
"GRUPPE": "9",
"ETIKETTE": "0",
"AUFLOESE": "N",
"pos": [
-3405.4,
14091.7
],
"IO": "SF0003",
"ID": "9999",
"VERW": "PB-WH-NO",
"BEZEICHNUNG": "DT Lampentest",
"KENNZEICHNUNG": "=A01+UH06-KF1DI1",
"TEXT-D": "DT Lampentest",
"TEXT-E": "PB Lamp test",
"TEXT-ES": "",
"TEXT-F": "",
"SPS": "6"
},
"PF0003@6": {
"A": "0",
"B": "PF0003",
"C": "20092710081010151939",
"ARTINR": "",
"BESCHR": "",
"MENGE": "1",
"POSITION": "0",
"GRUPPE": "9",
"ETIKETTE": "0",
"AUFLOESE": "N",
"pos": [
-2662.9,
13551.7
],
"IO": "PF0003",
"ID": "9999",
"VERW": "IL-YE-LED",
"BEZEICHNUNG": "LM Druckluft fehlt",
"KENNZEICHNUNG": "=A01+UH06-KF1DQ1",
"TEXT-D": "LM Druckluft fehlt",
"TEXT-E": "IL Air pressure missing",
"TEXT-ES": "",
"TEXT-F": "",
"SPS": "6"
},
"PF0004@6": {
"A": "0",
"B": "PF0004",
"C": "20092710081010151939",
"ARTINR": "",
"BESCHR": "",
"MENGE": "1",
"POSITION": "0",
"GRUPPE": "9",
"ETIKETTE": "0",
"AUFLOESE": "N",
"pos": [
-2662.9,
13281.7
],
"IO": "PF0004",
"ID": "9999",
"VERW": "IL-YE-LED",
"BEZEICHNUNG": "LM Motorschutz hat ausgelöst",
"KENNZEICHNUNG": "=A01+UH06-KF1DQ1",
"TEXT-D": "LM Motorschutz hat ausgelöst",
"TEXT-E": "IL Motor protection has tripped",
"TEXT-ES": "",
"TEXT-F": "",
"SPS": "6"
},
"PF0005@6": {
"A": "0",
"B": "PF0005",
"C": "20092710081010151939",
"ARTINR": "",
"BESCHR": "",
"MENGE": "1",
"POSITION": "0",
"GRUPPE": "9",
"ETIKETTE": "0",
"AUFLOESE": "N",
"pos": [
-2662.9,
13011.7
],
"IO": "PF0005",
"ID": "9999",
"VERW": "IL-YE-LED",
"BEZEICHNUNG": "LM Sicherung hat ausgelöst",
"KENNZEICHNUNG": "=A01+UH06-KF1DQ1",
"TEXT-D": "LM Sicherung hat ausgelöst",
"TEXT-E": "IL Fuse has tripped",
"TEXT-ES": "",
"TEXT-F": "",
"SPS": "6"
},
"PF0006@6": {
"A": "0",
"B": "PF0006",
"C": "20092710081010151939",
"ARTINR": "",
"BESCHR": "",
"MENGE": "1",
"POSITION": "0",
"GRUPPE": "9",
"ETIKETTE": "0",
"AUFLOESE": "N",
"pos": [
-2662.9,
12741.7
],
"IO": "PF0006",
"ID": "9999",
"VERW": "IL-RD-LED",
"BEZEICHNUNG": "LM Störung Branschutztüre",
"KENNZEICHNUNG": "=A01+UH06-KF1DQ1",
"TEXT-D": "LM Störung Brandschutztüren",
"TEXT-E": "IL Trouble fire door",
"TEXT-ES": "",
"TEXT-F": "",
"SPS": "6"
},
"SF0400@6": {
"A": "0",
"B": "SF0400",
"C": "20092710081010151939",
"ARTINR": "",
"BESCHR": "",
"MENGE": "1",
"POSITION": "0",
"GRUPPE": "9",
"ETIKETTE": "0",
"AUFLOESE": "N",
"pos": [
-3405.4,
12471.7
],
"IO": "SF0400",
"ID": "9999",
"VERW": "PDT-NC-1",
"BEZEICHNUNG": "Not Halt Kanal 1 UH06",
"KENNZEICHNUNG": "=A01+UH06-KF1FDI9",
"TEXT-D": "Not-Halt Kanal 1",
"TEXT-E": "E-Stop Canal 1",
"TEXT-ES": "",
"TEXT-F": "",
"SPS": "6"
},
"SF0404@6": {
"A": "0",
"B": "SF0404",
"C": "20092710081010151939",
"ARTINR": "",
"BESCHR": "",
"MENGE": "1",
"POSITION": "0",
"GRUPPE": "9",
"ETIKETTE": "0",
"AUFLOESE": "N",
"pos": [
-3405.4,
12201.7
],
"IO": "SF0404",
"ID": "9999",
"VERW": "PDT-NC-1",
"BEZEICHNUNG": "Not Halt Kanal 1 UH06",
"KENNZEICHNUNG": "=A01+UH06-KF1FDI9",
"TEXT-D": "Not-Halt Kanal 1",
"TEXT-E": "E-stop Canal 1",
"TEXT-ES": "",
"TEXT-F": "",
"SPS": "6"
}
},
"schaltschrank_elemente": {
"FC0062": {
"A": "0",
"B": "FC0062",
"C": "20073710081010151939",
"ARTINR": "703001017",
"BESCHR": "Hilfschalter für 3RV2011 ",
"MENGE": "1",
"POSITION": "0",
"GRUPPE": "9",
"ETIKETTE": "0",
"AUFLOESE": "N",
"pos": [
5272.5,
8378.8
]
},
"FC0062@1": {
"IO": "FC0062",
"ID": "",
"VERW": "MS FC0062",
"BEZEICHNUNG": "Meldekontakt Motorschutzschalter FC0062",
"KENNZEICHNUNG": "=A01+UH01-KF1DI2",
"TEXT-E": "Motor protection switch signaling contact FC0062",
"TEXT-ES": "",
"TEXT-F": "",
"SPS": "1",
"REALE_POSITION": "x",
"pos": [
4973.9,
8072.5
]
},
"DI0005@6": {
"IO": "DI0005",
"ID": "9999",
"VERW": "RELAY-NO",
"BEZEICHNUNG": "Phasenausfall 400V",
"KENNZEICHNUNG": "=A01+UH06-KF1DI1",
"TEXT-D": "Phasenausfall 400V",
"TEXT-E": "Phase failure relay 400V",
"TEXT-ES": "",
"TEXT-F": "",
"SPS": "6",
"pos": [
-3405.4,
11346.6
]
},
"DI0005": {
"A": "0",
"B": "DI0005",
"C": "20092710081010151939",
"ARTINR": "",
"BESCHR": "",
"MENGE": "1",
"POSITION": "0",
"GRUPPE": "9",
"ETIKETTE": "0",
"AUFLOESE": "N",
"pos": [
-3423.4,
11493.1
]
}
},
"mappings": {
"UC0101": [
"BG3241@1",
"BG3240@1",
"BG3270@1",
"BG3270@2",
"BG3260@1"
],
"UH01": [
"MA0062@1"
],
"UH06": [
"PF0000@6",
"SF0003@6",
"PF0003@6",
"PF0004@6",
"PF0005@6",
"PF0006@6",
"SF0400@6",
"SF0404@6"
]
},
"distributors": {
"UC0101": [
0.0,
4162.8
],
"UH01": [
7000.0,
16300.0
]
},
"tunnels": {
"TUNNEL1": [
[
9800.0,
9000.0
],
[
21282.5,
9295.2
]
],
"length": {
"TUNNEL1": "3500"
}
},
"racks": {
"Rack_1": [
[
5000.0,
10000.0,
0
],
[
5000.0,
3500.0,
0
]
],
"Rack_2": [
[
0.0,
0.0,
0
],
[
0.0,
3500.0,
0
],
[
15000.0,
3500.0,
0
]
],
"Rack_3": [
[
1000.0,
15000.0,
0
],
[
12000.0,
15000.0,
0
]
],
"Rack_4": [
[
18561.2,
14141.3,
0
],
[
23052.9,
14141.3,
0
]
],
"Rack_5": [
[
2800.0,
10000.0,
0
],
[
2800.0,
3500.0,
0
]
],
"Rack_6": [
[
9000.0,
10000.0,
0
],
[
9000.0,
3500.0,
0
]
],
"Rack_7": [
[
20282.5,
15960.6,
0
],
[
20282.5,
4064.6,
0
]
],
"Rack_8": [
[
2800.0,
10000.0,
0.0
],
[
2800.0,
15000.0,
0.0
]
],
"Rack_9": [
[
5000.0,
10000.0,
0.0
],
[
5000.0,
15000.0,
0.0
]
],
"Rack_10": [
[
9000.0,
10000.0,
0.0
],
[
9000.0,
15000.0,
0.0
]
]
},
"not_found": {
"missing_distributors": [
"UH06"
],
"missing_sensors": [],
"missing_tunnel": [],
"missing_attributes": {
"BX0101": "Nur ein Block und/oder fehlende Attribute: dict_keys(['A', 'B', 'C', 'ARTINR', 'BESCHR', 'MENGE', 'POSITION', 'GRUPPE', 'ETIKETTE', 'AUFLOESE', 'pos'])"
}
},
"double_ids": {}
}
+619
View File
@@ -0,0 +1,619 @@
{
"sensors": {
"BG3241@1": {
"A": "0",
"B": "BG3241",
"C": "20073710081010151939",
"ARTINR": "200000248",
"BESCHR": "STAUABFRAGE[LT] KPL.",
"MENGE": "1",
"POSITION": "0",
"GRUPPE": "9",
"ETIKETTE": "0",
"AUFLOESE": "N",
"pos": [
38.8,
1280.2
],
"IO": "BG3241",
"ID": "",
"VERW": "Jam detector",
"BEZEICHNUNG": "Stausensor 1 (ILS-CV M0108)",
"KENNZEICHNUNG": "=A01+UC0101-KF1DI1",
"TEXT-E": "",
"TEXT-ES": "",
"TEXT-F": "",
"SPS": "1",
"REALE_POSITION": "x"
},
"MA0062@1": {
"A": "0",
"B": "MA0062",
"C": "20073710081010151939",
"ARTINR": "790902001",
"BESCHR": "E-Teile für SEW Motor ASE1/HAN10ES - BG",
"MENGE": "1",
"POSITION": "0",
"GRUPPE": "9",
"ETIKETTE": "0",
"AUFLOESE": "N",
"pos": [
4967.0,
8072.5
],
"IO": "MA0062",
"ID": "",
"VERW": "CV-M0062_0,75",
"BEZEICHNUNG": "Motor MA0062",
"KENNZEICHNUNG": "=A01+UH01-KF1DQ04",
"TEXT-E": "Motor MA0062",
"TEXT-ES": "",
"TEXT-F": "",
"SPS": "1",
"REALE_POSITION": "x"
},
"BG3240@1": {
"A": "0",
"B": "BG3240",
"C": "20073710081010151939",
"ARTINR": "200000248",
"BESCHR": "STAUABFRAGE[LT] KPL.",
"MENGE": "1",
"POSITION": "0",
"GRUPPE": "9",
"ETIKETTE": "0",
"AUFLOESE": "N",
"pos": [
4961.9,
5609.0
],
"IO": "BG3240",
"ID": "",
"VERW": "Jam detector",
"BEZEICHNUNG": "Stausensor 1 (ILS-CV M0108)",
"KENNZEICHNUNG": "=A01+UC0101-KF1DI1",
"TEXT-E": "conveyor full",
"TEXT-ES": "",
"TEXT-F": "",
"SPS": "1",
"REALE_POSITION": "x"
},
"BG3270@1": {
"A": "0",
"B": "BG3270",
"C": "20073710081010151939",
"ARTINR": "200000248",
"BESCHR": "STAUABFRAGE[LT] KPL.",
"MENGE": "1",
"POSITION": "0",
"GRUPPE": "9",
"ETIKETTE": "0",
"AUFLOESE": "N",
"pos": [
5893.0,
12968.1
],
"IO": "BG3270",
"ID": "",
"VERW": "Jam detector",
"BEZEICHNUNG": "Stausensor 1 (ILS-CV M0108)",
"KENNZEICHNUNG": "=A01+UC0101-KF1DI1",
"TEXT-E": "conveyor full",
"TEXT-ES": "",
"TEXT-F": "",
"SPS": "1",
"REALE_POSITION": ""
},
"BG3270@2": {
"A": "0",
"B": "BG3270",
"C": "20073710081010151939",
"ARTINR": "200000248",
"BESCHR": "STAUABFRAGE[LT] KPL.",
"MENGE": "1",
"POSITION": "0",
"GRUPPE": "9",
"ETIKETTE": "0",
"AUFLOESE": "N",
"pos": [
5926.6,
12188.4
],
"IO": "BG3270",
"ID": "",
"VERW": "Jam detector",
"BEZEICHNUNG": "Stausensor 1 (ILS-CV M0108)",
"KENNZEICHNUNG": "=A01+UC0101-KF1DI1",
"TEXT-E": "conveyor full",
"TEXT-ES": "",
"TEXT-F": "",
"SPS": "2",
"REALE_POSITION": ""
},
"BG3260@1": {
"A": "0",
"B": "BG3260",
"C": "20073710081010151939",
"ARTINR": "200000248",
"BESCHR": "STAUABFRAGE[LT] KPL.",
"MENGE": "1",
"POSITION": "0",
"GRUPPE": "9",
"ETIKETTE": "0",
"AUFLOESE": "N",
"pos": [
22355.3,
13524.1
],
"IO": "BG3260",
"ID": "",
"VERW": "Jam detector",
"BEZEICHNUNG": "Stausensor 1 (ILS-CV M0108)",
"KENNZEICHNUNG": "=A01+UC0101-KF1DI1",
"TEXT-E": "conveyor full",
"TEXT-ES": "",
"TEXT-F": "",
"SPS": "1",
"REALE_POSITION": "x"
},
"PF0000@6": {
"A": "0",
"B": "PF0000",
"C": "20092710081010151939",
"ARTINR": "",
"BESCHR": "",
"MENGE": "1",
"POSITION": "0",
"GRUPPE": "9",
"ETIKETTE": "0",
"AUFLOESE": "N",
"pos": [
-2662.9,
13821.7
],
"IO": "PF0000",
"ID": "9999",
"VERW": "IL-YE-LED",
"BEZEICHNUNG": "LM Störung ",
"KENNZEICHNUNG": "=A01+UH06-KF1DQ1",
"TEXT-D": "LM Störung",
"TEXT-E": "IL Trouble",
"TEXT-ES": "",
"TEXT-F": "",
"SPS": "6"
},
"SF0003@6": {
"A": "0",
"B": "SF0003",
"C": "20092710081010151939",
"ARTINR": "",
"BESCHR": "",
"MENGE": "1",
"POSITION": "0",
"GRUPPE": "9",
"ETIKETTE": "0",
"AUFLOESE": "N",
"pos": [
-3405.4,
14091.7
],
"IO": "SF0003",
"ID": "9999",
"VERW": "PB-WH-NO",
"BEZEICHNUNG": "DT Lampentest",
"KENNZEICHNUNG": "=A01+UH06-KF1DI1",
"TEXT-D": "DT Lampentest",
"TEXT-E": "PB Lamp test",
"TEXT-ES": "",
"TEXT-F": "",
"SPS": "6"
},
"PF0003@6": {
"A": "0",
"B": "PF0003",
"C": "20092710081010151939",
"ARTINR": "",
"BESCHR": "",
"MENGE": "1",
"POSITION": "0",
"GRUPPE": "9",
"ETIKETTE": "0",
"AUFLOESE": "N",
"pos": [
-2662.9,
13551.7
],
"IO": "PF0003",
"ID": "9999",
"VERW": "IL-YE-LED",
"BEZEICHNUNG": "LM Druckluft fehlt",
"KENNZEICHNUNG": "=A01+UH06-KF1DQ1",
"TEXT-D": "LM Druckluft fehlt",
"TEXT-E": "IL Air pressure missing",
"TEXT-ES": "",
"TEXT-F": "",
"SPS": "6"
},
"PF0004@6": {
"A": "0",
"B": "PF0004",
"C": "20092710081010151939",
"ARTINR": "",
"BESCHR": "",
"MENGE": "1",
"POSITION": "0",
"GRUPPE": "9",
"ETIKETTE": "0",
"AUFLOESE": "N",
"pos": [
-2662.9,
13281.7
],
"IO": "PF0004",
"ID": "9999",
"VERW": "IL-YE-LED",
"BEZEICHNUNG": "LM Motorschutz hat ausgelöst",
"KENNZEICHNUNG": "=A01+UH06-KF1DQ1",
"TEXT-D": "LM Motorschutz hat ausgelöst",
"TEXT-E": "IL Motor protection has tripped",
"TEXT-ES": "",
"TEXT-F": "",
"SPS": "6"
},
"PF0005@6": {
"A": "0",
"B": "PF0005",
"C": "20092710081010151939",
"ARTINR": "",
"BESCHR": "",
"MENGE": "1",
"POSITION": "0",
"GRUPPE": "9",
"ETIKETTE": "0",
"AUFLOESE": "N",
"pos": [
-2662.9,
13011.7
],
"IO": "PF0005",
"ID": "9999",
"VERW": "IL-YE-LED",
"BEZEICHNUNG": "LM Sicherung hat ausgelöst",
"KENNZEICHNUNG": "=A01+UH06-KF1DQ1",
"TEXT-D": "LM Sicherung hat ausgelöst",
"TEXT-E": "IL Fuse has tripped",
"TEXT-ES": "",
"TEXT-F": "",
"SPS": "6"
},
"PF0006@6": {
"A": "0",
"B": "PF0006",
"C": "20092710081010151939",
"ARTINR": "",
"BESCHR": "",
"MENGE": "1",
"POSITION": "0",
"GRUPPE": "9",
"ETIKETTE": "0",
"AUFLOESE": "N",
"pos": [
-2662.9,
12741.7
],
"IO": "PF0006",
"ID": "9999",
"VERW": "IL-RD-LED",
"BEZEICHNUNG": "LM Störung Branschutztüre",
"KENNZEICHNUNG": "=A01+UH06-KF1DQ1",
"TEXT-D": "LM Störung Brandschutztüren",
"TEXT-E": "IL Trouble fire door",
"TEXT-ES": "",
"TEXT-F": "",
"SPS": "6"
},
"SF0400@6": {
"A": "0",
"B": "SF0400",
"C": "20092710081010151939",
"ARTINR": "",
"BESCHR": "",
"MENGE": "1",
"POSITION": "0",
"GRUPPE": "9",
"ETIKETTE": "0",
"AUFLOESE": "N",
"pos": [
-3405.4,
12471.7
],
"IO": "SF0400",
"ID": "9999",
"VERW": "PDT-NC-1",
"BEZEICHNUNG": "Not Halt Kanal 1 UH06",
"KENNZEICHNUNG": "=A01+UH06-KF1FDI9",
"TEXT-D": "Not-Halt Kanal 1",
"TEXT-E": "E-Stop Canal 1",
"TEXT-ES": "",
"TEXT-F": "",
"SPS": "6"
},
"SF0404@6": {
"A": "0",
"B": "SF0404",
"C": "20092710081010151939",
"ARTINR": "",
"BESCHR": "",
"MENGE": "1",
"POSITION": "0",
"GRUPPE": "9",
"ETIKETTE": "0",
"AUFLOESE": "N",
"pos": [
-3405.4,
12201.7
],
"IO": "SF0404",
"ID": "9999",
"VERW": "PDT-NC-1",
"BEZEICHNUNG": "Not Halt Kanal 1 UH06",
"KENNZEICHNUNG": "=A01+UH06-KF1FDI9",
"TEXT-D": "Not-Halt Kanal 1",
"TEXT-E": "E-stop Canal 1",
"TEXT-ES": "",
"TEXT-F": "",
"SPS": "6"
}
},
"schaltschrank_elemente": {
"FC0062": {
"A": "0",
"B": "FC0062",
"C": "20073710081010151939",
"ARTINR": "703001017",
"BESCHR": "Hilfschalter für 3RV2011 ",
"MENGE": "1",
"POSITION": "0",
"GRUPPE": "9",
"ETIKETTE": "0",
"AUFLOESE": "N",
"pos": [
5272.5,
8378.8
]
},
"FC0062@1": {
"IO": "FC0062",
"ID": "",
"VERW": "MS FC0062",
"BEZEICHNUNG": "Meldekontakt Motorschutzschalter FC0062",
"KENNZEICHNUNG": "=A01+UH01-KF1DI2",
"TEXT-E": "Motor protection switch signaling contact FC0062",
"TEXT-ES": "",
"TEXT-F": "",
"SPS": "1",
"REALE_POSITION": "x",
"pos": [
4973.9,
8072.5
]
},
"DI0005@6": {
"IO": "DI0005",
"ID": "9999",
"VERW": "RELAY-NO",
"BEZEICHNUNG": "Phasenausfall 400V",
"KENNZEICHNUNG": "=A01+UH06-KF1DI1",
"TEXT-D": "Phasenausfall 400V",
"TEXT-E": "Phase failure relay 400V",
"TEXT-ES": "",
"TEXT-F": "",
"SPS": "6",
"pos": [
-3405.4,
11346.6
]
},
"DI0005": {
"A": "0",
"B": "DI0005",
"C": "20092710081010151939",
"ARTINR": "",
"BESCHR": "",
"MENGE": "1",
"POSITION": "0",
"GRUPPE": "9",
"ETIKETTE": "0",
"AUFLOESE": "N",
"pos": [
-3423.4,
11493.1
]
}
},
"mappings": {
"UC0101": [
"BG3241@1",
"BG3240@1",
"BG3270@1",
"BG3270@2",
"BG3260@1"
],
"UH01": [
"MA0062@1"
],
"UH06": [
"PF0000@6",
"SF0003@6",
"PF0003@6",
"PF0004@6",
"PF0005@6",
"PF0006@6",
"SF0400@6",
"SF0404@6"
]
},
"distributors": {
"UC0101": [
0.0,
4162.8
],
"UH01": [
7000.0,
16300.0
]
},
"tunnels": {
"TUNNEL1": [
[
9800.0,
9000.0
],
[
21282.5,
9295.2
]
],
"length": {
"TUNNEL1": "3500"
}
},
"racks": {
"Rack_1": [
[
5000.0,
10000.0,
0
],
[
5000.0,
3500.0,
0
]
],
"Rack_2": [
[
0.0,
0.0,
0
],
[
0.0,
3500.0,
0
],
[
15000.0,
3500.0,
0
]
],
"Rack_3": [
[
1000.0,
15000.0,
0
],
[
12000.0,
15000.0,
0
]
],
"Rack_4": [
[
18561.2,
14141.3,
0
],
[
23052.9,
14141.3,
0
]
],
"Rack_5": [
[
2800.0,
10000.0,
0
],
[
2800.0,
3500.0,
0
]
],
"Rack_6": [
[
9000.0,
10000.0,
0
],
[
9000.0,
3500.0,
0
]
],
"Rack_7": [
[
20282.5,
15960.6,
0
],
[
20282.5,
4064.6,
0
]
],
"Rack_8": [
[
2800.0,
10000.0,
0.0
],
[
2800.0,
15000.0,
0.0
]
],
"Rack_9": [
[
5000.0,
10000.0,
0.0
],
[
5000.0,
15000.0,
0.0
]
],
"Rack_10": [
[
9000.0,
10000.0,
0.0
],
[
9000.0,
15000.0,
0.0
]
]
},
"not_found": {
"missing_distributors": [
"UH06"
],
"missing_sensors": [],
"missing_tunnel": [],
"missing_attributes": {
"BX0101": "Nur ein Block und/oder fehlende Attribute: dict_keys(['A', 'B', 'C', 'ARTINR', 'BESCHR', 'MENGE', 'POSITION', 'GRUPPE', 'ETIKETTE', 'AUFLOESE', 'pos'])"
}
},
"double_ids": {}
}
+750
View File
@@ -0,0 +1,750 @@
{
"kabel": [
{
"id": "UC0101-BG3241@1",
"s_artinr": "200000248",
"coords": [
{
"x": 0.0,
"y": 4162.8
},
{
"x": 0.0,
"y": 3500.0
},
{
"x": 0.0,
"y": 1280.2
},
{
"x": 38.8,
"y": 1280.2
}
],
"length": 2921.4,
"tunnel_indices": []
},
{
"id": "UC0101-BG3240@1",
"s_artinr": "200000248",
"coords": [
{
"x": 0.0,
"y": 4162.8
},
{
"x": 0.0,
"y": 3500.0
},
{
"x": 2800.0,
"y": 3500.0
},
{
"x": 5000.0,
"y": 3500.0
},
{
"x": 5000.0,
"y": 5609.0
},
{
"x": 4961.9,
"y": 5609.0
}
],
"length": 7809.9,
"tunnel_indices": []
},
{
"id": "UC0101-BG3270@1",
"s_artinr": "200000248",
"coords": [
{
"x": 0.0,
"y": 4162.8
},
{
"x": 0.0,
"y": 3500.0
},
{
"x": 2800.0,
"y": 3500.0
},
{
"x": 5000.0,
"y": 3500.0
},
{
"x": 5000.0,
"y": 5609.0
},
{
"x": 5000.0,
"y": 8072.5
},
{
"x": 5000.0,
"y": 10000.0
},
{
"x": 5000.0,
"y": 12188.4
},
{
"x": 5000.0,
"y": 12968.1
},
{
"x": 5893.0,
"y": 12968.1
}
],
"length": 16023.9,
"tunnel_indices": []
},
{
"id": "UC0101-BG3270@2",
"s_artinr": "200000248",
"coords": [
{
"x": 0.0,
"y": 4162.8
},
{
"x": 0.0,
"y": 3500.0
},
{
"x": 2800.0,
"y": 3500.0
},
{
"x": 5000.0,
"y": 3500.0
},
{
"x": 5000.0,
"y": 5609.0
},
{
"x": 5000.0,
"y": 8072.5
},
{
"x": 5000.0,
"y": 10000.0
},
{
"x": 5000.0,
"y": 12188.4
},
{
"x": 5926.6,
"y": 12188.4
}
],
"length": 15277.8,
"tunnel_indices": []
},
{
"id": "UC0101-BG3260@1",
"s_artinr": "200000248",
"coords": [
{
"x": 0.0,
"y": 4162.8
},
{
"x": 0.0,
"y": 3500.0
},
{
"x": 2800.0,
"y": 3500.0
},
{
"x": 5000.0,
"y": 3500.0
},
{
"x": 9000.0,
"y": 3500.0
},
{
"x": 9000.0,
"y": 9000.0
},
{
"x": 9800.0,
"y": 9000.0
},
{
"x": 21282.5,
"y": 9295.2
},
{
"x": 20282.5,
"y": 9295.2
},
{
"x": 20282.5,
"y": 14141.3
},
{
"x": 22355.3,
"y": 14141.3
},
{
"x": 22355.3,
"y": 13524.1
}
],
"length": 27998.9,
"tunnel_indices": [
6,
7
]
},
{
"id": "UH01-MA0062@1",
"s_artinr": "790902001",
"coords": [
{
"x": 7000.0,
"y": 16300.0
},
{
"x": 7000.0,
"y": 15000.0
},
{
"x": 5000.0,
"y": 15000.0
},
{
"x": 5000.0,
"y": 12968.1
},
{
"x": 5000.0,
"y": 12188.4
},
{
"x": 5000.0,
"y": 10000.0
},
{
"x": 5000.0,
"y": 8072.5
},
{
"x": 4967.0,
"y": 8072.5
}
],
"length": 10260.5,
"tunnel_indices": []
}
],
"rack_geometry": {
"Rack_1": {
"length": 6.5,
"coordinates": [
{
"x": 5000.0,
"y": 3500.0,
"z": 0.0
},
{
"x": 5000.0,
"y": 5609.0,
"z": 0.0
},
{
"x": 5000.0,
"y": 8072.5,
"z": 0.0
},
{
"x": 5000.0,
"y": 10000.0,
"z": 0.0
}
]
},
"Rack_2-1": {
"length": 3.5,
"coordinates": [
{
"x": 0.0,
"y": 0.0,
"z": 0.0
},
{
"x": 0.0,
"y": 1280.2,
"z": 0.0
},
{
"x": 0.0,
"y": 3500.0,
"z": 0.0
}
]
},
"Rack_2-2": {
"length": 15.0,
"coordinates": [
{
"x": 0.0,
"y": 3500.0,
"z": 0.0
},
{
"x": 2800.0,
"y": 3500.0,
"z": 0.0
},
{
"x": 5000.0,
"y": 3500.0,
"z": 0.0
},
{
"x": 9000.0,
"y": 3500.0,
"z": 0.0
},
{
"x": 15000.0,
"y": 3500.0,
"z": 0.0
}
]
},
"Rack_3": {
"length": 11.0,
"coordinates": [
{
"x": 1000.0,
"y": 15000.0,
"z": 0.0
},
{
"x": 2800.0,
"y": 15000.0,
"z": 0.0
},
{
"x": 5000.0,
"y": 15000.0,
"z": 0.0
},
{
"x": 7000.0,
"y": 15000.0,
"z": 0.0
},
{
"x": 9000.0,
"y": 15000.0,
"z": 0.0
},
{
"x": 12000.0,
"y": 15000.0,
"z": 0.0
}
]
},
"Rack_4": {
"length": 4.5,
"coordinates": [
{
"x": 18561.2,
"y": 14141.3,
"z": 0.0
},
{
"x": 20282.5,
"y": 14141.3,
"z": 0.0
},
{
"x": 22355.3,
"y": 14141.3,
"z": 0.0
},
{
"x": 23052.9,
"y": 14141.3,
"z": 0.0
}
]
},
"Rack_5": {
"length": 6.5,
"coordinates": [
{
"x": 2800.0,
"y": 3500.0,
"z": 0.0
},
{
"x": 2800.0,
"y": 10000.0,
"z": 0.0
}
]
},
"Rack_6": {
"length": 6.5,
"coordinates": [
{
"x": 9000.0,
"y": 3500.0,
"z": 0.0
},
{
"x": 9000.0,
"y": 9000.0,
"z": 0.0
},
{
"x": 9000.0,
"y": 10000.0,
"z": 0.0
}
]
},
"Rack_7": {
"length": 11.8,
"coordinates": [
{
"x": 20282.5,
"y": 4064.6,
"z": 0.0
},
{
"x": 20282.5,
"y": 9295.2,
"z": 0.0
},
{
"x": 20282.5,
"y": 14141.3,
"z": 0.0
},
{
"x": 20282.5,
"y": 15960.6,
"z": 0.0
}
]
},
"Rack_8": {
"length": 5.0,
"coordinates": [
{
"x": 2800.0,
"y": 10000.0,
"z": 0.0
},
{
"x": 2800.0,
"y": 15000.0,
"z": 0.0
}
]
},
"Rack_9": {
"length": 5.0,
"coordinates": [
{
"x": 5000.0,
"y": 10000.0,
"z": 0.0
},
{
"x": 5000.0,
"y": 12188.4,
"z": 0.0
},
{
"x": 5000.0,
"y": 12968.1,
"z": 0.0
},
{
"x": 5000.0,
"y": 15000.0,
"z": 0.0
}
]
},
"Rack_10": {
"length": 5.0,
"coordinates": [
{
"x": 9000.0,
"y": 10000.0,
"z": 0.0
},
{
"x": 9000.0,
"y": 15000.0,
"z": 0.0
}
]
},
"v-BG3241@1-Rack_2-1": {
"length": 0.0,
"coordinates": [
{
"x": 0.0,
"y": 1280.2,
"z": 0.0
},
{
"x": 38.8,
"y": 1280.2,
"z": 0.0
}
]
},
"v-MA0062@1-Rack_1": {
"length": 0.0,
"coordinates": [
{
"x": 4967.0,
"y": 8072.5,
"z": 0.0
},
{
"x": 5000.0,
"y": 8072.5,
"z": 0.0
}
]
},
"v-BG3240@1-Rack_1": {
"length": 0.0,
"coordinates": [
{
"x": 4961.9,
"y": 5609.0,
"z": 0.0
},
{
"x": 5000.0,
"y": 5609.0,
"z": 0.0
}
]
},
"v-BG3270@1-Rack_9": {
"length": 0.9,
"coordinates": [
{
"x": 5000.0,
"y": 12968.1,
"z": 0.0
},
{
"x": 5893.0,
"y": 12968.1,
"z": 0.0
}
]
},
"v-BG3270@2-Rack_9": {
"length": 0.9,
"coordinates": [
{
"x": 5000.0,
"y": 12188.4,
"z": 0.0
},
{
"x": 5926.6,
"y": 12188.4,
"z": 0.0
}
]
},
"v-BG3260@1-Rack_4": {
"length": 0.6,
"coordinates": [
{
"x": 22355.3,
"y": 13524.1,
"z": 0.0
},
{
"x": 22355.3,
"y": 14141.3,
"z": 0.0
}
]
},
"v-UC0101-Rack_2-1": {
"length": 0.7,
"coordinates": [
{
"x": 0.0,
"y": 3500.0,
"z": 0.0
},
{
"x": 0.0,
"y": 4162.8,
"z": 0.0
}
]
},
"v-UH01-Rack_3": {
"length": 1.3,
"coordinates": [
{
"x": 7000.0,
"y": 15000.0,
"z": 0.0
},
{
"x": 7000.0,
"y": 16300.0,
"z": 0.0
}
]
},
"t-Rack-TUNNEL1": {
"length": 3.5,
"coordinates": [
{
"x": 9800.0,
"y": 9000.0,
"z": 0.0
},
{
"x": 21282.5,
"y": 9295.2,
"z": 0.0
}
]
},
"v-TUNNEL1-A-Rack_6": {
"length": 0.8,
"coordinates": [
{
"x": 9000.0,
"y": 9000.0,
"z": 0.0
},
{
"x": 9800.0,
"y": 9000.0,
"z": 0.0
}
]
},
"v-TUNNEL1-E-Rack_7": {
"length": 1.0,
"coordinates": [
{
"x": 20282.5,
"y": 9295.2,
"z": 0.0
},
{
"x": 21282.5,
"y": 9295.2,
"z": 0.0
}
]
}
},
"errors_routing": [
{
"unterverteiler": "UH06",
"sensoren": [
"PF0000@6",
"SF0003@6",
"PF0003@6",
"PF0004@6",
"PF0005@6",
"PF0006@6",
"SF0400@6",
"SF0404@6"
]
}
],
"errors_sensors": [
{
"name": "PF0000@6",
"coords": {
"x": -2662.9,
"y": 13821.7
}
},
{
"name": "SF0003@6",
"coords": {
"x": -3405.4,
"y": 14091.7
}
},
{
"name": "PF0003@6",
"coords": {
"x": -2662.9,
"y": 13551.7
}
},
{
"name": "PF0004@6",
"coords": {
"x": -2662.9,
"y": 13281.7
}
},
{
"name": "PF0005@6",
"coords": {
"x": -2662.9,
"y": 13011.7
}
},
{
"name": "PF0006@6",
"coords": {
"x": -2662.9,
"y": 12741.7
}
},
{
"name": "SF0400@6",
"coords": {
"x": -3405.4,
"y": 12471.7
}
},
{
"name": "SF0404@6",
"coords": {
"x": -3405.4,
"y": 12201.7
}
}
],
"errors_dists": [],
"errors_tunnels": [],
"errors_dists_not_in_layout": [
"UH06"
],
"errors_sensors_not_in_layout": [],
"errors_missing_attributes": {
"BX0101": "Nur ein Block und/oder fehlende Attribute: dict_keys(['A', 'B', 'C', 'ARTINR', 'BESCHR', 'MENGE', 'POSITION', 'GRUPPE', 'ETIKETTE', 'AUFLOESE', 'pos'])"
}
}
+603
View File
@@ -0,0 +1,603 @@
{
"kabel": [
{
"id": "UC0101-BG3241@1",
"s_artinr": "200000248",
"coords": [
{
"x": 0.0,
"y": 4162.8
},
{
"x": 0.0,
"y": 3500.0
},
{
"x": 0.0,
"y": 1280.2
},
{
"x": 38.8,
"y": 1280.2
}
],
"length": 2921.4,
"tunnel_indices": []
},
{
"id": "UC0101-BG3240@1",
"s_artinr": "200000248",
"coords": [
{
"x": 0.0,
"y": 4162.8
},
{
"x": 0.0,
"y": 3500.0
},
{
"x": 2800.0,
"y": 3500.0
},
{
"x": 5000.0,
"y": 3500.0
},
{
"x": 5000.0,
"y": 5609.0
},
{
"x": 4961.9,
"y": 5609.0
}
],
"length": 7809.9,
"tunnel_indices": []
},
{
"id": "UC0101-BG3270@1",
"s_artinr": "200000248",
"coords": [
{
"x": 0.0,
"y": 4162.8
},
{
"x": 0.0,
"y": 3500.0
},
{
"x": 2800.0,
"y": 3500.0
},
{
"x": 5000.0,
"y": 3500.0
},
{
"x": 5000.0,
"y": 5609.0
},
{
"x": 5000.0,
"y": 8072.5
},
{
"x": 5000.0,
"y": 10000.0
},
{
"x": 5000.0,
"y": 12968.1
},
{
"x": 5893.0,
"y": 12968.1
}
],
"length": 16023.9,
"tunnel_indices": []
},
{
"id": "UC0101-BG3260@1",
"s_artinr": "200000248",
"coords": [
{
"x": 0.0,
"y": 4162.8
},
{
"x": 0.0,
"y": 3500.0
},
{
"x": 2800.0,
"y": 3500.0
},
{
"x": 5000.0,
"y": 3500.0
},
{
"x": 9000.0,
"y": 3500.0
},
{
"x": 9000.0,
"y": 9000.0
},
{
"x": 9800.0,
"y": 9000.0
},
{
"x": 21282.5,
"y": 9295.2
},
{
"x": 20282.5,
"y": 9295.2
},
{
"x": 20282.5,
"y": 14141.3
},
{
"x": 22355.3,
"y": 14141.3
},
{
"x": 22355.3,
"y": 13524.1
}
],
"length": 27998.9,
"tunnel_indices": [
6,
7
]
},
{
"id": "UH01-MA0062@1",
"s_artinr": "790902001",
"coords": [
{
"x": 7000.0,
"y": 16300.0
},
{
"x": 7000.0,
"y": 15000.0
},
{
"x": 5000.0,
"y": 15000.0
},
{
"x": 5000.0,
"y": 12968.1
},
{
"x": 5000.0,
"y": 10000.0
},
{
"x": 5000.0,
"y": 8072.5
},
{
"x": 4967.0,
"y": 8072.5
}
],
"length": 10260.5,
"tunnel_indices": []
}
],
"rack_geometry": {
"Rack_1": {
"length": 6.5,
"coordinates": [
{
"x": 5000.0,
"y": 3500.0,
"z": 0.0
},
{
"x": 5000.0,
"y": 5609.0,
"z": 0.0
},
{
"x": 5000.0,
"y": 8072.5,
"z": 0.0
},
{
"x": 5000.0,
"y": 10000.0,
"z": 0.0
}
]
},
"Rack_2-1": {
"length": 3.5,
"coordinates": [
{
"x": 0.0,
"y": 0.0,
"z": 0.0
},
{
"x": 0.0,
"y": 1280.2,
"z": 0.0
},
{
"x": 0.0,
"y": 3500.0,
"z": 0.0
}
]
},
"Rack_2-2": {
"length": 15.0,
"coordinates": [
{
"x": 0.0,
"y": 3500.0,
"z": 0.0
},
{
"x": 2800.0,
"y": 3500.0,
"z": 0.0
},
{
"x": 5000.0,
"y": 3500.0,
"z": 0.0
},
{
"x": 9000.0,
"y": 3500.0,
"z": 0.0
},
{
"x": 15000.0,
"y": 3500.0,
"z": 0.0
}
]
},
"Rack_3": {
"length": 11.0,
"coordinates": [
{
"x": 1000.0,
"y": 15000.0,
"z": 0.0
},
{
"x": 2800.0,
"y": 15000.0,
"z": 0.0
},
{
"x": 5000.0,
"y": 15000.0,
"z": 0.0
},
{
"x": 7000.0,
"y": 15000.0,
"z": 0.0
},
{
"x": 9000.0,
"y": 15000.0,
"z": 0.0
},
{
"x": 12000.0,
"y": 15000.0,
"z": 0.0
}
]
},
"Rack_4": {
"length": 4.5,
"coordinates": [
{
"x": 18561.2,
"y": 14141.3,
"z": 0.0
},
{
"x": 20282.5,
"y": 14141.3,
"z": 0.0
},
{
"x": 22355.3,
"y": 14141.3,
"z": 0.0
},
{
"x": 23052.9,
"y": 14141.3,
"z": 0.0
}
]
},
"Rack_5": {
"length": 6.5,
"coordinates": [
{
"x": 2800.0,
"y": 3500.0,
"z": 0.0
},
{
"x": 2800.0,
"y": 10000.0,
"z": 0.0
}
]
},
"Rack_6": {
"length": 6.5,
"coordinates": [
{
"x": 9000.0,
"y": 3500.0,
"z": 0.0
},
{
"x": 9000.0,
"y": 9000.0,
"z": 0.0
},
{
"x": 9000.0,
"y": 10000.0,
"z": 0.0
}
]
},
"Rack_7": {
"length": 11.8,
"coordinates": [
{
"x": 20282.5,
"y": 4064.6,
"z": 0.0
},
{
"x": 20282.5,
"y": 9295.2,
"z": 0.0
},
{
"x": 20282.5,
"y": 14141.3,
"z": 0.0
},
{
"x": 20282.5,
"y": 15960.6,
"z": 0.0
}
]
},
"Rack_8": {
"length": 5.0,
"coordinates": [
{
"x": 2800.0,
"y": 10000.0,
"z": 0.0
},
{
"x": 2800.0,
"y": 15000.0,
"z": 0.0
}
]
},
"Rack_9": {
"length": 5.0,
"coordinates": [
{
"x": 5000.0,
"y": 10000.0,
"z": 0.0
},
{
"x": 5000.0,
"y": 12968.1,
"z": 0.0
},
{
"x": 5000.0,
"y": 15000.0,
"z": 0.0
}
]
},
"Rack_10": {
"length": 5.0,
"coordinates": [
{
"x": 9000.0,
"y": 10000.0,
"z": 0.0
},
{
"x": 9000.0,
"y": 15000.0,
"z": 0.0
}
]
},
"v-BG3241@1-Rack_2-1": {
"length": 0.0,
"coordinates": [
{
"x": 0.0,
"y": 1280.2,
"z": 0.0
},
{
"x": 38.8,
"y": 1280.2,
"z": 0.0
}
]
},
"v-MA0062@1-Rack_1": {
"length": 0.0,
"coordinates": [
{
"x": 4967.0,
"y": 8072.5,
"z": 0.0
},
{
"x": 5000.0,
"y": 8072.5,
"z": 0.0
}
]
},
"v-BG3240@1-Rack_1": {
"length": 0.0,
"coordinates": [
{
"x": 4961.9,
"y": 5609.0,
"z": 0.0
},
{
"x": 5000.0,
"y": 5609.0,
"z": 0.0
}
]
},
"v-BG3270@1-Rack_9": {
"length": 0.9,
"coordinates": [
{
"x": 5000.0,
"y": 12968.1,
"z": 0.0
},
{
"x": 5893.0,
"y": 12968.1,
"z": 0.0
}
]
},
"v-BG3260@1-Rack_4": {
"length": 0.6,
"coordinates": [
{
"x": 22355.3,
"y": 13524.1,
"z": 0.0
},
{
"x": 22355.3,
"y": 14141.3,
"z": 0.0
}
]
},
"v-UC0101-Rack_2-1": {
"length": 0.7,
"coordinates": [
{
"x": 0.0,
"y": 3500.0,
"z": 0.0
},
{
"x": 0.0,
"y": 4162.8,
"z": 0.0
}
]
},
"v-UH01-Rack_3": {
"length": 1.3,
"coordinates": [
{
"x": 7000.0,
"y": 15000.0,
"z": 0.0
},
{
"x": 7000.0,
"y": 16300.0,
"z": 0.0
}
]
},
"t-Rack-TUNNEL1": {
"length": 3.5,
"coordinates": [
{
"x": 9800.0,
"y": 9000.0,
"z": 0.0
},
{
"x": 21282.5,
"y": 9295.2,
"z": 0.0
}
]
},
"v-TUNNEL1-A-Rack_6": {
"length": 0.8,
"coordinates": [
{
"x": 9000.0,
"y": 9000.0,
"z": 0.0
},
{
"x": 9800.0,
"y": 9000.0,
"z": 0.0
}
]
},
"v-TUNNEL1-E-Rack_7": {
"length": 1.0,
"coordinates": [
{
"x": 20282.5,
"y": 9295.2,
"z": 0.0
},
{
"x": 21282.5,
"y": 9295.2,
"z": 0.0
}
]
}
},
"errors_routing": [],
"errors_sensors": [],
"errors_dists": [],
"errors_tunnels": [],
"errors_dists_not_in_layout": [],
"errors_sensors_not_in_layout": [],
"errors_missing_attributes": {}
}
+358
View File
@@ -0,0 +1,358 @@
{
"sensors": {
"BG3241@1": {
"A": "0",
"B": "BG3241",
"C": "20073710081010151939",
"ARTINR": "200000248",
"BESCHR": "STAUABFRAGE[LT] KPL.",
"MENGE": "1",
"POSITION": "0",
"GRUPPE": "9",
"ETIKETTE": "0",
"AUFLOESE": "N",
"pos": [
38.8,
1280.2
],
"IO": "BG3241",
"ID": "",
"VERW": "Jam detector",
"BEZEICHNUNG": "Stausensor 1 (ILS-CV M0108)",
"KENNZEICHNUNG": "=A01+UC0101-KF1DI1",
"TEXT-E": "",
"TEXT-ES": "",
"TEXT-F": "",
"SPS": "1",
"REALE_POSITION": "x"
},
"MA0062@1": {
"A": "0",
"B": "MA0062",
"C": "20073710081010151939",
"ARTINR": "790902001",
"BESCHR": "E-Teile für SEW Motor ASE1/HAN10ES - BG",
"MENGE": "1",
"POSITION": "0",
"GRUPPE": "9",
"ETIKETTE": "0",
"AUFLOESE": "N",
"pos": [
4967.0,
8072.5
],
"IO": "MA0062",
"ID": "",
"VERW": "CV-M0062_0,75",
"BEZEICHNUNG": "Motor MA0062",
"KENNZEICHNUNG": "=A01+UH01-KF1DQ04",
"TEXT-E": "Motor MA0062",
"TEXT-ES": "",
"TEXT-F": "",
"SPS": "1",
"REALE_POSITION": "x"
},
"BG3240@1": {
"A": "0",
"B": "BG3240",
"C": "20073710081010151939",
"ARTINR": "200000248",
"BESCHR": "STAUABFRAGE[LT] KPL.",
"MENGE": "1",
"POSITION": "0",
"GRUPPE": "9",
"ETIKETTE": "0",
"AUFLOESE": "N",
"pos": [
4961.9,
5609.0
],
"IO": "BG3240",
"ID": "",
"VERW": "Jam detector",
"BEZEICHNUNG": "Stausensor 1 (ILS-CV M0108)",
"KENNZEICHNUNG": "=A01+UC0101-KF1DI1",
"TEXT-E": "conveyor full",
"TEXT-ES": "",
"TEXT-F": "",
"SPS": "1",
"REALE_POSITION": "x"
},
"BG3270@1": {
"A": "0",
"B": "BG3270",
"C": "20073710081010151939",
"ARTINR": "200000248",
"BESCHR": "STAUABFRAGE[LT] KPL.",
"MENGE": "1",
"POSITION": "0",
"GRUPPE": "9",
"ETIKETTE": "0",
"AUFLOESE": "N",
"pos": [
5893.0,
12968.1
],
"IO": "BG3270",
"ID": "",
"VERW": "Jam detector",
"BEZEICHNUNG": "Stausensor 1 (ILS-CV M0108)",
"KENNZEICHNUNG": "=A01+UC0101-KF1DI1",
"TEXT-E": "conveyor full",
"TEXT-ES": "",
"TEXT-F": "",
"SPS": "1",
"REALE_POSITION": ""
},
"BG3260@1": {
"A": "0",
"B": "BG3260",
"C": "20073710081010151939",
"ARTINR": "200000248",
"BESCHR": "STAUABFRAGE[LT] KPL.",
"MENGE": "1",
"POSITION": "0",
"GRUPPE": "9",
"ETIKETTE": "0",
"AUFLOESE": "N",
"pos": [
22355.3,
13524.1
],
"IO": "BG3260",
"ID": "",
"VERW": "Jam detector",
"BEZEICHNUNG": "Stausensor 1 (ILS-CV M0108)",
"KENNZEICHNUNG": "=A01+UC0101-KF1DI1",
"TEXT-E": "conveyor full",
"TEXT-ES": "",
"TEXT-F": "",
"SPS": "1",
"REALE_POSITION": "x"
}
},
"schaltschrank_elemente": {
"FC0062": {
"A": "0",
"B": "FC0062",
"C": "20073710081010151939",
"ARTINR": "703001017",
"BESCHR": "Hilfschalter für 3RV2011 ",
"MENGE": "1",
"POSITION": "0",
"GRUPPE": "9",
"ETIKETTE": "0",
"AUFLOESE": "N",
"pos": [
5272.5,
8378.8
]
},
"FC0062@1": {
"IO": "FC0062",
"ID": "",
"VERW": "MS FC0062",
"BEZEICHNUNG": "Meldekontakt Motorschutzschalter FC0062",
"KENNZEICHNUNG": "=A01+UH01-KF1DI2",
"TEXT-E": "Motor protection switch signaling contact FC0062",
"TEXT-ES": "",
"TEXT-F": "",
"SPS": "1",
"REALE_POSITION": "x",
"pos": [
4973.9,
8072.5
]
}
},
"mappings": {
"UC0101": [
"BG3241@1",
"BG3240@1",
"BG3270@1",
"BG3260@1"
],
"UH01": [
"MA0062@1"
]
},
"distributors": {
"UC0101": [
0.0,
4162.8
],
"UH01": [
7000.0,
16300.0
]
},
"tunnels": {
"TUNNEL1": [
[
9800.0,
9000.0
],
[
21282.5,
9295.2
]
],
"TUNNEL2": [
[
19214.1,
7471.9
],
[
18988.2,
6447.7
],
[
19219.3,
6024.1
]
],
"length": {
"TUNNEL1": "3500",
"TUNNEL2": "3500"
}
},
"racks": {
"Rack_1": [
[
5000.0,
10000.0,
0
],
[
5000.0,
3500.0,
0
]
],
"Rack_2": [
[
0.0,
0.0,
0
],
[
0.0,
3500.0,
0
],
[
15000.0,
3500.0,
0
]
],
"Rack_3": [
[
1000.0,
15000.0,
0
],
[
12000.0,
15000.0,
0
]
],
"Rack_4": [
[
18561.2,
14141.3,
0
],
[
23052.9,
14141.3,
0
]
],
"Rack_5": [
[
2800.0,
10000.0,
0
],
[
2800.0,
3500.0,
0
]
],
"Rack_6": [
[
9000.0,
10000.0,
0
],
[
9000.0,
3500.0,
0
]
],
"Rack_7": [
[
20282.5,
15960.6,
0
],
[
20282.5,
4064.6,
0
]
],
"Rack_8": [
[
2800.0,
10000.0,
0.0
],
[
2800.0,
15000.0,
0.0
]
],
"Rack_9": [
[
5000.0,
10000.0,
0.0
],
[
5000.0,
15000.0,
0.0
]
],
"Rack_10": [
[
9000.0,
10000.0,
0.0
],
[
9000.0,
15000.0,
0.0
]
]
},
"not_found": {
"missing_distributors": [],
"missing_sensors": [],
"missing_tunnel": [],
"overdefined_tunnel": [
"TUNNEL2"
],
"missing_attributes": {
"BX0101": "Nur ein Block und/oder fehlende Attribute: dict_keys(['A', 'B', 'C', 'ARTINR', 'BESCHR', 'MENGE', 'POSITION', 'GRUPPE', 'ETIKETTE', 'AUFLOESE', 'pos'])"
}
},
"double_ids": {}
}
+111130
View File
File diff suppressed because it is too large Load Diff
+300
View File
@@ -0,0 +1,300 @@
{
"sensors": {
"BG3240@1": {
"SPS": "1",
"IO": "BG3240",
"VERW": "Jam detector (LP)",
"BEZEICHNUNG": "",
"ARTINR": "722001335",
"ARTIBEZEICHN": "Stausensor 1 (ILS-CV M0108)",
"KENNZEICHNUNG": "=A01+UC0101-KF1DI1",
"TEXT-D": "",
"TEXT-E": "conveyor full",
"TEXT-ES": "",
"TEXT-F": "",
"TEXT-I": "",
"ID": "",
"REALE_POSITION": "x",
"pos": [
5493.9,
5608.9
]
},
"MA0062@1": {
"SPS": "1",
"IO": "MA0062",
"VERW": "TEF-M0000-0,55",
"BEZEICHNUNG": "Motor MA0062",
"ARTINR": "790902001",
"ARTIBEZEICHN": "E-Teile für SEW Motor ASE1 - HAN10ES - BG",
"KENNZEICHNUNG": "=A01+UH01-KF1DQ04",
"TEXT-D": "",
"TEXT-E": "",
"TEXT-ES": "",
"TEXT-F": "",
"TEXT-I": "",
"ID": "",
"REALE_POSITION": "x",
"pos": [
5272.9,
7970.2
]
},
"BG3241@1": {
"A": "0",
"B": "BG3241",
"C": "20073710081010151939",
"ARTINR": "200000248",
"BESCHR": "STAUABFRAGE[LT] KPL.",
"MENGE": "1",
"POSITION": "0",
"GRUPPE": "9",
"ETIKETTE": "0",
"AUFLOESE": "N",
"pos": [
38.8,
1280.2
],
"IO": "BG3241",
"ID": "",
"VERW": "Jam detector",
"BEZEICHNUNG": "Stausensor 1 (ILS-CV M0108)",
"KENNZEICHNUNG": "=A01+UC0101-KF1DI1",
"TEXT-E": "",
"TEXT-ES": "",
"TEXT-F": "",
"SPS": "1",
"REALE_POSITION": "x"
},
"BG3270@1": {
"A": "0",
"B": "BG3270",
"C": "20073710081010151939",
"ARTINR": "200000248",
"BESCHR": "STAUABFRAGE[LT] KPL.",
"MENGE": "1",
"POSITION": "0",
"GRUPPE": "9",
"ETIKETTE": "0",
"AUFLOESE": "N",
"pos": [
5893.0,
12968.1
],
"IO": "BG3270",
"ID": "",
"VERW": "Jam detector",
"BEZEICHNUNG": "Stausensor 1 (ILS-CV M0108)",
"KENNZEICHNUNG": "=A01+UC0101-KF1DI1",
"TEXT-E": "conveyor full",
"TEXT-ES": "",
"TEXT-F": "",
"SPS": "1",
"REALE_POSITION": ""
},
"BG3260@1": {
"A": "0",
"B": "BG3260",
"C": "20073710081010151939",
"ARTINR": "200000248",
"BESCHR": "STAUABFRAGE[LT] KPL.",
"MENGE": "1",
"POSITION": "0",
"GRUPPE": "9",
"ETIKETTE": "0",
"AUFLOESE": "N",
"pos": [
22355.3,
13524.1
],
"IO": "BG3260",
"ID": "",
"VERW": "Jam detector",
"BEZEICHNUNG": "Stausensor 1 (ILS-CV M0108)",
"KENNZEICHNUNG": "=A01+UC0101-KF1DI1",
"TEXT-E": "conveyor full",
"TEXT-ES": "",
"TEXT-F": "",
"SPS": "1",
"REALE_POSITION": "x"
}
},
"schaltschrank_elemente": {
"FC0062@1": {
"SPS": "1",
"IO": "FC0062",
"VERW": "MS FC0062",
"BEZEICHNUNG": "Meldekontakt Motorschutzschalter FC0062",
"ARTINR": "722001335",
"ARTIBEZEICHN": "Stausensor 1 (ILS-CV M0108)",
"KENNZEICHNUNG": "=A01+UC0101-KF1DI1",
"TEXT-D": "",
"TEXT-E": "Motor protection switch signaling contact FC0062",
"TEXT-ES": "",
"TEXT-F": "",
"TEXT-I": "",
"ID": "",
"REALE_POSITION": "x",
"pos": [
5272.9,
8240.2
]
}
},
"mappings": {
"UC0101": [
"BG3240@1",
"BG3241@1",
"BG3270@1",
"BG3260@1"
],
"UH01": [
"MA0062@1"
]
},
"distributors": {
"UC0101": [
-233.4,
4221.1
],
"UH01": [
6756.1,
16291.2
]
},
"tunnels": {},
"racks": {
"Rack_1": [
[
5000.0,
10000.0,
0
],
[
5000.0,
3500.0,
0
]
],
"Rack_2": [
[
0.0,
0.0,
0
],
[
0.0,
3500.0,
0
],
[
15000.0,
3500.0,
0
]
],
"Rack_3": [
[
1000.0,
15000.0,
0
],
[
12000.0,
15000.0,
0
]
],
"Rack_4": [
[
18561.2,
14141.3,
0
],
[
23052.9,
14141.3,
0
]
],
"Rack_5": [
[
2800.0,
10000.0,
0
],
[
2800.0,
3500.0,
0
]
],
"Rack_6": [
[
9000.0,
10000.0,
0
],
[
9000.0,
3500.0,
0
]
],
"Rack_7": [
[
20282.5,
15960.6,
0
],
[
20282.5,
4064.6,
0
]
],
"Rack_8": [
[
2800.0,
10000.0,
0.0
],
[
2800.0,
15000.0,
0.0
]
],
"Rack_9": [
[
5000.0,
10000.0,
0.0
],
[
5000.0,
15000.0,
0.0
]
],
"Rack_10": [
[
9000.0,
10000.0,
0.0
],
[
9000.0,
15000.0,
0.0
]
]
},
"not_found": {
"missing_distributors": [],
"missing_sensors": [],
"missing_tunnel": [],
"missing_attributes": {}
},
"double_ids": {}
}
+300
View File
@@ -0,0 +1,300 @@
{
"sensors": {
"BG3240@1": {
"SPS": "1",
"IO": "BG3240",
"VERW": "Jam detector (LP)",
"BEZEICHNUNG": "",
"ARTINR": "722001335",
"ARTIBEZEICHN": "Stausensor 1 (ILS-CV M0108)",
"KENNZEICHNUNG": "=A01+UC0101-KF1DI1",
"TEXT-D": "",
"TEXT-E": "conveyor full",
"TEXT-ES": "",
"TEXT-F": "",
"TEXT-I": "",
"ID": "",
"REALE_POSITION": "x",
"pos": [
5493.9,
5608.9
]
},
"MA0062@1": {
"SPS": "1",
"IO": "MA0062",
"VERW": "TEF-M0000-0,55",
"BEZEICHNUNG": "Motor MA0062",
"ARTINR": "790902001",
"ARTIBEZEICHN": "E-Teile für SEW Motor ASE1 - HAN10ES - BG",
"KENNZEICHNUNG": "=A01+UH01-KF1DQ04",
"TEXT-D": "",
"TEXT-E": "",
"TEXT-ES": "",
"TEXT-F": "",
"TEXT-I": "",
"ID": "",
"REALE_POSITION": "x",
"pos": [
5272.9,
7970.2
]
},
"BG3241@1": {
"A": "0",
"B": "BG3241",
"C": "20073710081010151939",
"ARTINR": "200000248",
"BESCHR": "STAUABFRAGE[LT] KPL.",
"MENGE": "1",
"POSITION": "0",
"GRUPPE": "9",
"ETIKETTE": "0",
"AUFLOESE": "N",
"pos": [
38.8,
1280.2
],
"IO": "BG3241",
"ID": "",
"VERW": "Jam detector",
"BEZEICHNUNG": "Stausensor 1 (ILS-CV M0108)",
"KENNZEICHNUNG": "=A01+UC0101-KF1DI1",
"TEXT-E": "",
"TEXT-ES": "",
"TEXT-F": "",
"SPS": "1",
"REALE_POSITION": "x"
},
"BG3270@1": {
"A": "0",
"B": "BG3270",
"C": "20073710081010151939",
"ARTINR": "200000248",
"BESCHR": "STAUABFRAGE[LT] KPL.",
"MENGE": "1",
"POSITION": "0",
"GRUPPE": "9",
"ETIKETTE": "0",
"AUFLOESE": "N",
"pos": [
5893.0,
12968.1
],
"IO": "BG3270",
"ID": "",
"VERW": "Jam detector",
"BEZEICHNUNG": "Stausensor 1 (ILS-CV M0108)",
"KENNZEICHNUNG": "=A01+UC0101-KF1DI1",
"TEXT-E": "conveyor full",
"TEXT-ES": "",
"TEXT-F": "",
"SPS": "1",
"REALE_POSITION": ""
},
"BG3260@1": {
"A": "0",
"B": "BG3260",
"C": "20073710081010151939",
"ARTINR": "200000248",
"BESCHR": "STAUABFRAGE[LT] KPL.",
"MENGE": "1",
"POSITION": "0",
"GRUPPE": "9",
"ETIKETTE": "0",
"AUFLOESE": "N",
"pos": [
22355.3,
13524.1
],
"IO": "BG3260",
"ID": "",
"VERW": "Jam detector",
"BEZEICHNUNG": "Stausensor 1 (ILS-CV M0108)",
"KENNZEICHNUNG": "=A01+UC0101-KF1DI1",
"TEXT-E": "conveyor full",
"TEXT-ES": "",
"TEXT-F": "",
"SPS": "1",
"REALE_POSITION": "x"
}
},
"schaltschrank_elemente": {
"FC0062@1": {
"SPS": "1",
"IO": "FC0062",
"VERW": "MS FC0062",
"BEZEICHNUNG": "Meldekontakt Motorschutzschalter FC0062",
"ARTINR": "722001335",
"ARTIBEZEICHN": "Stausensor 1 (ILS-CV M0108)",
"KENNZEICHNUNG": "=A01+UC0101-KF1DI1",
"TEXT-D": "",
"TEXT-E": "Motor protection switch signaling contact FC0062",
"TEXT-ES": "",
"TEXT-F": "",
"TEXT-I": "",
"ID": "",
"REALE_POSITION": "x",
"pos": [
5272.9,
8240.2
]
}
},
"mappings": {
"UC0101": [
"BG3240@1",
"BG3241@1",
"BG3270@1",
"BG3260@1"
],
"UH01": [
"MA0062@1"
]
},
"distributors": {
"UC0101": [
-233.4,
4221.1
],
"UH01": [
6756.1,
16291.2
]
},
"tunnels": {},
"racks": {
"Rack_1": [
[
5000.0,
10000.0,
0
],
[
5000.0,
3500.0,
0
]
],
"Rack_2": [
[
0.0,
0.0,
0
],
[
0.0,
3500.0,
0
],
[
15000.0,
3500.0,
0
]
],
"Rack_3": [
[
1000.0,
15000.0,
0
],
[
12000.0,
15000.0,
0
]
],
"Rack_4": [
[
18561.2,
14141.3,
0
],
[
23052.9,
14141.3,
0
]
],
"Rack_5": [
[
2800.0,
10000.0,
0
],
[
2800.0,
3500.0,
0
]
],
"Rack_6": [
[
9000.0,
10000.0,
0
],
[
9000.0,
3500.0,
0
]
],
"Rack_7": [
[
20282.5,
15960.6,
0
],
[
20282.5,
4064.6,
0
]
],
"Rack_8": [
[
2800.0,
10000.0,
0.0
],
[
2800.0,
15000.0,
0.0
]
],
"Rack_9": [
[
5000.0,
10000.0,
0.0
],
[
5000.0,
15000.0,
0.0
]
],
"Rack_10": [
[
9000.0,
10000.0,
0.0
],
[
9000.0,
15000.0,
0.0
]
]
},
"not_found": {
"missing_distributors": [],
"missing_sensors": [],
"missing_tunnel": [],
"missing_attributes": {}
},
"double_ids": {}
}
+496
View File
@@ -0,0 +1,496 @@
{
"kabel": [
{
"id": "UC0101-BG3240@1",
"s_artinr": "722001335",
"coords": [
{
"x": -233.4,
"y": 4221.1
},
{
"x": 0.0,
"y": 3500.0
},
{
"x": 2800.0,
"y": 3500.0
},
{
"x": 5000.0,
"y": 3500.0
},
{
"x": 5000.0,
"y": 5608.9
},
{
"x": 5493.9,
"y": 5608.9
}
],
"length": 8360.7,
"tunnel_indices": []
},
{
"id": "UC0101-BG3241@1",
"s_artinr": "200000248",
"coords": [
{
"x": -233.4,
"y": 4221.1
},
{
"x": 0.0,
"y": 3500.0
},
{
"x": 0.0,
"y": 1280.2
},
{
"x": 38.8,
"y": 1280.2
}
],
"length": 3016.5,
"tunnel_indices": []
},
{
"id": "UC0101-BG3270@1",
"s_artinr": "200000248",
"coords": [
{
"x": -233.4,
"y": 4221.1
},
{
"x": 0.0,
"y": 3500.0
},
{
"x": 2800.0,
"y": 3500.0
},
{
"x": 5000.0,
"y": 3500.0
},
{
"x": 5000.0,
"y": 5608.9
},
{
"x": 5000.0,
"y": 7970.2
},
{
"x": 5000.0,
"y": 10000.0
},
{
"x": 5000.0,
"y": 12968.1
},
{
"x": 5893.0,
"y": 12968.1
}
],
"length": 16119.0,
"tunnel_indices": []
},
{
"id": "UH01-MA0062@1",
"s_artinr": "790902001",
"coords": [
{
"x": 6756.1,
"y": 16291.2
},
{
"x": 6756.1,
"y": 15000.0
},
{
"x": 5000.0,
"y": 15000.0
},
{
"x": 5000.0,
"y": 12968.1
},
{
"x": 5000.0,
"y": 10000.0
},
{
"x": 5000.0,
"y": 7970.2
},
{
"x": 5272.9,
"y": 7970.2
}
],
"length": 10350.0,
"tunnel_indices": []
}
],
"rack_geometry": {
"Rack_1": {
"length": 6.5,
"coordinates": [
{
"x": 5000.0,
"y": 3500.0,
"z": 0.0
},
{
"x": 5000.0,
"y": 5608.9,
"z": 0.0
},
{
"x": 5000.0,
"y": 7970.2,
"z": 0.0
},
{
"x": 5000.0,
"y": 10000.0,
"z": 0.0
}
]
},
"Rack_2-1": {
"length": 3.5,
"coordinates": [
{
"x": 0.0,
"y": 0.0,
"z": 0.0
},
{
"x": 0.0,
"y": 1280.2,
"z": 0.0
},
{
"x": 0.0,
"y": 3500.0,
"z": 0.0
}
]
},
"Rack_2-2": {
"length": 15.0,
"coordinates": [
{
"x": 0.0,
"y": 3500.0,
"z": 0.0
},
{
"x": 2800.0,
"y": 3500.0,
"z": 0.0
},
{
"x": 5000.0,
"y": 3500.0,
"z": 0.0
},
{
"x": 9000.0,
"y": 3500.0,
"z": 0.0
},
{
"x": 15000.0,
"y": 3500.0,
"z": 0.0
}
]
},
"Rack_3": {
"length": 11.0,
"coordinates": [
{
"x": 1000.0,
"y": 15000.0,
"z": 0.0
},
{
"x": 2800.0,
"y": 15000.0,
"z": 0.0
},
{
"x": 5000.0,
"y": 15000.0,
"z": 0.0
},
{
"x": 6756.1,
"y": 15000.0,
"z": 0.0
},
{
"x": 9000.0,
"y": 15000.0,
"z": 0.0
},
{
"x": 12000.0,
"y": 15000.0,
"z": 0.0
}
]
},
"Rack_4": {
"length": 4.5,
"coordinates": [
{
"x": 18561.2,
"y": 14141.3,
"z": 0.0
},
{
"x": 20282.5,
"y": 14141.3,
"z": 0.0
},
{
"x": 22355.3,
"y": 14141.3,
"z": 0.0
},
{
"x": 23052.9,
"y": 14141.3,
"z": 0.0
}
]
},
"Rack_5": {
"length": 6.5,
"coordinates": [
{
"x": 2800.0,
"y": 3500.0,
"z": 0.0
},
{
"x": 2800.0,
"y": 10000.0,
"z": 0.0
}
]
},
"Rack_6": {
"length": 6.5,
"coordinates": [
{
"x": 9000.0,
"y": 3500.0,
"z": 0.0
},
{
"x": 9000.0,
"y": 10000.0,
"z": 0.0
}
]
},
"Rack_7": {
"length": 11.9,
"coordinates": [
{
"x": 20282.5,
"y": 4064.6,
"z": 0.0
},
{
"x": 20282.5,
"y": 14141.3,
"z": 0.0
},
{
"x": 20282.5,
"y": 15960.6,
"z": 0.0
}
]
},
"Rack_8": {
"length": 5.0,
"coordinates": [
{
"x": 2800.0,
"y": 10000.0,
"z": 0.0
},
{
"x": 2800.0,
"y": 15000.0,
"z": 0.0
}
]
},
"Rack_9": {
"length": 5.0,
"coordinates": [
{
"x": 5000.0,
"y": 10000.0,
"z": 0.0
},
{
"x": 5000.0,
"y": 12968.1,
"z": 0.0
},
{
"x": 5000.0,
"y": 15000.0,
"z": 0.0
}
]
},
"Rack_10": {
"length": 5.0,
"coordinates": [
{
"x": 9000.0,
"y": 10000.0,
"z": 0.0
},
{
"x": 9000.0,
"y": 15000.0,
"z": 0.0
}
]
},
"v-BG3240@1-Rack_1": {
"length": 0.5,
"coordinates": [
{
"x": 5000.0,
"y": 5608.9,
"z": 0.0
},
{
"x": 5493.9,
"y": 5608.9,
"z": 0.0
}
]
},
"v-MA0062@1-Rack_1": {
"length": 0.3,
"coordinates": [
{
"x": 5000.0,
"y": 7970.2,
"z": 0.0
},
{
"x": 5272.9,
"y": 7970.2,
"z": 0.0
}
]
},
"v-BG3241@1-Rack_2-1": {
"length": 0.0,
"coordinates": [
{
"x": 0.0,
"y": 1280.2,
"z": 0.0
},
{
"x": 38.8,
"y": 1280.2,
"z": 0.0
}
]
},
"v-BG3270@1-Rack_9": {
"length": 0.9,
"coordinates": [
{
"x": 5000.0,
"y": 12968.1,
"z": 0.0
},
{
"x": 5893.0,
"y": 12968.1,
"z": 0.0
}
]
},
"v-BG3260@1-Rack_4": {
"length": 0.6,
"coordinates": [
{
"x": 22355.3,
"y": 13524.1,
"z": 0.0
},
{
"x": 22355.3,
"y": 14141.3,
"z": 0.0
}
]
},
"v-UC0101-Rack_2-1": {
"length": 0.8,
"coordinates": [
{
"x": 0.0,
"y": 3500.0,
"z": 0.0
},
{
"x": -233.4,
"y": 4221.1,
"z": 0.0
}
]
},
"v-UH01-Rack_3": {
"length": 1.3,
"coordinates": [
{
"x": 6756.1,
"y": 15000.0,
"z": 0.0
},
{
"x": 6756.1,
"y": 16291.2,
"z": 0.0
}
]
}
},
"errors_routing": [
{
"unterverteiler": "UC0101",
"sensoren": [
"BG3260@1"
]
}
],
"errors_sensors": [],
"errors_dists": [],
"errors_tunnels": [],
"errors_dists_not_in_layout": [],
"errors_sensors_not_in_layout": [],
"errors_missing_attributes": {}
}