首页/文章/ 详情

来自示波器的升维打击:CAN、CAN-FD 错误帧 Bus-Off 排查 定位

5天前浏览23


     

摘要:CAN的BusOff源于错误帧的积累,而错误帧这个东西,是一个接收节点 认为数据有误 故意打断通信,好让发送节点感知到 并重发报文的设计。注意这里边有个“我觉得你有病”的认知陷阱,让CAN的诊断变得近似玄学。本文分享一种用CAN波形的幅度和脉宽信息来精确定位错误帧来源的方法,来自知乎的大灯

我们先从基础的讲起。CAN节点的电路一般如下图所示,MCU内置了CAN控制器用来将MCU的数据封装为CAN帧格式,同时它也负责CAN帧的校验和错误帧的处理。控制器封装好的逻辑报文经TX RX送到CAN收发器,将逻辑信号转变为真正的总线差分波形。      
     

一、CAN物理层

也就是CAN收发器干了啥?

     

一个典型的双节点CAN网络的物理层等效电路如上图,两颗120Ω终端电阻并联呈现总线电阻60Ω。黑框里是A、B两个节点的CAN收发器(Transceiver),它只负责电平转换。当总线静默时,收发器内部的2.5V电源经15KΩ电阻把CAN-H和CAN-L都拉到2.5V,总线这个状态称之为隐性。当节点A想要驱动总线的时候(TX=0),它同时把内部的上下两个MOS管导通,整个网络的电流流向:节点A的5V电源经二极管、24Ω、两颗终端电阻并联、24Ω、二极管回到节点A的地,总线这个状态称之为显性。CAN总线上的电压实际上就是终端电阻的分压。从节点B来看,CAN-H就变成3.5V,CAN-L变成1.5V,拉出了总线 H - L = 2V 的差分电压,大于0.7V的判断阈值,节点B就认为收到了一个显性(RX=0)。大家可以算一下分压值以增强记忆,后边会用到。

反直觉知识点①总线无人驱动时,也就是各个节点都隐性时,CAN标准定义这时的TX/RX逻辑电平为1;总线有节点驱动显性,也就是主动拉开差分电压的时候,对应TX/RX端逻辑电平0,这个1/0的反逻辑类似I2C等OC门的驱动逻辑,努力适应一下。这么做我猜有两个原因:一是对地逻辑的抗扰能力强一些,NPN载流能力强&回流路径短;二是为了数学上的严谨性:1x1x1x1...1x0 = 0,任意节点驱动显性0,那总线就是显性0;所有节点隐性1,总线才是隐性1。但这样的反逻辑带来一个问题是,电路设计时需要尤其注意上下电时序,上电/休眠/唤醒过程中千万不要出现MCU已下电(TX拉低)但CAN收发器还供5V电的情况。如果实在难以避免,可以试试单3.3V的CAN收发器MAX3051,它不需要5V电源,逻辑电和驱动电共用同一路3.3V,肯定不会出现电源时序问题。

反直觉知识点②:理论上CAN_L短地,或 CAN_H短路12V,因60Ω终端电阻的存在,隐性时CAN-H与CAN-L之间基本还是重合的,显性时也能正常拉开压差,能维持正常通信,只不过丢包率可能会大一点。大家可以算算总线电压,示波器很容易诊断这个问题。另外,如果你看到CAN的通信电压不是以2.5V为中心对称的,也有可能是多个CAN线交叉错接,比如CAN1_L错接到了CAN2_L上

反直觉知识点③:一个CAN网络里,120Ω终端电阻1~4颗都能工作,少了的话 离终端电阻远的节点 抗扰度会差,多了的话 显性差分电压可能无法触发阈值。

反直觉知识点④:除了线路的最远端,任何稍长的CAN分支都可以加1K~4.7K的支线电阻,跑点电流来改善抗扰度。只要分支别太长,大致1Mbps以内的任何总线其终端电阻都是跑电流增强抗扰的,不涉及真正的阻抗或者反射抑制,双绞的要求也不是特别严格。

二、CAN链路层

也就是CAN控制器干了啥?

回顾完物理层,咱来看链路层,CAN帧的标准格式。当发送节的MCU将TX由1变0的时候,CAN收发器将CAN-H拉高&CAN-L拉低,接收节点收到了H-L>0.7V的压差后,接收节点的CAN收发器RX输出由1变0。下图是一个节点接收到CAN波形后解码出的RX逻辑。

     

一帧报文里边有比较关键的几段:仲裁段、控制段 、 数据段、CRC段、ACK段

