摘要:在矿用监控系统工作站的升级过程中,通信协议已逐渐由原来的RS-485通信方式转换为CAN协议,但在监控系统的接口中仍存在多种工作方式。本文详细设计了CAN接口以及与上位机的串口连接。着重阐述了完善后的CAN接口多主工作方法的算法。试运行结果表明,该接口可以便捷稳定的在监控主机和各个监控节点之间交互数据。
关键字:CAN总线;接口;多主算法
中图分类号: TP212 文献标识码: A
Abstract: On the upgrade process of mine monitor system work station ,communication protocols transform RS-485 communication mode into CAN protocol gradually. But there is still manifold work mode in the interfaces of monitor systems.
The thesis is particularly designed CAN interfaces and COM connect with the former computer. The thesis is expatiated consummated CAN interface multi-host arithmetic. The test circulate result is indicated that the interface can steadily exchange data from monitor host computer to each monitor node.
Keywords: CAN bus ;interface; multi-host arithmetic
引言目前,矿井用的监控系统的接口大多以RS-485的通信协议为主,而这种协议的接口已在煤矿中使用多年,是保障矿井安全生产的重要手段。但由于这种接口受通信协议以及方式的限制,对系统工作站的数目、传输的距离以及数据的传输的速度都有相应的制约。用优良的设备和最新技术装备煤矿是进一步提高煤矿安全生产的重要方面。鉴于此,采用最新出现的CAN总线形式研究新的监控系统就显得非常重要。目前CAN总线取代RS-485工作方式的研究已经取得了一定的成果,但是在整个监控系统中还没有实现统一的CAN总线通信。特别是在多主工作站的设计中还存在以下问题:目前多主工作方式多采用CAN总线的硬件特性实现,或者是仅仅用简单的算法来实现多主工作方式。 1.CAN总线接口设计的总体思路本文采用软件和硬件相结合的方法对CAN总线接口进行研究。首先从硬件上研究CAN总线接口的电路设计,根据总体思路设计出CAN总线接口的框图。采用基于CAN总线的矿用监控系统的接口和多个从节点实现信息交互,并着重改进CAN多主结构的实现算法。 在构建以CAN为基础的通信网络的过程中,首先确定网络拓扑结构如图1所示,接口的框图。系统硬件的中心部分是微控制器(单片机)AT89C52,它需要两个接口电路分别与PC主机和CAN总线通讯。PC主机端的接口电路采用MAX232,CAN总线端的接口电路采用独立CAN控制器SJA1000,通过CAN2.0协议实现。同时辅助系统工作的还有晶体振荡电路、复位电路、外扩的基于I2C的E2PROM的电路和保护电路。从硬件设计上,整个转换板系统可以分为RS232接口转换电路、主控制模块和CAN控制器模块3个主要部分基金项目名称:矿井安全生产监控系统新型工总站研究 200510460015
图1 接口硬件框图
在各个节点和主机之间采用CAN收发器来实现逻辑上的主从机交互。CAN收发器采用CAN通信控制器和接收器如图2,CAN通信控制器采用SJA1000,CAN总线驱动器为82C250。CAN接口电路图如图2所示。
图2 CAN总线数据收发电路
CAN控制器SJA1000通过总线驱动器PCA82C250接收CAN总线上的信号,传送到微控制器,并接收微控制器传来的信号,通过驱动器传送到CAN总线。信号在传输线上远距离传输时,如果遇到阻抗不连续的情况,会出现反射现象使信号扭曲,通常在传输线的两个末端接上匹配电阻来消除反射,屏蔽双绞线的特性阻抗一般在100Ω到120Ω之间,因此匹配电阻一般选择120Ω。
由CAN收发器接收到的数据通过RS232接口电路传输至监控主机的通信接口,如图3所示。该电路是为了与监控后台计算机的串口通信而设计的,采用MAX232作为电平转换接口,使用最简单的零调制3线经济型RS232接口,将AT89C52的串行口TXD和RXD与MAX232连接,可以与其它的RS232接口进行异步全双工通信,与PC机通信波特率选择9600bps。
图3 主节点与监控主机通信电路 2.接口软件设计2.1 软件设计总体思路
将主从节点数据传输接口按照图1所示的连接方式,将监控现场的井上(下)工作站(以下简称为工作站)和监控系统主机连接成CAN总线通信网络,实现从监控后台到工作站之间的通信。主程序主要由以下几部分构成:
(1)参数设置程序。包括CPU串口的设置,如波特率、接收方式(串口中断),控制器(SJA1000)的参数设置,如接收码、屏蔽码、CAN总线波特率。
(2)CAN-RS232串口的转换程序。SJA1000采用中断接收方式接收CAN网络上节点的数据帧,然后按照信息包的格式,“打包”成一个完整的信息包,由CPU发送至串口。
接口工作流程图如图4下所示:
图4 主程序工作流程图
2.2 多主工作算法的实现
CAN工作站是一个多主结构的工作站,各个站点可以成为一个主节点,可以自主的发送自己的数据,而不受其他节点的影响。这一协议的完成是有CAN总线的物理特性所完成的。因为CAN总线的物理特性和RS-485刚好相反,在总线上传输时低电平为“显性”,而高电平则为“隐性”。因而在CAN总线上节点ID号低的节点首先被选中。然而,正是因为这一特性,如果不采用合适的发送策略,完全有可能使某些节点的数据始终得不到发送。本文使用“随机时间片法”来解决这一问题。使所有工作站和监控主机的CAN接口的数据在规定的时间内完成交互。
所谓“随机时间片法”也就是说,当一个节点发送受阻之后,由程序产生一个随机的时间片,也就是先由单片机的定时器定时50ms,然后随机函数random()产生一个随机值,模4后将此数作为参数,用此参数来控制定时器定时的次数。至此这个随机时间片可以随机的产生50~200ms的时间段。在这段时间片过后再发送该节点此时的数据。矿机安全生产标准规定,所有的工作站必须在30s之内向监控系统提供一次数据。因而,本文将时间片设置为200ms,即有程序产生一个200ms内的时间片,该时间片过后重发该节点的数据。由以上可知,每个节点传输数据的时间相当的短,几乎是瞬间完成。同时,采用动态优先级法。即,某一个节点发送受阻后自动把其节点的ID值减1,同时在标志位上加1,用来记录受阻次数,目的是方便对应节点坐标。即使最坏的情况发生,那也有机会传送该数据。应该可以保证未被选中节点的数据在30s内到达监控系统。其程序流程图如图5: