当前位置:首页 > 物联网 > 《物联网技术》杂志
[导读]摘要:介绍了基于STC12C5A60S2单片机、SJA1000型CAN接口控制器以及PCA82C250串行收发器构成的总线通信网络。该网络中远端的CAN节点可监测现场环境,并实现数据收发和串行通信,上位PC机利用VB6.0设计的监测界面可实时显示现场CAN节点的环境参数。文中重点分析了CAN总线节点和组网技术,给出了系统的硬件电路设计和软件处理流程。实验结果表明,该系统具有数据传输可靠、通信距离远以及实时显示功能,而且抗干扰能力强。

引言

CAN(ControllerAreaNetwork)总线是一种用于智能化现场设备和自动化系统的开放式、数字化、双向串行、多节点的通信总线,广泛应用于分布式测控系统。环境参数监测系统研究的主要内容是设计一种可远程采集温度、湿度、照度等参数,由参数采集、CAN数据收发、串行通信和上位机等部分组成,参数采集由数字温度传感器、湿度传感器和光敏器件等组成。CAN节点的数据收发使用独立的SJA1000总线控制器,配合CAN接口驱动芯片PCA82C250,实现CAN节点与PC机之间的数据传输。

1系统总体设计

CAN总线为通信载体的环境监控系统设计方案中,系统上位机采用资源丰富的PC机,通过CAN主节点实现对远端CAN节点的管理。系统中的远端CAN节点具有现场数据采集、控制及CAN总线通信功能,通过CAN总线与监控现场和其他测控节点传送状态和各种参数,并接收上位机的命令和数据来调整和改变控制状态,CAN总线系统的组成结构如图1所示。

2监控节点的硬件设计

2.1CAN总线节点的组成

从系统设计成本及抗干扰能力出发,CAN节点的控制芯片采用宏晶公司的1T单片机STC12C5A60S2,具有增强型8051内核,高速、抗干扰、低功耗和在线编程等优势,CAN节点组成如图2所示[4]。远端CAN节点完成数字温度采集、照度的模拟采集、湿度的频率捕捉以及CAN通信,主节点还具有与上位PC机通信的功能。

2.2CAN现场总线

CAN总线遵从ISO/OSI模型,分为3层:物理层、数据链路层与应用层,每一层与另一设备上相同的那一层通信。实际的通信发生在每一设备上相邻的两层,而设备只通过模型物理层的物理介质互连。CAN的规范定义了模型的最下面两层:数据链路层和物理层,应用层协议可以由CAN用户定义成适合特别工业领域的任何方案[5]。CAN能够使用多种物理介质,其中最常用的是双绞线,信号使用差分电压传送,两条信号线被称为“CAN_H”和“CAN_L”,静态时均是2.5V左右,此时状态表示为逻辑“1”,也叫“隐性”。用CAN_H比CAN_L高表示逻辑“0”,称为“显形”,此时,通常电压值为:CAN_H为3.5V、CAN_L为1.5V。

2.3基于SJA1000的CAN总线接口

SJA1000是应用于汽车和一般工业环境的独立CAN总线控制器E具有完成CAN通信协议所要求的全部特性,经过简单总线连接的SJA1000完成CAN总线的物理层和数据链路层的所有功能,其软硬件设计和PCA82C200的基本CAN模式(BasicCAN)兼容,同时新增加的增强CAN模式(PeliCAN)支持CAN2.0B协议。SJA1000主要功能由接口管理逻辑、发送缓冲器、接收缓冲器、接收滤波器、位流处理器、位定时逻辑、错误管理逻辑等控制模块组成。

本设计是基于SJA1000的CAN总线接口模块,采用STC12C5A60S2单片机作为处理核心,PCA82C250作为CAN总线驱动器,整个模块具有较好的通用性及可扩展性,电路如图3所示。单片机现场采集的数据通过总线控制器SJA1000送给驱动器PCA82C250驱动CAN总线实现数据通信。

3环境参数采集电路设计

环境参数采集部分需要完成温度、湿度和照度等信号采集,由于传感器类型和成本不同,温度采用数字式单总线传感器DS18B20,对于湿度和照度的采集分别采用模拟的HS1101和2DU10传感器,通过A/D转换为数字信号。

3.1温度采集

DS18B20数字温度传感器是DALLAS公司生产的单总线器件组成测温系统,具有线路简单、使用方便的特点。由于DS18B20采用的是1-Wire总线协议方式,即在一根数据线实现数据的双向传输。而对单片机来说,硬件上并不支持单总线协议,因此,必须采用软件的方法模拟单总线的协议时序来完成对DS18B20芯片的访问,通过严格的通信协议保证各位数据传输的正确性和完整性。而每一次命令和数据的传输都是从主机启动写时序开始,如果要求单总线器件回送数据,在进行写命令后,主机启动读时序完成数据接收,数据和命令的传输都是低位在先,接口电路如图4(a)所示。

