首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >TwinCAT 3.0自动化接口:获取用于广播搜索的本地netId

TwinCAT 3.0自动化接口:获取用于广播搜索的本地netId
EN

Stack Overflow用户
提问于 2019-09-06 11:16:13
回答 3查看 942关注 0票数 1

我想使用Twincat3AutomationInterface进行广播搜索,这要求目标网络是“本地的”。我知道我可以用ITcSysManager2 2::SetTargetNetId设置目标网络,但我不知道如何找到本地系统的netid。

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2019-09-07 08:52:10

如果在触发广播搜索之前更改了目标NetId,则使用API中的AmsNetId.Local属性将其更改为本地NetId (使用TwinCAT.Ads;)

代码语言:javascript
复制
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
票数 1
EN

Stack Overflow用户

发布于 2019-09-06 13:07:13

我也遇到了同样的问题(需要使用自动化接口进行广播搜索)。我现在无法访问该代码,但我记得它,因为我要么不需要本地NetId进行广播搜索,要么使用"127.0.0.1.1.1“作为NetId。

票数 0
EN

Stack Overflow用户

发布于 2019-09-09 10:15:38

由于我找不到通过调用获取本地AmsNetId的方法,所以我想出了解决办法:

代码语言:javascript
复制
  var key = Registry.LocalMachine.OpenSubKey(@"SOFTWARE\WOW6432Node\Beckhoff\TwinCAT\System");
  var localNetId = string.Join(".", (byte[])key.GetValue("AmsNetId"));
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/57820970

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档