发表于:2007-08-01 15:39:00
楼主
OPC常规信息,创建项,项的同步和异步读取以及项的编写和监控均可从因特网的http://www.opcfoundation.org中得到。
WinAC OPC服务器上的监控项信息
所监控的项受制于项的登录状况和所在组的活化情况。OPC 服务器届时会检查这些项。如果有值的变化,就会触发一个事件到应用程序。OPC 服务器以一个可以自行设置的内部周期工作。对于 WinAC OPC 服务器,其最小的值为100ms。在这个周期内,OPC 服务器检查项并检查哪里需要触发一个事件到应用程序。这个步骤只有在当项能够从 OPC 高速缓冲存储器中被读取,并且其内容没有干扰时才有用。由于在 WinAC的OPC 服务器上的项总是能够从设备读取而从不从OPC缓冲读取,所以并不推荐用这个选项。同样的,不要忘记过程控制总是有干扰的(如模拟量输出)。因此事件的数量是无法预测的。
注意事项:
WinAC OPC服务器偶尔因值的一个变化而触发两个事件。第一个事件给出初步的内容而第二个事件则给出具体的内容。当使用软直接键,而应用程序需要反馈时,这个属性会产生干扰。应用键来触发同步写并且由项的监控过程反馈出内容。
同步读取/编写
调用这个方法可使应用程序保持等待直到通讯结束。对于象由非保留命令方式的软直接键产生的关键信号,只能用这个方法。
异步读取/编写
这是通讯的最佳方法。数据传送被触发后应用程序江再次运行。每个事件均有传送成功与否的反馈。对于大量的数据和操作系统的同步低加载应选用此方法。
提高性能
集合运算是设计高性能应用程序的最有效方法之一。
通过调用一个方法,可执行在一个组中创建或读写项的任务。为此作为编程人员就必须知道这将导致对OPC服务器周期以及低一级驱动程序界面的改变。总起来说,大量的周期改变会极大的降低性能。OPC接口为此也提供有集合运算。也就是说,对每个单独的项或一个集合运算中,可在一个回路中创建1000个项。后面的方法可以得到最佳的性能。
实例:
在VB中,在一个组中创建1000个项。如下所示:
FOR i=1 TO 1000
Item="MB" & i ‚ a variable is added to the Item string -> MB1 to MB1000
MyGroup.OPCItems.AddItem (Item, ... )
NEXT
每个新添项调用都产生一个周期的改变。下列公式的性能更快:
FOR i=1 TO 1000
Items(i)="MB" & i
NEXT
MyGroup.OPCItems.AddItems (1000, Items, ... )
项被配置在一个数组中并随着OPC服务器的一个方法调用而存储在一个组中。
不仅能通过集合运算提高性能,也可以通过定义所用的项来实现。
实例:
在VB中,要求一个1000字节的数据缓冲器。该缓冲区组织在CPU中的一个连贯的区域中。
FOR i=1 TO 1000
Items(i)="MB" & i
NEXT
MyGroup.OPCItems.AddItems (1000, Items, gServerHandles, ... )
MyGroup.AsyncRead (1000, gServerHandles, ... )
项的创建和读取可通过集合运算完成。每个事件都使用异步读取并提供数据。程序继续运行。
Items(1)="MB0:INT[1000]"
MyGroup.OPCItems.AddItems (1, Items, gServerHandles, ... )
MyGroup.AsyncRead (1, gServerHandles, ... )
另一个优化措施是把单独的项定义为一个数组。这个优化步骤用于从控制器中传送一个连贯数据区时。