工业控制 | 能源技术 | 汽车电子 | 通信网络 | 安防监控 | 智能电网 | 移动手持 | 无线技术 | 家用电器 | 数字广播 | 消费电子 | 应用软件 | 其他方案

电路设计->综合电路图->综合电路图->基于DSP的级联型高压变频器控制软件在线升级方法

基于DSP的级联型高压变频器控制软件在线升级方法

作者:不爱吃窝瓜时间:2016-03-17

0 引言

目前,多电平高压变频器是高压变频器研究的热点之一。多电平变频器具有电平阶数多、谐波含量小、开关频率低、开关损耗小、开关应力小和电压等级高等优点,容易满足高压大容量场合的要求。多电平高压变频器的拓扑结构主要有:二极管箝位式、电容箝位式、单元级联式、三相逆变器串联式、电压自平衡式等。其中,级联式多电平变频器是以单相全桥逆变电路(以下称单元模块)为基本单元串联构成的。它不仅具有多电平变频器的共同特点,还具有自身独特的特点,即单元模块易封装,易模块化,便于冗余设计和故障检修。本文中的级联型高压变频器单元模块采用DSP TMS320LF2407A为控制芯片,提高了单元模块的智能化和模块化,简化了主控模块,使系统可靠性提高。但与此同时,在单元控制软件的升级上,由于单元模块安装在整机中,仿真器不易接到控制板上,因此要将控制板一一拆下来分别进行DSP软件加载,这会耗费很多的时间和人力。

本文分析了现有的DSP 片内Flash (闪速存储器)的程序加载方法,针对级联型高压变频器的结构特点,提出多DSP 片内Flash 串行加载的方法,可实现高压变频器的单元模块控制软件的在线升级,无需拆卸,操作简单,节省了时间和人力。

1 级联型高压变频器控制单元软件在线升级的基本思想

1.1 级联型高压变频器系统整体结构

本文多DSP 片内Flash 串行加载方法是根据级联型高压变频器的结构特点提出的。图1 为级联型高压变频器系统结构框图。变频器主控系统与监控系统(上位机)通过RS485总线进行通讯。RS485 总线采用差分信号进行传输,具有共模干扰抑制能力,抗干扰性能较强。主控发送的信号通过CPLD 发送给各功率单元控制系统。由于主控与单元模块距离较长,且单元模块高频干扰大、电压等级高、工作环境恶劣,故CPLD转换的主控信号通过光纤传输。

1.2 多DSP片内Flash串行加载的主要思想

目前,LF240xA 片内Flash 通过PC 加载实现的方法有两种:一种是通过DSP开发板自带的JTAG接口(Joint Test Action Group)与PC 并口或USB串口相连实现编程(JTAG编程方式),JTAG接口提供数据、地址及控制信号,当程序在PC 上调试完毕后借助仿真器通过JTAG 烧写到片内Flash 中;另一种是利用DSP 的串行通信接口(SCI),通过RS232 与PC的串口连接实现编程(串口编程方式)。根据闪存指令集编写程序,编译通过后分段下载到DSP的RAM中,最后转移到Flash中。该方式需要用到DSP的引导加载ROM。当DSP的BOOT-EN引脚为高电平并且DSP运行于微控制器(MCU)方式时,DSP 执行片内闪存程序,系统正常运行。当BOOT-EN为低电平、编程电压引脚为+5 V,并且DSP运行于微控制器方式时,DSP执行片内ROM加载程序,执行串行加载。

现有的方法一次只能对单个DSP烧写,且需要拆卸。多DSP串行加载的思想是,通过主控与单元间的通讯,实现主控向单元进行Flash 串行烧写的功能,从而在不需要对硬件做任何修改的情况下实现多DSP同时加载。

具体思想是:先将串行加载算法程序(以下称为Loader程序)用JTAG口烧写到单元DSP 片内Flash的固定位置,且永不擦除改变。在系统上电后,单元先运行Loader程序,与主控建立通讯。同时上位机与主控建立通讯,上位机监控系统提供了“指定单元升级”、“全部单元升级”或“正常运行”模式的选择。在需要软件升级时,选择“指定单元升级”或“全部单元升级”,下发给单元。单元通过主控获得升级指令,继续运行Loader程序,并将主控传送的升级程序代码加载到Flash。若不需要软件升级,选择“正常运行”跳转到现有程序正常运行。若等待一段时间后未下发任何指令,系统将默认为正常运行。

2 变频器控制软件在线升级的实现

2.1 串行加载的软件实现

将要加载的升级程序利用dsphex命令,转换为HEX文件,存放在主控或上位机的存储器中。根据上位机的升级指令,控制单元模块的动作,并为单元模块提供升级软件的HEX文件。

1)存储在单元DSP中的Loader程序内含Flash加