仲裁段中的大部分是CAN报文的ID,起名为“仲裁”其实是因为这一段有优先级仲裁的功能:假设A、B两个节点在同一时刻抢发报文,节点A要发二进制ID为001的报文,B要发010。当A、B节点都在发第一位的显性0的时候,总线会同时被两个节点驱动显性,A、B节点回读总线也都是显性,相互之间还意识不到对方的存在。当节点A发到第二位的0,节点B发到第二位的1的时候,总线只有节点A驱动显性0,节点B不驱动 却发现总线被别人驱动了,此时节点B会认为CAN线上有比自己这帧010优先级更高的数据,节点B就会主动停发,让节点A独占总线发完。之后节点B怀揣着这帧数据再次参与总线优先级的仲裁。

反直觉知识点①:CAN作为一个对等网络,没有主从关系,报文全部广播,节点本身也没有优先级概念,只有报文ID的优先级。可以这么理解:CAN节点是“由事件驱动的”,比如刹车制动器,它能发高优先级的“刹车被踩下”的报文,也会发低优先级的“刹车油位正常”的报文,这些报文根据ID的大小在总线上自由竞争优先级,而不是刹车制动器这个节点的话语权一定高。这个特性就要求设计人员提前规划好所有报文优先级和周期(即“通信矩阵”)才能保证整个CAN网络如期运转。如果你的CAN网络有大量雷同节点,节点又只有一帧报文,那么ID数大(优先级低)的节点一定会在总线繁忙或干扰重发的时候"插不上话",可以试试把时间戳融合到ID里边,确保各节点的新数据优先级最高,旧数据自然会被仲裁掉。

反直觉知识点②:在A、B节点同时驱动第一个显性0的时候,总线被两个节点同时驱动,电压会显著高于2V。示波器上会看到在仲裁段的头部有明显的电平凸台,后续节点A抢占总线之后电压会回归正常的2V。

反直觉知识点③:各个节点的时钟同步是把每个bit做16~20份的数字切片来实现的,这个切的份数不建议太多或太少。详细机制请参阅 ZLG致远电子的这篇:CAN同步机制,你真的了解吗?

控制段中有几个控制位,这里拿几个常用的举例。IDE位为扩展ID的指示。如果IDE位为隐性1,就会在后边再续上18位的ID,共11+18=29位长度。比如0x9E就是个11位长度的ID,0x0151就是个29位的ID。R0位是CAN里边的预留位,在CAN-FD里被用作FD帧格式的标志位FDF,这一位为隐性1就会按FD的帧格式解码后续报文。DLC指示了后边的数据段的长度,例如1000表示后续会有8个Byte长度的数据。CAN-FD协议只在数据段会切换成高速率,比如2Mbps/8Mbps,前后其他段的速率保持500kbps不变。

反直觉知识点①:CAN与CAN-FD除了数据段波特率的不同,帧格式也有区别,CAN-FD多了一些控制位。比如FDF(也叫EDL)位用来指示是否按FD帧格式解码,BRS位用来指示是否需要切换高波特率,也就是说,一个FD帧可以全程500kbps不切速率的。

反直觉知识点②:CAN控制器的标准ISO11898-1里要求接收方不解读R0位的显隐性,所以CAN的控制器无法过滤FD帧。标准CAN网络里边一旦出现FD帧会因为多了BRS、ESI等控制位被认为是格式错误。同样的,因为CAN 2.0时代R0/FDF帧无意义,也有一些设备把发送出去的CAN帧的R0位错误地置了隐性1,这样的设备在CAN网络里一切正常,但若进入CAN-FD网络就会被解读成FD帧,进而因为缺少BRS、ESI等控制位被认为是格式错误。所以,CAN-FD并不是真的向下兼容CAN,因为旧时代的CAN设备并没有判别R0/FDF位的能力,一旦它进入FD网络就会疯狂地打断通信。

反直觉知识点③:DLC的长度,在CAN标准里DLC可以是0000~1000之间的二进制值,可以用8421的算法直接计算出数据长度。而在CAN-FD中,1001~1111之间的值则被解读为离散的12,16,20,24,32,48,64byte。

CRC段对于从帧头到Data结束之间的数据,CAN协议使用了CRC15这个比较特别的多项式计算校验,有兴趣的可以手算CRC试试。CAN-FD根据数据长度的不同使用了CRC17和CRC21,这里暂不做展开。

ACK段是由收到该帧的CAN节点回复的确认(Acknowledge)。注意 发送节点在ACK位一定发的是隐性1,由接收节点回应显性0,双方无缝衔接才在总线上呈现出一个完整的CAN报文。

