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

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

3天内不再提示

基于SJA1000的CAN总线和AT89C51单片机实现运动控制系统的设计

电子设计 来源:网络整理 作者:佚名 2019-11-15 07:56 次阅读

1、引言

运动控制系统是以机械运动的驱动设备—电动机为控制对象, 以控制器为核心, 以电力电子、功率变换装置为执行机构, 在自动控制理论指导下组成的电气传动控制系统。在电气时代, 电动机一直在现代化的生产和生活中起着十分重要的作用。在近年来, 由于半导体制造设备等相关的电子制造设备市场大幅成长, 而使得机器设备上的运动控制系统出现了以下几点技术需求:

( 1) 多轴运动控制。机器设备因自动化程度提高而使得单一机器上所需要的轴数增多, 一台设备上十几轴是常见的事情。在轴数变多后, 如何协调各轴动作就是一个重要的课题。

( 2) 体积要小。由于厂房空间的限制, 机器的体积要求越小越好, 机器内控制器的体积也就被要求愈来愈小, 相对的走线空间也愈来愈小。

( 3) 要更精确。随着半导体制程已经精密到100nm 一下, 在制程及检测相关设备所要求的运动精度也要更精确, 其它如LCD 设备, SMD 制程设备也有相同要求。

( 4) 要更稳定。因为所有设备的投资经费庞大, 系统停机的成本就更显的突出, 因此所有机器设备制造商都必须追求系统的稳定性。同时也必须考虑在组件损坏要维修时, 必须能快速替换且不出差错。

综合以上几点的需求分析可以看到, 既要在一个控制器内进行多轴运动控制, 又要控制器的体积更小, 配线和维修要更容易, 这些条件看来是相冲突的。可以这样说, 现场总线技术便是应这些新机器设备的需求而产生的。

2、现场总线运动控制系统通信特性

用于运动控制的现场总线有两种通信控制策略: 事件触发和时间触发。事件触发中, 控制单元检测到事件发生后, 根据预定的算法计算出正确的应答, 然后将应答信息发送给数字伺服驱动器。从事件发生到应答信息的接收之间的延时必须是有限的, 也就是最大值必须是可知的, 它的值就是通信协议的实时性指标。但是, 事件触发中的事件是随机的、不可预知的, 所以导致现场总线通信的不确定性, 系统中的各个站点会争用传输介质,导致通信的冲突和不可靠, 很难保证高的实时性。事件触发通常是非周期性的, 使用非周期性数据传输实现最为简单, 但是也可以用周期性数据传输实现, 此时, 就必须标识哪个周期的数据为有效数据。

时间触发通常是周期性地进行的, 控制单元周期性地计算出控制数据, 然后及时发送控制数据给伺服驱动器。控制和通信是通过一个全局时钟进行驱动的, 系统的行为不仅在功能上得到确定, 而且在时间上也是确定的, 各站点不会争用传输媒介,整个系统是可靠的。时间触发控制中的通信周期时间应该等于控制周期时间, 或者通信周期时间能够被控制周期时间整除。周期性的时间触发中, 通信周期时间必须固定, 不能有明显的波动, 即数据传输必须有确定性, 也称为实时性。

总体而言, 用于运动控制的现场总线通信协议的性能要求有三点:

( 1) 可靠的通信, 以适合工业现场恶劣的环境;

( 2) 数据传输的实时性。周期性数据传输和非周期性数据传输都必须有很高的实时性, 响应时间通常为( 1~10) ms。

( 3)命令执行和状态反馈的同步性。为了达到各坐标轴的同步运动精度, 需要各轴在收到命令值之后必须在同一时刻同时执行位置控制指令和同时采样当前位置, 发送给控制单元。

3、CAN 总线运动控制系统总体设计

CAN 总线( Controller Area Network 控制局域网络) , 是一种普遍的应用。通过CAN 总线进行数据传输与控制, 使伺服电机的性能更加稳定, 能更好更灵活地地应用于运动控制系统中。

基于SJA1000的CAN总线和AT89C51单片机实现运动控制系统的设计

