Durchführung einer ADS Broadcast-Suche
Zum Auslösen einer TwinCAT Broadcast-Suche und Auffinden eines unbekannten entfernten ADS-Geräts können die ConsumeXml() und ProduceXml() Methoden aus der ITcSmTreeItem Schnittstelle verwendet werden.
Allgemeine Broadcast-Suche
Code-Ausschnitt (C#):
string xmlString = "<TreeItem><RoutePrj><TargetList><BroadcastSearch>true</BroadcastSearch></TargetList></RoutePrj></TreeItem>";
ITcSmTreeItem routes = sysMan.LookupTreeItem("TIRR");
routes.ConsumeXml(xmlString);
string result = routes.ProduceXml();
Code-Ausschnitt (Powershell):
$xmlString = "<TreeItem><RoutePrj><TargetList><BroadcastSearch>true</BroadcastSearch></TargetList></RoutePrj></TreeItem>"
$routes = $systemManager.LookupTreeItem("TIRR")
$routes.ConsumeXml($xmlString)
$result = $routes.ProduceXml()
Die Variable „result“ enthält nun eine XML-Darstellung aller gefundenen ADS-Geräte im Netzwerk. Zur Auswahl eines spezifischen Geräts aus dieser Liste kann der reguläre .NET Mechanismus für XML-Umgang verwendet werden.
Code-Ausschnitt (C#):
XmlDocument xmlDocument = new XmlDocument();
xmlDocument.Load(result);
string amsNetId = xmlDocument.SelectSingleNode("//TreeItem/RoutePrj/TargetList/Target/IpAddr[text()=\"" + ipAddress + "\"]/../NetId").InnerText;
string name = xmlDocument.SelectSingleNode("//TreeItem/RoutePrj/TargetList/Target/IpAddr[text()=\"" + ipAddress + "\"]/../Name").InnerText;
Code-Ausschnitt (Powershell):
$xmlDocument = [xml]$result
$localAmsNetId = $xmlDocument.TreeItem.RoutePrj.Target
Diese Informationen können dann verwendet werden, um eine Route zu diesem ADS-Gerät hinzuzufügen, wie dies in einem separaten Artikel beschrieben ist.
Direkte Broadcast-Suche
Erfordert mindestens TwinCAT 3.1 Build 4020.10 oder höher.
Zur Ausführung einer Broadcast-Suche mit einem gegebenen Hostnamen oder einer IP-Adresse kann die folgende XML-Struktur in ConsumeXml() verwendet werden.
XML – Suche nach Hostnamen:
<TreeItem>
<RoutePrj>
<TargetList>
<Search>CX-12345</Search>
</TargetList>
</RoutePrj>
</TreeItem>
XML – Suche nach IP-Adresse:
<TreeItem>
<RoutePrj>
<TargetList>
<Search>172.17.60.153</Search>
</TargetList>
</RoutePrj>
</TreeItem>
Ein nachfolgendes ProduceXml() gibt den gefundenen Host wie folgt aus:
XML – Gefundener Host:
<TreeItem>
<RoutePrj>
<TargetList>
<Target>
<Name>CX-12345</Name>
<NetId>172.17.60.153.1.1</NetId>
<IpAddr>172.17.60.153</IpAddr>
<Version>3.1.4020</Version>
<OS>Windows 7</OS>
</Target>
</TargetList>
</RoutePrj>
</TreeItem>