solarbe文库
首页 solarbe文库 > 资源分类 > PDF文档下载

基于DSP2812控制的单相光伏逆变器程序代码

  • 资源大小:11.12KB        全文页数:8页
  • 资源格式: PDF        下载权限:游客/注册会员/VIP会员    下载费用:3金币 【人民币3元】
游客快捷下载 游客一键下载
会员登录下载
下载资源需要3金币 【人民币3元】

邮箱/手机:
温馨提示:
支付成功后,系统会根据您填写的邮箱或者手机号作为您下次登录的用户名和密码(如填写的是手机,那登陆用户名和密码就是手机号),方便下次登录下载和查询订单;
特别说明:
请自助下载,系统不会自动发送文件的哦;
支付方式: 微信支付    支付宝   
验证码:   换一换

 
友情提示
2、本站资源不支持迅雷下载,请使用浏览器直接下载(不支持QQ浏览器)
3、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰   
4、下载无积分?请看这里!
积分获取规则:
1充值vip,全站共享文档免费下;直达》》
2注册即送10积分;直达》》
3上传文档通过审核获取5积分,用户下载获取积分总额;直达》》
4邀请好友访问随机获取1-3积分;直达》》
5邀请好友注册随机获取3-5积分;直达》》
6每日打卡赠送1-10积分。直达》》

基于DSP2812控制的单相光伏逆变器程序代码

