接上上文,板上運行提示缺少某些庫,可能是因為交叉編譯工具版本太高了。后續(xù)使用vitis自帶的交叉編譯工具編譯,然后放入Xilinx開發(fā)板運行成功。
EMS,即能源管理系統(tǒng),是儲能“3s”之一。設(shè)計和制造一個儲能EMS系統(tǒng)需要考慮包括系統(tǒng)架構(gòu)設(shè)計、功能需求、軟件開發(fā)、硬件選型等多個方面:
- 需求分析:確定系統(tǒng)的功能需求和性能指標(biāo),包括對儲能系統(tǒng)的監(jiān)測、控制、優(yōu)化等方面的需求,同時考慮系統(tǒng)的可擴(kuò)展性和適應(yīng)性;
- 架構(gòu)設(shè)計:設(shè)計系統(tǒng)的整體架構(gòu),包括前端數(shù)據(jù)采集、后端數(shù)據(jù)處理、控制算法、用戶界面等部分的組成結(jié)構(gòu),確定系統(tǒng)各模塊之間的交互和通信方式;
- 軟件開發(fā):開發(fā)系統(tǒng)的軟件部分,包括數(shù)據(jù)采集、數(shù)據(jù)處理、控制算法、用戶界面等功能模塊的開發(fā);
- 硬件選型:選擇合適的硬件設(shè)備,包括傳感器、控制器、通信設(shè)備等,確保硬件設(shè)備能夠滿足系統(tǒng)的性能和功能要求,并與軟件系統(tǒng)相兼容;
- 測試部署:驗證系統(tǒng)的功能和性能是否符合設(shè)計要求,確保各個模塊之間的協(xié)調(diào)運行和數(shù)據(jù)的準(zhǔn)確性,再部署到實際的儲能系統(tǒng)中,進(jìn)行現(xiàn)場調(diào)試和優(yōu)化。
目前行業(yè)內(nèi)做EMS開發(fā)的公司有杭州高特、杭州協(xié)能、山東德聯(lián)和研華等公司。博主本人是做嵌入式開發(fā)出身,莫名其妙進(jìn)入儲能行業(yè)后第一個項目就是EMS。在第一步時就十分懵逼:以前都是實現(xiàn)某項功能、完成某個成果才算工作量,不理解為什么這類工作搜集材料整理個需求文檔就算完成工作了?掙扎了大半年之后好像對這種解決方案類的工作有一些理解了,努力嘗試“以系統(tǒng)的整體架構(gòu)入手去思考問題”。
第一步需求分析,這一步要做的工作就是根據(jù)電站設(shè)計的指標(biāo)和需求整理一堆excel和Visio文檔,一般是要有多年經(jīng)驗的老員工才能干,半轉(zhuǎn)行的應(yīng)屆生一般干不了。
第二步架構(gòu)設(shè)計,以一個五層結(jié)構(gòu)的EMS系統(tǒng)為例,從下到上可以是:硬件層(PC)、操作系統(tǒng)層(Linux,Windows)、支撐平臺層(數(shù)據(jù)庫、網(wǎng)絡(luò)通信)、數(shù)學(xué)建模層(預(yù)測模型、系統(tǒng)模型等)及應(yīng)用軟件層(SCADA、應(yīng)用軟件)。需要完成全系統(tǒng)的功能分解及信息流規(guī)劃,模塊間通信協(xié)議、接口及線纜種類、規(guī)格等。
前端數(shù)據(jù)采集,包括光伏、風(fēng)力、儲能電芯、電網(wǎng)及負(fù)荷、PCS等模塊的數(shù)據(jù)。采集后實時顯示在用戶界面,并使用這些數(shù)據(jù)進(jìn)行系統(tǒng)狀態(tài)估計、控制保護(hù)及實現(xiàn)所需其他功能(如自動發(fā)電控制、負(fù)荷預(yù)測、發(fā)電預(yù)測與經(jīng)濟(jì)調(diào)度等)。
模塊內(nèi)的通信方式以串行通信(IIC\SPI)和CAN通信為主,模塊之間則以61850,modbus,104等協(xié)議為主。
第三步軟件開發(fā)的工作量十分龐大,一般由專業(yè)的EMS完成底層代碼開發(fā),用戶進(jìn)行二次開發(fā)。
第四步類似一、二步,需要對整個系統(tǒng)以及常用的硬件設(shè)備非常熟悉才能干的了。
最后一步,整體測試驗證、項目落地運行。
以上這些啰啰嗦嗦,講了一堆宏觀的內(nèi)容,但是到了實際工作分配后,卻不知道第一步要干什么。以前是做嵌入式的,實在不想去搞項目管理,還是想把工作內(nèi)容與軟件開發(fā)結(jié)合起來??紤]到現(xiàn)實情況能做的實在太少,上網(wǎng)查了幾篇論文,看了幾篇博客,發(fā)現(xiàn)有個開源的通信工程代碼libiec61850,還有詳細(xì)的文檔介紹。于是下載了源碼學(xué)習(xí)了一下,順便移植到Xilinx開發(fā)板上運行,與上位機聯(lián)調(diào)。
IEC61850
登錄網(wǎng)站libiec61850.com,下載源碼到本地。
工程可以在Windows、Linux下運行,包括x86及ARM架構(gòu),可以和IEDScout通信。網(wǎng)站上有介紹文檔和API說明。在Linux虛擬機內(nèi)編譯后,選擇client_example2和server_example_goose。進(jìn)入.c文件后,修改網(wǎng)絡(luò)接口名稱、IP地址和mac地址,保存編譯,然后以sudo運行server和client。可以看到服務(wù)端與客戶端分別輸出如下:
可以看到服務(wù)端和客戶端正常運行。客戶端展示了如何訪問一個未知設(shè)備上的數(shù)據(jù)模型,這個數(shù)據(jù)模型在服務(wù)端文件夾內(nèi)的cid文件中。這是61850的IED 模型配置文件,下面來仔細(xì)解讀一下這個文件。
cid文件
讀懂這個文件需要一定的XML語法知識,可以參考61850-6文檔。打開文件,將其分為三部分解讀。
1、通信配置
第5~36行communication部分是文件的通信配置部分。communication下是子網(wǎng)和接入點部分,其中接入點處定義了IED名稱和接入點名稱,在后面部分會用到。
接入點下的address設(shè)置IP地址、子網(wǎng)掩碼和網(wǎng)關(guān)。
OSI-TSEL:表示 OSI 模型中的 TSEL(Transport Service Access Point Selector)為 0001,用于在傳輸層標(biāo)識服務(wù)訪問點。
OSI-PSEL:表示 OSI 模型中的 PSEL(Presentation Service Access Point Selector)為 00000001,用于在表示層標(biāo)識服務(wù)訪問點。
OSI-SSEL:表示 OSI 模型中的 SSEL(Session Service Access Point Selector)為 0001,用于在會話層標(biāo)識服務(wù)訪問點。
GSE表示 GSE 實例的 ldInst 為 "GenericIO",cbName 為 "gcbEvents",分別指定了邏輯設(shè)備名稱和控制塊名稱。Address為地址信息,MinTime和MaxTime一般為毫秒。
2、IED
Services部分描述了服務(wù)端IED實例支持的服務(wù)。
AccessPoint是通信配置部分出現(xiàn)過的接入點,里面包含來一個LDevice邏輯設(shè)備GenericIO,邏輯設(shè)備內(nèi)部有三個邏輯節(jié)點,分別是LN0、LPHD和GGIO。
LN0內(nèi)部定義了四個數(shù)據(jù)集DataSet,兩個報告控制塊ReportControl,兩個GSEControl和一個數(shù)據(jù)對象DO。
DataSet(數(shù)據(jù)集):用于定義一組數(shù)據(jù)對象,這些數(shù)據(jù)對象通常包含監(jiān)測點、測量值、狀態(tài)等信息。可用于定義需要傳輸?shù)臄?shù)據(jù)集合,以便在電力系統(tǒng)中進(jìn)行監(jiān)測、控制和管理。
ReportControl(報告控制):用于定義報告生成和傳輸?shù)目刂茀?shù),包括報告生成周期、報告?zhèn)鬏敺绞?、報告對象等??梢杂糜谂渲孟到y(tǒng)生成和傳輸報告的行為,以便及時獲取系統(tǒng)狀態(tài)和事件信息。
GSEControl(GSE控制):用于控制 GSE(Generic Substation Events)數(shù)據(jù)的生成和傳輸,包括 GSE 數(shù)據(jù)的采集周期、傳輸方式、優(yōu)先級等。可以用于配置 GSE 數(shù)據(jù)的采集和傳輸參數(shù),以便及時獲取系統(tǒng)中的事件信息。
GGIO內(nèi)部定義了一個Mod和四個SPCSO。SPCSO代表generic single point controllable status output是否使能,ctlModel均為direct-with-normal-security。關(guān)于這個值的具體含義可以參考61850-7-2。
3、數(shù)據(jù)類型模板
最后一部分是DataTypeTemplates,在這里定義的模板才能被第二部分使用。包括了邏輯節(jié)點、數(shù)據(jù)對象、數(shù)據(jù)屬性和枚舉類型。
Xilinx開發(fā)板測試
最后來在Xilinx開發(fā)板上運行代碼,與電腦虛擬機之間使用61850協(xié)議互相通信。連接開發(fā)板需要用到電源線、網(wǎng)線和串口線(也可以用ssh協(xié)議,這樣就不用串口)。
首先需要安裝交叉編譯環(huán)境,可參考前幾節(jié)文章內(nèi)容,在ARM官網(wǎng)下載,或者直接使用vitis自帶的交叉編譯工具鏈。如果報錯command not found,運行以下命令:
apt-get install gcc-arm-linux-gnueabi
sudo apt-get install gcc-arm*
安裝完成后,安裝libiec61850官網(wǎng)說明,make時附帶參數(shù)TARGET=LINUX-ARM,即可編譯完成ARM格式的可執(zhí)行文件。使用file命令校驗:
可以看到文件無誤。虛擬機運行服務(wù)端程序server_example_goose,客戶端仍然選擇client_example2,使用ssh命令傳輸?shù)介_發(fā)板上運行,輸出結(jié)果如下:
看到輸出結(jié)果與虛擬機內(nèi)輸出相同,程序運行無誤。
同時也可以使用wireshark觀察交互的數(shù)據(jù)包:
文章來源:http://www.zghlxwxcb.cn/news/detail-859146.html
后續(xù)可以把Xilinx開發(fā)板換成BMS,電腦換成EMS、工控機,多嘗試使用幾個61850服務(wù),感受協(xié)議在電力系統(tǒng)中的使用方式。文章來源地址http://www.zghlxwxcb.cn/news/detail-859146.html
到了這里,關(guān)于能源管理系統(tǒng)EMS與IEC61850的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!