正运动运动控制卡应用开发教程之MATLAB

导语:ECI2828系列运动控制卡支持多达16 轴直线插补、任意圆弧插补、空间圆弧、螺旋插补、电子凸轮、电子齿轮、同步跟随、虚拟轴和机械手指令等;采用优化的网络通讯协议可以实现实时的运动控制。

今天,正运动小助手给大家分享一下运动控制卡应用开发教程之MATLAB。

一ECI2828硬件介绍

ECI2828系列运动控制卡支持多达16 轴直线插补、任意圆弧插补、空间圆弧、螺旋插补、电子凸轮、电子齿轮、同步跟随、虚拟轴和机械手指令等;采用优化的网络通讯协议可以实现实时的运动控制。

ECI2828系列运动运动控制卡支持以太网,232 通讯接口和电脑相连,接收电脑的指令运行,可以通过EtherCAT总线和CAN总线去连接各个扩展模块,从而扩展输入输出点数或运动轴。

ECI2828系列运动控制卡的应用程序可以使用 VC、VB、VS、C++以及C#等软件来开发,程序运行时需要动态库 zmotion.dll。调试时可以把ZDevelop软件同时连接到,从而方便调试,方便观察。

ECI2828系列典型连接配置图

二MATLAB进行运动控制开发

Ⅰ新建工程并添加函数

1.在MATLAB R2019a菜单“主页”→“新建”→ “工程”→ “空白工程” ,启动创建项目向导。

2.新建GUI。(命令行输入guide 新建GUI)

3.找到厂家提供的光盘资料里面的MATLAB函数库,路径如下(64位库为例)。

A.进入厂商提供的光盘资料找到“8.PC函数”文件夹,并点击进入。

B.选择“函数库2.1”文件夹。

C.选择“Windows平台”文件夹。

D.根据需要选择对应的函数库这里选择64位库。

E.解压MATLAB压缩包,里面有对应的函数库。

4.将厂商提供的库文件以及相关文件复制到MATLAB工作目录下。

A.“zauxdll.dll”、“zmotion.dll”、“zauxdll2.h”、“zmotion.h”四个文件拷贝到matlab工作目录下。

如:C:\...\....\R2019a\bin

B.将“zauxdll2.h”、“zmotion.h”两个文件拷贝到include目录。

如:C:\...\....\R2019a\extern\include

C.拷贝“zauxdll.dll”文件到新建的工程目录中。

5.配置MATLAB开发环境。

A.在matlab命令行输入“mbuild -setup”以及“mex -setup”,选择安装的c语言编译器。

B.使用loadlibrary(zauxdll.dll,zauxdll2.h);加载函数库。

C.libfunctions zauxdll -full;或 libfunctionsview zauxdll;显示共享库函数签名。

6.使用“calllib”调用zauxdll函数库中函数,详细可查看MATLAB帮助。

●有关参数传递,在calllib帮助→传递参数。

●至此函数库添加完成,可进行MATLAB项目开发。

Ⅱ查看PC函数手册

1.PC函数手册也在光盘资料里面,具体路径如下:“光盘资料\8.PC函数\函数库2.1\ZMotion函数库编程手册 V2.1.pdf”。

2.PC编程,一般如果网口对和工控机进行链接。网口链接函数接口是ZAux_OpenEth();如果链接成功,该接口会返回一个链接句柄。通过操作这个链接句柄可以实现对的控制。

ZAux_OpenEth()接口说明:

项目应用截图:

命令行应用截图:

3、使用单轴运动相关的指令操作链接句柄“g_handle”,对进行单轴运动控制,单轴运动相关的指令如下。

单轴相对运动指令:

单轴绝对运动指令:

单轴持续运动:

单轴停止运动:

ⅢMATLAB进行单轴运动开发

1.单轴运动控制人机交互界面如下。

2.例程简易流程图。

3.在MATLAB的GUI界面中新建控件进行程序编写。

A.在工具栏新建“普通按钮”和可编辑文本,并双击修改属性。

B.控件右键,查看回调,“CallBack”创建回调响应函数,此时自动新建.m格式文件,在这里进行界面响应程序编写。

C.将自动创建的文件添加到项目中。

D.在“XXX_OpeningFcn”函数中加载函数库,并定义全局变量。

% --- 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))%加载函数库 loadlibrary(zauxdll.dll,zauxdll2.h); end disp(加载函数库);%命令行打印 global g_handleptr;%定义连接句柄 global g_nAxis;%定义轴号 global g_Dir;%定义运动方向 global g_Moveway;%定义运动方式 g_handleptr= libpointer(voidPtrPtr); g_Dir=1; g_Moveway=0; g_nAxis=0;

4.编写“连接”按钮程序,调用接口“ZAux_OpenEth()”,使点击按钮时链接。

% --- 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});%定时器 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 );%启动定时器 else fprintf(连接失败,错误码%d\n,res); set(gcf,NumberTitle, off, Name, 连接失败); msgbox(Connection failure,Please check the IP!);%连接失败,请检查IP地址 return; end

5.主界面右键添加销毁函数,调用“ZAux_Close()”关闭连接。

% --- Executes during object deletion, before destroying properties.关闭连接function figure1_DeleteFcn(hObject, eventdata, handles) global g_handleptr;%定义连接句柄 calllib(zauxdll,ZAux_Close,g_handleptr); disp(关闭与连接);%打印

6.通过定时器更新轴状态:当前坐标、当前速度等。

function UpdateSliderData(obj, events, handles) global g_handleptr;%定义连接句柄 global g_nAxis;%定义轴号 [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,当前运动状态:运行); else set(handles.edit_runstate,String,当前运动状态:停止); end set(handles.edit_curpos,String,当前轴坐标: +str_curpos); set(handles.edit_curspeed,String,当前轴速度: +str_curspeed);

7.通过启动按钮的事件处理函数来设置轴参数并开始运动。

% --- Executes on button press in pushbutton_runmove.运动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;%定义轴号 global g_Dir;%定义运动方向 global g_Moveway;%定义运动方式 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) %//连续运动 calllib(zauxdll,ZAux_Direct_Single_Vmove,g_handleptr, g_nAxis,g_Dir); else % //寸动 calllib(zauxdll,ZAux_Direct_Single_Move,g_handleptr, g_nAxis, g_Dir * str2num(get(handles.edit_step,String))); end

8.通过停止按钮的事件处理函数来停止插补运动。

% --- 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);

Ⅳ调试与监控

1.编译运行例程,同时连接ZDevelop软件进行调试,对运动控制的轴参数和运动情况进行监控。

(1)连接ZDevelop软件,并点击“视图”→“示波器”打开示波器对轴运动情况进行监控。

(2)运行上位机软件进行调试监控。

2.视频演示。

本次,正运动技术EtherCAT运动控制卡应用开发教程之MATLAB,就分享到这里。

本文由正运动技术原创,欢迎大家转载,共同学习,一起提高中国智能制造水平。文章版权归正运动技术所有,如有转载请注明文章来源。


猜你喜欢

推荐排行

  • 红米这个词汇背后藏着怎样的故事
  • 火箭少女101新皮肤试看火箭少女101最新动态图皮肤展示
  • 江南无所有追忆与沉思
  • 云狐手机新一代智能生活的灵魂伴侣