本文導讀
今天,正運動小助手給大家分享一下如何使用C#上位機編程實現運動控制卡網絡通訊的心跳檢測功能。
01 ECI2618B硬件介紹
ECI2618B經濟型多軸運動控制卡是一款脈沖型、模塊化的網絡型運動控制卡。控制卡本身最多支持6軸,可擴展至12軸的運動控制,用以實現直線插補、任意圓弧插補、空間圓弧、螺旋插補、電子凸輪、電子齒輪、同步跟隨、虛擬軸以及機械手指令等簡單的軌跡控制需求;采用優化的網絡通訊協議可以實現實時的運動控制。
ECI2618B控制卡功能特點:
(1)本身支持6差分脈沖軸+4單端脈沖軸運動控制,最多可擴展至12軸運動控制。
(2)脈沖輸出模式:脈沖/方向或雙脈沖。
(3)AXIS接口支持編碼器位置測量,可以配置為手輪輸入模式。
(4)專用的手輪輸入接口。
(5)每軸最大輸出脈沖頻率10MHz。
(6)通過CAN總線,最多可擴展到256個隔離輸入口和256個隔離輸出口。
(7)軸正負限位信號口/原點信號口可以隨意配置到任何輸入口。
(8)通用數字輸出口最大輸出電流可達500mA,可直接驅動部分電磁閥。
(9)支持點位運動、電子凸輪、直線插補、圓弧插補、連續插補運動、機械手指令。
(10)支持Basic多文件多任務編程。
(11)多種程序加密手段,保護客戶的知識產權。
ECI2000系列經濟型多軸運動控制卡可用于電子半導體設備(檢測類設備、組裝類設備、鎖附類設備、焊錫機)、點膠設備和流水線等12軸以內脈沖應用場合。
控制器支持windows、linux、Mac、Android、wince各種操作系統下的開發,提供vc、c#、vb.net、labview等各種環境的dll庫,如下圖。上位機軟件編程參考《ZMotion PC函數庫編程手冊》。
02 為什么要進行心跳檢測,作用是什么
1.實時監測:
通過檢測上位機與下位機的通信狀態,可以實時監測上位機是否正常連接和通訊。一旦發現上位機掉線,系統可以及時采取相應的應對措施,避免因為掉線導致通訊中斷或數據丟失。
2.系統穩定性:
上位機是控制系統的核心部分,掉線可能會導致整個系統失去控制。掉線檢測可以保障系統的穩定性,及時發現掉線情況并進行處理,保持系統正常運行。
3.數據完整性:
上位機通常負責與用戶界面交互、數據處理和決策,數據的完整性對系統運行至關重要。通過掉線檢測,系統可以及時發現掉線情況,保證數據的完整性和準確性。
4.故障診斷:
掉線檢測可以作為系統故障診斷的一種手段,通過監測上位機的狀態,可以幫助確定系統出現問題的具體原因,加快故障排查和修復的速度。
03 BASIC語言進行心跳檢測腳本語言編寫
(一)前情提要
心跳檢測的實現主要是兩個部分組成:
1.上位機周期修改變量;
2.控制器程序周期檢測變量并在掉線的時候執行一些急停操作。
在示例中,上位機程序會周期修改Heart_Status,控制器程序會周期掃描Heart_Status,并在檢測到變量的值異常的時候打開輸出口,模擬掉線急停的操作。
流程圖如下所示:
(二)創建變量
'**************************心跳相關變量定義************************ GlobalHeart_StarFlag'開始通訊標識變量 Global Heart_Status '通訊標識變量 GlobalHeart_Time'心跳超時時間 GlobalHeart_OutNum'急停OP數量 GlobalOutList_Address'急停OUTmodbus_long起始地址(Ps:3系列以下,自定義變量為24位浮點數,32位精度丟失,用modbus_long來代替) GLOBAL CONST cVer=CONTROL Heart_StarFlag =-1 Heart_Status = 0 Heart_OutNum = 10 OutList_Address =0 dim i,j
(三)開啟掃描
掃描流程:
等待上位機發送掃描開始指令;
根據控制器信號進入不同掃描程序(原理一樣只是實現略有不同);
將通訊標識變量置1;
等待一個超時時間;
判斷通訊標識;
如果為1表示上位機沒有進行通訊,掉線狀態。進行掉線保護操作;
為0表示進行通訊,正常狀態。開啟下一次掃描。
WHILE TRUE WAIT until Heart_StarFlag = 1 '等待PC軟件連接 DELAY Heart_Time 'PC連接之后,延時一個超時時間,避免上位 WHILE TRUE ifHeart_Status=0thenHeart_Status=1 '等待PC上修改通訊變量 ticks=Heart_Time'超時判斷處理,等待PC上修改Heart_Flag=0 WAIT until ticks < 0 or Heart_Status=0 if Heart_Status = 1 THEN RAPIDSTOP(2) WAIT IDLE OP(0,31,MODBUS_LONG(OutList_Address)) 'MODBUS_LONG存儲32位整型按位控制掉線急停IO Heart_StarFlag=-1 Heart_Status = 0 ELSE OP(0,31,0) Endif ????WEND WEND end
04 C#語言進行心跳檢測開發
(一)新建WinForm項目并添加函數庫
1.在VS2010菜單“文件”→“新建”→“項目”,啟動創建項目向導。
2.選擇開發語言為“Visual C#”和.NET Framework 4以及Windows窗體應用程序。
3.找到廠家提供的光盤資料里面的C#函數庫,路徑如下(32位庫為例)。
(1)進入廠商提供的光盤資料找到“04PC函數”文件夾,并點擊進入。
(2)選擇“01PC函數庫V2.1”文件夾。
(3)選擇“windows平臺”文件夾。
(4)根據需要選擇對應的函數庫,這里選擇32位庫。
(5)解壓C#壓縮包,里面有C#對應的函數庫。
(6)函數庫具體路徑如下。
4.將廠商提供的C#的庫文件以及相關文件復制到新建的項目中。
(1)將Zmcaux.cs文件復制到新建的項目里面中。
(2)將zauxdll.dll和zmotion.dll文件放入bindebug文件夾中。
5.用vs打開新建的項目文件,在右邊的解決方案資源管理器中點擊“顯示所有文件”,然后鼠標右擊Zmcaux.cs文件,點擊“包括在項目中”。
6.雙擊Form1.cs里面的Form1,出現代碼編輯界面,在文件開頭寫入using cszmcaux,并聲明控制器句柄g_handle。
(二)PC函數介紹
1.PC函數手冊可在光盤資料查看,具體路徑如下。
2.鏈接控制器,獲取鏈接句柄。
3.下載并運行控制器程序。
4.設置控制器程序參數。
05 C#例程建設之網絡通訊的心跳檢測
(一)前情提要
上位機軟件的主要功能:
1.下載并運行控制器程序;
2.設置掃描參數;
3.開啟和關閉心跳檢測;
4.設置急停IO。
界面如下圖所示:
(二)例程講解
1.連接控制器獲取句柄,上位機操作通過獲取到的句柄來操作控制器。
//連接控制器,控制器默認IP是192.168.0.11 ZauxErr = zmcaux.ZAux_OpenEth("192.168.0.11", out g_Handle); if (0 != ZauxErr) { AlmInifFile.Write(DateTime.Now.ToString("F"), "ZAux_OpenEth執行錯誤,錯誤碼:" + ZauxErr.ToString(), "錯誤碼信息"); }
2.下載心跳bas程序
函數介紹:
通過OpenFileDialog獲取控制器程序路徑,然后通過openFile判斷文件是否為空,最后通過ZAux_BasDown將控制器程序下載到控制器。
private void btnFile_Click(object sender, EventArgs e) { string m_strOpenFileName; FileStream openFile; OpenFileDialog fileOpen = new OpenFileDialog(); fileOpen.Filter = "Basic Files (*.bas)|*.bas|All Files (*.*)|*.*"; fileOpen.RestoreDirectory = true; fileOpen.FilterIndex = 1; if (fileOpen.ShowDialog() == DialogResult.OK) { m_strOpenFileName = fileOpen.FileName; try{ openFile = new FileStream(fileOpen.FileName, FileMode.Open, FileAccess.Read); openFile.Close(); } catch (Exception ex) { MessageBox.Show("Open Failed!"); return; } ret = zmcaux.ZAux_BasDown(g_handle, m_strOpenFileName, 0); controlReturnQue.Enqueue(ret); if (ret == 0) MessageBox.Show("心跳程序已成功加載"); } }
3.啟動心跳檢測
函數介紹:
首先通過SetTimeOutPara設置掃描參數,然后ZAux_Direct_SetUserVar設置Heart_StarFlag心跳標示變量。啟動控制器掃描程序,隨后開啟上位機掃描程序。
private void btnStart_Click(object sender, EventArgs e) { SetTimeOutPara(); ret = zmcaux.ZAux_Direct_SetUserVar(g_handle, "Heart_StarFlag", 1); controlReturnQue.Enqueue(ret); timeOut = 0; timer1.Enabled = true; timer1.Interval = int.Parse(tbxUpTimer.Text); tbState.Text = "已啟動"; } //上位機掃描程序 private void timer1_Tick(object sender, EventArgs e) { ret = zmcaux.ZAux_Direct_SetUserVar(g_handle, "Heart_Status", 0); controlReturnQue.Enqueue(ret); if (ret != 0) timeOut++; if (timeOut > 1) { tbState.Text = "未啟動"; timer1.Stop(); } }
4.RTSys的使用
(1)打開【RTSys】軟件,點擊【連接】輸入控制器的IP(默認IP:192.168.0.11)。
(2)打開輸出口界面,即可通過輸出口觀察是否掉線。
(三)教學視頻
教學視頻可點擊→“教學視頻:運動控制卡網絡通訊的心跳檢測之C#上位機編程”查看。
本次,正運動技術運動控制卡網絡通訊的心跳檢測之C#上位機編程,就分享到這里。
更多精彩內容請關注“正運動小助手”公眾號,需要相關開發環境與例程代碼,請咨詢正運動技術銷售工程師:400-089-8936。
本文由正運動技術原創,歡迎大家轉載,共同學習,一起提高中國智能制造水平。文章版權歸正運動技術所有,如有轉載請注明文章來源。
審核編輯 黃宇
-
運動控制
+關注
關注
4文章
587瀏覽量
32934 -
上位機
+關注
關注
27文章
945瀏覽量
54940 -
運動控制卡
+關注
關注
7文章
114瀏覽量
15497 -
運動控制系統
+關注
關注
0文章
92瀏覽量
14167 -
正運動技術
+關注
關注
0文章
104瀏覽量
442
發布評論請先 登錄
相關推薦
評論