国产CMS61850那些事-服务端

news2024/10/6 1:38:48

        前面两篇文章国产CMS61850那些事-总述_LinuxZQ的博客-CSDN博客,cms61850那些事-实现_LinuxZQ的博客-CSDN博客分别对国产61850做了一些简单介绍和相关实现。本文接着给大家提供一款服务端demo,可以用来进行抓包等相关学习。

        与之前分享的mms 61850一样,仍然以终端式的软件提供。不过这次没有提供windows下的软件测试了,本demo基于x86 linux下运行,系统要求ubuntu18.04及以上。其它debian,centos未进行测试,如果无法运行,可联系作者协助解决。

一、程序可测试范围

        本demo提供模数据, 缓存及非缓存报告,遥控,定值。不含goose及文件,rpc测试。

二、程序部署

        在此处下载cms61850服务端测试demo 国产61850服务端,将附件解压至任意目录,解压后文件如下:

        config文件夹为配置所在,基本上我们只需要关注./config/CMS61850/cms.json

        default默认配置,用户不需要关心及修改      

        gmssl为国密证书,验收国密时需要

        Lib为运行所需要的动态库

        Main为主测试程序

        run.sh为运行脚本,测试程序时,只需要执行这个脚本即可

三、程序配置介绍

        首先介绍我们的关键配置cms.json

{
	"CMS61850" : 
	{
		"associate" :   ---->配置协商参数的
		{
			"apduSize" : 65535, ---->apdu大小
			"asduSize" : 65531,  ---->asdu大小
			"protocol" : 513,  ---->协议版本,仅支持513
			"safe" :   ---->安全参数
			{
				"application" :   ---->应用层安全
				{
					"enable" : true,  ---->是否使能
					"rootCA" : "./gmssl/sm2.ca.pem",   ---->根域名
					"serverCert" : "./gmssl/sm2.PNC.sig.crt.pem",  ---->服务端证书
					"serverKey" : "./gmssl/sm2.PNC.sig.key.pem"  ---->客户端证书
				}
			},
			"timeDiff" : 600  ---->校验时间差值
		},
		"connectNum" : 16,  ---->支持最大的客户端连接数
		"errorNum" : 4,   ---->最大支持错误的交互次数
		"icdPath" : "./config/CMS61850/IEC61850.icd",  ---->icd文件目录
		"port" : 8102,  ---->端口
		"transport" :   ---->tls加密参数,暂不支持
		{
			"enable" : false,
			"encCert" : "./gmssl/encCert.pem",
			"encPass" : "./gmssl/encPass.pem",
			"rootCA" : "./gmssl/rootca.pem",
			"sigCert" : "./gmssl/sigCert.pem",
			"sigPass" : "./gmssl/sigPass.pem"
		}
	}
}

        本demo中提供了一个简单的icd文件,若是替换自己的icd文件进行测试,可修改cms.json文件中的icdPath字段即可

        datamap.cfg

        本文件程序运行时会自动生成,参考了mmslite的概念,对icd文件中的节点进行了规整输出,方便用户进行查看和相关测试。内容如下

        

        其中第一列为icd文件中的域,由iedName + ldName组成

        第二列为具体的节点信息

        第三列为节点的数据类型

 四、程序运行

        本demo已内置了一个月的运行权限,从本文发布的事件开始算的,若后面下载的同学无法运行了,可联系作者获取license。

        打开linux下终端,切入程序解压的目录,执行./run.sh即可

        程序内置了控制接口,运行后按回车键,按提示依次输入用户名密码,用户名admin 密码admin123。

        

验证成功后,会出现#提示符。我们可以输入指令进行节点值的更新,比如在使能非缓存报告块的情况下,更新节点的值(这个节点就可以从datamap.cfg文件中找)。目前仅支持stVal, mag.f, mag.i节点类更新,以程序中的datamap为例,若更新

         

则输入指令如下

        cms61850 KHPDFMONT airGGIO6.1 stVal 1

        

可以看出,值更新后,发送了相应的报告事件。

指令一共分为五段,解释如下:

cms61850 功能名称

KHPDFMONT datamapcfg中的域

airGGIO6.1 数据点名称

stVal 数据点下的节点名称

1 值

当值成功更新后,airGGIO6.1下的q及t会自动更新

若再以更新airGGIO6.tmp.mag.f为例,只需要输入 

