查看: 1808|回复: 0

[资料] STM32MP135开发板助力电力行业,IEC61850协议移植笔记

[复制链接]
  • TA的每日心情

    2019-10-15 10:48
  • 签到天数: 7 天

    连续签到: 1 天

    [LV.3]偶尔看看II

    发表于 2024-2-2 18:45:53 | 显示全部楼层 |阅读模式
    分享到:
    本帖最后由 swiftman 于 2024-2-2 20:03 编辑

    1.概述
    IEC61850是变电站自动化系统(SAS)中通信系统和分散能源(DER)管理的国际标准。它通过标准的实现,实现了智能变电站的工程运作标准化。使得智能变电站的工程实施变得规范、统一和透明,在电力和储能系统中应用非常广泛。
    本文基于米尔MYD-YF13X开发板,在Linux系统上移植和使用开源的libIEC61850库,该库提供了用C语言编写的IEC 61850 / MMS,IEC 61850 / GOOSE和IEC 61850-9-2 /采样值通信协议的服务端和客户端库。
    IEC61850开源库了解更多请访问:http://libiec61850.com/libiec61850/
    MYD-YF13X开发板了解更多访问:https://www.myir.cn/shows/110/57.html

    2.搭建配置环境
    本章节讲述libIEC61850库的编译环境配置过程。
    2.1. 安装JAVA环境
    IEC61850库中的ICD文件需要一个JAVA工具来进行转换,所以需要先安装JAVA运行环境。米尔提供的JDK安装包位于光盘03-Tools目录,拷贝jdk-8u191-linux-x64.tar.gz到ubuntu工作目录,并解压出来。
    1. # cd <WORKIR>/JDK
    2. # tar zxvf jdk-8u191-linux-x64.tar.gz
    3. # cd jdk1.8.0_191
    复制代码

    配置JAVA环境变量,修改/etc/profile文件,<WORKIR>为用户工作路径在里面添加如下内容:
    1. # vi /etc/profile
    2. export JAVA_HOME=<WORKIR>/JDK/jdk1.8.0_191
    3. export JRE_HOME=${JAVA_HOME}/jre
    4. export CLASSPATH=.:${JAVA_HOME}/lib:${JRE_HOME}/lib
    5. export PATH=${JAVA_HOME}/bin:$PATH
    复制代码

    修改完成保存退出,使用下面命令来验证JAVA运行环境是否安装成功:
    1. # java -version
    2. java version "1.8.0_191"
    3. Java(TM) SE Runtime Environment (build 1.8.0_191-b12)
    4. Java HotSpot(TM) 64-Bit Server VM (build 25.191-b12, mixed mode)
    复制代码

    2.2. 配置交叉编译工具链
    这里直接使用MYIR制作的交叉编译工具链。拷贝位于光盘04-Linux_sourceToolchainarm-myir-linux-gnueabihf-gcc.tar.gz到ubuntu的工作目录。通过下面操作设置交叉编译工具链环境变量。
    1. # mkdir arm-myir-linux-gnueabihf-gcc
    2. # tar xvf arm-myir-linux-gnueabihf-gcc.tar.gz -C arm-myir-linux-gnueabihf-gcc
    3. # export ARCH=arm# export CROSS_COMPILE=arm-myir-linux-gnueabihf-
    4. # export PATH=$PATH:/<WORKIR>/arm-myir-linux-gnueabihf-gcc/usr/bin
    复制代码

    设置完成后使用如下命令验证设置是否成功。
    1. # arm-myir-linux-gnueabihf-gcc -v
    2. 使用内建 specs。
    3. COLLECT_GCC=/home/qinlh/buildroot/buildroot-2019.02.2/output/host/bin/arm-myir-linux-gnueabihf-gcc.br_real COLLECT_LTO_WRAPPER=/home/qinlh/buildroot/buildroot-2019.02.2/output/host/libexec/gcc/arm-myir-linux-gnueabihf/7.4.0/
    4. lto-wrapper
    5. ...
    6. ...
    7. 线程模型:posix gcc
    8. 版本 7.4.0 (Buildroot 2019.02.2-g04eff54)
    复制代码

    3.编译IEC61850库
    本章节讲述IEC61850库的编译和MYIR IEC61850演示程序myir_iec61850_server的编译过程。
    3.1. 获取IEC61850源码包
    米尔提供libIEC61850源码位于光盘文件的/04-Linux_Source/IEC61850目录,将libiec61850-1.3.0.tar.gz拷贝到ubuntu目录工作目录,并解压出来,其中<WORKIR>为用户工作目录。
    1. # cp libiec61850-1.3.0.tar.gz <WORKIR>/libiec61850
    2. # cd <WORKIR>/libiec61850
    3. # tar zxvf libiec61850-1.3.0.tar.gz
    4. # cd libiec61850-1.3.0
    复制代码


    • 编译IEC61850库:


    1. # make TARGET=LINUX-ARM
    2. ...
    3. ...
    4. arm-myir-linux-gnueabihf-ar: creating ./build-
    5. arm/libiec61850.aarm-myir-linux-gnueabihf-ranlib ./build-arm/libiec61850.a
    复制代码

    • MYIR_IEC61850演示程序用到了一些外部库,需要修改位于examplesmyir_iec61850_server目录下的Makefile来指定外部库的路径,将<WORKIR>替换为用户实际的工作路径:

    1. CFLAGS +=-I./ -I/WORKIR>/arm-myir-linux-gnueabihf-gcc/usr/arm-myir-linux-gnueabihf/sysroot/usr/include/glib-2.0/
    2. -I/WORKIR>/arm-myir-linux-gnueabihf-gcc/usr/arm-myir-linux-gnueabihf/sysroot/usr/lib/glib-2.0/include/
    3. -I/WORKIR>/arm-myir-linux-gnueabihf-gcc/usr/arm-myir-linux-gnueabihf/sysroot/usr/include/cjson/
    4. -I/WORKIR>/arm-myir-linux-gnueabihf-gcc/usr/arm-myir-linux-gnueabihf/sysroot/usr/include
    5. -I/WORKIR>/arm-myir-linux-gnueabihf-gcc/usr/rm-myir-linux-gnueabihf/sysroot/usr/include/libxml2
    6. LDFLAGS += -lpthread -ldbus-1 -lxml2 -lcjson
    7. -L /WORKIR>/arm-myir-linux-gnueabihf-gcc/usr/arm-myir-linux-gnueabihf/sysroot/usr/lib
    复制代码

    如果上述编译过程报错请检查交叉编译工具链设置是否有问题。
    • 编译ICD文件:

    1. # cd examples/myir_iec61850_server
    2. # make model
    3. java -jar ../../tools/model_generator/genmodel.jar myir_iec61850_server.icd
    4. Select ICD File myir_iec61850_server.icd
    5. parse data type templates ...
    6. parse IED section ...
    7. parse communication section ...
    8. Found connectedAP ap1 for IED MYIR1
    9. print report instance 01
    10. print report instance 02
    复制代码

    如果上述过程报错请检查JAVA运行环境是否设置成功。
    编译MYIR IEC61850演示程序:
    1. # cd examples/myir_iec61850_server
    2. # make TARGET=LINUX-ARM
    复制代码


    4.运行验证IEC61850应用
    4.1. 运行应用
    编译完成后MYIR IEC61850应用位于examples/myir_iec61850_server/目录下面,将myir_iec61850_server拷贝至开发板,运行过程如下所示。
    1. # dbus-launch
    2. DBUS_SESSION_BUS_ADDRESS=unix:abstract=/tmp/dbus-c0AGn2s5XN,guid=d6544df82962d617c2dc37805c2c2d68
    3. DBUS_SESSION_BUS_PID=5649
    4. # export DBUS_SESSION_BUS_ADDRESS=unix:abstract=/tmp/dbus-c0AGn2s5XN
    5. # ./myir_iec61850_server
    6. # Using libIEC61850 version 1.3.0
    复制代码

    4.2. 程序验证
    安装包可以在03-Tools/IEDScout.zip文件中获取。
    • 测试验证:

    进入IEC61850应用界面,打开PC端IEDScout软件。
    2.png
    点击IECScout主界面下面的 Discover IED 按钮,然后输入输入开发板网口的IP地址 192.168.x.xxx ,输入完成后点击 Discover 按钮。
    3.png
    进入 Browser 页面,可以看到以MYIR1命名的IED设备模型。
    4.png
    点击IED设备模型下面的Data Models->LD1->GGIO1进入通用I/O控制界面。
    5.png
    双击GGIO1下面的LED1数据对象,可以看到Switch这个数据属性,然后点击上方菜单栏的Write按钮即可对LED1进行控制。
    6.png
    在Value栏选择false,然后点击Write按键,此时开发板上的LED心跳灯就被点亮了,说明通讯成功。

    米尔基于STM32MP135开发板
    米尔STM32MP135开发板,基于单核 Cortex-A7 设计的STM32MP13系列处理器,采用12V/2A直流供电,搭载了2路千兆以太网接口、1路USB2.0协议MINI PCIE插座的4G模块接口、1路RGB显示接口、1路音频输入输出接口、2路USB HOST Type A、1路 USB OTG Type-C接口、1路Micro SD接口。开发板配套提供丰富的软件资源以及文档资料,助力开发者开发成功。
    7.png
    8.png
    米尔STM32MP135开发板标注图
    回复

    使用道具 举报

    您需要登录后才可以回帖 注册/登录

    本版积分规则

    关闭

    站长推荐上一条 /5 下一条



    手机版|小黑屋|与非网

    GMT+8, 2024-12-23 23:50 , Processed in 0.136206 second(s), 20 queries , MemCache On.

    ICP经营许可证 苏B2-20140176  苏ICP备14012660号-2   苏州灵动帧格网络科技有限公司 版权所有.

    苏公网安备 32059002001037号

    Powered by Discuz! X3.4

    Copyright © 2001-2024, Tencent Cloud.