一种基于STM32的光伏汇流箱监测装置

2015-05-05 06:00王旭昊胡剑生王海明
机械与电子 2015年5期
关键词:组串浪涌字节

王旭昊,胡剑生,李 嘉,王海明

(许昌许继风电科技有限公司,河南 许昌461000)

0 引言

在光伏电站应用场合下,通常每8~16路光伏组串输出的电能输入给1台光伏汇流箱并在箱内通过铜排汇流输出。光伏汇流箱监测装置需安装在光伏汇流箱内,其主要工作是测量各路光伏组串的发电电流和电压,并将相关数据通过通讯总线上传至监控室中。为实现一次侧和二次侧的电气隔离,现有的光伏汇流箱监测装置往往使用霍尔传感器作为光伏组串电流、电压的采样元件,但其成本高且对工作条件要求苛刻,在光伏电站恶劣的室外工作环境下存在故障率高、线性度差和温漂严重的问题[1]。另外,现有监测装置的通讯接口电路在设计过程中未充分考虑其在室外发电环境下的防浪涌保护从而导致故障率居高不下。提出了一套以STM32单片机作为主处理器的设计方案,此种单片机属于Cotex-M3系列微处理器,是一款成本和功耗较低,同时性能却相对优越的32位微处理器[2]。

1 采样信号的生成与隔离

监测装置的采样电路自成回路,独立供电,选用普通的电阻器件作为采样元件构建组串电压和电流的采样回路。组串电压一般不超过1 000V,它的分压电阻由10个阻值为1MΩ的贴片电阻串联组成,采样电阻为1个阻值为2kΩ且靠近组串负极的贴片电阻。组串电流一般为10A左右,它在即将流入光伏组串负极之前流经1片阻值为1MΩ的纯铜片进而生成一路组串电流采样信号。所有这些采样信号经RC滤波电路处理后输入给AD转换芯片。为了实现16路组串电流的采样,支路01~08和支路09~16的电流采样信号分别通过2片多路模拟通道选择开关ADG707的选通处理后再输送给AD转换芯片的2个电流采样信号输入端。这2片ADG707接收STM32发送的通道选择信号A,B,C的激励。由于电压采样信号和电流采样信号都取自光伏组串的负极,且信号地被电压跟随器连接至3.3V供电电源的中间位置即1.65V处。因此,电路可以采样正负两个方向上的组串电压和电流。

监测装置的主控电路同样也是自成回路,独立供电。为使主控回路和采样回路在保持电气隔离的状态下正常实现信号传输,装置按信号传输速率的不同选用了2种光耦隔离管。对AD转换芯片的片选信号CS、复位信号RESET和通道选择开关的选择信号A,B,C使用一种绝缘电压可达5 000Vrms的光耦管TLP785进行电气隔离。对AD转换芯片和主控芯片之间的SPI通讯信号,SDO,SDI通过一种绝缘电压达3 750Vrms,传输速度达10Mb/s的高速光耦管6N137-00ME进行电气隔离。

2 采样数据的传输与处理

AD转换芯片中的采样数据通过SPI通讯输出给主控芯片,SPI通讯时序图如图1所示。时钟信号SCLK由主控芯片STM32给出,AD转换芯片在SCLK上升沿时发送数据,在SCLK下降沿时接收数据。在通讯过程中,时钟管脚SCLK的高低电平至少分别保持200ns(t1,t2),片选信号CS至少拉低50ns后(t3)再控制时钟管脚SCLK拉低。在从设备接收数据时,主设备应该在距离SCLK上升沿之前至少50ns(t4)建立好数据,并在SCLK上升沿之后保持数据至少100ns(t5)。

图1 SPI通讯时序

设从AD转换芯片的电压采样寄存器中读出的高、中、低字节分别为U2,U1,U0,从电流采样寄存器中读出的高、中、低字节分别为I2,I1,I0,第n次AD转换电压值(数字量)和电流值(数字量)分别为Num_U 和Num_I(有符号数,正向最大值Nc为223-1),则有:

已知AD转换芯片CS5480电压采样通道的满量程Ur为250mV,电流采样通道的满量程Ir为50mI。它们分别对应的瞬时电压采样值和瞬时电流采样值分别为un(单位为V)和in(单位为mA),则un与Num_Un,in与Num_In的转换关系为:

