知识大全 单片机系统软件抗干扰方法

Posted 系统

篇首语:花门楼前见秋草,岂能贫贱相看老。本文由小常识网(cha138.com)小编为大家整理,主要介绍了知识大全 单片机系统软件抗干扰方法相关的知识,希望对你有一定的参考价值。

  在提高硬件系统抗干扰能力的同时 软件抗干扰以其设计灵活 节省硬件资源 可靠性好越来越受到重视 下面以MCS 单片机系统为例 对微机系统软件抗干扰方法进行研究

     软件抗干扰方法的研究

  在工程实践中 软件抗干扰研究的内容主要是 一 消除模拟输入信号的嗓声(如数字滤波技术) 二 程序运行混乱时使程序重入正轨的方法 本文针对后者提出了几种有效的软件抗干扰方法

   指令冗余

  CPU取指令过程是先取操作码 再取操作数 当PC受干扰出现错误 程序便脱离正常轨道 乱飞 当乱飞到某双字节指令 若取指令时刻落在操作数上 误将操作数当作操作码 程序将出错 若 飞 到了三字节指令 出错机率更大

  在关键地方人为插入一些单字节指令 或将有效单字节指令重写称为指令冗余 通常是在双字节指令和三字节指令后插入两个字节以上的NOP 这样即使乱飞程序飞到操作数上 由于空操作指令NOP的存在 避免了后面的指令被当作操作数执行 程序自动纳入正轨

  此外 对系统流向起重要作用的指令如RET RETI LCALL LJMP JC等指令之前插入两条NOP 也可将乱飞程序纳入正轨 确保这些重要指令的执行

   拦截技术

  所谓拦截 是指将乱飞的程序引向指定位置 再进行出错处理 通常用软件陷阱来拦截乱飞的程序 因此先要合理设计陷阱 其次要将陷阱安排在适当的位置

   软件陷阱的设计

  当乱飞程序进入非程序区 冗余指令便无法起作用 通过软件陷阱 拦截乱飞程序 将其引向指定位置 再进行出错处理 软件陷阱是指用来将捕获的乱飞程序引向复位入口地址 H的指令 通常在EPROM中非程序区填入以下指令作为软件陷阱

  NOP

  NOP

  LJMP H

  其机器码为

   陷阱的安排

  通常在程序中未使用的EPROM空间填 最后一条应填入 当乱飞程序落到此区 即可自动入轨 在用户程序区各模块之间的空余单元也可填入陷阱指令 当使用的中断因干扰而开放时 在对应的中断服务程序中设置软件陷阱 能及时捕获错误的中断 如某应用系统虽未用到外部中断 外部中断 的中断服务程序可为如下形式

  NOP

  NOP

  RETI

  返回指令可用 RETI 也可用 LJMP H 如果故障诊断程序与系统自恢复程序的设计可靠 完善 用 LJMP H 作返回指令可直接进入故障诊断程序 尽早地处理故障并恢复程序的运行

  考虑到程序存贮器的容量 软件陷阱一般 K空间有 个就可以进行有效拦截

   软件 看门狗 技术

  若失控的程序进入 死循环 通常采用 看门狗 技术使程序脱离 死循环 通过不断检测程序循环运行时间 若发现程序循环时间超过最大循环运行时间 则认为系统陷入 死循环 需进行出错处理

   看门狗 技术可由硬件实现 也可由软件实现 在工业应用中 严重的干扰有时会破坏中断方式控制字 关闭中断 则系统无法定时 喂狗 硬件看门狗电路失效 而软件看门狗可有效地解决这类问题

  笔者在实际应用中 采用环形中断监视系统 用定时器T 监视定时器T 用定时器T 监视主程序 主程序监视定时器T 采用这种环形结构的软件 看门狗 具有良好的抗干扰性能 大大提高了系统可靠性 对于需经常使用T 定时器进行串口通讯的测控系统 则定时器T 不能进行中断 可改由串口中断进行监控(如果用的是MCS 系列单片机 也可用T 代替T 进行监视) 这种软件 看门狗 监视原理是 在主程序 T 中断服务程序 T 中断服务程序中各设一运行观测变量 假设为MWatch T Watch T Watch 主程序每循环一次 MWatch加1 同样T T 中断服务程序执行一次 T Watch T Watch加1 在T 中断服务程序中通过检测T Watch的变化情况判定T 运行是否正常 在T 中断服务程序中检测MWatch的变化情况判定主程序是否正常运行 在主程序中通过检测T Watch的变化情况判别T 是否正常工作 若检测到某观测变量变化不正常 比如应当加 而未加 则转到出错处理程序作排除故障处理 当然 对主程序最大循环周期 定时器T 和T 定时周期应予以全盘合理考虑 限于篇幅不赘述

     系统故障处理 自恢复程序的设计

  单片机系统因干扰复位或掉电后复位均属非正常复位 应进行故障诊断并能自动恢复非正常复位前的状态

   非正常复位的识别

  程序的执行总是从 H开始 导致程序从 H开始执行有四种可能 一 系统开机上电复位 二 软件故障复位 三 看门狗超时未喂狗硬件复位 四 任务正在执行中掉电后来电复位 四种情况中除第一种情况外均属非正常复位 需加以识别

   硬件复位与软件复位的识别

  此处硬件复位指开机复位与看门狗复位 硬件复位对寄存器有影响 如复位后PC= H SP= H PSW= H等 而软件复位则对SP SPW无影响 故对于微机测控系统 当程序正常运行时 将SP设置地址大于 H 或者将PSW的第 位用户标志位在系统正常运行时设为 那么系统复位时只需检测PSW 标志位或SP值便可判此是否硬件复位 图 是采用PSW 作上电标志位判别硬 软件复位的程序流程图

  

  图 硬 软件复位识别流程图

  此外 由于硬件复位时片内RAM状态是随机的 而软件复位片内RAM则可保持复位前状态 因此可选取片内某一个或两个单元作为上电标志 设 H用来做上电标志 上电标志字为 H 若系统复位后 H单元内容不等于 H 则认为是硬件复位 否则认为是软件复位 转向出错处理 若用两个单元作上电标志 则这种判别方法的可靠性更高

   开机复位与看门狗故障复位的识别

  开机复位与看门狗故障复位因同属硬件复位 所以要想予以正确识别 一般要借助非易失性RAM或者EEROM 当系统正常运行时 设置一可掉电保护的观测单元 当系统正常运行时 在定时喂狗的中断服务程序中使该观测单元保持正常值(设为 AAH) 而在主程中将该单元清零 因观测单元掉电可保护 则开机时通过检测该单元是否为正常值可判断是否看门狗复位

   正常开机复位与非正常开机复位的识别

  识别测控系统中因意外情况如系统掉电等情况引起的开机复位与正常开机复位 对于过程控制系统尤为重要 如某以时间为控制标准的测控系统 完成一次测控任务需 小时 在已执行测控 分钟的情况下 系统电压异常引起复位 此时若系统复位后又从头开始进行测控则会造成不必要的时间消耗 因此可通过一监测单元对当前系统的运行状态 系统时间予以监控 将控制过程分解为若干步或若干时间段 每执行完一步或每运行一个时间段则对监测单元置为关机允许值 不同的任务或任务的不同阶段有不同的值 若系统正在进行测控任务或正在执某时间段 则将监测单元置为非正常关机值 那么系统复位后可据此单元判系统原来的运行状态 并跳到出错处理程序中恢复系统原运行状态

   非正常复位后系统自恢复运行的程序设计

  对顺序要求严格的一些过程控制系统 系统非正常复位否 一般都要求从失控的那一个模块或任务恢复运行 所以测控系统要作好重要数据单元 参数的备份 如系统运行状态 系统的进程值 当前输入 输出的值 当前时钟值 观测单元值等 这些数据既要定时备份 同时若有修改也应立即予以备份

  当在已判别出系统非正常复位的情况下 先要恢复一些必要的系统数据 如显示模块的初始化 片外扩展芯片的初始化等 其次再对测控系统的系统状态 运行参数等予以恢复 包括显示界面等的恢复 之后再把复位前的任务 参数 运行时间等恢复 再进入系统运行状态

  应当说明的是 真实地恢复系统的运行状态需 要极为细致地对系统的重要数据予以备份 并加以数据可靠性检查 以保证恢复的数据的可靠性

  其次 对多任务 多进程测控系统 数据的恢复需考虑恢复的次序问题 笔者实际应用的数据恢复过程流程图如图 所示   

  

  图 系统自恢复程序流程图

  图中恢复系统基本数据是指取出备份的数据覆蓋当前的系统数据 系统基本初始化是指对芯片 显示 输入输出方式等进行初始化 要注意输入输出的初始化不应造成误动作 而复位前任务的初始化是指任务的执行状态 运行时间等

     结束语

