在执行PLC数据采集时,按照以下的执行顺序:
1。先读取所有的DB块变量,因为这个执行时间较长,根据DB块的变量多少,可能要十几豪秒到几百毫秒,所以要用异步方式;
2。然后分段读取这些数据,这些指令在内存中执行,速度快,所以不用异步;
3。处理要写入PLC的数据,存放到dataWrite数组中;
4。考虑到执行时间,采用异步方式执行写入代码;
5。可以设定是否等待;
6。然后判断是否进行下一个循环;
上核心代码:
while (continueCollecting)
{
(var dataRead, var Collect) = await ReadDataAsync(); // 读取数据,指令完成后才执行下一指令
ProcessRead(dataRead); // 处理数据,可以不用异步,里面都是赋值的常规操作,在内存里
var dataWrite = ProcessWrite(); // 处理数据,可以不用异步,里面都是赋值的常规操作,在内存里
await WriteDataAsync(dataWrite); // 写入数据
await Task.Delay(0); // 指定延迟的毫秒数,根据需要等待一段时间.可选0
continueCollecting = GData.systemVar.ConnectPLC1; // 根据条件决定是否继续数据采集
}
1755

被折叠的 条评论
为什么被折叠?



