can总线是一种串行数据通讯协议,其通讯接口中集成了can协议的物理层和数据链路层功用,可完结对数据的成帧处理。can协议的一个最大特点是废除了传统的站地址编码,而代之以对通讯数据块编码,选用这种办法可使网络内节点个数在理论上不受约束,还可使不同的节点一起收到相同的数据。
本文介绍了嵌入式can智能节点,而且使用PC和嵌入式can智能节点组成了can通讯体系,完结了电压、电流、温度等信号的实时收集、牢靠传输和实时显现,完结了PC端对嵌入式can智能节点PWM波输出的脉冲宽度的操控。
依据PIC单片机的嵌入式can智能节点的规划
嵌入式can智能节点以pic16f874单片机作为嵌入式微操控器,以MCP2510作为 can操控器,以PCA82C250作为can收发器,具有现场/长途操控功用。依据用户的需求,嵌入式can智能节点经过衔接相应的传感器能够完结多种信号的实时收集、牢靠传输和实时显现,PWM波输出能够用于操控相应的负载。嵌入式can智能节点经过外接电路能够完结电路维护、现场组态、主动调理、毛病诊断报警、状况检测等功用,完结对电机、阀门、泵等电器的驱动和智能操控。
硬件规划
Microchip公司的单片机pic16f874 选用RISC指令体系,哈佛总线结构,低功耗,高速度。内部集成了ADC、串行外围接口(SPI)和Flash程序存储器等,具有PWM输出、LCD驱动等功用。pic16f874经过SPI接口能够完结与can操控器MCP2510的无缝衔接。pic16f874的I/O资源丰富,共有A、B、C、D、 E五个I/O口,每个I/O口除了根本用处外还有一些特别功用。
依据pic16f874的嵌入式can智能节点的硬件原理图如图1所示,首要包含以下四个模块:
can通讯模块
嵌入式can智能节点的can通讯模块由can操控器MCP2510和can收发器PCA82C250组成。MCP2510能够完结can总线的物理层和数据链路层的一切功用,支撑高速SPI接口(最高数据传输速率能够到达5Mb/s),支撑can2.0A/can2.0B协议。can收发器 PCA82C250是can操控器与物理总线之间的接口,对物理总线供给差动发送才能,对can操控器供给差动接纳才能,一起它能够增大通讯间隔,进步嵌入式can智能节点的抗干扰才能。
pic16f874经过SPI与can操控器MCP2510衔接,其串行数据输入(SDI)脚与MCP2510 的SO脚相连,其串行数据输出(SDO)脚与MCP2510的SI脚相连,其串行时钟(SCK)脚与MCP2510的SCK脚相连。MCP2510的复位信号、片选信号由单片机A口的RA5、RA2供给,MCP2510的中止信号、接纳缓冲区满中止信号输出到单片机B口的RB0、RB5。
经过设置 pic16f874的SPI接口状况存放器和操控存放器使SPI接口作业于主动办法。pic16f874与MCP2510进行通讯时的时序是非常重要的。发送数据时,先发送写指令,再发送存放器地址,最终发送数据。当MCP2510接纳到由总线传来的数据时会发生中止,单片机呼应中止,读取数据时先发送读指令,再发送存放器地址,数据会主动写入单片机SPI接口的缓冲器中。
显现模块
嵌入式can智能节点选用OCMJ4Χ8显现模块,该显现模块能够显现汉字、ASCII码等,其一切的设置初始化作业都能够在上电时主动完结。
OCMJ4Χ8显现模块的数据线DB0~DB7与单片机的D口相连,恳求(REQ)脚、应对(BUSY)脚别离与单片机B口的RB4、E口的RE2相连。显现模块的RT1、RT2引脚外接可调电阻用于调理LCD的亮度。
显现模块接口协议为恳求/应对(REQ/BUSY)握手办法。BUSY为高电平表明显现模块忙;当BUSY为低电平时表明显现模块闲暇,等候接纳指令。单片机先向显现模块发送指令或数据,然后发送恳求信号,恳求显现模块进行处理,显现模块置BUSY为高电平,对指令或数据进行处理,处理完毕后置BUSY为低电平。
模拟量获取模块
pic16f874单片机A口的RA0、RA1、RA3用于模拟量输入。嵌入式can智能节点的模拟量获取模块的首要功用是将需求收集的电流信号经过电流互感器转化为电压信号,将需求收集的温度信号经过温度传感器AD590转化为电压信号。
开关量输入/输出模块
嵌入式can智能节点经过I/O扩展供给了4路开关量输入和7路开关量输出。开关量输入用于电路的维护、毛病报警、状况检测等,只需被操控目标具有相应的检测元件,接入相应的接口即可。开关量输出用于驱动继电器,能够依据负载的巨细确认是否需求衔接接触器操控电机、阀门、泵等电器履行元件。依据用户的需求,此部分电路能够做相应的改变。
软件规划
嵌入式can智能节点的软件选用汇编语言编写,首要完结对pic16f874(I/O口、守时器等)、SPI接口(串行口状况存放器SSPSTAT、串行口操控存放器SSPCON等)、显现模块、I/O扩展芯片8255和can操控器MCP2510 (位守时装备存放器、can信息接纳过滤和屏蔽操控存放器、接纳发送缓冲区操控存放器等)的初始化,设定发送、接纳标识码(ID),读取A/D转化的数值,设置嵌入式can智能节点PWM波输出的脉冲宽度,处理、显现并发送收集的数据,接纳、处理并显现由总线传来的数据等作业。
初始化体系
程序需求对pic16f874单片机、显现模块、I/O扩展芯片8255和can操控器MCP2510进行初始化。其间对MCP2510初始化是非常重要的,首要包含设置数据传输的波特率,将标识码和屏蔽字写入can信息接纳过滤和屏蔽操控存放器。对pic16f874进行初始化时,要特别注意守时器 TMR2的初始化。
设定发送、接纳标识码
pic16f874单片机C口的RC0、RC1、RC6、RC7引脚衔接了一个拨码开关。程序经过读取这四个引脚的状况为每个嵌入式can智能节点分配了发送、接纳标识码的初始值。当网络中智能节点数目较多时,这种办法能够便利程序的编写。
读取A/D转化的数值
pic16f874 的A口和E口能够作为模拟量输进口,共有8个输入通道。A/D转化的成果存储于单片机的ADRES存放器。程序首要设置单片机的A/D操控存放器 ADCON1的bit3~bit0,挑选每个通道的输入/输出类型并设置参阅电压为5V,然后设置单片机的 A/D操控存放器ADCON0的bit5~bit3挑选通道,设置bit0翻开ADC,设置bit2发动ADC,最终从单片机的A/D转化成果存放器 ADRES中读取A/D转化的数值。
设置PWM波输出的脉冲宽度
pic16f874的CCP1引脚用于PWM波输出。程序首要设置单片机的CCP1模块操控存放器CCP1CON的bit3~bit0,界说作业办法为PWM,然后用从PC端接纳到的用于设置嵌入式can智能节点PWM波输出的脉冲宽度的数据设置单片机的CCP1操控存放器CCP1CON的bit5~bit4和CCPR1L存放器,即完结了PC端对嵌入式can智能节点PWM 波输出的脉冲宽度的操控。