亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? acim.c

?? 使用dsPIC30F 實現交流感應電機的矢量控制源代碼
?? C
?? 第 1 頁 / 共 2 頁
字號:
 /**********************************************************************
 *                                                                     *
 *                        Software License Agreement                   *
 *                                                                     *
 *    The software supplied herewith by Microchip Technology           *
 *    Incorporated (the "Company") for its dsPIC controller            *
 *    is intended and supplied to you, the Company's customer,         *
 *    for use solely and exclusively on Microchip dsPIC                *
 *    products. The software is owned by the Company and/or its        *
 *    supplier, and is protected under applicable copyright laws. All  *
 *    rights are reserved. Any use in violation of the foregoing       *
 *    restrictions may subject the user to criminal sanctions under    *
 *    applicable laws, as well as to civil liability for the breach of *
 *    the terms and conditions of this license.                        *
 *                                                                     *
 *    THIS SOFTWARE IS PROVIDED IN AN "AS IS" CONDITION.  NO           *
 *    WARRANTIES, WHETHER EXPRESS, IMPLIED OR STATUTORY, INCLUDING,    *
 *    BUT NOT LIMITED TO, IMPLIED WARRANTIES OF MERCHANTABILITY AND    *
 *    FITNESS FOR A PARTICULAR PURPOSE APPLY TO THIS SOFTWARE. THE     *
 *    COMPANY SHALL NOT, IN ANY CIRCUMSTANCES, BE LIABLE FOR SPECIAL,  *
 *    INCIDENTAL OR CONSEQUENTIAL DAMAGES, FOR ANY REASON WHATSOEVER.  *
 *                                                                     *
  **********************************************************************/

 /**********************************************************************
 *                                                                     * 
 *    Author: John Theys/Dave Ross                                     * 
 *                                                                     *
 *    Filename:       ACIM.c                                           *
 *    Date:           10/31/03                                          *
 *    File Version:   3.00                                             *
 *                                                                     *
 *    Tools used: MPLAB GL  -> 6.30.0.0                                *
 *                Compiler  -> 1.22.3.0                                *
 *                Assembler -> 1.22.3.0                                *
 *                Linker    -> 1.22.3.0                                *
 *                                                                     *
 *    Linker File:    p30f6010.gld                                     *
 *                                                                     *
 *                                                                     *
 ***********************************************************************
 *10/31/03  2.00    Released    Motor runs fine, still some loose ends
 *
 *12/19/03  2.01    Cleaned up structure, created UserParms.h for all 
 *                  user defines.
 *
 *02/12/04	3.00	-Removed unnecessary files from project.
 					-Changed iRPM to int to correct floating point calc
 * 					problems.
 *					-CalcVel() and velocity control loop only execute
 *					after number of loop periods specified by
 *					iIrpPerCalc.
 *					-Added iDispLoopCount variable to schedule 
 *					execution of display and button routines
 *					-trig.s file changed to use program space for 
 *					storage of sine data.
 *					-Added DiagnosticsOutput() function that uses 
 *					output compare channels to output control variable
 *					information.
 *					-Added TORQUE_MODE definition to bypass velocity
 *					control loop.
 *					-Turned off SATDW bit in curmodel.s file.  The
 *					automatic saturation feature prevents slip
 *					angle calculation from wrapping properly.
 *
 ************************************************************************
 *      Code Description
 *  
 *  This file demonstrates Vector Control of a 3 phase ACIM using the
 *  dsPIC30F.  SVM is used as the modulation strategy.
 **********************************************************************/

/************** GLOBAL DEFINITIONS ***********/

#define INITIALIZE
#include "Motor.h"
#include "Parms.h"
#include "Encoder.h"
#include "SVGen.h"
#include "ReadADC.h"
#include "MeasCurr.h"
#include "CurModel.h"
#include "FdWeak.h"
#include "Control.h"
#include "PI.h"
#include "Park.h"
#include "OpenLoop.h"
#include "Util.h"
#include "LCD.h"
#include "bin2dec.h"
#include "UserParms.h"

/************** END OF GLOBAL DEFINITIONS ***********/

unsigned short uWork;
short iCntsPerRev;
short iDeltaPos;

union   {
        struct
            {
            unsigned DoLoop:1;
            unsigned OpenLoop:1;
            unsigned RunMotor:1;
            unsigned Btn1Pressed:1;
            unsigned Btn2Pressed:1;
            unsigned Btn3Pressed:1;
            unsigned Btn4Pressed:1;
            unsigned ChangeMode:1;
            unsigned ChangeSpeed:1;
            unsigned    :7;
            }bit;
        WORD Word;
        } uGF;        // general flags

tPIParm     PIParmQ;
tPIParm     PIParmQref;
tPIParm     PIParmD;

tReadADCParm ReadADCParm;

