時(shí)間:2024-04-22 13:29:12來(lái)源:深圳市正運(yùn)動(dòng)技術(shù)有限公司
ZMC408CE是正運(yùn)動(dòng)推出的一款多軸高性能EtherCAT總線運(yùn)動(dòng)控制器,具有EtherCAT、EtherNET、RS232、CAN和U盤(pán)等通訊接口,ZMC系列運(yùn)動(dòng)控制器可應(yīng)用于各種需要脫機(jī)或聯(lián)機(jī)運(yùn)行的場(chǎng)合。
ZMC408CE支持8軸運(yùn)動(dòng)控制,最多可擴(kuò)展至32軸,支持直線插補(bǔ)、任意圓弧插補(bǔ)、空間圓弧、螺旋插補(bǔ)、電子凸輪、電子齒輪、同步跟隨等功能。ZMC408CE支持PLC、Basic、HMI組態(tài)三種編程方式。PC上位機(jī)API編程支持C#、C++、LabVIEW、Matlab、Qt、Linux、VB.Net、Python等接口。
ZMC408CE支持8軸運(yùn)動(dòng)控制,可采用脈沖軸(帶編碼器反饋)或EtherCAT總線軸,通用IO包含24路輸入口和16路輸出口,部分IO為高速I(mǎi)O,模擬量AD/DA各兩路,EtherCAT最快125us的刷新周期。ZMC408CE支持8個(gè)通道的硬件比較輸出、硬件定時(shí)器、運(yùn)動(dòng)中精準(zhǔn)輸出,還支持8通道PWM輸出,對(duì)應(yīng)的輸出口為OUT0-7,支持8個(gè)通道同時(shí)觸發(fā)硬件比較輸出。
ZMC408CE視頻介紹
01、MATLAB進(jìn)行運(yùn)動(dòng)控制開(kāi)發(fā)
1.在MATLAB R2019a菜單“主頁(yè)”→“新建”→“工程”→“空白工程”,啟動(dòng)創(chuàng)建項(xiàng)目向?qū)А?/p>
2.新建GUI。命令行輸入guide,新建GUI。
3. 找到廠家提供的光盤(pán)資料里面的MATLAB函數(shù)庫(kù),路徑如下(64位庫(kù)為例)。
A.進(jìn)入廠商提供的光盤(pán)資料找到“8.PC函數(shù)”文件夾,并點(diǎn)擊進(jìn)入。
B.選擇“函數(shù)庫(kù)2.1”文件夾。
C.選擇“Windows平臺(tái)”文件夾。
D.根據(jù)需要選擇對(duì)應(yīng)的函數(shù)庫(kù)這里選擇64位庫(kù)。
E.解壓MATLAB壓縮包,里面有對(duì)應(yīng)的函數(shù)庫(kù)。
4.將廠商提供的庫(kù)文件以及相關(guān)文件復(fù)制到MATLAB工作目錄下。(1)“zauxdll.dll”、“zmotion.dll”、“zauxdll2.h”、“zmotion.h”四個(gè)文件拷貝到matlab工作目錄下。如:C:\...\....\R2019a\bin
(2)將“zauxdll2.h”、“zmotion.h”兩個(gè)文件拷貝到include目錄。
如:C:\...\....\R2019a\extern\include
(3)拷貝“zauxdll.dll”文件到新建的工程目錄中。
5.配置MATLAB開(kāi)發(fā)環(huán)境。
(1)在matlab命令行輸入“mbuild -setup”以及“mex -setup”,選擇安裝的c語(yǔ)言編譯器。
(2)使用loadlibrary('zauxdll.dll','zauxdll2.h');加載函數(shù)庫(kù)。
(3)libfunctions zauxdll -full;或 libfunctionsview zauxdll;顯示共享庫(kù)函數(shù)簽名。
6.使用“calllib”調(diào)用zauxdll函數(shù)庫(kù)中函數(shù),詳細(xì)可查看MATLAB幫助。有關(guān)參數(shù)傳遞,在calllib幫助→傳遞參數(shù)。
至此函數(shù)庫(kù)添加完成,可進(jìn)行MATLAB項(xiàng)目開(kāi)發(fā)。
02、相關(guān)PC函數(shù)介紹
1.PC函數(shù)手冊(cè)在光盤(pán)資料查看,具體路徑如下:“光盤(pán)資料\8.PC函數(shù)\函數(shù)庫(kù)2.1\ZMotion函數(shù)庫(kù)編程手冊(cè) V2.1.pdf”。
2.PC編程,一般如果網(wǎng)口對(duì)控制器和工控機(jī)進(jìn)行鏈接。網(wǎng)口鏈接函數(shù)接口是ZAux_OpenEth();如果鏈接成功,該接口會(huì)返回一個(gè)鏈接句柄。通過(guò)操作這個(gè)鏈接句柄可以實(shí)現(xiàn)對(duì)控制器的控制。
(1)ZAux_OpenEth()接口說(shuō)明
(2)項(xiàng)目應(yīng)用截圖
(3)命令行應(yīng)用截圖
3、使用單軸運(yùn)動(dòng)相關(guān)的指令操作鏈接句柄“g_handle”,對(duì)控制器進(jìn)行單軸運(yùn)動(dòng)控制,單軸運(yùn)動(dòng)相關(guān)的指令如下。
(1)單軸相對(duì)運(yùn)動(dòng)指令
(2)單軸絕對(duì)運(yùn)動(dòng)指令
(3)單軸持續(xù)運(yùn)動(dòng)
(4)單軸停止運(yùn)動(dòng)
03、MATLAB進(jìn)行單軸運(yùn)動(dòng)開(kāi)發(fā)
1. 單軸運(yùn)動(dòng)控制人機(jī)交互界面如下。
2. 例程簡(jiǎn)易流程圖。
3. 在MATLAB的GUI界面中新建控件進(jìn)行程序編寫(xiě)。
A.在工具欄新建“普通按鈕”和可編輯文本,并雙擊修改屬性。
B.控件右鍵,查看回調(diào),“CallBack”創(chuàng)建回調(diào)響應(yīng)函數(shù),此時(shí)自動(dòng)新建.m格式文件,在這里進(jìn)行界面響應(yīng)程序編寫(xiě)。
C.將自動(dòng)創(chuàng)建的文件添加到項(xiàng)目中。
D.在“XXX_OpeningFcn”函數(shù)中加載函數(shù)庫(kù),并定義全局變量。
·
% --- Executes just before untitled is made visible.function untitled_OpeningFcn(hObject, eventdata, handles, varargin)% This function has no output args, see OutputFcn.% hObject handle to figure% eventdata reserved - to be defined in a future version of MATLAB% handles structure with handles and user data (see GUIDATA)% varargin command line arguments to untitled (see VARARGIN)% Choose default command line output for untitledhandles.output = hObject;% Update handles structureguidata(hObject, handles); if not(libisloaded('zauxdll'))%加載函數(shù)庫(kù) loadlibrary('zauxdll.dll','zauxdll2.h'); end disp("加載函數(shù)庫(kù)");%命令行打印 global g_handleptr;%定義連接句柄 global g_nAxis;%定義軸號(hào) global g_Dir;%定義運(yùn)動(dòng)方向 global g_Moveway;%定義運(yùn)動(dòng)方式 g_handleptr= libpointer('voidPtrPtr'); g_Dir=1; g_Moveway=0;g_nAxis=0;
4.編寫(xiě)“連接控制器”按鈕程序,調(diào)用接口“ZAux_OpenEth()”,使點(diǎn)擊按鈕時(shí)鏈接控制器。
·
% --- Executes on button press in pushbutton_openZmc.function pushbutton_openZmc_Callback(hObject, eventdata, handles)% hObject handle to pushbutton_openZmc (see GCBO)% eventdata reserved - to be defined in a future version of MATLAB% handles structure with handles and user data (see GUIDATA) handles.timer = timer('Period',0.05,'ExecutionMode','FixedRate',... 'TimerFcn',{@UpdateSliderData, handles});%定時(shí)器 global g_handleptr;%定義連接句柄 ip =get(handles.edit_Ip,'String'); disp("連接控制器:"+ip); zmc_ip = char(ip); [res,~] = calllib('zauxdll','ZAux_OpenEth',zmc_ip ,g_handleptr); commandCheckHandler("ZAux_OpenEth",res); if res==0 fprintf('連接控制器成功\n'); set(gcf,'NumberTitle', 'off', 'Name', '連接成功'); %msgbox('Connection successful'); start( handles.timer );%啟動(dòng)定時(shí)器 else fprintf('連接控制器失敗,錯(cuò)誤碼%d\n',res); set(gcf,'NumberTitle', 'off', 'Name', '連接失敗'); msgbox('Connection failure,Please check the IP!');%連接控制器失敗,請(qǐng)檢查IP地址 return;end
5.主界面右鍵添加銷(xiāo)毀函數(shù),調(diào)用“ZAux_Close()”關(guān)閉連接。
·
% --- Executes during object deletion, before destroying properties.關(guān)閉連接function figure1_DeleteFcn(hObject, eventdata, handles) global g_handleptr;%定義連接句柄 calllib('zauxdll','ZAux_Close',g_handleptr);disp("關(guān)閉與控制器連接");%打印
6.通過(guò)定時(shí)器更新控制器軸狀態(tài):當(dāng)前坐標(biāo)、當(dāng)前速度等。·
·
function UpdateSliderData(obj, events, handles) global g_handleptr;%定義連接句柄 global g_nAxis;%定義軸號(hào) [res,~,runstate]=calllib('zauxdll','ZAux_Direct_GetIfIdle',g_handleptr,g_nAxis, 0); commandCheckHandler("ZAux_Direct_GetIfIdle",res); [res,~,curpos]=calllib('zauxdll','ZAux_Direct_GetDpos',g_handleptr, g_nAxis, 0); commandCheckHandler("ZAux_Direct_GetDpos",res); [res,~,curspeed]=calllib('zauxdll','ZAux_Direct_GetVpSpeed',g_handleptr, g_nAxis, 0); commandCheckHandler("ZAux_Direct_GetVpSpeed",res); str_curpos=num2str(curpos); str_curspeed=num2str(curspeed); if (runstate==0) set(handles.edit_runstate,'String',"當(dāng)前運(yùn)動(dòng)狀態(tài):運(yùn)行"); else set(handles.edit_runstate,'String',"當(dāng)前運(yùn)動(dòng)狀態(tài):停止"); end set(handles.edit_curpos,'String',"當(dāng)前軸坐標(biāo):" +str_curpos);set(handles.edit_curspeed,'String',"當(dāng)前軸速度:" +str_curspeed);
7.通過(guò)啟動(dòng)按鈕的事件處理函數(shù)來(lái)設(shè)置軸參數(shù)并開(kāi)始運(yùn)動(dòng)。
·
% --- Executes on button press in pushbutton_runmove.運(yùn)動(dòng)function pushbutton_runmove_Callback(hObject, eventdata, handles)% hObject handle to pushbutton_runmove (see GCBO)% eventdata reserved - to be defined in a future version of MATLAB% handles structure with handles and user data (see GUIDATA) global g_handleptr;%定義連接句柄 global g_nAxis;%定義軸號(hào) global g_Dir;%定義運(yùn)動(dòng)方向 global g_Moveway;%定義運(yùn)動(dòng)方式 calllib('zauxdll','ZAux_Direct_SetAtype',g_handleptr, g_nAxis,0); calllib('zauxdll','ZAux_Direct_SetUnits',g_handleptr,g_nAxis,str2num(get(handles.edit_units,'String'))); calllib('zauxdll','ZAux_Direct_SetLspeed',g_handleptr, g_nAxis, str2num(get(handles.edit_lspeed,'String'))); calllib('zauxdll','ZAux_Direct_SetSpeed',g_handleptr, g_nAxis, str2num(get(handles.edit_speed,'String'))); calllib('zauxdll','ZAux_Direct_SetAccel',g_handleptr, g_nAxis, str2num(get(handles.edit_acc,'String'))); calllib('zauxdll','ZAux_Direct_SetDecel',g_handleptr, g_nAxis, str2num(get(handles.edit_dec,'String'))); calllib('zauxdll','ZAux_Direct_SetSramp',g_handleptr, g_nAxis, str2num(get(handles.edit_sramp,'String'))); if (g_Moveway) %//連續(xù)運(yùn)動(dòng) calllib('zauxdll','ZAux_Direct_Single_Vmove',g_handleptr, g_nAxis,g_Dir); else % //寸動(dòng) calllib('zauxdll','ZAux_Direct_Single_Move',g_handleptr, g_nAxis, g_Dir * str2num(get(handles.edit_step,'String'))); end
8.通過(guò)停止按鈕的事件處理函數(shù)來(lái)停止插補(bǔ)運(yùn)動(dòng)。
·
% --- Executes on button press in pushbutton_stopMove.單軸停止function pushbutton_stopMove_Callback(hObject, eventdata, handles) global g_handleptr;%定義連接句柄 global g_nAxis; calllib('zauxdll','ZAux_Direct_Single_Cancel',g_handleptr,g_nAxis,2);
04、調(diào)試與監(jiān)控
編譯運(yùn)行例程,同時(shí)連接ZDevelop軟件進(jìn)行調(diào)試,對(duì)運(yùn)動(dòng)控制的軸參數(shù)和運(yùn)動(dòng)情況進(jìn)行監(jiān)控。
1.連接ZDevelop軟件,并點(diǎn)擊“視圖”→“示波器”打開(kāi)示波器對(duì)軸運(yùn)動(dòng)情況進(jìn)行監(jiān)控。
2.運(yùn)行上位機(jī)軟件進(jìn)行調(diào)試監(jiān)控。
本次,正運(yùn)動(dòng)技術(shù)EtherCAT運(yùn)動(dòng)控制器的MATLAB開(kāi)發(fā),就分享到這里。
更多精彩內(nèi)容請(qǐng)關(guān)注“正運(yùn)動(dòng)小助手”公眾號(hào),需要相關(guān)開(kāi)發(fā)環(huán)境與例程代碼,請(qǐng)咨詢(xún)正運(yùn)動(dòng)技術(shù)銷(xiāo)售工程師:400-089-8936。
本文由正運(yùn)動(dòng)技術(shù)原創(chuàng),歡迎大家轉(zhuǎn)載,共同學(xué)習(xí),一起提高中國(guó)智能制造水平。文章版權(quán)歸正運(yùn)動(dòng)技術(shù)所有,如有轉(zhuǎn)載請(qǐng)注明文章來(lái)源。
中國(guó)傳動(dòng)網(wǎng)版權(quán)與免責(zé)聲明:凡本網(wǎng)注明[來(lái)源:中國(guó)傳動(dòng)網(wǎng)]的所有文字、圖片、音視和視頻文件,版權(quán)均為中國(guó)傳動(dòng)網(wǎng)(www.hysjfh.com)獨(dú)家所有。如需轉(zhuǎn)載請(qǐng)與0755-82949061聯(lián)系。任何媒體、網(wǎng)站或個(gè)人轉(zhuǎn)載使用時(shí)須注明來(lái)源“中國(guó)傳動(dòng)網(wǎng)”,違反者本網(wǎng)將追究其法律責(zé)任。
本網(wǎng)轉(zhuǎn)載并注明其他來(lái)源的稿件,均來(lái)自互聯(lián)網(wǎng)或業(yè)內(nèi)投稿人士,版權(quán)屬于原版權(quán)人。轉(zhuǎn)載請(qǐng)保留稿件來(lái)源及作者,禁止擅自篡改,違者自負(fù)版權(quán)法律責(zé)任。
相關(guān)資訊
產(chǎn)品新聞
更多>2025-06-09
從外觀到內(nèi)核的「超進(jìn)化」!NK550M五軸...
2025-06-06
2025-05-19
2025-04-30
性能躍升20%!維宏NK300CX Plus數(shù)控系統(tǒng)...
2025-04-11
推薦專(zhuān)題
更多>