基于SEED-RT118X套件开发EtherCat从站(七)CiA402

原创 艾睿电子技术和方案 2024-07-25 12:00

继上一期 基于SEED-RT118X套件开发EtherCat从站(六)XML文件,这期为您带来该系列的最后一篇。


CANopen 协议


SEED-RT118X 在使用 EtherCAT 控制电机时,采用了 CANopen 应用层协议中的 CiA402 规范。为了更好地理解 CiA402 的工作原理,我们先简要回顾一下 CANopen 协议。CANopen 是一个基于 CAN 协议的通信协议,广泛应用于工业自动化领域。PDO(过程数据对象)和 SDO(服务数据对象)是 CANopen 协议中的核心概念,用于在网络节点之间传输数据和提供服务。


在 CANopen 协议中,每个节点都维护一个称为对象字典(Object Dictionary,OD)的数据结构。对象字典是节点信息的中央仓库,包含了节点的配置信息、通信参数以及过程数据(PDO)等。上层应用通过与对象字典的交互来实现通信和控制。PDO 特别适合快速的数据处理与传输,因为它们被设计为直接映射到 CAN 帧,从而减少了处理时间和网络延迟。


在对象字典中,PDO 是由多个条目(Entry)构成的,每个条目都通过特定的索引(Index)、子索引(Subindex)和位数(Bit Length)来定义其数据源和属性。这种结构化的组织方式使得 PDO 的配置和管理变得简单而高效。


现在,我们回到 EtherCAT 和 CoE(CAN over EtherCAT)的话题。EtherCAT 是一种高性能的工业以太网协议,用于实时数据交换和分布式控制。CoE 是 EtherCAT 中用于支持 CANopen 协议的一个子协议,它允许 EtherCAT 网络中的节点使用 CANopen 的对象字典和通信机制。


CiA402的实现方式


在 SEED-RT118X 的实现中,我们可以看到对 CiA402 的支持。CiA402 是一个针对驱动器和运动控制器的 CANopen 应用层规范。在 SEED-RT118X 的源代码中,如 CiA402appl.c 文件中的 UINT16 CiA402_Init(void) 函数,就包含了与 CiA402 相关的初始化代码。这部分代码负责设置和配置与 CiA402 相关的对象字典条目、PDO 映射等,以支持特定的电机控制功能。


通过深入分析这些代码,我们可以更深入地理解 CiA402 在 EtherCAT 控制系统中的应用和实现方式。CiA402_Init(void) 函数如下所示:


可以看到这段代码初始化了几个对象字典(AxisCnt),每个电机轴都对应一个对象字典(Object Dictionary),用于存储和管理该轴的状态、参数和实时数据。这些对象字典条目通过特定的索引和子索引进行唯一标识,并被初始化以指向实际的变量或数据结构。并且对对象字典中每一个条目进行了初始化,使其指向一个实际的变量。目前例程中并不是所有条目都有用到,我们看一个实际用到的条目:


索引0x6064的条目通常用于存储电机的实际位置值。在初始化过程中,该条目会被关联到LocalAxes[AxisCnt].Objects.objPositionActualValue这个变量上,从而实现了实际变量与对象字典条目的关联。


为了通过网络传输这些变量,我们需要用到PDO,为了实现PDO传输,我们需要将PDO与对象字典条目进行关联或映射。


在对象字典的前几个条目中,0x1600、0x1601、0x1602等通常用于定义RxPDO(接收过程数据对象)的映射方式,而0x1A00、0x1A01、0x1A02等则用于定义TxPDO(发送过程数据对象)的映射方式。这些映射方式对应于电机的不同工作模式,如CSV/CSP、CSV和CSP等。需要注意的是,这三种映射方式中,通常只有一种会被激活使用,以适应当前的工作模式。


在CiA402_Init(void)函数的开始部分,通过以下代码:


每个电机轴的对象字典和PDO映射都会被初始化为预定义的默认值,这些默认值存储在DefCiA402ObjectValues这个变量中。以case 0x1601为例,其具体内容为:{3, {0x60400010,0x607A0020,0x00000010 }}, /*TOBJ1601*/,这里,3表示PDO映射包含三个条目。接下来的三个对(索引和大小)定义了PDO中应包含的数据:

  • 0x6040 和 0x0010 表示从对象字典索引0x6040开始,传输16位(0x10)的数据。

  • 0x607A 和 0x0020 表示从对象字典索引0x607A开始,传输32位(0x20)的数据。

  • 最后一个用于填充对齐。


