零基础实现IEC61850(一)启动服务端

发布时间:2026/11/5 6:30:51
零基础实现IEC61850(一)启动服务端 零基础实现IEC61850一启动服务端不要重复造轮子我们是要造一部豪车但是我们不需要造轮子开发IEC61850产品也是如此。所谓实现IEC61850并不是要开发IEC61850本身而是要开发的智能产品具备IEC61850的功能所以实现IEC61850只需要找到合适的轮子即可本文以国产的YX-PIS协议栈为轮子从零开始手把手指导如何实现IEC61850的功能。如何拿到轮子云行科技分享了一些工具在gitee上地址如下https://gitee.com/yunxingtianxia/yx-tools其中yx-pis-dll目录下分享了yx-pis产品的cms版和mms版的动态库文件目前分享了windows 64位版本在这里我们可以免费获得cms和mms版本的头文件lib文件和dll文件。开始让轮子转一转新建工程这里将采用VS2022进行讲解由于是cmake工程使用其他IDE也可以正常使用。本例采用纯c代码开发所以要做一下更名直接修改iec61850server.cpp文件名为iec61850server.cCMakeList.txt文件中应该会自动同步。删除iec61850server.c中的C代码using namespace std;coutHello CMake.endl;删除iec61850server.h中的C代码#includeiostream编译一下不报错就可以了接下来我们开始IEC61850服务端的开发首先添加头文件目录在CMakeList.txt中增加include_directories(yx-pis-dll/mms/include)如果要开发CMS版本就用下面这句include_directories(yx-pis-dll/cms/include)添加lib库目录link_directories(${CMAKE_SOURCE_DIR}/yx-pis-dll/mms)同理cms是如下link_directories(${CMAKE_SOURCE_DIR}/yx-pis-dll/cms)链接动态库target_link_libraries(iec61850server mms-ctk)同理cms是如下target_link_libraries(iec61850server cms-ctk)精简CMakeList最终效果如图开始代码添加引用添加YX-PIS提供的三个头文件#includeIEC61850Types.h#includeIEC61850API.h#includesysctype.h创建IEC61850对象定义全局变量IEC61850 g_iec61850;使用YX-PIS提供的API接口IEC61850_Create创建在IEC61850API.h中介绍了IEC61850_Create并提供了例程我们参考后在main函数中添加如下代码IEC61850_ErrorCode errorS_OK;IEC61850_Parameters param{0};// 参数结构体param.clientServerFlagIEC61850_SERVER;// 设置为服务端param.Ed1_Ed2_FlagIEC61850_Edition2;// 设置为IEC61850第二版// 创建IEC61850对象g_iec61850IEC61850_Create(param,error);if(g_iec61850){printf(Server success to create: %s (%u)\n,IEC61850_ErrorString(error),error);}我们编译运行一下如果打印了Server成功创建证明对象的创建成功。如果提示下图请将dll文件拷贝到编译的可执行文件目录加载CID准备CID如果已经有CID文件可以直接使用如果没有可以手工创建一个这里推荐使用建模工具创建建模工具直接访问云端版http://scl.yunxing.tech:8888也可在该地址下载桌面版。直接新建然后按照图片设置本机IP即可将文件保存到可执行文件所在目录加载CID//加载CID模型errorIEC61850_LoadSCLFile(g_iec61850,testIED.cid);if(errorS_OK){printf(Server success to load cid file\n);}启动服务//启动服务if(errorS_OK){errorIEC61850_Start(g_iec61850);if(error!S_OK){printf( Cant start server: %s (%i)\n,IEC61850_ErrorString(error),error);}else{printf(Server success to start\n);}}启动后要让程序停下来不然程序就会退出了简单点增加一个getchar()等待任意字符服务的停止和释放printf(Stopping IEC61850 Server \n);errorIEC61850_Stop(g_iec61850);if(error!S_OK){printf( Cant stop server: %s (%i)\n,IEC61850_ErrorString(error),error);}else{printf(Freeing IEC61850 Server \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);}}看看运行效果注意在这之前需要安装winpcap4.1.3或者安装wireshark抓包工具会提示安装npcap或者winpcap运行后如下图看到这样的效果就是启动成功了对于mms版本可以使用iedscout尝试连接看看可以正常访问并且获得模型对于CMS版本的验证可以安装yx-tools下提供的cms-test-tool为绿色软件直接运行IEC61850_GSP_Client_Test_Tool.exe即可好了今天的服务端启动工作就完成了为了简单本例子的全部代码都放在iec61850server.c中全部内容如下#includeiec61850server.h#includeIEC61850Types.h#includeIEC61850API.h#includesysctype.hIEC61850 g_iec61850;intmain(){IEC61850_ErrorCode errorS_OK;IEC61850_Parameters param{0};// 参数结构体param.clientServerFlagIEC61850_SERVER;// 设置为服务端param.Ed1_Ed2_FlagIEC61850_Edition2;// 设置为IEC61850第二版// 创建IEC61850对象g_iec61850IEC61850_Create(param,error);if(g_iec61850){printf(Server success to create: %s (%u)\n,IEC61850_ErrorString(error),error);//加载CID模型errorIEC61850_LoadSCLFile(g_iec61850,testIED.cid);if(errorS_OK){printf(Server success to load cid file\n);}}//启动服务if(errorS_OK){errorIEC61850_Start(g_iec61850);if(error!S_OK){printf( Cant start server: %s (%i)\n,IEC61850_ErrorString(error),error);}else{printf(Server success to start\n);}}// 利用获取字符暂停getchar();//停止服务printf(Stopping IEC61850 Server \n);errorIEC61850_Stop(g_iec61850);if(error!S_OK){printf( Cant stop server: %s (%i)\n,IEC61850_ErrorString(error),error);}else{// 释放内存printf(Freeing IEC61850 Server \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;}有任何疑问欢迎访问 https://yunxing.tech/ 联系大连云行科技有限责任公司

关于本文作者

来自尧图内容编辑团队

尧图内容编辑团队 内容团队

尧图内容编辑团队

本文由尧图网络内容编辑团队执笔。团队由资深项目经理、前端工程师与设计师组成,所有内容均来自亲手交付的真实项目,先讲清问题、再给出可落地的解法。尧图深耕北京网站建设十年,服务过京华建材集团、智造科技等各行业客户,把一线经验沉淀为可复用的行业观察。

  • 十年建站经验,覆盖建材、制造、服务、文创等
  • 项目经理把关选题与事实准确性
  • 工程师与设计师联合撰写专业细节
  • 统一编辑规范,保证文风与排版一致
  • 每月复盘转化数据,迭代选题方向

延伸阅读

相关资讯与近期热门内容

深度阅读推荐

建站决策前值得细读的三篇

网站改版的5个关键决策
2024-08-12

网站改版的5个关键决策

什么时候该改版、改到什么程度、如何避免流量掉光,京华建材集团改版复盘给出答案。

获取专属建站方案

看完文章,把您的行业与预算告诉我们,免费获取一份量身定制的官网建设方案与报价。

立即免费咨询