1、PI-Buffer 使用文档API Node Buffer(数据缓存)起到了如下作用:当 API 节点与 PI 主节点失去通讯连接(如网络故障或 PI 服务器的起停与维护)时,在这期间的数据可以存入缓存文件中,当连接重新建立时把这些数据依次写入 PI 服务器中,以此确保了数据的完整性,提高了系统可靠性。APIBuffer 设有三级缓存,第一级和第二级设置在内存之中,第三级设置在硬盘上(默认位置 C:Program FilesPIPCDAT APIBUF.DAT) ,写入缓存采用先入先出(FIFO) ,顺序为由第一级向第三级逐级写入。读取缓存中的数据全部在第一级缓存上完成,在第三级缓存中的数据被
2、读出的过程中,数据首先被移至了第二级缓存,接着移至第一级缓存被读走。当 APIBuffer 停止运行时系统会合并第一二三级缓存内容至处于硬盘上的第三级缓存处,以备后用。APIBuffer 的配置在接口机上完成,在安装了 PIAPI 的接口机上使用PI-Buffer 仅需要修改相关配置文件无需进行其他任何安装步骤。1打开 PIPC 目录下的 DAT 文件夹,找到 piclient.ini 文件(如安装在 C 盘,则默认位置为 C:Program FilesPIPCDATpiclient.ini) ,通过配置 piclient.ini文件中APIBUFFER段的参数完成对 buffer 的基本设置
3、,如部分参数在文件中没有显示请手动添加,相关参数设置如下:BUFFERING=1:Buffer 的可用标识,置 1 可用 0 不可用;PAUSERATE=2:当缓存为空时 Buffering 向 PI 中写数据的等待时间(秒) ;RETRYRATE=120:当与 PI 服务器失去连接后尝试连接服务器的等待时间(秒) ;MAXFILESIZE=1000000:第三级缓存(硬盘上)的文件最大空间(B) ;MAXTRANSFEROBJS=10000:Buffering 向 PI 写数据时每次最大的事件数;BUF1SIZE=100000:第一级缓存(内存上)的文件最大空间(B) ;BUF2SIZE=5
4、0000:第二级缓存(内存上)的文件最大空间(B) ;SENDRATE=100: 缓存向 PI 写数的时间间隔(ms) ;2打开 pilogin.ini 文件(默认位置 C:Program FilesPIPCDATpilogin.ini) ,配置 PI 服务器信息:ServicesPI1=PIDefaultsHELPFILE=D:PIPCHELPpilogin.hlpPIServer=192.168.20.100PI1USER=piadminPINODEIDENTIFIERSPI1=192.168.20.100,20066,54503配置 PI-BUFFER SERVER 服务打开控制面板管理
5、工具服务,右击 PI-BUFFER SERVER 服务打开其属性页,在常规选项卡里选择启动类型为自动,如图 1 所示;在登陆选项卡里配置登陆身份,输入拥有管理员权限的用户名和密码,如图 2 所示。配置完服务后使 PIBuffer 具有了开机自启动的能力。图 1图 24Buffering 的手动起动及停止启动:使用 pistart.bat 文件(默认位置为 C:Program FilesPIPCBINpistart.bat)停止:使用 pistop.bat 文件(默认位置为 C:Program FilesPIPCBINpistop.bat)5Buffering 状态查看工具可以使用 bufuti
6、l.exe 查看当前的缓存状态,bufutil.exe 的默认位置为C:Program FilesPIPCBINbufutil.exe。运行该程序后出现如图 3 所示界面,在 Enter choice 后分别输如 1、2、3 可以分别进入第一、二、三级缓存的状态信息界面;输入 4 停止缓存服务并退出 bufutil.exe;输入 5 推出bufutil.exe。下面以第一级缓存为例说明所显示的主要状态信息,如图 4 所示,Mode:显示了当前的缓存使用模式, “Single”表示当前只使用了第一级主缓存; “Dual Memory” 表示使用了内存中的第一二级缓存; “Dual Memory
7、and File”表示同时使用了内存中的一二级缓存和硬盘上的第三级缓存。Server status:显示了当前与 PI 服务器的连接状态。Size:第一级缓存的大小。Unprocessed entries:当前缓存中的数据量。图 3图 4附:启动 Buffer 服务时应先停用接口机上所有与 PI 有关的程序,启动Buffer 服务后再将它们重新启动。另附所有具有缓存功能的 API 函数: piar_putarcvaluesx piar_putarcvaluex piar_putvalue pisn_putsnapshot pisn_putsnapshots pisn_putsnapshotq pisn_putsnapshotqx pisn_putsnapshotsx pisn_putsnapshotx pisn_sendexceptionq pisn_sendexceptionqx pisn_sendexceptionsx pisn_sendexcepstruc pisn_sendexcepstrucq pisn_sendexceptqx pisn_sendexceptions