STM32MP135开发板助力电力行业,IEC61850协议移植笔记
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 <br># tar zxvf jdk-8u191-linux-x64.tar.gz <br># cd jdk1.8.0_191 |
配置JAVA环境变量,修改/etc/profile文件,<WORKIR>为用户工作路径在里面添加如下内容:
1 | # vi /etc/profile <br>export JAVA_HOME=<WORKIR>/JDK/jdk1.8.0_191 <br>export JRE_HOME=${JAVA_HOME}/jre <br>export CLASSPATH=.:${JAVA_HOME}/lib:${JRE_HOME}/lib <br>export PATH=${JAVA_HOME}/bin:$PATH |
修改完成保存退出,使用下面命令来验证JAVA运行环境是否安装成功:
1 | # java -version<br>java version "1.8.0_191" <br>Java(TM) SE Runtime Environment (build 1.8 .0_191-b12)<br>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 <br># tar xvf arm-myir-linux-gnueabihf-gcc.tar.gz -C arm-myir-linux-gnueabihf-gcc <br># export ARCH=arm# export CROSS_COMPILE=arm-myir-linux-gnueabihf-<br># export PATH=$PATH:/<WORKIR>/arm-myir-linux-gnueabihf-gcc/usr/bin |
设置完成后使用如下命令验证设置是否成功。
1 | # arm-myir-linux-gnueabihf-gcc -v<br>使用内建 specs。<br>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 /<br>lto-wrapper<br>...<br>...<br>线程模型:posix gcc<br>版本 7.4 . 0 (Buildroot 2019.02 . 2 -g04eff54) |
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 <br># cd <WORKIR>/libiec61850<br># tar zxvf libiec61850- 1.3 . 0 .tar.gz<br># cd libiec61850- 1.3 . 0 |
-
编译IEC61850库:
1 | # make TARGET=LINUX-ARM<br>...<br>...<br>arm-myir-linux-gnueabihf-ar: creating ./build-<br>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 / <br>-I/WORKIR>/arm-myir-linux-gnueabihf-gcc/usr/arm-myir-linux-gnueabihf/sysroot/usr/lib/glib- 2.0 /include/ <br>-I/WORKIR>/arm-myir-linux-gnueabihf-gcc/usr/arm-myir-linux-gnueabihf/sysroot/usr/include/cjson/ <br>-I/WORKIR>/arm-myir-linux-gnueabihf-gcc/usr/arm-myir-linux-gnueabihf/sysroot/usr/include <br>-I/WORKIR>/arm-myir-linux-gnueabihf-gcc/usr/rm-myir-linux-gnueabihf/sysroot/usr/include/libxml2<br>LDFLAGS += -lpthread -ldbus- 1 -lxml2 -lcjson <br>-L /WORKIR>/arm-myir-linux-gnueabihf-gcc/usr/arm-myir-linux-gnueabihf/sysroot/usr/lib |
如果上述编译过程报错请检查交叉编译工具链设置是否有问题。
-
编译ICD文件:
1 | # cd examples/myir_iec61850_server<br># make model<br>java -jar ../../tools/model_generator/genmodel.jar myir_iec61850_server.icd<br>Select ICD File myir_iec61850_server.icd<br>parse data type templates ...<br>parse IED section ...<br>parse communication section ...<br>Found connectedAP ap1 for IED MYIR1<br>print report instance 01 <br>print report instance 02 |
如果上述过程报错请检查JAVA运行环境是否设置成功。
编译MYIR IEC61850演示程序:
1 | # cd examples/myir_iec61850_server<br># make TARGET=LINUX-ARM |
4.运行验证IEC61850应用
4.1. 运行应用
编译完成后MYIR IEC61850应用位于examples/myir_iec61850_server/目录下面,将myir_iec61850_server拷贝至开发板,运行过程如下所示。
1 | # dbus-launch<br>DBUS_SESSION_BUS_ADDRESS=unix: abstract =/tmp/dbus-c0AGn2s5XN,guid=d6544df82962d617c2dc37805c2c2d68<br>DBUS_SESSION_BUS_PID= 5649 <br># export DBUS_SESSION_BUS_ADDRESS=unix: abstract =/tmp/dbus-c0AGn2s5XN<br># ./myir_iec61850_server<br># Using libIEC61850 version 1.3 . 0 |
4.2. 程序验证
安装包可以在03-Tools/IEDScout.zip文件中获取。
-
测试验证:
进入IEC61850应用界面,打开PC端IEDScout软件。
点击IECScout主界面下面的 Discover IED 按钮,然后输入输入开发板网口的IP地址 192.168.x.xxx ,输入完成后点击 Discover 按钮。
进入 Browser 页面,可以看到以MYIR1命名的IED设备模型。
点击IED设备模型下面的Data Models->LD1->GGIO1进入通用I/O控制界面。
双击GGIO1下面的LED1数据对象,可以看到Switch这个数据属性,然后点击上方菜单栏的Write按钮即可对LED1进行控制。
在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接口。开发板配套提供丰富的软件资源以及文档资料,助力开发者开发成功。
米尔STM32MP135开发板标注图
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· winform 绘制太阳,地球,月球 运作规律
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人
· 上周热点回顾(3.3-3.9)