反直觉知识点①:总线上任何节点 只要认为这个帧的结构正确,都会在ACK位回显性0,不管需不需要这一帧的ID和数据。为什么不需要的节点也会回ACK?因为等MCU算完会造成这一位的延迟,搅乱总线时序,不如只保障链路层本身的格式正确,纯芯片数字逻辑实现无延迟。嗯,90年代的总线要求不要太高。

反直觉知识点②:发送节点若发现自己这一帧没有ACK回应,它也会认为总线出错,重发16次后进入Passive error状态,有兴趣的自行研究一下,这里不做展开。

三、真实CAN波形

来看一个两节点案例:若节点A发送0x9E报文到总线,从节点B收到的总线波形和逻辑侧波形如下:

     

黄线为CAN-H,绿线为CAN-L,蓝线为节点B的逻辑侧RX,紫线为节点B的逻辑侧TX。可以看到,作为接收方的节点B,总线拉差分电压拉出显性的时候,收发器将RX拉0给到MCU。在节点B想要回应ACK的时候,MCU将TX拉0,CAN收发器在总线上拉出了一个歪斜的显性(歪斜是因为测量点的寄生电感影响)。RX在ACK位置的0,是收发器TX=0驱动总线显性之后 回读到的0。

再看一个比较真实的车上波形,CAN网络上大于4个节点:

     

黄色是CAN_H,高电平表示显性0,绿色是我们挂示波器这个节点的逻辑侧TX,低电平表示显性0。箭头A~D是一帧完整的CAN报文,箭头A ~ B这个过程中,我们挂示波器的这个节点和另一个节点正在进行优先级仲裁,根据我们之前讲到的物理层的分压原理,两个节点同时驱动电压会高一截。在箭头C这个bit 该节点想发隐性1但发现总线是显性0,那就说明有另外的节点在发送更高优先级的报文,我们这个节点会主动退出发送,成为接收节点,并在箭头D点校验成功后回应ACK,等待报文结束后这个节点再次参与总线仲裁,成功抢占总线如E点所示

注意波形高度,在箭头A~B之间,差分电压略高于2V,这是正常现象,说明有两个节点同时驱动总线显性,但从逻辑看,因为H-L>0.7V所以都为显性0,纯数字逻辑的CAN控制器在箭头A~B之间还感知不到对方的存在,箭头C点之后才感知得到;而在箭头D点,因为除了发送节点之外的所有节点都在同时驱动ACK,所以总线电压比箭头A~B之间的双节点驱动 电压更高。

四、错误帧

终于到了错误帧,注意,错误帧不是由哪个节点发出的,而是由某个接收节点认为总线错误,故意驱动总线打断发送方,在总线上呈现为一个错误帧。也就是说错误帧 一定是由 一个发送节点和至少一个 认为发送方有错的节点 共同形成的。

五、位填充

位填充规则是CAN协议的灵魂,简单来讲就几个字:逢五补一。当发送节点想要发连续5个bit的显性0的数据,会故意插入一个无意义的隐性1;当出现连续5个bit的隐性1,会故意插入一个无意义的显性0,如下图的紫色bit。如果发送节点漏填了这个0/1,或者这个0/1被 干扰成了1/0,接收节点就会判定为“填充错误”,向总线上输出“主动错误标志”——连续六个显性0,故意破坏这一帧报文,发送节点感知到总线错误之后停止发送这一报文的后续部分。你说巧妙不巧妙?连续6个显性0本身就是破坏“逢五补一”规则的,被拿来当错误标志回给发送节点。

     

假如原始数据是0x00,二进制0000 0000,发送节点发到0000 0的时候发送节点会先插一个1,再发后续的000,成为0000 01000,共9bit长度,接收节点也会在第5bit的0之后预期一个无效的1,解码时抠掉。

假如原始数据是0000 0100,第六位自带1,发送节点发到00000的时候也会先插一个1,再发后续的100,成为0000 01100,共9bit长度

六、回读确认

发送节点发送了0或1的时候,会回读确认总线是否和自己的发送相符,比如在仲裁段抢优先级失败就会等下一帧再发;如果发到了数据段,按理说此时总线应该只有自己,发着发着突然发现回读的0/1与自己发的不同,比如受到了干扰,发送节点就会输出“主动错误标志”——连续6bit显性0,来主动抛弃后续报文,同时让接收节点知道我这一帧有误。

       

在这时,接收节点收到第6bit显性0的时候,因违背逢五补一的位填充规则,也会往总线上输出“主动错误标志”,所以会在总线上看到连续12bit的显性0,前6个来自发送节点,后6个来自接收节点。

     

正常情况来说,总线上的显性不应该>5bits=10us。那么用示波器设置>11us的脉宽触发模式就很容易定位错误帧的位置,不一定要用解码示波器。

七、升维打击

