在CAN技术规范中,实现这种通道的方法不是固定的。在CAN技术规范中未给出表示这种逻辑电平的物理状态。......
2023-11-20
控制卡与测控板卡间的通信通过CAN总线进行,通信内容包括将上位机发送的板卡及通道配置信息下发到测控板卡、将上位机发送的输出命令或控制算法运算后需执行的输出命令下发到测控板卡、将上位机发送的累积型通道的计数值清零命令下发到测控板卡、周期性向测控板卡索要采样数据等。此外,CAN通信网络还肩负着主从控制卡间控制算法同步信号的传输任务。
CAN通信程序的设计需要充分利用双CAN构建的环形通信网络,实现正常情况下的高效、快速的数据通信,以及实现故障情况下的及时、准确的故障性质确定和故障定位。
STM32F407ZG中的CAN模块具有一个CAN 2.0B的内核,既支持11位标识符的标准格式帧,也支持29位标志符的扩展格式帧。控制卡的设计中采用的是11位的标准格式帧。
1.CAN数据帧的过滤机制
主控制卡向测控板卡发送索要采样数据的命令,主控制卡会依次向各个测控板卡发送该命令,不存在主控制卡同时向多个测控板卡发送索要采样数据命令的情况。测控板卡向主控制卡回送数据时,只希望主控制卡和从控制卡可以接收该数据,不希望其他的测控板卡接收该数据,或者说目前的系统功能下其他的测控板卡不需要该数据。主控制卡向从控制卡发送控制算法同步运算命令时,也只希望从控制卡接收该命令,不希望测控板卡接收该命令。
由于CAN通信网络共用通信线,所以从硬件层次上讲,任何一个板卡发送的数据,连接在CAN总线上的其他板卡都可以接收到。如果让非目标板卡在接收到该数据包后,通过对数据包中的目标ID或数据信息进行分析来判断是否是发送给自己的数据包,这种方式虽然可行,但是会让板卡接收到大量无关数据,而且还会浪费程序的数据处理时间。通过使用STM32F407ZG中的CAN接收过滤器可有效解决这一问题,过滤器可在数据链路层有效拦截无关数据包,使无关数据包无法到达应用层。
STM32F407ZG中的CAN标识符过滤机制支持两种模式的标识符过滤:列表模式和屏蔽位模式。在列表模式下,只有CAN报文中的标识符与过滤器设定的标识符完全匹配时报文才会被接收。在屏蔽位模式下,可以设置必须匹配位与不关心位,只要CAN报文中的标识符与过滤器设定的标识符中的必须匹配位是一致的,该报文就会被接收。因此,列表模式适用于特定某一报文的接收,而屏蔽位模式适用于标识符在一段范围内的一组报文的接收。当然,通过设置所有的标识符位为必须匹配位后,屏蔽位模式就变成了列表模式。
2.CAN数据的打包与解包
每个CAN数据帧中的数据场最多容纳8个字节的数据,而在控制卡的CAN通信过程中,有些命令的长度远不止8个字节。所以,当要发送的数据字节数超出单个CAN数据帧所能容纳的8个字节时,就需要将数据打包,拆解为多个数据包,并使用多个CAN数据帧将数据发送出去。在接收端也要对接收到的数据进行解包,将多个CAN数据帧中的有效数据提取出来并重新组合为一个完整的数据包,以恢复数据包的原有形式。
为了实现程序的模块化、层次化设计,控制卡与测控板卡间传输的命令或数据具有统一的格式,只是命令码或携带的数据多少不同。控制卡CAN通信数据包格式见表11-6。
表11-6 控制卡CAN通信数据包的格式
(www.chuimin.cn)
通信命令中的目的节点ID可以放到CAN数据帧的标识符中,其余信息则只能放到CAN数据帧的数据场中。当命令携带的附加数据较多,超出一个CAN数据帧所能容纳的范围时,就需要将命令分为多帧进行发送。当然,也存在只需一帧就能容纳的命令。为了对命令进行统一处理,在程序中将所有的命令按多帧情况进行发送,只不过对于只需一帧就可以发送完的命令,将其第一帧标注为最后一帧即可。
将命令分为多帧进行发送时,需要对命令做打包处理,并需要包含必要的包头信息:目的节点ID、源节点ID、帧序号和帧标志。其中,帧序号用于计算信息在命令中的存放位置,帧标志用于标志此帧是否是多帧命令中的最后一帧。目的节点ID和帧标志可以放到标识符中,源节点ID和帧序号只能放到数据场中。CAN通信数据包的分帧情况见表11-7。该表显示了带有10个附加数据的命令的分帧情况。
表11-7 CAN通信数据包的分帧情况
在组建具体的CAN数据帧时,除了上述标识符和数据场外,还要对RTR(帧类型)、IDE(标识符类型)和DLC(数据场中的字节数)做好填充。
3.双CAN环路通信工作机制
在只有一个CAN收发器的情况下,当通信线出现断线时,便失去了与断线处后方测控板卡的联系。但两个CAN收发器组建的环形通信网络可以在通信线断线情况下保持与断线处后方测控板卡的通信。
在使用两个CAN收发器组建的环形通信网络的环境中,当通信线出现断线时,CAN1只能与断线处前方测控板卡进行通信,失去与断线处后方测控板卡的联系;而此时,CAN2仍然保持与断线处后方测控板卡的连接,仍然可以通过CAN2实现与断线处后方测控板卡的通信。从而消除了通信线断线造成的影响,提高了通信的可靠性。
4.CAN通信中的数据收发任务
在应用嵌入式操作系统μC/OS-Ⅱ的软件设计中,应用程序将以任务的形式体现。
控制卡共有4个任务和2个接收中断完成CAN通信功能,它们分别为TaskCardUpload、TaskPIClear、TaskAODOOut、TaskCANReceive、IRQ CAN1 RX和IRQ CAN2 RX。
有关现场总线及其应用技术的文章
CAN通信转换器可以将RS-232、RS-485或USB串行口转换为CAN现场总线。2)可方便地实现RS-232接口与CAN总线的转换。4)CAN总线波特率可选,最高可达1 Mbit/s。JP2.6~JP2.4用于设定CAN波特率,见表4-23。......
2023-11-22
图11-16 uIP与系统底层硬件驱动和上层应用程序的关系2.第二路以太网通信程序设计及W5100的Socket编程W5100内嵌硬件TCP/IP协议栈,支持TCP、UDP、IPv4、ARP和ICMP等。......
2023-11-22
SJA1000是一种独立控制器,用于汽车和一般工业环境中的局域网络控制。它是PHIL-IPS公司的PCA82C200 CAN控制器的替代产品。而且,它增加了一种新的工作模式,这种模式支持具有很多新特点的CAN 2.0B协议,SJA1000具有如下特点:1)与PCA82C200独立CAN控制器引脚和电气兼容。4)与CAN 2.0B协议兼容。5)同时支持11位和29位标识符。7)PeliCAN模式扩展功能:①可读/写访问的错误计数器。④对每一个CAN总线错误的中断。⒀可编程的CAN输出驱动器配置。⒁增强的温度范围。......
2023-11-22
CAN遵从OSI模型,按照OSI标准模型,CAN结构划分为两层:数据链路层和物理层。图4-1 CAN的分层结构和功能LLC子层的主要功能是:为数据传送和远程数据请求提供服务,确认由LLC子层接收的报文实际已被接收,并为恢复管理和通知超载提供信息。MAC子层的功能主要是传送规则,亦即控制帧结构、执行仲裁、错误检测、出错标定和故障界定。CAN技术规范2.0B定义了数据链路中的MAC子层和LLC子层的一部分,并描述与CAN有关的外层。MAC子层是CAN协议的核心。......
2023-11-22
CAN具有如下特点:1)CAN为多主方式工作,网络上任一节点均可以在任意时刻主动地向网络上其他节点发送信息,而不分主从,通信方式灵活,且无须站地址等节点信息。3)CAN采用非破坏性总线仲裁技术。6)CAN上的节点数主要取决于总线驱动电路,目前可达110个;报文标识符可达2032种,而扩展标准的报文标识符几乎不受限制。10)CAN节点在错误严重的情况下具有自动关闭输出功能,以使总线上其他节点的操作不受影响。......
2023-11-22
为满足实时性要求,也为了实现工业网络的低成本,现场总线采用的通信模型大都在OSI模型的基础上进行了不同程度的简化。图2-24 OSI与部分现场总线通信参考模型的对应关系图2-24中的H1指IEC标准中的61158。图2-25是OSI模型与另两种现场总线的通信参考模型的分层比较。其中LonWorks采用了OSI模型的全部七层通信协议,被誉为通用控制网络。......
2023-11-20
相关推荐