solutions
SOONOPC 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、支持采集频率设置。
采集临时结果存放于软件目录data/temp/目录下,如果不指定上报接口地址,将不会进行上报,如果指定上报地址,上报成功后,临时文件会进行自动删除:
软件使用方法:
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"}
采集效果:
HTTP接口案例:
java进行读写:
PHP进行读写:
软件下载地址:https://soonec.com/opcda.htm