您的位置 首页 电源

应用在工业测控范畴的单片机体系解析计划

近年来单片机系统在工业测控领域的应用越来越广泛,而对于环境恶劣的工业现场,这种新型的微控制器的可靠性、安全性就成为了一个大问题。在实验室运行

近年来单片机体系工业测控范畴的运用越来越广泛,而关于环境恶劣的工业现场,这种新式的微操控器的可靠性、安全性就成为了一个大问题。在实验室运转正常的程序到了工业现场却不能运转,或许呈现运转不安稳常常死机等。在这里首要讨论一下怎么经过软件技能来增强体系的安稳运转。

当体系的CPU部位遭到搅扰信号的效果时,将使体系失控。最典型的毛病是损坏程序计数器PC的状态值。导致程序在地址空间内乱飞,或许堕入死循环。对这种状况的处理首要有这么几种办法:

1、指令冗余技能;

2、软件圈套技能;

3、看门狗技能。

下面 以MCS-51单片机来做阐明。

指令冗余技能

指令由操作码和操作数组成,操作码指明CPU要完结什么样的操作,而操作数是操作码的目标。单字节指令只需操作码,隐含操作数;双字节指令,第一个字节是操作码,第二个字节是操作数;三字节指令第一个字节是操作码,后二个字节是操作数。CPU在取指令的时分是先取操作码再取操作数,怎么判别是操作码仍是操作数便是经过取指令的次序。而取指令的次序完全由指令计数器PC来操控,因而,一旦PC受搅扰呈现过错程序便会脱离正常轨迹,呈现乱飞,这样就会呈现把操作数当作操作码,或许把操作码当作操作数的状况。但只需PC指针落在单字节指令上程序就可归入正轨,所以为了快速将程序归入正轨,应该多用单字节指令,并在要害的当地人为刺进一些单字节指令NOP,或将有用的单字节指令重写,这就称之为指令冗余。

常用的办法便是在一些双字节、三字节指令后边刺进两个单字节指令NOP,或在一些对程序的流向起决定效果的指令前面刺进两条NOP指令。还可对一些重要的指令进行重复放置。

但选用指令冗余技能将程序归入正轨的条件是:乱飞的PC有必要指向程序运转区。

软件圈套技能

当乱飞的程序进入非程序区的时分,就可设定软件圈套对乱飞的程序进行阻拦然后将程序引向一个固定的方位。这样就可将捕获的程序从头归入正轨。

软件圈套首要便是把程序从头引进它的复位入口处,也便是说在恰当的当地设置这样的指令:

NOP

NOP

LJMP 0000H

软件圈套首要组织在这样一些区域:未运用的中止区、未运用的EPROM空间及非EPROM空间、程序运转区及中止服务程序区。首要来看前三种:

1、未运用的中止区

假如关于未运用的中止因搅扰而敞开的话, 能够这样写中止服务程序:

NOP

NOP

POP D1 ;将本来的过错断点弹出

POP D2 ;将本来的过错断点弹出

PUSH 00H

PUSH 00H;将断点地址重写为 0000H

RETI

2 .未运用的EPROM区

假定用了一片2764,但并没有用完整个存储区。这时分就可在未用的区域里填充上020000数据,这样当程序飞入其间时就会很快的走入正轨。这条指令其实是LJMP 0000H的机器码。

3 .非EPROM空间

单片机体系的程序空间是64K,正常状况下 所运用的EPROM不会占用一切的空间,假定 现在的EPROM占用16K的空间,那么剩余的48K空间就被闲置不用了。当乱飞的PC落入这些空间时,读入的数据将为FFH,这是 :MOV R7,A 指令的机器码,将修正R7的内容。因而,当程序乱飞入非EPROM芯片区后,不只无法导入正规,并且损坏了R7的内容。

当CPU读程序存储器的时分,伴随着会发生一个PSEN信号, 就可使用这个信号,再加上一个非EPROM区的地址译码信号,构成一个选通信号来起动一个闲暇的中止,再用软件陷井的办法从中止程序中把程序导入正规。

也可经过硬件的办法用一个缓冲器直接给数据线写一个值,其原理与上述办法相同。

软件看门狗技能

看门狗的效果便是避免程序发生死循环,或许说程序跑飞。硬件看门狗是使用了一个守时器,来监控主程序的运转,也便是说在主程序的运转过程中, 要在守时时刻到之前对守时器进行复位,假如呈现死循环,或许说PC指针不能回来。那么守时时刻到后就会使单片机复位。

软件看门狗技能的原理和这差不多,只不过是用软件的办法完成, 仍是以51系列来讲,在51单片机中有两个守时器, 能够用这两个守时器来对主程序的运转进行监控。对T0设定必定的守时时刻,当发生守时中止的时分对一个变量进行赋值,而这个变量在主程序运转的开端已经有了一个初值,要设定的守时值要小于主程序的运转时刻,这样在主程序的尾部对变量的值进行判别,假如值发生了预期的改变,就阐明T0中止正常,假如没有发生改变则使程序复位。

T1 用来监控主程序的运转, 给T1设定必定的守时时刻,在主程序中对其进行复位,假如不能在必定的时刻里对其进行复位,T1 的守时中止就会使单片机复位。在这里T1的守时时刻要设的大于主程序的运转时刻,给主程序留有必定的裕量。而T1的中止正常与否 再由T0守时中止子程序来监督。这样就够成了一个循环,T0监督T1,T1监督主程序,主程序又来监督T0,然后确保体系的安稳运转。

声明:本文内容来自网络转载或用户投稿,文章版权归原作者和原出处所有。文中观点,不代表本站立场。若有侵权请联系本站删除(kf@86ic.com)https://www.86ic.net/dianyuan/133929.html

为您推荐

联系我们

联系我们

在线咨询: QQ交谈

邮箱: kf@86ic.com

关注微信
微信扫一扫关注我们

微信扫一扫关注我们

返回顶部