资源描述
PI-Buffer使用文档
API Node Buffer(数据缓存)起到了如下作用:当API节点与PI主节点失去通讯连接(如网络故障或PI服务器的起停与维护)时,在这期间的数据可以存入缓存文件中,当连接重新建立时把这些数据依次写入PI服务器中,以此确保了数据的完整性,提高了系统可靠性。
API-Buffer设有三级缓存,第一级和第二级设置在内存之中,第三级设置在硬盘上(默认位置C:\Program Files\PIPC\DAT\ APIBUF.DAT),写入缓存采用先入先出(FIFO),顺序为由第一级向第三级逐级写入。读取缓存中的数据全部在第一级缓存上完成,在第三级缓存中的数据被读出的过程中,数据首先被移至了第二级缓存,接着移至第一级缓存被读走。当API-Buffer停止运行时系统会合并第一二三级缓存内容至处于硬盘上的第三级缓存处,以备后用。
API-Buffer的配置在接口机上完成,在安装了PI-API的接口机上使用PI-Buffer仅需要修改相关配置文件无需进行其他任何安装步骤。
1. 打开PIPC目录下的DAT文件夹,找到piclient.ini文件(如安装在C盘,则默认位置为C:\Program Files\PIPC\DAT\piclient.ini),通过配置piclient.ini文件中[APIBUFFER]段的参数完成对buffer的基本设置,如部分参数在文件中没有显示请手动添加,相关参数设置如下:
BUFFERING=1:Buffer的可用标识,置1可用0不可用;
PAUSERATE=2:当缓存为空时Buffering向PI中写数据的等待时间(秒);
RETRYRATE=120:当与PI服务器失去连接后尝试连接服务器的等待时间(秒);
MAXFILESIZE=1000000:第三级缓存(硬盘上)的文件最大空间(B);
MAXTRANSFEROBJS=10000:Buffering向PI写数据时每次最大的事件数;
BUF1SIZE=100000:第一级缓存(内存上)的文件最大空间(B);
BUF2SIZE=50000:第二级缓存(内存上)的文件最大空间(B);
SENDRATE=100: 缓存向PI写数的时间间隔(ms);
2. 打开pilogin.ini文件(默认位置C:\Program Files\PIPC\DAT\pilogin.ini),配置PI服务器信息:
[Services]
PI1=PI
[Defaults]
HELPFILE=D:\PIPC\HELP\pilogin.hlp
PIServer=192.168.20.100
PI1USER=piadmin
[PINODEIDENTIFIERS]
PI1=192.168.20.100,20066,5450
3. 配置PI-BUFFER SERVER服务
打开控制面板>管理工具>服务,右击PI-BUFFER SERVER服务打开其属性页,在常规选项卡里选择启动类型为自动,如图1所示;在登陆选项卡里配置登陆身份,输入拥有管理员权限的用户名和密码,如图2所示。配置完服务后使PI-Buffer具有了开机自启动的能力。
图1
图2
4. Buffering的手动起动及停止
启动:使用pistart.bat文件(默认位置为C:\Program Files\PIPC\BIN\pistart.bat)
停止:使用pistop.bat文件(默认位置为C:\Program Files\PIPC\BIN\pistop.bat)
5. Buffering状态查看工具
可以使用bufutil.exe查看当前的缓存状态,bufutil.exe的默认位置为C:\Program Files\PIPC\BIN\bufutil.exe。运行该程序后出现如图3所示界面,在Enter choice后分别输如1、2、3可以分别进入第一、二、三级缓存的状态信息界面;输入4停止缓存服务并退出bufutil.exe;输入5推出bufutil.exe。
下面以第一级缓存为例说明所显示的主要状态信息,如图4所示,
Mode:显示了当前的缓存使用模式,“Single”表示当前只使用了第一级主缓存; “Dual Memory” 表示使用了内存中的第一二级缓存; “Dual Memory 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
展开阅读全文