我想实现用于扫描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设备并保存可用设备?
答案 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)
我也遇到这个问题。我找到了解决方案。
从上面的URL,您需要一个名为“ systemManager”的接口实例。 您可以从网址获取systemManager实例。 (https://infosys.beckhoff.com/english.php?content=../content/1033/tc3_automationinterface/45035996516426763.html&id=)
从上面的URL,您应该通过EnvDTE.DTE创建或打开Visual Studio。 并从DTE获取systemManager实例。