cms61850 KHPDFMONT airGGIO6.tmp mag.f 1.89 即可

定值测试,模拟下发YT2的值为18,用户基于SDK开发,只需要注册相应的回调函数,即可进行相应处理

遥控测试,YK1点的位置,若下发的遥控位置与当前状态相同,则会报position reached的错误

若是位置不同,则会上报成功

 

遥控存在的错误原因会比较多,比如SBO的点,未选择直接控制,会报错,或者选择的值与实际遥控的值不一致也会报错等 

 五、总结

        更多的功能,文章中就不再展示了,用户可以自己多多测试。程序部分开源实现见

        https://github.com/LinuxZQ93/CMS61850

        

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/462161.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

如此这般,好吗?

让我们回顾一下 Linux 社区最新的愿景——推动去中心化的应用来解决发行版的碎片化。继上周的文章:“Snap、Flatpak 这种通吃所有发行版的打包方式真的有用吗?” 之后,一系列新观点浮出水面,其中可能包含关于这样应用是否有用的重…

Vmware安装Ubuntu出现 unable to find a medium containing a live file system

一、前言 由于未知的原因,使用Vmware安装Ubuntu的时候,总是遇到奇怪的问题。(忘记截图了…) 大致是: unable to find a medium containing a live file system找了几个帖子,参考1、参考2,但都…

GPT模型成功的背后用到了哪些以数据为中心的人工智能(Data-centric AI)技术?

人工智能(Artificial Intelligence, AI)最近取得了巨大的进展,特别是大语言模型(Large Language Models, LLMs),比如最近火爆全网的ChatGPT和GPT-4。GPT模型在各项自然语言处理任务上有着惊人的效果。至于具…

JAVA Future类详解及Thread线程是如何运行Future类的

一、Future基本介绍 Future(java.util.concurrent Interface Future<V>)表示异步计算的结果。Future接口提供了检查计算是否完成、检查计算是否被取消、等待计算完成并获取计算结果等方法。 在并发编程中&#xff0c;我们经常用到非阻塞的模型&#xff0c;但继承thread类…

基于 SpringBoot+Vue+Java 的留守儿童系统的研究与实现(附源码,教程)

文章目录 1.研究背景2. 技术栈3.系统分析4系统设计5系统的详细设计与实现5.1系统功能模块5.2管理员功能模块 1.研究背景 以往的留守儿童爱心的管理&#xff0c;一般都是纸质文件来管理留守儿童爱心信息&#xff0c;传统的管理方式已经无法满足现代人们的需求&#xff1b;使用留…

[激光原理与应用-69]:激光器-器件 - 三极管

第1章 什么是三级管 三极管&#xff0c;全称应为半导体三极管&#xff0c;也称双极型晶体管、晶体三极管&#xff0c;是一种控制电流的半导体器件。其作用是把微弱电流信号放大成幅度值较大的电流信号&#xff0c;也用作无触点开关。电流信号经过电阻后&#xff0c;就变成了电压…

ARM嵌入式编译器编译优化选项 -O

Arm嵌入式编译器可以执行一些优化来减少代码量并提高应用程序的性能。不同的优化级别有不同的优化目标&#xff0c;不仅如此&#xff0c;针对某个目标进行优化会对其他目标产生影响。比如想减小生成的代码量&#xff0c;势必会影响到该代码的性能。所以优化级别总是这些不同目标…

Python中 re.findAll()、re.sub()、set()的使用

1. re.findall() re.findall()&#xff1a;函数返回包含所有匹配项的列表。返回string中所有与pattern相匹配的全部字串&#xff0c;返回形式为list / 数组。 由函数原型代码可知&#xff0c;findall() 函数存在三个参数&#xff1a; 1. pattern&#xff1a;正则表达式中的 ‘模…

RK3568平台开发系列讲解(驱动基础篇)IO 模型的分类

🚀返回专栏总目录 文章目录 一、阻塞 IO二、非阻塞 IO三、IO 多路复用四、信号驱动五、异步 IO沉淀、分享、成长,让自己和他人都能有所收获!😄 📢本篇将针对IO模型进行分类。 假设有这样一个场景,从磁盘中循环读取 100M 的数据并处理,磁盘读取 100M 需要花费 20 秒的…

HR真的会嫌弃跳槽频繁的测试人员吗?