3.2湿度采集

湿度采集使用HS1101传感器,属于电容式湿度传感器,专利的固态聚合物结构,其工作机理是当电极间的感湿材料吸附环境中的水分时,介电常数随之变化,等效电容C与环境中水蒸汽的关系表示为:

其中ε0是真空介电常数、、是感湿材料的介电常数、s是电容式传感器有效面积、d为感湿膜厚度。在环境湿度检测中,利用HS1101湿度传感器的等效电容与湿度的关系组成振荡器,将湿度与电容的关系转化为湿度与频率的关系,图4(b)所示是由HS1101组成典型的555非稳态多谐振荡器电路,HS1101作为电容变量接在555的TR与TH两引脚上,电阻R1、R2确定后,电路的振荡频率主要由HS1101的等效电容即湿度大小决定,通过频率的测量即达到检测湿度的目的。

3.3照度采集

照度采集使用2DU10硅光电池传感器,其应用范围0.4〜1.1um,峰值波长在0.85um附近,适合在很宽的范围内使用。2DU10的光照特性决定了其短路电流I与光强JQ)成线性关系,短路电流I满足如下关系:

其中状人)为人射光的单色能流密度,,为等效转换率,在有效范围内可认为n不变。2DU10硅光电池传感器将环境光强对应的短路电流经i/u转换得到电压信号u如下:

输出电压u经运算放大器LM358_2A放大后送入A/D转换电路得到数字与照度的关系,其电路工作原理如图4(c)所示。

图4环境参数采集电路

4系统软件设计

SJA1000应用程序设计

CAN总线建立通信的过程包括系统上电和正常运行两个阶段。在系统上电阶段,首先要对STC12C5A60S2进行初始化设置,其次需要根据模式的选择对SJA1000的接收滤波、位定时逻辑等参数进行设置;在正常运行阶段,要准备待发送的报文,同时完成报文的接收并对发生的错误进行处理[7]。

可见,SJA1000的应用程序被分为SJA1000初始化程序、报文发送程序和报文接收程序。

SJA1000初始化程序

单片机STC12C5A60S2在上电后首先运行其自身的复位程序,并在此后调用SJA1000的配置程序。配置程序在设置SJA1000的寄存器前,必须通过读复位模式/请求标志来检查SJA1000是否已处于复位模式,因为要写入配置信息的寄存器仅在复位模式下进行。在复位模式下,单片机STC12C5A60S2需要配置SJA1000的控制段寄存器、模式寄存器、时钟分频寄存器、验收码寄存器和验收屏蔽寄存器、总线定时寄存器以及输出控制寄存器。根据分析,SJA1000的初始化程序如下:

〃****SJA1000初始化

SJAEntryResetMode();

//sja1000进入复位模式

REG_CAN_CDR=0x88;

//时钟分频;CDR.3=1时时钟关闭;

CDR.7=0时basicCAN;CDR.7=1时PeliCAN

SJASetBandRateStandard(ByteRate_100k);

//16M晶振,波特率设置

REG_CAN_IER=0x01;

//.1=0--关闭发送中断使能

REG_CAN_OCR=0xaa;

//配置输出控制寄存器

REG_CAN_CMR=0x04;//命令寄存器;释放接收缓冲器

SJASetAccCode(0x33,0x44,0x55,0x55);

//滤波

SJASetAccMask(0xff,0xff,0xff,0xff);

//屏蔽码设置

SJAQuitResetMode();

//退出复位模式

SJA1000报文发送程序

采用SJA1000的中断请求控制报文的发送时,必须开放SJA1000的发送中断使能和单片机STC12C5A56S2的外部中断0,并设定SJA1000发送中断的优先级高于启动发送。报文的发送过程分为两个部分,一部分由STC12C5A56S2的主程序完成,另外一部分由SJA1000的发送中断服务程序完成,这两部分程序的流程图如图5(a)、(b)所示。

SJA1000报文接收程序

根据CAN协议规范,报文的接收由CAN控制器SJA1000独立完成,收到的报文放在接收缓冲器内,同时将状态寄存器的接收缓冲器状态标志RBS和接收中断标志RI置位。如果报文接收被使能,单片机将接收缓冲器内的新报文读出,并存储到单片机的内存单元或外部数据存储器中,然后释放接收缓冲器。本设计采用中断请求SJA1000的控制段状态标志来控制,通过SJA1000中断控制报文接收的程序流程图如图5(c)所示

