Skip to content

西门子S7驱动使用ReadMultipleVars代替Read方法 #40

@xiaodaidi1

Description

@xiaodaidi1

目前逻辑是按照DeviceVariables循环串行读取,在个数多的情况下,性能会明显变慢
可以使用ReadMultipleVars方法批量读取数据加快响应,提高吞吐量

                var pageSize = plcPageSize;
                var pages = (ioarg.Count / pageSize) + 1;
                for (int pageIndex = 0; pageIndex < pages; pageIndex++)
                {
                    var source = ioarg.Skip(pageIndex * pageSize).Take(pageSize).ToList();
                    var items = source.Select(x =>
                    {
                        var dataItem = S7.Net.Types.DataItem.FromAddress(x.arg.Address);
                        return dataItem;
                    }).ToList();
                    plc.ReadMultipleVars(items);
                    for (int i = 0; i < source.Count; i++)
                    {
                        source[i].Value = items[i].Value;
                    }
                }

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions