logo

電力行業(yè),米爾STM32MP135開(kāi)發(fā)板IEC61850協(xié)議移植筆記

1. 概述

IEC61850是變電站自動(dòng)化系統(tǒng)(SAS)中通信系統(tǒng)和分散能源(DER)管理的國(guó)際標(biāo)準(zhǔn)。它通過(guò)標(biāo)準(zhǔn)的實(shí)現(xiàn),實(shí)現(xiàn)了智能變電站的工程運(yùn)作標(biāo)準(zhǔn)化。使得智能變電站的工程實(shí)施變得規(guī)范、統(tǒng)一和透明,在電力和儲(chǔ)能系統(tǒng)中應(yīng)用非常廣泛。


本文基于米爾MYD-YF13X開(kāi)發(fā)板,在Linux系統(tǒng)上移植和使用開(kāi)源的libIEC61850庫(kù),該庫(kù)提供了用C語(yǔ)言編寫(xiě)的IEC 61850 / MMS,IEC 61850 / GOOSE和IEC 61850-9-2 /采樣值通信協(xié)議的服務(wù)端和客戶(hù)端庫(kù)。


IEC61850開(kāi)源庫(kù)了解更多請(qǐng)?jiān)L問(wèn):http://libiec61850.com/libiec61850/

MYD-YF13X開(kāi)發(fā)板了解更多訪(fǎng)問(wèn):https://www.myir.cn/shows/110/57.html

?

2. 搭建配置環(huán)境

本章節(jié)講述libIEC61850庫(kù)的編譯環(huán)境配置過(guò)程。


2.1. 安裝JAVA環(huán)境

IEC61850庫(kù)中的ICD文件需要一個(gè)JAVA工具來(lái)進(jìn)行轉(zhuǎn)換,所以需要先安裝JAVA運(yùn)行環(huán)境。米爾提供的JDK安裝包位于光盤(pán)03-Tools目錄,拷貝jdk-8u191-linux-x64.tar.gz到ubuntu工作目錄,并解壓出來(lái)。

# cd/JDK 

# tar zxvf jdk-8u191-linux-x64.tar.gz 

# cd jdk1.8.0_191

配置JAVA環(huán)境變量,修改/etc/profile文件,為用戶(hù)工作路徑在里面添加如下內(nèi)容:

# vi /etc/profile 

export JAVA_HOME=/JDK/jdk1.8.0_191 

export JRE_HOME=${JAVA_HOME}/jre 

export CLASSPATH=.:${JAVA_HOME}/lib:${JRE_HOME}/lib 

export PATH=${JAVA_HOME}/bin:$PATH

修改完成保存退出,使用下面命令來(lái)驗(yàn)證JAVA運(yùn)行環(huán)境是否安裝成功:

# java -version 

java version "1.8.0_191" 

Java(TM) SE Runtime Environment (build 1.8.0_191-b12) 

Java HotSpot(TM) 64-Bit Server VM (build 25.191-b12, mixed mode)


2.2. 配置交叉編譯工具鏈

這里直接使用MYIR制作的交叉編譯工具鏈。拷貝位于光盤(pán)04-Linux_source\Toolchain\arm-myir-linux-gnueabihf-gcc.tar.gz到ubuntu的工作目錄。通過(guò)下面操作設(shè)置交叉編譯工具鏈環(huán)境變量。

# mkdir arm-myir-linux-gnueabihf-gcc 

# tar xvf arm-myir-linux-gnueabihf-gcc.tar.gz -C arm-myir-linux-gnueabihf-gcc # export ARCH=arm 

# export CROSS_COMPILE=arm-myir-linux-gnueabihf- 

# export PATH=$PATH://arm-myir-linux-gnueabihf-gcc/usr/bin

設(shè)置完成后使用如下命令驗(yàn)證設(shè)置是否成功。 

# arm-myir-linux-gnueabihf-gcc -v 

使用內(nèi)建 specs。 

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/ 

lto-wrapper 

... 

... 

線(xiàn)程模型:posix gcc 

版本 7.4.0 (Buildroot 2019.02.2-g04eff54)

?

3. 編譯IEC61850庫(kù)

本章節(jié)講述IEC61850庫(kù)的編譯和MYIR IEC61850演示程序myir_iec61850_server的編譯過(guò)程。


3.1. 獲取IEC61850源碼包

米爾提供libIEC61850源碼位于光盤(pán)文件的/04-Linux_Source/IEC61850目錄,將libiec61850-1.3.0.tar.gz拷貝到ubuntu目錄工作目錄,并解壓出來(lái),其中為用戶(hù)工作目錄。

# cp libiec61850-1.3.0.tar.gz/libiec61850 

# cd/libiec61850 

# tar zxvf libiec61850-1.3.0.tar.gz 

# cd libiec61850-1.3.0

?編譯IEC61850庫(kù):

# make TARGET=LINUX-ARM 

... 

... 

arm-myir-linux-gnueabihf-ar: creating ./build-arm/libiec61850.a 

arm-myir-linux-gnueabihf-ranlib ./build-arm/libiec61850.a

?MYIR_IEC61850演示程序用到了一些外部庫(kù),需要修改位于examples\myir_iec61850_server\目錄下的Makefile來(lái)指定外部庫(kù)的路徑,將替換為用戶(hù)實(shí)際的工作路徑:

CFLAGS +=-I./ \ 

-I/WORKIR>/arm-myir-linux-gnueabihf-gcc/usr/arm-myir-linux-gnueabihf/sysroot/usr/include/glib-2.0/ \ 

-I/WORKIR>/arm-myir-linux-gnueabihf-gcc/usr/arm-myir-linux-gnueabihf/sysroot/usr/lib/glib-2.0/include/ \ 

-I/WORKIR>/arm-myir-linux-gnueabihf-gcc/usr/arm-myir-linux-gnueabihf/sysroot/usr/include/cjson/ \ 

-I/WORKIR>/arm-myir-linux-gnueabihf-gcc/usr/arm-myir-linux-gnueabihf/sysroot/usr/include \ 

-I/WORKIR>/arm-myir-linux-gnueabihf-gcc/usr/rm-myir-linux-gnueabihf/sysroot/usr/include/libxml2 

LDFLAGS += -lpthread -ldbus-1 -lxml2 -lcjson \ 

-L /WORKIR>/arm-myir-linux-gnueabihf-gcc/usr/arm-myir-linux-gnueabihf/sysroot/usr/lib

如果上述編譯過(guò)程報(bào)錯(cuò)請(qǐng)檢查交叉編譯工具鏈設(shè)置是否有問(wèn)題。

?編譯ICD文件:

# cd examples/myir_iec61850_server 

# make model 

java -jar ../../tools/model_generator/genmodel.jar myir_iec61850_server.icd 

Select ICD File myir_iec61850_server.icd 

parse data type templates ... 

parse IED section ... 

parse communication section ... 

Found connectedAP ap1 for IED MYIR1 

print report instance 01 

print report instance 02

如果上述過(guò)程報(bào)錯(cuò)請(qǐng)檢查JAVA運(yùn)行環(huán)境是否設(shè)置成功。

?編譯MYIR IEC61850演示程序:

# cd examples/myir_iec61850_server 

# make TARGET=LINUX-ARM

?

4. 運(yùn)行驗(yàn)證IEC61850應(yīng)用

4.1. 運(yùn)行應(yīng)用

編譯完成后MYIR IEC61850應(yīng)用位于examples/myir_iec61850_server/目錄下面,將myir_iec61850_server拷貝至開(kāi)發(fā)板,運(yùn)行過(guò)程如下所示。

# dbus-launch 

DBUS_SESSION_BUS_ADDRESS=unix:abstract=/tmp/dbus-c0AGn2s5XN,guid=d6544df82962d617c2dc37805c2c2d68 

DBUS_SESSION_BUS_PID=5649 

# export DBUS_SESSION_BUS_ADDRESS=unix:abstract=/tmp/dbus-c0AGn2s5XN 

# ./myir_iec61850_server 

# Using libIEC61850 version 1.3.0


4.2. 程序驗(yàn)證

安裝包可以在03-Tools/IEDScout.zip文件中獲取。

?測(cè)試驗(yàn)證:

進(jìn)入IEC61850應(yīng)用界面,打開(kāi)PC端IEDScout軟件。

 image.png


點(diǎn)擊IECScout主界面下面的 Discover IED 按鈕,然后輸入輸入開(kāi)發(fā)板網(wǎng)口的IP地址 192.168.x.xxx ,輸入完成后點(diǎn)擊 Discover 按鈕。

 image.png


進(jìn)入 Browser 頁(yè)面,可以看到以MYIR1命名的IED設(shè)備模型。

 image.png


點(diǎn)擊IED設(shè)備模型下面的Data Models->LD1->GGIO1進(jìn)入通用I/O控制界面。

 image.png


雙擊GGIO1下面的LED1數(shù)據(jù)對(duì)象,可以看到Switch這個(gè)數(shù)據(jù)屬性,然后點(diǎn)擊上方菜單欄的Write按鈕即可對(duì)LED1進(jìn)行控制

 image.png


在Value欄選擇false,然后點(diǎn)擊Write按鍵,此時(shí)開(kāi)發(fā)板上的LED心跳燈就被點(diǎn)亮了,說(shuō)明通訊成功。


米爾基于STM32MP135開(kāi)發(fā)板

米爾STM32MP135核心板開(kāi)發(fā)板,基于單核 Cortex-A7 設(shè)計(jì)的STM32MP13系列處理器,采用12V/2A直流供電,搭載了2路千兆以太網(wǎng)接口、1路USB2.0協(xié)議MINI PCIE插座的4G模塊接口、1路RGB顯示接口、1路音頻輸入輸出接口、2路USB HOST Type A、1路 USB OTG Type-C接口、1路Micro SD接口。開(kāi)發(fā)板配套提供豐富的軟件資源以及文檔資料,助力開(kāi)發(fā)者開(kāi)發(fā)成功。

 image.png

image.png

米爾STM32MP135開(kāi)發(fā)板標(biāo)注圖

產(chǎn)品鏈接:

https://www.myir.cn/shows/110/57.html



上一篇:煥新升級(jí) | APT官網(wǎng)全新上線(xiàn) 下一篇:2023年度回顧 | 云程發(fā)軔,踵事增華
最新資訊