The value of Zmotion is to bring customers more success!
XPCIE1032H功能简介
XPCIE1032H运动控制卡支持PWM,PSO功能,板载16进16出通用IO口,其中输出口全部为高速输出口,可配置为4路PWM输出口或者16路高速PSO硬件比较输出口。输入口含有8路高速输入口,可配置为4路高速色标锁存或两路编码器输入。
XPCIE1032H运动控制卡搭配MotionRT7实时内核,使用本地LOCAL接口连接,通过高速的核内交互 ,可以做到更快速的指令交互,单条指令与多条指令一次性交互时间可以达到3-5us左右。
1.支持多种上位机语言开发,所有系列产品均可调用同一套API函数库;
2.借助核内交互,可以快速调用 运动指令,响应时间快至微秒级,比传统PCI/PCIe快10倍;
3.解决传统PCI/PCIe运动控制卡在Windows环境下控制系统的非实时性问题;
4.支持一维/二维/三维PSO(高速硬件位置比较输出),适用于视觉飞拍、精密点胶和激光能量控制等应用;
5.提供高速输入接口,便于实现位置锁存;
6.支持EtherCAT总线和脉冲输出混合联动、混合插补。
➜使用XPCIE1032H和MotionRT7进行项目开发时,通常需要进行以下步骤:
1.安装驱动程序,识别XPCIE1032H;
2.打开并执行文件“MotionRT710.exe”,配置参数和运行运动控制实时内核;
3.使用ZDevelop软件连接到控制器,进行参数监控。连接时请使用PCI/LOCAL方式,并确保ZDevelop软件版本在3.10以上;
关闭计算机电源。
打开计算机机箱,选择一条空闲的XPCIE卡槽,用螺丝刀卸下相应的挡板条。
XPCIE1032H驱动安装与建立连接参考往期文章 EtherCAT超高速实时运动控制卡XPCIE1032H上位机C#开发(一):驱动安装与建立连接。
3.双击Form1.cs里面的Form1,出现代码编辑界面,在文件开头写入using cszmcaux,并声明控制器句柄g_handle。
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("控制器链接失败,请检查MotionRT7是否开启!", "警告"); //设置链接状态按钮 status.BackColor = System.Drawing.Color.Red; status.Text = "已断开"; } }
//定时器 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 = "已断开"; } }
//凸轮表运动启动 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); }
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; } }
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; }
2.工作原理
3.优点
(3)电子凸轮用软件来控制信号,改变程序的相关运动参数就能改变运动曲线,应用灵活性高,工作可靠,操作简单,不需要额外安 装机械构件,因而不存在磨损的情况。
自动凸轮是凸轮运动的一种,主要针对两个轴之间的主从跟随运动,用户可以通过简单 设置几个相关参数,便可以构建主轴与从轴之间的运动关系,位置关系不是存储于TABLE 表中,靠指令参数设置每段跟随距离和变速过程,运动过程中从轴的速度自动计算以匹配主轴,常见运动过程有跟随加速、减速、同步。
自动凸轮指令有 MOVELINK、MOVESLINK、FLEXLINK等,常见应用场合有追剪、 飞剪、轮切。
自定义电子凸轮曲线运动讲解视频可点击→EtherCAT超高速实时运动控制卡XPCIE1032H:自定义电子凸轮曲线运动。
本次,正运动技术自定义电子凸轮曲线的运动 :EtherCAT超高速实时运动控制卡XPCIE1032H上位机C#开发(十三),就分享到这里。
更多精彩内容请关注“ 正运动小助手 ”公众号,需要相关开发环境与例程代码,请咨询正运动技术销售工程师:400-089-8936。
正运动技术专注于运动控制技术研究和通用运动控制软硬件产品的研发,是国家级高新技术企业。正运动技术汇集了来自华为、中兴等公司的优秀人才,在坚持自主创新的同时,积极联合各大高校协同运动控制基础技术的研究,是国内工控领域发展最快的企业之一,也是国内少有、完整掌握运动控制核心技术和实时工控软件平台技术的企业。主要业务有:运动控制卡_运动控制器_EtherCAT运动控制卡_EtherCAT控制器_运动控制系统_视觉控制器__运动控制PLC_运动控制_机器人控制器_视觉定位_XPCIe/XPCI系列运动控制卡等等。