int iRPM;
WORD iMaxLoopCnt;
WORD iLoopCnt;
WORD iDispLoopCnt;

/******************************************************/
void __attribute__((__interrupt__)) _ADCInterrupt(void);
void SetupBoard( void );
bool SetupParm(void);
void DoControl( void );
void Dis_RPM( BYTE bChrPosC, BYTE bChrPosR );
void DiagnosticsOutput(void);

/************* START OF MAIN FUNCTION ***************/

int main ( void )
{
    SetupPorts();
	InitLCD();
    
    while(1)
        {
        uGF.Word = 0;                   // clear flags
        
        // init Mode
        uGF.bit.OpenLoop = 1;           // start in openloop
		
		// init LEDs
        pinLED1 = 0;
        pinLED2 = !uGF.bit.OpenLoop;
        pinLED3 = 0;
        pinLED4 = 0;

        // init board
        SetupBoard();
        
        // init user specified parms and stop on error
        if( SetupParm() )
            {
            // Error
            uGF.bit.RunMotor=0;
            return;
            }
                
        // zero out i sums 
        PIParmD.qdSum = 0;
        PIParmQ.qdSum = 0;
        PIParmQref.qdSum = 0;
     
        iMaxLoopCnt = 0;
        
        Wrt_S_LCD("Vector Control  ", 0 , 0);
        Wrt_S_LCD("S4-Run/Stop     ", 0, 1);
                
        // Enable ADC interrupt and begin main loop timing
        IFS0bits.ADIF = 0; 
        IEC0bits.ADIE = 1;

        if(!uGF.bit.RunMotor)
            {	            
            // Initialize current offset compensation
            while(!pinButton1)                  //wait here until button 1 is pressed 
                {
                ClrWdt();               

                // Start offset accumulation    //and accumulate current offset while waiting
                MeasCompCurr();

                }
            while(pinButton1);                  //when button 1 is released 
            uGF.bit.RunMotor = 1;               //then start motor
            }

        // Run the motor
        uGF.bit.ChangeMode = 1;
        // Enable the driver IC on the motor control PCB
        pinPWMOutputEnable_ = 0;
        
		Wrt_S_LCD("RPM=            ", 0, 0);
		Wrt_S_LCD("S5-Cls. Lp S6-2x", 0, 1);
		
		//Run Motor loop
        while(1)
            {
            ClrWdt();
            
            // Write vector control variables to output compare channels
            // for observation on oscilloscope.
            #ifdef	DIAGNOSTICS
            DiagnosticsOutput();
            #endif
                          
            // The code that updates the LCD display and polls the buttons
            // executes every 50 msec.
            
            if(iDispLoopCnt >= dDispLoopCnt)
            	{
            	//Display RPM
            	Dis_RPM(5,0);
      			
      			// Button 1 starts or stops the motor
                if(pinButton1)  
	                {
                    if( !uGF.bit.Btn1Pressed )
                        uGF.bit.Btn1Pressed  = 1;
                    }
                else
                    {
                    if( uGF.bit.Btn1Pressed )
                        {
                        // Button just released
                        uGF.bit.Btn1Pressed  = 0;
                        // begin stop sequence
                        uGF.bit.RunMotor = 0;
                        pinPWMOutputEnable_ = 1;
                        break;
                        }
                    }
                    
				//while running button 2 will toggle open and closed loop
                if(pinButton2)                  
                    {
                    if( !uGF.bit.Btn2Pressed )
                        uGF.bit.Btn2Pressed  = 1;
                    }
                else
                    {
                    if( uGF.bit.Btn2Pressed )
                        {
                        // Button just released
                        uGF.bit.Btn2Pressed  = 0;
                        uGF.bit.ChangeMode = 1;
                        uGF.bit.OpenLoop = ! uGF.bit.OpenLoop;
                        pinLED2 = !uGF.bit.OpenLoop;
                        }
                    }
				
				//while running button 3 will double/half the speed or torque demand
                if(pinButton3)                      
                    {
                    if( !uGF.bit.Btn3Pressed )
                        uGF.bit.Btn3Pressed  = 1;
                        LATGbits.LATG0 = 0;
                    }
                else
                    {
                    if( uGF.bit.Btn3Pressed )
                        {
                        // Button just released
                        uGF.bit.Btn3Pressed  = 0;
                        uGF.bit.ChangeSpeed = !uGF.bit.ChangeSpeed;
                        pinLED3 = uGF.bit.ChangeSpeed;
                        LATGbits.LATG0 = 1; 
                        }
                    }
				
				// Button 4 does not do anything
                if(pinButton4)                              
                    {
                    if( !uGF.bit.Btn4Pressed )
                        uGF.bit.Btn4Pressed  = 1;
                    }
                else
                    {
                    if( uGF.bit.Btn4Pressed )
                        {
                        // Button just released
                        uGF.bit.Btn4Pressed  = 0;
                        //*** ADD CODE HERE FOR BUTTON 4 FUNCTION
                        }
                    }

                }  // end of display and button polling code              
                
            }   // End of Run Motor loop

        
        } // End of Main loop
        
    // should never get here
    while(1){}
}

