首页/新闻资讯/正文详情

零基础实现IEC61850(五)报告客户端

发布时间:2026/11/5 1:14:29 来源:云帆数科 栏目:资讯中心
零基础实现IEC61850(五)报告客户端
前言报告客户端也就是接收端在前面的报告服务端部分已经介绍了但是是采用的模拟工具作为客户端本文就是介绍如何自己开发报告客户端。报告使能前文我们已经启动了客户端并且完成了与服务端的连接但是并没有使能报告控制块的动作使用YX-PIS可以实现自动使能也就是通过CID文件的修改实现使能建模建模工具直接访问云端版http://scl.yunxing.tech:8888也可在该地址下载桌面版。自动使能打开上一节的CID如下图操作添加后会自动展示填写框工具支持自动填写默认即可保存再启动昨天的程序抓包看看MMS:CMS和昨天的内容相比我们只是修改了CID内容就可以实现自动发起使能功能手动使能手动使能是用户通过代码调用API接口实现文章初期以简单为主暂不介绍了如何处理接收到的报告当接收到报告YX-PIS协议栈会以回调的方式将解析好的数据传递给回调函数回调函数的原型typedef void (IEC61850_UpdateCallback)(void * userData, const voiddataMap, const IEC61850_DataAttributeData * newValue);在API手册以及头文件中都有详细的说明创建回调函数依据这个原型我们创建一个回调函数先在原有工程中添加Callback.c和Callback.h专门用于存放回调函数。在头文件和源文件中分别放入回调函数的声明和定义下面是定义部分先做个空函数。voidUpdateCallbackHandler(void*userData,constvoid*dataMap,constIEC61850_DataAttributeData*newValue){printf(update callback\n);}设置好回调函数及回调模式在iec61850client.c的main函数中调用IEC61850_Create之前设置启动参数位置增加如下两行param.fnUpdateCallbackUpdateCallbackHandler;// 指定update回调param.dataMapModeIEC61850_MAP_MODE_REFERENCE;// 回调函数的数据映射模式这里制定好回调函数并且设置回调模式为引用方式关于回调模式后文会介绍。这里先编译运行服务端和客户端去除周期性触发为了避免周期性触发发送过多报告testIED.cid中报告控制块可以先关闭周期性触发将period由true改为false如下ReportControlbufferedfalseconfRev1datSettestDataSetdesc测试用的报告控制块indexedtrueintgPd9000nametestReportCBTrgOpsdchgtruedupdtruegitrueperiodfalseqchgtrue/OptFields/RptEnabledmax3//ReportControl效果演示在服务端输入一个整数回车在客户端会看到界面打印说明报告的发送已经通过协议栈转移到回调函数这里打印了九次是因为数据集关联的数据A是结构体包含了9个基本类型的成员如图回调函数说明函数中包含三个参数其中userData较少使用暂时不做介绍dataMap指的是数据映射根据参数设置的映射模式当映射模式为引用那么该值就是引用字符串newValue代表传入的数据值接下来修改代码来打印引用voidUpdateCallbackHandler(void*userData,constvoid*dataMap,constIEC61850_DataAttributeData*newValue){printf(reference:%s\n,(char*)dataMap);}当发送报告可见我们可以通过dataMap获取到引用这样我们就可以通过引用的判断而直知道收到的数据是什么了从而针对其类型进行数值的解析重新组织代码如下voidUpdateCallbackHandler(void*userData,constvoid*dataMap,constIEC61850_DataAttributeData*newValue){if(dataMapnewValuenewValue-pvData){if(strcmp((char*)dataMap,TEMPLATELDevice1/MMXU0.A.phsA.cVal.mag.i)0){S32 val*((S32*)newValue-pvData);printf(reference:%s value:%d\n,(char*)dataMap,val);}}}上述代码只判断了一个引用的数值用作参考下面服务端也更新这个数据更新方法参考前面文章效果如下短地址回调首先需要设置好回调模式如下param.dataMapModeIEC61850_MAP_MODE_SADDR;// 回调函数的数据映射模式UpdateCallbackHandler回调函数的参数dataMap则为短地址该短地址需要在testClientIED.cid中设置注意这个短地址是客户端自身的数据映射无需与服务端保持一致短地址是字符串类型同样通过字符串比较来判断即可。DAID回调首先需要设置好回调模式或者删除回调模式的设置DAID是默认的回调模式如下param.dataMapModeIEC61850_MAP_MODE_DAID;// 回调函数的数据映射模式UpdateCallbackHandler回调函数的参数dataMap则为DAID该DAID需要在testClientIED.cid中设置注意这个DAID是客户端自身的数据映射无需与服务端保持一致回调函数对DAID的判断constIEC61850_DataAttributeID*daid(constIEC61850_DataAttributeID*)dataMap;if((daid-field11)(daid-field22)(daid-field33)(daid-field44)(daid-field55)){S32 val*((S32*)newValue-pvData);printf(DAID :%d,%d,%d,%d,%d value:%d\n,daid-field1,daid-field2,daid-field3,daid-field4,daid-field5,val);}这里就不做演示截图了好了关于报告客户端的使用就简单介绍到这里感谢阅读。

