劉 群 過其峰 楊建旭 劉鴻濤 劉進進
(南瑞集團公司(國網(wǎng)電力科學研究院) 江蘇 南京 211000) (安徽南瑞繼遠電網(wǎng)技術(shù)有限公司 安徽 合肥 230088)
基于AM335x通信網(wǎng)關(guān)裝置的設(shè)計與實現(xiàn)
劉 群 過其峰 楊建旭 劉鴻濤 劉進進
(南瑞集團公司(國網(wǎng)電力科學研究院) 江蘇 南京 211000) (安徽南瑞繼遠電網(wǎng)技術(shù)有限公司 安徽 合肥 230088)
介紹一款基于AM335x系列芯片設(shè)計的通信網(wǎng)關(guān)裝置,包括裝置硬件和軟件的設(shè)計與實現(xiàn)。該裝置目標實現(xiàn)規(guī)約轉(zhuǎn)換功能,即通過串口或網(wǎng)口方式采集分散在各地的多種前端智能終端設(shè)備信息,再通過裝置對采集到的信息進行處理轉(zhuǎn)換,利用IEC104或61850規(guī)約進行轉(zhuǎn)出給后端設(shè)備或系統(tǒng)(一般為主站端,功能為面向用戶的前端)。同時接收后端的控制信息命令轉(zhuǎn)給前端設(shè)備進行控制,實現(xiàn)各類通信信息的網(wǎng)關(guān)轉(zhuǎn)換功能。該裝置適應于電力系統(tǒng)變電站和其他智能建筑等智能應用系統(tǒng),作為系統(tǒng)的前置通信裝置,也可應用于類似的應用系統(tǒng)。
AM335x 通信網(wǎng)關(guān) 61850 SQLite
弱電系統(tǒng)集成作為一種新興的服務(wù)業(yè),是近年來信息服務(wù)業(yè)中發(fā)展勢頭最為強勁的一個行業(yè),智能建筑的智能化實質(zhì)就是傳感信號和控制信號基于集成化的基礎(chǔ)測控終端實現(xiàn)上層的功能應用[1]。目前在智能建筑弱電項目中測控設(shè)備種類繁多,系統(tǒng)聯(lián)網(wǎng)中通信協(xié)議的多樣化問題越來越突出,通信網(wǎng)關(guān)是解決此類問題的一個重要裝置之一。通信網(wǎng)關(guān)裝置主要提供不同的硬件接口接入不同通信總線方式的單個傳感器終端或同類傳感器終端組成的子系統(tǒng),通過不同的通信規(guī)約采集前端設(shè)備信息,經(jīng)過通信網(wǎng)關(guān)裝置處理后通過IEC104或IEC61850規(guī)約[2]轉(zhuǎn)發(fā)到遠端后臺系統(tǒng)或主站,達到設(shè)備接入的整合和統(tǒng)一。
基于AM335x通信網(wǎng)關(guān)裝置[3-4](以下簡稱裝置)是適用于變電站等智能建筑的低端智能通信網(wǎng)關(guān)終端產(chǎn)品,其采用ARM架構(gòu)中的Cortex-A8系列芯片,主要實現(xiàn)通信規(guī)約轉(zhuǎn)換功能,一般把通過串口進行的通信規(guī)約數(shù)據(jù)采集后再通過網(wǎng)口進行網(wǎng)絡(luò)IEC104或61850規(guī)約輸出,實現(xiàn)規(guī)約輸出的標準化,達到建筑智能化和信息化;硬件采用Cortex-A8芯片,采用通用的嵌入式Linux操作系統(tǒng)平臺[5-6],進行編程控制,裝置硬件提供串口、網(wǎng)口、指示燈等信息;基于ARM平臺的通信網(wǎng)關(guān)裝置處理電路包括:基于ARM平臺的智能網(wǎng)關(guān)設(shè)備,電路包括:電源模塊,串口通信模塊,以太網(wǎng)網(wǎng)絡(luò)通信模塊,SD存儲卡模塊,指示燈模塊;通信網(wǎng)關(guān)裝置的總體電路如圖1所示,其主要由電源模塊部分、指示燈模塊部分、串口模塊部分、網(wǎng)絡(luò)模塊部分、存儲模塊部分、CPU模塊部分等幾個部分組成。

