当大家阅读完前6部分,就已经初步完成了PLC模块的配置工作,接下来给大家介绍一下如果利用Sniffer软件查看电力线路上传输的PLC数据帧。所以Sniffer软件就像是一个Spy,来侦测具体电力线上的传输的命令和数据帧,可以方便用户进行网络情况的评估以及判断。

首先要下载Sniffer软件,具体的下载在前几章节已经提及过。

安装完成后,在桌面上会看到如下的小红青蛙图标:

双击Sniffer软件,会出现如下的界面,让大家来设置使用的PC机串口和利用解析Prime的插件程序。

可以在Setup中,进行串口信息的设置。

Debug Level是设置Sniffer软件的显示信息的详细程度,Debug Level=10,是非常详细的显示出任何一条命令的详细信息,Debug Level=9,是显示所有命令,但不进行完整解析。 Debug Level=8,跟9比较只是不显示Beacon信息,其他信息进行显示。当设置完成之后,选择Send,将命令传输给DSP,会收到Success的返回。

接下来给大家看一个典型的PLC 模块的注册,连接以及发送数据的过程, Debug Level=9.

其中绿色的语句为Sniffer检测到的Beacon命令,如果利用Debug Level=8,将不显示Beacon命令。

 

下面我将其中的白色语句进行单独提炼:

1. REG注册过程:

1)其中第13行和第14行的命令帧为:

Sniffer GPDU Level=0,Downlink=0,ppduLen=21,Len=14,mcs=4,pLv=15

REG CTRL SID=0,LNID=16383,LEN=8,nFlag=0,spc=0,time=0,PayLoad[0x03280000,0x00001234]

此语句为UpLink语句,也就是从Meter端传输到DC端的PLC传输命令帧。

DownLink=0, 即为UpLink

SID为Switch ID,因为DC和Meter是直连的,中间没有Switch存在。

LNID为 DC给表分配的Short Address,默认情况下首先使用16383,0x3FFF为LNID

MCS=4, 即调试模式为BPSK+FEC

此语句的含义为 REG,即Meter端向DC端进行注册请求。

 

2)第16行和第17行的命令帧为

Sniffer GPDU Level=0,Downlink=1,ppduLen=21,Len=14,mcs=4,pLv=18

REG CTRL SID=0,LNID=5,LEN=8,nFlag=0,spc=0,time=7,PayLoad[0x022f0000,0x00001234]

此语句为DownLink语句,也就是从DC端传输到Meter端的PLC传输命令帧。

DownLink=1, 即为DownLink

LNID=5,此时DC已经将表的Short Address设置成5.

3)第18行和第19行的命令帧为:

Sniffer GPDU Level=0,Downlink=0,ppduLen=21,Len=14,mcs=4,pLv=14

REG CTRL SID=0,LNID=5,LEN=8,nFlag=0,spc=0,time=0,PayLoad[0x02280000,0x00001234]

此语句为UpLink语句,也就是从DC给Meter端的REG注册确认。

LNID=5,EUI-48=1234

 

通过以上三条语句,就完成了注册的流程。

 

2. CON连接过程:

从第20行到第23行为整个连接过程:

Sniffer GPDU Level=0,Downlink=0,ppduLen=23,Len=16,mcs=4,pLv=16

CON CTRL SID=0,LNID=5,LEN=10,nFlag=0,arqFlag=0,lcid=256,type=3,dLen=6

Sniffer GPDU Level=0,Downlink=1,ppduLen=21,Len=14,mcs=4,pLv=19

CON CTRL SID=0,LNID=5,LEN=8,nFlag=0,arqFlag=0,lcid=256,type=3,dLen=4

首先DownLink=0,为UpLink,由Meter向表发送连接请求。

然后收到DownLink=1,由集中器给表回复的CON确认帧。

以上两条命令,完成了连接过程。

 

3.Keep ALV

但表已经注册到集中器上时,集中器会不断发送Keep alive命令来确保所注册连接的结点是存活的。例如下面第50到底53行:

Sniffer GPDU Level=0,Downlink=1,ppduLen=16,Len=9,mcs=4,pLv=20

ALV CTRL SID=0,LNID=5,LEN=3,rxCnt=0,txCnt=0,time=0,ssid=0xff,PayLoad[0x0000ff00]

Sniffer GPDU Level=0,Downlink=0,ppduLen=16,Len=9,mcs=4,pLv=12

ALV CTRL SID=0,LNID=5,LEN=3,rxCnt=1,txCnt=1,time=0,ssid=0xff,PayLoad[0x2400ff00]

首先由DC发起的ALV命令,当表接收到时,会回复一个UpLink的ALV确认帧。

 

4. PNPDU

如果一个新上电的表端,听不到周围的Beacon,则此表就会发送PNPDU寻求帮助命令,具体格式如下:

Sniffer PNPDU from PNA=0x0000:0000:3412

即为EUI-48=1234的表发送的求救信号,周围听到的SN会帮助其将其请求通过已经存在的链路发送给DC。

 

5. PRO

DC会根据情况进行一个节点的Promote,将其Promote成Switch。

 

1)Sniffer PNPDU from PNA=0x0000:0000:1500

2)Sniffer GPDU Level=0,Downlink=0,ppduLen=24,Len=17,mcs=4,pLv=19

Sniffer MAC PRO CTRL Level=0,Downlink=0,SID=0,LNID=28,LEN=11,PayLoad[0x18ff0000,0x00000015,0x04040600]

3)Sniffer GPDU Level=0,Downlink=1,ppduLen=15,Len=8,mcs=4,pLv=23

Sniffer MAC PRO CTRL Level=0,Downlink=1,SID=0,LNID=28,LEN=2,PayLoad[0x07030000,0x00000000,0x00000000]

4)Sniffer GPDU Level=0,Downlink=0,ppduLen=15,Len=8,mcs=4,pLv=14

Sniffer MAC PRO CTRL Level=0,Downlink=0,SID=0,LNID=28,LEN=2,PayLoad[0x07030000,0x00000000,0x00000000]

5)Sniffer GPDU Level=0,Downlink=1,ppduLen=15,Len=8,mcs=4,pLv=19

Sniffer MAC BSI CTRL Level=0,Downlink=1,SID=0,LNID=28,LEN=2,PayLoad[0x04500000,0x00000000,0x00000000]

6)Sniffer GPDU Level=0,Downlink=0,ppduLen=15,Len=8,mcs=4,pLv=18

Sniffer MAC BSI CTRL Level=0,Downlink=0,SID=0,LNID=28,LEN=2,PayLoad[0x04500000,0x00000000,0x00000000]

 

6. Data Transfer

数据传输首先要由DC发起,例如下面这个命令帧

Sniffer GPDU Level=0,Downlink=1,ppduLen=20,Len=13,mcs=4,pLv=17

Sniffer MAC DATA Level=0,Downlink=1,SID=0,LNID=1,LEN=7,LCID=256,PayLoad[0x00900101,0x32333210]

其中后面的0x32333210为DC发送给Meter端是数据。

 

我想通过以上的描述,大家应该大概对Prime的整个注册和组网流程有了一个了解,我们可以在集中器端将连接上的模块的信息打印出来,利用get-node-info这个命令在Linux平台。

---------------------------------------------------------------------

EUI-48             SID   LNID  LEVEL  LSID   432-ADDR    SERIAL-NR

---------------------------------------------------------------------

66:66:66:66:66:66  000   0001   00     --    01     66 66 66 66 66 66

11:11:11:11:11:11  000   0002   00     --    02     11 11 11 11 11 11

 

PLC_Host_Tools.msi
Anonymous