跳转到内容

J1939

J1939是一种基于CAN的第7层协议,主要用于卡车和客车的控制与通信。J1939的典型特性包括:

  • 29位扩展CAN标识符。
  • 点对点和广播通信。
  • 最多可传输1785字节。

J1939_Architecture.bmp

J1939协议栈

PGN用于标识参数组 (PG)。PG指向8字节CAN数据字段内的参数分配信息、重复率和优先级。PGN的结构允许每页总共拥有8672个不同的参数组——共有2页可用。

J1939_PGN.bmp

参数组编号

传输协议功能主要用于发送和接收多包消息,这些消息最多可扩展至1785字节。该功能涉及在发送时将数据打包为一系列8字节大小的消息,并在接收端重新组装此类数据。

广播消息会广播到网络中的所有节点。发送节点必须首先发送广播公告消息 (BAM),随后发送一系列8字节数据。接收节点如果感兴趣,可以准备接收。

BAM消息包含以下信息。

  1. 待发送的PGN

  2. 多包消息的大小

  3. 数据包的数量

J1939_BAM.bmp

多包广播数据传输

对于特定目的地的数据传输,需要建立通信,因此要受流量控制。传输协议功能分三个步骤应用。

***1. 连接初始化 -***消息发送方发送一个请求发送消息。接收节点会响应一个清除发送消息,或者在决定不建立连接的情况下响应一个连接中止消息。

***2. 数据传输 -***发送方在接收到清除发送消息后传输数据。

***3. 连接关闭 -***消息接收方在接收时发送消息结束确认消息。

J1939_PEER_2_PEER.bmp

多包点对点数据传输

J1939网络中的每个ECU必须至少持有一个NAME,并声明一个8位地址用于标识目的。

***1. ECU NAME -***64位标识符包含了对ECU在其地址上执行的主要功能的指示。

J1939_ECU_NAME.bmp

J1939 NAME字段

***2. ECU地址 -***8位ECU地址定义了消息的源或目的地。

地址声明功能考虑两种可能的场景

***1. 发送地址已声明消息 (ACL) -***在网络启动时,ECU将声明一个地址并发送地址已声明消息。所有接收到该地址声明的ECU将记录新声明的地址,并将其与其内部地址表进行验证。如果发生地址冲突,具有最低NAME的ECU将成功。

***2. 请求地址已声明消息 -***ECU向网络中的所有节点请求ACL消息,并声明可用地址。### BUSMASTER.J1939

使用J1939功能的先决条件是获取J1939接口,这正是此函数的唯一目的。它将查询可用的J1939接口。一旦可用,关联的菜单项和按钮将被禁用。查询操作涉及DIL.J1939接口初始化、J1939客户端注册,最后是J1939记录器接口查询和初始化。查询操作的结果可以在跟踪窗口中看到。

这将调出日志配置对话框,其布局和配置过程与CAN完全相同。唯一的区别在于,对于J1939,消息不是通过CAN标识符来标识的,而是通过其PGN编号来标识。

此功能将应用程序连接到J1939网络。关联的菜单项和工具栏图标都具有切换特性,因此会在“Go Online”和“Go Offline”模式之间来回切换。

这将调出J1939发送消息窗口,在其中可以配置当前可发送的消息,并以单次和周期模式发送。

J1939_TransmitWnd.bmp

J1939发送消息窗口

通过选择关联的菜单项或单击工具栏图标,用户可以启动日志记录过程。这具有切换开关的特性,因此使用相同的操作也可以停止正在进行的日志记录过程。

J1939_LogFile.bmp

J1939日志文件

J1939数据库编辑器类似于CAN数据库编辑器。用户可以基于其PGN定义一个新消息,并且最大数据大小可达1785字节。

J1939_DB_EDITOR.bmp

用户可以关联/取消关联J1939数据库文件。

J1939_DB_FUNCTIONS.bmp

可以从以下选项访问J1939功能。

J1939_Toolbar.bmp

用户可以配置在发送或接收流量控制消息时将考虑的超时时间。

可以通过单击菜单 J1939 –> Timeout Configuration 来调出相应的对话框。

单击相应的复选框将出现超时的描述。

J1939_ConfigureTimeouts.bmp

**Tb:**广播传输中两个数据包之间的时间间隔。

**Tr:**发送方等待接收方响应的最大等待时间。

**Th:**在延迟数据时,两个“清除发送”消息之间的时间间隔。

**T1:**当预期有更多数据包时,接收方的最大等待时间。

**T2:**接收方在发送“清除发送”消息后接收数据包的最大等待时间。

**T3:**发送方在发送最后一个数据包后接收“消息结束确认”的最大等待时间。

**T4:**发送方在接收到一个“清除发送”消息以延迟数据后,接收另一个“清除发送”消息的最大等待时间。

J1939信号观察窗口类似于CAN信号观察窗口。用户可以添加数据库中定义的PGN的SPN(信号)。

有单独的菜单项可用于配置J1939节点编程。使用 ‘J1939 –> Node Simulation –> Configure’ 菜单来配置节点。J1939节点编程的大多数功能与CAN保持相同。以下列出了少数差异。

**1. 节点添加 :**用户必须提供以下信息以创建一个新节点。

a. 节点名称 b. 首选地址 c. 64位ECU名称。

J1939_NODE_DETAILS.bmp

2. 功能编辑器 :J1939功能编辑器类似于CAN功能编辑器。除了CAN功能编辑器中可用的处理程序外,它还具有事件处理程序,用户可以在其中配置

  • **数据确认事件 :**每当传输长(> 8字节)消息时执行处理程序。

void OnEvent_DataConf(UINT32 unPGN, BYTE bySrc, BYTE byDest, BOOL bSuccess);

**unPGN -**传输消息的PGN。**bySrc -**源节点。**byDest -**目的节点。**bSuccess -**传输结果。 ( TRUE-成功,FALSE-失败)

  • **地址确认事件 :**每当节点声明或失去地址时执行处理程序。

void OnEvent_AddressClaim(BYTE byAddress) ;

**byAddress -**节点声明的新地址。如果值为254,则表示地址丢失。

注意: 这些事件处理程序一旦添加便始终处于启用状态。

J1939_EVENT_HANDLERS.bmp

**3. J1939 API参考 :**引入了一组新的API,以便在J1939总线上执行功能。有关更多详细信息,请参阅以下部分API参考J1939。

J1939_API_SET.bmp


权威来源: BUSMASTER DITA help source J1939.dita, compiled into BUSMASTER.CHM with the application.