ISO 11989只规定了CAN总线的物理层和链路层协议,在实际应用中,为保障不同厂家设备的兼容性,需要统一CAN总线的应用层协议。常见的应用层协议有:SAE J1939、CANOpen和DeviceNet。

  1. SAE J1939
    SAE J1939基于CAN2.0B,通信速率250kbit/s,最多可带30个设备,最大总线长度可达40 m,节点线最长1米。SAE J1939定义了29位Indentifier和数据域的使用方法。定义协议数据单元(PDU = Indentifier+数据域),PDU格式:

    优先权P:值越小,报文的优先权越高。

参数组编号PGN:参数组编号唯一标识一个参数组,表征报文的内容和用途,确定报文的类型和传播数据需要的帧数目。

扩展数据页EDP与数据页DP:没啥特别解释的,分类用的。

PDU格式PF:PDU有两种类型PDU1和PDU2,PDU1向特定地址发送报文,PDU2向全局地址发送报文。当PF为0239时,表征报文为PDU1;当PF为240255时,表征报文为PDU2。

特定域PS:功能由PF决定,当PF为PDU1时,PS表示目标地址;当PF为PDU2时,与PF的4个最低有效位能够共同确定4096个PDU2格式参数组。

源地址SA:发送消息的电控单元(ECU)地址。

数据域:CAN2.0的数据域最多支持8字节的数据,如果PDU的数据小于等于8字节,1个PDU用1个CAN2.0帧传输即可;如果PDU的数据大于8字节,就需要在发送时进行拆包,在接收时进行重组。接收端如何识别是否需要重组以及怎么重组呢?J1939的做法是在拆包的情况下,将8字节的数据区的第一个字节用于表示拆包后的序号(1-255);因此,最长的PDU为255×7字节。
例子:

;----------------------------------------------------------------------  (特定目标地址通讯)PDU1P    R     DP      PF       PS(DA)          SA      Data Field3    1     1       8         8              8       0-64;----------------------------------------------------------------------  (广播)PDU2P    R     DP      PF       PS(GE)          SA      Data Field3    1     1       8        8               8       0-64;---------------------------------------------------------------------

18FEDF00

110| 0 0 | 11111110 11011111 | 00000000
优 | | |
先 | | PGN | 源地址
级 | | |

优先级:110 ro 6
参数组:FEDF or 65247DEC
源地址:00H

及就是PF>240,则没有目标地址,只有源地址00XXXX
PF<240,则有目标地址,有源地址,PGN既就是00XX00

TP.CM报文的PF=EC,EC<F0,所以TP.CM的CANID是包含目标地址的,但是目标地址是FF,是广播地址,而PGN则应该是00EC00,而不是00ECFF。