CAN网络的幅度和电流可以为我们提供更多维度的信息,此所谓升维打击。

我们先来看一个正常帧,我们叫它节点A吧,它内部有终端电阻,蓝线为H-L的差分电压,紫线是我们节点A的CAN-H引脚电流,输出为正,输入为负。

     

先看蓝色的总线电压波形,从0x83到END之间是一帧正常波形,注意看帧头有多级台阶,帧尾ACK位置也特别高,这是正常的,可以理解 当多个节点同时驱动总线就会导致60Ω终端电阻上的分压高于2V。从这些台阶来看,可以判断出网络上至少有5个节点。为啥?先看报文中部的幅度,这肯定是只有一个节点抢占总线之后的波形,往前有两级台阶,可以认为A、B、C三个节点同时抢占总线出现了第一个高台,然后节点C优先级仲裁失败退出总线,A、B节点继续抢占出现了第二个台阶,之后节点A成功抢占到了总线优先级,发送中间的数据。最后的ACK位比3节点驱动的第一个bit更高,说明至少有4个节点在驱动ACK,再加上节点A,网络上至少有5个节点。

再看紫色的电流波形,已知节点A自己有终端电阻,外边有另一颗终端电阻。波形中部的数据区肯定是节点A在驱动总线,差分电压流经外边的终端电阻形成回路,所以我们在节点A的引脚上观察到了输出的正向电流;往前一个电压台阶的位置,电流为0,是A、B两个带终端电阻的节点在驱动总线,所以总线电压拉开了但电流仍是无进无出的;再往前一个台阶,A、B、C三个节点驱动,节点C的电流流入A、B的终端电阻,所以在节点A的引脚上测到了输入的负向电流;然后帧尾的ACK位置,至少有4个节点同时驱动,流入终端电阻A和B的负向电流更大了。

八、错误帧实战

这是一个两节点网络,一个节点发,另一个节点收,两方都有终端电阻,发送节点用的是TJA1042,接收节点用的是单3.3V收发器MAX3051。在帧头就发生了错误,这种错误帧一般源于时钟偏差或采样点过小。

我们将示波器的差分探头和电流探头挂在接收端,下图黄色为H-L的差分电压,蓝色为接收节点的输出电流,RX为收发器将H-L差分电压转换出的逻辑波形,MCU内部的CAN控制器会根据RX的0/1来解读总线。TX为接收节点的发送逻辑,MCU将TX拉低的时候收发器会往总线上驱动显性。

     

我们已知500kbps的每个bit宽2us,注意上图紫线TX在2 ~ 4箭头之间出现了连续2us * 6=12us的显性0,说明我们挂示波器的这个接收节点在此刻往外输出了一个“主动错误标志”,那一定是接收节点在此之前认为总线出现了错误。我们来往前看,箭头1~2之间总线差分电压和RX逻辑侧都只有10us/2us=5bit的显性0,帧前边都是长隐性1,这能有什么错?一个可能是我们碰到了传说中的过载帧,这个东西本应该很少见了;另一个可能是接收节点把对方来的正确报文认成了错的,这10us被接收节点认成了6bit,错误的采样点+硬同步(帧头对齐)做得稀烂的国产MCU更容易出现这样的帧头报错。

不管哪种,我们推演一下看看是否符合我们的理论,在箭头2~3之间发送节点应该是想发送一个隐性,但这时接收节点已经觉得不对开始发“主动错误标志”,将总线拉成了显性。然后发送节点读到这一bit自己想发送隐性但总线是显性,所以。。。仲裁区抢优先级失败退出总线,,,怎么可能,之前有6个连续显性呢,所以发送节点因违反“逢五补一”在箭头3~5也输出“主动错误标志”。所以就成了黄色总线波形的7个bit的“凸”型,中间的凸台的位置总线被两个节点驱动,电压高起一个台阶

再注意一个细节,凸台的左肩膀和右肩膀高度不一样,左肩膀是接收节点MAX3051驱动的电平,它比 右肩膀TJA1042的驱动能力弱一些,总线电平低一点。这个特性可以用来区分总线上的不同设备

蓝色线,是接收节点的输出电流。箭头1~2之间的负向电流为发送节点驱动总线,差分电压流经接收节点内部的终端电阻带来的负电流;箭头2~3之间的正电流是接收节点驱动的主动错误的第一个bit;后边3~4的凸台两个节点都在驱动显性 但对应的电流也是负的,这是因为发送节点的驱动能力强过接收节点,整个网络电流还是由发送节点灌入接收节点;再往后4~5的负电流是发送端驱动接收节点的终端电阻的电流。

下图我标出了两个节点的输出bit流,红框是“主动错误标志”。

     