为了抑止经AD转换后的采样数值波动,提供更稳定可靠的读值,预读值U′和I′取在时间上连续的7个瞬时采样值的均方根为:

为保障最终读值的准确性,必须对预读值进行精度校准。具体做法是先不施加校准源获得预读值与最终读值之间的偏移误差Off_U,Off_I,然后施加校准源计算增益系数Gain_U,Gain_I。最终读值与预读值之间的线性映射关系为:

校准得出的偏移误差和增益系数存储在主控芯片的flash存储区中。

3 RS485接口电路的防浪涌设计

装置的通讯接口电路自成回路,独立供电。为加强RS485接口电路在光伏电站环境中的耐浪涌冲击能力,采用了4项措施来加强防浪涌保护。一是通讯接口对地设置了冲击放电电压达700V,通流量达10kA的陶瓷气体放电管3RM075L-8,目的是使通讯接口在遭受雷击时能将浪涌电压引到大地上。二是为了缩短保护电路的放电延时,在A,B,GND3个信号的两两之间各加设一个钳位电压为10.3V且峰值浪涌电流为58.3A 的 TVS管SMBJ6.0CA,在迅速疏导浪涌电流的同时确保瞬间电压不至于过高而烧坏接口芯片。三是接口电路在A,B信号流经的通路上各加设一个阻值为10Ω的圆晶电阻,其阻值较小对通讯信号的正常传输无影响,能在突发浪涌情况下迅速消耗掉一部分沿着通讯线传输到接口的浪涌电压而起到一定的保护作用。四是接口芯片采用隔离芯片ISO3082DW,它支持两套独立的电源系统供电,输入回路采用主控回路的电源5V_1/GND_1供电,输出回路采用通讯回路专有的电源5V_2/GND_2供电,而这2套电源系统是相互隔离的,浪涌电流和浪涌电压在两电路之间被有效隔断。接口电路设计原理如图2所示。

图2 RS485接口电路及其防浪涌保护

4 Modbus通讯协议的优化设计

由于在同一对总线上通过菊花链的方式连接的汇流箱监测装置数目较多,如果各个子站的响应速度较慢将降低整个通讯网络的实时性。装置通过快速判断信息帧停止时间以及合理简化通讯主处理程序的结构和规模这两种方式来提高子站的动态响应速度。监测模块主要通过采用主控芯片STM32的串行通讯外设UART来实现总线通讯功能。由于装置仅作为从站使用,字节数据的接收可利用UART外设的接收中断来实现,中断程序流程图如图4所示。Time为接收中断时钟变量,Clock为系统时钟变量(每隔1ms时间自增1),RCV_EN为接收使能标志,Buffer为接收缓存区,REG为接收到的字节数据。

图3 UART的接收中断程序流程

Num_Per_Byte表示单个字节的位数,Baud_Rate表示通讯波特率,计算结果的时间单位为ms。

以通讯波特率为4 800baud为例,每个字节数据共由10位(1个起始位,8个数据位,1个停止位,无奇偶校验位)组成。因此,单字节数据传输时间为2.08ms。由于不同通讯波特率下每个字节的传输时间不同。因此,不同波特率下帧与帧之间的理论最小时间间隔也不尽相同。为了提高从站响应速度,需要对帧传输的停止时间进行快速而精确地判断。如果在UART接收中断中设置一个时间变量Time,每次进入接收中断后都将Time同步至系统时钟变量Clock,则当总线上有信息帧传输时,帧中的每一个字节数据都将触发一次UART接收中断,进而触发Time同步至Clock。值得注意的是,由于单字节数据的传输同样需要时间。因此,在帧传输期间,Clock-Time的值并非始终保持为0,而是不断地从0开始至单字节数据传输时间结束然后再跳到从0开始如此往复。当帧传输结束后,由于没有字节数据传输无法触发UART接收中断,Time不能被更新至Clock,Clock-Time的值随着时间推移从0开始逐渐增大。原理示意图如图4所示。

Modbus协议规定两相邻信息帧之间的时间间隔不得小于3.5个字节[3]。串行通讯中单字节数据传输的时间周期为:

图4 帧结束判断原理

