Crear dispositivos y configuración de hardware con TIA Portal Openness
Traducción al español. Original en inglés: create-devices-hardware-network.md.
Openness puede montar una configuración de hardware sin abrir el editor Dispositivos y redes: crear la estación y su CPU, insertar módulos, crear una subred y dar a la CPU una dirección IP y un sistema IO. Esta guía lo hace en C# y después con la API HTTP y las herramientas MCP de PLCWare. Todo lo que aparece aquí edita el proyecto offline; nada llega a un PLC real. Es válida para TIA Portal V21.
Antes de empezar
- Una aplicación Openness conectada a TIA Portal V21 con un proyecto abierto (Configurar TIA Portal Openness en Windows).
- El dispositivo no debe estar online mientras insertas módulos.
- Trabaja en el orden de las dependencias: subredes, después dispositivos (primero las CPU), después módulos y, por último, las conexiones de red.
Encuentra el identificador de tipo
Todo objeto de hardware se crea a partir de un identificador de tipo, <tipo>:<identificador>, donde el tipo es
OrderNumber, GSD o System. Para el hardware del catálogo es el número de artículo con la versión de firmware:
OrderNumber:6ES7 516-2GN00-0AB0/V2.9La parte del firmware solo es opcional cuando el sistema tiene una única versión de ese módulo. No adivines el valor: pregunta al catálogo de hardware.
foreach (var entry in portal.HardwareCatalog.Find("1516"))
Console.WriteLine($"{entry.TypeIdentifier} {entry.TypeName} {entry.Version}");Find recibe una cadena de filtro. Una segunda sobrecarga, Find(filter, typeIdentifier), devuelve solo los módulos
compatibles con la CPU que le pases.
Crear la estación y la CPU
Device station = project.Devices.CreateWithItem(
"OrderNumber:6ES7 516-2GN00-0AB0/V2.9", "PLC_1", "Station_1");Los argumentos son el identificador de tipo del elemento de dispositivo, el nombre del elemento de dispositivo (la CPU)
y el nombre del dispositivo (la estación). Devices.Create(deviceTypeIdentifier, name) crea solo el dispositivo.
Insertar módulos
DeviceItem rack = ...; // el rack de la estación
const string di = "OrderNumber:6ES7 521-1BL00-0AB0/V1.0";
if (rack.CanPlugNew(di, "DI_1", 2))
rack.PlugNew(di, "DI_1", 2);CanPlugNew indica si la inserción es posible, pero PlugNew aún puede fallar: la posición ya está ocupada, el
contenedor no ofrece esa posición, el nombre ya se usa en el contenedor, el módulo no encaja en el contenedor o el
dispositivo está online. Un PlugNew fallido lanza una excepción recuperable.
Crear la subred, la dirección IP y el sistema IO
using System.Linq;
Subnet subnet = project.Subnets.Create("System:Subnet.Ethernet", "PN_Line2");
DeviceItem cpuInterface = ...; // el elemento de la interfaz PROFINET de la CPU
NetworkInterface itf = cpuInterface.GetService<NetworkInterface>();
Node node = itf.Nodes.First();
node.ConnectToSubnet(subnet);
((IEngineeringObject)node).SetAttribute("Address", "192.168.0.1");
if ((itf.InterfaceOperatingMode & InterfaceOperatingModes.IoController) != 0)
{
IoSystem ioSystem = itf.IoControllers.First().CreateIoSystem("PN/IE_1");
}CreateIoSystem necesita una interfaz que ya esté conectada a una subred y que aún no tenga sistema IO. Los ajustes IP
de un nodo son atributos dinámicos: Address, SubnetMask, RouterAddress, UseRouter, DhcpClientId e
IpProtocolSelection.
Para llevar una CPU existente a otra versión de firmware sin recrearla, llama a ChangeType. El ejemplo de Siemens
inserta una CPU como OrderNumber:6ES7 516-3AN01-0AB0/V2.8 y después llama a
deviceItem.ChangeType("OrderNumber:6ES7 516-3AN01-0AB0/V2.9"). Lanza una excepción si el identificador es desconocido,
el objeto es de solo lectura o el cambio no se admite (por ejemplo, a una familia de módulos completamente distinta).
Crear la misma configuración con PLCWare
La app serve envuelve estas llamadas. Los nombres de las llamadas siguientes son los que tú diste: la estación en
device, la subred en subnet. Los identificadores son los de la documentación de Siemens; busca antes los que
necesites con GET /catalog?filter=1516 (MCP: tia_catalog).
function Post($path, $body) {
Invoke-RestMethod -Method Post "http://localhost:5000$path" -ContentType "application/json" -Body ($body | ConvertTo-Json)
}
Post "/subnets" @{ typeIdentifier = "System:Subnet.Ethernet"; name = "PN_Line2" }
Post "/devices" @{ typeIdentifier = "OrderNumber:6ES7 516-2GN00-0AB0/V2.9"; deviceItemName = "PLC_1"; deviceName = "Station_1" }
Post "/devices/Station_1/plug" @{ typeIdentifier = "OrderNumber:6ES7 521-1BL00-0AB0/V1.0"; name = "DI_1"; position = 2 }
Post "/network/connect" @{ device = "Station_1"; subnet = "PN_Line2"; ip = "192.168.0.1"; createIoSystem = $true }Las herramientas MCP son tia_subnet_create, tia_device_create, tia_device_plug y tia_network_connect. La parte de
versión de un identificador se escribe con barra, /V2.9, nunca :V2.9; PLCWare rechaza la segunda forma. La CPU y sus
dispositivos IO deben estar en la misma subred, y exactamente un createIoSystem crea cada sistema IO. Desde la app
PLCWare 1.7.0 (hoy en beta), la respuesta de tia_network_connect trae un postcheck: el serve vuelve a leer la
conexión después de escribirla, y 409 postcheck_failed significa que la escritura no surtió el efecto pedido, así que
vuelve a leer la interfaz con tia_device_network antes de reintentar. La app estable, 1.6.3, no verifica la escritura:
comprueba tú mismo la configuración después, en la vista de red de TIA Portal o volviendo a leerla con tia_devices y
tia_subnets.
Todas estas herramientas aceptan dryRun: true, que comprueba las protecciones y devuelve el plan sin cambiar el
proyecto. Openness no tiene rollback, así que comprueba que un nombre todavía no existe antes de crearlo: repetir la
ejecución no converge.
TIA Portal da al software del PLC de una CPU el nombre del elemento de dispositivo de la CPU (PLC_1 arriba), no el de
la estación. Todo lo que es de ámbito PLC después, como tags, bloques y compilación, usa ese nombre; tia_plcs lo lista.
O describe el proyecto entero en un documento
tia_spec_validate, tia_spec_plan y tia_spec_apply reciben una especificación de proyecto en JSON, la validan, la
convierten en la lista ordenada de operaciones y las ejecutan en el orden de las dependencias: subredes, dispositivos,
módulos, red, tablas de tags, tags, FB vacíos y la compilación. Una especificación mínima:
{
"project": { "name": "Line2", "directory": "C:\\TIA\\Line2" },
"conventions": {
"namingScheme": "plcopen",
"optimizedAccess": true,
"symbolicOnly": true,
"defaultLanguages": { "interlocks": "LAD", "algorithms": "SCL", "sequencers": "GRAPH" }
},
"devices": [
{
"name": "Line2_CPU",
"typeIdentifier": "OrderNumber:6ES7 511-1AK02-0AB0/V2.9",
"role": "cpu",
"family": "S7-1500"
}
],
"network": {
"subnet": { "type": "System:Subnet.Ethernet", "name": "PN_Line2", "cidr": "192.168.0.0/24" },
"nodes": [{ "device": "Line2_CPU", "ip": "192.168.0.1", "createIoSystem": true }]
},
"tagTables": [{ "name": "IO", "purpose": "IO" }],
"tags": [{ "table": "IO", "name": "Conv01_Run", "dataType": "Bool", "address": "%Q0.0" }]
}tia_spec_validate y tia_spec_plan no necesitan un TIA Portal en ejecución. tia_spec_apply se detiene en el primer
paso que falla, nunca carga nada en el PLC y no importa UDT ni escribe lógica de bloques; eso queda para
tia_types_import, tia_source_put y tia_import_xml.
Lo que suele fallar
- Una CPU creada con Openness puede no compilar limpia al principio: sus ajustes de protección no están definidos.
PLCWare documenta una receta para ello (
tia_guidecon{ "topic": "recipes" }), y la contraseña que necesita siempre la aporta una persona. Nada la genera. - La versión de firmware del proyecto no debe ser mayor que la de la CPU física.
tia_device_change_versionla cambia en el sitio y conserva el programa, pero restablece ajustes que solo puede definir la ventana de TIA Portal (activación del servidor OPC UA y licencia de runtime), así que archiva antes el proyecto contia_project_archivey recompila después. - Cargar el hardware en un PLC real no forma parte de esta guía. Es una compuerta que aprueba una persona.
Guías relacionadas
- Compilar un PLC desde código y leer los mensajes
- Configurar TIA Portal Openness en Windows
- Conectar un asistente de IA a TIA Portal con MCP
- Todas las guías
Empieza la prueba gratuita de 30 días
PLCWare ejecuta estos pasos por ti, o por tu asistente de IA, sobre TIA Portal V21. La prueba dura 30 días, incluye los permisos (scopes) de Pro, no pide tarjeta y no se renueva. Necesitas TIA Portal V21 con licencia STEP 7 Professional, que se compra aparte a Siemens.
Empezar la prueba gratuita de 30 días · Descargar la app
TIA Portal, SIMATIC y Siemens son marcas de Siemens AG. PLCWare es un producto independiente para TIA Portal y no tiene vínculo con Siemens ni cuenta con su respaldo.