在线观看www成人影院-在线观看www日本免费网站-在线观看www视频-在线观看操-欧美18在线-欧美1级

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

簡單易用的以太網IO控制卡:C#讀寫測試

正運動技術 ? 來源:正運動技術 ? 作者:正運動技術 ? 2023-02-13 09:37 ? 次閱讀

今天,正運動小助手給大家分享一下運動控制卡之ECIO系列IO卡的用法,C#語言進行ECI IO卡的開發以及測試多個IO讀寫的交互速度。

一、ECI0032/ECI0064 IO卡的硬件介紹

1.功能介紹

ECI0032/ECI0064等ECI0系列運動控制卡支持以太網RS232通訊接口電腦相連,接收電腦的指令運行,可以通過CAN總線連接各個擴展模塊,從而擴展輸入輸出點數。

poYBAGPpkQ2ATFNqAAM8j2MaMEQ771.pngECI0032 IO控制卡

pYYBAGPpkROAXfmgAALZ_SEqMic038.pngECI0064?IO控制卡

ECI0032/ECI0064等ECI0系列采用了優化的網絡通訊協議,可以實現實時的邏輯控制和IO狀態的監控。

ECI0032/ECI0064等ECI0系列IO卡的應用程序可以使用VC,VB,VS,C++,C#等軟件開發,程序運行時需要動態庫zmotion.dll,調試時可以將ZDevelop軟件同時連接控制器,從而方便調試、方便觀察。

poYBAGPpkRiANxaOAACdmwbQ808799.pngpYYBAGPpkR2AJVELAAJY-L-59ts049.pngECI0032系統架構圖

pYYBAGPpkSKAZzycAAJ704Cd52A846.pngECI0064系統架構圖

2.硬件接口

pYYBAGPpkSaAXjIVAAD8adkg-go471.png通用輸入口電路圖

poYBAGPpkSuAPWuJAACzbsJBewQ437.png通用輸入口接線參考圖

pYYBAGPpkS-AQi1DAAEQyaRWqGw029.png通用輸出口電路圖

pYYBAGPpkTWAQN0VAADnyUi6DaE381.png通用輸出口接線參考圖

3.控制器基本信息

poYBAGPpkTmACCi7AADjwgy_HoE767.png

二、C#語言進行ECI IO卡的開發

(一)新建WinForm項目并添加函數庫

1.在VS2015菜單“文件”→“新建”→“項目”,啟動創建項目向導。

poYBAGPpkT-ANEu0AADLY_D7w18175.png

2.選擇開發語言為“Visual C#”和.NET Framework 4以及Windows窗體應用程序。

pYYBAGPpkUOAfUuEAAGmfNRUuCE104.png

3.找到廠家提供的光盤資料里面的C#函數庫,路徑如下(64位庫為例)。

1)進入廠商提供的光盤資料找到“8.PC函數”文件夾,并點擊進入。

poYBAGPpkUiARRqmAACmpbr-gN8693.png

2)選擇“函數庫2.1”文件夾。

pYYBAGPpkUyAeJz2AABvY8Eg3Dc151.png

3)選擇“Windows平臺”文件夾。

pYYBAGPpkVSAFWI2AACQkjL0iSk800.png

4)根據需要選擇對應的函數庫,這里選擇64位庫。

pYYBAGPpkVmAJ1V3AABXzXEOPew653.png

5)解壓C#壓縮包,里面有C#對應的函數庫。

poYBAGPpkV6ASbTHAABXNEr3tU0801.png

6)函數庫具體路徑如下。

poYBAGPpkWOAU2kRAACaYcnAdEI475.png

4.將廠商提供的C#的庫文件以及相關文件復制到新建的項目中。

1)將zmcaux.cs文件復制到新建的項目里面中。

pYYBAGPpkWmAUFNzAAD80H8rBRE931.png

2)將zaux.dll和zmotion.dll文件放入bindebug文件夾中。

pYYBAGPpkW2AeSXSAADeT2cFJDU044.png

