<p>根据DS301的内容进行介绍</p><p>1、CAN总线</p><p>CAN标准报文</p><p>2、CANopen应用层协议</p><p>CANopen 协议不针对某种特别的应用对象,具有较高的配置灵活性,高数据传输能力,较低的实现复杂度。同时,CANopen 完全基于CAN 标准报文格式,而无需扩展报文的支持,最多支持127个节点,并且协议开源。</p><p>一个标准的CANopen 节点(下图),在数据链路层之上,添加了应用层。该应用层一般由软件实现,和控制算法共同运行在实时处理单元内。</p><p>一个标准的CANopen 节点</p><p>CANopen 应用层协议细化了CAN 总线协议中关于标识符的定义。定义标准报文的11 比特标识符中高4 比特为功能码,后7 比特为节点号,重命名为通讯对象标识符(COB-ID)。功能码将所有的报文分为7个优先级,按照优先级从高至低依次为:</p><p>网络命令报文(NMT)</p><p>同步报文(SYNC)</p><p>紧急报文(EMERGENCY)</p><p>时间戳(TIME)</p><p>过程数据对象(PDO)</p><p>服务数据对象(SDO)</p><p>节点状态报文(NMT Err Control)</p><p>7 位的节点号则表明CANopen 网络最多可支持127个节点共存(0 号节点为主站)。下表给出了各报文的COB-ID 范围。</p><p>NMT 命令为最高优先级报文,由CANopen 主站发出,用以更改从节点的运行状态。</p><p>SYNC 报文定期由CANopen 主站发出,所有的同步PDO 根据SYNC报文发送。EMERGENCY报文由出现紧急状态的从节点发出,任何具备紧急事件监控与处理能力的节点会接收并处理紧急报文。</p><p>TIME 报文由CANopen 主站发出,用于同步所有从站的内部时钟。</p><p>PDO 分为4 对发送和接收PDO,每一个节点默认拥有4对发送PDO 和接收PDO,用于过程数据的传递。</p><p>SDO 分为发送SDO 和接收SDO,用于读写对象字典。</p><p>MT Error Control报文由从节点发出,用以监测从节点的运行状态。</p><p>状态机</p><p>CANopen 的每一个节点都维护了一个状态机。该状态机的状态决定了该节点当前支持的通讯方式以及节点行为。</p><p>初始化时,节点将自动设置自身参数和CANopen 对象字典,发出节点启动报文,并不接收任何网络报文。</p><p>初始化完成后,自动进入预运行状态。在该状态,节点等待主站的网络命令,接收主站的配置请求,因此可以接收和发送除了PDO 以外的所有报文。</p><p>运行状态为节点的正常工作状态,接收并发送所有通讯报文。</p><p>停止状态为一种临时状态,只能接收主站的网络命令,以恢复运行或者重新启动。</p><p>CANopen节点状态转换图</p><p>CANopen节点状态转换条件</p><p>3、Device Model</p><p>Communication 提供通信对象和传输经过底层的数据的适当功能;</p><p>Object Dictionary 对此设备上的应用程序对象,通信对象和状态机的行为有影响的所有数据项的集合。</p><p>Application 由在处理环境方面的设备功能组成。</p><p>设备应用在数据条目中的完整描述在对象字典中叫设备子文件(device profile)</p><p>4、OD</p><p>每个节点维护一个对象字典(Object Dictionary, OD)。该对象字典保存了节点信息、通讯参数和所有的过程数据,是CANopen 节点的核心数据结构。上层应用程序也主要通过读写对象字典和CANopen 应用层进行交互。</p><p>CANopen 对象字典为两级数组结构,通过索引(16bits)和子索引(8bits)来编址。设备子文件中最重要的就是对象字典的描述,对象字典在slave节点中一般是在设备初始化写好的不会修改,而在master节点中可以在运行过程中动态修改,不修改的OD一般存在ROM中,而修改的存在RAM中。</p><p>由于它是由16bits的位索引,所以最多有65536个entries.</p><p>根据节点所支持的通讯方式,每一个节点都必须实现1000h~1FFFh 当中的一个必要子集,同时实现6000h 以上部分的数据区。数据区大小由节点的功能自行决定。1000h 以下部分所有的节点都不需实现。</p><p>对象字典作为在CAN总线上连接application和通信的媒介,其允许来自application数据在CAN 网络上进行交换。CANopen定义了可以进入对象字典的服务和通信对象。每一个入口通过索引和子索引来编址。在一个主索引里中的子索引入口的类型和属性可能会变化。</p><p>5、PDO</p><p>数据处理对象 (PDO) 特别适合快速的数据处理传输。通信模块针对这些数据</p><p>处理对象定义了一个PDO producer 和一个或多个PDO consumers。</p><p>PDO的传输是由事件触发的,这样的事件可以是代表一个PDO变量的变化;可</p><p>以是时间的过期或者是接收到一个特定的消息。</p><p>过程数据直接在一个CAN消息中传输而不需要协议头文件。一个PDO的长度是在0到8个字节之间。</p><p>PDOs包含在其映射参数和通信参数中。TPDOs 和RPDOs的最大的数可以被定义为512。</p><p>一个简单的CANopen设备一般支持4个PDOs。实际当中,对一个具体的CANopen 设备而言,其PDOs的个数由应用层或设备profile来决定的。</p><p>3.1PDO的结构—映射参数</p><p>在对象词典中一个PDO由临近的条目构成。所谓的映射参数定义了这些条目的连接。一个映射参数通过索引、分索引和位数定义数据源。</p><p>例如:</p><p>一个CAN消息最多有8个字节。这意味着当使用一个PDO时,在一个PDO中发送</p><p>8个字典的对象条目。</p><p>3.2PDO的结构—通信参数</p><p>为了传输一个PDO,通信参数定义了传输的性质和CAN标识符(CAN identifier)。</p><p>PDO通信参数是在对象词典的条目</p><p>(RPDOs: index 0x1400–0x15FF,TPDOs: 0x1800-0x19FF)</p><p>如果允许,映射参数在数据服务对象帮助下可以通过CAN修改。</p>
讯享网

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容,请联系我们,一经查实,本站将立刻删除。
如需转载请保留出处:https://51itzy.com/kjqy/187954.html