vault backup: 2025-06-16 16:22:20

This commit is contained in:
Miguel 2025-06-16 16:22:20 +02:00
parent 36a3ec33e7
commit d5ece278db
73 changed files with 19729 additions and 6835 deletions

View File

@ -1,8 +1,6 @@
[
"mousewheel-image-zoom",
"obsidian-image-toolkit",
"copy-as-html",
"copy-document-as-html",
"obsidian-pandoc",
"obsidian-enhancing-export",
"obsidian-excalidraw-plugin",
@ -26,5 +24,7 @@
"obsidian-plantuml",
"mcp-tools",
"obsidian-local-rest-api",
"obsidian-excel-to-markdown-table"
"obsidian-excel-to-markdown-table",
"copy-document-as-html",
"copy-as-html"
]

File diff suppressed because one or more lines are too long

View File

@ -1,7 +1,7 @@
{
"id": "advanced-canvas",
"name": "Advanced Canvas",
"version": "4.0.2",
"version": "5.1.0",
"minAppVersion": "1.1.0",
"description": "Supercharge your canvas experience! Create presentations, flowcharts and more!",
"author": "Developer-Mike",

View File

@ -16,12 +16,22 @@
.ac-settings-heading:not(:first-child) {
margin-top: var(--size-4-10) !important;
}
.ac-settings-heading:has(.checkbox-container:not(.is-enabled)) {
border-bottom-color: var(--background-modifier-border-hover);
}
.ac-settings-heading .setting-item-description {
margin-inline-end: 20px;
}
.settings-header-children {
transform-origin: top center;
transform: scaleY(1);
transition: transform 0.2s ease-in-out;
}
.ac-settings-heading:has(.checkbox-container:not(.is-enabled)) + .settings-header-children {
opacity: 0.5;
pointer-events: none;
height: 0;
transform: scaleY(0);
}
details.setting-item[open] > summary {
margin-bottom: 0.75em;
@ -99,15 +109,9 @@ body.is-mobile .kofi-button.sticky {
.kofi-overlay .no-button {
cursor: pointer;
}
.quicksettings-suggestion {
display: flex;
flex-direction: column;
}
.quicksettings-suggestion .quicksettings-suggestion-label {
font-weight: 500;
}
.quicksettings-suggestion .quicksettings-suggestion-description {
color: var(--text-muted);
.canvas-wrapper > .document-search-container {
transform: translateZ(0);
margin: 0;
}
.canvas-wrapper:not(.mod-readonly) .show-while-readonly {
display: none;
@ -386,7 +390,7 @@ body.is-mobile .kofi-button.sticky {
pointer-events: none !important;
transition: none !important;
}
.canvas.is-exporting #group-collapse-button {
.canvas.is-exporting .collapse-button {
display: none;
}
.canvas.is-exporting #watermark-ac {
@ -408,7 +412,7 @@ body.is-mobile .kofi-button.sticky {
.canvas-wrapper.mod-readonly[data-hide-background-grid-when-in-readonly=true] .canvas-background {
visibility: hidden;
}
#group-collapse-button {
.collapse-button {
position: absolute;
left: 0;
top: calc(-1 * var(--size-4-1) * var(--zoom-multiplier));
@ -427,29 +431,29 @@ body.is-mobile .kofi-button.sticky {
.canvas-wrapper[data-collapsible-groups-feature-enabled=true] .canvas-node .canvas-group-label {
left: calc(40px * var(--zoom-multiplier));
}
.canvas-node[data-is-collapsed] .canvas-node-container {
.canvas-node[data-collapsed] .canvas-node-container {
display: none;
}
.canvas-node[data-is-collapsed] .canvas-group-label {
.canvas-node[data-collapsed] .canvas-group-label {
max-width: initial;
}
.canvas-wrapper[data-collapsed-group-preview-on-drag=true][data-is-dragging] .canvas-node[data-is-collapsed] .canvas-node-container {
.canvas-wrapper[data-collapsed-group-preview-on-drag=true][data-is-dragging] .canvas-node[data-collapsed] .canvas-node-container {
display: block;
opacity: 0.5;
border-style: dashed;
}
.canvas-wrapper[data-collapsed-group-preview-on-drag=true][data-is-dragging] .canvas-node[data-is-collapsed] .canvas-node-container .canvas-node-content {
.canvas-wrapper[data-collapsed-group-preview-on-drag=true][data-is-dragging] .canvas-node[data-collapsed] .canvas-node-container .canvas-node-content {
background-color: transparent;
}
.canvas-node-interaction-layer[data-target-is-collapsed] .canvas-node-resizer {
.canvas-node-interaction-layer[data-target-collapsed] .canvas-node-resizer {
pointer-events: none;
cursor: inherit;
}
.canvas-node-interaction-layer[data-target-is-collapsed] .canvas-node-resizer .canvas-node-connection-point {
.canvas-node-interaction-layer[data-target-collapsed] .canvas-node-resizer .canvas-node-connection-point {
display: none;
pointer-events: none;
}
.canvas-wrapper[data-floating-edge-feature-enabled=true] .canvas.is-connecting .canvas-node:not(.canvas-node-group)::after {
.canvas-wrapper[data-allow-floating-edge-creation=true] .canvas.is-connecting .canvas-node:not(.canvas-node-group)::after {
all: unset;
content: "";
z-index: 100;
@ -462,7 +466,7 @@ body.is-mobile .kofi-button.sticky {
border-radius: var(--radius-m);
outline: calc(4px * var(--zoom-multiplier)) dashed hsla(var(--color-accent-hsl), 0.5);
}
.canvas-wrapper[data-floating-edge-feature-enabled=true] .canvas.is-connecting .canvas-node:not(.canvas-node-group).hovering-floating-edge-zone::after {
.canvas-wrapper[data-allow-floating-edge-creation=true] .canvas.is-connecting .canvas-node:not(.canvas-node-group).hovering-floating-edge-zone::after {
outline-color: var(--color-accent);
outline-style: solid;
background-color: hsla(var(--color-accent-hsl), 0.1);
@ -496,26 +500,26 @@ body.is-mobile .kofi-button.sticky {
color: var(--color-green);
background-color: rgba(var(--color-green-rgb), 0.1);
}
.canvas-node[data-portal-to-file] {
.canvas-node[data-is-portal-loaded=true] {
pointer-events: all;
}
.canvas-node[data-portal-to-file]:not(.is-focused) {
.canvas-node[data-is-portal-loaded=true]:not(.is-focused) {
pointer-events: none;
}
.canvas-node[data-portal-to-file]:not(.is-focused) .canvas-node-label {
.canvas-node[data-is-portal-loaded=true]:not(.is-focused) .canvas-node-label {
pointer-events: all;
}
.canvas-node[data-portal-to-file] .canvas-node-container {
.canvas-node[data-is-portal-loaded=true] .canvas-node-container {
background-color: transparent;
border-style: dashed;
}
.canvas-node[data-portal-to-file] .canvas-node-container .canvas-node-content {
.canvas-node[data-is-portal-loaded=true] .canvas-node-container .canvas-node-content {
display: none;
}
.canvas-node-interaction-layer[data-target-portal-id] .canvas-node-resizer {
.canvas-node-interaction-layer[data-is-from-portal=true] .canvas-node-resizer {
pointer-events: none;
cursor: inherit;
}
.canvas-node-interaction-layer[data-target-portal-id] .canvas-node-resizer .canvas-node-connection-point {
.canvas-node-interaction-layer[data-is-from-portal=true] .canvas-node-resizer .canvas-node-connection-point {
pointer-events: all;
}

View File

@ -11,6 +11,7 @@
"debug": false,
"isTimestamp": false,
"enabledCss": false,
"concurrency": "5",
"prevConfig": {
"pageSize": "A4",
"marginType": "1",

File diff suppressed because it is too large Load Diff

View File

@ -1,7 +1,7 @@
{
"id": "better-export-pdf",
"name": "Better Export PDF",
"version": "1.10.2",
"version": "1.11.0",
"minAppVersion": "0.15.0",
"description": "Export your notes to PDF, support export preview, add bookmarks outline and header/footer.",
"author": "l1xnan",

View File

@ -36,6 +36,12 @@
height: 100%;
width: 100%;
}
#better-export-pdf .pdf-preview > div.progress {
flex: none;
height: auto;
width: 100%;
text-align: left;
}
#better-export-pdf .pdf-preview .filename {
font-size: 0.75rem;

View File

@ -46,6 +46,60 @@
"enabled": true,
"isBuiltIn": true,
"core": true,
"plusExclusive": true,
"projectEnabled": false,
"capabilities": [
"vision"
]
},
{
"name": "gpt-4.1",
"provider": "openai",
"enabled": true,
"isBuiltIn": true,
"core": true,
"projectEnabled": true,
"capabilities": [
"vision"
]
},
{
"name": "gpt-4.1-mini",
"provider": "openai",
"enabled": true,
"isBuiltIn": true,
"core": true,
"projectEnabled": true,
"capabilities": [
"vision"
]
},
{
"name": "gpt-4.1-nano",
"provider": "openai",
"enabled": true,
"isBuiltIn": true,
"core": true,
"capabilities": [
"vision"
]
},
{
"name": "o4-mini",
"provider": "openai",
"enabled": true,
"isBuiltIn": true,
"core": true,
"capabilities": [
"reasoning"
]
},
{
"name": "claude-3-5-sonnet-latest",
"provider": "anthropic",
"enabled": true,
"isBuiltIn": true,
"core": true,
"capabilities": [
"vision"
]
@ -70,16 +124,6 @@
"vision"
]
},
{
"name": "claude-3-5-sonnet-latest",
"provider": "anthropic",
"enabled": true,
"isBuiltIn": true,
"core": true,
"capabilities": [
"vision"
]
},
{
"name": "o1-mini",
"provider": "openai",
@ -148,7 +192,8 @@
"enabled": true,
"isBuiltIn": true,
"isEmbeddingModel": true,
"core": true
"core": true,
"plusExclusive": true
},
{
"name": "copilot-plus-large",
@ -157,6 +202,7 @@
"isBuiltIn": true,
"isEmbeddingModel": true,
"core": true,
"plusExclusive": true,
"believerExclusive": true,
"dimensions": 1024
},
@ -167,6 +213,7 @@
"isBuiltIn": true,
"isEmbeddingModel": true,
"core": true,
"plusExclusive": true,
"dimensions": 512
},
{
@ -290,5 +337,11 @@
"prompt": "<instruction>Convert to a markdown obsidian compatible table the text below. .</instruction>\n\n<text>{copilot-selection}</text>",
"showInContextMenu": true
}
]
],
"userId": "d7dbf2b1-50ab-4501-a8b6-0d88adbe729a",
"includeActiveNoteAsContext": true,
"passMarkdownImages": true,
"enableCustomPromptTemplating": true,
"allowAdditionalContext": true,
"enableWordCompletion": false
}

File diff suppressed because one or more lines are too long

View File

@ -1,9 +1,9 @@
{
"id": "copilot",
"name": "Copilot",
"version": "2.8.7",
"version": "2.9.0",
"minAppVersion": "0.15.0",
"description": "An AI Copilot in Obsidian.",
"description": "Your AI Copilot: Chat with Your Second Brain, Learn Faster, Work Smarter.",
"author": "Logan Yang",
"authorUrl": "https://twitter.com/logancyang",
"fundingUrl": {

File diff suppressed because one or more lines are too long

View File

@ -0,0 +1,17 @@
{
"removeFrontMatter": true,
"convertSvgToBitmap": true,
"useCustomStylesheet": false,
"useCustomHtmlTemplate": false,
"embedExternalLinks": true,
"removeDataviewMetadataLines": false,
"formatCodeWithTables": true,
"formatCalloutsWithTables": true,
"footnoteHandling": 2,
"internalLinkHandling": 0,
"styleSheet": "body,input {\n font-family: \"Roboto\",\"Helvetica Neue\",Helvetica,Arial,sans-serif\n}\n\ncode, kbd, pre {\n font-family: \"Roboto Mono\", \"Courier New\", Courier, monospace;\n background-color: #f5f5f5;\n}\n\npre {\n padding: 1em 0.5em;\n}\n\ntable {\n background: white;\n border: 1px solid #666;\n border-collapse: collapse;\n padding: 0.5em;\n}\n\ntable thead th,\ntable tfoot th {\n text-align: left;\n background-color: #eaeaea;\n color: black;\n}\n\ntable th, table td {\n border: 1px solid #ddd;\n padding: 0.5em;\n}\n\ntable td {\n color: #222222;\n}\n\n.callout[data-callout=\"abstract\"] .callout-title,\n.callout[data-callout=\"summary\"] .callout-title,\n.callout[data-callout=\"tldr\"] .callout-title,\n.callout[data-callout=\"faq\"] .callout-title,\n.callout[data-callout=\"info\"] .callout-title,\n.callout[data-callout=\"help\"] .callout-title {\n background-color: #828ee7;\n}\n.callout[data-callout=\"tip\"] .callout-title,\n.callout[data-callout=\"hint\"] .callout-title,\n.callout[data-callout=\"important\"] .callout-title {\n background-color: #34bbe6;\n}\n.callout[data-callout=\"success\"] .callout-title,\n.callout[data-callout=\"check\"] .callout-title,\n.callout[data-callout=\"done\"] .callout-title {\n background-color: #a3e048;\n}\n.callout[data-callout=\"question\"] .callout-title,\n.callout[data-callout=\"todo\"] .callout-title {\n background-color: #49da9a;\n}\n.callout[data-callout=\"caution\"] .callout-title,\n.callout[data-callout=\"attention\"] .callout-title {\n background-color: #f7d038;\n}\n.callout[data-callout=\"warning\"] .callout-title,\n.callout[data-callout=\"missing\"] .callout-title,\n.callout[data-callout=\"bug\"] .callout-title {\n background-color: #eb7532;\n}\n.callout[data-callout=\"failure\"] .callout-title,\n.callout[data-callout=\"fail\"] .callout-title,\n.callout[data-callout=\"danger\"] .callout-title,\n.callout[data-callout=\"error\"] .callout-title {\n background-color: #e6261f;\n}\n.callout[data-callout=\"example\"] .callout-title {\n background-color: #d23be7;\n}\n.callout[data-callout=\"quote\"] .callout-title,\n.callout[data-callout=\"cite\"] .callout-title {\n background-color: #aaaaaa;\n}\n\n.callout-icon {\n flex: 0 0 auto;\n display: flex;\n align-self: center;\n}\n\nsvg.svg-icon {\n height: 18px;\n width: 18px;\n stroke-width: 1.75px;\n}\n\n.callout {\n overflow: hidden;\n margin: 1em 0;\n box-shadow: 0 2px 2px 0 rgba(0, 0, 0, 0.14), 0 1px 5px 0 rgba(0, 0, 0, 0.12), 0 3px 1px -2px rgba(0, 0, 0, 0.2);\n border-radius: 4px;\n}\n\n.callout-title {\n padding: .5em;\n display: flex;\n gap: 8px;\n font-size: inherit;\n color: black;\n line-height: 1.3em;\n}\n\n.callout-title-inner {\n font-weight: bold;\n color: black;\n}\n\n.callout-content {\n overflow-x: auto;\n padding: 0.25em .5em;\n color: #222222;\n background-color: white !important;\n}\n\nul.contains-task-list {\n padding-left: 0;\n list-style: none;\n}\n\nul.contains-task-list ul.contains-task-list {\n padding-left: 2em;\n}\n\nul.contains-task-list li input[type=\"checkbox\"] {\n margin-right: .5em;\n}\n\n.callout-table,\n.callout-table tr,\n.callout-table p {\n width: 100%;\n padding: 0;\n}\n\n.callout-table td {\n width: 100%;\n padding: 0 1em;\n}\n\n.callout-table p {\n padding-bottom: 0.5em;\n}\n\n.source-table {\n width: 100%;\n background-color: #f5f5f5;\n}\n",
"htmlTemplate": "<!DOCTYPE html>\n<html>\n<head>\n <meta charset=\"utf-8\">\n <title>${title}</title>\n <style>\n ${MERMAID_STYLESHEET}\n ${stylesheet}\n </style>\n</head>\n<body>\n${body}\n</body>\n</html>\n",
"bareHtmlOnly": false,
"fileNameAsHeader": false,
"disableImageEmbedding": false
}

File diff suppressed because one or more lines are too long

View File

@ -1,7 +1,7 @@
{
"id": "mousewheel-image-zoom",
"name": "Mousewheel Image zoom",
"version": "1.0.22",
"version": "1.0.24",
"minAppVersion": "0.9.12",
"description": "This plugin enables you to increase/decrease the size of an image by scrolling",
"author": "Nico Jeske",

File diff suppressed because one or more lines are too long

View File

@ -1,7 +1,7 @@
{
"id": "numerals",
"name": "Numerals",
"version": "1.5.0",
"version": "1.5.5",
"minAppVersion": "0.16.0",
"description": "Numerals turns any code block into an advanced calculator. Evaluates math expressions on each line of a code block, including units, currency, and optional TeX rendering.",
"author": "RyanC",

File diff suppressed because it is too large Load Diff

File diff suppressed because one or more lines are too long

View File

@ -1,11 +1,11 @@
{
"id": "obsidian-excalidraw-plugin",
"name": "Excalidraw",
"version": "2.9.2",
"version": "2.12.2",
"minAppVersion": "1.1.6",
"description": "An Obsidian plugin to edit and view Excalidraw drawings",
"author": "Zsolt Viczian",
"authorUrl": "https://www.zsolt.blog",
"authorUrl": "https://excalidraw-obsidian.online",
"fundingUrl": "https://ko-fi.com/zsolt",
"helpUrl": "https://github.com/zsviczian/obsidian-excalidraw-plugin#readme",
"isDesktopOnly": false

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View File

@ -6,5 +6,5 @@
"description": "Integrate Git version control with automatic backup and other advanced features.",
"isDesktopOnly": false,
"fundingUrl": "https://ko-fi.com/vinzent",
"version": "2.32.1"
"version": "2.33.0"
}

View File

@ -574,3 +574,32 @@
.git-split-diff-view .cm-insertedLine .cm-changedText {
background-color: #22bb2230;
}
/* Limits the scrollbar to the view body */
.git-view {
display: flex;
flex-direction: column;
position: relative;
height: 100%;
}
.git-obscure-prompt[git-is-obscured="true"] #git-show-password:after {
-webkit-mask-image: url('data:image/svg+xml,<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="svg-icon lucide-eye"><path d="M2.062 12.348a1 1 0 0 1 0-.696 10.75 10.75 0 0 1 19.876 0 1 1 0 0 1 0 .696 10.75 10.75 0 0 1-19.876 0"></path><circle cx="12" cy="12" r="3"></circle></svg>');
}
.git-obscure-prompt[git-is-obscured="false"] #git-show-password:after {
-webkit-mask-image: url('data:image/svg+xml,<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="svg-icon lucide-eye-off"><path d="M10.733 5.076a10.744 10.744 0 0 1 11.205 6.575 1 1 0 0 1 0 .696 10.747 10.747 0 0 1-1.444 2.49"></path><path d="M14.084 14.158a3 3 0 0 1-4.242-4.242"></path><path d="M17.479 17.499a10.75 10.75 0 0 1-15.417-5.151 1 1 0 0 1 0-.696 10.75 10.75 0 0 1 4.446-5.143"></path><path d="m2 2 20 20"></path></svg>');
}
/* Override styling of Codemirror merge view "collapsed lines" indicator */
.git-split-diff-view .ͼ2 .cm-collapsedLines {
background: var(--interactive-normal);
border-radius: var(--radius-m);
color: var(--text-accent);
font-size: var(--font-small);
padding: var(--size-4-1) var(--size-4-1);
}
.git-split-diff-view .ͼ2 .cm-collapsedLines:hover {
background: var(--interactive-hover);
color: var(--text-accent-hover);
}

File diff suppressed because one or more lines are too long

View File

@ -1,7 +1,7 @@
{
"id": "obsidian-importer",
"name": "Importer",
"version": "1.6.19",
"version": "1.6.21",
"minAppVersion": "0.15.0",
"description": "Import data from Notion, Evernote, Apple Notes, Microsoft OneNote, Google Keep, Bear, Roam, and HTML files.",
"author": "Obsidian",

File diff suppressed because one or more lines are too long

View File

@ -1,7 +1,7 @@
{
"id": "obsidian-local-rest-api",
"name": "Local REST API",
"version": "3.1.0",
"version": "3.2.0",
"minAppVersion": "0.12.0",
"description": "Get, change or otherwise interact with your notes in Obsidian via a REST API.",
"author": "Adam Coddington",

View File

@ -1,6 +1,7 @@
{
"version": "2.0",
"layout": [
null,
null,
null,
null

File diff suppressed because one or more lines are too long

View File

@ -1,7 +1,7 @@
{
"id": "obsidian-mindmap-nextgen",
"name": "Mindmap NextGen",
"version": "1.13.2",
"version": "1.14.1",
"description": "View your Markdown as a mindmap",
"isDesktopOnly": false,
"minAppVersion": "1.0.0"

View File

@ -25,10 +25,12 @@
display: block;
}
.markmap div { line-height: var(--mm-line-height, 1em) }
.katex-html { display: none }
.workspace-leaf-content[data-type="mindmap-nextgen-plugin"] .view-content {
padding: 0
}
/* Code blocks inside mindmaps */
@ -44,21 +46,6 @@
}
/* Checkboxes */
.mm-ng-checkbox {
font-weight: bold;
}
.mm-ng-checkbox-checked {
color: green;
}
.mm-ng-checkbox-unchecked {
color: red;
}
/* Inline mindmaps */
.block-language-markmap { border-radius: 5px }
@ -183,31 +170,7 @@
/* Toolbars */
.mm-toolbar {
position: absolute;
bottom: 2rem;
right: 1rem;
background-color: white;
border-radius: 0.5rem;
padding: 0.2rem;
box-shadow: 0 0 0.4rem 0 white;
z-index: 1;
border: 1px solid #ccc;
display: flex;
flex-direction: row;
align-items: center;
justify-content: space-between;
}
.mm-toolbar .mm-toolbar-brand {
display: none;
}
.mm-toolbar .mm-toolbar-item {
height: 20px;
color: black;
}
.mm-toolbar .mm-toolbar-item.active,
.mm-toolbar .mm-toolbar-item:hover {
color: brown;
position: absolute;
bottom: 20px;
left: 20px;
}

File diff suppressed because one or more lines are too long

View File

@ -1,7 +1,7 @@
{
"id": "obsidian-tasks-plugin",
"name": "Tasks",
"version": "7.18.4",
"version": "7.19.1",
"minAppVersion": "1.4.0",
"description": "Track tasks across your vault. Supports due dates, recurring tasks, done dates, sub-set of checklist items, and filtering.",
"helpUrl": "https://publish.obsidian.md/tasks/",

File diff suppressed because one or more lines are too long

View File

@ -1,7 +1,7 @@
{
"id": "omnisearch",
"name": "Omnisearch",
"version": "1.26.1",
"version": "1.27.1",
"minAppVersion": "1.7.2",
"description": "A search engine that just works",
"author": "Simon Cambier",

View File

@ -320,5 +320,7 @@
"vimSmoothOutlineMode": true,
"vimHintChars": "hjklasdfgyuiopqwertnmzxcvb",
"vimHintArgs": "all",
"PATH": ""
"PATH": "",
"autoCheckForUpdates": true,
"fixObsidianTextSelectionBug": true
}

File diff suppressed because one or more lines are too long

View File

@ -1,7 +1,7 @@
{
"id": "pdf-plus",
"name": "PDF++",
"version": "0.40.28",
"version": "0.40.30",
"minAppVersion": "1.5.8",
"description": "The most Obsidian-native PDF annotation tool ever.",
"author": "Ryota Ushio",

View File

@ -1,17 +1,193 @@
{
"recentFiles": [
{
"basename": "PLC IO Tags",
"path": "03-VM/44 - 98050 - Fiera/IO/PLC IO Tags.md"
"basename": "Untitled",
"path": "04-SIDEL/13 - E5.007560 - Modifica O&U - SAE235/Untitled.md"
},
{
"basename": "Report Javier Vargas - SAE052",
"path": "04-SIDEL/12 - SAE052 - Syrup Update & GSD Update/Report Javier Vargas - SAE052.md"
},
{
"basename": "Layout - Anello-Ring",
"path": "03-VM/44 - 98050 - Fiera/Layout - Anello-Ring.md"
},
{
"basename": "Facturazion Electronica - Fatturazione Elecctronica",
"path": "01-Documentation/Facturazion/Facturazion Electronica - Fatturazione Elecctronica.md"
},
{
"basename": "IO - Ips Nodes",
"path": "03-VM/44 - 98050 - Fiera/IO - Ips Nodes.md"
},
{
"basename": "Notes - Git - Gitea",
"path": "01-Documentation/GIT - GitHub/Notes - Git - Gitea.md"
},
{
"basename": "GIT commands HELP",
"path": "01-Documentation/GIT - GitHub/GIT commands HELP.md"
},
{
"basename": "98050_Hardware PEW - PAW",
"path": "03-VM/44 - 98050 - Fiera/98050_Hardware PEW - PAW.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": "Especifica General",
"path": "03-VM/44 - 98050 - Fiera/Especifica General.md"
},
{
"basename": "Progetto 98050 Fiera - Tavolo di accumulo - Logica - v 0.1 - Ita",
"path": "03-VM/44 - 98050 - Fiera/Progetto 98050 Fiera - Tavolo di accumulo - Logica - v 0.1 - Ita.md"
},
{
"basename": "Progetto 98050 Fiera - Tavolo di accumulo - Logica - v 0.2 - en",
"path": "03-VM/44 - 98050 - Fiera/Progetto 98050 Fiera - Tavolo di accumulo - Logica - v 0.2 - en.md"
},
{
"basename": "Conda - Anaconda - miniconda",
"path": "01-Documentation/Python/Scripts Python/Conda - Anaconda - miniconda.md"
},
{
"basename": "Shortcuts",
"path": "DB/Shortcuts/Shortcuts.md"
},
{
"basename": "AWL - STL Types",
"path": "01-Documentation/Python/Scripts Python/XML to SCL Siemens/AWL - STL Types.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": "Excel - VBA - AdjustOffset",
"path": "01-Documentation/Scripts Excel - VBA/Excel - VBA - AdjustOffset.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": "Notes for Windows - Chris Titus Tool - Online - Offline",
"path": "01-Documentation/Windows/Notes for Windows - Chris Titus Tool - Online - Offline.md"
},
{
"basename": "Problem with drag&drop or Left Click",
"path": "01-Documentation/Dispositivos - Manuales/Mouse/Problem with drag&drop or Left Click.md"
},
{
"basename": "GEO - Master UP",
"path": "01-Documentation/Vetromeccanica/GEO - Master UP/GEO - Master UP.md"
},
{
"basename": "Motor_Framework_Insight",
"path": "03-VM/44 - 98050 - Fiera/Motor_Framework_Insight.md"
},
{
"basename": "AWL - STL Types - Parámetros Típicos",
"path": "01-Documentation/Python/Scripts Python/XML to SCL Siemens/AWL - STL Types - Parámetros Típicos.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": "Conversión LAD a SCL Siemens",
"path": "01-Documentation/Python/Scripts Python/XML to SCL Siemens/Conversión LAD a SCL Siemens.md"
},
{
"basename": "Excel - VBA - Cell Reference Increment Functions",
"path": "01-Documentation/Scripts Excel - VBA/Excel - VBA - Cell Reference Increment Functions.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": "Openness Python Library - siemens_tia_scripting",
"path": "01-Documentation/Siemens/Openness/Openness Python Library - siemens_tia_scripting.md"
},
{
"basename": "Openness Python Library - siemens_tia_scripting - Parsing TIA Portal `_XRef.xml` Files for Call Tree Generation",
"path": "01-Documentation/Siemens/Openness/Openness Python Library - siemens_tia_scripting - Parsing TIA Portal `_XRef.xml` Files for Call Tree Generation.md"
},
{
"basename": "Import external source files into TIA Portal and generate blocks from them .db",
"path": "01-Documentation/Siemens/TIA Portal/Import external source files into TIA Portal and generate blocks from them .db.md"
},
{
"basename": "SIMATIC ET 200S 2AI I 4WIRE ST",
"path": "01-Documentation/Siemens/Peripherics - Schede - IM/SIMATIC ET 200S 2AI I 4WIRE ST.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": "FB2121 - Analog Input 4-20mA Management",
"path": "04-SIDEL/09 - SAE452 - Diet as Regular - San Giovanni in Bosco/FB2121 - Read AI 4.20ma/FB2121 - Analog Input 4-20mA Management.md"
},
{
"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": "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"
},
{
"basename": "Versiones",
"path": "04-SIDEL/09 - SAE452 - Diet as Regular - San Giovanni in Bosco/FB2120 - MasseliTCP/Versiones.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": "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": "Test in SIDEL",
"path": "04-SIDEL/09 - SAE452 - Diet as Regular - San Giovanni in Bosco/Documentation/Test in SIDEL.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": "RDSYSST - SFC51",
"path": "01-Documentation/Siemens/PLC Siemens/RDSYSST - SFC51.md"
},
{
"basename": "TCON, TDISCON, TSEND, and TRCV (TCP communication) instructions",
"path": "01-Documentation/Siemens/PLC Siemens/TCON, TDISCON, TSEND, and TRCV (TCP communication) instructions.md"
},
{
"basename": "Difference between 2-wire, 3-wire, and 4-wire signal transmitter connections",
"path": "01-Documentation/Dispositivos - Manuales/4-20ma Analog setup wiring/Difference between 2-wire, 3-wire, and 4-wire signal transmitter connections.md"
},
{
"basename": "IPs & Address - Master - Vetromeccanica",
"path": "03-VM/9..... MASTER Transport/Standard Transport/IPs & Address - Master - Vetromeccanica.md"
},
{
"basename": "PLC IO Tags",
"path": "03-VM/44 - 98050 - Fiera/IO/PLC IO Tags.md"
},
{
"basename": "Mapping Divider",
"path": "03-VM/44 - 98050 - Fiera/IO/Mapping Divider.md"
},
{
"basename": "Cronología del Proyecto 169423 - AJETHAI CO., LTD.",
"path": "04-SIDEL/14 - E5.007172 - Modifica O&U - SAE340/Cronología del Proyecto 169423 - AJETHAI CO., LTD..md"
},
{
"basename": "SysInternals Tools - WinInternals",
"path": "01-Documentation/Windows/SysInternals Tools - WinInternals.md"
@ -23,182 +199,6 @@
{
"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"
},
{
"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": "Versiones",
"path": "04-SIDEL/09 - SAE452 - Diet as Regular - San Giovanni in Bosco/FB2120 - MasseliTCP/Versiones.md"
},
{
"basename": "S7-300 - TCON - TRCV",
"path": "01-Documentation/Siemens/PLC Siemens/S7-300 - TCON - TRCV.md"
},
{
"basename": "Maselli - ADAM - Protocol",
"path": "01-Documentation/Dispositivos - Manuales/Maselli/Maselli - ADAM - Protocol.md"
},
{
"basename": "Install Docker on Ubuntu",
"path": "01-Documentation/Dockers/Install Docker on Ubuntu.md"
},
{
"basename": "FB Scan Time - FB1",
"path": "03-VM/9..... MASTER Transport/Standard Transport/FB Scan Time - FB1.md"
},
{
"basename": "5.007382-EXMU01UF - RVU008 - EQPT24731 - Initial Data",
"path": "04-SIDEL/03 - 5.007382-EXMU01UF - RVU008 - EQPT24731/5.007382-EXMU01UF - RVU008 - EQPT24731 - Initial Data.md"
},
{
"basename": "OB30 Calculation",
"path": "03-VM/9..... MASTER Transport/Standard Transport/OB30 Calculation.md"
},
{
"basename": "FB Scan Time OB1 - FB4",
"path": "03-VM/9..... MASTER Transport/Standard Transport/FB Scan Time OB1 - FB4.md"
},
{
"basename": "Docker Basics - Essential Commands and Usage Guide",
"path": "01-Documentation/Dockers/Docker Basics - Essential Commands and Usage Guide.md"
},
{
"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": "GIT commands HELP",
"path": "01-Documentation/GIT - GitHub/GIT commands HELP.md"
},
{
"basename": "Notes - Git - Gitea",
"path": "01-Documentation/GIT - GitHub/Notes - Git - Gitea.md"
},
{
"basename": "Git - Start New Repository with Visual Studio Code - VS Code",
"path": "01-Documentation/GIT - GitHub/Git - Start New Repository with Visual Studio Code - VS Code.md"
},
{
"basename": "GitHub Privacy",
"path": "01-Documentation/GIT - GitHub/GitHub Privacy.md"
}
],
"omittedPaths": [],

View File

@ -3,5 +3,6 @@
"eng",
"ita"
],
"rightClickMenu": true
"rightClickMenu": true,
"useSystemOCR": false
}

File diff suppressed because one or more lines are too long

View File

@ -1,7 +1,7 @@
{
"id": "text-extractor",
"name": "Text Extractor",
"version": "0.5.2",
"version": "0.6.0",
"minAppVersion": "1.4.16",
"description": "A (companion) plugin to facilitate the extraction of text from images (OCR) and PDFs.",
"author": "Simon Cambier",

View File

@ -8,49 +8,67 @@
"type": "tabs",
"children": [
{
"id": "db16746106a49cac",
"id": "5db613eb1ce999fb",
"type": "leaf",
"state": {
"type": "markdown",
"state": {
"file": "03-VM/44 - 98050 - Fiera/IO/Mapping Divider.md",
"file": "03-VM/44 - 98050 - Fiera/IO - Ips Nodes.md",
"mode": "source",
"source": false,
"backlinks": false
},
"icon": "lucide-file",
"title": "Mapping Divider"
"title": "IO - Ips Nodes"
}
},
{
"id": "5db613eb1ce999fb",
"type": "leaf",
"state": {
"type": "excalidraw",
"state": {
"file": "03-VM/44 - 98050 - Fiera/Layout - Anello-Ring.md"
},
"icon": "excalidraw-icon",
"title": "Layout - Anello-Ring"
}
},
{
"id": "075404432f3ecddb",
"id": "7ee6dc040af732b6",
"type": "leaf",
"state": {
"type": "markdown",
"state": {
"file": "03-VM/44 - 98050 - Fiera/IO/PLC IO Tags.md",
"mode": "preview",
"file": "03-VM/44 - 98050 - Fiera/98050_Hardware PEW - PAW.md",
"mode": "source",
"source": false,
"backlinks": false
},
"icon": "lucide-file",
"title": "PLC IO Tags"
"title": "98050_Hardware PEW - PAW"
}
},
{
"id": "e149ba8053d0496f",
"type": "leaf",
"state": {
"type": "markdown",
"state": {
"file": "03-VM/44 - 98050 - Fiera/Progetto 98050 Fiera - Tavolo di accumulo - Logica - v 0.1 - Esp.md",
"mode": "source",
"source": false,
"backlinks": false
},
"icon": "lucide-file",
"title": "Progetto 98050 Fiera - Tavolo di accumulo - Logica - v 0.1 - Esp"
}
},
{
"id": "70e719f291c2a1c4",
"type": "leaf",
"state": {
"type": "markdown",
"state": {
"file": "04-SIDEL/13 - E5.007560 - Modifica O&U - SAE235/Untitled.md",
"mode": "source",
"source": false,
"backlinks": false
},
"icon": "lucide-file",
"title": "Untitled"
}
}
],
"currentTab": 2
"currentTab": 3
}
],
"direction": "vertical"
@ -70,7 +88,7 @@
"type": "file-explorer",
"state": {
"sortOrder": "alphabetical",
"autoReveal": true
"autoReveal": false
},
"icon": "lucide-folder-closed",
"title": "Files"
@ -117,8 +135,7 @@
}
],
"direction": "horizontal",
"width": 286.5,
"collapsed": true
"width": 286.5
},
"right": {
"id": "403186784ae0fd88",
@ -246,54 +263,54 @@
"obsidian-importer:Open Importer": false
}
},
"active": "075404432f3ecddb",
"active": "863e4e6efbd0fda5",
"lastOpenFiles": [
"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",
"04-SIDEL/12 - SAE052 - Syrup Update & GSD Update/Report Javier Vargas - SAE052.md",
"03-VM/44 - 98050 - Fiera/Layout - Anello-Ring.md",
"03-VM/44 - 98050 - Fiera/IO",
"01-Documentation/Facturazion/Facturazion Electronica - Fatturazione Elecctronica.md",
"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/adjuntos/Pasted image 20250616120243.png",
"03-VM/44 - 98050 - Fiera/adjuntos/Pasted image 20250616115153.png",
"03-VM/44 - 98050 - Fiera/adjuntos/Pasted image 20250616114855.png",
"01-Documentation/GIT - GitHub/Notes - Git - Gitea.md",
"01-Documentation/GIT - GitHub/GIT commands HELP.md",
"03-VM/44 - 98050 - Fiera/98050_Hardware PEW - PAW.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/Especifica General.md",
"03-VM/44 - 98050 - Fiera/Progetto 98050 Fiera - Tavolo di accumulo - Logica - v 0.1 - Ita.md",
"03-VM/44 - 98050 - Fiera/Progetto 98050 Fiera - Tavolo di accumulo - Logica - v 0.2 - en.md",
"01-Documentation/Python/Scripts Python/Conda - Anaconda - miniconda.md",
"DB/Shortcuts/Shortcuts.md",
"DB/Shortcuts",
"01-Documentation/Python/Scripts Python/XML to SCL Siemens/AWL - STL Types.md",
"04-SIDEL/09 - SAE452 - Diet as Regular - San Giovanni in Bosco/DAR Description - DIET AS REGULAR - SAE452 San Giorgio in Bosco.md",
"01-Documentation/Scripts Excel - VBA/Excel - VBA - AdjustOffset.md",
"01-Documentation/Dispositivos - Manuales/ADAM/ADAM 4021 - 485 to 4..20ma - Commissioning & Firmware update.md",
"01-Documentation/Windows/Notes for Windows - Chris Titus Tool - Online - Offline.md",
"01-Documentation/Dispositivos - Manuales/Mouse/Problem with drag&drop or Left Click.md",
"01-Documentation/Vetromeccanica/GEO - Master UP/GEO - Master UP.md",
"03-VM/44 - 98050 - Fiera/Motor_Framework_Insight.md",
"01-Documentation/Python/Scripts Python/XML to SCL Siemens/AWL - STL Types - Parámetros Típicos.md",
"01-Documentation/Python/Scripts Python/XML to SCL Siemens/LAD Descriptions from XDA files from Tia Portal.md",
"01-Documentation/Python/Scripts Python/XML to SCL Siemens/Conversión LAD a SCL Siemens.md",
"01-Documentation/Scripts Excel - VBA/Excel - VBA - Cell Reference Increment Functions.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/Pasted image 20250611204519.png",
"03-VM/44 - 98050 - Fiera/adjuntos/Pasted image 20250611204506.png",
"04-SIDEL/09 - SAE452 - Diet as Regular - San Giovanni in Bosco/FB2121 - Read AI 4.20ma",
"04-SIDEL/09 - SAE452 - Diet as Regular - San Giovanni in Bosco/Documentation/adjuntos/Pasted image 20250610121735.png",
"01-Documentation/Dispositivos - Manuales/4-20ma Analog setup wiring/adjuntos/Pasted image 20250610121656.png",
"01-Documentation/Dispositivos - Manuales/4-20ma Analog setup wiring/adjuntos/Pasted image 20250610121639.png",
"01-Documentation/Dispositivos - Manuales/4-20ma Analog setup wiring/adjuntos/Pasted image 20250610121625.png",
"01-Documentation/Dispositivos - Manuales/4-20ma Analog setup wiring/adjuntos/Pasted image 20250610121530.png",
"01-Documentation/Dispositivos - Manuales/4-20ma Analog setup wiring/adjuntos",
"01-Documentation/Dispositivos - Manuales/4-20ma Analog setup wiring",
"04-SIDEL/14 - E5.007172 - Modifica O&U - SAE340",
"01-Documentation/Dispositivos - Manuales/Mouse",
"03-VM/44 - 98050 - Fiera/IO",
"01-Documentation/Python/Scripts Python/Calc",
"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/adjuntos/Pasted image 20250529221344.png",
"04-SIDEL/09 - SAE452 - Diet as Regular - San Giovanni in Bosco/FB2120 - MasseliTCP/adjuntos/Pasted image 20250529221334.png",
"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",
"01-Documentation/Dispositivos - Manuales/Waveshare RS232-485 Ethernet - Wifi/adjuntos/Pasted image 20250523122653.png",
"01-Documentation/Dispositivos - Manuales/Waveshare RS232-485 Ethernet - Wifi/adjuntos/Pasted image 20250523122629.png",
"01-Documentation/Dispositivos - Manuales/Waveshare RS232-485 Ethernet - Wifi/adjuntos/Pasted image 20250523122530.png",
"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/COM - Virtual COM com0com/adjuntos",
"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",

View File

@ -0,0 +1,56 @@
[Difference between 2-wire, 3-wire, and 4-wire signal transmitter connections](https://www.electricalclassroom.com/signal-transmitter-connections-4-wire/)
420mA sensor transmitters are very common in industries to measure physical parameters such as pressure, temperature, flow, etc. Based on how they are connected to the process control and automation systems, they are classified into 2-wire, 3-wire, and 4-wire signal transmitters. This article will help you understand the underlying concepts and the difference between 2-wire, 3-wire, and 4-wire signal transmitter connections.
![[Pasted image 20250610121530.png]]
## Difference between 2-wire, 3-wire, and 4-wire signal transmitter connections
In order to understand the difference in connections, one should first know the components used in a signal transfer loop and their roles.
The below are basic elements of a current loop:
- **Power supply**: Typically a 24VDC power source is used to power the loop.
- **Receiver**: The receiver receives the transmitted signal. In most cases, it is the [analog input](https://www.electricalclassroom.com/digital-i-o-and-analog-i-o/) channel of a PLC.
- **Transmitter**: The transmitter transmits data from a sensor to the receiver.
- **Wires:** To interconnect the power supply, receiver, and transmitter.
### 2-Wire signal transmitter connection diagram
The connection diagram for a 2-wire current loop is shown below:
![[Pasted image 20250610121625.png]]
- A 2-wire 4-20mA signal transmission loop does not require an external power source.
- The analog input module should be of source type.
- A 2-wire transmitter connection uses only two wires for both power supply and signal transmission.
- It is the simplest and most cost-effective configuration.
- Typically, it relies on a constant current source to power the transmitter and transmit the signal. The current varies to represent the measured parameter.
- Because the same wires are used for power and signal, there can be a voltage drop along the wires, affecting the accuracy of the measurement.
- Suitable for applications where simplicity and cost are primary concerns, and where signal accuracy is not critical.
[Understand the concepts of a 4-20mA current Loop](https://www.electricalclassroom.com/4-20ma-current-loop-concept/)
### 3-Wire signal transmitter connection diagram
The connection diagram for a 3-wire current loop is shown below:
![[Pasted image 20250610121639.png]]
- A 3-wire transmitter uses three wires: two for power supply and one for signal transmission.
- It provides better signal accuracy than a 2-wire transmitter because a dedicated wire is used for the signal.
- The three-wire configuration helps mitigate the voltage drop issues encountered in 2-wire setups.
- Commonly used in applications that require higher accuracy and where cost is less of a concern.
### 4-Wire transmitter connection diagram
The connection diagram for a 4-wire current loop is shown below:
![[Pasted image 20250610121656.png]]
- A 4-wire transmitter uses four wires: two for power supply and two for signal transmission.
- This configuration offers the highest signal accuracy because there is complete separation between power and signal wires.
- It eliminates the voltage drop issue entirely, making it ideal for precise measurements.
- Often used in laboratory settings, scientific research, and industrial applications where accuracy is critical.
In summary, the choice between 2-wire, 3-wire, and 4-wire signal transmitter connections depends on the specific requirements of the application. 2-wire transmitters are the most cost-effective but may sacrifice some accuracy. 3-wire transmitters strike a balance between cost and accuracy, while 4-wire transmitters provide the highest accuracy but come at a higher cost. The selection depends on the trade-off between these factors and the precision required for the measurements in a given system.

Binary file not shown.

After

Width:  |  Height:  |  Size: 313 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 117 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 202 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 265 KiB

View File

@ -11,10 +11,18 @@ The quick steps to run SFC and DISM scans include the following:
**Step 3.** Type the command sfc / scannow and press enter.
```bash
sfc /scannow
```
![powershell interface](https://www.easeus.com/images/en/wiki-news/how-to-fix-drag-and-drop-not-working-02.JPG)
**Step 4.** Wait until the SFC scan is complete.
**Step 5.** Now, type the command DISM /Online /Cleanup-Image /RestoreHealth and press enter.
```bash
DISM /Online /Cleanup-Image /RestoreHealth
```
**Step 6.** Wait until the DISM scan is complete, then reboot your system to check if drag-and-drop is functioning properly.

View File

@ -0,0 +1,303 @@
# Reading a System Status List or Partial List with SFC 51 "RDSYSST"
Description
With system function SFC 51 "RDSYSST" (read system status), you read a system status list or a partial system status list.
You start the reading by assigning the value 1 to the input parameter REQ when SFC 51 is called. If the system status could be read immediately, the SFC returns the value 0 at the BUSY output parameter. If BUSY has the value 1, the read function is not yet completed.
| | |
| --- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| | Note<br><br>If you call SFC 51 "RDSYSST" in the diagnostic interrupt OB with the SSL-ID W#16#00B1 or W#16#00B2 or W#16#00B3 and access the module that initiated the diagnostic interrupt, the system status is read immediately.<br><br>With SFC51 "RDSYSST" only complete data records are transferred. |
System Resources
If you start several asynchronous read functions (the jobs with SSL_ID W#16#00B4 and W#16#4C91 and W#16#4092 and W#16#4292 and W#16#4692 and possibly W#16#00B1 and W#16#00B3) one after the other at brief intervals, the operating system ensures that all the read jobs are executed and that they do not interfere with each other. If the limits of the system resources are reached, this is indicated in RET_VAL. You can remedy this temporary error situation by repeating the job.
The maximum number of "simultaneously" active SFC 51 jobs depends on the CPU. You will find this information in /70/ and /101/.
| | | | | |
| -------------------------------------------------------------------------------------------------------- | ----------- | --------- | ---------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| Note<br><br>For S7-400 CPUs, a maximum of 432 bytes can be transferred to the target area by the SFC 51- | | | | |
| Parameter | Declaration | Data Type | Memory Area | Description |
| REQ | INPUT | BOOL | I, Q, M, D, L, <br>constant | REQ=1: Starts processing |
| SSL_ID | INPUT | WORD | I, Q, M, D, L, <br>constant | SSL-ID of the system status list or <br>partial list to be read. |
| INDEX | INPUT | WORD | I, Q, M, D, L, <br>constant | Type or number of an object in a <br>partial list. |
| RET_VAL | OUTPUT | INT | I, Q, M, D, L | If an error occurs while executing the <br>SFC, the RET_VAL parameter <br>contains an error code. |
| BUSY | OUTPUT | BOOL | I, Q, M, D, L | TRUE: Reading not yet completed. |
| SSL_HEADER | OUTPUT | STRUCT | D, L | See below. |
| DR | OUTPUT | ANY | I, Q, M, L, D | Destination area of the SSL list read <br>or the SSL partial list read:<br><br>If you have only read out the header information of an SSL list, <br>you must not evaluate DR but <br>only SSL_HEADER.<br><br>Otherwise, the product of <br>LENTHDR and N_DR indicates <br>how many bytes were entered in <br>DR. |
SSL_HEADER
The SSL_HEADER parameter is a structure defined as follows:
SSL_HEADER: STRUCT
 LENTHDR: WORD
 N_DR:  WORD
END_STRUCT
LENTHDR is the length of a data record of the SSL list or the SSL partial list.
- If you have only read out the header information of an SSL list, N_DR contains the number of data records belonging to it.
- Otherwise, N_DR contains the number of data records transferred to the destination area.
Error Information
| | |
|---|---|
|Error Code <br>(W#16#...)|Description|
|0000|No error.|
|0081|Result field too short. (Nevertheless as many data records as possible are supplied. The <br>SSL header indicates this number.)|
|7000|First call with REQ=0: No data transfer active; BUSY has the value 0.|
|7001|First call with REQ=1: Data transfer started; BUSY has the value 1.|
|7002|Interim call (REQ irrelevant): Data transfer already active; BUSY has the value 1.|
|8081|Result field too short (not enough space for one data record).|
|8082|SSL_ID is wrong or is unknown in the CPU or SFC.|
|8083|INDEX wrong or not permitted.|
|8085|Due to a problem in the system, information is not currently available (for example, due <br>to a lack of resources).|
|8086|The data record cannot be read due to a system error (bus, modules, operating system).|
|8087|Data record cannot be read because the module does not exist or does not acknowledge.|
|8088|Data record cannot be read because the actual module identifier is different from the <br>expected module identifier.|
|8089|Data record cannot be read because the module is not capable of diagnostics or the data record is not supported.|
|80A2|DP protocol error (layer 2 error) (temporary error)|
|80A3|DP protocol error with user interface/user (temporary error)|
|80A4|Communication problem on communication bus (error occurs between the CPU and the <br>external DP interface module)|
|80C5|Distributed I/Os not available (temporary error).|
|80C6|Data record transfer stopped due to priority class abort (restart or background)|
|80D2|Data record cannot be read because the module is not capable of diagnostics.|
|8xyy|General error information, see [Evaluating Errors with the Output Parameter RET_VAL](RET_VAL.htm)|
SSL_IDs
| | |
|---|---|
||Note<br><br>For the partial lists that can be read out with SFC 51 "RDSYSST" refer to<br><br>- /72/ for the S7-300<br> <br>- The following table for the S7-400.|
| | | |
|---|---|---|
|SSL_ID (W#16#...)|Partial List|INDEX (W#16#...)|
||Module ID||
|[0111](SZL_ID_W_16_xy_11.htm)|One identification data record||
||Identification of the module|0001|
||Identification of the system expansion card|0004|
||Identification of the basic hardware|0006|
||Identification of the basic firmware|0007|
||CPU characteristics||
|[0012](SZL_ID_W_16_xy_12.htm)|All characteristics|Irrelevant|
|[0112](SZL_ID_W_16_xy_12.htm)|Characteristics of one group||
||MC7 processing unit|0000|
||Time system|0100|
||System behavior|0200|
||MC7 language description|0300|
||Availability of SFC 87 and SFC 88|0400|
|[0F12](SZL_ID_W_16_xy_12.htm)|Only SSL partial list header information|Irrelevant|
||User memory areas||
|[0113](SZL_ID_W_16_xy_13.htm)|One data record for the memory area specified||
||Work memory|0001|
||System areas||
|[0014](SZL_ID_W_16_xy_14.htm)|Data records of all system areas|Irrelevant|
|[0F14](SZL_ID_W_16_xy_14.htm)|Only SSL partial list header information|Irrelevant|
||Block types||
|[0015](SZL_ID_W_16_xy_15.htm)|Data records of all block types|Irrelevant|
||Identification of one component||
|[001C](SZL_ID_W_16_xy_1C.htm)|Identification of all components|Irrelevant|
|[011C](SZL_ID_W_16_xy_1C.htm)|Identification of one component||
||Name of the automation system|0001|
||Name of the module|0002|
||System ID of the module|0003|
||Copyright entry|0004|
||Serial number of the module|0005|
||Module type name|0007|
||Serial number of the memory card|0008|
||Manufacturer and profile of a CPU module|0009|
||Location designation of a module|000B|
||Serial number of sync module 1|000C|
||Serial number of sync module 2|000D|
||Serial number of the system expansion card|000E|
|[021C](SZL_ID_W_16_xy_1C.htm)|Identification of all components in a CPU of an H system|Rack no.|
|[031C](SZL_ID_W_16_xy_1C.htm)|Identification of one component in all redundant CPUs of an H system|Index|
|[0F1C](SZL_ID_W_16_xy_1C.htm)|Only SSL partial list header information|Irrelevant|
||Interrupt status||
|[0222](SZL_ID_W_16_xy22_Alarmstatus.htm)|Data record for indicated interrupt|OB number|
||Assignment of process image partitions and CPUs||
|[0025](SZL_ID_W_16_xy25.htm)|Assigning all process image partitions to OBs|Irrelevant|
|[0125](SZL_ID_W_16_xy25.htm)|Assignment of a process image partition to the corresponding OB|Process image partition number.|
|[0225](SZL_ID_W_16_xy25.htm)|Assignment of an OB to the corresponding process image partitions|OB number.|
|[0F25](SZL_ID_W_16_xy25.htm)|Only info on SSL partial list headers|Irrelevant|
||Communication status data||
|[0132](SZL_ID_W_16_xy_32.htm)|Status data for one communication unit||
||Diagnostics|0005|
||Time system|0008|
|[0232](SZL_ID_W_16_xy_32.htm)|Status data for one communication unit||
||CPU protection level and operator control settings|0004|
||H CPU group information||
|[0071](SZL_ID_W_16_xy_71.htm)|Information about the current state of the H system|Irrelevant|
|[0F71](SZL_ID_W_16_xy_71.htm)|Only SSL partial list header information|Irrelevant|
||Status of the module LEDs (cannot be read out from all CPUs, see /102/).||
|[0174](SZL_ID_W_16_xy_74.htm)|Status of an LED|LED ID|
||Switched DP slaves in the H system||
|[0C75](SZL_ID_W_16_xy_75.htm)|Communication status between the H system and a switched DP slave|Diagnostics address of the DP slave interface|
||DP Master system information||
|[0090](SZL_ID_W_16_xy_90.htm)|Information DP Master systems known to the CPU|0000|
|[0190](SZL_ID_W_16_xy_90.htm)|Information about a DP Master system|DP master system ID|
|[0F90](SZL_ID_W_16_xy_90.htm)|Only SSL partial list header information|0000|
||||
||Module status information (a maximum of 27 data records is supplied)||
|[0091](SZL_ID_W_16_xy_91.htm)|Status information of all modules / submodules inserted|Irrelevant|
|[0191](SZL_ID_W_16_xy_91.htm)|Module status information of all non-deactivated modules / racks with <br>incorrect type ID|Irrelevant|
|[0291](SZL_ID_W_16_xy_91.htm)|Module status information of all faulty and non-deactivated modules|Irrelevant|
|[0391](SZL_ID_W_16_xy_91.htm)|Module status information of all unobtainable modules|Irrelevant|
|[0591](SZL_ID_W_16_xy_91.htm)|Module status information of all submodules of the host <br>module|Irrelevant|
|[0991](SZL_ID_W_16_xy_91.htm)|Module status information of a DP master system|DP master <br>system ID|
|[0C91](SZL_ID_W_16_xy_91.htm)|Module status information of a module in a central <br>configuration or connected to an integrated DP <br>communications processor or on a PROFINET interface module (integrated or external)|Logical base address|
|[4C91](SZL_ID_W_16_xy_91.htm)|Module status information of a module connected to an <br>external DP communications processor|Logical base address|
|[0D91](SZL_ID_W_16_xy_91.htm)|Module status information of all modules in the rack / DP <br>station specified (DP or PROFINET)|Rack or DP master system ID and station number or station number and the last two positions of the PNIO subsystem ID|
|[0E91](SZL_ID_W_16_xy_91.htm)|Module status information of all assigned modules|Irrelevant|
|[0F91](SZL_ID_W_16_xy_91.htm)|Only SSL partial list header information|irrelevant|
||Rack/station status information||
|[0092](SZL_ID_W_16_xy_92.htm)|Expected status of the rack in the central configuration / <br>of the stations of a DP master system|0 / DP master system <br>ID|
|[4092](SZL_ID_W_16_xy_92.htm)|Expected status of the stations of a DP master system <br>connected to an external DP interface|DP master system ID|
|[0192](SZL_ID_W_16_xy_92.htm)|Activation status of the stations in a DP master system that is connected via an integrated DP interface|DP master system ID|
|[0292](SZL_ID_W_16_xy_92.htm)|Current status of the rack in the central configuration / of the <br>stations of a DP master system|0 / DP master system <br>ID|
|[4292](SZL_ID_W_16_xy_92.htm)|Current status of the stations in a DP master system that is connected via an external DP interface module.|DP master system <br>ID|
|[0392](SZL_ID_W_16_xy_92.htm)|Status of the backup batteries in a rack/module rack of a CPU after at least one battery has failed|0|
|[0492](SZL_ID_W_16_xy_92.htm)|Status of the overall battery backup status of all racks/module racks of a CPU|0|
|[0592](SZL_ID_W_16_xy_92.htm)|Status of the 24-V power supply to all racks/module racks of a CPU|0|
|[0692](SZL_ID_W_16_xy_92.htm)|Diagnostic status of the expansion racks in a central configuration / <br>of the stations of a DP master system connected via an <br>integrated DP interface module|0 / DP master system <br>ID|
|[4692](SZL_ID_W_16_xy_92.htm)|Diagnostic status of the stations of a DP master system connected <br>via an external DP interface module|DP master system ID|
||Rack /station status information||
|[0094](SZL_ID_W_16_0x94.htm)|Expected status of the rack in the central rack / stations of an IO controller system|0 / PNIO subsystem ID|
|[0194](SZL_ID_W_16_0x94.htm)|Activation status of an IO controller system that is configured and deactivated|PNIO subsystem ID|
|[0294](SZL_ID_W_16_0x94.htm)|Actual status of the rack in the central rack / stations of an IO controller system|0 / PNIO subsystem ID|
|[0694](SZL_ID_W_16_0x94.htm)|Diagnostic status of the expansion units in the central rack / stations of an IO controller system|0 / PNIO subsystem ID|
|[0794](SZL_ID_W_16_0x94.htm)|Maintenance status of the central rack / stations of an IO controller system|0 / PNIO subsystem ID|
|[0F94](SZL_ID_W_16_0x94.htm)|Only header information|-|
||Extended DP master system / PROFINET IO system information||
|[0195](SZL_ID_W_16_xy95.htm)|Extended information about a DP master system|DP master system ID|
|[0F95](SZL_ID_W_16_xy95.htm)|Only SSL partial list header information|0000|
||Module status information PROFINET IO and PROFIBUS DP||
|[0696](SZL_ID_W_16_xy96.htm)|Module status information of all submodules of a specified module (only with PROFINET IO on an integrated interface module)|Address with I/O ID|
|[0C96](SZL_ID_W_16_xy96.htm)|Module status information of a module / a submodule centrally or on an integrated PROFIBUS DP interface module or an a PROFINET interface module (integrated or external)|Start address with I/O ID|
||Tool changer information (PROFINET IO)||
|[009C](SZL_ID_W_16_xy9C.htm)|Information on all tool changers and their tools in a PROFINET IO system|PROFINET IO system ID|
|[019C](SZL_ID_W_16_xy9C.htm)|Information on all tool changers in a PROFINET IO system|PROFINET IO system ID|
|[029C](SZL_ID_W_16_xy9C.htm)|Information on one tool changer and its tools|Logical address of the tool changer|
|[039C](SZL_ID_W_16_xy9C.htm)|Information on a tool and its IO devices|Logical address of one of the IO devices of the tool|
|[0F9C](SZL_ID_W_16_xy9C.htm)|Only SSL partial list header information|irrelevant|
||Diagnostic buffer (a maximum of 21 data records is supplied)||
|[00A0](SZL_ID_W_16_xy_A0.htm)|All entries that can be supplied in the currently active <br>operating mode|Irrelevant|
|[01A0](SZL_ID_W_16_xy_A0.htm)|The most recent entries, the number is specified in the <br>index|Quantity|
|[0FA0](SZL_ID_W_16_xy_A0.htm)|Only SSL partial list header information|Irrelevant|
||Diagnostic data on modules||
|[00B1](SZL_ID_W_16_00B1.htm)|The first four diagnostic bytes of one module (data record 0)|Logical base address|
|[00B2](SZL_ID_W_16_00B2.htm)|All diagnostic data of one module (< 220 bytes, data record 1) (no DP module)|Rack, slot|
|[00B3](SZL_ID_W_16_00B3.htm)|All diagnostic data of one module (< 220 bytes, data record 1)|Logical base address|
|[00B4](SZL_ID_W_16_00B4.htm)|Diagnostic data of a DP slave|Configured diagnostic <br>address|
***
# Evaluating Errors with Output Parameter RET_VAL
Types of Error Information
A system function (SFC) executed in your user program indicates whether or not the CPU was able to execute the function of the SFC successfully.
You can obtain information about any errors that occurred in two ways:
- In the BR bit of the status word
- In the output parameter RET_VAL (return value)
| | |
|---|---|
||Note<br><br>Before evaluating the output parameters specific to an SFC, you should always follow the steps below:<br><br>- First, evaluate the BR bit of the status word.<br> <br>- Then check the output parameter RET_VAL.<br> <br><br>If the BR bit indicates that an error has occurred or if RET_VAL contains a general error code, you must not evaluate the SFC output parameter!|
Error Information in the Return Value
A system function (SFC) indicates that an error occurred during its execution by entering the value "0" in the binary result bit (BR) of the status word. Some system functions provide an additional error code at an output known as the return value (RET_VAL) output. If a general error is entered in the output parameter RET_VAL (see below for explanation), this is only indicated by the value "0" in the BR bit of the status word.
The return value is of the data type integer (INT). The relationship of the return value to the value "0" indicates whether or not an error occurred during execution of the function.
| | | | |
|---|---|---|---|
|CPU Execution of the SFC|BR|Return Value|Sign of the Integer|
|With error(s)|0|less than "0"|negative <br>(sign bit is "1")|
|Without error|1|greater than or <br>equal to "0"|positive <br>(sign bit is "0")|
Reactions to Error Information
There are two different types of error code in RET_VAL as follows:
- A general error code, that all system functions can output and
- A specific error code, that the system function can output and which relates to its specific function.
You can write your program so that it reacts to the errors that occur during execution of a system function. This way you prevent further errors occurring as a result of the first error.
General and Specific Error Information
The return value (RET_VAL) of a system function provides one of the two following types of error codes:
- A general error code, that relates to errors that can occur in any system function.
- A specific error code, that relates only to the particular system function.
Although the data type of the output parameter RET_VAL is integer (INT), the error codes for system functions are grouped according to hexadecimal values. If you want to examine a return value and compare the value with the error codes listed in this manual, then display the error code in hexadecimal format.
The figure below shows the structure of a system function error code in hexadecimal format.
![image/S7RS0157_b.gif](image\S7RS0157_b.gif)
General Error Information
The general error code indicates errors that can occur in any system function. A general error code consists of the following two numbers:
- A parameter number from 1 to 111, where 1 indicates the first parameter, 2 indicates the second parameter of the SFC, etc.
- An event number from 0 to 127. The event number indicates that a synchronous error occurred.
The following table lists the codes for general errors and an explanation of each error.
![image/S7RS0158_b.gif](image\S7RS0158_b.gif)
| | |
|---|---|
||Note<br><br>If a general error code was entered in RET_VAL, the following situations are possible:<br><br>- The action associated with the SFC may have been started or already completed.<br> <br>- A specific SFC error may have occurred when the action was performed. As a result of a general error that occurred later, the specific error could, however, no longer be indicated.|
Specific Error Information
Some system functions (SFCs) have a return value that provides a specific error code. This error code indicates that an error pertaining to a particular system function occurred during the execution of the function (see figure). A specific error code consists of the following two numbers:
- An error class from 0 to 7.
- An error number from 0 to 15.
![image/S7RS0159_b.gif](image\S7RS0159_b.gif)
General Error Codes
The following table explains the general error codes of a return value. The error code is shown in hexadecimal format. The letter x in each code number is simply a place holder and represents the number of the system function parameter that caused the error.
| | |
|---|---|
|Error Code (W#16#...)|Explanation|
|8x7F|Internal error<br><br>This error code indicates an internal error at parameter x.|
|8x01|Illegal syntax ID at an ANYparameter|
|8x22<br><br>8x23|Range length error when reading a parameter. <br>Range length error when writing a parameter. <br>This error code indicates that the parameter x is located either entirely or partly outside the range of an address or that the length of a bit range is not a multiple of 8 with an ANY parameter.|
|8x24<br><br>8x25|Range error when reading a parameter.<br><br>Range error when writing a parameter.<br><br>This error code indicates that the parameter x is located in a range that is illegal for the system function. Refer to the descriptions of the individual functions for information about the illegal ranges.|
|8x24 <br>8x25|Range error when reading a parameter. <br>Range error when writing a parameter. <br>This error code indicates that the parameter x is located in a range that is illegal for the system function. Refer to the descriptions of the individual functions for information about the illegal ranges.|
|8x26|The parameter contains a timer number that is too high. <br>This error code indicates that the timer specified in parameter x does not exist.|
|8x27|The parameter contains a counter number that is too high (counter number error). <br>This error code indicates that the counter specified in parameter x does not exist.|
|8x28 <br>8x29|Alignment error when reading a parameter. <br>Alignment error when writing a parameter. <br>This error code indicates that the reference to parameter x is a bit address that is not equal to 0.|
|8x30 <br>8x31|The parameter is located in a read-only global DB. <br>The parameter is located in a read-only instance DB. <br>This error code indicates that parameter x is located in a read-only data block. If the data block was opened by the system function itself, the system function always returns the value W#16#8x30.|
|8x32 <br>8x34 <br>8x35|The parameter contains a DB number that is too high (DB number error). <br>The parameter contains an FC number that is too high (FC number error). <br>The parameter contains an FB number that is too high (FB number error). <br>This error code indicates that parameter x contains a block number higher than the highest permitted number.|
|8x3A <br>8x3C <br>8x3E|The parameter contains the number of a DB that is not loaded. <br>The parameter contains the number of an FC that is not loaded. <br>The parameter contains the number of an FB that is not loaded.|
|8x42 <br> <br>8x43|An access error occurred while the system was attempting to read a parameter from the peripheral input area. <br>An access error occurred while the system was attempting to write a parameter to the peripheral output area.|
|8x44<br><br>8x45|Error in the nth (n > 1) read access after an error occurred.<br><br>Error in the nth (n > 1) write access after an error occurred.<br><br>This error code indicates that access to the required parameter is denied.|

View File

@ -0,0 +1,39 @@
***
[Application](https://support.industry.siemens.com/cs/document/79168964/import-external-source-files-into-tia-portal-and-generate-blocks-from-them?dti=0&lc=en-IT)
How do you import blocks in a TIA Portal project that were created in other projects or with earlier versions of STEP 7?
**Instructions**
Data blocks and blocks that were created in the programming languages STL and SCL can also be imported and exported as sources.
In this video we will show you how to import a source created from STEP 7 V5.7 into TIA Portal and create a block from it.
**Example 1: Import an external source into TIA Portal and generate a block from it.**
1. In the project tree, open the "Program blocks" folder and the =="External source files"== folder.
2. Click on the "Add new external file" function.
3. Navigate to folder where you have stored your source and select that source.
4. Click on "Open" to import the selected source into TIA Portal. The source is then saved in the "External source files" folder.
5. You then right-click the external source and from the context menu you select "Generate blocks from source".
6. You receive a message informing you that any existing blocks will be overwritten. Confirm with "OK". Now the block is compiled and stored in the "Program Blocks" folder.
The imported block is now available for further program processing.
**Example 2: Generate a source from a block and export it from TIA Portal.**
1. In the "Program Blocks" folder, right-click on the block and select "Generate source from blocks" from the context menu.
2. There are two menu commands available here:
- "Selected blocks only": With this command the marked blocks are generated into a source.
- "Including all dependent blocks": With this command all the dependent blocks are also generated into a source.
3. Select the folder to save your generated source and click "Save".
The generated source is now available for further projects with different TIA Portal versions.
**Further Information**
you will find in the TIA Portal manual, under [Basics of using external source files](https://support.industry.siemens.com/cs/ww/en/view/109773506/122059506315 "Entry id: 109773506").
**FAQ changes since last release**
The FAQ has been revised and the video has been added.

View File

@ -34,3 +34,102 @@
| 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 |
### IO PLC
***
| Tag | IO | Description Italian |
| --------- | -------- | ----------------------------------------------------- |
| 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 |
| SH50560 | %A0.6 | RICHIESTA ACCESSO |
| SH50570 | %A0.7 | SEGN. RESET LUMINOSA ALLARMI |
| SH50570 | %A0.7 | RESET ALLARMI |
| 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 |
| QF10410 | %E0.0 | LINEA ALIMENTAZIONE MOVIGEAR |
| SERIETDIV | %E0.1 | 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 |
| SERIETTAV | %E0.7 | TAVOLO ALIMENTAZIONE INVERTER |
| 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 |
| SB14110FK | %E2.1 | PB1 PULSANTE EM. PUI SANTIERA |
| SPARE2 | %E2.2 | PULSANTE SCORTA EM. |
| SPARE1 | %E2.3 | PULSANTE SCORTA EM. |
| SPARE3 | %E2.4 | PULSANTE SCORTA EM. |
| K15010 | %E3.0 | EMERGENZA CARTER DIVISORE RELE E |
| S20010 | %E3.1 | PORTA1DIVISORE MICRO ABILITAZIONE |
| S20010 | %E3.1 | DIVISORE MICRO 0PORTA1 |
| S20110 | %E3.2 | MICRO ABILITAZIONE PORTA 2 DIVISORE |
| S20110 | %E3.2 | MICRO PORTA 2 DIVISORE |
| S20210 | %E3.3 | MICRO ABILITAZIONE PORTA 3 DIVSORE |
| S20210 | %E3.3 | MICRO PORTA 3 DIVISORE |
| S20310 | %E3.4 | MICRO ABILITAZIONE PORTA 4 DIVISORE |
| S20310 | %E3.4 | DIVISORE MICRO PORTA 4 |
| S20410 | %E3.5 | MICRO ABILITAZIONE PORTA 5 DIVSORE |
| S20410 | %E3.5 | DIVISORE MICRO PORTA 5 |
| S20510 | %E3.6 | MICRO ABILITAZIONE PORTA 6 DIMSORE |
| S20510 | %E3.6 | MICRO PORTA 6 DIVISORE |
| S20610 | %E3.7 | MICRO ABILITAZIONE PORTA 7 DIVSORE |
| S20610 | %E3.7 | DIVISORE MICRO 0PORTA7 |
| S20710 | %E4.0 | MICRO ABILITAZIONE PORTA 8 DIVISORE |
| S20710 | %E4.0 | PORTA 8 MICRO DIVSORE |
| 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 |
| S21010 | %E4.6 | TAVOLO SMISTATORE MICRO USCITA PORTA 1 |
| S21110 | %E4.7 | TAVOLO SMISTATORE MICRO PORTA 2 USCITA |
| SB50510 | %E5.0 | MARCIA |
| SB50520 | %E5.1 | ARRESTO |
| SA50530 | %E5.2 | MANUALE/AUTOMATICO |
| SA50540FF | %E5.3 | AVANTI MANUAL COMANDI |
| SA50540BW | %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 |
| S31040 | %E1413.0 | Sensore Di Asse Longitudinale |
| S31050 | %E1413.1 | Sensore de Asse Transversale |
| S31051 | %E1413.2 | Sensore de Reg Spaziatore Uscita Divisore |
| B31060 | %E1413.3 | Sicurezza uscita spaziatore |
| B31440 | %E1577.0 | Minimo Polmone Ingresso Tavolo |
| B31540 | %E1597.0 | CONTEGGIO INGRESSO TAVOLO |
| B31550 | %E1597.1 | SICUREZA TRASLAZIONE SMISTATORE INGRESSO |
| S31550 | %E1597.2 | SENSORE DI HOMING SPAZIATORE ING. TAVOLO |
| S31560 | %E1597.3 | SENSORE DI HOMING TRASL SMISTATORE INGRESO |
| B34440 | %E2217.0 | SICUREZZA TRALAZIONE SMISTATORE USCITA |
| B34450 | %E2217.1 | CONTEGGIO USCITA TAVOLO |
| B34451 | %E2217.2 | INTASAMENTO USCITA TAVOLO |
| S34460 | %E2217.3 | SENSORE DI HOMING TRASL SMISTATORE USCITA |
| S34461 | %E2217.4 | SENSORE DE HOMING SPAZIATORE USCITA TAVOLO |

View File

@ -0,0 +1,778 @@
## 1. System Architecture
### 1.1 Call Structure
```
OB1
├── FC_Ttop_Run
│ ├── FC_Table_Motor_M316() → "DB Motor M316"(FB_Motors_Manage)
│ ├── FC_Table_Motor_M317() → "DB Motor M317"(FB_Motors_Manage)
│ ├── FC_Table_Motor_M318() → "DB Motor M318"(FB_Motors_Manage)
│ ├── FC_Table_Motor_M319() → "DB Motor M319"(FB_Motors_Manage)
│ ├── FC_Table_Motor_M328() → "DB Motor M328"(FB_Motors_Manage) // Channel 1
│ ├── FC_Table_Motor_M329() → "DB Motor M329"(FB_Motors_Manage) // Channel 2
│ ├── FC_Table_Motor_M330() → "DB Motor M330"(FB_Motors_Manage) // Channel 3
│ ├── FC_Table_Motor_M331() → "DB Motor M331"(FB_Motors_Manage) // Channel 4
│ ├── FC_Table_Motor_M332() → "DB Motor M332"(FB_Motors_Manage) // Channel 5 (center)
│ ├── FC_Table_Motor_M333() → "DB Motor M333"(FB_Motors_Manage) // Channel 6
│ ├── FC_Table_Motor_M334() → "DB Motor M334"(FB_Motors_Manage) // Channel 7
│ ├── FC_Table_Motor_M335() → "DB Motor M335"(FB_Motors_Manage) // Channel 8
│ ├── FC_Table_Motor_M336() → "DB Motor M336"(FB_Motors_Manage) // Channel 9
│ ├── FC_Table_Motor_M340() → "DB Motor M340"(FB_Motors_Manage)
│ ├── FC_Table_Motor_M341() → "DB Motor M341"(FB_Motors_Manage)
│ ├── FC_Table_Motor_M342() → "DB Motor M342"(FB_Motors_Manage)
│ └── FC_Table_Motor_M343() → "DB Motor M343"(FB_Motors_Manage)
└── FC_Table_Devices
└── "DB Table"(FB_Table)
```
### 1.2 Component Mapping
- **M316, M317**: Input feeders (left, right)
- **M318**: Format change input feeders
- **M319**: Input selector
- **M328-M336**: Channels 1-9 (1=leftmost, 5=center/bypass, 9=rightmost)
- **M340**: Output selector
- **M341, M342**: Output feeders (left, right)
- **M343**: Format change output feeders
## 2. Data Structures
### 2.1 Format Data Structure
```pascal
TYPE T_Format_Data:
STRUCT
Format_Number : Int; // Format number (1 or 2)
Accumulation_Side : Int; // 1=Left (channels 1-4), 2=Right (channels 6-9)
Bottle_Dimension_mm : Real; // Bottle dimension in mm
Max_Speed_mm_min : Real; // Maximum speed in mm/min
Target_Channels : Array[1..4] of Int; // Channels to use for this format
END_STRUCT;
```
### 2.2 External Exchange Database
```pascal
DB_ATable_Exchange:
STRUCT
// === INPUT SIGNALS (from external systems) ===
IN : STRUCT
// From Ring/Divider
Ring_Input_Product_Available : Bool; // Product available at input
Ring_Output_Request : Bool; // Ring requests product output
Ring_Empty_And_Auto : Bool; // Ring empty and divider in auto
Ring_Bypass_Speed_Request : Real; // Requested bypass speed
// Commands
Load_Request : Bool; // Request to start loading
Format_Change_Command : Bool; // Format change command from HMI
Unload_Enable : Bool; // Enable automatic unload after format change
// System status
System_Auto_Mode : Bool; // System in automatic mode
Emergency_Stop : Bool; // Emergency stop signal
END_STRUCT;
// === OUTPUT SIGNALS (to external systems) ===
OUT : STRUCT
// To Ring/Divider
Input_Request_Product : Bool; // Table ready and requesting input
Format_Change_Allowed : Bool; // Loading complete and ring empty
Output_Speed_Reference : Real; // Speed reference for output motor
Table_In_Bypass : Bool; // Table in bypass mode
// Status
Table_State : Int; // Current table state
Current_Format : Int; // Currently stored format
Table_Ready : Bool; // Table ready for operation
Loading_Complete : Bool; // Loading sequence complete
Unloading_Complete : Bool; // Unloading sequence complete
END_STRUCT;
END_STRUCT;
```
### 2.3 Table States
```pascal
CONST
TABLE_STATE_STOPPED : Int := 0;
TABLE_STATE_LOADING : Int := 1;
TABLE_STATE_BYPASS : Int := 2;
TABLE_STATE_UNLOADING : Int := 3;
TABLE_STATE_ERROR : Int := 4;
END_CONST;
```
## 3. Main Function Block - FB_Table
### 3.1 Interface
```pascal
FB_Table:
VAR_INPUT
Enable : Bool; // Table enable
Target_Format : Int; // Target format (1 or 2)
Manual_Mode : Bool; // Manual operation mode
END_VAR
VAR_IN_OUT
// Motor structure references (pointers)
Motor_M316 : UDT_Motor_Manage; // Input feeder left
Motor_M317 : UDT_Motor_Manage; // Input feeder right
Motor_M318 : UDT_Motor_Manage; // Format change input
Motor_M319 : UDT_Motor_Manage; // Input selector
Motor_M328 : UDT_Motor_Manage; // Channel 1
Motor_M329 : UDT_Motor_Manage; // Channel 2
Motor_M330 : UDT_Motor_Manage; // Channel 3
Motor_M331 : UDT_Motor_Manage; // Channel 4
Motor_M332 : UDT_Motor_Manage; // Channel 5 (center)
Motor_M333 : UDT_Motor_Manage; // Channel 6
Motor_M334 : UDT_Motor_Manage; // Channel 7
Motor_M335 : UDT_Motor_Manage; // Channel 8
Motor_M336 : UDT_Motor_Manage; // Channel 9
Motor_M340 : UDT_Motor_Manage; // Output selector
Motor_M341 : UDT_Motor_Manage; // Output feeder left
Motor_M342 : UDT_Motor_Manage; // Output feeder right
Motor_M343 : UDT_Motor_Manage; // Format change output
Exchange : DB_ATable_Exchange; // External communication
END_VAR
VAR_OUTPUT
Table_State : Int; // Current state
Error_Code : Word; // Error code
Diagnostics : T_Table_Diagnostics; // Diagnostic information
END_VAR
VAR_STAT
// === COMMAND STRUCTURE (Read by FC motors) ===
Status : STRUCT
// Input feeders
Input_Feeders_Enable : Bool;
Input_Feeders_Speed_mm_min : Real;
Input_Feeders_Stop_After_Bottle : Bool;
// Output feeders
Output_Feeders_Enable : Bool;
Output_Feeders_Speed_mm_min : Real;
Output_Feeders_Stop_After_Bottle : Bool;
// Input selector
Input_Selector_Enable : Bool;
Input_Selector_Target_Channel : Int;
Input_Selector_Positioning_Mode : Bool;
// Output selector
Output_Selector_Enable : Bool;
Output_Selector_Target_Channel : Int;
Output_Selector_Positioning_Mode : Bool;
// Channels
Channel_Enable : Array[1..9] of Bool;
Channel_Speed_mm_min : Array[1..9] of Real;
// Format change motors
Format_Change_Input_Enable : Bool;
Format_Change_Input_Target_mm : Real;
Format_Change_Output_Enable : Bool;
Format_Change_Output_Target_mm : Real;
END_STRUCT;
// === INTERNAL LOGIC VARIABLES ===
Current_State : Int;
Previous_State : Int;
Loading_Step : Int;
Unloading_Step : Int;
Current_Loading_Channel : Int;
Current_Unloading_Channel : Int;
// Format configuration
Format_Data : Array[1..2] of T_Format_Data;
Current_Format_Stored : Int;
// Timers
State_Timer : TON;
Operation_Timeout : TON;
// Area management instances
Area_Input_Selector : FB_Area_Management;
Area_Channel : Array[1..9] of FB_Area_Management;
Area_Output_Selector : FB_Area_Management;
// Virtual encoders for position tracking
Encoder_M332 : FB_Virtual_Encoder; // Center channel for bypass tracking
Encoder_Input_Selector : FB_Virtual_Encoder;
Encoder_Output_Selector : FB_Virtual_Encoder;
END_VAR
```
### 3.2 Main Logic (Pseudocode)
```pascal
// === STATE MACHINE MANAGEMENT ===
CASE Current_State OF
TABLE_STATE_STOPPED:
IF Enable AND Exchange.IN.System_Auto_Mode THEN
IF Exchange.IN.Load_Request THEN
Current_State := TABLE_STATE_LOADING;
Loading_Step := 1;
ELSIF Exchange.IN.Ring_Output_Request AND (Current_Format_Stored > 0) THEN
Current_State := TABLE_STATE_UNLOADING;
Unloading_Step := 1;
END_IF;
END_IF;
TABLE_STATE_LOADING:
Execute_Loading_Sequence();
IF Loading_Complete THEN
Current_State := TABLE_STATE_BYPASS;
Exchange.OUT.Loading_Complete := TRUE;
END_IF;
TABLE_STATE_BYPASS:
Execute_Bypass_Mode();
IF Exchange.IN.Format_Change_Command AND Exchange.IN.Ring_Empty_And_Auto THEN
Current_State := TABLE_STATE_UNLOADING;
Unloading_Step := 1;
END_IF;
TABLE_STATE_UNLOADING:
Execute_Unloading_Sequence();
IF Unloading_Complete THEN
Current_State := TABLE_STATE_BYPASS;
Exchange.OUT.Unloading_Complete := TRUE;
Current_Format_Stored := 0;
END_IF;
TABLE_STATE_ERROR:
Execute_Error_Recovery();
END_CASE;
// === UPDATE EXTERNAL SIGNALS ===
Exchange.OUT.Table_State := Current_State;
Exchange.OUT.Current_Format := Current_Format_Stored;
Exchange.OUT.Table_Ready := (Current_State <> TABLE_STATE_ERROR);
Exchange.OUT.Format_Change_Allowed := (Current_State = TABLE_STATE_BYPASS) AND
(Current_Format_Stored > 0) AND
Exchange.IN.Ring_Empty_And_Auto;
// === AREA MANAGEMENT UPDATES ===
FOR i := 1 TO 9 DO
Area_Channel[i](
Motor := Get_Channel_Motor_Reference(i),
Enable := Status.Channel_Enable[i],
Area_Length_mm := Get_Channel_Length(i),
Bottle_Length_mm := Format_Data[Target_Format].Bottle_Dimension_mm
);
END_FOR;
```
## 4. Loading Sequence Logic
### 4.1 Loading Sequence Steps
```pascal
PROCEDURE Execute_Loading_Sequence:
VAR
Target_Channels : Array[1..4] of Int;
Current_Channel : Int;
Channel_Index : Int;
BEGIN
// Get target channels for current format
Target_Channels := Get_Target_Channels_For_Format(Target_Format);
CASE Loading_Step OF
1: // Initialize loading
Current_Loading_Channel := Get_Outermost_Channel(Target_Format);
Channel_Index := 1;
Position_Input_Selector(Target_Channels[Channel_Index]);
Loading_Step := 2;
2: // Wait for selector positioning
IF Input_Selector_In_Position THEN
Enable_Channel_Motors_For_Loading(Current_Loading_Channel);
Enable_Input_Feeders();
Loading_Step := 3;
END_IF;
3: // Load current channel
IF Channel_Loading_Complete(Current_Loading_Channel) THEN
Disable_Input_Feeders();
Channel_Index := Channel_Index + 1;
IF Channel_Index <= 4 THEN
Current_Loading_Channel := Target_Channels[Channel_Index];
Position_Input_Selector(Current_Loading_Channel);
Loading_Step := 2;
ELSE
Loading_Step := 4; // All channels loaded
END_IF;
END_IF;
4: // Loading complete
Disable_All_Channel_Motors();
Position_Selectors_To_Bypass();
Current_Format_Stored := Target_Format;
Loading_Complete := TRUE;
END_CASE;
END_PROCEDURE;
FUNCTION Get_Target_Channels_For_Format(Format : Int) : Array[1..4] of Int:
BEGIN
IF Format_Data[Format].Accumulation_Side = 1 THEN // Left side
RETURN [1, 2, 3, 4]; // Load from outside to inside
ELSE // Right side
RETURN [9, 8, 7, 6]; // Load from outside to inside
END_IF;
END_FUNCTION;
FUNCTION Get_Outermost_Channel(Format : Int) : Int:
BEGIN
IF Format_Data[Format].Accumulation_Side = 1 THEN
RETURN 1; // Leftmost channel
ELSE
RETURN 9; // Rightmost channel
END_IF;
END_FUNCTION;
PROCEDURE Enable_Channel_Motors_For_Loading(Target_Channel : Int):
BEGIN
// Enable all channels from center to target channel
FOR i := 5 TO Target_Channel DO // or FROM Target_Channel TO 5
Status.Channel_Enable[i] := TRUE;
Status.Channel_Speed_mm_min[i] := Format_Data[Target_Format].Max_Speed_mm_min;
END_FOR;
END_PROCEDURE;
```
## 5. Unloading Sequence Logic
### 5.1 Unloading Sequence Steps
```pascal
PROCEDURE Execute_Unloading_Sequence:
VAR
Stored_Channels : Array[1..4] of Int;
Current_Channel : Int;
Channel_Index : Int;
BEGIN
// Get channels where current format is stored
Stored_Channels := Get_Target_Channels_For_Format(Current_Format_Stored);
CASE Unloading_Step OF
1: // Initialize unloading - start from innermost channel
Channel_Index := 4; // Start from innermost
Current_Unloading_Channel := Stored_Channels[Channel_Index];
Position_Output_Selector(Current_Unloading_Channel);
Unloading_Step := 2;
2: // Wait for selector positioning
IF Output_Selector_In_Position THEN
Enable_Channel_Motors_For_Unloading(Current_Unloading_Channel);
Enable_Output_Feeders();
Unloading_Step := 3;
END_IF;
3: // Unload current channel
IF Channel_Unloading_Complete(Current_Unloading_Channel) THEN
Disable_Output_Feeders();
Channel_Index := Channel_Index - 1;
IF Channel_Index >= 1 THEN
Current_Unloading_Channel := Stored_Channels[Channel_Index];
Position_Output_Selector(Current_Unloading_Channel);
Unloading_Step := 2;
ELSE
Unloading_Step := 4; // All channels unloaded
END_IF;
END_IF;
4: // Unloading complete
Disable_All_Channel_Motors();
Position_Selectors_To_Bypass();
Unloading_Complete := TRUE;
END_CASE;
END_PROCEDURE;
PROCEDURE Enable_Channel_Motors_For_Unloading(Target_Channel : Int):
BEGIN
// Enable all channels from target channel to center
FOR i := Target_Channel TO 5 DO // or FROM 5 TO Target_Channel
Status.Channel_Enable[i] := TRUE;
Status.Channel_Speed_mm_min[i] := Format_Data[Current_Format_Stored].Max_Speed_mm_min;
END_FOR;
END_PROCEDURE;
```
## 6. Bypass Mode Logic
### 6.1 Bypass Operation
```pascal
PROCEDURE Execute_Bypass_Mode:
BEGIN
// Enable only center channel for bypass
Status.Channel_Enable[5] := TRUE;
Status.Channel_Speed_mm_min[5] := Exchange.IN.Ring_Bypass_Speed_Request;
// Disable all other channels
FOR i := 1 TO 9 DO
IF i <> 5 THEN
Status.Channel_Enable[i] := FALSE;
END_IF;
END_FOR;
// Position selectors to bypass (channel 5)
Status.Input_Selector_Target_Channel := 5;
Status.Output_Selector_Target_Channel := 5;
Status.Input_Selector_Enable := TRUE;
Status.Output_Selector_Enable := TRUE;
// Update external signals
Exchange.OUT.Table_In_Bypass := TRUE;
Exchange.OUT.Output_Speed_Reference := Exchange.IN.Ring_Bypass_Speed_Request;
Exchange.OUT.Input_Request_Product := Exchange.IN.Ring_Input_Product_Available;
END_PROCEDURE;
```
## 7. Auxiliary Function Blocks
### 7.1 FB_Virtual_Encoder
```pascal
FB_Virtual_Encoder:
VAR_IN_OUT
Motor : UDT_Motor_Manage; // Motor structure reference
END_VAR
VAR_INPUT
Enable : Bool; // Enable calculation
Ratio_Hz_to_mm_min : Real; // Conversion factor Hz to mm/min
Reset_Position : Bool; // Reset total position
END_VAR
VAR_OUTPUT
Displacement_mm : Real; // Displacement since last call
Current_Speed_mm_min : Real; // Current speed in mm/min
Total_Distance_mm : Real; // Total accumulated distance
Motor_Running : Bool; // Motor running status
END_VAR
VAR_STAT
Last_Frequency_Hz : Real;
Last_Scan_Time : Time;
Position_Accumulated : Real;
END_VAR
// Pseudocode:
BEGIN
IF Enable THEN
Current_Frequency := Read_Motor_Frequency(Motor);
Current_Time := Get_System_Time();
IF First_Scan THEN
Last_Frequency_Hz := Current_Frequency;
Last_Scan_Time := Current_Time;
ELSE
Time_Delta := Current_Time - Last_Scan_Time;
Avg_Frequency := (Current_Frequency + Last_Frequency_Hz) / 2;
Speed_mm_min := Avg_Frequency * Ratio_Hz_to_mm_min;
Displacement_mm := Speed_mm_min * Time_Delta_In_Minutes;
IF NOT Reset_Position THEN
Total_Distance_mm := Total_Distance_mm + Displacement_mm;
ELSE
Total_Distance_mm := 0;
END_IF;
Last_Frequency_Hz := Current_Frequency;
Last_Scan_Time := Current_Time;
END_IF;
Current_Speed_mm_min := Current_Frequency * Ratio_Hz_to_mm_min;
Motor_Running := Motor.STATUS_RUN;
ELSE
Displacement_mm := 0;
Current_Speed_mm_min := 0;
END_IF;
END_FUNCTION_BLOCK;
```
### 7.2 FB_Area_Management
```pascal
FB_Area_Management:
VAR_IN_OUT
Motor : UDT_Motor_Manage; // Motor of this area
END_VAR
VAR_INPUT
Enable : Bool; // Area enable
Area_Length_mm : Real; // Total area length
Bottle_Length_mm : Real; // Bottle dimension
Photocell_Pulse : Bool; // Entry photocell pulse
Reset_Bottles : Bool; // Reset bottle tracking
END_VAR
VAR_OUTPUT
First_Bottle_Position : Real; // Position of first bottle
Last_Bottle_Position : Real; // Position of last bottle
Area_Empty : Bool; // Area completely empty
Bottles_In_Initial_Zone : Bool; // Bottles in initial zone
Bottles_In_Final_Zone : Bool; // Bottles in final zone
Bottle_Count : Int; // Number of bottles in area
END_VAR
VAR_STAT
Virtual_Encoder : FB_Virtual_Encoder;
Bottle_Positions : Array[1..50] of Real; // Track up to 50 bottles
Active_Bottles : Int;
Photocell_Pulse_Edge : R_TRIG;
END_VAR
// Pseudocode:
BEGIN
Virtual_Encoder(
Motor := Motor,
Enable := Enable,
Ratio_Hz_to_mm_min := Calculate_Area_Ratio()
);
// Detect new bottle entry
Photocell_Pulse_Edge(CLK := Photocell_Pulse);
IF Photocell_Pulse_Edge.Q THEN
Add_New_Bottle_To_Tracking();
END_IF;
// Update all bottle positions
FOR i := 1 TO Active_Bottles DO
Bottle_Positions[i] := Bottle_Positions[i] - Virtual_Encoder.Displacement_mm;
// Remove bottles that have exited the area
IF Bottle_Positions[i] <= 0 THEN
Remove_Bottle_From_Tracking(i);
END_IF;
END_FOR;
// Calculate outputs
IF Active_Bottles = 0 THEN
Area_Empty := TRUE;
First_Bottle_Position := 0;
Last_Bottle_Position := 0;
ELSE
Area_Empty := FALSE;
First_Bottle_Position := Find_Minimum_Position();
Last_Bottle_Position := Find_Maximum_Position();
END_IF;
Bottles_In_Initial_Zone := Check_Bottles_In_Zone(Area_Length_mm * 0.8, Area_Length_mm);
Bottles_In_Final_Zone := Check_Bottles_In_Zone(0, Area_Length_mm * 0.2);
Bottle_Count := Active_Bottles;
END_FUNCTION_BLOCK;
```
## 8. Motor-Specific Function Examples
### 8.1 FC_Table_Motor_M316 (Input Feeder Left)
```pascal
FC_Table_Motor_M316:
VAR_IN_OUT
Motor : UDT_Motor_Manage;
Table_Status : T_Table_Status_Commands; // Reference to FB_Table.Status
END_VAR
// Pseudocode:
BEGIN
// === MOTOR CONFIGURATION ===
Motor.CFG_VFD := TRUE;
Motor.CFG_PN := TRUE;
Motor.CFG_Inverter_Type := Inverter_Type_MINIMOTOR;
Motor.CFG_Min_Speed_Hz := 10;
Motor.CFG_Max_Speed_Hz := 500;
// === READ COMMANDS FROM TABLE LOGIC ===
Motor.REQ_EN_Run := Table_Status.Input_Feeders_Enable;
IF Table_Status.Input_Feeders_Enable THEN
Motor.REQ_Speed_Fix_01 := TRUE;
Motor.OUT_VFD_REQ_Speed_User := Convert_mm_min_to_User_Units(Table_Status.Input_Feeders_Speed_mm_min);
// Feeder-specific logic: synchronized operation with M317
Check_Synchronization_With_M317();
// Stop after bottle detection if requested
IF Table_Status.Input_Feeders_Stop_After_Bottle THEN
Implement_Stop_After_Bottle_Logic();
END_IF;
ELSE
Motor.REQ_Speed_Fix_01 := FALSE;
END_IF;
// === CALL MOTOR MANAGEMENT FB ===
FB_Motors_Manage(Motor);
END_FUNCTION;
```
### 8.2 FC_Table_Motor_M319 (Input Selector)
```pascal
FC_Table_Motor_M319:
VAR_IN_OUT
Motor : UDT_Motor_Manage;
Table_Status : T_Table_Status_Commands;
END_VAR
// Pseudocode:
BEGIN
// === MOTOR CONFIGURATION ===
Motor.CFG_VFD := TRUE;
Motor.CFG_PN := TRUE;
Motor.CFG_Inverter_Type := Inverter_Type_MINIMOTOR;
// === POSITIONING MODE SETUP ===
IF Table_Status.Input_Selector_Positioning_Mode THEN
Setup_Positioning_Mode();
Target_Position := Get_Position_For_Channel(Table_Status.Input_Selector_Target_Channel);
Motor.REQ_Target_Position := Target_Position;
Motor.REQ_Positioning_Enable := Table_Status.Input_Selector_Enable;
ELSE
Setup_Velocity_Mode();
Motor.REQ_EN_Run := Table_Status.Input_Selector_Enable;
END_IF;
// === CALL MOTOR MANAGEMENT FB ===
FB_Motors_Manage(Motor);
END_FUNCTION;
```
### 8.3 FC_Table_Motor_M332 (Center Channel - Bypass)
```pascal
FC_Table_Motor_M332:
VAR_IN_OUT
Motor : UDT_Motor_Manage;
Table_Status : T_Table_Status_Commands;
END_VAR
// Pseudocode:
BEGIN
// === MOTOR CONFIGURATION ===
Motor.CFG_VFD := TRUE;
Motor.CFG_PN := TRUE;
Motor.CFG_Inverter_Type := Inverter_Type_G120C_SIEMENS;
// === READ COMMANDS FROM TABLE LOGIC ===
Motor.REQ_EN_Run := Table_Status.Channel_Enable[5]; // Channel 5 = center
IF Table_Status.Channel_Enable[5] THEN
Motor.REQ_Speed_Fix_01 := TRUE;
Motor.OUT_VFD_REQ_Speed_User := Convert_mm_min_to_User_Units(Table_Status.Channel_Speed_mm_min[5]);
ELSE
Motor.REQ_Speed_Fix_01 := FALSE;
END_IF;
// === CALL MOTOR MANAGEMENT FB ===
FB_Motors_Manage(Motor);
END_FUNCTION;
```
## 9. Error Handling
### 9.1 Basic Error Detection
```pascal
PROCEDURE Check_Basic_Errors:
BEGIN
Error_Code := 0;
// Check motor inverter errors
IF Motor_M316.Alarm_02 OR Motor_M317.Alarm_02 THEN
Error_Code := Error_Code OR 16#0001; // Input feeders inverter error
END_IF;
IF Motor_M341.Alarm_02 OR Motor_M342.Alarm_02 THEN
Error_Code := Error_Code OR 16#0002; // Output feeders inverter error
END_IF;
// Check selector positioning errors
IF Motor_M319.Alarm_02 THEN
Error_Code := Error_Code OR 16#0004; // Input selector error
END_IF;
IF Motor_M340.Alarm_02 THEN
Error_Code := Error_Code OR 16#0008; // Output selector error
END_IF;
// Check channel motor errors
FOR i := 1 TO 9 DO
IF Get_Channel_Motor_Alarm(i) THEN
Error_Code := Error_Code OR (16#0010 SHL i); // Channel motor error
END_IF;
END_FOR;
// Transition to error state if errors detected
IF Error_Code <> 0 THEN
Current_State := TABLE_STATE_ERROR;
END_IF;
END_PROCEDURE;
```
## 10. Configuration and Initialization
### 10.1 Format Configuration Example
```pascal
PROCEDURE Initialize_Format_Data:
BEGIN
// Format 1 - Left side accumulation
Format_Data[1].Format_Number := 1;
Format_Data[1].Accumulation_Side := 1; // Left side
Format_Data[1].Bottle_Dimension_mm := 85.0;
Format_Data[1].Max_Speed_mm_min := 12000.0;
Format_Data[1].Target_Channels := [1, 2, 3, 4];
// Format 2 - Right side accumulation
Format_Data[2].Format_Number := 2;
Format_Data[2].Accumulation_Side := 2; // Right side
Format_Data[2].Bottle_Dimension_mm := 65.0;
Format_Data[2].Max_Speed_mm_min := 15000.0;
Format_Data[2].Target_Channels := [9, 8, 7, 6];
END_PROCEDURE;
```
### 10.2 Area Configuration
```pascal
PROCEDURE Initialize_Area_Management:
BEGIN
// Configure each area with its specific dimensions
Area_Input_Selector.Area_Length_mm := 500.0;
Area_Output_Selector.Area_Length_mm := 500.0;
FOR i := 1 TO 9 DO
Area_Channel[i].Area_Length_mm := Get_Channel_Length(i);
END_FOR;
END_PROCEDURE;
```
## 11. Integration Points
### 11.1 FC_Table_Devices Integration
```pascal
FC_Table_Devices:
BEGIN
// Call Table FB with all motor references and exchange data
"DB Table"(
Enable := System_Enable,
Target_Format := HMI_Selected_Format,
Manual_Mode := System_Manual_Mode,
Motor_M316 := "DB Motor M316".Manage,
Motor_M317 := "DB Motor M317".Manage,
Motor_M318 := "DB Motor M318".Manage,
Motor_M319 := "DB Motor M319".Manage,
Motor_M328 := "DB Motor M328".Manage,
Motor_M329 := "DB Motor M329".Manage,
Motor_M330 := "DB Motor M330".Manage,
Motor_M331 := "DB Motor M331".Manage,
Motor_M332 := "DB Motor M332".Manage,
Motor_M333 := "DB Motor M333".Manage,
Motor_M334 := "DB Motor M334".Manage,
Motor_M335 := "DB Motor M335".Manage,
Motor_M336 := "DB Motor M336".Manage,
Motor_M340 := "DB Motor M340".Manage,
Motor_M341 := "DB Motor M341".Manage,
Motor_M342 := "DB Motor M342".Manage,
Motor_M343 := "DB Motor M343".Manage,
Exchange := "DB ATable Exchange"
);
// Additional device coordination logic if needed
END_FUNCTION;
```
This specification provides a complete framework for implementing the table accumulation system while maintaining consistency with the existing motor management framework. The design allows for clear separation of concerns, easy debugging, and flexible implementation of motor-specific behaviors.

View File

@ -1,72 +1,70 @@
***
= 139 = 139 = 139 = 170
### IP network: 10.1.30.0/20
### 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 | | | | | |
| Device | Tag | Funtion | IP | Device | Mask | DB Motor | DB Minimotor | Page | description | | |
| ------------ | ------ | ----------------------------------- | :-: | ------ | ---- | :------: | :----------: | ---- | -------------------------- | ----------- | --------------------------- |
| PLC | | CPU 1514SP T-2 PN | 11 | | /12 | | | 405 | 6ES7 514-2VN03-0AB0 | | |
| HMI | | | 10 | | /12 | | | | | | |
| | | | | | | | | | | | |
| Divider | E44010 | Encoder Divider | 170 | 170 | /12 | | | 440 | | | |
| Divider | U30110 | Axis-X | 31 | 31 | | | | 301 | LinMot C1250-MI-XC-0S-000 | Isochronous | |
| Divider | U30210 | Axis-Y | 32 | 32 | | | | 302 | LinMot C1250-MI-XC-0S-000 | Isochronous | |
| Divider | U30310 | Timing Belt DX 1 | 33 | 33 | | 322 | | 303 | Mitsubishi MR-J4-60TM4-PNT | | |
| Divider | U30410 | Timing Belt DX 2 | 34 | 34 | | 323 | | 304 | Mitsubishi MR-J4-60TM4-PNT | | |
| Divider | U30510 | Timing Belt SX 1 | 35 | 35 | | 324 | | 305 | Mitsubishi MR-J4-60TM4-PNT | | |
| Divider | U30610 | Timing Belt SX 2 | 36 | 36 | | 325 | | 306 | Mitsubishi MR-J4-60TM4-PNT | | |
| Divider | M30710 | Dosser Format | 37 | 37 | | 326 | 710-810 | 307 | Minimotor | | |
| Divider | M31010 | Transport Inside | 40 | 40 | | 327 | | 310 | SEW MGFAS-2 | | S31040,S31050,S31051,B31060 |
| Divider | M31110 | Combiner 1 DX | 41 | 41 | | 328 | 711-811 | 311 | Minimotor | | |
| Divider | M31210 | Combiner 2 SX | 42 | 42 | | 329 | 712-812 | 312 | Minimotor | | |
| Divider | M31310 | Format Change Outfeed | 43 | 43 | | 330 | 713-813 | 313 | Minimotor | | |
| Divider/Ring | M31410 | Transport Outfeed | 44 | 44 | | 331 | | 314 | SEW MGFAS-2 | | B31440 |
| | | | | | | | | | | | |
| | | | | | | | | | | | |
| Table | M31510 | Infeed | 45 | 45 | | 301 | | 315 | SEW MGFAS-2 | | B31540,B31550,S31550,S31560 |
| Table | M31610 | Dosser SX Infeed | 46 | 46 | | 302 | 702-802 | 316 | Minimotor | | |
| Table | M31710 | Dosser DX Infeed | 47 | 47 | | 303 | 703-803 | 317 | Minimotor | | |
| Table | M31810 | Dosser Format Infeed | 48 | 48 | | 304 | 704-804 | 318 | Minimotor | | |
| Table | M31910 | Channel Selection Infeed | 49 | 49 | | 305 | 705-805 | 319 | Minimotor | | |
| Table | U32810 | Canale 1 | 58 | 58 | | 306 | | 328 | Siemens G120C | | |
| Table | U32910 | Canale 2 | 59 | 59 | | 307 | | 329 | Siemens G120C | | |
| Table | U33010 | Canale 3 | 60 | 60 | | 308 | | 330 | Siemens G120C | | |
| Table | U33110 | Canale 4 | 61 | 61 | | 309 | | 331 | Siemens G120C | | |
| Table | U33210 | Canale 5 | 62 | 62 | | 310 | | 332 | Siemens G120C | | |
| Table | U33310 | Canale 6 | 63 | 63 | | 311 | | 333 | Siemens G120C | | |
| Table | U33410 | Canale 7 | 64 | 64 | | 312 | | 334 | Siemens G120C | | |
| Table | U33510 | Canale 8 | 65 | 65 | | 313 | | 335 | Siemens G120C | | |
| Table | U33610 | Canale 9 | 66 | 66 | | 314 | | 336 | Siemens G120C | | |
| Table | M34010 | Channel Selection Outfeed | 70 | 70 | | 315 | 706-806 | 340 | Minimotor | | |
| Table | M34110 | Motore 1 Dosser Outfeed | 71 | 71 | | 316 | 707-807 | 341 | Minimotor | | |
| Table | M34210 | Motore 1 Dosser Outfeed | 72 | 72 | | 317 | 708-808 | 342 | Minimotor | | |
| Table | M34310 | Regolazione Largheza Dosser Outfeed | 73 | 73 | | 318 | 709-809 | 343 | Minimotor | | |
| Table/Ring | M34410 | Transport outfeed | 74 | 74 | | 319 | | 344 | SEW MGFAS-2 | | |
| | | | | | | | | | | | |
| Ring | E44520 | Gateway Outfeed Divider | 175 | 175 | | | | 445 | | | |
| Ring | E44620 | Gateway Infeed Divider | 176 | 176 | | | | 446 | | | |
### Photocells / Sensors
### Photocells / Sensors - Connected to Motors
***
| | 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 |
| Tag | IO | Description | Motor |
| ------ | ------- | ------------------------------------------ | ------ |
| S31040 | E1413.0 | Sensore Di Asse Longitudinale | M31010 |
| S31050 | E1413.1 | Sensore de Asse Transversale | M31010 |
| S31051 | E1413.2 | Sensore de Reg Spaziatore Uscita Divisore | M31010 |
| B31060 | E1413.3 | Sicurezza uscita spaziatore | M31010 |
| B31440 | E1577.0 | Minimo Polmone Ingresso Tavolo | M31410 |
| B31540 | E1597.0 | CONTEGGIO INGRESSO TAVOLO | M31510 |
| B31550 | E1597.1 | SICUREZA TRASLAZIONE SMISTATORE INGRESSO | M31510 |
| S31550 | E1597.2 | SENSORE DI HOMING SPAZIATORE ING. TAVOLO | M31510 |
| S31560 | E1597.3 | SENSORE DI HOMING TRASL SMISTATORE INGRESO | M31510 |
| B34440 | E2217.0 | SICUREZZA TRALAZIONE SMISTATORE USCITA | M34410 |
| B34450 | E2217.1 | CONTEGGIO USCITA TAVOLO | M34410 |
| B34451 | E2217.2 | INTASAMENTO USCITA TAVOLO | M34410 |
| S34460 | E2217.3 | SENSORE DI HOMING TRASL SMISTATORE USCITA | M34410 |
| S34461 | E2217.4 | SENSORE DE HOMING SPAZIATORE USCITA TAVOLO | M34410 |
### Emergency circuit
@ -107,7 +105,24 @@
| Table | M33660 | Canale 9 | | 336 | .75kw | 1.9A |
| | | | | | | |
| Motor | Homing | Descripcion |
| ----- | ------ | --------------- |
| M307 | S34470 | Divider Infeed |
| M313 | S31051 | Divider Outfeed |
| M318 | S31550 | Table Infeed |
| M319 | S31560 | Selector In |
| M340 | S34460 | Selector Out |
| M343 | S34461 | Table Outfeed |
Questi sono 6: DBSE-S1 -> Force 8
![[Pasted image 20250616114855.png|800]]
Questi sono 1: FC6 -> Force 4
![[Pasted image 20250616115153.png|800]]
![[Pasted image 20250616120243.png]]
Tilter: gsdml-v2.32-minimotor-dbs55-20190315.xml
FC de ALPLA: gsdml-v2.32-minimotor-dbs55-20190315.xml

View File

@ -94,7 +94,7 @@ S31051 ^eoUd3YsC
S34461 ^heswS0PC
S34460 ^bwPm9Dz6
S31560 ^bwPm9Dz6
## Embedded Files
cc2e866f5ab74b824891b9e6e5d79ed0c73485aa: [[Layout-Model.png]]
@ -102,340 +102,344 @@ cc2e866f5ab74b824891b9e6e5d79ed0c73485aa: [[Layout-Model.png]]
%%
## Drawing
```compressed-json
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
BAyoGTAzs/HLAMaXqppzOEBhKNhAQANhAgAA
```
%%

View File

@ -0,0 +1,107 @@
## Framework de Gestión de Motores Vetromeccanica
### 1. Visión general
El proyecto utiliza un **framework genérico** para gobernar todos los accionamientos desde TIA Portal. La pieza central es el bloque `FB_Motors_Manage`, que implementa toda la lógica estándar (arranque, paro, rampas, alarmas, diagnóstico, etc.) para **cualquier tipo de variador** (Minimotor, Danfoss, G120C, Movigear, …).
Para evitar duplicar código, cada motor del sistema dispone de:
* Un _wrapper_ tipo `FC_Ttop_Motor_XXXXXX` (por ejemplo `FC_Ttop_Motor_M30710`).
* Su **DB de instancia** (por ejemplo `DB_Ttop_Motor_M30710`) donde reside el _struct_ `Manage` con todos los parámetros, flags de mando y estados.
El esquema típico dentro del FC es:
```pascal
// Ajustes específicos del motor
Motor.CFG_Inverter_Type := Inverter_Type_MINIMOTOR;
Motor.CFG_Min_Speed_Hz := 10;
Motor.CFG_Max_Speed_Hz := 500;
// …otros ajustes…
// Transferencia de órdenes desde la lógica de la mesa (FB_Table)
Motor.REQ_EN_Run := Table_Status.Channel_Enable[n];
Motor.REQ_Speed_Fix_01 := TRUE;
Motor.OUT_VFD_REQ_Speed_User := Velocidad_deseada;
// ► Llamada al bloque genérico
FB_Motors_Manage( Motor );
```
Así, **toda la inteligencia concreta** (protecciones, gestión de alarmas, rampas, filtros, cálculos de velocidad, mapping de señales HW, etc.) **vive dentro de `FB_Motors_Manage`;** los FC sólo traducen la estrategia de proceso al formato que entiende el genérico.
---
### 2. Relación de FC_Ttop_Motor ↔ Instancia FB_Motors_Manage
A partir de `xref_calls_tree.md` encontramos los siguientes wrappers activos en la mesa T-Top (cada uno llama a su DB/FB_Motors_Manage):
| Canal / Función | FC wrapper | DB instancia | Tipo de variador* | Dirección PROFINET (PLC IO) |
|-----------------|------------|--------------|-------------------|-----------------------------|
| M30710 Canal central bypass | `FC_Ttop_Motor_M30710` | `DB_Ttop_Motor_M30710` | DBS55-PN (Minimotor extend-A) | IP 10.1.30.37 In/Out 1356 |1356 |
| M31010 Alimentador entrada (L) | `FC_Ttop_Motor_M31010` | `DB_Ttop_Motor_M31010` | DFC2xA (Danfoss) | 10.1.30.40 1404 |
| M31110 Alimentador entrada (R) | … | … | DBS55-PN | 10.1.30.41 1424 |
| M31210 Formato entrada | … | … | DBS55-PN | 10.1.30.42 1472 |
| M31310 Selector entrada | … | … | DBS55-PN | 10.1.30.43 1520 |
| M31410 Canal 1 | … | … | DFC2xA | 10.1.30.44 1568 |
| M31510 Canal 2 | … | … | DFC2xA | 10.1.30.45 1588 |
| M31610 Canal 3 | … | … | DBS55-PN | 10.1.30.46 1608 |
| M31710 Canal 4 | … | … | DBS55-PN | 10.1.30.47 1656 |
| M31810 Canal 5 (centro) | … | … | DBS55-PN | 10.1.30.48 1704 |
| M31910 Canal 6 | … | … | DBS55-PN | 10.1.30.49 1752 |
| U32810 Selector salida (G120C) | `FC_Ttop_Motor_U32810` | `DB_Ttop_Motor_U32810` | G120C | 10.1.30.58 1800 |
| … | … | … | … | … |
*El tipo se extrae de la columna _Module Name_ de **PLC IO.md** y del parámetro `CFG_Inverter_Type`.
Estas FC son llamadas desde `FC_Ttop_Run`, que a su vez forma parte de la secuencia principal `OB1 → FC_Ttop_Run` descrita en **Especifica General.md §1.1**.
---
### 3. Estructura esencial del struct `Manage`
El struct contiene +300 campos; los más relevantes se resumen por familias:
1. **CFG_*** (Configuration) valores estáticos cargados al arranque. Entre ellos:
* `CFG_VFD`, `CFG_PN`, `CFG_DP` modo de comunicación.
* `CFG_Inverter_Type` mapa a la _tabla de constantes_ de **PLC IO.md**.
* Límites: `CFG_Min_Speed_Hz`, `CFG_Max_Speed_Hz`, `CFG_Max_mBar`.
* Señales adicionales HW: `CFG_Add_Signal_RUN_FWD`, `CFG_Add_Signal_TRIP`, …
2. **RCP_*** (Recipe) velocidades y temporizadores provenientes de recetas HMI.
3. **REQ_*** (Requests) órdenes de proceso que el wrapper escribe cada ciclo:
* `REQ_EN_Run` habilitación general.
* `REQ_Speed_Fix_01 … 05` selección de consignas fijas.
* `REQ_Master_Speed_Sync` velocidad en modo síncrono.
4. **OUT_*** salidas hacia la periferia (bobinas de RUN, RESET, consigna Hz, etc.).
5. **STATUS_*** feedback del variador tratado por `FB_Motors_Manage`:
* `STATUS_RUN`, `STATUS_VFD_Trip`, `STATUS_VFD_Warning`, `STATUS_Ready`.
* `STATUS_VFD_ACT_Speed_Hz / _User` para diagnóstico.
6. **Alarm_XX** 16 bits genéricos de fallo estandarizados.
`FB_Motors_Manage` lee **CFG** + **REQ**, actualiza **OUT** y **STATUS**, y setea **Alarm_XX** cuando procede.
---
### 4. ¿Qué hace `FB_Motors_Manage` internamente?
Aunque el SCL completo no está visible, por práctica con la librería se puede resumir en:
1. **Inicialización** copiado de _recipes_ a la estructura, validación de límites.
2. **Decodificación de órdenes**:
* Prioridad: `REQ_QStop` > `REQ_Start_FWD/BWD` > `REQ_EN_Run`.
* Conversión de velocidad (mm/min → Hz / unidades de variador) usando `CFG_Kspeed_User50Hz`.
3. **State Machine genérica** estados `STOPPED`, `RUNNING`, `FAULT`, `RAMP_UP`, `RAMP_DOWN`
4. **Gestión de rampas** `RCP_ACC_Ramp`, `RCP_DEC_Ramp`.
5. **Monitorización de feedback** comparación real/objetivo, timeout de ready, etc.
6. **Gestión de alarmas** mapeo de bits de fallo variador a `Alarm_01…16`, disparo de `STATUS_VFD_Trip`.
7. **Energy Saving / Stand-by** salidas `OUT_EnergySavingON` cuando la línea está vacía (`IN_Line_Empty`).
---
### 5. Flujo completo de mando (de la mesa al variador)
```mermaid
flowchart LR
FB_Table -- "Status.Channel_Enable[x], Speed" --> FC_Ttop_Motor_x
FC_Ttop_Motor_x -- "REQ_*, CFG_*" --> FB_Motors_Manage
FB_Motors_Manage -- "OUT_* (RUN,SpeedHz)" --> DB_Fieldbus_IO
DB_Fieldbus_IO -- "Feedback bits" --> FB_Motors_Manage
FB_Motors_Manage -- "STATUS_*" --> FC_Ttop_Motor_x
FC_Ttop_Motor_x --> FB_Table
```
---
### 6. Conclusiones / Buenas prácticas
* **Escalabilidad:** añadir un motor es cuestión de clonar una DB + FC y ajustar `CFG_*`.
* **Trazabilidad:** los campos `STATUS_` y `Alarm_XX` ofrecen un _diagnóstico unificado_ visible desde HMI sin depender del fabricante del variador.
* **Separación de capas:**
* _Proceso_ (FB_Table) decide **qué** hacer.
* _Wrapper_ (FC_Ttop_Motor) traduce al formato genérico.
* _Motor core_ (FB_Motors_Manage) ejecuta el **cómo**.
---
> Nota: la tabla de la sección 2 puede completarse con los restantes motores (M31610…U33610) siguiendo el mismo patrón mostrado.

View File

@ -1,13 +1,45 @@
***
### Objetivo:
***
Anillo de transporte unifilar multiformato ( 2 formatos ) que une un Divider con una Mesa de acumulación. Solo para test ya que luego del Divider se usa un combiner para volver a unificar el flujo de botellas.
Solo debo implementar la logica del Anillo , la mesa de acumulación y del cambio formato.
#### Notas:
***
* Los dosadores trabajan de a dos a igual velocidad espejados. Desde el punto de vista logico son como un unico motor.
* Los motores de cambio formato tienen un punto de homing y luego mediante un reductor linealmente abren en base a una k que relaciona el encoder con mm.
* Todos los motores minimotor tienen encoder y usan el protocolo Inverter_Type_MINIMOTOR. Tienen dos modos de funcionamiento como Positioning o como Velocity. Para los cambios de formato y
#### Notaciones:
***
Mesa : Mesa de acumulacion
Curva1: transporte M344 con fotocelula B34451. Mesa -> Divider
Curva2: transporte M315 con fotocelula B31440. Divider -> Mesa
Selector: son los motores que permiten seleccionar el canal a usar en la Mesa. Cada canal le corresponde un valor de encoder. La Mesa de acumulacion tiene un Selector al ingreso y a la salida. Estos selectores conectan los dosadores con los canales de la mesa.
#### Componentes del anillo:
***
Mesa -> Curva1 -> Divider -> Combiner -> Curva2 -> Mesa
### Datos:
***
Cada entidad debe mantener los siguientes datos:
* Formato actual: numero de formato : dimension
* Estado de ciclo: Automatico o Manual
* Alarmas. Bits de alarmas. Codigo de alarma prioritario: Alarma mas importante actual.
### Descripción general:
***
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
* Combinador para unificar los canales a la salida del divider. M311 e M312
* Cambio formato Combinador M313 - Homing S31051
* Fotocelula de control de salida llena 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.
@ -15,54 +47,257 @@ El proyecto involucra un transporte de botellas en anillo con los siguientes ele
* 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.
* El M315 alimenta los dosadores de la Mesa de Acumulo.
* Los dosadores de ingreso de la mesa de acumulo son M316 y M317
* 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.
* El motor de selección de pista en ingreso es el M319 que tiene el sensor S31560 de homing
* Los motores de las pistas son:
* canal central (n=5) : M332
* canal mas a la izquierda n=1 : M328
* canal n=2 : M329
* canal n=3 : M330
* canal n=4 : M331
* canal mas a la derecha n=9 : M336
* canal n=8 : M335
* canal n=7 : M334
* canal n=6 : M333
* El motor de seleccion de pista de salida es el M340 que tiene el sensor S34460 de homing
* Los dosadores de salida de la mesa de acumulo son M341 y M342
* Cambio formato:
* Dosadores de Salida: M343 - Homing S34461
La secuencia partiendo de la mesa de acumulacion es:
* Mesa de acumulacion:
* Dosadores de ingreso M316 y M317. Cambio de formato con M318
La secuencia de las botellas por los transportes en el caso que la mesa esta en modo bypass partiendo de la salida de la mesa de acumulacion es:
* Mesa de acumulacion: Dosadores de salida M341 y M342.
* Motor M344 curva de salida hacia Divider. Fotocelula de acumulacion B34451 a mitad de curva M344.
* Divider
* Motor salida Divider M310
* Combiner M311 e M312. Fotocelula control de salida combiner/divider B31060
* Motor salida combiner M314
* Fotocelula a mitad de curva salida Divider ingreso Mesa de acumulo B31440. Motor de curva entre salida Divider e ingreso Mesa M315
* Dosadores de ingreso Mesa M316, M317
### Mesa de acumulación
***
El objetivo de la mesa de acumulación es almacenar el formato que no se está usando.
El objetivo de la mesa de acumulación es almacenar el formato que no se está usando. Los canales no tienen guias por lo que se deben ingresar las botellas siempre consecutivas deteniendo la carga cuando no hay acumulacion suficiente en el ingreso B31440.
Las guias en el area de los Selectores de canales no son motorizadas y necesitan que todos los transportes por donde se cruza la guia esten en funcionamiento para que las botellas puedan circular por el area de los selectores. Esto significa que cuando queremos cargar la Mesa se debe cargar desde afuera hacia adentro y para descargarla debemos descargar desde los canales centrales hacia los externos. Durante una carga o una descarga los canales desde el centro hacia el canal que se carga o se descarga deben estar en funcionamiento. Esto implica que los canales que deben funcionar solo de pasaje deben estar vacios.
La mesa de acumulacion tendra 3 estados:
* Carga
* Bypass
* Descarga
Componentes:
* Dosadores de Ingreso y Salida
* Selector de canales en ingreso y en salida
* Fotocelula de conteo en ingreso B31540
* Fotocelula de seguridad Selectores : Ingreso: B31550, Salida: B34440
* Fotocelula de conteo salida Mesa B34450
* Motores de cambio formato Ingreso: M318/S31550 , Salida: M343/S34461
* Motores de cada canal:
* canal central (n=5) : M332
* canal mas a la izquierda n=1 : M328
* canal n=2 : M329
* canal n=3 : M330
* canal n=4 : M331
* canal mas a la derecha n=9 : M336
* canal n=8 : M335
* canal n=7 : M334
* canal n=6 : M333
Sensores:
* pth_min : Fotocelula de minimo accumulo
* pth_cnt_in : Fotocelula de conteo ingreso mesa
* hm_infeed : Sensor de homing cambio formato ingreso dosadores
* hm_selector_in: Sensor de homing selector de ingreso
* safety_selec_in: Fotocelula de seguridad selector ingreso
* safety_selec_out: Fotocelula de seguridad selector salida
* hm_selector_out: Sensor de homing selector de salida
* hm_outfeed : Sensor de homing cambio formato dosadores de salida
* pth_cnt_out : Fotocelula de conteo salida mesa
* pth_out : Fotocelula de maximo accumulo salida
Parametros:
* Dimension de las botellas longitudinalmente en mm
* Dimension fotocelula de minimo a dosador ingreso en mm
* Dimension del dosador ingreso
* Dimension Area Selector en mm ingreso
* Dimension Area Canales en mm
* Dimension Area Selector en mm salida
* Dimension del dosador salida en mm
* Velocidad de carga
* Velocidad de descarga
* Velocidad de bypass
* Espacio entre botellas
* Tiempo de minimo accumulo
* Maximo espacio entre botellas no recuperable
* Espacio de seguridad canal a dejar libre lado ingreso
* Espacio de seguridad canal a dejar libre lado salida
Datos:
* formato actual
* estado actual de ciclo: automatico, manual
* estado de funcionamiento:
* Carga
* Bypass
* Descarga
* posicion de la primera y ultima botella en cada area:
* Las areas son selector de ingreso, canal, selector de salida
* Para esto se genera un encoder virtual de cada canal que permite seguir estos dos valores.
* Estos valores son relativos a la distancia total del canal. Por ejemplo si el canal tiene 10000mm cuando ingresa una botella ingresa como 10000mm y este valor se va decrementando a medida que el transporte se mueve. Cuando este contador first_bott o last_bott llega a 0 significa que esta botella ha salido del canal.
* Cuando se comienza a descargar un canal siempre se debe terminar de descargar hasta la ultima botella.
* Procedimiento para cargar la dimension de un area en last_bott o first_bott:
* Cuando una botella pasa por la fotocelula de ingreso area:
* si last_bott = 0 se asigna a first_bott la dimension del area.
* last_bott se asigna con la dimension del area.
* esto significa que para la primera botella last_bott y first_bott son asignados con la dimension del area. Luego solo se actualiza last_bott. A medida que el transporte del area se mueve las dimensiones se decrementan. Cuando first_bott llega = 0 significa que las botellas estan en la zona final.
### Componentes de Software:
***
* FB para cambio formato:
* Esta FB debe gestionar el posicionamiento segun el formato:
* DB de Motor
* Recibe la dimension esperada
* IN: dimension : real
* IN: Habilitacion al movimiento
* Estado:
* OUT: En posicion : bool
* OUT: Posicionando : bool
* OUT: Error code
* Motor error
* Overlimit
* Estado de ciclo:
* IN: Automatico
* IN: Manual
* IN: Homing
* Senales:
* IN: Marcha
* IN: Stop
* IN: Reset
* IN: Jog FF
* IN: Jog BW
* IN: Home Sensor
*
* FB de gestion de los selectores
* Gestiona el posicionamiento de los selectores.
* Receta:
* Tabla de posiciones para cada canal
* Velocidad de movimiento Auto
* Velocidad de movimiento Manual
* Velocidad de movimiento Jog
* IN/OUT:
* IN: DB de Motor : int
* Recibe el canal esperado
* IN: canal: int ( 0 a 9 )
* IN: Habilitacion al movimiento
* Estado:
* OUT: En posicion : bool
* OUT: Posicionando : bool
* OUT: Ciclo en Automatico
* OUT: Error code
* Motor error
* Overlimit
* Estado de ciclo:
* IN: Automatico : bool
* IN: Manual : bool
* IN: Homing : bool
* Senales:
* IN: Marcha : bool
* IN: Stop : bool
* IN: Reset : bool
* IN: Jog FF : bool
* IN: Jog BW : bool
* IN: Home Sensor : bool
* FB de gestion de area:
* Receta:
* Cada area tiene una dimension total
* Dimension inicio
* Dimension final
* ratio Hz x mm para encoder virtual
* Gestiona first_bott y last_bott
* IN/OUT:
* IN: DB de Motor : int
* IN: Habilitacion al movimiento : bool
* IN: Velocidad a seguir en mm/sec : real
* IN: Separacion en mm : real
* IN: Dimension de la botella : real
* OUT: Vacio / Libre : bool
* OUT: no hay botellas en area inicial : bool
* OUT: no hay botellas en area final : bool
* De la DB de Motor se obtiene la velocidad y si esta en marcha o no el motor. Se gestiona cada motor segun la habilitacion al movimiento. Se calculan los Hz en base al ratio y a la velocidad a seguir.
* En base a la separacion y la dimension de la botella se calcula la sobrevelocidad a adicionar a velocidad a seguir.
* FB de gestion de dosadores:
* Se encarga de gestionar el funcionamiento de 2 motores en contemporaneo a la misma velocidad. Si uno esta en error o no en funcionamiento se detiene el otro.
* Ademas se encarga de la detencion en mm luego de la ultimo pulso de botella, para esto usa un encoder virtual *
* IN: DB de MotorSX : int
* IN: DB de MotorDX : int
* IN: Velocidad a seguir en mm/sec
* IN: pulso de botella
* IN: Habilitacion al movimiento.
* OUT: Codigo de error
* OUT: En marcha
* Receta:
* distancia en mm de parada en fase luego de ultima botella
* ratio Hz x mm para encoder virtual
* FB de logica de Mesa
* Gestion de la Mesa de acumulacion
* FB de combiner
* Gestion del combiner. Logica identica a los dosadores solo que con control de
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ñ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 |
| 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 carga comienza por solicitud externa i2.
- 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)
- Una vez descargada, se activa el modo bypass. (o4)
### Anillo
***
Los 2 motores de Curva1 y Curva2 deben seguir las velocidades de las dos maquinas.
* Curva1 debe seguir la velocidad sincrona del Divider y solo puede funcionar si el Divider es en funcionamiento.
* Curva2 debe seguir la velocidad sincrona del Combiner y debe funcionar siempre que el Combiner funcione
Las curvas son los unicos puntos en que se puede hacer acumulacion.
### Combiner
***
Velocidad sincrona a la velocidad del Divider. Funciona siempre que el Divider funcione y que no haya acumulacion en la Fotocelula de salida pth_out. Esta pth_out si detecta mas de una botella debe detener el combiner.
Si el combiner se detiene el Divider se detiene.
Cambio formato con M313/S31051
![[Pasted image 20250611204519.png]]

View File

@ -0,0 +1,70 @@
Il progetto coinvolge un trasporto di bottiglie in anello con i seguenti elementi:
* Anello composto da M314, M315 e M344
* Trasporto con guide motorizzate per cambio di formato
* Divider ad alta velocità
* Cambio formato Guide M307 - Homing S34470
* Combinatore per unificare i canali all'uscita del divider.
* Cambio formato Combinatore M313 - S31051
* Logica di uscita B31060
* Tavolo di accumulo che permette di immagazzinare il formato non utilizzato.
* Il tavolo di accumulo dispone di 4 file a destra e 4 a sinistra oltre alla fila centrale usata solo come bypass.
* Le guide di traslazione che permettono di spostare le bottiglie dai canali esterni al canale centrale non hanno trazione propria e poiché passano attraverso i canali centrali, ciò obbliga che per caricare o scaricare i canali esterni, i trasporti dei canali interni debbano essere in funzione. Anche per questo motivo, i canali esterni vengono caricati per primi e scaricati per ultimi poiché abbiamo bisogno di muovere liberamente i canali interni mentre carichiamo o scarichiamo i canali più esterni.
* Se definiamo come canale(centro), centro + n è formato destro, centro - n è formato sinistro e centro è il canale di bypass, poi per caricare il formato destro dobbiamo e avendo come Max(n) la quantità massima di canali a destra o sinistra, allora dobbiamo prima caricare il canale n=centro+Max(n) e decrementiamo n mentre è maggiore di centro. Mentre carichiamo il canale n, i canali da centro fino a n vengono messi in funzione.
* Per lo scarico si fa il procedimento inverso scaricando dai canali più vicini al centro verso il canale Max(n)
* Per il formato sinistro si inverte il segno usando n=centro-Max(n).
* Per il tavolo di accumulo su cui stiamo lavorando Max(n) = 4, i canali sono definiti da 1 a 9 e il canale centrale = 5.
* Il tavolo può immagazzinare 2 formati, uno a destra e l'altro a sinistra. Quando è richiesto un cambio di formato, si carica il formato in corso e si scarica il nuovo formato. Una volta scaricato il formato in corso, si attiva la modalità bypass.
* Cambio formato:
* Dosatori di Ingresso: M318 - Homing S31550
* Dosatori di Uscita: M343 - Homing S34461
* Per selezionare il canale di carico o scarico si utilizzano 2 motori minimotori, uno all'ingresso e l'altro all'uscita che permettono di modificare l'angolo delle bordi. Questo angolo deve essere caricato come parametro e ci sono 9 canali possibili.
La sequenza partendo dal tavolo di accumulo è:
* Tavolo di accumulo:
* Dosatori di ingresso M316 e M317. Cambio di formato con M318
### Tavolo di accumulo
***
L'obiettivo del tavolo di accumulo è immagazzinare il formato che non si sta utilizzando.
Il lavoro avrà i seguenti obiettivi:
- Logica del tavolo di carico, scarico e bypass: gestione del cambio di formato per il minimotore. Per semplicità, il tavolo è diviso in destra/sinistra e i formati possono essere solo su un lato.
- Logica dei motori in anello e logica standard VM.
- L'HMI non sarà sviluppato in questa fase, mi hai detto che si fa separatamente, ma verrà creato un simulatore per noi.
- Gestione delle ricette nell'HMI: inizialmente, si seguirà il piano concordato. Verranno create righe nel ricettario per ogni motore in anello e per i dati del tavolo. Il cambio di formato del tavolo inizierà solo dopo aver verificato che non ci siano più bottiglie nell'anello e che la modalità carico sia attiva, con il divider e l'anello in automatico.
- Velocità:
- Velocità di bypass: dipende dal divider e dall'anello, non limitata dal tavolo.
- Velocità di carico/scarico: deve essere lenta per chiudere i vuoti tra i cambi di canale del tavolo. Durante il carico, lo scarico è fermo e viceversa.
Per ora, prevedo il tavolo come un Dispositivo con i seguenti segnali di ingresso/uscita:
#### Segnali di Ingresso (Input)
***
| Segnale | Descrizione | Funzione |
| ------- | ----------------------------------------------- | ---------------------------------------------------------- |
| i1 | Uscita anello richiesta prodotto | Uscita libera |
| i2 | Richiesta di carico | Per cambio di formato |
| i3 | Anello vuoto + divider in auto + anello in auto | Per generare consenso a cambio di formato |
| i4 | Velocità motore bypass richiesta | Velocità desiderata per bypass |
| i5 | Cambio di formato eseguito dall'HMI | Comando di esecuzione |
| i6 | Abilitazione di scarico | Inibisce scarico automatico una volta completato il carico |
#### Segnali di Uscita (Output)
***
| Segnale | Descrizione | Funzione |
| ------- | -------------------------- | ---------------------------------------------------- |
| o1 | Ingresso richiede prodotto | Tavolo pronto e in funzione |
| o2 | Cambio di formato consentito | Carico completato e anello vuoto |
| o3 | Velocità motore uscita | Per interfaccia con 1 motore di uscita del tavolo nell'anello |
| o4 | Tavolo in Bypass | Stato di bypass attivo |
Cambio di stati nel tavolo:
- Il carico inizia su richiesta esterna i2 (da operatore o temporizzatore).
- Lo scarico avviene automaticamente dopo un cambio di formato (i5). Il tavolo si scarica completamente prima di iniziare la modalità bypass.
- Una volta scaricato, si attiva la modalità bypass. (o4)
![[Pasted image 20250611204506.png]]

View File

@ -0,0 +1,157 @@
### 1. Goal
Implement the control logic for a two-format bottle loop consisting of the Accumulation Table, Curve 1, Divider, Combiner, Curve 2 and the format-change axes. Only the loop, table and format-change logic are in scope.
---
### 2. Physical Layout
`AccumTable → Curve 1 (M344) → Divider → Combiner (M311 + M312) → Curve 2 (M315) → AccumTable`
---
### 3. Runtime Data held by every entity
|Field|Type|Meaning|
|---|---|---|
|`formatId`|INT|Active bottle format|
|`cycleMode`|ENUM {AUTO, MAN}|Automatic / Manual|
|`alarmBits`|DWORD|Active alarms bitmap|
|`topAlarm`|WORD|Highest-priority alarm code|
---
### 4. Main Operating States
1. **Load** fill outermost channels first.
2. **Bypass** straight-through flow.
3. **Unload** empty innermost channels first.
---
### 5. Functional Behaviour (concise)
|Sub-system|Key rules of operation|
|---|---|
|**Accumulation Table**|• Works in three states (Load, Bypass, Unload).• Channels are filled from the outside in and emptied from the inside out; channels that lie between the selector and the active channel must run while bottles cross them.|
||• Each channel keeps two virtual counters `firstBottle_mm` & `lastBottle_mm`, initialised to the full channel length when a bottle is detected and decremented by the conveyor encoder; when `firstBottle_mm == 0` the leading bottle has reached the channels end.|
||• Once a channel starts **Unload** it must run until `lastBottle_mm == 0` to avoid trapping product.|
|**Curve 1 / Curve 2**|• Curve 1 runs in speed-follower mode slaved to the Divider and may move only while the Divider is running.• Curve 2 is slaved to the Combiner and must run whenever the Combiner runs; the two curves are the only places where line accumulation may build up.|
|**Combiner**|• Speed follows the Divider.• Stops if the downstream photo-sensor `pth_out` detects more than one bottle; if Combiner stops it also stops the Divider.|
|**Doser Pair**|• Two motors run in mirror at identical speed; if either trips, both stop.• After the last bottle pulse the pair runs an additional distance (`stopDist_mm`) using a virtual encoder before stopping.|
---
### 6. Key Parameters
`bottleLen_mm`, `minAccumTime_ms`, `loadSpeed_mmps`, `unloadSpeed_mmps`, `bypassSpeed_mmps`, `virtualEncRatio_HzPerMm`, `safetyGapIn_mm`, `safetyGapOut_mm`
---
### 7. Software Architecture (Function Blocks)
| FB Name | Purpose | Typical DB |
| ---------------------- | ---------------------------------------------------------- | ------------------------ |
| **FB_FormatAxis** | Position a single minimotor to the target format dimension | `DB_FormatAxis_<axis>` |
| **FB_ChannelSelector** | Position the infeed/outfeed selector to a channel | `DB_SelIn`, `DB_SelOut` |
| **FB_AreaTracker** | Track `firstBottle` / `lastBottle` and drive an area motor | `DB_Area_<n>` |
| **FB_DoserPair** | Run a left/right doser pair with stop-after-pulse logic | `DB_DoserIO` |
| **FB_BufferLogic** | High-level coordinator for Load / Bypass / Unload | `DB_Buffer` |
| **FB_CombinerCtrl** | Synchronise Combiner with Divider, stop on blockage | `DB_Combiner` |
| **FB_LoopCurve** | Slave Curve 1 to Divider and Curve 2 to Combiner | `DB_Curve1`, `DB_Curve2` |
---
### 8. Interfaces (concise examples)
_FB_FormatAxis_
```
Inputs : enable, dimSet_mm, cycleMode, cmdHoming, jogFwd, jogRev, reset
Outputs: inPosition, positioning, errorWord
```
_FB_ChannelSelector_
```
Inputs : enable, channelSet(0-9), cycleMode, cmdHoming, jogFwd, jogRev, reset
Outputs: inPosition, positioning, autoActive, errorWord
```
_FB_AreaTracker_
```
Inputs : enable, speedRef_mmps, bottleLen_mm, spacing_mm, areaDim_mm
Outputs: areaEmpty, noBottleAtIn, noBottleAtOut
```
_FB_DoserPair_
```
Inputs : enable, speedRef_mmps, bottlePulse, stopDist_mm
Outputs: running, errorWord
```
_FB_BufferLogic_
```
Inputs : reqLoad, reqFormatChange, unloadEnable, bypassSpeedRef
Outputs: tableNeedsProduct, formatChangeOK, outfeedSpeedRef, bypassActive
```
_FB_CombinerCtrl_
```
Inputs : dividerSpeedRef_mmps, pthOutBlocked, dividerRunning
Outputs: combinerSpeedRef_mmps, stopDivider
```
---
### 9. Naming Guidelines
|Category|Convention|Example|
|---|---|---|
|FBs|`FB_<Meaning>`|`FB_BufferLogic`|
|BOOL var|verbNounFlag|`enableMove`|
|WORD|camelCase|`errorWord`|
|REAL|suffix `_mm`, `_mmps`|`speedRef_mmps`|
|Structs|`ST_<Role>`|`ST_AreaStatus`|
---
### 10. Signal Map (I/O)
|Signal|Suggested Name|Dir|Comment|
|---|---|---|---|
|i1|`ringOutReq`|IN|Product request from downstream|
|i2|`loadCmd`|IN|Start load for format change|
|i3|`ringEmptyOk`|IN|Loop & Divider ready for change|
|i4|`bypassSpeedRef`|IN|Desired bypass speed|
|i5|`formatChangeCmd`|IN|HMI executes change|
|i6|`unloadEnable`|IN|Allow automatic unload|
|o1|`tableProdReq`|OUT|Table ready, asks for bottles|
|o2|`formatChangeOK`|OUT|Loading done & loop empty|
|o3|`outfeedSpeedRef`|OUT|Speed reference to ring outfeed|
|o4|`bypassActive`|OUT|Table in bypass state|
---
### 11. State Sequence Summary
1. External `loadCmd` → BufferLogic enters **Load**, enforcing outer-to-inner rule.
2. On HMI `formatChangeCmd`, BufferLogic finishes load, waits for `ringEmptyOk`, then raises `formatChangeOK`.
3. After format change, BufferLogic triggers **Unload** (inner-to-outer).
4. When all channels empty, state switches to **Bypass** and `bypassActive` is set.
---
This version retains the tight structure and English terminology from the previous draft while adding the essential operating descriptions for the Accumulation Table, Curves, Combiner and Doser logic drawn from the original Spanish document.

Binary file not shown.

After

Width:  |  Height:  |  Size: 267 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 267 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 168 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 110 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 13 KiB

View File

@ -0,0 +1,8 @@
IM Connection
24v Card
![[Pasted image 20250610120718.png]]
Analog setup
![[Pasted image 20250610121735.png]]

View File

@ -70,18 +70,3 @@ knick --> plc : "4-20mA"
# Comparative Table: UR62 vs UR24 Refractometers by Maselli
| Feature | UR62 | UR24 |
| --------------------------------- | ----------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------- |
| **Classification** | Basic (THE BASIC) | Advanced (THE ULTIMATE) |
| **Measurement range** | 1.3229 … 1.505 nD (0…85 Bx) | 1.3163 … 1.5318 nD (0…95 Bx) |
| **Accuracy** | • +/- 0.0004 nD (+/-0.2 Bx) alone<br>• +/- 0.0002 nD (+/-0.1 Bx) with RC24 | • +/- 0.00003 nD (+/-0.02 Bx) SA version<br>• +/- 0.00007 nD (+/-0.05 Bx) HA version<br>• +/- 0.0002 nD (+/-0.15 Bx) STD version |
| **Repeatability** | • +/- 0.2 alone<br>• +/- 0.03 with RC24 | Not specified |
| **Product temperature** | -25…+90°C (-13…194°F) | • -5…+105°C (23…221°F)<br>• -5…+140°C (23…284°F) for LP version |
| **Max sterilization temperature** | Hot water at 95°C x 30 min<br>Steam (0.5 bar) at 110°C x 30 min | • 125°C x 30 min<br>• 145°C x 30 min for LP version |
| **Line pressure** | • Max. 10 bar at 20°C<br>• Max. 8 bar at 90°C | • Max. 10 bar at 20°C<br>• Max. 8 bar at 100°C<br>• Special version up to 40 bar at 20°C |
| **Power supply** | • AC 24V ±10%, 50-60Hz, 80mA<br>• DC 24V ±10%, 80mA | • AC 24V ±10%, 50-60Hz, 0.6A<br>• DC 24V ±10%, 0.6A<br>• AC 115/230V ±10%, 50-60Hz, 25VA (with transformer) |
| **Interfaces** | Analog, Analog/Digital, PROFIBUS DP, Ethernet/IP | Analog, Analog/Digital, PROFIBUS DP, Ethernet/IP, PROFINET, Modbus/TCP |
| **Protection** | IP67 to EN60529 | IP67 to EN60529 |
| **Main benefits** | • Optical Technology<br>• Basic accuracy<br>• 100% in-line installation<br>• No need of adjustments<br>• No maintenance | • Optical Technology<br>• High accuracy<br>• 100% in-line installation<br>• No need of adjustments<br>• No maintenance |

View File

@ -0,0 +1,254 @@
## Purpose
Function block for managing 4-20mA analog inputs with error detection and automatic recovery. Designed for SIMATIC S7-315 systems.
## Hardware Requirements
- **Module**: SIMATIC ET 200S 2AI I 4WIRE ST (6ES7 134-4GB11-0AB0)
- **Range**: 4-20mA
- **Connection**: 4-wire configuration
## Interface
### Input
| Parameter | Type | Description |
|-----------|------|-------------|
| `i_IW_Analog` | WORD | Raw analog input value (PEW) |
### Outputs
| Parameter | Type | Description |
|-----------|------|-------------|
| `o_CurrentMa` | REAL | Current value in mA |
| `o_ErrorCode` | INT | Error code (0=OK, higher values = higher severity) |
## Error Codes (Priority Order)
| Code | Severity | Description | Current Output |
|------|----------|-------------|----------------|
| 0 | OK | Normal range (4-20mA) | Calculated value |
| 1 | WARNING | Overload range (20-22.8mA) | Calculated value |
| 2 | WARNING | Underload range (3.9995-4mA) | Calculated value |
| 10 | ERROR | Overflow (>22.8mA) | 22.8142mA |
| 11 | ERROR | Underflow (<3.9995mA) | 3.9995mA |
| 20 | CRITICAL | Wire Break (32767 value) | 22.8142mA |
| 99 | CRITICAL | Undefined range | 3.9995mA |
## Error Recovery Behavior
### Cooldown Mechanism
- When a critical error (code ≥10) is resolved, a **500ms cooldown** period begins
- During cooldown: previous error code and current value are maintained
- After cooldown: automatic reset to normal operation
- No manual reset required
### Current Value Logic
- **Normal operation**: Calculated using linear conversion: `mA = 4 + (AnalogValue / 27648) * 16`
- **Error conditions**: Fixed logical values based on error type
- **Value limits**: Always constrained between 3.9995mA and 22.8142mA
## Usage Example
```scl
// Instance declaration
VAR
AnalogInput_Measurement : FB_AnalogMeasurement;
InputValue : WORD;
CurrentMa : REAL;
ErrorStatus : INT;
END_VAR
// Function block call
AnalogInput_Measurement(
i_IW_Analog := InputValue, // Connect to PEW address
o_CurrentMa => CurrentMa, // Current in mA
o_ErrorCode => ErrorStatus // Error monitoring
);
// Error handling example
CASE ErrorStatus OF
0: // Normal operation
1,2: // Warnings - operation continues
10,11,20,99: // Critical errors - check wiring/module
END_CASE;
```
## Key Features
- **Simplified operation**: No diagnostic configuration required
- **Automatic recovery**: 500ms cooldown with self-reset
- **Prioritized error handling**: ELSIF logic ensures most critical errors take precedence
- **Logical fallback values**: Sensible current values during error conditions
- **No memory**: Stateless operation after cooldown period
```pascal
// FB2121 - Simplified 4-20mA Analog Measurement Management
// Required hardware configuration:
// - SIMATIC ET 200S 2AI I 4WIRE ST (6ES7 134-4GB11-0AB0)
// - Range: 4-20mA
FUNCTION_BLOCK "FB_AnalogMeasurement"
TITLE = 'Simplified 4-20mA analog input management'
AUTHOR : tk
FAMILY : Process
VAR_INPUT
i_IW_Analog : WORD; // Analog input value (PEW)
END_VAR
VAR_OUTPUT
o_CurrentMa : REAL; // Current value in mA
o_ErrorCode : INT; // Error code (0=OK, increasing priority by severity)
END_VAR
VAR
// Internal variables
AnalogValueInt : INT; // Analog value converted to INT
CurrentErrorCode : INT; // Current error code
PreviousErrorCode : INT; // Previous error code for cooldown
PreviousCurrentMa : REAL; // Previous current value for cooldown
// Timer for 500ms cooldown
CooldownTimer : TON;
CooldownTime : TIME := T#500MS; // 500ms cooldown
InCooldown : BOOL; // Flag indicating if in cooldown
END_VAR
VAR_TEMP
TempReal : REAL; // Temporary value for floating point calculations
END_VAR
CONST
// Constants definition according to 4-20mA analog module documentation
OVERFLOW_VALUE := 32767; // 7FFFH - Overflow/wire break value
UNDERFLOW_VALUE := -32768; // 8000H - Underflow value
UNDERFLOW_DIAG := -32767; // 8001H - Underflow with diagnostics enabled
MAX_NORMAL := 27648; // 6C00H - 20mA (maximum value in nominal range)
MIN_NORMAL := 0; // 0000H - 4mA (minimum value in nominal range)
RANGE_HIGH := 32511; // 7EFFH - 22.8142mA (overload range start)
RANGE_LOW := -1; // FFFFH - 3.9995mA (underload range end)
// Logical values for extreme conditions
OVERFLOW_MA_VALUE := 22.8142; // mA value for overflow
UNDERFLOW_MA_VALUE := 3.9995; // mA value for underflow
END_CONST
BEGIN
// Convert WORD value to INT for processing
AnalogValueInt := WORD_TO_INT(i_IW_Analog);
// ========================================================================================
// ANALOG VALUE ANALYSIS AND ERROR CODE DETERMINATION (ELSIF PRIORITY)
// ========================================================================================
// Error codes by priority (0=OK, increasing numbers = higher severity):
// 0 = OK - Nominal range (4-20mA)
// 1 = WARNING - Overload range (20-22.8mA)
// 2 = WARNING - Underload range (3.9995-4mA)
// 10 = ERROR - Overflow (>22.8mA or 32767)
// 11 = ERROR - Underflow (<3.9995mA or negative values)
// 20 = CRITICAL - Wire Break (32767 confirmed)
// 99 = CRITICAL - Undefined range
// ELSIF list with concurrent error priority (from most severe to least severe)
IF AnalogValueInt = OVERFLOW_VALUE THEN // 32767 (7FFFH) - Most critical
CurrentErrorCode := 20; // Wire Break
ELSIF AnalogValueInt = UNDERFLOW_VALUE OR
AnalogValueInt = UNDERFLOW_DIAG THEN // -32768 or -32767
CurrentErrorCode := 11; // Critical underflow
ELSIF AnalogValueInt > RANGE_HIGH THEN // > 32511 (overflow)
CurrentErrorCode := 10; // Overflow
ELSIF AnalogValueInt < RANGE_LOW THEN // < -1 (underflow)
CurrentErrorCode := 11; // Underflow
ELSIF AnalogValueInt > MAX_NORMAL AND
AnalogValueInt <= RANGE_HIGH THEN // Overload range
CurrentErrorCode := 1; // Warning overload
ELSIF AnalogValueInt < MIN_NORMAL AND
AnalogValueInt >= RANGE_LOW THEN // Underload range
CurrentErrorCode := 2; // Warning underload
ELSIF AnalogValueInt >= MIN_NORMAL AND
AnalogValueInt <= MAX_NORMAL THEN // Nominal range
CurrentErrorCode := 0; // OK
ELSE // Any other case
CurrentErrorCode := 99; // Undefined range
END_IF;
// ========================================================================================
// 500MS COOLDOWN MANAGEMENT
// ========================================================================================
// Detect transition from error to no-error to start cooldown
IF PreviousErrorCode >= 10 AND CurrentErrorCode < 10 THEN
InCooldown := TRUE;
CooldownTimer(IN := TRUE, PT := CooldownTime);
END_IF;
// Manage cooldown timer
CooldownTimer(IN := InCooldown, PT := CooldownTime);
// End cooldown when timer expires
IF CooldownTimer.Q THEN
InCooldown := FALSE;
CooldownTimer(IN := FALSE, PT := CooldownTime);
END_IF;
// ========================================================================================
// ERROR CODE AND CURRENT VALUE ASSIGNMENT
// ========================================================================================
// If in cooldown, maintain previous error and current
IF InCooldown THEN
o_ErrorCode := PreviousErrorCode;
o_CurrentMa := PreviousCurrentMa;
ELSE
// Assign current error code
o_ErrorCode := CurrentErrorCode;
// Assign current value based on detected error
IF CurrentErrorCode = 20 OR CurrentErrorCode = 10 THEN // Wire Break or Overflow
o_CurrentMa := OVERFLOW_MA_VALUE; // 22.8142mA
ELSIF CurrentErrorCode = 11 THEN // Underflow
o_CurrentMa := UNDERFLOW_MA_VALUE; // 3.9995mA
ELSIF CurrentErrorCode = 99 THEN // Undefined range
o_CurrentMa := UNDERFLOW_MA_VALUE; // 3.9995mA (safe value)
ELSE
// Normal calculation for OK and WARNING ranges: mA = 4 + (AnalogValueInt / 27648) * 16
TempReal := INT_TO_REAL(AnalogValueInt);
o_CurrentMa := 4.0 + (TempReal / INT_TO_REAL(MAX_NORMAL)) * 16.0;
// Limit to logical maximum and minimum values
IF o_CurrentMa < UNDERFLOW_MA_VALUE THEN
o_CurrentMa := UNDERFLOW_MA_VALUE; // Minimum: 3.9995mA
ELSIF o_CurrentMa > OVERFLOW_MA_VALUE THEN
o_CurrentMa := OVERFLOW_MA_VALUE; // Maximum: 22.8142mA
END_IF;
END_IF;
// Save values for next cycle
PreviousErrorCode := CurrentErrorCode;
PreviousCurrentMa := o_CurrentMa;
END_IF;
END_FUNCTION_BLOCK
```

View File

@ -0,0 +1,791 @@
## Información del Proyecto
- **Cliente**: AJETHAI CO., LTD. (Tailandia)
- **Proyecto**: 169423.A.2.2
- **Alcance**: Reemplazo de flowmeters (80000SEV909, 80000SEV081 & 80000SEV079)
- **Máquina**: Mixer STARBLEND PLUS D7 # SSAE0340
- **Valor**: €56,017 / €23,450.40
- **Referencia**: E5.007172
## Cronología de Eventos
### **Septiembre 2024**
- **02/09/2024**: Cliente emite POs:
- PO #38204 (Partes)
- PO #38205 (Intervención)
### **Octubre 2024**
- **25/10/2024**: Fecha de entrega comprometida (CRD)
- **Octubre**: Gestión de términos de pago
- Negociación de términos: cambio de "within a week" a 30 días
- Confirmación: 100% del precio total pagadero dentro de 30 días
### **Noviembre 2024**
- **06/11/2024**: Fecha FCA Parma confirmada
- **Noviembre**: Lanzamiento del proyecto
- Estado: LAUNCHED
- PM Supply asignado: Pietro Bruno
- Creación de SO (Sales Order)
### **Proceso de Ejecución**
#### **Fase de Planificación**
- **Project Manager Supply**: Pietro Bruno (inicial) → Luca Di Gioia (reasignado)
- **Services Project Manager**: Remi Courtiade
- **Coordinación Regional**: Chaiwat Amnuaisin
#### **Desarrollo y Validación**
- **Risk Assessment**: Completado con puntos específicos para PM Service
- **DV (Delivery Validation)**: Organizada por la zona
- Propósito: Verificar condiciones de la máquina antes de la intervención
- Razón: Información limitada de mantenimiento, posibles modificaciones locales del cliente
#### **Problemas Técnicos Identificados**
- **Software Backup**: Ingeniero en sitio detecta diferencias entre:
- Software presente en la máquina
- Software enviado previamente por el cliente
- **Acción requerida**: Alessandro Passera (TD) debe verificar si las diferencias afectarán la instalación
#### **Factory Acceptance Test (FAT)**
- **Resultado**: FAT exitoso
- **Status**: Mercancías listas en planta de Parma
- **Documentos**: Preparados para organizar recogida
#### **Gestión de Envío**
- **Método**: Flete aéreo (airfreight)
- **Logística**: Coordinación con Geodis para determinar si usar DHL
- **Costos de embalaje**: Añadidos al PO
### **Puntos Críticos del Proyecto**
#### **Riesgos Identificados**
1. **Carga de trabajo actual** y **escasez de materias primas**
2. **Componentes eléctricos** principalmente afectados
3. **Modificaciones locales** del cliente en la máquina
#### **Información Técnica Requerida**
- **PLC software backup** (más importante para cambio de flowmeters)
- **Fotos de cables y conectores** de los flowmeters
- **Verificación de compatibilidad** de cables existentes
#### **Timeline de Instalación**
- **Planificación**: Instalación prevista en 4 semanas desde la comunicación
- **Pendiente**: Confirmación de fecha específica con cliente
- **Coordinación**: Con equipo de planificación para asignación de ingeniero
### **Estado Final (09/06/2025)**
- **Comunicación de Alessandro Passera**:
- No hay archivo adjunto en el email
- Esperando software backup para comparación de versiones
- **Próximos pasos**: Verificación de compatibilidad de software antes de la instalación
## Actores Principales
|Nombre|Rol|Responsabilidad|
|---|---|---|
|**Remi Courtiade**|Services Project Manager|Gestión general del proyecto|
|**Luca Di Gioia**|Project Manager Supply|Suministro y coordinación|
|**Pietro Bruno**|Project Manager Supply (inicial)|Lanzamiento del proyecto|
|**Alessandro Passera**|Technical Department|Verificación de software|
|**Chaiwat Amnuaisin**|Regional Coordinator|Coordinación con cliente|
|**Cholpassorn Thananakruangsri**|Services PM Assistant|Documentación y POs|
## Lecciones Aprendidas
- Importancia de la validación previa (DV) en proyectos con información limitada de mantenimiento
- Necesidad de verificación exhaustiva de software antes de la instalación
- Coordinación efectiva entre equipos técnicos y comerciales para gestión de riesgos
# Índice de Mensajes
- 09-06-2025 - Passera, Alessandro - [[Cronología del Proyecto 169423 - AJETHAI CO., LTD.#R: NOTICE OF GOODS READY ASSIGN ORDER 169423 - Won Opportunity - Services- 169423.A.2.2 - AJETHAI CO., LTD. - Thailand - Filling - Service CRM:0037299==CHECK PAYMENT TERM==E5.007172|R-NOTICE-OF-GOODS-READY-ASSIGN-ORDER-169423---Won-Opportunity---Services--169423A22---AJETHAI-CO-LTD---Thailand---Filling---Service-CRM0037299CHECK-PAYMENT-TERME5007172]]
---
+ 168205d5e00fbfeebaf1eadffd340445
### R: NOTICE OF GOODS READY ASSIGN ORDER 169423 - Won Opportunity - Services- 169423.A.2.2 - AJETHAI CO., LTD. - Thailand - Filling - Service CRM:0037299==CHECK PAYMENT TERM==E5.007172
- 09-06-2025
Dear all, into the email was not present any file attached .
In order to compare the software version we will wait the software backup.
Best regards
Alessandro PASSERA
Tel: +39 0521 999 319
Mob: +39 3459439668
Fax : +39 0521 999511
www.sidel.com
General
Ciao Alessandro,
An engineer went on site to make the DV and notice some differences on the software present on the machine and the software that customer sent us.
Please find in attached the software backup that the engineer sent.
Can you please check that the differences will not create issue on the new software, and in case its need correct the new software.
Many thanks
Best Regards,
LUCA DI GIOIA
PROJECT MANAGER SUPPLY
Sidel Group
Sidel SpA
Via La Spezia 241/A
43124 Parma - Italy
Mail:
General
Hello Luca,
Any update on this topic?
Thanks in advance,
Best regards.
Remi
General
***
Subject: RE: NOTICE OF GOODS READY ASSIGN ORDER 169423 - Won Opportunity - Services- 169423.A.2.2 - AJETHAI CO., LTD. - Thailand - Filling - Service CRM:0037299==CHECK PAYMENT TERM==E5.007172
Dear Luca,
We will make the installation of this project in 4 weeks.
Did the TD update you about the last version of the software backup send by the engineer. Will it impact the installation?
Thanks in advance,
Best regards.
Remi
***
Subject: R: NOTICE OF GOODS READY ASSIGN ORDER 169423 - Won Opportunity - Services- 169423.A.2.2 - AJETHAI CO., LTD. - Thailand - Filling - Service CRM:0037299==CHECK PAYMENT TERM==E5.007172
Dear Remi,
Ill check with TD.
Many thanks
Best Regards,
LUCA DI GIOIA
PROJECT MANAGER SUPPLY
Sidel Group
Sidel SpA
Via La Spezia 241/A
43124 Parma - Italy
Mail:
General
Hello Luca,
An engineer went on site to make the DV and notice some differences on the software present on the machine and the software that customer sent us.
Please find in attached the software backup that the engineer sent.
Can you please check that the differences will not create issue on the new software, and in case its need correct the new software.
Thanks in advance,
Best regards.
Remi
General
***
Subject: R: NOTICE OF GOODS READY ASSIGN ORDER 169423 - Won Opportunity - Services- 169423.A.2.2 - AJETHAI CO., LTD. - Thailand - Filling - Service CRM:0037299==CHECK PAYMENT TERM==E5.007172
Dear Remi,
please could you me update on the pick up of the goods ?
Many thanks
Best Regards,
LUCA DI GIOIA
PROJECT MANAGER SUPPLY
Sidel Group
Sidel SpA
Via La Spezia 241/A
43124 Parma - Italy
Mail:
General
Dears
Please see attached the documents recap.
Many thanks
Best Regards,
LUCA DI GIOIA
PROJECT MANAGER SUPPLY
Sidel Group
Sidel SpA
Via La Spezia 241/A
43124 Parma - Italy
Mail:
Dear Remi,
Please find attached the revised PO with packing cost for your reference.
Best regards,
Cholpassorn Thananakruangsri (Ang)
Services Project Management Assistant
Sidel Group
Sidel South Asia-Pacific Ltd.,
18th Floor (Zone C, D, E), Thanapoom Tower,
1550 New Petchburi Rd, Makkasan,
Rajthevee, Bangkok 10400, Thailand
www.sidel.com
Discover our online Option & Upgrade catalogue @
www.options-upgrades.sidel.com
General
***
Subject: RE: NOTICE OF GOODS READY ASSIGN ORDER 169423 - Won Opportunity - Services- 169423.A.2.2 - AJETHAI CO., LTD. - Thailand - Filling - Service CRM:0037299==CHECK PAYMENT TERM==E5.007172
Hello Ang,
Can you please help to modify the PO in attached and add the packing cost.
For the shipment we will go by airfreight so no need to modify the delivery address.
Thanks in advance,
Best regards.
Remi
General
***
Subject: RE: NOTICE OF GOODS READY ASSIGN ORDER 169423 - Won Opportunity - Services- 169423.A.2.2 - AJETHAI CO., LTD. - Thailand - Filling - Service CRM:0037299==CHECK PAYMENT TERM==E5.007172
Hello Luca,
I am checking with Geodis if we will used DHL or not this shipment.
As soon as I have the answer, I will validate the draft invoice or modified the PO.
Have a nice day,
Best regards.
Remi
***
Subject: R: NOTICE OF GOODS READY ASSIGN ORDER 169423 - Won Opportunity - Services- 169423.A.2.2 - AJETHAI CO., LTD. - Thailand - Filling - Service CRM:0037299==CHECK PAYMENT TERM==E5.007172
Dear Remy,
please could you validate and align the PO to the draft ?
thanks
Many thanks
Best Regards,
LUCA DI GIOIA
PROJECT MANAGER SUPPLY
Sidel Group
Sidel SpA
Via La Spezia 241/A
43124 Parma - Italy
Mail:
General
Dear Remi,
please see attached the draft invoice to validate to proceed with final invoice.
Please align the Po with the draft.
Im waiting your feedback
Many thanks
Best Regards,
LUCA DI GIOIA
PROJECT MANAGER SUPPLY
Sidel Group
Sidel SpA
Via La Spezia 241/A
43124 Parma - Italy
Mail:
Dear Remi,
FAT with positive exit of the goods has been done.
Please see attached the documents to organize the pick-up.
The goods are ready in Parma plant.
Many thanks
Best Regards,
LUCA DI GIOIA
PROJECT MANAGER SUPPLY
Sidel Group
Sidel SpA
Via La Spezia 241/A
43124 Parma - Italy
Mail:
Dear Remi
Ill check and Ill revert you asap
Please take note that project has been reassigned to
@Di Gioia, Cosimo Luca
s
Sara Signorini
Project Management Supply Manager
Line Solution Projects
Sidel Group
Sidel SpA
Via La Spezia 241/A
43124 Parma - Italy
Tel.: +39 0521 999 761
General
Hello Sara,
As my email to Pietro didnt reach him can you please help on this project?
Thanks in advance,
Best regards.
Remi
General
Passera, Alessandro <Alessandro.Passera@sidel.com>; Amnuaisin, Chaiwat <Chaiwat.Amnuaisin@sidel.com>
***
Subject: RE: ASSIGN ORDER 169423 - Won Opportunity - Services- 169423.A.2.2 - AJETHAI CO., LTD. - Thailand - Filling - Service CRM:0037299==CHECK PAYMENT TERM==E5.007172
Ciao Pietro,
Can you please confirm the FCA date on the 06/11/2024.
Thanks in advance,
Best regards,
Remi
***
Subject: R: ASSIGN ORDER 169423 - Won Opportunity - Services- 169423.A.2.2 - AJETHAI CO., LTD. - Thailand - Filling - Service CRM:0037299==CHECK PAYMENT TERM==E5.007172
Dears, for change flowmeters the most important info are the PLC software backup.
Adding on it some picture related the cable and connectors of the Flowmeters in order to check if need new cable or not.
For automation side we do not need any others details, maybe from mechanical side need more info but you have to refer to the colleague for mechanical
office.
Best regards
Alessandro PASSERA
Tel: +39 0521 999 319
Mob: +39 3459439668
Fax : +39 0521 999511
www.sidel.com
General
Passera, Alessandro <Alessandro.Passera@sidel.com>
@Passera, Alessandro
the zone is organising a DV on its own, for this specific order, do you need the technician who will deal with this DV to check particular areas of the machine in addition to what is already requested in the risk assessment file ?
Thx
BR,
Pietro Bruno
Project Manager Supply
Line Solutions Projects
SIDEL SPA
Via La Spezia 241/A, 43126 Parma, ITALY
Tel:
+39 0521 999 664
Mob: +39 345 0689 767
www.sidel.com
General
Sacchi, Stefania[External] <Stefania.Sacchi.external@sidel.com>
Ciao Pietro,
We dont have much maintenance info of this machine, this customer is minimalist. Maintenance has been done by customers, there might be some local
modification done by customers. To avoid the issue during intervention, we proposed the customer to perform DV. After DV we will propose an overhaul or at least to have customers have our recommended spare parts in the stock.
In case you have any specific points/ areas related to this project required the FSE to focus / pay special attention during the DV., kindly advice.
Thank you.
Best regards,
Chaiwat Amnuaisin
General
Sacchi, Stefania[External] <Stefania.Sacchi.external@sidel.com>
***
Subject: R: ASSIGN ORDER 169423 - Won Opportunity - Services- 169423.A.2.2 - AJETHAI CO., LTD. - Thailand - Filling - Service CRM:0037299==CHECK PAYMENT TERM==E5.007172
Ciao Remi,
Why did you organize a DV?
I dont see it specified in the offer and in the risk assessment file.
BR,
Pietro Bruno
Project Manager Supply
Line Solutions Projects
SIDEL SPA
Via La Spezia 241/A, 43126 Parma, ITALY
Tel:
+39 0521 999 664
Mob: +39 345 0689 767
www.sidel.com
General
Passera, Alessandro <Alessandro.Passera@sidel.com>; Sacchi, Stefania[External] <Stefania.Sacchi.external@sidel.com>
Ciao Pietro,
I will ask customer for the software and the video.
For this project we informed customer that we will make a DV before the installation. Can you please indicate any specific point that need to be check
and focus.
For the intervention, no date planned yet, I will check with customer when they want to have it and check with planning team who is available. Once
I have the engineers name we can planned the meeting.
Have a nice day,
Best regards.
Remi
General
Sacchi, Stefania[External] <Stefania.Sacchi.external@sidel.com>
***
Subject: R: ASSIGN ORDER 169423 - Won Opportunity - Services- 169423.A.2.2 - AJETHAI CO., LTD. - Thailand - Filling - Service CRM:0037299==CHECK PAYMENT TERM==E5.007172
Dear Remi,
PROJECT REFERENCE E5.007172 (Attached you will also find the risk assessment, I ask you to check the points where the PMService is the Owner)
BR,
Pietro Bruno
Project Manager Supply
Line Solutions Projects
SIDEL SPA
Via La Spezia 241/A, 43126 Parma, ITALY
Tel:
+39 0521 999 664
Mob: +39 345 0689 767
www.sidel.com
General
Thanks Pietro, please keep Remi in the loop as he is the SPM assigned for this project. Thank you.
Best regards,
Chaiwat Amnuaisin
General
***
Subject: R: ASSIGN ORDER 169423 - Won Opportunity - Services- 169423.A.2.2 - AJETHAI CO., LTD. - Thailand - Filling - Service CRM:0037299==CHECK PAYMENT TERM==
Dear Chaiwat,
PROJECT STATUS : LAUNCHED
FCA PARMA DELIVERY DATE 06/11/2024
PROJECT REFERENCE E5.007172
BR,
Pietro Bruno
Project Manager Supply
Line Solutions Projects
SIDEL SPA
Via La Spezia 241/A, 43126 Parma, ITALY
Tel:
+39 0521 999 664
Mob: +39 345 0689 767
www.sidel.com
General
Bruno, Pietro <Pietro.Bruno@sidel.com>
Dear Chaiwat,
Project : LI_SHORT
Status of the project : TO BE LAUNCHED
Scope of Supply: REPLACEMENT OF FLOW METERS 80000SEV909, 80000SEV081 & 80000SEV079
Machine involved: SSAE0340
Assigned PMS : PIETRO BRUNO
ZRD: 06/11/2024
ESTIMATED PDD FCA PARMA: 06/11/2024
NOTE: THANKS TO INFORM US ABOUT THE PLANNED INSTALLATION DATE OF THE PROJECT IN SUBJECT AS SOON AS IT WILL BE PLANNED
IMPORTANT:
DUE TO THE ACTUAL WORKLOAD AND RAW MATERIALS SHORTAGE, MAINLY IMPACTING ELECTRICAL COMPONENTS, THE WEEKS
INDICATED IN THE OFFER AND PDD ARE AT RISK.
NEED TO PLAN THE BOM AVAILABILITY DATE, THEN BASED ON SUPPLIERS CONFIRMATIONS WE WILL ADJUST THE TARGET IF NEEDED.
FOR THE TIME BEING CONSIDER THE ABOVE PLANNING.
I remain at your disposal for any further details
Kind regards
Sara
Sara Signorini
Project Management Supply Manager
Line Solution Projects
Sidel Group
Sidel SpA
Via La Spezia 241/A
43124 Parma - Italy
Tel.: +39 0521 999 761
General
Dear Team,
As Remi is on leave, could you help to manage this order pls?
We have received the PO for this project.
SO waiting for Sales admin
Project no. H5.012882
Network 5040590
Material no. EQPT24163
Internal PO 4501782678
CRD 25 Oct 2024
| Material no | DESCRIPTION | PRU | 20% |
|-------------|---------------------------------------|-------------|-------------|
| EQPT24163 | Flow meters installed on the SSAE0340 | € 19,542.00 | € 23,450.40 |
| | | TOTAL | € 23,450.40 |
I am attaching the following documents:
Product offerInternal PO
Kindly acknowledge the order by return with delivery date.
Thanks
Best regards,
Chaiwat Amnuaisin
General
***
Subject: RE: Won Opportunity - Services- 169423.A.2.2 - AJETHAI CO., LTD. - Thailand - Filling - Service CRM:0037299==CHECK PAYMENT TERM==
Dear PChaiwat/Remi,
FYI.
SO waiting for Sales admin
Project no. H5.012882
Network 5040590
Material no. EQPT24163
Internal PO 4501782678 Leadtime: 25 Oct 2024
| Material no | DESCRIPTION | PRU | 20% |
|-------------|---------------------------------------|-------------|-------------|
| EQPT24163 | Flow meters installed on the SSAE0340 | € 19,542.00 | € 23,450.40 |
| | | TOTAL | € 23,450.40 |
Best regards,
Cholpassorn Thananakruangsri (Ang)
Services Project Management Assistant
Sidel Group
Sidel South Asia-Pacific Ltd.,
18th Floor (Zone C, D, E), Thanapoom Tower,
1550 New Petchburi Rd, Makkasan,
Rajthevee, Bangkok 10400, Thailand
www.sidel.com
Discover our online Option & Upgrade catalogue @
www.options-upgrades.sidel.com
General
***
Subject: RE: Won Opportunity - Services- 169423.A.2.2 - AJETHAI CO., LTD. - Thailand - Filling - Service CRM:0037299==CHECK PAYMENT TERM==
Dear Isabelle,
Could you please create SO under pre-offer no. 211106074?
Customer PO: 38204 dated: 02.09.2024 for Parts
38205 dated: 02.09.2024 for intervention
Note:
Payment terms:
100% of the total contract price shall be paid by bank transfer within 30 days from Sidel invoice date.
Thank you.
Best regards,
Cholpassorn Thananakruangsri (Ang)
Services Project Management Assistant
Sidel Group
Sidel South Asia-Pacific Ltd.,
18th Floor (Zone C, D, E), Thanapoom Tower,
1550 New Petchburi Rd, Makkasan,
Rajthevee, Bangkok 10400, Thailand
www.sidel.com
Discover our online Option & Upgrade catalogue @
www.options-upgrades.sidel.com
Warasin, Woranitcha <Woranitcha.Warasin@sidel.com>
***
Subject: RE: Won Opportunity - Services- 169423.A.2.2 - AJETHAI CO., LTD. - Thailand - Filling - Service CRM:0037299==CHECK PAYMENT TERM==
Hi Chaiwat,
Ajethai is paying at 30 days
Best regards.
Isabelle Gruchy
Sales Administration Manager
Mobile : +33 6 13 18 05 22
Cash collection/Administrative treatment of Exports Financings
Sales Administration Dpt
General
Cc : Courtiade, Remi [EXTERNAL] <remi.courtiade.external@sidel.com>; Thananakruangsri, Cholpassorn <Cholpassorn.Thananakruangsri@sidel.com>;
Warasin, Woranitcha <Woranitcha.Warasin@sidel.com>
Objet : RE: Won Opportunity - Services- 169423.A.2.2 - AJETHAI CO., LTD. - Thailand - Filling - Service CRM:0037299==CHECK PAYMENT TERM==
Hi Isabelle,
Do you agree with the PT? Thanks,
Best regards,
Chaiwat Amnuaisin
General
***
Subject: Re: Won Opportunity - Services- 169423.A.2.2 - AJETHAI CO., LTD. - Thailand - Filling - Service CRM:0037299==CHECK PAYMENT TERM==
Dear P Chaiwat,
We can offer 30 days credit after shipment because their overdue is clean.
Regards,
Joy
Get Outlook for iOS
General
***
Subject: RE: Won Opportunity - Services- 169423.A.2.2 - AJETHAI CO., LTD. - Thailand - Filling - Service CRM:0037299==CHECK PAYMENT TERM==
Hi NAng,
The credit 30 days should be at in our payment term, so changing from within a week to 30 days.
@Warasin, Woranitcha
Can you confirm pls?
Thanks.
Best regards,
Chaiwat Amnuaisin
General
Warasin, Woranitcha <Woranitcha.Warasin@sidel.com>
***
Subject: RE: Won Opportunity - Services- 169423.A.2.2 - AJETHAI CO., LTD. - Thailand - Filling - Service CRM:0037299==CHECK PAYMENT TERM==
Dear PChaiwat,
Could you please confirm the payment term?
Thank you ka.
Best regards,
Cholpassorn Thananakruangsri (Ang)
Services Project Management Assistant
Sidel Group
Sidel South Asia-Pacific Ltd.,
18th Floor (Zone C, D, E), Thanapoom Tower,
1550 New Petchburi Rd, Makkasan,
Rajthevee, Bangkok 10400, Thailand
www.sidel.com
Discover our online Option & Upgrade catalogue @
www.options-upgrades.sidel.com
General
***
Subject: FW: Won Opportunity - Services- 169423.A.2.2 - AJETHAI CO., LTD. - Thailand - Filling - Service CRM:0037299
Hello NAng,
On behalf of Remi, could you help to register this order pls?
ID Invoice: 1767954
ID delivery: 1767954
Machine: Mixer STARBLEND PLUS D7 # SSAE0340
CRD: 25-Oct-2024
PO No. Material PO #38204. I&C PO #38205
PM Fee: 2,054 Eur
Attaching customer PO (x2), offer from BU, Final offer submitted to customer and Costing table.
Thank you krub
Best regards,
Chaiwat Amnuaisin
General
Warasin, Woranitcha <Woranitcha.Warasin@sidel.com>;
Courtiade, Remi [EXTERNAL] <remi.courtiade.external@sidel.com>;
Strzerzynski, Cyril <cyril.strzerzynski@sidel.com>
***
Subject: Won Opportunity - Services- 169423.A.2.2 - AJETHAI CO., LTD. - Thailand - Filling - Service CRM:0037299
Obs- obsolescence FillingAJETHAI CO., LTD.169423.A.2.2 - FIL_OCM001 NEw EH Flow Meter for Mixer -
Offer link
Services Manager:
Woranitcha Warasin
o
Project Manager: Remi Courtiade
o
Opportunity Amount: 56 017 €
Reason for winning:
Any Other Reason
o
Reason for winning 2:
o
Winning comments:
o
Competitor: NO COMPETITOR
o
Competitor value:
o
Reasons for customer investment: Replacement
Kind regards,
CEP Team
This e-mail may contain confidential and/or privileged information. If you are not the intended recipient (or have received this e-mail in error), please notify the sender immediately and destroy this e-mail. Any unauthorized copying, disclosure or distribution
of the material in this e-mail is strictly forbidden.
---

View File

@ -178,3 +178,5 @@
| | | |
| | | |
| | | |
| | | |
| | | |

View File

@ -0,0 +1,6 @@
| devenv | sdds | sds | false |
| ------------------------- | ------------ | ------------------ | ----- |
| Obsidian | sdsd | false | |
| devenv | Ctrl+T | Buscar | true |
| Siemens.Automation.Portal | F7 | Buscar Bloques | false |
| Cursor | Ctrl+Shift+P | Paleta de Comandos | false |