iHD OPCUA SERVER 数据发布服务

Navigation:  功能明细 > 数据接口 >

iHD OPCUA SERVER 数据发布服务

Previous pageReturn to chapter overviewNext page

实时数据库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点表到本地;

iHD_OPCUA_SERVER 01

 

2)将需要进行opcua发布的tag点属性列中的“保留参数1”,修改值为“1”;

iHD_OPCUA_SERVER 02

 

3)完成修改后,重新上传tag点表;

iHD_OPCUA_SERVER 03

 

3.启用hdopcua数据发布服务

点击目录下的“数据节点服务管理工具”,如下图:

iHD_OPCUA_SERVER 04

 

在数据节点服务管理工具的“进程管理”中可查看实时数据库OPCUA发布服务(hdOpcua)状态,以及启动/停止服务,如下图:

iHD_OPCUA_SERVER 05

 

4.通过第三方opc客户端(Softing OPC Client)测试连接

打开Softing OPC Client,点击左侧add session选项,在弹出的对话框中,Endpoint Url输入框中输入连接的opcua服务地址,如下图所示:

iHD_OPCUA_SERVER 06

Endpoint Url填写我们OPCUA SERVER的地址,如第三方opc客户端安装运行于服务器本地,则该项参数可以写作“opc.tcp://127.0.0.1:4430”;如果运行在异地,则该项参数可以写作“opc.tcp://opcua服务器ip:4430”。

点击ok后,如果连接正常,可以在服务的Objects选项下看到该opcua服务中发布的tag点,如下图:

iHD_OPCUA_SERVER 07

通过双击上图相应tag点,可以订阅相应tag点的实时记录值,在DataAccess选项下可以查看相应tag点的实时记录值,其中Source Timestamp对应ihd中的时间戳。如下图所示:

iHD_OPCUA_SERVER 08

 

5.通过iPlat-BA OPCUA 驱动测试连接

1)添加OPCUA驱动

首先,配置好相应的iPlat-BA SCADA节点。

iHD_OPCUA_SERVER 09

点击SCADA节点下的“驱动配置”,进入驱动配置页面。鼠标置于页面的左上方,如下图,可以看到“添加驱动”的按钮,点击“添加驱动”,弹出可用驱动的选择对话框,在可用驱动列表中,选择OPCUA驱动所对应的“opcuadrv”,然后点击“确定”。

iHD_OPCUA_SERVER 10

 

签出该驱动,点击“保存”按钮。

iHD_OPCUA_SERVER 11

 

弹出OPCUA驱动配置的主界面,填写opcua服务器地址,保存并签入已修改配置。

iHD_OPCUA_SERVER 12

 

2)服务器配置

添加服务器。在驱动配置界面上,右键点击树控件列表中的驱动名称节点,弹出右键菜单,选择“添加设备”,如下图:

iHD_OPCUA_SERVER 13

在点击了“添加服务器”之后,会弹出“添加OPCUAServer”的对话框,在这个对话框中,填写opcua服务器的信息:

iHD_OPCUA_SERVER 14

 

3)组配置

在驱动配置界面上,右键点击树控件列表中的服务器名称节点,弹出右键菜单:

iHD_OPCUA_SERVER 15

选择“添加数据块”,弹出组配置对话框:

iHD_OPCUA_SERVER 16

填写相应参数,参数说明:

名称: 不能为空,且不能重复。可输入1-31个字符;

描述: 可输入0-63个字符;

任务号:

IO方式:包含异步和同步两个选项;

轮询周期:只在I/O方式为同步读取时可配,为OPCUA客户端到服务器读数据的周期。在1ms-24H之间,必须是100的正整数倍。默认值:同步时值为1秒;异步时值为50秒。

异步超时:只在I/O方式为异步读取时可配,在1ms-24H之间,必须是100的正整数倍。值必须大于轮询周期。默认值:1000秒 。

以上,完成配置,点击保存按钮,系统增加该组。

 

4)节点配置

a)在驱动配置界面,左键点击树控件列表中的组名称节点,弹出设备信息:

iHD_OPCUA_SERVER 17

 

b)选择“编辑节点”选项,弹出节点对话框:

iHD_OPCUA_SERVER 18

 

c)点击“节点ID”左上方的“增加”按钮,系统会将该节点添加到界面右侧的列表中。可以使用ctrl或者shift键选择多个点进行批量添加。

d)在列表中,选择一条或多条记录,右上方删除按钮可用,点击“删除确定”弹出删除对话框,选择确定从列表中删除。可以使用ctrl或者shift键选择多个点进行批量删除。

e)点击保存按钮,将界面列表中的记录保存,并显示在界面列表中。

注意:节点ID即变量的地址,格式为:NS1|String|***,***表示ihd中的tag点名称。变量类型与数据类型请根据实际类型进行选择。

 

5)OPCUA变量配置

配置好opcuadrv的驱动后,需要在驱动的设备变量管理中添加相应变量,见下图:

iHD_OPCUA_SERVER 19

 

变量也可以通过excel文件批量导入导出,见下图:

iHD_OPCUA_SERVER 20

 

注意:变量的名称即为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>