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

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

   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號

 
主站蜘蛛池模板: 亚洲偷图色综合色就色 | 国产精品久久一区二区三区 | 欧美男男gayvidos | 欧美在线一级精品 | 一级毛片真人不卡免费播 | 国产欧美一区二区三区视频在线观看 | 黄 色 片 在 线 看 | 欧美成人四级剧情在线播放 | 牛牛视频在线 | 午夜湿影院多多影院 | 久久久久久久久久福利 | 天天干天天干天天天天天天爽 | 国产视频手机在线观看 | 久久亚洲最大成人网4438 | 欧美xxxx狂喷水喷水 | 四虎精品影院在线观看视频 | 2021国产精品成人免费视频 | 久久网综合 | 色综合天天综久久久噜噜噜久久〔 | 亚洲欧美日韩另类精品一区二区三区 | 国产精品1区2区3区在线播放 | 成人久久18免费软件 | 日韩综合色 | 成年网站免费视频拍拍拍 | 99久久精品视香蕉蕉er热资源 | 草草精品视频 | 国产成人福利夜色影视 | 日韩欧美一区二区三区中文精品 | 午夜激情在线视频 | 精品热久久 | 91最新在线播放 | 午夜在线观看网站 | 97超级碰碰碰 | 99热久久久这里只有精品免费 | 99精品国产高清自在线看超 | 中文字幕高清在线 | 国产区精品高清在线观看 | 日本做a视频 | 欧美性大交| 日日摸夜夜爽久久综合 | 男人边吃奶边摸下边的免费视频 |