我正在使用单线程OPC客户端程序,管理连接到同一Siemens OPC服务器的3个不同的西门子PLC。
这个单线程的客户端程序长这样:
loop
begin
processPLC1;
processPLC2;
processPLC3;
end;
每个processPLC过程都会调用底层的OPC库,例如:
OPCutils.WriteOPCGroupItemValue(FGroupIf, FHandleItemOpc, Value);
好的,现在我想在不同的线程中调用每个processPLC并进行并行处理。
我做了一些研究,并使用OmniThreadLibrary开始编写代码,但我认为OPC代码不是多线程安全的。 是吗?
我应该使用task.Invoke或类似的东西吗?
ReadOPC函数如何?它们返回PLC标签的值。
在这里,最佳实践是什么?
谢谢!!!
GroupAdvise
回调时考虑的吗?如果我不等待标签变化回调,而是进行常量同步读写,这些函数会受到服务器循环时间的影响吗? - IgorMF