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

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

3天内不再提示

ADI两个电机同步控制方案 实现同步控制两个或更多步进电机的远程主机系统

analog_devices 来源:亚德诺半导体 作者:亚德诺半导体 2023-07-27 16:23 次阅读

工业4.0为远距离实现边缘智能带来了曙光,而10BASE-T1L以太网的数据线供电(PoDL)功能、高数据传输速率以及与以太网协议兼容也为未来发展铺平了道路。本文介绍如何在自动化和工业场景中集成新的10BASE-T1L以太网物理层标准,将控制器和用户界面与端点(例如多个传感器和执行器)连接起来,所有器件均使用标准以太网接口进行双向通信

10BASE-T1L是针对工业连接的物理层标准。它使用标准双绞线电缆,数据速率高达10 Mbps,电力传输距离长达1000米。低延迟和PoDL功能有助于实现对传感器或执行器等器件的远程控制。本文介绍如何实现一个能够同步控制两个或更多步进电机的远程主机系统,借此展示远距离实时通信的能力。

系统概述

图1是系统级应用的示意图。在主机端,由 ADIN1100和 ADIN1200以太网PHY负责管理标准链路和10BASE-T1L链路之间的转换,而在远程端,控制器通过 ADIN1110以太网MAC-PHY与链路接口,只需要一个SPI外设来交换数据和命令。准确的同步运动控制利用Trinamic TMC5160步进电机控制器和驱动器来实现,这些器件可生成六点斜坡用于定位,而无需在控制器上进行任何计算。选择这些元器件还能降低对微控制器所用外设、计算能力和代码大小的要求,从而支持使用更广泛的商用产品。此外,在不超过预定功耗限制的情况下,整个远程子系统可以直接由数据线供电;因此,只有媒介转换器板需要提供本地电

56ff4d06-2ba4-11ee-a368-dac502259ad0.png

图1.系统概览。

系统硬件

该系统由四个不同的板组成:

  • EVAL-ADIN1100板具有ADIN1200 10BASE-T/100BASE-T PHY,与ADIN1100 10BASE-T1L PHY搭配使用,可以将消息从一种物理标准转换为另一种物理标准。它可以针对不同的工作模式进行配置。本项目使用标准模式15(媒介转换器)。EVAL-ADIN1100板还集成了微控制器,用于执行媒介转换所需的基本配置和读取诊断信息。但是,它不能与发送和接收的消息交互;该板对通信完全透明。

  • EVAL-ADIN1110是远程器件控制器的核心。ADIN1110 10BASE-T1L MAC-PHY通过10BASE-T1L链路接收数据,并通过SPI接口将数据传输到板载Cortex-M4微控制器进行处理。该板还提供与Arduino Uno兼容的接头,可利用这些接头安装扩展板以添加更多功能。

  • TMC5160扩展板是一款基于Arduino扩展板外形尺寸定制的开发板。单个扩展板最多支持两个TMC5160 SilentStepStick板,多个扩展板可以堆叠在一起以增加可控电机的最大数量。所有驱动器共享相同的SPI时钟和数据信号,但片选线保持独立。这种配置支持两种通信模式:如果片选线各自置为有效,则微控制器可以与单个控制器通信——例如配置运动参数。相反,如果同时将多条片选线置为有效,则所有选定的驱动器同时接收相同的命令。后一种模式主要用于运动同步。该板还为StepStick提供了一些额外的输入电容,以降低电机启动时的电流峰值,并使正常工作期间的电流曲线更加平滑。它允许使用PoDL为最多配有两个NEMA17电机的整个系统供电(默认设置下,24 V时的最大传输功率为12 W)。该板还支持使用螺丝端子来简化与步进电机的连接,使控制器的相位输出更容易访问。

  • 两个EVAL-ADIN11X0EBZ板用于向系统添加PoDL功能,其中一个板用于媒介转换器,另一个用于EVAL-ADIN1110EBZ。该板是一个插件模块,可以安装在评估板的MDI原型接头上,并且可以配置为通过数据线提供和接收电力。

570e8d16-2ba4-11ee-a368-dac502259ad0.png

图2.装配好的EVAL-ADIN1110、EVAL-ADIN11X0EBZ和TMC5160扩展板。

软件

软件代码可供下载:利用10Base-T1L以太网进行远程运动控制 - 代码。

为了保持代码的轻量化并有效减少通信开销,没有在数据链路层之上实现标准通信协议。所有消息都是通过预定义固定格式的以太网帧的有效载荷字段进行交换。数据被组织成46字节的数据段,一个数据段由2字节的固定报头和44字节的数据字段组成。报头包括:一个8位器件类型字段,用于确定如何处理接收的数据;以及一个8位器件ID字段,如果存在多个相同类型的器件,可以通过ID来选择单个物理器件。

572d377a-2ba4-11ee-a368-dac502259ad0.png

图3.通信协议格式。

主机接口采用Python编写,以确保与Windows和Linux主机兼容。以太网通信通过Scapy模块进行管理,该模块允许在堆栈的每一层(包括以太网数据链路)创建、发送、接收和操作数据包。协议中定义的每种器件都有一个相应的类,其中包括用于存储要交换的数据的属性,以及一组可用于修改这些属性而不必直接编辑变量的方法。例如,若要在运动控制器的速度模式下更改运动方向,可以使用已定义的方法"setDirectionCW()"和"setDirectionCCW()",而不必手动为方向标志赋值0或1。每个类还包括一个"packSegment()"方法,该方法根据所考虑的设备器件的预定义格式,以字节数组的形式打包并返回与受控器件对应的数据段。

固件利用ChibiOS环境以C语言编写,其中包括实时操作系统(RTOS)、硬件抽象层(HAL)、外设驱动程序等工具,使代码可以在相似的微控制器之间轻松移植。项目基于三个自定义模块:

  • ADIN1110.c是驱动程序,用于支持通过SPI接口与ADIN1110交换数据和命令。它包括用于从器件寄存器读取和写入数据的低级通信函数,以及用于发送和接收以太网帧的高级函数。它还包括用于在10BASE-T1L收发器之间建立通信的函数。通知是否出现新帧的引脚在中断时读取,以尽量减少延迟。

  • TMC5160.c实现了控制TMC5160运动控制器所需的全部函数,配置为以全功能运动控制器模式运行。它实现了恒速和位置控制两种模式,允许使用六点斜坡进行平滑准确的定位。与多个运动控制器的通信通过单条SPI总线和多条独立的片选线实现。它还提供了一组函数和类型定义来简化运动同步。

  • Devices.c是从T1L链路接收的数据与连接到控制器的物理器件之间的接口。它包括与主机接口中定义的结构体类似的结构体,并且具有在每次接收到带有效数据的新帧时更新结构体的函数。此模块还用于确定每次更新结构体时执行哪些操作,例如,哪个物理运动控制器与在特定器件地址接收到的命令相关。

574a9338-2ba4-11ee-a368-dac502259ad0.png

图4.固件流程图。

系统亮点和验证

该项目旨在演示如何在自动化和工业场景中集成新的10BASE-T1L以太网物理层标准,将控制器和用户界面与端点(例如多个传感器和执行器)连接起来。此应用针对多个步进电机的远程实时控制,广泛用于工业中的低功耗自动化任务,但也可用于轻型机器人数控机床,例如台式3D打印机、台式铣床和其他类型的笛卡尔绘图仪。此外,它还能扩展用于其他类型的执行器和远程控制器件。与具有类似用途的现有接口相比,其主要优点包括:

  • 布线简单,只需要一根双绞线。由于支持通过数据线供电,低功耗器件(如传感器)可以直接借助此连接供电,从而进一步减少所需的布线和连接器数量,并降低整体系统的复杂性、成本和重量。

  • 使用PoDL标准的电力传输方式,通过数据线上叠加的直流电压为连接到网络的设备供电。这种耦合只需要使用无源元件就可以实现,接收端的电压经过滤波后,可以直接给器件或DC-DC转换器供电,不需要整流。只要适当确定用于此类耦合的元件大小,就可以实现一个高效率系统。本项目中使用评估板上安装的标准元件,整体效率约为93%(采用24 V电源,总负载电流为200 mA)。然而,这一结果还有很大的改进余地,事实上,大部分损耗是电源路径上无源元件的电阻压降造成的。

  • 用途广泛,既可用于最后一公里连接,也可用于端点连接。ADI 10BASE-T1L器件针对长达1.7公里的距离进行了测试。它们还支持菊花链连接,这对系统复杂性的影响很小。例如,使用 ADIN2111 双端口低复杂度交换芯片可以设计集成菊花链功能的器件,使链路也适用于端点网络。

  • 易于与已集成以太网控制器的现有设备连接,包括个人电脑和笔记本电脑。数据帧遵循以太网数据链路标准,所有与以太网兼容的协议都可以在其之上实现,因此只需要一个媒介转换器作为桥接器与标准以太网链路连接。例如,本项目中使用的评估板EVAL-ADIN1100可用作透明媒介转换器的参考设计,它仅需要两个以太网PHY和一个可选微控制器用于配置和调试。

  • 高达10 Mbps的高数据速率,全双工。此特性与菊花链拓扑(在其上可以实现基于工业以太网的协议)相结合,使其可用于需要确定性传输延迟的实时应用。

  • 根据应用的安全性和稳健性要求,收发器和媒介之间的隔离可以通过容性耦合或磁耦合实现。

