今天,正运动小助手给大家分享一下EtherCAT运动控制卡之ECI2828如何使用C#进行电子凸轮追剪飞剪等应用。

  一  ECI2828硬件介绍

 

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

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

 

 

 

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

 

 

 

  二 C#语言进行运动控制开发

  

  Ⅰ 查看PC函数手册新建WinForm

  

  1.在VS2015菜单“文件”→“新建”→ “项目”,启动创建项目向导。

  

  

  

  2.选择开发语言为“Visual C#”和.NET Framework 4以及Windows 窗体应用程序。

  

  

  

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

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

  

  

  

  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打开新建的项目文件,在右边的解决方案资源管理器中点击显示所有,然后鼠标右键点击zmcaux.cs文件,点击包括在项目中。

  

  

  

  6.双击Form1.cs里面的Form1,出现代码编辑界面,在文件开头写入 using cszmcaux,并声明控制器句柄g_handle。

  

  

  

  至此项目新建完成,可进行C#项目开发。

  Ⅱ 查看PC函数手册

  

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

  

  

  

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

  

  

  

  3.使用凸轮的指令操作链接句柄“g_handle”,对控制器进行电子凸轮运动控制,连续插补运动相关的指令如下。

  

  

  

  Ⅲ C#的电子凸轮追剪等运动开发

  

  1.电子凸轮追剪飞剪运动控制人机交互界面如下。

  

  

  

  2.电子凸轮功能说明。

  凸轮的作用是将旋转运动转换为线性运动,包括直线运动、摆动、匀速运动和非匀速运动。

  电子凸轮是利用构造的凸轮曲线来模拟机械凸轮,以达到与机械凸轮系统相同的凸轮轴与主轴之间相对运动的软件系统,通过控制器控制伺服电机来模拟机械凸轮的功能,不需要另外安装机械结构。

  ●工作原理:

  电子凸轮属于多轴同步运动,这种运动是基于主轴外加一个或多个从轴系统,是在机械凸轮的基础上发展而来,电子凸轮多用于周期性的曲线运动场合。

  电子凸轮用软件来控制信号,改变程序的相关运动参数就能改变运动曲线,应用灵活性高,工作可靠,操作简单,不需要额外安装机械构件,因而不存在磨损的情况。

  3.例程简易流程图。

  

  

  

  4.在Form1的构造函数中调用接口ZAux_OpenEth(),使在系统初始化的时候自动链接控制器。

 

private void button1_Click(object sender, EventArgs e)

{

zmcaux.ZAux_OpenEth(IP_List.Text, out g_handle);

if (g_handle != (IntPtr)0)

{

timer1.Enabled = true;

//设置链接状态按钮

status.BackColor = System.Drawing.Color.Green;

status.Text = "已链接";

}

else

{

MessageBox.Show("控制器链接失败,请检测IP地址!", "警告");

//设置链接状态按钮

status.BackColor = System.Drawing.Color.Red;

status.Text = "已断开";

}

}

  5.通过定时器更新参数信息。

//定时器

private void timer1_Tick(object sender, EventArgs e)

{

if(g_handle != null)

{

float dpos = 0, speed = 0;

zmcaux.ZAux_Direct_GetDpos(g_handle, Convert.ToInt32(textBox_axis.Text),ref dpos);

label_dpos.Text = Convert.ToString(dpos);

zmcaux.ZAux_Direct_GetSpeed(g_handle, Convert.ToInt32(textBox_axis.Text), ref speed);

label_speed.Text = Convert.ToString(speed);

}

else

{

status.BackColor = System.Drawing.Color.Red;

status.Text = "已断开";

}

}

  6.利用提前加载好的凸轮表数据,利用cam指令进行凸轮运动。

//凸轮表运动启动

private void button3_Click(object sender, EventArgs e)

{

if (g_handle == null)

return;

zmcaux.ZAux_Direct_SetUnits(g_handle, Convert.ToInt32(textBox_axis.Text),Convert.ToSingle(textBox_unit.Text));

zmcaux.ZAux_Direct_SetSpeed(g_handle, Convert.ToInt32(textBox_axis.Text), Convert.ToSingle(textBox_speed.Text));

zmcaux.ZAux_Direct_SetAccel(g_handle, Convert.ToInt32(textBox_axis.Text), Convert.ToSingle(textBox_accel.Text));

zmcaux.ZAux_Direct_SetDecel(g_handle, Convert.ToInt32(textBox_axis.Text), Convert.ToSingle(textBox_decel.Text));

zmcaux.ZAux_Direct_SetAtype(g_handle, Convert.ToInt32(textBox_axis.Text), 1);

//进行电子凸轮运动

//设置运动总时间为5s

zmcaux.ZAux_Direct_Cam(g_handle, Convert.ToInt32(textBox_axis.Text),0, CamNum, Convert.ToSingle(textBox_unit.Text), Convert.ToSingle(textBox_speed.Text)*5);

}

  7.外部导入凸轮表数据加载。

  

