实时数据库V3.7.5版本开始提供OPCUA Server数据发布功能,OPCUA数据发布服务hdopcua可将实时数据库中的tag点,以OPCUA方式发布。
1.安装OPCUA Server
实时数据库V3.7.5版本安装完成,自带OPCUA数据发布服务hdopcua。该服务运行在iHyperDB数据库服务端。实时数据库V3.7.5版本安装完成后,需要对配置文件hdopcua.xml部分参数根据项目实际情况进行修改。
ihdopcua数据发布服务的配置文件hdopcua.xml保存在ihyperdb\executable_x64 下,配置文件如下:
<?xml version="1.0" encoding="utf-8"?>
<Cfg>
<TargetHD mainip="10.25.14.231" mainport="5673" backupip="" backupport=""/>
<hdopcua opcuaport = "4430" cyclerate = "10" />
</Cfg>
参数说明:
TargetHD:目的ihd配置;
❖mainip:主机IP,安装后请照实修改;
❖mainport:主机端口,默认为“5673”;
❖backupip:备机IP,如有可照实填写;
❖backupport:备机端口,默认为“5673”;
hdopcua:opcua服务相关配置;
❖opcuaport:opcua服务发布端口号,默认为“4430”,opcua服务发布的ip地址即为本机ip地址;
❖cyclerate:从opcua数据发布服务获取数据的周期时间,单位为ms。
2.通过Excel插件配置修改Tag点表,批量方式修改OPCUA发布状态。
实时数据库中tag点是否开启opcua发布,是通过修改tag点表中“保留参数1”项目值来定义。值为“0”表示不通过opcua发布,值为“1”表示可通过opcua发布。
1)通过excel插件,点击下载tag点表到本地;
2)将需要进行opcua发布的tag点属性列中的“保留参数1”,修改值为“1”;
3)完成修改后,重新上传tag点表;
3.启用hdopcua数据发布服务
点击目录下的“数据节点服务管理工具”,如下图:
在数据节点服务管理工具的“进程管理”中可查看实时数据库OPCUA发布服务(hdOpcua)状态,以及启动/停止服务,如下图:
4.通过第三方opc客户端(Softing OPC Client)测试连接
打开Softing OPC Client,点击左侧add session选项,在弹出的对话框中,Endpoint Url输入框中输入连接的opcua服务地址,如下图所示:
Endpoint Url填写我们OPCUA SERVER的地址,如第三方opc客户端安装运行于服务器本地,则该项参数可以写作“opc.tcp://127.0.0.1:4430”;如果运行在异地,则该项参数可以写作“opc.tcp://opcua服务器ip:4430”。
点击ok后,如果连接正常,可以在服务的Objects选项下看到该opcua服务中发布的tag点,如下图:
通过双击上图相应tag点,可以订阅相应tag点的实时记录值,在DataAccess选项下可以查看相应tag点的实时记录值,其中Source Timestamp对应ihd中的时间戳。如下图所示:
5.通过iPlat-BA OPCUA 驱动测试连接
1)添加OPCUA驱动
首先,配置好相应的iPlat-BA SCADA节点。
点击SCADA节点下的“驱动配置”,进入驱动配置页面。鼠标置于页面的左上方,如下图,可以看到“添加驱动”的按钮,点击“添加驱动”,弹出可用驱动的选择对话框,在可用驱动列表中,选择OPCUA驱动所对应的“opcuadrv”,然后点击“确定”。
签出该驱动,点击“保存”按钮。
弹出OPCUA驱动配置的主界面,填写opcua服务器地址,保存并签入已修改配置。
2)服务器配置
添加服务器。在驱动配置界面上,右键点击树控件列表中的驱动名称节点,弹出右键菜单,选择“添加设备”,如下图:
在点击了“添加服务器”之后,会弹出“添加OPCUAServer”的对话框,在这个对话框中,填写opcua服务器的信息:
3)组配置
在驱动配置界面上,右键点击树控件列表中的服务器名称节点,弹出右键菜单:
选择“添加数据块”,弹出组配置对话框:
填写相应参数,参数说明:
❖名称: 不能为空,且不能重复。可输入1-31个字符;
❖描述: 可输入0-63个字符;
❖任务号:
❖IO方式:包含异步和同步两个选项;
❖轮询周期:只在I/O方式为同步读取时可配,为OPCUA客户端到服务器读数据的周期。在1ms-24H之间,必须是100的正整数倍。默认值:同步时值为1秒;异步时值为50秒。
❖异步超时:只在I/O方式为异步读取时可配,在1ms-24H之间,必须是100的正整数倍。值必须大于轮询周期。默认值:1000秒 。
以上,完成配置,点击保存按钮,系统增加该组。
4)节点配置
a)在驱动配置界面,左键点击树控件列表中的组名称节点,弹出设备信息:
b)选择“编辑节点”选项,弹出节点对话框:
c)点击“节点ID”左上方的“增加”按钮,系统会将该节点添加到界面右侧的列表中。可以使用ctrl或者shift键选择多个点进行批量添加。
d)在列表中,选择一条或多条记录,右上方删除按钮可用,点击“删除确定”弹出删除对话框,选择确定从列表中删除。可以使用ctrl或者shift键选择多个点进行批量删除。
e)点击保存按钮,将界面列表中的记录保存,并显示在界面列表中。
注意:节点ID即变量的地址,格式为:NS1|String|***,***表示ihd中的tag点名称。变量类型与数据类型请根据实际类型进行选择。
5)OPCUA变量配置
配置好opcuadrv的驱动后,需要在驱动的设备变量管理中添加相应变量,见下图:
变量也可以通过excel文件批量导入导出,见下图:
注意:变量的名称即为ihd中tag点名称,变量地址格式为NS1|String|***,***表示ihd中的tag点名称。注意变量类型与ihd数据类型的匹配。
6)驱动配置文件 opcuadrv.xml 如下:
<?xml version="1.0" encoding="GB2312" ?>
<driver name="opcuadrv" type="item">
<device name="opcua_test1" conntype="other" connparam="opc.tcp://localhost:4840" recvtimeout="1000" param3="" param2="1000000" param1="0" cyclerate="1000" task="1" desc="">
<datablock address="NS1|String|midvar_1" name="NS1|String|midvar_1" elemcount="1" elembytes="2" param1="Word" param2="AI" param3="0" />
<datablock address="NS1|String|midvar_aifloat" name="NS1|String|midvar_aifloat" elemcount="1" elembytes="4" param1="Float" param2="AI" param3="6" />
<datablock address="NS1|String|midvar_blob" name="NS1|String|midvar_blob" elemcount="1" elembytes="256" param1="String" param2="TXT" param3="-1" />
<datablock address="NS1|String|midvar_di" name="NS1|String|midvar_di" elemcount="1" elembytes="1" param1="Boolean" param2="DI" param3="-1" />
<datablock address="NS1|String|midvar_txt" name="NS1|String|midvar_txt" elemcount="1" elembytes="256" param1="String" param2="TXT" param3="-1" />
<datablock address="NS1|String|midvarai32" name="NS1|String|midvarai32" elemcount="1" elembytes="4" param1="DWord" param2="AI" param3="2" />
</device>
<device name="opcua_test2" conntype="other" connparam="opc.tcp://localhost:4840" recvtimeout="1000" param3="" param2="600000" param1="1" cyclerate="50000" task="2" desc="test">
<datablock address="NS0|Numeric|7650" name="NS0|Numeric|7650" elemcount="1" elembytes="256" param1="String" param2="TXT" param3="-1" />
<datablock address="NS0|Numeric|7656" name="NS0|Numeric|7656" elemcount="1" elembytes="256" param1="String" param2="TXT" param3="-1" />
</device>
</driver>