现场总线及其应用技术日益成为国际自动控制领域关注的一个焦点。CAN总线是目前公认的几种最有前途的现场总线之一。通信介质可以是双绞线、同轴电缆和光纤,其通信速率可达1mbps。can国际标准的制定更加推动了它的发展和应用,基于can总线的工业应用系统业大量涌现。其主要应用领域包括大型仪器设备、传感器技术及数据采集系统和工业现场监控系统等[1][2]。本文结合can总线的特点,介绍了基于can总线的数据采集与处理的一种设计方法。
2 系统设计
2.1 can系统概要
图1 结构简图
本系统由两个cpu通过双口 ram相互连接组成,一片cpu(p87c591)负责can信号的发送与接收,另一片cpu(p89c58ba)负责 rs-485 信号的发送与接收。设计中通讯控制器选用了集成有can控制器的p87c591单片机。它自带的can控制器完全具有sja1000的功能,可完成can协议中规定的所有数据链路层和物理层的功能。且p87c591自带了15个中断源和看门狗定时器(wdt),应用十分方便。系统结构简图如图1所示。图中各部分所完成的主要功能如下:
(1) cpu-1:该芯片带有can接口,故可与下位机进行can通讯。通过can总线发送上位机的设定信息给下位机,同时接收下位机提供的数据信息,将其存入双口ram中,以供cpu-2来查询。
(2) cpu-2:该芯片连接有max491和max485 芯片,故可与外部进行422或485通讯,上位机的信息通过485通讯读入cpu-2之中,cpu-2再将其存入双口ram之中,以供cpu-1来查询,cpu-1再通过can总线将此设定信息传送给上位机。反之,下位机的所有已存入双口ram的检测值信息,也是通过该单片机的读取,并通过485通讯,将所有显示信息在人机界面上显示。
(3) 双口ram:双口ram用于存储系统的设置信息和状态信息,完成各种信息存储与交换。选用存储容量为16k的idt7006系列,并采用后备电池支持,保证掉电时存储的信息不丢失。双口ram按存储内容不同,分为设置区、状态区和预留区。设置区用来存储上位机的信息;状态区用来存储从下位机收集的系统状态信息;预留区则作为预留备用。
2.2 p87c591单片机概要
在系统中采用philips公司生产的p87c591单片机,该单片机是一个8 位高性能微控制器具有片内can控制器[3],大大简化了硬件电路的设计,提高了can接口的稳定性。p87c591 采用了强大的80c51指令集,并集成了sja1000 can控制器的pelican功能。主要有以下功能特点:can2.0b控制器,支持11位标准标识符和29位扩展标识符,4个可独立配置的验收滤波器,都可“在运行中改变”。can控制器的发送缓冲区能够保存一个完整的can信息帧(标准或扩展帧格式),只要通过cpu启动发送,信息字节就从发送缓冲区传输到can内核模块完成发送。can接口包含5个实现cpu与can控制器连接的特殊功能寄存器,对重要can寄存器的访问通过快速自动增加的寻址和对特殊功能寄存器的位寻址实现。接收一个信息时,can内核模块将串行位流转换成并行数据输入到验收滤波器,通过该可编程滤波器,p87c591可以确定实际接收到的信息。
p87c591连接的can节点电路设计比较简单,所需的外部元件只是一个晶振加两个电容驱动片内震荡器、一个连接到复位脚的电阻、电容。使用片内上电复位电路以及一个收发器将p87c591连接到can总线上。如图2所示。
图2 can 节点电路
2.3 can总线p87c591单片机侧的主要任务
在整个系统中591起到数据传输和处理的作用,通过can总线接收数据采集节点接收来的信息,整理后按协议存储到双口ram中。其主要任务有以下两点:其一采集下位机的数据信息;其二将采集来的信息按照协议的约定存储到双口ram中的固定的位置,便于58查询显示。
3 can总线软件设计
can总线软件设计主要包括两大部分:通信网络的应用层协议和功能实现的流程和编码。can通信软件主要由初始化、接收处理、发送处理及中断处理等组成。本文重点介绍发送、接收处理子程序。
3.1 发送程序
发送子程序负责节点报文的发送。信息从can控制器发送到can总线是由can控制器自动完成的。其流程图如图3所示。
图3 查询发送流程图
3.2 接收程序
接收子程序负责接收节点报文的接收。信息从can总线到can缓冲区是由can控制器自动完成的,接收程序只需从接收缓冲区读取要接收的信息。其流程图如图4所示。
图4 中断接收流程图
4 问题讨论
本设计的硬件电路中, 采用双cpu系统,即用一个cpu完成测控功能,另一个cpu完成系统联网和接口通信功能。cpu间的通信可以采用串口、并口等方式,但它们共同的缺点是操作复杂、速度慢。因此,采用双口ram方式在两个cpu系统间交换数据是一个不错的选择。但双口ram有时会发生共享冲突问题。
一般双口ram都提供了两个完全独立的端口,每个端口都有自己的控制线、地址线和数据线,cpu对双口ram端口的操作等效于对它对外部ram进行操作。双口ram在使用上要注意的问题是如何避免两端cpu对同一ram单元的争用,双口ram可提供三种防冲突方式:插入等待状态的防冲突方式;信号灯防冲突方式;中断防冲突方式。本设计中双口ram主要用于两个cpu之间交换数据,由于交换的实时性很难用软件来保证,所以采用中断方式解决冲突问题。
双口ram被划分为两个区域,其中数据接收缓冲区是通信cpu插件向其发送命令和数据的区域;数据发送缓冲区是它向通信cpu插件发送数据的区域。为了保证数据交换的实时性和有效性,可采用双口ram的中断方式通知对方,信号intl和intr可作为cpu的一个中断输入。数据交换时,先将数据放入对应的双口ram存储区,然后写入对方信箱,以通知对方有数据发送;接收方在相应的中断中对数据进行处理,同时读自己的信箱以清除中断信号,然后再写入对方信箱以告知其数据已处理完毕。
5 结束语
所设计的系统可用于电力参数监控和其他工业自动化场合。利用can总线结构灵活简单,可靠性高,适应性好,易于维护等优点。通过rs485/422和can 总线转换器实现现场智能设备与上位机间或其他监控装置的数据交换,利用上位机强大的数据处理能力,实现事件记录、数据处理等功能。因此该系统用于工业领域性价比较高。
上一篇:STM8输入捕获
下一篇:单片机分布式安全检测系统设计
推荐阅读最新更新时间:2024-03-16 14:54