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

零基础实现IEC61850(四)启动客户端

发布时间:2026/11/5 1:13:29 来源:云帆数科 栏目:资讯中心
零基础实现IEC61850(四)启动客户端
客户端连接服务端的三种方法使用YX-PIS协议栈作为客户度连接服务端有三种方法分别是通过专用CID、服务端CID以及IP直连本文分别对三种方法进行介绍。注意本文建模使用的工具可直接访问云端版http://scl.yunxing.tech:8888也可在该地址下载桌面版。专用CID方式编辑CID文件1、就以连接前面介绍的服务端为例用建模工具打开之前testIED.cid文件2、新建一个用做客户端程序加载的CID3、添加ClientIED如图4、删除默认的IED5、为ClientIED设置一个名称6、为网络部分子网及接入点设置名称和选择IED7、为IED下的接入点选择对应的网路接入点8、这样客户端的IED以及网络模型就完成了接下来加入要连接的Server端模型9、回到客户端cid粘贴服务端的IED10、保存CID这取名testClient.cid代码编写为了统一管理继续使用之前的工程不过由于加入了客户端代码所以目录由原来的iec61850server改名为iec61850demo使用vs2022打开工程添加iec61850client.c和iec61850client.h文件CMakeList.txt修改将project (“iec61850server”)改名为project (“iec61850demo”)添加客户端进程具体如下cmake_minimum_required (VERSION 3.8) project (iec61850demo) set(COMMUNICATION_PROTOCOL CMS) # 设置MMS或者CMS if(COMMUNICATION_PROTOCOL STREQUAL MMS) include_directories(yx-pis-dll/mms/include) link_directories(${CMAKE_SOURCE_DIR}/yx-pis-dll/mms) elseif(COMMUNICATION_PROTOCOL STREQUAL CMS) include_directories(yx-pis-dll/cms/include) link_directories(${CMAKE_SOURCE_DIR}/yx-pis-dll/cms) endif() add_executable (iec61850server iec61850server.c) add_executable (iec61850client iec61850client.c) if(COMMUNICATION_PROTOCOL STREQUAL MMS) target_link_libraries(iec61850server mms-ctk) target_link_libraries(iec61850client mms-ctk) elseif(COMMUNICATION_PROTOCOL STREQUAL CMS) target_link_libraries(iec61850server cms-ctk) target_link_libraries(iec61850client cms-ctk) endif()保存iec61850client.c添加代码#includeiec61850client.h#includeIEC61850Functions.hIEC61850 g_iec61850;intmain(){IEC61850_ErrorCode errorS_OK;IEC61850_Parameters param{0};// 参数结构体param.clientServerFlagIEC61850_CLIENT;// 设置为服务端param.Ed1_Ed2_FlagIEC61850_Edition2;// 设置为IEC61850第二版// 创建IEC61850对象g_iec61850IEC61850_Create(param,error);if(g_iec61850){printf(Client success to create: %s (%u)\n,IEC61850_ErrorString(error),error);//加载CID模型errorIEC61850_LoadSCLFile(g_iec61850,../../../cidFiles/testClientIED.cid);if(errorS_OK){printf(Client success to load cid file\n);}}//启动服务if(errorS_OK){errorIEC61850_Start(g_iec61850);if(error!S_OK){printf( Cant start Client: %s (%i)\n,IEC61850_ErrorString(error),error);}else{printf(Client success to start\n);}}// 利用获取字符暂停setbuf(stdin,NULL);getchar();//停止服务printf(Stopping IEC61850 Client \n);errorIEC61850_Stop(g_iec61850);if(error!S_OK){printf( Cant stop Client: %s (%i)\n,IEC61850_ErrorString(error),error);}else{// 释放内存printf(Freeing IEC61850 Client \n);errorIEC61850_Free(g_iec61850);//Frees s_iec61850if(errorS_OK){g_iec61850NULL;}else{printf( Free IEC61850 Object has failed: %s (%i)\n,IEC61850_ErrorString(error),error);}}return0;}启动运行这样代码的工作就完成了选择客户端进程就可以调试运行了查看效果启动抓包工具进行抓包启动之前的服务端程序和这次编写的客户端程序如图截图为CMS效果改为MMS重新编译启动运行效果如下通过抓包可以看出无论是CMS还是MMS均与服务端建立了连接加载服务端CID方式创建文件1、创建iec61850client_loadservercid.c文件2、将iec61850client.c文件内容拷贝到iec61850client_loadservercid.c文件中。修改代码将第20行原本的errorIEC61850_LoadSCLFile(g_iec61850,../../../cidFiles/testClientIED.cid);修改为StringList*sclListStringListMalloc();StringListAdd(sclList,../../../cidFiles/testIED.cid);errorIEC61850_LoadServerSCLList(g_iec61850,sclList);修改CMakeLists.txt1、添加如下内容add_executable(iec61850client_loadservercidiec61850client_loadservercid.c)if(COMMUNICATION_PROTOCOL STREQUALMMS)target_link_libraries(iec61850client_loadservercid mms-ctk)elseif(COMMUNICATION_PROTOCOL STREQUALCMS)target_link_libraries(iec61850client_loadservercid cms-ctk)endif()配置文件1、在程序所在目录新建mms-cfg和cms-cfg2、两个目录中新建client.ini文件3、文件内容如下(ipAddress为客户端IP设置错误不影响连接[IED] nameClientIED AP_Count1 [AP_0] nameap01 ipAddress192.168.1.100查看效果和iec61850client一样的方式。直联方式创建文件1、创建iec61850client_direct.c文件2、将iec61850client.c文件内容拷贝到iec61850client_direct.c文件中。修改代码将第20行原本的errorIEC61850_LoadSCLFile(g_iec61850,../../../cidFiles/testClientIED.cid);修改为U32 aaIndex0;IEC61850_AssociationParameters assocParams{0};strncpy(assocParams.IPAddress,192.168.8.1,16);// assocParams.port 102; // MMS默认端口102CMS默认8102如果服务器使用了其他端口请设置正确的端口号errorIEC61850_ClientConnectDirect(g_iec61850,assocParams,client-direct,aaIndex);修改CMakeLists.txt1、添加如下内容add_executable(iec61850client_directiec61850client_direct.c)if(COMMUNICATION_PROTOCOL STREQUALMMS)target_link_libraries(iec61850client_direct mms-ctk)elseif(COMMUNICATION_PROTOCOL STREQUALCMS)target_link_libraries(iec61850client_direct cms-ctk)endif()查看效果和iec61850client一样的方式。好了本文已经介绍完毕客户端的一种连接方法示例代码已经上传yx-pis-dll\example\04 iec61850demo\优缺点对比方法1只需要设置cid即可但是缺点是每次都需要做客户端专用的cid多服务端需要合并cid方法2可以将server端的cid拿来即用多服务端无需合并逐个加载即可缺点是需要预先设置好client.ini方法3无需cid也无需ini配置可通过参数直接连接缺点是暂时不支持双网冗余、无法使用DAID/短地址的数据映射、无法自动使能等不过直联往往用于人机交互上这些缺点也并不影响使用。三种方法各有优缺点可根据业务需要自由选择。

