电子说
概述
列控中心(TCC)与ZPW-2000系列轨道电路接口采用CAN总线通信,连接TCC和轨道电路通信接口单元。
TCC向ZPW-2000系列轨道电路发送载频和低频编码等信息,ZPW-2000系列轨道电路向TCC发送轨道区段状态等信息。
通过该接口实现轨道编码控制和轨道占用状态获取。
总线特点
TCC通过CAN总线与轨道电路通信接口单元(以下简称通信接口单元)连接。通信接口单元成对冗余配置,每对通信接口单元对应最多控制10个轨道电路区段。
01
遵从CAN2.0B协议标准
CAN(Controller Area Network)是一种用于实时控制系统中通信的串行通信总线协议,由德国BOSCH公司于1986年开发。CAN总线协议广泛应用于汽车、工业自动化、医疗设备等领域。
CAN2.0B是CAN协议的一种扩展协议,也称为CAN 2.0(Bosch)协议。
02
使用扩展结构格式
CAN2.0B协议标准支持两种帧格式:标准帧格式(11位标识符)和扩展帧格式(29位标识符)。
TCC与轨道电路通信接口单元采用扩展帧格式进行通信。对比实际扩展帧格式和协议描述:
其中FF可以理解为识别符扩展位,即标准帧为显性"0",扩展帧为隐性“1”。
RTR为远程标志位,远程帧为隐性“1”,数据帧为显性“0”。
DLC为数据长度,使用4位二进制描述0-8个字节长度。
其余内容均根据实际应用特征定义。
03
通信拓扑结构为总线型
总线通信采用分时间片,主从式同步传送方式,只允许由主节点到从节点或从节点到主节点,不允许从节点之间互相传送信息。
我们知道CAN协议标准的一个优势就是仲裁机制,即数据以电平形式在CAN总线传输过程中,按位优先显示显性(低电平“0”)然后再显示隐形(高电平“1”),那么为什么还要采用分时间片的方式进行数据传递呢?
实际上仲裁机制确实可以实现1个主节点(TCC)和n个从节点(通信接口单元)通信方式,但是除通信链路两端收发节点外,会引入其他节点参与仲裁判断,无形中增加了链路故障点。除此外,仲裁产生的数据通信延时也是很难控制的,会使得通信数据过程难以追踪,不便于总线调试和维护。
04
通信速率为1Mbit/s
CAN2.0B协议标准的数据传输速率可以达到1Mbps,高于CAN2.0A协议的500Kbps。
05
轨道电路通信接口单元地址分配
这里的地址(ADR)是指,轨道电路通信接口单元识别的GPIO硬线信号。
相同的通信接口单元通过读取不同的硬线地址信号,确定发送CAN通信数据中的地址内容。
06
地址码和屏蔽码
CAN总线通信中主节点和从节点采用1对多方式,而从节点之间是不允许相互传送信息的。那么总线节点就需要有一种能够过滤总线无效信息,只接收所需信息的方法。
是不是可以通过在应用程序中对接收到的信息进行识别,只保留需要的信息呢?
这样是不行的,当总线数据较少,且通信周期充裕时,或许可以尝试。但当总线数据周期占用率很高,而单节点所需数据在周期内占比又很低的情况时。通过应用来处理大量的无用数据就会使系统运行非常低效,而且会占用很多的软件中断资源,所以在处理CAN数据时很少使用这种方式。
而采用CAN控制器中的屏蔽寄存器设置同样可以实现过滤效果,而且通过硬件实现过滤,能够使处理过程更加高效。
ACR寄存器是用于实现点对点屏蔽设置,AMR寄存器是用于实现一点对多点屏蔽。
CAN节点在设置ACR值和AMR值之后,当AMR值对应位为“0”时,该节点只能接收与ACR该位的值相同的地址,而当AMR值对应位为“1”时,该节点将屏蔽ACR该位值,即该位可以是“0”或“1”的地址。
例如:列控1系CPU1的ACR值0x8000 FFFF,AMR值0x7FFF 0000,那么列控1系CPU1可以接收地址ID1、ID2为0b1*** **** **** ****的所有数据。
通信接口单元 0 槽号 0 CPU1的ACR1值0b0001 0111,AMR1值0b0110 1000,那么该CPU只能接收地址ID2为0b0**1 *111的数据。
07
数据帧类型
TCC与通信接口单元的数据帧类型总共有三种:
a) TCC→通信接口单元(同步帧)
用于告知各从节点发送数据的时间基准,各从节点根据接收到同步帧的时刻起依次延时固定毫秒后发送状态数据。
b) TCC→通信接口单元(编码数据帧)
TCC每周期固定向各个通信接口单元依次发送编码数据帧,发送完毕后发送一帧同步帧。数据内容包括主轨道载频、小轨道载频、主轨道低频、小轨道低频。
c) 通信接口单元→TCC(状态数据帧)
通信接口单元在收到TCC发送的同步帧后根据所属地址延时固定毫秒后,发送状态数据。数据内容包括主机主轨道状态、并机主轨道状态、主机小轨道状态、并机小轨道状态。
总线时序示意图如下:
通信线缆端头引脚定义
TCC侧DB9引脚
轨道电路通信接口单元侧引脚
全部0条评论
快来发表一下你的评论吧 !