zoukankan      html  css  js  c++  java
  • CANopen学习笔记

    RTR-远程传输请求位

    RTR=0 数据帧

    RTR=1 远程帧

    IDE-标识符扩展位

    IDE=0:11bits 标准CAN

    IDE=1:29bits 扩展CAN

    SDO用来读写其他CANopen设备的对象字典

    PDO用来快速传输实时数据

    CANopen协议中定义了三种不同的通信关系:
    主机-从机模型(master-slave),仅用于网络管理(NMT),主机-从机模型不仅可以由确认的服务(握手)来实现,也可以由未确认的服务(广播)来实现。

    客户端-服务器模型(client-server),描述的是两个设备之间的通信关系,这种模型只用于SDO通信。

    生产者-消费者模型(producer-consumer)。PDO通信

    循环同步模式下(Cyclic&synchronous)主机通过RPDO写入数据到从机,从机先存储数据,部执行,待主机送出n个SYNC后,执行数据,执行完成后通过TPDO回传数据给主机。

    对PDO通讯参数的设置可以实现四种通讯方式:

    1. 同步传输.在收到SYNC消息后触发PDO发送,可以定义收到几个SYNC后触发一次TPDO,在有SYNC的CANopen网络中,SYNC就相当于一个网络节拍,数据根据节拍来进行固定周期的过程数据传输.比如网络中有一个压力传感器,一个温度传感器,一个物位传感器,网络中有一个HMI监控终端来实时监控三个传感器采集的数据,压力传感器可能检测的是一个快速的压力变化,那可以每隔200mS更新一次数据,温度可能需要1S更新一次数据,物位可能5S更新一次数据,(假设各传感器的数据采集周期都比数据更新周期小,如果大的话数据更新快可能没有意义,呵呵)现在我可以设置一个200mS周期的SYNC消息,压力传感器每收到一个SYNC就向HMI传输一次数据,温度传感器可以每隔5个SYNC传输一次数据,同样物位传感器就是每收到25个SYNC发送一次数据.这种通讯方式显得比较规矩,好管理,系统运行效率高,适合周期性数据更新的应用.

    非同步传输:

    2. 远程请求(remotely requested).在需要网络上某个节点的数据的时候,我发一个远程数据请求过去,对方在接收到请求后,把我要的数据给发过来,这种方式是在我需要的时候去主动获取. (远程请求可以在通讯设定对象字典里选择开还是不开)

    3. 定时发送(timer driven).这个有别于SYNC,它是在本节点实现周期发送,通过设置PDO参数,定一个周期,每隔固定的时间向网络上发送一次PDO,它与SYNC无关,在网络设计中主要按照传感器的数据采集速度和数据更新要求来设定定时周期.

    4. 事件触发(event driven).当节点的某个时间发生触发的一次数据发送,例如当某个接着报警开关的开关量采集节点的报警状态发生变化时,触发一次PDO将报警状态发送到网络上,使系统能够及时获得该报警状态信息.该方式是实时性最好的一种传输方式,特别适合系统运行出错报警和重大事件的及时处理上.

    A transmission type of 0 means that the

    message shall be transmitted after occurrence of the SYNC but acyclic (not periodically), only if an

    event occurred before the SYNC. A transmission type of 1 means that the message is transmitted with

    every SYNC object. A transmission type of n means that the message is transmitted with every n-th

    SYNC object. Asynchronous TPDOs are transmitted without any relation to a SYNC.

    The data of synchronous RPDOs received after the occurrence of a SYNC is passed to the application

    with the occurrence of the following SYNC, independent of the transmission rate specified

    image

    00: Acyclic & synchronous

    01~240:cyclic&synchronous

    255:asynchronous

    CANopen预定义连接集

    为了减小简单网络的组态工作量,CANopen 定义了强制性的缺省标识符(CAN-ID) 分配表。这些标志符在预操作状态下可用,通过动态分配还可修改他们。CANopen 设备必须向它所支持的通讯对象的提供相应的标识符。

    缺省 ID 分配表是基于 11位 CAN-ID,包含一个 4 位的功能码部分和一个 7 位的 节点 ID(Node-ID)部分。

    image

    image

    Client对server发送SDO数据使用600

    Client接收server返回的数据使用580

    写数据使用区域下载模式,读数据使用区域上传模式

    NMT (Network Management Object)

    网络管理讯息NM 遵循了主站/从站的架构进行NMT 服务。在这架构之下只有一个主站,而此主站可

    以搭配多个从站。所有的CANopen 节点都有自己专属的NMT 状态,而主站可以藉由NMT 的讯息去

    控制从站的状态。状态流程途如下:

    image

    CS(指令说明)

    01h=start_remote_node

    02h=stop_remote_node

    80h=enter_pre-operational

    81h=reset_node

    82h=reset_communication

    状态转换,由NMT实现。分别是NMT的COB-ID号(为000),加CS功能码,以及站号(如果站号设置0,为广播方式)

    image

    Examples

    To put the node 0x6 in operational mode : 000 01 06

    To put all the nodes in pre-operational mode : 000 80 00

    启动协议, 启动初始化完成后, slave 自动发送一个ID 为700h+address,内容为0 的消息。 Bootup

    image

    下面表明了各PDO 的配置对象。比如TX-PDO1,其传输内容的参数定义在1A00h 中定义,其通讯设置在1800h 中定义。

    image

    主机对从机发送PDO 200 300 400 500

    主机接收从机返回PDO 180 280 380 480

    image

                     默认的CAN-ID与CANopen设备的关系

    位时序

    由发送单元在非同步的情况下发送的每秒钟的位数称为位速率。一个位可分为 4 段。

    • 同步段(SS)

    • 传播时间段(PTS)

    • 相位缓冲段1(PBS1)

    • 相位缓冲段2(PBS2)

    这些段又由可称为 Time Quantum(以下称为Tq)的最小时间单位构成。

    1 位分为4 个段,每个段又由若干个Tq 构成,这称为位时序。

    1 位由多少个Tq 构成、每个段又由多少个Tq 构成等,可以任意设定位时序。通过设定位时序,多个单元可

    同时采样,也可任意设定采样点。

    各段的作用和 Tq 数如表11 所示。1 个位的构成如图32 所示。

                 表 11. 段及其作用

    image

    image

    PDO 8个字节,每两个字节对应一个映射索引

  • 相关阅读:
    小tips: HTTP 请求过程示例图及名称解释
    小tips:使用vuecli2脚手架配置vant自定义主题
    axios使用备忘录
    知乎问题:为什么很多web项目还是使用 px,而不是 rem?
    小tips:HTML5的ruby标签实现给汉字加拼音、details标签实现折叠面板、原生进度条progress和度量meter
    ES6之常用开发知识点:入门(一)
    GitBook相关使用以及配置笔记
    小tips:使用vue-cli脚手架搭建项目,关于eslint语法检测配置
    小tips:JS/CSS实现字符串单词首字母大写
    vue动态子组件的实现方式
  • 原文地址:https://www.cnblogs.com/smilingfrog/p/4618290.html
Copyright © 2011-2022 走看看