你的位置: 首页> 通信技术> 计算机控制

计算机控制系统软件可靠性技术

2016-10-24 13:33:36 |人围观 | 评论:

  软件可靠性技术设计,主要有以下两个方面的内容。
  ⑴ 通过软件提高系统的可靠性
  提高整个系统的可靠性,不仅要提高元器件质量、采用硬件可靠性技术,而且还应该采取软件可靠性措施。
  ① 系统应该有实时自诊断软件模块,以便在系统运行过程中及时检测可能发生的故障或错误,对能够自动处理的问题可以采取自动修复等措施予以处理,对无法自动处理的故障或错误则可以通过报警来通知人工检修,对极限情况采取报警的同时应关闭系统的输出。这种自诊断工作往往需要硬件予以支持,因此系统硬件设计阶段就应充分考虑这一内容。
  ② 对于系统输入通道的信号,采取重复读取的方式处理,必要时应进行滤波处理,以去除干扰的作用。
  ③ 为防止干扰使得系统输出通道的信号发生变化,即使控制运算所得的输出量的值没有变化,也应在每一工作循环都刷新控制输出,以防因干扰而改变。
  ④ 对于系统通讯通道,要在传输的数据上增加冗余的错误校验位或校验和等,以便接收端能够确认数据是否在传输过程中发生错误。对关键的数据,还应采取重复发送、互相应答等方式进行传送。
  ⑤ 硬件冗余技术、“看门狗”抗干扰技术等,往往也需要软件配合实现。这时,软件的任务是在发生故障时保护现场、切换故障装置、恢复现场、重入控制循环等。
  (2) 提高软件自身的可靠性
  在计算机控制系统中,软件的可靠性占有重要地位。提高软件自身的可靠性,应该从以下几个方面入手。
  ① 改进软件设计的管理工作
  软件编制开发是一项复杂的脑力劳动,它有自己独有的特点,其管理的基本原则如下:
  (a) 进行软件总体设计时,应对任务进行周密细致的调查研究,制定严格的计划。
  (b) 对整个软件任务进行分析,将其分解成相对独立的若干功能模块,并明确每个模块的任务、功能及与其他模块的接口方式。
  (c) 软件应该具有良好的可读性和可装配性,软件的设计说明、测试记录等资料必须完整保存,以便进一步改进、完善。
  ② 采取结构化的设计方法
  不仅软件总体上采取模块化结构,每一功能模块也应采取自顶向下的结构化设计,使软件的逻辑清晰,以便于软件的扩充、修改、调试,并可以提高模块的通用性,减少重复工作。
  ③ 合理选择编程语言和工具
  如果条件允许,在选择编程语言时,应优先考虑采用高级编程语言,这可以使得编程人员写出语义明确的语句代码。目前,随着软件技术的不断发展,已经出现了可以帮助、引导编程者开发应用软件的自动编程工具,如Visual C++和Visual Basic语言的开发工具等,使用这类工具既可以提高编程效率、又可以减少人为错误,如有可能应予采用。
  ④ 养成良好的编程习惯
  在编制软件时,应该尽量少用或不用全程变量,避免一个模块有多个入口或出口。变量的命名也非常重要,应避免使用A、B、c这样语义含混的简单符号,而应使变量的名称与其功能乃至类型相对应,在这一点上,Windows系统采用的匈牙利命名方法是非常值得借鉴的。
  ⑤ 软件验证工具和技术的研究
  一个高质量的软件在初步编制完毕后,还需要进行大量的工作来验证其正确性,这一工作的费用约占全部软件成本的1/2。传统的软件验证方法只是验证原设计的要求和所完成的功能,这并不能全面验证软件的可靠性,因此最近又提出了以软件结构为对象(而不是以功能为对象)的验证方法,其要点是:
  (a) 要验证全部软件,在验证过程中应使用每个结构元素。
  (b) 只要对软件作了修改,就必须重新测试软件中的每个结构元素。
  (c) 完成结构验证后,对可能残留的错误,应针对错误的原因进行追溯和测试。
  需要指出的是,任何软件都不可能一次就成功,而是通过测试-修改-再测试过程的反复进行,才逐步予以完善的。因此,软件测试应遵循先测试各子程序,再测试模块,最后进行整个软件系统联调的步骤进行,这样可以及早发现问题并修改,也可降低测试工作量和费用。




标签: