微波EDA网,见证研发工程师的成长!
首页 > 硬件设计 > MCU和DSP > RS232通信网络与CAN总线通信网络互联设计

RS232通信网络与CAN总线通信网络互联设计

时间:10-17 来源:电子技术应用 点击:

目前工业设备之间的通信很多采用RS232接口,但由于RS232通信距离短(根据EAT/TAI-232标准,仅为15 m)、接口易损,而且只能进行点到点通信,不能直接组成多点通信网络。为了延长RS232的通信距离,并将RS232节点组成通信网络,目前广泛使用RS232/RS485信号转换器。但是,由于RS485通信本身的局限性,在实际应用中存在许多不足:总线效率低、系统的实时性差、通信的可靠性低、网络工程调试复杂、传输距离不理想、单总线可挂接的节点少、应用不灵活等。

基于CAN通信的优越性,本文介绍一种可以将RS232通信网络转换成CAN通信网络的方法,以更好地解决用户建立远程通信网络的问题。

1 CAN总线简介

1.1 CAN总线概述

控制器局域网络CAN(Controller Area Network),属于现场总线的范畴,它是一种有效支持分布式控制或实时控制的串行通信网络, 最初由德国Bosch公司于20 世纪80 年代用于汽车内部测试和控制仪器之间的数据通信[1]。其总线规范已被ISO国际标准组织定为国际标准,CAN 协议经ISO 标准化后有ISO11898 标准和ISO11519标准两种,这两种标准对于数据链路层定义是相同的,但物理层不同。ISO11898是通信速度为125 kb/s-1 Mb/s的CAN高速通信标准; ISO11519是通信速度为125 kb/s以下的CAN低速通信标准。CAN协议建立在国际标准组织的开放系统互联模型基础上,但其模型结构只有三层:ISO底层的物理层、数据链路层和应用层;其信号传输介质可采用双绞线、同轴电缆和光纤等;通信最大距离可达10 km;最大通信波特率可达1 Mb/s,可挂设备最多达110个。CAN总线具有的特点,越来越广泛地被应用于各种工业现场,并被公认为是最有前途的现场总线之一。

1.2 CAN总线工作机制

1.2.1 CAN的报文类型

CAN系统中节点之间以报文的形式进行通信,其报文有五种类型:数据帧、远程帧、错误帧、过载帧和帧空间[2]。每种帧都有相应固定的格式,其中数据帧和远程帧与应用密切相关,其他类型帧由CAN控制器根据具体的情况自动传输。帧种类及用途如表1所示。


1.2.2 CAN节点的仲裁机制

只要总线空闲,任何单元都可以开始发送报文(多主控制)。最先访问总线的节点可获得总线控制权。若多个节点同时开始传送报文,就会有总线访问冲突,可使用识别符的位形式仲裁解决这个冲突。仲裁期间,每一个发送器都对发送位的电平与被监控的总线电平进行比较。如果电平相同,则这个节点继续发送。若发送的是隐性电平而监控到的是显性电平,则这个节点失去了仲裁,必须退出发送状态。ID越小优先权越高,发送高优先级 ID 消息的节点可获得发送权。

1.2.3 CAN节点的报文滤波机制

CAN 控制器监听接收总线上的所有报文,只有通过CAN控制器的报文筛选器筛选的报文才能进入CAN 的报文接收缓冲区,为该节点所接收并传送给应用程序。

1.2.4 CAN节点状态

CAN总线上每个节点都处于"错误主动"、"错误被动"和"总线关闭"三种状态之一。区分这几种状态的主要依据是发送错误计数器和接收错误计数器的值,并且这三种状态可以在一定条件下相互转化。
处于错误主动状态的节点,当发现总线上有错误传输时,将向总线上发"主动出错帧";处于错误被动状态的节点,当发现总线上有错误传输时,将向总线上发"被动出错帧";当节点进入总线脱离状态时,将完全退出总线操作。

2 硬件电路设计

2.1 硬件设计原理

RS232串口通信与CAN通信是两种不同的传输方式,无论是数据的传输方式还是逻辑电平的电压表示都是不同的,本设计主要完成RS232接口与CAN总线协议之间的转换,以及数据的双向传输。设计原理如图1所示。
RS232接口端信号经过RS232电平转换成TTL电平,直接输入到微控制器的通用同步/异步串行接口(USART),微控制器控制CAN控制器读出有效的数据经光电隔离的CAN收发器发送到CAN总线上。

本设计采用的RS232电平转换器为MAX232,微控制器为ATmega128,CAN总线控制器采用SJA1000,CAN总线收发器采用高速的具有收发和隔离功能的CTM1050控制器。ATmega128是整个模块的控制中心,控制着RS232接口和CAN总线的通信。器件连接示意图如图2所示。

RS232接口的发送数据端和接收数据端经MAX232电平转换分别与Atmega128串口、接收数据端PE0/RXD0、发送数据端PE1/TXD0相连;SJA1000的AD0~AD7连接到Atmega128的PA口,INT与Atmega128的INT0相连,ALE与Atmega128的PG2/ALE相连,读写端RD、WR分别连接Atmega128的PG1/RD、PG0/WR,CS连接到Atmega128的PC6,Atmega128的时钟取自SJA1000的振荡器,即SJA1000的CLKOUT连接到Atmega128的XTAL1;收发器CTM1050的RX0、TX0分别连接SJA1000T的RX0、

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top