61850运行 linux_61850 客户端 linux - CSDN
  • 目标:在linux下使用C语言的原始套接字来接收以太网数据链路层上的数据,如果接收的数据是IEC61850-9-2 SV类型,则打印。。。。仅供参考! 源代码: [cpp] view plaincopy #include  #include  #...
    目标:在linux下使用C语言的原始套接字来接收以太网数据链路层上的数据,如果接收的数据是IEC61850-9-2 SV类型,则打印。。。。仅供参考!

    源代码:

    1. #include <stdio.h>  
    2. #include <unistd.h>  
    3. #include <sys/socket.h>  
    4. #include <sys/types.h>  
    5. #include <linux/if_ether.h>  
    6. #include <linux/in.h>  
    7. #define BUFFER_MAX 2048  
    8.   
    9. int main(int argc, char *argv[])  
    10. {        
    11. int sock, n_read, eth_type;          
    12. char buffer[BUFFER_MAX];  
    13. char  *eth_head;  
    14.          
    15. if((sock = socket(PF_PACKET, SOCK_RAW, htons(ETH_P_ALL))) < 0)  
    16. {  
    17.     fprintf(stdout, "create socket error/n");  
    18.         exit(0);  
    19. }  
    20.           
    21. while(1)   
    22. {  
    23.     n_read = recvfrom(sock, buffer, 2048, 0, NULL, NULL);  
    24.     if(n_read < 42)   
    25.     {  
    26.         fprintf(stdout, "Incomplete header, packet corrupt/n");  
    27.         continue;  
    28.     }  
    29.                  
    30.     eth_head = buffer;  
    31.     eth_type=((unsigned char)eth_head[16])*16*16+(unsigned char)eth_head[17];  
    32.       
    33.     if(eth_type==0x88ba){    //judge wether the eth_type is iec61850 sv  
    34.         printf("\n----------------IEC61850-9-2 SV---------------------\n");  
    35.             int i=0;  
    36.         for(i=0;i<n_read;i++){  
    37.             printf("%.2X ",(unsigned char)eth_head[i]);  
    38.             if(((i+1)%16)==0) printf("\n");  
    39.         }  
    40.         printf("\n----------------------------------------------------\n");  
    41.     }  
    42. }  
    43. }  

    运行效果:


    (------------------完---------------------)

    展开全文
  • Modbus转IEC61850

    2020-07-30 23:33:20
    2,支持遥测 (50个),遥信(50个) 3,依据测点,自动IEC61850建模 4,可在Window、Linux、嵌入式Linux各平台运行(需编译) 5,支持Goose应用,网卡可选 6,可免费应用现场 持续改进... 说明: 1,软件基于VS2008...
  • IEC61850协议转换 V0.1

    2020-07-29 14:20:08
    关于 IEC61850协议转换(大众版) 目标: 1,占用内存小,实时性高IEC61850协议转化软件 2,标准Modbus TCP、Modbus RTU配置接入 3,私有协议,API接口接入 4,支持手动输入模拟数据 5,依据测点,自动IEC61850...
  • linux开机启动记录

    2016-09-10 00:12:42
    Linux的开机启动配置随linux的版本不同,有一些不同之处。 网上说的那些配置文件如 inittab,rc.local,rc.d并不是都有的,这对初学者造成了困惑。 有没有什么是比较通用的方式呢,还好有!   ① :linux中有个东西...

    Linux的开机启动配置随linux的版本不同,有一些不同之处。

    网上说的那些配置文件如 inittab,rc.local,rc.d并不是都有的,这对初学者造成了困惑。

    有没有什么是比较通用的方式呢,还好有!

     

    ①  :linux中有个东西叫做“运行级别”,在命令行中敲runlevel后回车,能够获取当前系统的运行级别(N 0~N 6)。

     

    ②  :运行级别的不同,对应系统开机时的启动过程、启动脚本也不同,各运行级别对应的启动脚本,存放地点就是/etc下的rc0.d~rc6.d这些文件夹。

     

    ③  :使用命令ls -all查看rc0.d~rc6.d任一文件夹中的文件,发现这里面都是链接,链接的文件都指向/etc/init.d/。这就意味着实际运行的启动脚本都在/etc/init.d/中,不要问为什么设计成这吊样,我也不知道为啥。。。

     

    ④  :于是依葫芦画瓢:

    1:在/etc/init.d中创建一个我们需要的开机启动脚本(保证脚本的权限,直接chmod 777拉倒,省得烦)。

    2: 然后在系统正常运行时的runlevel对应的/etc/rcX.d下,建立一个指向刚刚在/etc/init.d中新创建的脚本就可以了(有点绕。此外注意:链接名字的有效部分和实际脚本名字请取一样的,如实际脚本若为zhouke,那么链接文件应叫Sxxzhouke,xx指编号,随意)。


    3:重启测试。

     

    (树莓派1、2、3官网系统镜像,ubuntu10.4,ubuntu14.4,某公司嵌入式设备的linux2.6.33,centos 7.01)都是这种思路。


    程序开机启动之环境变量:

            实际项目中,开机启动程序的运行还会需要连带执行其他的程序,这时其他程序的执行就需要环境变量。

    而init.d中的脚本执行时,bash.bashrc等个性化系统变量配置文件可能还未执行,当时的环境变量会非常少。

    那么我们采取直接在脚本执行时加入环境变量的方式。

    (如我在实际项目中61850Svr启动时连带需要启动Forexxx等程序:)




    如此就可以轻松应对程序开机启动了!


    展开全文
  • 智能变电站为什么非要用61850协议 在电力网络高速发展的过去这些年,我国兴建了大批智能变电站,而智能变电站的核心就是信息系统的标准化、统一化,以减少使用电缆和通过移动领域的劳动力把项目执行时间降至最低,...


    智能变电站为什么非要用61850协议

    在电力网络高速发展的过去这些年,我国兴建了大批智能变电站,而智能变电站的核心就是信息系统的标准化、统一化,以减少使用电缆和通过移动领域的劳动力把项目执行时间降至最低,由国际电工组织主编的IEC61850通信标准符合信息标准化的特点,且具有国际通用性,在智能变电站中大量推广(不排除个别站仍然使用104协议)。IEC61850规范化了系统和工程管理、功能描述及设备模型、通信要求、通信一致性要求等,对变电站内一次侧、二次侧的生产控制和信息管理有详尽的技术规范要求。

    变电站通信架构

    变电站中对系统进行了站控层、间隔层和过程层分层管理,在不同层级的61850通信模型也不一样,一般站控层使用MMS(Manufacturing Message Specification)、过程层与间隔层使用SV(Sampled Value Transmission IED设备采样值报文)和GOOSE(Generic Object Oriented Substation Event 面向通用对象的变电站事件报文,IED设备间通用报文),如下图所示。

     

    61850协议

    协议实现介绍

    IEC61850标准中规范了描述一次系统主接线的 SSD(Substation Specification Description 变电站主接线描述)文件、一次主接线图纸和二次系统的 SCD(Substation Configuration Description 变电站配置描述)文件、二次网络中的 MMS报文、GOOSE 报文、SV 报文、ICD(IED Capacity Description 设备功能描述文件)以及CID(IED Configured Description IED 设备的配置描述),其中CID文件只是SCD文件的子集(CID内容可以在SCD中找到),CID文件就是IED设备创建的抽象模型,也是设备制造厂家需要向变电站提供的配置文件。

    IED抽象模型ICD

    SCD和ICD都是基于SCL(Substation Configuration Language)语言的XML文件,ICD只是SCD的子集,站控层在收到IED设备上报的数据和通过查询SCD表可以知道上报数据的物理意义。ICD文件中的内容简单介绍如下图(xml中的标签太多,太复杂,不做详细介绍)。

     

    libiec61850开源库

    libiec61850是github开源免费的c代码库,支持ICD文件的动态和静态生成,模型c代码转换,MMS(server和client)/SV/GOOSE消息报告,各种线程、网络socket封包,以及丰富的api接口可调用、丰富的example可参考,readme详细说明了在windows和linux平台生成可执行文件的具体方法。总之,很好很强大,谁用谁知道!

    从0开始创建MMS模型SERVER

    我们用c做一个完整windows10平台61850中MMS服务器端静态模型程序。

    案例分析:某站变压器A相安装了电压测量IED装置,要求实时上传当前电压值指站端平台,此时控制室有厂家的数据集中器(服务器),由集中器统一上报电压值,那么厂家需要为安装的电压监测装置创建模型ICD,并将模型编译进服务器后端程序,站端得到ICD后可以查询服务器实时更新的电压值信息。

    开发前环境准备(我的环境)

    libiec61850源代码下载,https://github.com/mz-automation/libiec61850,放在本地D盘根目录,并在libiec61850根目录下创建一个build文件夹;

    JRE安装,我的版本是10.0.1,https://www.oracle.com/technetwork/java/javase/downloads/jre8-downloads-2133155.html

    VS2015安装,更高版本的VS需要改CMake的命令,可自行查询;

    CMake安装,用于将源码生成VS工程,我的版本是3.16.2,https://cmake.org/download/,安装完成后运行cmd命令窗口,进入D盘的libiec61850文件夹中的build文件夹,输入命令cmake -G "Visual Studio 14 2015 Win64" ..,在build文件夹中生成VS2015的工程(注意命令后面的..不要漏掉了),用VS打开此工程就可以查看、编译所有源码了;

    安装IEDScout,作为Client连接Server使用,官方提供有测试版本,我的版本是4.20,https://www.omicronenergy.com.cn/products/iedscout/

    安装XMLSpy,编辑ICD使用,https://www.altova.com/xmlspy-xml-editor

    创建模型

    常用创建ICD的工具为XMLSpy,结合案例分析,我们创建1个与相别无关的测量逻辑节点,ICD文件命名为TestModel.icd,如下图所示,MMXN01即为监测A相电压的逻辑节点。

    编译模型

    拷贝ICD文件至文件夹D:\libiec61850-1.4\tools\model_generator中,启动cmd窗口,进入上述文件夹目录,执行命令java -jar genmodel.jar TestModel.icd,会生成static_model.c和static_model.h两个文件,本例子是基于源码中的server_example_simple例子更改的,所以需要将static_model.c和static_model.h拷贝到server_example_simple的工程文件夹中,并将D:\libiec61850-1.4\build\src\Debug里面的iec61850.dll拷贝至server_example_simple的debug文件夹中。好了,环境都配好了,开始编写业务代码!

    模型SERVER端编业务代码

    修改server_sample_simple.c文件中的代码,实现每间隔5秒更新一次电压值和时间,代码如下图所示。

    编写完代码后,执行VS的build,找到exe启动server,启动后就是个黑框,什么都没有,接下来我们通过ICD去连接server,获取数据。

    SERVER模型连接测试

    双击我们的TestModel.icd文件,默认会使用IEDScout打开,点击Browser中的Online,连接成功后点击ReadAll,就可以看到读回来的数据了,Over!

    结束语

    61850在未来绝对是在线监测系统必备的通信协议,不带61850的系统被称为“黑户”,领导检查时系统会被“切掉”,导致监测中断,国网对数据的实时监测不断提高要求,数据进内网是厂家必须具备的基本功能。

    转载请备注出处!!!!!!

     

    展开全文
  • IEC61850开发流程

    2019-04-03 18:10:54
    1. Linux下的开发流程、包括字描述语言建模:https://wenku.baidu.com/view/50e648307375a417866f8feb.html?sxts=1553787764923 2. 深圳某公司的操作流程:...

    1. Linux下的开发流程、包括字描述语言建模:https://wenku.baidu.com/view/50e648307375a417866f8feb.html?sxts=1553787764923

    2. 深圳某公司的操作流程:https://wenku.baidu.com/view/a660f33f0b4c2e3f5727638d.html

    3. 建模:https://wenku.baidu.com/view/10db705e312b3169a451a40a.html?sxts=1553788471253

    4. IEC61850与103协议的区别:https://wenku.baidu.com/view/86e4686f84868762cbaed580.html?rec_flag=default&sxts=1553788591252

    5. 建模ppt:https://wenku.baidu.com/view/d9523bcf2af90242a995e53a.html?rec_flag=default&sxts=1553788700724

    6. IEC61850客户端工具:https://wenku.baidu.com/view/718a4a85e53a580216fcfe99.html

    7. IEC61850调试:https://wenku.baidu.com/view/93923bca192e45361166f59b.html?sxts=1553789008795

    8. IEC61850在linux windows下的源代码下载、编译:https://blog.csdn.net/kecise/article/details/67647804

    8.1 安装环境CMAKE,然后在libiec61850下编译生成vs2010工程

    8.2 建模:动态建模(生成*.cfg配置文件)、静态建模(生成*.c和*.h文件):https://blog.csdn.net/kecise/article/details/68523599

    9. DL/T6345.101 DL/T6345.104文档讲解:

    9.1 https://wenku.baidu.com/view/eaf7e0f4227916888586d719.html,9.2 https://wenku.baidu.com/view/c6297d3c178884868762caaedd3383c4bb4cb427.html

    9.3 DL/T6345-104报文分析:https://wenku.baidu.com/view/3b8eb1d06f1aff00bed51ea2.html

     

     

    目前我首先要准备的工作:

    1. 熟悉IEC61850协议,弄清楚该源码的客户端及服务端的运行机制

    2. 了解建模的原理,并且了解源码的动态、静态建模

    展开全文
  • linux和window编代码其实大致上是差不多的,不过在一些概念上还有差别,比如使用d
  • 步骤都是参考git下的说明文件,这里做个记录。 准备: ...要在Windows(7/8/10)上构建具有GOOSE支持的库并运行libiec61850应用程序,需要使用第三方库(winpcap)。 因为当前版本的Windows不支持...
  • 在上一篇文章中,介绍了libiec...针对genconfig.jar使用JAVA开发、运行时需要JRE环境支持的情况,笔者使用C++重新实现了genconfig的功能并使用Qt做了一个简单的界面程序IEC61850Server,该程序的运行界面如下图所示:
  • libiec是一个开源的61850库,这个库到底有多强大,如何使用,我将在后续的学习笔记中和大家共同探讨。 1,如何在win xp系统中编译libiec61850?(在win7系统中没有编译成功,不知道是不是系统原因) 1.1,准备工作 a...
  • uclinux编译 心得一

    2018-06-20 15:59:24
    之前参照《 从零使用qemu模拟器搭建arm运行环境》完成了嵌入式LINUX系统的编译,并在QEMU下运行起来了。这是针对有MMU的CPU的嵌入式LINUX。uClinux作为针对没有MMU的嵌入LINUX重要分支,因此也想一鼓作气,编译一个...
  • 1 /* 2 * 3 * iec61850sv_protocol.h 4 * 5 * iec61850采样协议(9-1、9-2)解析。... 8 * 本代码支持win32平台和linux平台。 9 * 10 * Copyright (c)2012,lizhi<ibox> 11 * 12 ...
  • Goose 服务端模拟工具

    2020-07-29 14:21:43
    占用内存小,实时性高IEC61850协议转化软件 2,标准Modbus TCP、Modbus RTU配置接入 3,私有协议,API接口接入 4,支持手动输入模拟数据 5,依据测点,自动IEC61850建模 6,可在Window、Linux、嵌入式Linux各平台运行 ...
  • 因为使用IEC61850需要直接访问以太网数据链路层
  • expect的学习使用触发自一个项目,项目平台是树莓派三代,要求是要在root用户下面执行一个名为61850Svr的程序。 目前的状态是树莓派开机启动后会自动进入普通用户,于是需要自动切换到root下执行61850Svr程序,好...
  • 开源SCADA软件

    2019-09-19 10:58:59
    【合集】开源SCADA软件 在2019年6月6日上张贴由钱五哥发表回复 Post Views:734 ... Rapid SCADA is free, open source, full featured SCADA software. Using Rapid SCADA you are able t...
  • 一、什么是基于模型的测试 Wiki的描述如下:基于模型的测试属于软件测试领域的一种测试方法。按照此方法,测试用例可以完全或部分的利用模型自动产生。以上所说的模型通常是指对被测系统(SUT,system under test)...
  • 正常运行状态时,各变电所将各种设备的运行状态和信息实时地传递到控制中心的综合监控系统,实现控制中心通过操作员工作站对各变电所供电设备运行状态的监视。在操作员工作站上动态模拟开关状态的显示颜色:合闸为...
1 2 3 4
收藏数 64
精华内容 25
关键字:

61850运行 linux