如图1 所示, 基于CAN 总线的运动控制系统与控制系统典型结构相比, 有两个显著的特点。第一是其控制对象为伺服运动控制对象, 第二是其网络化控制器包括CAN 总线通信媒介和CAN 控制器节点两部分。多个CAN 控制器节点通过CAN 总线通信媒介平行互联为一个单层结构的基于CAN 总线的伺服运动控制系统。当需要更多轴运动控制时, 只需要简单的再增加新运动控制节点, 把新的运动控制节点作为新的CAN 总线节点挂接到CAN 总线上就可以形成一个分布式多轴运动控制系统, 而且无需在硬件上对原有的运动控制节点做任何的修改。也可通过互联网关与IE( Industry Ethernet) 或Intranet/Internet 上下互联为一个多层结构的网络化伺服运动控制系统。

基于CAN 总线运动控制系统的设计, 主要工作在于对CAN 控制器节点的设计, 包括硬件和软件两部分。硬件设计, 主要在于选择合适的芯片和硬件电路分别设计图1 所示CAN 控制器节点的5 个基本组成部分, 即主控制器、主控制器与传感器/ 执行器的接口模块、主控制器与CAN 总线控制器的接口模块、CAN 总线控制器和CAN 总线收发器。软件设计, 主要工作在于选择合适的系统软件和应用开发软件分别设计各种接口驱动软件、系统管理软件和控制功能软件。

4、系统硬件设计

主控制器采用AT89C51 单片机作为处理核心, 采用PCA82C250 作为CAN 总线收发器, 图2 给出了基于SJA1000的CAN 总线系统电路图。为了增强抗干扰能力, SJA1000 的TX0 和RX0 引脚并没有直接和PCA82C250 的TXD, RXD 相连接, 而是通过高速光耦6N137 后与PCA82C250 相连, 这样可以实现总线上各CAN 节点之间的电气隔离, 光耦6N137 的两侧使用完全独立的两组电源VCC 和+5V。

基于SJA1000的CAN总线和AT89C51单片机实现运动控制系统的设计

SJA1000 与单片机的接口比较简单, AD0~AD7 直接连接到AT89C51 的P0 端口, RD、WR 和ALE 信号也直接和AT89C51的相应引脚进行连接, MODE 接+5V 设置SJA100 控制器为Interl模式。SJA1000 的片选信号CS 由AT89C51 的P2.0 决定, 因此系统中SJA1000 的寻址空间从地址0 开始, 可以使用此地址加上SJA1000 内部寄存器地址的偏移量来访问SJA1000 内部RAM空间。SJA1000 的中断输出信号INT 与AT89C51 的INT0引脚相连, 以便AT89C51 以中断方式或查询方式对报文收发作出响应。

5、系统程序设计

基于SJA1000 的CAN 总线建立通信的过程包括系统初始化、接收和发送。

5.1 SJA1000 的初始化程序

AT89C51 在上电后首先运行其自身的复位程序, 并在此后调用SJA1000 的配置程序。配置程序在设置SJA1000 的寄存器前, 必须通过读复位模式/ 请求标志来检查SJA1000 是否已处于复位模式, 因为要写入配置信息的寄存器仅在复位模式下可以被写入。初始化程序中, 首先将SJA1000 设为复位状态, 随后定SJA1000 使用PeliCAN 模式, CLKOUT 引脚输出频率为外接晶振频率的1/2, 为单验收滤波器模式。

SJA1000 的初始化流程( 图略) 。

在清除SJA1000 的复位模式/ 请求标志进入工作模式时,必须先检查标志是否确实被清除、是否进入了工作模式后, 才能进行下一步的操作。在进入工作模式后, CAN 控制器的中断可被使能, 并开始正常的发送或接收报文。

5.2 SJA1000 的报文发送接收

根据CAN 协议规范, 报文的传输由CAN 控制器SJA1000独立完成。在报文的发送过程中, 单片机AT89C51 必须将要发送的报文送入系统发送缓冲区, 在将系统发送缓冲区中的数据移至CAN 控制器发送缓冲器之前, 必须判断发送缓冲器是否被释放。

报文的接收由CAN 控制器SJA1000 独立完成, 收到的报文在接收缓冲器内, 同时将状态寄存器的接收缓冲器状态标志RBS 和接收中断标志RI 置位。如果报文接收被使能, 单片机可以将接收缓冲器内的新报文读出, 并存储到单片机的内存单元或外部数据存储器中, 然后释放接收缓冲器。SJA1000 报文接收过程可以由SJA1000 的中断请求或查询SJA1000 的控制段状态标志来控制。

6、小结

