This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

关于SolarHV_DCAC程序问题



在SolarHV_DCAC的例程中主程序开始之前有定义几个数组,数组如下:

const unsigned int wSinTab[]={ //for 50Hz system


0, 268, 536, 804, 1071, 1339, 1606, 1872, 2138,
2404, 2669, 2934, 3196, 3459, 3720, 3981, 4240, 4499,
4756, 5012, 5266, 5519, 5771, 6021, 6269, 6516, 6761,
7005, 7246, 7485, 7723, 7958, 8191, 8423, 8651, 8878,
9102, 9323, 9543, 9759, 9973, 10185, 10393, 10599, 10802,
11002, 11199, 11393, 11585, 11773, 11957, 12139, 12317, 12492,
12664, 12834, 12997, 13159, 13317, 13471, 13622, 13769, 13912,
14052, 14188, 14320, 14449, 14573, 14693, 14810, 14923, 15031,
15136, 15236, 15333, 15425, 15513, 15598, 15677, 15753, 15825,
15892, 15955, 16014, 16068, 16118, 16164, 16206, 16243, 16276,
16304, 16328, 16348, 16363, 16374, 16381, 16383,

16381, 16374, 16363, 16348, 16328, 16304,
16276, 16243, 16206, 16164, 16118, 16068, 16014, 15955, 15892,
15825, 15753, 15677, 15598, 15513, 15425, 15333, 15236, 15136,
15031, 14923, 14810, 14693, 14573, 14449, 14320, 14188, 14052,
13912, 13769, 13622, 13471, 13317, 13159, 12997, 12834, 12664,
12492, 12317, 12139, 11957, 11773, 11585, 11393, 11199, 11002,
10802, 10599, 10393, 10185, 9973, 9759, 9543, 9323, 9102,
8878, 8651, 8423, 8191, 7958, 7723, 7485, 7246, 7005,
6761, 6516, 6269, 6021, 5771, 5519, 5266, 5012, 4756,
4499, 4240, 3981, 3720, 3459, 3196, 2934, 2669, 2404,
2138, 1872, 1606, 1339, 1071, 804, 536, 268, 0 ,

65268, 65000, 64732, 64465, 64197, 63930, 63664, 63398,
63132, 62867, 62602, 62340, 62077, 61816, 61555, 61296, 61037,
60780, 60524, 60269, 60017, 59765, 59515, 59267, 59020, 58775,
58531, 58290, 58051, 57813, 57578, 57345, 57113, 56885, 56658,
56434, 56213, 55993, 55777, 55563, 55351, 55143, 54937, 54734,
54534, 54337, 54143, 53951, 53763, 53579, 53397, 53219, 53044,
52872, 52702, 52539, 52377, 52219, 52065, 51914, 51767, 51624,
51484, 51348, 51216, 51087, 50963, 50843, 50726, 50613, 50505,
50400, 50300, 50203, 50111, 50023, 49938, 49859, 49783, 49711,
49644, 49581, 49522, 49468, 49418, 49372, 49330, 49293, 49260,
49232, 49208, 49188, 49173, 49162, 49155, 49153,

49155, 49162, 49173, 49188, 49208, 49232,
49260, 49293, 49330, 49372, 49418, 49468, 49522, 49581, 49644,
49711, 49783, 49859, 49938, 50023, 50111, 50203, 50300, 50400,
50505, 50613, 50726, 50843, 50963, 51087, 51216, 51348, 51484,
51624, 51767, 51914, 52065, 52219, 52377, 52539, 52702, 52872,
53044, 53219, 53397, 53579, 53763, 53951, 54143, 54337, 54534,
54734, 54937, 55143, 55351, 55563, 55777, 55993, 56213, 56434,
56658, 56885, 57113, 57345, 57578, 57813, 58051, 58290, 58531,
58775, 59020, 59267, 59515, 59765, 60017, 60269, 60524, 60780,
61037, 61296, 61555, 61816, 62077, 62340, 62602, 62867, 63132,
63398, 63664, 63930, 64197, 64465, 64732, 65000, 65268};

想问一下这个数组里面的值是如何得来的?具体算法有没有什么说明书说明一下的。谢谢!

  • 这个就是SPWM的数组的占空比,最后会给到CMPA寄存器,用MATLAB算出来的

  • 囧先生  我自己编写的带软启动的电压闭环程序来控制移相全桥,我是通过DSP板上安装的开关来控制软启动程序,我的程序是这样的:当按下开关时,软启动程序先运行,当软启动程序运行到设定的占空比时,PI部分开始调节,当再次按开关时,4路ewpm口全部拉低与pi部分的运算全部清零。      当我 在线编译时(在ram里运行):采样部分能正常采样,控制软启动开关也正常,PI部分也正常。当我把程序拷进FLASH里,就出现了问题,首先采样结果寄存器一直是零,我按下软启动开关时,软启动部分开始运行,当运行到给定占空比时,PI开始运行,但是再按下开关时,4路ewpm与pi部分的运算并没有被置位。请技术人员分析一下问题原因,把程序拷进FLASH里CMD文件我已经配置了。

  • 谢谢!请问用MATLAB怎么算的这个值?能给说明一下吗?

  • 一个简单的公式就可以:

    N = 40
    for i = 1:N
    x(1, i) = sin((i-1)*2*pi/N);
    y(1, i) = (x(1,i)+1)*120
    end

    N就是你的点数,如果想看图,就用figure再打出来看看

    y函数就是最终给到compare的值,我这里120是半周期

  • 这只是一个正弦表,作为市电 Vm*sin(wt) 中sin(wt)的值出现在控制系统中,查表的方法比直接进行sin计算要省时间.

    正半周 采用Q14标幺, 点值为 2^14 * sin(N*180/192) 正半周192个点(不包含起始点).

    负半周比较奇怪,采用 2^16 - 2^14 * sin(N*180/192) 的算法得到的值,一般来说正弦表只要列出1/4或者1/2周期的正弦值,就可以推导得到其余的值.

    我看了下程序代码,里面应该是没有使用正弦表进行控制,只是在开发初期调试使用.