用于I / O扫描设备的TwinCAT3自动化脚本(C#)

时间:2017-12-05 13:12:35

标签: c# automation twincat canopen twincat-ads-.net

我想实现用于扫描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设备并保存可用设备?

2 个答案:

答案 0 :(得分:0)

您可以正确地观察到Beckhoff自动化接口还有待改进的地方:D

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

如果您需要扫描总线,则可能可以执行的操作是使用<ScanBoxes>true</ScanBoxes>使用XML字符串。文档中的 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();

答案 1 :(得分:0)

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

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

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

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