· 本文導讀 ·
今天,正運動小助手給大家分享一下如何使用C#上位機編程實現 運動控製卡網絡通訊的心跳檢測功能。
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函數庫編程手冊》。
0 2 為什麼要進行心跳檢測,作用是什麼 ?
1. 實時監測:
tongguojianceshangweijiyuxiaweijidetongxinzhuangtai,keyishishijianceshangweijishifouzhengchanglianjiehetongxun。yidanfaxianshangweijidiaoxian,xitongkeyijishicaiquxiangyingdeyingduicuoshi,bimianyinweidiaoxiandaozhitongxunzhongduanhuoshujudiushi。
2. 係統穩定性:
上(shang)位(wei)機(ji)是(shi)控(kong)製(zhi)係(xi)統(tong)的(de)核(he)心(xin)部(bu)分(fen),掉(diao)線(xian)可(ke)能(neng)會(hui)導(dao)致(zhi)整(zheng)個(ge)係(xi)統(tong)失(shi)去(qu)控(kong)製(zhi)。掉(diao)線(xian)檢(jian)測(ce)可(ke)以(yi)保(bao)障(zhang)係(xi)統(tong)的(de)穩(wen)定(ding)性(xing),及(ji)時(shi)發(fa)現(xian)掉(diao)線(xian)情(qing)況(kuang)並(bing)進(jin)行(xing)處(chu)理(li),保(bao)持(chi)係(xi)統(tong)正(zheng)常(chang)運(yun)行(xing)。
3. 數據完整性:
上位機通常負責與用戶界麵交互、數據處理和決策,數據的完整性對係統運行至關重要。通過掉線檢測,係統可以及時發現掉線情況,保證數據的完整性和準確性。
4. 故障診斷:
掉(diao)線(xian)檢(jian)測(ce)可(ke)以(yi)作(zuo)為(wei)係(xi)統(tong)故(gu)障(zhang)診(zhen)斷(duan)的(de)一(yi)種(zhong)手(shou)段(duan),通(tong)過(guo)監(jian)測(ce)上(shang)位(wei)機(ji)的(de)狀(zhuang)態(tai),可(ke)以(yi)幫(bang)助(zhu)確(que)定(ding)係(xi)統(tong)出(chu)現(xian)問(wen)題(ti)的(de)具(ju)體(ti)原(yuan)因(yin),加(jia)快(kuai)故(gu)障(zhang)排(pai)查(zha)和(he)修(xiu)複(fu)的(de)速(su)度(du)。
03 BASIC語言進行心跳檢測腳本語言編寫
(一)前情提要
心跳檢測的實現主要是兩個部分組成:
1.上位機周期修改變量;
2.控製器程序周期檢測變量並在掉線的時候執行一些急停操作。
在示例中,上位機程序會周期修改Heart_Status,控製器程序會周期掃描Heart_Status,並在檢測到變量的值異常的時候打開輸出口,模擬掉線急停的操作。
流程圖如下所示:
(二)創建變量
'**************************心跳相關變量定義************************
Global Heart_StarFlag '開始通訊標識變量
Global Heart_Status '通訊標識變量
Global Heart_Time '心跳超時時間
Global Heart_OutNum '急停OP數量
Global OutList_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.等待上位機發送掃描開始指令;
2.根據控製器信號進入不同掃描程序(原理一樣隻是實現略有不同);
3.將通訊標識變量置1;
4.等待一個超時時間;
5.判斷通訊標識;
6.如果為1表示上位機沒有進行通訊,掉線狀態。進行掉線保護操作;
7.為0表示進行通訊,正常狀態。開啟下一次掃描。
WHILE TRUE
WAIT until Heart_StarFlag = 1 '等待PC軟件連接
DELAY Heart_Time 'PC連接之後,延時一個超時時間,避免上位
WHILE TRUE
if Heart_Status = 0 then Heart_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文件放入bin\debug文件夾中。
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#上位機編程,就分享到這裏。
更多精彩內容請關注“正運動小助手”公眾號,需要相關開發環境與例程代碼,請谘詢正運動技術銷售工程師:400-089-8936。
本ben文wen由you正zheng運yun動dong技ji術shu原yuan創chuang,歡huan迎ying大da家jia轉zhuan載zai,共gong同tong學xue習xi,一yi起qi提ti高gao中zhong國guo智zhi能neng製zhi造zao水shui平ping。文wen章zhang版ban權quan歸gui正zheng運yun動dong技ji術shu所suo有you,如ru有you轉zhuan載zai請qing注zhu明ming文wen章zhang來lai源yuan。
正運動技術專注於運動控製技術研究和通用運動控製軟硬件產品的研發,是國家級高新技術企業。正運動技術彙集了來自華為、中(zhong)興(xing)等(deng)公(gong)司(si)的(de)優(you)秀(xiu)人(ren)才(cai),在(zai)堅(jian)持(chi)自(zi)主(zhu)創(chuang)新(xin)的(de)同(tong)時(shi),積(ji)極(ji)聯(lian)合(he)各(ge)大(da)高(gao)校(xiao)協(xie)同(tong)運(yun)動(dong)控(kong)製(zhi)基(ji)礎(chu)技(ji)術(shu)的(de)研(yan)究(jiu),是(shi)國(guo)內(nei)工(gong)控(kong)領(ling)域(yu)發(fa)展(zhan)最(zui)快(kuai)的(de)企(qi)業(ye)之(zhi)一(yi),也(ye)是(shi)國(guo)內(nei)少(shao)有(you)、完整掌握運動控製核心技術和實時工控軟件平台技術的企業。主要業務有: 運動控製卡_運動控製器_EtherCAT運動控製卡_EtherCAT控製器_運動控製係統_視覺控製器__運動控製PLC_運動控製_機器人控製器_視覺定位_XPCIe/XPCI係列運動控製卡等。