61850很久没有再次更新,今天再更新一版客户端的使用。同样,没有可视化的操作界面,只有终端式操作。但麻雀虽小五脏俱全,拥有最基本的遥信遥测数据,以及遥控定值。作为学习验证数据来说,已经足够了。

一、程序部署及使用

首先将附件解压至任意目录,如下所示

在运行之前,首先需要服务端的icd文件,放到本目录。比如就叫IEC61850.icd。会议前篇61850服务端的构建,icd文件是我们自己编写的。测试的时候,可以用我们提供的服务端程序进行快速自测。

其次需要了解的文件,是mmslite.json。内容如下:

里面的内容需要与实际icd内容一致,比如我们想读取jwjs.icd的服务端内容,那么这里的ICDName就填写jwjs.icd。

IEDName对应icd内容如下字段

accessPoint对应

ldConfig就是逻辑设备了,本demo支持多逻辑设备读取,按照数组形式正确填写即可

ldYcConfig就是就是遥测报告块的具体信息了,ldDevice指逻辑设备名称,对应

ycRpName及ycRptId分别对应

在填写时,要仔细检查,填错将无法正确订阅报告块,也就无法取得相应数据

遥信相关信息与遥测填写方法一致

ycReadTag为遥测对应的名字标签,一般为mag,但有个别厂商可能设置为其它值,对应配置如下:

环境监测的逻辑设备模型中的温度类型为CN_MV,我们进一步看其点的模型定义

此处为mag,当发现此处不一样时,可修改json中相应的配置

其实,这些信息都可以通过解析xml进行自动填充,demo就没去做这样的功能了,需要我们自己填写,这样也方便我们更加理解61850的相关概念

最后强调一点,本客户端是在线连接,ip也需要正确填写,对应如下

很多客户在提供icd文件时,这里的ip可能是乱填写的,当我们发现此处的ip与服务实际的ip不一致时,需要修改成一致。

当以上配置修改成功后,双击demo.exe即可运行,本demo可连续运行30分钟,时间到后,再次双击可继续运行。运行界面如下:

当连接服务成功后,会有绿色打印提示并且会有功能选项弹出,如果连接失败,就会出现相应错误,这时候就需要仔细检查相关配置了。

input func number:标识输入要测试的功能项,比如要获取遥测值,那么就输入1按回车

此处展示了数据节点名称以及对应的值,前面的数据点模型中,我们其实可以看到,一个数据点下有很多属性,比如除了值意外,还含有时间,品质等。但一般程序来说,读取到值就已经可以了。也就说此处的value节点名称以EnvHum举例,应为SENV1$MX$EnvHum$mag$f。至于这里为什么是这种形式的组成,可参考我前面的61850服务端构建的文章,此处不再详述。

定值测试:

可先获取定值列表,下发定值时会用到

domain varName value相信大家都能理解,按照前面获取的列表实际填写即可。regionNum可能不知道什么意思,这个是定值区间 ,一般来说我们填1即可。服务设置的定值区间数值,如下

代表服务最多支持3个区间

剩下的功能不一一介绍了,可以实际操作感受

二、二次开放

本次提供的附件支持二次开放,包含61850Client.h即可。

