欧美一级爱爱视频-欧美一级爱操视频-欧美一级暴毛片-欧美一级爆毛片-欧美一级别-欧美一级成人

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

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

        希望對你有所幫助!

運動順序執行

編程技巧

問題描述

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

        如果編程時只是單獨使用While循環,執行后會發現上位機界面被卡死,按鍵不能響應。

        如以下用例程序,將出現上述問題:

        研控控制卡MCC800從位置dist_0運動到位置dist_1,程序如下:
 
        //設定運動速度參數
        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);
       //判斷當前軸狀態
       status= YK_check_done(mCardNo, Axis );                        
       //循環判斷當前軸運動狀態
       while (status ==0)
       {
       // "當前狀態:運動",繼續循環判斷;   
              status = YK_check_done(mCardNo,Axis );   
       }
       //啟動第二段運動軌跡
       rtn= YK_pmove(mCardNo, Axis, dist_1, 0);
       //指令執行完成


原因分析

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

3 解決方案

       軟件多線程可解決上述問題,但多線程較麻煩。可以使用軟件自動函數實現。

       1   VB編程

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

     2    VC編程

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

3    C# 編程

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

 4    Labview 編程

       Labview編程軟件中在循環框中添加延時時間。

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

中國智能化網(zgznh®)--引領工業智能化產業發展 共享智能化+優質平臺

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

粵ICP備12078626號

深公網安備案證字第 4403101901094 號 | 粵公網安備 44030702001206號

 
主站蜘蛛池模板: 亚洲综合网美国十次 | 中文字幕美日韩在线高清 | 97超级碰碰碰在线播放 | 国产全部视频在线播放 | 天堂在线视频网站 | 在线观看欧美大片 | 91久久精品国产91久久性色tv | 91精品国产高清 | 欧美一区二区三区大片 | 日韩成人免费视频 | 九九热精品视频在线 | 热热影院| 亚洲视频在线一区二区 | 国产精品免费一区二区三区 | yy6080午夜一级毛片超清 | 欧美成人精品动漫在线专区 | 国产综合另类小说色区色噜噜 | 国产精品高清免费网站 | 国产乱淫a∨片免费视频 | 曰曰啪天天拍视频在线 | 手机在线成人精品视频网 | 中文字幕天天躁日日躁狠狠躁97 | 精品久久亚洲 | 羞羞社区在线观看视频 | 国产精品久久久久久久久久日本 | 中文字幕久久久久 | 日本免费专区 | 国产亚洲精品美女2020久久 | 亚洲精品自产拍在线观看 | 国产欧美在线播放 | 欧美视频网站在线观看 | 亚洲国产成人影院播放 | 操比网址 | 天堂网一区二区 | 亚洲综合久久综合激情久久 | 精品欧美一区二区三区 | 精品999久久久久久中文字幕 | 欧美午夜在线播放 | 日韩国产精品99久久久久久 | 国产精品一二区 | 国产精品久久久久影院 |