概述
任何机载计算机系统软件的基本性能都包括计算机系统输入语言——软件编程语言。对于不同类型的机载数字计算机,由于其内部(机器)语言具有一定的相似性,广泛使用计算机汇编语言作为其编程语言。目前,主要关注软件设计、测试和调试自动化工具的发展,在软件生命周期的每个阶段上自动化工具可减轻程序设计员的手工劳动,并根本性提高其劳动效率。在此方面比较典型的是从计算机汇编语言向高级编程语言的过渡,高级编程语言可有效支持设计和跟踪。在机载综合电子系统的机载计算机系统中,高级编程语言可使用FORTRAN、ADA、Module 2、C、C++语言等。使用高级编程语言可在较低的软件研发和调试费用前提下提高软件可靠性、减少错误数量,并可在程序翻译阶段快速发现错误。1
开发方法高可靠性软件的现代开发方法主要包括:多方案软件法,使用软件正常功能还原部件的方法,综合法。
多方案软件法要求制定多个版本的软件组件和后续结果选择(在系统运行过程中),或确定软件故障。其中,如果结果选择算法是一个表决过程,则应具有3个以上的软件组件版本。使用多个版本的某软件组件可降低在程序模块中出现相同错误的概率。此时,不同版本或者由不同的程序设计员小组开发,或者在开发程序时不同版本具有本质性区别。
使用软件正常功能还原部件的方法与硬件结构冗余方法类似。根据该方法,由软件组件发出的结果应进行可接受性检查(进一步使用的可能性)。当发现异常时,备用软件组件则代替故障软件组件加人工作。在此之前应回溯性还原初始状态(软件出现错误前的状态)。在一些情况下,使用综合法方能达到最好的效果,综合法包含上述两种高可靠性软件开发方法的元素。1
软件可靠性提高软件可靠性的未来发展方向主要包括:
(1)实现结构化程序设计,此时可实现软件的分级结构,软件由在功能上独立的模块组成。各模块可构成树状分级结构。每个模块执行特定的功能,具有一个输入端和一个输出端,其特征是具有相对较小的容量和模块内的固定连接。针对每个模块编写一个注册证,其中指明模块名称、执行功能、所有输入和输出参数的清单等。
(2)在软件中采用程序和时间冗余,并且同时组织检测软件运行的可靠性。
(3)在编制程序时使用高级语言。除了能提高编程人员劳动效率和大幅增大软件可靠性之外,使用高级编程语言还可在具有较好注释时简化软件检测、文档编制、后续测试及编制软件测试实例和题目等。
(4)创建新的软件开发工具,它们(同高级编程语言一样)不仅能提高编程人员的劳动效率,还可保证提高软件运行的可靠性。
(5)发展用来研究软件设计、测试、验收和使用一般规律的软件可靠性理论,其目的是在大幅降低软件开发费用的情况下获得最大的使用效率。可靠性理论的发展与下列情况密切相关:软件可靠性定量指标的确定方法,按软件错误的统计特征积累试验数据,其类型的统一化,建立与软件在不同模式下运行过程相符的数学模型。
为完善机载综合电子系统计算机的软件,还应在软件开发和使用过程中将标准体系推广到软件的个别组成部分中(例如,操作系统结构、高级编程语言、指令系统、编码技术等)。设计机载计算机系统时必须考虑软件的特点,并且在程序编辑过程中合理地使用自动化工具设备。借助硬件或软硬件来实现软件部分功能的方式保证软件容量最小化,提高软件的可靠性和简化其调试。
从技术工艺角度改进软件的开发是指在机载计算机系统软件生命周期的所有阶段实现工作规范化和自动化、检测和控制工艺流程、提高执行效率等。通过创新、经过仔细修订,并以文件形式定型的技术工艺可实现上述要求,这些技术工艺可表现为应用规范化和自动化的方法、方式、措施等形式。一般情况下,软件
开发工艺应由下列专门技术标准和方法文件的支持:标准、规范、方法等。应当强调,在研制未来机载综合电子系统的机载计算机系统时,软件仍将是计算机系统整个研制周期的重要组成部分。此时,研制软件的一个重要目的是在计算机系统硬件、软件和硬软件之间实现最优功能分配。1
应用软件的编程语言应用程序的编制需使用PLC生产厂家提供的编程语言。至今为止还没有一种能适合于各种PLC的通用编程语言。国际标准化的IECll31-3编程语言详细地说明了句法、语法和下述5种编程语言的表达方式:
1.顺序功能图(sequential function chart);
2.梯形图(1adder diagram);
3.功能块图(function block diagram);
4.语句表(statement list);
5.结构文本(structured text)。
顺序功能图这是一种位于其他编程语言之上的图形语言,用来编制顺序控制程序。
顺序功能图提供了一种组织程序的图形方法,在其中可以用别的语言嵌套编程。步、转换和动作是顺序功能图中的3个要素,顺序功能图编程法可将一个复杂的控制过程分解为一些小的工作状态,对这些小状态的功能分别处理后,再把这些小状态按控制要求顺序连接组合成整体的控制程序。可以用顺序功能图来描述系统的功能,使用它可以对具有并发、选择等复杂结构的系统进行编程,根据它可以很容易地画出梯形图程序。顺序功能图体现了一种编程思想,在程序的编制中具有很重要的意义。
梯形图梯形图是一种以图形符号及其在图中的相互关系表示控制关系的编程语言。一般都在计算机屏幕上编辑,使用起来简单方便。梯形图与继电器控制系统的电路图很相似,具有直观易懂的优点,很容易被工厂熟悉继电器控制的电气人员掌握,它特别适用于开关量逻辑控制。梯形图是PLC编程语言中使用最广泛的一种语言。
梯形图中所绘的图形符号和继电器电路中的符号十分相似,因为梯形图是为熟悉继电器电路图的工程技术人员设计的,所以使用了类似的符号;两种图所表达的逻辑含义是一样的。因而编制梯形图的一种思路是:将在PLC中参与逻辑组合的元件看成和继电器一样的元件,具有常开、常闭触点及线圈,且线圈的得电及失电将导致触点的相应动作;再用母线代替电源线,用能量流概念来代替继电器电路中的电流概念,用与绘制继电器电路图类似的思路绘出梯形图。
功能块图功能块图是一种类似于数字逻辑电路的编程语言,有数字电路基础的人很容易掌握。该编程语言用类似与门、或门的方框来表示逻辑运算关系,方框的左侧为逻辑运算的输入变量,右侧为输出变量,输入、输出端的小圆圈表示“非”运算,信号自左向右流动。就像电路图一样,它们被“导线”连接在一起。
语句表语句表是一种与微机的汇编语言中的指令相似的助记符表达式,由语句指令依一定的顺序排列而成。一条指令一般可分为两部分:1)助记符;2)操作数。也有只有助记符的,被称为无操作数指令。语句表语言和梯形图有严格的对应关系。对语句表编程不熟悉的人可先画出梯形图,再转换为语句表。
语句表比较适合熟悉PLC和有编制程序基础的工程技术人员,只要理解各个指令的含义,就可以像写计算机程序一样写PLC的控制程序。
结构文本随着PLC的发展,许多高级功能若还使用梯形图来表示,会很不方便。为了增强PLC的数学运算、数据处理、图表显示、报表打印等功能,方便使用,许多大、中型PLC都配备了一种专用的高级编程语言,这种编程方式称作结构文本。与梯形图相比,它能实现复杂的数学运算,且编写的程序非常简捷和紧凑。用结构文本编制极其复杂的数学运算程序可能只占用一页纸。结构文本用来编制逻辑运算程序也很容易。
编程语言的相互转换和选用在S7—300的编程软件中,用户可以选用梯形图、功能块图和语句表这三种编程语言。大多数情况下,三者之间可以互相转换但梯形图编写的程序一定能转换为语句表。
梯形图程序中输入信号与输出信号之间的逻辑关系一目了然、易于理解,与继电器电路图的表达方式极为相似,设计开关量控制程序时建议选用梯形图语言。
语句表程序较难阅读,其中的逻辑关系很难一眼看出,但语句表输入方便快捷,还可以为每一条语句加上注释,便于复杂程序的阅读。在设计通信、数学运算等高级应用程序时建议使用语句表语言。语句表可以处理某些不能用梯形图处理的问题。
PLC实际上只认识助记符语言,梯形图语言是需要转换成助记符语言后,存入PLC的存储器中。2