表示0x1601这种映射方式下RxPDO映射到0x6064以及0x607A条目的内容。

另外我们再关注一下UINT16 CiA402_Init(void)函数中下面这段代码:

因为我们知道SEED-RT118X这个从站可以同时控制最多四个电机,因此不同电机之间对象字典索引是不能一样的,这段代码就是使得每个电机的对象字典索引有一个偏移量从而进行区分。


通过以上代码我们可以确定从站设备的配置中,存在三种PDO(过程数据对象)映射方式,这些映射方式对应于不同的操作模式或数据传输需求。然而,在任何给定的时间,从站只会使用其中的一种映射方式来传输数据。


ApplicationObjDic字典是一个包含应用层相关参数的对象字典。在这个字典中,条目0x1C12和0x1C13(或类似的索引)通常用于存储RxPDO(接收PDO)和TxPDO(发送PDO)的映射配置信息。这两个变量,即sRxPDOassign和sTxPDOassign,定义了从站应该接收和发送哪些数据,以及这些数据在PDO中的布局。


我们再看一下函数void APPL_OutputMapping(UINT16* pData)和void APPL_InputMapping(UINT16* pData),这两个函数用于处理PDO数据的映射。在这些函数中,switch语句用于根据sTxPDOassign.aEntries[j]或sRxPDOassign.aEntries[j]的某个部分(通常是低四位,通过& 0x000F得到)来决定当前处理的是哪种PDO映射。


通过修改ApplicationObjDic字典中的0x1C12和0x1C13条目(即sRxPDOassign和sTxPDOassign变量),开发人员可以动态地调整RxPDO和TxPDO的数据内容。这允许在运行时更改数据传输的格式和类型,以适应不同的操作模式或应用需求。

在TwinCAT主站软件中,这些修改通常是在工程文件的相应配置页面(如Slots标签页)中进行的(目前从站只支持CSP模式)。


我们看一下下图标签页Startup里面的内容也会随之改变。


其中前两条刚好是修改0x1C12和0x1C13的内容,完成这些修改后,相关的配置变化会在从站状态机从Pre-Operational(预操作)状态转换到Safe-Operational(安全操作)状态时生效。这个通信过程通常是通过EtherCAT邮箱机制(SDO,服务数据对象)进行的。


具体到从站代码层面,当主站通过SDO邮箱机制发送新的PDO映射配置时,从站会接收到这些配置数据,并在UINT8 SDOS_SdoInd(TINITSDOMBX MBXMEM *pSdoInd)这样的函数中处理这些数据。这个函数负责解析主站发送的SDO请求,并根据请求的内容更新从站内部的对象字典(如0x1C12和0x1C13条目),从而修改RxPDO和TxPDO的映射配置。


一旦这些配置更新完成,从站的过程数据(PDOs)就会根据新的映射配置进行传输,从而可能改变从站的工作模式或数据传输格式。这个过程允许开发者在运行时动态地调整从站的行为,以适应不同的应用需求或操作场景。


总结来说,通过TwinCAT主站软件修改PDO映射配置,并利用EtherCAT的SDO邮箱机制将这些配置下发到从站,可以实现从站过程数据的动态修改和工作模式的灵活调整。


到这里,对象字典初始化以及配置都完成,主站就可以通过过程数据对从站进行控制了。我们以一个电机为例,在TwinCAT中可以看到实际使用的过程数据,如下图所示:


0x6041表示Status Word,0x6064表示ActualPosition,这两个数据传输方向为从机到主站,0x6040表示Control Word,0x607A表示TargetPosition,这两个数据传输方向为主站到从站。


运行状态机


主站与从站的通信接口已经配置完成了,为了实现CiA402规范定义的电机控制,从站必须运行一个状态机来管理其操作状态和响应主站的控制命令。这个状态机定义了从站在不同阶段的操作能力和状态,以便主站可以根据这些状态来发送适当的控制命令。从站主要通过函数CiA402_StateMachine()实现CiA402的状态转换,包含以下几个状态:


与此同时,主机通过读取从机的Status Word(索引0x6041)来了解从机的当前状态。尽管Status Word的某些位可能与状态机的状态相对应,但两者并不完全相同。Status Word提供了关于从机当前状态和可能发生的故障或警告的详细信息。,Status Word各bit含义如下:


