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

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

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

 
主站蜘蛛池模板: 男人在线网站 | 狠狠干中文字幕 | 日韩一级片免费观看 | 福利盒子手机看片 | 免费看高视频hh网站免费 | 九九精品视频免费 | 亚洲人成在线免费观看 | 亚州精品一区中文字幕乱码 | 91官网| 国产成人一区二区三区高清 | 国产天堂在线一区二区三区 | 国产成人精品cao在线 | 国产精品免费一区二区三区四区 | 一区二区在线不卡 | 欧美日韩在线成人 | 成年人免费观看网站 | 日本三级午夜理伦三级三 | www.国产福利 | 久久这里只有精品免费视频 | 日日爽爽 | 久久久久久在线 | 国产免费全部免费观看 | 在线久久| 色天天综合色天天看 | 性激烈欧美三级在线播放 | 成人在线精品 | 狼群影院2019在线 | 99久久精品免费看国产免费软件 | 丝袜三级 | 五月色婷婷综合激情免费视频 | 国产在线观看高清精品 | 免费特黄 | 欧美videofree高清杂交 | 日本免费黄色 | 99久久精品国产综合男同 | 97青草最新免费精品视频 | 欧美成人看片黄a免费 | 中文字幕欧美日韩一 | 中文字幕日韩一区二区三区不卡 | 欧美一区二区三区不卡免费 | 竹菊一区二区 |