|
串口通信故障诊断思路:计算机作为上位机定时对作为下位机的单片机“点名”,无“应答”就说明串口通信发生故障。具体的方案:在程序运行过程中,计算机定时向单片机发一个控制代码(FEH),单片机接收到该代码后,根据通信协议向计算机回传一个身份识别代码(该身份识别代码可以由程序产生,也可以写入串行EEPROM内)。计算机在一定时间内接收到单片机发送来的识别代码并与驱动程序识别代码比较,如2个身份识别代码相符,计算机驱动程序正常运行。若计算机在一定时间内没有收到识别代码或收到的识别代码与驱动程序识别代码不相符,计算机屏幕会出现消息框“请检查单片机电路或与计算机间通信线”,“确定”后退出应用软件。此时,单片机电路与计算机间通信线有可能断线或信号适配器工作不正常,提示使用者检查。过程通信监测可以有效地避免由于通信中断而产生的失控状态的进一步扩大,操作者可及时发现故障,及时解决。
计算机故障诊断程序采用VB6.0编程。计算机与下位机间的通信检测是通过2个定时器控件(Timer)Timer2(Timer2.Interval=2 000)、Timer3 (Timer3.Interval=1 500)完成的。窗体启动时,Timer2.Enabled = True。Timer2事件产生时,发送能使信号适配器进入“身份识别子程序”的控制代码(FEH)且ERORX = 1、Timer3. Enabled =True。
下位机接收到控制代码后,回送一个“身份识别码”。计算机若在Timer3时间内接收到正确的“身份识别码”(即Timer3事件产生时ERORX已被置0)时,程序正常运行;若在Timer3时间内没接收到正确的“身份识别码”(即Timer3事件产生时ERORX=1)时,Timer2.Enabled = False并出现消息框“请检查信号适配器或与计算机间通信线”,此时通信中断。点击“确定”后,退出应用软件。
本系统中的单片机采用的是ATMEL公司的AT89C51。AT89C51与8051芯片一样,具有32个I/O口、128 B RAM、2个16位定时器/计数器、1个全双工串口、5个中断源等,同时具有4 KB FLASHEPROM。4 KB FLASH EPROM可以满足小容量的程序要求。
故障诊断程序用C51语言编写,从实时性角度考虑,下位机的通信方式采用串口中断方式。这样,下位机程序就包括了下位机主程序和下位机串口中断服务程序。主程序用于定时器T1初始化、串行口初始化和中断初始化。振荡器频率fosc=11.059 2 MHz时,首先设定:SCON=0x50(串行口采用操作模式1);PCON=0x80(PCON中SMOD=1);TMOD=0x21(TMOD中高位C/T=0)、TCON.6=1(定时器1工作于操作模式2);TH1=TL1=0xfd(8位自动重装载值=FDH)。
主程序为main(),串口中断服务程序为SioInt()。
主程序main()流程如图3-3所示。在该程序中,NAMEI(位变量、=0)为进入身份识别子程序标志、NAMEY(位变量、! =0)为退出身份识别子程序标志。
求论文中的VB和C51程序。附件有原文,有程序流程图。
|
|