1、应用程序设计步骤应用程序设计步骤 常用控制程序设计常用控制程序设计 第第7章章 计算机控制系统应用软件计算机控制系统应用软件教学重点教学重点:微微型型计计算算机机控控制制技技术术计算机控制系统应用软件计算机控制系统应用软件第第7章章 计算机控制系统应用软件计算机控制系统应用软件教学重点教学重点:应用程序设计步骤应用程序设计步骤 常用控制程序设计常用控制程序设计 微微型型计计算算机机控控制制技技术术计算机控制系统应用软件计算机控制系统应用软件7.1 7.1 计算机控制系统软件概述计算机控制系统软件概述 计算机控制系统软件主要包括系统软件与应用软件。计算机控制系统软件主要包括系统软件与应用软件。系
2、统软件是指操作系统(系统软件是指操作系统(DOSDOS,WindowsWindows)。它提供了程)。它提供了程序运行的环境(不同的操作系统下有不同的人机界面),序运行的环境(不同的操作系统下有不同的人机界面),以及各种设计语言、算法库、工具软件。一般这些软件以及各种设计语言、算法库、工具软件。一般这些软件由专业厂商以产品形式向用户提供。由专业厂商以产品形式向用户提供。微微型型计计算算机机控控制制技技术术计算机控制系统应用软件计算机控制系统应用软件 应用软件是用户为完成特定的任务而编写的各种程应用软件是用户为完成特定的任务而编写的各种程序的总称。一般需要应用单位根据不同的控制对象和不序的总称。
3、一般需要应用单位根据不同的控制对象和不同的控制任务组织专门人员进行编写。控制对象的差异同的控制任务组织专门人员进行编写。控制对象的差异性使对应用软件的要求也有很大的差别。一般在工业控性使对应用软件的要求也有很大的差别。一般在工业控制系统中,针对每个控制对象,为完成相应的控制任务,制系统中,针对每个控制对象,为完成相应的控制任务,都要求配置相应的专门控制程序,才能使整个系统实现都要求配置相应的专门控制程序,才能使整个系统实现预定的功能。预定的功能。微微型型计计算算机机控控制制技技术术计算机控制系统应用软件计算机控制系统应用软件 本章主要叙述应用程序设计的基本功能、设计步骤本章主要叙述应用程序设计
4、的基本功能、设计步骤与方法,讨论一些常用应用程序(如数字滤波、线性化与方法,讨论一些常用应用程序(如数字滤波、线性化处理、标度变换、越限报警和常用控制算法等)的设计。处理、标度变换、越限报警和常用控制算法等)的设计。在进行软件设计时,首先要考虑采用何种语言进行编程,在进行软件设计时,首先要考虑采用何种语言进行编程,是用汇编语言、是用汇编语言、C C语言还是语言还是Visual BASICVisual BASIC等;尽管用汇等;尽管用汇编语言设计的程序执行速度最快,程序代码最短,但由编语言设计的程序执行速度最快,程序代码最短,但由于汇编语言是低级语言,使用汇编语言编程是一件很麻于汇编语言是低级语
5、言,使用汇编语言编程是一件很麻烦的事情,尤其是进行数值运算或结果演示时更为复杂。烦的事情,尤其是进行数值运算或结果演示时更为复杂。微微型型计计算算机机控控制制技技术术计算机控制系统应用软件计算机控制系统应用软件 因此,只有对程序执行的时间要求十分苛刻时,才因此,只有对程序执行的时间要求十分苛刻时,才考虑使用汇编语言。一般情况,开发人员都使用结构化考虑使用汇编语言。一般情况,开发人员都使用结构化较强的较强的C C语言作为开发工具。对于涉及微机硬件接口技语言作为开发工具。对于涉及微机硬件接口技术的应用系统的开发,普遍认为术的应用系统的开发,普遍认为C C语言与汇编语言的混语言与汇编语言的混合编程是
6、最佳的软件设计方法。本章主要涉及一些常用合编程是最佳的软件设计方法。本章主要涉及一些常用应用程序,因此只介绍使用应用程序,因此只介绍使用C C语言进行设计。为了使叙语言进行设计。为了使叙述的方法具有通用性,讨论中不涉及具体系统。本章还述的方法具有通用性,讨论中不涉及具体系统。本章还结合流程图,给出了一些源程序代码,以便于初学者自结合流程图,给出了一些源程序代码,以便于初学者自学。学。另外,本章还简单介绍了一些成熟的控制软件产品。另外,本章还简单介绍了一些成熟的控制软件产品。微微型型计计算算机机控控制制技技术术计算机控制系统应用软件计算机控制系统应用软件7.1.1 7.1.1 基本功能基本功能
7、应用软件随应用领域的不同而不同。目前,在计算应用软件随应用领域的不同而不同。目前,在计算机控制系统中,应用软件除控制生产过程之外,还对生机控制系统中,应用软件除控制生产过程之外,还对生产过程实现管理。主要功能如下:产过程实现管理。主要功能如下:(1 1)控制程序)控制程序 控制程序主要实现对系统的调节和控制,它根据各控制程序主要实现对系统的调节和控制,它根据各种各样的控制算法和千差万别的被控对象的具体情况来种各样的控制算法和千差万别的被控对象的具体情况来编写,控制程序的主要目标是满足系统的性能指标。常编写,控制程序的主要目标是满足系统的性能指标。常用的有数字式用的有数字式PIDPID调节控制程
8、序、最优控制算法程序、调节控制程序、最优控制算法程序、顺序控制及插补运算程序等。顺序控制及插补运算程序等。微微型型计计算算机机控控制制技技术术计算机控制系统应用软件计算机控制系统应用软件 (2 2)数据采集及处理程序)数据采集及处理程序 它主要包括数据可靠性检查程序,用来检查是可靠它主要包括数据可靠性检查程序,用来检查是可靠输入数据还是故障数据;输入数据还是故障数据;A/DA/D转换及采样程序;数字滤转换及采样程序;数字滤波程序,用来滤除干扰造成的错误数据或不宜使用的数波程序,用来滤除干扰造成的错误数据或不宜使用的数据;线性化处理程序,对检测元件或变送器的非线性用据;线性化处理程序,对检测元件
9、或变送器的非线性用软件补偿。软件补偿。微微型型计计算算机机控控制制技技术术计算机控制系统应用软件计算机控制系统应用软件 (3 3)巡回检测程序)巡回检测程序 除包括数据采集程序之外,还包括越限报警程序,用除包括数据采集程序之外,还包括越限报警程序,用于在生产中某些量超过限定值时报警;事故预报程序,生于在生产中某些量超过限定值时报警;事故预报程序,生产中某些量不容许超过限定值,从这些量的变化趋势来看产中某些量不容许超过限定值,从这些量的变化趋势来看若有可能超过限定值,则发出事故预报信号;画出显示程若有可能超过限定值,则发出事故预报信号;画出显示程序,用图、表在序,用图、表在CRTCRT上形象地反
10、映生产状况。上形象地反映生产状况。(4 4)数据管理程序)数据管理程序 这部分程序用于生产管理部分,主要包括统计报表程这部分程序用于生产管理部分,主要包括统计报表程序,按生产管理部门要求的格式打印各种报表;产品销售、序,按生产管理部门要求的格式打印各种报表;产品销售、生产调度及库存管理程序;产值利润预测程序等。生产调度及库存管理程序;产值利润预测程序等。微微型型计计算算机机控控制制技技术术计算机控制系统应用软件计算机控制系统应用软件7.1.2 7.1.2 应用程序设计步骤应用程序设计步骤 如图如图7-17-1所示,应用程序设计通常分为五个步骤:所示,应用程序设计通常分为五个步骤:问题定义、程序
11、设计、编码、调试、维护和再设计等。问题定义、程序设计、编码、调试、维护和再设计等。问题的定义是确定控制任务对微型机控制系统的问题的定义是确定控制任务对微型机控制系统的要求,它包括定义输入和输出、处理要求、系统具体指要求,它包括定义输入和输出、处理要求、系统具体指标(如执行时间、精度、响应时间等)以及出错处理方标(如执行时间、精度、响应时间等)以及出错处理方法等法等.微微型型计计算算机机控控制制技技术术计算机控制系统应用软件计算机控制系统应用软件 程 序 设 计程 序 设 计是 指 把 所 定 义是 指 把 所 定 义的 问 题 用 程 序的 问 题 用 程 序的 方 式 对 控 制的 方 式
12、对 控 制任务进行描述。任务进行描述。这 一 步 要 用 到这 一 步 要 用 到流 程 图 和 模 块流 程 图 和 模 块程 序、自 顶 向程 序、自 顶 向下 设 计、结 构下 设 计、结 构程 序 等 程 序 设程 序 等 程 序 设计技术。计技术。问题定义 程序设计 有错?开始 手编程序 查错 维护和再设计 文件编制 测试 有错?大错?Y Y Y N N N 结束 图 7-1 应用程序设计流程图 微微型型计计算算机机控控制制技技术术计算机控制系统应用软件计算机控制系统应用软件 手编程序是把设计框图变成计算机能接受的指令。手编程序是把设计框图变成计算机能接受的指令。实时控制中通常采用汇
13、编语言或实时控制中通常采用汇编语言或C C语言编写源代码。语言编写源代码。查错也称程序验证,它用来发现编程中的错误。查错也称程序验证,它用来发现编程中的错误。在查错阶段可以利用诸如查错程序、断点、跟踪、模在查错阶段可以利用诸如查错程序、断点、跟踪、模拟程序,逻辑分析器以及联机仿真器等手段。拟程序,逻辑分析器以及联机仿真器等手段。测试也称程序正确性确认,通过测试保证程序正测试也称程序正确性确认,通过测试保证程序正确完成要求的任务。在测试这一步要注意选择正确的确完成要求的任务。在测试这一步要注意选择正确的测试数据和测试方法。测试数据和测试方法。微微型型计计算算机机控控制制技技术术计算机控制系统应用
14、软件计算机控制系统应用软件 文件编制用流程图、注释、存储器分配说明等方法文件编制用流程图、注释、存储器分配说明等方法来描述程序并形成文件,以便于用户和操作人员了解。来描述程序并形成文件,以便于用户和操作人员了解。维护和再设计是对程序进行维护、改进和扩充,以维护和再设计是对程序进行维护、改进和扩充,以解决现场设备发生的问题,有时还要有特殊的诊断手段解决现场设备发生的问题,有时还要有特殊的诊断手段(或程序)及维护手段,有时为满足新的要求和处理任(或程序)及维护手段,有时为满足新的要求和处理任务,可能需要改进或扩充程序。务,可能需要改进或扩充程序。微微型型计计算算机机控控制制技技术术计算机控制系统应
15、用软件计算机控制系统应用软件7.1.3 7.1.3 程序设计方法程序设计方法 程序设计方法是指程序设计的某种规程和准则。程序设计方法是指程序设计的某种规程和准则。通常有通常有模块化程序模块化程序、自顶向下程序设计自顶向下程序设计、结构化程结构化程序设计序设计等几种方法。等几种方法。微微型型计计算算机机控控制制技技术术计算机控制系统应用软件计算机控制系统应用软件 1.1.模块化程序设计模块化程序设计 模块化程序设计是把一个较长的完整程序分成若干模块化程序设计是把一个较长的完整程序分成若干个小的程序或模块,在分别进行独立设计、编程、测试个小的程序或模块,在分别进行独立设计、编程、测试和查错之后,最
16、终装配在一起,联结成一个大的程序。和查错之后,最终装配在一起,联结成一个大的程序。程序模块通常是按功能划分的。在计算机控制系统程序程序模块通常是按功能划分的。在计算机控制系统程序设计中,这种划分方法特别有用设计中,这种划分方法特别有用。微微型型计计算算机机控控制制技技术术计算机控制系统应用软件计算机控制系统应用软件 模块化程序设计技术有一些明显的优点。单个模块要模块化程序设计技术有一些明显的优点。单个模块要比一个完整程序更易编写、查错和测试,并能为其它程序比一个完整程序更易编写、查错和测试,并能为其它程序重复使用。模块化程序设计的缺点是在把模块装配成一个重复使用。模块化程序设计的缺点是在把模块
17、装配成一个大程序时,要对各模块进行连接,以完成模块之间的信息大程序时,要对各模块进行连接,以完成模块之间的信息传送,此外,为进行模块测试和程序测试,还要编写测试传送,此外,为进行模块测试和程序测试,还要编写测试模块程序用的测试程序。使用模块化程序设计所占用的内模块程序用的测试程序。使用模块化程序设计所占用的内存容量也较多。存容量也较多。如果很难把程序模块化,或者有较多的特殊情况需要如果很难把程序模块化,或者有较多的特殊情况需要处理,或者使用了大量变量(每个也都需要待别处理),处理,或者使用了大量变量(每个也都需要待别处理),则说明问题定义得不好。为此,需要重新定义任务。则说明问题定义得不好。为
18、此,需要重新定义任务。微微型型计计算算机机控控制制技技术术计算机控制系统应用软件计算机控制系统应用软件 2.2.自顶向下程序设计自顶向下程序设计 自顶向下程序设计是在程序设计时,先从系统一级自顶向下程序设计是在程序设计时,先从系统一级的管理程序(或者主程序)开始设计,从属的程序或者的管理程序(或者主程序)开始设计,从属的程序或者子程序用一些程序标志来代替。当系统一级的程序编好子程序用一些程序标志来代替。当系统一级的程序编好后,再将各标志扩展成从属程序或子程序,最后完成整后,再将各标志扩展成从属程序或子程序,最后完成整个系统的程序设计。这种程序设计过程大致有以下几步:个系统的程序设计。这种程序设
19、计过程大致有以下几步:(1 1)写出管理程序并进行测试。尚未确定的子程序用程序标)写出管理程序并进行测试。尚未确定的子程序用程序标志来代替,但必须在特定的测试条件下产生与原定的程序相同的结志来代替,但必须在特定的测试条件下产生与原定的程序相同的结果;果;(2 2)对每一个程序标志进行程序设计,使它成为实际的工作)对每一个程序标志进行程序设计,使它成为实际的工作程序。这个过程是与测试和查错同时进行的;程序。这个过程是与测试和查错同时进行的;(3 3)对最后的整个程序进行测试。)对最后的整个程序进行测试。微微型型计计算算机机控控制制技技术术计算机控制系统应用软件计算机控制系统应用软件 自顶向下设计
20、的优点是设计、测试相连结同时按一个线自顶向下设计的优点是设计、测试相连结同时按一个线索进行,矛盾和问题可以较早发现和解决。而且,测试能够索进行,矛盾和问题可以较早发现和解决。而且,测试能够完全按真实的系统环境来进行,不需要依赖于测试程序。它完全按真实的系统环境来进行,不需要依赖于测试程序。它是将程序设计、手编程序和测试这几步结合在一起的一种设是将程序设计、手编程序和测试这几步结合在一起的一种设计方法。自顶向下设计的缺点主要是上一级的错误将对整个计方法。自顶向下设计的缺点主要是上一级的错误将对整个程序产生严重的影响,一处修改有可能牵动全局,引起对整程序产生严重的影响,一处修改有可能牵动全局,引起
21、对整个程序进行全面修改。另外,总的设计可能同系统硬件不能个程序进行全面修改。另外,总的设计可能同系统硬件不能很好配合,不一定能充分利用现成软件。很好配合,不一定能充分利用现成软件。自顶向下设计比较习惯于人们日常的思维,而且研制应自顶向下设计比较习惯于人们日常的思维,而且研制应用程序的几个步骤可以同时结合进行,因而能提高研制效率。用程序的几个步骤可以同时结合进行,因而能提高研制效率。微微型型计计算算机机控控制制技技术术计算机控制系统应用软件计算机控制系统应用软件 3.3.结构化程序设计结构化程序设计 结构化程序设计的方法给程序设计施加了一定的结构化程序设计的方法给程序设计施加了一定的约束,它限制
22、采用规定的结构类型和操作顺序。因此,约束,它限制采用规定的结构类型和操作顺序。因此,能够编写出操作顺序分明、便于查错和纠正错误的程序。能够编写出操作顺序分明、便于查错和纠正错误的程序。这些方法指出,任何程序逻辑都可用顺序、条件和循环这些方法指出,任何程序逻辑都可用顺序、条件和循环三种结构来表示。三种结构来表示。微微型型计计算算机机控控制制技技术术计算机控制系统应用软件计算机控制系统应用软件 (1 1)顺序结构)顺序结构 顺序结构的流程图如图顺序结构的流程图如图7-27-2所示。在这种结构中,所示。在这种结构中,计算机按顺序先执行计算机按顺序先执行P1P1,然后执行,然后执行P2P2,最后执行,
23、最后执行P3P3。其。其中中P1P1、P2P2、P3P3可以是一条指令,但也可以是一段程序。可以是一条指令,但也可以是一段程序。(2 2)条件结构)条件结构 条件结构流程图如图条件结构流程图如图7-37-3所示,当条件满足时,计所示,当条件满足时,计算机执行算机执行P1P1,否则执行,否则执行P2P2。在这种结构中,。在这种结构中,P1P1和和P2P2都只都只有一个入口和一个出口。有一个入口和一个出口。微微型型计计算算机机控控制制技技术术计算机控制系统应用软件计算机控制系统应用软件 P2 P1 P3 入口 出口 图 7-2 顺序结构流程图 P2 P1 入口 出口 C=1?Y N 图 7-3 条
24、件结构流程图 微微型型计计算算机机控控制制技技术术计算机控制系统应用软件计算机控制系统应用软件 (3 3)循环结构)循环结构 常见的循环结构有两种,如图常见的循环结构有两种,如图7-47-4所示。在图所示。在图a a所示所示的循环结构中,计算机先执行循环操作的循环结构中,计算机先执行循环操作P P,然后判断条,然后判断条件是否满足,若条件满足,程序继续循环,若条件不满件是否满足,若条件满足,程序继续循环,若条件不满足,则停止循环。而图足,则停止循环。而图b b所示的循环结构中,计算机先所示的循环结构中,计算机先执行条件判断语句,只有在条件满足的情况下才能循环执行条件判断语句,只有在条件满足的情
25、况下才能循环操作操作P P。微微型型计计算算机机控控制制技技术术计算机控制系统应用软件计算机控制系统应用软件 P 入口 出口 C=1?Y N P 入口 出口 C=1?Y N 图 7-4 循环结构流程图 a b 微微型型计计算算机机控控制制技技术术计算机控制系统应用软件计算机控制系统应用软件 利用上述几种基本结构,可以构成任何功能的程序。利用上述几种基本结构,可以构成任何功能的程序。结构化程序设计的优点是:结构化程序设计的优点是:由于每个结构只有一个入口和一个出口,故程序由于每个结构只有一个入口和一个出口,故程序的执行顺序易于跟踪,给程序查错和调试带来很大的方的执行顺序易于跟踪,给程序查错和调试
26、带来很大的方便。便。由于基本结构是限定的,故易于装配成模块。由于基本结构是限定的,故易于装配成模块。易于用程序框图来描述。易于用程序框图来描述。微微型型计计算算机机控控制制技技术术计算机控制系统应用软件计算机控制系统应用软件7.1.4 7.1.4 程序设计语言选择程序设计语言选择 计算机控制系统的应用程序设计,可以采用机器语计算机控制系统的应用程序设计,可以采用机器语言、汇编语言或一些高级语言(如:言、汇编语言或一些高级语言(如:BASICBASIC、FORTRANFORTRAN、PASCALPASCAL、C C以及以及C+C+)。工业控制计算机自身的技术进步)。工业控制计算机自身的技术进步和
27、计算机高级语言功能的扩展使得这样的设计与开发方和计算机高级语言功能的扩展使得这样的设计与开发方法得以实现。法得以实现。微微型型计计算算机机控控制制技技术术计算机控制系统应用软件计算机控制系统应用软件7.2 7.2 常用控制程序设计常用控制程序设计 7.2.1 7.2.1 报警程序设计报警程序设计 由采样读入的数据或经计算机处理后的数据是否超由采样读入的数据或经计算机处理后的数据是否超出工艺参数的范围,计算机要加以判别,如果超越了规出工艺参数的范围,计算机要加以判别,如果超越了规定数值,就需要通知操作人员采取相应的措施,确保生定数值,就需要通知操作人员采取相应的措施,确保生产的安全。产的安全。微
28、微型型计计算算机机控控制制技技术术计算机控制系统应用软件计算机控制系统应用软件 越限报警是工业控制过程常见而又实用的一种报警越限报警是工业控制过程常见而又实用的一种报警形式,它分为上限报警、下限报警及上下限报警。报警形式,它分为上限报警、下限报警及上下限报警。报警程序设计比较简单,它主要采用比较法,把采样并经数程序设计比较简单,它主要采用比较法,把采样并经数字滤波以及标度变换后的被测参数值与给定的上下限值字滤波以及标度变换后的被测参数值与给定的上下限值进行比较。如果需要报警的参数是,该参数的上下限约进行比较。如果需要报警的参数是,该参数的上下限约束值分别是,则上下限报警的物理意义如下:束值分别
29、是,则上下限报警的物理意义如下:微微型型计计算算机机控控制制技技术术计算机控制系统应用软件计算机控制系统应用软件(1 1)上限报警)上限报警 若若 ,则上限报警,否则继续执行原定操作。,则上限报警,否则继续执行原定操作。(2 2)下限报警)下限报警 若若 ,则下限报警,否则继续执行原定操作。,则下限报警,否则继续执行原定操作。(3 3)上下限报警)上下限报警 若若 ,则上限报警,否则对下式做判别,则上限报警,否则对下式做判别,否?若是则下限报管,否则继续原定操作否?若是则下限报管,否则继续原定操作。maxxxnminxxnmaxxxnminxxn微微型型计计算算机机控控制制技技术术计算机控制系
30、统应用软件计算机控制系统应用软件 根据上述规定,程序可以实现对状态变量、偏差以根据上述规定,程序可以实现对状态变量、偏差以及输出进行上下限检查。及输出进行上下限检查。在实际应用中,为了避免测量值在极限值附近摆动在实际应用中,为了避免测量值在极限值附近摆动造成频繁的报警,因此在上、下限附近设定一个回差带,造成频繁的报警,因此在上、下限附近设定一个回差带,如图如图7-57-5所示所示 微微型型计计算算机机控控制制技技术术计算机控制系统应用软件计算机控制系统应用软件 被测值 上限值 下限值 越上限报警 越下限报警 复限 时间 图 7-5 越限报警示意图 微微型型计计算算机机控控制制技技术术计算机控制
31、系统应用软件计算机控制系统应用软件 在图在图7-57-5中,中,H H是上限带,是上限带,L L为下限带。规定只有当为下限带。规定只有当测量值越过测量值越过A A点时,才算越上限,测量值穿越带区,下点时,才算越上限,测量值穿越带区,下降到降到B B点以下才算复限。同样的道理,测量值在点以下才算复限。同样的道理,测量值在L L带区内带区内摆动,均不做处理,只有它低于摆动,均不做处理,只有它低于C C点值时,被认为越下点值时,被认为越下限,经调节,回归于限,经调节,回归于D D点之上时,才作越下限后复位处点之上时,才作越下限后复位处理。理。基本思想基本思想就是将采样、数字滤波后的数据与该被测就是将
32、采样、数字滤波后的数据与该被测点上下限给定值进行比较,检查是否越限;或者与上限点上下限给定值进行比较,检查是否越限;或者与上限复位值、下限复位值进行比较,检查是否复限。如越限,复位值、下限复位值进行比较,检查是否复限。如越限,则分别置上、下限标志,并输出相应的声光报警信号。则分别置上、下限标志,并输出相应的声光报警信号。如复限,则清除相应标志。其程序流程图如图如复限,则清除相应标志。其程序流程图如图7-67-6所示。所示。微微型型计计算算机机控控制制技技术术计算机控制系统应用软件计算机控制系统应用软件程序清单为程序清单为:/函数名:函数名:AlarmAlarm/入口参数:入口参数:X X采样值
33、采样值/出口参数:无出口参数:无/描述:读者可以根据自己的硬件系统,修改端口地址、报警值上下限以及描述:读者可以根据自己的硬件系统,修改端口地址、报警值上下限以及复限带区宽度复限带区宽度#define PORT 0FFFF /#define PORT 0FFFF /报警端口地址报警端口地址#define BoundMax#define BoundMax 50 /50 /报警上限值报警上限值#define BoundMin#define BoundMin 10 /10 /报警下限值报警下限值#define RoomH#define RoomH 4 /4 /报警上限带区宽度:报警上限带区宽度:H
34、H#define RoomL#define RoomL 4 /4 /报警下限带区宽度:报警下限带区宽度:L Lint AlarmUpFlagint AlarmUpFlag /上限报警标志上限报警标志int AlarmDownFlagint AlarmDownFlag /下限报警标志下限报警标志 微微型型计计算算机机控控制制技技术术计算机控制系统应用软件计算机控制系统应用软件void Alarm(double X)void Alarm(double X)if(XBoundMax+RoomH/2)/if(XBoundMax+RoomH/2)/超上限超上限 if(AlarmUpFlagif(Alar
35、mUpFlag=0)/=0)/超上限标志未置位超上限标志未置位 AlarmUpFlag AlarmUpFlag=1;/=1;/置位置位 outport(PORT,1);/outport(PORT,1);/输出报警模型输出报警模型 return;/return;/返回返回 else if(X(BoundMax-RoomH/2)/else if(X(BoundMax-RoomH/2)/复上限复上限 if(AlarmUpFlag if(AlarmUpFlag=1)=1)AlarmUpFlagAlarmUpFlag=0;/=0;/清除超上限报警标志清除超上限报警标志 else if(Xelse if(
36、XBoundMin-RoomL/2)/BoundMin+RoomL/2)/else if(XBoundMin+RoomL/2)/复下限复下限 if(AlarmDownFlagif(AlarmDownFlag=1)=1)AlarmDownFlag AlarmDownFlag=0;/=0;/清除超下限标志清除超下限标志 微微型型计计算算机机控控制制技技术术计算机控制系统应用软件计算机控制系统应用软件 开 始 取测量值 返 回 N Y 越上限否?复上限否?越上限标志置位否?越下限否?复下限否?越下限标志置位否?越上限标志置位否?置越上限标志 输出声光报警 越下限标志置位否?置越下限标志 输出声光报警
37、 越上限标志清零 越下限标志清零 Y Y Y Y N N N N N Y Y N Y N Y 微微型型计计算算机机控控制制技技术术计算机控制系统应用软件计算机控制系统应用软件7.2.2 7.2.2 数字滤波程序设计数字滤波程序设计 随机误差是由窜入检测系统或控制系统的随机干扰随机误差是由窜入检测系统或控制系统的随机干扰引起的,这种误差是指在相同条件下测量同一量时,其引起的,这种误差是指在相同条件下测量同一量时,其大小和符号作无规则的变化而无法预测、但在多次测量大小和符号作无规则的变化而无法预测、但在多次测量中它是符合统计规律的。为了克服随机干扰引入的误差、中它是符合统计规律的。为了克服随机干扰
38、引入的误差、除了可以采用硬件办法,还可以按统计规律用软件算法除了可以采用硬件办法,还可以按统计规律用软件算法来实现,即采用数字滤波方法来抑制有效信号中的干扰来实现,即采用数字滤波方法来抑制有效信号中的干扰成分,消除随机误差,同时对信号进行必要的平滑处理,成分,消除随机误差,同时对信号进行必要的平滑处理,以保证系统的正常运行。以保证系统的正常运行。微微型型计计算算机机控控制制技技术术计算机控制系统应用软件计算机控制系统应用软件与模拟滤波器相比较,数字滤波算法具有如下的优点:与模拟滤波器相比较,数字滤波算法具有如下的优点:节约硬件成本节约硬件成本 可靠稳定可靠稳定 功能强功能强 方便灵活方便灵活
39、不会丢失原始数据不会丢失原始数据下面介绍几种常用数字滤波算法下面介绍几种常用数字滤波算法微微型型计计算算机机控控制制技技术术计算机控制系统应用软件计算机控制系统应用软件 1.程序判断法程序判断法 许多物理量的变化都需要一定的时间,相邻两次采许多物理量的变化都需要一定的时间,相邻两次采样值之间的变化有一定的限度。程序判断滤波的方法,样值之间的变化有一定的限度。程序判断滤波的方法,是根据生产经验,确定出相邻两次采样信号之间可能出是根据生产经验,确定出相邻两次采样信号之间可能出现的最大偏差,若超过此偏差值,则表明该输入信号是现的最大偏差,若超过此偏差值,则表明该输入信号是干扰信号,应该去掉;如小于此
40、偏差值,可将该信号作干扰信号,应该去掉;如小于此偏差值,可将该信号作为本次采样值。为本次采样值。微微型型计计算算机机控控制制技技术术计算机控制系统应用软件计算机控制系统应用软件 当采样信号由于随机干扰,如大功率用电设备的启当采样信号由于随机干扰,如大功率用电设备的启动或停止,造成电流的尖峰干扰或误检测,以及变送器动或停止,造成电流的尖峰干扰或误检测,以及变送器不稳定而引起的严重失真等,可采用程序判断法进行滤不稳定而引起的严重失真等,可采用程序判断法进行滤波。波。程序判断滤波根据滤波方法不同,可以分为:程序判断滤波根据滤波方法不同,可以分为:限幅限幅滤波滤波和和限速滤波限速滤波两种。两种。微微型
41、型计计算算机机控控制制技技术术计算机控制系统应用软件计算机控制系统应用软件 (1 1)限幅滤波)限幅滤波 基本方法是把两次相邻的采样值相减,求出其增基本方法是把两次相邻的采样值相减,求出其增量(以绝对值表示),然后与两次采样容许的最大差值量(以绝对值表示),然后与两次采样容许的最大差值(由被控对象的实际情况决定)(由被控对象的实际情况决定)进行比较,若小于等进行比较,若小于等于于 ,则取本次采样值;若大于,则取本次采样值;若大于 ,则仍取上次采样值,则仍取上次采样值作为本次采样值,即:作为本次采样值,即:11nnnnnnyyyyyyy微微型型计计算算机机控控制制技技术术计算机控制系统应用软件计
42、算机控制系统应用软件 应用这种方法时,关键是应用这种方法时,关键是 值的选择。过程值的选择。过程的动态持性决定其输出参数的变化速度,通常按的动态持性决定其输出参数的变化速度,通常按照参数可能的最大变化速度照参数可能的最大变化速度 及采样周期及采样周期T T来决来决定定 值。即:值。即:(7-27-2)maxVmaxVT 微微型型计计算算机机控控制制技技术术计算机控制系统应用软件计算机控制系统应用软件 (2 2)限速滤波)限速滤波 假定顺序采样时刻:假定顺序采样时刻:所采样的信号所采样的信号为:为:,则限速滤波的物理意义是:,则限速滤波的物理意义是:123ttt、1y23、y、y21221233
43、232332若 y-y,则以y 作为输入计算机的真实信号若 y-y,则y 不采用,但先保留,继续取采样值y若 y-y,则以y 作为输入计算机的真实信号y+y若 y-y,则以作为输入计算机的真实信号2在实际使用中,可用在实际使用中,可用 代替代替 ,这样,虽,这样,虽增加了运算量,但灵活性提高了。增加了运算量,但灵活性提高了。21322yyyy微微型型计计算算机机控控制制技技术术计算机控制系统应用软件计算机控制系统应用软件 取3y 限速滤波程序 计算21yy 计算32yy 计算21322yyyyDeltY 21yyDeltY?32yyDeltY?取322yy 取1y 取1y 返 回 N Y Y
44、N 微微型型计计算算机机控控制制技技术术计算机控制系统应用软件计算机控制系统应用软件程序清单为:程序清单为:/函数名:函数名:LimitFilterLimitFilter/入口参数:入口参数:*Y Y采样值数组首地址采样值数组首地址/出口参数:滤波值出口参数:滤波值/描述:设描述:设Y1Y1、Y2Y2、Y3Y3放在以放在以*Y Y为首地址的单元中,滤波结果放在为首地址的单元中,滤波结果放在temptemp中中#include math.h#include math.hdouble LimitFilter(doubledouble LimitFilter(double *Y)Y)double D
45、eltaY,tempdouble DeltaY,temp;DeltaY=(fabs(DeltaY=(fabs(*(Y+1)-(Y+1)-*(Y)+fabs(Y)+fabs(*(Y+2)-(Y+2)-*(Y+1)/2;/(Y+1)/2;/计算计算DeltaYDeltaYif(fabs(if(fabs(*(Y+1)-(Y+1)-*(Y)=DeltaY(Y)=DeltaY)/Y1)/Y1与与Y2Y2比较比较temp=temp=*(Y+1);(Y+1);else if(fabs(else if(fabs(*(Y+2)-(Y+2)-*(Y+1)=DeltaY(Y+1)=DeltaY)/Y3)/Y3与与Y
46、2Y2比较比较temp=(temp=(*(Y+2)+(Y+2)+*(Y+1)/2;(Y+1)/2;elseelsetemp=temp=*(Y+2);(Y+2);return temp;return temp;微微型型计计算算机机控控制制技技术术计算机控制系统应用软件计算机控制系统应用软件2.2.中位值滤波法中位值滤波法 t xi 0 x3 x1 x2 受干扰 a t xi 0 x3 x1受干扰 x2 受干扰 b 微微型型计计算算机机控控制制技技术术计算机控制系统应用软件计算机控制系统应用软件 t xi 0 x3 x1受干扰 x2 受干扰 c t xi 0 x3受干扰 x1受干扰 x2 受干扰
47、d 图7-8 中位值滤波效果讨论 各个采样值;虚线真实信号 a:一次干扰情况 b:两次异向干扰情况 c:两次同向干扰情况 d:三次干扰情况 微微型型计计算算机机控控制制技技术术计算机控制系统应用软件计算机控制系统应用软件 中位值滤波法就是对某一被测参数连续采样中位值滤波法就是对某一被测参数连续采样N N次次(一般(一般N N取奇数),然后取奇数),然后把把N N次采样值按大小排队,取中次采样值按大小排队,取中间值为本次采样值间值为本次采样值。中位值滤波能有效地克服因偶然因。中位值滤波能有效地克服因偶然因素引起的波动或采样器不稳定引起的误码等造成的脉冲素引起的波动或采样器不稳定引起的误码等造成的
48、脉冲干扰。对温度、液位等缓慢变化的被测参数采用此法能干扰。对温度、液位等缓慢变化的被测参数采用此法能收到良好的滤波效果,但对于流量、压力等快速变化的收到良好的滤波效果,但对于流量、压力等快速变化的参数一般不宜采用中位值滤波算法。参数一般不宜采用中位值滤波算法。微微型型计计算算机机控控制制技技术术计算机控制系统应用软件计算机控制系统应用软件 从图从图7-87-8可以看出可以看出N N3 3时采样的中位值滤波的滤波时采样的中位值滤波的滤波效果。如果三次采样中有一次发生干扰,则不管这个干效果。如果三次采样中有一次发生干扰,则不管这个干扰发生在什么位置,都将被删除掉(如图扰发生在什么位置,都将被删除掉
49、(如图7-87-8(a a)所)所示)。当三次采样中有两次发生脉冲干扰时,若这两次示)。当三次采样中有两次发生脉冲干扰时,若这两次干扰是异向作用(如图干扰是异向作用(如图7-87-8(b b)所示),则同样可以滤)所示),则同样可以滤掉这两次干扰,取得准确值;若这两次干扰是同向作用掉这两次干扰,取得准确值;若这两次干扰是同向作用(如图(如图7-87-8(c c)所示),或发生如图)所示),或发生如图7-87-8(d d)所示的三)所示的三次干扰时,中位值滤波便显得无能为力,以致会把错误次干扰时,中位值滤波便显得无能为力,以致会把错误信息送入计算机中。信息送入计算机中。微微型型计计算算机机控控制
50、制技技术术计算机控制系统应用软件计算机控制系统应用软件 中位值滤波程序设计的实质是,首先将中位值滤波程序设计的实质是,首先将N N个采样值个采样值从小到大或从大到小进行排队,然后再取中间值。从小到大或从大到小进行排队,然后再取中间值。N N个个数据按大小排序采用数据按大小排序采用“冒泡法冒泡法”(也叫大数沉底法),(也叫大数沉底法),其流程图如图其流程图如图7-97-9所示:所示:微微型型计计算算机机控控制制技技术术计算机控制系统应用软件计算机控制系统应用软件 中位值滤波程序 11?iN (1)/2)resultXN()()(1)(1)tX jX jX jX jt 返 回 N Y 图 7-9