《第6章 应用程序设计与实现技术》由会员分享,可在线阅读,更多相关《第6章 应用程序设计与实现技术(29页珍藏版)》请在金锄头文库上搜索。
1、LOGO 计算机控制技术计算机控制技术 COLLEGE OF ELECTRICAL ENGINEERING, ZHEJIANG UNIVERSITY第第6章章 应用程序设计与实现技术应用程序设计与实现技术 软件是工业控制机的程序系统,它可分为系软件是工业控制机的程序系统,它可分为系统软件、支持软件和应用软件三部分,各部分的统软件、支持软件和应用软件三部分,各部分的含义和功能已在第一章的含义和功能已在第一章的1.2.1节中作了介绍,节中作了介绍,本章只介绍应用软件有关的技术问题。所谓应用本章只介绍应用软件有关的技术问题。所谓应用软件就是面向控制系统本身的程序,它是根据系软件就是面向控制系统本身的
2、程序,它是根据系统的具体要求,由用户自己设计的。在进行计算统的具体要求,由用户自己设计的。在进行计算机控制系统设计时,大量的工作就是如何根据各机控制系统设计时,大量的工作就是如何根据各个生产过程的实际需要设计应用程序。个生产过程的实际需要设计应用程序。2006COLLEGE OF ELECTRICAL ENGINEERING, ZHEJIANG UNIVERSITY6.1 程序设计技术程序设计技术 一个完整的程序设计过程一个完整的程序设计过程可以用图可以用图6.1来说明。首先要分来说明。首先要分析用户的要求,这大约占整个析用户的要求,这大约占整个程序设计工作量的程序设计工作量的10%;然后;然
3、后编写程序的说明,这大约也占编写程序的说明,这大约也占10%;接着进行程序的设计与;接着进行程序的设计与编码几乎各占编码几乎各占15%;最后进行;最后进行测试和调试,这要花费整个程测试和调试,这要花费整个程序设计工作量的序设计工作量的40%以上。以上。 程序设计的首要一步,就程序设计的首要一步,就是要把程序承担的各项任务明是要把程序承担的各项任务明确地定义出来。设计者往往同确地定义出来。设计者往往同时在几个步骤上进行设计,如时在几个步骤上进行设计,如手编程序、查错、文件编制等手编程序、查错、文件编制等可能同时进行可能同时进行 2006COLLEGE OF ELECTRICAL ENGINEER
4、ING, ZHEJIANG UNIVERSITY6.1 程序设计技术程序设计技术 v6.1.1 模块化与结构化程序设计模块化与结构化程序设计v 1.模块化程序设计模块化程序设计 模块化程序设计的出发点是把一个复杂的系统软件,分解为若干个功能模块化程序设计的出发点是把一个复杂的系统软件,分解为若干个功能模块,每个模块执行单一的功能,并且具有单入口单出口结构。模块化程序模块,每个模块执行单一的功能,并且具有单入口单出口结构。模块化程序设计的传统方法是建立在把系统功能分解为程序过程或宏指令的基础上。但设计的传统方法是建立在把系统功能分解为程序过程或宏指令的基础上。但在很大的系统里,这种分解往往导致大
5、量过程,这些过程虽然容易理解,但在很大的系统里,这种分解往往导致大量过程,这些过程虽然容易理解,但却有复杂的内部依赖关系,因此带来一些问题不好解决。却有复杂的内部依赖关系,因此带来一些问题不好解决。v(1)自底向上模块化设计)自底向上模块化设计 首先对最低层模块进行编码、测试、和调试。这些模块正常工作后,就首先对最低层模块进行编码、测试、和调试。这些模块正常工作后,就可以用它们来开发较高层的模块。例如,在编主程序前,先开发各个子程序,可以用它们来开发较高层的模块。例如,在编主程序前,先开发各个子程序,然后,用一个测试用的主程序来测试每一个子程序。这种方法是汇编语言设然后,用一个测试用的主程序来
6、测试每一个子程序。这种方法是汇编语言设计常用的方法。计常用的方法。v(2)自顶向下模块化设计)自顶向下模块化设计 首先对最高层进行编码、测试和调试。为了测试这些最高层模块,可以首先对最高层进行编码、测试和调试。为了测试这些最高层模块,可以用用“结点结点”来代替还未编码的较低层模块,这些来代替还未编码的较低层模块,这些“结点结点”的输入和输出满足的输入和输出满足程序的说明部分要求,但功能少得多。该方法一般适合用高级语言来设计程程序的说明部分要求,但功能少得多。该方法一般适合用高级语言来设计程序。序。 在自底向上开发中,高层模块设计中的根本错误也许要很晚才能发现。在自底向上开发中,高层模块设计中的
7、根本错误也许要很晚才能发现。在自顶向下开发中,程序大小和性能往往要开发关键性的低层模块时才会表在自顶向下开发中,程序大小和性能往往要开发关键性的低层模块时才会表现出来。实际工作中,最好使用两种方法结合起来。先开发高层模块和关键现出来。实际工作中,最好使用两种方法结合起来。先开发高层模块和关键性低层模块,并用性低层模块,并用“结点结点”来代替以后开发的不太重要的模块。来代替以后开发的不太重要的模块。2006COLLEGE OF ELECTRICAL ENGINEERING, ZHEJIANG UNIVERSITY6.1 程序设计技术程序设计技术 v2.结构化程序设计结构化程序设计 1966的的B
8、ohmC和和JacopiniG 证明了只用三种基本的控制结构就能实证明了只用三种基本的控制结构就能实现任何单入口单出口的程序。这三种基本的控制结构是现任何单入口单出口的程序。这三种基本的控制结构是“顺序顺序”、“选择选择”、“循环循环”,它们的流程图分别为图,它们的流程图分别为图6.2中的(中的(a)、()、(b)、()、(c)。)。2006COLLEGE OF ELECTRICAL ENGINEERING, ZHEJIANG UNIVERSITY6.1 程序设计技术程序设计技术 实际上用顺序结构和循环结构(又称实际上用顺序结构和循环结构(又称DO-WHILE结结构)完全可以实现选择结构(又称
9、构)完全可以实现选择结构(又称IF-THEN-EILSE结结构),因此理论上最基本的控制结构只有两种。构),因此理论上最基本的控制结构只有两种。Bohm和和Jacopini的证明给结构化程序设计技术奠定了基础。的证明给结构化程序设计技术奠定了基础。 结构化程序设计是一种程序设计技术,它采用自顶向结构化程序设计是一种程序设计技术,它采用自顶向下逐步求精的设计方法和单入口单出口的控制结构。关于下逐步求精的设计方法和单入口单出口的控制结构。关于逐步求精方法逐步求精方法Niklaus Wirth曾作过如下说明:曾作过如下说明:“我们我们对付复杂问题的最重要的办法是抽象,因此,对一个复杂对付复杂问题的最
10、重要的办法是抽象,因此,对一个复杂的问题不应该立即用计算机指令、数字和逻辑符号来表示,的问题不应该立即用计算机指令、数字和逻辑符号来表示,而应该用较自然的抽象语句来表示,从而得出抽象程序。而应该用较自然的抽象语句来表示,从而得出抽象程序。抽象程序对程序作进一步的分解,并进入下一个抽象层次,抽象程序对程序作进一步的分解,并进入下一个抽象层次,这样的精细化过程一直进行下去,直到程序被计算机接受这样的精细化过程一直进行下去,直到程序被计算机接受为止。这时的程序可能是用某种高级语言或机器指令书写为止。这时的程序可能是用某种高级语言或机器指令书写的。的。”2006COLLEGE OF ELECTRICA
11、L ENGINEERING, ZHEJIANG UNIVERSITY6.1 程序设计技术程序设计技术 在总体设计阶段采用自顶向下逐步求精的方法,可以在总体设计阶段采用自顶向下逐步求精的方法,可以把一个复杂问题的解法分解和细化成一个由许多模块组成把一个复杂问题的解法分解和细化成一个由许多模块组成的层次结构的软件系统。在详细设计或编码阶段采用自顶的层次结构的软件系统。在详细设计或编码阶段采用自顶向下逐步求精的方法,可以把一个模块的功能逐步分解细向下逐步求精的方法,可以把一个模块的功能逐步分解细化为一系列具体的处理步骤或某种高级语言的语句。化为一系列具体的处理步骤或某种高级语言的语句。 程序设计通常
12、分为五个步骤,即问题定义、程序设程序设计通常分为五个步骤,即问题定义、程序设计、编码、调试、改进和再设计。问题定义阶段是要明确计、编码、调试、改进和再设计。问题定义阶段是要明确计算机完成哪些任务、执行什么程序,决定输入输出的形计算机完成哪些任务、执行什么程序,决定输入输出的形式,与接口硬件电路的连接配合以及出错处理方法;程序式,与接口硬件电路的连接配合以及出错处理方法;程序设计是利用程序对任务作出描述,使用的方法有模块程序设计是利用程序对任务作出描述,使用的方法有模块程序设计法和结构化程序设计法;编码是程序设计人员选取一设计法和结构化程序设计法;编码是程序设计人员选取一种适当的高级(或汇编)语
13、言,书写程序;调试就是利用种适当的高级(或汇编)语言,书写程序;调试就是利用各种测试方法检查程序的正确性;改进和再设计是根据调各种测试方法检查程序的正确性;改进和再设计是根据调试中的问题对原设计作修改,并对程序进行改进设计和补试中的问题对原设计作修改,并对程序进行改进设计和补充。充。2006COLLEGE OF ELECTRICAL ENGINEERING, ZHEJIANG UNIVERSITY6.1 程序设计技术程序设计技术 v6.1.2 高级语言与汇编语言混合编程高级语言与汇编语言混合编程v 1.汇编语言编程汇编语言编程 用汇编语言编写的程序,比用高级语言编写的程序执行速度要快,且要用汇
14、编语言编写的程序,比用高级语言编写的程序执行速度要快,且要求的硬件也少。以求的硬件也少。以PC总线工业控制机访问总线工业控制机访问I/O端口的编程为例,我们来说明端口的编程为例,我们来说明其程序实现的方法,其程序实现的方法,I/O端口的操作主要是输入指令端口的操作主要是输入指令IN(输入字节或字)和(输入字节或字)和输出指令输出指令OUT(输出字节或字)。(输出字节或字)。例如:例如: IN AX,210H MOV DX,220H IN AL,DX 第一条指令是将地址为第一条指令是将地址为210H的端口的的端口的16位二进制数据输入到累加器位二进制数据输入到累加器AX中,地二条和第三条指令是将
15、地址为中,地二条和第三条指令是将地址为220H的端口的的端口的8位二进制数输入到位二进制数输入到AL中。中。又如:又如: MOV DX,230H MOV AX,3435H OUT DX,AX MOV AL,26H OUT 240H,AL 第一条至第三条指令是将二字节数第一条至第三条指令是将二字节数3435H输出到端口输出到端口230H的外设中,的外设中,第四条和第五条指令是将单字节数第四条和第五条指令是将单字节数26H输出到端口输出到端口240H的外设中。的外设中。2006COLLEGE OF ELECTRICAL ENGINEERING, ZHEJIANG UNIVERSITY6.1 程序设
16、计技术程序设计技术 v2.高级语言编程高级语言编程 对于对于PC总线工业控制机,我们以总线工业控制机,我们以Microsoft C/C+7.0为例为例来说明其访问来说明其访问I/O端口的编程。端口的编程。Microsoft C/C+7.0通常通常 有库有库函数,允许直接访问函数,允许直接访问I/O端口,头文件端口,头文件中定义了中定义了I/O端口例程。端口例程。_inp和和_outp分别从指定端口读一个字节数据和向指定分别从指定端口读一个字节数据和向指定端口写一个字节数据,端口写一个字节数据,_inpw和和_outpw分别从指定端口读一个字分别从指定端口读一个字数据和向指定端口写一个字数据。数
17、据和向指定端口写一个字数据。例:例: A1=_inpw(0x210) A2=_inp(0x220) 第一条指令表示将端口第一条指令表示将端口210H的的16位二进制数(一个字)输入位二进制数(一个字)输入给变量给变量A1,第二条指令表示将端口,第二条指令表示将端口220H的的8位二进制数(一个字节)位二进制数(一个字节)输入给变量输入给变量A2。在。在C语言中,语言中,0x起头的是起头的是16进制数。进制数。又如:又如: _outpw(0x230,0x3435) _outp(0x240,0x26) 第一条指令表示二字节数第一条指令表示二字节数3435H输出到端口输出到端口230H中,第二条中,
18、第二条指令表示将单字节数指令表示将单字节数26H输出到端口输出到端口240H中。详细内容请参阅中。详细内容请参阅Microsoft C/C+7.0方面的资料。方面的资料。2006COLLEGE OF ELECTRICAL ENGINEERING, ZHEJIANG UNIVERSITY6.1 程序设计技术程序设计技术 v3.高级语言与汇编语言混合编程高级语言与汇编语言混合编程 如何发挥汇编语言实时功能强,而高级语言运算能力强的优点,便成为计算机控如何发挥汇编语言实时功能强,而高级语言运算能力强的优点,便成为计算机控制系统软件设计中一个使人感兴趣的问题。实际使用中,常常采用高级语言与汇编语制系统
19、软件设计中一个使人感兴趣的问题。实际使用中,常常采用高级语言与汇编语言混合编程的方法,即用高级语言编写计算、图形绘制、显示、打印程序等,用汇编言混合编程的方法,即用高级语言编写计算、图形绘制、显示、打印程序等,用汇编语言编写时钟管理、中断管理和输入输出程序等。语言编写时钟管理、中断管理和输入输出程序等。v(1)内联的汇编环境)内联的汇编环境 内联的汇编语句可以直接出现在内联的汇编语句可以直接出现在Microsoft C/C+程序中,因此,对这些语句程序中,因此,对这些语句来说,来说,C语言程序是外部环境。在正确地使用内联汇编语言之前,必须知道两件事情。语言程序是外部环境。在正确地使用内联汇编语
20、言之前,必须知道两件事情。第一,必须知道如何编译一个包括内联汇编语言的第一,必须知道如何编译一个包括内联汇编语言的C语言程序。第二,必须知道在内联语言程序。第二,必须知道在内联语句中,什么事能做和什么事不能做。在语句中,什么事能做和什么事不能做。在C/C+源程序中,可以直接把汇编程序的语源程序中,可以直接把汇编程序的语句插入特殊的句插入特殊的_asm语句中。语句中。Microsoft C/C+编译程序有一个特殊的内联汇编程编译程序有一个特殊的内联汇编程序,它允许在序,它允许在C语言代码中间写汇编语言例程,内联汇编程序是语言代码中间写汇编语言例程,内联汇编程序是Microsoft 汇编功能汇编功
21、能的子集。的子集。v(2)_asm关键字关键字 为了直接在为了直接在C语言程序中插入内联汇编语句,要在语句的开头使用语言程序中插入内联汇编语句,要在语句的开头使用_asm关键字。关键字。下面给出几种不同方式的下面给出几种不同方式的_asm语句:语句:v _asm assembly statementv _asm assembly statement _asm assembly statementv _asmv Assembly statement; assemblt statementv v Assembly statementv 2006COLLEGE OF ELECTRICAL ENGIN
22、EERING, ZHEJIANG UNIVERSITY6.1 程序设计技术程序设计技术 v(3) C语言和汇编语言混合编程语言和汇编语言混合编程 当在程序中写内联汇编语句中,对存储模式和指针的空间大小必须加倍小心。当当在程序中写内联汇编语句中,对存储模式和指针的空间大小必须加倍小心。当混合使用混合使用C语言和汇编程序时,必须时刻考虑到程序段的安排和指针空间大小。下面给语言和汇编程序时,必须时刻考虑到程序段的安排和指针空间大小。下面给出一段程序例子,说明存储模型的依赖关系和出一段程序例子,说明存储模型的依赖关系和_asm关键字的使用。关键字的使用。v #includev #includev Vo
23、id increment(int*arg)v v _asmv Mov si,bp+4v Mov ax,siv Inc axv Mov si,axv v Void main()v v Int j=3;v Printf(“Initial value was %d/n”,j);v Increment(&j);v Printf(“New value is %d/n”,j);v 2006COLLEGE OF ELECTRICAL ENGINEERING, ZHEJIANG UNIVERSITY6.1 程序设计技术程序设计技术 函数函数increment的作用是给作为参数传递的增量加的作用是给作为参数传递
24、的增量加1。因为参数。因为参数arg是一个指针值,所以汇编代码必须把地是一个指针值,所以汇编代码必须把地址值装载到址值装载到si寄存器上,并且接着把寄存器上,并且接着把si指向的值装入指向的值装入ax中。当一个函数被调用时,调用例程把函数的参数压中。当一个函数被调用时,调用例程把函数的参数压入堆栈,汇编语言调用指令,接着把返回的地址压入堆栈。入堆栈,汇编语言调用指令,接着把返回的地址压入堆栈。 在进入一个汇编语言例程之处,在进入一个汇编语言例程之处,BP寄存器指向堆栈寄存器指向堆栈上名为上名为stack frame(栈结构)的域。汇编代码必须通(栈结构)的域。汇编代码必须通过用过用BP寄存器的
25、偏移字节,来访问函数参数,从而取得寄存器的偏移字节,来访问函数参数,从而取得对函数参数的访问。因此,语句:对函数参数的访问。因此,语句:mov si,bp+4 把存储地址把存储地址bp+4的值拷贝给的值拷贝给si。地址是在。地址是在si中,它中,它用来访问参数的值。这个值被增加后,接着存回到增量的用来访问参数的值。这个值被增加后,接着存回到增量的地址上去。标记地址上去。标记bp+4只用一个只用一个near过程的汇编例过程的汇编例行程序。对于一个行程序。对于一个far过程,则使用过程,则使用bp+6。2006COLLEGE OF ELECTRICAL ENGINEERING, ZHEJIANG
26、UNIVERSITY6.4 数字控制器的工程实现v 数字控制器的算法程序可被所有的控制回路公用,只是各控制回路数字控制器的算法程序可被所有的控制回路公用,只是各控制回路提供的原始数据不同。因此,必须为每个回路提供一段内存数据区提供的原始数据不同。因此,必须为每个回路提供一段内存数据区(即线性表),以便存放参数。既然数字控制器是公共子程序,那就(即线性表),以便存放参数。既然数字控制器是公共子程序,那就应该在设计时,不许考虑各种工程实际问题,并含有多种功能,以便应该在设计时,不许考虑各种工程实际问题,并含有多种功能,以便用户选择。数字控制器算法的工程实现可分为用户选择。数字控制器算法的工程实现可
27、分为6部分,如图部分,如图6.18所示。所示。另外,为了便于数字控制器的操作显示,通常给每个数字控制器配置另外,为了便于数字控制器的操作显示,通常给每个数字控制器配置一个回路操作显示器,它与模拟的调节器的面板操作显示相类似。下一个回路操作显示器,它与模拟的调节器的面板操作显示相类似。下面以数字面以数字PID控制器为例来说明数字控制器的工程实现。控制器为例来说明数字控制器的工程实现。2006COLLEGE OF ELECTRICAL ENGINEERING, ZHEJIANG UNIVERSITY6.4 数字控制器的工程实现v6.4.1给定值和被控量处理给定值和被控量处理v1.给定值处理给定值处
28、理v给定值处理包括选择给定值给定值处理包括选择给定值SV和给定值变化率限制和给定值变化率限制SR两部分,如图两部分,如图6.19所示。通过选择软开关所示。通过选择软开关CL/CR,可以构成内给定状态和外给定可以构成内给定状态和外给定状态;通过选择软开关状态;通过选择软开关CAS/SCC,可以构成串级控制或可以构成串级控制或SCC控制。控制。v(1)内给定状态)内给定状态v当软开关当软开关CL/CR切向切向CL位置时,选择操作员设置的给定值位置时,选择操作员设置的给定值SVL。这这时系统处于单回路控制的内给定状态,利用给定值键可以改变给定值。时系统处于单回路控制的内给定状态,利用给定值键可以改变
29、给定值。2006COLLEGE OF ELECTRICAL ENGINEERING, ZHEJIANG UNIVERSITY6.4 数字控制器的工程实现v(2)外给定状态)外给定状态v当软开关当软开关CL/CR切向切向CR位置时,给定值来自上位计算机、主回路或运算模位置时,给定值来自上位计算机、主回路或运算模块。这时系统处于外给定状态。在此状态下,可以实现以下两种控制方式。块。这时系统处于外给定状态。在此状态下,可以实现以下两种控制方式。v 1.SCC控制控制v当软开关当软开关CAS/SCC切向切向SCC位置时,接受来自上位计算机的给定值位置时,接受来自上位计算机的给定值SVS,以便实现二级计
30、算机控制。以便实现二级计算机控制。v 2.串级控制串级控制v当软开关当软开关CAS/SCC切向切向CAS位置时,给定值位置时,给定值SVS来自主调节模块,实现串来自主调节模块,实现串级控制。级控制。v(3)给定值变化率限制)给定值变化率限制v为了减少给定值突变对控制系统的扰动,防止比例、微分饱和,以实现平稳为了减少给定值突变对控制系统的扰动,防止比例、微分饱和,以实现平稳控制,需要对给定值的变化率控制,需要对给定值的变化率SR加以限制。变化率的选取要适中,过小会使加以限制。变化率的选取要适中,过小会使响应变慢,过大则达不到限制的目的。响应变慢,过大则达不到限制的目的。v综上所述,在给定值处理框
31、图综上所述,在给定值处理框图6.19中,共具有中,共具有3个输入量个输入量(SVL,SVC,SVS),2个输出量(个输出量(SV,CSV),2个开关量个开关量(CL/CR,CAS/SCC),1个变化量(个变化量(SR)。)。为了便于为了便于PID控制程序调用控制程序调用这些量,需要给每个这些量,需要给每个PID控制模块提供一段内存数据区,来存储以上变量。控制模块提供一段内存数据区,来存储以上变量。2006COLLEGE OF ELECTRICAL ENGINEERING, ZHEJIANG UNIVERSITY6.4 数字控制器的工程实现v2.被控量处理被控量处理v为了安全运行,需要对被控量为
32、了安全运行,需要对被控量PV进行上下限报警处理,其原理图如图进行上下限报警处理,其原理图如图6.20所示,即所示,即v 当当PVPH(上限值)时,则上限报警状态(上限值)时,则上限报警状态(PHA)为为“1”;v 当当PVDL时,则偏差报警状态时,则偏差报警状态DLA为为“1”。v3.输入补偿输入补偿v 根据输入补偿方式根据输入补偿方式ICM状态,决定偏差状态,决定偏差DVC与输入补偿量与输入补偿量ICV之间的关系,之间的关系,即即v 当当ICM0,代表无补偿,此时代表无补偿,此时CDV=DVC;v 当当ICM=1,代表加补偿,此时代表加补偿,此时CDV=DVC+ICV;v 当当ICM=2,代
33、表减补偿,此时代表减补偿,此时CDV=DVC-ICV;v 当当ICM=4,代表置换补偿,此时代表置换补偿,此时CDV=ICV。v利用加,减输入补偿,可以分别实现前馈控制和纯滞后补偿(利用加,减输入补偿,可以分别实现前馈控制和纯滞后补偿(Smith)控制。控制。2006COLLEGE OF ELECTRICAL ENGINEERING, ZHEJIANG UNIVERSITY6.4 数字控制器的工程实现v4.非线性特性非线性特性v为了实现非线性为了实现非线性PID控制或带死区的控制或带死区的PID控制,设置了非线性区控制,设置了非线性区-A至至+A和和非线性增益非线性增益K,非线性特性如图非线性
34、特性如图6.22所示。即所示。即v 当当K=0时,则为带死区的时,则为带死区的PID控制;控制;v 当当0K1时,则为非线性时,则为非线性PID控制;控制;v 当当K=1时,则为正常的时,则为正常的PID控制。控制。v偏差处理数据区共存放偏差处理数据区共存放1个输入补偿量个输入补偿量ICV,2个输出量个输出量DLA和和CDV,2个状个状态量态量D/R和和ICM,以及以及4个参数个参数DL,-A,+A和和K。2006COLLEGE OF ELECTRICAL ENGINEERING, ZHEJIANG UNIVERSITY6.4 数字控制器的工程实现v6.4.3 控制算法的实现控制算法的实现v
35、在自动状态下,需要进行控制计算,即按照各种控制算法的差分方程,计算控制量在自动状态下,需要进行控制计算,即按照各种控制算法的差分方程,计算控制量U,并进行上,下限限幅处理,如图并进行上,下限限幅处理,如图6.23所示。以所示。以PID控制算法为例,当软开关控制算法为例,当软开关DV/PV切向切向DV位置时,则选用偏差微分方式;当软开关位置时,则选用偏差微分方式;当软开关DV/PV切向切向PV位置时,则位置时,则选用测量(即被控量)微分方式。选用测量(即被控量)微分方式。v 在在PID计算数据区,不仅要存放计算数据区,不仅要存放PID参数(参数(KP或或,TI,TD)和采样周期和采样周期T,还要
36、还要存放微分方式存放微分方式DV/PV,积分分离值积分分离值,控制量上限限值控制量上限限值MH和下限限值和下限限值ML,以及控制以及控制量量UK 。为了进行递推运算,还应保存历史数据,如为了进行递推运算,还应保存历史数据,如e(k-1),e(k-2)和和u(k-1)。v6.4.4 控制量处理控制量处理v 一般情况下,在输出控制量一般情况下,在输出控制量UK以前,还应经过图以前,还应经过图6.24所示的各项处理和判断,以所示的各项处理和判断,以便扩展控制功能,实现安全平稳操作。便扩展控制功能,实现安全平稳操作。2006COLLEGE OF ELECTRICAL ENGINEERING, ZHEJ
37、IANG UNIVERSITY6.4 数字控制器的工程实现v1.输出补偿输出补偿v 根据输出补偿方根据输出补偿方OCM的状态,决定控制量的状态,决定控制量UK与输出补偿量与输出补偿量OCV之间的关系,之间的关系,v即即 当当OCM=0,代表无补偿,此时代表无补偿,此时UC=UK;v 当当OCM=1,代表加补偿,此时代表加补偿,此时UC=UK+OCV;v 当当OCM=2,代表减补偿,此时代表减补偿,此时UC=UK-OCV;v 当当OCM=3,代表置换补偿,此时代表置换补偿,此时UC=OCV。v 利用输出和输入补偿,可以扩大实际应用范围,灵活组成复杂的数字控制器,以便利用输出和输入补偿,可以扩大实
38、际应用范围,灵活组成复杂的数字控制器,以便组成复杂的自动控制系统。组成复杂的自动控制系统。v2.变化率限制变化率限制v 为了实现平稳操作,需要对控制量的变化率为了实现平稳操作,需要对控制量的变化率MR加以限制。变化率的选取要适中,过加以限制。变化率的选取要适中,过小会使操作缓慢,过大则达不到限制的目的。小会使操作缓慢,过大则达不到限制的目的。v3.输出保持输出保持v 当软开关当软开关FH/NH切向切向NH位置时,现时刻的控制量位置时,现时刻的控制量u(k)等于前一时刻的控制量等于前一时刻的控制量u(k-1),也就是说,输出控制量保持不变。当软开关也就是说,输出控制量保持不变。当软开关FH/NH
39、切向切向FH位置时,又恢位置时,又恢复正常输出方式。软开关复正常输出方式。软开关FH/NH状态一般来自系统安全报警开关。状态一般来自系统安全报警开关。v4.安全输出安全输出v 当软开关当软开关FS/NS切向切向NS位置时,现时刻的控制量等于预置的安全输出量位置时,现时刻的控制量等于预置的安全输出量MS。当软当软开关开关FS/NS切向切向FS位置时,又恢复正常输出方式。软开关位置时,又恢复正常输出方式。软开关FS/NS状态一般来自系统状态一般来自系统安全报警开关。安全报警开关。v 控制量处理数据区需要存放输出补偿量控制量处理数据区需要存放输出补偿量OCV和补偿方式和补偿方式OCM,变化率限制值变
40、化率限制值MR,软开关软开关FH/NH和和FS/NS,安全输出量安全输出量MS,以及控制量以及控制量CMV。2006COLLEGE OF ELECTRICAL ENGINEERING, ZHEJIANG UNIVERSITY6.6 软件抗干扰技术软件抗干扰技术 为了提高工业控制系统的可靠性,仅靠硬件抗干扰措施是不够的,需要为了提高工业控制系统的可靠性,仅靠硬件抗干扰措施是不够的,需要进一步借助于软件措施来克服某些干扰。在计算机控制系统中,如能正确地进一步借助于软件措施来克服某些干扰。在计算机控制系统中,如能正确地采用软件抗干扰措施,与硬件抗干扰措施构成双道抗干扰防线,无疑将大大采用软件抗干扰措
41、施,与硬件抗干扰措施构成双道抗干扰防线,无疑将大大提高工业控制系统的可靠性。经常采用的软件抗干扰技术是数字滤波技术、提高工业控制系统的可靠性。经常采用的软件抗干扰技术是数字滤波技术、开关量的软件抗干扰技术、指令冗余技术、软件陷阱技术等。下面分别加以开关量的软件抗干扰技术、指令冗余技术、软件陷阱技术等。下面分别加以介绍。介绍。v6.6.1 数字滤波技术数字滤波技术 一般微机应用系统的模拟输入信号中,均含有种种噪音和干扰,它们来一般微机应用系统的模拟输入信号中,均含有种种噪音和干扰,它们来自被测信号源本身、传感器、外界干扰等。为了进行准确测量和控制,必须自被测信号源本身、传感器、外界干扰等。为了进
42、行准确测量和控制,必须消除被测信号中的噪音和干扰。噪音有两大类:一类为周期性的;另一类为消除被测信号中的噪音和干扰。噪音有两大类:一类为周期性的;另一类为不规则的。前者的典型代表为不规则的。前者的典型代表为50HZ的工频干扰。对于这类信号,采用积分的工频干扰。对于这类信号,采用积分时间等于时间等于20ms的整数倍的双积分的整数倍的双积分A/D转换器,可有效地消除其影响。后者转换器,可有效地消除其影响。后者为随机信号,它不是周期信号。对于随机干扰,我们可以用数字滤波方法予为随机信号,它不是周期信号。对于随机干扰,我们可以用数字滤波方法予以削弱或滤除。所谓数字滤波,就是通过一定的计算或判断程序减少
43、干扰在以削弱或滤除。所谓数字滤波,就是通过一定的计算或判断程序减少干扰在有用信号中的比重。故实质上它是一种程序滤波。数字滤波克服了模拟滤波有用信号中的比重。故实质上它是一种程序滤波。数字滤波克服了模拟滤波器的不足,它与模拟滤波器相比,有以下几个优点:器的不足,它与模拟滤波器相比,有以下几个优点:v数字滤波是用程序实现的,不需要增加硬设备,所以可靠性高,稳定性好。数字滤波是用程序实现的,不需要增加硬设备,所以可靠性高,稳定性好。v数字滤波可以对频率很低(如数字滤波可以对频率很低(如0.01HZ)的信号实现滤波,克服了模拟滤波)的信号实现滤波,克服了模拟滤波器的缺陷。器的缺陷。v数字滤波器可以根据
44、信号的不同,采用不同的滤波方法或滤波参数,具有灵数字滤波器可以根据信号的不同,采用不同的滤波方法或滤波参数,具有灵活、方便、功能强的特点。活、方便、功能强的特点。数字滤波在微机应用系统中得到了广泛的应用。数字滤波在微机应用系统中得到了广泛的应用。2006COLLEGE OF ELECTRICAL ENGINEERING, ZHEJIANG UNIVERSITY6.6 软件抗干扰技术软件抗干扰技术 v1.算术平均值法算术平均值法 第术平均值法是要按输入的第术平均值法是要按输入的N个采样为数据个采样为数据xi(i=1N),寻找这样一个,寻找这样一个y,使,使y与与各采样值间的偏差的平方和为最小,使
45、:各采样值间的偏差的平方和为最小,使: (6.6.1) 由一元函数求极值原理可得:由一元函数求极值原理可得: (6.6.2) 这时,可满足式(这时,可满足式(6.6.1)。式()。式(6.6.2)即是算术平均值的算法。)即是算术平均值的算法。 设第二次测量的测量值包括信号成分设第二次测量的测量值包括信号成分si和噪音成分和噪音成分ci,则进行,则进行N次测量信号成分之次测量信号成分之和为:和为: (6.6.3) 噪音的强度是用均方根来衡量的,当噪音为随机信号时,进行噪音的强度是用均方根来衡量的,当噪音为随机信号时,进行N次测量的噪音强度次测量的噪音强度之和为:之和为: (6.6.4) 上二式中
46、,上二式中,s、C分别表示进行分别表示进行N次测量后信号和噪音的平均幅度。次测量后信号和噪音的平均幅度。 这样对这样对N次测量进行算术平均后的信噪比为:次测量进行算术平均后的信噪比为: (6.6.5) 式中式中S/C是求算术平均值前的信噪比。因此采用算术平均值法后,使信噪比提高是求算术平均值前的信噪比。因此采用算术平均值法后,使信噪比提高了了N1/2倍。倍。 算术平均值法使用于对一般的具有随机干扰信号的滤波。它特别适于信号本身在算术平均值法使用于对一般的具有随机干扰信号的滤波。它特别适于信号本身在某一数值范围附近作上下波动的情况,如流量,液平面等信号的测量。由上式可知,某一数值范围附近作上下波
47、动的情况,如流量,液平面等信号的测量。由上式可知,算术平均值法对信号的平滑滤波程度完全取决于算术平均值法对信号的平滑滤波程度完全取决于N。当。当N较大时,平滑度高,但灵敏度较大时,平滑度高,但灵敏度度低,即外界信号的变化对测量计算结果度低,即外界信号的变化对测量计算结果y的影响小;当的影响小;当N较小时,平滑度低,但灵敏较小时,平滑度低,但灵敏度高。应按具体情况选取度高。应按具体情况选取N,如对一般流量测量,可取,如对一般流量测量,可取N=816;对压力等次量,可;对压力等次量,可取取N=4 2006COLLEGE OF ELECTRICAL ENGINEERING, ZHEJIANG UNI
48、VERSITY6.6 软件抗干扰技术软件抗干扰技术 v2.中位值滤波法中位值滤波法 中位值滤波法的原理是对被测参数连续采样中位值滤波法的原理是对被测参数连续采样m次(次(m3)且是奇数,)且是奇数,并按大小顺序排列;再取中间值作为本次采样的有效数据。中位值滤波法和并按大小顺序排列;再取中间值作为本次采样的有效数据。中位值滤波法和平均值滤波法结合起来使用,滤波效果会更好。即在每个采样周期,先用中平均值滤波法结合起来使用,滤波效果会更好。即在每个采样周期,先用中位值滤波法得到位值滤波法得到m个滤波值,再对这个滤波值,再对这m个滤波值进行算术平均,得到可用的个滤波值进行算术平均,得到可用的被测参数。
49、被测参数。v3.限幅滤波法限幅滤波法 由于大的随机干扰或采样器的不稳定,使得采样数据偏离实际值太远,由于大的随机干扰或采样器的不稳定,使得采样数据偏离实际值太远,为此采用上、下限限幅,即为此采用上、下限限幅,即当当y(n)yH时,则取时,则取y(n)=yH(上限值上限值);当当y(n)yL时,则取时,则取y(n)=yL(下限值下限值);当当yLy(n) y0时,则取时,则取y(n)=y(n-1)。其中其中y0为两次相邻采样值之差的可能最大变化量。为两次相邻采样值之差的可能最大变化量。y0值的选取,取决值的选取,取决于采样周期于采样周期T及被测参数及被测参数y应有的正常变化率。因此,一定要按照实
50、际情况来应有的正常变化率。因此,一定要按照实际情况来确定确定y0、yH及及yL,否则,非但达不到滤波效果,反而会降低控制品质。,否则,非但达不到滤波效果,反而会降低控制品质。2006COLLEGE OF ELECTRICAL ENGINEERING, ZHEJIANG UNIVERSITY6.6 软件抗干扰技术软件抗干扰技术 v4.惯性滤波法惯性滤波法 常用的常用的RC滤波器的传递函数是:滤波器的传递函数是: (6.6.6) 其中其中Tf=RC,它的滤波效果取决于滤波时间常数,它的滤波效果取决于滤波时间常数Tf。因此,。因此,RC滤波器不可能对极低频率的信号进行滤波。为此,人们模仿上式做成滤波
51、器不可能对极低频率的信号进行滤波。为此,人们模仿上式做成一阶惯性滤波器亦称低通滤波器。一阶惯性滤波器亦称低通滤波器。即将式(即将式(6.6.6)写成差分方程:)写成差分方程: (6.6.7)稍加整理得:稍加整理得: (6.6.8)其中,其中, 称为滤波系数,且称为滤波系数,且0a1,Ts为采样周期,为采样周期,Tf为滤波器时间常数。为滤波器时间常数。 根据惯性滤波器的频率特性,若滤波系数根据惯性滤波器的频率特性,若滤波系数a越大,则带宽越窄,越大,则带宽越窄,滤波频率也越低。因此,需要根据实际情况,适当选取滤波频率也越低。因此,需要根据实际情况,适当选取a值,使得被值,使得被测参数既不出现明显
52、的纹波,反应又不太迟缓。测参数既不出现明显的纹波,反应又不太迟缓。 平均值滤波法适用于周期性干扰,中位值滤波法和限幅滤波法适平均值滤波法适用于周期性干扰,中位值滤波法和限幅滤波法适用于偶然较大的被控对象。如果同时采用几种滤波方法,一般先用中用于偶然较大的被控对象。如果同时采用几种滤波方法,一般先用中位值滤波法或限幅滤波法,然后再用平均值滤波法。位值滤波法或限幅滤波法,然后再用平均值滤波法。2006COLLEGE OF ELECTRICAL ENGINEERING, ZHEJIANG UNIVERSITY6.6 软件抗干扰技术软件抗干扰技术 v6.6.2 开关量的软件抗干扰技术开关量的软件抗干扰
53、技术v1.开关量(数字量)信号输入抗干扰措施开关量(数字量)信号输入抗干扰措施 干扰信号多呈毛刺状,作用时间短,利用这一特点,我们在采集某一开干扰信号多呈毛刺状,作用时间短,利用这一特点,我们在采集某一开关量信号时,可多次重复采集,直到连续两次或两次以上结果完全一致方为关量信号时,可多次重复采集,直到连续两次或两次以上结果完全一致方为有效。若多次采样后,信号总是变化不定,可停止采集,给出报警信号。有效。若多次采样后,信号总是变化不定,可停止采集,给出报警信号。 在满足实时性要求的前提下,如果在各次采集数字信号之间接入一段延在满足实时性要求的前提下,如果在各次采集数字信号之间接入一段延时,效果会
54、好一些,就能对抗较宽的干扰。时,效果会好一些,就能对抗较宽的干扰。v2.开关量(数字量)信号输出抗干扰措施开关量(数字量)信号输出抗干扰措施 输出设备是电位控制型还是同步锁存型,对干扰的敏感性相差较大。前输出设备是电位控制型还是同步锁存型,对干扰的敏感性相差较大。前者有良好的抗者有良好的抗“毛刺毛刺”干扰能力,后者不耐干扰,当锁存线上出现干扰时,干扰能力,后者不耐干扰,当锁存线上出现干扰时,它就会盲目锁存当前的数据,也不管此时数据是否有效。输出设备的惯性它就会盲目锁存当前的数据,也不管此时数据是否有效。输出设备的惯性(响应速度)与干扰的耐受能力。惯性小的输出设备(如通信口、显示设备)(响应速度
55、)与干扰的耐受能力。惯性小的输出设备(如通信口、显示设备)耐受能力就小一些。在软件上,最为有效的方法就是重复输出同一个数据。耐受能力就小一些。在软件上,最为有效的方法就是重复输出同一个数据。只要有可能,其重复周期尽可能短些。外设设备接受到一个被干扰的错误信只要有可能,其重复周期尽可能短些。外设设备接受到一个被干扰的错误信息后,还来不及作出有效的反应,一个正确的输出信息又来到了,就可及时息后,还来不及作出有效的反应,一个正确的输出信息又来到了,就可及时防止错误动作的产生。另外,各类数据锁存器尽可能和防止错误动作的产生。另外,各类数据锁存器尽可能和CPU安装在同一电路安装在同一电路板上,使传输线上
56、传送的都是已锁存好的电位控制信号,对于重要的输出设板上,使传输线上传送的都是已锁存好的电位控制信号,对于重要的输出设备,最好建立检测通道,备,最好建立检测通道,CPU可以检测通道来确定输出结果的正确性。可以检测通道来确定输出结果的正确性。2006COLLEGE OF ELECTRICAL ENGINEERING, ZHEJIANG UNIVERSITY6.6 软件抗干扰技术软件抗干扰技术 v6.6.3 指令冗余技术指令冗余技术 当当CPU受到干扰后,往往将一些操作数当作指令码受到干扰后,往往将一些操作数当作指令码来执行,引起程序混乱。当程序弹飞到某一单字节指令上来执行,引起程序混乱。当程序弹飞
57、到某一单字节指令上时,便自动纳入正轨。当弹飞到三字节指令上时,因它有时,便自动纳入正轨。当弹飞到三字节指令上时,因它有两个操作数,继续出错的机会就更大。因此,我们应多采两个操作数,继续出错的机会就更大。因此,我们应多采用单字节指令,并在关键的地方人为地插入一些单字节指用单字节指令,并在关键的地方人为地插入一些单字节指令(令(NOP)或将有效单字节指令重复书写,这便是指令)或将有效单字节指令重复书写,这便是指令冗余。指令冗余无疑会降低系统的效率,但在绝大多数情冗余。指令冗余无疑会降低系统的效率,但在绝大多数情况下,况下,CPU还不至于忙到不能多执行几条指令的程度,故还不至于忙到不能多执行几条指令
58、的程度,故这种方法还是被广泛采用。这种方法还是被广泛采用。 在一些对程序流向起决定作用的指令之前插入两条在一些对程序流向起决定作用的指令之前插入两条NOP指令,以保证弹飞的程度迅速纳入正确轨道。在某指令,以保证弹飞的程度迅速纳入正确轨道。在某些对系统工作状态重要的指令前也可插入两条些对系统工作状态重要的指令前也可插入两条NOP指令,指令,以保证正确执行。指令冗余技术可以减少程序弹飞的次数,以保证正确执行。指令冗余技术可以减少程序弹飞的次数,使其很快纳入程序轨道,但这并不能保证在失控期间不赶使其很快纳入程序轨道,但这并不能保证在失控期间不赶坏事,更不能保证程序纳入正常轨道后就太平无事了,解坏事,
59、更不能保证程序纳入正常轨道后就太平无事了,解决这个问题必须采用软件容错技术。决这个问题必须采用软件容错技术。2006COLLEGE OF ELECTRICAL ENGINEERING, ZHEJIANG UNIVERSITY6.6 软件抗干扰技术软件抗干扰技术 v6.6.4 软件陷阱技术软件陷阱技术 指令冗余使弹飞的程序安定下来是有条件的,首先,弹飞的程序指令冗余使弹飞的程序安定下来是有条件的,首先,弹飞的程序必须落到程序区,其次,必须执行到冗余指令。所谓软件陷阱,就是必须落到程序区,其次,必须执行到冗余指令。所谓软件陷阱,就是一条引导指令,强行将捕获的程序引向一个指定的地址,在那里有一一条引
60、导指令,强行将捕获的程序引向一个指定的地址,在那里有一段专门对程序出错进行处理的程序。如果我们把这段程序的入口标号段专门对程序出错进行处理的程序。如果我们把这段程序的入口标号记为记为ERR的话,软件陷阱即为一条无条件转移指令,为了加强其捕捉的话,软件陷阱即为一条无条件转移指令,为了加强其捕捉效果,一般还在它前面加两条效果,一般还在它前面加两条NOP指令,因此真正的软件陷阱由指令,因此真正的软件陷阱由3条条指令构成:指令构成: NOP NOP JMP ERR软件陷阱安排在以下四种地方:软件陷阱安排在以下四种地方: (1)未使用的中断向量区。)未使用的中断向量区。 (2)未使用的大片)未使用的大片
61、ROM空间。空间。 (3)表格。)表格。 (4)程序区。)程序区。 由于软件陷阱都安排在正常程序执行不到的地方,故不影响程序由于软件陷阱都安排在正常程序执行不到的地方,故不影响程序执行效率,在当前执行效率,在当前EPROM容量不成问题的条件下,还是多多益善。容量不成问题的条件下,还是多多益善。2006COLLEGE OF ELECTRICAL ENGINEERING, ZHEJIANG UNIVERSITY6.6 软件抗干扰技术软件抗干扰技术 习习 题题v6.1 什么是模块化程序设计和结构化程序设计?什么是模块化程序设计和结构化程序设计?程序设计通常分为哪程序设计通常分为哪5个步骤?个步骤?2006COLLEGE OF ELECTRICAL ENGINEERING, ZHEJIANG UNIVERSITYLOGOCOLLEGE OF ELECTRICAL ENGINEERING, ZHEJIANG UNIVERSITY