The value of Zmotion is to bring customers more success!
硬件介绍
PCIE464运动控制卡是正运动推出的一款EtherCAT总线+脉冲型、PCIE接口式的运动控制卡,可选6-64轴运动控制,支持多路高速数字输入输出,可轻松实现多轴同步控制和高速数据传输。
接线参考
J400包含一个差分脉冲输出接口,一个差分编码器反馈,通过转接板接入。其中IN2-7有单端编码器轴的功能,只支持24V编码器输入。
C#语言进行项目开发
1、 在VS2010菜单“文件”→“新建”→“项目”,启动创建项目向导。
2)选择“函数库2.1”文件夹。
5.双击Form1.cs里面的Form1,出现代码编辑界面,在文件开头写入using cszmcaux,并声明控制器句柄g_handle。
6、至此,项目新建完成,可进行C#项目开发。
PC函数介绍
1.PC函数手册可在光盘资料查看,具体路径如下。
单个或批量读取IO和编码器数据
1.链接控制器获取句柄,上位机操作通过获取到的句柄来操作控制器。
//连接PCIe控制卡,控制卡卡号缺省从0开始 int ret = zmcaux.ZAux_OpenPci(0, out g_handle); if (g_handle != (IntPtr)0) { MessageBox.Show("控制卡链接成功!" , "提示"); timer_GetData.Enabled = true; //开启定时器或在单独线程里实时读取I/O信号 } else { MessageBox.Show("控制卡链接失败,请检测PCI卡号!" , "警告"); }
//定时器刷新I/O和轴反馈数据 private void timer_GetData_Tick(object sender, EventArgs e) { uint[] instate = new uint[4]; uint[] opstate = new uint[4]; float[] mpos = new float[4]; for (int i = 0; i < 4; i++) { zmcaux.ZAux_Direct_GetIn(g_handle, i, ref instate[i]); //读取单个IN zmcaux.ZAux_Direct_GetOp(g_handle, i, ref opstate[i]); //读取单个OUT zmcaux.ZAux_Direct_GetMpos(g_handle, i, ref mpos[i]); //读取单轴反馈位置MPOS } IN0.Checked = (instate[0] == 1); IN1.Checked = (instate[1] == 1); IN2.Checked = (instate[2] == 1); IN3.Checked = (instate[3] == 1); OP0.Checked = (opstate[0] == 1); OP1.Checked = (opstate[1] == 1); OP2.Checked = (opstate[2] == 1); OP3.Checked = (opstate[3] == 1); MPOS0.Text = mpos[0].ToString(); MPOS1.Text = mpos[1].ToString(); MPOS2.Text = mpos[2].ToString(); MPOS3.Text = mpos[3].ToString(); int[] inputs = new int[4]; uint[] outputs = new uint[4]; float[] allmpos = new float[8]; zmcaux.ZAux_Direct_GetInMulti(g_handle, 16, 31, inputs); //批量读取输入IN16-31 zmcaux.ZAux_Direct_GetOutMulti(g_handle, 16, 31, outputs); //批量读取输出OUT16-31 zmcaux.ZAux_Direct_GetAllAxisPara(g_handle, "MPOS", 8, allmpos);//批量读取轴反馈位置MPOS 0-7 InputGroup1631.Text = inputs[0].ToString("X4"); }
//单个输出口状态切换函数 private void OP0_CheckedChanged(object sender, EventArgs e) { if (g_handle == (IntPtr)0) { MessageBox.Show("未链接到控制卡!", "提示"); return; } if (OP0.Checked) { zmcaux.ZAux_Direct_SetOp(g_handle,0, 1); OP0.Text = "out0 打开"; } else { zmcaux.ZAux_Direct_SetOp(g_handle, 0, 0); OP0.Text = "out0 关闭"; } } //批量切换输出口状态函数 private void OutputGroup03_CheckedChanged(object sender, EventArgs e) { if (g_handle == (IntPtr)0) { MessageBox.Show("未链接到控制卡!", "提示"); return; } uint[] iostate = new uint[4]; if (OutputGroup03.Checked) { iostate[0] = 0xF; //以二进制组合OUT,十六进制0xF即OUT0-3全部置1 zmcaux.ZAux_Direct_SetOutMulti(g_handle, 0, 3, iostate); OutputGroup03.Text = "全部置ON"; OP0.Checked = true; OP1.Checked = true; OP2.Checked = true; OP3.Checked = true; } else { iostate[0] = 0x0; zmcaux.ZAux_Direct_SetOutMulti(g_handle, 0, 3, iostate); OutputGroup03.Text = "全部置OFF"; OP0.Checked = false; OP1.Checked = false; OP2.Checked = false; OP3.Checked = false; } }
4.若想验证通过函数获取的IO状态和数据是否准确,可以使用正运动的调试软件RTSys连接到控制卡。
通过工具→输入口/输出口观察当前控制卡的实时IO状态,通过轴参数窗口观察各轴的反馈位置MPOS,并与C#获取的数据进行对比。
“?IN(0),IN(3),OP(1),OP(4),MPOS(2),MPOS(5)”;
其中,英文 “?” 字符和“PRINT”字符为同一含义,表示读取后续参数的值;参数字符不用区分大小写。
private void getData_Click(object sender, EventArgs e) { //通过Execute函数发送Basic字符串组合实现一次性读取多个参数 if (g_handle == (IntPtr)0) { MessageBox.Show("未链接到控制卡!", "提示"); return; } string pszCommand; //发送的Basic命令字符串 StringBuilder psResponse = new StringBuilder(1024); //接收返回的字符串 uint uiResponseLength = 1024; //接收返回的字符长度,不能小于接收的字符串长度 pszCommand = "?IN(4),IN(5),OP(4),OP(5),MPOS(4),MPOS(5)";//读取数据Basic字符串,共6个数据 zmcaux.ZAux_Execute(g_handle, pszCommand, psResponse, uiResponseLength); string psResponseResult = ""; psResponseResult += psResponse; string[] parts = psResponseResult.Split('\t'); //这里以空格对字符串分割 IN4.Checked = Convert.ToInt32(parts[0]) == 1; IN5.Checked = Convert.ToInt32(parts[1]) == 1; OP4.Checked = Convert.ToInt32(parts[2]) == 1; OP5.Checked = Convert.ToInt32(parts[3]) == 1; MPOS4.Text = parts[4]; MPOS5.Text = parts[5]; }
6.演示视频。
本次,正运动技术PCIe EtherCAT实时运动控制卡PCIE464的IO与编码器读写应用,就分享到这里。
更多精彩内容请关注“ 正运动小助手 ”公众号,需要相关开发环境与例程代码,请咨询正运动技术销售工程师:400-089-8936。
正运动技术专注于运动控制技术研究和通用运动控制软硬件产品的研发,是国家级高新技术企业。正运动技术汇集了来自华为、中兴等公司的优秀人才,在坚持自主创新的同时,积极联合各大高校协同运动控制基础技术的研究,是国内工控领域发展最快的企业之一,也是国内少有、完整掌握运动控制核心技术和实时工控软件平台技术的企业。主要业务有:运动控制卡_运动控制器_EtherCAT运动控制卡_EtherCAT控制器_运动控制系统_视觉控制器__运动控制PLC_运动控制_机器人控制器_视觉定位_XPCIe/XPCI系列运动控制卡等等 。