cha138/Article/program/qrs/201311/11074

相关参考

如何选购压力变送器?

  1.设备现场的环境较为恶劣,强电信号会产生各种电磁干扰,雷电感应会产生强浪涌脉冲,在这种情况下,单片机应用系统中遇到的一个棘手问题就是如何在恶劣环境下远距离可靠地传送微小信号。  2.但压力变送器

臭氧发生器的软件设计

软件部分主要实现如下功能:键盘扫描、LED显示、A/D温度数据采集、PWM0/1输出控制、I2C总线时序模拟、DS1337数据读写、RF遥控器信号的外部中断处理。主程序流程如图5所示。首先单片机上电运

臭氧发生器的软件设计

软件部分主要实现如下功能:键盘扫描、LED显示、A/D温度数据采集、PWM0/1输出控制、I2C总线时序模拟、DS1337数据读写、RF遥控器信号的外部中断处理。主程序流程如图5所示。首先单片机上电运

臭氧发生器的软件设计

软件部分主要实现如下功能:键盘扫描、LED显示、A/D温度数据采集、PWM0/1输出控制、I2C总线时序模拟、DS1337数据读写、RF遥控器信号的外部中断处理。主程序流程如图5所示。首先单片机上电运

知识大全 单片机串口通信的波特率有什么用

