Wie Routen verwaltet werden
Routen lassen sich per ConsumeXml auf dem Routen-Knoten hinzufügen. Das direkte Löschen über das Automation Interface ist nicht möglich. Eine Alternative ist die direkte Bearbeitung der StaticRoutes.xml. Die Ziel-Net-ID des Projekts lässt sich über ITcSysManager2 bequem setzen und auslesen.
![]() | Über diesen Weg werden nur unverschlüsselte Routen angelegt; ADS Secure / verschlüsselte Routen werden nicht unterstützt. |
Voraussetzungen
TwinCAT 3 ist installiert. Für die Routenlöschung ist Schreibzugriff erforderlich auf:
C:\TwinCAT\3.1\TargetStaticRoutes.xml
Route hinzufügen mit IP-Adresse
C#:
string xmlString = "<TreeItem><RoutePrj><TargetList><BroadcastSearch>true</BroadcastSearch></TargetList><AddRoute><RemoteName>RouteName</RemoteName><RemoteNetId>10.1.128.217.1.1</RemoteNetId><RemoteIpAddr>10.1.128.217</RemoteIpAddr><UserName>Administrator</UserName><Password>1</Password><NoEncryption></NoEncryption></AddRoute></RoutePrj></TreeItem>";
ITcSmTreeItem routes = systemManager.LookupTreeItem("TIRR");
routes.ConsumeXml(xmlString);PowerShell:
$xmlString ="<TreeItem><ItemName>Route Settings</ItemName><PathName>TIRR</PathName><RoutePrj><TargetList><BroadcastSearch>true</BroadcastSearch></TargetList><AddRoute><RemoteName>RouteName</RemoteName><RemoteNetId>10.1.128.217.1.1</RemoteNetId><RemoteIpAddr>10.1.128.217</RemoteIpAddr><UserName>Administrator</UserName><Password>1</Password><NoEncryption></NoEncryption></AddRoute></RoutePrj></TreeItem>"
$routes = $systemManager.LookupTreeItem("TIRR")
$routes.ConsumeXml($xmlString)Route hinzufügen mit Hostname
<TreeItem>
<ItemName>Route Settings</ItemName>
<PathName>TIRR</PathName>
<RoutePrj>
<TargetList>
<BroadcastSearch>true</BroadcastSearch>
</TargetList>
<AddRoute>
<RemoteName>RouteName</RemoteName>
<RemoteNetId>1.2.3.4.5.6</RemoteNetId>
<RemoteHostName>CX-12345</RemoteHostName>
<UserName>userName</UserName>
<Password>password</Password>
<NoEncryption></NoEncryption>
<LocalName>LocalName</LocalName>
</AddRoute>
</RoutePrj>
</TreeItem>
Projektroute hinzufügen
<TreeItem>
<ItemName>Route Settings</ItemName>
<PathName>TIRR</PathName>
<RoutePrj>
<TargetList>
<BroadcastSearch>true</BroadcastSearch>
</TargetList>
<AddProjectRoute>
<Name>RouteName</Name>
<NetId>1.2.3.4.5.6</NetId>
<IpAddr>1.2.3.4</IpAddr>
</AddProjectRoute>
</RoutePrj>
</TreeItem>
![]() | Die XML-Struktur für reguläre und Projektrouten kann gleichzeitig verwendet werden. |
Net-ID setzen und auslesen
// Net-ID setzen (ITcSysManager2)
ITcSysManager2 sysMan2 = (ITcSysManager2)sysManager;
sysMan2.SetTargetNetId("5.23.233.156.1.1"); // Auf Remote-System
sysMan2.SetTargetNetId(""); // Zurück auf lokales System
string currentNetId = sysMan2.GetTargetNetId();
Route aus StaticRoutes.xml löschen
var xmlDoc = new System.Xml.XmlDocument();
xmlDoc.Load(@"C:\TwinCAT\3.1\Target\StaticRoutes.xml");
string routeToRemove =
"<Route>" +
"<Name>CX-17E99C</Name>" +
"<Address>CX-17E99C</Address>" +
"<NetId>5.23.233.156.1.1</NetId>" +
"<Type>TCP_IP</Type>" +
"</Route>";
string xmlString = xmlDoc.InnerXml;
xmlString = xmlString.Replace(routeToRemove, "");
xmlDoc.InnerXml = xmlString;
xmlDoc.Save(@"C:\TwinCAT\3.1\Target\StaticRoutes.xml");
![]() |
|