圖1 裝置硬件設(shè)計結(jié)構(gòu)框圖
1.1 電源模塊
電源模塊的進入電源是DC12 V,再通過AP1501芯片實現(xiàn)DC12 V電壓轉(zhuǎn)換為DC5 V,給主控芯片供電,通過LM1085芯片實現(xiàn)DC5 V電源轉(zhuǎn)換為DC3.3 V,給網(wǎng)絡(luò)接口和串口接口等模塊供電。
1.2 串口通信模塊
串口通信模塊主要提供485通信總線,其實現(xiàn)電路部分采用了ADM2582芯片,它內(nèi)部集成有隔離電源,輸入VDD_5和GND經(jīng)隔離后輸出VCC_485和GND_485獨立電源。從ARM主控芯片輸出的TTL電平發(fā)信號轉(zhuǎn)換為RS485差分信號的轉(zhuǎn)換和傳輸功能。
1.3 以太網(wǎng)網(wǎng)絡(luò)模塊
網(wǎng)絡(luò)通信模塊通過AR8031芯片實現(xiàn)10/100/1 000 Mbit·s-1高速網(wǎng)絡(luò)通信,AM335x主控芯片與該芯片間通過RGMII進行數(shù)據(jù)交互和命令控制,實現(xiàn)網(wǎng)絡(luò)通信功能,再通過標準RJ45接頭引出。
1.4 SD存儲卡模塊
SD存儲卡模塊通過標準的SD-CARD3子模塊實現(xiàn)AM335x主控芯片與SD卡間的數(shù)據(jù)交互,完成SD卡作為磁盤掛載到主控芯片的功能,可實現(xiàn)小容量的本地存儲功能。
1.5 指示燈模塊
指示燈模塊主要是顯示裝置串口、電源等當前的工作狀態(tài),通過AM335x主控芯片的GPIO腳進行高低電平信號的輸出,實現(xiàn)指示燈亮滅功能。
2.1 設(shè)備軟件結(jié)構(gòu)設(shè)計
通信網(wǎng)關(guān)裝置的軟件結(jié)構(gòu)設(shè)計圖如圖2所示,主要通過實現(xiàn)芯片內(nèi)核的管理模塊、接口通信、協(xié)議模塊、數(shù)據(jù)管理、配置管理等其他各個模塊。