载算法的HEX文件算法包括内核子程序(也称为监控子程序)、清除(clear)、擦除(erase)、编程(program)子程序(可统称为读写子程序)。在对Flash编程过程中,由于对DSP内部的Flash 进行清零、擦除及编程操作时,Flash 的闪存阵列处于高电压,故里面的代码是不能运行的,于是就要将清零、擦除及编程算法放到DSP内部的RAM 中运行。内核程序作为监控程序也在RAM 中运行,用以调用清零、擦除及编程算法。故Loader程序的功能就是在初始化DSP、与主控建立通讯后,等待接收程序下载命令,若在5 s内接收到下载命令,将存储在Flash中的内核、清除、擦除、编程子程序的HEX文件转存至DSP的SARAM区的固定位置后运行内核程序。其中,DSP 的SARAM 区既可做数据存储区又可做程序存储区,本文将其作为程序存储区,经过一个中间数据变量,软件从Flash程序存储区转存至SARAM程序存储区。

若5 s内未接收到指令或接收到正常运行指令,程序跳转到用户程序开始处运行。这里要注意,由于Loader程序是固定不变的,所以用户程序的跳转地址也是固定不变的。本文中定为1000H,那么要求用户程序的入口地址INT0 分配为1000H。

2)内核子程序控制读写子程序的调度调用清零、擦除子程序,并在操作成功后向上位机发送成功标志,上位机在接收到擦除成功标志后传输单元升级程序HEX 代码,下位机接收到HEX 代码运行编程子程序,将代码加载到Flash。整个串行加载的流程如图2所示。其中,升级程序代码接收到后被存储在DARAM 数据存储器的B1区。因为B1 区的存储空间为256字,故一次最多可存放256个字的程序代码。根据程序代码的长度,可分多次传输,多次运行编程程序。

3)高压变频器单元板选用DSP TMS320LF2407A作为控制芯片查阅资料可知,芯片中Flash 0000H到003FH 为中断向量表。其中,0000H 存储的是INT0,即程序入口地址。DSP 上电复位后,芯片从0000H地址处读取INT0 跳转地址,跳转到程序入口开始执行。因此,要实现芯片上电复位后跳到Loader子程序处运行,就需要将Loader子程序的入口地址写入中断向量表,本设计中Loader 子程序放置在Flash 7000H 开始的地址处且永不改动,其INT0 地址为7000H,故在加载单元升级程序时,中断向量表的INT0 地址要改为7000H,其他中断向量地址不变。即上电复位后不转入单元程序而是转入Loader程序,在判断不进行程序加载时再跳转到单元程序起始处,同时不影响单元程序的中断正常执行。具体实现举例如:


程序存储器地址程序存储器代码

0000H 7980H 1000H

0002H 7980H 106FH

0004H 7980H 1035H

… …

7980H 是跳转语句“B”的HEX 码,即单元程序跳转到1000H处运行。将程序存储器0000H处的跳转语句改为7980H 7000H,使芯片上电复位跳转到Loader程序处执行。

2.2 多DSP片内Flash串行加载的实现

由图1可知,高压变频器主控模块通过CPLD与多个单元模块通讯。主控通过广播方式与所有单元模块通讯,或通过点对点方式与单个单元模块通讯。这样,就可根据需要,选通一个特定单元或选通所有单元,下发升级指令。相应的单元模块接收指令,判断本单元需不需要升级。若要升级,执行串行加载程序,并接收升级代码,从而可实现多DSP同时编程。

2.3 需要注意的问题

针对实际应用的特点,在实现中要注意以下问题:

1)在对Flash编程时,LF240XA的引脚Vccp接+5 V的编程电压。在编程结束后,把引脚Vccp接地,则阵列中的内容不易被改变。片内CPU的工作时钟不得高于40 MHz,否则会使程序加载过程出现错误,从而导致程序加载失败。

2)由于Loader 程序占用了一部分Flash 存储空间,而Flash 存储空间分成四个扇区加载,分别为0000-0FFFH、1000H-3FFFH、4000H-6FFFH、7000H-7FFFH,故Loader 程序占用了一个Flash 的扇区7000H-7FFFH,因此正常运行程序的大小限制在片内Flash存储空间的另外3个扇区内。

3)数据传输的可靠性。鉴于高压变频器的工作环境,要保证数据可靠传输和升级程序的可靠烧写,以免引起系统控制上的失误,造成不必要的损失。

4)使用要简单方便。为实现数据可靠传输,采用一一校验的方式,即单元接收到一个数据之后就回发给主控,主控判断是否与发送数据相同,相同就继续发送,不同就结束发送。

3 结语

本文设计的多DSP片内Flash串行加载方法,实现了级联型高压变频器单元模块控制软件的在线升级。通过在高压变频系统上应用,验证了其可行性。

这种方法同以往的程序加载方法相比,简单省时,为解决类似多DSP控制芯片系统的程序加载提供了一种方便、简单、可靠的方法。




关键词: 程序存储器 DSP

评论

技术专区