// // TMDX ALPHA RELEASE // Intended for product evaluation purposes // // // // FILE DSP28_Example.c // // TITLE DSP28 CPU_Timer example program. // // // // Ver | dd mmm yyyy | Who | Description of changes // ||| // 0.55| 06 May 2002 | S.S. | EzDSP Alpha Release // 0.57| 27 May 2002 | L.H. | No change // // Step 0. Include required header files // DSP28_Device.h device specific definitions include statements for // all of the peripheral .h definition files. // DSP28_Example.h is specific for the given example. include “DSP28_Device.h“ include “IQmathLib.h“ pragma DATA_SECTIONsine_table,“IQmathTables“; _iq30 sine_table[512]; define PI 3.14 interrupt void eva_T1UFINT_ISRvoid; interrupt void CAP_INT3_ISRvoid; interrupt void ADC_FIR_INT_ISRvoid; // ADC 服务中断Uint16 ConversionCount 0; Uint16 SS 0; Uint16 n 0; Uint16 SIN 0; Uint16 SIN1 0; Uint16 SIN2 0; _iq30 sine_table[512]; //jiayujint short int AData[512]{0}; short int AData1[512]{0}; extern _iq IQssfir_iq*, _iq*, Uint16; define N 5 // 滤波器长度_iq xDelay[N] {0, 0, 0, 0, 0}; _iq xDelay1[N] {0, 0, 0, 0, 0}; // filter coefficients _iq coeffs[N] {100*_IQ0.0625,100* _IQ0.25, 100*_IQ0.375, 100*_IQ0.25, _IQ0.0625}; define AdcFsV oltage _IQ3.0 // ADC 满量程电压define AdcBufLen 512 // ADC 结果缓冲长度_iq AdcBuf[AdcBufLen]; // ADC 结果缓冲_iq AdcBuf1[AdcBufLen]; _iq AdcBufFiltered[AdcBufLen]; // 滤波后电流的 ADC 结果缓冲_iq AdcBufFiltered1[AdcBufLen]; // 滤 波 后电压的 ADC 结果缓冲_iq vf[AdcBufLen]; // 滤波后电流的 ADC 结果缓冲_iq If[AdcBufLen]; // 滤波后电压的 ADC 结果缓冲_iq Ig[AdcBufLen]; _iq vref[AdcBufLen]; //需要转换 iq 格式 已经转化到调整环内的IQ 格式_iq ev[AdcBufLen]; _iq ei[AdcBufLen]; _iq Vs[AdcBufLen]; float M; float Imax_IQ4100; float Vmax_IQ4090; // 对程序中用到的常数值进行宏定义赋值//pi 参数 iq 格式float kp_IQ1; float ki_IQ0.2; float kip_IQ10; void mainvoid { /*初始化系统 */ InitSysCtrl; /*关中断 */ DINT; IER 0x0000; IFR 0x0000; /*初始化 PIE 控制寄存器 */ InitPieCtrl; /*初始化 PIE 矢量表 */ InitPieVectTable; /*初始 GPIO*/ InitGpio; InitAdc; // 初始化 ADC EALLOW; PieVectTable.CAPINT3 PieVectTable.ADCINT PieVectTable.T1UFINT EDIS; PieCtrl.PIEIER1.bit.INTx6 1; // 开 AD 中断PieCtrl.PIEIER2.bit.INTx6 1; // 开下益中断PieCtrl.PIEIER3.bit.INTx7 1; // 开 CAP 中断IER | 0x0007 ; EINT; //使能全局中断 INTM ERTM; //使能全局实时中断 DBGM /*初始化 EV*/ InitEv; whileAdcRegs.ADC_ST_FLAG .bit.SEQ1_BSY0 { AdcRegs.ADCTRL2.bit.SOC_SEQ11; } for;; { KickDog; } } interrupt void eva_T1UFINT_ISRvoid { //查表方式(固化正弦表)//EvaRegs.CMPR1 EvaRegs.T1PR-_IQsat_IQ30mpysine_table[index]_IQ300.9999,EvaRegs.T1PR/2,EvaRegs.T1PR,0; //计算得出新的正弦表SIN _IQsat_IQ30mpysine_table[SS]_IQ300.9999,EvaRegs.T1PR/2,EvaRegs.T1PR,0; SIN2 _IQsat_IQ30mpy-sine_table[SS]_IQ300.9999,EvaRegs.T1PR/2,EvaRegs.T1PR,0; SS; ifSS 512 { SS 0; } // EvaRegs.CMPR1 INPUT[SS] ; EvaRegs.CMPR1 SIN ; EvaRegs.CMPR2 SIN2; EvaRegs.EVAIFRA.bit.T1UFINT 1; // 复位定时器 1 下溢中断标志PieCtrl.PIEACK.all PIEACK_GROUP2; //响应该中断并允许从组 2 中接受更多的中断} interrupt void CAP_INT3_ISRvoid //定义 cap 中断{ SS0; //指针复位EvaRegs.EVAIFRC.bit.CAP3INT1; PieCtrl.PIEACK.all PIEACK_GROUP3; } interrupt void ADC_FIR_INT_ISRvoid // ADC { static Uint16 ibuf0; PieCtrl.PIEACK.all PIEACK_GROUP1; /*** Manage the ADC registers ***/ AdcRegs.ADCTRL2.bit.RST_SEQ1 1; // 复位 SEQ1 到 CONV00 状态AdcRegs.ADC_ST_FLAG .bit.INT_SEQ1_CLR1; // 清楚 ADC SEQ1 中断标志/*** 读取 ADC 结果1 将无符号 16-bit 结果转换成 32-bit IQ16 格式2 将 IQ16 格式转换为 IQ 格式3 根据 ADC 满量程定标***/ AData[ibuf]AdcRegs.RESULT04; //采样电压值AData1[ibuf]AdcRegs.RESULT14; //采样电流值AdcBuf[ibuf] _IQmpyAdcFsV oltage, _IQ16toIQ _iqAdcRegs.RESULT0; AdcBuf1[ibuf] _IQmpyAdcFsV oltage, _IQ16toIQ _iqAdcRegs.RESULT1; xDelay[0] AdcBuf[ibuf]; AdcBufFiltered[ibuf] IQssfirxDelay, coeffs, N; xDelay1[0] AdcBuf1[ibuf]; AdcBufFiltered1[ibuf] IQssfirxDelay1, coeffs, N; vf[ibuf] A dcBufFiltered[ibuf]; //采样电压值Ig[ibuf] A dcBufFiltered1[ibuf]; //采样电流值// 电 压 电 流 双 闭 环 函 数SIN1 _IQsat_IQ30mpysine_table[ibuf]_IQ300.9999,2047,4095,0; vref[ibuf]SIN1; ev[ibuf] vref[ibuf]- vf[ibuf] ; if ibuf0 { Ig[ibuf]kp*ev[ibuf]ki*ev[ibuf] ; if Ig[ibuf]Imax //电压环限幅 考虑输出 Ig 正负Ig[ibuf]Imax; else if Ig[ibuf]Vmax //电流环限幅Vs[ibuf]Vmax; else if Vs[ibuf]Imax //电压环限幅 考虑输出 Ig 正负Ig[ibuf]Imax; else if Ig[ibuf]Vmax Vs[ibuf]Vmax; else if Vs[ibuf]0 MVs[ibuf]/4096; else M-Vs[ibuf]/4096; //考虑一下 Vs[k] 的正负值 确保 M 是 0-1 的值ibuf 4; ifibuf AdcBufLen { ibuf 0; } } //函数结束 返回调制度 M _iq IQssfir_iq *x, _iq *a, Uint16 n { Uint16 i; // general purpose _iq y; // result _iq *xold; // delay line pointer /*** Setup the pointers ***/ a a n-1; // a points to last coefficient x x n-1; // x points to last buffer element xold x; // xold points to last buffer element /*** Last tap has no delay line update ***/ y _IQmpy*a--, *x--; /*** Do the other taps from end to beginning ***/ fori0; i n-1; i { y y _IQmpy*a--, *x; // filter tap *xold-- *x--; // delay line update } /*** Finish up ***/ returny; } //end IQssfir /********************************************************************* * 函数 DelayUs * *********************************************************************/ void DelayUs volatile Uint16 Usec { while Usec-- // 1us loop at 150MHz CPUCLK { asm“ RPT 139 || NOP“; } } // end DelayUs // // No more. //

注意事项

本文(基于DSP2812控制的单相光伏逆变器程序代码)为本站会员(索比杜金泽)主动上传,solarbe文库仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知solarbe文库(发送邮件至794246679@qq.com或直接QQ联系客服),我们立即给予删除!

温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载不扣分。

copyright@ 2008-2013 solarbe文库网站版权所有
经营许可证编号:京ICP备10028102号-1

1
收起
展开