软盘驱动器常见故障原因分析及其检修

Author: 谭巨高 Date: 1994-01-07

        一、软磁盘驱动器启动过程
        1.软盘控制器根据主机命令,向驱动器发出驱动器选择信号DS和启动电机信号MOTORON,当驱动器被选中时,主轴电机开始旋转,DS信号经驱动器选择电路转换后产生一个内部控制信号盘选中信号DS(高电平有效),供驱动器内部控制使用。
        DS信号打开以下电路门:①索引电路,②零磁道电路,③写保护电路,④寻道定位控制电路,⑤读写电路。
        2.当插入盘片并关闭驱动小门后,盘片将随主轴电机恒速转动,接着,驱动器向软盘控制器回送三个状态信号:索引信号INDEX;零磁道信号:TRACK00和写保护信号:WRT PROTECT。
        3.接着软盘控制器对上述三个控制信号分别进行检测。根据TRACK00信号的“是”与“非”发出寻道检测指令。
        当TRACK00为“真”时,发DIRECTION信号(低电平),再发STEP步进控制信号39(或79)个负脉冲,使磁头向内径步进,接着方向控制信号DIRECTION变为高电平,步进控制信号STEP再发39(或79)个负脉冲,使磁头向00道寻址。当零道检测信号TRACK00为低电平时,寻道检测结束。
        4.寻道检测正确,软盘控制器进入读操作。根据INDEX索引脉冲信号,寻找引导扇区,引导操作系统。
        5.当软盘控制器检测到写保护信号WRT PROTECT为“非”时,允许执行写操作。
        二、软盘驱动器与软盘控制器的信号连接:
        软盘驱动器34芯线插座接口信号
        ┏━━━━━━━━┯━━━━━━━━┯━━━━┯━━━━━━┓
        ┃34芯插座引线(J1)│ 信号定义       │传输方向│功能说明    ┃
        ┠────────┼────────┼────┼──────┨
        ┃J1-2     │                │        │保留        ┃
        ┠────────┼────────┼────┼──────┨
        ┃J1-4   │HEAD LOAD     │I │磁头加载    ┃
        ┠────────┼────────┼────┼──────┨
        ┃J1-6   │DRIVE SELECT3 │I │选择驱动器3 ┃
        ┠────────┼────────┼────┼──────┨
        ┃J1-8        │INDEX/SECTOR│O │索引/扇区   ┃
        ┠────────┼────────┼────┼──────┨
        ┃J1-10 │DRIVE SELECT0 │I │选择驱动器0 ┃
        ┠────────┼────────┼────┼──────┨
        ┃J1-12 │DRIVE SELECT1 │I │选择驱动器1 ┃
        ┠────────┼────────┼────┼──────┨
        ┃J1-14 │DRIVE SELECT2 │I │选择驱动器2 ┃
        ┠────────┼────────┼────┼──────┨
        ┃J1-16   │MOTOR ON       │I       │启动主轴电机┃
        ┠────────┼────────┼────┼──────┨
        ┃J1-18 │DIRECTION SELECT│I │步进方向    ┃
        ┠────────┼────────┼────┼──────┨
        ┃J1-20   │STEP       │I │步进脉冲    ┃
        ┠────────┼────────┼────┼──────┨
        ┃J1-22 │WRITE DATA    │I │写数据      ┃
        ┠────────┼────────┼────┼──────┨
        ┃J1-24 │WRITE GATE    │I │写选通      ┃
        ┠────────┼────────┼────┼──────┨
        ┃J1-26 │TRACK 00      │O │00磁道      ┃
        ┠────────┼────────┼────┼──────┨
        ┃J1-28 │WRITE PROTECT │O │写保护      ┃
        ┠────────┼────────┼────┼──────┨
        ┃J1-30 │READ DATA     │O │读数据      ┃
        ┠────────┼────────┼────┼──────┨
        ┃J1-32 │SIDE ONE SELECT │I │选择1面     ┃
        ┠────────┼────────┼────┼──────┨
        ┃J1-34 │READY       │O │准备好      ┃
        ┠────────┼────────┼────┼──────┨
        ┃J1-1-33 │GND       │ │地线(其17条)┃
        ┗━━━━━━━━┷━━━━━━━━┷━━━━┷━━━━━━┛
        三、软盘驱动器常见故障原因分析
        软磁盘驱动器常见的故障从电路结构、组成上可分为:选盘故障,索引电路故障,驱动电机控制电路故障(包括电机伺服电路),磁头寻道、定位故障,读电路故障,写抹电路故障、磁头组件故障。
        下面按软磁盘驱动器各部分电路结构组件常见的故障现象及其出现的故障原因分别进行分析。
        1.选盘故障。
        故障现象:当计算机对软盘驱动器进行测试时,盘选中指示灯不亮,主轴电机不转,磁头无寻道动作,相当于软盘驱动器未加上电源一样。或者是A、B两驱动器同时被选中。
        检查方法:观察当软盘控制器对软盘驱动器进行检测时,盘选中指示灯是否亮、主轴电机是否运转以及磁头有无寻道动作,从这几方面动作来观测,只要有一个有动作,则说明盘选电路是好的。若全无动作则说明选盘电路有故障(电源未接上除外)。注意:在此故障中不能以盘选中指示灯亮否作为盘是否被选中的标志。故障原因:①软盘驱动器电源未加上,或电源电压过低。②软盘驱动器盘选电路门未打开或逻辑门电路失效。③软盘驱动器盘选跳线不对。此类故障率不高,出现此故障大多是人为故障,如电源未接上、选盘跳线错位、34线电缆控制线断路等。偶尔也有因逻辑门失效引起(多数出现在早期生产的小规模集成电路组成的驱动器中)。
        2.索引电路故障
        故障现象:驱动器选中后,磁头来回寻道,读不出磁盘信息。最后在屏幕上显示DRIVE NOT READY ERROR。检查方法:驱动器被选中说明选盘电路正常。驱动器被选中后,磁头来回寻道说明驱动器正在读盘,由于找不到指定的扇区地址,所以磁头会来回寻道,最后在屏幕上提示:DRIVE NOT READ ERROR,此时只要检查INDEX(J1-8)有无索引正脉冲就可区分是否因索引电路故障引起。
        故障原因:①索引电路中光电传感器件损坏或光线被阻断。②索引电路有关门电路损坏。在此故障中以光电传感器表面尘积太多而使光线被阻断者最多,光电管(发光二极管、光敏三极管)损坏者次之,因门电路损坏者较少见。一般情况下,清洗索引光电传感器便可解决问题。
        3.驱动电机(主轴电机和步进电机)控制电路故障。
        故障现象:当主轴电机控制电路及主轴电机本身出现故障时,使软盘驱动器不能运转或转速不稳,驱动器在读盘过程中停止读盘,不能读出磁盘信息。当步进电机控制电路及步进电机本身出现故障时,磁头不能步进或只能单向步进。
        检查方法:软盘驱动器盘选中后,如果主轴电机不转,检测MOTOR ON (J1-16)是否有高电平主轴马达启动信号,如有,且主轴电机不能运转,则为驱动器电机控制伺服电路或主轴电机故障,若驱动器主轴电机转速不稳或在外力的推动作用下方可运转,则多为电机驱动电路、伺服(稳速电路)故障,否则故障在电机信号控制电路或电机本身。如果步进电机不能步进或只能单向步进,则应检测步进电机步进信号STEP (J1-20)是否步进脉冲、方向步进信号DIRECTION SELECT (J1-18)是否有高低电平变化。手推磁头小车离开或复位“00”道,检测信号TRACK00(J1-26)电平是否有变化。如果上述三个信号都正常,则故障一般出在电机驱动电路或步进电机本身,否则按不正常的信号跟踪检查便可排除故障。
        故障原因:①电机控制电路、伺服电路、驱动电路元件参数变化、损坏,使电机的驱动电流、驱动电压发生变化而使电机转速不稳或缺相。②连接电机的信号插座接触不良。③电机本身线圈开路或局部短路。这种故障一般也不容易出现,出现该故障多数为主轴电机转速不稳和步进电机不能步进。主轴电机转速不稳一般调节稳速电位器便可解决问题。电机不能步进大多是因为“00”道信号不正常而引起。
        4.磁头寻道、定位故障。
        故障现象:驱动器选中后,当驱动器出现寻道故障时,磁头小车不动或只能单向步进。当驱动器出现磁头定位故障时,磁头来回寻道,读不出磁盘信息(即不能读盘),或驱动器只能读、写自身格式化的磁盘、或者在软盘控制器驱动器进行检测时会出现碰车现象。
        检查方法:首先观察驱动器检测时,驱动器被选中后,磁头小车来回寻道时有无碰车现象,系统不能引导(设系统盘是完好的),则此时检测TRACK00信号(J1-26)是否为低电平,若为高电平则为“00”道寻道故障,若电平为低,则为磁头定位故障。如果磁头小车不动或只能单向步进则为寻道故障。
        故障原因:①驱动器“00”道微动检测开关失灵、“00”道光电检测器表面积尘太多使光线受阻或光电器件损坏、“00”道检测门电路损坏而使“00”道检测信号TRACK00恒为高或低电平。②驱动器使用日久加上机械振动等原因而使磁头发生偏移,特别对高位磁道的影响较大。③步进电机、控制电路及传动机构受损。在磁头寻道定位故障中以“00”道检测电路失效占多数,磁头偏移次之,其他损坏(如步进电机传动机构、控制电路等)较少见。
        5.读电路故障。
        故障现象:驱动器自检正常。但驱动器进行读盘操作时,寻道正常(有时驱动器也会来回寻道),但读不出磁盘信息,磁盘不能引导(磁盘完好)系统。在该故障中分为交换性读出和非交换性读出故障两种。
        检查方法:利用示波器或逻辑笔检测(J1-30)READ DATA信号是否有读数据脉冲,如没有则为本故障。故障原因:在交换性读出故障中,大多是因磁头定位、寻道和电机伺服等电路不良引起。在非交换性读出故障中,多数为磁头前置放大电路不良引起。根据实践经验,软盘驱动器的读出电路发生的故障率较少,所发生的读故障多数为交换性读出故障。在这里,要注意的是,读出电路无故障不等于驱动器能将磁盘信息正确读出。
        6.写抹电路故障
        故障现象:在对驱动器软盘进行格式化或写盘操作时,格式化失败、数据不能写入磁盘,或者在写入新文件时将盘中原文件破坏、或写入后读出错误。
        检查方法:检查方法很简单,只要对软磁盘进行拷贝再读出,看其是否正常即可判断。
        故障原因:①驱动器写保护电路失效。②写电路故障。③抹电路故障。软盘驱动器不能写盘或者在写入新文件时破坏原盘中文件,此故障原因多为写保护电路失效引起(写保护电路光电耦合器或有关逻辑门损坏,光电管表面尘积太多使光线受阻),此故障所占比率较高。若数据正常写入后读出错,此故障多发生在写抹有关电路中,如磁头前置放大信号太弱、写电流不足,抹信号的滞后特性变坏等。
        7.磁头组件故障
        故障现象:软盘驱动器自检正常。选盘后有时能引导系统,有时则不能。或不能读写正常软盘、划盘,或只能读写自身格式化的软盘(即软盘无交换性)。
        检查方法:用软盘与正常驱动器进行交换性读写。
        故障原因:磁头不清洁、磁头磨损过多、间隙过大,磁头定位偏移,磁头小车与导轨间隙过大或阻尼太大。此故障在软盘驱动器中所出现的机率是最高的。处理办法:清洗磁头、更换磁头(或磁头组件)重新校准定位磁头。
        四、软盘驱动器故障维修
        1.软盘驱动器最常见的故障有以下几种:
        ①开机引导系统时软盘驱动器主轴马达一直不停地转动,但磁头无动作。
        ②开机自检磁头能回“00”道,但磁头小车连续撞击几次后,系统无任何信息死机,有时会显示“DRIVE NOT READY ERROR”。
        ③开机自检后驱动器能引导系统,但在读到某些磁道上时读出数据错,最后在屏幕上显示“DISK BOOT FAILUE”即磁盘引导失败,有时在屏幕无任何反映。
        ④开机或读盘时会出现冲盘现象(即误抹磁盘原有的信息)。
        ⑤不能对磁盘进行格式化或写操作。
        ⑥复制的磁盘在另一台驱动器上不能正确读出。
        对于第①种故障大多是因驱动器索引电路无脉冲输出引起,也有可能是因磁头驱动步进马达控制电路不良、或因驱动器工作电源电压过低造成。引起第②种、第③种故障的原因主要有:驱动器“00”道信号不正常、磁头表面太脏或磨损、磁头方位角偏移、读出电路信号不正常、主轴马达转速不稳等。第④种故障是由于抹电路的电流滞后特性变坏或电源滤波不良、也有因读写转换控制电路失误引起。第⑤种故障大多是因写保护电路失效,使驱动器处于写保护状态引起,也有可能因写电路、磁头组件不良而引起。第⑥种故障主要是因为磁头定位不准引起。
        2.故障检修实例
        例1:软盘自检正常,但不能引导系统,硬盘引导系统后,对软盘驱动器进行读写时均出现“Sector not found error reading drive A”,说明驱动器没有准备好,磁盘扇区没找到。此故障是因无索引信号引起,且大多数故障都是因索引光电传感器表面尘积,使驱动器索引信号不正常。清洁驱动器光电传感器表面,故障便可排除。  例2:自检正常,但对软盘格式化或写软盘时出现“Write protect error writing drive A”,此故障说明驱动器处于写保护状态,故障原因与例1类似,多数是因写保护光电传感器尘积而引起,清洁光电传感器表面,故障便可排除。
        上述2例故障称之为不清洁故障(软故障),该类故障占软磁盘驱动器故障的50%以上。例3:TM100-2A(型号)驱动器能读不能写盘软盘驱动器在执行写操作时,软盘控制器发出写选通信号WRT GATA经写门转变成WRT允许写信号。这是一个内部控制信号,它的作用是:
        ①切断读/写磁头线圈的通路。
        ②将12V电压加到读/写磁头线圈的中点和抹磁头线圈的一端,作为产生写抹电流的电源。
        ③选通写电路中的恒流源开关。
        ④释放电路中的触发器。
        ⑤经延时后,送抹磁头线圈以产生抹电流。
        同时软盘控制器发出写数据信号WRTDATA,写电路根据WRTDATA转换成相应的电流,通过磁头写到软盘上。写入的数据信息,再经读出并与原写入的数据信息比较,若无误则完成写操作。
        所以若写允许信号WRT或WRTDATA写数据信号通路受阻或电路不正常,驱动器将不能进行写盘操作。
        在本例中首先用逻辑笔检测Q1的基极,发现无论是读盘或写盘Q1都为低电平,说明驱动器无写数据脉冲送入。原因为:Ⅰ数据信号门电路损坏,Ⅱ数据驱动晶体管损坏。拆下Q1测量其BE结已击穿,更换后故障排除。
        TM100-2A软盘驱动器的驱动晶体管和门电路2E、5C是较易损坏的元件。当出现驱动器不能写盘时,检查这几个元件一般便可排除故障。
        例4:使用TM-100-2A驱动器读盘后,有时读过的盘片在其它驱动器上读盘时会出“ready error reading drive A”读出错误。
        引起此故障的原因可能有:磁头(读写磁头和抹磁头)划盘、写抹电路等不良引起。为证实是否因磁头划盘而引起,将该驱动器读后的故障盘在别的驱动器上重新格式化未发现坏扇区,说明不是磁头划盘引起,故障一定出在写抹电路上。由于该故障存在一定的随机性,所以检修起来很麻烦,有时几天也不出现一次,有时又会连续出现。经过多次试验后发现:利用软盘开机启动时,软盘必定受损。说明此故障与电源的接通时间有关,也就是说离开机时间越短读盘冲盘的可能性就越大,显然在写抹电路中存在有打火元件而使驱动器在读盘过程中产生写抹电流,冲掉软盘中的内容,按经验打火现象以晶体管、电容器者居多。试更换写电路驱动晶体管Q1、Q2后故障排除。
        例5:TEAC AP15S软盘驱动器在DOS 3.31下格式化软盘时,只有“0”面格式显示,格式化后磁盘容量只有一半。进行格式化磁盘时,首先用逻辑笔检测J1-32面选择信号SIDE ONE SELECT有选择变化信号,说明面选择控制电路、写抹电路等均正常。故障出在磁头组件:检查磁头转插、磁头线圈阻值正常,检查中发现“1”面磁头接触面被磨成刀口状,显然排除此故障必须更换“1”磁头或整个磁头组件。更换后需重新校准定位磁头。
        校准定位磁头的方法很多,但在业余条件下,由于受设备的限制而使一些磁头定位不准的驱器无法定校。这里介绍一种程序校准法(程序附后),该方法简单易行,无需任何测试设备。运行该程序可以对软磁盘驱动器进行读、写检测及磁头手动定位校正。使用时分别把它编译成几个程序,以校准不同的面和磁道。该程序经编译、链接后生成的EXE文件只有1327字节。
        校正定位磁头的方法步骤是:松开步进马达与磁头小车连接钢带螺钉和方位角螺钉、放入已格式化了的软盘,运行0面39道校准程序调校“0”头39道,然后调校“0”面“00”道调好后旋紧螺钉。再松开“1”面定位螺钉运行校准程度调整“1”面“39”道和“1”面“00”道。在调整过程中,边运行相关程序,一面手动调整磁头直至屏幕由“ERROR”变为“PASS……”即可。然后旋紧螺钉,驱动器的定位工作即告完成。笔者用此程序已调校了多台软盘驱动器的磁头。
        附:  磁头校准定位程序
        stack_seg segment para stack stack' stack'
        stapn dw 100 dup(?)
        tp equ length stapn
        stack_seg ends
        code_seg segment
        assume cs:code_seg,ss:stack_seg,ds:data_seg,es:data_seg
        org 100h
        start: mov ax,data_seg
        mov ds,ax
        mov es,ax
        mov ax,stack_seg
        mov ss,ax
        mov ax,tp
        mov sp,ax
        disk_reset:mov bx,offset char_reset
        call near ptr display
        mov dm,0
        mov ah,00h
        int 13h
        test ah,offh
        jz reset_end
        mov bx,offset char_error
        call display
        jmp disk_read
        reset_end: mov bx,offset char_pass
        call display
        disk_read: mov bx,offset char_read
        call display
        push es
        mov ax,2000h
        mov es,ax
        mov bx,0000h
        mov ah,02
        mov al,8
        mov ch,00
        mov cl,1
        mov dh,0
        mov dl,0
        int 13h
        pop es
        test ah,offh
        jz read_end
        mov bx,offset char_error
         call display
        jmp disk_write
        read_end:  mov bx,offset char_pass
        call display
        disk_write:mov bx,offset char_write
        call display
        push es
        mov ax,3000h
        mov es,ax
        mov bx,0000h
        mov ah,03
        mov al,8
        mov ch,00
        mov cl,1
        mov dh,00
        mov dl,0
        int 13h
        pop es
        test ah,offh
        jz write_end
        mov bx,offset char_error
        call display
        jmp disk_verf
        write_end: mov bx,offset char_pass
        call display
        disk_verf: mov bx,offset char_verf
        call display
        push es
        mov ax,2000h
        mov es,ax
        mov bx,0000h
        mov ah,04
        mov al,08
        mov ch,00
        mov cl,1
        mov dh,01h
        mov dl,0
        int 13h
        pop es
        test ah,offh
        jnz error
        mov bx,offset char_pass
        call display
        jmp disk_verf
        error:     mov bx,offset char_error
        call display
        jmp disk_verf
        public display
        display proc near
        display: mov cx,26
        disploop: mov dx,[bx]
                  mov ah,02h
                  int 21h
                  inc bx
                  loopnz disploop
                  ret
        display endp
        code_seg ends
        data_seg segment
        char_reset db 13,10,'disk_reset tesing......'
        char_read db 13,10,'disk_read tesing......'
        char_write db 13,10,'disk_write testing......'
        char_verf db 13,10,'disk_verf testing......'
        char_pass db'pass pass......'
        char_error db'error error......'
        data_seg ends
        end start
        (13号中断参数:ch=磁道号;cl=扇区号;dh=磁盘面;dl=驱动器号)