我们对该系统进行了多次测量以评估其性能。所有用于与ADIN1110收发器和TMC5160控制器通信的外设,都配置为使用标准硬件配置可达到的最大可能速度。考虑到微控制器具有80 MHz系统时钟,对于运动控制器和ADIN1110收发器,SPI外设的数据速率分别设置为2.5 MHz和20 MHz。对于TMC5160,通过调整微控制器时钟配置并向IC提供外部时钟信号,SPI频率可进一步提高至8 MHz,而对于ADIN1110,数据手册规定的上限值为25 MHz。

对延迟进行评估,请求数据和收到应答帧之间的总时间大约为4 ms(500个样本的平均值,使用Wireshark协议分析仪计算数据请求和相应应答的时间戳之间的差值测得)。我们还进行了其他评估,以确定系统的哪些部分是导致此延迟的原因。结果表明,主要原因是RTOS的延时函数,其预留的最小延迟为1 ms,用于设置TMC5160的读写操作间隔,而所需的延迟约为几十纳秒。这可以通过定义基于定时器的其他延迟函数来改进,使延迟间隔可以更短。

导致延迟的第二个原因是用于接收帧的Scapy函数,调用此函数后至少需要3 ms的设置时间。在实际应用中,直接使用操作系统的网络适配器驱动程序来开发接口,而不借助Scapy等第三方工具也能有所改进。然而,这样做也有一些缺点,包括会失去与不同操作系统的兼容性并增加代码复杂度。

575d9e60-2ba4-11ee-a368-dac502259ad0.png

图5.电源路径的简化方案。

通过切换GPIO并使用示波器测量高电平周期,可测得微控制器上实现回调的准确执行时间。实测执行时间包括读取和解析接收到的帧以及向运动控制器发送命令的函数执行时间。

577ba63a-2ba4-11ee-a368-dac502259ad0.png

表1.实测执行时间

第二组测量旨在评估使用PoDL为远程器件供电时传输路径上的功率损耗。我们用设置为不同电流的电子负载代替运动控制器扩展板进行测试,从0.1 A到0.5 A,步长为100 mA,以确定哪些元件对功率损耗有较大影响,进而确定如何改进设计以实现更高的额定电流。

578ad132-2ba4-11ee-a368-dac502259ad0.png

表2.系统效率

579b55e8-2ba4-11ee-a368-dac502259ad0.png

图6.每个无源元件的功率损耗与电流的关系。

结果表明,桥式整流器肖特基二极管D2是造成损耗的主要因素,两者均用于极性反接保护。两个元件可以用基于MOSFET晶体管和理想二极管控制器的类似电路代替,以获得更高的效率,同时也不会失去上述保护能力。在较高电流下,用于输入和输出电源滤波的耦合电感的直流电阻占主导地位,因此为了提高电流能力,还需使用具有更高额定电流的类似电感。

结论

