APP下载

基于CAN 总线的车身电器控制系统软件设计的研究

2020-10-27胡亚楠

电声技术 2020年6期
关键词:寄存器程序设计总线

胡亚楠

(鹤壁职业技术学院,河南 鹤壁 458030)

随着车联网、智能汽车以及无人驾驶技术的飞速发展,汽车电器之间已不再是点对点之间的通信,整个汽车形成了一个车载网络。这样的背景下,对汽车元器件之间的传输速率和信息量要求提高,信息交换成为难题。CAN 总线在汽车领域应用广泛,技术成熟,可靠性强,为解决上述问题提供了可能。

1 控制系统的总体网络设计

软件的设计需要稳定、高效且便于维修,同时最大可能地降低成本。CAN 通信需要网络进行通信,而物理层、链路层以及应用层都有不同的协议,这些协议规范了传递的策略。

CAN 软件的设计要考虑到系统的扩展性。良好的扩展性可以极大地提高系统的兼容性和共享性。该系统主要参考SAE J1939 对CAN 总线的各个层级进行了定义,同时参考SAE J1939 的编码规则对各个节点进行软件设计。

1.1 节点子程序设计

通常情况下,节点采用模块化编程设计,通过模块的编辑生成系统文件,然后通过指令进行调用即可。在进行软件设计时,需要用到相关的函数,现介绍相关的程序函数。

1.1.1 接收子函数

子函数通常将信息储存于单片机中,当需要使用时调取相关程序即可[1]。

1.1.2 发送子函数

发送子函数是发送控制器所需要的数据[2]。系统状态出现空闲时,信息将自动进入主程序。

1.2 节点主程序设计

需要及时监控车身电器的状态,那么可以采用编程的方式进行程序控制。开关状态要通过单片机进行信息处理,需要监测相应的开关信号进行判断。输入输出的状态需查询CAN 线的运行状态。开关节点需要通过相应的代码进行编程记录,而其主程序主要分为两部分:一是检查状态;二是将目前的状态进行信息传递。

输入节点流程[3]、输出节点流程[4]以及网关节点流程[5],分别如图1、图2 和图3 所示。

2 SJA1040 的初始化

SJA1040 的初始化是系统子程序的一部分,也是通信的关键部分。SJA1040 是将有用的信息转换成CAN 线系统可以识别的格式,并传至CAN 总线。信息传递有不同的域,但都需要有开始域。开始域意味着信息传递的开始,也就是所谓的传输初始化。在信息传递过程中,还有传递模式的选择、持续传递功能以及中断功能等。SJA1040 寄存器的分析和设置如下[6]。

信息地址0。该寄存器为可读写寄存器,设置为1 时为睡眠模式,处于模式3 时为滤波模式,处于模式2 时为自检测模式,处于模式1 时为只听模式。

信息地址1。该寄存器为只写寄存器。当寄存器为保留位时,对寄存器没有影响。当寄存器为0时,系统发送信息请求到处理器,处理器经过分析处理后传往信息端。当寄存器为1时,信息发送终止位,可以不考虑该位。当寄存器为2时,此为信息缓冲区。当信息量很大时,信息可以进行暂时的缓冲,缓冲后进入处理器,后续发送指令进行工作。当寄存器为3 时,此位为信息交换位。由于CAN 线采用的是网络通信,因此信息交换呈现网络化。当有工作指令时,信息会迅速通过CAN 线进行传递[7]。

3 WPF 简介

上位机为监测的主要数据来源。当信息在CAN 总线上传输时,上位机需要监测相关数据,从而确定信息传输情况。其中,开发环境的编程采用WPF 编程系统。

WPF 是微软推出的一款基于Windows 的用户界面框架,为软件设计带来了无限可能。自问世以来,WPF 深受广大编程爱好者的喜爱,为主要的软件编程系统。WPF 容易上手,操作功能强大,且后期增加了可视化编程语言,可实现更好的人机互动。因此,下面简要说明串行通信的初始化定义[8]。

4 结语

本文提出了一种基于CAN 总线的车身电器系统的改造方案,完成了软件设计,着重介绍了整体的网络设计、节点主程序设计和子程序设计、SJA1040 的初始化以及上位机,能够最大程度地辅助硬件系统完成整个系统的运行。

猜你喜欢

寄存器程序设计总线
时间触发通信总线监控技术研究
医学专业“Python程序设计”课程教学改革总结与思考
关于CAN总线的地铁屏蔽门控制思路论述
基于Visual Studio Code的C语言程序设计实践教学探索
Lite寄存器模型的设计与实现
常用电子测速法在某数字信号处理器中的应用*
从细节入手,谈PLC程序设计技巧
移位寄存器及算术运算应用
基于CAN/LIN总线的LED车灯控制研究
高职高专院校C语言程序设计教学改革探索