<nobr id="zkazv"></nobr>

      午夜精品一区二区三区成人,中文字幕av一区二区,亚洲AVAV天堂AV在线网阿V,肥臀浪妇太爽了快点再快点,国产网友愉拍精品视频手机,国产精品无码a∨麻豆,久久中文字幕一区二区,a级国产乱理伦片在线观看al
      首頁 新聞 工控搜 論壇 廠商論壇 產(chǎn)品 方案 廠商 人才 文摘 下載 展覽
      中華工控網(wǎng)首頁
        P L C | 變頻器與傳動 | 傳感器 | 現(xiàn)場檢測儀表 | 工控軟件 | 人機(jī)界面 | 運(yùn)動控制
        D C S | 工業(yè)以太網(wǎng) | 現(xiàn)場總線 | 顯示調(diào)節(jié)儀表 | 數(shù)據(jù)采集 | 數(shù)傳測控 | 工業(yè)安全
        電 源 | 嵌入式系統(tǒng) | PC based | 機(jī)柜箱體殼體 | 低壓電器 | 機(jī)器視覺
      運(yùn)動控制卡周期上報(bào)實(shí)時數(shù)據(jù)IO狀態(tài)之C++篇
      深圳市正運(yùn)動技術(shù)有限公司
      收藏本文     查看收藏

      本文導(dǎo)讀

      今天,正運(yùn)動小助手為大家分享一下運(yùn)動控制卡周期上報(bào),通過提前設(shè)置經(jīng)常讀取的參數(shù)主動周期上報(bào),可以減少PC主動輪詢的時間。此次介紹將以ECI2A18B為例,主要講解如何使用C++編程語言來進(jìn)行周期上報(bào)函數(shù)的編寫和功能的開發(fā)。

      01 ECI2A18B控制卡硬件介紹

      ECI2A18B經(jīng)濟(jì)型多軸運(yùn)動控制卡是一款脈沖型、模塊化的網(wǎng)絡(luò)型運(yùn)動控制卡。控制卡本身最多支持10軸,用以實(shí)現(xiàn)直線插補(bǔ)、任意圓弧插補(bǔ)、空間圓弧、螺旋插補(bǔ)、電子凸輪、電子齒輪、同步跟隨、虛擬軸、機(jī)械手指令等簡單的軌跡控制需求;采用優(yōu)化的網(wǎng)絡(luò)通訊協(xié)議可以實(shí)現(xiàn)實(shí)時的運(yùn)動控制。

      ECI2A18B.png

      ECI2A18B控制卡功能特點(diǎn):

      (1)本身支持6差分脈沖軸+4單端脈沖軸運(yùn)動控制,最多可擴(kuò)展至12軸運(yùn)動控制。

      (2)脈沖輸出模式:脈沖/方向或雙脈沖。

      (3)AXIS接口支持編碼器位置測量,可以配置為手輪輸入模式。

      (4)專用的手輪輸入接口。

      (5)每軸最大輸出脈沖頻率10MHz。

      (6)通過CAN總線,最多可擴(kuò)展到256個隔離輸入口和256個隔離輸出口。

      (7)軸正負(fù)限位信號口/原點(diǎn)信號口可以隨意配置到任何輸入口。

      (8)通用數(shù)字輸出口最大輸出電流可達(dá)500mA,可直接驅(qū)動部分電磁閥。

      (9)RS232接口、以太網(wǎng)接口、CAN接口。

      (10)支持最多達(dá)12軸直線插補(bǔ)、任意圓弧插補(bǔ)、螺旋插補(bǔ)。

      (11)支持點(diǎn)位運(yùn)動、電子凸輪、直線插補(bǔ)、圓弧插補(bǔ)、連續(xù)插補(bǔ)運(yùn)動、機(jī)械手指令。

      (12)支持Basic多文件多任務(wù)編程。

      (13)多種程序加密手段,保護(hù)客戶的知識產(chǎn)權(quán)。

      ECI2A18B接線圖.png

      接口定義:

      ECI2A18B接口圖.png

      ECI2000系列經(jīng)濟(jì)型多軸運(yùn)動控制卡可用于電子半導(dǎo)體設(shè)備(檢測類設(shè)備、組裝類設(shè)備、鎖附類設(shè)備、焊錫機(jī))、點(diǎn)膠設(shè)備和流水線等12軸以內(nèi)脈沖應(yīng)用場合。

      控制器支持windows、linux、Mac、Android、wince各種操作系統(tǒng)下的開發(fā),提供vc、c#、vb.net、labview等各種環(huán)境的dll庫,如下圖。上位機(jī)軟件編程參考《ZMotion PC函數(shù)庫編程手冊》。

      API.png

      02 為什么要進(jìn)行周期上報(bào),作用是什么?

      1、當(dāng)PC主動輪詢的次數(shù)過多時,可能會導(dǎo)致以下問題

      (1)消耗系統(tǒng)資源

      輪詢會使系統(tǒng)資源消耗增加,無論是任務(wù)輪詢或定時器輪詢,都會消耗系統(tǒng)的部分資源。在多用戶或者資源受限的環(huán)境里,這極有可能致使系統(tǒng)性能下滑。

      (2)浪費(fèi)CPU資源

      只要是輪詢都會造成CPU資源的浪費(fèi)。這是因?yàn)檩喸儠䲡谙到y(tǒng)內(nèi)不間斷的運(yùn)行,不論當(dāng)前設(shè)備的狀態(tài)是否有改變。實(shí)際上,設(shè)備的諸多狀態(tài)并不經(jīng)常改變,輪詢空轉(zhuǎn)只會無端消耗CPU的時間。

      (3)影響電源管理

      向PC報(bào)告外圍設(shè)備次數(shù)增多會使功耗提高,這可能縮短電池壽命或增加能源消耗,從而影響電源管理。

      (4)降低響應(yīng)速度

      如果輪詢頻率過高,系統(tǒng)響應(yīng)其他任務(wù)的速度或許會變慢。造成原因是由于CPU會不間斷的輪詢當(dāng)前狀態(tài),從而響應(yīng)處理其他計(jì)算或與用戶交互任務(wù)會減慢。

      (5)網(wǎng)絡(luò)負(fù)載增加

      若輪詢涉及網(wǎng)絡(luò)通信,輪詢請求過多就可能加大網(wǎng)絡(luò)負(fù)載,造成網(wǎng)絡(luò)擁堵或者延遲加劇。

      (6)服務(wù)器壓力增大

      在客戶端服務(wù)器架構(gòu)里,要是頻繁進(jìn)行輪詢請求,就可能給服務(wù)器帶來壓力。主要集中在在服務(wù)器資源不足時,也許會使服務(wù)質(zhì)量降低或者出現(xiàn)請求超時的情況。

      2、多種獲取方式對于程序運(yùn)行占比的區(qū)別:

      在探討單條獲取、多條獲取以及周期性獲取對程序運(yùn)行產(chǎn)生的影響時,我們需要考量這些操作的特性以及它們對程序整體性能可能存在的潛在影響。

      (1)單條獲取

      單條獲取即程序每次僅處理一個單獨(dú)的數(shù)據(jù)項(xiàng)。此方式簡單直接,然而處理大量數(shù)據(jù)時效率不高,因?yàn)槊看尾僮鞫紩猩舷挛那袚Q與資源管理方面的開銷。此時,程序運(yùn)行時間主要耗費(fèi)在數(shù)據(jù)處理上。

      (2)多條獲取

      多條獲取意味著同時處理多個數(shù)據(jù)項(xiàng)。在現(xiàn)代計(jì)算機(jī)系統(tǒng)里,常借助多線程或者并發(fā)技術(shù)達(dá)成這一操作,這樣做能大幅提升數(shù)據(jù)處理的吞吐量。不過,多線程雖有好處,卻可能被鎖爭、內(nèi)存競爭和上下文切換等問題所抵消。所以,多條獲取也許會縮短單個數(shù)據(jù)項(xiàng)處理的相對運(yùn)行時間,但總體運(yùn)行時間能否減少取決于多線程優(yōu)化的成效。

      (3)周期性獲取

      周期獲取即按照固定的時間間隔重復(fù)開展數(shù)據(jù)獲取操作。在諸如實(shí)時監(jiān)控系統(tǒng)、定時任務(wù)這類需要定期更新數(shù)據(jù)狀態(tài)的應(yīng)用場景中較為常見。其運(yùn)行時間占比由任務(wù)的周期性和每個周期內(nèi)實(shí)際工作量決定。若周期性任務(wù)負(fù)載較輕,則對程序整體運(yùn)行時間影響不大。

      應(yīng)用場合:

      在實(shí)際應(yīng)用里,具體的應(yīng)用場景、數(shù)據(jù)特性以及性能要求決定了選擇何種數(shù)據(jù)獲取策略。比如,若程序要對單個事件快速響應(yīng),單條獲取或許更合適;要是旨在使數(shù)據(jù)處理速度最大化,多條獲取可能更有利;而對于那些需要定期保持?jǐn)?shù)據(jù)新鮮度的應(yīng)用而言,周期性獲取則不可或缺。

      03 新建MFC項(xiàng)目并添加函數(shù)庫

      1、首先打開Visual Studio 2022,點(diǎn)擊創(chuàng)建新項(xiàng)目。

      步驟1.png

      2、選擇開發(fā)語言為“Visual C++”和程序類型“MFC應(yīng)用程序”。

      步驟2.png

      3、點(diǎn)擊下一步即可。

      步驟3.png

      4、選擇類型為“基于對話框”,下一步或者完成。

      步驟4.png

      5、前往正運(yùn)動官網(wǎng)下載PC函數(shù)庫,路徑如下(本文采用64位函數(shù)庫為例)。

      (1)進(jìn)入官網(wǎng),選擇支持與服務(wù),打開下載中心選擇庫文件,就能找到所有的PC函數(shù)庫。

      步驟5.png

      (2)點(diǎn)擊下載Windows C++(64位),可按需求另存為想要保存的路徑下。

      步驟6.png

      (3)函數(shù)庫另存為具體路徑如下。

      步驟7.png

      6、將廠商提供的C++庫文件和相關(guān)頭文件復(fù)制到新建的項(xiàng)目里。

      步驟8.png

      7、在項(xiàng)目中添加靜態(tài)庫和相關(guān)頭文件。

      (1)先右擊項(xiàng)目文件,接著依次選擇:“添加”→“現(xiàn)有項(xiàng)”。

      步驟9.png

      (2)在彈出的窗口中依次添加靜態(tài)庫和相關(guān)頭文件。

      步驟10.png

      8、聲明用到的頭文件和定義控制器連接句柄。

      步驟11.png

      至此項(xiàng)目新建完成,可進(jìn)行MFC項(xiàng)目開發(fā)。

      04 查看PC函數(shù)手冊,熟悉相關(guān)函數(shù)接口

      1、PC函數(shù)手冊也可以在正運(yùn)動官網(wǎng)“支持與服務(wù)”→“下載中心”→“編程手冊”中找到。

      下載方式.png

      2、鏈接控制器,獲取鏈接句柄。

      指令.png

      3、控制器自動上報(bào)相關(guān)指令。

      指令1.png

      4、讀取數(shù)字輸入輸出相關(guān)指令。

      指令2.png

      5、讀取Modbus寄存器相關(guān)指令。

      指令3.png

      05 MFC實(shí)現(xiàn)軸的周期上報(bào)

      1、例程界面如下。

      例程界面.png

      2、通過下拉控件選擇連接控制器/控制卡連接方式。

      BOOL CTest_CycleUpDlg::OnInitDialog()
      {
          CDialogEx::OnInitDialog();
         // 將“關(guān)于...”菜單項(xiàng)添加到系統(tǒng)菜單中。
         // IDM_ABOUTBOX 必須在系統(tǒng)命令范圍內(nèi)。
         ASSERT((IDM_ABOUTBOX & 0xFFF0) == IDM_ABOUTBOX);
         ASSERT(IDM_ABOUTBOX < 0xF000);
         CMenu* pSysMenu = GetSystemMenu(FALSE);
         if(pSysMenu != NULL)
         {
              BOOL bNameValid;
              CString strAboutMenu;
              bNameValid = strAboutMenu.LoadString(IDS_ABOUTBOX);
              ASSERT(bNameValid);
              if(!strAboutMenu.IsEmpty())
              {
                  pSysMenu->AppendMenu(MF_SEPARATOR);
                  pSysMenu->AppendMenu(MF_STRING, IDM_ABOUTBOX,strAboutMenu);
              }
          }
          // 設(shè)置此對話框的圖標(biāo)。當(dāng)應(yīng)用程序主窗口不是對話框時,框架將自動
          // 執(zhí)行此操作
          SetIcon(m_hIcon, TRUE);      // 設(shè)置大圖標(biāo)
          SetIcon(m_hIcon, FALSE);    // 設(shè)置小圖標(biāo)
          // TODO: 在此添加額外的初始化代碼
          GetDlgItem(IDC_COMBO2)->SetWindowTextA("網(wǎng)口\n");
          CComboBox   *connetList;
          connetList = (CComboBox *)GetDlgItem(IDC_COMBO2);
          connetList->AddString(_T("網(wǎng)口\n"));
          connetList->AddString(_T("LOCAL\n"));
          connetList->AddString(_T("PCI\n"));
          connetList->AddString(_T("串口\n"));
          return TRUE;  // 除非將焦點(diǎn)設(shè)置到控件,否則返回 TRUE
      }

      3、自動搜索IP。

      void CTest_CycleUpDlg::OnCbnDropdownCombo1()
      {
          char Buffer[256];
          CTest_CycleUpDlg* pDlg = (CTest_CycleUpDlg*)AfxGetMainWnd();
          GetDlgItemText(IDC_COMBO2,Buffer,256);
          Buffer[255] = '\0';
          if(0==strcmp(Buffer,"串口\n"))
          {
              Com_SCAN(pDlg);
          }
          else if(0==strcmp(Buffer,"網(wǎng)口\n"))
          {
              IP_SCAN(pDlg);
          }
          else if(0==strcmp(Buffer,"PCI\n"))
          {
              PCI_SCAN(pDlg);
          }
          else if(0==strcmp(Buffer,"LOCAL\n"))
          {
              CComboBox   *m_pEthList;
              m_pEthList = (CComboBox *)GetDlgItem(IDC_COMBO1);
              m_pEthList->ResetContent();
              m_pEthList->AddString(_T("LOCAL1\n"));
          }else
          {
              CString str;
              MessageBox("請選擇正確的鏈接類型!");
              return;
          }
          return;
      }

      1.png

      4、開啟上報(bào)。

      開啟上報(bào).png

      //開啟關(guān)閉上報(bào)
      void CTest_CycleUpDlg::OnBnClickedCheckStart()
      {
          if(NULL == G_ZmcHandle)
          {
              MessageBox(_T("控制器未連接"));
              return;
          }
          CString tempstr;
          UpdateData(true);
          int iret = 0;
          if(m_If_StartUp)        //開啟上報(bào)
          {
              GetCycleStr();
              iret = ZAux_CycleUpEnable(G_ZmcHandle,m_CyclePort,m_CycleTime,Str_CycleCmd);
              if(ERR_SUCCESS != iret)
              {
                  tempstr.Format("周期上報(bào)打開失敗!錯誤碼:%d 命令:%s\r\n",iret,Str_CycleCmd);
                  AppendTextOut(tempstr);
                  return;
              }
              tempstr.Format("周期上報(bào)開始!命令:%s\r\n",Str_CycleCmd);
              AppendTextOut(tempstr);
              ifirsttimeus = GetTickCount();
              SetTimer(1,1,NULL);
          }
          else
          {
              m_CycleCount = ZAux_CycleUpGetRecvTimes(G_ZmcHandle,m_CyclePort);
              iret = ZAux_CycleUpDisable(G_ZmcHandle,m_CyclePort);
              if(ERR_SUCCESS != iret)
              {
                  tempstr.Format("周期上報(bào)關(guān)閉失敗!錯誤碼:%d \r\n",iret);
                  AppendTextOut(tempstr);
                  return;
              }
              tempstr.Format("周期上報(bào)關(guān)閉-上報(bào)用時:%dms, 上報(bào)次數(shù):%d ,平均時間:%.3fms\r\n",(GetTickCount() - ifirsttimeus),m_CycleCount,(float)(GetTickCount() - ifirsttimeus)/m_CycleCount);
              AppendTextOut(tempstr);
              KillTimer(1);
          }

      5、選擇獲取參數(shù)類型和起始地址及數(shù)量。

      選擇獲取參數(shù)數(shù)據(jù)類型.png

      //獲取上報(bào)參數(shù)
      void CTest_CycleUpDlg::GetCycleStr()
      {
        memset(Str_CycleCmd,0,sizeof(Str_CycleCmd));
        CString TempString = "";
        int ilen = 0;
        if(m_CycleParaEnAble[0])
        {
          switch(m_CyclePara[0])
          {
            case 0:    //AXISSTATUS
                TempString.Format("AXISSTATUS(%d,%d),",m_CycleParaStart[0],m_CycleParaNum[0]);
                break;
            case 1:    //DPOS
                TempString.Format("DPOS(%d,%d),",m_CycleParaStart[0],m_CycleParaNum[0]);
                break;
            case 2:    //IDLE
                TempString.Format("IDLE(%d,%d),",m_CycleParaStart[0],m_CycleParaNum[0]);
                break;
            case 3:    //IN
                TempString.Format("IN(%d,%d),",m_CycleParaStart[0],m_CycleParaNum[0]);
                break;
            case 4:    //MODBUS_REG
                TempString.Format("MODBUS_REG(%d,%d),",m_CycleParaStart[0],m_CycleParaNum[0]);
                break;
            case 5:    //MPOS
                TempString.Format("MPOS(%d,%d),",m_CycleParaStart[0],m_CycleParaNum[0]);
                break;
            case 6:    //OP
                TempString.Format("OP(%d,%d),",m_CycleParaStart[0],m_CycleParaNum[0]);
                break;
            case 7:    //TABLE
                TempString.Format("TABLE(%d,%d),",m_CycleParaStart[0],m_CycleParaNum[0]);
                break;
            default:
               break;
          }
        }
        ilen += TempString.GetLength();
        memcpy(Str_CycleCmd,TempString.GetBuffer(0),TempString.GetLength()*sizeof(TCHAR));
        if(m_CycleParaEnAble[1])
        {
          switch(m_CyclePara[1])
          {
            case 0:    //AXISSTATUS
                TempString.Format("AXISSTATUS(%d,%d),",m_CycleParaStart[1],m_CycleParaNum[1]);
                break;
            case 1:    //DPOS
                TempString.Format("DPOS(%d,%d),",m_CycleParaStart[1],m_CycleParaNum[1]);
                break;
            case 2:    //IDLE
                TempString.Format("IDLE(%d,%d),",m_CycleParaStart[1],m_CycleParaNum[1]);
                break;
            case 3:    //IN
                TempString.Format("IN(%d,%d),",m_CycleParaStart[1],m_CycleParaNum[1]);
                break;
            case 4:    //MODBUS_REG
                TempString.Format("MODBUS_REG(%d,%d),",m_CycleParaStart[1],m_CycleParaNum[1]);
                break;
            case 5:    //MPOS
                TempString.Format("MPOS(%d,%d),",m_CycleParaStart[1],m_CycleParaNum[1]);
                break;
            case 6:    //OP
                TempString.Format("OP(%d,%d),",m_CycleParaStart[1],m_CycleParaNum[1]);
                break;
            case 7:    //TABLE
                TempString.Format("TABLE(%d,%d),",m_CycleParaStart[1],m_CycleParaNum[1]);
                break;
            default:
                break;
          }
        }
        if((ilen + TempString.GetLength()) < 1000)
        {
          memcpy(&Str_CycleCmd[ilen],TempString.GetBuffer(0),TempString.GetLength()*sizeof(TCHAR));
          ilen += TempString.GetLength();
        }
        if(m_CycleParaEnAble[2])
        {
          switch(m_CyclePara[2])
          {
            case 0:    //AXISSTATUS
                TempString.Format("AXISSTATUS(%d,%d)",m_CycleParaStart[2],m_CycleParaNum[2]);
                break;
            case 1:         //DPOS
                TempString.Format("DPOS(%d,%d)",m_CycleParaStart[2],m_CycleParaNum[2]);
                break;
            case 2:    //IDLE
                TempString.Format("IDLE(%d,%d)",m_CycleParaStart[2],m_CycleParaNum[2]);
                break;
            case 3:    //IN
                TempString.Format("IN(%d,%d)",m_CycleParaStart[2],m_CycleParaNum[2]);
                break;
            case 4:    //MODBUS_REG
                TempString.Format("MODBUS_REG(%d,%d)",m_CycleParaStart[2],m_CycleParaNum[2]);
                break;
            case 5:    //MPOS
                TempString.Format("MPOS(%d,%d)",m_CycleParaStart[2],m_CycleParaNum[2]);
                break;
            case 6:    //OP
                TempString.Format("OP(%d,%d)",m_CycleParaStart[2],m_CycleParaNum[2]);
                break;
            case 7:    //TABLE
                TempString.Format("TABLE(%d,%d)",m_CycleParaStart[2],m_CycleParaNum[2]);
                break;
            default:
               break;
          }
        }
        if((ilen + TempString.GetLength()) < 1000)
        {
            memcpy(&Str_CycleCmd[ilen],TempString.GetBuffer(0),TempString.GetLength()*sizeof(TCHAR));
            ilen += TempString.GetLength();
        }
      }

      6、獲取上報(bào)結(jié)果并輸出。

      獲取上報(bào)結(jié)果.png

      //獲取上報(bào)結(jié)果
      void CTest_CycleUpDlg::GetCycleInfo()
      {
          CString ParaString = "";
          CString TempString = "";
          CString ShowString = "";
          int iret = 0;
          int ival = 0;
          for(int inum=0;inum<3;inum++)
          {
              ShowString ="";
              if(m_CycleParaEnAble[inum])
              {
                  switch(m_CyclePara[inum])
                  {
                      case 0:        //AXISSTATUS
                          ParaString = "AXISSTATUS";
                          break;
                      case 1:        //DPOS
                              ParaString = "DPOS";
                          break;
                      case 2:        //IDLE
                              ParaString = "IDLE";
                          break;
                      case 3:        //IN
                            ParaString = "IN";
                          break;
                      case 4:        //MODBUS_REG
                          ParaString = "MODBUS_REG";
                          break;
                      case 5:        //MPOS
                            ParaString = "MPOS";
                          break;
                      case 6:        //OP
                            ParaString = "OP";
                          break;
                      case 7:        //TABLE
                            ParaString = "TABLE";
                          break;
                      default:
                          break;
                  }
                  ShowString += ParaString;
                  for(int i =0;i<m_CycleParaNum[inum];i++ )
                  {
                      iret = ZAux_CycleUpReadBuffInt(G_ZmcHandle,m_CyclePort,ParaString,m_CycleParaStart[inum] +i,&ival);        //獲取周期上報(bào)信息
                      if(ERR_SUCCESS != iret)
                      {
                          MessageBox(_T("周期上報(bào)讀取失敗!"));
                          return;
                      }
                      TempString.Format(" %d",ival);
                      ShowString +=TempString;
                  }
                  ShowString +="\r\n";
                  AppendTextOut(ShowString);
              }
          }
      }

      7、強(qiáng)制上報(bào)一次。

      //強(qiáng)制上報(bào)一次
      void CTest_CycleUpDlg::OnBnClickedBtnCycleup()
      {
          if(NULL == G_ZmcHandle)
          {
              MessageBox(_T("控制器未連接"));
              return;
          }
          UpdateData(true);
          int iret = ZAux_CycleUpForceOnce(G_ZmcHandle, m_CyclePort);
          if(ERR_SUCCESS != iret)
          {
              MessageBox(_T("周期上報(bào)刷新失敗!"));
              return;
          }
      }

      8、使用正運(yùn)動RTSys軟件輸出窗口和軸參數(shù)窗口方便直接的觀察到我們周期上報(bào)的數(shù)值。

      軸參數(shù).png

      9、上位機(jī)讀取周期上報(bào)的值并輸入在文本框。

      讀取周期上報(bào)值.png

      10、可以點(diǎn)擊下拉框選擇其他參數(shù)或更改起始地址及數(shù)量讀取不同區(qū)域數(shù)據(jù)。

      其他參數(shù).png

      11、周期上報(bào)獲取信息和單次獲取信息的比較。

      信息比較.png

      12、視頻教程。

      視頻教程可點(diǎn)擊→“如何通過周期上報(bào)實(shí)時獲取io狀態(tài)等信息之C++篇”查看。


       

      完整代碼獲取地址

      二維碼.png



       

      本次,正運(yùn)動運(yùn)動控制卡周期上報(bào)實(shí)時數(shù)據(jù)IO狀態(tài)之C++篇就分享到這里。

      更多精彩內(nèi)容請關(guān)注“正運(yùn)動小助手”公眾號,需要相關(guān)開發(fā)環(huán)境與例程代碼,請咨詢正運(yùn)動技術(shù)銷售工程師:400-089-8936。

      本文由正運(yùn)動技術(shù)原創(chuàng),歡迎大家轉(zhuǎn)載,共同學(xué)習(xí),一起提高中國智能制造水平。文章版權(quán)歸正運(yùn)動技術(shù)所有,如有轉(zhuǎn)載請注明文章來源。

      二維碼.png



       

      正運(yùn)動技術(shù)專注于運(yùn)動控制技術(shù)研究和通用運(yùn)動控制軟硬件產(chǎn)品的研發(fā),是國家級高新技術(shù)企業(yè)。正運(yùn)動技術(shù)匯集了來自華為、中興等公司的優(yōu)秀人才,在堅(jiān)持自主創(chuàng)新的同時,積極聯(lián)合各大高校協(xié)同運(yùn)動控制基礎(chǔ)技術(shù)的研究,是國內(nèi)工控領(lǐng)域發(fā)展最快的企業(yè)之一,也是國內(nèi)少有、完整掌握運(yùn)動控制核心技術(shù)和實(shí)時工控軟件平臺技術(shù)的企業(yè)。主要業(yè)務(wù)有:運(yùn)動控制卡_運(yùn)動控制器_EtherCAT運(yùn)動控制卡_EtherCAT控制器_運(yùn)動控制系統(tǒng)_視覺控制器__運(yùn)動控制PLC_運(yùn)動控制_機(jī)器人控制器_視覺定位_XPCIe/XPCI系列運(yùn)動控制卡等。


       

      狀 態(tài): 離線

      公司簡介
      產(chǎn)品目錄

      公司名稱: 深圳市正運(yùn)動技術(shù)有限公司
      聯(lián) 系 人: 戴德弟
      電  話: 0755-32976042
      傳  真: 0755-2606 6955
      地  址: 深圳市寶安區(qū)西鄉(xiāng)洲石路陽光工業(yè)園A1棟5樓
      郵  編: 518100
      主  頁:
       
      該廠商相關(guān)技術(shù)文摘:
      強(qiáng)實(shí)時運(yùn)動控制內(nèi)核MotionRT750(七):us級高速交互之Qt,為智能裝備提速
      【2025上海工博會】高速高精運(yùn)動控制卡應(yīng)用預(yù)覽(一)
      強(qiáng)實(shí)時運(yùn)動控制內(nèi)核MotionRT750(六):us級高速交互之C++,為智能裝備提速
      解鎖光未來!9月 CIOE 2025,正運(yùn)動邀您相聚深圳,共赴光電盛宴!
      機(jī)器視覺運(yùn)動控制一體機(jī)在線路板跟隨灌膠上的應(yīng)用
      強(qiáng)實(shí)時運(yùn)動控制內(nèi)核MotionRT750(五):EtherCAT總線冗余讓生產(chǎn)制造更可靠
      深圳·EelE智博會:智控賦能,驅(qū)動未來制造
      機(jī)器視覺運(yùn)動控制一體機(jī)在喇叭跟隨點(diǎn)膠上的應(yīng)用
      強(qiáng)實(shí)時運(yùn)動控制內(nèi)核MotionRT750(四):高速貼裝應(yīng)用中的拱形運(yùn)動
      聚焦深圳國際電子展 | 正運(yùn)動攜熱門產(chǎn)品和方案!等您來體驗(yàn)!
      超高速EtherCAT實(shí)時運(yùn)動控制卡在高速半導(dǎo)體固晶機(jī)上的應(yīng)用
      強(qiáng)實(shí)時運(yùn)動控制內(nèi)核MotionRT750(三):us級高速交互之C#,為智能裝備提速
      更多文摘...
      立即發(fā)送詢問信息在線聯(lián)系該技術(shù)文摘廠商:
      用戶名: 密碼: 免費(fèi)注冊為中華工控網(wǎng)會員
      請留下您的有效聯(lián)系方式,以方便我們及時與您聯(lián)絡(luò)

      關(guān)于我們 | 聯(lián)系我們 | 廣告服務(wù) | 本站動態(tài) | 友情鏈接 | 法律聲明 | 不良信息舉報(bào)
      工控網(wǎng)客服熱線:0755-86369299
      版權(quán)所有 中華工控網(wǎng) Copyright©2022 Gkong.com, All Rights Reserved

      主站蜘蛛池模板: AV最新高清无码专区| 亚洲日韩精品无码一区二区三区| 国产精品成人午夜福利| 97久久精品人人做人人爽| 国产粉嫩学生高清专区麻豆| 亚洲日本高清一区二区三区| 麻豆天美东精91厂制片| 亚洲国产精品久久久天堂麻豆宅男 | 2021av在线| 久久精品国产清自在天天线| 国产线播放免费人成视频播放| 亚洲人妻中文字幕一区| 国产在线国偷精品免费看| 亚洲国产av永久精品成人| 91精品久久一区二区三区| 国产色一区二区三区四区| 成在线人免费视频| 精品亚洲欧美高清不卡高清| 国产精品露脸视频观看| 国产极品美女高潮无套| 2020国产成人精品视频| 麻豆成人传媒一区二区| 92精品国产自产在线观看481页| 国产色无码专区在线观看| 亚洲国产精品综合久久2007| 国产对白老熟女正在播放| 久久综合久中文字幕青草| 亚洲欧美牲交| 亚洲精品国产中文字幕| 日本欧美一区二区三区在线播放| 国产精品区一二三四久久| 精品国产亚洲午夜精品av| 亚洲综合一区二区三区视频| 亚洲欧美日韩在线不卡| 中文字幕日韩有码国产| 久久精品青青大伊人av| 欧美牲交a欧美牲交aⅴ图片| 国产短视频精品一区二区| 深夜释放自己在线观看| 精品亚洲欧美高清不卡高清 | 欧美日韩精品一区二区视频|