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

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

   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號

 
主站蜘蛛池模板: 国产一级毛片免 | 91 在线| 国产九九免费视频网站 | 久草手机在线播放 | 天天操天天擦 | 亚洲国产成人久久精品影视 | 91精品国产91久久 | 久久夜色撩人精品国产 | 日韩中文字幕网 | 久久久噜久噜久久综合 | 纯欧美一级毛片免费 | 黄视频免费 | 亚洲综合区 | 久久精品视频6 | 草在线视频 | 97热久久| 日韩私人影院 | 中文字幕2022永久在线 | 亚洲天天在线日亚洲洲精 | 亚洲国产片在线观看 | japanese在线视频 | 国产成人久视频免费 | 国产三级日本三级韩国三级在线观看 | 亚洲激情影院 | 亚洲激情视频在线播放 | 中文字幕中文字字幕码一二区 | 91精品国产色综合久久不卡蜜 | 香蕉网站男人网站 | 日韩免费在线观看视频 | 久9青青cao精品视频在线 | 操女穴| 国产欧美日韩在线视频 | 久久精品国产清白在天天线 | 欧美国产日韩在线播放 | 亚洲国产成人在线视频 | 日本步兵在线 | 亚洲精品亚洲人成毛片不卡 | 热99精品在线 | 天天鲁天天玩天天爽天天 | 成人网中文字幕色 | 免费高清视频日本 |