仍然是这个两节点网络,仍然是这个稀烂的国产MCU,我们来看这个错误帧是怎么个情况:

     

这一帧的DLC=0x01,也就是只有1byte数据,数据区之后就是CRC区,我们的“主动错误标志”就发生在这个区,观察又没有填充错误,那就是我们挂示波器这个接收节点认为发送节点出现了CRC错误。但我们看到黄线在“主动错误标志”中间出现了凹坑,意味着发送节点还是想继续发隐性,并不认为自己有错,直到发现这一位被“主动错误标志”覆盖为显性才感知到位错误后抛弃后续报文。

原因最后定位到:过小的采样点+过大的再同步补偿宽度SJW让时钟误差逐步积累,这颗国产MCU的重同步又做得稀烂,把正常报文错读了一位导致算CRC错误。最后通过调整采样点和SJW宽度减少了这种错误的出现频次,得到正常波形如下:

     

我们再试着从差分波形来分析一个错误帧:

     

错误发生在CRC区,我们放大一下,看看各节点都发生了啥:

     

从每一个台阶往前画12us的方框,得到每个节点输出的“主动错误标志”,分析可知:这是一帧节点B发送的报文,节点A认为它的CRC算错了,节点C凑了个热闹,三者一起形成了这个12bits长的“主动错误标志”。那,节点A为什么会认为CRC有错呢?大概率是因为之前的数据读错了一位。这么好的波形也能读错?是的,我们无法判断节点A所在的位置波形有多差,可能分支上没有终端电阻振铃很大呢?我们只能相信节点A不会乱搞。另外,采样点偏差会导致节点对噪声额外地敏感。

九、CAN-FD错误排查

来看一个A B C三节点CAN-FD错误帧的案例,节点C发,节点A、B收:黄色是H-L的差分电压,绿色是节点B的逻辑TX。0x0677和0x0176是两个错误帧。FD区波特率设置为2Mbps。

     

放大0x0176帧的细节:

     
  • 标尺A B之间时间长度约0.8us,由一个2Mbps FD bit的0.5us + 一个CAN-FD的TDC(300ns)组成。
  • 之后出现了6个FD bit(0.5us*6=3000ns)的连续显性位,电平高度与之前相同,之后有连续2usx6=12us的显性。
  • 在标尺B线后12us位置出现了一个电压跌落的小小的下降台阶,见下下图。

综上三条,认为节点C所在位置干扰过大/分支线路过长,节点C自己回读↓下图↓框出的bit位失败,自己往总线上输出“主动错误标志”(连续6bit=2usx6=12us的显性),其他设备在接收到第6个CAN-FD的bit=0.5usx6=3us的时候就读到了错误(违反FD速率的“逢五补一”规则),也往总线上叠加2us*6=12us的主动错误标志。然后,12us时节点C的主动错误标志先结束,其他节点的主动错误在2usx6+0.5usx6=15us后结束。至此,错误帧形态完成。

       

“逢五补一”这条规则是跟随波特率变化的,6个连续的高波特率0或1都会触发填充错误。但填充错误之后输出的“主动错误标志”是500kbps波特率的6bit,固定长度12us。

     
     
     

再来一个案例:CAN-FD采样点设置出错导致节点B把节点A发送的CAN-FD报文当CAN来解析出错。

黄色CAN_H,绿色CAN_L,蓝色L-H反向差分电压,紫线为节点B逻辑RX,青线为节点B逻辑TX。

     

注意看0x00前后的数据段,这一段是CAN-FD的2Mbps速率,节点B因为采样点设置错误读错了BRS这一波特率转换标志,仍按照标准的500kbps去解析节点A的2Mbps速率的数据,对RX信号2us一个采样我用黄色箭头标出来了,可以看到这恰好是6个连续显性0,违反“逢五补一”的规则,故而接收节点B在箭头2~4之间发“主动错误标志”,打断总线通信,告知发送节点你发错了。箭头2~3之间,发送节点A恰好也要发显性,所以节点A此时还没感觉到不对。箭头3之后,节点A想要拉隐性,电压出现一个坑,却发现总线还是显性,此时节点A判断出现了“位错误”,开始输出“主动错误标志”,想告知接收方放弃我这一帧报文。箭头4的位置节点B释放“主动错误标志”,箭头5的位置节点A释放“主动错误标志”。

如果数据比较巧,恰好能满足逢五补一的规则,那这种错误形态会在发送很多数据之后才会出现,但最晚也会被CRC拦截:

     

