第七章计算机控制系统软件设计7.1程序设计技术7.2人机接口(HMI/SCADA)技术7.3测量数据预处理技术7.4数字控制器的工程实现7.5系统的有限字长数值问题7.6软件抗干扰技术软件是工业控制机的程序系统,它可分为系统软件和应用软件。所谓应用软件就是面向控制系统本身的程序,它是根据系统的具体要求,由用户自己设计的。7.1程序设计技术7.1.1模块化与结构化程序设计7.1.2面向过程与面向对象的程序设计7.1.3高级语言I/O控制台编程7.1.1模块化与结构化程序设计1.模块化程序设计2.结构化程序设计一个完整的程序设计过程可以用左图来说明。首先要分析用户的要求,这大约占整个程序设计工作量的10%;然后编写程序的说明,这大约也占10%;接着进行程序的设计与编码,这大约占30%左右,其中设计与编码几乎各占15%;最后进行测试和调试,这要花费整个程序设计工作量的40%以上。1.模块化程序设计(1)首先对最低层模块进行编码、测试和调试。这些模块正常工作后,就可以用它们来开发较高层的模块。这种方法是汇编语言设计常用的方法。(2首先对最高层进行编码、测试和调试。为了测试这些最高层模块,可以用“结点”来代替还未编码的较低层模块,这些“结点”的输入和输出满足程序的说明部分要求,但功能少得多。该方法一般适合用高级语言来设计程序。2.结构化程序设计只用三种基本的控制结构就能实现任何单入口单出口的程序。这三种基本的控制结构是“顺序”、“选择”、“循环”。如右图所示。7.1.2面向过程与面向对象的程序设计1.面向过程的程序设计及其局限性2.面向对象的程序设计以上两种方法在概念上存在以下主要区别:(1)模块与对象(2)过程调用和消息传递(3)类型和类(4)静态链接和动态链接7.1.3高级语言I/O控制台编程对于PC总线工业控制机,我们以TurboC为例来说明其访问I/O端口的编程。TurboC通常有库函数,允许直接访问I/O端口,头文件〈conio.h〉中定义了I/O端口例程。例如:a=inportw(0x210)b=inportb(0x220)第一条指令表示将端口210H的16位二进制数(一个字)输入给变量a,第二条指令表示将端口220H的8位二进制数(一个字节)输入给变量b。在C语言中,0x起头的是16进制数。又如:outportw(0x230,0x3435)outportb(0x240,0x26)第一条指令表示将二字节数3435H输出到端口230H中,第二条指令表示将单字节数26H输出到端口240H中。7.2人机接口(HMI/SCADA)技术7.2.1HMI/SCADA的含义7.2.2基于工业控制组态软件设计人机交互界面7.2.3基于VB/VC++语言设计人机交互界面7.2.1HMI/SCADA的含义HMI(HumanMachineInterface)广义的解释就是“使用者与机器间沟通、传达及接收信息的一个接口”。一般而言,HMI系统必须有几项基本的能力:实时资料趋势显示历史资料趋势显示自动记录资料警报的产生与记录报表的产生与打印图形接口控制凡是具有系统监控和数据采集功能的软件,都可称为SCADA(SupervisorControlAndDataAcqusition)软件。SCADA软件和硬件设备的连接方式主要可归纳为三种:(1)标准通讯协议。(2)标准的资料交换接口。(3)绑定驱动(Nativedriver)。7.2.2基于工业控制组态软件设计人机交互界面1.控制组态2.图形生成系统3.显示组态计算机控制系统的组态功能可分为两个主要方面,即硬件组态和软件组态。硬件组态常以总线式(PC总线或STD总线)工业控制机为主进行选择和配置。工业控制组态软件是标准化、规模化、商品化的通用过程控制软件。组态工作是在组态软件支持下进行的,组态软件主要包括:控制组态、图形生成系统、显示组态、I/O通道登记、单位名称登记、趋势曲线登记、报警系统登记、报表生成系统共8个方面的内容。1.控制组态控制算法的组态生成在软件上可以分为两种实现方式:一种方式是采用模块宏的方式,即一个控制规律模块(如PID运算)对应一个宏命令(子程序),在组态生成时,每用到一个控制模块,则组态生成控制算法,产生的执行文件中就将该宏所对应的算法换入执行文件。另一种常用的方式是将各控制算法编成各个独立的可以反复调用的功能模块,对应每一模块有一个数据结构,该数据结构定义了该控制算法所需要的各个参数。因此,只要这些参数定义了,控制规律就定了。有了这些算法模块,就可以生成绝大多数的控制功能。2.图形生成系统计算机控制系统的人机界面越来越多地采用图形显示技术。图形画面主要是用来监视生产过程的状况,并可通过对画面上对象的操作,实现对生产过程的控制。图形画面一般有两种即静态画面(或背景画面)和动态画面。静态画面一般用来反映监视对象的环境和相互关系,它的显示是不随时间的变化的。动态画面一般用以反映被监视对象和被控对象的状态和数值等,它在显示过程中是随现场被监控对象的变化而变化的。在生成图形画面时,不但要有静态画面,而且还要有“活”的部分即动态画面。3.显示组态(1)选择模拟显示表(2)定义模拟显示表(3)显示登记法(4)I/O通道登记(5)单位名称登记(6)趋势曲线登记(7)报警系统登记(8)报表生成系统计算机控制系统的画面显示一般分为三级即总貌画面、组貌画面、回路画面。若想构成这些画面,就要进行显示组态操作。显示组态操作包括选择模拟显示表、定义显示表及显示登记方法等操作。(1)选择模拟显示表由于计算机控制系统显示画面常采用各种模拟显示表来显示测量值、设定值和输出值,因此,显示组态一般可用6种模拟显示表,即调节控制表、报警显示表、阀位操作表、监视操作表、比率设定表、流量累计表。返回返回(2)选择了回路的模拟显示表后,尚须对显示表的每一个参数进行确定,并在画面上设定相应的值。(3)显示登记法显示登记法是进入系统显示登记画面。选择过程控制站站号及工作方式;登记控制组号、组名,该组员的回路号,进行分组登记操作;显示表登记(登记每一个控制回路所用的模拟显示表);将显示(4)I/O通道登记计算机控制系统能支持多种类型的信号输入和输出。从生产过程来看,每一输入输出都有不同的名称和意义,因此需将输入输出定义成特定的含义,这就是I/O通道登记。I/O通道主要是模拟量I/O和开关量I/O等通道。(5)单位名称登记对系统各种画面中需要显示的工程单位名称采用登记的方法,可使用中英文一切符号,登记生成自己特有的单位名称,主要登系统的硬盘中保存有三种趋势曲线数据,即当天的、昨天的和历史的数据。当天的趋势曲线数据,系统以一定的周期将数据保存起来。到第二天就将当天的数据覆盖昨天的数据。历史数据是当你需要某天的数据时,从硬盘拷贝到软盘保存起来。趋势曲线的规格主要有:趋势曲线幅数、趋势曲线每幅条数、每条时间、显示精度。趋势曲线登记表的内容主要有:幅号、幅名、编号、颜色、曲线名称、来源、工程量上限和下限。(6)趋势曲线登记返回报警显示画面分成三级即报警概况画面、报警信息画面、报警画面。报警概况画面是第一级,它显示系统中所有报警点的名称和报警次数;报警信息画面是第二级,它是第一级画面的展开与细化,可调出相应报警信息画面,即可观察到报警时间,消警时间,报警点名称和报警原因等;报警画面是第三级,可调出与报警点相应的各显示画面,包括总貌画面、组画面、回路画面、趋势曲线画面等。为了完成报警登记,还要填写登记表。内容包括:编号、名称、原因类型、原因参数、画面类型、画面参(7)报警系统登记返回(8)报表生成系统报表生成系统用于系统的报表及打印输出。因而报表系统主要功能是定义各种报表的数据来源、运算方式以及报表打印格式和时间特性。返回7.2.3基于VB/VC++语言设计人机交互界面1.VisualBasic2.VC++7.3测量数据预处理技术7.3.1误差自动校准7.3.2线性化处理和非线性补偿7.3.3标度变换方法7.3.4越限报警处理传感器把生产过程的信号转换成电信号,然后用A/D转换器把模拟信号变成数字信号,读入计算机中。对于这样得到的数据,一般要进行一些预处理,其中最基本的处理有线性化处理、标度变换和误差自动校准。7.3.1误差自动校准定义:系统误差是指在相同条件下,经过多次测量,误差的数值(包括大小符号)保持恒定,或按某种已知的规律变化的误差。特点:在一定的测量条件下,其变化规律是可以掌握的,产生误差的原因一般也是知道的。方法:偏移校准在实际中应用最多,并且常采用程序来实现,称为数字调零。调零电路的实现:在测量时,先把多路输入接到所需测量的一组输入电压上进行测量,测出这时的输入值为x1,然后把多路开关的输入接地,测出零输入时A/D转换器的输出为x0,用x1减去x0即为实际输入电压x。除了数字调零外,还可以采用偏移和增益误差的自动校准。1.全自动校准RVV)(010xxxx采用这种方法测得的V与放大器的漂移和增益变化无关,与V和R的精度也无关。这样可大大提高测量精度,降低对电路器件的要求。2.人工自动校准人工自动校准的原理是由人工在需要时接入标准的参数进行校准测量,把测得的数据存贮起来,供后使用。一般人工自动校准只测一个标准输入信号yR,零信号的补偿由数字调零来完成。设数字调零后测出的数据分别为xR(接校准输入yR时)和x(接被测输入y时),则可按下式来计算y。xxyyRR如果在校准时,计算并存放yR/xR的值,则测量校准时,只需行一次乘法即可。人工自动校准特别适于传感器特性随时间会发生变化的场合。如常用的湿敏电容等湿度传感器。7.3.2线性化处理和非线性补偿1.铂热电阻的阻值与温度的关系2.热电偶的热电势与温度的关系3.孔板差压与流量的关系4.气体体积流量的非线性补偿7.3.3标度变换方法计算机控制系统在读入被测模拟信号并转换成数字量后,往往要转换成操作人员所熟悉的工程值。这是因为被测量对象的各种数据的量纲与A/D转换的输入值是不一样的。例如,压力的单位为Pa,流量的单位为m3/h,温度的单位为℃等。这些参数经传感器和A/D转换后得到一系列的数码,这些数码值并不一定等于原来带有量纲的参数值,它仅仅对应于参数值的大小,故必须把它转换成带有量纲的数值后才能运算、显示或打印输出,这种转换就是标度变换。标度变换有各种类型,它取决于被测参数的传感器的类型,应根据实际要求来选用适当的标度变换方法。1.线性变换公式2.公式转换法3.其它标度变换法1.线性变换公式Y=(Ymax-Ymin)(X-Nmin)/(Nmax-Nmin)+YminY表示参数测量值,Ymax表示参数量程最大值,Ymin表示参数量程最小值,Nmax表示Ymax对应的A/D转换后的输入值,Nmin表示量程起点Ymin对应的A/D转换后的输入值,X表示测量值Y对应的A/D转换值。2.公式转换法有些传感器测出的数据与实际的参数不是线性关系,它们有着由传感器和测量方法决定的函数关系,并且这些函数关系可用解析式来表示,这时我们可采用直接按解析式来计算。3.其它标度变换法许多非线性传感器并不象上面讲的流量传感器那样,可以写出一个简单的公式,或者虽然能够写出,但计算相当困难。这时可采用多项式插值法,也可以用线性插值法或查表进行标度变换。7.3.4越限报警处理越限报警是工业控制过程常见而又实用的一种报警形式,它分为上限报警、下限报警及上下限报警。如果需要判断的报警参数是xn,该参数的上下限约束值分别是xmax和xmin,则上下(1)若xn>xmax,则上限报警,否则继续执行原定操作。(2)若xn<xmin,则下限报警,否则继续执行原定操作。(3)若xn>xmax,则上限报警,xn<xmin否?若是则下限报警,否则继续原定操作。根据上述规定,程序可以实现对被控参数y、偏差e以及控制量u进行上下限检查。7.4数字控制器的工程实现7.4.1给定值和被控量处理7.4.2偏差处理7.4.3控制算法的实现7.4.4控制量处理7.4.5自动/手动切换技术数字控制器算法的工程实现中