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

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

   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號

 
主站蜘蛛池模板: 亚洲国产日韩在线观看 | 久久国产精品久久精品国产 | 午夜国产视频 | 国产成人在线免费 | 国产精品成人免费综合 | 天天操天天射天天色 | 日本精a在线观看 | 91综合久久婷婷久久 | 午夜影院在线观看视频 | 亚洲国产日韩精品 | 日本一级做人免费视频 | 国产露脸无套在线观看 | 精品久久久中文字幕二区 | 国产青草视频在线观看 | 91中文字幕在线观看 | 在线国产三级 | 亚洲国产精品日韩一线满 | 成人免费一区二区三区 | 久久影院视频 | 久久频 | 在线观看91香蕉国产免费 | 日韩免费观看一级毛片看看 | 久久99精品国产麻豆不卡 | 国产精品原创视频 | 天天干女人| 国产精品成人观看视频国产 | 午夜精品免费 | 天天干夜夜曰 | 久久久久久久久一级毛片 | 久久欧美| 一区二区三区视频在线播放 | 色播亚洲视频在线观看 | 国产国语一级毛片中文 | 91精品国产手机 | 青青草色视频 | 日本一级毛片视频在线看 | 亚洲国产精品日韩专区avtube | 亚洲综合情| 熟妇毛片 | 午夜免费啪视频观看网站 | 午夜精品久久久久久中宇 |