紫外可见分光光度计(UV)

主题:【分享】仪器开机自检和死机分析

浏览0 回复8 电梯直达
祥子
结帖率:
100%
关注:0 |粉丝:0
新手级: 新兵
该帖子已被mengzhaocheng设置为精华;
单片机系统常用软件抗干扰措施

来自:网络


说明:

      在一些分光光度计中,开机自检项目有RAM,ROM,I/O检测,具体是在做什么,在这篇文章中有较好的叙述。虽然不同仪器具体实现可能不同,但原理上也差不多。分光的其他光学系统自检内容,比如零级光,波长原点,滤光片原点论坛以前也讨论过。

    另外,在分光光度计中,常常出现单色器丝杆的卡丝现象,如果这时候,分光的程序还是在正常运行,一般来说,除了丝杆机械性的卡死,电机不能带回的情况外,丝杆是可以自动返回正常位置的。即使是机械性卡死,良好的程序设计,是可以用错误代码提示这个故障的。但是好像很少见到提示,所以很有可能是程序跑飞了,程序跑飞很可能是主板屏蔽不好,电机产生的电磁干扰,或者来自其他电路的干扰,造成主程序跑飞。但是,既然程序跑飞了,仪器还是处于死机状态,那么只能说,仪器对于程序跑飞,没有很好的处理,或者说仪器的软件抗干扰性不好。程序跑飞处理在这篇文章中有比较好的叙述。


    可靠性设计是一项系统工程,单片机系统的可靠性必须从软件、硬件以及结构设计等方面全面考虑。硬件系统的可靠性设计是单片机系统可靠性的根本,而软件系统的可靠性设计起到抑制外来干扰的作用。软件系统的可靠性设计的主要方法有:开机自检、软件陷阱(进行程序“跑飞”检测)、设置程序运行状态标记、输出端口刷新、输入多次采样、软件“看门狗”等。通过软件系统的可靠性设计,达到最大限度地降低干扰对系统工作的影响,确保单片机及时发现因干扰导致程序出现的错误,并使系统恢复到正常工作状态或及时报警的目的。
  一、开机自检 开机后首先对单片机系统的硬件及软件状态进行检测,一旦发现不正常,就进行相应的处理。开机自检程序通常包括对RAM、ROM、I/O口状态等的检测。
  1检测RAM 检查RAM读写是否正常,实际操作是向RAM单元写“00H”,读出也应为“00H”,再向其写“FFH”,读出也应为“FFH”。如果RAM单元读写出错,应给出RAM出错提示(声光或其它形式),等待处理。
  2检查ROM单元的内容 对ROM单元的检测主要是检查ROM单元的内容的校验和。所谓ROM的校验和是将ROM的内容逐一相加后得到一个数值,该值便称校验和。ROM单元存储的是程序、常数和表格。一旦程序编写完成,ROM中的内容就确定了,其校验和也就是唯一的。若ROM校验和出错,应给出ROM出错提示(声光或其它形式),等待处理。
  3检查I/O口状态 首先确定系统的I/O口在待机状态应处的状态,然后检测单片机的I/O口在待机状态下的状态是否正常(如是否有短路或开路现象等)。若不正常,应给出出错提示(声光或其它形式),等待处理。
  4其它接口电路检测 除了对上述单片机内部资源进行检测外,对系统中的其它接口电路,比如扩展的E2PROM、A/D转换电路等,又如数字测温仪中的555单稳测温电路,均应通过软件进行检测,确定是否有故障。
  只有各项检查均正常,程序方能继续执行,否则应提示出错。
  二、软件陷阱 在程序存储器中总会有一些区域未使用,如果因干扰导致单片机的指令计数器PC值被错置,程序跳到这些未用的程序存储空间,系统就会出错。软件陷阱是在程序存储器的未使用的区域中,加上若干条空操作和无条件跳转指令,无条件跳转指令指向程序“跑飞”处理子程序的入口地址。如果程序跳到这些未用区域,就会执行无条件跳转指令,转到相应的程序出错“跑飞”处理程序。除程序未用区域外,还可以在程序段之间(如子程序之间及一段处理程序完成后)及一页的末尾处插入软件陷阱,效果会更好。下面是一段带软件陷阱的程序;
  DSP:……;显示子程序
    RET
    NOP;软件陷阱
    NOP
    NOP
    LIMP FLY