单片机串口通信的波特率有什么用两个串口之间通讯的速率,两个串口的波特率设置成一样才能互相发送和接收数据单片机串口通信的波特率如何计算教材上都有计算公式的,还可以用波特率计算软件来计算STC单片机下载入

知识大全 评论51单片机波特率计算工具 绿色版怎么样

评论51单片机波特率计算工具绿色版怎么样有它很方便,没它也能过,把常用的波特率晶频率对应的数值计下来即可STC单片机下载软件也有这项功能51单片机独立波特率怎么弄单片机的波特率一般是通过定时1来实现的

电机过载保护器的主要特点是什么?

1、系统采用宽温、低功耗工业级芯片,更适合于工业现场使用。  2、软件、硬件及电磁兼容性三个方面协同设计,产品具有很强的抗干扰能力和很高的可靠性,特别适合于工业现场使用。  3、电流互感器变比可设置(

电机过载保护器的主要特点是什么?

1、系统采用宽温、低功耗工业级芯片,更适合于工业现场使用。  2、软件、硬件及电磁兼容性三个方面协同设计,产品具有很强的抗干扰能力和很高的可靠性,特别适合于工业现场使用。  3、电流互感器变比可设置(

知识大全 嵌入式驱动开发和用单片机写一个程序驱动一个器件和芯片是不是类似的,求解决

嵌入式驱动开发和用单片机写一个程序驱动一个器件和芯片是不是类似的,求解决?我以前学校51和AVR,现在学习ARM9,和你分享一下我的观点,单片机如51和AVR之类,是对硬件的操作,不能跑操作系统,能力

需要用跳转指令来等待某个信号上升沿的出现吗?

  这是一种单片机编程的思维,单片机的全部程序都是用户设计的,PLC的程序包括系统程序和用户程序。实现PLC的扫描工作方式的系统程序是PLC厂家设计好的,PLC的扫描工作方式在每一扫描周期开始时读取全