EtherCAT从站协议栈代码笔记之cia402appl.c

首先解释一下CiA,CiA是一个组织,CAN in Automation,主要工作是推广CANopen协议。CANopen大概是这样的:

CANopen四问 http://www.gongkong.com/article/201412/55783.html

1. CANopen的起源,CANopen从何而来?

  德国Bosch公司于1983年研发CAN协议,用于汽车传动系统的网络通讯。之后称为国际标准ISO11898,目前CANopen由非营利组织CiA(CAN in Automaion)进行标准的起草及审核工作,基本的 CANopen 设备及通讯子协定定义在 CAN in Automation (CiA) draft standard 301. 中。针对个别设备的子协定以 CiA 301 为基础再进行扩充,如针对 I/O 模组的 CiA401 及针对运动控制的 CiA402

2. CANopen硬件的优势?

   CAN协议最大的突出特点是错误检测,限制和处理。当CAN设备检测到总线错误时,会拒绝之前接收到的位序列,然后发送“错误帧”,其完全由CAN芯片本身处理,不需要人为编程。

   支持多主站,类似Profibus DP,总线上每个设备都是主站,也是从站,免除了人为仲裁的过程,方便用户开发。

   报文短帧结构,CAN报文通常只有8个字节,数据帧非常短,在抗干扰能力上具有先天的优势。解释一下,为什末短帧结构抗干扰好?如果通讯报文长,发送一帧耗时也就长,加入遇到干扰,辛辛苦苦好不容发送了一条报文,结果因为干扰对方还没有收到,只能嚎啕大哭。

  成本低廉,CAN外设基本在现在主流芯片上都可以找到,20几块钱的MCU都支持CAN外设,有的还支持两个CAN。这里有CiA的积极推广作用。

3. CANopen软件优势?

   CANopen主要有CiA在推广,是非盈利组织,CANopen协议资料,网上一堆,任何人都可以下载到,我们常用的DS301(Draft Standand),DS402,CAN粉丝几乎人手一本,犹如葵花宝典,一定要珍藏一本。

   CANopen协议开发,开源项目非常多,CanFestival就是其中一个,我做过移植,在步科MT4414TE-CAN触摸屏,用在8位单片机上,此源码有点耗费资源,网上有很多基于MCU的精简源码。

   开发完整的CANopen协议栈,是很艰辛的工作,想要做好非常难。难点就在于你对CANopen协议的理解上,比如EMCY,复位节点,是否需要“NO Initialization”,heartbeat,Node guard是否需要?如何处理?这条不能算是其优点。

4. 为什么如此多公司在推广CANopen?

   CANopen对于运动控制来说是一款优秀的通讯协议,采用了面向对象的一些设计思路,比如对象字典,过程数据对象(PDO),服务数据对象(SDO)等等。

   CANopen在欧洲已成为最普通的协议,任何一家自动化公司都有CANopen的通讯接口,也成了低配。低配并不代表不好,只是说明其性价比更高。CANopen定义了完整的同步控制机制,使其成为主流的运动控制协议,除了在CAN总线上运行外,还被搬到了以太网上(CANopen over Ethernet),形成了著名的PowerLink,EtherCat工业以太网协议。


关于cia402appl.c

摘自 https://blog.csdn.net/huangxianxinalice/article/details/8706684

自version4.30以后的SSC都包含有一个简单的CiA402驱动架构的应用程序(如[1]描述)。这个应用提供了一个接口在电机控制程序和通信层之间。

下面的特性被支持

- CiA402 数据对象

- CiA402状态机

这种应用支持CSP模式和CSV运作模式。

CiA402特别的文件

cia402app.c:CiA402驱动架构的实施

cia492appl.h:驱动结构的数据结构,定义和轴的结构

所有有关电机控制器的值都被封装在TCiA402Axis这个数据结构里面(cia402appl.h里面)。配置参数和错误代码都直接被映射到相应的数据结构当中。过程数据被更新在输入/输出映射函数中(ecatappl.c)。目前,例子支持最多两个轴。这些轴在EtherCAT状态机从PREOP到SAFEOP转换时被更新。

在cia402appl.h当中定义的数据对象

数据对象从0x6000到0x67FF每提升一个0x800就对应一个轴


说了这么多,就是想说其实SSC代码中包含了对运动控制的支持,通过一个例程cia402appl.c实现。

既然这样,暂时不用的话,就可以先注释掉。而且从代码中也可以看到:

条件编译选项 CiA402_DEVICE从第41行到第1433行,在ecat_def.h中查看CiA402_DEVICE的定义,确实是0,所以整个cia402appl.c都可以从项目中移除。

评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值