今天正动科技给大家分享《EtherCAT运动控制卡的硬件接线及C#的单轴运动控制》。在正式学习之前,我们先来看看正动科技的运动控制卡ECI2618和ECI2828。这两款产品分别是6轴和8轴运动控制卡。
ECI2618支持6轴脉冲输入和编码器反馈,板载24点输入、16点输出、2AD、2DA,支持手轮接口,特定输出端口支持高速PWM控制。
ECI2828支持8轴总线输入和编码器反馈,板载24个输入点,16个输出点,2个AD,2个DA,支持手轮接口,特定输出端口支持高速PWM控制。
ECI2618和ECI2828均使用同一套API函数,支持C、C++、C#、LabVIEW、Python、Delphi等开发语言,支持VC6.0、VB6.0、Qt、Net等平台,并支持Windows、Linux、WinCE、iMac等操作系统。
接下来,我们就进入正题吧。本节主要讲ECI2820 EtherCAT运动控制卡的硬件接线以及如何使用C#进行单轴运动控制。
1、ECI2828运动控制卡硬件介绍
ECI2828系列运动控制卡支持最多16轴直线插补、任意圆弧插补、空间圆弧、螺旋插补、电子凸轮、电子齿轮、同步跟随、虚拟轴、机械手指令等;采用优化的网络通讯协议,可实现实时运动控制。
ECI2828系列运动控制卡支持以太网。 232通讯接口与计算机连接,接收计算机指令运行。可通过EtherCAT总线、CAN总线连接各种扩展模块,扩展输入输出点数或运动轴数量。
ECI2828系列运动控制卡的应用程序可以使用VC、VB、VS、C++、C#等软件进行开发。程序运行时需要动态库zmotion.dll。调试时,可同时连接ZDevelop软件与控制器,方便调试和观察。
2.使用C#语言进行运动控制开发
1、新建MFC工程,添加函数库
(1)在VS2015菜单“文件”“新建”“项目”中,启动创建项目向导。
(2) 选择开发语言为“Visual C#”以及.NET Framework 4 和Windows Forms 应用程序。
(3)在厂家提供的光盘资料中找到C#函数库。路径如下(以64位库为例):
A、输入厂家提供的光盘信息,找到“8.PC Function”文件夹,点击进入。
B. 选择“函数库2.1”文件夹。
C. 选择“Windows 平台”文件夹。
D、根据需要选择对应的函数库。在这里,选择64 位库。
E. 解压C#压缩包,其中包含C#对应的函数库。
F、函数库具体路径如下。
(4) 将厂商提供的C#库文件及相关文件复制到新工程中。
A. 将zmcaux.cs 文件复制到新创建的项目中。
B. 将zaux.dll 和zmotion.dll 文件放入bin\debug 文件夹中。
(5)用vs打开新建的项目文件,在右侧的Solution Explorer中单击Show All,然后右键单击zmcaux.cs文件,单击Inclusion in Project。
(6)双击Form1.cs中的Form1,会出现代码编辑界面,在文件开头写入使用cszmcaux,并声明控制器句柄g_handle。
至此,新项目就完成了,可以进行C#项目开发了。
2.查看PC功能手册
A. PC 功能手册也在CD-ROM 信息中。具体路径如下:“光盘资料\8.PC函数\函数库2.1\ZMotion函数库编程手册V2.1.pdf”。
B、上位机编程,一般是网口连接控制器和工控机。网口链接函数接口为ZAux_OpenEth();如果链接成功,该接口将返回一个链接句柄。通过操作该连杆手柄即可实现对控制器的控制。
ZAux_OpenEth()接口说明:
项目申请截图:
C、使用单轴运动相关指令操作链接手柄“g_handle”来控制控制器的单轴运动。单轴运动相关指令如下。
3.C#进行单轴运动开发
(1)单轴运动控制人机交互界面如下。
(2)简单的程序流程图。
(3) 在Form1的构造函数中调用接口ZAux_OpenEth(),系统初始化时自动链接控制器。
公共表格1()
{
初始化组件();
//链接控制器
zmcaux.ZAux_OpenEth('192.168.0.11', out g_handle);
if (g_handle !=(IntPtr)0)
{
MessageBox.Show('控制器链接成功!', '提示');
定时器1.Enabled=true;
}
别的
{
MessageBox.Show('控制器连接失败,请检查IP地址!', '警告');
}
}
(4)通过定时器更新控制器轴状态:当前坐标、当前速度等。
//定时器
私有无效timer1_Tick(对象发送者,EventArgs e)
{
int 运行状态=0;
浮点数=0;
浮点速度=0;
zmcaux.ZAux_Direct_GetIfIdle(g_handle, nAxis, ref runstate);
zmcaux.ZAux_Direct_GetDpos(g_handle, nAxis, ref curpos);
zmcaux.ZAux_Direct_GetVpSpeed(g_handle, nAxis, ref curspeed);
label_runstate.Text='运动状态:' + Convert.ToString(runstate==0 ? '运行' : '停止');
label_curpos.Text='当前轴坐标:' + curpos;
label_cursp.Text='当前轴速度:' + curspeed;
}
(5) 通过启动按钮的事件处理函数来设置轴参数并开始运动。
私有无效Run_Click(对象发送者,EventArgs e)
{
if (g_handle==(IntPtr)0)
{
MessageBox.Show('未链接到控制器!', '提示');
}
别的
{
//触发示波器记录波形
zmcaux.ZAux_Trigger(g_handle);
//设置轴参数
zmcaux.ZAux_Direct_SetAtype(g_handle, nAxis, 1);
zmcaux.ZAux_Direct_SetUnits(g_handle, nAxis, Convert.ToSingle(TextBox_units.Text));
zmcaux.ZAux_Direct_SetLspeed(g_handle, nAxis, Convert.ToSingle(TextBox_lspeed.Text));
zmcaux.ZAux_Direct_SetSpeed(g_handle, nAxis, Convert.ToSingle(TextBox_speed.Text));
zmcaux.ZAux_Direct_SetAccel(g_handle, nAxis, Convert.ToSingle(TextBox_accel.Text));
zmcaux.ZAux_Direct_SetDecel(g_handle, nAxis, Convert.ToSingle(TextBox_decel.Text));
zmcaux.ZAux_Direct_SetSramp(g_handle, nAxis, Convert.ToSingle(TextBox_sramp.Text));
//判断是连续运动还是点动运动
if (radioButton5.Checked)
{
zmcaux.ZAux_Direct_Single_Vmove(g_handle, nAxis, dir);
}
别的
{
zmcaux.ZAux_Direct_Single_Move(g_handle, nAxis, dir * Convert.ToSingle(TextBox_step.Text));
}
}
}
(6) 通过停止按钮的事件处理函数停止插补运动。
//停止运动
私人无效Stop_Click(对象发送者,EventArgs e)
{
if (g_handle==(IntPtr)0)
{
MessageBox.Show('未链接到控制器!', '提示');
}
别的
{
zmcaux.ZAux_Direct_Single_Cancel(g_handle, nAxis, 2);
}
}
4、调试与监控
编译并运行例程,连接ZDevelop软件进行调试,监控运动控制的轴参数和运动状况。
(1)连接ZDevelop软件,点击“查看”“示波器”,打开示波器监控轴运动。
(2)运行上位机软件进行调试和监控。
这次分享的是Positive Motion Technology EtherCAT运动控制卡的硬件接线以及C#的单轴运动控制。
更多精彩内容请关注“正动助手”公众号。如需相关开发环境和例程代码,请咨询正动技术销售工程师:400-089-8936。
本文由正动科技原创。欢迎大家转载,共同学习,共同提高中国智能制造水平。文章版权归郑运动科技所有。如有转载,请注明文章出处。