日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

m基于FPGA的FOC控制器verilog实现,包括CLARK,PARK,PID及SVPWM,含testbench

發布時間:2024/1/18 编程问答 41 豆豆
生活随笔 收集整理的這篇文章主要介紹了 m基于FPGA的FOC控制器verilog实现,包括CLARK,PARK,PID及SVPWM,含testbench 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

目錄

1.算法仿真效果

2.算法涉及理論知識概要

3.MATLAB核心程序

4.完整算法代碼文件


1.算法仿真效果

Quartus II 12.1(64-Bit)

ModelSim-Altera 6.6d?Starter Edition

仿真結果如下:

2.算法涉及理論知識概要

整個系統的結構如下所示:

1、采集到兩相電流

2、經過clarke變換后得到兩軸正交電流量,

3、經過旋轉變換后得到正交的電流量 Id、Iq,其中Iq與轉矩有關,Id與磁通有關。在實際控制中,常將Id置為0。得到的這兩個量不是時變的,因此可以單獨的對這兩個量進行控制,類似直流量控制一樣。而不需要知道具體要給電機三相具體的電壓為多少。

4、將第3步中得到的Iq與Id量分別送進PI調節器,得到對應的輸出Vq和Vd;

5、通過傳感器得到電機轉過的角度。

6、進行逆park變換,得到二軸電流量。

7、對第6步中的Va,Vb進行逆clarke變換,得到實際需要的三相電壓輸入給逆變電橋,驅動電機轉動。

? ? ? ?FOC控制的其實是電機的電磁場方向。轉子的轉子力矩正比于定子的磁場向量與轉子磁場矢量的矢量積。由矢量的關系可知,若使電機的轉矩時刻保持最大,則定子磁場向量應與轉子磁場向量相互垂直。又因為磁場的大小與方向與電流的大小與方向有著直接的關系,所以在用FOC控制算法控制BLDC時的關鍵就是控制三相輸入的電流大小與方向。而控制電流產生定子磁場與轉子磁場垂直的關鍵在:控制穩定的三相輸入電壓及其電流向量,并且我們得知道轉子的實時位置。

? ? ? ?輸入電流的方向控制,FOC給出了空間電流矢量的概念。其實質是將三相的電流矢量結合,再分解為垂直和平行于轉子磁體軸方向的兩個分量即d-q結構。垂直方向的電流分量所產生磁場正交于轉子的磁場,這就產生了旋轉力矩。而平行于轉子磁軸方向的電流分量,所產生的磁場與轉子磁場一致,就不會產生任何的力矩。另外,一個好的控制算法就需要使這個平行于轉子磁軸方向的電流分量盡量最小化,因為,這個電流分量只會使電機產生多余的熱量,并加劇軸承的磨損。我們需要控制線圈的電流,以使垂直于轉子磁軸方向的電流分量達到最大。由此而得到的電機力矩和這個電流分量的大小成比例。

3.Verilog核心程序

................................................................... PID_tops PID_tops_u(.i_clk (i_clk),.i_rst (i_rst),.i_kp (16'b0001_1111_1111_1111),.i_ki (16'b0000_0000_0010_0011),.i_kd (16'b0000_0000_0000_0001),.i_din (err1),.o_dout (o_pid_dout),//test port.o_doutp (),.o_douti (),.o_doutd ());wire signed[15:0]o_Id; wire signed[15:0]o_Iq; wire signed[15:0]err11; wire signed[15:0]err12; assign err11 = o_pid_dout-o_Id; assign err12 = 0-o_Iq;wire signed[15:0]o_pid_dout1; wire signed[15:0]o_pid_dout2; PID_tops PID_tops_u1(.i_clk (i_clk),.i_rst (i_rst),.i_kp (16'b0001_1111_1111_1111),.i_ki (16'b0000_0000_0010_0011),.i_kd (16'b0000_0000_0000_0001),.i_din (err11),.o_dout (o_pid_dout1),//test port.o_doutp (),.o_douti (),.o_doutd ()); PID_tops PID_tops_u2(.i_clk (i_clk),.i_rst (i_rst),.i_kp (16'b0001_1111_1111_1111),.i_ki (16'b0000_0000_0010_0011),.i_kd (16'b0000_0000_0000_0001),.i_din (err12),.o_dout (o_pid_dout2),//test port.o_doutp (),.o_douti (),.o_doutd ());// //INV PARK wire signed[15:0]o_Uaref; wire signed[15:0]o_Ubref; INVPARK INVPARK_u(.i_clk (i_clk),.i_rst (i_rst),.i_D (o_pid_dout1),.i_Q (o_pid_dout2),.i_theta (o_theta),.o_alpha (o_Uaref),.o_beta (o_Ubref)); // //SVPWM wire w_PWM1; wire w_PWM2; wire w_PWM3; wire w_PWM4; wire w_PWM5; wire w_PWM6;SVPWM SVPWM_u(.i_clk (i_clk),.i_rst (i_rst),.i_Uaref(o_Uaref),.i_Ubref(o_Ubref),.o_PWM1 (w_PWM1),.o_PWM2 (w_PWM2),.o_PWM3 (w_PWM3),.o_PWM4 (w_PWM4),.o_PWM5 (w_PWM5),.o_PWM6 (w_PWM6));// //IGBT+PMSM IGBT_PMSM_simple IGBT_PMSM_simple_u(.i_clk (i_clk),.i_rst (i_rst),.i_PWM1 (w_PWM1),.i_PWM2 (w_PWM2),.i_PWM3 (w_PWM3),.i_PWM4 (w_PWM4),.i_PWM5 (w_PWM5),.i_PWM6 (w_PWM6),.i_pid (o_pid_dout),.i_Te (16'd100),.o_Ia (o_Ia),.o_Ib (o_Ib),.o_Ic (o_Ic),.o_Te (o_Te),.o_Wm (o_Wm),.o_theta(o_theta));// //CLARK CLARK CLARK_u(.i_clk (i_clk),.i_rst (i_rst),.i_Ia (o_Ia),.i_Ib (o_Ib),.o_Id (o_Ialpha),.o_Iq (o_Ibeta));// //PARK PARK PARK_u(.i_clk (i_clk),.i_rst (i_rst),.i_d (o_Ialpha),.i_q (o_Ibeta),.i_theta (o_theta),.o_ID (o_Id),.o_IQ (o_Iq));endmodule 08_060_m

4.完整算法代碼文件

V

總結

以上是生活随笔為你收集整理的m基于FPGA的FOC控制器verilog实现,包括CLARK,PARK,PID及SVPWM,含testbench的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。