摘要
本文档介绍了采用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供电输入接口及电表连接接口,该22pin接口按照中国国家电网《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《电力用户用电信息采集系统型式规范:集中器型式规范》 |