0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

基于STC89C52RC单片机和SJA1000总线控制器实现采集与控制模块的设计

电子设计 来源:现代电子技术 作者:郝寿朋;刘瑞玲 2020-03-14 08:05 次阅读

引言

随着计算机网络上的高速发展,使得信息的交流与共享变得空前广泛和自如,而这项技术也渗入到自动化领域的变革当中,现场总线(Fieldbus)由此应运而生,开创了工业控制的新篇章。现场总线是一种应用于生产现场,在现场设备之间、现场设备和控制装置之间实行双向、串形、多结点的数字通信技术,在当今自动化领域中具有广阔的发展前景。本文给出了一种基于CAN总线的数据采集与控制系统设计方案,实现对开关量的数据采集和对外部设备的控制功能。

控制器局域网(Controller Area Network,CAN)总线是现场总线的一种,是一种有效支持分布式控制或实时控制的串行网络通信,已经被广泛地应用于工业自动化、船舶、医疗设备、工业设备等方面,并被公认为最有前途的现场总线之一,其主要特点如下:

(1)CAN是有国际标准的现场总线。

(2)CAN为多主工作方式,网络上的任意一节点都可在任意时刻向网络上的其他节点发送信息,且不分主从。

(3)CAN采用非破坏总线仲裁技术。当多个节点同时向总线发送信息出现冲突时,优先级低的节点将主动退出发送,而优先级高的节点不受影响继续发送。

(4)CAN节点在错误严重的情况下具有自动关闭输出功能,使总线上其他节点的操作不受影响。

(5)报文采用短帧结构,传输时间短,受干扰概率低,而且每帧都有CRC校验及其他校验措施,具有极好的检错效果。

(6)CAN的直接最远通信距离可达10 km,最高通信速率可达1 Mb/s。

1 、系统总体结构设计

系统主要由上位机(PC机)和数据采集和控制模块组成。系统总体结构设计如图1所示。

基于STC89C52RC单片机和SJA1000总线控制器实现采集与控制模块的设计

上位机是整个系统的核心,实现系统的监控和管理功能。CAN总线智能适配卡的作用是收集各个CAN节点上的数据,然后转发到上位机,同时把上位机的命令转发到各个节点。由于CAN总线特有的多主传输方式,各个节点根据需要自主地向总线发送数据,而且在上位机监听各个节点的同时,节点也实时监听总线并接收自己需要的数据。数据采集和控制模块采用微处理器和可编程的CAN控制芯片,主要用于完成现场数据的采集、数据的传送以及各个现场设备运行的控制。

2、 数据采集和控制模块硬件设计

基于CAN总线的数据采集与控制系统将功能尽可能地分散到各个控制模块中,各个模块以微处理器为核心,完成数据采集和控制功能。为了使信息能在CAN协议的标准下进行通信,各个模块都设有CAN总线接口电路。该模块的微处理器(MCU)选用宏晶科技的STC89C52RC单片机。STC89C52RC是新一代超强抗干扰、高速、低功耗的8位单片机,指令代码完全兼容传统的8051单片机,36个通用I/O口,3个16位定时器/计数器,4路外部中断。根据实际需求分析,STC89C52RC单片机完全满足本设计的需求。数据采集和控制模块的结构如图2所示。

基于STC89C52RC单片机和SJA1000总线控制器实现采集与控制模块的设计

2.1 CAN总线接口硬件设计

CAN总线接口硬件结构如图3所示。

基于STC89C52RC单片机和SJA1000总线控制器实现采集与控制模块的设计

在本系统中CAN总线控制器选用SJA1000。SJA1000是Philips公司生产的独立的CAN总线控制器,可以应用于一般的工业环境中和移动目标的CAN总线网络控制。SJA1000是Philips半导体PCA82C200 CAN总线控制器BasicCAN的替代产品,而且增加了一种新的工作模式PeliCAN,这种模式能支持具有很多新特性的CAN 2.0B协议。基本特性如下:兼容BasicCAN模式;扩展地接收缓冲器(64 B,先进先出FIFO);同时支持11位和29位识别码;位速率可达1 Mb/s;24 MHz时钟频率;对不同微处理器的接口兼容;可编程的CAN输出驱动器配置。PeliCAN模式扩展功能包括;可读/可访问的错误计数器;可编程的错误报警器;对每一个CAN总线错误进行中断;单次发送无重发;验收滤波器控制4 B代码、4 B屏蔽等。

CAN总线收发器选用Philips公司生产的专用CAN总线收发器PCA82C250,提供CAN总线协议控制器和物理总线接口,而且对CAN总线控制器提供差动接收能力。基本特性如下:高速率(最高达1 Mb/s);具有抗瞬间干扰和保护总线的能力;利用斜率控制,可降低射频干扰;使用差分接收器,可抗宽范围的共模干扰,以及抗电磁干扰;热保护;低电流待机模式;未上电的节点对总线无影响;可以支持多达110个节点。 [page]