相关推荐

Stata17最新保姆级安装教程【附安装包】
Stata17最新保姆级安装教程【附安装包】

目录 一、Stata介绍 二、Stata下载 三、Stata安装步骤 四、常用命令及操作 五、常用功能及界面介绍 六、如何运行代码 创作不易,禁止转载抄袭!!!违者必究!!! 创作不易,禁止转载… · 2026/11/5 1:14:29

Open Generative AI:本地 AI 视频生成完整指南,一个界面免费跑 600+ 模型
Open Generative AI:本地 AI 视频生成完整指南,一个界面免费跑 600+ 模型

Open Generative AI:本地 AI 视频生成完整指南,一个界面免费跑 600 模型 【免费下载链接】Open-Generative-AI Unrestricted Open-source alternative to AI video platforms — Free AI image & video generation studio with 600 models (Flux, Mi… · 2026/11/5 1:14:29

【亲测免费】 PySceneDetect:基于Python和OpenCV的视频场景检测工具
【亲测免费】 PySceneDetect:基于Python和OpenCV的视频场景检测工具

PySceneDetect:基于Python和OpenCV的视频场景检测工具 【免费下载链接】PySceneDetect :movie_camera: Python and OpenCV-based scene cut/transition detection program & library. 项目地址: https://gitcode.com/GitHub_Trending/py/PySceneDetect 1… · 2026/11/5 1:13:29

移动应用性能评测:指标构建与优化实践
移动应用性能评测:指标构建与优化实践

1. 移动应用性能评测的行业现状 最近三年,国内移动应用月活用户增速已降至5%以下,但用户对应用性能的要求却越来越高。某第三方数据显示,2022年用户卸载应用的三大原因中,"卡顿闪退"占比达37%,仅次于"广… · 2026/11/5 8:35:15

同城社区配送小程序架构设计与优化实践
同城社区配送小程序架构设计与优化实践

1. 同城社区配送小程序的商业逻辑解析 "骑手抢单商家联动"的同城配送模式正在重构社区零售的最后一公里。这种O2O解决方案的核心在于建立了一个三方实时互动的交易平台:商家发布配送需求,骑手自主选择订单,用户享受即时送达服务。我… · 2026/11/5 8:35:15

ChatPDF文档问答:从PDF解析到混合检索的工程实践
ChatPDF文档问答:从PDF解析到混合检索的工程实践

1. ChatPDF 这类工具到底在替你做什么第一次看到“把 PDF 丢进去就能对话”这个形态,我的反应是:这不就是把文档塞进模型上下文吗,有什么难的。真动手做过两版之后才发现,难点从来不在“调模型”,而在于你怎么把一份几… · 2026/11/5 8:35:15

拆解PDF文档问答:解析、切片与混合检索的工程实践
拆解PDF文档问答:解析、切片与混合检索的工程实践

把一份 300 多页的设备验收规范丢进工具,问“第 4 章里那台机组的振动阈值是多少”,结果返回了另一份标准里的数值——这个场景我在过去一年里见过不下五次,提问的人有做工程的、有做法务的,也有写技术文档的。他们第一反应都是“… · 2026/11/5 8:35:15

社区配送小程序开发:抢单机制与LBS优化实践
社区配送小程序开发:抢单机制与LBS优化实践

1. 项目背景与核心价值在同城生活服务领域,社区配送一直是个高频刚需场景。我去年参与了一个社区配送小程序的完整开发周期,这个项目整合了商家端商品管理、骑手端抢单接单、用户端下单支付的全流程。相比传统的外卖平台,我们更聚焦3-5公里范… · 2026/11/5 8:35:15

GitHub+Arbess实现Java项目CI/CD自动化部署实战
GitHub+Arbess实现Java项目CI/CD自动化部署实战

1. 项目背景与核心价值 最近在团队内部落地了一套基于GitHub的Java项目自动化构建部署方案,用Arbess工具链实现了从代码提交到Docker容器部署的完整流水线。这套方案特别适合中小型团队快速搭建轻量级CI/CD环境,相比传统Jenkins方案节省了60%的运维成本。… · 2026/11/5 8:34:15

双极步进电机控制实战:DRV8818PWPR与PIC18F86K22驱动调试
双极步进电机控制实战:DRV8818PWPR与PIC18F86K22驱动调试

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/11/4 3:16:49

STM32F207ZG + DRV8818PWPR 步进电机驱动实战解析
STM32F207ZG + DRV8818PWPR 步进电机驱动实战解析

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/11/4 6:59:29

DRV8818PWPR+dsPIC30F4013工业级双极步进电机控制方案
DRV8818PWPR+dsPIC30F4013工业级双极步进电机控制方案

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/11/4 7:02:38

多智能体协作系统架构设计与实践优化
多智能体协作系统架构设计与实践优化

1. 多智能体协作系统的时代背景2017年Transformer架构的诞生彻底改变了人工智能的发展轨迹。当行业还沉浸在单一大模型带来的性能突破时,Anthropic的研究团队已经将目光投向了更前沿的领域——如何让多个智能体通过协作产生超越单体能力的系统智能。这就像交响乐团中… · 2026/11/5 0:00:39

大模型系统性入门实战指南:从原理到部署微调的全链路路线
大模型系统性入门实战指南:从原理到部署微调的全链路路线

提到大模型的系统性入门,我先说个结论:这事真不难,难的是资料太散、路线太多,今天这个框架明天那个工具,新人很容易在“收藏夹吃灰”和“教程看到一半放弃”之间反复横跳。市面上关于大模型的内容少说有几十万篇&#… · 2026/11/5 0:00:39

鸿蒙文件系统沙箱机制解析与开发实践
鸿蒙文件系统沙箱机制解析与开发实践

1. 鸿蒙文件系统沙箱机制深度解析作为一名从Android转向鸿蒙开发的工程师,我深刻体会到文件系统访问是迁移过程中最先遇到的"拦路虎"。在Android上运行良好的文件读写代码,在鸿蒙真机环境却频频出现文件写入后神秘消失或直接抛出权限拒绝错误的… · 2026/11/5 0:00:39

双极步进电机控制实战:DRV8818PWPR与PIC18F86K22驱动调试
双极步进电机控制实战:DRV8818PWPR与PIC18F86K22驱动调试

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/11/4 3:16:49

STM32F207ZG + DRV8818PWPR 步进电机驱动实战解析
STM32F207ZG + DRV8818PWPR 步进电机驱动实战解析

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/11/4 6:59:29

DRV8818PWPR+dsPIC30F4013工业级双极步进电机控制方案
DRV8818PWPR+dsPIC30F4013工业级双极步进电机控制方案

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/11/4 7:02:38

了解更多?预约专属演示

我们的顾问将为您一对一讲解产品与方案

企业微信二维码