對于給定(n+1)個節點上的函數值,采用三次樣條的方法進行差值,這是一個高階的插值方法,它既有良好的收斂性又比較光滑。它實際上是由分段三次曲線連接而成,在接點處有2階連續導數。
上傳時間: 2014-01-01
上傳用戶:jqy_china
一個報童從報刊發行中心訂報后零售,每賣一份報紙可賺錢a元;若報紙賣不出去,則退回發行處,每退一份要賠錢b元。每天報童賣出的份數是隨機的,但報童可以根據以往賣報情況統計得到每天賣k份報紙的概率密度p(k)。 (1) 求報童每天期望收益達到最大(或損失達到最小)的定報量z。 (2) 改變參數a/b的值,觀察訂報量的最優值變化,畫出變化曲線。 試畫出仿真流程圖,進行程序實現,并對仿真結果進行分析。
上傳時間: 2016-07-30
上傳用戶:15736969615
基因算法,用VC++或MATLAB,java等工具設計一程序計算任一個隨機產生的DNA基因表達式的有效長度和值 設隨機產生的基因表達式為: + Q - / b * b a Q b a a b a a b b a a a b
上傳時間: 2014-01-09
上傳用戶:aa54
ColorPicker是一個基于對話框的應用程序,它具有以下功能: 1. 色彩編輯功能 用戶可以通過可以調整R、G、B的值來編輯顏色,亦可通過調整H、S、V的值來選取顏色。顏色編輯的結果會馬上反饋到顏色面板和顏色預覽框中。 2.RGB顏色空間和HSV顏色空間的轉換 當改變RGB值,會得到相應的HSV值,并進行顯示,反之亦然。 3.取色功能 取色功能包含“面板取色”和“屏幕取色”。面板取色就是用戶可以在顏色面板中單擊鼠標左鍵,選取目標點所表示的某種顏色。屏幕取色則是允許用戶獲取整個屏幕上的任意一點的顏色值。用戶可以將鼠標移動到需要獲取顏色的地方,然后按a鍵或A鍵即可以獲取該點顏色值。
標簽: ColorPicker 對話框 應用程序
上傳時間: 2014-01-01
上傳用戶:hewenzhi
本程序的開發環境為MATLAB6.5版本,所編程序須在此環境下運行。由于氣動模型的離散性,且采用了許多工程計算經驗公式和實驗數據,所以在編程時會比較繁雜,為了使程序讀起來方便清晰,在編制程序時采用了如下的思路: 考慮到程序的一般結構,這里將氣動計算系統分為三大模塊:輸入模塊、氣動計算模塊以及結果輸出模塊。考慮到本系統的特殊性,又將輸入模塊劃分為初始數據輸入模塊、導彈外形參數模塊以及插值數據庫模塊,并采用M文件格式編制;氣動計算模塊則采用了子系統的結構形式,并用Simulink 模塊編制;結果輸出模塊則是采用M文件的形式將氣動計算模塊得到的結果輸出到工作區間并將數據結果繪制成曲線。最后,為了運行的方便,編制了一個名為Start_file.m的M文件,按流程依次調用編寫的所有程序,在運行此程序時,只需將所有程序加載于“Current Directory”指定的文件夾中(即路徑的設定),并在“Command Window”中輸入“Start_file”即可。 (導彈氣動計算程序)
上傳時間: 2014-01-04
上傳用戶:xhz1993
/****************temic*********t5557***********************************/ #include <at892051.h> #include <string.h> #include <intrins.h> #include <stdio.h> #define uchar unsigned char #define uint unsigned int #define ulong unsigned long //STC12C2051AD的SFR定義 sfr WDT_CONTR = 0xe1;//stc2051的看門狗?????? /**********全局常量************/ //寫卡的命令 #define write_command0 0//寫密碼 #define write_command1 1//寫配置字 #define write_command2 2//密碼寫數據 #define write_command3 3//喚醒 #define write_command4 4//停止命令 #define TRUE 1 #define FALSE 0 #define OK 0 #define ERROR 255 //讀卡的時間參數us #define ts_min 250//270*11.0592/12=249//取近似的整數 #define ts_max 304//330*11.0592/12=304 #define t1_min 73//90*11.0592/12=83:-10調整 #define t1_max 156//180*11.0592/12=166 #define t2_min 184//210*11.0592/12=194 #define t2_max 267//300*11.0592/12=276 //***********不采用中斷處理:采用查詢的方法讀卡時關所有中斷****************/ sbit p_U2270B_Standby = P3^5;//p_U2270B_Standby PIN=13 sbit p_U2270B_CFE = P3^3;//p_U2270B_CFE PIN=6 sbit p_U2270B_OutPut = P3^7;//p_U2270B_OutPut PIN=2 sbit wtd_sck = P1^7;//SPI總線 sbit wtd_si = P1^3; sbit wtd_so = P1^2; sbit iic_data = P1^2;//lcd IIC sbit iic_clk = P1^7; sbit led_light = P1^6;//測試綠燈 sbit led_light1 = P1^5;//測試紅燈 sbit led_light_ok = P1^1;//讀卡成功標志 sbit fengmingqi = P1^5; /***********全局變量************************************/ uchar data Nkey_a[4] = {0xA0, 0xA1, 0xA2, 0xA3};//初始密碼 //uchar idata card_snr[4]; //配置字 uchar data bankdata[28] = {1,2,3,4,5,6,7,1,2,3,4,5,6,7,1,2,3,4,5,6,7,1,2,3,4,5,6,7}; //存儲卡上用戶數據(1-7)7*4=28 uchar data cominceptbuff[6] = {1,2,3,4,5,6};//串口接收數組ram uchar command; //第一個命令 uchar command1;// //uint temp; uchar j,i; uchar myaddr = 8; //uchar ywqz_count,time_count; //ywqz jishu: uchar bdata DATA; sbit BIT0 = DATA^0; sbit BIT1 = DATA^1; sbit BIT2 = DATA^2; sbit BIT3 = DATA^3; sbit BIT4 = DATA^4; sbit BIT5 = DATA^5; sbit BIT6 = DATA^6; sbit BIT7 = DATA^7; uchar bdata DATA1; sbit BIT10 = DATA1^0; sbit BIT11 = DATA1^1; sbit BIT12 = DATA1^2; sbit BIT13 = DATA1^3; sbit BIT14 = DATA1^4; sbit BIT15 = DATA1^5; sbit BIT16 = DATA1^6; sbit BIT17 = DATA1^7; bit i_CurrentLevel;//i_CurrentLevel BIT 00H(Saves current level of OutPut pin of U2270B) bit timer1_end; bit read_ok = 0; //緩存定時值,因用同一個定時器 union HLint { uint W; struct { uchar H;uchar L; } B; };//union HLint idata a union HLint data a; //緩存定時值,因用同一個定時器 union HLint0 { uint W; struct { uchar H; uchar L; } B; };//union HLint idata a union HLint0 data b; /**********************函數原型*****************/ //讀寫操作 void f_readcard(void);//全部讀出1~7 AOR喚醒 void f_writecard(uchar x);//根據命令寫不同的內容和操作 void f_clearpassword(void);//清除密碼 void f_changepassword(void);//修改密碼 //功能子函數 void write_password(uchar data *data p);//寫初始密碼或數據 void write_block(uchar x,uchar data *data p);//不能用通用指針 void write_bit(bit x);//寫位 /*子函數區*****************************************************/ void delay_2(uint x) //延時,時間x*10us@12mhz,最小20us@12mhz { x--; x--; while(x) { _nop_(); _nop_(); x--; } _nop_();//WDT_CONTR=0X3C;不能頻繁的復位 _nop_(); } ///////////////////////////////////////////////////////////////////// void initial(void) { SCON = 0x50; //串口方式1,允許接收 //SCON =0x50; //01010000B:10位異步收發,波特率可變,SM2=0不用接收到有效停止位才RI=1, //REN=1允許接收 TMOD = 0x21; //定時器1 定時方式2(8位),定時器0 定時方式1(16位) TCON = 0x40; //設定時器1 允許開始計時(IT1=1) TH1 = 0xfD; //FB 18.432MHz 9600 波特率 TL1 = 0xfD; //fd 11.0592 9600 IE = 0X90; //EA=ES=1 TR1 = 1; //啟動定時器 WDT_CONTR = 0x3c;//使能看門狗 p_U2270B_Standby = 0;//單電源 PCON = 0x00; IP = 0x10;//uart you xian XXXPS PT1 PX1 PT0 PX0 led_light1 = 1; led_light = 0; p_U2270B_OutPut = 1; } /************************************************/ void f_readcard()//讀卡 { EA = 0;//全關,防止影響跳變的定時器計時 WDT_CONTR = 0X3C;//喂狗 p_U2270B_CFE = 1;// delay_2(232); //>2.5ms /* // aor 用喚醒功能來防碰撞 p_U2270B_CFE = 0; delay_2(18);//start gap>150us write_bit(1);//10=操作碼讀0頁 write_bit(0); write_password(&bankdata[24]);//密碼block7 p_U2270B_CFE =1 ;// delay_2(516);//編程及確認時間5.6ms */ WDT_CONTR = 0X3C;//喂狗 led_light = 0; b.W = 0; while(!(read_ok == 1)) { //while(p_U2270B_OutPut);//等一個穩定的低電平?超時判斷? while(!p_U2270B_OutPut);//等待上升沿的到來同步信號檢測1 TR0 = 1; //deng xia jiang while(p_U2270B_OutPut);//等待下降沿 TR0 = 0; a.B.H = TH0; a.B.L = TL0; TH0 = TL0 = 0; TR0 = 1;//定時器晚啟動10個周期 //同步頭 if((324 < a.W) && (a.W < 353)) ;//檢測同步信號1 else { TR0 = 0; TH0 = TL0 = 0; goto read_error; } //等待上升沿 while(!p_U2270B_OutPut); TR0 = 0; a.B.H = TH0; a.B.L = TL0; TH0 = TL0 = 0; TR0 = 1;//b.N1<<=8; if(a.B.L < 195);//0.5p else { TR0 = 0; TH0 = TL0 = 0; goto read_error; } //讀0~7塊的數據 for(j = 0;j < 28;j++) { //uchar i; for(i = 0;i < 16;i++)//8個位 { //等待下降沿的到來 while(p_U2270B_OutPut); TR0 = 0; a.B.H = TH0; a.B.L = TL0; TH0 = TL0 = 0; TR0 = 1; if(t2_max < a.W/*)&&(a.W < t2_max)*/)//1P { b.W >>= 2;//先左移再賦值 b.B.L += 0xc0; i++; } else if(t1_min < a.B.L/*)&&(a.B.L < t1_max)*/)//0.5p { b.W >>= 1; b.B.L += 0x80; } else { TR0 = 0; TH0 = TL0 = 0; goto read_error; } i++; while(!p_U2270B_OutPut);//上升 TR0 = 0; a.B.H = TH0; a.B.L = TL0; TH0 = TL0 = 0; TR0 = 1; if(t2_min < a.W/*)&&(a.W < t2_max)*/)//1P { b.W >>= 2; i++; } else if(t1_min < a.B.L/*a.W)&&(a.B.L < t1_max)*/)//0.5P //else if(!(a.W==0)) { b.W >>= 1; //temp+=0x00; //led_light1=0;led_light=1;delay_2(40000); } else { TR0 = 0; TH0 = TL0 = 0; goto read_error; } i++; } //取出奇位 DATA = b.B.L; BIT13 = BIT7; BIT12 = BIT5; BIT11 = BIT3; BIT10 = BIT1; DATA = b.B.H; BIT17 = BIT7; BIT16 = BIT5; BIT15 = BIT3; BIT14 = BIT1; bankdata[j] = DATA1; } read_ok = 1;//讀卡完成了 read_error: _nop_(); } } /***************************************************/ void f_writecard(uchar x)//寫卡 { p_U2270B_CFE = 1; delay_2(232); //>2.5ms //psw=0 standard write if (x == write_command0)//寫密碼:初始化密碼 { uchar i; uchar data *data p; p = cominceptbuff; p_U2270B_CFE = 0; delay_2(31);//start gap>330us write_bit(1);//寫操作碼1:10 write_bit(0);//寫操作碼0 write_bit(0);//寫鎖定位0 for(i = 0;i < 35;i++) { write_bit(1);//寫數據位1 } p_U2270B_CFE = 1; led_light1 = 0; led_light = 1; delay_2(40000);//測試使用 //write_block(cominceptbuff[4],p); p_U2270B_CFE = 1; bankdata[20] = cominceptbuff[0];//密碼存入 bankdata[21] = cominceptbuff[1]; bankdata[22] = cominceptbuff[2]; bankdata[23] = cominceptbuff[3]; } else if (x == write_command1)//配置卡參數:初始化 { uchar data *data p; p = cominceptbuff; write_bit(1);//寫操作碼1:10 write_bit(0);//寫操作碼0 write_bit(0);//寫鎖定位0 write_block(cominceptbuff[4],p); p_U2270B_CFE= 1; } //psw=1 pssword mode else if(x == write_command2) //密碼寫數據 { uchar data*data p; p = &bankdata[24]; write_bit(1);//寫操作碼1:10 write_bit(0);//寫操作碼0 write_password(p);//發口令 write_bit(0);//寫鎖定位0 p = cominceptbuff; write_block(cominceptbuff[4],p);//寫數據 } else if(x == write_command3)//aor //喚醒 { //cominceptbuff[1]操作碼10 X xxxxxB uchar data *data p; p = cominceptbuff; write_bit(1);//10 write_bit(0); write_password(p);//密碼 p_U2270B_CFE = 1;//此時數據不停的循環傳出 } else //停止操作碼 { write_bit(1);//11 write_bit(1); p_U2270B_CFE = 1; } p_U2270B_CFE = 1; delay_2(560);//5.6ms } /************************************/ void f_clearpassword()//清除密碼 { uchar data *data p; uchar i,x; p = &bankdata[24];//原密碼 p_U2270B_CFE = 0; delay_2(18);//start gap>150us //操作碼10:10xxxxxxB write_bit(1); write_bit(0); for(x = 0;x < 4;x++)//發原密碼 { DATA = *(p++); for(i = 0;i < 8;i++) { write_bit(BIT0); DATA >>= 1; } } write_bit(0);//鎖定位0:0 p = &cominceptbuff[0]; write_block(0x00,p);//寫新配置參數:pwd=0 //密碼無效:即清除密碼 DATA = 0x00;//停止操作碼00000000B for(i = 0;i < 2;i++) { write_bit(BIT7); DATA <<= 1; } p_U2270B_CFE = 1; delay_2(560);//5.6ms } /*********************************/ void f_changepassword()//修改密碼 { uchar data *data p; uchar i,x,addr; addr = 0x07;//block7 p = &Nkey_a[0];//原密碼 DATA = 0x80;//操作碼10:10xxxxxxB for(i = 0;i < 2;i++) { write_bit(BIT7); DATA <<= 1; } for(x = 0;x < 4;x++)//發原密碼 { DATA = *(p++); for(i = 0;i < 8;i++) { write_bit(BIT7); DATA >>= 1; } } write_bit(0);//鎖定位0:0 p = &cominceptbuff[0]; write_block(0x07,p);//寫新密碼 p_U2270B_CFE = 1; bankdata[24] = cominceptbuff[0];//密碼存入 bankdata[25] = cominceptbuff[1]; bankdata[26] = cominceptbuff[2]; bankdata[27] = cominceptbuff[3]; DATA = 0x00;//停止操作碼00000000B for(i = 0;i < 2;i++) { write_bit(BIT7); DATA <<= 1; } p_U2270B_CFE = 1; delay_2(560);//5.6ms } /***************************子函數***********************************/ void write_bit(bit x)//寫一位 { if(x) { p_U2270B_CFE = 1; delay_2(32);//448*11.0592/120=42延時448us p_U2270B_CFE = 0; delay_2(28);//280*11.0592/120=26寫1 } else { p_U2270B_CFE = 1; delay_2(92);//192*11.0592/120=18 p_U2270B_CFE = 0; delay_2(28);//280*11.0592/120=26寫0 } } /*******************寫一個block*******************/ void write_block(uchar addr,uchar data *data p) { uchar i,j; for(i = 0;i < 4;i++)//block0數據 { DATA = *(p++); for(j = 0;j < 8;j++) { write_bit(BIT0); DATA >>= 1; } } DATA = addr <<= 5;//0地址 for(i = 0;i < 3;i++) { write_bit(BIT7); DATA <<= 1; } } /*************************************************/ void write_password(uchar data *data p) { uchar i,j; for(i = 0;i < 4;i++)// { DATA = *(p++); for(j = 0;j < 8;j++) { write_bit(BIT0); DATA >>= 1; } } } /*************************************************/ void main() { initial(); TI = RI = 0; ES = 1; EA = 1; delay_2(28); //f_readcard(); while(1) { f_readcard(); //讀卡 f_writecard(command1); //寫卡 f_clearpassword(); //清除密碼 f_changepassword(); //修改密碼 } }
標簽: 12345
上傳時間: 2017-10-20
上傳用戶:my_lcs
delay.c 文件實現iic的精準延遲..如果有其他的精準延遲程序可以替代.miic.c 文件 實現模擬iic通信tcs34725.c 文件實現對顏色傳感器的通信 通信常用程序如下TCS34725_Init() 為顏色傳感器初始化程序 返回值 true或者false 例 if(TCS34725_Init()==true)TCS34725_GetRawData() 為采集顏色. 返回值 true或者false 例 if(TCS34725_GetRawData()==true) 顏色數據儲存在已經定義的靜態變量中.顏色讀取 為 調用u16 GetRData(void);u16 GetGData(void);u16 GetBData(void);u16 GetCData(void); 這四個函數讀取靜態變量的數值并分別返回16位的R,G,B,C值.RGBLEDOFF RGBLEDON 分別是燈光開關.顏色傳感器,采集時長設置在 tcs34725.c 文件中 的void TCS34725_Setup(void){ TCS34725_SetIntegrationTime(TCS34725_INTEGRATIONTIME_154MS); TCS34725_SetGain(TCS34725_GAIN_16X);}TCS34725_SetIntegrationTime 是設置單次采集時長TCS34725_SetGain 是設置多次采集的次數. 這兩個函數需要的參數 選擇在tcs34725.h 中. 自行組合在速度和準確間取舍.
上傳時間: 2022-06-11
上傳用戶:XuVshu
開關磁阻電機(SR電機)驅動系統(SRD)是一種先進的機電一體化裝置,但是其較大的振動噪聲和轉矩脈動問題制約了SRD的廣泛應用。本文以減小SR電機振動噪聲和轉矩脈動為主題展開理論分析和實驗研究。主要內容有:由于徑向力引起的定子徑向振動是SR電機噪聲的主要根源,因此徑向力的分析和計算是研究SR電機振動噪聲的基礎。本文利用磁通管法推導出徑向力的解析表達式,定性分析了徑向力與電機結構參數等之間的關系。根據虛位移原理,推導出基于矢量磁勢的電磁力計算公式。該計算方法求解電磁力時只需進行一次磁場計算,不但減小了計算量,同時計算精度較傳統虛位移法高。利用這一計算方法,求出了實驗樣機的轉矩及徑向力的精確數值解。針對在SRD性能仿真時,傳統的非線性插值不但耗時,而且對有限元計算數據量要求高的問題,本文利用人工神經網絡強大的非線性模型辨識能力,成功進行了SR電機磁鏈反演和轉矩計算的模型訓練,最后建立了基于人工神經網絡的SR電機精確解析數學模型。因為SR電機本體結構形式的選擇問題與振動噪聲大小有著密切的關系。本文從噪聲輻射和振動幅值角度探討了SR電機主要尺寸的確定;接著從對稱性、力波階數等角度研究了SR電機相數及繞組連接方式、極數、并聯支路數的選擇問題。并對一些常用的降低電機機械噪聲的措施和方法進行了綜述。系統振動特性的研究對于減小振動噪聲十分重要。本文從振動系統的運動方程出發,導出了從激振力到振動加速度的傳遞函數和系統的自由振動解;然后利用機電類比法得出了SR電機定子系統的固有頻率以及振動振幅的解析解,定性分析了影響振動振幅的各種因素;最后利用基于能量法的有限元解法,通過建立不同的散熱筋結構形式、高度、根數以及形狀的SR電機三維有限元模型,分析得出了最有利于降噪和散熱的散熱筋結構是高度高、根數多、上窄下寬的梯形截面的周向散熱筋的結論。通過建立不同繞組裝配工藝下的SR電機三維有限元模型,分析得出了加強繞組剛度可以提高系統低階固有頻率的結論。通過比較實驗樣機的模態分析結果和運行實驗結果,證實了模態分析的有效性。仿真是計算SRD系統性能和預估電機振動的有效手段。本文在用MATLAB建立SRD系統的非線性動態仿真模型的基礎上,對SRD系統進行了穩態性能仿真、動態性能仿真以及負載突變仿真。接著利用穩態性能仿真,綜合考慮最大平均轉矩和效率這兩個優化目標,對SR電機的開關角進行了優化。最后結合由磁場有限元計算得到的徑向力數據表和穩態性能仿真,通過非線性插值得到徑向力的波形,然后對徑向力波形進行了頻譜分析,從而找到其主要的諧波分量。在電機設計階段避免徑向力波主要頻譜分量與SR電機定子的固有頻率接近而引起共振是降低SR電機噪聲的首要條件。合適的控制策略對于SR電機減振降噪是必不可少的。本文理論推導出三步換相法的時間參數取值公式。仿真證明本取值公式較原先文獻的結論在阻尼比較小時有更好的減振效果。針對SR電機運行中可能出現多個模態振形被激發出來的情況,利用數值優化法對三步換相法的時間參數進行了優化,使得減振效果整體最佳,所提的數值優化方法對兩步換相法同樣有效。在分析已有的直接瞬時轉矩控制的基礎上,針對其不足之處,提出了轉矩定頻控制取代內滯環的方法、開始重疊區域的轉矩控制方法、最佳開關角度二次優化法和時間參數優化的三步換相法等新的控制方案。動態仿真證明這些方案是切實有效的,達到了預期效果。最后在直接瞬時轉矩控制的每一次轉矩斬波都使用三步換相法,和在相關斷時刻根據實際電平靈活選用兩步或三步換相法以減小電機振動噪聲,并提出了考慮減振要求的開關頻率設計方法,最終形成了一套完整的降低振動噪聲和轉矩脈動控制策略。設計并研制了基于TMS320LF2407DSP的SR電機控制器。根據控制策略要求,選用了不對稱半橋功率電路拓撲結構;出于降低成本以及提高可靠性考慮,采用了MOSFET雙路并聯電路方案。在控制軟件中實現了本文所提出的降低SR電機振動噪聲和轉矩脈動控制策略。本文最后對實驗樣機進行了靜態轉矩的測量實驗,對比轉矩測量值與轉矩有限元計算值,驗證了磁場有限元計算的有效性。然后對實驗樣機進行了空載與負載、電流控制與轉矩控制、低速斬波與高速單波、是否采用兩步或三步換相法等一系列對比運行實驗,對比各種實驗結果,充分證實了本文所提出的降低振動噪聲和轉矩脈動控制策略的有效性。本課題組承擔了國家十·五863計劃電動汽車重大專項:“EQ6110HEV混合動力城市公交車用電機及其控制系統”(2001AA501421)。本文的研究是在該項目的資助下完成,并且本文關于電機本體結構形式、散熱筋結構和機械降噪措施等的結論已在該項目的60kW實驗樣機上得到證實。
上傳時間: 2013-07-05
上傳用戶:13081287919
在實際應用中,對永磁同步電機控制精度的要求越來越高。尤其是在機器人、航空航天、精密電子儀器等對電機性能要求較高的領域,系統的快速性、穩定性和魯棒性能好壞成為決定永磁同步電機性能優劣的重要指標。傳統電機系統通常采用PID控制,其本質上是一種線性控制,若被控對象具有非線性特性或有參變量發生變化,會使得線性常參數的PID控制器無法保持設計時的性能指標;在確定PID參數的過程中,參數整定值是具有一定局域性的優化值,并不是全局最優值。實際電機系統具有非線性、參數時變及建模過程復雜等特點,因此常規PID控制難以從根本上解決動態品質與穩態精度的矛盾。永磁同步電機是典型的多變量、參數時變的非線性控制對象。先進控制方法(諸如智能控制、優化算法等)研究應用的發展與深入,為控制復雜的永磁同步電機系統開辟了嶄新的途徑。由于先進控制方法擺脫了對控制對象模型的依賴,能夠在處理不精確性和不確定性問題中有可處理性、魯棒性,因而將其引入永磁同步電機控制已成為一個必然的趨勢。本文根據系統實現目標的不同,選取相應的先進控制方法,并與PID控制相結合,對永磁同步電機各方面性能進行有針對性的優化,最終使其控制精度得到顯著的提高。為達到對永磁同步電機進行性能優化的研究目的,文中首先探討了正弦波永磁同步電機和方波永磁同步電機的運行特點及控制機理,通過建立數學模型,對相應的控制系統進行了整體分析。針對永磁同步電機非線性、強耦合的特點,設計了矢量控制方式下的永磁同步電機閉環反饋控制系統。結合常規PID控制,將模糊控制、遺傳算法、神經網絡和人工免疫等多種先進控制方法應用于永磁同步電機調速系統、伺服系統和同步傳動系統的控制器設計中,以滿足不同控制系統對電機動、靜態性能的要求以及對調速性能或跟隨性能的側重。實驗結果表明,采用先進控制方法的永磁同步電機具有較好的動態性能、抗擾動能力以及較強的魯棒性能;與傳統PID控制相比,系統的控制精度得到了明顯提高。研究結果驗證了先進控制方法應用于永磁同步電機性能優化的有效性和實用性。
上傳時間: 2013-04-24
上傳用戶:shinesyh
數字存儲示波器在儀器儀表領域中占有重要的地位,應用范圍相當廣泛,所以對示波器的研制有重要的理論和實際意義。本文針對數字存儲示波器的設計進行了深入的研究,旨在研制出100MHz帶寬的數字存儲示波器。 從各個方面考慮,選用了DSP、FPGA和單片機的方案來設計整個系統。整個系統采用單通道的方式。信號進來首先經過前端的調理電路把信號電壓調整到AD的輸入電壓范圍之內,這里調理電路主要是由信號衰減電路和信號放大電路所組成。調理后的信號再送到AD變換電路里面完成信號的數字化。然后把AD轉換后的數據送到FPGA中,并把數據保存到FPGA中的FIFO中,FPGA中的電路主要包括有FIFO、觸發系統、峰值檢測、時基電路等。 DSP處理器主要是用來從FIFO中提取數據并進行相應的處理。因為DSP運算速度快,所以本文利用DSP來完成濾波和波形重建的時候的插值算法等功能。然后DSP利用其多緩沖串口把數據送到單片機,單片機把從DSP中發送過來的數據顯示到LCD上,同時利用單片機來管理鍵盤等功能。在軟件方面主要完成了程序的一些初始化驅動,比如說是FLASH驅動、LCD驅動、DSP串口初始化、FPGA初始化等相關工作。 由于本文采用FPGA,使得數字存儲示波器的設計比較靈活,容易升級。可以根據自己的需要進行相關的改進,例如對外圍電路做進一步地擴展。
上傳時間: 2013-04-24
上傳用戶:hw1688888