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