主机通过Control Word(索引0x6040)向从机发送控制命令,以改变其操作状态或触发特定的动作。Control Word的各个位定义了不同的控制命令。控制字Control Word 各bit含义如下:


在IGH主站控制从站CiA402状态机的一个例程中,函数axis_start根据从机的当前状态(通过status参数传入)和所需的工作模式(mode参数)来决定发送何种:


在CiA402协议中,当从站成功达到STATE_OPERATION_ENABLED状态后,这标志着从站已准备好接收并执行来自主站的控制命令。此时,主站可以开始通过发送TargetPosition(索引0x607A)来指定从站电机的目标位置,并可以通过读取ActualPosition(索引0x6064)来监控电机的实时位置。

相关阅读


艾睿电子技术和方案 艾睿为数十万家领先的技术制造商和服务商驱动创新,致力于发展可帮助提升商业价值及改善生活的科技解决方案
评论
  • 彼得·德鲁克被誉为“现代管理学之父”,他的管理思想影响了无数企业和管理者。然而,关于他的书籍分类,一种流行的说法令人感到困惑:德鲁克一生写了39本书,其中15本是关于管理的,而其中“专门写工商企业或为企业管理者写的”只有两本——《为成果而管理》和《创新与企业家精神》。这样的表述广为流传,但深入探讨后却发现并不完全准确。让我们一起重新审视这一说法,解析其中的矛盾与根源,进而重新认识德鲁克的管理思想及其著作的真正价值。从《创新与企业家精神》看德鲁克的视角《创新与企业家精神》通常被认为是一本专为企业管
    优思学院 2025-01-06 12:03 119浏览
  • 根据环洋市场咨询(Global Info Research)项目团队最新调研,预计2030年全球无人机锂电池产值达到2457百万美元,2024-2030年期间年复合增长率CAGR为9.6%。 无人机锂电池是无人机动力系统中存储并释放能量的部分。无人机使用的动力电池,大多数是锂聚合物电池,相较其他电池,锂聚合物电池具有较高的能量密度,较长寿命,同时也具有良好的放电特性和安全性。 全球无人机锂电池核心厂商有宁德新能源科技、欣旺达、鹏辉能源、深圳格瑞普和EaglePicher等,前五大厂商占有全球
    GIRtina 2025-01-07 11:02 68浏览
  • 这篇内容主要讨论三个基本问题,硅电容是什么,为什么要使用硅电容,如何正确使用硅电容?1.  硅电容是什么首先我们需要了解电容是什么?物理学上电容的概念指的是给定电位差下自由电荷的储藏量,记为C,单位是F,指的是容纳电荷的能力,C=εS/d=ε0εrS/4πkd(真空)=Q/U。百度百科上电容器的概念指的是两个相互靠近的导体,中间夹一层不导电的绝缘介质。通过观察电容本身的定义公式中可以看到,在各个变量中比较能够改变的就是εr,S和d,也就是介质的介电常数,金属板有效相对面积以及距离。当前
    知白 2025-01-06 12:04 173浏览
  • 根据Global Info Research项目团队最新调研,预计2030年全球封闭式电机产值达到1425百万美元,2024-2030年期间年复合增长率CAGR为3.4%。 封闭式电机是一种电动机,其外壳设计为密闭结构,通常用于要求较高的防护等级的应用场合。封闭式电机可以有效防止外部灰尘、水分和其他污染物进入内部,从而保护电机的内部组件,延长其使用寿命。 环洋市场咨询机构出版的调研分析报告【全球封闭式电机行业总体规模、主要厂商及IPO上市调研报告,2025-2031】研究全球封闭式电机总体规
    GIRtina 2025-01-06 11:10 104浏览
  • 大模型的赋能是指利用大型机器学习模型(如深度学习模型)来增强或改进各种应用和服务。这种技术在许多领域都显示出了巨大的潜力,包括但不限于以下几个方面: 1. 企业服务:大模型可以用于构建智能客服系统、知识库问答系统等,提升企业的服务质量和运营效率。 2. 教育服务:在教育领域,大模型被应用于个性化学习、智能辅导、作业批改等,帮助教师减轻工作负担,提高教学质量。 3. 工业智能化:大模型有助于解决工业领域的复杂性和不确定性问题,尽管在认知能力方面尚未完全具备专家级的复杂决策能力。 4. 消费
    丙丁先生 2025-01-07 09:25 80浏览
  • 村田是目前全球量产硅电容的领先企业,其在2016年收购了法国IPDiA头部硅电容器公司,并于2023年6月宣布投资约100亿日元将硅电容产能提升两倍。以下内容主要来自村田官网信息整理,村田高密度硅电容器采用半导体MOS工艺开发,并使用3D结构来大幅增加电极表面,因此在给定的占位面积内增加了静电容量。村田的硅技术以嵌入非结晶基板的单片结构为基础(单层MIM和多层MIM—MIM是指金属 / 绝缘体/ 金属) 村田硅电容采用先进3D拓扑结构在100um内,使开发的有效静电容量面积相当于80个
    知白 2025-01-07 15:02 75浏览
  • 每日可见的315MHz和433MHz遥控模块,你能分清楚吗?众所周知,一套遥控设备主要由发射部分和接收部分组成,发射器可以将控制者的控制按键经过编码,调制到射频信号上面,然后经天线发射出无线信号。而接收器是将天线接收到的无线信号进行解码,从而得到与控制按键相对应的信号,然后再去控制相应的设备工作。当前,常见的遥控设备主要分为红外遥控与无线电遥控两大类,其主要区别为所采用的载波频率及其应用场景不一致。红外遥控设备所采用的射频信号频率一般为38kHz,通常应用在电视、投影仪等设备中;而无线电遥控设备
    华普微HOPERF 2025-01-06 15:29 127浏览
  • 在智能家居领域中,Wi-Fi、蓝牙、Zigbee、Thread与Z-Wave等无线通信协议是构建短距物联局域网的关键手段,它们常在实际应用中交叉运用,以满足智能家居生态系统多样化的功能需求。然而,这些协议之间并未遵循统一的互通标准,缺乏直接的互操作性,在进行组网时需要引入额外的网关作为“翻译桥梁”,极大地增加了系统的复杂性。 同时,Apple HomeKit、SamSung SmartThings、Amazon Alexa、Google Home等主流智能家居平台为了提升市占率与消费者
    华普微HOPERF 2025-01-06 17:23 145浏览
  • PLC组态方式主要有三种,每种都有其独特的特点和适用场景。下面来简单说说: 1. 硬件组态   定义:硬件组态指的是选择适合的PLC型号、I/O模块、通信模块等硬件组件,并按照实际需求进行连接和配置。    灵活性:这种方式允许用户根据项目需求自由搭配硬件组件,具有较高的灵活性。    成本:可能需要额外的硬件购买成本,适用于对系统性能和扩展性有较高要求的场合。 2. 软件组态   定义:软件组态主要是通过PLC
    丙丁先生 2025-01-06 09:23 85浏览
  •     为控制片内设备并且查询其工作状态,MCU内部总是有一组特殊功能寄存器(SFR,Special Function Register)。    使用Eclipse环境调试MCU程序时,可以利用 Peripheral Registers Viewer来查看SFR。这个小工具是怎样知道某个型号的MCU有怎样的寄存器定义呢?它使用一种描述性的文本文件——SVD文件。这个文件存储在下面红色字体的路径下。    例:南京沁恒  &n
    电子知识打边炉 2025-01-04 20:04 100浏览
  • 本文介绍Linux系统更换开机logo方法教程,通用RK3566、RK3568、RK3588、RK3576等开发板,触觉智能RK3562开发板演示,搭载4核A53处理器,主频高达2.0GHz;内置独立1Tops算力NPU,可应用于物联网网关、平板电脑、智能家居、教育电子、工业显示与控制等行业。制作图片开机logo图片制作注意事项(1)图片必须为bmp格式;(2)图片大小不能大于4MB;(3)BMP位深最大是32,建议设置为8;(4)图片名称为logo.bmp和logo_kernel.bmp;开机
    Industio_触觉智能 2025-01-06 10:43 87浏览
  • By Toradex 秦海1). 简介嵌入式平台设备基于Yocto Linux 在开发后期量产前期,为了安全以及提高启动速度等考虑,希望将 ARM 处理器平台的 Debug Console 输出关闭,本文就基于 NXP i.MX8MP ARM 处理器平台来演示相关流程。 本文所示例的平台来自于 Toradex Verdin i.MX8MP 嵌入式平台。  2. 准备a). Verdin i.MX8MP ARM核心版配合Dahlia载板并
    hai.qin_651820742 2025-01-07 14:52 45浏览
我要评论
0
点击右上角,分享到朋友圈 我知道啦
请使用浏览器分享功能 我知道啦