vault backup: 2025-06-09 16:22:34
This commit is contained in:
parent
0e76cb0e71
commit
36a3ec33e7
|
@ -1,7 +1,6 @@
|
|||
[
|
||||
"mousewheel-image-zoom",
|
||||
"obsidian-image-toolkit",
|
||||
"numerals",
|
||||
"copy-as-html",
|
||||
"copy-document-as-html",
|
||||
"obsidian-pandoc",
|
||||
|
@ -23,9 +22,9 @@
|
|||
"recent-files-obsidian",
|
||||
"obsidian-auto-link-title",
|
||||
"advanced-canvas",
|
||||
"obsidian-minimal-settings",
|
||||
"obsidian-mindmap-nextgen",
|
||||
"obsidian-plantuml",
|
||||
"mcp-tools",
|
||||
"obsidian-local-rest-api"
|
||||
"obsidian-local-rest-api",
|
||||
"obsidian-excel-to-markdown-table"
|
||||
]
|
|
@ -102,6 +102,223 @@
|
|||
"version": 2,
|
||||
"source": "https://github.com/zsviczian/obsidian-excalidraw-plugin/releases/tag/2.9.2",
|
||||
"libraryItems": [
|
||||
{
|
||||
"id": "Jcb27Z7tsLyhmBl-4Yl7A",
|
||||
"status": "unpublished",
|
||||
"elements": [
|
||||
{
|
||||
"id": "e01IusppIXekthvQI4dsi",
|
||||
"type": "rectangle",
|
||||
"x": -646.8844788749002,
|
||||
"y": -374.28650595561646,
|
||||
"width": 22.13098427962416,
|
||||
"height": 22.13098427962416,
|
||||
"angle": 0,
|
||||
"strokeColor": "#1971c2",
|
||||
"backgroundColor": "#ffffff",
|
||||
"fillStyle": "solid",
|
||||
"strokeWidth": 0.5,
|
||||
"strokeStyle": "solid",
|
||||
"roughness": 0,
|
||||
"opacity": 100,
|
||||
"groupIds": [
|
||||
"zoxFXczlNsNs7_uDZMfy8"
|
||||
],
|
||||
"frameId": null,
|
||||
"index": "aN",
|
||||
"roundness": null,
|
||||
"seed": 1261532191,
|
||||
"version": 64,
|
||||
"versionNonce": 1784958993,
|
||||
"isDeleted": false,
|
||||
"boundElements": [],
|
||||
"updated": 1749053618097,
|
||||
"link": null,
|
||||
"locked": false
|
||||
},
|
||||
{
|
||||
"id": "OJsW5dAkHk_bM3YQqzdLc",
|
||||
"type": "line",
|
||||
"x": -646.9383377449386,
|
||||
"y": -374.18299579915805,
|
||||
"width": 21.67528767610702,
|
||||
"height": 21.67528767610696,
|
||||
"angle": 0,
|
||||
"strokeColor": "#1971c2",
|
||||
"backgroundColor": "#ffffff",
|
||||
"fillStyle": "solid",
|
||||
"strokeWidth": 0.5,
|
||||
"strokeStyle": "solid",
|
||||
"roughness": 0,
|
||||
"opacity": 100,
|
||||
"groupIds": [
|
||||
"zoxFXczlNsNs7_uDZMfy8"
|
||||
],
|
||||
"frameId": null,
|
||||
"index": "aO",
|
||||
"roundness": null,
|
||||
"seed": 176168273,
|
||||
"version": 35,
|
||||
"versionNonce": 416626047,
|
||||
"isDeleted": false,
|
||||
"boundElements": [],
|
||||
"updated": 1749053618097,
|
||||
"link": null,
|
||||
"locked": false,
|
||||
"points": [
|
||||
[
|
||||
0,
|
||||
0
|
||||
],
|
||||
[
|
||||
21.67528767610702,
|
||||
21.67528767610696
|
||||
]
|
||||
],
|
||||
"lastCommittedPoint": null,
|
||||
"startBinding": null,
|
||||
"endBinding": null,
|
||||
"startArrowhead": null,
|
||||
"endArrowhead": null
|
||||
},
|
||||
{
|
||||
"id": "qVrEcAmiTyjmVNhcIpBbv",
|
||||
"type": "line",
|
||||
"x": -646.9383377449386,
|
||||
"y": -370.4296992318668,
|
||||
"width": 18.20348835136258,
|
||||
"height": 18.20348835136258,
|
||||
"angle": 0,
|
||||
"strokeColor": "#1971c2",
|
||||
"backgroundColor": "#ffffff",
|
||||
"fillStyle": "solid",
|
||||
"strokeWidth": 0.5,
|
||||
"strokeStyle": "solid",
|
||||
"roughness": 0,
|
||||
"opacity": 100,
|
||||
"groupIds": [
|
||||
"zoxFXczlNsNs7_uDZMfy8"
|
||||
],
|
||||
"frameId": null,
|
||||
"index": "aP",
|
||||
"roundness": null,
|
||||
"seed": 255581791,
|
||||
"version": 36,
|
||||
"versionNonce": 1919034865,
|
||||
"isDeleted": false,
|
||||
"boundElements": [],
|
||||
"updated": 1749053618097,
|
||||
"link": null,
|
||||
"locked": false,
|
||||
"points": [
|
||||
[
|
||||
0,
|
||||
0
|
||||
],
|
||||
[
|
||||
18.20348835136258,
|
||||
18.20348835136258
|
||||
]
|
||||
],
|
||||
"lastCommittedPoint": null,
|
||||
"startBinding": null,
|
||||
"endBinding": null,
|
||||
"startArrowhead": null,
|
||||
"endArrowhead": null
|
||||
},
|
||||
{
|
||||
"id": "2LRECUsuFp9ZwO3Yh5ZDs",
|
||||
"type": "line",
|
||||
"x": -646.9383377449386,
|
||||
"y": -365.73807852275274,
|
||||
"width": 13.473250240646507,
|
||||
"height": 13.533411429315947,
|
||||
"angle": 0,
|
||||
"strokeColor": "#1971c2",
|
||||
"backgroundColor": "#ffffff",
|
||||
"fillStyle": "solid",
|
||||
"strokeWidth": 0.5,
|
||||
"strokeStyle": "solid",
|
||||
"roughness": 0,
|
||||
"opacity": 100,
|
||||
"groupIds": [
|
||||
"zoxFXczlNsNs7_uDZMfy8"
|
||||
],
|
||||
"frameId": null,
|
||||
"index": "aQ",
|
||||
"roundness": null,
|
||||
"seed": 2651295,
|
||||
"version": 33,
|
||||
"versionNonce": 2024811935,
|
||||
"isDeleted": false,
|
||||
"boundElements": [],
|
||||
"updated": 1749053618097,
|
||||
"link": null,
|
||||
"locked": false,
|
||||
"points": [
|
||||
[
|
||||
0,
|
||||
0
|
||||
],
|
||||
[
|
||||
13.473250240646507,
|
||||
13.533411429315947
|
||||
]
|
||||
],
|
||||
"lastCommittedPoint": null,
|
||||
"startBinding": null,
|
||||
"endBinding": null,
|
||||
"startArrowhead": null,
|
||||
"endArrowhead": null
|
||||
},
|
||||
{
|
||||
"id": "K5zwTUBZbp8soB1Y2dF15",
|
||||
"type": "line",
|
||||
"x": -646.9383377449386,
|
||||
"y": -359.54513918672217,
|
||||
"width": 7.487284433781497,
|
||||
"height": 7.366962056442219,
|
||||
"angle": 0,
|
||||
"strokeColor": "#1971c2",
|
||||
"backgroundColor": "#ffffff",
|
||||
"fillStyle": "solid",
|
||||
"strokeWidth": 0.5,
|
||||
"strokeStyle": "solid",
|
||||
"roughness": 0,
|
||||
"opacity": 100,
|
||||
"groupIds": [
|
||||
"zoxFXczlNsNs7_uDZMfy8"
|
||||
],
|
||||
"frameId": null,
|
||||
"index": "aR",
|
||||
"roundness": null,
|
||||
"seed": 387931679,
|
||||
"version": 33,
|
||||
"versionNonce": 1273642961,
|
||||
"isDeleted": false,
|
||||
"boundElements": [],
|
||||
"updated": 1749053618097,
|
||||
"link": null,
|
||||
"locked": false,
|
||||
"points": [
|
||||
[
|
||||
0,
|
||||
0
|
||||
],
|
||||
[
|
||||
7.487284433781497,
|
||||
7.366962056442219
|
||||
]
|
||||
],
|
||||
"lastCommittedPoint": null,
|
||||
"startBinding": null,
|
||||
"endBinding": null,
|
||||
"startArrowhead": null,
|
||||
"endArrowhead": null
|
||||
}
|
||||
],
|
||||
"created": 1749053623052
|
||||
},
|
||||
{
|
||||
"id": "qLdU5G5F49LoCvIYKf21c",
|
||||
"status": "unpublished",
|
||||
|
|
|
@ -0,0 +1,230 @@
|
|||
/*
|
||||
THIS IS A GENERATED/BUNDLED FILE BY ESBUILD
|
||||
if you want to view the source, please visit the github repository of this plugin
|
||||
*/
|
||||
|
||||
var __create = Object.create;
|
||||
var __defProp = Object.defineProperty;
|
||||
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
||||
var __getOwnPropNames = Object.getOwnPropertyNames;
|
||||
var __getProtoOf = Object.getPrototypeOf;
|
||||
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
||||
var __markAsModule = (target) => __defProp(target, "__esModule", { value: true });
|
||||
var __export = (target, all) => {
|
||||
__markAsModule(target);
|
||||
for (var name in all)
|
||||
__defProp(target, name, { get: all[name], enumerable: true });
|
||||
};
|
||||
var __reExport = (target, module2, desc) => {
|
||||
if (module2 && typeof module2 === "object" || typeof module2 === "function") {
|
||||
for (let key of __getOwnPropNames(module2))
|
||||
if (!__hasOwnProp.call(target, key) && key !== "default")
|
||||
__defProp(target, key, { get: () => module2[key], enumerable: !(desc = __getOwnPropDesc(module2, key)) || desc.enumerable });
|
||||
}
|
||||
return target;
|
||||
};
|
||||
var __toModule = (module2) => {
|
||||
return __reExport(__markAsModule(__defProp(module2 != null ? __create(__getProtoOf(module2)) : {}, "default", module2 && module2.__esModule && "default" in module2 ? { get: () => module2.default, enumerable: true } : { value: module2, enumerable: true })), module2);
|
||||
};
|
||||
var __async = (__this, __arguments, generator) => {
|
||||
return new Promise((resolve, reject) => {
|
||||
var fulfilled = (value) => {
|
||||
try {
|
||||
step(generator.next(value));
|
||||
} catch (e) {
|
||||
reject(e);
|
||||
}
|
||||
};
|
||||
var rejected = (value) => {
|
||||
try {
|
||||
step(generator.throw(value));
|
||||
} catch (e) {
|
||||
reject(e);
|
||||
}
|
||||
};
|
||||
var step = (x) => x.done ? resolve(x.value) : Promise.resolve(x.value).then(fulfilled, rejected);
|
||||
step((generator = generator.apply(__this, __arguments)).next());
|
||||
});
|
||||
};
|
||||
|
||||
// src/main.ts
|
||||
__export(exports, {
|
||||
default: () => ExcelToMarkdownTablePlugin
|
||||
});
|
||||
var import_obsidian = __toModule(require("obsidian"));
|
||||
|
||||
// src/table-alignment-syntax.ts
|
||||
var ALIGNED_LEFT_SYNTAX = {
|
||||
prefix: "",
|
||||
postfix: "",
|
||||
adjust: 0
|
||||
};
|
||||
var ALIGNED_RIGHT_SYNTAX = {
|
||||
prefix: "",
|
||||
postfix: ":",
|
||||
adjust: 1
|
||||
};
|
||||
var ALIGNED_CENTER_SYNTAX = {
|
||||
prefix: ":",
|
||||
postfix: ":",
|
||||
adjust: 2
|
||||
};
|
||||
|
||||
// src/excel-markdown-helpers.ts
|
||||
var ALIGNED_LEFT = "l";
|
||||
var ALIGNED_RIGHT = "r";
|
||||
var ALIGNED_CENTER = "c";
|
||||
var EXCEL_COLUMN_DELIMITER = " ";
|
||||
var MARKDOWN_NEWLINE = "<br/>";
|
||||
var UNESCAPED_DOUBLE_QUOTE = '"';
|
||||
var EXCEL_ROW_DELIMITER_REGEX = /[\n\u0085\u2028\u2029]|\r\n?/g;
|
||||
var COLUMN_ALIGNMENT_REGEX = /^(\^[lcr])/i;
|
||||
var EXCEL_NEWLINE_ESCAPED_CELL_REGEX = /"([^\t]*(?<=[^\r])\n[^\t]*)"/g;
|
||||
var EXCEL_NEWLINE_REGEX = /\n/g;
|
||||
var EXCEL_DOUBLE_QUOTE_ESCAPED_REGEX = /""/g;
|
||||
function addMarkdownSyntax(rows, columnWidths) {
|
||||
return rows.map(function(row, rowIndex) {
|
||||
return "| " + row.map(function(column, index) {
|
||||
column = column.replace("|", "\\|");
|
||||
return column + Array(columnWidths[index] - column.length + 1).join(" ");
|
||||
}).join(" | ") + " |";
|
||||
});
|
||||
}
|
||||
function addAlignmentSyntax(markdownRows, columnWidths, colAlignments) {
|
||||
let result = Object.assign([], markdownRows);
|
||||
result.splice(1, 0, "|" + columnWidths.map(function(width, index) {
|
||||
let { prefix, postfix, adjust } = calculateAlignmentMarkdownSyntaxMetadata(colAlignments[index]);
|
||||
return prefix + Array(columnWidths[index] + 3 - adjust).join("-") + postfix;
|
||||
}).join("|") + "|");
|
||||
return result;
|
||||
}
|
||||
function calculateAlignmentMarkdownSyntaxMetadata(alignment) {
|
||||
switch (alignment) {
|
||||
case ALIGNED_LEFT:
|
||||
return ALIGNED_LEFT_SYNTAX;
|
||||
case ALIGNED_CENTER:
|
||||
return ALIGNED_CENTER_SYNTAX;
|
||||
case ALIGNED_RIGHT:
|
||||
return ALIGNED_RIGHT_SYNTAX;
|
||||
default:
|
||||
return ALIGNED_LEFT_SYNTAX;
|
||||
}
|
||||
}
|
||||
function getColumnWidthsAndAlignments(rows) {
|
||||
let colAlignments = [];
|
||||
return {
|
||||
columnWidths: rows[0].map(function(column, columnIndex) {
|
||||
let alignment = columnAlignment(column);
|
||||
colAlignments.push(alignment);
|
||||
column = column.replace(COLUMN_ALIGNMENT_REGEX, "");
|
||||
rows[0][columnIndex] = column;
|
||||
return columnWidth(rows, columnIndex);
|
||||
}),
|
||||
colAlignments
|
||||
};
|
||||
}
|
||||
function columnAlignment(columnHeaderText) {
|
||||
var m = columnHeaderText.match(COLUMN_ALIGNMENT_REGEX);
|
||||
if (m) {
|
||||
var alignChar = m[1][1].toLowerCase();
|
||||
return columnAlignmentFromChar(alignChar);
|
||||
}
|
||||
return ALIGNED_LEFT;
|
||||
}
|
||||
function columnAlignmentFromChar(alignChar) {
|
||||
switch (alignChar) {
|
||||
case ALIGNED_LEFT:
|
||||
return ALIGNED_LEFT;
|
||||
case ALIGNED_CENTER:
|
||||
return ALIGNED_CENTER;
|
||||
case ALIGNED_RIGHT:
|
||||
return ALIGNED_RIGHT;
|
||||
default:
|
||||
return ALIGNED_LEFT;
|
||||
}
|
||||
}
|
||||
function columnWidth(rows, columnIndex) {
|
||||
return Math.max.apply(null, rows.map(function(row) {
|
||||
return row[columnIndex] && row[columnIndex].length || 0;
|
||||
}));
|
||||
}
|
||||
function splitIntoRowsAndColumns(data) {
|
||||
var rows = data.split(EXCEL_ROW_DELIMITER_REGEX).map(function(row) {
|
||||
return row.split(EXCEL_COLUMN_DELIMITER);
|
||||
});
|
||||
return rows;
|
||||
}
|
||||
function replaceIntraCellNewline(data) {
|
||||
let cellReplacer = (_) => _.slice(1, -1).replace(EXCEL_DOUBLE_QUOTE_ESCAPED_REGEX, UNESCAPED_DOUBLE_QUOTE).replace(EXCEL_NEWLINE_REGEX, MARKDOWN_NEWLINE);
|
||||
return data.replace(EXCEL_NEWLINE_ESCAPED_CELL_REGEX, cellReplacer);
|
||||
}
|
||||
|
||||
// src/excel-markdown-tables.ts
|
||||
var LINE_ENDING = "\n";
|
||||
function excelToMarkdown(rawData) {
|
||||
let data = rawData.trim();
|
||||
var intraCellNewlineReplacedData = replaceIntraCellNewline(data);
|
||||
var rows = splitIntoRowsAndColumns(intraCellNewlineReplacedData);
|
||||
var { columnWidths, colAlignments } = getColumnWidthsAndAlignments(rows);
|
||||
const markdownRows = addMarkdownSyntax(rows, columnWidths);
|
||||
return addAlignmentSyntax(markdownRows, columnWidths, colAlignments).join(LINE_ENDING);
|
||||
}
|
||||
function getExcelRows(rawData) {
|
||||
let data = rawData.trim();
|
||||
var intraCellNewlineReplacedData = replaceIntraCellNewline(data);
|
||||
return splitIntoRowsAndColumns(intraCellNewlineReplacedData);
|
||||
}
|
||||
function excelRowsToMarkdown(rows) {
|
||||
var { columnWidths, colAlignments } = getColumnWidthsAndAlignments(rows);
|
||||
const markdownRows = addMarkdownSyntax(rows, columnWidths);
|
||||
return addAlignmentSyntax(markdownRows, columnWidths, colAlignments).join(LINE_ENDING);
|
||||
}
|
||||
function isExcelData(rows) {
|
||||
return rows && rows[0] && rows[0].length > 1 ? true : false;
|
||||
}
|
||||
|
||||
// src/main.ts
|
||||
var ExcelToMarkdownTablePlugin = class extends import_obsidian.Plugin {
|
||||
constructor() {
|
||||
super(...arguments);
|
||||
this.pasteHandler = (evt, editor) => {
|
||||
if (evt.clipboardData === null) {
|
||||
return;
|
||||
}
|
||||
if (evt.clipboardData.types.length === 1 && evt.clipboardData.types[0] === "text/plain") {
|
||||
return;
|
||||
}
|
||||
const rawData = evt.clipboardData.getData("text");
|
||||
const rows = getExcelRows(rawData);
|
||||
if (isExcelData(rows)) {
|
||||
const markdownData = excelRowsToMarkdown(rows);
|
||||
editor.replaceSelection(markdownData + "\n");
|
||||
evt.preventDefault();
|
||||
}
|
||||
};
|
||||
}
|
||||
onload() {
|
||||
return __async(this, null, function* () {
|
||||
this.addCommand({
|
||||
id: "excel-to-markdown-table",
|
||||
name: "Excel to Markdown",
|
||||
hotkeys: [
|
||||
{
|
||||
modifiers: ["Mod", "Alt"],
|
||||
key: "v"
|
||||
}
|
||||
],
|
||||
editorCallback: (editor, view) => __async(this, null, function* () {
|
||||
const text = yield navigator.clipboard.readText();
|
||||
editor.replaceSelection(excelToMarkdown(text));
|
||||
})
|
||||
});
|
||||
this.app.workspace.on("editor-paste", this.pasteHandler);
|
||||
});
|
||||
}
|
||||
onunload() {
|
||||
this.app.workspace.off("editor-paste", this.pasteHandler);
|
||||
}
|
||||
};
|
||||
|
||||
/* nosourcemap */
|
|
@ -0,0 +1,10 @@
|
|||
{
|
||||
"id": "obsidian-excel-to-markdown-table",
|
||||
"name": "Excel to Markdown Table",
|
||||
"version": "0.4.0",
|
||||
"minAppVersion": "0.12.0",
|
||||
"description": "An Obsidian plugin to paste data from Microsoft Excel, Google Sheets, Apple Numbers and LibreOffice Calc as Markdown tables in Obsidian editor.",
|
||||
"author": "Ganessh Kumar R P <rpganesshkumar@gmail.com>",
|
||||
"authorUrl": "https://ganesshkumar.com",
|
||||
"isDesktopOnly": false
|
||||
}
|
|
@ -0,0 +1 @@
|
|||
|
|
@ -1,7 +1,6 @@
|
|||
{
|
||||
"version": "2.0",
|
||||
"layout": [
|
||||
null,
|
||||
null,
|
||||
null,
|
||||
null
|
||||
|
|
|
@ -1,5 +1,141 @@
|
|||
{
|
||||
"recentFiles": [
|
||||
{
|
||||
"basename": "PLC IO Tags",
|
||||
"path": "03-VM/44 - 98050 - Fiera/IO/PLC IO Tags.md"
|
||||
},
|
||||
{
|
||||
"basename": "Problem with drag&drop or Left Click",
|
||||
"path": "01-Documentation/Dispositivos - Manuales/Mouse/Problem with drag&drop or Left Click.md"
|
||||
},
|
||||
{
|
||||
"basename": "Mapping Divider",
|
||||
"path": "03-VM/44 - 98050 - Fiera/IO/Mapping Divider.md"
|
||||
},
|
||||
{
|
||||
"basename": "SysInternals Tools - WinInternals",
|
||||
"path": "01-Documentation/Windows/SysInternals Tools - WinInternals.md"
|
||||
},
|
||||
{
|
||||
"basename": "Device IO Tags",
|
||||
"path": "03-VM/44 - 98050 - Fiera/IO/Device IO Tags.md"
|
||||
},
|
||||
{
|
||||
"basename": "AI Prompts useful",
|
||||
"path": "01-Documentation/AI - IA - LLM - Artificial Intelligence/AI Prompts useful.md"
|
||||
},
|
||||
{
|
||||
"basename": "Layout - Anello-Ring",
|
||||
"path": "03-VM/44 - 98050 - Fiera/Layout - Anello-Ring.md"
|
||||
},
|
||||
{
|
||||
"basename": "IO - Ips Nodes",
|
||||
"path": "03-VM/44 - 98050 - Fiera/IO - Ips Nodes.md"
|
||||
},
|
||||
{
|
||||
"basename": "DAR Description - DIET AS REGULAR - SAE452 San Giorgio in Bosco",
|
||||
"path": "04-SIDEL/09 - SAE452 - Diet as Regular - San Giovanni in Bosco/DAR Description - DIET AS REGULAR - SAE452 San Giorgio in Bosco.md"
|
||||
},
|
||||
{
|
||||
"basename": "98050_Hardware",
|
||||
"path": "03-VM/44 - 98050 - Fiera/98050_Hardware.md"
|
||||
},
|
||||
{
|
||||
"basename": "Conda - Anaconda - miniconda",
|
||||
"path": "01-Documentation/Python/Scripts Python/Conda - Anaconda - miniconda.md"
|
||||
},
|
||||
{
|
||||
"basename": "Progetto 98050 Fiera - Tavolo di accumulo - Logica - v 0.1 - Esp",
|
||||
"path": "03-VM/44 - 98050 - Fiera/Progetto 98050 Fiera - Tavolo di accumulo - Logica - v 0.1 - Esp.md"
|
||||
},
|
||||
{
|
||||
"basename": "Calc v0.3 Pure",
|
||||
"path": "01-Documentation/Python/Scripts Python/Calc/Calc v0.3 Pure.md"
|
||||
},
|
||||
{
|
||||
"basename": "Calc v0.2",
|
||||
"path": "01-Documentation/Python/Scripts Python/Calc/Calc v0.2.md"
|
||||
},
|
||||
{
|
||||
"basename": "Calc v0.1",
|
||||
"path": "01-Documentation/Python/Scripts Python/Calc/Calc v0.1.md"
|
||||
},
|
||||
{
|
||||
"basename": "Miniconda Como hacer un backup completo de un entorno creado con Miniconda",
|
||||
"path": "01-Documentation/Python/Scripts Python/Miniconda Como hacer un backup completo de un entorno creado con Miniconda.md"
|
||||
},
|
||||
{
|
||||
"basename": "Group Scripts Manager",
|
||||
"path": "01-Documentation/Python/Scripts Python/Group Scripts Manager.md"
|
||||
},
|
||||
{
|
||||
"basename": "Notes - Update Multilane Table",
|
||||
"path": "03-VM/41 - 94154 - Update Multilane Table/Notes - Update Multilane Table.md"
|
||||
},
|
||||
{
|
||||
"basename": "Backups - Mikrotik",
|
||||
"path": "01-Documentation/Routers/Mikrotik - Network Redes/Backups - Mikrotik.md"
|
||||
},
|
||||
{
|
||||
"basename": "Mikrotik - Comandos WIFI - Clientes de wlan y CAP",
|
||||
"path": "01-Documentation/Routers/Mikrotik - Network Redes/Mikrotik - Comandos WIFI - Clientes de wlan y CAP.md"
|
||||
},
|
||||
{
|
||||
"basename": "Mikrotik - Setup Commands for Layer 2 Wi-Fi Bridge",
|
||||
"path": "01-Documentation/Routers/Mikrotik - Network Redes/Mikrotik - Setup Commands for Layer 2 Wi-Fi Bridge.md"
|
||||
},
|
||||
{
|
||||
"basename": "Progetto 98050 Fiera - Tavolo di accumulo - Logica - v 0.0 - Ita",
|
||||
"path": "03-VM/44 - 98050 - Fiera/Progetto 98050 Fiera - Tavolo di accumulo - Logica - v 0.0 - Ita.md"
|
||||
},
|
||||
{
|
||||
"basename": "Drawing 2025-02-24 19.56.40.excalidraw",
|
||||
"path": "03-VM/41 - 94154 - Update Multilane Table/Drawing 2025-02-24 19.56.40.excalidraw.md"
|
||||
},
|
||||
{
|
||||
"basename": "Drawing 2025-02-25 18.12.26.excalidraw",
|
||||
"path": "03-VM/41 - 94154 - Update Multilane Table/Drawing 2025-02-25 18.12.26.excalidraw.md"
|
||||
},
|
||||
{
|
||||
"basename": "IPs & Address - Master - Vetromeccanica",
|
||||
"path": "03-VM/9..... MASTER Transport/Standard Transport/IPs & Address - Master - Vetromeccanica.md"
|
||||
},
|
||||
{
|
||||
"basename": "Autocad - useful Commands",
|
||||
"path": "01-Documentation/Autocad - Acad/Autocad - useful Commands.md"
|
||||
},
|
||||
{
|
||||
"basename": "Autocad - Acad - show all layers - unlock all layers",
|
||||
"path": "01-Documentation/Autocad - Acad/Autocad - Acad - show all layers - unlock all layers.md"
|
||||
},
|
||||
{
|
||||
"basename": "Minimotor - Setup - Chingiolli - FC6",
|
||||
"path": "01-Documentation/Vetromeccanica/Minimotor - FC6/Minimotor - Setup - Chingiolli - FC6.md"
|
||||
},
|
||||
{
|
||||
"basename": "Minimotor - Encoder setup",
|
||||
"path": "01-Documentation/Vetromeccanica/Minimotor - FC6/Minimotor - Encoder setup.md"
|
||||
},
|
||||
{
|
||||
"basename": "Drawing 2024-04-03 11.29.20.excalidraw",
|
||||
"path": "01-Documentation/Vetromeccanica/Minimotor - FC6/Drawing 2024-04-03 11.29.20.excalidraw.md"
|
||||
},
|
||||
{
|
||||
"basename": "Siemens HMI Translate - Python - LLM - Google Translate",
|
||||
"path": "01-Documentation/Python/Scripts Python/Siemens HMI Translate - Python - LLM - Google Translate.md"
|
||||
},
|
||||
{
|
||||
"basename": "MR-J4",
|
||||
"path": "01-Documentation/Inverters/Mitsubishi/MR-J4.md"
|
||||
},
|
||||
{
|
||||
"basename": "Test - Fatto su Maselli - 06-05-2025",
|
||||
"path": "04-SIDEL/09 - SAE452 - Diet as Regular - San Giovanni in Bosco/Documentation/Test - Fatto su Maselli - 06-05-2025.md"
|
||||
},
|
||||
{
|
||||
"basename": "Hardware used for 485-TCP",
|
||||
"path": "04-SIDEL/09 - SAE452 - Diet as Regular - San Giovanni in Bosco/FB2120 - MasseliTCP/Hardware used for 485-TCP.md"
|
||||
},
|
||||
{
|
||||
"basename": "FB2120 - MasseliTCP Read - v1.8",
|
||||
"path": "04-SIDEL/09 - SAE452 - Diet as Regular - San Giovanni in Bosco/FB2120 - MasseliTCP/FB2120 - MasseliTCP Read - v1.8.md"
|
||||
|
@ -8,10 +144,6 @@
|
|||
"basename": "FB2120 - MasseliTCP Read - Descrizzione Software - v1.8",
|
||||
"path": "04-SIDEL/09 - SAE452 - Diet as Regular - San Giovanni in Bosco/FB2120 - MasseliTCP/FB2120 - MasseliTCP Read - Descrizzione Software - v1.8.md"
|
||||
},
|
||||
{
|
||||
"basename": "Hardware used for 485-TCP",
|
||||
"path": "04-SIDEL/09 - SAE452 - Diet as Regular - San Giovanni in Bosco/FB2120 - MasseliTCP/Hardware used for 485-TCP.md"
|
||||
},
|
||||
{
|
||||
"basename": "Versiones",
|
||||
"path": "04-SIDEL/09 - SAE452 - Diet as Regular - San Giovanni in Bosco/FB2120 - MasseliTCP/Versiones.md"
|
||||
|
@ -24,10 +156,6 @@
|
|||
"basename": "Maselli - ADAM - Protocol",
|
||||
"path": "01-Documentation/Dispositivos - Manuales/Maselli/Maselli - ADAM - Protocol.md"
|
||||
},
|
||||
{
|
||||
"basename": "Progetto 98050 Fiera - Tavolo di accumulo",
|
||||
"path": "03-VM/44 - 98050 - Fiera/Progetto 98050 Fiera - Tavolo di accumulo.md"
|
||||
},
|
||||
{
|
||||
"basename": "Install Docker on Ubuntu",
|
||||
"path": "01-Documentation/Dockers/Install Docker on Ubuntu.md"
|
||||
|
@ -56,14 +184,6 @@
|
|||
"basename": "Waveshare RS232-485 Ethernet - Wifi - ADAM 4021 - Using Serial200",
|
||||
"path": "01-Documentation/Dispositivos - Manuales/Waveshare RS232-485 Ethernet - Wifi/Waveshare RS232-485 Ethernet - Wifi - ADAM 4021 - Using Serial200.md"
|
||||
},
|
||||
{
|
||||
"basename": "DAR Description - DIET AS REGULAR - SAE452 San Giorgio in Bosco",
|
||||
"path": "04-SIDEL/09 - SAE452 - Diet as Regular - San Giovanni in Bosco/DAR Description - DIET AS REGULAR - SAE452 San Giorgio in Bosco.md"
|
||||
},
|
||||
{
|
||||
"basename": "Test - Fatto su Maselli - 06-05-2025",
|
||||
"path": "04-SIDEL/09 - SAE452 - Diet as Regular - San Giovanni in Bosco/Documentation/Test - Fatto su Maselli - 06-05-2025.md"
|
||||
},
|
||||
{
|
||||
"basename": "GIT commands HELP",
|
||||
"path": "01-Documentation/GIT - GitHub/GIT commands HELP.md"
|
||||
|
@ -79,118 +199,6 @@
|
|||
{
|
||||
"basename": "GitHub Privacy",
|
||||
"path": "01-Documentation/GIT - GitHub/GitHub Privacy.md"
|
||||
},
|
||||
{
|
||||
"basename": "Visit to Maselli 06-05-2025",
|
||||
"path": "04-SIDEL/09 - SAE452 - Diet as Regular - San Giovanni in Bosco/Documentation/Visit to Maselli 06-05-2025.md"
|
||||
},
|
||||
{
|
||||
"basename": "Waveshare RS232-485 Ethernet - Wifi - ADAM 4021 - Using com0com - MaselliSimulatorApp Python",
|
||||
"path": "01-Documentation/Dispositivos - Manuales/Waveshare RS232-485 Ethernet - Wifi/Waveshare RS232-485 Ethernet - Wifi - ADAM 4021 - Using com0com - MaselliSimulatorApp Python.md"
|
||||
},
|
||||
{
|
||||
"basename": "CableMAX - Converter 485 - Serial Adaptor RS232 - CM-RSDB9-PRO",
|
||||
"path": "01-Documentation/Dispositivos - Manuales/CableMAX - Converter 485 - Serial Adaptor RS232 - CM-RSDB9-PRO.md"
|
||||
},
|
||||
{
|
||||
"basename": "ADAM 4021 - 485 to 4..20ma - Commissioning & Firmware update",
|
||||
"path": "01-Documentation/Dispositivos - Manuales/ADAM/ADAM 4021 - 485 to 4..20ma - Commissioning & Firmware update.md"
|
||||
},
|
||||
{
|
||||
"basename": "Maselli Sensor to Siemens PLC Communication Implementation",
|
||||
"path": "01-Documentation/Dispositivos - Manuales/ADAM/Maselli Sensor to Siemens PLC Communication Implementation.md"
|
||||
},
|
||||
{
|
||||
"basename": "Masselli (UR62 & UR29)",
|
||||
"path": "04-SIDEL/09 - SAE452 - Diet as Regular - San Giovanni in Bosco/Masselli (UR62 & UR29).md"
|
||||
},
|
||||
{
|
||||
"basename": "ADAM -",
|
||||
"path": "04-SIDEL/09 - SAE452 - Diet as Regular - San Giovanni in Bosco/ADAM -.md"
|
||||
},
|
||||
{
|
||||
"basename": "Untitled",
|
||||
"path": "04-SIDEL/06 - E5.007363 - Modifica O&U - SAE196 (cip integrato)/Untitled.md"
|
||||
},
|
||||
{
|
||||
"basename": "Communication TSEND_C - TRCV_C",
|
||||
"path": "01-Documentation/Siemens/PLC Siemens/Communication TSEND_C - TRCV_C.md"
|
||||
},
|
||||
{
|
||||
"basename": "Maselli Proprietary Serial-Socket Protocol",
|
||||
"path": "01-Documentation/Dispositivos - Manuales/Maselli/Maselli - Utility/Maselli Proprietary Serial-Socket Protocol.md"
|
||||
},
|
||||
{
|
||||
"basename": "Maselli - Protocol - Gateway - 485 - Ethernet",
|
||||
"path": "01-Documentation/Dispositivos - Manuales/Maselli/Maselli - Protocol - Gateway - 485 - Ethernet.md"
|
||||
},
|
||||
{
|
||||
"basename": "Untitled",
|
||||
"path": "04-SIDEL/09 - SAE452 - Diet as Regular - San Giovanni in Bosco/Untitled.md"
|
||||
},
|
||||
{
|
||||
"basename": "com0com Setup Only version 2.2 - version 3 NOT WORKING with Windows 11",
|
||||
"path": "01-Documentation/Dispositivos - Manuales/COM - Virtual COM com0com/com0com Setup Only version 2.2 - version 3 NOT WORKING with Windows 11.md"
|
||||
},
|
||||
{
|
||||
"basename": "LAD Descriptions from XDA files from Tia Portal",
|
||||
"path": "01-Documentation/Python/Scripts Python/XML to SCL Siemens/LAD Descriptions from XDA files from Tia Portal.md"
|
||||
},
|
||||
{
|
||||
"basename": "AI Prompts useful",
|
||||
"path": "01-Documentation/AI - IA - LLM - Artificial Intelligence/AI Prompts useful.md"
|
||||
},
|
||||
{
|
||||
"basename": "Guía de Exportación a Formato SIMATIC SD con TIA Portal Openness y Csharp",
|
||||
"path": "01-Documentation/Siemens/Openness/Guía de Exportación a Formato SIMATIC SD con TIA Portal Openness y Csharp.md"
|
||||
},
|
||||
{
|
||||
"basename": "Projects Description",
|
||||
"path": "04-SIDEL/Projects Description.md"
|
||||
},
|
||||
{
|
||||
"basename": "SAE346 - HMI - Machine Configuration",
|
||||
"path": "04-SIDEL/05 - E5.007161 - Modifica O&U - SAE346/SAE346 - HMI - Machine Configuration.md"
|
||||
},
|
||||
{
|
||||
"basename": "Comm - Mixer - Filler",
|
||||
"path": "04-SIDEL/05 - E5.007161 - Modifica O&U - SAE346/COMM - FILLER - MIXER/Comm - Mixer - Filler.md"
|
||||
},
|
||||
{
|
||||
"basename": "SAE346 - Software adaptation from Master - Notes",
|
||||
"path": "04-SIDEL/05 - E5.007161 - Modifica O&U - SAE346/SAE346 - Software adaptation from Master - Notes.md"
|
||||
},
|
||||
{
|
||||
"basename": "SAE346 P&ID",
|
||||
"path": "04-SIDEL/05 - E5.007161 - Modifica O&U - SAE346/SAE346 P&ID.md"
|
||||
},
|
||||
{
|
||||
"basename": "SAE346 - Signals - CIP - Filler - Syrop",
|
||||
"path": "04-SIDEL/05 - E5.007161 - Modifica O&U - SAE346/SAE346 - Signals - CIP - Filler - Syrop.md"
|
||||
},
|
||||
{
|
||||
"basename": "SAE346 - Process diagram",
|
||||
"path": "04-SIDEL/05 - E5.007161 - Modifica O&U - SAE346/SAE346 - Process diagram.md"
|
||||
},
|
||||
{
|
||||
"basename": "SAE346 - Master adaptation to compile",
|
||||
"path": "04-SIDEL/05 - E5.007161 - Modifica O&U - SAE346/SAE346 - Master adaptation to compile.md"
|
||||
},
|
||||
{
|
||||
"basename": "SAE346 - IO from Electrical Diagram",
|
||||
"path": "04-SIDEL/05 - E5.007161 - Modifica O&U - SAE346/SAE346 - IO from Electrical Diagram.md"
|
||||
},
|
||||
{
|
||||
"basename": "Openness Python Library - siemens_tia_scripting",
|
||||
"path": "01-Documentation/Siemens/Openness/Openness Python Library - siemens_tia_scripting.md"
|
||||
},
|
||||
{
|
||||
"basename": "Untitled",
|
||||
"path": "04-SIDEL/13 - E5.007560 - Modifica O&U - SAE235/Untitled.md"
|
||||
},
|
||||
{
|
||||
"basename": "Notas para crear nuevas aplicaciones",
|
||||
"path": "07 - Desarrolo de Proyectos - Scripts - Visual Studio/Proyectos Visual Studio/Notas para crear nuevas aplicaciones.md"
|
||||
}
|
||||
],
|
||||
"omittedPaths": [],
|
||||
|
|
File diff suppressed because one or more lines are too long
|
@ -0,0 +1,14 @@
|
|||
{
|
||||
"id": "solve",
|
||||
"name": "Solve",
|
||||
"version": "1.1.0",
|
||||
"minAppVersion": "0.15.0",
|
||||
"description": "Supercharge your notes with real-time calculations without AI fuss. From dates ('Now + 20 days'), percentages ('10% of 120'), units of measurement ('100cm + 2m'), arithmetic ('10 + 5') and more!",
|
||||
"author": "Liam Riddell",
|
||||
"authorUrl": "https://github.com/LiamRiddell",
|
||||
"fundingUrl": {
|
||||
"Buy Me a Coffee": "https://www.buymeacoffee.com/liamriddell",
|
||||
"GitHub Sponser": "https://github.com/sponsors/LiamRiddell"
|
||||
},
|
||||
"isDesktopOnly": false
|
||||
}
|
File diff suppressed because one or more lines are too long
|
@ -4,67 +4,49 @@
|
|||
"type": "split",
|
||||
"children": [
|
||||
{
|
||||
"id": "06a172e6fdedfbf5",
|
||||
"id": "8d35ee3dbc1e7652",
|
||||
"type": "tabs",
|
||||
"children": [
|
||||
{
|
||||
"id": "46cbecdfd83b10e4",
|
||||
"id": "db16746106a49cac",
|
||||
"type": "leaf",
|
||||
"state": {
|
||||
"type": "markdown",
|
||||
"state": {
|
||||
"file": "04-SIDEL/09 - SAE452 - Diet as Regular - San Giovanni in Bosco/Documentation/Test - Fatto su Maselli - 06-05-2025.md",
|
||||
"file": "03-VM/44 - 98050 - Fiera/IO/Mapping Divider.md",
|
||||
"mode": "source",
|
||||
"source": false,
|
||||
"backlinks": false
|
||||
},
|
||||
"icon": "lucide-file",
|
||||
"title": "Test - Fatto su Maselli - 06-05-2025"
|
||||
"title": "Mapping Divider"
|
||||
}
|
||||
},
|
||||
{
|
||||
"id": "5964c169ed489ae8",
|
||||
"id": "5db613eb1ce999fb",
|
||||
"type": "leaf",
|
||||
"state": {
|
||||
"type": "markdown",
|
||||
"type": "excalidraw",
|
||||
"state": {
|
||||
"file": "04-SIDEL/09 - SAE452 - Diet as Regular - San Giovanni in Bosco/FB2120 - MasseliTCP/Hardware used for 485-TCP.md",
|
||||
"mode": "source",
|
||||
"source": false,
|
||||
"backlinks": false
|
||||
"file": "03-VM/44 - 98050 - Fiera/Layout - Anello-Ring.md"
|
||||
},
|
||||
"icon": "lucide-file",
|
||||
"title": "Hardware used for 485-TCP"
|
||||
"icon": "excalidraw-icon",
|
||||
"title": "Layout - Anello-Ring"
|
||||
}
|
||||
},
|
||||
{
|
||||
"id": "e1a87a8e25c39351",
|
||||
"id": "075404432f3ecddb",
|
||||
"type": "leaf",
|
||||
"state": {
|
||||
"type": "markdown",
|
||||
"state": {
|
||||
"file": "04-SIDEL/09 - SAE452 - Diet as Regular - San Giovanni in Bosco/FB2120 - MasseliTCP/FB2120 - MasseliTCP Read - v1.8.md",
|
||||
"mode": "source",
|
||||
"file": "03-VM/44 - 98050 - Fiera/IO/PLC IO Tags.md",
|
||||
"mode": "preview",
|
||||
"source": false,
|
||||
"backlinks": false
|
||||
},
|
||||
"icon": "lucide-file",
|
||||
"title": "FB2120 - MasseliTCP Read - v1.8"
|
||||
}
|
||||
},
|
||||
{
|
||||
"id": "2bc2280b9c18e51a",
|
||||
"type": "leaf",
|
||||
"state": {
|
||||
"type": "markdown",
|
||||
"state": {
|
||||
"file": "04-SIDEL/09 - SAE452 - Diet as Regular - San Giovanni in Bosco/FB2120 - MasseliTCP/FB2120 - MasseliTCP Read - v1.8.md",
|
||||
"mode": "source",
|
||||
"source": false,
|
||||
"backlinks": false
|
||||
},
|
||||
"icon": "lucide-file",
|
||||
"title": "FB2120 - MasseliTCP Read - v1.8"
|
||||
"title": "PLC IO Tags"
|
||||
}
|
||||
}
|
||||
],
|
||||
|
@ -135,7 +117,8 @@
|
|||
}
|
||||
],
|
||||
"direction": "horizontal",
|
||||
"width": 286.5
|
||||
"width": 286.5,
|
||||
"collapsed": true
|
||||
},
|
||||
"right": {
|
||||
"id": "403186784ae0fd88",
|
||||
|
@ -151,7 +134,7 @@
|
|||
"state": {
|
||||
"type": "backlink",
|
||||
"state": {
|
||||
"file": "04-SIDEL/09 - SAE452 - Diet as Regular - San Giovanni in Bosco/FB2120 - MasseliTCP/FB2120 - MasseliTCP Read - v1.8.md",
|
||||
"file": "01-Documentation/Routers/Mikrotik - Network Redes/Backups - Mikrotik.md",
|
||||
"collapseAll": false,
|
||||
"extraContext": false,
|
||||
"sortOrder": "alphabetical",
|
||||
|
@ -161,7 +144,7 @@
|
|||
"unlinkedCollapsed": true
|
||||
},
|
||||
"icon": "links-coming-in",
|
||||
"title": "Backlinks for FB2120 - MasseliTCP Read - v1.8"
|
||||
"title": "Backlinks for Backups - Mikrotik"
|
||||
}
|
||||
},
|
||||
{
|
||||
|
@ -233,7 +216,8 @@
|
|||
"title": "Copilot"
|
||||
}
|
||||
}
|
||||
]
|
||||
],
|
||||
"currentTab": 4
|
||||
}
|
||||
],
|
||||
"direction": "horizontal",
|
||||
|
@ -262,39 +246,44 @@
|
|||
"obsidian-importer:Open Importer": false
|
||||
}
|
||||
},
|
||||
"active": "e1a87a8e25c39351",
|
||||
"active": "075404432f3ecddb",
|
||||
"lastOpenFiles": [
|
||||
"04-SIDEL/09 - SAE452 - Diet as Regular - San Giovanni in Bosco/FB2120 - MasseliTCP/FB2120 - MasseliTCP Read - Descrizzione Software - v1.8.md",
|
||||
"04-SIDEL/09 - SAE452 - Diet as Regular - San Giovanni in Bosco/FB2120 - MasseliTCP/Hardware used for 485-TCP.md",
|
||||
"04-SIDEL/09 - SAE452 - Diet as Regular - San Giovanni in Bosco/FB2120 - MasseliTCP/FB2120 - MasseliTCP Read - v1.8.md",
|
||||
"04-SIDEL/09 - SAE452 - Diet as Regular - San Giovanni in Bosco/FB2120 - MasseliTCP/Untitled/Untitled.md",
|
||||
"04-SIDEL/09 - SAE452 - Diet as Regular - San Giovanni in Bosco/FB2120 - MasseliTCP/Untitled/doc1.3.md",
|
||||
"01-Documentation/Dispositivos - Manuales/Mouse/Problem with drag&drop or Left Click.md",
|
||||
"01-Documentation/Dispositivos - Manuales/Mouse",
|
||||
"03-VM/44 - 98050 - Fiera/IO/PLC IO Tags.md",
|
||||
"03-VM/44 - 98050 - Fiera/IO/Mapping Divider.md",
|
||||
"01-Documentation/Windows/SysInternals Tools - WinInternals.md",
|
||||
"03-VM/44 - 98050 - Fiera/IO/Device IO Tags.md",
|
||||
"01-Documentation/AI - IA - LLM - Artificial Intelligence/AI Prompts useful.md",
|
||||
"03-VM/44 - 98050 - Fiera/Layout - Anello-Ring.md",
|
||||
"03-VM/44 - 98050 - Fiera/IO",
|
||||
"03-VM/44 - 98050 - Fiera/IO - Ips Nodes.md",
|
||||
"04-SIDEL/09 - SAE452 - Diet as Regular - San Giovanni in Bosco/DAR Description - DIET AS REGULAR - SAE452 San Giorgio in Bosco.md",
|
||||
"03-VM/44 - 98050 - Fiera/98050_Hardware.md",
|
||||
"01-Documentation/Python/Scripts Python/Conda - Anaconda - miniconda.md",
|
||||
"03-VM/44 - 98050 - Fiera/Progetto 98050 Fiera - Tavolo di accumulo - Logica - v 0.1 - Esp.md",
|
||||
"03-VM/44 - 98050 - Fiera/98050_PLC_01_CAx_Export_Hardware_Tree.md",
|
||||
"03-VM/44 - 98050 - Fiera/98050_PLC_01_CAx_Summary.md",
|
||||
"01-Documentation/Python/Scripts Python/Calc/Calc v0.3 Pure.md",
|
||||
"01-Documentation/Python/Scripts Python/Calc/Calc v0.2.md",
|
||||
"01-Documentation/Python/Scripts Python/Calc/Calc v0.1.md",
|
||||
"01-Documentation/Python/Scripts Python/Calc/Untitled 1.md",
|
||||
"01-Documentation/Python/Scripts Python/Untitled.md",
|
||||
"01-Documentation/Python/Scripts Python/Miniconda Como hacer un backup completo de un entorno creado con Miniconda.md",
|
||||
"01-Documentation/Python/Scripts Python/Calc",
|
||||
"01-Documentation/Python/Scripts Python/Group Scripts Manager.md",
|
||||
"03-VM/41 - 94154 - Update Multilane Table/Notes - Update Multilane Table.md",
|
||||
"01-Documentation/Routers/Mikrotik - Network Redes/Backups - Mikrotik.md",
|
||||
"01-Documentation/Routers/Mikrotik - Network Redes/Mikrotik - Comandos WIFI - Clientes de wlan y CAP.md",
|
||||
"01-Documentation/Routers/Mikrotik - Network Redes/Mikrotik - Setup Commands for Layer 2 Wi-Fi Bridge.md",
|
||||
"03-VM/44 - 98050 - Fiera/Progetto 98050 Fiera - Tavolo di accumulo - Logica - v 0.0 - Ita.md",
|
||||
"03-VM/44 - 98050 - Fiera/adjuntos/Layout-Model.png",
|
||||
"03-VM/44 - 98050 - Fiera/adjuntos",
|
||||
"04-SIDEL/09 - SAE452 - Diet as Regular - San Giovanni in Bosco/FB2120 - MasseliTCP/Untitled",
|
||||
"04-SIDEL/09 - SAE452 - Diet as Regular - San Giovanni in Bosco/FB2120 - MasseliTCP/adjuntos/Pasted image 20250530095111.png",
|
||||
"04-SIDEL/09 - SAE452 - Diet as Regular - San Giovanni in Bosco/FB2120 - MasseliTCP/adjuntos/Pasted image 20250530095053.png",
|
||||
"04-SIDEL/09 - SAE452 - Diet as Regular - San Giovanni in Bosco/FB2120 - MasseliTCP/Versiones.md",
|
||||
"04-SIDEL/09 - SAE452 - Diet as Regular - San Giovanni in Bosco/FB2120 - MasseliTCP/Untitled 1.md",
|
||||
"04-SIDEL/09 - SAE452 - Diet as Regular - San Giovanni in Bosco/FB2120 - MasseliTCP/Untitled.md",
|
||||
"01-Documentation/Siemens/PLC Siemens/S7-300 - TCON - TRCV.md",
|
||||
"04-SIDEL/09 - SAE452 - Diet as Regular - San Giovanni in Bosco/FB2120 - MasseliTCP/adjuntos/Pasted image 20250529221344.png",
|
||||
"04-SIDEL/09 - SAE452 - Diet as Regular - San Giovanni in Bosco/FB2120 - MasseliTCP/adjuntos/Pasted image 20250529221334.png",
|
||||
"01-Documentation/Dispositivos - Manuales/Maselli/Maselli - ADAM - Protocol.md",
|
||||
"03-VM/44 - 98050 - Fiera/Progetto 98050 Fiera - Tavolo di accumulo.md",
|
||||
"03-VM/44 - 98050 - Fiera/Untitled.md",
|
||||
"01-Documentation/Dockers/Install Docker on Ubuntu.md",
|
||||
"03-VM/9..... MASTER Transport/Standard Transport/FB Scan Time - FB1.md",
|
||||
"04-SIDEL/03 - 5.007382-EXMU01UF - RVU008 - EQPT24731/5.007382-EXMU01UF - RVU008 - EQPT24731 - Initial Data.md",
|
||||
"03-VM/9..... MASTER Transport/Standard Transport/OB30 Calculation.md",
|
||||
"03-VM/9..... MASTER Transport/Standard Transport/FB Scan Time OB1 - FB4.md",
|
||||
"01-Documentation/Dockers/Docker Basics - Essential Commands and Usage Guide.md",
|
||||
"01-Documentation/Dispositivos - Manuales/Waveshare RS232-485 Ethernet - Wifi/Waveshare RS232-485 Ethernet - Wifi - ADAM 4021 - Using Serial200.md",
|
||||
"04-SIDEL/09 - SAE452 - Diet as Regular - San Giovanni in Bosco/DAR Description - DIET AS REGULAR - SAE452 San Giorgio in Bosco.md",
|
||||
"04-SIDEL/09 - SAE452 - Diet as Regular - San Giovanni in Bosco/Documentation/Test - Fatto su Maselli - 06-05-2025.md",
|
||||
"01-Documentation/GIT - GitHub/GIT commands HELP.md",
|
||||
"01-Documentation/GIT - GitHub/Notes - Git - Gitea.md",
|
||||
"01-Documentation/GIT - GitHub/Git - Start New Repository with Visual Studio Code - VS Code.md",
|
||||
"01-Documentation/GIT - GitHub/GitHub Privacy.md",
|
||||
"04-SIDEL/09 - SAE452 - Diet as Regular - San Giovanni in Bosco/Documentation/Visit to Maselli 06-05-2025.md",
|
||||
"04-SIDEL/09 - SAE452 - Diet as Regular - San Giovanni in Bosco/FB2120 - MasseliTCP/adjuntos/Pasted image 20250526165501.png",
|
||||
"04-SIDEL/09 - SAE452 - Diet as Regular - San Giovanni in Bosco/FB2120 - MasseliTCP/adjuntos",
|
||||
"04-SIDEL/09 - SAE452 - Diet as Regular - San Giovanni in Bosco/FB2120 - MasseliTCP",
|
||||
|
@ -304,12 +293,7 @@
|
|||
"01-Documentation/Dispositivos - Manuales/Waveshare RS232-485 Ethernet - Wifi/adjuntos",
|
||||
"01-Documentation/Dispositivos - Manuales/Waveshare RS232-485 Ethernet - Wifi",
|
||||
"01-Documentation/Dispositivos - Manuales/COM - Virtual COM com0com/adjuntos/Pasted image 20250523122236.png",
|
||||
"01-Documentation/Dispositivos - Manuales/adjuntos/Pasted image 20250522183148.png",
|
||||
"01-Documentation/Dispositivos - Manuales/COM - Virtual COM com0com/adjuntos",
|
||||
"01-Documentation/Dispositivos - Manuales/COM - Virtual COM com0com/Untitled",
|
||||
"01-Documentation/Dispositivos - Manuales/COM - Virtual COM com0com",
|
||||
"01-Documentation/Python/Scripts Python/XML to SCL Siemens",
|
||||
"04-SIDEL/13 - E5.007560 - Modifica O&U - SAE235",
|
||||
"03-Revised/93789 Sipa Italia - Tinny - HSCounters - Piattaforma/Divider/Untitled.canvas",
|
||||
"04-InLavoro/9..... MASTER Transport/Standard Transport/FB500 Logic.canvas",
|
||||
"04-InLavoro/HENKEL/93040 - HENKEL - BowlingGreen/TL22-L25/Synoptic Change/Q3.canvas",
|
||||
|
|
|
@ -302,3 +302,13 @@ Al final del documento, crea una sección titulada "## Excepciones y Problemas"
|
|||
Quiero crer una aplicacion .net 8 en C# WPF que use modelo MVVM con los siguientes nugets si son necesarios CommunityToolkit.Mvvm, Ookii.Dialogs.Wpf, NewtonSoft.Json, Extended.Wpf.Toolkit.
|
||||
|
||||
```
|
||||
|
||||
|
||||
#### Para mapear IO de device sobre IO de PLC
|
||||
|
||||
Hacer OCR desde el esquema eléctrico para las IO del PLC
|
||||
Exportar tags dese Tia Portal y convertirlas con 3:Convertir Excel Tags a Markdown
|
||||
|
||||
```
|
||||
Quisiera que me ayudes a adaptar los tags de Device IO Tags a los IO reales del PLC PLC IO Tags usando solo los comentarios ya que no tengo otra informacion. Por favor indicar el nivel de seguridad y si el nivel de seguridad es mas bajo de 70% no adaptar. La tabla resultante deberia ser Device IO Tags con las direcciones del PLC IO Tags.
|
||||
```
|
|
@ -0,0 +1,20 @@
|
|||
|
||||
### Way 1. Run the SFC and DISM Scans
|
||||
|
||||
Firstly, the problems with drag-and-drop can be due to corrupted system files. Hence, you can run the [System File Checker](https://en.wikipedia.org/wiki/System_File_Checker) (SFC) and Deployment Image Servicing Management (DISM) on your system. The SFC scan detects and replaces the corrupt files, while the DISM scan directly replaces these files from Microsoft.
|
||||
|
||||
The quick steps to run SFC and DISM scans include the following:
|
||||
|
||||
**Step 1:** Type "Powershell" in the search bar.
|
||||
|
||||
**Step 2**. Select the "Run as Administrator" option from the right-side menu.
|
||||
|
||||
**Step 3.** Type the command sfc / scannow and press enter.
|
||||
|
||||

|
||||
|
||||
**Step 4.** Wait until the SFC scan is complete.
|
||||
|
||||
**Step 5.** Now, type the command DISM /Online /Cleanup-Image /RestoreHealth and press enter.
|
||||
|
||||
**Step 6.** Wait until the DISM scan is complete, then reboot your system to check if drag-and-drop is functioning properly.
|
|
@ -0,0 +1,5 @@
|
|||
|
||||
## MR-J4:
|
||||
|
||||
[Search Results Global \| Mitsubishi Electric Americas](https://us.mitsubishielectric.com/fa/en/search/#q=MR-J4&sort=relevancy&f:@sysfiletype=[zip]&sir=siemens)
|
||||
|
|
@ -0,0 +1,236 @@
|
|||
# Calculadora Algebraica Híbrida
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
### Concepto Fundamental
|
||||
|
||||
La calculadora mantiene **forma simbólica como representación primaria** y proporciona **evaluación numérica como información complementaria** cuando es posible y útil.
|
||||
|
||||
**Principio de Evaluación Numérica**: El resultado siempre se intenta calcular numéricamente y se muestra cuando la representación string del resultado numérico difiere del resultado algebraico.
|
||||
|
||||
## Sistema de Asignaciones y Ecuaciones
|
||||
|
||||
### Principio: Separación clara entre asignaciones y ecuaciones
|
||||
|
||||
```python
|
||||
# Asignación de variable
|
||||
x = 5 # → Se guarda el valor simbólico (NO se agrega como ecuación)
|
||||
y = x + a # → Se guarda la expresión simbólica
|
||||
|
||||
# Ecuación pura (detección automática)
|
||||
x**2 + 2*x = 8 # → Se agrega como ecuación Eq(x**2 + 2*x, 8)
|
||||
a + b = 10 # → Se agrega como ecuación Eq(a + b, 10)
|
||||
a > b + 1 # → Se agrega como desigualdad
|
||||
```
|
||||
|
||||
### Criterios de Detección de Ecuaciones
|
||||
|
||||
**Se considera ecuación si:**
|
||||
|
||||
- Contiene `=` Y NO es una asignación simple de variable
|
||||
- Contiene operadores de comparación: `==`, `>`, `<`, `>=`, `<=`
|
||||
- Tiene estructura algebraica en ambos lados del `=`
|
||||
|
||||
**NO se considera ecuación:**
|
||||
|
||||
- Asignaciones simples: `x = 5`, `y = expresión`
|
||||
- Líneas con solo números o comentarios
|
||||
|
||||
---
|
||||
|
||||
## Uso de `solve()` y el Atajo `=?`
|
||||
|
||||
### Principio: `variable=?` es equivalente a `solve(variable)`
|
||||
|
||||
```python
|
||||
# Ambas formas son idénticas:
|
||||
solve(a) # Resuelve 'a' usando el sistema de ecuaciones
|
||||
a=? # Atajo sintáctico para solve(a)
|
||||
```
|
||||
|
||||
El comando intenta resolver algebraicamente y numéricamente en paralelo cuando es posible.
|
||||
|
||||
---
|
||||
|
||||
## Sistema de Tokenización con Prioridades
|
||||
|
||||
### Principio: Las prioridades son números arbitrarios que determinan el orden de aplicación
|
||||
|
||||
```
|
||||
Prioridad 5: IntBase → Patrón: 16#FF (muy específico)
|
||||
Prioridad 6: Hex/Bin → Patrón: 0xFF, 0b1010 (específico)
|
||||
Prioridad 10: FourBytes → Patrón: x.x.x.x (general)
|
||||
```
|
||||
|
||||
**Regla**: Menor número = se aplica primero
|
||||
|
||||
Esto garantiza que `16#10.10.10.10` se tokenice como IntBase antes de considerar FourBytes.
|
||||
|
||||
---
|
||||
|
||||
## Conversión Perezosa y Tipos Especializados
|
||||
|
||||
### Principio: Mantener el tipo especializado siempre que sea posible
|
||||
|
||||
**Se evita convertir a SymPy al máximo**. Los objetos especializados mantienen su tipo cuando pueden resolver la operación internamente.
|
||||
|
||||
```python
|
||||
# Operaciones que mantienen el tipo especializado:
|
||||
Hex(15) + 1 → Hex(16) # Hex maneja la suma
|
||||
16#15 + 1 → 16#16 # IntBase maneja la suma
|
||||
10.1.1.1 + 1 → 10.1.1.2 # FourBytes maneja la suma
|
||||
|
||||
# Conversión a SymPy solo cuando es necesario:
|
||||
sin(16#FF) → sin(255) # sin() requiere SymPy
|
||||
solve(x + 16#10) → solve() # Álgebra compleja requiere SymPy
|
||||
```
|
||||
|
||||
**Regla**: Solo se convierte a SymPy cuando el token no es atómico o la operación requiere capacidades algebraicas avanzadas.
|
||||
|
||||
---
|
||||
|
||||
## Contexto Limpio por Evaluación
|
||||
|
||||
### Principio: Cada evaluación comienza desde cero
|
||||
|
||||
**Contexto Limpio** significa:
|
||||
|
||||
- Se eliminan todas las ecuaciones previas
|
||||
- Se eliminan todas las variables definidas
|
||||
- Se re-evalúa todo el contenido línea por línea
|
||||
- Comportamiento idéntico a iniciar una nueva sesión
|
||||
|
||||
Esto garantiza resultados predecibles y sin efectos secundarios acumulados.
|
||||
|
||||
---
|
||||
|
||||
## Resultados Interactivos
|
||||
|
||||
### Principio: Activación mediante clicks en elementos con binding
|
||||
|
||||
Los resultados interactivos se crean cuando el tipo de resultado requiere visualización expandida:
|
||||
|
||||
```python
|
||||
plot(sin(x)) → "📊 Ver Plot" # Click abre ventana matplotlib
|
||||
Matrix([[1,2],[3,4]]) → "📋 Ver Matriz" # Click muestra matriz formateada
|
||||
[1,2,3,4,5,6,7,8] → "📋 Ver Lista" # Click expande contenido
|
||||
```
|
||||
|
||||
**Activación**: Click en el texto con binding dispara la ventana emergente correspondiente.
|
||||
|
||||
---
|
||||
|
||||
## Sistema de Autocompletado
|
||||
|
||||
### Principio: Sistema extensible con prioridades (por implementar)
|
||||
|
||||
Se propone usar un sistema de prioridades numéricas similar al de tokenización:
|
||||
|
||||
```
|
||||
Prioridad 1: Métodos del objeto específico
|
||||
Prioridad 2: Métodos de la clase base
|
||||
Prioridad 3: Funciones SymPy relevantes
|
||||
Prioridad 4: Helpers contextuales
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## Integración con SymPy
|
||||
|
||||
### Principio: En casos de conflicto, siempre prevalece SymPy
|
||||
|
||||
Cuando hay ambigüedad o conflicto entre tipos personalizados y SymPy:
|
||||
|
||||
- Funciones SymPy tienen precedencia
|
||||
- Símbolos SymPy (como `e`, `pi`) mantienen su significado matemático
|
||||
- Las conversiones fallidas retornan a comportamiento SymPy estándar
|
||||
|
||||
---
|
||||
|
||||
## Arquitectura de Tipos Personalizados
|
||||
|
||||
### Clases Base Universales
|
||||
|
||||
**IntBase**: Números en cualquier base
|
||||
|
||||
- Aritmética nativa que preserva la base
|
||||
- Conversión a SymPy solo cuando necesario
|
||||
- Soporte para símbolos algebraicos
|
||||
|
||||
**FourBytes**: Patrones x.x.x.x
|
||||
|
||||
- Aritmética de 32-bit para IPs
|
||||
- Soporte para elementos simbólicos
|
||||
- Base para tipos como IP4
|
||||
|
||||
### Principio de Extensibilidad
|
||||
|
||||
Cada tipo en `custom_types/` define:
|
||||
|
||||
1. Su lógica de tokenización
|
||||
2. Sus operaciones aritméticas
|
||||
3. Sus métodos de conversión
|
||||
4. Su ayuda contextual
|
||||
5. Sus sugerencias de autocompletado
|
||||
|
||||
---
|
||||
|
||||
## Flujo de Evaluación Completo
|
||||
|
||||
```
|
||||
Entrada Usuario
|
||||
↓
|
||||
[Tokenización Universal]
|
||||
↓
|
||||
¿Asignación o Ecuación?
|
||||
├─ Asignación → Guardar valor simbólico
|
||||
└─ Ecuación → Agregar al sistema
|
||||
↓
|
||||
[Evaluación]
|
||||
├─ Mantener tipo especializado si es posible
|
||||
└─ Convertir a SymPy si es necesario
|
||||
↓
|
||||
[Resultado]
|
||||
├─ Forma simbólica (siempre)
|
||||
└─ Evaluación numérica (si difiere como string)
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## Ejemplos Integrales
|
||||
|
||||
```python
|
||||
# Tokenización y tipos especializados
|
||||
16#FF + 2#1010 → 16#109 # IntBase preservado
|
||||
192.168.1.1 + 5 → 192.168.1.6 # FourBytes preservado
|
||||
|
||||
# Asignaciones vs ecuaciones
|
||||
x = 10 # Asignación (solo guarda valor)
|
||||
x + y = 15 # Ecuación (se agrega al sistema)
|
||||
y=? # solve(y) → y = 5
|
||||
|
||||
# Evaluación numérica automática
|
||||
4/5 → 4/5 ≈ 0.8 # Difiere como string
|
||||
sqrt(2) → √2 ≈ 1.414 # Difiere como string
|
||||
2 + 3 → 5 # NO se muestra ≈ (igual string)
|
||||
|
||||
# Resultados interactivos
|
||||
plot(sin(x)) → "📊 Ver Plot" [clickeable]
|
||||
Matrix([[1,2]]) → "📋 Ver Matriz" [clickeable]
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## Principios de Diseño Resumidos
|
||||
|
||||
1. **Álgebra primero**: Mantener forma simbólica siempre
|
||||
2. **Evaluación numérica inteligente**: Mostrar solo cuando agrega valor
|
||||
3. **Tipos especializados preservados**: Conversión a SymPy solo cuando necesario
|
||||
4. **Tokenización ordenada**: Sistema de prioridades simple y predecible
|
||||
5. **Contexto limpio**: Cada evaluación desde cero
|
||||
6. **Extensibilidad**: Nuevos tipos se integran automáticamente
|
||||
7. **SymPy prevalece**: En conflictos, el comportamiento matemático estándar gana
|
||||
|
||||
Este documento ahora refleja con precisión la arquitectura implementada y sirve como guía coherente para el desarrollo futuro.
|
|
@ -0,0 +1,434 @@
|
|||
# Calculator MAV - Hybrid CAS Application Logic
|
||||
***
|
||||
## Overview
|
||||
|
||||
This document describes the operational logic of the Calculator MAV (Hybrid Computer Algebra System), focusing on the semantic flow from user input to result display. The application implements a distributed tokenization system with automatic type discovery, pure algebraic evaluation, and hybrid symbolic-numeric computation.
|
||||
|
||||
## Architecture Components
|
||||
|
||||
### 1. Application Entry Point (calc.py)
|
||||
The launcher serves as the system bootstrap, handling:
|
||||
- **Logging Infrastructure**: Establishes comprehensive error tracking with automatic log rotation
|
||||
- **System Verification**: Validates dependencies and environment setup
|
||||
- **Error Recovery**: Provides detailed error reporting with context-aware debugging information
|
||||
- **Application Lifecycle**: Manages startup, execution, and graceful shutdown
|
||||
|
||||
### 2. Main Application Interface (main_calc_app.py)
|
||||
The GUI application provides:
|
||||
- **Dual-Pane Interface**: Synchronized input and output panels with smart resizing
|
||||
- **Real-time Evaluation**: Debounced input processing with automatic width adjustment
|
||||
- **Interactive Results**: Clickable elements for plots, matrices, and complex data structures
|
||||
- **Dynamic Help System**: Context-aware assistance using registered type helpers
|
||||
|
||||
### 3. Type Discovery System (type_registry.py)
|
||||
The core innovation implementing:
|
||||
- **Automatic Class Detection**: Scans custom_types directory for *_type.py files
|
||||
- **Dynamic Registration**: Loads classes and their capabilities without code modification
|
||||
- **Tokenization Pattern Collection**: Aggregates parsing rules from individual types
|
||||
- **Context Building**: Creates unified namespace for evaluation engine
|
||||
|
||||
## Computation Flow
|
||||
|
||||
### Phase 1: Input Processing
|
||||
|
||||
When a user types in the input panel, the system triggers a processing cycle:
|
||||
|
||||
**Input Capture**: The text widget captures keystrokes and triggers debounced evaluation after 300ms of inactivity. Special handling occurs for dot notation (triggering autocomplete) and real-time content analysis.
|
||||
|
||||
**Content Parsing**: The entire input content is split into lines, with each line processed independently. Empty lines and comments (starting with #) are preserved but bypassed during evaluation.
|
||||
|
||||
**Context Reset**: Before each full evaluation cycle, the algebraic engine clears its internal state, ensuring consistent results regardless of previous computations.
|
||||
|
||||
### Phase 2: Distributed Tokenization
|
||||
|
||||
The tokenization system operates on a priority-based pattern matching approach:
|
||||
|
||||
**Pattern Discovery**: Each registered type contributes tokenization patterns with priority levels. Higher priority patterns (more specific) are applied first, preventing conflicts between similar syntaxes.
|
||||
|
||||
**Expression Transformation**: The universal tokenizer applies transformations in priority order:
|
||||
- Base number patterns (16#FF, 2#1010) are converted to IntBase constructor calls
|
||||
- Four-element patterns (192.168.1.1, 10.x.y.z) become FourBytes instances
|
||||
- Specialized prefixes (0x, 0b) are handled by specific type patterns
|
||||
|
||||
**Bracket Parser Integration**: After tokenization, the bracket parser handles the simplified syntax transformation from Type[value] to Type("value") constructor calls.
|
||||
|
||||
### Phase 3: Line Classification
|
||||
|
||||
The pure algebraic engine analyzes each processed line to determine its semantic type:
|
||||
|
||||
**Assignment Detection**: Lines matching "variable = expression" where the left side is a valid Python identifier are classified as assignments. These create symbol bindings and optionally add implicit equations if undefined symbols are present.
|
||||
|
||||
**Equation Recognition**: Lines containing equals signs that aren't simple assignments become equations. The system distinguishes between algebraic equations (=) and SymPy comparisons (==, <=, >=, !=).
|
||||
|
||||
**Solve Shortcuts**: The pattern "variable=?" is recognized as shorthand for solve(variable), providing quick variable resolution.
|
||||
|
||||
**Expression Evaluation**: All other lines are treated as mathematical expressions for symbolic or numeric evaluation.
|
||||
|
||||
### Phase 4: Symbolic Evaluation
|
||||
|
||||
The evaluation engine operates in pure algebraic mode:
|
||||
|
||||
**SymPy Integration**: All mathematical operations prioritize symbolic representation, maintaining exact forms (fractions, radicals, symbolic expressions) whenever possible.
|
||||
|
||||
**Dynamic Context**: The evaluation context combines:
|
||||
- Base mathematical functions (sin, cos, integrate, solve, etc.)
|
||||
- Dynamically registered custom types from the type discovery system
|
||||
- User-defined variables from previous assignments
|
||||
- Automatic symbol creation for undefined variables
|
||||
|
||||
**Hybrid Object Handling**: Custom types (IP4, IntBase, FourBytes, etc.) maintain their native operations while integrating seamlessly with SymPy algebra through the SympyClassBase inheritance pattern.
|
||||
|
||||
### Phase 5: Smart Solving
|
||||
|
||||
The equation system implements intelligent resolution:
|
||||
|
||||
**System Building**: Each equation is added to a persistent equation list, with variable extraction and dependency tracking.
|
||||
|
||||
**Variable Resolution**: The solve shortcut (variable=?) triggers sophisticated resolution logic:
|
||||
- Single-variable equations are solved directly
|
||||
- Multi-variable systems use SymPy's constraint solver
|
||||
- Underdetermined systems provide parametric solutions
|
||||
- Overdetermined systems report conflicts with context
|
||||
|
||||
**Automatic Substitution**: Known variable values are automatically substituted into symbolic expressions, providing immediate numeric evaluation when all symbols are resolved.
|
||||
|
||||
### Phase 6: Result Processing
|
||||
|
||||
The evaluation results undergo format optimization:
|
||||
|
||||
**Display Selection**: The system determines the most informative representation:
|
||||
- Symbolic form is preserved for exact mathematical expressions
|
||||
- Numeric approximations are provided when significantly different from symbolic form
|
||||
- Custom type representations use their native display methods
|
||||
|
||||
**Interactive Enhancement**: Complex results (plots, matrices, large lists) are converted to interactive placeholders that open detailed views when clicked.
|
||||
|
||||
**Error Context**: Failed evaluations trigger contextual help suggestions from registered type helpers, providing guidance based on input patterns.
|
||||
|
||||
### Phase 7: Output Synchronization
|
||||
|
||||
The GUI updates reflect the complete evaluation state:
|
||||
|
||||
**Parallel Display**: Input and output panels maintain line-by-line correspondence, with synchronized scrolling and visual alignment.
|
||||
|
||||
**Color Coding**: Results are tagged with semantic colors:
|
||||
- Symbolic expressions in blue
|
||||
- Numeric results in green
|
||||
- Equations in purple
|
||||
- Errors in red
|
||||
- Helper suggestions in gold
|
||||
|
||||
**Layout Adaptation**: The input panel automatically resizes based on content width, maintaining optimal visibility for both mathematical expressions and code.
|
||||
|
||||
## Key Semantic Principles
|
||||
|
||||
### Pure Algebraic Approach
|
||||
Unlike traditional calculators, this system treats every assignment as a potential equation. Variables maintain their symbolic nature until explicitly evaluated, enabling sophisticated algebraic manipulation.
|
||||
|
||||
### Distributed Extensibility
|
||||
The type system allows seamless addition of new mathematical objects without modifying core engine code. Each type contributes its own tokenization patterns, helper functions, and algebraic integration.
|
||||
|
||||
### Context Preservation
|
||||
The evaluation engine maintains a persistent mathematical context across all input lines, enabling complex multi-step calculations and equation system building.
|
||||
|
||||
### Smart Automation
|
||||
The system automatically:
|
||||
- Creates symbols for undefined variables
|
||||
- Applies substitutions when variables are resolved
|
||||
- Provides numeric approximations when helpful
|
||||
- Suggests corrections for invalid input patterns
|
||||
|
||||
### Hybrid Integration
|
||||
Custom types (networking, programming, engineering) integrate seamlessly with pure mathematical operations, enabling domain-specific calculations within a unified algebraic framework.
|
||||
|
||||
This architecture enables the calculator to function as both a powerful symbolic mathematics tool and a specialized computational environment for technical domains, with the flexibility to expand into new areas through the distributed type system.
|
||||
|
||||
|
||||
```plantuml
|
||||
@startuml Calculator_MAV_Flow
|
||||
!define RECTANGLE class
|
||||
|
||||
title Calculator MAV - Hybrid CAS Processing Flow
|
||||
|
||||
start
|
||||
|
||||
:User types in input panel;
|
||||
note right: GUI captures keystrokes\nwith 300ms debounce
|
||||
|
||||
:Input Processing Phase;
|
||||
partition "Input Capture" {
|
||||
:Split content into lines;
|
||||
:Preserve comments and empty lines;
|
||||
:Clear engine context for fresh evaluation;
|
||||
}
|
||||
|
||||
:Distributed Tokenization Phase;
|
||||
partition "Pattern Matching" {
|
||||
:Discover tokenization patterns from registered types;
|
||||
note left: Type registry auto-discovers\npatterns from custom_types/*
|
||||
:Apply high-priority patterns first;
|
||||
note right: 16#FF → IntBase("FF", 16)\n2#1010 → IntBase("1010", 2)
|
||||
:Apply medium-priority patterns;
|
||||
note right: 192.168.1.1 → FourBytes("192.168.1.1")
|
||||
:Apply bracket parser transformations;
|
||||
note right: Type[value] → Type("value")
|
||||
}
|
||||
|
||||
:Line Classification Phase;
|
||||
partition "Semantic Analysis" {
|
||||
if (Line contains "=?") then (yes)
|
||||
:Classify as Solve Shortcut;
|
||||
elseif (Simple assignment pattern?) then (yes)
|
||||
:Classify as Assignment;
|
||||
note right: variable = expression\nwhere left side is valid identifier
|
||||
elseif (Contains = but not assignment?) then (yes)
|
||||
:Classify as Equation;
|
||||
note right: x**2 + 2*x = 8\na + b == 10
|
||||
else (no)
|
||||
:Classify as Expression;
|
||||
endif
|
||||
}
|
||||
|
||||
:Symbolic Evaluation Phase;
|
||||
partition "Algebraic Processing" {
|
||||
if (Assignment type?) then (yes)
|
||||
:Create symbol binding;
|
||||
:Check for undefined symbols;
|
||||
if (Has undefined symbols?) then (yes)
|
||||
:Add implicit equation to system;
|
||||
endif
|
||||
elseif (Equation type?) then (yes)
|
||||
:Parse left and right sides;
|
||||
:Create SymPy Eq object;
|
||||
:Add to equation system;
|
||||
elseif (Solve shortcut?) then (yes)
|
||||
:Extract variable name;
|
||||
:Trigger smart solving;
|
||||
else (Expression)
|
||||
:Evaluate with SymPy priority;
|
||||
:Maintain symbolic form;
|
||||
:Auto-create undefined symbols;
|
||||
endif
|
||||
}
|
||||
|
||||
:Smart Solving Phase;
|
||||
partition "Equation Resolution" {
|
||||
if (Solve shortcut triggered?) then (yes)
|
||||
:Find equations containing variable;
|
||||
if (Single variable equations?) then (yes)
|
||||
:Solve directly;
|
||||
elseif (Multi-variable system?) then (yes)
|
||||
:Use SymPy constraint solver;
|
||||
:Handle parametric solutions;
|
||||
else (no equations)
|
||||
:Return current symbol value;
|
||||
endif
|
||||
endif
|
||||
:Apply automatic substitutions;
|
||||
note right: Substitute known values\ninto symbolic expressions
|
||||
}
|
||||
|
||||
:Result Processing Phase;
|
||||
partition "Output Formatting" {
|
||||
:Determine optimal representation;
|
||||
if (Complex result?) then (yes)
|
||||
:Create interactive placeholder;
|
||||
note right: Plots, matrices, large lists\nbecome clickable elements
|
||||
endif
|
||||
:Generate numeric approximation if helpful;
|
||||
:Apply semantic color coding;
|
||||
note right: Symbolic: blue\nNumeric: green\nEquations: purple\nErrors: red
|
||||
}
|
||||
|
||||
:Output Synchronization Phase;
|
||||
partition "GUI Updates" {
|
||||
:Update output panel with line correspondence;
|
||||
:Apply synchronized scrolling;
|
||||
:Auto-resize input panel based on content;
|
||||
:Enable interactive result clicking;
|
||||
}
|
||||
|
||||
if (Error occurred?) then (yes)
|
||||
:Trigger contextual help from type helpers;
|
||||
note right: Dynamic help based on\ninput patterns and registered types
|
||||
endif
|
||||
|
||||
stop
|
||||
|
||||
@enduml
|
||||
```
|
||||
|
||||
|
||||
```plantuml
|
||||
@startuml Calculator_MAV_Flow_Corrected
|
||||
!define RECTANGLE class
|
||||
|
||||
title Calculator MAV - Pure Algebraic Engine Processing Flow
|
||||
|
||||
start
|
||||
|
||||
:User types in input panel;
|
||||
note right: GUI captures keystrokes\nwith 300ms debounce
|
||||
|
||||
:Input Processing Phase;
|
||||
partition "Input Capture" {
|
||||
:Split content into lines;
|
||||
:Preserve comments and empty lines;
|
||||
:Clear engine context for fresh evaluation;
|
||||
note right: PureAlgebraicEngine.clear_context()
|
||||
}
|
||||
|
||||
:Distributed Tokenization Phase;
|
||||
partition "Pattern Matching" {
|
||||
:Apply dynamic tokenization patterns;
|
||||
note left: From get_registered_tokenization_patterns()
|
||||
:Transform expressions in priority order;
|
||||
note right: 16#FF → IntBase("FF", 16)\n192.168.1.1 → FourBytes("192.168.1.1")
|
||||
:Apply bracket parser processing;
|
||||
}
|
||||
|
||||
:Line Classification Phase;
|
||||
partition "Pure Algebraic Analysis" {
|
||||
if (Line ends with "=?") then (yes)
|
||||
:Classify as Solve Shortcut;
|
||||
note right: x=? becomes solve(x)
|
||||
elseif (Contains "=" and not comparison?) then (yes)
|
||||
:Classify as Equation;
|
||||
note right: ALL assignments become equations\nin pure algebraic mode
|
||||
else (no)
|
||||
:Classify as Expression;
|
||||
endif
|
||||
}
|
||||
|
||||
:Pure Algebraic Evaluation;
|
||||
partition "SymPy-First Processing" {
|
||||
if (Equation type?) then (yes)
|
||||
:Split on "=" sign;
|
||||
:Create SymPy Eq() object;
|
||||
:Add to equations list;
|
||||
:Extract and track variables;
|
||||
elseif (Solve shortcut?) then (yes)
|
||||
:Extract variable name;
|
||||
:Call _solve_variable_in_system();
|
||||
else (Expression)
|
||||
:Evaluate with sympify() first;
|
||||
:Maintain symbolic form;
|
||||
:Apply simplify if configured;
|
||||
endif
|
||||
}
|
||||
|
||||
:Smart Variable Resolution;
|
||||
partition "Equation System Solving" {
|
||||
if (Solve triggered?) then (yes)
|
||||
:Find relevant equations for variable;
|
||||
if (Multi-variable system?) then (yes)
|
||||
:Solve complete system with SymPy;
|
||||
:Extract specific variable;
|
||||
else (simple case)
|
||||
:Solve single variable directly;
|
||||
endif
|
||||
:Update symbol_table with result;
|
||||
endif
|
||||
}
|
||||
|
||||
:Result Processing Phase;
|
||||
partition "Output Formatting" {
|
||||
:Generate symbolic result;
|
||||
:Create numeric approximation if different;
|
||||
:Format as single-line output;
|
||||
note right: Concise format:\n"x = 5 ≈ 5.000000"
|
||||
}
|
||||
|
||||
:Output Synchronization Phase;
|
||||
partition "GUI Updates" {
|
||||
:Update output panel;
|
||||
:Apply color coding for result type;
|
||||
:Auto-resize input panel;
|
||||
}
|
||||
|
||||
if (Error occurred?) then (yes)
|
||||
:Get help from registered helpers;
|
||||
:Display error with context;
|
||||
endif
|
||||
|
||||
stop
|
||||
|
||||
note bottom : **Pure Algebraic Principle**\nAll assignments become equations\nSymbolic evaluation prioritized\nNumeric approximation secondary
|
||||
|
||||
@enduml
|
||||
```
|
||||
|
||||
|
||||
```plantuml
|
||||
@startuml Calculator_MAV_Architecture_Corrected
|
||||
!define RECTANGLE class
|
||||
|
||||
title Calculator MAV - Architecture with Pure Algebraic Engine
|
||||
|
||||
package "Application Layer" {
|
||||
[calc.py] as launcher
|
||||
[main_calc_app.py] as gui
|
||||
}
|
||||
|
||||
package "Core Processing" {
|
||||
[main_evaluation_puro.py] as pure_engine
|
||||
[tl_bracket_parser.py] as parser
|
||||
[type_registry.py] as registry
|
||||
|
||||
note top of pure_engine : **Pure Algebraic Engine**\n• All assignments → equations\n• SymPy-first evaluation\n• Persistent equation system\n• Smart variable resolution
|
||||
}
|
||||
|
||||
package "Unused Components" #lightgray {
|
||||
[main_evaluation.py] as hybrid_engine
|
||||
note bottom of hybrid_engine : Not currently used\nin main application
|
||||
}
|
||||
|
||||
package "Type System" {
|
||||
folder "custom_types/" {
|
||||
[intbase_type.py]
|
||||
[fourbytes_type.py]
|
||||
[ip4_type.py]
|
||||
[... more types]
|
||||
}
|
||||
}
|
||||
|
||||
package "Support Components" {
|
||||
[sympy_Base.py] as base
|
||||
[class_base.py] as classbase
|
||||
[tl_popup.py] as popup
|
||||
[sympy_helper.py] as helper
|
||||
}
|
||||
|
||||
package "External Dependencies" {
|
||||
[SymPy Library] as sympy
|
||||
[Tkinter GUI] as tkinter
|
||||
}
|
||||
|
||||
' Active connections
|
||||
launcher --> gui : "Initialize"
|
||||
gui --> pure_engine : "evaluate_line()"
|
||||
pure_engine --> parser : "process_expression()"
|
||||
parser --> registry : "get_registered_tokenization_patterns()"
|
||||
pure_engine --> registry : "get_registered_base_context()"
|
||||
pure_engine --> sympy : "sympify(), solve(), Eq()"
|
||||
|
||||
' Type system integration
|
||||
registry --> intbase_type.py : "Auto-discover"
|
||||
registry --> fourbytes_type.py : "Load patterns"
|
||||
registry --> "... more types" : "Dynamic loading"
|
||||
|
||||
' Inheritance
|
||||
intbase_type.py --> base
|
||||
fourbytes_type.py --> classbase
|
||||
base --> sympy
|
||||
|
||||
' Support
|
||||
gui --> helper : "Contextual help"
|
||||
gui --> popup : "Interactive results"
|
||||
|
||||
' Unused connection (grayed out)
|
||||
hybrid_engine -.-> sympy : "Not used"
|
||||
|
||||
@enduml
|
||||
```
|
||||
|
|
@ -0,0 +1,165 @@
|
|||
|
||||
# MAV Calculator Application Logic Documentation
|
||||
|
||||
## Overview
|
||||
|
||||
The MAV Calculator is a hybrid Computer Algebra System (CAS) built around a pure algebraic engine that treats all assignments as equations. The application follows a clean pipeline from user input to result display, with sophisticated tokenization and symbolic computation capabilities.
|
||||
|
||||
### The application has this main components:
|
||||
|
||||
* Algebraic components using sympy engine with sympify, solve, evalf. This includes all the mathematical functions and the functions of sympy.
|
||||
* Special objects called Types or classes under custom_types folder.
|
||||
* This classes are automatically discovered at startup.
|
||||
* every class has functions that some are for the interaction with other clases o with sympy. Other functions can be used directly by the user with parameters and returning the same object or other object.
|
||||
* special tokenization patterns & substitution using data collected from classes under custom_types folder.
|
||||
* every class has the Helper function to assist the user when on the line it is detected an error and the line starts with some patter
|
||||
* every class has a descriptor of functions that can be used for this object to permit the autocomplete popup help the user when they press "."
|
||||
|
||||
### Concepts
|
||||
|
||||
* Types : Special classes under custom_types folder. That are automatically discovered at startup.
|
||||
* Cycle: every time the user change the input panel start a cycle that ends when all lines are evaluated and produced an output
|
||||
* Input panel: tk text area where the user can write or modify text.
|
||||
* Output panel: read only tk area text correlated 1:1 to every line on the input panel . Every input line must correspond to only 1 line on the output. The output lines can have colors and binds to click for opening the plots or to show matrix or lists.
|
||||
* Persistence: The app maintain the state of all configurated setup and dimension of the window and all the text on the input panel.
|
||||
|
||||
## Application Architecture
|
||||
|
||||
### Entry Point and Initialization
|
||||
|
||||
The application starts through `calc.py`, which serves as a launcher with comprehensive logging and error handling. It initializes the main GUI application (`HybridCalculatorApp`) which in turn creates a `PureAlgebraicEngine` instance as its computational core.
|
||||
|
||||
During initialization, the system performs auto-discovery of custom types from the `custom_types/` directory. Each type module can define tokenization patterns, helper functions, and computational behaviors. This creates a registry of available types and their associated transformation rules.
|
||||
|
||||
## Calculation Cycle Flow
|
||||
|
||||
### 1. Input Capture and Triggering
|
||||
|
||||
The calculation cycle begins when the user types in the input panel. The GUI uses a debounced key release handler that triggers evaluation after a 300ms delay, preventing excessive computation during active typing.
|
||||
|
||||
### 2. Line Processing Pipeline
|
||||
|
||||
The engine processes all input lines sequentially, maintaining a clean context for each evaluation cycle:
|
||||
|
||||
**Context Reset**: Before each evaluation cycle, the engine clears its internal context completely. This ensures that each modification to the input re-evaluates everything from scratch, maintaining consistency.
|
||||
|
||||
**Line Classification**: Each line is categorized as:
|
||||
- Empty or comment (ignored)
|
||||
- Equation (contains `=` but not as comparison operator)
|
||||
- Solve shortcut (pattern `variable=?`)
|
||||
- Expression (everything else)
|
||||
|
||||
### 3. Tokenization System
|
||||
|
||||
The tokenization system operates through a distributed pattern-matching architecture:
|
||||
|
||||
**Pattern Discovery**: During initialization, the system discovers tokenization patterns from all registered type classes. Each type can define multiple patterns with priorities and replacement functions.
|
||||
|
||||
**Pattern Application**: Tokenization applies patterns in priority order (higher priority first). Each pattern consists of:
|
||||
- A regular expression to match
|
||||
- A replacement function that transforms the match
|
||||
- Priority level for ordering
|
||||
- Description for debugging
|
||||
|
||||
**Example Transformations**:
|
||||
- `192.168.1.1` becomes `FourBytes("192.168.1.1")`
|
||||
- `16#FF` becomes `IntBase("FF", 16)`
|
||||
- `2#1010` becomes `IntBase("1010", 2)`
|
||||
|
||||
**Bracket Parser Integration**: After tokenization, the bracket parser processes any remaining bracket syntax transformations for legacy compatibility. ==Must be removed==
|
||||
|
||||
Also every constructor of every Type must be instantiated using eval. For example if a line has "a = IP4(10.1.1.1)" the tokeniser first will translate to "a = IP4(FourBytes("10.1.1.1"))" then eval needs to instantiate the IP4 object so the a will be equal to an object IP4.
|
||||
### 4. Algebraic Engine Processing
|
||||
|
||||
The `PureAlgebraicEngine` implements a pure algebraic approach where all assignments become equations:
|
||||
|
||||
**Equation Detection**: The engine distinguishes between:
|
||||
- Simple assignments (`x = 5`) - creates both a variable assignment and an implicit equation-
|
||||
- Complex equations (`x**2 + 2*x = 8`) - added directly to the equation system
|
||||
- Solve shortcuts (`x=?`) - equivalent to `solve(x)` using the current equation system
|
||||
|
||||
**Symbol Management**: Variables are automatically and must maintain the type as long as possible. Also if there are aritmetic use with Types we need to cast the result to the Type involved. For example if we have "IP4(10.1.1.1)+1" the result must be IP4 object. The engine maintains a symbol table and equation list that increase every line that persist until the end of the cycle.
|
||||
|
||||
**Context Building**: For each evaluation, the engine builds a complete context including:
|
||||
- Base mathematical functions (sin, cos, solve, etc.)
|
||||
- Dynamically registered custom types
|
||||
- Current variable assignments
|
||||
- Helper functions from type registry
|
||||
|
||||
### 5. Expression Evaluation Strategy
|
||||
|
||||
The engine uses a hybrid evaluation strategy:
|
||||
|
||||
**Symbolic Priority**: Expressions are first attempted through SymPy's `sympify` to maintain symbolic forms. This preserves exact mathematical representations.
|
||||
|
||||
**Automatic Substitution**:
|
||||
* The engine automatically substitutes known numerical values into symbolic expressions when possible, while preserving symbolic forms for unknown variables.
|
||||
* ==Funtions
|
||||
|
||||
|
||||
**Numerical Approximation**: When beneficial, the engine provides numerical approximations alongside symbolic results. The decision is based on whether the numerical form differs meaningfully from the symbolic representation.
|
||||
|
||||
### 6. Result Processing and Display
|
||||
|
||||
**Result Classification**: Each evaluation produces an `EvaluationResult` with:
|
||||
- The computed result (symbolic or numerical)
|
||||
- Result type classification
|
||||
- Success/error status
|
||||
- Optional numerical approximation
|
||||
- Metadata about the evaluation
|
||||
|
||||
**Interactive Elements**: The display system identifies results that benefit from interactivity:
|
||||
- Large matrices become expandable views
|
||||
- Plot commands create interactive matplotlib windows
|
||||
- Long lists become scrollable displays
|
||||
- Complex objects get detailed inspection windows
|
||||
|
||||
**Tag-Based Formatting**: Results are displayed with color-coded tags based on their type and semantic meaning. The GUI applies appropriate formatting for equations, errors, symbolic expressions, and custom type outputs.
|
||||
|
||||
## Type System Integration
|
||||
|
||||
### Dynamic Type Loading
|
||||
|
||||
The type system loads custom classes from the `custom_types/` directory at startup. Each type module can define:
|
||||
- Class behaviors and arithmetic operations
|
||||
- Tokenization patterns for automatic recognition
|
||||
- Helper functions for contextual assistance
|
||||
- Display and conversion methods
|
||||
|
||||
### Inheritance Patterns
|
||||
|
||||
Types inherit from either:
|
||||
- `ClassBase` - for basic custom types
|
||||
- `SympyClassBase` - for types requiring full SymPy integration
|
||||
|
||||
This allows seamless interaction between custom types and the symbolic algebra system.
|
||||
|
||||
### Method Discovery
|
||||
|
||||
The system automatically discovers and exposes methods from custom types for autocompletion and help systems. This includes both instance methods and static helper functions.
|
||||
|
||||
## Error Handling and Recovery
|
||||
|
||||
The application implements comprehensive error handling at each stage:
|
||||
|
||||
**Tokenization Errors**: Failed tokenization patterns are logged but don't halt processing, allowing partial transformations to proceed.
|
||||
|
||||
**Evaluation Errors**: Helper from classes first, then if there is no match SymPy evaluation errors trigger fallback strategies, including symbol creation for undefined variables and alternative parsing approaches.
|
||||
|
||||
**Display Errors**: Rendering failures fall back to string representations, ensuring results are always visible even if formatting fails.
|
||||
|
||||
## Performance Characteristics
|
||||
|
||||
**Lazy Evaluation**: Complex computations are deferred until needed, with caching of intermediate results where appropriate.
|
||||
|
||||
**Incremental Processing**: Only changed content triggers re-evaluation, though the current implementation re-evaluates everything for consistency.
|
||||
|
||||
**Memory Management**: The system manages symbol tables and equation lists efficiently, with cleanup mechanisms for large sessions.
|
||||
|
||||
## Session Persistence
|
||||
|
||||
The application maintains session continuity through:
|
||||
|
||||
**History Persistence**: Input content is automatically saved and restored between sessions.
|
||||
**Context Preservation**: Variable assignments and equations persist during the scope of every cycle. The context is added on every line and cleared at the begining of ever cycle. This means that every time the user changes the input panel the context is cleared.
|
||||
**Settings Management**: UI state and preferences are preserved across application restarts.
|
|
@ -11,6 +11,13 @@ conda --version
|
|||
conda update conda
|
||||
```
|
||||
|
||||
|
||||
#### Instalar desde Requirements
|
||||
|
||||
```bash
|
||||
pip install -r requirements.txt
|
||||
```
|
||||
|
||||
## Gestión de Entornos
|
||||
|
||||
### Crear un nuevo entorno
|
||||
|
|
|
@ -0,0 +1,51 @@
|
|||
|
||||
### ===== CLIENTES LOCALES (interfaces wlan1/wlan2) =====
|
||||
#### Ver clientes conectados a wlan1 (2.4 GHz)
|
||||
/interface wireless registration-table print where interface=wlan1
|
||||
|
||||
#### Ver clientes conectados a wlan2 (5 GHz)
|
||||
/interface wireless registration-table print where interface=wlan2
|
||||
|
||||
#### Ver todos los clientes WiFi locales
|
||||
/interface wireless registration-table print
|
||||
|
||||
### ===== CLIENTES DE CAPSMAN =====
|
||||
#### Ver todos los clientes conectados a través de CAPsMAN
|
||||
/caps-man registration-table print
|
||||
|
||||
#### Ver clientes de CAP por configuración específica (2Ghz en tu caso)
|
||||
/caps-man registration-table print where configuration=2Ghz
|
||||
|
||||
#### Ver información detallada de clientes CAP
|
||||
/caps-man registration-table print detail
|
||||
|
||||
#### Ver solo información específica de clientes CAP
|
||||
/caps-man registration-table print brief
|
||||
|
||||
#### ===== VISTA COMPLETA (LOCALES + CAP) =====
|
||||
|
||||
```bash
|
||||
# Script para ver todo junto
|
||||
:put "=== CLIENTES LOCALES WLAN1 (2.4 GHz) ==="
|
||||
/interface wireless registration-table print where interface=wlan1
|
||||
:put ""
|
||||
:put "=== CLIENTES LOCALES WLAN2 (5 GHz) ==="
|
||||
/interface wireless registration-table print where interface=wlan2
|
||||
:put ""
|
||||
:put "=== CLIENTES CAPSMAN ==="
|
||||
/caps-man registration-table print
|
||||
|
||||
```
|
||||
#### ===== INFORMACIÓN DE LOS CAPS =====
|
||||
#### Ver los CAPs conectados al manager
|
||||
/caps-man remote-cap print
|
||||
|
||||
#### Ver estado de los CAPs
|
||||
/caps-man remote-cap print detail
|
||||
|
||||
#### ===== MONITOREO =====
|
||||
#### Monitorear clientes CAP en tiempo real
|
||||
/caps-man registration-table print interval=5
|
||||
|
||||
#### Para ver información del DHCP y relacionar IPs con MACs
|
||||
/ip dhcp-server lease print where active=yes
|
|
@ -0,0 +1,36 @@
|
|||
|
||||
| Device Name | Device Address | Device Type | Order Number | Firmware Version | Module Name | Module Type | IO Input Start Address | IO Output Start Address | Total Input Bits | Total Output Bits |
|
||||
|----------------|----------------|-----------------------|---------------------|------------------|------------------------------------|----------------------------------|------------------------|-------------------------|------------------|-------------------|
|
||||
| BA 2xRJ45 | 10.1.30.11 | BA 2xRJ45 | 6ES7 193-6AR00-0AA0 | V0.0 | | | | | | |
|
||||
| U30110-AxisX | 10.1.30.31 | C1250xMIPD 1S V3.0 | | | DO SERVO_1 | DO SERVO | 1100 | 1100 | 160 | 160 |
|
||||
| U30210-AxisY | 10.1.30.32 | C1250xMIPD 1S V3.0 | | | DO SERVO_1 | DO SERVO | 1124 | 1124 | 160 | 160 |
|
||||
| U30310 | 10.1.30.33 | MELSERVO MR-J4-TM | | | DO with manufacturer telegr. 102_1 | DO with manufacturer telegr. 102 | 1148 | 1148 | 384 | 384 |
|
||||
| U30410 | 10.1.30.34 | MELSERVO MR-J4-TM | | | DO with manufacturer telegr. 102_1 | DO with manufacturer telegr. 102 | 1200 | 1200 | 384 | 384 |
|
||||
| U30510 | 10.1.30.35 | MELSERVO MR-J4-TM | | | DO with manufacturer telegr. 102_1 | DO with manufacturer telegr. 102 | 1252 | 1252 | 384 | 384 |
|
||||
| U30610 | 10.1.30.36 | MELSERVO MR-J4-TM | | | DO with manufacturer telegr. 102_1 | DO with manufacturer telegr. 102 | 1304 | 1304 | 384 | 384 |
|
||||
| M30710 | 10.1.30.37 | DBS55-XXX Extend-A | | | DS402_Extend-A | | 1356 | 1356 | 176 | 352 |
|
||||
| M31010 | 10.1.30.40 | DFC2xA V1.0 | | | Module I/O (08 words) | Module I/O (08 words) | 1404 | 1404 | 128 | 128 |
|
||||
| M31110 | 10.1.30.41 | DBS55-XXX Extend-A | | | DS402_Extend-A | | 1424 | 1424 | 176 | 352 |
|
||||
| M31210 | 10.1.30.42 | DBS55-XXX Extend-A | | | DS402_Extend-A | | 1472 | 1472 | 176 | 352 |
|
||||
| M31310 | 10.1.30.43 | DBS55-XXX Extend-A | | | DS402_Extend-A | | 1520 | 1520 | 176 | 352 |
|
||||
| M31410 | 10.1.30.44 | DFC2xA V1.0 | | | Module I/O (08 words) | Module I/O (08 words) | 1568 | 1568 | 128 | 128 |
|
||||
| M31510 | 10.1.30.45 | DFC2xA V1.0 | | | Module I/O (08 words) | Module I/O (08 words) | 1588 | 1588 | 128 | 128 |
|
||||
| M31610 | 10.1.30.46 | DBS55-XXX Extend-A | | | DS402_Extend-A | | 1608 | 1608 | 176 | 352 |
|
||||
| M31710 | 10.1.30.47 | DBS55-XXX Extend-A | | | DS402_Extend-A | | 1656 | 1656 | 176 | 352 |
|
||||
| M31810 | 10.1.30.48 | DBS55-XXX Extend-A | | | DS402_Extend-A | | 1704 | 1704 | 176 | 352 |
|
||||
| M31910 | 10.1.30.49 | DBS55-XXX Extend-A | | | DS402_Extend-A | | 1752 | 1752 | 176 | 352 |
|
||||
| U32810 | 10.1.30.58 | G120C PN | 6SL3210-1KE13-2AF2 | 4.7.13 | | | 1800 | 1800 | 0 | 0 |
|
||||
| U32910 | 10.1.30.59 | G120C PN | 6SL3210-1KE13-2AF2 | 4.7.13 | | | 1824 | 1824 | 0 | 0 |
|
||||
| U33010 | 10.1.30.60 | G120C PN | 6SL3210-1KE13-2AF2 | 4.7.13 | | | 1848 | 1848 | 0 | 0 |
|
||||
| U33110 | 10.1.30.61 | G120C PN | 6SL3210-1KE13-2AF2 | 4.7.13 | | | 1872 | 1872 | 0 | 0 |
|
||||
| U33210 | 10.1.30.62 | G120C PN | 6SL3210-1KE13-2AF2 | 4.7.13 | | | 1896 | 1896 | 0 | 0 |
|
||||
| U33310 | 10.1.30.63 | G120C PN | 6SL3210-1KE13-2AF2 | 4.7.13 | | | 1920 | 1920 | 0 | 0 |
|
||||
| U33410 | 10.1.30.64 | G120C PN | 6SL3210-1KE13-2AF2 | 4.7.13 | | | 1944 | 1944 | 0 | 0 |
|
||||
| U33510 | 10.1.30.65 | G120C PN | 6SL3210-1KE13-2AF2 | 4.7.13 | | | 1968 | 1968 | 0 | 0 |
|
||||
| U33610 | 10.1.30.66 | G120C PN | 6SL3210-1KE13-2AF2 | 4.7.13 | | | 1992 | 1992 | 0 | 0 |
|
||||
| M34010 | 10.1.30.70 | DBS55-XXX Extend-A | | | DS402_Extend-A | | 2016 | 2016 | 176 | 352 |
|
||||
| M34110 | 10.1.30.71 | DBS55-XXX Extend-A | | | DS402_Extend-A | | 2064 | 2064 | 176 | 352 |
|
||||
| M34210 | 10.1.30.72 | DBS55-XXX Extend-A | | | DS402_Extend-A | | 2112 | 2112 | 176 | 352 |
|
||||
| M34310 | 10.1.30.73 | DBS55-XXX Extend-A | | | DS402_Extend-A | | 2160 | 2160 | 176 | 352 |
|
||||
| M34410 | 10.1.30.74 | DFC2xA V1.0 | | | Module I/O (08 words) | Module I/O (08 words) | 2208 | 2208 | 128 | 128 |
|
||||
| E44010-Encoder | 10.1.30.170 | Multiturn 30 Bit V2.x | | | EO Encoder Multiturn V2.x_1 | | 2228 | 2228 | 128 | 32 |
|
|
@ -0,0 +1,113 @@
|
|||
***
|
||||
|
||||
= 139 = 139 = 139 = 170
|
||||
|
||||
### IP network: 10.1.30.0/20
|
||||
|
||||
| | | | IP | Mask | Page | | | | | |
|
||||
| ------------ | ------ | ----------------------------------- | :-: | ---- | ---- | -------------------------- | ----------- | ---------- | ---------- | --------------------------- |
|
||||
| PLC | | CPU 1514SP T-2 PN | 11 | /12 | 405 | 6ES7 514-2VN03-0AB0 | | | | |
|
||||
| HMI | | | 10 | /12 | | | | | | |
|
||||
| | | | | | | | | | | |
|
||||
| Divider | E44010 | Encoder Divider | 170 | /12 | 440 | | | | | |
|
||||
| Divider | U30110 | Axis-X | 31 | | 301 | LinMot C1250-MI-XC-0S-000 | Isochronous | E100..E119 | A100..A119 | |
|
||||
| Divider | U30210 | Axis-Y | 32 | | 302 | LinMot C1250-MI-XC-0S-000 | Isochronous | E120..E139 | A120..A139 | |
|
||||
| Divider | U30310 | Timing Belt DX 1 | 33 | | 303 | Mitsubishi MR-J4-60TM4-PNT | | E256.. | | |
|
||||
| Divider | U30410 | Timing Belt DX 2 | 34 | | 304 | Mitsubishi MR-J4-60TM4-PNT | | | | |
|
||||
| Divider | U30510 | Timing Belt SX 1 | 35 | | 305 | Mitsubishi MR-J4-60TM4-PNT | | | | |
|
||||
| Divider | U30610 | Timing Belt SX 2 | 36 | | 306 | Mitsubishi MR-J4-60TM4-PNT | | | | |
|
||||
| Divider | M30710 | Dosser Format | 37 | | 307 | Minimotor | | | | |
|
||||
| Divider | M31010 | Transport Inside | 40 | | 310 | SEW MGFAS-2 | | | | S31040,S31050,S31051,B31060 |
|
||||
| Divider | M31110 | Combiner 1 DX | 41 | | 311 | Minimotor | | | | |
|
||||
| Divider | M31210 | Combiner 2 SX | 42 | | 312 | Minimotor | | | | |
|
||||
| Divider | M31310 | Format Change Outfeed | 43 | | 313 | Minimotor | | | | |
|
||||
| Divider/Ring | M31410 | Transport Outfeed | 44 | | 314 | SEW MGFAS-2 | | | | B31440 |
|
||||
| | | | | | | | | | | |
|
||||
| | | | | | | | | | | |
|
||||
| Table | M31510 | Infeed | 45 | | 315 | SEW MGFAS-2 | | | | B31540,B31550,S31550,S31560 |
|
||||
| Table | M31610 | Dosser SX Infeed | 46 | | 316 | Minimotor | | | | |
|
||||
| Table | M31610 | Dosser DX Infeed | 47 | | 317 | Minimotor | | | | |
|
||||
| Table | M31810 | Dosser Format Infeed | 48 | | 318 | Minimotor | | | | |
|
||||
| Table | M31910 | Channel Selection Infeed | 49 | | 319 | Minimotor | | | | |
|
||||
| Table | U32810 | Canale 1 | 58 | | 328 | Siemens G120C | | | | |
|
||||
| Table | U32910 | Canale 2 | 59 | | 329 | Siemens G120C | | | | |
|
||||
| Table | U33010 | Canale 3 | 60 | | 330 | Siemens G120C | | | | |
|
||||
| Table | U33110 | Canale 4 | 61 | | 331 | Siemens G120C | | | | |
|
||||
| Table | U33210 | Canale 5 | 62 | | 332 | Siemens G120C | | | | |
|
||||
| Table | U33310 | Canale 6 | 63 | | 333 | Siemens G120C | | | | |
|
||||
| Table | U33410 | Canale 7 | 64 | | 334 | Siemens G120C | | | | |
|
||||
| Table | U33510 | Canale 8 | 65 | | 335 | Siemens G120C | | | | |
|
||||
| Table | U33610 | Canale 9 | 66 | | 336 | Siemens G120C | | | | |
|
||||
| Table | M34010 | Channel Selection Outfeed | 70 | | 340 | Minimotor | | | | |
|
||||
| Table | M34110 | Motore 1 Dosser Outfeed | 71 | | 341 | Minimotor | | | | |
|
||||
| Table | M34210 | Motore 1 Dosser Outfeed | 72 | | 342 | Minimotor | | | | |
|
||||
| Table | M34310 | Regolazione Largheza Dosser Outfeed | 73 | | 343 | Minimotor | | | | |
|
||||
| Table/Ring | M34410 | Transport outfeed | 74 | | 344 | SEW MGFAS-2 | | | | |
|
||||
| | | | | | | | | | | |
|
||||
| Ring | E44520 | Gateway Outfeed Divider | 175 | | 445 | | | | | |
|
||||
| Ring | E44620 | Gateway Infeed Divider | 176 | | 446 | | | | | |
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
### Photocells / Sensors
|
||||
***
|
||||
|
||||
| | Tag | Description | Connected to |
|
||||
| --- | ------ | ----------------------------------------- | ------------ |
|
||||
| | S31040 | Sensore Di Asse Longitudinale | M31010 |
|
||||
| | S31050 | Sensore de Asse Transversale | M31010 |
|
||||
| | S31051 | Sensore de Reg Spaziatore Uscita Divisore | M31010 |
|
||||
| | B31060 | Sicurezza uscita spaziatore | M31010 |
|
||||
| | B31440 | Minimo Polmone Ingresso Tavolor | M31410 |
|
||||
| | | | |
|
||||
| | B31540 | Conteggio Ingresso Tavolo | M31510 |
|
||||
| | B31550 | Sicurezza Tranlazione Ingresso | M31510 |
|
||||
| | S31550 | Homing Dosser Infeed Table | M31510 |
|
||||
| | S31560 | Sensore de homing Trasl. Dosser Infeed | M31510 |
|
||||
|
||||
|
||||
### Emergency circuit
|
||||
***
|
||||
* K14010 - p140
|
||||
* K15010 - p150 <- 20740/20750 - Divider doors - 8 doors
|
||||
* K16010 - p160 - Table Infeed Doors - 2 doors
|
||||
* K17010 - p170 - Table Outfeed Doors - 2 doors
|
||||
*
|
||||
|
||||
|
||||
### Motors:
|
||||
***
|
||||
|
||||
| | | | | Inverter | | |
|
||||
| ------- | ------ | -------------------------------------- | --- | -------- | ----- | ---- |
|
||||
| Divider | M30160 | Axis-X | | U30110 | | |
|
||||
| Divider | M30260 | Axis-Y | | | | |
|
||||
| Divider | M30320 | Dosser 1 DX | 303 | U30310 | | |
|
||||
| Divider | M30420 | Dosser 2 DX | 304 | U30410 | | |
|
||||
| Divider | M30520 | Dosser 1 SX | 305 | U30510 | | |
|
||||
| Divider | M30620 | Dosser 2 SX | 306 | U30610 | | |
|
||||
| | | | | | | |
|
||||
| Table | M30710 | Dosser Format | | 307 | | |
|
||||
| Table | M31510 | Infeed | | 315 | | |
|
||||
| Table | M31610 | Dosser SX Infeed | | 316 | | |
|
||||
| Table | M31610 | Dosser DX Infeed | | 317 | | |
|
||||
| Table | M31810 | Dosser Format Infeed | | 318 | | |
|
||||
| Table | M31910 | Traslazione Smistatore Ingresso Tavolo | | 319 | | |
|
||||
| Table | M32860 | Canale 1 | | 328 | .75kw | 1.9A |
|
||||
| Table | M32960 | Canale 2 | | 329 | .75kw | 1.9A |
|
||||
| Table | M33060 | Canale 3 | | 330 | .75kw | 1.9A |
|
||||
| Table | M33160 | Canale 4 | | 331 | .75kw | 1.9A |
|
||||
| Table | M33260 | Canale 5 | | 332 | .75kw | 1.9A |
|
||||
| Table | M33360 | Canale 6 | | 333 | .75kw | 1.9A |
|
||||
| Table | M33460 | Canale 7 | | 334 | .75kw | 1.9A |
|
||||
| Table | M33560 | Canale 8 | | 335 | .75kw | 1.9A |
|
||||
| Table | M33660 | Canale 9 | | 336 | .75kw | 1.9A |
|
||||
| | | | | | | |
|
||||
|
||||
|
||||
|
||||
|
||||
|
|
@ -0,0 +1,55 @@
|
|||
## Inputs (Inputs)
|
||||
|
||||
| Master Tag | Type | Data Type |
|
||||
| -------------------------------- | ----- | --------- |
|
||||
| zoneA24VDC | Input | Bool |
|
||||
| zoneD24VDC | Input | Bool |
|
||||
| thermicTrip | Input | Bool |
|
||||
| safetyRelay | Input | Bool |
|
||||
| eStop_ElectricalCabinet | Input | Bool |
|
||||
| Divider_gateRight1 | Input | Bool |
|
||||
| Divider_gateRight2 | Input | Bool |
|
||||
| Divider_gateRight3 | Input | Bool |
|
||||
| Divider_gateRight4 | Input | Bool |
|
||||
| Divider_gateLeft1 | Input | Bool |
|
||||
| Divider_gateLeft2 | Input | Bool |
|
||||
| Divider_gateLeft3 | Input | Bool |
|
||||
| Divider_gateLeft4 | Input | Bool |
|
||||
| Divider_startButton | Input | Bool |
|
||||
| Divider_stopButton | Input | Bool |
|
||||
| Divider_automaticSelector | Input | Bool |
|
||||
| Divider_manualForwardButton | Input | Bool |
|
||||
| Divider_manualBackwardButton | Input | Bool |
|
||||
| Divider_resetButton | Input | Bool |
|
||||
| Divider_CountPhotocell | Input | Bool |
|
||||
| Divider_TranslationSafetyHighPho | Input | Bool |
|
||||
| Divider_TooFull1Line1 | Input | Bool |
|
||||
| Divider_TooFull1Line2 | Input | Bool |
|
||||
| eStop_PB1 | Input | Bool |
|
||||
| Divider_TooFull1Line3 | Input | Bool |
|
||||
| Divider_TooFull1Line4 | Input | Bool |
|
||||
| Divider_TooFull1Line5 | Input | Bool |
|
||||
| Divider_TooFull1Line6 | Input | Bool |
|
||||
| Divider_encoderReferenceXAxis | Input | Bool |
|
||||
| Divider_encoderReferenceYAxis | Input | Bool |
|
||||
| Divider_TooFull2Line1 | Input | Bool |
|
||||
| Divider_TooFull2Line2 | Input | Bool |
|
||||
| Divider_TooFull2Line3 | Input | Bool |
|
||||
| Divider_TooFull2Line4 | Input | Bool |
|
||||
| Divider_TooFull2Line5 | Input | Bool |
|
||||
| Divider_TooFull2Line6 | Input | Bool |
|
||||
|
||||
|
||||
## Outputs (Outputs)
|
||||
|
||||
| Master Tag | Type | Data Type |
|
||||
| -------------------------- | ------ | --------- |
|
||||
| Divider_runLamp | Output | Bool |
|
||||
| Divider_resetLamp | Output | Bool |
|
||||
| Divider_towerLampAutomatic | Output | Bool |
|
||||
| Divider_towerLampManual | Output | Bool |
|
||||
| Divider_towerLampAlarm | Output | Bool |
|
||||
| Divider_acousticAlarm | Output | Bool |
|
||||
| Divider_enableX | Output | Bool |
|
||||
| Divider_enableY | Output | Bool |
|
||||
|
|
@ -0,0 +1,57 @@
|
|||
# Mapeo Device IO Tags a PLC IO Tags - Sistema Divisor
|
||||
|
||||
## Inputs Mapeados
|
||||
|
||||
| Device Tag | Type | PLC Address | PLC Description | Confianza |
|
||||
| -------------------------------- | ----- | ----------- | ----------------------------------- | --------- |
|
||||
| Divider_automaticSelector | Input | E5.2 | MANUALE/AUTOMATICO | 95% |
|
||||
| Divider_CountPhotocell | Input | E6.0 | CONTEGGIO DIVSORE FORMATO 1 | 80% |
|
||||
| Divider_gateLeft1 | Input | E3.5 | DIVISORE MICRO PORTA 5 | 75% |
|
||||
| Divider_gateLeft2 | Input | E3.6 | MICRO PORTA 6 DIVISORE | 75% |
|
||||
| Divider_gateLeft3 | Input | E3.7 | DIVISORE MICRO 0PORTA7 | 75% |
|
||||
| Divider_gateLeft4 | Input | E4.0 | PORTA 8 MICRO DIVSORE | 75% |
|
||||
| Divider_gateRight1 | Input | E3.1 | DIVISORE MICRO 0PORTA1 | 80% |
|
||||
| Divider_gateRight2 | Input | E3.2 | MICRO PORTA 2 DIVISORE | 80% |
|
||||
| Divider_gateRight3 | Input | E3.3 | MICRO PORTA 3 DIVISORE | 80% |
|
||||
| Divider_gateRight4 | Input | E3.4 | DIVISORE MICRO PORTA 4 | 80% |
|
||||
| Divider_manualBackwardButton | Input | E5.4 | INDIETRO COMANDI MANUAL | 90% |
|
||||
| Divider_manualForwardButton | Input | E5.3 | AVANTI MANUAL COMANDI | 90% |
|
||||
| Divider_resetButton | Input | E5.6 | RESET ALLARMI | 90% |
|
||||
| Divider_startButton | Input | E5.0 | MARCIA | 95% |
|
||||
| Divider_stopButton | Input | E5.1 | ARRESTO | 95% |
|
||||
| Divider_TranslationSafetyHighPho | Input | E6.2 | TRASLAZIONE SICUREZZA DIVISORE ALTA | 90% |
|
||||
| eStop_ElectricalCabinet | Input | E2.0 | EMERGENZA GENERALE RELEE | 90% |
|
||||
| eStop_PB1 | Input | E2.1 | PB1 PULSANTE EM. PUI SANTIERA | 95% |
|
||||
| safetyRelay | Input | E3.0 | EMERGENZA CARTER DIVISORE RELE E | 85% |
|
||||
| zoneA24VDC | Input | E1.4 | 24VDC QUADRO ALIMENTAZIONE INTERNO | 75% |
|
||||
|
||||
## Outputs Mapeados
|
||||
|
||||
| Device Tag | Type | PLC Address | PLC Description | Confianza |
|
||||
| -------------------------- | ------ | ----------- | --------------------------------------- | --------- |
|
||||
| Divider_acousticAlarm | Output | A0.3 | COL. LUMINOSA SIRENA | 90% |
|
||||
| Divider_enableX | Output | A3.5 | ASSE ABILITAZIONE LONGITUDINALE DIVSORE | 90% |
|
||||
| Divider_enableY | Output | A3.6 | TRASVERSALE ASSE ABILITAZIONE DIVISORE | 90% |
|
||||
| Divider_resetLamp | Output | A0.7 | SEGN. RESET LUMINOSA ALLARMI | 90% |
|
||||
| Divider_runLamp | Output | A0.5 | MARCIA SEGN. LUMINOSA | 90% |
|
||||
| Divider_towerLampAlarm | Output | A0.2 | ALLARME COL. LUMINOSA | 95% |
|
||||
| Divider_towerLampAutomatic | Output | A0.0 | COL. LUMINOSA MARCIAAUTOMATICA | 95% |
|
||||
| Divider_towerLampManual | Output | A0.1 | SEGNALAZIONE COL. LUMINOSA | 75% |
|
||||
|
||||
## Tags No Mapeados (Confianza <70%)
|
||||
|
||||
**Inputs no encontrados:**
|
||||
|
||||
- zoneD24VDC
|
||||
- thermicTrip
|
||||
- Divider_TooFull1Line1-6
|
||||
- Divider_TooFull2Line1-6
|
||||
- Divider_encoderReferenceXAxis
|
||||
- Divider_encoderReferenceYAxis
|
||||
|
||||
**Notas:**
|
||||
|
||||
- Mapeo basado únicamente en descripciones disponibles
|
||||
- Algunas puertas pueden estar intercambiadas entre Right/Left
|
||||
- Se requiere verificación en campo para confirmar correspondencias exactas
|
||||
- Tags con confianza <70% requieren información adicional para mapeo seguro
|
|
@ -0,0 +1,140 @@
|
|||
|
||||
| Tag | IO | Description Italian |
|
||||
| --------- | ---- | ----------------------------------------------------- |
|
||||
| QF10410 | E0.0 | LINEA ALIMENTAZIONE MOVIGEAR |
|
||||
| SERIETTAV | E0.7 | TERMICI TAVOLO ALIMENTAZIONE INVERTER |
|
||||
| SERIETDIV | E0.1 | TERMICI AZIONAMENT ALIMENTAZIONE DIVISORE |
|
||||
| QF31110 | E0.2 | ALIMENTAZIONE SPAZIATORE USCITA DIVISORE |
|
||||
| QF27110 | E0.3 | ALIMENT. REG. LARGHEZZA USCITA SPAZIATORE DIVSORF |
|
||||
| QF31610 | E0.4 | ALIMENTAZIONE TAVOLO SPAZIATORE INGRESSO |
|
||||
| QF27130 | E0.5 | TAVOLO ALIMENT.REG. LARGHEZZA INGRESSO SPAZIATORE |
|
||||
| QF31910 | E0.6 | ALIMENTAZIONE SMISTATORE TRASLAZIONE FINGRESSO TAVOLO |
|
||||
| QF27170 | E1.0 | ALIMENTAZIONE CINGHIOLI REG. DIVISORE |
|
||||
| QF34010 | E1.1 | SMISTATORE TRASLAZIONE ALIMENTAZIONE ATAVOLO USCITA |
|
||||
| QF34110 | E1.2 | TAVOLO ALIMENTAZIONE SPAZIATORE USCITA |
|
||||
| QF27150 | E1.3 | ALIMENT. REG. LARGHEZZA SPAZIATORE USCITA LTAVOLO |
|
||||
| FA10910 | E1.4 | 24VDC QUADRO ALIMENTAZIONE INTERNO |
|
||||
| FA10970 | E1.5 | ALIMENTAZIONE MICROMECCANICA MOTORIN |
|
||||
| QF11030 | E1.6 | ALIMENTAZIONE ILLUMINAZIONE DIVISORE |
|
||||
| AIRQE | E1.7 | CONDIZIONATORE ALLARME |
|
||||
| K14010 | E2.0 | EMERGENZA GENERALE RELEE |
|
||||
| SPARE1 | E2.3 | PULSANTE SCORTA EM. |
|
||||
| EMSB14110 | E2.1 | PB1 PULSANTE EM. PUI SANTIERA |
|
||||
| SPARE2 | E2.2 | PULSANTE SCORTA EM. |
|
||||
| SPARE3 | E2.4 | PULSANTE SCORTA EM. |
|
||||
| K15010 | E3.0 | EMERGENZA CARTER DIVISORE RELE E |
|
||||
| S20010 | E3.1 | DIVISORE MICRO 0PORTA1 |
|
||||
| S20110 | E3.2 | MICRO PORTA 2 DIVISORE |
|
||||
| S20210 | E3.3 | MICRO PORTA 3 DIVISORE |
|
||||
| S20310 | E3.4 | DIVISORE MICRO PORTA 4 |
|
||||
| S20410 | E3.5 | DIVISORE MICRO PORTA 5 |
|
||||
| S20510 | E3.6 | MICRO PORTA 6 DIVISORE |
|
||||
| S20610 | E3.7 | DIVISORE MICRO 0PORTA7 |
|
||||
| S20710 | E4.0 | PORTA 8 MICRO DIVSORE |
|
||||
| S21010 | E4.6 | TAVOLO SMISTATORE MICRO USCITA PORTA 1 |
|
||||
| S21110 | E4.7 | TAVOLO SMISTATORE MICRO PORTA 2 USCITA |
|
||||
| K16010 | E4.2 | RELE CARTER SMISTATORE TAVOLO N INGRESSO MULTIMA |
|
||||
| S20810 | E4.3 | TAVOLO SMISTATORE INGRESSO MICRO PORTA 1 |
|
||||
| S20910 | E4.4 | SMISTATORE TAVOLO MICRO INGRESSO PORTA 2 |
|
||||
| K17010 | E4.5 | USCITA RELE CARTER SMISTATORE TAVOLO MULTIMA |
|
||||
| SB50510 | E5.0 | MARCIA |
|
||||
| SB50520 | E5.1 | ARRESTO |
|
||||
| SA50530 | E5.2 | MANUALE/AUTOMATICO |
|
||||
| SB50560 | E5.5 | RICHIESTA ACCESSO |
|
||||
| SB50570 | E5.6 | RESET ALLARMI |
|
||||
| SA50540 | E5.3 | AVANTI MANUAL COMANDI |
|
||||
| SA50540 | E5.4 | INDIETRO COMANDI MANUAL |
|
||||
| B50610 | E6.0 | CONTEGGIO DIVSORE FORMATO 1 |
|
||||
| B50620 | E6.1 | CONTEGGIO DIVISORE FORMATO 2 |
|
||||
| B50630 | E6.2 | TRASLAZIONE SICUREZZA DIVISORE ALTA |
|
||||
| B50640 | E6.3 | TRASLAZIONE BASSA DIVISORE SICURE77A |
|
||||
| HL53010 | A0.0 | COL. LUMINOSA MARCIAAUTOMATICA |
|
||||
| HL53020 | A0.1 | SEGNALAZIONE COL. LUMINOSA |
|
||||
| HL53030 | A0.2 | ALLARME COL. LUMINOSA |
|
||||
| HA53040 | A0.3 | COL. LUMINOSA SIRENA |
|
||||
| SH50510 | A0.5 | MARCIA SEGN. LUMINOSA |
|
||||
| SH50560 | A0.6 | SEGN. LUMINOSA RICHIESTAACCESSO |
|
||||
| SH50570 | A0.7 | SEGN. RESET LUMINOSA ALLARMI |
|
||||
| S20010 | A1.0 | PORTA1DIVISORE MICRO ABILITAZIONE |
|
||||
| S20110 | A1.1 | MICRO ABILITAZIONE PORTA 2 DIVISORE |
|
||||
| S20210 | A1.2 | MICRO ABILITAZIONE PORTA 3 DIVSORE |
|
||||
| S20310 | A1.3 | MICRO ABILITAZIONE PORTA 4 DIVISORE |
|
||||
| S20410 | A1.4 | MICRO ABILITAZIONE PORTA 5 DIVSORE |
|
||||
| S20510 | A1.5 | MICRO ABILITAZIONE PORTA 6 DIMSORE |
|
||||
| S20610 | A1.6 | MICRO ABILITAZIONE PORTA 7 DIVSORE |
|
||||
| S20710 | A1.7 | MICRO ABILITAZIONE PORTA 8 DIVISORE |
|
||||
| KA53210 | A2.0 | RELE EMERGENZA GENERALE RESET R |
|
||||
| KA53220 | A2.1 | CARTER DIVISORE RESET RELE |
|
||||
| KA53230 | A2.2 | TAVOLO SMISTATORE CARTER INGRESSO RESET RELE |
|
||||
| KA53240 | A2.3 | TAVOLO RELE CARTER SMISTATORE USCITA RESETF |
|
||||
| KA53250 | A2.4 | ABILTAZIONE DIVISORE GATEWAY USCITA E 1GRUPPO |
|
||||
| KA53260 | A2.5 | GATEWAY USCITA ABILTAZIONE DIVISORE E 2GRUPPO |
|
||||
| KA53270 | A2.6 | GATEWAYUSCITA ADIMSORE ABILITAZIONE 3GRUPPO |
|
||||
| KA53280 | A2.7 | DIVSORE GATEWAY USCITA E 4GRUPPO ABILITAZIONE |
|
||||
| KA53310 | A3.0 | GATEWAY INGRESSO DIVISORE ABILITAZIONE E 1 GRUPPO |
|
||||
| KA53320 | A3.1 | GATEWAY INGRESSO ABILITAZIONE DIVISORE E 2 GRUPPO |
|
||||
| KA53330 | A3.2 | GATEWAY INGRESSO DIVISORE ABILITAZIONE 3 GRUPPO |
|
||||
| KA53340 | A3.3 | DIVISORE GATEWAY INGRESSO ABILITAZIONE 4GRUPPO |
|
||||
| KA53350 | A3.4 | DIVISORE ABILTAZIONE LLUMINAZIONE |
|
||||
| U30110EN | A3.5 | ASSE ABILITAZIONE LONGITUDINALE DIVSORE |
|
||||
| U30210EN | A3.6 | TRASVERSALE ASSE ABILITAZIONE DIVISORE |
|
||||
| M31910HOM | A3.7 | TAVOLO AZZERAMENTO EINGRESSO SMISTATORE TRASLAZIONE |
|
||||
| M34010HOM | A4.0 | AZZERAMENTOTRASLAZIONE SMISTATORE USCITA TAVOLO |
|
||||
|
||||
|
||||
|
||||
| Network | Type | Address | Device Name | Sub-Device | OrderNo | Type | IO Type | IO Address | Number of Bits |
|
||||
| ----------------- | ----------------- | ----------- | -------------- | ---------------------------------- | ------------------- | -------------------------------- | ------- | --------------- | -------------- |
|
||||
| PLC Local Modules | Local I/O | Local | PLC A40510 | A41110 | 6ES7 131-6BF01-0BA0 | DI 8x24VDC ST | Input | `EW 0..0` | 8 |
|
||||
| PLC Local Modules | Local I/O | Local | PLC A40510 | A41111 | 6ES7 131-6BF01-0BA0 | DI 8x24VDC ST | Input | `EW 1..1` | 8 |
|
||||
| PLC Local Modules | Local I/O | Local | PLC A40510 | A41120 | 6ES7 131-6BF01-0BA0 | DI 8x24VDC ST | Input | `EW 2..2` | 8 |
|
||||
| PLC Local Modules | Local I/O | Local | PLC A40510 | A41121 | 6ES7 131-6BF01-0BA0 | DI 8x24VDC ST | Input | `EW 3..3` | 8 |
|
||||
| PLC Local Modules | Local I/O | Local | PLC A40510 | A41130 | 6ES7 132-6BF01-0BA0 | DQ 8x24VDC/0.5A ST | Output | `AW 0..0` | 8 |
|
||||
| PLC Local Modules | Local I/O | Local | PLC A40510 | A41131 | 6ES7 132-6BF01-0BA0 | DQ 8x24VDC/0.5A ST | Output | `AW 1..1` | 8 |
|
||||
| PLC Local Modules | Local I/O | Local | PLC A40510 | A41140 | 6ES7 132-6BF01-0BA0 | DQ 8x24VDC/0.5A ST | Output | `AW 2..2` | 8 |
|
||||
| PN/IE_1 | Ethernet/Profinet | 10.1.30.31 | U30110-AxisX | DO SERVO_1 | N/A | DO SERVO | Input | `EW 1100..1119` | 160 |
|
||||
| PN/IE_1 | Ethernet/Profinet | 10.1.30.31 | U30110-AxisX | DO SERVO_1 | N/A | DO SERVO | Output | `AW 1100..1119` | 160 |
|
||||
| PN/IE_1 | Ethernet/Profinet | 10.1.30.32 | U30210-AxisY | DO SERVO_1 | N/A | DO SERVO | Input | `EW 1124..1143` | 160 |
|
||||
| PN/IE_1 | Ethernet/Profinet | 10.1.30.32 | U30210-AxisY | DO SERVO_1 | N/A | DO SERVO | Output | `AW 1124..1143` | 160 |
|
||||
| PN/IE_1 | Ethernet/Profinet | 10.1.30.33 | U30310 | DO with manufacturer telegr. 102_1 | N/A | DO with manufacturer telegr. 102 | Input | `EW 1148..1195` | 384 |
|
||||
| PN/IE_1 | Ethernet/Profinet | 10.1.30.33 | U30310 | DO with manufacturer telegr. 102_1 | N/A | DO with manufacturer telegr. 102 | Output | `AW 1148..1195` | 384 |
|
||||
| PN/IE_1 | Ethernet/Profinet | 10.1.30.34 | U30410 | DO with manufacturer telegr. 102_1 | N/A | DO with manufacturer telegr. 102 | Input | `EW 1200..1247` | 384 |
|
||||
| PN/IE_1 | Ethernet/Profinet | 10.1.30.34 | U30410 | DO with manufacturer telegr. 102_1 | N/A | DO with manufacturer telegr. 102 | Output | `AW 1200..1247` | 384 |
|
||||
| PN/IE_1 | Ethernet/Profinet | 10.1.30.35 | U30510 | DO with manufacturer telegr. 102_1 | N/A | DO with manufacturer telegr. 102 | Input | `EW 1252..1299` | 384 |
|
||||
| PN/IE_1 | Ethernet/Profinet | 10.1.30.35 | U30510 | DO with manufacturer telegr. 102_1 | N/A | DO with manufacturer telegr. 102 | Output | `AW 1252..1299` | 384 |
|
||||
| PN/IE_1 | Ethernet/Profinet | 10.1.30.36 | U30610 | DO with manufacturer telegr. 102_1 | N/A | DO with manufacturer telegr. 102 | Input | `EW 1304..1351` | 384 |
|
||||
| PN/IE_1 | Ethernet/Profinet | 10.1.30.36 | U30610 | DO with manufacturer telegr. 102_1 | N/A | DO with manufacturer telegr. 102 | Output | `AW 1304..1351` | 384 |
|
||||
| PN/IE_1 | Ethernet/Profinet | 10.1.30.37 | M30710 | DS402_Extend-A | N/A | N/A | Input | `EW 1356..1377` | 176 |
|
||||
| PN/IE_1 | Ethernet/Profinet | 10.1.30.37 | M30710 | DS402_Extend-A | N/A | N/A | Output | `AW 1356..1399` | 352 |
|
||||
| PN/IE_1 | Ethernet/Profinet | 10.1.30.40 | M31010 | Module I/O (08 words) | N/A | Module I/O (08 words) | Input | `EW 1404..1419` | 128 |
|
||||
| PN/IE_1 | Ethernet/Profinet | 10.1.30.40 | M31010 | Module I/O (08 words) | N/A | Module I/O (08 words) | Output | `AW 1404..1419` | 128 |
|
||||
| PN/IE_1 | Ethernet/Profinet | 10.1.30.41 | M31110 | DS402_Extend-A | N/A | N/A | Input | `EW 1424..1445` | 176 |
|
||||
| PN/IE_1 | Ethernet/Profinet | 10.1.30.41 | M31110 | DS402_Extend-A | N/A | N/A | Output | `AW 1424..1467` | 352 |
|
||||
| PN/IE_1 | Ethernet/Profinet | 10.1.30.42 | M31210 | DS402_Extend-A | N/A | N/A | Input | `EW 1472..1493` | 176 |
|
||||
| PN/IE_1 | Ethernet/Profinet | 10.1.30.42 | M31210 | DS402_Extend-A | N/A | N/A | Output | `AW 1472..1515` | 352 |
|
||||
| PN/IE_1 | Ethernet/Profinet | 10.1.30.43 | M31310 | DS402_Extend-A | N/A | N/A | Input | `EW 1520..1541` | 176 |
|
||||
| PN/IE_1 | Ethernet/Profinet | 10.1.30.43 | M31310 | DS402_Extend-A | N/A | N/A | Output | `AW 1520..1563` | 352 |
|
||||
| PN/IE_1 | Ethernet/Profinet | 10.1.30.44 | M31410 | Module I/O (08 words) | N/A | Module I/O (08 words) | Input | `EW 1568..1583` | 128 |
|
||||
| PN/IE_1 | Ethernet/Profinet | 10.1.30.44 | M31410 | Module I/O (08 words) | N/A | Module I/O (08 words) | Output | `AW 1568..1583` | 128 |
|
||||
| PN/IE_1 | Ethernet/Profinet | 10.1.30.45 | M31510 | Module I/O (08 words) | N/A | Module I/O (08 words) | Input | `EW 1588..1603` | 128 |
|
||||
| PN/IE_1 | Ethernet/Profinet | 10.1.30.45 | M31510 | Module I/O (08 words) | N/A | Module I/O (08 words) | Output | `AW 1588..1603` | 128 |
|
||||
| PN/IE_1 | Ethernet/Profinet | 10.1.30.46 | M31610 | DS402_Extend-A | N/A | N/A | Input | `EW 1608..1629` | 176 |
|
||||
| PN/IE_1 | Ethernet/Profinet | 10.1.30.46 | M31610 | DS402_Extend-A | N/A | N/A | Output | `AW 1608..1651` | 352 |
|
||||
| PN/IE_1 | Ethernet/Profinet | 10.1.30.47 | M31710 | DS402_Extend-A | N/A | N/A | Input | `EW 1656..1677` | 176 |
|
||||
| PN/IE_1 | Ethernet/Profinet | 10.1.30.47 | M31710 | DS402_Extend-A | N/A | N/A | Output | `AW 1656..1699` | 352 |
|
||||
| PN/IE_1 | Ethernet/Profinet | 10.1.30.48 | M31810 | DS402_Extend-A | N/A | N/A | Input | `EW 1704..1725` | 176 |
|
||||
| PN/IE_1 | Ethernet/Profinet | 10.1.30.48 | M31810 | DS402_Extend-A | N/A | N/A | Output | `AW 1704..1747` | 352 |
|
||||
| PN/IE_1 | Ethernet/Profinet | 10.1.30.49 | M31910 | DS402_Extend-A | N/A | N/A | Input | `EW 1752..1773` | 176 |
|
||||
| PN/IE_1 | Ethernet/Profinet | 10.1.30.49 | M31910 | DS402_Extend-A | N/A | N/A | Output | `AW 1752..1795` | 352 |
|
||||
| PN/IE_1 | Ethernet/Profinet | 10.1.30.70 | M34010 | DS402_Extend-A | N/A | N/A | Input | `EW 2016..2037` | 176 |
|
||||
| PN/IE_1 | Ethernet/Profinet | 10.1.30.70 | M34010 | DS402_Extend-A | N/A | N/A | Output | `AW 2016..2059` | 352 |
|
||||
| PN/IE_1 | Ethernet/Profinet | 10.1.30.71 | M34110 | DS402_Extend-A | N/A | N/A | Input | `EW 2064..2085` | 176 |
|
||||
| PN/IE_1 | Ethernet/Profinet | 10.1.30.71 | M34110 | DS402_Extend-A | N/A | N/A | Output | `AW 2064..2107` | 352 |
|
||||
| PN/IE_1 | Ethernet/Profinet | 10.1.30.72 | M34210 | DS402_Extend-A | N/A | N/A | Input | `EW 2112..2133` | 176 |
|
||||
| PN/IE_1 | Ethernet/Profinet | 10.1.30.72 | M34210 | DS402_Extend-A | N/A | N/A | Output | `AW 2112..2155` | 352 |
|
||||
| PN/IE_1 | Ethernet/Profinet | 10.1.30.73 | M34310 | DS402_Extend-A | N/A | N/A | Input | `EW 2160..2181` | 176 |
|
||||
| PN/IE_1 | Ethernet/Profinet | 10.1.30.73 | M34310 | DS402_Extend-A | N/A | N/A | Output | `AW 2160..2203` | 352 |
|
||||
| PN/IE_1 | Ethernet/Profinet | 10.1.30.74 | M34410 | Module I/O (08 words) | N/A | Module I/O (08 words) | Input | `EW 2208..2223` | 128 |
|
||||
| PN/IE_1 | Ethernet/Profinet | 10.1.30.74 | M34410 | Module I/O (08 words) | N/A | Module I/O (08 words) | Output | `AW 2208..2223` | 128 |
|
||||
| PN/IE_1 | Ethernet/Profinet | 10.1.30.170 | E44010-Encoder | EO Encoder Multiturn V2.x_1 | N/A | N/A | Input | `EW 2228..2243` | 128 |
|
||||
| PN/IE_1 | Ethernet/Profinet | 10.1.30.170 | E44010-Encoder | EO Encoder Multiturn V2.x_1 | N/A | N/A | Output | `AW 2228..2231` | 32 |
|
|
@ -0,0 +1,441 @@
|
|||
---
|
||||
|
||||
excalidraw-plugin: parsed
|
||||
tags: [excalidraw]
|
||||
|
||||
---
|
||||
==⚠ Switch to EXCALIDRAW VIEW in the MORE OPTIONS menu of this document. ⚠== You can decompress Drawing data with the command palette: 'Decompress current Excalidraw file'. For more info check in plugin settings under 'Saving'
|
||||
|
||||
|
||||
# Excalidraw Data
|
||||
|
||||
## Text Elements
|
||||
M316 ^QGpBOsPR
|
||||
|
||||
M317 ^XwY6YBxg
|
||||
|
||||
M315 ^5uw93rn8
|
||||
|
||||
M318 ^R1xTprpX
|
||||
|
||||
B31540 ^1yPovzco
|
||||
|
||||
B31550 ^orOOU9K9
|
||||
|
||||
S31550 ^LL1ixc09
|
||||
|
||||
M328 ^Wu6lcYjc
|
||||
|
||||
M329 ^udjVHVza
|
||||
|
||||
M330 ^bTQ5oKGd
|
||||
|
||||
M331 ^I8y1IZ0k
|
||||
|
||||
M336 ^ZJVjURen
|
||||
|
||||
M335 ^vqG6Eh7e
|
||||
|
||||
M334 ^RLFXNXj2
|
||||
|
||||
M333 ^oXfahoxt
|
||||
|
||||
M332 ^xITnc4cQ
|
||||
|
||||
B34440 ^A6MjGh8q
|
||||
|
||||
S34460 ^jqFuZsCh
|
||||
|
||||
M340 ^AQXPJwvv
|
||||
|
||||
M341 ^3KyRdxVs
|
||||
|
||||
M342 ^RYTbgj1D
|
||||
|
||||
B34450 ^qliZ1nIA
|
||||
|
||||
M343 ^wBu9Je9J
|
||||
|
||||
B34451 ^RzrQ6N17
|
||||
|
||||
M344 ^yOPtEZnu
|
||||
|
||||
M311 ^7VW2eTrq
|
||||
|
||||
M312 ^E1cDenf1
|
||||
|
||||
M310 ^LXZs5H0T
|
||||
|
||||
M313 ^4IL2QVlN
|
||||
|
||||
B31060 ^Zx5y3RpD
|
||||
|
||||
M314 ^z962gh5J
|
||||
|
||||
B31440 ^iZOsgyG1
|
||||
|
||||
M319 ^6AK1KY2Z
|
||||
|
||||
M307 ^KP4NXEjV
|
||||
|
||||
M304 ^W93X5RUo
|
||||
|
||||
M306 ^dsWbRb1W
|
||||
|
||||
C1 ^M1uAvTX8
|
||||
|
||||
C9 ^Jg2LBtOi
|
||||
|
||||
C5 ^rlSM1POS
|
||||
|
||||
S34470 ^SpmLp1Cq
|
||||
|
||||
S31051 ^eoUd3YsC
|
||||
|
||||
S34461 ^heswS0PC
|
||||
|
||||
S34460 ^bwPm9Dz6
|
||||
|
||||
## Embedded Files
|
||||
cc2e866f5ab74b824891b9e6e5d79ed0c73485aa: [[Layout-Model.png]]
|
||||
|
||||
%%
|
||||
## Drawing
|
||||
```compressed-json
|
||||
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
|
||||
```
|
||||
%%
|
|
@ -0,0 +1,68 @@
|
|||
***
|
||||
|
||||
El proyecto involucra un transporte de botellas en anillo con los siguientes elementos:
|
||||
* Anillo compuesto M314, M315 y M344
|
||||
* Transporte con guías motorizadas para cambio de formato
|
||||
* Divider de alta velocidad
|
||||
* Cambio formato Guías M307 - Homing S34470
|
||||
* Combinador para unificar los canales a la salida del divider.
|
||||
* Cambio formato Combinador M313 - S31051
|
||||
* Logica de salida B31060
|
||||
* Mesa de acumulación que permite almacenar el formato no utilizado.
|
||||
* La mesa de acumulación cuenta con 4 filas a la derecha y 4 a la izquierda además de la fila central usada solo como bypass.
|
||||
* Las guias de traslacion que permiten mover las botellas desde los canales exteriores a el canal central necesita no tiene traccion propia y como pasa por los canales centrales esto obliga a que para cargar o descargar los canales exteriores los transportes de los canales interiores tengan que estar en marcha. Tambien restringe por este motivo a que los canales exteriores se cargan primero y se descargan ultimo ya que necesitamos mover libremente los canales internos a medida que cargamos o descargamos los canales mas exteriores.
|
||||
* Si definimos como canal(centro) , centro + n es formato derecho, contro - n es formato izquierdo y centro es el canal de bypass, luego para cargar el formato derecho debemos y tenienedo como Max(n) la cantidad maxima de canales a la derecha o izquierda entonces primero debemos cargar canal n=centro+Max(n) y vamos decrementando n mientras sea mayor a centro. Mientras cargamos el canal n los canales desde centro hasta n se ponen en marcha.
|
||||
* Para la descarga se hace el procedimiento inverso descargando desde los canales mas cercanos a centro hacia el canal Max(n)
|
||||
* Para el formato izquierdo se invierte el signo al usar n=centro-Max(n).
|
||||
* Para la mesa de acumulacion que estamos trabajando Max(n) = 4, los canales estan definidos desde 1 a 9 y el canal central = 5.
|
||||
* La mesa puede almacenar 2 formatos, uno a la derecha y el otro a la izquierda. Cuando se requiere un cambio de formato se carga el formato en curso y se descarga el nuevo formato. Una vez descargado el formato en curso se activa el modo bypass.
|
||||
* Cambio formato:
|
||||
* Dosadores de Ingreso: M318 - Homing S31550
|
||||
* Dosadores de Salida: M343 - Homing S34461
|
||||
* Para seleccionar el canal de carga o descarga se utilizan 2 motores minimotores, uno a la entrada y el otro a la salida que permiten modificar el ángulo de las bordes. Este ángulo debe ser cargado como parámetro y hay 9 canales posibles.
|
||||
|
||||
La secuencia partiendo de la mesa de acumulacion es:
|
||||
* Mesa de acumulacion:
|
||||
* Dosadores de ingreso M316 y M317. Cambio de formato con M318
|
||||
|
||||
### Mesa de acumulación
|
||||
***
|
||||
El objetivo de la mesa de acumulación es almacenar el formato que no se está usando.
|
||||
|
||||
El trabajo tendrá los siguientes objetivos:
|
||||
- Lógica de la mesa de carga, descarga y bypass: gestión del cambio de formato para el minimotor. Por simplicidad, la mesa está dividida en derecha/izquierda y los formatos pueden estar solo en un lado.
|
||||
- Lógica de los motores en anillo y lógica estándar VM.
|
||||
- El HMI no será desarrollado en esta fase, me has dicho que se hace por separado, pero se creará un simulador para nosotros.
|
||||
- Gestión de las recetas en el HMI: inicialmente, se seguirá el plan acordado. Se crearán filas en el recetario para cada motor en anillo y para los datos de la mesa. El cambio de formato de la mesa comenzará solo después de verificar que no haya más botellas en el anillo y que el modo carga esté activo, con el divider y el anillo en automático.
|
||||
- Velocidad:
|
||||
- Velocidad de bypass: depende del divider y del anillo, no limitada por la mesa.
|
||||
- Velocidad de carga/descarga: debe ser lenta para cerrar los huecos entre los cambios de canal de la mesa. Durante la carga, la descarga está detenida y viceversa.
|
||||
|
||||
Por ahora, preveo la mesa como un Dispositivo con los siguientes señales de entrada/salida:
|
||||
|
||||
#### Señales de Entrada (Input)
|
||||
***
|
||||
|
||||
| Señal | Descripción | Función |
|
||||
| ------- | ----------------------------------------------- | ---------------------------------------------------------- |
|
||||
| i1 | Salida anillo solicitada producto | Salida libre |
|
||||
| i2 | Solicitud de carga | Para cambio de formato |
|
||||
| i3 | Anillo vacío + divider en auto + anillo en auto | Para generar consentimiento a cambio de formato |
|
||||
| i4 | Velocidad motor bypass solicitada | Velocidad deseada para bypass |
|
||||
| i5 | Cambio de formato ejecutado desde el HMI | Comando de ejecución |
|
||||
| i6 | Habilitación de descarga | Inhibe descarga automática una vez completada la carga |
|
||||
|
||||
#### Señales de Salida (Output)
|
||||
***
|
||||
|
||||
| Señal | Descripción | Función |
|
||||
| ------- | -------------------------- | ---------------------------------------------------- |
|
||||
| o1 | Entrada solicita producto | Mesa lista y en marcha |
|
||||
| o2 | Cambio de formato permitido | Finalizado el carga y anillo vacío |
|
||||
| o3 | Velocidad motor salida | Para interfaz con 1 motor de salida de la mesa en el anillo |
|
||||
| o4 | Mesa en Bypass | Estado de bypass activo |
|
||||
|
||||
Cambio de estados en la mesa:
|
||||
- La carga comienza por solicitud externa i2 (de operador o temporizador).
|
||||
- La descarga ocurre automáticamente después de un cambio de formato (i5). La mesa se descarga completamente antes de iniciar el modo bypass.
|
||||
- Una vez descargada, se activa el modo bypass. (o4)
|
Binary file not shown.
After Width: | Height: | Size: 181 KiB |
|
@ -1,5 +1,5 @@
|
|||
|
||||
[Elenco I-O Standard_V07.xlsx](file:///C:%5CTrabajo%5CVM%5C07%20-%20MASTER%20Transport%5CReporte%5CElenco%20I-O%20Standard_V07.xlsx)
|
||||
[Elenco I-O Standard_V07.xlsx](file:///D:%5CTrabajo%5CVM%5C07%20-%20MASTER%20Transport%5CReporte%5CElenco%20I-O%20Standard_V07.xlsx)
|
||||
|
||||
|
||||
| Componente | IP Standard | Commento | Optional |
|
||||
|
|
Loading…
Reference in New Issue