(a)报文发送主程序(b)发送中断子程序(c)中断接收子程序

图5SJA1000报文发送和接收程序流程图

4.2PC机监视界面设计

VisualBasic是Microsoft公司推出的Windows编程工具,亦是最经典的可视化编程语言。本设计釆用VB标准模块中的MSComm串口通信控件[8],完成CAN节点数据接收、分析并显示,包括通信端口选择、串行通信参数设置、串口控制以及数据显示区等,本系统上位PC机监视界面如图6所示。

5结语

系统调试过程中按照模块到系统的测试方法循序渐进。首先调试数据采集模块,通过串口调试助手查看温湿度的参数采集;然后调试CAN通信,通过数据传输测试CAN控制器以及CAN收发器工作状况;最后联调两部分和串口通信。

图6上位PC机监视界面

在调试过程中,各节点能够与上位PC机传送数据,并接受来自上位机的命令,运行可靠。结果表明:系统检测可靠、操作简单、人机界面友好,可达到设计的目标。

20211117_6194f6db34c70__基于CAN总线和VB的环境参数监测系统设计

本站声明: 本文章由作者或相关机构授权发布,目的在于传递更多信息,并不代表本站赞同其观点,本站亦不保证或承诺内容真实性等。需要转载请联系该专栏作者,如若文章内容侵犯您的权益,请及时联系本站删除。
换一批
延伸阅读

CAN总线(Controller Area Network)作为一种高可靠性、实时性的串行通信总线,广泛应用于汽车电子、工业控制、机器人等多节点通信场景,其核心优势在于通过非破坏性仲裁机制实现多节点无冲突通信。但在实际工...

关键字: CAN总线 串行通信 收发器

在单片机通信系统中,数据帧是实现设备间可靠对话的核心载体。不同于网络通信中成熟的TCP/IP协议,单片机通信往往需要自定义数据帧格式,而帧头、帧尾与校验机制则是保障数据传输准确性的三大关键。

关键字: 单片机 数据帧

随着嵌入式技术的不断发展,时序分析工具和方法也在不断进步,未来将朝着智能化、自动化的方向发展,为开发者提供更高效的调试手段。但无论技术如何发展,扎实的时序分析基础都是嵌入式开发者不可或缺的能力,只有深入理解通信时序的本质...

关键字: 时序 单片机

在嵌入式系统设计中,不同架构、不同厂商的单片机协同工作早已成为常态。从8位的51系列到32位的STM32,从精简指令集的PIC到复杂指令集的AVR,这些性能各异的单片机如何突破硬件差异实现数据交互,是嵌入式开发中的核心课...

关键字: 嵌入式 单片机

在嵌入式系统开发中,单片机的时钟系统是整个系统的"心脏",所有的指令执行、外设操作、定时器中断都依赖于精准的时钟信号。但在实际开发过程中,很多开发者都会遇到单片机时钟不准的问题,表现为定时器计时偏差、UART通信波特率错...

关键字: 控制系统 单片机

在现代汽车电子控制系统中,车身控制模块(BCM)作为核心执行单元,承担着门窗、灯光、雨刮、门锁等车身电器的控制任务,其控制信号的精准解码与匹配的可靠性,直接决定车身电器的运行稳定性。同时,CAN总线作为汽车内部主流的通信...

关键字: 控制模块 CAN总线 通信

在现代汽车电子系统中,CAN总线(控制器局域网)作为“神经网络”,承担着各电子控制单元(ECU)间的数据交互任务,而ECU向CAN总线发送数据的过程,是实现汽车动力控制、车身调节、故障诊断等功能的核心环节。从发动机转速反...

关键字: CAN总线 控制单元 数据交互

在单片机开发与调试过程中,复位电路作为保障芯片正常启动的核心模块,其稳定性直接影响程序烧录与系统运行。实际应用中,不少开发者会遇到“接稳压电源可正常烧录,接入电池后却无法烧录程序”的故障,此类问题多与复位电路设计、电池供...

关键字: 单片机 复位电路 时序匹配

在单片机的世界里,“字节”(Byte)是一个贯穿始终的核心概念。从存储数据到执行指令,从变量定义到外设通信,字节无处不在。很多初学者在学习单片机时,往往更关注复杂的程序逻辑和外设驱动,却忽略了字节这个基础知识点,导致在后...

关键字: 单片机 字节

在单片机的数字逻辑中,我们通常最关注的是高电平和低电平两种状态,它们构成了二进制数字世界的基础。然而,除了这两种状态之外,还有一种至关重要但常常被忽视的状态——高阻态(High Impedance State)。高阻态就...

关键字: 单片机 高阻态
关闭