5.用vs打開新建的項目文件,在右邊的解決方案資源管理器中點擊顯示所有文件,然后鼠標右擊zmcaux.cs文件,點擊包括在項目中。

pYYBAGPpkXKAX9NtAARAb1NaKcw310.png

6.雙擊Form1.cs里面的Form1,出現代碼編輯界面,在文件開頭寫入using cszmcaux,并聲明控制器句柄g_handle。

pYYBAGPpkXiARMcMAAEv-ng48qU376.png

7.至此,項目新建完成,可進行C#項目開發。

(二)PC函數介紹

1.PC函數手冊可在光盤資料查看,具體路徑如下。

poYBAGPpkX6AX9-jAACvq0Opucg925.png

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

pYYBAGPpkcGAHChpAABHE1U5Z9c554.png

3.快速讀取多個輸入口當前狀態接口說明。

poYBAGPpkcaAK-0uAABDDniczdY980.png

4.快速讀取多個輸出口當前狀態接口說明。

pYYBAGPpkc6AIB4jAABM8BpmCrQ947.png

三、C#快速讀取多個IO狀態的測試例程

1.例程界面

poYBAGPpkdSAcuPzAAEm6r2uTRc517.png

2.相關代碼

①鏈接按鈕的事件處理函數中調用鏈接控制器的接口函數ZAux_OpenEth(),與控制器進行鏈接,鏈接成功后啟動定時器1監控控制器的IO狀態。

//鏈接控制器
private void LinkButton_Click(object sender, EventArgs e)
{
   zmcaux.ZAux_OpenEth(IP_comboBox.Text, out g_handle);
   if (g_handle != (IntPtr)0)
   {
       // MessageBox.Show("控制器鏈接成功!", "提示");
       timer1.Enabled = true;
       LinkButton.BackColor = Color.FromArgb(200, 255, 200);
   }
   else
   {
       MessageBox.Show("控制器鏈接失敗,請檢測IP地址!", "警告");
       LinkButton.BackColor = Color.FromArgb(255, 200, 200);
   }
}


②通過定時器1監控控制器的IO狀態。

//定時器更新IO信息
private void timer1_Tick(object sender, EventArgs e)
{
   int j, k;
   int TestNum = 50;
   //快速讀取輸入口狀態接口時間測試
   byte[] InState = new byte[4];
   DateTime beforeDT = System.DateTime.Now;
   for (int count = 0; count < TestNum; count++)
   {
       zmcaux.ZAux_GetModbusIn(g_handle, 0, 32, InState);
       for (int i = 0; i < 32; i++)
       {
           j = i / 8;
           k = i % 8; 
           if (((InState[j] >> k) & 1) == 1)
           {
               InStatus[i].BackColor = Color.FromArgb(200, 255, 200); 
           }
           else
           {
               InStatus[i].BackColor = Color.FromArgb(255, 200, 200);
           }
       }
   }
   DateTime afterDT = System.DateTime.Now;
   //計算beforeDT與afterDT的時間差
   TimeSpan ts = afterDT - beforeDT;
   InMoitoring.Text = "輸入口監控_刷新時間:  " + (ts.TotalMilliseconds * 1000 / TestNum).ToString() + " us    ";
   //快速讀取輸出口狀態接口時間測試
   byte[] OutState = new byte[4];
   DateTime beforeDTOP = System.DateTime.Now;
   for (int count = 0; count < TestNum; count++)
   { 
       zmcaux.ZAux_GetModbusOut(g_handle, 0, 32, OutState);
       for (int i = 0; i < 32; i++)
       {
           j = i / 8;
           k = i % 8;
           if (((OutState[j] >> k) & 1) == 1)
           {
               OutStatus[i].BackColor = Color.FromArgb(200, 255, 200);
           }
           else
           {
               OutStatus[i].BackColor = Color.FromArgb(255, 200, 200);
           }
       }
   }
   DateTime afterDTOP = System.DateTime.Now;
   //計算beforeDTOP與afterDTOP的時間差
   ts = afterDTOP - beforeDTOP;
   OutMoitoring.Text = "輸出口監控_刷新時間:  " + (ts.TotalMilliseconds * 1000 / TestNum).ToString() + " us    ";
}


