引言
CAN总线是一种有效支持分布式控制或实时控制的串行通信网络,其所具有的高可靠性和良好的错误检测能力受到重视,被广泛应用于汽车计算机控制系统和环境温度恶劣、电磁辐射强和振动大的工业环境。传统的CAN总线实现方式是将单片机与总线控制器和总线收发器连接后接入总线作为一个节点,这种方式外部电路要求较多,器件之间会造成不必要的干扰,因此提出一种方法利用内部集成CAN控制器的C8051F040单片机作为CAN节点的处理器。利用这个节点控制器控制其他节点上的传感器,同时为了方便利用Pc机实时监测总线数据,设计了USB-CAN转换模块,利用上位机软件使PC机与总线能进行实时通信。
1 多点通信网络的总体设计
CAN总线总体结构图如图1所示,由Pc机、USB—CAN转换模块、多个节点和CAN总线介质组成,节点中包含传感器、C805l F040、光耦隔离部分和CAN驱动器。
现场仪表中的传感器采集到现场设备的工作状态,通过C8051F040进行A/D转化为数字量,然后将这些数据通过单片机内部的CAN控制器和外部的TJA1040总线收发器接入CAN总线,在总线上的一个节点上安装有USB.CAN转换模块,通过USB-CAN模块实现CAN与Pc机的通信,通过编写上位机控制软件来在Pc机E实时显示各CAN节点的数据且能通过上位机软件向各CAN节点发送和接收数据。
2 多点通信网络的硬件设计
C8051F040系列器件是完全集成的混合信号片上系统型MCU,其内部具有64个数字VO引脚,具有与8051兼容的高速CIP一51内核,与MCS一51指令集完全兼容,片内集成了数据采集和控制系统中常用的模拟、数字外设及其他功能部件。具有片内VDD监视器、看门狗定时器和时钟振荡器的这一系列器件,是真正能独立工作的片上系统。所有模拟和数字外设均可由用户固件使彩禁止和配置。内置FLASH程序存储器、内部RAM,大部分器件内部还有位于外部数据存储器空间的RAM,即XRAM。FLASH存储器还具有在系统重新编程能力,可用于非易失性数据存储,并允许现场更新8051固件。
图1 CAN总线总体结构图
C8051F040单片机的CAN控制器由CAN内核、消息RAM、消息处理单元和控制寄存器组成。CAN内核提供移位输出和输入(CAMⅨ和CANRX)、消息的串并转换及其他与协议相关的任务(如数据发送和接收过滤)。消息RAM可以储存32个可在CAN网络上接收和发送的消息对象。CAN寄存器和消息处理器为CAN控制器和CIP一51之间的数据传送和状态通知提供接口。CIP一51通过特殊功能寄存器之间或间接地访问CAN控制器中的CAN控制寄存器、CAN测试寄存器和CAN状态寄存器。
由于C8051F040内部的CAN控制器只是个协议控制器,不能提供物理层驱动,要使CAN总线得以运行,还需在单片机上接CAN收发器,进行电气转换,同时为了抗干扰需要在C8051F040单片机和TJAI(MO总线收发器之间使用2个高速光电隔离器件TLP113实现总线和控制器的隔离,以避免干扰,提高工作可靠性。这里采用TJA1040作为物理层驱动器,TJA1040可以为总线提供差动发送性能,为CAN控制器提供差动接收性能,当TJA1040断电时,总线反向电流为零,这样,没有接通电源的节点不会对网络其他部分造成影响,还具有极低功耗的待机模式,以及通过总线唤醒能力,这些特性都使它非常适用于多点通信网络。
通过TJA1040引脚可选择2种工作模式:高速模式或静音模式。高速模式就是普通的工作模式,将引脚s接地可以进入这种模式。如果引脚S没有连接,高速模式就是默认的的工作模式。
图2 CAN驱动器电路
CAN的最高速率可以达到1 Mbps,采用USB接El能达到与上位机以较高的速率通信,这就需要设计一个USB—CAN转换模块。此处采用USB接口芯片CH375,CH375是一个USB总线的通用接口芯片,支持USB—HOST主机方式和USB—DE—VICE/SLAVE设备方式。在本地端,CH375具有8位数据总线和读、写、片选控制线以及中断输出,可以方便地挂接到单片机/DSP/MCU/MPU等控制器的系统总线上。CH375可以工作在并口方式和串口方式,文中采用并口方式。图3是USB—CAN转换模块电路原理图。CH375的TXD引脚通过1 kn左右的下拉电阻接地或者直接接地,从而使CH375工作于并口方式。[page]
图3 USB—CAN转换模块电路原理图
USB总线包括一对5 V电源线和一对数据信号线。USB插座P1可以直接连接USB设备,必要时可以在提供给USB设备的5 V电源线上串接具有限流作用的快速电子开关,USB电源电压必须是5 V.电容c3用于CH375内部电源节点退耦,c3是容量为4 700 pF一0.02μF的独石或高频瓷片电容。电容c4和c5用于外部电源退耦,c4是容量为0.1μF的独石或者高频瓷片电容。晶体x1、电容C1和c2用于CH375的时钟振荡电路。USB—HOST主机方式要求时钟频率比较准确,晶体x1的频率是(12 +-0.4‰)MHz,C1和c2是容量为15—30 pF的独石或高频瓷片电容。为使CH375可靠复位,电源电压从0 V上升到5 V的上升时间应少于100 ms.如果电源上电过程较慢并且电源断电后不能及时放电,那么CH375将不能可靠复位。可在RSTI引脚与VCC之间跨接一个容量为0.1μF或0.47μF的电容C11延长复位时间。
如果CH375的电源电压为3.3 V,那么应该将V3引脚与VCC引脚短接,共同输入3.3 V电压,并且电容c3可以省掉。在设计印刷线路板PCB时,需要注意:退耦电容c3和c4尽量靠近CH375的相连引脚;使D+和D一信号线贴近平行布线,尽量在两侧提供地线或者覆铜,减少来自外界的信号干扰;缩短xI和XO引脚相关信号线的长度,为了减少高频时钟对外界的干扰,可以在相关元器件周边环绕地线或者覆铜。
在单片机端CH375芯片由于工作在并口方式。实际是通过单片机I0口模拟其工作时序。当AO引脚为高电平时,系统进择命令端口,此时可以写入命令;当AO引脚为低电平时,选择数据端口,此时可以读写数据。
3 多点通信网络的软件设计
3.1单片机程序设计
单片机程序设计主要包括CAN通信程序和CAN—USB转换程序设计。CAN通信程序主要完成各节点的CAN数据传输,CAN—USB转换程序主要完成数据的中转,既能接收上位机发来的数据并打包成CAN协议相应的数据又能将CAN协议数据发到上位机,此处采用了C8051F040单片机内部的温度传感器作为节点传感器,通过单片机内部12位ADCO对内部热敏电阻的电压进行AD转换,得到实时温度的数字量,然后上位机从总线中获取信息,为了验证CAN总线的实时性和可靠性,在上位机软件中没计了温度曲线显示窗口,能够对温度进行实时监控。
3.1.1 CAN通信程序设计
主要程序包括10配置、晶振初始化、清除消息RAM、发送接收函数初始化和CAN初始化。其中10配置主要是配置CAN的TX引脚作为输出,晶振初始化主要是切换到外部晶振,由于内部晶振误差较大,有l%的误差,而外部晶振误差小,用精度高的外部品振可以产生较准确的CAN通信速率。清除消息RAM程序是对32个消息对象进行清除。发送、接收函数初始化主要设置命令掩码寄存器、仲裁寄存器和消息控制寄存器,如图4所示。
图4 CAN通信程序流程图
3.1.2温度传感器数据采集程序设计
C8051F040单片机内部有一温度传感器,温度传感器数据采集时用内部12位ADCO对内部热敏电阻的电压进行AD转换。然后再对转化成的数字量进行换算,从而得到实际的温度值。
温度采集程序开始后先初始化,使能ADCO并设置启动方式,然后使能温度传感器和内部基准,选择温度传感器作为输入设置转换时钟周期,初始化后向ADOBUSY写1,判断ADOINT是否为0,如果为0读取温度数据。[page]
3.1.3 USB—CAN转换程序设计
所有的通汛都由计算机应用层发起,然后以接收到单片机的应答结束,主要程序包括10配置、CH375初始化、分析数据包类型和向CAN节点发送数据。具体流程如图5所示,其完整的过程包括如下步骤:
(1)计算机应用层按事先约定的格式将数据请求发送给CH375芯片;
(2)单片机查询INT引脚的变化,当变低时进入数据处理程序;
(3)单片机进人数据处理程序,以获取CH375的状态并分析;
(4)如果是发送成功,则释放当前USB缓冲区,然后退出数据处理程序继续查询;
(5)如果是接收成功,则从数据下传缓冲区中读取数据块;
(6)分析接收到的数据块;
(7)如果接收到的是数据收集命令包,则向各CAN节点发送请求数据传输命令;
(8)如果接收到的是数据发送命令包,则向相应的CAN节点发送数据并释放缓冲区;
(9)如果接收到的是数据发送命令包,则向相应的CAN节点发送数据并释放缓冲区;
(10)如果接收到的是测试命令包,则将收到的数据按位取反后发回上位机;
(11)如果接收到的是数据发送命令包,则向相应的CAN节点发送数据。
图5 USB—CAN转换流程图
3.2上位机软件设计
USB接口芯片工作于设备方式,处于被动状态,与上位机相连时,上位机是主机。因此让主机间隔一定时间通过USB接口向下位机发送不同的命令字来获取各CAN节点数据和向各节点发送数据以控制各节点的LED。自定义数据包来区分上位机向下位机发送的是何种数据。
在该系统中上位机和下位机数据交换的数据主要涉及:测试命令包、数据收集命令包、数据发送命令包、接收数据命令包。要让计算机相隔一定时间向下位机下传数据包,VisualBasic给提供了良好的解决方案,Visual Basic中的timer控件让该地简单化。只需设置定时器每隔一定时间发送数据。采集CAN点的的程序流程是,定时器间隔一定时间发送数据收集命令包至下位机收集各节点数据,然后进行处理后显示。上位机发送数据至CAN节点时的程序流程为,当发送数据时关闭定时器,延时等待把数据传输完成后再发送数据收集命令包,以邀免与发送数据收集命令包冲突,然后冉打开定时器,完成节点接收数据。
图6上位机软件运行围
4 调试结果
将电路连到电脑USB接口上,上位机会测试与下位机通信是否正常,此时测试时上位机会向下位机发送一些数据。若下位机运行正常会将数据取反后向上位机发送,上位机收到后与原来发送的数据相比较,若正常则进入正常工作的界面。图6是正在采集中的上位机软件运行情况。图中右侧是采集到的温度曲线,证明设计的电路可以实现信号的实时传输。
5 结束语
提出一种方法利用C8051F040单片机作为CAN节点的处理器.绝成实时多点通信CAN5总线网绍利用CAN总线的可靠性实时性等优点。实现对现代工业中的共有综合功能的智能仪表的实时操作和控制,用新一代的现场总线控制系统代替传统的集散控制系统,实现现场通信网络与控制系统的集成,同时USB-CAN转换模块和上位机软件的加入使操作人员可以在PC机上实现更加直观的操作。该网络可以应用于过程自动化和制造自动化般底层的现场设备或现场仪表互连的通信网络,简化了这些网络操作的复杂性。
上一篇:针对CAN总线传输距离问题的两种解决方案
下一篇:51单片机的中断体系结构
推荐阅读最新更新时间:2024-03-16 13:51