国产CMS61850那些事-服务端

文章提供了国产CMS61850服务端的Demo,适用于Linux环境,支持模型数据、缓存报告、遥控和定值测试。Demo包含配置介绍、运行方法和示例,便于用户进行学习和测试。用户可以自行替换icd文件并使用提供的控制接口进行节点值更新和遥控操作。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

        前面两篇文章国产CMS61850那些事-总述_LinuxZQ的博客-优快云博客cms61850那些事-实现_LinuxZQ的博客-优快云博客分别对国产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

        

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值