tp.cm和tp.dt报文说明,为什么计算的pgn不对,1939里的GPN如何计算,什么时候的报文没有目标地址。相关推荐

  1. Transaction Processing Monitor(事务处理监视器),TP服务,TP监控服务

    #Transaction Processing Monitor(事务处理监视器) @[TOC](康康的笔记-Transaction Processing Monitor(事务处理监视器)) Trans ...

  2. java解析五元组,解析报文 解析出packet的五元组(源地址、目标地址、源端口、目标端口、协议号)信息和当前包的流量大...

    我们重点关注五元组+状态+inode号分别在第2.3.4.11列 进程文件描述符 网络状态文件/proc/net/tcp"0B": "CLOSING" 在lin ...

  3. java版tp指令,VAG TP 2.0完整的AT命令列表

    我试图在斯柯达Rapid 2009模型中找到各种ECU的DTC . 我使用的是OBDLink SX(elm 327芯片)和Putty(类似于HyperTerminal) https://jazdw.n ...

  4. 手机电容TP和电阻TP原理简介

    电容屏手机是只能用手指进行操作,不可以用普通的手写笔操作,但可以用专用的电容屏手写笔,但这对于电容屏来说没有多大必要:电阻屏手机可以用手指,也可以用手写笔操作. 目前人们对用手指进行触控操作的电容屏手 ...

  5. 聚合支付里各扫码支付的返回报文样例

    qq扫码返回url: https://myun.tenpay.com/mqq/pay/qrcode.html?_wv=1027&_bid=2183&t=6V1118c62c2a8a96 ...

  6. J1939协议中CAN ID 与PGN互换--遇到了广播报文

    Ref:J1939 Explained - A Simple Intro (2021)– CSS Electronics Ref:CAN 帧ID 与J1939 PGN 转换例子_horse_2007s ...

  7. BMS与充电机控制导引

    目录 1.通讯单元 1.1 can数据帧 1.1.0 硬件数据单元 1.1.1 协议数据单元(PDU) 1.1.2 参数组编号(PGN) 1.1.3 可疑参数号(SPN) 2.充电流程,数据交互流程 ...

  8. 基于ip地址的客户识别原理_使用 LVS 实现负载均衡原理及安装配置

    [141] 负载均衡集群是 load balance 集群的简写,翻译成中文就是负载均衡集群.常用的负载均衡开源软件有nginx.lvs.haproxy,商业的硬件负载均衡设备F5.Netscale. ...

  9. net 模式中虚拟机连不上本机oracle_高并发与负载均衡(三种负载模式)

    随着互联网的飞速发展,传统的昂贵的大容量高性能服务器(F5 BIG-IP.Citrix NetScaler.A10)已经越来越应付不了日益增长的业务需求了,而高并发和负载均衡所带来的高可靠/高可用/低 ...

最新文章

  1. mxnet java 例子_mxnet(gluon) 实现DQN简单小例子
  2. windows下训练FCN模型所遇到的问题
  3. HDU2021多校第五天 1009 Array-树状数组求二阶前缀和
  4. 论文解读:Attention is All you need
  5. mysql cve 2016 3521_MySQL-based databases CVE -2016-6663 本地提权
  6. c语言sort函数_C语言经典面试题目及答案详解(二)
  7. android快速搭建界面,怎么样能快速搭建一个Android APP的界面和框架?
  8. C语言链表的操作和讲解
  9. 阶段3 1.Mybatis_07.Mybatis的连接池及事务_2 连接池介绍
  10. C# 通过string路径 获取文件名、文件扩展名、路径
  11. ZTE10机顶盒中心服务器,中兴机顶盒现场配置工具ZTE_STB_Tools_V1.1.0_T07.01最新版
  12. Kettle数据抽取实战之四:网页数据抽取
  13. java写一个泡泡龙小游戏
  14. Opencv入门(播放AVI视频)
  15. 牛牛的宝可梦Go(dp+floyd)
  16. 固定IP地址及其重启后地址更改的解决方法
  17. 2015自然基金一审结果:项目申请的共性问题。
  18. 【数据增强】用cv2旋转图像并自定义填充背景颜色(主要用到cv2.getRotationMatrix2D 和 cv2.warpAffine)
  19. format函数用法详解
  20. unzip error 22 - Invalid argument

热门文章

  1. 高级项目管理师专用,Pareto(帕累托)图制作的七大步骤
  2. 花钱学Python其实没必要的,自学宝藏在这里
  3. 计算机不在同一个网络,电脑设置ip地址提示默认网关不在由ip地址和子网掩码定义的同一网络段上怎么办...
  4. autojs免root脚本引擎开发的QQ名片点赞源码免费分享
  5. 论文可以按论文范文格式照抄吗?
  6. 如何在linux系统安装搜狗输入法,在Ubuntu 12.04 LTS版本下安装搜狗输入法 for Linux...
  7. 本体开发日记07-我与java分词组件的爱恨情仇-Hit类
  8. 在树莓派上使用zeronet
  9. 云计算服务模型和openstack架构常用模块介绍
  10. 快手小店怎么引流?快手怎么做店铺引流?