③多個輸入口狀態讀取速度測試函數。

//多個輸入口狀態讀取交互速度測試
private void ReadInTest_Click(object sender, EventArgs e)
{
   int j, k;
   int testNum = Convert.ToInt32(TestNum.Text.ToString());
   int readInNum = Convert.ToInt32(ReadInNum.Text.ToString());
   //快速讀取輸入口狀態接口時間測試
   byte[] InState = new byte[4];
   DateTime beforeDT = System.DateTime.Now;
   for (int count = 0; count < testNum; count++)
   {
       zmcaux.ZAux_GetModbusIn(g_handle, 0, readInNum, InState);
       if (count % 100 == 0)
       {
           for (int i = 0; i < 32; i++)
           {
               j = i / 8;
               k = i % 8;
               if (((InState[j] >> k) & 1) == 1)
               {
                   InStatus[i].BackColor = Color.FromArgb(200, 255, 200);
               }
               else
               {
                   InStatus[i].BackColor = Color.FromArgb(255, 200, 200);
               }
           }
       }
   }
   DateTime afterDT = System.DateTime.Now;
   //計算beforeDT與afterDT的時間差
   TimeSpan ts = afterDT - beforeDT;
   //總耗時 ms
   ReadInTotTime.Text = ts.TotalMilliseconds.ToString("0.00");
   //平均耗時 us
   ReadInTime.Text = (ts.TotalMilliseconds * 1000 / testNum).ToString("0.00");
}


④多個輸出口狀態讀取速度測試函數。

//多個輸出口狀態讀取交互速度測試
private void ReadOutTest_Click(object sender, EventArgs e)
{
   int j, k;
   int testNum = Convert.ToInt32(TestNum.Text.ToString());
   int readOutNum = Convert.ToInt32(ReadOutNum.Text.ToString());
   //快速讀取輸入口狀態接口時間測試
   byte[] OutState = new byte[4];
   DateTime beforeDT = System.DateTime.Now;
   for (int count = 0; count < testNum; count++)
   {
       zmcaux.ZAux_GetModbusOut(g_handle, 0, readOutNum, OutState); 
       if (count % 100 == 0)
       {
           for (int i = 0; i < 32; i++)
           {
               j = i / 8;
               k = i % 8;
               if (((OutState[j] >> k) & 1) == 1)
               {
                   OutStatus[i].BackColor = Color.FromArgb(200, 255, 200);
               }
               else
               {
                   OutStatus[i].BackColor = Color.FromArgb(255, 200, 200);
               }
           }
       }
   }
   DateTime afterDT = System.DateTime.Now;
   //計算beforeDT與afterDT的時間差
   TimeSpan ts = afterDT - beforeDT;
   //總耗時 ms
   ReadOutTolTime.Text = ts.TotalMilliseconds.ToString("0.00");
   //平均耗時 us
   ReadOutTime.Text = (ts.TotalMilliseconds * 1000 / testNum).ToString("0.00");
}


⑤多個輸出口狀態設置速度測試函數。

//多個輸出口狀態設置交互速度測試
private void WriteOutTest_Click(object sender, EventArgs e)
{
   int testNum = Convert.ToInt32(TestNum.Text.ToString());
   int writeOutNum = Convert.ToInt32(WriteOutNum.Text.ToString());
   //快速讀取輸入口狀態接口時間測試
   byte[] OutState = new byte[4];
   DateTime beforeDT = System.DateTime.Now;
   for (int count = 0; count < testNum; count++)
   {
       zmcaux.ZAux_GetModbusOut(g_handle, 0, writeOutNum, OutState);
   }
   DateTime afterDT = System.DateTime.Now;
   //計算beforeDT與afterDT的時間差
   TimeSpan ts = afterDT - beforeDT;
   //總耗時 ms
   WriteOutTolTime.Text = ts.TotalMilliseconds.ToString("0.00");
   //平均耗時 us
   WriteOutTime.Text = (ts.TotalMilliseconds * 1000 / testNum).ToString("0.00");
}