我们都知道&#xff1a;“跳槽≠涨薪”&#xff0c;但是对于测试人来说&#xff0c;跳槽绝哔能和升职加薪画上等号啊。 所以&#xff0c;有很多测试人在一家公司常常待不到1年&#xff0c;就另觅新东家&#xff0c;来借此达成升职加薪的目的。 有人提出质疑&#xff1a;为什么测…

【老王读SpringMVC-2】url 与 controller method 的映射关系注册

上文提到&#xff0c;如果我们自己要实现 spring mvc 框架的话&#xff0c;大致需要实现如下功能&#xff1a; 0、将 url 与 Controller method 的对应关系进行注册1、通过请求的 url 找到 Controller method (即 url 与 Controller method 的映射)2、将请求参数进行绑定&…

【python中的迭代器了解一下?】

基本说明 在 Python 中&#xff0c;迭代器是一种用于遍历可迭代对象&#xff08;如列表、元组、字符串等&#xff09;的方式。迭代器提供了一种简洁而有效的方法来遍历序列&#xff0c;而不需要创建临时变量或使用循环语句。 在 Python 中&#xff0c;迭代器是一个实现了 __i…

没有U盘电脑如何使用本地硬盘安装Ubuntu20.04(双系统)

环境: DELL7080台式机 Ubuntu20.04 两块硬盘 问题描述: 没有U盘电脑如何使用本地硬盘安装Ubuntu20.04(双系统) 解决方案: 一、下载镜像文件 1.上线自行下载安装镜像文件 二、分区 1.win10下磁盘管理压缩2个分区一个10G左右制作安装盘,一个几百G安装系统使用 10…

【Android入门到项目实战-- 7.1】—— 如何使用通知?

目录 一、创建通知的步骤 1、创建一个NotificationManager实例 2、使用一个Builder构造器来创建Notification对象 3、设置标题、文字、时间和图标等信息 4、显示通知 二、通知实例演示 三、实现通知的点击效果 1、PendingIntent 什么是PendingIntent&#xff1f; 如何使…

后台-husky提交代码规范使用

husky是一个git hook工具&#xff0c;可以帮助我们触发git提交的各个阶段&#xff1a;pre-commit、commit-msg、pre-push 1.如何使用husky呢&#xff1f; npx husky-init && npm installWindows安装不成功试试npx husky-init && npm install 2.git commit规范…

线索二叉树的前序遍历

线索二叉树原理 遍历二叉树的其实就是以一定规则将二叉树中的结点排列成一个线性序列&#xff0c;得到二叉树中结点的先序序列、中序序列或后序序列。这些线性序列中的每一个元素都有且仅有一个前驱结点和后继结点。 但是当我们希望得到二叉树中某一个结点的前驱或者后继结点时…

计算机组成原理---第 6 章总线系统

一、总线的概念和结构形态 总线的基本概念 ⑴概述 总线是构成计算机系统的互联机构&#xff0c;是多个系统功能部件之间进行数据传送的公共通路。 ⑵ 分类 总线的分类方式有很多&#xff1a;如被分为外部总线和内部总线、系统总线和非系统总线、片内总线和PCB板级总线、串行…

VS2022+opengl环境配置

glfw下载Download | GLFW glad下载https://glad.dav1d.de/ Freeglut下载 https://freeglut.sourceforge.net/index.php#download cmake下载 Download | CMake glfwFreeglut 用cmake配置Freeglut&#xff0c;生成vs工程项目&#xff0c;用vs2022编译项目&#xff0c;生成fr…

27.Spring的事务控制

目录 一、编程式事务控制相关对象。 &#xff08;1&#xff09;事务管理器。 &#xff08;2&#xff09;事务定义信息对象&#xff08;如隔离级别、传播行为&#xff09;。 &#xff08;3&#xff09;事务状态对象。 &#xff08;4&#xff09; 知识要点。 二、声明式事务…

基于STM32的开源简易示波器项目

目录 ​一、前言 二、硬件接线 三、信号的采集 四、代码配置 五、数据的处理 六、模拟正弦波输出 七、模拟噪声或三角波输出 八、显示函数与按键控制 ​一、前言 该项目是基于正点原子精英板制作的一个简易示波器&#xff0c;可以读取信号的频率和幅值&#xff0c;并可…