0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

PCIe EtherCAT实时运动控制卡PCIE464的IO与编码器读写应用

正运动技术 来源:正运动技术 作者:正运动技术 2024-07-17 14:47 次阅读

硬件介绍

PCIE464运动控制卡是正运动推出的一款EtherCAT总线+脉冲型、PCIE接口式的运动控制卡,可选6-64轴运动控制,支持多路高速数字输入输出,可轻松实现多轴同步控制和高速数据传输。

wKgaomaXZ1mAMANfAALNtKNdygY254.png

PCIE464运动控制卡适合于多轴点位运动、插补运动、轨迹规划、手轮控制、编码器位置检测、IO控制、位置锁存等功能的应用。PCIE464运动控制卡适用于3C电子加工、检测设备、半导体设备、SMT加工、激光加工、光通讯设备、锂电及光伏设备、以及非标自动化设备等高速高精应用场合。

wKgZomaXZ2GAKAOvAARpxX09S_w353.png

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

wKgaomaXZ22AGclwAAEE1NMWI5U178.png

接线参考

1、IN数字量输入接口

数字输入分布在J400(IN0-IN7)和X400(IN8-IN39)信号接口中。

wKgZomaXZ4CAIf8vAAG8KnMTlkQ772.pngwKgZomaXZ4aALW52AACMVKf44Js674.png

2、OUT数字量输出接口

数字输出分布在 J400(OUT0-7)和 X400(OUT8-OUT39)信号接口中。

wKgaomaXZ4-ARLMuAAHU6secIrk062.pngwKgZomaXZ5OAPI0-AAC2cyAtD1M837.png

3、编码器输入接口

J400包含一个差分脉冲输出接口,一个差分编码器反馈,通过转接板接入。其中IN2-7有单端编码器轴的功能,只支持24V编码器输入。

wKgaomaXZ5uAfUX-AACmbig9ysE444.pngwKgaomaXZ5-AYl1LAAJ7qSGz8yE821.pngwKgZomaXZ6OAcQBEAADi7uMyfZw710.pngwKgaomaXZ6eARtHyAAHk6ib3gf8046.png

C#语言进行项目开发

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

wKgaomaXZ7aAfNagAADhJnjejPI813.png

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

wKgZomaXZ7qALuNlAAGRBTag48I667.png

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

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

wKgaomaXZ76ATAdCAADImVJ0Eb0888.png

2)选择“函数库2.1”文件夹。

wKgZomaXZ8GAWre_AACrDhzFbhA847.png

3)选择“Windows平台”文件夹。

wKgaomaXZ8SAY_wzAACDyIs5lvU751.png

4)根据需要选择对应的函数库,这里选择32位库。

wKgaomaXZ8iANUhAAAB6ZixLpzQ789.png

5)解压C#压缩包,里面有C#对应的函数库。

wKgaomaXZ8uAGoBpAACopv96xHU152.png

6)函数库具体路径如下。

wKgZomaXZ86AXW-PAAC2TupS_AU260.png

4.将厂商提供的C#的库文件以及相关文件复制到新建的项目中。

1)将zmcaux.cs文件复制到新建的项目里面中。

wKgZomaXZ9GAAcG6AAEO9lQTGd0912.png

2)将zauxdll.dll和zmotion.dll文件放入bindebug文件夹中。

wKgaomaXZ9WAe330AAKHyDKjxaA987.png

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

wKgaomaXZ9iAaxcbAAG2UEH7n4k840.png

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

PC函数介绍

1.PC函数手册可在光盘资料查看,具体路径如下。

wKgaomaXZ-WAH5Q3AABVprL-soc100.png

2.链接控制卡,获取链接句柄。

wKgZomaXZ-mAGTjnAAA-z-NuBvw152.png

3.读取单个I/O信号。

wKgZomaXZ-2AIksIAABT7jxxmLU918.pngwKgaomaXZ_KAekBcAABTbNoR0C0417.png

4.批量读取I/O信号。

wKgaomaXZ_eAAIc4AABCVw36pQk358.pngwKgZomaXZ_uAeY5WAABEOh0S-C0132.png

