基于PIC18单片机的CAN RS485转换器的设计
RS-485总线以双绞线为物理介质,工作在半双工的通信状态下,即同一时刻总线上只能有一个节点成为主节点而处于发送状态,其它所有节点必须处于接收状态。如果同一时刻有两个以上的节点处于发送状态,将导致所有发送方的数据发送失败,即总线冲突。
为了避免这种总线冲突问题,RS-485总线必须具备:
①以工作模式来说,一般的RS-485总线工作在主从模式下;
②从通信节点来讲,RS-485总线上的节点必须具备可以将自己的驱动器切换到高阻态的功能。
以上是为适应RS-485总线的特殊之处而采用的措施,这样同时也带来了一些不足。首先,这种总线工作方式在很多对实时性、可靠性要求高的工业控制场合有较大的局限性;其次,对驱动器实行的“发送态—高阻态”切换以及切换延迟等功能要求会使编程变得复杂。同时在上电瞬间、CPU损坏或者程序跑飞的情况下,还需要考虑复杂的故障保护等问题,否则将容易引起总线故障。
控制器局域网CAN-bus (Controller Area Network)是国际上应用最广泛的现场总线之一。最初CAN-bus被设计作为汽车环境中的微控制器通讯,意在车载各电子控制装置ECU之间交换信息,从而形成汽车电子控制网络。如今,作为一种技术先进、可靠性高、功能完善、成本合理的远程网络通讯控制方式,CAN-bus已被广泛应用到各个自动化控制系统中。而且它在通信能力、可靠性、实时性、灵活性、易用性、传输距离等方面较RS-485总线有着明显的优势,因而用CAN总线取代RS-485总线将是大势所趋。
基于RS-485网络在现场的广泛应用,目前完全放弃RS-485网络系统是不现实的。但可以考虑一种折衷的办法.就是在系统保留现有RS-485系统硬件结构的基础上添加一个CAN-bus接口,本设计的CAN485智能转换器就具有这样的现实意义。它可以实现RS-485网络与CAN网络的互联,其系统原理框图如图1所示。
1 CAN-485转换器原理
图2所示是一种CAN-485智能转换器的原理框图,本设计采用PIC18F258单片机为核心,该单片机自带CAN收发接口,因此可简化硬件设计,提高运行效率。PIC18F258的主要特征如下:
◇通过ISO CAN标准测试;
◇执行CAN协议:CAN1.2 CAN2.0ACAN2.0B;
◇标准和扩展数据模式;
◇0-8位数据长度;
◇可编程速率高达1 Mbps;
◇2个数据接收缓冲器;
◇6个完全接收滤波器,2个对应高优先权缓冲器,4个对应低优先权缓冲器;
◇2个完全接收掩码器;
◇3个具有优先权的发送缓冲器。
由于单片机的输出电流比较弱,难以驱动光电隔离器,为保险起见,信号输入光耦前要经过74HC573锁存;同样为了增加信号驱动能力,经过隔离的信号要再次经过74HC573锁存。
2 软件设计
系统的软件设计主要包括初始化程序、CAN接收中断服务程序、USART接收中断服务程序、主程序及应用层通信协议转换程序等。
初始化程序用于设置CAN模块的通信波特率、工作方式、发送的优先级、接收邮箱和发送邮箱及对应的接收过滤器和接收屏蔽器等。其初始化程序流程图如图3所示。
CAN接收中断服务程序主要用来接收CAN总线传输过来的数据帧,并对其进行帧校验,如果出错则要求重发,若数据帧正确接收,则将完整的数据帧存人到提前开辟的环形缓冲器中,为后面的数据处理和协议转换做好准备。其CAN接收中断服务程序流程图如图4所示。
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 结束语
利用CAN485智能转换器可实现RS-485网络与CAN网络的互连,且智能转换器的通信波特率可调,工作模式也可控制,对于不同协议的RS-485网络,只需通过软件对转换器进行相应的初始化设置,而不必对硬件进行改动,因此可以满足绝大多数场合的使用要求。但是该方案不能充分体现CAN系统的优越性,仅适合新系统与旧系统并存、整体性能要求不太高的场所。因此,用CAN总线取代RS-485总线将是大势所趋。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)