CAN总线与RS-232转换接口电路设计
引言
现场总线是安装在生产过程区域的现场设备/仪表与控制室内的自动控制装置/系统之间的一种串行数字式多点双向通信的数据总线,多用于工空等领域,应用现场总线技术不仅可以降低系统的布线成本,还具有设计简单、调试方便等优点,同时,由于现场总线本身还提供了灵活而又功能强大的协议,这就使得用户对系统配置,设备选型具有强大的自主权,可以任意组合多种功能模块扩充系统的功能。在众多的现场工业总线中,CAN总线是一种具有国际标准而且性能价格比又较高的现场总线,它在当今自动控制领域中的应用极为广泛,并发挥着重要的作用。一个由CAN总线构成的单一网络中,理论上可以挂接无数个节点。实际应用中,节点数目受网络硬件的电气特性所限制。CAN可提供高达1Mbit/s的数据传输速率,这使实时控制变得非常容易。另外,硬件的错误检定特性也增强了CAN的抗电磁干扰能力。
CAN通讯协议描述了在设备之间信息如何传递。它对层的定义与开放系统互连模型(OSI)一致。每一层与另一设备上相同的那一层通讯。实际的通讯是发生在每一设备上相邻的两层,而设备只通过模型物理层的物理介质互连。CAN的结构定义了模型的最下面的两层:数据链路层和物理层。应用层通过不同的新型协议层(专门用于特殊的工业领域加上由个别CAN用户定义的任何合适的方案)和物理层连接。物理层和数据链路层对于设计者来说是透明的,并包含在所有执行CAN协议的部件中。
[资料来源:http://doc163.com]
实际中,许多设备是RS-232接口,为了实现CAN总线数据和RS-232接口设备数据的传输,设计完成了CAN总线与RS-232转换接口电路设计。 [资料来源:http://Doc163.com]
1. CAN总线协议分析
1.1 CAN总线主要特点
CAN总线是一种多主式的串行通信总线,具有极高的实时性和可靠行,最高通信速率可以达到1Mbit/s,是一种十分优秀的现场工业总线。CAN总线具有如下特点:
结构简单,只有2根线与外部相连,且内部集成错误探测和管理模块。
通信方式灵活。可以多主方式工作,网络上的其他节点发送信息,而不分主从。
可以点对点、点对多点或者全局广播方式发送和接收数据。
网络上的节点信息可分成不同的优先级,以满足不同的实时要求。
CAN总线通信格式采用短帧格式,每帧字节最多为8个,可满足通常工业领域中控制命令、工作状态及测试数据的一般要求。同时,8字节也不会占用总线时间过长,从而保证了通信的实时性。
采用非破坏性总线仲裁技术。当两个节点同时向总线上发送数据时,优先级低的节点主动停止数据发送,而优先级高的节点可不受影响地继续传送数据。这大大的节省了总线仲裁冲突的时间,杂网络负载很重的情况下也不会出现网络瘫痪。
直接通信距离最大可达10Km(速率5Kbit/s以下),最高通信速率可达1Mbit/s(此时距离最长为40Km),节点数可达110个,通信介质可以是双绞线、同轴电缆或光导纤维。
CAN总线通信接口中集成了CAN协议的物理层和数据链路层功能,可完成对通信数据的成帧处理,包括位填充、数据块编码、循环冗余检测、优先级判别等多项工作。
[资料来源:Doc163.com]
CAN总线采用CRC进行数据检测并可提供相应的错误处理功能,保证了数据通信的可靠性。
1.2 CAN总线协议
CAN总线协议主要描述设备之间的信息传递方式,从结构上可分成3个层次,分别对应OSI网络模型的最低两层数据链路层和物理层。CAN总线协议层次结构由高到低如表1-1所示。
表1-1CAN总线协议层次结构
协议层
对应OSI模型
说明
LLC
数据链路层
逻辑链路控制子层,用于为链路中的数据传输提供上层控制手段
MAC
媒体访问控制子层,用于控制帧结构、仲裁、错误界定等数据传输的具体实现
[资料来源:http://Doc163.com]
[资料来源:https://www.doc163.com]
物理层
物理层
物理层的作用是在不同节点之间根据所有的电气属性进行位的实际传输
LLC层和MAC层也可以看作是CAN总线数据链路层的两个子层。其中LLC层接收MAC层传递的报文,主要完成报文滤波、过载通知以及恢复管理等工作。而MAC层则为数据报文的传输进行具体的控制,包括帧结构控制、总线仲裁、错误检测、出错界定、报文收发控制等工作。
物理层定义了信号是如何实际传输的,因此涉及到位时间、位编码、同步的解释,CAN总线协议并未对物理层部分进行具体的规定。
1.3 CAN总线报文传输结构
报文传输由以下4个不同的帧类型所表示
1.数据帧:数据帧携带数据从发送器至接收器。
数据帧由7个不同的位场组成:帧起始、仲裁场、控制场、数据场、CRC场、应答场、帧结尾。数据场的长度可以为0。数据帧(或远程帧)通过帧间空间与前述的各帧分开。
2.远程帧:总线单元发出远程帧,请求发送具有同一识别符的数据帧。
远程帧由6个不同的位场组成:帧起始、仲裁场、控制场、CRC场、应答场、帧末尾。通过发送远程帧,作为某数据接收器的站通过其资源节点对不同的数据传送进行初始化设置。
3.错误帧:任何单元检测到总线错误就发出错误帧。
错误帧由两个不同的场组成。第一个场用作为不同站提供的错误标志(ERROR FLAG)的叠加。第二个场是错误界定符。
为了能正确地终止错误帧,"错误被动"的节点要求总线至少有长度为3个位时间的总线空闲(如果"错误被动"的接收器有本地错误的话)。因此,总线的载荷不应为100%。有两种形式的错误标志,主动错误标志(Active error flag)和被动错误标志(Passive error flag)。
4.过载帧:过载帧用以在先行的和后续的数据帧(或远程帧)之间提供一附加的延时。
过载帧包括两个位场:过载标志和过载界定符。
有两种过载条件都会导致过载标志的传送:
(1)接收器的内部条件(此接收器对于下一数据帧或远程帧需要有一延时)。
(2)间歇场期间检测到一"显性"位。
由过载条件1 而引发的过载帧只允许起始于所期望的间歇场的第一个位时间开始。而由过载条件2引发的过载帧应起始于所检测到"显性"位之后的位。
1.4 CAN总线错误处理
1.4.1 错误检测
有以下5种不同的错误类型(这5种错误不会相互排斥)
1.位错误(Bit Error)
单元在发送位的同时也对总线进行监视。如果所发送的位值与所监视的位值不相合,则在此位时间里检测到一个位错误。但是在仲裁场(ARBITRATION FIELD)的填充位流期间或应答间隙(ACK SLOT)发送一"隐性"位的情况是例外的。此时,当监视到一"显性"位时,不会发出位错误。当发送器发送一个被动错误标志但检测到"显性"位时,也不视为位错误。
[资料来源:http://Doc163.com]
2.填充错误(Struff Error)
如果在使用位填充法进行编码的信息中,出现了第6个连续相同的位电平时,将检测到一个填充错误。
3.CRC错误(CRC Error)
CRC序列包括发送器的CRC计算结果。接收器计算CRC的方法与发送器相同。如果计算结果与接收到CRC序列的结果不相符,则检测到一个CRC错误。
4.形式错误(Form Error)
当一个固定形式的位场含有1个或多个非法位,则检测到一个形式错误。(备注:接收器的帧末尾最后一位期间的显性位不被当作帧错误)
5.应答错误(Acknowledgment Error)
只要在应答间隙(ACK SLOT)期间所监视的位不为"显性",则发送器会检测到一个应答错误。
1.4.2 错误标定
检测到错误条件的站通过发送错误标志指示错误。对于"错误主动"的节点,错误信息为"主动错误标志",对于"错误被动"的节点,错误信息为"被动错误标志"。站检测到无论是位错误、填充错误、形式错误,还是应答错误,这个站会在下一位时发出错误标志信息。只要检测到的错误的条件是CRC错误,错误标志的发送开始于ACK界定符之后的位(其他的错误条件除外)。
[资料来源:https://www.doc163.com]
2. CAN控制器SJA1000分析
2.1 CAN节点结构与SJA1000操作模式
SJA1000独立的CAN控制器有2个不同的操作模式:
BasicCAN模式(和PCA82C200兼容);
PeliCAN模式
BasicCAN模式是上电后默认的操作模式。因此用PCA82C200开发的已有硬件和软件可以直接在SJA1000上使用,而不用作任何修改。
PeliCAN模式是新的操作模式,它能够处理所有CAN2.0B规范的帧类型。而且它还提供一些增强功能,例如,SJA1000支持一些错误分析功能,支持系统诊断、系统维护和系统优化,而且这个模式里也加入了对一般CPU的支持和系统自身测试的功能。使SJA1000能应用于更宽的领域。
本设计采用PeliCAN模式,因此只给出PeliCAN模式增强功能。如表2-1所示。
表2-1PeliCAN模式的增强功能
CAN2.0B (active)
[资料来源:https://www.doc163.com]
CAN2.0B active 支持带有29 位标识符的网络扩展应用
发送缓冲器 [资料来源:https://www.doc163.com]
有11 位或29 位标识符的报文的单报文发送缓冲器
增强的验收滤波器
两个验收滤波器模式支持11 位和29 位标识符的滤波
可读的错误计数器
支持错误分析在原型阶段和在正常操作期间可用于:诊断、系统维护、系统优化
可编程的出错警告界限 [资料来源:http://www.doc163.com]
错误代码捕捉寄存器
[资料来源:http://Doc163.com]
出错中断
[资料来源:http://doc163.com]
仲裁丢失捕捉中断
支持系统优化包括报文延迟时间的分析
单次发送
[版权所有:http://DOC163.com]
使软件命令最小化和允许快速重载发送缓冲器
仅听模式 [资料来源:http://doc163.com]
SJA1000能够作为一个认可的CAN 监控器操作,可以分析CAN 总线通信或进行自动位速率检测
自测试模式 [版权所有:http://DOC163.com]
支持全部CAN 节点的功能自测试或在一个系统内的自接收 [资料来源:http://Doc163.com]
通常,每个CAN模块能够被分成不同的功能块,如图2-1所示。
CAN控制器执行在CAN规范里规定的完整CAN协议。它通常用于报文缓冲和验收滤波。
通用CAN收发器实现从CAN控制器到CAN总线物理层的电气连接。
而所有这些CAN功能都由一个模块控制器控制,它负责执行应用层的功能。 [资料来源:http://www.doc163.com]
元器件清单
表3-3 CAN总线与RS-2232接口电路设计元气件清单
序号
元件名称
数量(个)
单价(元)
总价(元)
1
AT89C51
1
7.50
7.50
2
SJA1000
1
25.00
25.00
3
HM6116
1
1.00
1.00
4
MAX232
1
5.00
5.00
5
74HC373
1
1.00
1.00
6
PCA82C250
1
6.50
6.50
7
X25045
1
1.00
1.00
8
TLP113
2
3.00
6.00
合计
53.00
结论
本设计完成了CAN总线与RS-232转换接口设计。由于CAN总线与RS-232接口数据通信速率以及通信帧格式都不同,本设计最大优点是解决了这两点不同,实现了数据在CAN总线与RS-232接口之间的传输。且设计中由于使用了CAN总线进行数据传输这就使得通信方式多主性。网络上任意节点可以任意时刻主动地向网络上其他节点发送信息而不分主从。可以点对点,点对多点或全局广播方式发送和接收数据。
由于CAN总线标准没有定义应用层,数据链路层提供与信息内容相应的寻址能力,消息的内容完全由应用解释。且CAN总线的每个数据帧最多只能承载8个字节的数据,因而只适应提供短的变量服务。许多功能还需要扩展。
综上所述,通过此次设计,我们感受到CAN总线带来的各种便利。而且,由于CAN总线具有结构简单、实时性极高、可靠性强且本身具有强大的纠错能力。使得它在当今自动控制领域中的应用极为广泛。由于CAN协议参考OSI开放系统互联模型,可由用户定义应用层协议,通过相关的CAN转接设备,将CAN与计算机相连,利用CAN232B转换器组建一个CAN控制网络,能够很方便的实现RS-232多点组网、远程通讯,并且,不需要更改原有RS-232通讯软件,用户可直接嵌入原有的应用领域,使系统设计达到更先进的水平。 [来源:http://Doc163.com]
[来源:http://Doc163.com]
摘要............................................................................................................Ι
ABSTRACT.................................................................................................................................. ΙΙ
引言 1
1. CAN总线协议分析 2
1.1 CAN总线主要特点 2
1.2 CAN总线协议 2
1.3 CAN总线报文传输结构 3
1.4 CAN总线错误处理 3
1.4.1 错误检测 3
1.4.2 错误标定 4
2. CAN控制器SJA1000分析 5
2.1 CAN节点结构与SJA1000操作模式 5
2.2 SJA1000内部结构及其功能分析 6
3. CAN总线与RS-232转换接口电路设计 11
3.1 CAN总线与RS-232转换接口电路总体设计 11
3.2 主控制模块电路设计 12
3.2.1 AT89C51与6116电路设计 13
3.2.2 看门狗电路设计 14
3.3 AT89C51与RS-232转换接口电路设计 16
3.3.1 RS-232-C标准分析 16
3.3.2 RS-232与AT89C51接口电路设计 18
3.4 SJA1000与AT89C51接口电路设计 19
3.4.1 SJA1000与AT89C51接口电路设计 19
3.4.2 物理层接口电路设计 21 [来源:http://Doc163.com]
3.5元器件清单 22
结论 22
致 谢 24
参考文献 25
[资料来源:http://doc163.com]