5.设置单个输出口。

wKgZomaXaAGAKeUqAABJbpgKDhA681.png

6.批量设置输出口。

wKgZomaXaAWAeH9AAABATa0DKj4030.png

7.读取单轴编码器反馈位置。

wKgaomaXaAyAMyirAAA3ScLEmkw508.png

8.批量读取编码器反馈位置,BASIC字符串为MPOS。

wKgZomaXaBKAPx9AAABFrxCAU_w489.png

9.自定义函数封装指令。

wKgaomaXaBaALt_nAABD974qF84497.png

单个或批量读取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卡号!" , "警告");
}

2.开启定时器实时读取I/O信号。

//定时器刷新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"); 
}

3.单个或批量设置OP输出口。

//单个输出口状态切换函数
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#获取的数据进行对比。

wKgaomaXaHSAJHhLAAEjbS7LtOw237.pngwKgZomaXaHiAOlUMAAIDUhc7MGE098.png

5.自定义函数封装,单条命令批量获取需要的部分I/O和部分轴数据。

通过组合不同的Basic命令字符串,中间以英文逗号字符隔开,一次性下发读取所需的数据,如:

(1)获取某个输入信号,对应Basic命令字符串为:IN(输入口序号);(2)获取某个输出信号,对应Basic命令字符串为:OP(输入口序号);(3)获取某轴反馈位置,对应Basic命令字符串为:MPOS(轴号);其他参数也可以使用此方式,具体Basic字符串可参考PC手册“轴参数指令表”。

举例说明,需要单条命令获取输入0,输入3,输出1,输出4,轴2和轴5的反馈数据,则需要通过ZAux_Execute函数下发字符串:

“?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];
}
wKgaomaXaJiAC5DgAAIn8EbWHhg992.png

调试软件RTSys命令与输出窗口的在线命令,与上述封装函数为相同的功能。

wKgZomaXaJyARl12AACb2JeZDCk273.png

本次,正运动技术PCIe EtherCAT实时运动控制卡PCIE464的IO与编码器读写应用,就分享到这里。

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

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

审核编辑 黄宇

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 编码器
    +关注

    关注

    44

    文章

    3507

    浏览量

    132957
  • 运动控制
    +关注

    关注

    4

    文章

    545

    浏览量

    32633
  • 运动控制卡
    +关注

    关注

    7

    文章

    103

    浏览量

    15362
  • ethercat
    +关注

    关注

    18

    文章

    555

    浏览量

    38200
  • 正运动技术
    +关注

    关注

    0

    文章

    88

    浏览量

    125