#ifndef __PLAT_61850CLIENT_H__
#define __PLAT_61850CLIENT_H__#ifdef WIN32
#include <process.h>
#else
#include <pthread.h>
#endif#include <map>
#include <vector>#ifdef __cplusplus
extern "C"
{
#endifbool start();
bool stop();
/// false表示未连接上
/// true表示连接上
bool getState();
std::map<std::string, double> getMeasureData();
std::map<std::string, char> getSignalData();/**
*@brief 获取域下面所有对象变量名字,形如SIMG1$MX$O2$mag$f
*@return map<std::string, std::vector<std::string>>
*key 域名(iedName + ldDevice)
*value vector存储所有当前域下面的有名变量列表
*/
std::map<std::string, std::vector<std::string>> getAllVarName();
/**
*@brief 获取域下面所有属于控制变量的名字是getAllVarName的细化
*@return map<std::string, std::vector<std::string>>
*key 域名(iedName + ldDevice)
*value vector存储所有当前域下面的控制变量列表
*@note 以oper结尾的属于直控方式,sbow为选控方式,cancel为取消,一般直控就可以
*/
std::map<std::string, std::vector<std::string>> getControlList();
/**
*@brief 下发控制命令
*@param domain 域
*@param varName 变量名(可从getControlList中拿到)
*@param value 下发控制的值
*@return bool 下发是否成功
*/
bool control(const std::string &domain, const std::string &varName, int value);
/**
*@brief 获取域下面所有属于定值变量的名字是getAllVarName的细化
*@param fc 功能约束,支持两种(SG,SE),一般为SE(表示可编辑定值组)
*@return map<std::string, std::vector<std::string>>
*key 域名(iedName + ldDevice)
*value vector存储所有当前域下面的定值变量列表
*/
std::map<std::string, std::vector<std::string>> getPulseList(const std::string &fc="SE");
/**
*@brief 下发定值命令
*@param domain 域
*@param varName 变量名(可从getPulseList中拿到)
*@param value 下发定值的值
*@param setrange 定值区间号
*@return bool 下发是否成功
*/
bool pulse(const std::string &domain, const std::string &varName, int value, int setrange);
/**
*@brief 获得节点变量的值
*@param domain 域
*@param varName 变量名(可从getPulseList中拿到)
*@param value 获取遥调值
*@return bool 获取是否成功
*@note 理论上getAllVarName节点最深的一层值都可以获取,但注意传入value指针的类型。比如获取一个浮点值
那么value应为浮点型变量的地址,如果为字符串,那么传入的是char数组。尤其注意,value不支持c++类型的变量传入,比如string。
*/
bool getVarValue(const std::string &domain, const std::string &varName, void *value);/**
*@brief 设置定值区间的值
*@param domain 域
*@param varName 变量名(可从getPulseList中拿到)
*@param value 设置下发的值
*@return bool 设置是否成功
*/
bool setVarValue(const std::string &domain, const std::string &varName, int value);#ifdef __cplusplus
}
#endif#endif /* ifndef __PLAT_61850CLIENT_H__ */

大家可基于此,开发一些图形界面操作等。

在调用其它接口前,需调用start启动相应服务

开发需要注意的是,得基于mingw64进行开发,不能基于vs studio。两者符号不兼容。参考编译指令如下

g++ ./demo.cpp -o ./demo -I ./ -L. -lProtCollIEC61850

程序下载路径

61850客户端,支持遥信遥测以及遥控定值等操作-C++文档类资源-CSDN下载

关于61850问题或需求定制请联系微信号HardAndBetter,或者进qq群586166104讨论。