补充知识:CAN-FD网络各个节点的采样点必须完全相同,高速率导致对时序敏感很多,这一点与CAN网络容许一个范围显著不同。上边这一帧的BRS位怎么读错的呢?再一次违反直觉:CAN-FD的采样点影响发送节点的驱动波形!用示波器可以轻松量出FD的采样点位置。

看下图,CAN-FD报文的控制段中的BRS位(Bit Rate Switch)明显是短于前边的FDF、R0位的,采样点不匹配的话很容易读错。因为-FD的速率翻转是在这一bit的采样点位置发生的。比如采样点80%的2Mbps CAN-FD网络,BRS这一位的宽度为2us80%+0.5us20%=1.7us,而不是2us。接收节点的采样点如果设置大于85%就会错过整个BRS位(2us*85%=1.7us),从而导致如上的BRS位读错的问题。

     

以上,就是示波器升维破解CAN错误帧/BusOff的经验分享,总结一下:

  • 结合已知ID是哪个节点发的先验信息,逐个拔掉非终端节点,示波器观察“主动错误标志”,就能模糊定位错误源头;
  • 如果能引出敏感设备的TX,哪个节点认为哪个节点出了什么错就会非常清晰明了;
  • 其次,测量CAN的输出电流也能清楚地定位谁在驱动“错误标志”,进而找到故障点;
  • 如果上述难以实现,以12us间隔拆分“错误标志”的电压台阶,也能定位大部分错误原因;
  • 额外关注单bit宽度的电压台阶,能排除部分节点;

来源:知乎-大灯      

来源:电力电子技术与新能源


燃料电池电源电路电磁兼容汽车电力电子MATLAB新能源芯片Simulink理论电机控制
著作权归作者所有,欢迎分享,未经许可,不得转载
首次发布时间:2024-12-13
最近编辑:5天前
获赞 155粉丝 267文章 2068课程 0
点赞
收藏
作者推荐

手把手教你学光伏并网发电系统及其参数

