0

我想实现用于扫描 I/O 设备的 TwinCAT3 自动化脚本(C#)。我想扫描连接到 TwinCAT3 耦合器的 CANOpen 设备,并从 GUI 中选择适当的 CANOpen 设备。

我没有从 Beckhoff 文档中找到有关扫描 I/O 设备的任何信息。我刚刚从 Beckhoff 文档中找到了一些有关扫描 CANOpen 设备的信息。但是,它没有很好的记录。

ITcSmTreeItem5 can_master = (ITcSmTreeItem5)io.CreateChild("Device 2 (EL6751)", 87, "", null);  

String availableMaster = can_master .ResourceCount;

can_master.ClaimResources(1);

他们没有指定我们可以将扫描的设备保存在哪里。他们只是简单地用索引激活设备。

请建议我,如何通过自动化 C# 脚本扫描 CANopen 设备并保存可用设备?

4

2 回答 2

0

您正确地观察到 Beckhoff 自动化接口还有一些不足之处:D

文档建议导入 CAN 数据库 (.dbc) 文件来配置 CAN-BUS。如果总线始终具有相同的配置,这是更简单的方法。您可以从 TwinCAT GUI 导出 DBC。

如果您需要扫描总线,您可以做的是使用带有<ScanBoxes>true</ScanBoxes>. 4.3.5.7 扫描设备和盒子的文档中显示了这方面的一个示例。这可能看起来像:

string xml = "<TreeItem><DeviceDef><ScanBoxes>1</ScanBoxes></DeviceDef></TreeItem>"; 
can_slave.ProduceXml(xml);

然后,您可以浏览 IO 树以查看发现了哪些设备。

ITcSmTreeItem ioDevices = systemManager.LookupTreeItem("TIID");
string foundDevices = ioDevices.ProduceXml();
于 2018-06-19T15:05:55.413 回答
0

我也遇到这个问题。我找到了解决方案。

参考:https ://infosys.beckhoff.com/index.php?content=../content/1031/tcautomationinterface/html/TcSysMan_HowTo_Scan.htm&id=

从上面的 URL,您需要名为“systemManager”的接口实例。您可以从 url 获取 systemManager 实例。(https://infosys.beckhoff.com/english.php?content=../content/1033/tc3_automationinterface/45035996516426763.html&id=

从上面的 URL,您应该通过 EnvDTE.DTE 创建或打开 Visual-Studio。并从 DTE 获取 systemManager 实例。

于 2020-06-28T03:56:23.723 回答