3.多個IO狀態與上位機交互速度測試結果

(1)32個輸入輸出口讀寫1000次,交互速度測試結果。

poYBAGPpkyKAATA5AAE4GxSMT1Q476.png

(2)32個輸入輸出口讀寫1W次,交互速度測試結果。

poYBAGPpkyiAEUHWAAE9y6sUcFw841.png

(3)32個輸入輸出口讀寫10W次,交互速度測試結果。

poYBAGPpkzyAZTYxAAEzAshm7y4218.png

四、分析與結論

以上分別是對32個輸入口的讀速度、32個輸出口的讀速度以及32個輸出口的寫速度進行測試,從上面的運行效果圖的數據顯示來看,無論是輸入口還是輸出口,它們的交互速度都保持在200us左右。當測試次數從1000次增加到1W次,甚至10W次時,交互速度依舊保持在200us左右。測試效果十分穩定。測試數據如下表所示:

poYBAGPpk0iAdCgOAAASYnlWAtE478.png

本次,正運動技術簡單易用的以太網IO控制卡:C#讀寫測試,就分享到這里。

更多精彩內容請關注“正運動小助手”公眾號,需要相關開發環境與例程代碼,請咨詢正運動技術銷售工程師

本文由正運動技術原創,歡迎大家轉載,共同學習,一起提高中國智能制造水平。文章版權歸正運動技術所有,如有轉載請注明文章來源。

審核編輯黃宇

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • IO
    IO
    +關注

    關注

    0

    文章

    453

    瀏覽量

    39233
  • 測試
    +關注

    關注

    8

    文章

    5358

    瀏覽量

    126861
  • 以太網
    +關注

    關注

    40

    文章

    5452

    瀏覽量

    172188