圖2 裝置軟件設(shè)計結(jié)構(gòu)框圖
2.1.1 啟動模塊
實現(xiàn)主程序的啟動和初始化配置信息、接口驅(qū)動控制及相關(guān)參數(shù)。
2.1.2 配置模塊
通過SQLite數(shù)據(jù)庫[7-8]和配置文件對通信網(wǎng)關(guān)裝置的運行進行參數(shù)配置,同時通過該模塊實現(xiàn)通信接口的報文監(jiān)視。
2.1.3 管理模塊
包括數(shù)據(jù)庫管理模塊和內(nèi)存管理模塊,數(shù)據(jù)庫管理模塊為實現(xiàn)在裝置里讀取SQLite數(shù)據(jù)庫信息提供接口,進行數(shù)據(jù)表的增加、刪除、更改等操作,內(nèi)存管理模塊實現(xiàn)內(nèi)存塊的創(chuàng)建、監(jiān)控和管理,初始化SQLite數(shù)據(jù)表信息結(jié)構(gòu)的創(chuàng)建和初始化,實現(xiàn)裝置運行信息存儲于內(nèi)存塊。
2.1.4 接口模塊
其依賴配置信息模塊,通過讀取配置信息獲得需要啟動的接口信息,包括串口和網(wǎng)口;同時管理所啟動的串口和網(wǎng)口進程。具體進程包括串口進程、網(wǎng)口之TCP的服務(wù)端、客戶端及UDP等進程。
2.1.5 協(xié)議模塊
其依賴配置信息模塊和接口信息模塊,通過讀取配置獲得需要啟動運行的具體協(xié)議進程;協(xié)議進程通過接口進行收發(fā)報文和交互數(shù)據(jù);同時管理相關(guān)協(xié)議進程。具體管理的協(xié)議功能有協(xié)議初始化,包括通信接口、通信地址、通信間隔、通信異常等待時間等信息;通信報文的發(fā)送和接收等功能。
各個協(xié)議模塊可通過已提供的通信參數(shù)實現(xiàn)與前端設(shè)備的數(shù)據(jù)交互,獲得數(shù)據(jù)信息,并寫入實時數(shù)據(jù)庫;還可接收上面的命令信息執(zhí)行相應的動作命令。
2.2 數(shù)據(jù)結(jié)構(gòu)設(shè)計
通信網(wǎng)關(guān)裝置通信時的參數(shù)有多種,這里主要介紹接入設(shè)備通信參數(shù)表、采集值參數(shù)表、實時值轉(zhuǎn)發(fā)參數(shù)表等三類主要參數(shù)結(jié)構(gòu)的設(shè)計。
2.2.1 接入設(shè)備通信參數(shù)
功能是實現(xiàn)主程序的啟動和初始化配置信息、接口驅(qū)動控制及相關(guān)參數(shù),該結(jié)構(gòu)體主要包括所要接入的其他設(shè)備或裝置參數(shù)和通信的參數(shù)信息,具體有接入裝置通信地址,通信方式有網(wǎng)口和串口兩種,網(wǎng)口通信參數(shù),串口通信參數(shù)等。
struct IED_CONFIG_STRUCT
{
int ied_id;
//接入裝置編號
int ied_addr;
//接入裝置通信地址
short com_mode;
//接入裝置通信方式,0為串口,1為網(wǎng)口tcp,2為網(wǎng)口udp
int tcp_port;
//tcp通信端口號
int udp_orig_port;
//udp通信源端口號
int udp_dest_port;
//udp通信目的端口號
char ip[18];
//網(wǎng)絡(luò)通信IP地址
short port;
//串口通信端口0表示串口1,1表示串口2,依次類推
short bps;
//串口通信波特率
short check;
//串口通信校驗位
short stop;
//串口通信停止位
short mode1;
//串口通信方式0表示485,1表示232,2表示422
};
2.2.2 采集到的值參數(shù)
功能是存儲采集到的實時值的臨時存儲,這里以一類遙信信息的設(shè)計為例(其他如遙測、遙脈、遙控等信息與此類似),主要包括遙信結(jié)構(gòu)體內(nèi)編號,遙信所屬裝置編號,與設(shè)備配置參數(shù)一一對應,遙信所屬裝置內(nèi)的序號及遙信值等參數(shù)。
struct FDB_YX_STRUCT
{
int yx_id;
//遙信編號,全部遙信,依次累加
unsigned char ied_id;
//遙信所屬裝置編號
unsigned char info_num;
//遙信所屬裝置內(nèi)的序號
unsigned char real;
//原始值
};
2.2.3 轉(zhuǎn)發(fā)值參數(shù)
功能是信息轉(zhuǎn)發(fā)提供臨時存儲區(qū),可以實現(xiàn)多個方向的轉(zhuǎn)發(fā)區(qū),這里以一個轉(zhuǎn)發(fā)區(qū)一個遙信轉(zhuǎn)發(fā)類型數(shù)據(jù)設(shè)計為例(其他如遙測、遙脈、遙控等信息與此類似),包括遙信結(jié)構(gòu)體內(nèi)編號,與遙信值參數(shù)一一對應,具體轉(zhuǎn)發(fā)值等參數(shù)。
struct YX_ZF_STRUCT
{
int yx_id;
int zf_addr;
//轉(zhuǎn)發(fā)號
unsigned char value;
};
基于AM335x通信網(wǎng)關(guān)裝置的實現(xiàn)包括硬件實現(xiàn)和軟件實現(xiàn)兩部分,總體實現(xiàn)如圖3所示,裝置實現(xiàn)共分三層,分別為接口層、協(xié)議層和支撐層等。接口層包括串口和網(wǎng)口兩類,串口提供鏈路和驅(qū)動,其主要實現(xiàn)數(shù)據(jù)的轉(zhuǎn)入(接入)功能,網(wǎng)口提供鏈路和驅(qū)動,其主要實現(xiàn)數(shù)據(jù)的轉(zhuǎn)出功能;協(xié)議層主要運行多種協(xié)議,實現(xiàn)報文的收發(fā)和解析;支撐層包括裝置運行所需的配置信息、內(nèi)存管理及數(shù)據(jù)傳輸轉(zhuǎn)換功能,確保數(shù)據(jù)的流轉(zhuǎn)正常。