private void button_data_Click(object sender, EventArgs e)

{

dataGridView_data.Columns.Clear();

DataGridViewTextBoxColumn ActPos = new DataGridViewTextBoxColumn();

ActPos.Name = "ActPos";

ActPos.DataPropertyName = "ActPos";

ActPos.HeaderText = "位置";

dataGridView_data.Columns.Add(ActPos);

OpenFileDialog ZaoLangFile = new OpenFileDialog();

ZaoLangFile.Filter = "文本文件(*.txt;)| *.txt;| 所有文件| *.*; ";

ZaoLangFile.ValidateNames = true;

ZaoLangFile.CheckPathExists = true;

ZaoLangFile.CheckFileExists = true;

if (ZaoLangFile.ShowDialog() == DialogResult.OK)

{

string strFileName = ZaoLangFile.FileName;

//其他代码

//FileStream FileRead = new FileStream(strFileName, FileMode.OpenOrCreate, FileAccess.Read);

string DataTest = File.ReadAllText(strFileName);

string[] strArray = DataTest.Split(new string[] { "\r\n" }, StringSplitOptions.None);

for (int i = 0; i < strArray.Length - 1; i++)

{

int index = dataGridView_data.Rows.Add();

dataGridView_data.Rows[index].Cells[0].Value = strArray[i];

}

float[] Tablelist = new float[strArray.Length];

for (int i = 0; i < strArray.Length - 1; i++)

{

Tablelist[i] = Convert.ToSingle(strArray[i]);

}

zmcaux.ZAux_Direct_SetTable(g_handle,0,strArray.Length,Tablelist);

//记录当前写入凸轮表数据有多少

CamNum = strArray.Length - 2;

}

}

  8.自定义凸轮表数据加载。

  

private void button6_Click(object sender, EventArgs e)

{

dataGridView_data.Columns.Clear();

DataGridViewTextBoxColumn ActPos = new DataGridViewTextBoxColumn();

ActPos.Name = "ActPos";

ActPos.DataPropertyName = "ActPos";

ActPos.HeaderText = "位置";

dataGridView_data.Columns.Add(ActPos);

float[] CustomTable = new float[100];

for (int i = 0; i < 100; i++)

{

CustomTable[i] = (float )((Math.Sin(Math.PI*2*i/100) / (Math.PI*2)) + i / 100) * 500;

int index = dataGridView_data.Rows.Add();

dataGridView_data.Rows[index].Cells[0].Value = CustomTable[i];

}

zmcaux.ZAux_Direct_SetTable(g_handle, 0, 100, CustomTable);

CamNum = 100;

}

  Ⅳ 调试与监控

  

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

  使用电子凸轮指令进行运动,设置轴运动动作按照凸轮表中的数据进行对应运动,所有运动数据相对于第一个数据点的位置进行绝对位置偏移。

  

  

  

  (1)如上图,是运动为造浪设备运动的某段轨迹数据加载到控制器的table凸轮表中,运动出来的实际轨迹,并在设置的指定时间内运动完成。

  

  

  

  (2)如上图,运行数据为内部自定义sin波形的运动数据,波形可以从图中看出,运动小线段数据指定时间内轨迹运行完成。

演示视频

  http://www.zmotion.com.cn/video/EtherCAT运动控制卡的电子凸轮追剪飞剪等应用(一).mp4

  本次,正运动技术EtherCAT运动控制卡的电子凸轮等应用,就分享到这里。

  更多精彩内容请关注“正运动小助手”公众号,需要相关开发环境与例程代码,请咨询正运动技术销售工程师:400-089-8936。

  本文由正运动技术原创,欢迎大家转载,共同学习,一起提高中国智能制造水平。