收藏 人收藏

    評論

    相關推薦

    簡單易用以太網數據采集應用開發之C#

    C#語言以太網數據采集的開發。
    的頭像 發表于 05-17 14:25 ?813次閱讀
    <b class='flag-5'>簡單</b><b class='flag-5'>易用</b>的<b class='flag-5'>以太網</b>數據采集<b class='flag-5'>卡</b>應用開發之<b class='flag-5'>C#</b>

    PCIe EtherCAT實時運動控制卡PCIE464的IO與編碼器讀寫應用

    C#進行PCIe EtherCAT運動控制卡的項目開發和快速讀取多個IO和軸編碼器位置的例程。
    的頭像 發表于 07-17 14:47 ?819次閱讀
    PCIe EtherCAT實時運動<b class='flag-5'>控制卡</b>PCIE464的<b class='flag-5'>IO</b>與編碼器<b class='flag-5'>讀寫</b>應用

    EtherCAT運動控制卡之ECI2820如何使用

    軸直線插補、任意圓弧插補、空間圓弧、螺旋插補、電子凸輪、電子齒輪、同步跟隨、虛擬軸、機械手指令等;采用優化的網絡通訊協議可以實現實時的運動控制。  ECI2828系列運動運動控制卡支持以太網,232 通訊接口和電腦相連,接收電
    發表于 09-01 06:24

    C#教程之IC讀寫

    C#教程之IC讀寫,很好的C#資料,快來學習吧。
    發表于 04-21 09:52 ?26次下載

    C#教程之視頻采集讀寫

    C#教程之視頻采集讀寫,很好的C#資料,快來學習吧。
    發表于 04-21 09:52 ?27次下載

    以太網遠程IO模塊的選型

    以太網遠程IO模塊
    發表于 11-17 15:24 ?1097次閱讀
    <b class='flag-5'>以太網</b>遠程<b class='flag-5'>IO</b>模塊的選型

    正運動ECI0032 IO控制卡用戶手冊

    ECI0032 是正運動技術開發的一款網絡 IO 控制卡,采用優化的網絡通訊協議可以實現實時的 IO 控制。ECI0032 網絡 IO
    發表于 05-10 09:15 ?0次下載

    正運動ECI0064 IO控制卡用戶手冊

    ECI0064 是正運動技術開發的一款網絡 IO 控制卡,采用優化的網絡通訊協議可以實現實時的 IO 控制。ECI0064 網絡 IO
    發表于 05-10 15:38 ?0次下載

    正運動ECI0064C IO控制卡用戶手冊

    ECI0064C 是正運動技術開發的一款網絡 IO 控制卡,采用優化的網絡通訊協議可以實現實時的 IO 控制。ECI0064
    發表于 05-29 14:26 ?0次下載

    EtherCAT運動控制卡的硬件接線與C#的硬件外設讀寫與回零運動

    EtherCAT運動控制卡進行硬件接線與C#的硬件外設讀寫與回零運動
    的頭像 發表于 11-08 16:26 ?2453次閱讀
    EtherCAT運動<b class='flag-5'>控制卡</b>的硬件接線與<b class='flag-5'>C#</b>的硬件外設<b class='flag-5'>讀寫</b>與回零運動

    EtherCAT運動控制卡的硬件接線與C#的單軸運動控制

    EtherCAT運動控制卡實現C#的單軸運動控制的例程
    的頭像 發表于 10-22 16:07 ?2956次閱讀
    EtherCAT運動<b class='flag-5'>控制卡</b>的硬件接線與<b class='flag-5'>C#</b>的單軸運動<b class='flag-5'>控制</b>

    具有PMIC和汽車以太網的AM263x控制卡

    電子發燒友網站提供《具有PMIC和汽車以太網的AM263x控制卡.pdf》資料免費下載
    發表于 10-31 09:33 ?0次下載
    具有PMIC和汽車<b class='flag-5'>以太網</b>的AM263x<b class='flag-5'>控制卡</b>

    以太網IO控制卡C#實時讀寫時間測試

    C#語言進行ECI IO的項目開發和快速讀取多個IO狀態與上位機交互速度的測試結果
    的頭像 發表于 11-21 13:50 ?247次閱讀
    <b class='flag-5'>以太網</b><b class='flag-5'>IO</b><b class='flag-5'>控制卡</b>:<b class='flag-5'>C#</b>實時<b class='flag-5'>讀寫</b>時間<b class='flag-5'>測試</b>

    運動控制卡網絡通訊的心跳檢測之C#上位機編程

    使用C#上位機編程實現運動控制卡網絡通訊的心跳檢測功能
    的頭像 發表于 12-24 10:54 ?187次閱讀
    運動<b class='flag-5'>控制卡</b>網絡通訊的心跳檢測之<b class='flag-5'>C#</b>上位機編程
    主站蜘蛛池模板: 岛国片欧美一级毛片| 天天毛片| 国产香蕉精品视频在| 天天摸日日干| 天堂网www在线| 久久国产高清字幕中文 | 亚洲福利二区| 五月婷婷综合色| 日日噜噜夜夜狠狠tv视频免费| 欧美综合成人网| 六月婷婷七月丁香| 国产papa| 天堂va欧美ⅴa亚洲va一国产| 一区二区三区四区视频在线 | 在线视频资源| 天天干天天舔天天操| 国产美女久久| 中文字幕亚洲一区二区三区| 嘿嘿嘿视频在线观看| 最新在线网址| 亚洲伊人天堂| 一区二区三区四区在线视频| 四虎影像| 九色97| 免费观看a黄一级视频| 欧美一区二区在线观看视频| 久久极品| 一级片视频在线观看| 免费一级牲交毛片| 黄色国产网站| 曰曰摸天天摸人人看久久久| 日韩午夜精品| 高清毛片aaaaaaaaa片| 天天爱综合网| avbobo官网在线入口| 亚洲色图欧美色| 亚洲国产综合久久精品| 日韩免费毛片全部不收费| 狠狠色婷婷丁香综合久久韩国 | 噜噜噜天天躁狠狠躁夜夜精品| 又大又粗又爽黄毛片|