Solution detail

solutions

OPC client read-write software

logo.pngSOONOPC AGENT



软件下载地址https://soonec.com/opcda.htm



一款基于OPC2.0协议的数据采集与写入软件!

1、系统只采集发生变化的数据,不变化的数据不采集,采集数据格式为JSON;

2、可以实现只采集,不转发,采集后以文件保存,供第三方系统处理;

3、也可以一边采集一边转发到第三方HTTP接口,转发不成功会持续转发,直至转发成功为止;

4、可以实现HTTP接口写入,一次写入一项或多项;

5、软件采用C++语言开发,支持windows系统(在win7、win10、win11均测试过);

6、支持自动启动运行、支持自动读取和手动指定需要采集的数据项;

7、支持本机和远程连接方式。

8、支持断开自动重连机制,失败提示和添加项成功和失败提示。

9、支持采集频率设置。


3_2.png

3_4.png


采集临时结果存放于软件目录data/temp/目录下,如果不指定上报接口地址,将不会进行上报,如果指定上报地址,上报成功后,临时文件会进行自动删除

3-5.png


软件使用方法:

1、在软件目录data/config.ini文件里配置好相应信息

2、在软件目录/data/tags.txt里添加需要读取的标签,每行一个标签

3、运行SOONOPC.exe,并保持一直开着不要关闭(注意故障排除第4点);

4、软件退出方法,按CTRL+C


故障排除:

1、如果不能运行,请安装vc_redist.x86运行库;

2、本软件运行需要opc2.0组件支持,下载地址:https://soonec.com/opcda.htm

3、如果不能读写,检查tags.txt是否添加了相应的标签,如果不能写成功,请检查标签名称和值类型是否正确和OPC服务是否设置了允许该标签写权限;

4、如果设备不能连接到OPC服务系统,请检查电脑防火墙是否允许本软件端口通信、DCOM是否正确的访问权限,服务器地址、用户密码是否正确。

5、客户机要与OPC服务器有相同的用户名和密码,如果不是以OPC用户登录系统运行程序,可以用指定程序运行用户命令:runas /savecred /user:OPC运行用户名 SOONOPC.exe 


授权码获取(手机微信访问): https://soonec.com/opcda.htm


配置文件说明:

[SERVER]

#域,保持为空

domain=

#OPC服务器地址

host=192.168.1.100

#OPC访问用户

user=OPCUser

#OPC访问密码

pass=123456

#是否为远程连接,1为是,0为否

isremote=1

#是否开机自动运行,1为是,0为否

isautorun=1

#为设备编号,自动生成成,无须设置

devcode=XXXXX

#授权码,向服务商申请获取,根据电脑设备号授权

license=xxxxxx

[HTTP]

#http服务开启端口,为0或空则不开启

port=999

#http访问认证密钥,用于访问签名验证,为空则不验证;签名方式为:md5(请求内容+key),签名内容放在请求头里,请求头名称为sign

key=xxxx

#访问IP允许限制,为空则不限制;多个用逗号分隔

allowip=xxx.xxx.xxx.xxx,xxxx

[APIS]

#读到数据后上报的接口地址,上报数据格式为:[{"i":"itemid","v":"value","t":update_time}],如:[{"i":"tag1","v":"0","t":1664488888},{"i":"tag2","v":"0","t":1664488888}]

api_host=http://localhost

[ITEMS]

#OPC服务的ProgId

progid=KEPware.KEPServerEx.V6

#OPC服务的CLSID,不知道可不填写

clsid=xxx

#要读写的组名

group=grp1

#要读写的设备名称

item=dev1

#要匹配的标签名称前缀,多个用逗号隔开

itemstarts=Loop,_System

#是否自动获取OPC服务器标签,开启将自动获取OPC服务标签并覆盖tags.txt内容

autoitems=1

#自动获取OPC服务器标签频率,单位是秒

itemscf=60

#数据采集频率,单位是秒

cf=10

#在界面显示读到数据

showread=1


HTTP读写接口描述:

HTTP所有请求方式均为POST

如果有签名验证,在请求头里加上签名验证,签名请求头名称为:sign,签名方式为:md5(请求内容+key)

1、读所有标签项

请求内容:c=50&group=组名&item=项目名

如:c=50&group=通道 1&item=设备 1

正确响应结构:{"code":200,"data":["标签1","标签2","..."]}

失败响应结构:{"code":201,"msg":"xxxxx"}


2、读指定标签值

请求内容:c=30&group=组名&item=项目名&tags=标记1,标记2,...

如:c=50&group=通道 1&item=设备 1&tags=标记1,标记2

正确响应结构:{"code":200,"data":[{"i":"标签名1","v":"标签值1","t":更新时间1},{"i":"标签名2","v":"标签值2","t":更新时间2},{...}]}

如:{"code":200,"data":[{"i":"tag1","v":"99","t":1665251527},{"i":"tag2","v":"0","t":1665251527},{"i":"tag512","v":"66","t":1665251527}]}

失败响应结构:{"code":201,"msg":"xxxxx"}


3、写指定标签值

请求内容:c=40&group=组名&item=项目名&tagkvs=标记1:值1,标记2:值2,...

如:c=40&group=通道 1&item=设备 1&tagkvs=标记1:222,标记2:666

正确响应结构:{"code":200,"msg":"ok"}

失败响应结构:{"code":201,"msg":"xxxxx"}


采集效果:

3_3.png


HTTP接口案例:

java进行读写:

opc2.png


PHP进行读写:

opc1.png



软件下载地址https://soonec.com/opcda.htm