博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
通过iec61850协议访问设备数据的一个例子
阅读量:7122 次
发布时间:2019-06-28

本文共 1246 字,大约阅读时间需要 4 分钟。

  hot3.png

.

. 客户端程序参考example/iec61850_client_example1

. 服务器使用example/server_example3

数据定义参考simpleIO_sbo_control.icd文件;

客户端读取一个<LNodeType.DO>

使用函数IedConnection_readObject, 定义如下

MmsValue* IedConnection_readObject(IedConnection self, 		IedClientError* error, 		char* objectReference,		FunctionalConstraint fc);

        

1. objectReference构造规则为,
    (参考对应的icd文件)
    s1 = <IED name="111"
    s2 = <IED->AccessPoint->Server->LDecive inst="222"
    s3 = <DataTypeTemplates->LNodeType id="333"
    s4 = <DataTypeTemplates->LNodeType->DO name="444" type="???"
    若type为struct, 则找到该struct定义处, 继续对其中某个项的引用
    s5 = <DataTypeTemplates->DOType name="???"->DA name="555"
最终的引用路径为
    "111222/333.444.555"
    
2. fc属性
    enum eFunctionalConstraint
    具体指定时, 应与icd文件中对象读取项所定义的fc属性一致, 否则读取会不正确;

3. 代码示例

    . icd定义部分

<IED name="TEMPLATE"
    <AccessPoint
        <LDecive inst="LD1"
            <LN InClass="LCSM" InType="LCSM1"

<DataTypeTemplates>

    <LNodeType id="LCSM1"
        <DO name="HostTimeRef" type="INS_1_Alm"
        
    <DOType id="INS_1_Alm"
        <DA name="stVal" bType="INT32" fc="ST"

. coding

MmsValue *pv = IedConnection_readObject(con, &error, "TEMPLATELD1/LCSM1.HostTimeRef.stVal", ST);	if(pv != NULL) {		int32_t v = MmsValue_toInt32(pv);		printf("read int32 value: %d, type=%d\n", v);		MmsValue_delete(pv);	}	...

 

转载于:https://my.oschina.net/laozh/blog/895858

你可能感兴趣的文章
[转]没有找到 MFC42D.DLL,因此这个应用程序未能启动。重新安装应用程序可能会修复此问题。解决方法!...
查看>>
我再也不-或许永远不-用zend studio-受够了!
查看>>
软件工程(2019)第三次作业
查看>>
Java性能调优
查看>>
第 6 章 存储 - 039 - Data Volume 之 bind mount
查看>>
异步IO
查看>>
MySQL
查看>>
【转】Linux内核结构详解
查看>>
DevExpress学习03——label控件的背景色问题
查看>>
Cass环境下光标无显示
查看>>
linux系统监控命令汇总
查看>>
谷歌:全球10大爬升最快搜索关键字排行榜 Google Zeitgeist 2011
查看>>
firewalld 极速上手指南
查看>>
纪念我人生中第一个merge into语句
查看>>
团队报告
查看>>
Linux下启动mongodb
查看>>
java中子类实例化过程中的内存分配
查看>>
二叉树——数据结构课堂作业
查看>>
scp 命令
查看>>
springmvc+mybatis多数据源配置,AOP注解动态切换数据源
查看>>