相关推荐

【亲测免费】 PySceneDetect:视频剪辑检测与分析工具
【亲测免费】 PySceneDetect:视频剪辑检测与分析工具

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

Sympozium MCP 集成指南:3步完成 Model Context Protocol 工具自动发现与权限过滤
Sympozium MCP 集成指南:3步完成 Model Context Protocol 工具自动发现与权限过滤

【免费下载链接】sympozium The Coordination Layer for Multi-Agent AI 项目地址: https://gitcode.com/gh_mirrors/sy/sympozium 点击查看 免费下载 Sympozium 是面向 Kubernetes 的多智能体协调层(The Coordination Layer for Multi-Agent AI&#x… · 2026/11/5 1:13:29

Agentic CLI完全参考:7个命令跨项目同步AI配置的最佳实践(init/pull/status)
Agentic CLI完全参考:7个命令跨项目同步AI配置的最佳实践(init/pull/status)

【免费下载链接】agentic An agentic workflow tool that provides context engineering support for opencode 项目地址: https://gitcode.com/gh_mirrors/agenti/agentic 点击查看 免费下载 Agentic CLI 是面向 OpenCode AI 编程助手的 AI 配置同步工具&#xff… · 2026/11/5 1:13:29

学术论文写作工具全解析:从LaTeX到Word公式编辑
学术论文写作工具全解析:从LaTeX到Word公式编辑

1. 论文写作工具全景概览学术写作从来不是单打独斗的过程。记得我博士期间为了赶一篇JCR一区论文,连续72小时对着Word文档调整公式格式的经历,让我深刻意识到专业工具的重要性。如今市面上涌现的论文辅助工具,早已从单纯的文字处理进化到涵盖… · 2026/11/5 8:38:17

美股量化分析:历史数据接入与处理实战
美股量化分析:历史数据接入与处理实战

1. 美股数据分析的基础:历史数据接入实战做美股量化分析的朋友都知道,历史行情数据是策略开发的基石。无论是技术指标回测、波动率统计,还是机器学习特征工程,数据质量直接决定了分析结果的可靠性。去年我在搭建美股量化分析系统时… · 2026/11/5 8:38:17

自动驾驶控制系统:PID与MPC的工程实践
自动驾驶控制系统:PID与MPC的工程实践

1. 自动驾驶控制系统的核心架构设计在自动驾驶车辆的运动控制中,横向和纵向控制是两个最基础也最关键的子系统。我参与的这套控制系统采用了经典的分层设计思路:纵向控制负责车辆的前后运动(加速/减速),横向控制则掌管… · 2026/11/5 8:38:17

ag-grid-community安装配置避坑:模块注册、样式与容器高度
ag-grid-community安装配置避坑:模块注册、样式与容器高度

简介:面向前端开发者与数据密集型后台项目维护者的 ag-Grid Community 开源数据网格资源包,适合需要表格排序、过滤、分组、分页、单元格编辑与自定义渲染的 JavaScript、React、AngularJS 及 Web Components 项目参考。压缩包共 2000 个文件&#xff0c… · 2026/11/5 8:38:17

自动驾驶横纵向混合控制架构与PID+MPC实现
自动驾驶横纵向混合控制架构与PID+MPC实现

1. 自动驾驶控制系统的核心架构在自动驾驶领域,横纵向控制是车辆运动控制的基础模块。纵向控制负责车辆的前后运动(加速/减速),横向控制则决定车辆的左右运动(转向)。这套系统相当于人类驾驶员手脚的配合—… · 2026/11/5 8:38:17

中望3D草图歪斜全解析:视图与几何偏移的区分与修复
中望3D草图歪斜全解析:视图与几何偏移的区分与修复

1. 草图视图歪了到底歪的是什么很多人第一次遇到这个问题时的反应是“视图转一下不就行了”,结果鼠标中键按住转了三百六十度,草图还是斜的,标注尺寸也跟着歪,最后画出来的线全是斜的。这里得先把一个概念掰清楚:中望3… · 2026/11/5 8:37:17

双极步进电机控制实战: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

了解更多?预约专属演示

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

企业微信二维码