<acronym id="uwp0f"></acronym>

        <p id="uwp0f"><del id="uwp0f"></del></p>
        <p id="uwp0f"><strong id="uwp0f"><xmp id="uwp0f"></xmp></strong></p>

            技術文章

            首頁>技術常識>技術文章

            發現步進電機定位不準怎么辦

            時間:2017-04-09 19:19:24

            摘要:發現步進電機定位不準怎么辦

            一、問題現象及分析 問題經常通過以下編程表現出來:

            //X發出脈沖后,等待脈沖發完后再做其它事情
            d1000_start_t_move( 0, 6400, 3200, 6400, 0.1 );
            while( d1000_check_done(0) == 0 ); 老版本的庫函數如下:

            d1000_start_tr_move( 0, 6400, 3200, 6400, 0.1 );
            while( d1000_check_done(0) == 0 ); 或者:
            d1000_wait_done( 0 ); 此函數內部實際上包含類似于while( d1000_check_done(0) == 0 );的語句 以上可以看出,在檢測脈沖是否發完時,此段代碼的執行完全獨占了CPU分配給當前進程的所有時間, 因而也排擠了其它消息的響應,當然也就不能響應定時器讀取位置,或其它停止操作等. 二、解決方法 解決此問題關鍵是讓while循環時能檢測系統消息,以下分別介紹在VB,VC,CB下的解決措施: 注:以下編程全以DMC1000最新的驅動庫函為參考

            1.VB編程
            d1000_start_t_move 0, 6400, 3200, 6400, 0.1
            DO
            DoEvents
            LOOP WHILE (d1000_check_done(0) = 0)

            2.VC編程 在VC下編程關鍵是要解決類似于VB的DoEvnets函數

            void DoEvents()
            {
            static MSG msg;
            if( ::PeekMessage(&msg,NULL,0,0,PM_NOREMOVE) ){
            ::TranslateMessage( &msg );
            ::DispatchMessage( &msg );
            }

            上一篇:伺服電機配用減速機場合

            下一篇:什么是步進電機?

            小草在线观看免费