工业4.0正在推动智能自动化的发展。ADI Trinamic技术与ADIN1100、ADIN1110、10BASE-T1L收发器配合使用,有助于控制器对远至1700米的传感器和执行器实现远程控制,而无需边缘供电。通过可靠的远程控制方法,可以轻松地在更远距离实时控制步进电机,而不必牺牲任何性能或速度。这些系统解决方案将助力工业转型,有望进一步缩短响应时间,充分提高性能。


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

    关注

    143

    文章

    45773

    浏览量

    240052
  • 电机控制
    +关注

    关注

    3465

    文章

    1704

    浏览量

    264450
  • 以太网
    +关注

    关注

    40

    文章

    5078

    浏览量

    166239
  • 步进电机
    +关注

    关注

    149

    文章

    2930

    浏览量

    146073
  • 远程控制
    +关注

    关注

    4

    文章

    546

    浏览量

    34517
  • 亚德诺
    +关注

    关注

    6

    文章

    4680

    浏览量

    15777
  • 工业4.0
    +关注

    关注

    48

    文章

    1936

    浏览量

    117628

原文标题:如何实现能够同步控制两个或更多步进电机的远程主机系统?

文章出处:【微信号:analog_devices,微信公众号:analog_devices】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    89C52驱动两个步进电机的问题

    思路两个步进电机模拟两个轮子使二驱车能够实现加速 减速 转向 既做到匀速加速减速左右转其中非转向时
    发表于 04-14 14:48

    单片机控制两个舵机和一步进电机

    想用STC89C52单片机控制两个MG995舵机和一24V相四线步进电机同时转动,菜鸟一
    发表于 04-13 18:59

    高性能伺服控制FMC板电机控制解决方案

    概述AD-FMCMotcon1-EBZ提供有效的电机控制解决方案,用于不同类型的电机中。每个FPGA接口(FMC)可驱动一
    发表于 10-16 19:39

    单片机能否同时控制两个步进电机转动?

    如题做的板子要控制电机,现在是分时控制,一转的时候,另一不转。如果把
    发表于 03-25 15:55

    ARDUINO:控制两台步进电机同步运转 相关资料下载

    *v2, 才能保证以上的同步结果。本文程序是在太极创客程序的基础上对其修改后的,接线方式完全保持不变。主要的修改如下:1, data(电机指令参数)和 stepperNum(控制电机
    发表于 07-08 08:29

    如何用FPGA通过两个按键控制步进电机的启动和停止?

    一、工程简介1、本工程实现的功能:用FPGA通过两个按键控制步进电机的启动和停止,硬件包括:黑金开发板、
    发表于 07-08 07:41

    如何去控制42与57两个步进电机

    功夫不负有心人,终于把这个做出来了,本项目为控制42,57两个步进电机,带动齿轮,进行上下左右转动,四限位金属传感器限制位置。传感器配置过
    发表于 07-08 08:34

    电机的力矩控制当前存在的两个主要流派

    电机的力矩控制当前存在的两个主要流派是磁场定向控制FOC和直接转矩控制DTC,当然这
    发表于 08-27 07:59

    用arduino和步进电机控制器驱动两个步进电机

    Arduino 2560控制两个步进电机用arduino和步进电机
    发表于 08-31 06:13

    如何利用PI控制算法去实现保持两个电机转速的同步

    如何运用STM32F407定时器的PWM功能分别驱动两个直流电机的运动?如何利用PI控制算法去实现保持两个
    发表于 09-18 09:27

    如何去实现两个步进电机独立控制互不干扰呢

    如何去实现两个步进电机独立控制互不干扰呢?怎样用数码管去显示步进
    发表于 10-15 08:26

    怎样通过运动悬挂系统控制两个步进电机

    怎样通过运动悬挂系统控制两个步进电机呢?其具体代码该如何去实现呢?
    发表于 12-21 07:43

    两个直流24伏3420有刷电机怎么实现同步呢?

    两个直流24伏3420有刷电机怎么实现同步,就是不接电源的情况下用手转动一另一也跟着转,现有
    发表于 03-20 14:16

    ADI电机控制开发平台控制两个电机同步运动

    演示由一款ADI电机控制开发平台驱动的两个电机同步运动,该平台通过一个Fieldbus网络连接
    的头像 发表于 06-21 06:00 1895次阅读

    如何使用一个PLC控制两个或多个伺服电机同步运行

    如何用一个PLC控制两个或多个伺服电机同步运行主电机速度改变时,其它伺服电机也跟着
    发表于 07-18 08:00 21次下载
    如何使用一个PLC<b class='flag-5'>控制</b><b class='flag-5'>两个</b>或多个伺服<b class='flag-5'>电机</b><b class='flag-5'>同步</b>运行