PIC18单片机的RS-485/CAN智能转换器的设计
扫描二维码
随时随地手机看文章
RS-485是一个电气接口规范,它定义了一个基于单对平衡线的多点、双向(半双工)通信链路,只对接口的电气特性做出规定,而不涉及接插件、电缆或协议,在此基础上用户可以建立自己的高层通信协议,在当时看来是一种相对经济具有相当高噪声抑制相对高的传输速率传输距离远和宽共模范围的通信平台,因此基于RS-485总线的通讯方法得到了广泛的应用。
由于RS-485总线本身存在的许多局限性,随着科技的发展RS-485的总线效率低,系统的实时性差、通讯的可靠性低、后期维护成本高、网络工程调试复杂、传输距离不理想、单总线可挂接的节点少、应用不灵活等缺点慢慢的暴露出来。虽历经多次改进但均是治标不治本。
CAN-bus是一种多主方式的串行通讯总线。具有较高的位速率,高抗电磁干扰性,而且能够检测出通信过程中发生的任何错误。当信号传输距离达到10 km 时CAN-bus仍可提供高达5 kb/s的数据传输速率。他在通信能力、可靠性、实时性、灵活性、易用性、传输距离、成本等方面有着明显的优势,从而成为了业界最有前途的现场总线之一。
基于RS-485网络在现场的广泛应用,完全放弃RS-485网络系统是不现实的。但可以考虑一种折衷的办法,就是在保留现有RS-485系统硬件结构的基础上给系统添加一个CAN-bus接口,RS-485/CAN智能转换器的设计就具有了现实的意义。他可以实现RS-485网络与CAN网络的互联。系统原理框图如图1所示。
2 转换器设计
转换器设计的原理框图如图2所示:
在该设计中采用了带CAN控制器的PIC18F258芯片,其特点如表1所示。与传统的MCU再加上独立的CAN控制器的设计方法相比,可以使设计大大简化,同时也增加了系统的可靠性。
表1 PIC18F258单片机的性能参数 名称 特性
高性能RISC CPU 2MB的程序存储器。4kB的数据RAM。16位宽指令,
高达10 MIPS的执行速度。8×8单周期硬件乘法器
丰富的外围功能模块 4个内部定时器,PWM/CCP模块,USART模块,
10位8通道A/D。CAN 总线模块,异步串行通信SPI方式,I2C模式
特殊的单片机特性 SLEEP方式,带有片内RC振荡器的监视定时器(WDT),
可编程代码保护功能,通过两个引脚可进行在线串行编程(ICSP)
FLASH 技术 低功耗,高速增强型FLASH 技术
2.1 硬件电路设计
硬件电路原理图如图3所示,包括MCU,总线驱动模块,光电隔离,DC-DC隔离电源模块等。
RS485总线驱动模块采用MAX487,MAX487工作于半双工模式,内部包含一个发送器和一个接收器,在工作时需要通过使能端来控制“收”和“发”,将其使能端RE和DE连接到一起,然后接到PIC单片机的RC4,在软件中通过对RC4的置位和复位来控制MAX487的收和发。
RS-485标准采用差分传输,本身已具有一定的抗干扰能力,在其传输通道的两端分别加上一个6N137芯片,可以进一步增强转换器的抗干扰能力。可以避免由传输问题而引起的死机现象。
CAN总线驱动模块采用PCA82C250,接口电路比较简单。同样也在其传输通道加上两个高速光耦6N137,实现总线和转换器的电气隔离。
在硬件设计中需要特别注意电源部分的设计,因为光耦隔离两侧必须采用独立的电源供电,否则将不能起到隔离的作用。转换器在现场应用的时候不是采用电池供电,而是采用现场CAN总线的电源来供电,而这个电源是不稳定的电源,而且存在很多干扰量,不能直接应用到转换器当中,必须经过隔离,滤波以及稳压处理。[!--empirenews.page--]
在转换器中所需电源均为+5 V 的直流电源,共需要3个独立的+5 V电源,分别为MCU 的电源VCC1,CAN接口芯片一侧所用电源VCC2。RS-485接口芯片一侧所用电源VCC3。因此可以考虑使用1个输入3个输出的DC/DC模块,实际当中没有找到现成的3输出的DC/DC模块。因此设计中采用金升阳公司的B系列和D系列的DC/DC 模块, 一输入两输出的D050505N-1 W ,再加上一个单输出的B0505D-1 W。DC/DC两侧的电感和电容构成滤波和稳压电路,其大小值均为典型值。最后构成如下图所示的转换器的电源模块。
另外,3组电源不能共地。GND1,GND2,GND3必须相互独立。否则光耦不能起到隔离的作用。
2.2 软件设计
软件设计通过Microchip的开发工具Mplab用汇编语言编制,主要包括初始化程序,CAN接收中断服务程序,USART接收中断服务程序,主程序。应用层通信协议转换程序等。
初始化程序用于设置CAN模块的通信波特率,工作方式,接收邮箱和发送邮箱,对应的接收过滤器和接收屏蔽器,以及发送的优先级等。其流程图如图5所示。
图5 初始化程序
CAN接收中断服务程序主要用来接收CAN 总线传输过来的数据帧,并进行帧校验,如果出错则要求重发,若数据帧正确接收,则将完整的数据帧存入到提前开辟的环形缓冲器中,为后面的数据处理和协议转换做好准备。其流程简图如图6所示。
图6 CAN接收中断服务程序
USART接收中断服务程序主要用于接收来自RS-485总线的串行数据。并将完整的数据帧传送到另外一个环形缓冲器。其流程图和设计思想与CAN 接收中断程序类似,不再例举。
协议转换程序需要参照现场RS-485系统原有的协议,然后由用户通过配套软件对通信帧的格式进行相应的设置。进行配置时PC 机必须通过RS-485接口访问RS-485/CAN智能转换器,通常PC机的RS-232接口必须使用RS-232/RS-485转换器。设置成功后,就可以实现RS-485与CAN通信帧格式的相互转换。
主程序部分比较简单。主要为调用初始化程序,扫描发送缓冲器是否为空,不空则在空闲时根据其优先级将CAN通信帧或RS-485串行通信帧发送出去。然后不断扫描,等待中断的产生。
3 结语
利用RS-485/CAN 智能转换器,实现了RS-485网络与CAN网络的互连,而且智能转换器的通信波特率可调,工作模式可以控制,对于不同协议的RS-485网络,只需通过软件对转换器进行相应的初始化设置即可,而不必对硬件进行改动。可以满足绝大多数场合的使用要求。但是这种利用RS-485/CAN智能转换器实现RS-485网络和CAN网络互连的方案只是一种过渡性的方案,互连后整个系统的性能要受限于RS-485网络,不能充分体现CAN系统的优越性。该方案仅适合新系统与旧系统并存,整体性能要求不太高,新旧系统运行机制差别不大的地方。