a25593a9c6
Group all 69 projects into category subfolders under src/ and tests/ so the Rider Solution Explorer mirrors the module structure. Folders: Core, Server, Drivers (with a nested Driver CLIs subfolder), Client, Tooling. - Move every project folder on disk with git mv (history preserved as renames). - Recompute relative paths in 57 .csproj files: cross-category ProjectReferences, the lib/ HintPath+None refs in Driver.Historian.Wonderware, and the external mxaccessgw refs in Driver.Galaxy and its test project. - Rebuild ZB.MOM.WW.OtOpcUa.slnx with nested solution folders. - Re-prefix project paths in functional scripts (e2e, compliance, smoke SQL, integration, install). Build green (0 errors); unit tests pass. Docs left for a separate pass. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
143 lines
4.7 KiB
Python
143 lines
4.7 KiB
Python
from __future__ import annotations
|
|
|
|
from typing import Any, Mapping
|
|
|
|
|
|
def _family_config(profile_name: str) -> tuple[str, int, int, int]:
|
|
lowered = profile_name.lower()
|
|
if "30i" in lowered or "ncg" in lowered:
|
|
return ("30i", 32, 2, 4)
|
|
if "0id" in lowered or "0dn" in lowered:
|
|
return ("0i-D", 24, 1, 2)
|
|
if "fwlibe64" in lowered:
|
|
return ("e64", 8, 1, 2)
|
|
return ("generic", 8, 1, 2)
|
|
|
|
|
|
def make_default_state(profile: Mapping[str, Any]) -> dict[str, Any]:
|
|
profile_name = str(profile.get("profile_name", "FWLIB64"))
|
|
family, default_axes, max_path, max_spindles = _family_config(profile_name)
|
|
max_axis = int(profile.get("max_axis_hint") or default_axes)
|
|
axis_names = [
|
|
"X",
|
|
"Y",
|
|
"Z",
|
|
"A",
|
|
"B",
|
|
"C",
|
|
"U",
|
|
"V",
|
|
"W",
|
|
"P",
|
|
"Q",
|
|
"R",
|
|
]
|
|
while len(axis_names) < max_axis:
|
|
axis_names.append(f"A{len(axis_names) + 1}")
|
|
|
|
spindle_names = [f"S{i}" for i in range(1, max_spindles + 1)]
|
|
programs = [
|
|
{"number": 1, "comment": "MAIN", "length": 128},
|
|
{"number": 100, "comment": "TOOLCHANGE", "length": 84},
|
|
]
|
|
|
|
return {
|
|
"sysinfo": {
|
|
"addinfo": 0,
|
|
"max_axis": max_axis,
|
|
"cnc_type": family[:2].ljust(2),
|
|
"mt_type": "M ",
|
|
"series": family[:4].ljust(4),
|
|
"version": "A1.0",
|
|
"axes": str(max_axis).rjust(2, "0"),
|
|
},
|
|
"statinfo": {
|
|
"aut": 1,
|
|
"run": 3,
|
|
"motion": 1,
|
|
"mstb": 0,
|
|
"emergency": 0,
|
|
"alarm": 0,
|
|
"edit": 0,
|
|
},
|
|
"paths": {"current": 1, "max": max_path},
|
|
"dynamic": {
|
|
"alarm": 0,
|
|
"prgnum": 1,
|
|
"prgmnum": 1,
|
|
"seqnum": 120,
|
|
"actf": 1500,
|
|
"acts": 3200,
|
|
"axes": {
|
|
axis_names[0]: {"absolute": 123456, "machine": 123450, "relative": 6, "distance": 0},
|
|
axis_names[1]: {"absolute": -22000, "machine": -22010, "relative": 10, "distance": 0},
|
|
axis_names[2]: {"absolute": 8000, "machine": 7990, "relative": 10, "distance": 0},
|
|
},
|
|
},
|
|
"actf": 1500,
|
|
"acts": 3200,
|
|
"acts2": [3200] + [0] * (max_spindles - 1),
|
|
"axis_names": axis_names[:max_axis],
|
|
"spindle_names": spindle_names,
|
|
"parameters": {
|
|
"6711": {"type": "long", "value": 1, "decimal": 0, "description": "example parameter"},
|
|
"6712": {"type": "long", "value": 500, "decimal": 0, "description": "example parameter"},
|
|
},
|
|
"pmc": {
|
|
"R": {
|
|
"100": {"type": "byte", "value": 0},
|
|
"101": {"type": "byte", "value": 1},
|
|
"102": {"type": "byte", "value": 0},
|
|
},
|
|
},
|
|
"macros": {
|
|
"100": {"value": 12345, "decimal": 3},
|
|
"101": {"value": 98765, "decimal": 3},
|
|
},
|
|
"alarms": [
|
|
{"alm_no": 0, "type": 0, "axis": 0, "msg": ""},
|
|
],
|
|
"operator_messages": [
|
|
{"number": 200, "type": 0, "char_num": 12, "data": "READY"},
|
|
],
|
|
"program": {
|
|
"current": 1,
|
|
"main": 1,
|
|
"sequence": 120,
|
|
"block_count": 42,
|
|
"executing": "%\nO0001\nG90 G54 G00 X0 Y0\nM30\n%",
|
|
"executing_path": "//CNC_MEM/USER/PATH1/O0001",
|
|
"directory": programs,
|
|
},
|
|
"spindle": {
|
|
"meter": [
|
|
{"name": spindle_names[0], "value": 56, "unit": "%"},
|
|
{"name": spindle_names[1], "value": 0, "unit": "%"},
|
|
],
|
|
"servo_meter": [
|
|
{"name": axis_names[0], "value": 14, "unit": "%"},
|
|
{"name": axis_names[1], "value": 8, "unit": "%"},
|
|
{"name": axis_names[2], "value": 5, "unit": "%"},
|
|
],
|
|
"load": [
|
|
{"name": spindle_names[0], "load": 56, "speed": 3200},
|
|
{"name": spindle_names[1], "load": 0, "speed": 0},
|
|
],
|
|
"gear": [1] * max_spindles,
|
|
"max_rpm": [6000] * max_spindles,
|
|
},
|
|
"timers": {
|
|
"power_on": 86400,
|
|
"operating": 7200,
|
|
"cutting": 3600,
|
|
"cycle": 95,
|
|
},
|
|
"operation_mode": {"mode": 1, "name": "MEM"},
|
|
"diagnostics": {
|
|
"300": {"type": "long", "value": 14, "description": "servo load X"},
|
|
"301": {"type": "long", "value": 8, "description": "servo load Y"},
|
|
"302": {"type": "long", "value": 5, "description": "servo load Z"},
|
|
},
|
|
"forced_errors": {},
|
|
}
|