libiec61850学习1
iec61850_client_example1的例子
- client_example1.c的文件最上边注释,/*
- client_example1.c
- This example is intended to be used with server_example_basic_io or server_example_goose.
*/
在libiec61850\examples\server_example_basic_io里找到simpleIO_direct_control.cid这个文件,修改ip地址127.0.0.1。使用iedscout打开simpleIO_direct_control.cid文件,运行仿真服务器功能。
这时可以启动调试iec61850_client_example1程序。
int main(int argc, char** argv) {char* hostname;**int tcpPort = 102;** //服务器监听端口,客户端连接服务端ip+端口if (argc > 1)hostname = argv[1];else**hostname = "localhost";**if (argc > 2)tcpPort = atoi(argv[2]);IedClientError error;//创建客户端连接对象**IedConnection con = IedConnection_create();**//连接服务器**IedConnection_connect(con, &error, hostname, tcpPort);**//error 是否有错误if (error == IED_ERROR_OK) {/* read an analog measurement value from server */ **//根据索引读取模拟量值simpleIOGenericIO/GGIO1.AnIn1.mag.f**MmsValue* value = IedConnection_readObject(con, &error, "simpleIOGenericIO/GGIO1.AnIn1.mag.f", IEC61850_FC_MX);if (value != NULL) {if (MmsValue_getType(value) == MMS_FLOAT) {float fval = MmsValue_toFloat(value);printf("read float value: %f\n", fval);}else if (MmsValue_getType(value) == MMS_DATA_ACCESS_ERROR) {printf("Failed to read value (error code: %i)\n", MmsValue_getDataAccessError(value));}MmsValue_delete(value);}/* write a variable to the server */**//写变量simpleIOGenericIO/GGIO1.NamPlt.vendor**value = MmsValue_newVisibleString("libiec61850.com");IedConnection_writeObject(con, &error, "simpleIOGenericIO/GGIO1.NamPlt.vendor", IEC61850_FC_DC, value);if (error != IED_ERROR_OK)printf("failed to write simpleIOGenericIO/GGIO1.NamPlt.vendor! (error code: %i)\n", error);MmsValue_delete(value);/* read data set */ClientDataSet clientDataSet = IedConnection_readDataSetValues(con, &error, "simpleIOGenericIO/LLN0.Events", NULL);**//读数据集里的数据****value = ClientDataSet_getValues(clientDataSet);****//数据集里元素个数****int size = ClientDataSet_getDataSetSize(clientDataSet);**//根据索引得到元素的值//4个元素 我添加的代码,根据索引获得值**int size = ClientDataSet_getDataSetSize(clientDataSet);MmsValue *tmp = MmsValue_getElement(value, 0);MmsValue* tmp1 = MmsValue_getElement(value, 1);MmsValue* tmp2 = MmsValue_getElement(value, 2);MmsValue* tmp3 = MmsValue_getElement(value, 3);//bool类型if (MmsValue_getType(tmp) == MMS_BOOLEAN){bool ret = MmsValue_getBoolean(tmp);}**if (clientDataSet == NULL) {printf("failed to read dataset\n");goto close_connection;}/* Read RCB values */ClientReportControlBlock rcb =IedConnection_getRCBValues(con, &error, "simpleIOGenericIO/LLN0.RP.EventsRCB01", NULL);if (rcb) {bool rptEna = ClientReportControlBlock_getRptEna(rcb);printf("RptEna = %i\n", rptEna);/* Install handler for reports */IedConnection_installReportHandler(con, "simpleIOGenericIO/LLN0.RP.EventsRCB01",ClientReportControlBlock_getRptId(rcb), reportCallbackFunction, NULL);/* Set trigger options and enable report */ClientReportControlBlock_setTrgOps(rcb, TRG_OPT_DATA_UPDATE | TRG_OPT_INTEGRITY | TRG_OPT_GI);ClientReportControlBlock_setRptEna(rcb, true);ClientReportControlBlock_setIntgPd(rcb, 5000);IedConnection_setRCBValues(con, &error, rcb, RCB_ELEMENT_RPT_ENA | RCB_ELEMENT_TRG_OPS | RCB_ELEMENT_INTG_PD, true);if (error != IED_ERROR_OK)printf("report activation failed (code: %i)\n", error);Thread_sleep(1000);/* trigger GI report */ClientReportControlBlock_setGI(rcb, true);IedConnection_setRCBValues(con, &error, rcb, RCB_ELEMENT_GI, true);if (error != IED_ERROR_OK)printf("Error triggering a GI report (code: %i)\n", error);Thread_sleep(60000);/* disable reporting */ClientReportControlBlock_setRptEna(rcb, false);IedConnection_setRCBValues(con, &error, rcb, RCB_ELEMENT_RPT_ENA, true);if (error != IED_ERROR_OK)printf("disable reporting failed (code: %i)\n", error);ClientDataSet_destroy(clientDataSet);ClientReportControlBlock_destroy(rcb);}close_connection:IedConnection_close(con);}else {printf("Failed to connect to %s:%i\n", hostname, tcpPort);}IedConnection_destroy(con);
}
libiec61850学习1相关推荐
- libIEC61850学习记录
libIEC61850学习记录 一.问题 (1) 在vscode中看例程,总显示include路径不对 一.问题 (1) 在vscode中看例程,总显示include路径不对 看例程server_ex ...
- libiec61850学习2(动态获取模型)
libiec61850\examples\server_example_basic_io\simpleIO_direct_control.cid文件,ip设置127.0.0.1 iedsout打开这个 ...
- IEC61850笔记--开源代码libIEC61850(一)
IEC61850标准学习和调试,测试的记录文档,主要参考了IEC61850标准文档,<IEC61850应用入门(第二版)>,开源代码libIEC61850及libIEC61850说明文档. ...
- IEC61850笔记--开源代码libIEC61850(二)
IEC61850标准学习和调试,测试的记录文档,主要参考了IEC61850标准文档,<IEC61850应用入门(第二版)>,开源代码libIEC61850及libIEC61850说明文档. ...
- java入门 慕路径,Java入门基础知识总结学习教程大全【必看经典】
类型的表达式,是循环条件,表达式3是党执行了一遍循环之后,修改控制循环的变量值. ??? for语句的执行过程是这样的:首先计算表达式1,完成必要的初始化工作:然后判断表达式2的值,如果表达式的值为t ...
- Java EE学习心得
–Java EE学习心得 1. 称为编程专家的秘诀是: 思考-----编程--------思考------编程--.. 编程不能一步到位,不能一上来就编,必须先思考如何写,怎样写?然后再编程 ...
- FastAI 2019课程学习笔记 lesson 2:自行获取数据并创建分类器
文章目录 数据获取 google_images_download 的安装和使用 挂载google 个人硬盘到Google colab中 删除不能打开文件 创建ImageDataBunch 训练模型 解 ...
- FastAI 课程学习笔记 lesson 1:宠物图片分类
文章目录 代码解析 神奇的"%" 导入fastAI 库 下载解压数据集 untar_data 获取帮助文档 help() ? ?? doc 设置路径 get_image_files ...
- 深度学习学习指南-工具篇
colab Colab是由Google提供的云计算服务,通过它可以让开发者很方便的使用google的免费资源(CPU.GPU.TPU)来训练自己的模型. 学习经验总结 如何使用命令行? 通过!+cmd ...
- Redis学习之路(一)--下载安装redis
redis学习之路--下载安装redis windows安装redis 1.下载redis 2.安装 3.查看是否安装成功 windows安装redis 1.下载redis 网址:https://gi ...
最新文章
- Hyper-V 内存管理必须知道的
- java五种加密技术理解
- 阿里一面,说说你了解zookeeper的应用场景有哪些?
- 多线程进行n皇后计算
- GMA Round 1 向量计算
- 一个由“2020年1月7日 京东出现的重大 Bug 漏洞“引起的思考......
- 数据结构 队列学习总结
- 徒步穿越的技巧和要领
- 中国近代史-蒋廷黻-笔记-第一章-剿夷与抚夷-第一节-英国请中国订立邦交
- html2canvas苹果不显示图片,html2canvas页面截图图片不显示
- 谷歌浏览器获取摄像头
- USB core(一) - rh_queue_status与rh_call_control
- 特征提取 - 海森矩阵(Hessian Matrix)及一个用例(图像增强)
- 小米MIUI9关闭广告
- CSP-J 2022年8月第一轮模拟赛 1
- 中科院用不起的知网,一年主营业务收入11.6亿元,毛利率高过工商银行
- HTML+CSS大作业——旅游—我的家乡新密(15页)含论文 新密旅游网页设计制作 简单静态HTML网页作品 我的家乡网页作业成品 学生旅游网站模板
- 高效治理垃圾渗滤液将成为环保产业的重要支撑力量
- docker 容器 日志文件过大
- 老站长教你如何启用网站统计工具