王晓鹏
(辽宁建筑职业学院,辽宁 辽阳 111000)
本设计以C8051F040为控制器,C8051F040是完全集成的混合信号系统级芯片(SOC),具有与MSC-51完全兼容的指令内核。C8051F040具备控制系统所需的模拟和数字外设,包括ADC、DAC、电压比较器、电压基准输出、定时器和方波输出等。C8051F040集成CAN2.0B的控制器,只需要一个CAN收发器TJA1050,就可以连入CAN网络。
CAN总线是现场总线的一种,在汽车、车间及电梯监控场合应用。CAN最初出现在20世纪80年代的汽车工业中,由德国的Bosch公司最先提出。这种总线技术不断发展,成为现场总线的一种,称之为CAN总线,CAN具有十分优越的特点:成本低;极高的总线利用率;很远的传输距离;可靠的错误处理和检错机制。
以C8051F040为主要核心控制器,插件上报故障信息到C8051F040的数据端口,不同插件的故障信息被写到不同的地址空间[1],C8051F040通过查询相应的空间就可以掌握每个组插件的状态,再通过CAN总线上报给远程的计算机。系统框图如下图1所示。
C8051F040电源采用3.3 V供电,CAN收发器部分CANVCC与单片机完全隔离,芯片采用DCP010505BP,对输入的5 V电源隔离产生CANVCC和CANGND,提供给CAN收发器部分,原理图如下图2所示:
图2 系统电源原理图
TJA为PHILIPS公司出品,是控制协议网络与物理总线之间的接口,TJA1050为总线提供不同的发送特性,为CAN控制器提供不同的接收性能[2]。TJA1050有两种工作模式,本设计工作属于高速模式,TJA1050的CANH和CANL引脚各通过一个50P电容,用于滤除高频干扰,同时F1040的CAN信号接收引脚RX和发送脚TX并不直接连到TJA1050的RXD和TXD端,而是通过光耦HCPL0611进行连接,这样做的目的是为了实现CAN总线各节点之间的电器隔离。
本设计需要采集各插件的故障信息,采用故障信息电平中的TTL电平,422电平需要相应的接口芯片进行驱动,芯片采用DS34LV86TM把差分的422电平转换为TTL电平,SN74LVC245ADBR再把TTL电平进行隔离。其原理图如下页图3所示。
图3 信号采集原理图
本设计开发环境采用Silicon Laboratories IDE,采用C语言进行程序设计,C9051F040的CAN模块,只要对要相应的寄存器进行操作就可以完成CAN通信,程序包括CAN初始化程序,CAN接收程序、CAN发送程序、单片机初始化程序。CAN初始化程序主要完成波特率、初始化数据等操作[3]。上位机界面采用VB设计,界面上每个分机都有单独的显示区域,分机上每个插件都用相应的报警指示灯,当某个分机的插件出现故障时,相应的指示灯就会发光报警,同时提示出现的报警类型,供操作人员及时定位插针。
本设计采用性价比高的控制器C8051F040,经实验完成了对分机插件的故障监控,与上位机实现的CAN通讯,及时定位到故障插件,实验效果理想,达到了预期的效果。