为了增强CAN总线节点的抗干扰能力,并不是在SJA1000与PCA82C250之间直接相连,而是加入了高速光耦隔离器。这样能很好地实现总线上各个CAN总线节点之间的电气隔离。在该系统中高速光耦采用6N137。6N137兼容TTL和COMS电平,可通过信号的宽度为10 MHz,完全可满足CAN总线信号1 Mb/s通信速率的要求。

2.2 开关量数据采集单元硬件设计

该单元用于采集现场的开关量数据的采集。硬件电路图如图4所示。

基于STC89C52RC单片机和SJA1000总线控制器实现采集与控制模块的设计

该单元将采集到的开关量数据传送到微处理器,并传送到CAN总线上,然后通过CAN总线智能适配卡转发给上位机进行处理。外界环境以及电路、器件本身对系统引入了干扰和噪声,为了提高单片机系统的性能,保证其稳定性,采用光耦器件进行隔离,抑制干扰。光耦器件将电信号转变为光信号,光信号传送到接受侧再转换为电信号。由于光信号的传送不需要共地。可以将光耦器件两侧的地加以隔离。因此在加入光耦器件后,在传输信的同时能有效地抑制尖脉冲和各种噪声干扰,大大提高通道上的信噪比。需要注意的是光耦器件两端的电源不能共用,否则起不到隔离的作用。

2.3 控制单元硬件设计

该单元用于控制现场外部设备的运行。该单元硬件电路如图5所示。

基于STC89C52RC单片机和SJA1000总线控制器实现采集与控制模块的设计

该单元是上位机按照预先设定好的程序自动控制输出,上位机通过CAN总线智能适配卡传送开关量到CAN总线,然后数据采集和控制模块根据需要接受CAN总线上的开关量,以控制现场设备。在该单元中,开关量通过单片机的I/O端口输出,但I/O端口的驱动能力有限,一般不足以驱动继电器,此时需要添加驱动电路。同时,为了避免单片机受到干扰,在驱动电路设计时,必须采取隔离措施。

3、 软件设计

该系统软件设计主要分为两个部分:数据采集与控制模块程序设计和CAN总线通信程序设计。

3.1 数据采集与控制模块程序设计

数据采集与控制模块程序设计流程图如图6所示。

基于STC89C52RC单片机和SJA1000总线控制器实现采集与控制模块的设计

3.2 CAN总线通信程序设计

CAN总线通信程序设计分为三个部分:CAN总线初始化、数据发送和数据接收。

(1)CAN总线初始化。CAN总线初始化主要是设置一些通信参数,保证通信的正常进行。初始化主要包括工作方式的设置、验收滤波方式的设置、验收屏蔽寄存器和验收代码寄存器的设置、波特率参数设置、中断允许寄存器的设置等。特别需要注意的是,初始化只有在复位模式下才可以进行,因为SJA1000配置信息的寄存器只有在复位模式下才可以进行写操作。

(2)数据发送。数据发送前,微处理器周期查询状态寄存器,查看发送缓冲器是否被锁定。若没有锁定,则把从现场取得的开关量数据发向CAN总线控制器的发送缓冲区,然后启动CAN总线控制器发送命令,此时CAN总线控制器自动向总线发送数据。数据发送的流程图如图7所示。

基于STC89C52RC单片机和SJA1000总线控制器实现采集与控制模块的设计

(3)数据接收。数据接收采用中断方式。系统中的CAN控制器检测到总线上有数据时会自动接收总线上的数据,存入其接收缓冲区,并向微控制器发送接收中断,启动中断接收服务程序,通过执行中断接收服务程序,从CAN控制器的接收缓冲区读取数据,并对其进行进一步处理工作。数据接收流程图如图8所示。

4、 结语

通过对系统的软硬件的反复调试表明,该数据采集和控制系统的设计方案是成功的。该系统能高速有效地采集、传递和处理现场数据,并且能在恶劣环境下保证通信速率和极低的出错率,运行效果很好,体现了CAN总线高性能和高可靠性的优点。

责任编辑:gt


声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 单片机
    +关注

    关注

    6039

    文章

    44583

    浏览量

    636653
  • 控制器
    +关注

    关注

    112

    文章

    16406

    浏览量

    178663
  • 总线
    +关注

    关注

    10

    文章

    2891

    浏览量

    88196
收藏 人收藏

    评论

    相关推荐

    关于STC89C52RC单片机问题

    大家好!我是新手如何实现STC89C52RC单片机数码管交替显示时间与温度,请提供电路及程序.
    发表于 11-12 11:25

    CAN控制器SJA1000片选基址怎么确定?

    初学CAN总线,在学习SJA1000时不知道怎样确定其片选基址,书上说将SJA1000当做外部存储来对待,其基址根据具体的硬件电路来确定,用的是S
    发表于 07-03 20:53

    基于STC89C52RC单片机与MATLAB的PM2.5数据采集系统设计

    摘要:本文设计了基于STC89C52RC单片机与MATLAB的PM2.5数据采集系统。通过STC89C52RC单片机与夏普GP2Y1010A
    发表于 07-20 06:12

    初识STC89C52RC单片机

    怎样去使用STC89C52RC单片机的定时呢?怎样去使用STC89C52RC单片机的串口呢?
    发表于 10-20 07:32

    SJA1000控制器在多电机综合保护中的应用

    介绍了基于独立CAN总线控制器SJA1000的井下多电机综合保护的设计过程。围绕综合保护核心控制器
    发表于 12-08 16:43 45次下载

    STC89C52RC单片机或AT89S52单片机串口发送温湿度数据的程序免费下载

    本文档的主要内容详细介绍的是STC89C52RC单片机或AT89S52单片机串口发送温湿度数据的程序免费下载。
    发表于 07-11 17:40 37次下载
    <b class='flag-5'>STC89C52RC</b><b class='flag-5'>单片机</b>或AT<b class='flag-5'>89S52</b><b class='flag-5'>单片机</b>串口发送温湿度数据的程序免费下载

    STC89C52RC单片机实现模拟路灯控制系统的详细资料说明

    模拟路灯控制系统由信号采集电路、定时电路、控制电路、显示电路、输入电路组成。系统的控制部分由STC89C52RC
    发表于 09-06 08:00 1次下载
    由<b class='flag-5'>STC89C52RC</b><b class='flag-5'>单片机</b><b class='flag-5'>实现</b>模拟路灯<b class='flag-5'>控制</b>系统的详细资料说明

    使用STC89C52RC单片机实现的流水灯代码和工程文件免费下载

    本文档的主要内容详细介绍的是使用STC89C52RC单片机实现的流水灯代码和工程文件免费下载。
    发表于 11-15 08:00 26次下载
    使用<b class='flag-5'>STC89C52RC</b><b class='flag-5'>单片机</b><b class='flag-5'>实现</b>的流水灯代码和工程文件免费下载

    基于STC89C52RC单片机的智能定时开关电源

    基于STC89C52RC单片机的智能定时开关电源
    发表于 05-25 11:50 74次下载

    51单片机入门模板(STC89C52RC

    模板STC89C52RC单片机使用11.0592MHz的晶振,若使用12MHz晶振可修改定时相关位置STC89C52RC原理图模板及分析1.主要结构#include <reg
    发表于 11-17 09:51 46次下载
    51<b class='flag-5'>单片机</b>入门模板(<b class='flag-5'>STC89C52RC</b>)

    8051单片机实战分析(以STC89C52RC为例) | 10 - 外部中断的使用

    在前面九篇博文中,我们认识到了一些基于IO口输入与输出的基础电子器件使用:8051单片机实战分析(以STC89C52RC为例) | 01 - 点亮一个LED8051单片机实战分析(以
    发表于 11-22 14:06 33次下载
    8051<b class='flag-5'>单片机</b>实战分析(以<b class='flag-5'>STC89C52RC</b>为例) | 10 - 外部中断的使用

    【51单片机】基于STC89C52RC的心型灯

    【51单片机】基于STC89C52RC的心型灯
    发表于 11-23 17:06 29次下载
    【51<b class='flag-5'>单片机</b>】基于<b class='flag-5'>STC89C52RC</b>的心型灯

    【51单片机】基于STC89C52RC的电子秒表

    【51单片机】基于STC89C52RC的电子秒表
    发表于 11-23 17:21 51次下载
    【51<b class='flag-5'>单片机</b>】基于<b class='flag-5'>STC89C52RC</b>的电子秒表

    【转】STC89C52RC单片机实现串口打印功能

    【转】STC89C52RC单片机实现串口打印功能
    发表于 11-25 16:06 19次下载
    【转】<b class='flag-5'>STC89C52RC</b><b class='flag-5'>单片机</b><b class='flag-5'>实现</b>串口打印功能

    单片机STC89C52RC病床呼叫控制系统

    电子发烧友网站提供《单片机STC89C52RC病床呼叫控制系统.pdf》资料免费下载
    发表于 10-11 09:20 4次下载
    <b class='flag-5'>单片机</b><b class='flag-5'>STC89C52RC</b>病床呼叫<b class='flag-5'>控制</b>系统