在 TwinCAT 中使用 ADS 在 EtherCAT 主站上读取 SumSymbolRead

SumSymbolRead on an EtherCAT master with ADS in TwinCAT

我想使用 SumSymbolRead 在 TwinCAT 中通过 ADS 读取多个符号。当从指向 PLC 的端口读取符号时,我可以这样做。我遵循了 Beckhoff 的一个示例:

using (AdsClient client = new AdsClient())
{
    client.Connect(address,port);
    
    // Load symbolic information
    ISymbolLoader loader = SymbolLoaderFactory.Create(client, SymbolLoaderSettings.Default);
    
    var allSymbols = loader.Symbols;
    
    ISymbol bVar1 = allSymbols["MAIN.Input1"];
    ISymbol bVar1 = allSymbols["MAIN.Output1"];
    
    SymbolCollection symbols = new SymbolCollection() {bVar1, bVar2};
    
    // Sum Command Read
    SumSymbolRead readCommand = new SumSymbolRead(client,symbols);
    
    object[] values = readCommand.Read(); 
 }

当我对 EtherCAT 主站尝试同样的操作时(使用我已验证的符号存在于主站上),我收到一条错误消息“不支持设备服务”。有没有办法为 EtherCAT 主站启用此服务?

我就此问题与 Beckhoff 进行了交谈。他们说 IO 不支持 Sum Writes。所以,这是Master做不到的。

你可以简单地创建一个任务和link那里的EtherCAT主站的所有变量,你只需要任务的端口号,以及勾选“创建符号”复选框任务设置。