收藏 人收藏

    评论

    相关推荐

    【正运动】高速高精,超高实时性的PCIe EtherCAT实时运动控制卡 | PCIE464

    产品摘要正运动技术PCIE464运动控制卡,提供高效的工业运动控制解决方案。用户可直接将
    发表于 01-24 09:48

    EtherCAT超高速实时运动控制卡XPCIE1032H驱动安装# 运动控制卡# 正运动技术# PCIE

    人工智能运动控制卡
    正运动技术
    发布于 :2023年11月10日 15:44:03

    EtherCAT同步周期快至100us】超高实时性PCle EtherCAT控制卡PCIE464

    控制卡PCIe
    正运动技术
    发布于 :2024年01月31日 14:31:05

    PCIe EtherCAT实时运动控制卡PCIE464IO编码器读写应用# 正运动技术# 运动控制卡

    编码器运动控制卡
    正运动技术
    发布于 :2024年07月23日 09:37:31

    EtherCAT运动控制卡之ECI2820如何使用

    轴直线插补、任意圆弧插补、空间圆弧、螺旋插补、电子凸轮、电子齿轮、同步跟随、虚拟轴、机械手指令等;采用优化的网络通讯协议可以实现实时运动控制。  ECI2828系列运动
    发表于 09-01 06:24

    步进、伺服电机控制运动控制卡回原点、定长运动、高低速、编码器实验例程

    实时位置及速度测量,编码器的实验讲解等。 主要有以下5个实验课程: (1)运动控制卡与丝杠滑台接线方法 (2)定长运动实验讲解 (3)
    发表于 11-26 10:38

    EtherCAT运动控制卡的硬件接线与C#的硬件外设读写与回零运动

    EtherCAT运动控制卡进行硬件接线与C#的硬件外设读写与回零运动
    的头像 发表于 11-08 16:26 2060次阅读
    <b class='flag-5'>EtherCAT</b><b class='flag-5'>运动</b><b class='flag-5'>控制卡</b>的硬件接线与C#的硬件外设<b class='flag-5'>读写</b>与回零<b class='flag-5'>运动</b>

    不止10倍提速!PCIe EtherCAT实时运动控制卡XPCIE1032H 等您评测!

    PCIe实时运动控制卡助力EtherCAT高速高精运动控制应用!
    的头像 发表于 06-26 10:14 7504次阅读
    不止10倍提速!<b class='flag-5'>PCIe</b> <b class='flag-5'>EtherCAT</b><b class='flag-5'>实时运动</b><b class='flag-5'>控制卡</b>XPCIE1032H 等您评测!

    PCIE超高速实时运动控制卡在六面外观视觉检测上的应用

    超高速视觉筛选机PCIe实时运动控制卡XPCIE1028
    的头像 发表于 08-22 09:31 775次阅读
    <b class='flag-5'>PCIE</b>超高速<b class='flag-5'>实时运动</b><b class='flag-5'>控制卡</b>在六面外观视觉检测上的应用

    超高速PCIe实时运动控制卡解决方案

    搭载Windows运动控制实时内核MotionRT7,完美解决传统PCI/PCle运动控制卡在Windows环境下
    发表于 09-16 10:16 691次阅读
    超高速<b class='flag-5'>PCIe</b><b class='flag-5'>实时运动</b><b class='flag-5'>控制卡</b>解决方案

    高速视觉筛选机PCIe实时运动控制卡XPCIE1028简介

    本次的深圳慕尼黑华南电子展正运动技术将携高速视觉筛选机PCIe实时运动控制卡XPCIE1028亮相。此外,我们还为您准备了的新互动模式,您将有机会赢得超值礼品!
    的头像 发表于 11-06 16:00 417次阅读
    高速视觉筛选机<b class='flag-5'>PCIe</b><b class='flag-5'>实时运动</b><b class='flag-5'>控制卡</b>XPCIE1028简介

    EtherCAT超高速实时运动控制卡XPCIE1032H上位机C#开发(一):驱动安装与建立连接

    超高速实时运动控制卡XPCIE1032H硬件介绍、交互原理以及指令说明。
    的头像 发表于 11-10 14:00 590次阅读
    <b class='flag-5'>EtherCAT</b>超高速<b class='flag-5'>实时运动</b><b class='flag-5'>控制卡</b>XPCIE1032H上位机C#开发(一):驱动安装与建立连接

    PCIE464 — 高速高精,超高实时性的PCIe EtherCAT实时运动控制卡

    运动高速高精运动控制卡家族迎来新成员!
    的头像 发表于 01-17 16:29 520次阅读
    <b class='flag-5'>PCIE464</b> — 高速高精,超高<b class='flag-5'>实时</b>性的<b class='flag-5'>PCIe</b> <b class='flag-5'>EtherCAT</b><b class='flag-5'>实时运动</b><b class='flag-5'>控制卡</b>

    超高实时性的EtherCAT运动控制卡——PCIE464

    运动技术PCIE464运动控制卡,提供高效的工业运动控制解决方案。用户可直接将
    发表于 01-26 14:39 840次阅读

    PCIE464M — 高速高精,超高速PCIe EtherCAT实时运动控制卡

    运动“高速高精运动控制卡”家族再添一员猛将!
    的头像 发表于 05-31 11:17 265次阅读
    <b class='flag-5'>PCIE464</b>M — 高速高精,超高速<b class='flag-5'>PCIe</b> <b class='flag-5'>EtherCAT</b><b class='flag-5'>实时运动</b><b class='flag-5'>控制卡</b>