D10MS:MOV R0,#010H;延时子程序
    ……
    RET
    NOP     ;软件陷阱
    NOP
    NOP
    LJMP FLY
    ……
  FLY:……  ;“跑飞”处理子程序
    RET
  三、程序“跑飞”处理 要进行程序“跑飞”处理,就要分清程序“跑飞”所造成的影响,以及程序“跑飞”前运行的进程,这就需要的设置相应的标志。
  RAM数据正常标志 RAM数据正常标志是检测RAM区的数据是否已经因程序“跑飞”或其它干扰而改变。如果RAM区的数据确因程序“跑飞”或其它干扰而改变,则系统无法自行恢复到原来的出错地点,只能由人工或由软件复位从头开始执行。要进行RAM区数据正常检测,首先应在初始化程序中,对RAM的若干单元设置RAM数据正常标志。通常是在RAM区中选数个单元,在初始化程序中将其置成固定的数,如“55H”或“0AAH”,只要程序正常运行,这些单元的内容是不会被修改的,若因程序“跑飞”或其它干扰导致这些RAM单元中的任何单元的数据发生变化,说明其它RAM单元的内容也可能发生变化,无法反映程序运行的结果和状态,不能根据RAM区中的标志去恢复程序运行现场。
  程序运行标记 程序运行状态标记是在RAM区中设立一些标志位,这些标志位分别代表程序运行的不同阶段及运行后的状态。在初始化程序中,首先对这些单元置初值,在程序运行的不同阶段,这些单元的内容将被改变成特定值,标记程序运行的阶段和运行后的状态。这些标志除了在程序正常运行中起到条件转移的作用外,还能在程序“跑飞”,而RAM区数据正常时起到恢复程序运行现场的作用。
  程序“跑飞”处理 程序“跑飞”处理就是在程序由软件陷阱检测到“跑飞”后,转入“跑飞”处理程序。“跑飞”处理程序判断“跑飞”影响的程度,根据影响程度的不同,决定是报警复位还是自动恢复现场。如自动恢复现场,则需根据程序运行状态标记进行。具体如何进行程序“跑飞”处理,要根据控制系统的设计要求进行。
  四、输出端口刷新 由于单片机的I/O口很容易受到外部信号的干扰,输出口的状态也可能因此而改变。在程序中周期性地添加输出端刷新指令,可以降低干扰对输出口状态的影响。在程序中指定RAM单元存储输出口当时应处的状态,在程序运行过程中根据这些RAM单元的内容去刷新I/O口。
  五、输入多次采样 干扰对单片机的输入,会造成输入信号瞬间采样的误差或误读。要排除干扰的影响,通常采取重复采样、加权平均的方法。
    六、软件“看门狗” 软件陷阱是在程序运行到ROM的非法区域时检测程序出错的方法。而“看门狗”是根据程序在运行指定时间间隔内未进行相应的操作,即未按时复位看门狗定时器,来判断程序运行出错的。
  在系统成本允许的情况下,应选择专门的看门狗电路芯片或片内带看门狗定时器的单片机。如果条件不允许,应加软件“看门狗”。
为您推荐
您可能想找: 气相色谱仪(GC) 询底价
专属顾问快速对接
立即提交
可能感兴趣
yuduoling
结帖率:
100%
关注:0 |粉丝:0
新手级: 新兵
悠旸
结帖率:
100%
关注:0 |粉丝:0
新手级: 新兵
祥子老师的帖子总让我明白不少东西,不过我觉得这贴对设计人员更有用。
祥子
结帖率:
100%
关注:0 |粉丝:0
新手级: 新兵
原文由 悠旸(ihqs) 发表:
祥子老师的帖子总让我明白不少东西,不过我觉得这贴对设计人员更有用。


好奇心的结果,以前对自检结果也不是很明白。

我觉得修仪器,得带着好奇心去修,不然修仪器是件苦差事。

您们在大公司还好点,我们又得去邮寄元器件,又得自己做线,还没做个搬运工开心,挣的也没比搬运工多多少。
dahua1981
结帖率:
100%
关注:0 |粉丝:0
新手级: 新兵
悠旸
结帖率:
100%
关注:0 |粉丝:0
新手级: 新兵
祥子老师过谦了。不过做维修的确心态很重要,客户是上帝,没辙!我有时也会做搬运工的

原文由 祥子(nemoium) 发表:
原文由 悠旸(ihqs) 发表:
祥子老师的帖子总让我明白不少东西,不过我觉得这贴对设计人员更有用。


好奇心的结果,以前对自检结果也不是很明白。

我觉得修仪器,得带着好奇心去修,不然修仪器是件苦差事。

您们在大公司还好点,我们又得去邮寄元器件,又得自己做线,还没做个搬运工开心,挣的也没比搬运工多多少。
mengzhaocheng
结帖率:
100%
关注:0 |粉丝:0
新手级: 新兵
lhbsx
结帖率:
100%
关注:0 |粉丝:0
新手级: 新兵
学习了,只是自己水平有限看不大懂,需进一步学习
dooby
结帖率:
100%
关注:0 |粉丝:0
新手级: 新兵
猜你喜欢最新推荐热门推荐更多推荐
品牌合作伙伴