1、项目读取技巧 OPC服务器 能够读取和写入数值 当某个变量被查询时,对应的数值会从最新进程数据中获取并被返回。这可能是传感器、控制参数、状态信息或网络连接状态的数值。 或获取有关不断变化的进程数据值的信息。以下有关同步 在同步存取过程中,程序在读取或写入变量时停止执行。 和异步 在异步存取过程中,OPC客户机程序在读取或写入数据时继续执行。 数据交换的说明以及在使用不同的项目 OPC项目是OPC服务器中与数据来源的连接。所有与OPC项目的读写存取均通过“包含”OPC项目的OPC群组目标进行。同一个OPC项目可包含在几个群组中。 读取和写入技巧时需要考虑的问题。 目标是: 在与
2、OPC服务器连接的设备 和与OPC客户机 OPC (用于进程控制的OLE)是一种开放式系统接口标准,可允许在自动化/PLC应用、现场设备和基于PC的应用程序(例如HMI或办公室应用程序)之间进行简单的标准化数据交换。 客户机 OPC客户机是存取OPC服务器进程数据、讯息和档案的应用程序。 是存取OPC服务器 OPC服务器是处理进程数据的应用程序、多种网络协议及存取此类数据的接口之间的中间件。 进程数据、讯息和档案的应用程序。连接的OPC服务器之间优化数据交换 为需要经常更新的项目保存网络带宽 同步和异步 OPC服务器支持两种类型的项目读取:同步和异步。 如果数据存取很
3、快发生或需要为程序流动提供结果,则应使用同步调用。如果通过服务器进行的数据记录要求程序执行有无接受的延迟,则应使用异步读取。 同步读取可进一步分为超高速缓存 OPC服务器对进程数据的内部存储。 和设备读取。异步读取始终从设备读取,不受群组 OPC群组目标保存有关自身的信息,并提供包含和以逻辑的方式组织OPC项目用于数据读写的机制。OPC群组提供一种客户机组织数据的方法。 或项目的现用状态的影响。 亦可完成同步和异步项目写入,但仅限向设备本身写入。 超高速缓存和设备 假设大多数客户机希望存取超高速缓存数据,客户机从服务器获取该数据有几种不同的方法。 客户机可从超高速缓存执行同步
4、读取(简单、较为有效)。这可能适用于读取相对较小数量的数据并且无需具备最高效率的较简单的客户机。以此种方式操作的客户机基本上在重复服务器已经在执行的“扫描”作业。 客户机可使用IOPCDataCallback执行对超高速缓冲数据的异步“订阅”。 这是建议使用的客户机行为,因为这样会尽量减少CPU和网络资源的使用。 但是,在实际操作中,大多数服务器会读取数据,并存入某种类型的超高速缓存。此外,大多数客户机会从该超高速缓存读取数据。预计设备数据存取速度会“很慢”,并主要用于诊断程序、极为重要的操作或单次存取(仅限一次读取)。 超高速缓存应当反映数据的最新数值 (如下所述,受更新速率和
5、静区优化的限制)以及质量 质量是表明能否可靠地获取某一变量数值的信息。您可以根据该信息得出有关数值有效性的结论。 和时间戳记 您可以根据时间戳记了解获得所查询变量数值的时间。 。时间戳记应当显示设备获取数值和质量的时间(如有)或服务器在超高速缓存中更新或确认数值和质量的时间。请注意,如果服务器每隔10分钟检查一次来自设备的一个数值,预计的行为则位该数值的时间戳记应每10秒钟更新一次(即使该数值实际并未发生变化)。因此,时间戳记反映的服务器了解对应数值的时间准确无误。 现用状态 只有在项目成为现用以及包含该项目的群组成为现用后,服务器的超高速缓存才能设备该项目的现用状态。设备读取不受群组
6、或项目的现用状态的影响。 多个数据点 在具有多个数据点的进程中,只有在出现某些不常见的事件时才需要使用大多数的数值,而另一些数值则为常用数值。因此,您不应当选择建立一个包含所有项目的群组,而应当选择建立具有不同扫描速率和现用状态的两个群组:一个包含所有不经常读取项目的非现用群组(异步/同步设备读取)和另一个包含所有经常更新项目的现用群组(使用IOPCDataCallback异步“订阅”超高速缓存数据)。这样,您可以更明智地调整每个群组的数据获取频率,尽量减少从设备读取数据所需的时间,并保存网络带宽。 一个包含所有不经常读取项目的非现用群组和另一个包含所有经常读取项目的现用群组的范例是
7、炼油厂: 无超高速缓存和从设备读取的非现用群组: 炼油厂内有装有数千加仑油的大型储油罐。会对这些储油罐定期进行排油和装油操作,以便保持原油供应。单个储油罐内的油量十分重要;但是,为了尽量减少排油和装油操作造成的变化,只需每天测量一次油量。 具备来自超高速缓存变化数据周期数据更新信息的现用群组: 在炼油厂的另一部分,加工后的机油作为成品被装入油罐。在这里,每个操作阶段(例如在油罐内装上规定数量的油,并确保需要装油的油罐已经就位)的时间至关重要。要求经常进行进程数据更新,以便确保生产操作在规定的容差范围内。 单台客户机 在使用单台客户机的情况下,您可以利用同步或异步
8、设备读取进一步限制数据读取量,该设备读取使用的数据获取依据OPC客户机中的事件和未设备这些项目现用状态的超高速缓冲。非现用超高速缓冲并不表示无法读取超高速缓冲群组中的项目,只是表示要求执行设备读取。您可以在触发事件发生时执行此类读取,因而仅在需要时读取数值。 在此类情况下,这通常不会成为问题,因为应答时间并不特别重要。 多台客户机 取决于客户机中的事件,如果有几台客户机对同一个数值感兴趣,则使用同步超高速缓冲读取。从超高速缓冲(而不是从设备)收集数值,数据存取速度会快得多,但数值可能不是最新数值。只有在项目成为现用并属于现用群组时,该项目的超高速缓冲数值才会被更新。 如果要求超高速缓
9、冲成为现用,以便更新项目的超高速缓冲数值,则会耗费大量的网络带宽。在此种情况下,通过进一步划分不常用的群组,我们可以定期更新所有不常用项目的超高速缓冲数值,同时保留足够的网络带宽用于更新常用项目。 在另一种使用多台客户机的情况下,采用异步更新的方法比同步读取更有利。在同步读取项目时,读取将依据扫描速率最低的现用群组显示的频率。异步更新(OnDataChange)将能够更有效地利用网络带宽,因为仅会传输更改的数据。一个典型的此类使用情况是HMI,HMI始终显示当前数值。 OnDataChange事件 在使用OnDataChange事件时,如果进程数据值本身发生变化,则会自动从服务器传输
10、至客户机。这是首选异步超高速缓冲读取方法。如果数值发生变化,OnDataChange事件会提示服务器自动读取进程数据值、评估状况、并将数值发送至客户机。该机制要求有一个现用超高速缓存。如果项目成为现用,并且包含该项目的群组也成为现用,超高速缓存则可设备该项目的现用状态。 在服务器项目配置过程中,可为个别进程变量指定工程单位(EU)类型和信息。如果进程变量是模拟数值,并且已经输入必要的EU信息,服务器会对EU范围进行一次计算,并用在OPC群组目标的PercentDeadband中指定的数值乘以该计算结果。接下来则会计算出最后一次传送至客户机的数值与OPC项目目标的当前扫描数值之间的差别。如果该
11、差别的绝对值大于以前从EU和PercentDeadband计算出的数值,则会将OPC项目目标的当前扫描数值传送至客户机。 总之,如果符合以下条件,则会传送更改的数据: ((最后的超高速缓冲数值 - 当前数值)的绝对值)(PercentDeadband/100) * (EU高 - EU低) 在OnDataChange事件中从OPC服务器向OPC客户机进行异步超高速缓冲数据传输通常用于需要经常更新以显示项目数值的HMI应用程序。OnDataChange仅包含更改的数值。这样可减少OPC客户机和OPC服务器之间的传输数据,并允许OPC服务器优化从设备获取数据的程序。 刷新 在刷新时,客户机读取现用OPC群组目标的所有现用OPC项目目标。结果通过OnDataChange事件传送。可将超高速缓冲或设备选作进程数据来源。 优化 哪些程序需要优化? 设备和OPC服务器之间的数据交换 OPC服务器和OPC客户机之间的数据交换 在异步更新过程中使用同步读取的主要目的是为需要经常更新的项目保留网络带宽。网络带宽通常是一种有限的商品,仔细选择您的读取方法在大多数情况下能够防止出现性能问题。






