1 引言
CAN总线因其通信速率高、可靠性强等优点,其通信遍布工业的生产活动,在生活教学中也被视为学习的重点之一,可以说是通信方面发展的热点[1-2]。CAN总线在生产生活中非常实用,尤其在大部分工业生产中已经得到了广泛的应用,将CAN总线作为单片机的通讯手段,单片机的信号能通过总线进行良好的传输,能够简化布线并且优化各个控制系统之间的配合。此外,许多领域的发展需要用到多种检测工具,而且许多情形下需要多次检测,如果使用的检测工具只能进行一种参数的测量,那么多次重复测量会加大生产生活的工作量。可以利用一款高性能的单片机作为上位机,多款低性能的单片机或者传感器作为下位机进行参数的测量,然后按照上位机的需要将数据发送过来,CAN与单片机等元件通信优良,且发展较为成熟,故实现CAN总线系统的构建对于实现多领域内快速检测具有重要的意义和必要性。基于上述分析,本文以选择MC单片机作为上位机,选择多个51单片机作为下位机节点设计CAN总线检测系统,实现多处参数的同时快速测量,减少多参数测量在生产生活的工作量,具有一定的应用价值。
2 系统总体方案设计
2.1 CAN总线简介
CAN总线的通信方式与CAN总线上的电平信号、帧格式等有关,同时在设计中需了解其数据交换原理和CAN传输过程[3-4]。
CAN总线通信的实现需要依靠报文的传送机制,因此CAN总线通信定义了“报文”而不是其他通信中采用的“站”。报文主要由数据帧、遥控帧、错误帧、过载帧和帧间隔组成,对其认识辨别是通过其确认区来实现的。除此之外,CAN通信机制还定义了通信的优先级,在同一时间段内,有多站访问时,可以通过确认区的区别来决定报文发送的先与后,确认区的值是二进制的,值越小,优先级越高。CAN访问数据的方式是地址访问,这种访问数据的方式使得CAN通信机制可以非常灵活地对网络系统进行相应的配置,可以在现存的CAN网络里增加作为完全接受者的新站,并且不需要对旧站进行修改,对通信网络系统内的节点通讯不会产生丝毫影响。
CAN传输过程一共可分为提供数据、发送数据、接收数据、检查数据和再次接收数据共五个步骤,具体内容如下:
a.提供数据:控制单元向CAN控制器提供需要发送的数据;
b.发送数据:收发器将控制器的数据转为电信号并发送出去;
c.接收数据:控制单元作为接收器以接收数据;
d.检查数据:检查判断所接收的数据是否为需要的数据;
e.再次接收数据:如接收的数据是需要的数据,则接收,否则忽略接收的数据。
CAN总线共有两根,总线的电平信号与两根数据总线上的电压有关,当有数据进行传输时,电平信号分为显性位信号和隐性位信号,如图1所示。
图1 CAN总线电平信号
在显性电平下,输出差分电压为2V,在隐性电平下,输出查分电压为0V。
2.2 总体方案设计
在系统总体方案设计中用到了两款单片机,一款价格低廉的51单片机作为下位机,另一款是具备强大数据处理功能的MC单片机作为上位机。其中,51开发板负责采集某一设定参数(如温度)的数据,并负责通过CAN通信系统发送数据,MC负责接收数据并显示参数数据。系统总体总体方案如图2所示。
图2 总体方案设计图
3 系统硬件设计
本总线系统硬件设计部分可分为被测量(以温度为例)采集模块、下位机CAN通信模块、上位机CAN通信模块和显示模块,对每个模块都需要相应的硬件设计。
3.1 被测量(以温度为例)采集模块
在被测量(以温度为例)采集模块中,硬件连接如图3所示。DS18B20的2脚RD和51单片机的P3.0连接。
图3 被测量采集模块硬件连接图
3.2 下位机CAN通信模块
在下位机CAN通信模块中,单片机、CAN控制器和CAN收发器的硬件选型分别是51单片机、SJA1000和TJA1040,其硬件连接图如图4所示。51单片机的P0.0~P0.7管脚与SJA1000的AD0~AD7管脚分别连接,51的引脚RST、/INT0、/WR、/RD、/EA、ALE分别与SJA1000的引脚/RST、/INT、/WR、/RD、/CS、ALE/AS连接。SJA1000与TJA1040负责通信读写的引脚分别相连,SJA1000的引脚MODE与TJA1040的VCC连在同一电源下。TJA1040的引脚CANH和CANL与CAN总线连接[5-7]。
图4 下位机CAN通信模块接线图
3.3 上位机CAN通信模块
上位机CAN通信模块中微控制器采用MC单片机、CAN控制器是MC单片机自带的MSCAN,CAN收发器为TJA1040,,其硬件连接图如图5所示[8]。
图5 上位机CAN通信模块接线图
3.4 显示模块
在显示模块中,选用MzL02D-12864LCD模组进行数据显示,其接线图如图6所示。
图6 显示模块接线图
4 软件设计与测试
4.1 软件设计
本文所设计总线检测系统首先由51单片机读取温度,发送温度数据,然后MC单片机负责实时接收温度数据,最后由MC单片机进行温度数据的显示,其软件设计流程图如图7所示[9]。
图7 软件总设计流程图
4.2 系统测试
将软件设计程序下载到51单片机和MC单片机后,将两个单片机CAN系统模块的CAN_H和CAN_L引脚用两根导线分别相连,并对51单片机和MC单片机上电,此时51单片机读取周围温度,并将温度数据发送给MC单片机,调试结果如图8所示。
图8 调试结果图
进而,通过改变51单片机所处环境温度对该CAN总线检测系统进行分析。51单片机采集温度数据如表1所示。MC单片机收集显示温度与51单片机发送温度数据对比如图9所示。
表1 51单片机采集温度数据
序号
|
温度/℃
|
序号
|
温度/℃
|
序号
|
温度/℃
|
1
|
15.90
|
4
|
19.83
|
7
|
23.35
|
2
|
17.79
|
5
|
20.23
|
8
|
24.78
|
3
|
18.54
|
6
|
22.22
|
9
|
22.11
|
图9 温度对比图
分析图9中数据可得,发送数据与接收数据之间的相对误差为0.3%。这一误差产生的原因可能是测试所用温度信号数量较少;传输过程中存在一定的延迟;温度数据在显示过程中存在进位等。结果显示,本文所设计基于MC9S08DZ60与51单片机的CAN总线检测系统的可靠性较高。
5 结束语
实现CAN总线系统的构建对于实现多领域内快速检测具有重要的意义和必要性。本文基于MC与51单片机从总体方案、硬件设计、软件设计及测试等方面设计CAN总线检测系统,其中硬件设计主要分为被测量采集模块、下位机CAN通信模块、上位机CAN通信模块和显示模块。选取温度信号作为测试信号对该CAN总线检测系统进行测试,结果显示:本文所设计基于MC9S08DZ60与51单片机的CAN总线检测系统温度数据传输误差小于0.3%,精度较高。系统通过增置多个51单片机作为下位机,可实现多参数的同时快速测量,减少多参数测量在生产生活的工作量,具有一定的应用价值。