61850客户端软件构建相关推荐

  1. CentOS/用FTP客户端软件连接到服务器

    在用ProFTPD构建FTP服务器的时候,为了全力保证文件传输时的安全,我们对FTP服务器进行了尽可能保密.安全的配置.比如TLS,并为服务器建立证书(SSL)等等的手段.这也决定了,在这些条件下,F ...

  2. 基于开源软件构建高性能集群NAS系统

    大数据时代的到来已经不可阻挡,面对数据的爆炸式增长,尤其是半结构化数据和非结构化数据,NoSQL存储系统和分布式文件系统成为了技术浪潮,得到了长足的发展.非结构化数据目前呈现更加快速的增长趋势,IDC ...

  3. 客户端软件GUI开发技术漫谈:原生与跨平台解决方案分析

    原生开发应用开发 Microsoft阵营的 Winform WinForm是·Net开发平台中对Windows Form的一种称谓. 如果你想深入的美化UI,需要耗费很大的力气,对于目前主流的CSS样 ...

  4. python客户端软件开发_妙小程python客户端

    妙小程python客户端官方版是一款由妙小程开发的学习Python课程的学习软件,妙小程python客户端最新版软件拥有丰富代码库,编程更加酷炫,妙小程python客户端集有趣.高科技.有温度于一身, ...

  5. 4G图传移动视频取证-可视安全生产监管-常见问题解答FAQ-1,C/S客户端软件常用操作

    适用产品: 4G智能安全帽.头盔摄像头.4G执法记录仪.4G/5G布控球.4G图传智能手电.智能眼镜.各类4G DVR/NVR.无人机4G/5G补传等,统一接入 大型可视指挥调度平台VMS/smart ...

  6. [electron] 01 一分钟web应用秒变客户端软件(附原理及其他各种打包方案)

    文章目录 导读 操作步骤 原理 下载预构建可执行文件 文件结构(Windows&Linux下) 修改main.js访问指定入口文件 打包指定URL 打包asar文件 electron其他打包方 ...

  7. 客户端软件更新策略 QCryptographicHash

    一.说明 互联网公司客户端软件升级通常分为: 普通升级 (判断条件是软件版本号) 增量升级 全量升级 强制升级 全量升级 灰度升级 1.根据灰度策略,命中的客户端提示升级 版本升级的判断依据是版本号及 ...

  8. 亚信联创公用研发中心WAP2.0手机客户端软件开发

    今天公司老板给我转发了一个邮件,这个邮件的意思是明天公用产品线下的wap2.0开发团队经理会跟我聊聊,应该就是要聊关于公司手机客户端的一个项目wap2.0的用户体验设计工作,会给到我手里,看到这个邮件 ...

  9. VC开发Windows客户端软件之旅——前言

    从第一次拖着行李入京找活,至今已工作若干年了.这些年一直追逐自己的梦想,跑过三个城市,换了三份工作,认识了很多业内的朋友.和朋友们闲聊时,发现很多人都已经不再做客户端软件了.有的转去做管理,有的转去做 ...

  10. MySQL数据库介绍、安装(服务端软件安装、客户端软件安装(图形化界面客户端和命令行客户端))

    1. MySQL数据库的介绍 MySQL是一个关系型数据库管理系统,在 WEB 应用方面,MySQL是最好的 RDBMS (Relational Database Management System, ...

最新文章

  1. 河南科技大学c语言章节作业答案,河南科技大学C语言试题
  2. 计算机考试不用输入扩展名吗,本周末的 计算机等级考试,如果不想考0分,一定要花2分钟看完...
  3. SAP推出SAP Digital Boardroom
  4. py-faster-rcnn + ZF 实现自己的数据训练与检测(一)
  5. php正则表达式,数组,函数
  6. http://blog.chinaunix.net/uid-25082381-id-3242162.html
  7. JavaScript实现数据分页
  8. IDEA中修改自动生成的Servlet模板,提高编码效率
  9. js 接收 json格式的字符串
  10. 学python心得体会800字-Python初学心得体会
  11. quartus仿真17:T触发器的时序逻辑电路
  12. linux 6.7 ifcfg eth0,centos 的ifcfg-eth0只有只读权限,怎么修改其内容呢?
  13. Unity2017安装
  14. 用css制作网站首页
  15. C# 实现屏幕键盘 (ScreenKeyboard)
  16. centos7.5 挂载超过2T的大硬盘步骤
  17. 关于以太网没有有效的ip配置问题解决方法
  18. 移动端事件--touch事件的分类、touch事件的event对象、 其他触摸事件
  19. 天津计算机专业专科大学排名,天津的计算机专业大学排名
  20. 《Microduino实战》——3.2 “Hello World!”—— 开启编程之旅

热门文章

  1. 计算机毕业论文画图软件,计算机科学与技术专业毕业论文(绘图软件的设计).doc...
  2. DB2 SqlCode对照表
  3. 看拉扎维《模拟CMOS集成电路设计》的一些总结和思考(十)——稳定性与频率补偿
  4. Podfile.lock
  5. 大唐杯 5G协议与信令 任务六、任务七(24:30-35:00)
  6. LAMP架构之4——MySQL源码编译及使用
  7. ArcGIS知乎干货教程大集合
  8. Oracle项目管理系统的BIM应用
  9. 私教课程 Day2 2017-09-14
  10. 计算机报名中的照片审核总不过,软考报名时,照片审核难通过怎么办?