TI 基于Concerto 雙核MCU 的PRIME 電力線通信數(shù)據(jù)集中器方案
摘要
本文檔介紹了采用C2000系列雙核(CM3+C28x)微控制器實現(xiàn)的,基于PRIME標準的電力線通信(PLC)數(shù)據(jù)集中器方案。本方案通過一顆Concerto MCU加SDRAM實現(xiàn)完整的PRIME協(xié)議棧,提供波特率115200bps的UART異步串行端口給客戶端主機進行網(wǎng)絡(luò)管理及數(shù)據(jù)通信,為需要低成本實現(xiàn)數(shù)據(jù)集中器功能的場合提供了有效的解決方案。
簡介
PRIME-PoweRline Intelligent Metering Evolution標準是由西班牙Iberdrola電力公司聯(lián)合有關(guān)的PLC芯片、系統(tǒng)、電表等廠商,為窄帶PLC電力線通信制定的遠程抄表技術(shù)標準,包括物理層和MAC層的數(shù)據(jù)傳輸標準。該技術(shù)的協(xié)議開放,實施無版權(quán)費用,不同廠商的產(chǎn)品能夠?qū)崿F(xiàn)互聯(lián)互通。TI采用低成本的DSP控制器,以軟件的方式來實現(xiàn)PRIME協(xié)議,相較其他廠商以專用芯片ASIC的實現(xiàn)方式,提高了應(yīng)用的靈活性。
事實上,早前TI已經(jīng)采用OMAP1808實現(xiàn)了PRIME數(shù)據(jù)集中器的完整功能。本文介紹的方案,主要是將OMAP平臺的DC方案移植到單芯片Concerto上,實現(xiàn)一顆芯片完成PRIME的上層和底層MAC協(xié)議以及物理層協(xié)議,適用于低成本的嵌入式數(shù)據(jù)集中器應(yīng)用,因此,我們也把該數(shù)據(jù)集中器方案簡稱為EDC,即Embedded Data Concentrate。
OMAP1808平臺的DC方案基于Linux操作系統(tǒng),而本EDC方案基于TIRTOS操作系統(tǒng),上層和下層MAC通信采用內(nèi)部數(shù)據(jù)共享,不但系統(tǒng)精簡很多,占用資源少,而且數(shù)據(jù)更加可靠,除了沒有TCP/IP接口之外,所能管理及連接的節(jié)點數(shù)量與OMAP平臺的DC方案無異。
1 EDC系統(tǒng)架構(gòu)
本方案采用Concerto系列芯片F(xiàn)28M35H52C1作為主芯片,處理PRIME協(xié)議的UPPER MAC及LOW MAC, PHY層協(xié)議。F28M35H52C1是一款雙核的MCU,它內(nèi)部包含了Cortex m3主系統(tǒng)和TI C28x控制子系統(tǒng)兩個MCU系統(tǒng),每個系統(tǒng)分別有512KB的Flash空間,Cortex m3獨立使用32KB RAM,TI C28x獨立使用36KB RAM,另外還有可配置使用權(quán)的 64KB的共享RAM(在EDC系統(tǒng)中全部被分配給C28x使用)和2KB的IPC Message RAM。在EDC系統(tǒng)應(yīng)用中,Cortex m3核工作主頻為75MHz,它負責(zé)處理Upper MAC協(xié)議,C28x核工作主頻為150MHz,它負責(zé)處理Low MAC及PHY層協(xié)議,兩個核之間通過IPC內(nèi)部數(shù)據(jù)共享區(qū)機制進行通信。主芯片MCU外加一個8M Bytes的SDRAM,由CM3核進行訪問,用來存儲節(jié)點信息數(shù)據(jù)庫等數(shù)據(jù),目前系統(tǒng)使用的大小約為3M Bytes;另外有一個128KByts 的EEPROM,由C28x訪問,用來存儲系統(tǒng)掉電參數(shù);模擬前端采用TI AFE031,支持三相和單相連接,由C28x核通過SPI接口對其進行控制。系統(tǒng)框圖如圖1 所示。其中,CM3 通過1個GPIO口控制一個LED,在系統(tǒng)正常工作時以1Hz頻率進行顯示;C28x通過3個GPIO控制另外三個LED,分別指示C28x工作狀態(tài)及PLC通信狀態(tài)。
圖1 PRIME EDC系統(tǒng)架構(gòu)示意圖
2 EDC方案特性
單芯片實現(xiàn)PLC PRIME DC完整功能。
提供UART接口與PC或用戶Host Processor進行通信,通信速率115200bps,8位數(shù)據(jù)位,1位停止位,無奇偶校驗。
提供PC(Ubuntu Linux OS)客戶端軟件進行模擬測試,客戶端軟件通過mgmt及IEC-432 API接口與EDC上運行的服務(wù)器端進行通信,用戶可參考這些客戶端軟件示例代碼實現(xiàn)Host代碼設(shè)計,客戶端軟件包括:
Management tool application
Base node conference tool application
IEC 61334-4-32 data transfer application
硬件設(shè)計保留C28x的SCIA UART通信接口,便于客戶使用TI提供的PC端ZCG工具軟件,通過連接PC的COM口或USB-UART轉(zhuǎn)接板至該接口來單獨對PLC PHY層參數(shù)進行測試。
3 硬件設(shè)計
3.1 參考原理圖
硬件相關(guān)的原理圖部分設(shè)計請參考圖2,圖3,圖4 所示。
圖2 主芯片MCU參考設(shè)計原理圖
圖3 SDRAM及UART接口參考設(shè)計原理圖
圖4 AFE031周邊電路參考設(shè)計原理圖
3.2電路板
EDC電路板實物如圖5及圖6所示。電路板正面放置MCU, AFE031及變壓器,電源IC等大部分器件,背面放置了一片SDRAM。MCU芯片左上方的彩色線連接部分為UART通信接口及UART打印信息輸出接口,左側(cè)為15V供電輸入接口及電表連接接口,該22pin接口按照中國國家電網(wǎng)《Q/GDW 375.2-2009》標準第6.3.1節(jié)中對集中器載波模塊的接口定義進行設(shè)計,其中的UART接口連接至MCU CM3核的UART0;右側(cè)黑膠布遮蓋部分為外接三相電力線接口,該接口同樣按照中國國家電網(wǎng)《Q/GDW 375.2-2009》標準第6.3.2節(jié)中對集中器載波模塊的載波耦合接口定義進行設(shè)計,Service node可以通過該三相電力線接口與EDC 進行單相或者三相的信號連接。EDC上電正常工作時,圖5所示右下方的LED(LED-4)燈會以1Hz 的頻率閃爍。
圖6 EDC電路板背面圖
3.3 EDC與PLC節(jié)點組網(wǎng)連接
本例采用TI的TMDSPLCKIT-V3作為PLC節(jié)點,EDC與兩個PLC節(jié)點的連接如圖7所示,EDC的UART0接口與Linux PC 客戶端通過一個UART-USB轉(zhuǎn)接小板連接,連接如圖8所示。
圖7 EDC與PLC節(jié)點連接示意圖
圖8 EDC與PC連接示意圖
4 EDC可以實現(xiàn)的功能
- 支持多達1200個節(jié)點的注冊/注銷
- 支持最多3600路的Unicast MAC連接/釋放
- Keep Alive功能及自動調(diào)節(jié)Keep Alive檢查間隔時間
- IEC-61334-4-32邏輯鏈路層
- Appemu數(shù)據(jù)傳輸測試
- 支持節(jié)點中繼
- 節(jié)點promotion和demotion
- Multicast MAC連接/釋放
- 單點和多點firmware upgrade
- 支持使用IEC 61334-4-32服務(wù)的外部應(yīng)用
- 支持外部管理GUI
- 支持Linux客戶端命令進行DC一致性測試
5 EDC運行需要的目標代碼及Linux客戶端軟件
Concerto目標代碼:prime_dc_concerto_cm3.out prime_dc_concerto_c28x.out
Linux客戶端軟件:uart_intf, mgmt_cli, ext432App, bn_conf_tool
6 PRIME EDC基本功能演示
PRIME EDC的功能演示基于一個PRIME網(wǎng)絡(luò)進行,該網(wǎng)絡(luò)由一個base node和幾個service node組成,EDC就是其中的base node。功能演示包括以下幾個部分:
1.節(jié)點注冊、節(jié)點注銷
2.Keep Alive監(jiān)測
3.節(jié)點連接、斷開連接
4.節(jié)點升級(至中繼節(jié)點),節(jié)點降級(至終端節(jié)點)
5.按照IEC-61334-4-32協(xié)議進行數(shù)據(jù)傳輸
6.固件在線更新(單播和群播)
參考圖7的網(wǎng)絡(luò)連接示意圖搭建演示網(wǎng)絡(luò),參考圖8連接EDC的UART1至Linux PC,給EDC及service node加電后,系統(tǒng)將自動完成網(wǎng)絡(luò)連接。通過在Linux PC端的進行對應(yīng)的命令行操作,即可實現(xiàn)以上功能演示。Linux PC端的命令行操作參考后續(xù)章節(jié)介紹。
7 Linux PC端命令行操作說明
準備一臺安裝ubuntu Linux OS的PC,將提供的Linux客戶端軟件:uart_intf, mgmt_cli, ext432App, bn_conf_tool復(fù)制到Home路徑下。
7.1 打開UART中繼
在Linux PC上打開一個Terminal,進入uart_intf路徑,執(zhí)行“make clean”命令,清除舊的可執(zhí)行文件,然后執(zhí)行“make PREFIX=”命令,生成適合本系統(tǒng)的可執(zhí)行文件uart_intf。在當前路徑下,鍵入以下命令開啟UART 中繼:
sudo./uart_info–c/dev/ttyUSB0
命令被正常執(zhí)行后,顯示以下提示:
圖9 Linux UART連接提示
其中的TCP port<57777>, TCP port<56666>, TCP port<58888>為后續(xù)數(shù)據(jù)傳輸,網(wǎng)絡(luò)管理及DC一致性檢查等客戶端進程所要用到的端口參數(shù)。
7.2 mgmt網(wǎng)絡(luò)管理工具客戶端及其常用命令參考
在Linux PC上打開一個新的Terminal,進入mgmt_cli路徑,執(zhí)行“make clean”命令,清除舊的可執(zhí)行文件,然后執(zhí)行“make PREFIX=”命令,生成適合本系統(tǒng)的可執(zhí)行文件pdc_mgmt_cli。
在當前路徑下,鍵入以下命令運行網(wǎng)絡(luò)管理工具客戶端:
./pdc_mgmt_cli–p 56666
命令正常執(zhí)行后,顯示以下提示:
connecting to 127.0.0.1:56666
connected
>>
在>>提示符下鍵入?后回車,即可列出該客戶端支持的所有命令列表;在使用某一命令時,如不知道如何使用參數(shù),也可在命令后加空格和?,命令所需要的參數(shù)及參數(shù)范圍就會顯示出來。
部分常用命令說明:
7.2.1 ?
功能:列出所有命令列表如下:
get-dc-std
get-node-info
get-switch-info
get-terminal-info
get-mac-uc-conn-info
unreg-node
close-mac-uc-conn
pro-term
dem-switch
set-ka-tmo
get-ka-tmo
ena-ka-auto-adj
dis-ka-auto-adj
start-uc-fu
start-mc-fu
show-uc-fu
show-mc-fu
cancel-fu
add-to-black-list
rm-from-black-list
show-black-list
ena-event
dis-event
get-pib
set-pib
reboot-sn
send-new-image
del-curr-image
show-curr-image
add-node-to-fu-mc-gp
rm-node-from-fu-mc-gp
del-fu-mc-gp
show-fu-mc-gp
get-phy-tx-paras
set-phy-tx-paras
set-alv-params
get-alv-params
7.2.2 CTRL+c
功能:退出mgmt客戶端,回到Linux命令行
7.2.3 get-dc-std
功能:獲取DC執(zhí)行的標準
示例:
>>get-dc-std
PRIME
7.2.4 get-node-info
功能:獲取當前連接到PRIME網(wǎng)絡(luò)的節(jié)點信息。
示例:
7.2.5 get-ka-tmo
功能:獲取當前Keep Alive檢查超時時間
示例:
>>get-ka-tmo
128 seconds
7.2.6 set-ka-tmo
功能:設(shè)置當前Keep Alive檢查超時時間
示例:
>>set-ka-tmo–t 32
Keep alive timeout is now 32 seconds.
7.2.7 pro-term
功能:將終端節(jié)點升級為中繼節(jié)點
示例:
>>pro-term-l 2 –s 0
Request sent…
7.2.8 send-new-image
功能:下載固件到DC
示例:
>>send-new-image –f /filefolder/prime_7.6.1.sbin–p 128
7.2.9 show-curr-image
功能:查看當前DC 中存儲的固件信息
示例:
>>show-curr-image
Image file name: /filefolder/prime_7.6.1.sbin
Image CRC: 0xa57439b1
Image size: 187958 bytes
7.2.10 del-curr-image
功能:刪除當前DC 中存儲的固件。下載新的固件之前,必須先執(zhí)行該命令刪除當前固件。
示例:
>>del-curr-image
7.2.11 start-uc-fu
功能:啟動unicast固件更新
示例:
>>start-uc-fu–f drunk.sbin–e 55:55:55:55:55:55–p 128
7.2.12 cancel-fu
功能:取消當前固件更新
示例:
>>cancel-fu
7.2.13 show-uc-fu
功能:顯示當前固件更新狀態(tài)及信息
示例:
>>show-uc-fu
Image File Name: /filefolder/prime_7.6.1.sbin
Node: 55:55:55:55:55:55
Image CRC: 0xa57439b1
Page Size: 128 bytes
Image Size: 187958 bytes
Page Count: 1469
Pgae Sent: 980
Communication State: CONNECTED
Upgrade FSM State: PAGE TRANSFER
7.3 IEC61334-4-32數(shù)據(jù)通信上層應(yīng)用示例
PRIME EDC允許外部應(yīng)用遵循IEC61334-4-32協(xié)議來與網(wǎng)絡(luò)中的節(jié)點進行通信。本方案提供了Linux平臺的應(yīng)用程序參考代碼。
在Linux PC上打開一個新的Terminal,進入ext432app路徑,執(zhí)行“make clean”命令,清除舊的可執(zhí)行文件,然后執(zhí)行“make PREFIX=”命令,生成適合本系統(tǒng)的可執(zhí)行文件pdc_app432。
在當前路徑下,鍵入以下命令啟動數(shù)據(jù)通信進程:
/pdc_app432–p 57777–l 64–ds 1–da 2
參數(shù)說明:
- -l用來指定要下發(fā)的數(shù)據(jù)字節(jié)數(shù),參數(shù)取值范圍為1~200;
- -ds用來指定目標節(jié)點的SAP地址,參數(shù)取值范圍0~191;
- -da用來指定通信連接的節(jié)點432地址,該地址從get-node-info命令所獲得的節(jié)點信息中獲取。
執(zhí)行pdc_app432命令之前,需要參考圖10,用ZGUI工具將TI PLC V3-KIT配置為AppEmu-LLC模式。在該模式下,當Linux客戶端執(zhí)行pdc_app432命令后,PLC Module就會將收到的數(shù)據(jù)回傳給DC,DC再通過UART上傳到PC,并在pdc_app432所在的Terminal上顯示出來。傳輸190個字節(jié)的數(shù)據(jù)包時,運行結(jié)果參考圖11所示。
圖10 用ZGUI工具配置節(jié)點為AppEMU-LLC模式
圖11 數(shù)據(jù)傳輸測試運行結(jié)果
參考文檔
1.TI PRIME DC Software User Guide
2.TI PRIME DC IEC-61334-4-32 API SPEC
3.Concerto F28M35x Technical Reference Manual(SPRUH22B)
4.Concerto Microcontrollers (SPRS742C)
5.Q/GDW 375.2-2009《電力用戶用電信息采集系統(tǒng)型式規(guī)范:集中器型式規(guī)范》