当大家阅读完前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
|