欢迎使用OPCHDA协议
简介
OPCHDA是一个历史数据访问协议。
Windows环境搭建
这里将OPCHDA分为三个角色,服务端,客户端(Windows代理)和算盘端。服务端运行着OPCHDA的服务器,客户端运行着OPCHDA的算盘代理,算盘端运行着OPCHDA的组件代码。其中客户端和服务端的连接因为Windows DCOM的权限问题,需要特殊的设置才能生效。
+--------------+ +--------------------+ +---------------------+
| | | | | |
| | | | | |
| OPCHDA 服务器| DCOM 连接 | OPCHDA 客户端 | | 算 盘 |
| +<----------+ Windows代理 +<-----+ |
| | | | | |
| | | | | |
| | | | | |
+--------------+ +--------------------+ +---------------------+
在环境搭建之前需要确保:
• OPCHDA服务器和OPCHDA客户端在一个局域网内,可以互相ping通
• OPCHDA服务器和OPCHDA客户端需要都关闭防火墙
• OPCHDA服务器和OPCHDA客户端主机的账号密码需要相同。
OPCHDA服务端环境搭建
服务端需要进行DCOM的权限的设置,这里完成了了一个桌面客户端的软件。用户在使用此设置软件之前,需要预先安装OPCHDA服务器。 点此下载此服务端设置软件,然后打开OPCDA_server_setting.exe:
首先点击刷新,然后选择需要设置的服务器,最后点击应用设置即可。
OPCHDA客户端环境搭建
客户端除了设置DCOM的权限,还提供了OPCHDA的代理。这里提供了一个安装包点此下载,用户点击此安装包然后一直点击下一步即可安装,安装的时候会设置好DCOM的权限。用户安装完成之后桌面上会提供一个OPCHDA客户端的链接,用户打开此程序即可完成环境的搭建。
OPCHDA小工具下载使用
请点击链接下载此小工具,OPCHDA小工具,此工具运行在windows电脑上,此工具在辅助得到OPCHDA的服务器名称,服务器上面的变量都是有帮助的。
用户界面使用
添加通道
这里插件指的是OPCHDA的windows代理。添加通道的时候需要填入插件的连接方式,目前支持客户端的方式,插件的IP地址可以在windows电脑上输入ipconfig命令查看。插件的端口默认是13000,不用去修改。
添加设备
添加设备的时候需要填入OPC服务器的地址和名称。如果OPCHDA服务器和OPCHDA windows代理在同一台设备上面,那么填写localhost即可。然后需要得到OPCHDA的服务器名称。通过OPCHDA小工具来获取此名称。
添加点位
点位的数据项地址可以使用OPCHDA小工具来查看,数据项的类型可以根据实际情况查看或者填写默认。
数据项名称指的是服务器上面的点位名称。
开始时间和结束时间指的是需要采集OPC-HDA数据的开始时间和结束时间,精确到秒,需要按照格式填写。需要注意的是,如果读取的时间返回太大会造成数据量过大。
数据汇总方法的含义是是否需要进行OPCHDA的数据运算,默认是不运算,也就是按照原始数据读取。运算的方法的实际值的对应关系:
ANNOTATIONS = 24,
WORSTQUALITY = 23,
PERCENTBAD = 22,
PERCENTGOOD = 21,
DURATIONBAD = 20,
DURATIONGOOD = 19,
RANGE = 18,
VARIANCE = 17,
REGDEV = 16,
REGCONST = 15,
REGSLOPE = 14,
DELTA = 13,
END = 12,
START = 11,
MAXIMUM = 10,
MAXIMUMACTUALTIME = 9,
MINIMUM = 8,
MINIMUMACTUALTIME = 7,
STDEV = 6,
COUNT = 5,
TIMEAVERAGE = 4,
AVERAGE = 3,
TOTAL = 2,
INTERPOLATIVE = 1,
NOAGGREGATE = 0(原始数据读取)
原始数据的读取数量,指的是按照原始数据读取时,需要读取的数据量。
数据汇总采集间隔,指的是按照数据汇总的方式读取(非原始数据读取),设置数据的汇总采集间隔。
点位表编辑
点位表导出之后,编辑导出的点位表再进行导入。编辑的时候,需要填写下述打勾的字段。
名称 | 是否填写 | 含义 |
---|---|---|
appid | √ | 数据项唯一的id |
name | √ | 数据项名称 |
desc | √ | 数据项描述 |
freq | √ | 数据项更新频率(毫秒为单位) |
value | × | |
updatetime | × | |
quality | × | |
compute_func | √ | 值运算函数,有n,+,-,*,/ |
compute_para | √ | 值运算参数 |
readonly | √ | 是否只读,只读写1,否则写0 |
report | √ | 是否上报数据,上报写1,否则写0 |
report_change | √ | 是否变化才上报的数据,数据变化才上报写1,否则写0 |
value_old | × | |
address | √ | 地址,根据OPCHDA小工具来确定 |
time_start | √ | 数据表起始时间 |
time_end | √ | 数据表结束时间 |
aggregate | √ | 数据汇总方法 |
num | √ | 数据汇总方法为原始数据读取时,读取的数量 |
aggregate_interval | √ | 数据汇总不是原始数据读取时,采用的采样间隔 |
组件输入输出格式
当作为算盘的组件使用时,输入输出格式如下。可以在转发字段定义这个功能来修改字段名或者去掉不要的字段。
组件输出
{
"type":"report",
"device_name":"device_sX2JS51FFL",
"driver":"opchda",
"channel":"channel_KTfa7GzMsL",
"timestamp":"2020-11-25 08:29:49",
"values":[
{
"id":"2",
"name":"",
"desc":"",
"freq":"1000",
"compute":"no;",
"value":"[\n {\n \"time\":\"2020\\/11\\/24 15:05:01\",\n \"value\":\"\",\n \"quality\":\"bad\"\n },\n {\n \"time\":\"2020\\/11\\/24 15:05:11\",\n \"value\":\"\",\n \"quality\":\"bad\"\n },\n {\n \"time\":\"2020\\/11\\/24 15:05:21\",\n \"value\":\"\",\n \"quality\":\"bad\"\n },\n {\n \"time\":\"2020\\/11\\/24 15:05:31\",\n \"value\":\"\",\n \"quality\":\"bad\"\n },\n {\n \"time\":\"2020\\/11\\/24 15:05:41\",\n \"value\":\"\",\n \"quality\":\"bad\"\n },\n {\n \"time\":\"2020\\/11\\/24 15:05:51\",\n \"value\":\"\",\n \"quality\":\"bad\"\n }\n]",
"quality":"Good",
"address":"Random.Int4",
"time_start":"2020\/11\/24 15:05:01",
"time_end":"2020\/11\/24 15:06:01",
"aggregate":"8",
"num":"",
"aggregate_interval":"10"
},
{
"id":"1",
"name":"sdd",
"desc":"",
"freq":"1000",
"compute":"no;",
"value":"[\n]",
"quality":"Good",
"address":"Random.Money",
"time_start":"2020\/11\/25 15:05:01",
"time_end":"2020\/11\/25 15:07:01",
"aggregate":"0",
"num":"3",
"aggregate_interval":"10"
}
]
}
因为采集的是时序数据,所以这里的value输出就是一个json。
组件输入
请查看入门这一节