基于微处理器与CAN的工业联机控制系统
扫描二维码
随时随地手机看文章
1 引言
CAN总线是目前流行的总线技术之一,是一种基于微控制器件的网络。它用开放的,具有可互操作的网络将现场各种控制器及仪表设备互连,构成现场总线控制系统,将控制功能彻底下放到现场,降低了安装成本和维护费用。FCS实质是一种开放的、具可互操作性的、彻底分散的分布式控制系统。CAN总线属于工业现场总线的范畴是目前流行的现场总线控制系统之一。与一般的通信总线相比,CAN总线的数据通信具有突出的可靠性、实时性和灵活性,同时具备了现场总线优点。本文提出一种基于CAN智能节点的设备联机控制系统。
2 系统概述
本文设计的是一种基于工业设备控制系统的以CAN总线智能节点。节点分为控制节点、主机节点和从机节点三种,多个不同节点通过总线连接,形成多机联控系统。系统虽然有三种不同功能的节点,每类节点采用相同的CAN节点结构。
500)this.style.width=500;" border="0" />
图1 CAN总线节点结构示意图
CAN总线节点可以归纳为三种构成方式: 1) CAN控制器的单片机+CAN收发器;2) 带有CAN控制器的单片机+CAN收发器;3)带有CAN控制器的I/O端口+CAN收发器。系统结构更为如图1所示。本文选择第一种方式连接方式,由于器件组合灵活,很容易实现高的性价比。
3 节点的硬件结构设计
3.1 节点控制芯片选择
本研究选用的是美国微芯Microchip Technology公司的PIC芯片(PIC16F873,28脚FLASH)和福州贝能公司的MPLAB开发工具。MPLAB开发系统是一种廉价的开发工具,集编程器与调试器为一体。它利用了PICI6F87X的在线调试能力和MICROCHIP的串行编程技术(In-Circuit Serial Programming)。它工作于MPLAB-IDE集成开发环境软件包下,直接连接到应用系统中去。PICI6F87X是MICIZOCHII)公司的中档产品,继承了MICROCI-III,的传统特点,实用、低价、指令集少、低功耗。
PIC16F873开发装置的不足之处有:系统只能设置一个断点;运行系统程序后单步执行速度慢;由于占用了芯片资源,I/0管脚RB3,RB7,RB6功能不正常,无法调试.另外程序调试时,应注意编程电压不能太低。
3.2 节点CAN通讯的硬件设计
在CAN中应用的元器件主要包括CAN控制器和CAN收发器。本文选用的是独立CAN控制器。PHILIPS公司的SJA1000管脚太多,占用过多的I/O口,MCP2510是目前市场上体积最小的CAIN控制器,通过SPI通讯方式与微处理器连接,连接端口少,所以系统选择MCP2510作为CAN控制器。MCP2510只要跟MCU和驱动芯片(8X250 )就可以构成一个简易局域网的节点。MCP2510可以完全实现CAN2.0A和CAN2.0B协议。图2为MCP2510芯片的内部结构图。
500)this.style.width=500;" border="0" />
它的特点有:CAN总线的收发器大部分都是8脚DIP封装,各公司的产品价格和性能类似,无太大的区别。PHILIP公司新推出的高速容错CAN收发器TJA1050, TJA1040与早先推出的PCA82C250相比,价格大致相同,但其抗干扰性更强,可防止电磁干扰。本文选用了PCA82C250CAN收发器。
3.3 控制节点设计
控制节点采用PIC16F873进行控制和通讯控制板的结构如图。控制板由以下电路组成:键盘输入电路、IC卡控制电路、液晶显示电路、无线信号接收电路、主控制电路、CAN通讯电路。图3为控制节点结构示意图。
500)this.style.width=500;" border="0" />
1、键盘输入电路采用74C922键盘编码芯片。其输出的有效端(DATA AVAILABLE)与I6F873的PORTB口的硬件中断连接。其解码输出与分别接至PORTA, PORTB口。74C922芯片通过外部时钟或者外部电容执行键盘扫描,功耗小,宽范围供电3V-15V。当按键按下,数据有效端输出高电平,否则为低电平。数据输出端口在下一次按键之前保持前次按键解码输出的状态。
2、IC卡控制电路。控制芯片采用I2C通讯方式与IC卡通讯。只有读到卡内的数据才能操作控制板,否则控制板只显示当前的时间,按键无效。通用存贮器1C卡是由通用存贮器芯片封装而成的,由于它的结构和功能简单,生产成本低,使用方便,因此在各领域都得到了广泛的应用。目前用于IC卡的通用存贮器芯片多为E2PROM,其常用的协议主要有两线串行连接协议(I2C)和三线串行链接协议。本文采用比较常用的ATMEL公司生产的AT24系列芯片EEPROM AT24C01,它具有1k的存贮容量,两线串行I2C通讯方式,适用于2V~5V的低电压/标准电压的操作,具有低功耗和高可靠性等优点。
3、LCD显示是单片机控制产品中的典型应用。目前有多种方法实现LCD液晶显示控制:一种是单片机内部直接集成了LCD驱动电路,这种方法一般在4位机中较常用,8位机则很少,成本也较高。另一种方法是使用LCD模块,这种模块中带有LCD显示屏和LCD驱动电路,用起来较方便,但成本偏高,不适合于大批量生产采用。本文采用的是单片机+LCD驱动器+LCD显示屏的方式,可选用不同的单片机,另外选用性价比很高的LCD驱动器HT1621。
4、本系统设计的无线信号接收电路采用MICRF002芯片。MICRF002芯片是超外差电路。美国Micrel公司推出的MICRF系列超外差电路灵敏度高和选择性好。单片集成电路可完成接收及解调功能。Micrel 公司MICRF002为MICRF001的改进型,与MICRF001相比,功耗更低,并具有电源关断控制端。MICRF002性能稳定,使用非常简单。
5、主从机节点硬件电路相同(我们称其为电机板),二者仅软件设计不同而己。电机板由主控芯片PIC16F873,水位检测电路、脉冲检测电路、驱动电路组成。
4 节点软件设计
系统软件的设计分为以下几个部分:CAN节点通讯程序、控制板程序(包括键盘输入程序、无线接收程序、IC卡通讯程序、液晶界面控制程序)、电机板程序三个大部分。控制板上的IC芯片包含控制板程序和CAN通讯程序。电机板上的IC芯片存有CAN通讯程序和电机板程序。CAN节点要有效、实时地完成通讯任务,CAN通讯软件设计是关键。它包括初始化程序报文发送子程序,报文接收子程序和出错处理子程序等。
控制板的主程序流程图如图4所示。系统设计要求只有插入IC卡后,才可以通过键盘或遥控器来控制系统。键盘处理子程序和无线接收子程序都是采用中断方式执行,且任何时刻二者只能有一个被执行。键盘处理子程序的中断是外部INT中断,无线接收子程序采用的是PORTB 口的RB6端。
500)this.style.width=500;" border="0" />
在编程时有一点要注意,PORTB口RB7-RB4端有电平变化时可以产生中断,但只有当I/O引脚设置为输入状态时才能发生中断。芯片通过把RB7-RB4端口的输入信号与上次读入的锁存值进行比较,如不等,则二者异或后输出,产生变化中断,使标志位RBIF为1。控制板程序运行时,控制板的程序接收各块电机板的状态,然后在控制板液晶上显示电机台数和水箱的水位状态。控制板收到键盘和遥控器的命令,向总线发送信息。电机板接受总线信息,执行控制板的命令动作。同时定期发送水位的状态值给控制板。其中冷冻功能就是同时执行冲洗功能和通风功能。冷冻功能程序是电机板程序的子程序。每次冷冻结束后必须执行清洗,保持过滤网清洁。
CAN控制器MCP2510与控制芯片PIC16F873采用SPI通讯方式。PIC微控制器工作于主模式下,可实现完全SPI功能。数据的收发采用软件缓冲区。发送数据时,软件缓冲区装入所发数据,同时发出SPI中断。CAN总线废除了站地址编码,对通讯数据进行编码。数据的编码通过帧ID号来识别。可以通过编码开关设定数据ID号。总线仲裁指如果2个或2个以上的单元同时开始传送报文,那么就会有总线访问冲突。通过使用了识别符的逐位仲裁可以解决这个冲突。仲裁的机制确保了报文和时间均不损失。当具有相同识别符的数据帧和远程帧同时初始化时,数据帧优先于远程帧。仲裁期间,每一个发送器都对发送位的电平与被监控的总线电平进行比较。
本文作者创新点
本文构建了基于工业设备控制系统的CAN总线节点,按照功能的不同,设计三种不同功能的节点。设计了不同节点的硬件结构。采用PIC的汇编程序,实现了基本CAN通讯的方式和不同节点的功能要求。本文设计的CAN总线节点解决了在传统的工业通讯控制方式485总线中的一些弊端,如无法构成多主结构,主节点任务繁忙,主节点故障可能引起系统瘫痪,数据传输效率降低;实时性差,错误处理能力不强等。