我想使用Twincat3AutomationInterface进行广播搜索,这要求目标网络是“本地的”。我知道我可以用ITcSysManager2 2::SetTargetNetId设置目标网络,但我不知道如何找到本地系统的netid。
发布于 2019-09-07 08:52:10
如果在触发广播搜索之前更改了目标NetId,则使用API中的AmsNetId.Local属性将其更改为本地NetId (使用TwinCAT.Ads;)
systemManager.SetTargetNetId(AmsNetId.Local.ToString());
ITcSmTreeItem routeConfiguration = systemManager.LookupTreeItem("TIRR"); // Route Settings
// The following XML string triggers a Broadcast Search if consumed on TIRR node
string xml =
@"<TreeItem>
<RoutePrj>
<TargetList>
<BroadcastSearch>true</BroadcastSearch>
</TargetList>
</RoutePrj>
</TreeItem>";
routeConfiguration.ConsumeXml(xml); // Trigger Broadcast Search
string producedXml = routeConfiguration.ProduceXml(); // Get the result发布于 2019-09-06 13:07:13
我也遇到了同样的问题(需要使用自动化接口进行广播搜索)。我现在无法访问该代码,但我记得它,因为我要么不需要本地NetId进行广播搜索,要么使用"127.0.0.1.1.1“作为NetId。
发布于 2019-09-09 10:15:38
由于我找不到通过调用获取本地AmsNetId的方法,所以我想出了解决办法:
var key = Registry.LocalMachine.OpenSubKey(@"SOFTWARE\WOW6432Node\Beckhoff\TwinCAT\System");
var localNetId = string.Join(".", (byte[])key.GetValue("AmsNetId"));https://stackoverflow.com/questions/57820970
复制相似问题