Obsidean_VM/01-Documentation/Python/Scripts Python/XML to SCL Siemens/LAD Descriptions from XDA f...

56 lines
8.8 KiB
Markdown

Objeto de TIA Portal Openness : [TIA Portal Information System](https://docs.tia.siemens.cloud/r/es-es/v20/tia-portal-openness-api-para-la-automatizacion-de-flujos-de-trabajo-de-ingenieria/tia-portal-openness-api/objeto-de-tia-portal-openness)
**Metodología para esta tabla:**
* Me centraré en los `Name` de `Part` que son comúnmente usados o deducibles para elementos LAD estándar.
* Incluiré elementos estructurales (`Wire_T`, `Network_T`).
* Consideraré los `TemplateValue Name="..." Type="..."` que ayudan a especializar un `Part` genérico.
* Mencionaré cuando la `Interface` (de `SW.InterfaceSections_v5.xlm.txt`) es crucial para definir los pines de un bloque.
**Tabla de Elementos LAD/FBD Derivados de los XSDs**
| Elemento XML Principal / `Part Name` (o inferido) | Elemento LAD/FBD Típico | Descripción / Función | Pines/Parámetros Clave (XML) | Operando Asociado (XML `Access`) / Tipo de Instancia | Referencia XSD Primaria |
|---|---|---|---|---|---|
| **Estructura de Red** | | | | | |
| `Network_T` (contenido dentro de `FlgNet` en `CompileUnit`) | Red (Network) | Contenedor para una secuencia lógica de LAD/FBD. | `Parts` (lista de elementos), `Wires` (lista de conexiones) | - | `SW.PlcBlocks.LADFBD_v4.xsd` |
| `Wire_T` | Cable (Wire) | Conecta pines de diferentes `Part`s. | `NameCon` (pin/UID origen), `IdentCon` (pin/UID destino), `Points` (para ruta visual) | - | `SW.PlcBlocks.LADFBD_v4.xsd` |
| `Powerrail` (como origen en `Wire_T`) | Riel Izquierdo (Power Rail) | Inicio del flujo de potencia en la red. | - | - | `SW.PlcBlocks.LADFBD_v4.xsd` |
| **Elementos Lógicos LAD Básicos (`Part_T`)** | | | | | |
| `Part` con `Name="Contact"` | Contacto | Evalúa una condición booleana. | `operand` (pin para el valor lógico), `EN`, `ENO`. <br> `TemplateValue Name="Type"`: "NormallyOpen", "NormallyClosed", "PositiveTransition", "NegativeTransition", "Comparator". <br> `TemplateValue Name="Card"` (Cardinalidad) | `Access` a `BOOL` | `SW.PlcBlocks.LADFBD_v4.xsd` |
| `Part` con `Name="Coil"` | Bobina | Asigna un valor booleano. | `operand` (pin para el valor lógico), `EN`, `ENO`. <br> `TemplateValue Name="Type"`: "Assign", "Set", "Reset", "PositivePulse", "NegativePulse". <br> `TemplateValue Name="Card"` | `Access` a `BOOL` | `SW.PlcBlocks.LADFBD_v4.xsd` |
| `Part` con `Name="Negation"` | Bobina de Negación / NOT | Invierte el estado lógico. | `IN` (entrada), `OUT` (salida) | - | `SW.PlcBlocks.LADFBD_v4.xsd` |
| **Elementos Estructurales LAD (`Part_T`)** | | | | | |
| `Part` con `Name="OpenBranch"` | Abrir Rama | Inicia una rama paralela. | - <br> `TemplateValue Name="Type"`: "OR" (típicamente) | - | `SW.PlcBlocks.LADFBD_v4.xsd` |
| `Part` con `Name="CloseBranch"` | Cerrar Rama | Cierra una rama paralela. | - | - | `SW.PlcBlocks.LADFBD_v4.xsd` |
| **Bloques de Instrucción Comunes (`Part_T` con `Name` específico o genérico + `Interface`)** | | | | | |
| `Part` con `Name="ADD"`, `"SUB"`, `"MUL"`, `"DIV"` (o `Name="Box"`/`"InstructionBox"` con interfaz correspondiente) | Bloque Aritmético | Realiza operaciones aritméticas. | `EN`, `ENO`. <br> `Interface`: `IN1`, `IN2` (entradas), `OUT` (salida). Tipos: `INT`, `DINT`, `REAL`, etc. | `Access` a numéricos | `SW.PlcBlocks.LADFBD_v4.xsd`, `SW.InterfaceSections_v5.xlm.txt` |
| `Part` con `Name="MOVE"` (o `Name="Box"`/`"InstructionBox"` con interfaz correspondiente) | Bloque de Movimiento | Copia un valor a otro. | `EN`, `ENO`. <br> `Interface`: `IN` (entrada), `OUT` (salida). Tipo: `ANY`. | `Access` a variables | `SW.PlcBlocks.LADFBD_v4.xsd`, `SW.InterfaceSections_v5.xlm.txt` |
| `Part` con `Name="CMP"` (o `Name="Compare"`, o `Name="Box"` con interfaz de comparación) | Bloque de Comparación | Compara dos valores. | `EN`, `ENO`. <br> `Interface`: `IN1`, `IN2` (entradas), `OUT` (salida `BOOL`). <br> `TemplateValue Name="Mode"`: "EQ", "NE", "GT", "GE", "LT", "LE". | `Access` a numéricos/comparables | `SW.PlcBlocks.LADFBD_v4.xsd`, `SW.InterfaceSections_v5.xlm.txt` |
| `Part` con `Name="CONV"` (o `Name="Box"` con interfaz de conversión) | Bloque de Conversión | Convierte un valor de un tipo a otro. | `EN`, `ENO`. <br> `Interface`: `IN` (entrada), `OUT` (salida). Tipos varían. | `Access` a variables | `SW.PlcBlocks.LADFBD_v4.xsd`, `SW.InterfaceSections_v5.xlm.txt` |
| **Temporizadores y Contadores (`Part_T` con `Name` específico o como SFB)** | | | | | |
| `Part` con `Name="TON"`, `"TOF"`, `"TP"` (Temporizadores IEC, a menudo como SFBs) o `Name="S_ONDELAY"`, `"S_ODT"`, `"S_PULSE"` (Temporizadores S7) | Bloque Temporizador | Operaciones de temporización. | `EN`, `ENO`. <br> `Interface`: `IN` (`BOOL`), `PT` (`TIME`), `Q` (`BOOL`), `ET` (`TIME`). | `Instance_T` (`#timerVar` o DB de instancia), `Access` para `IN`, `PT`. | `SW.PlcBlocks.LADFBD_v4.xsd`, `SW.InterfaceSections_v5.xlm.txt` |
| `Part` con `Name="CTU"`, `"CTD"`, `"CTUD"` (Contadores IEC, a menudo como SFBs) o `Name="S_CU"`, `"S_CD"`, `"S_CUD"` (Contadores S7) | Bloque Contador | Operaciones de conteo. | `EN`, `ENO`. <br> `Interface`: `CU`/`CD` (`BOOL`), `R` (Reset, `BOOL`), `LD` (Load, `BOOL`), `PV` (Preset Value, `INT`/`DINT`), `Q`/`QU`/`QD` (`BOOL`), `CV` (`INT`/`DINT`). | `Instance_T` (`#counterVar` o DB de instancia), `Access` para entradas. | `SW.PlcBlocks.LADFBD_v4.xsd`, `SW.InterfaceSections_v5.xlm.txt` |
| **Control de Programa (`Part_T`)** | | | | | |
| `Part` con `Name="JMP"` (o `Name="Jump"`) | Salto (JMP) | Salta a una etiqueta. | `EN` (para salto condicional), `ENO`. <br> Parámetro o atributo para el nombre de la etiqueta destino. | - | `SW.PlcBlocks.LADFBD_v4.xsd` |
| `Part` con `Name="LABEL"` (o `Name="Label"`) | Etiqueta (LBL) | Destino para un salto. | Atributo con el nombre de la etiqueta. | - | `SW.PlcBlocks.LADFBD_v4.xsd` (implícito, a menudo asociado a un punto en la red) |
| `Part` con `Name="RETURN"` | Retorno (RET) | Termina la ejecución del bloque. | `EN` (para retorno condicional). | - | `SW.PlcBlocks.LADFBD_v4.xsd` |
| `Part` con `Name="CALL"` (o el nombre del FC/FB llamado, o `Name="Box"`/`"InstructionBox"`) | Llamada a Bloque (FC/FB) | Ejecuta otro bloque. | `EN`, `ENO`. <br> `Interface` (pines del bloque llamado). | `Access` para parámetros de entrada/salida. `Instance_T` para FBs. | `SW.PlcBlocks.LADFBD_v4.xsd`, `SW.InterfaceSections_v5.xlm.txt` |
| **Misceláneos** | | | | | |
| `Parameter_T` (dentro de `Part_T` o `CallInfo_T`) | Parámetro de Bloque | Define un pin de entrada/salida/InOut de un `Part`. | `Name`, `Datatype`, `Section` (`Input`, `Output`, `InOut`). Puede contener `Access` o `Connection`. | Varía | `SW.PlcBlocks.LADFBD_v4.xsd` |
| `Access_T` (referenciado desde `Part` o `Parameter`) | Operando | Representa una variable, constante o dirección. | Varía según el tipo de acceso (`Symbol`, `Constant`, `Address`, etc.) | - | `SW.PlcBlocks.Access_v4.xsd` |
| `Constant_T` (dentro de `Access_T`) | Constante | Un valor literal. | `ConstantType`, `Value`. | - | `SW.PlcBlocks.Access_v4.xsd` |
| `Symbol_T` (dentro de `Access_T`) | Símbolo (Variable) | Una variable simbólica. | `Component` (para nombres estructurados o UDTs), `Scope`. | - | `SW.PlcBlocks.Access_v4.xsd` |
| `Address_T` (dentro de `Access_T`) | Dirección Absoluta | Una dirección de memoria directa (I, Q, M). | `Area`, `Type`, `BitOffset`, `ByteOffset`. | - | `SW.PlcBlocks.Access_v4.xsd` |
| `Comment_T` (asociado a Red o `Part`) | Comentario | Texto descriptivo. | `MultiLanguageText`. | - | `SW.Common_v3.xsd` |
| **Elementos Gráficos (implícitos o atributos)** | | | | | |
| Atributos/Elementos para posición y tamaño (ej. `ViewInfo_T`, `XPos`, `YPos`, `Width`, `Height`) | Posición/Tamaño Visual | Dónde y cómo se dibuja el elemento. | Coordenadas, dimensiones. | - | `SW.Common_v3.xsd`, atributos en `Part_T` o `Wire_T` |
**Consideraciones Adicionales:**
* **`CallInfo_T` y `Call_T`:** Estos tipos en `SW.PlcBlocks.LADFBD_v4.xsd` son importantes para las llamadas a bloques. `CallInfo_T` puede contener una lista de `Parameter_T` que especifican las asignaciones a los pines del bloque llamado.
* **Instrucciones Complejas:** Algunas "instrucciones" que en STL son una sola línea (ej. ciertas conversiones o manipulaciones de bits) pueden aparecer como una "caja" (un `Part`) en LAD/FBD si tienen múltiples entradas/salidas o una interfaz más compleja.
* **Bloques Tecnológicos (Motion, PID):** Estos tendrían sus propios `Name` para el `Part` (ej. `"MC_MoveAbsolute"`, `"PID_Compact"`) y una `Interface` muy específica definida por sus XSDs particulares (ej. `SW.TechnologicalObjects_Parameters_v1.xlm.txt`, etc., aunque estos XSDs describen más los parámetros internos que la representación LAD).
Esta tabla es un intento de cubrir los elementos más comunes y estructurales de LAD/FBD según los XSDs proporcionados. La forma más segura de confirmar la representación de un elemento LAD específico es siempre exportar un ejemplo de TIA Portal y analizar el XML resultante, usando estos XSDs como guía para interpretarlo.