综上所述,可将Clock-Time的值与某个事先约定的最小时间间隔Interval进行比较,以此判断帧是否结束。但当Clock-Time的值小于单字节数据传输时间时,由于无法判断帧中的最后一个字节是否传输完毕。因此,把这个时间作为帧结束判据的容差时间,并把这个容差时间考虑到实际判据的最小时间间隔中。当波特率小于或等于9 600baud时,容差时间取一个字节数据传输时间。当波特率大于9 600baud时,由于单字节传输时间已经小于本装置系统时钟的单位时间1ms。因此,容差时间直接取为1ms即可。各波特率下帧结束的容差判据如表1所示,制定实际判据的时间间隔时其数值应按偏大的方向取整。

表1 各波特率下帧结束容差判据

每次进入接收中断后,对标志RCV_EN进行判断,若该标志为0则表示信息帧传输结束,接收中断停止接收新数据。当通讯主处理程序处理完信息帧后,会将RCV_EN置1。这样一来,当程序再次进入接收中断后可以开始接收新的信息帧,也就是将接收到的字节数据REG放入缓存区Buffer中,同时接收缓存区指针P自增1。

由于监测模块涉及到读取过流、断路等故障遥信位,读取电流、电压等采样寄存器和设置相关配置寄存器。因此,模块仅需用到Modbus协议中的02(读输入离散量),03(读多寄存器),16(写多寄存器)这3个功能码。为了简化Modbus通讯主处理程序的结构,可设计为仅针对功能码02,03,16进行处理,当出现其他功能码则按照非法功能码处理。进入通讯处理程序中后,首先判断当前时间是否大于帧间最小时间间隔,否则直接跳出程序不进行任何通讯处理。接着将接收使能标志RCV_EN置0,阻止接收中断继续接收数据,并对接收报文中的子站地址ID、接收字节个数P和CRC校验码进行验证。这些验证通过后,根据功能码值来调用相关的例行处理函数,向主站发送返回帧。在程序处理的最后将缓存区指针P置0以初始化缓存区,并将接收使能标志RCV_EN置1使接收中断函数开始接收新的信息帧数据。

装置在4 800baud下的通讯收发波形如图5所示。中线左侧为8个字节的主站查询帧,在主站查询帧右侧持续10ms左右的高电平为间隔时段,高电平右侧的波形为从站返回帧。从图5可见,在4 800baud下主站查询帧结束约10ms后,从站立即发送了返回帧,在严格满足Modbus标准协议的基础上做出了最快的动态响应。

图5 4 800baud下子站通讯响应速度测试

5 结束语

采用了一套新的设计方案,将电路按功能和电气结构划分为主控电路、采样电路和通讯电路共计3部分,且这3部分各成独立回路分别采用三套相互隔离的电源供电。回路与回路之间的信号传输通过选用合适的电气隔离器件进行安全隔离,显著降低了装置在光伏电站的户外环境中的故障发生概率。另外,这种结构设计能够舍弃霍尔传感器,改用普通电阻器件作为采样元件,从而显著降低了成本,提高了采样线性度并规避了温漂问题。在通讯设计方面,通过多种措施相结合来加强接口电路的防浪涌保护,增强了其可靠性,并通过在接收中断中设置同步时钟的方式对通讯响应实时性做了有效改善。

[1] 周金龙.浅谈光伏直流汇流箱智能监测单元技术方案[J].电气工程应用,2014(02):15-18.

[2] 陈启军.嵌入式系统及其应用[M].上海:同济大学出版社,2011.

[3] 华镕.从 Modbus 到透明就绪 施耐德电气工业网络的协议、设计、安装和应用[M].北京:机械工业出版社,2008.

猜你喜欢
组串浪涌字节
光伏组件隐裂特性的自动化检测方法及其系统
光伏组件隐裂特性的自动化检测方法及其系统
光伏组串东西向阴影遮挡整改方案的讨论
No.8 字节跳动将推出独立出口电商APP
光伏热水系统在不同温度工况下的热性能研究
No.10 “字节跳动手机”要来了?
简谈MC7字节码
浪涌保护器在化工行业中的应用
一种微型过压浪涌抑制器电路的研制
输入浪涌抑制与防反接电路的优化设