分析传统的运动控制系统已不满足电子制造设备的要求和现场总线运动控制系统通信特性, 提出了基于SJA1000 的CAN总线的网络化运动控制系统方案, 为交流伺服的网络化研究和应用作出了一次有益的新探索。CAN 总线可以很好地满足现场总线运动控制系统对实时响应的较高要求, 同时使用CAN 总线还使得系统具有很好的扩展性能。这样为向多轴或多点的分布式运动控制网络发展打下坚实的基础。

责任编辑:gt


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

    关注

    6036

    文章

    44555

    浏览量

    634892
  • 控制系统
    +关注

    关注

    41

    文章

    6611

    浏览量

    110587
  • CAN总线
    +关注

    关注

    145

    文章

    1951

    浏览量

    130740
收藏 人收藏

    评论

    相关推荐

    基于SJA1000CAN总线智能控制系统设计

    基于SJA1000CAN总线智能控制系统设计
    发表于 08-20 18:55

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

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

    采用P89C668单片机实现CAN总线接口设计

    节点接口硬件电路设计 CAN节点接口硬件电路原理如图1所示.采用PHILIPS公司生产的P89C668单片机CAN控制
    发表于 05-06 09:18

    AT89C51单片机的电风扇控制系统设计流程图

    AT89C51单片机的电风扇控制系统设计流程图仿真图AT89C51单片机的电风扇控制系统设计+流
    发表于 09-08 06:52

    调试51单片机can总线有哪些注意事项

    STC89C52调试can总线-SJA1000记录(代码都测试过)can通信模块51
    发表于 11-18 07:24

    SJA1000CAN 总线系统节点的应用

    介绍CAN 总线控制SJA1000; 给出其在CAN 总线
    发表于 05-13 16:43 62次下载

    CAN总线节点电路的设计与实现

    CAN 总线作为一种现场总线,应用极为普及。本文给出了一种基于AT89C51SJA1000CAN
    发表于 05-25 13:26 60次下载

    AT89C51单片机温度控制系统

    AT89C51单片机温度控制系统:本系统AT89C51单片机
    发表于 09-10 18:56 243次下载

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

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

    基于CAN控制SJA1000的智能高速控制系统设计

    摘要:本文介绍了一种新型的现场总线控制SJA1000的基本原理结构及功能特点,重点叙述了基于CAN控制
    发表于 03-11 13:47 2001次阅读
    基于<b class='flag-5'>CAN</b><b class='flag-5'>控制</b>器<b class='flag-5'>SJA1000</b>的智能高速<b class='flag-5'>控制系统</b>设计

    SHARC DSP与SJA1000CAN总线接口设计

    SHARC DSP与SJA1000CAN总线接口设计 本文讨论了DSP与CAN控制SJA1000
    发表于 09-27 16:10 1423次阅读
    SHARC DSP与<b class='flag-5'>SJA1000</b>的<b class='flag-5'>CAN</b><b class='flag-5'>总线</b>接口设计

    采用AT89C51单片机设计的变频调速控制系统

    采用AT89C51单片机设计的变频调速控制系统 摘 要:本文介绍了一种由AT89C51单片机为主
    发表于 04-27 09:33 3510次阅读
    采用<b class='flag-5'>AT89C51</b><b class='flag-5'>单片机</b>设计的变频调速<b class='flag-5'>控制系统</b>

    基于SJA1000CAN网络控制系统节点设计

    本内容提供了基于SJA1000CAN网络控制系统节点设计
    发表于 10-11 15:06 87次下载
    基于<b class='flag-5'>SJA1000</b>的<b class='flag-5'>CAN</b>网络<b class='flag-5'>控制系统</b>节点设计

    基于AT89C51CAN总线智能节点设计

    本文主要介绍CAN总线智能节点的简单设计。智能节点由89C5l型单片机SJA1000总线
    发表于 09-06 17:07 8821次阅读
    基于<b class='flag-5'>AT89C51</b>的<b class='flag-5'>CAN</b><b class='flag-5'>总线</b>智能节点设计

    基于51单片机SJA1000 CAN通讯实现(代码+原理图)

    STC89C52调试can总线-SJA1000记录(代码都测试过)can通信模块51
    发表于 11-11 10:36 71次下载
    基于<b class='flag-5'>51</b><b class='flag-5'>单片机</b><b class='flag-5'>SJA1000</b> <b class='flag-5'>CAN</b>通讯<b class='flag-5'>实现</b>(代码+原理图)