零基础实现IEC61850(12)取代模型
零基础实现IEC61850(12)取代模型
概述
取代在众多模型中的使用的频率比较低,在正式运行的环境中几乎完全用不到取代功能,在IEC61850第一版取代模型和定值、报告等齐名,在7-2里有专门的介绍,但是在第二版7-2中删除了取代模型部分,不过其他相关文档中仍然保留了取代模型。取代本质上就是用一个数据属性值替代了另一个数据属性的值。但是并不是任意DA的值可以替代任意其他DA的值,这里面在7-3里面定义了固定的组合,可以详细查看。(搜索subEna找到包含取代模型的CDC)。
取代功能介绍
如下图:
1、图中中部的yx.subEna就像一个开关,当为True时,xy.stVal和xy.qt值通过ACSI接口可见的是yx.subVal和xy.subQ的值;
2、如果subEna为False时xy.stVal和xy.q值通过ACSI接口可见的是其本身的值。
取代的用途
取代都是针对状态值或测量值的,而状态值和测量值都是禁止客户端写入的,其值完全由实际设备状态或者采集的测量值决定,那么如果客户端希望状态值和测量值变成自己希望的值根本做不到,这个时候就需要取代的功能,将希望值写入对应的取代值,打开取代开关(取代使能)这样就达到了自己的目的,由于取代使能后取代值完全等价于被取代值数据属性的值,那么取代值的变化也完全等价于被取代数据属性值的变化,如果被取代值涉及报告、日志、goose等,则会触发相应动作。由于这个特性取代功能通常用于测试验证的场景。
建模准备
我们来查阅一下7-3,查找subEna,会发下你有很多CDC都包含了取代模型,根据个人喜好我选择了【整数状态 (INS)】,如下图:
图中,subVal值用于取代stVal值,subQ用于取代q值,subID用于记录取代使能的客户端身份,通常为IP地址。
下面我们再在7-4中查找INS,找到包含INS的逻辑节点类,发现有很多逻辑节点类都包含了INS,根据个人喜好我选了XCBR(断路器),如下图:
建模
建模工具直接访问云端版:
http://scl.yunxing.tech:8888
也可在该地址下载桌面版。
打开建模工具,新增逻辑节点XCBR
选择逻辑节点类后,按下面操作
如果添加逻辑节点类的时候忘记了上一步骤,也可以在建好的逻辑节点类中编辑DO,如图:
编码
无需特殊编码,只需启动服务端加载这个模型即可,样例代码已提交,可以直接使用。
测试
启动服务端,使用sim860工具客户端验证(注意MMS、CMS的匹配关系);
连接服务端,读取XCBR逻辑节点下的Opcnt数据,如下:
写入subVal,如下图:
查看Opcnt值
取代使能
查看Opcnt值
可尝试随意更新subVal和subQ,可以看到stVal和q始终和subVal和subQ一致。
以上就是取代的一个效果,除此之外,取代还会触发报告、日志、goose等动作,由于日志和goose尚未介绍,这里以报告为例。
继续建模
创建数据集
创建报告控制块
使用新模型启动服务端,使能报告控制块,如下图:
使能成功后,打开抓包工具,做取代的操作,可以看到取代使能时,如果取代值与状态值不一致则会触发数据变化动作,或者已经是取代使能状态,变化subVal则会触发stVal的数据变化。
小结
本文服务端可以切换CMS和MMS版本,注意启动配套的sim860客户端版本,操作完全相同,本例中抓包抓的是CMS报文,本文主要让大家对取到有一个了解。如果感兴趣可以尝试抓MMS报文,同时也可以打开报告的其他触发条件进行尝试等。