1 背景简述 国家碳中和发展战略:2020年9月22日,习近平总书记在联合国大会一般性辩论上向全世界宣布,“中国将提高国家自主贡献力度,采取更加有力的政策和措施,二氧化碳排放力争于2030年前达到峰值,努力争取2060年前实现碳中和”。时隔一年后,在9月21日,习近平总书记在同样场合再次强调,“中国将力争2030年前实现碳达峰、2060年前实现碳中和,这需要付出艰苦努力,但我们会全力以赴”,充分表达了中国实现这一战略目标的决心。新中国成立75年来,能源事业加快发展,中国已成为世界上最大的能源生产国和消费国。经过长期发展,中国建立了煤、油、气、核、水、风、光等全面发展的能源供给体系,为经济社会持续快速发展提供澎湃动力。当前,中国开启全面建设社会主义现代化国家新征程,对能源高质量发展提出新要求。中国是世界上最大的发展中国家,但人均用能水平不高,工业化、城镇化尚未完成,未来一段时间能源需求仍将增长;产业结构偏重、能源结构偏煤,资源环境约束长期存在。应对这些困难挑战,根本要靠能源转型。中国的能源转型,注重加快转变能源发展方式、转换能源发展动力,推动主体能源从化石能源向非化石能源更替,这是破解资源环境约束、实现碳达峰碳中和目标的迫切需要;是抢抓新一轮科技和产业变革机遇,加快培育新质生产力的迫切需要;是推动形成绿色生产方式和生活方式,实现经济社会高质量发展的迫切需要;是主动担当大国责任、推动构建人类命运共同体的迫切需要。中国推进能源转型,不是别人让我们做,而是我们自己要做;也不是能不能做,而是必须做。希望中国能够早日实现电力过剩,用电免费的美好愿景。2 光伏发电系统介绍 太阳能是无穷无尽,且可再生的资源。光伏发电就是将太阳能转化为电能的一种发电方式。它是通过半导体的光伏效应,直接将光子转化为电子。由于减少了中间的过程,它的发电过程极为简洁且不产生其他有害物质,可以做到完全的绿色发电。2.1 太阳能发电的工作原理 太阳能电池工作原理的基础是半导体PN结的光生伏特效应。所谓光生伏特效应就是当物体受到光照时,物体内的电荷分布状态发生变化而产生电动势和电流的一种效应。当太阳光或其他光照射半导体的PN结时,电子移向N区,空穴移向P区。就会在PN结的两边出现电压,叫做光生电压。PN节是由P型半导体材料和N型半导体材料连接而成。如下图所示。N型半导体:在4价本征硅晶体中,掺入5价元素如磷、砷或者锑等。多余电子极容易脱离原子形成自由电阻,同时使原子本身成为不能移动的正离子。这样在杂质半导体中产生大量与杂质成分成比例的自由电子,导致材料中自由电子数量大大超过空穴而成为主要的载流子(又称多子), 形成n型半导体。P型半导体:则是掺入3价元素如硼、铝、镓或者铟等。这些元素的原子的3个价电子与周围的硅原子只能形成3个共价键,而缺少的一个共价键很容易捕捉电子而形成负离子,结果在晶体中产生大量空穴,使材料中的空穴数量大大超过自由电子从而成为主要载流子 (多子), 形成p型半导体。综上所述,太阳能电池示意图如下所示。2.2 光伏并网发电系统简述 光伏并网发电系统,是由光伏阵列组件+逆变器构成,发电能量直接传输给电网。光伏阵列是由单个or多个组件串并联构成(具体依据所需容量来确定)。光伏系统追求最大的发电功率输出,系统结构对发电功率有着直接的影响。逆变器的作用就是将光伏阵列产生的直流电转化为交流电,进而将能量馈入电网。根据光伏阵列的不同分布以及功率等级,可以把光伏并网系统体系结构分为6种:集中式、交流 模块式、串型、多支路、主从和直流模块式。1、集中式就是将所有的光伏组件通过串并联构成光伏阵列,并产生一个足够高的直流电压,然后通过一个并网逆变器集中将直流转换为交流并把能量输入电网。2、交流模块式结构是指把并网逆变器和光伏组件集成在一起作为一个光伏发电系统。3、串型结构是指光伏组件通过串联构成光伏阵列给光伏并网发电系统提供能量的系统结构,集中式和交流模块式两种结构的优点,一般串联光伏阵列输出电压在150~450V, 甚至更高,功率等级可以达到几个千瓦左右。4、多支路结构是由多个DC/DC变换器、一个DC/AC逆变器构成。该结构提高了光伏并网发电系统的功率,降低了系统单位功率的成本,提高了系统的灵活性,已成为光伏并网系统结构的主要发展趋势。5、主从结构是一种新型的光伏并网发电系统体系结构,也是光伏并网系统结构发展的趋势。它通过控制组协同开关,来动态地决定在不同的外部环境下光伏并网系统的结构,以期达到最佳的光伏能量利用效率。6、光伏直流建筑模块是将光伏组件、高增益DC/DC变换器和表面建筑材料通过合理的设计集成为一体,构成具有光伏发电功能的、独立的、即插即用的表面建筑元件。2017年,比亚迪的王传福在央视《开讲了》节目里曾经说过,如果中国1%的沙漠地区覆盖了太阳能光伏板,可以解决全国13亿人的用电问题。因光伏受到温度,天气等影响较大。但因沙漠地区地广人稀,且太阳能资源富集等优点,近些年来受到青睐。不仅获得清洁能源,还对治沙防沙做出了相应的贡献,一举多得的好处。中国最大光伏发电站,青海省海南州太阳能生态发电园区。609平方公里,面积接近一个新加坡。2.3 AFCI功能 AFCI-电弧故障分断器。它的作用是,在检测到危险电弧的时候,将设备进行分断,防止电弧持续存在,进而发展成火灾或人身安全等严重问题。AFCI是UL最先纳入的标准要求,逆变器也是如此,如果做北美市场的产品,则必须具备这个功能。近年来,各国也逐渐慢慢也在拟草相关文件。随着光伏逆变器发展的日益壮大,每天的装机量都在增长,系统安全也成为了特别重要的一点。光伏逆变器发生的火灾,大多数情况下还是因为直流拉弧引起的。在光伏的系统中,接线松动,接触不良,绝缘材料腐蚀老化等都会产生电弧。电弧会产生高温发热,引燃周围材料等。AFCI模块则是在光伏阵列和光伏逆变器之间,一旦检测到存在电弧的情况,可以极快的识别出来并进行切断PV与电网之间的连线,减少损失。串式逆变器一般均会集成在逆变器的内部,放在直流端口处如下图所示。带汇流箱的集中式逆变器则多数放在汇流箱内部。AFCI模块的产品规格一般要求:1.具备有效的直流电弧识别能力,允许最大直流电流可达60A;2.具备友好的接口,可遥接控制断路器或连接器等;3.具备RS232转485通信功能,可实时监控模块状态;4.LED、蜂鸣器可作为快速识别模块工作状态,声光报警;5.功能模块化,易于移植到各个系列产品中;2.4 PID功能 PID又叫电势诱导衰减,是指光伏组件在长期受到一定的外电压作用下,其功率输出逐渐衰减的现象。PID现象的原理复杂,但主要可以归结为几个方面:一是在高电压环境下,光伏组件的封装材料可能无法完全绝缘,导致漏电流产生,进而引发电池内部的分流现象(PID-s,shunt分流),降低了电池的并联电阻;二是组件边缘的水汽和醋酸等化学物质,在电场作用下,可能引发电离腐蚀和金属离子的迁移,导致电池栅线受到腐蚀,组件性能下降;三是长期高电压工作状态下,大量电荷聚集在电池片表面,恶化了电池片的钝化效果(PID-p,polarization极化),从而降低填充因子、短路电流和开路电压。这种衰减主要是由于组件中的半导体材料在电场和湿热环境的共同作用下发生性能退化。然而PDI的现象严重影响光伏系统的效率以及寿命。 PDI的工作原理,PID模块通过在隔离变压器的N(系统可为三相三线制,N点由PID模块的三相对称电感得到)和PE间注入直流电压,从而提高电池板PV-对地电压,达到减小PID衰减的目的。在华为组串式逆变器SUN2000组成的子阵(例如1MW、1.25MW、1.6MW)中,模块安装于华为室外通讯柜中,可通过RS485与华为数据采集器通讯,数据采集器读取所有逆变器的PV-对地电压,再下发控制命令给PID模块,使PID模块调整输出电压,即N线对PE电压,直到数据采集器读取的所有逆变器的PV-对地电压均大于零。系统示意图如下:2.5 RSD模块 此设备的主要特点是能够在电网发生故障或人为切断等情况下,自动断开每个光伏组串的连接,从而减少组串的电压,保证系统中无高压电,降低触电风险,提高其安全性和实用性。快速关断装置关断方式有主动和被动二种方式:1、被动方式:当电网掉电发生孤岛保护后,电源箱停电,关断箱继电器停止工作断开,每个光伏组串与逆变器设备之间也断开,避免设备继续带电。2、主动方式,当电网发生紧急故障或人员触电时,可手动按下控制电源箱紧急控制开关,切断关断箱的电源,隔断系统的电气连接,避免故障进一步扩大升级,并上传快速关断箱状态信息给逆变器设备。快速关断系统的最大特点在于:快速断开设备与电网以及组件的电气连接,使电气系统在故障时快速断开,保护组件和设备安全,隔断设备安全隐患。最大程度上降低了电气与人接触的可能性,大大增加系统安全性,特别适合在分布式户用系统中使用。RSD智能光伏面板关断装置可独立将光伏屋顶系统切换至安全状态。在安装、维护或危险情况下防止致命电击,保护人身安全。屋顶光伏系统可产生高达1000V的直流高压,系统直流输入侧无法轻易断开。若系统损坏后,光伏现场内的工作人员则面临很高的安全风险。光伏面板关断装置分析系统直流输入侧的电流和电压情况。工作状态异常或逆变器停机都可导致光伏面板的自动关断。一旦环境恢复安全,系统自动重启。2.6 DRM功能 DRED,Demand Response Enabling Device。用电往往有高峰期和低谷期,电量不平衡,特别是高峰期电网用电设备的使用负荷加大,为保障电网的稳定运行,需要对用电设备进行合理调峰降低功率,保障电网安全。为此,各个国家出台相应的调峰措施来解决该问题,其中澳洲出台了DRED指令,电网采用该控制系统发送信号给用电设备,用电设备通过检测接收特定装置(以下称DRED装置)信号状態,采取不同的控制策略调整本身的功率消耗,从而达到降低电网负荷,节能省电的目的。DRM,DEMAND RESPONSE MODES。澳洲的DRM共有9种不同的模式,如下图所示。其中DRM0是强制要求,其余按需求配备。在配备光伏逆变器的设备,DRM功能要单独进行相关测试。其中连接DRM的方式有两种,一种为接线板,另外为RJ45插座。不论那种方式都需要满足以下条件,澳洲DRED设备辅助测试电路。其简化为如下图所示。其中调节各个开关,所对应的模式说明,如下图所示。除此之外,DRM功能还要满足如下要求:A)逆变器注入的电流不得超过30mA(直流或交流)(I)使用接线板的端子“DRM 1/5”“DRM 2/6”、“DRM 3/7”或“DRM4/8”;或(II)使用RJ45插座的针脚1、2、3或4。B)当标称短路时,逆变器应允许DRED和相关接线上的压降高达1.6V。C)逆变器向接线端子或RJ45插座的任何端子提供的电压不得超过34.5V(直流或交流)D)如果检测到插脚5和6之间的阻抗高于20k2,则逆变器应能对DRM 0进行故障保护。。。。来源:电力电子技术与新能源

未登录
还没有评论
课程
培训
服务
行家
VIP会员 学习计划 福利任务
下载APP
联系我们
帮助与反馈