EtherCAT运动控制卡的电子凸轮追剪飞剪等应用(一)相关推荐

  1. 电子凸轮追剪曲线生成算法

    电子凸轮追剪曲线生成算法. 品牌:麦格米特(算法,理解后可转成其他品牌PLC或任何一种编程语言) 只有程序6150633554519425混圆形意太极门掌门人

  2. 电子凸轮追剪曲线生成算法 算法,理解后可转成其他品牌PLC或任何一种编程语言

    电子凸轮追剪曲线生成算法. 品牌:麦格米特(算法,理解后可转成其他品牌PLC或任何一种编程语言) YID:5850633554519425

  3. 电子凸轮追剪曲线生成算法 麦格米特

    电子凸轮追剪曲线生成算法. 品牌:麦格米特(算法,理解后可转成其他品牌PLC或任何一种编程语言) 只有程序 ID:6950633554519425

  4. 电子凸轮追剪曲线生成算法 理解后可转成其他品牌PLC或任何一种编程语言

    电子凸轮追剪曲线生成算法. 品牌:麦格米特(算法,理解后可转成其他品牌PLC或任何一种编程语言) 只有程序 YID:6350633554519425混圆形意太极门掌门人

  5. Codesys使用电子凸轮实现追剪功能

    1.序言 追剪是对运动中的材料进行垂直切割的工艺.从轴刀架由等待位置开始加速,其速度达到同步速 度后,刀架与材料的运动速度相等,两者相对静止,由刀架上的切刀对材料进行剪切.追剪在管材,型材的裁切中十分 ...

  6. 三菱FX5U多冲一切追剪程序。 无需40SSC运动模块,通过软件电子凸轮算法实现追剪功能

    三菱FX5U多冲一切追剪程序. 无需40SSC运动模块,通过软件电子凸轮算法实现追剪功能,节省掉模块费用,3套可回本,适合批量使用. 项目在现场验证过,精度50丝,追剪多冲一切过程不回原点,效率高. ...

  7. 追剪电子凸轮算法(图)

    追剪电子凸轮算法:仅供参考

  8. 台达PLC伺服追剪程序,电子凸轮,全部源代码,PLC程序和触摸屏程序,DVP15MC

    台达PLC伺服追剪程序,电子凸轮,全部源代码,PLC程序和触摸屏程序,DVP15MC. YID:2927648967667208最后一只烤鸭

  9. 台达PLC伺服追剪程序,电子凸轮,全部源代码,PLC程序和触 摸屏程序,DVP15MC。

    台达PLC伺服追剪程序,电子凸轮,全部源代码,PLC程序和触 摸屏程序,DVP15MC.

最新文章

  1. oracle集群图例
  2. 【详细解析】1033 To Fill or Not to Fill (25 分)
  3. python学习实例(1)
  4. linux mysql可视化_常用的 7 款 MySQL 客户端工具,你值得拥有!
  5. atlas 力矩计算_Atlas Copco基本拧紧技术
  6. linux qt计算器,QT 计算器小程序
  7. 手机解开加密excel表格xlsx,忘记excel表格xlsx密码如何找回?
  8. 夜神模拟器连接手柄无反应_夜神模拟器怎么连接手柄?夜神模拟器连接手柄具体操作...
  9. ppt插入计算机时间,WPS之PPT插入自动更新的时间设置
  10. ML笔记 - 自然语言处理常用技术
  11. 如何在libfetion上使用ibus输入法
  12. RC522(RFID)读写驱动
  13. winfows 切换 双屏_win10多个桌面切换快捷键 win10怎样设置双屏显示两个桌面
  14. Postman接口测试自动化介绍
  15. R语言基础知识入门学习(一)
  16. 华三(h3c)交换机操作命令详解vlan切换
  17. 最新版大学英语六级词汇打印版
  18. python模块subprocess学习
  19. 问财爬虫Python第三方包,仅供学习使用
  20. raise InvalidSchema(“No connection adapters were found

热门文章

  1. 详解搜索引擎的高级搜索语法指令
  2. 深入理解机器学习——类别不平衡学习(Imbalanced Learning):常用技术概览
  3. 25款操作系统全面接触 [8]
  4. 简述新图像文件格式——SVG
  5. Node.js模拟登录强智科技教务系统
  6. 路由器做二级路由方法
  7. golang并发模式work
  8. CSAPP实验记录(三):Attack lab
  9. 第1章Activity的生命周期和启动模式
  10. 数据分析项目实战——Airbnb数据分析