圖3 裝置總體實現(xiàn)框圖
3.1 裝置硬件實現(xiàn)
裝置硬件主要實現(xiàn)AM335x主控對串口、網(wǎng)口、NandFlash及狀態(tài)指示燈的控制和通信,裝置本身設(shè)計為1U標準機箱,前面板為狀態(tài)指示燈展示和裝置名稱,后面板為RJ45網(wǎng)絡(luò)接口,RS485端子及電源端子等,且接口和端子一層布局,串口實現(xiàn)不同速率的收發(fā)數(shù)據(jù),網(wǎng)口實現(xiàn)10/100 MB的收發(fā)數(shù)據(jù),狀態(tài)指示燈實現(xiàn)串口通信、電源、軟件運行等狀態(tài)指示。
3.2 裝置軟件實現(xiàn)
裝置軟件主要通過不同協(xié)議獲得數(shù)據(jù),經(jīng)過加工處理后,再通過統(tǒng)一標準的IEC104或61850把信息轉(zhuǎn)發(fā)出去,裝置的軟件為模塊化設(shè)計,每個基本功能都是一個進程,如創(chuàng)建共享內(nèi)存、串口通信、網(wǎng)口通信、不同協(xié)議及數(shù)據(jù)流轉(zhuǎn)等模塊都是獨立的進程,進程間主要通過共享內(nèi)存[9-10]實現(xiàn)數(shù)據(jù)交互,具體的軟件實現(xiàn)模塊主要包括如下幾個部分。
3.2.1 支撐層的功能實現(xiàn)
包括裝置運行所需配置的結(jié)構(gòu)體信息的錄入和讀取,有創(chuàng)建共享內(nèi)存區(qū)和共享內(nèi)存的映射,便于其他進程的共用,相關(guān)函數(shù)如下:
config_mem_id = create_shm(CONFIG_BUF_KEY, sizeof(CONFIG_STRUCT));功能為根據(jù)指定地址創(chuàng)建共享指定大小的內(nèi)存區(qū),成功后返回一個共享內(nèi)存ID,第一個參數(shù)為指定地址,第二個參數(shù)為指定大小。
config_buf=(CONFIG_STRUCT *)map_shm(config_mem_id);功能為根據(jù)共享內(nèi)存ID映射相應的結(jié)構(gòu)體參數(shù)指針,第一個參數(shù)為創(chuàng)建好的共享內(nèi)存ID。
3.2.2 接口層的功能實現(xiàn)
該層的進程模塊主要有串口通信和網(wǎng)口通信兩個模塊,這兩個進程模塊也是通過一個接口進程進行管理,主要根據(jù)配置信息啟動串口或網(wǎng)口進程,同時監(jiān)視串口和網(wǎng)口進程的運行情況,如串口或網(wǎng)口進程遇意外退出則重新啟動該進程。串口通信模塊主要根據(jù)配置信息初始化串口通信參數(shù),根據(jù)通信地址進行串口數(shù)據(jù)的收發(fā);另一網(wǎng)口通信模塊主要根據(jù)配置信息初始化網(wǎng)口通信參數(shù),包括建立TCP或UDP,進行網(wǎng)絡(luò)數(shù)據(jù)的收發(fā),監(jiān)視網(wǎng)絡(luò)鏈路的狀態(tài),相關(guān)函數(shù)如下,功能是啟動某個通信接口進程。
execl(path,name,para1,para2,para3,(char*)0);功能為啟動進程并傳入指定參數(shù),path為進程的目錄,name為進程名,para1為接口編號,para2為通過該接口的設(shè)備數(shù),para3為通過該接口的第一個設(shè)備ID。
3.2.3 協(xié)議層的功能實現(xiàn)
該層的進程模塊有管理各個協(xié)議進程的主進程、各個協(xié)議進程。協(xié)議管理進程根據(jù)配置啟動對應的協(xié)議進程,同時監(jiān)視各個協(xié)議進程的運行情況,意外退出后重新啟動退出的協(xié)議進程;各個協(xié)議進程主要完成協(xié)議報文的組幀和解析,并把解析好的數(shù)據(jù)存入共享內(nèi)存區(qū),為轉(zhuǎn)發(fā)進程進行數(shù)據(jù)轉(zhuǎn)發(fā)提供基礎(chǔ)功能。
execl(path, proc_name, (char *)0);該函數(shù)功能是協(xié)議管理進程啟動具體一個協(xié)議進程的函數(shù),path為協(xié)議進程的目錄,proc_name為具體協(xié)議進程名稱。
通信網(wǎng)關(guān)裝置的開發(fā)實現(xiàn)了通信規(guī)約轉(zhuǎn)換功能,具體通過串口進行的通信規(guī)約數(shù)據(jù)采集后通過網(wǎng)口進行網(wǎng)絡(luò)IEC104或61850規(guī)約輸出,實現(xiàn)規(guī)約輸出的標準化。下一步本裝置的系列開發(fā)將著重在硬件和軟件兩個方面,硬件重點在接口的數(shù)量增加和種類的增加,可增加無線接口通信模塊和其他通信總線接口開發(fā);軟件重點在增加適應不同通信總線類型的規(guī)約等。
[1] 過其峰,劉群,田小鋒,等.基于Cortex-M0采集控制設(shè)備的設(shè)計與實現(xiàn)[J].工業(yè)控制計算機,2016,29(2):24-25.
[2] 陳云國,戴勝,楊乘勝,等.基于IEC61850的智能分布式饋線自動化系統(tǒng)建模[J].電力自動化設(shè)備,2016,36(6):189-193.
[3] 凌秀澤,周俊,王俊仁.基于AM335X的液晶顯示控制系統(tǒng)設(shè)計[J].計算機測量與控制,2015,23(1):96-98.
[4] 林培杰,朱安南,程樹英.Android數(shù)據(jù)庫SQLite性能優(yōu)化[J].計算機系統(tǒng)應用,2014,23(4):193-196.
[5] 滿莎,楊恢先,彭友,等.基于ARM9的嵌入式無線智能家居網(wǎng)關(guān)設(shè)計[J].計算機應用,2010,30(9):2541-2544.
[6] 左巖,趙建玉,張紅,等.基于Linux的嵌入式數(shù)據(jù)采集裝置的TCP/IP通信[J].濟南大學學報(自然科學版),2014(3):194-197.
[7] 方冬蓉,張秋余,董瑞洪,等.Android系統(tǒng)刪除數(shù)據(jù)恢復方法研究[J].計算機工程,2014,40(10):275-280.
[8] 方勇軍,蘇尚文,王勝軍,等.基于ARM的嵌入式Linux系統(tǒng)在便攜式醫(yī)學儀器開發(fā)中的應用[J].中國醫(yī)學物理學雜志,2005,22(3):545-547.
[9] 江濤,周華,劉建輝,等.一種Linux數(shù)據(jù)庫應用定制引擎LADE的設(shè)計[J].網(wǎng)絡(luò)新媒體技術(shù),2008,29(1):54-59.
[10] Yzelman A N,Bisseling R H,Roose D,et al.MulticoreBSP for C:A High-Performance Library for Shared-Memory Parallel Programming[J].International Journal of Parallel Programming,2014,42(4):619-642.
DESIGNANDIMPLEMENTATIONOFCOMMUNICATIONGATEWAYDEVICEBASEDONAM335x
Liu Qun Guo Qifeng Yang Jianxu Liu Hongtao Liu Jinjin
(StateGridElectricPowerReasearchInstitute,NariGroupCorporation,Nanjing211000,Jiangsu,China) (AnhuiNanriJiyuanPowerTechnologyCo.,Ltd.,Hefei230088,Anhui,China)
We present a communication gateway device based on the AM335x series chips, covering hardware and software from theory to practice. The device aims to achieve the protocol conversion function. First, much front-end information of intelligent terminal equipment scattered around is collected through serial port or Ethernet port. Moreover, the collected information is processed by the device. The information will be forwarded to backend device or system by IEC104 or 61850 protocol. Finally, control commands will be sent from back-end to front-end equipment to achieve all kinds of gateway conversion function of communication information. It is proved that the device is suitable for the power system transformer substation and other intelligent building. It also can be applied to similar application system as the system of pre-communication devices.
AM335x Communication gateway 61850 SQLite
TP3
A
10.3969/j.issn.1000-386x.2017.09.034
2016-10-21。劉群,高工,主研領(lǐng)域:電力系統(tǒng)繼電保護。過其峰,工程師。楊建旭,工程師。劉鴻濤,工程師。劉進進,工程師。