//---------------------------------------------------------------------
// Executes one PI itteration for each of the three loops Id,Iq,Speed
void DoControl( void )
{
short i;

    // Assume ADC channel 0 has raw A/D value in signed fractional form from
    // speed pot (AN7).
    ReadSignedADC0( &ReadADCParm );

    // Set reference speed
    if(uGF.bit.ChangeSpeed)
        CtrlParm.qVelRef = ReadADCParm.qADValue/8;
    else
        CtrlParm.qVelRef = ReadADCParm.qADValue/16;

    if( uGF.bit.OpenLoop )
        {
        // OPENLOOP:  force rotating angle,Vd,Vq

        if( uGF.bit.ChangeMode )
            {
            // just changed to openloop
            uGF.bit.ChangeMode = 0;
            // synchronize angles
            OpenLoopParm.qAngFlux = CurModelParm.qAngFlux;

            // VqRef & VdRef not used
            CtrlParm.qVqRef = 0;
            CtrlParm.qVdRef = 0;
            }

        OpenLoopParm.qVelMech = CtrlParm.qVelRef;

        // calc rotational angle of rotor flux in 1.15 format

        // just for reference & sign needed by CorrectPhase
        CurModelParm.qVelMech = EncoderParm.qVelMech;
        CurModel();

        ParkParm.qVq = 0;

        if( OpenLoopParm.qVelMech >= 0 )
            i = OpenLoopParm.qVelMech;  
        else
            i = -OpenLoopParm.qVelMech;

        uWork = i <<2;

        if( uWork > 0x5a82 )
            uWork = 0x5a82;

        if( uWork < 0x1000 )
            uWork = 0x1000;

        ParkParm.qVd = uWork;

        OpenLoop();
        ParkParm.qAngle = OpenLoopParm.qAngFlux; 

        }
    else
        // Closed Loop Vector Control
        {

        if( uGF.bit.ChangeMode )
            {
            // just changed from openloop
            uGF.bit.ChangeMode = 0;

            // synchronize angles and prep qdImag
            CurModelParm.qAngFlux = OpenLoopParm.qAngFlux; 
            CurModelParm.qdImag = ParkParm.qId;
            }
			
        // Current model calculates angle
        CurModelParm.qVelMech = EncoderParm.qVelMech;
                
        CurModel();
				
        ParkParm.qAngle = CurModelParm.qAngFlux; 

        // Calculate qVdRef from field weakening
        FdWeakening();
               
        // Set reference speed

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
成人黄色大片在线观看| 欧美videofree性高清杂交| 7777精品伊人久久久大香线蕉的| 欧美xxxxxxxxx| 亚洲美女视频一区| 国产福利一区二区三区视频在线 | 欧美三级电影一区| 久久久不卡网国产精品二区 | 奇米影视一区二区三区小说| 97精品国产露脸对白| 2021国产精品久久精品| 亚洲成av人**亚洲成av**| 9l国产精品久久久久麻豆| 337p日本欧洲亚洲大胆精品| 亚洲影院免费观看| 91免费国产在线观看| 国产精品色哟哟| 狠狠色狠狠色综合| 日韩网站在线看片你懂的| 亚洲国产成人高清精品| 色综合婷婷久久| 中文字幕一区二区在线播放 | 欧美亚洲丝袜传媒另类| 国产欧美一区二区精品久导航 | 精品福利在线导航| 奇米影视在线99精品| 欧美高清精品3d| 午夜精品久久久久久久99水蜜桃| 一本到高清视频免费精品| 椎名由奈av一区二区三区| 东方aⅴ免费观看久久av| 国产日韩三级在线| 国产夫妻精品视频| 欧美国产国产综合| 99视频一区二区三区| 欧美国产综合一区二区| 成人ar影院免费观看视频| 国产欧美一区二区三区沐欲| 成人av在线资源| 亚洲丝袜精品丝袜在线| 色哟哟欧美精品| 亚洲午夜成aⅴ人片| 欧美一区二区三区精品| 国内久久精品视频| 国产欧美日韩在线视频| 91污在线观看| 亚洲国产欧美日韩另类综合 | 精品视频一区 二区 三区| 香蕉影视欧美成人| 精品卡一卡二卡三卡四在线| 国产在线精品免费| 最新欧美精品一区二区三区| 91成人国产精品| 免费在线观看一区| 中文在线免费一区三区高中清不卡| 成人av网站在线观看| 亚洲影院久久精品| 精品久久久久久最新网址| 99久久精品国产导航| 五月天网站亚洲| 久久久国产精品午夜一区ai换脸| hitomi一区二区三区精品| 性欧美大战久久久久久久久| 久久久国际精品| 欧美色视频一区| 国产精品一卡二卡在线观看| 亚洲日本va午夜在线影院| 欧美一区午夜精品| 成人激情免费视频| 琪琪一区二区三区| 亚洲免费观看高清完整版在线| 91精品婷婷国产综合久久性色| 国产黄色成人av| 午夜影院在线观看欧美| 中文字幕欧美日本乱码一线二线 | 91在线视频官网| 蜜桃精品视频在线| 亚洲欧洲制服丝袜| 欧美成人高清电影在线| 欧美亚洲国产一区二区三区va | 久久国产夜色精品鲁鲁99| 综合激情成人伊人| 久久夜色精品国产噜噜av| 欧美日韩免费观看一区二区三区| 国产精品亚洲专一区二区三区| 亚洲成人激情综合网| 国产精品久久久久久久蜜臀 | 欧美日韩国产乱码电影| 国产成人免费网站| 久久精品国产一区二区三区免费看| 亚洲欧美另类小说视频| 国产欧美日韩三区| 日韩久久精品一区| 欧美剧在线免费观看网站| 91在线高清观看| 成人午夜av影视| 国产一区视频网站| 美女尤物国产一区| 日韩精品一级二级| 午夜精品久久久久久久久| 亚洲一区视频在线| 一区二区三区在线观看欧美| 国产精品黄色在线观看| 国产精品天天看| 国产免费成人在线视频| 国产日韩精品一区二区三区在线| 日韩视频一区在线观看| 777xxx欧美| 欧美一区二区三区日韩视频| 7799精品视频| 日韩视频一区二区三区| 日韩精品中文字幕在线一区| 欧美一级日韩免费不卡| 欧美日韩三级在线| 欧美一级生活片| www久久久久| 欧美激情综合五月色丁香小说| 久久久精品综合| 国产精品美女久久久久久 | jvid福利写真一区二区三区| 成人激情免费视频| 色偷偷久久人人79超碰人人澡| 99免费精品视频| 日本精品视频一区二区| 欧美日本一区二区三区| 欧美一区二区三区四区五区| 日韩午夜精品电影| 精品盗摄一区二区三区| 国产亚洲一二三区| 国产精品国产三级国产三级人妇 | 欧美极品美女视频| 亚洲欧美在线视频观看| 亚洲一区在线看| 久久99久久99| 成人一区二区视频| 色嗨嗨av一区二区三区| 欧美日韩视频在线第一区| 欧美刺激脚交jootjob| 国产精品网站在线观看| 亚洲综合一二三区| 精品一区二区三区视频在线观看| 国产一区二区精品在线观看| 99视频精品全部免费在线| 欧美网站一区二区| 久久久久国产精品麻豆ai换脸| 综合中文字幕亚洲| 免费成人美女在线观看| 99久久免费视频.com| 51精品久久久久久久蜜臀| 久久久久9999亚洲精品| 亚洲午夜三级在线| 国产一区二三区| 欧美性极品少妇| 国产午夜一区二区三区| 午夜精品久久一牛影视| 成人一区二区三区视频 | 久久精品无码一区二区三区| 亚洲欧洲制服丝袜| 狠狠色狠狠色综合系列| 欧美色图片你懂的| 亚洲国产精品黑人久久久| 香蕉成人伊视频在线观看| 成人激情小说网站| 欧美大片免费久久精品三p| 亚洲免费观看高清完整版在线观看熊 | 色综合天天综合网天天狠天天| 欧美一级午夜免费电影| 国产精品国产精品国产专区不片| 爽爽淫人综合网网站| av资源站一区| 久久精品欧美一区二区三区麻豆| 日韩av在线发布| 欧美性猛交xxxxxx富婆| 1区2区3区精品视频| 国产激情一区二区三区四区| 欧美一区二区三区在| 亚洲精品大片www| 99久久久精品| 亚洲国产成人在线| 国产激情视频一区二区三区欧美 | 国产999精品久久| 日韩欧美的一区二区| 午夜精品在线视频一区| 色综合久久久久| 中文字幕一区二区日韩精品绯色| 国产在线播放一区| 精品国产一二三| 美洲天堂一区二卡三卡四卡视频 | 国产亚洲精品久| 精品一区二区综合| 欧美一区二区黄| 日韩av在线发布| 日韩视频123| 老司机一区二区| 日韩精品中文字幕在线不卡尤物| 亚洲午夜久久久久中文字幕久| 91在线无精精品入口| 亚洲精品欧美激情| 欧美制服丝袜第一页| 亚洲一区二区三区四区在线免费观看|