<th id="5me8u"><progress id="5me8u"></progress></th>
<del id="5me8u"><form id="5me8u"></form></del>

          <label id="5me8u"><menuitem id="5me8u"></menuitem></label>

            研學堂|運動控制卡編程小技巧(運動順序執(zhí)行問題)

               2020-11-17 運動控制13448
            核心提示:在運動控制卡開發(fā)應用中,運動順序執(zhí)行是最常見的編程問題之一,關系到設備后續(xù)控制動作能否正常運行。 下面,我們分享研控運動控制卡的編程小技巧!
            微信圖片_20201117090516 
                   在運動控制卡開發(fā)應用中,運動順序執(zhí)行是最常見的編程問題之一,關系到設備后續(xù)控制動作能否正常運行。
            下面,我們分享研控運動控制卡的編程小技巧!

                    希望對你有所幫助!

            運動順序執(zhí)行

            編程技巧

            問題描述

                     我們使用上位機編程軟件對控制卡進行點位、插補等多段軌跡運動時,軌跡間需判斷上段軌跡運動停止狀(YK_check_done(CardNo,axis_no)),上段軌跡運動停止則立即啟動下段軌跡運動。

                    如果編程時只是單獨使用While循環(huán),執(zhí)行后會發(fā)現(xiàn)上位機界面被卡死,按鍵不能響應。

                    如以下用例程序,將出現(xiàn)上述問題:

                    研控控制卡MCC800從位置dist_0運動到位置dist_1,程序如下:
             
                    //設定運動速度參數(shù)
                    rtn =YK_set_profile(mCardNo,Axis,atof(mMinVel),atof(mMaxVel),atof(mAccTime),atof(mDecTime),atof(mEndVel));
                    //設定S段時間
                    rtn  =YK_set_s_profile(mCardNo,Axis,0,atof(mSmoothTime));                           
                    //啟動第一段運動軌跡
                    rtn= YK_pmove(mCardNo, Axis, dist_0, 0);
                   //判斷當前軸狀態(tài)
                   status= YK_check_done(mCardNo, Axis );                        
                   //循環(huán)判斷當前軸運動狀態(tài)
                   while (status ==0)
                   {
                   // "當前狀態(tài):運動",繼續(xù)循環(huán)判斷;   
                          status = YK_check_done(mCardNo,Axis );   
                   }
                   //啟動第二段運動軌跡
                   rtn= YK_pmove(mCardNo, Axis, dist_1, 0);
                   //指令執(zhí)行完成


            原因分析

                   上述程序,在啟動運動位置到dist_0過程中需不斷循環(huán)判斷運動是否停止,在條件不滿足即運動沒有停止時程序一直處于循環(huán)中,程序將會占用整個軟件的進程時間資源,即進入了死循環(huán),其它進程消息不能及時響應,導致上位機界面卡死。
            因此我們需要軟件在循環(huán)判斷運動狀態(tài)的同時還需響應其它進程消息。

            3 解決方案

                   軟件多線程可解決上述問題,但多線程較麻煩??梢允褂密浖詣雍瘮?shù)實現(xiàn)。

                   1   VB編程

                    VB編程軟件中有系統(tǒng)自動線程函數(shù)“DoEvents”。
                    //循環(huán)判斷當前軸運動狀態(tài)
                    while (status ==0)
                   {
                   // "當前狀態(tài):運動",繼續(xù)循環(huán)判斷;   
                          status = YK_check_done(mCardNo,Axis );  
                   // 使用VB編程中自帶線程函數(shù)“DoEvents”
                   DoEvents
                   }

                 2    VC編程

                   VC編程軟件中有類似線程查詢函數(shù)“PeekMessage”。
                   //循環(huán)定義函數(shù)名DoEvents
                   void CMCC800VCTestMotionDlg::DoEvents()
                   {      
                   static MSG msg;
                  if(::PeekMessage(&msg,NULL,0,0,PM_NOREMOVE) )
                   {
                    ::TranslateMessage( &msg );
                    ::DispatchMessage( &msg );
                   }      
                   }

            3    C# 編程

                  C#編程軟件中有系統(tǒng)自動線程函數(shù)“DoEvents”。
                  //循環(huán)判斷當前軸運動狀態(tài)
                  while (status == 0)
                   {
                   // "當前狀態(tài):運動",繼續(xù)循環(huán)判斷;   
                   status=MCC. YK_check_done(mCardNo, Axis );  
                   // 使用C#編程中自帶線程函數(shù)“DoEvents”
                   Application.DoEvents();
                   }

             4    Labview 編程

                   Labview編程軟件中在循環(huán)框中添加延時時間。

            微信圖片_20201117090520
             
            標簽: 運動控制
            分享到: 0
            收藏 0
             
            更多>同類方案
            免責申明
            推薦方案
            點擊排行
            最新資訊更多>
            最新供應更多>
            網(wǎng)站首頁  |  聯(lián)系方式  |  關于我們  |  問題解析  |  版權隱私  |  使用協(xié)議  |  網(wǎng)站地圖  |  排名推廣  |  廣告服務  |  積分換禮  |  網(wǎng)站留言  |  RSS訂閱  |  違規(guī)舉報  |  粵ICP備1207862號

            中國智能化網(wǎng)(zgznh®)--引領工業(yè)智能化產(chǎn)業(yè)發(fā)展 共享智能化+優(yōu)質(zhì)平臺

            版權所有:深圳市智控網(wǎng)絡有限公司 學術指導:深圳市智能化學會

            粵ICP備12078626號

            深公網(wǎng)安備案證字第 4403101901094 號 | 粵公網(wǎng)安備 44030702001206號

             

            <th id="5me8u"><progress id="5me8u"></progress></th>
            <del id="5me8u"><form id="5me8u"></form></del>

                    <label id="5me8u"><menuitem id="5me8u"></menuitem></label>
                      亚洲激情视频 | 91影院成人 | 亚洲艹逼网 | 久久久久久久久久免费视频 | 三级av无码在线 三级电影在线播放 |